Function: defineDiscriminatedHandlers()
Makaio Framework / ai-adapters-core / defineDiscriminatedHandlers
Function: defineDiscriminatedHandlers()
Section titled “Function: defineDiscriminatedHandlers()”defineDiscriminatedHandlers<
TPayload,TDiscriminator>(discriminator,handlers):DiscriminatedHandlersConfig<TPayload,TDiscriminator>
Defined in: ../../../adapters/core/src/utils/discriminated-handlers.ts:143
Factory to create typed discriminated handlers.
This function provides compile-time validation that handlers receive correctly narrowed payload types based on the discriminator value.
Type Parameters
Section titled “Type Parameters”TPayload
Section titled “TPayload”TPayload extends Record<string, unknown>
TDiscriminator
Section titled “TDiscriminator”TDiscriminator extends string = keyof TPayload & string
Parameters
Section titled “Parameters”discriminator
Section titled “discriminator”TDiscriminator
The property key used to discriminate union members
handlers
Section titled “handlers”DiscriminatedHandlersMap<TPayload, TDiscriminator>
Map of discriminator values to handler functions
Returns
Section titled “Returns”DiscriminatedHandlersConfig<TPayload, TDiscriminator>
Configuration object for use with processDiscriminatedItems
Example
Section titled “Example”// Define handlers with full type safetyconst handlers = defineDiscriminatedHandlers<BetaContentBlock, 'type'>('type', { text: (block, emit) => { // block is narrowed to BetaTextBlock emit(AgentSubjects.message, { content: block.text }); }, thinking: (block, emit) => { // block is narrowed to BetaThinkingBlock emit(AgentSubjects.reasoning, { content: block.thinking }); }, tool_use: (block, emit) => { // block is narrowed to BetaToolUseBlock emit(AgentSubjects.tool.use, { toolName: block.name, args: block.input, toolCallId: block.id, }); },});