Continue roadmap: local TLS and agent review preparation
This commit is contained in:
@@ -13,7 +13,14 @@ if "SOVEREIGNAI_DATA_DIR" not in os.environ:
|
||||
_TEST_DATA_DIR = tempfile.TemporaryDirectory(prefix="sovereignai-skills-tests-")
|
||||
os.environ["SOVEREIGNAI_DATA_DIR"] = _TEST_DATA_DIR.name
|
||||
|
||||
from app.main import AgentRequest, _execute_agent, app, safe_arithmetic
|
||||
from app.main import (
|
||||
AgentRequest,
|
||||
_execute_agent,
|
||||
_knowledge_context_for_model,
|
||||
app,
|
||||
safe_arithmetic,
|
||||
select_workspace_file_excerpt,
|
||||
)
|
||||
from tests.api_client import authenticated_client
|
||||
|
||||
|
||||
@@ -42,6 +49,28 @@ class AgentSkillTests(unittest.TestCase):
|
||||
self.assertEqual(safe_arithmetic("137 × 29"), 3973.0)
|
||||
self.assertEqual(safe_arithmetic("12 ÷ 3 − 1"), 3.0)
|
||||
|
||||
def test_knowledge_context_is_bounded_and_drops_redundant_fields(self) -> None:
|
||||
matches = [
|
||||
{
|
||||
"path": "file-a.py" if index < 4 else "file-b.py",
|
||||
"chunk": index,
|
||||
"text": "x" * 1200,
|
||||
"excerpt": "duplicate excerpt",
|
||||
"similarity": 0.99,
|
||||
}
|
||||
for index in range(6)
|
||||
]
|
||||
|
||||
context = _knowledge_context_for_model(matches)
|
||||
|
||||
self.assertEqual(len(context), 4)
|
||||
self.assertTrue(all(len(item["text"]) <= 1000 for item in context))
|
||||
self.assertTrue(all(set(item) == {"path", "chunk", "text"} for item in context))
|
||||
self.assertEqual(
|
||||
[item["path"] for item in context],
|
||||
["file-a.py", "file-b.py", "file-a.py", "file-a.py"],
|
||||
)
|
||||
|
||||
def test_explicit_calculator_request_uses_bounded_local_calculator(self) -> None:
|
||||
with patch("app.main.get_completion", new=AsyncMock()) as model:
|
||||
result = asyncio.run(
|
||||
@@ -153,6 +182,17 @@ class AgentSkillTests(unittest.TestCase):
|
||||
|
||||
self.assertEqual(error.exception.status_code, 422)
|
||||
|
||||
def test_selected_file_excerpt_prefers_passage_matching_question(self) -> None:
|
||||
lines = [
|
||||
*(f"Unrelated setup notes {index} {'x' * 100}" for index in range(80)),
|
||||
"النموذج الافتراضي هو gemma4:e2b.",
|
||||
]
|
||||
text = "\n".join(lines)
|
||||
excerpt = select_workspace_file_excerpt("ما النموذج الافتراضي؟", text)
|
||||
|
||||
self.assertIn("gemma4:e2b", excerpt)
|
||||
self.assertIn("Unrelated setup notes 0", excerpt)
|
||||
self.assertLessEqual(len(excerpt), 4000)
|
||||
def test_preselected_file_is_read_once_without_redundant_search_call(self) -> None:
|
||||
completion = {"choices": [{"message": {"content": "المهارات مسجلة في قاموس محلي."}}]}
|
||||
with patch("app.main.get_completion", new=AsyncMock(return_value=completion)) as model:
|
||||
@@ -169,8 +209,14 @@ class AgentSkillTests(unittest.TestCase):
|
||||
|
||||
self.assertEqual(model.await_count, 1)
|
||||
self.assertEqual(result["files"], ["app/skills.py"])
|
||||
self.assertIn("Curated, local agent skills", model.await_args.args[0]["messages"][1]["content"])
|
||||
|
||||
payload = model.await_args.args[0]
|
||||
self.assertEqual(payload["temperature"], 0.0)
|
||||
self.assertEqual(payload["tools"], [])
|
||||
self.assertNotIn("tool_choice", payload)
|
||||
self.assertIn("أنت مساعد يجيب عن أسئلة الملفات", payload["messages"][0]["content"])
|
||||
user_content = payload["messages"][1]["content"]
|
||||
self.assertIn("Curated, local agent skills", user_content)
|
||||
self.assertLess(user_content.index("اشرح الملف المحدد"), user_content.index("Curated, local agent skills"))
|
||||
def test_explicit_knowledge_search_is_prefetched_before_model_answer(self) -> None:
|
||||
completion = {"choices": [{"message": {"content": "المرحلة 5 تضيف الفهرسة المحلية."}}]}
|
||||
match = {"path": "ROADMAP.md", "chunk": 2, "text": "SQLite FTS5 local index", "excerpt": "SQLite FTS5"}
|
||||
@@ -196,6 +242,8 @@ class AgentSkillTests(unittest.TestCase):
|
||||
"search_knowledge",
|
||||
[tool["function"]["name"] for tool in model_payload["tools"]],
|
||||
)
|
||||
self.assertEqual(model_payload["tools"], [])
|
||||
self.assertNotIn("tool_choice", model_payload)
|
||||
self.assertEqual(result["tool"], "search_knowledge")
|
||||
self.assertEqual(result["files"], ["ROADMAP.md"])
|
||||
|
||||
|
||||
Reference in New Issue
Block a user