feat(clustering): persistent enrichment cache in task_enrichments table
Each unique task title is now enriched by LiteLLM once and cached in the DB. Subsequent agent compute cycles (every 12h) fetch the cache before calling ml-serving; only new titles hit the tip-generator. - DB: task_enrichments(content_hash PK, description, model, created_at) - TS: fetchEnrichmentCache / persistEnrichments helpers in agent-outputs.ts; enrichment_cache passed in compute request, new_enrichments persisted from response - Python: AgentComputeRequest.enrichment_cache / AgentComputeResponse.new_enrichments; AgentInput.enrichment_cache; _enrich_batch returns (descriptions, new_entries); cluster_tasks returns (clusters, new_enrichments) - FocusAreaAgent stashes new_enrichments in signals_snapshot under _new_enrichments; compute_agent endpoint pops it before storing the snapshot Closes part of #129 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -35,7 +35,7 @@ MANIFEST = AgentManifest(
|
||||
},
|
||||
},
|
||||
context_schema=["todoist.tasks"],
|
||||
required_consents=["data:core", "data:todoist", "agent:focus-area"],
|
||||
required_consents=["data:core", "data:todoist"],
|
||||
output_contract={"type": "snippet", "format": "free_text"},
|
||||
ttl_sec=43_200,
|
||||
inferred_params=[
|
||||
@@ -66,7 +66,7 @@ class FocusAreaAgent(BaseAgent):
|
||||
{"cluster_count": 0, "strategy": "none"},
|
||||
)
|
||||
|
||||
clusters = cluster_tasks(inp.tasks)
|
||||
clusters, new_enrichments = cluster_tasks(inp.tasks, enrichment_cache=inp.enrichment_cache)
|
||||
|
||||
if not clusters:
|
||||
return self._make_output(
|
||||
@@ -109,5 +109,7 @@ class FocusAreaAgent(BaseAgent):
|
||||
"cluster_count": len(clusters),
|
||||
"strategy": strategy,
|
||||
"preferred_areas": preferred,
|
||||
# Consumed by compute_agent endpoint; stripped before storing the snapshot.
|
||||
"_new_enrichments": new_enrichments,
|
||||
}
|
||||
return self._make_output(inp, " ".join(parts), snapshot)
|
||||
|
||||
Reference in New Issue
Block a user