Skip to content

Latest commit

 

History

History
412 lines (254 loc) · 9.74 KB

File metadata and controls

412 lines (254 loc) · 9.74 KB
id ChatMiddleware
title ChatMiddleware

Interface: ChatMiddleware

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:342

Chat middleware interface.

All hooks are optional. Middleware is composed in array order:

  • onConfig: config piped through middlewares in order (first transform influences later)
  • onChunk: each output chunk is fed into the next middleware in order

Examples

const loggingMiddleware: ChatMiddleware = {
  name: 'logging',
  onStart(ctx) { console.log('Chat started', ctx.requestId) },
  onChunk(ctx, chunk) { console.log('Chunk:', chunk.type) },
  onFinish(ctx, info) { console.log('Done:', info.duration, 'ms') },
}
const redactionMiddleware: ChatMiddleware = {
  name: 'redaction',
  onChunk(ctx, chunk) {
    if (chunk.type === 'TEXT_MESSAGE_CONTENT') {
      return { ...chunk, delta: redact(chunk.delta) }
    }
  },
}

Properties

name?

optional name: string;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:344

Optional name for debugging and identification


onAbort()?

optional onAbort: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:464

Called when the chat run is aborted. Exactly one of onFinish/onAbort/onError will be called per run.

Parameters

ctx

ChatMiddlewareContext

info

AbortInfo

Returns

void | Promise<void>


onAfterToolCall()?

optional onAfterToolCall: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:428

Called after a tool execution completes (success or failure).

Parameters

ctx

ChatMiddlewareContext

info

AfterToolCallInfo

Returns

void | Promise<void>


onBeforeToolCall()?

optional onBeforeToolCall: (ctx, hookCtx) => 
  | BeforeToolCallDecision
| Promise<BeforeToolCallDecision>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:420

Called before a tool is executed. Can observe, transform args, skip execution, or abort the run.

Parameters

ctx

ChatMiddlewareContext

hookCtx

ToolCallHookContext

Returns

| BeforeToolCallDecision | Promise<BeforeToolCallDecision>


onChunk()?

optional onChunk: (ctx, chunk) => 
  | void
  | AGUIEvent
  | AGUIEvent[]
  | Promise<void | AGUIEvent | AGUIEvent[] | null>
  | null;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:406

Called for every chunk yielded by chat(). Can observe, transform, expand, or drop chunks.

Parameters

ctx

ChatMiddlewareContext

chunk

AGUIEvent

Returns

| void | AGUIEvent | AGUIEvent[] | Promise<void | AGUIEvent | AGUIEvent[] | null> | null

void (pass through), chunk (replace), chunk[] (expand), null (drop)


onConfig()?

optional onConfig: (ctx, config) => 
  | void
  | Partial<ChatMiddlewareConfig>
  | Promise<void | Partial<ChatMiddlewareConfig>>
  | null;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:353

Called to observe or transform the chat configuration. Called at init and at the beginning of each agent iteration.

Return a partial config to merge with the current config, or void to pass through. Only the fields you return are overwritten — everything else is preserved.

Parameters

ctx

ChatMiddlewareContext

config

ChatMiddlewareConfig

Returns

| void | Partial<ChatMiddlewareConfig> | Promise<void | Partial<ChatMiddlewareConfig>> | null


onError()?

optional onError: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:473

Called when the chat run encounters an unhandled error. Exactly one of onFinish/onAbort/onError will be called per run.

Parameters

ctx

ChatMiddlewareContext

info

ErrorInfo

Returns

void | Promise<void>


onFinish()?

optional onFinish: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:455

Called when the chat run completes normally. Exactly one of onFinish/onAbort/onError will be called per run.

Parameters

ctx

ChatMiddlewareContext

info

FinishInfo

Returns

void | Promise<void>


onIteration()?

optional onIteration: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:395

Called at the start of each agent loop iteration, after a new assistant message ID is created. Use this to observe iteration boundaries.

Parameters

ctx

ChatMiddlewareContext

info

IterationInfo

Returns

void | Promise<void>


onStart()?

optional onStart: (ctx) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:389

Called when the chat run starts (after initial onConfig).

Parameters

ctx

ChatMiddlewareContext

Returns

void | Promise<void>


onStructuredOutputConfig()?

optional onStructuredOutputConfig: (ctx, config) => 
  | void
  | Partial<StructuredOutputMiddlewareConfig>
  | Promise<
  | void
  | Partial<StructuredOutputMiddlewareConfig>>
  | null;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:377

Called at the start of the final structured-output call (when the chat was invoked with outputSchema). Pipes through middleware in order, like onConfig, but with access to the JSON Schema being sent to the provider.

Return a partial to shallow-merge into the current config, or void to pass through.

Fires BEFORE onConfig at the structured-output boundary. onConfig also re-fires at the same boundary with ctx.phase === 'structuredOutput', receiving the post-onStructuredOutputConfig view of the config (minus outputSchema). Use onConfig for general-purpose transforms that apply to every adapter call; use this hook when you need to transform the outputSchema or apply structured-output-specific behavior.

Parameters

ctx

ChatMiddlewareContext

config

StructuredOutputMiddlewareConfig

Returns

| void | Partial<StructuredOutputMiddlewareConfig> | Promise< | void | Partial<StructuredOutputMiddlewareConfig>> | null


onToolPhaseComplete()?

optional onToolPhaseComplete: (ctx, info) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:437

Called after all tool calls in an iteration have been processed. Provides aggregate data about tool execution results, approvals, and client tools.

Parameters

ctx

ChatMiddlewareContext

info

ToolPhaseCompleteInfo

Returns

void | Promise<void>


onUsage()?

optional onUsage: (ctx, usage) => void | Promise<void>;

Defined in: packages/typescript/ai/src/activities/chat/middleware/types.ts:446

Called when usage data is available from a RUN_FINISHED chunk. Called once per model iteration that reports usage.

Parameters

ctx

ChatMiddlewareContext

usage

UsageInfo

Returns

void | Promise<void>