feat(api): multi-project folder manifest for daily brief
Add build_brief_multi_project_manifest() to deep_agent.py that fetches all project folder manifests via execute_on_client and keeps the top 5 most-recently-modified files per project. Wire into run_home_brief in brief_agent.py, injecting the <linked_folders> block into the system prompt alongside FOLDER_TOOLS. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from unittest.mock import AsyncMock, patch
|
||||
|
||||
import pytest
|
||||
|
||||
from app.core.deep_agent import format_folder_manifest, MANIFEST_TOKEN_BUDGET
|
||||
|
||||
pytestmark = pytest.mark.asyncio
|
||||
|
||||
|
||||
def test_format_folder_manifest_basic():
|
||||
manifest = {
|
||||
@@ -33,3 +39,31 @@ def test_format_folder_manifest_truncates_past_budget():
|
||||
def test_format_folder_manifest_null_returns_empty():
|
||||
assert format_folder_manifest(None) == ""
|
||||
assert format_folder_manifest({"files": []}) == ""
|
||||
|
||||
|
||||
async def test_brief_multi_project_manifest_top_5_per_project():
|
||||
fake_response = [
|
||||
{
|
||||
"projectId": "p1", "projectName": "Acme", "folderPath": "/a",
|
||||
"lastScannedAt": "now",
|
||||
"files": [
|
||||
{"relPath": f"f{i}.md", "kind": "text", "summary": "s", "mtimeMs": i}
|
||||
for i in range(10)
|
||||
],
|
||||
},
|
||||
{
|
||||
"projectId": "p2", "projectName": "Beta", "folderPath": "/b",
|
||||
"lastScannedAt": "now",
|
||||
"files": [{"relPath": "x.md", "kind": "text", "summary": "s", "mtimeMs": 1}],
|
||||
},
|
||||
]
|
||||
with patch(
|
||||
"app.core.deep_agent.execute_on_client",
|
||||
new=AsyncMock(return_value={"projects": fake_response}),
|
||||
):
|
||||
from app.core.deep_agent import build_brief_multi_project_manifest
|
||||
out = await build_brief_multi_project_manifest()
|
||||
# Project 1 has 10 files, only top 5 by mtimeMs should appear
|
||||
assert out.count("[p1]") <= 5
|
||||
# Project 2 has 1 file, must appear
|
||||
assert "[p2]" in out or "Beta" in out
|
||||
|
||||
Reference in New Issue
Block a user