UNPKG

life

Version:

Life.js is the first fullstack framework to build agentic web applications. It is minimal, extensible, and typesafe. Well, everything you love.

925 lines (924 loc) 259 kB
import { T as TypedPluginClientBuilder, P as PluginClientProvidedConfigs, a as PluginClientParams, b as PluginClientBuilder } from '../create-CNv4Yhhl.mjs'; export { A as AgentClient, f as AgentClientFromBuild, g as AgentClientParam, L as LifeClient, c as createLifeClient, d as defineAgentClient, e as definePluginClient, p as parseAgentClientParam } from '../create-CNv4Yhhl.mjs'; import { g as generationPluginClient } from '../client-CAhzt71i.mjs'; import { a as Any, L as LifeErrorUnion, M as MemoryDefinition, c as Message, S as StoreDefinition } from '../types-DcmGusfD.mjs'; import * as nanostores from 'nanostores'; import { Z as ZodObjectWithTelemetry } from '../config-n67P8tNt.mjs'; import * as z from 'zod'; import * as zod_v4_core from 'zod/v4/core'; import 'LIFE_CLIENT_BUILD_PATH'; import 'type-fest'; declare const memoriesPluginClient: TypedPluginClientBuilder<{ readonly name: "memories"; readonly config: ZodObjectWithTelemetry<z.ZodObject<{ [x: string]: any; }, zod_v4_core.$strip>, "output">; readonly dependencies: { readonly name: "generation"; readonly config: ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; readonly class: <const ProvidedConfigs extends PluginClientProvidedConfigs<ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">, ZodObjectWithTelemetry<z.ZodObject<{ voiceDetection: z.ZodPrefault<z.ZodObject<{ scoreInThreshold: z.ZodPrefault<z.ZodNumber>; scoreOutThreshold: z.ZodPrefault<z.ZodNumber>; prePaddingChunks: z.ZodPrefault<z.ZodNumber>; postPaddingChunks: z.ZodPrefault<z.ZodNumber>; minVoiceInterruptionMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; endOfTurnDetection: z.ZodPrefault<z.ZodObject<{ threshold: z.ZodPrefault<z.ZodNumber>; minTimeoutMs: z.ZodPrefault<z.ZodNumber>; maxTimeoutMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>, "output">>>({ plugin }: PluginClientParams<{ readonly name: "generation"; readonly config: ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; readonly dependencies: []; readonly class: <const _ProvidedConfigs>(..._args: Any[]) => { new (): {}; }; readonly atoms: <const _ProvidedConfigs>(..._args: Any[]) => never[]; readonly $serverDef: { name: "generation"; config: ZodObjectWithTelemetry<z.ZodObject<{ voiceDetection: z.ZodPrefault<z.ZodObject<{ scoreInThreshold: z.ZodPrefault<z.ZodNumber>; scoreOutThreshold: z.ZodPrefault<z.ZodNumber>; prePaddingChunks: z.ZodPrefault<z.ZodNumber>; postPaddingChunks: z.ZodPrefault<z.ZodNumber>; minVoiceInterruptionMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; endOfTurnDetection: z.ZodPrefault<z.ZodObject<{ threshold: z.ZodPrefault<z.ZodNumber>; minTimeoutMs: z.ZodPrefault<z.ZodNumber>; maxTimeoutMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>, "output">; context: ZodObjectWithTelemetry<z.ZodObject<{ messages: z.ZodPrefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>], "role">>>; status: z.ZodPrefault<z.ZodObject<{ listening: z.ZodPrefault<z.ZodBoolean>; thinking: z.ZodPrefault<z.ZodBoolean>; speaking: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>>; voiceEnabled: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; events: [{ readonly name: "plugin.start"; readonly dataSchema: z.ZodObject<{ isRestart: z.ZodPrefault<z.ZodBoolean>; restartCount: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>; }, { readonly name: "plugin.stop"; }, { readonly name: "plugin.test"; }, { readonly name: "plugin.error"; readonly dataSchema: z.ZodObject<{ error: z.ZodCustom<LifeErrorUnion, LifeErrorUnion>; event: z.ZodObject<{ id: z.ZodString; name: z.ZodString; urgent: z.ZodPrefault<z.ZodBoolean>; data: z.ZodPrefault<z.ZodAny>; created: z.ZodObject<{ at: z.ZodNumber; by: z.ZodDiscriminatedUnion<[z.ZodObject<{ type: z.ZodLiteral<"handler">; plugin: z.ZodString; handler: z.ZodString; event: z.ZodString; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"server">; name: z.ZodString; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"client">; name: z.ZodString; }, zod_v4_core.$strip>], "type">; }, zod_v4_core.$strip>; edited: z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodObject<{ at: z.ZodNumber; by: z.ZodObject<{ plugin: z.ZodString; handler: z.ZodString; }, zod_v4_core.$strip>; reason: z.ZodString; dataBefore: z.ZodAny; dataAfter: z.ZodAny; }, zod_v4_core.$strip>>, z.ZodLiteral<false>]>>; dropped: z.ZodPrefault<z.ZodUnion<[z.ZodObject<{ at: z.ZodNumber; by: z.ZodObject<{ plugin: z.ZodString; handler: z.ZodString; }, zod_v4_core.$strip>; reason: z.ZodString; }, zod_v4_core.$strip>, z.ZodLiteral<false>]>>; contextChanges: z.ZodPrefault<z.ZodArray<z.ZodObject<{ at: z.ZodNumber; byHandler: z.ZodString; valueBefore: z.ZodAny; valueAfter: z.ZodAny; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>; }, zod_v4_core.$strip>; }] | [{ name: "messages.create"; dataSchema: z.ZodObject<{ message: z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>], "role">; }, zod_v4_core.$strip>; }, { name: "messages.update"; dataSchema: z.ZodObject<{ id: z.ZodString; role: z.ZodEnum<{ user: "user"; system: "system"; agent: "agent"; tool: "tool"; }>; message: z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>], "role">; }, zod_v4_core.$strip>; }, { name: "user.audio-chunk"; dataSchema: z.ZodObject<{ audioChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; }, zod_v4_core.$strip>; }, { name: "user.voice-start"; }, { name: "user.voice-chunk"; dataSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ type: z.ZodLiteral<"voice">; voiceChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"padding">; voiceChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; paddingSide: z.ZodEnum<{ pre: "pre"; post: "post"; }>; paddingIndex: z.ZodNumber; }, zod_v4_core.$strip>], "type">; }, { name: "user.voice-end"; }, { name: "user.text-chunk"; dataSchema: z.ZodObject<{ textChunk: z.ZodString; }, zod_v4_core.$strip>; }, { name: "user.interrupted"; }, { name: "agent.thinking-start"; }, { name: "agent.thinking-end"; }, { name: "agent.speaking-start"; }, { name: "agent.speaking-end"; }, { name: "agent.continue"; dataSchema: z.ZodObject<{ interrupt: z.ZodPrefault<z.ZodUnion<[z.ZodEnum<{ abrupt: "abrupt"; smooth: "smooth"; }>, z.ZodLiteral<false>]>>; preventInterruption: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>; }, { name: "agent.decide"; dataSchema: z.ZodObject<{ interrupt: z.ZodPrefault<z.ZodUnion<[z.ZodEnum<{ abrupt: "abrupt"; smooth: "smooth"; }>, z.ZodLiteral<false>]>>; preventInterruption: z.ZodPrefault<z.ZodBoolean>; messages: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>], "role">>; }, zod_v4_core.$strip>; }, { name: "agent.say"; dataSchema: z.ZodObject<{ interrupt: z.ZodPrefault<z.ZodUnion<[z.ZodEnum<{ abrupt: "abrupt"; smooth: "smooth"; }>, z.ZodLiteral<false>]>>; preventInterruption: z.ZodPrefault<z.ZodBoolean>; text: z.ZodString; }, zod_v4_core.$strip>; }, { name: "agent.interrupt"; dataSchema: z.ZodObject<{ reason: z.ZodString; author: z.ZodEnum<{ user: "user"; application: "application"; }>; force: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>; }, { name: "agent.resources-request"; }, { name: "agent.resources-response"; dataSchema: z.ZodObject<{ requestId: z.ZodString; resources: z.ZodObject<{ messages: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>], "role">>; tools: z.ZodArray<z.ZodObject<{ name: z.ZodString; description: z.ZodString; schema: z.ZodObject<{ input: z.ZodCustom<z.ZodObject<zod_v4_core.$ZodLooseShape, zod_v4_core.$strip>, z.ZodObject<zod_v4_core.$ZodLooseShape, zod_v4_core.$strip>>; output: z.ZodCustom<z.ZodObject<zod_v4_core.$ZodLooseShape, zod_v4_core.$strip>, z.ZodObject<zod_v4_core.$ZodLooseShape, zod_v4_core.$strip>>; }, zod_v4_core.$strip>; run: z.ZodFunction<z.ZodTuple<readonly [z.ZodRecord<z.ZodString, z.ZodAny>], null>, z.ZodUnion<readonly [z.ZodObject<{ success: z.ZodBoolean; output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; error: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>, z.ZodPromise<z.ZodObject<{ success: z.ZodBoolean; output: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; error: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>>]>>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>; }, zod_v4_core.$strip>; }, { name: "agent.tool-requests"; dataSchema: z.ZodObject<{ requests: z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>; }, { name: "agent.interrupted"; dataSchema: z.ZodObject<{ reason: z.ZodString; forced: z.ZodBoolean; author: z.ZodEnum<{ user: "user"; application: "application"; }>; }, zod_v4_core.$strip>; }, { name: "agent.text-chunk"; dataSchema: z.ZodObject<{ textChunk: z.ZodString; }, zod_v4_core.$strip>; }, { name: "agent.voice-chunk"; dataSchema: z.ZodObject<{ voiceChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; }, zod_v4_core.$strip>; }]; handlers: [...never[], { name: "maintain-status"; mode: "block"; state: never; onEvent: (params: unknown) => void; }, { name: "maintain-messages"; mode: "block"; state: never; onEvent: (params: unknown) => string | undefined; }, { name: "receive-user-audio"; mode: "block"; state: never; onEvent: (params: unknown) => void; }, { name: "detect-user-voice"; mode: "stream"; state: never; onEvent: (params: unknown) => Promise<void>; }, { name: "transcribe-user-voice"; mode: "stream"; state: never; onEvent: (params: unknown) => Promise<void>; }, { name: "detect-end-of-turn"; mode: "stream"; state: never; onEvent: (params: unknown) => Promise<void>; }, { name: "generate-agent-response"; mode: "block"; state: never; onEvent: (params: unknown) => void; }, { name: "handle-resources-requests"; mode: "block"; state: never; onEvent: (params: unknown) => void; }, { name: "handle-tools-requests"; mode: "block"; state: never; onEvent: (params: unknown) => void; }, { name: "stream-outgoing-audio"; mode: "stream"; state: never; onEvent: (params: unknown) => void; }]; } & { dependencies: []; }; }, ProvidedConfigs>) => { new (): { continue(params: { interrupt?: false | "abrupt" | "smooth" | undefined; preventInterruption?: boolean | undefined; }): Promise<string>; decide(params: { messages: ({ role: "user"; id: string; createdAt: number; lastUpdated: number; content?: string | undefined; } | { role: "system"; id: string; createdAt: number; lastUpdated: number; content?: string | undefined; } | { role: "agent"; id: string; createdAt: number; lastUpdated: number; content?: string | undefined; toolsRequests?: { toolRequestId: string; toolName: string; toolInput: Record<string, any>; }[] | undefined; } | { role: "tool"; toolRequestId: string; toolName: string; toolSuccess: boolean; id: string; createdAt: number; lastUpdated: number; toolOutput?: Record<string, any> | undefined; toolError?: string | undefined; })[]; interrupt?: false | "abrupt" | "smooth" | undefined; preventInterruption?: boolean | undefined; }): Promise<string>; say(params: { text: string; interrupt?: false | "abrupt" | "smooth" | undefined; preventInterruption?: boolean | undefined; }): Promise<string>; interrupt(params: { reason: string; author: "user" | "application"; force?: boolean | undefined; }): Promise<string>; messages: { create: (params: { message: { role: "user"; content?: string | undefined; } | { role: "system"; content?: string | undefined; } | { role: "agent"; content?: string | undefined; toolsRequests?: { toolRequestId: string; toolName: string; toolInput: Record<string, any>; }[] | undefined; } | { role: "tool"; toolRequestId: string; toolName: string; toolSuccess: boolean; toolOutput?: Record<string, any> | undefined; toolError?: string | undefined; }; }) => Promise<string>; update: (params: { id: string; role: "user" | "system" | "agent" | "tool"; message: { role: "user"; content?: string | undefined; } | { role: "system"; content?: string | undefined; } | { role: "agent"; content?: string | undefined; toolsRequests?: { toolRequestId: string; toolName: string; toolInput: Record<string, any>; }[] | undefined; } | { role: "tool"; toolRequestId: string; toolName: string; toolSuccess: boolean; toolOutput?: Record<string, any> | undefined; toolError?: string | undefined; }; }) => Promise<string>; get: () => ({ role: "user"; content: string; id: string; createdAt: number; lastUpdated: number; } | { role: "system"; content: string; id: string; createdAt: number; lastUpdated: number; } | { role: "agent"; content: string; toolsRequests: { toolRequestId: string; toolName: string; toolInput: Record<string, any>; }[]; id: string; createdAt: number; lastUpdated: number; } | { role: "tool"; toolRequestId: string; toolName: string; toolSuccess: boolean; id: string; createdAt: number; lastUpdated: number; toolOutput?: Record<string, any> | undefined; toolError?: string | undefined; })[]; }; }; }; readonly atoms: <const ProvidedConfigs extends PluginClientProvidedConfigs<ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">, ZodObjectWithTelemetry<z.ZodObject<{ voiceDetection: z.ZodPrefault<z.ZodObject<{ scoreInThreshold: z.ZodPrefault<z.ZodNumber>; scoreOutThreshold: z.ZodPrefault<z.ZodNumber>; prePaddingChunks: z.ZodPrefault<z.ZodNumber>; postPaddingChunks: z.ZodPrefault<z.ZodNumber>; minVoiceInterruptionMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; endOfTurnDetection: z.ZodPrefault<z.ZodObject<{ threshold: z.ZodPrefault<z.ZodNumber>; minTimeoutMs: z.ZodPrefault<z.ZodNumber>; maxTimeoutMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>, "output">>>({ plugin, telemetry }: PluginClientParams<{ readonly name: "generation"; readonly config: ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; readonly dependencies: []; readonly class: <const ProvidedConfigs_1 extends PluginClientProvidedConfigs<ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">, ZodObjectWithTelemetry<z.ZodObject<{ voiceDetection: z.ZodPrefault<z.ZodObject<{ scoreInThreshold: z.ZodPrefault<z.ZodNumber>; scoreOutThreshold: z.ZodPrefault<z.ZodNumber>; prePaddingChunks: z.ZodPrefault<z.ZodNumber>; postPaddingChunks: z.ZodPrefault<z.ZodNumber>; minVoiceInterruptionMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; endOfTurnDetection: z.ZodPrefault<z.ZodObject<{ threshold: z.ZodPrefault<z.ZodNumber>; minTimeoutMs: z.ZodPrefault<z.ZodNumber>; maxTimeoutMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>, "output">>>({ plugin }: PluginClientParams<{ readonly name: "generation"; readonly config: ZodObjectWithTelemetry<z.ZodObject<{ enableVoice: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; readonly dependencies: []; readonly class: <const _ProvidedConfigs>(..._args: Any[]) => { new (): {}; }; readonly atoms: <const _ProvidedConfigs>(..._args: Any[]) => never[]; readonly $serverDef: { name: "generation"; config: ZodObjectWithTelemetry<z.ZodObject<{ voiceDetection: z.ZodPrefault<z.ZodObject<{ scoreInThreshold: z.ZodPrefault<z.ZodNumber>; scoreOutThreshold: z.ZodPrefault<z.ZodNumber>; prePaddingChunks: z.ZodPrefault<z.ZodNumber>; postPaddingChunks: z.ZodPrefault<z.ZodNumber>; minVoiceInterruptionMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; endOfTurnDetection: z.ZodPrefault<z.ZodObject<{ threshold: z.ZodPrefault<z.ZodNumber>; minTimeoutMs: z.ZodPrefault<z.ZodNumber>; maxTimeoutMs: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>>; }, zod_v4_core.$strip>, "output">; context: ZodObjectWithTelemetry<z.ZodObject<{ messages: z.ZodPrefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>], "role">>>; status: z.ZodPrefault<z.ZodObject<{ listening: z.ZodPrefault<z.ZodBoolean>; thinking: z.ZodPrefault<z.ZodBoolean>; speaking: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>>; voiceEnabled: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>, "output">; events: [{ readonly name: "plugin.start"; readonly dataSchema: z.ZodObject<{ isRestart: z.ZodPrefault<z.ZodBoolean>; restartCount: z.ZodPrefault<z.ZodNumber>; }, zod_v4_core.$strip>; }, { readonly name: "plugin.stop"; }, { readonly name: "plugin.test"; }, { readonly name: "plugin.error"; readonly dataSchema: z.ZodObject<{ error: z.ZodCustom<LifeErrorUnion, LifeErrorUnion>; event: z.ZodObject<{ id: z.ZodString; name: z.ZodString; urgent: z.ZodPrefault<z.ZodBoolean>; data: z.ZodPrefault<z.ZodAny>; created: z.ZodObject<{ at: z.ZodNumber; by: z.ZodDiscriminatedUnion<[z.ZodObject<{ type: z.ZodLiteral<"handler">; plugin: z.ZodString; handler: z.ZodString; event: z.ZodString; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"server">; name: z.ZodString; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"client">; name: z.ZodString; }, zod_v4_core.$strip>], "type">; }, zod_v4_core.$strip>; edited: z.ZodDefault<z.ZodUnion<[z.ZodArray<z.ZodObject<{ at: z.ZodNumber; by: z.ZodObject<{ plugin: z.ZodString; handler: z.ZodString; }, zod_v4_core.$strip>; reason: z.ZodString; dataBefore: z.ZodAny; dataAfter: z.ZodAny; }, zod_v4_core.$strip>>, z.ZodLiteral<false>]>>; dropped: z.ZodPrefault<z.ZodUnion<[z.ZodObject<{ at: z.ZodNumber; by: z.ZodObject<{ plugin: z.ZodString; handler: z.ZodString; }, zod_v4_core.$strip>; reason: z.ZodString; }, zod_v4_core.$strip>, z.ZodLiteral<false>]>>; contextChanges: z.ZodPrefault<z.ZodArray<z.ZodObject<{ at: z.ZodNumber; byHandler: z.ZodString; valueBefore: z.ZodAny; valueAfter: z.ZodAny; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>; }, zod_v4_core.$strip>; }] | [{ name: "messages.create"; dataSchema: z.ZodObject<{ message: z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>], "role">; }, zod_v4_core.$strip>; }, { name: "messages.update"; dataSchema: z.ZodObject<{ id: z.ZodString; role: z.ZodEnum<{ user: "user"; system: "system"; agent: "agent"; tool: "tool"; }>; message: z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoolean; toolOutput: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>; toolError: z.ZodOptional<z.ZodString>; }, zod_v4_core.$strip>], "role">; }, zod_v4_core.$strip>; }, { name: "user.audio-chunk"; dataSchema: z.ZodObject<{ audioChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; }, zod_v4_core.$strip>; }, { name: "user.voice-start"; }, { name: "user.voice-chunk"; dataSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{ type: z.ZodLiteral<"voice">; voiceChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; }, zod_v4_core.$strip>, z.ZodObject<{ type: z.ZodLiteral<"padding">; voiceChunk: z.ZodCustom<Int16Array<ArrayBufferLike>, Int16Array<ArrayBufferLike>>; paddingSide: z.ZodEnum<{ pre: "pre"; post: "post"; }>; paddingIndex: z.ZodNumber; }, zod_v4_core.$strip>], "type">; }, { name: "user.voice-end"; }, { name: "user.text-chunk"; dataSchema: z.ZodObject<{ textChunk: z.ZodString; }, zod_v4_core.$strip>; }, { name: "user.interrupted"; }, { name: "agent.thinking-start"; }, { name: "agent.thinking-end"; }, { name: "agent.speaking-start"; }, { name: "agent.speaking-end"; }, { name: "agent.continue"; dataSchema: z.ZodObject<{ interrupt: z.ZodPrefault<z.ZodUnion<[z.ZodEnum<{ abrupt: "abrupt"; smooth: "smooth"; }>, z.ZodLiteral<false>]>>; preventInterruption: z.ZodPrefault<z.ZodBoolean>; }, zod_v4_core.$strip>; }, { name: "agent.decide"; dataSchema: z.ZodObject<{ interrupt: z.ZodPrefault<z.ZodUnion<[z.ZodEnum<{ abrupt: "abrupt"; smooth: "smooth"; }>, z.ZodLiteral<false>]>>; preventInterruption: z.ZodPrefault<z.ZodBoolean>; messages: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{ role: z.ZodLiteral<"user">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"system">; content: z.ZodPrefault<z.ZodString>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"agent">; content: z.ZodPrefault<z.ZodString>; toolsRequests: z.ZodPrefault<z.ZodArray<z.ZodObject<{ toolRequestId: z.ZodString; toolName: z.ZodString; toolInput: z.ZodRecord<z.ZodString, z.ZodAny>; }, zod_v4_core.$strip>>>; id: z.ZodString; createdAt: z.ZodNumber; lastUpdated: z.ZodNumber; }, zod_v4_core.$strip>, z.ZodObject<{ role: z.ZodLiteral<"tool">; toolRequestId: z.ZodString; toolName: z.ZodString; toolSuccess: z.ZodBoole