@@ -40,6 +40,8 @@ export type MagmaLLMConfig = {
4040 model : LanguageModel ;
4141} ;
4242
43+ export const DEFAULT_MAX_MIDDLEWARE_RETRIES = 5 ;
44+
4345export type MagmaAgentProps < STATE , TOOLS extends MagmaToolSet < STATE > > = {
4446 state : STATE ;
4547 llmConfig : MagmaLLMConfig ;
@@ -48,8 +50,7 @@ export type MagmaAgentProps<STATE, TOOLS extends MagmaToolSet<STATE>> = {
4850 middleware ?: MagmaMiddlewareSet < STATE , TOOLS > ;
4951
5052 messageContext ?: number ;
51- maxMiddlewareRetries ?: number ;
52- onUsageUpdate ?: ( usage : MagmaUsage ) => void ;
53+ onUsageUpdate ?: ( usage : MagmaUsage , options : { state : STATE } ) => void ;
5354 onError ?: ( error : Error ) => void ;
5455
5556 verbose ?: boolean ;
@@ -66,8 +67,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
6667 middleware : MagmaMiddlewareSet < STATE , TOOLS > ;
6768
6869 messageContext : number ;
69- maxMiddlewareRetries : number ;
70- onUsageUpdate : ( usage : MagmaUsage ) => void ;
70+ onUsageUpdate : ( usage : MagmaUsage , options : { state : STATE } ) => void ;
7171 onError : ( error : Error ) => void ;
7272
7373 verbose ?: boolean ;
@@ -89,7 +89,6 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
8989 this . middleware = ( middleware ?? { } ) as MagmaMiddlewareSet < STATE , TOOLS > ;
9090
9191 this . messageContext = props . messageContext ?? - 1 ;
92- this . maxMiddlewareRetries = props . maxMiddlewareRetries ?? 5 ;
9392 this . onUsageUpdate = props . onUsageUpdate ?? ( ( ) => { } ) ;
9493 this . onError =
9594 props . onError ??
@@ -119,7 +118,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
119118 userMessage : MagmaUserMessage ;
120119 onTrace ?: ( trace : TraceEvent [ ] ) => void ;
121120 trigger ?: undefined ;
122- ctx ?: MagmaCtx ;
121+ // ctx?: MagmaCtx;
123122 onStreamChunk ?: ( chunk : MagmaStreamChunk , options : { state : STATE } ) => void ;
124123 } ) : Promise < MagmaAssistantMessage | null > ;
125124
@@ -130,7 +129,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
130129 userMessage : MagmaUserMessage ;
131130 onTrace ?: ( trace : TraceEvent [ ] ) => void ;
132131 trigger : keyof TOOLS ;
133- ctx ?: MagmaCtx ;
132+ // ctx?: MagmaCtx;
134133 onStreamChunk ?: ( chunk : MagmaStreamChunk , options : { state : STATE } ) => void ;
135134 } ) : Promise < MagmaToolResultMessage | null > ;
136135
@@ -141,15 +140,15 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
141140 userMessage : MagmaUserMessage ;
142141 onTrace ?: ( trace : TraceEvent [ ] ) => void ;
143142 trigger ?: keyof TOOLS ;
144- ctx ?: MagmaCtx ;
143+ // ctx?: MagmaCtx;
145144 onStreamChunk ?: ( chunk : MagmaStreamChunk , options : { state : STATE } ) => void ;
146145 } ) : Promise < MagmaAssistantMessage | MagmaToolResultMessage | null > {
147146 return ( await this . _main ( {
148147 config : args . config ,
149148 userOrToolMessage : args . userMessage ,
150149 onTrace : args . onTrace ,
151150 trigger : args . trigger ,
152- ctx : args . ctx ,
151+ // ctx: args.ctx,
153152 onStreamChunk : args . onStreamChunk
154153 } ) ) as MagmaToolResultMessage | null ;
155154 }
@@ -317,7 +316,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
317316 } as AssistantModelMessage ;
318317
319318 // Call the onUsageUpdate callback
320- this . onUsageUpdate ( await totalUsage ) ;
319+ this . onUsageUpdate ( await totalUsage , { state : this . state } ) ;
321320
322321 // Add the completion message to the messages array
323322 localMessages . push ( {
@@ -368,10 +367,10 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
368367 }
369368
370369 // If the onCompletion middleware returns null
371- // That means it failed to meet the middleware requirements in ${this.maxMiddlewareRetries} attempts
370+ // That means it failed to run a critical middleware in the specified number of retries
372371 if ( ! onCompletionMiddlewareResult ) {
373372 throw new Error (
374- `Catastrophic error: failed onCompletion middleware ${ this . maxMiddlewareRetries } times`
373+ `Catastrophic error: failed critical onCompletion middleware maximum number of times`
375374 ) ;
376375 }
377376
@@ -430,7 +429,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
430429
431430 if ( ! preToolExecutionMiddlewareResult ) {
432431 throw new Error (
433- `Catastrophic error: failed preToolExecution middleware ${ this . maxMiddlewareRetries } times`
432+ `Catastrophic error: failed critical preToolExecution middleware maximum number of times`
434433 ) ;
435434 }
436435
@@ -529,7 +528,7 @@ export class MagmaAgent<STATE, TOOLS extends MagmaToolSet<STATE>> implements Mag
529528
530529 if ( ! onMainFinishMiddlewareResult ) {
531530 throw new Error (
532- `Catastrophic error: failed onMainFinish middleware ${ this . maxMiddlewareRetries } times`
531+ `Catastrophic error: failed critical onMainFinish middleware maximum number of times`
533532 ) ;
534533 }
535534
0 commit comments