Skip to content

Commit 4156084

Browse files
committed
refactor(memory): session.send uses applyMemoryProvider helper
1 parent 392c1bd commit 4156084

1 file changed

Lines changed: 16 additions & 40 deletions

File tree

src/api/agent.ts

Lines changed: 16 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import type {
3131
import { warnOnDeferredLightweightAgentCapabilities } from './runtime/lightweightAgentDiagnostics.js';
3232
import type { BaseAgentConfig } from './types.js';
3333
import { exportAgentConfig, exportAgentConfigJSON, type AgentExportConfig } from './agentExportCore.js';
34+
import { applyMemoryProvider } from './runtime/memoryProviderHooks.js';
3435

3536
/**
3637
* Provider hook interface consumed by `agent()` for memory integration.
@@ -492,55 +493,30 @@ export function agent(opts: AgentOptions): Agent {
492493

493494
async send(input: MessageContent): Promise<GenerateTextResult> {
494495
const textForMemory = typeof input === 'string' ? input : extractTextFromContent(input);
495-
496-
// Memory recall before generation
497-
let memorySystemMsg: string | undefined;
498-
if (opts.memoryProvider?.getContext) {
499-
try {
500-
const ctx = await Promise.race([
501-
opts.memoryProvider.getContext(textForMemory, { tokenBudget: 2000 }),
502-
new Promise<null>((resolve) => setTimeout(() => resolve(null), MEMORY_TIMEOUT_MS)),
503-
]);
504-
if (ctx?.contextText) {
505-
memorySystemMsg = ctx.contextText;
506-
}
507-
} catch {
508-
// Memory recall failure is non-fatal
509-
}
510-
}
511-
512-
// Prepend memory context to system prompt
513-
let system = baseOpts.system;
514-
if (memorySystemMsg) {
515-
system = [memorySystemMsg, system].filter(Boolean).join('\n\n') || undefined;
516-
}
517-
518496
const userMessage: Message = { role: 'user', content: input };
519497
const requestMessages = useMemory
520498
? [...history, userMessage]
521499
: [userMessage];
522-
const result = await generateText({
523-
...baseOpts,
524-
system,
525-
messages: requestMessages,
526-
usageLedger: mergeUsageLedgerOptions(baseOpts.usageLedger, {
527-
sessionId,
528-
source: 'agent.session.send',
529-
}),
530-
} as GenerateTextOptions);
500+
501+
const wrappedOpts = applyMemoryProvider(
502+
{
503+
...baseOpts,
504+
messages: requestMessages,
505+
usageLedger: mergeUsageLedgerOptions(baseOpts.usageLedger, {
506+
sessionId,
507+
source: 'agent.session.send',
508+
}),
509+
},
510+
opts.memoryProvider,
511+
textForMemory,
512+
);
513+
514+
const result = await generateText(wrappedOpts as GenerateTextOptions);
531515
if (useMemory) {
532516
history.push(userMessage);
533517
history.push({ role: 'assistant', content: result.text });
534518
}
535519

536-
// Memory observe after generation (fire-and-forget, text only)
537-
if (opts.memoryProvider?.observe) {
538-
opts.memoryProvider.observe('user', textForMemory).catch(() => {});
539-
if (result.text) {
540-
opts.memoryProvider.observe('assistant', result.text).catch(() => {});
541-
}
542-
}
543-
544520
return result;
545521
},
546522

0 commit comments

Comments
 (0)