@tanstack/ai
Version:
Type-safe TypeScript AI SDK for streaming chat, tool calling, agents, structured outputs, and multimodal generation.
35 lines (32 loc) • 1.17 kB
text/typescript
import type { CapabilityHandle } from './capabilities'
import type { ChatMiddleware } from './types'
/**
* A middleware whose `requires`/`provides` tuple types are captured precisely
* (via `const` inference) for the array coverage check and the builder.
*/
export interface DefinedChatMiddleware<
TContext,
TRequires extends ReadonlyArray<CapabilityHandle>,
TProvides extends ReadonlyArray<CapabilityHandle>,
> extends ChatMiddleware<TContext> {
requires?: TRequires
provides?: TProvides
}
/**
* Identity helper for authoring middleware with precise capability inference.
* Returns the middleware unchanged at runtime; only sharpens its type so the
* `chat()` array coverage check and `createChatMiddleware` builder can read the
* exact `requires`/`provides`.
*/
export function defineChatMiddleware<
TContext = unknown,
const TRequires extends ReadonlyArray<CapabilityHandle> = readonly [],
const TProvides extends ReadonlyArray<CapabilityHandle> = readonly [],
>(
middleware: ChatMiddleware<TContext> & {
requires?: TRequires
provides?: TProvides
},
): DefinedChatMiddleware<TContext, TRequires, TProvides> {
return middleware
}