Continue roadmap: local TLS and agent review preparation

This commit is contained in:
Hamza Ayed
2026-10-04 00:35:05 +03:00
parent 379098f3d6
commit d29275043a
28 changed files with 3226 additions and 47 deletions
+51 -3
View File
@@ -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"])