feat(context): add recall fusion and zvec workspace adapters
Introduce RRF-based recall fusion for personal/episodic/temporal paths, zvec-grep workspace shadow probing for code executors, and a local headroom proxy starter aligned with the fusion plan defaults. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -10,6 +10,10 @@ import {
|
||||
PAGE_DATA_COLLECT_SKILL_NAME,
|
||||
} from './chat-skills.mjs';
|
||||
import { applyContextBudgetToOrchestration } from './context-budget.mjs';
|
||||
import {
|
||||
applyRecallFusionToMemoryMerge,
|
||||
buildRecallFusionResolvedEvent,
|
||||
} from './recall-fusion.mjs';
|
||||
import { isDirectChatSessionId } from './direct-chat-service.mjs';
|
||||
import {
|
||||
memoryLimitForIntervention,
|
||||
@@ -1709,12 +1713,14 @@ export function createChatIntentRouter(options = {}) {
|
||||
agentMemoryPolicy.timeoutMs,
|
||||
'Memory V2 agent resolve',
|
||||
);
|
||||
const memories = mergeAgentMemoryCandidates({
|
||||
const fused = applyRecallFusionToMemoryMerge({
|
||||
personalMemories: personalResolved?.memories,
|
||||
episodicMemories: episodicResolved?.memories,
|
||||
query: text,
|
||||
limit,
|
||||
legacyMerge: mergeAgentMemoryCandidates,
|
||||
});
|
||||
const memories = fused.memories;
|
||||
const degraded = personalFailed
|
||||
|| episodicFailed
|
||||
|| Boolean(personalResolved?.degraded)
|
||||
@@ -1730,6 +1736,8 @@ export function createChatIntentRouter(options = {}) {
|
||||
? (memories.length ? 'partial_memory_resolve_failed' : 'memory_resolve_failed')
|
||||
: (memories.length ? null : (episodicResolved?.reason ?? personalResolved?.reason ?? null)),
|
||||
memories,
|
||||
recallFusion: buildRecallFusionResolvedEvent(fused.fusion),
|
||||
recallFusionApplied: fused.applied,
|
||||
latencyMs: Date.now() - startedAt,
|
||||
};
|
||||
agentMemoryMetrics.resolved += 1;
|
||||
|
||||
Reference in New Issue
Block a user