@@ -31,6 +31,7 @@ import type {
3131import { warnOnDeferredLightweightAgentCapabilities } from './runtime/lightweightAgentDiagnostics.js' ;
3232import type { BaseAgentConfig } from './types.js' ;
3333import { 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