@livekit/agents 0.0.0-20260120144724
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +17 -0
- package/dist/_exceptions.cjs +109 -0
- package/dist/_exceptions.cjs.map +1 -0
- package/dist/_exceptions.d.cts +64 -0
- package/dist/_exceptions.d.ts +64 -0
- package/dist/_exceptions.d.ts.map +1 -0
- package/dist/_exceptions.js +80 -0
- package/dist/_exceptions.js.map +1 -0
- package/dist/audio.cjs +170 -0
- package/dist/audio.cjs.map +1 -0
- package/dist/audio.d.cts +46 -0
- package/dist/audio.d.ts +46 -0
- package/dist/audio.d.ts.map +1 -0
- package/dist/audio.js +133 -0
- package/dist/audio.js.map +1 -0
- package/dist/cli.cjs +171 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +14 -0
- package/dist/cli.d.ts +14 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +145 -0
- package/dist/cli.js.map +1 -0
- package/dist/connection_pool.cjs +242 -0
- package/dist/connection_pool.cjs.map +1 -0
- package/dist/connection_pool.d.cts +123 -0
- package/dist/connection_pool.d.ts +123 -0
- package/dist/connection_pool.d.ts.map +1 -0
- package/dist/connection_pool.js +218 -0
- package/dist/connection_pool.js.map +1 -0
- package/dist/connection_pool.test.cjs +256 -0
- package/dist/connection_pool.test.cjs.map +1 -0
- package/dist/connection_pool.test.js +255 -0
- package/dist/connection_pool.test.js.map +1 -0
- package/dist/constants.cjs +44 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/constants.d.cts +7 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -0
- package/dist/generator.cjs +36 -0
- package/dist/generator.cjs.map +1 -0
- package/dist/generator.d.cts +23 -0
- package/dist/generator.d.ts +23 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +11 -0
- package/dist/generator.js.map +1 -0
- package/dist/http_server.cjs +75 -0
- package/dist/http_server.cjs.map +1 -0
- package/dist/http_server.d.cts +20 -0
- package/dist/http_server.d.ts +20 -0
- package/dist/http_server.d.ts.map +1 -0
- package/dist/http_server.js +51 -0
- package/dist/http_server.js.map +1 -0
- package/dist/index.cjs +100 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +35 -0
- package/dist/index.d.ts +35 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +40 -0
- package/dist/index.js.map +1 -0
- package/dist/inference/api_protos.cjs +104 -0
- package/dist/inference/api_protos.cjs.map +1 -0
- package/dist/inference/api_protos.d.cts +222 -0
- package/dist/inference/api_protos.d.ts +222 -0
- package/dist/inference/api_protos.d.ts.map +1 -0
- package/dist/inference/api_protos.js +70 -0
- package/dist/inference/api_protos.js.map +1 -0
- package/dist/inference/index.cjs +56 -0
- package/dist/inference/index.cjs.map +1 -0
- package/dist/inference/index.d.cts +8 -0
- package/dist/inference/index.d.ts +8 -0
- package/dist/inference/index.d.ts.map +1 -0
- package/dist/inference/index.js +23 -0
- package/dist/inference/index.js.map +1 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.cjs +152 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.cjs.map +1 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.cts +50 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.ts +50 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.d.ts.map +1 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.js +125 -0
- package/dist/inference/interruption/AdaptiveInterruptionDetector.js.map +1 -0
- package/dist/inference/interruption/InterruptionStream.cjs +310 -0
- package/dist/inference/interruption/InterruptionStream.cjs.map +1 -0
- package/dist/inference/interruption/InterruptionStream.d.cts +57 -0
- package/dist/inference/interruption/InterruptionStream.d.ts +57 -0
- package/dist/inference/interruption/InterruptionStream.d.ts.map +1 -0
- package/dist/inference/interruption/InterruptionStream.js +288 -0
- package/dist/inference/interruption/InterruptionStream.js.map +1 -0
- package/dist/inference/interruption/defaults.cjs +76 -0
- package/dist/inference/interruption/defaults.cjs.map +1 -0
- package/dist/inference/interruption/defaults.d.cts +14 -0
- package/dist/inference/interruption/defaults.d.ts +14 -0
- package/dist/inference/interruption/defaults.d.ts.map +1 -0
- package/dist/inference/interruption/defaults.js +42 -0
- package/dist/inference/interruption/defaults.js.map +1 -0
- package/dist/inference/interruption/errors.cjs +2 -0
- package/dist/inference/interruption/errors.cjs.map +1 -0
- package/dist/inference/interruption/errors.d.cts +2 -0
- package/dist/inference/interruption/errors.d.ts +2 -0
- package/dist/inference/interruption/errors.d.ts.map +1 -0
- package/dist/inference/interruption/errors.js +1 -0
- package/dist/inference/interruption/errors.js.map +1 -0
- package/dist/inference/interruption/http_transport.cjs +57 -0
- package/dist/inference/interruption/http_transport.cjs.map +1 -0
- package/dist/inference/interruption/http_transport.d.cts +23 -0
- package/dist/inference/interruption/http_transport.d.ts +23 -0
- package/dist/inference/interruption/http_transport.d.ts.map +1 -0
- package/dist/inference/interruption/http_transport.js +33 -0
- package/dist/inference/interruption/http_transport.js.map +1 -0
- package/dist/inference/interruption/index.cjs +34 -0
- package/dist/inference/interruption/index.cjs.map +1 -0
- package/dist/inference/interruption/index.d.cts +5 -0
- package/dist/inference/interruption/index.d.ts +5 -0
- package/dist/inference/interruption/index.d.ts.map +1 -0
- package/dist/inference/interruption/index.js +7 -0
- package/dist/inference/interruption/index.js.map +1 -0
- package/dist/inference/interruption/interruption.cjs +85 -0
- package/dist/inference/interruption/interruption.cjs.map +1 -0
- package/dist/inference/interruption/interruption.d.cts +48 -0
- package/dist/inference/interruption/interruption.d.ts +48 -0
- package/dist/inference/interruption/interruption.d.ts.map +1 -0
- package/dist/inference/interruption/interruption.js +59 -0
- package/dist/inference/interruption/interruption.js.map +1 -0
- package/dist/inference/llm.cjs +347 -0
- package/dist/inference/llm.cjs.map +1 -0
- package/dist/inference/llm.d.cts +114 -0
- package/dist/inference/llm.d.ts +114 -0
- package/dist/inference/llm.d.ts.map +1 -0
- package/dist/inference/llm.js +318 -0
- package/dist/inference/llm.js.map +1 -0
- package/dist/inference/stt.cjs +371 -0
- package/dist/inference/stt.cjs.map +1 -0
- package/dist/inference/stt.d.cts +91 -0
- package/dist/inference/stt.d.ts +91 -0
- package/dist/inference/stt.d.ts.map +1 -0
- package/dist/inference/stt.js +350 -0
- package/dist/inference/stt.js.map +1 -0
- package/dist/inference/tts.cjs +439 -0
- package/dist/inference/tts.cjs.map +1 -0
- package/dist/inference/tts.d.cts +80 -0
- package/dist/inference/tts.d.ts +80 -0
- package/dist/inference/tts.d.ts.map +1 -0
- package/dist/inference/tts.js +417 -0
- package/dist/inference/tts.js.map +1 -0
- package/dist/inference/utils.cjs +89 -0
- package/dist/inference/utils.cjs.map +1 -0
- package/dist/inference/utils.d.cts +6 -0
- package/dist/inference/utils.d.ts +6 -0
- package/dist/inference/utils.d.ts.map +1 -0
- package/dist/inference/utils.js +63 -0
- package/dist/inference/utils.js.map +1 -0
- package/dist/inference/utils.test.cjs +20 -0
- package/dist/inference/utils.test.cjs.map +1 -0
- package/dist/inference/utils.test.js +19 -0
- package/dist/inference/utils.test.js.map +1 -0
- package/dist/inference_runner.cjs +37 -0
- package/dist/inference_runner.cjs.map +1 -0
- package/dist/inference_runner.d.cts +11 -0
- package/dist/inference_runner.d.ts +11 -0
- package/dist/inference_runner.d.ts.map +1 -0
- package/dist/inference_runner.js +13 -0
- package/dist/inference_runner.js.map +1 -0
- package/dist/ipc/index.cjs +23 -0
- package/dist/ipc/index.cjs.map +1 -0
- package/dist/ipc/index.d.cts +2 -0
- package/dist/ipc/index.d.ts +2 -0
- package/dist/ipc/index.d.ts.map +1 -0
- package/dist/ipc/index.js +2 -0
- package/dist/ipc/index.js.map +1 -0
- package/dist/ipc/inference_executor.cjs +17 -0
- package/dist/ipc/inference_executor.cjs.map +1 -0
- package/dist/ipc/inference_executor.d.cts +4 -0
- package/dist/ipc/inference_executor.d.ts +4 -0
- package/dist/ipc/inference_executor.d.ts.map +1 -0
- package/dist/ipc/inference_executor.js +1 -0
- package/dist/ipc/inference_executor.js.map +1 -0
- package/dist/ipc/inference_proc_executor.cjs +101 -0
- package/dist/ipc/inference_proc_executor.cjs.map +1 -0
- package/dist/ipc/inference_proc_executor.d.cts +23 -0
- package/dist/ipc/inference_proc_executor.d.ts +23 -0
- package/dist/ipc/inference_proc_executor.d.ts.map +1 -0
- package/dist/ipc/inference_proc_executor.js +75 -0
- package/dist/ipc/inference_proc_executor.js.map +1 -0
- package/dist/ipc/inference_proc_lazy_main.cjs +86 -0
- package/dist/ipc/inference_proc_lazy_main.cjs.map +1 -0
- package/dist/ipc/inference_proc_lazy_main.d.cts +2 -0
- package/dist/ipc/inference_proc_lazy_main.d.ts +2 -0
- package/dist/ipc/inference_proc_lazy_main.d.ts.map +1 -0
- package/dist/ipc/inference_proc_lazy_main.js +85 -0
- package/dist/ipc/inference_proc_lazy_main.js.map +1 -0
- package/dist/ipc/job_executor.cjs +34 -0
- package/dist/ipc/job_executor.cjs.map +1 -0
- package/dist/ipc/job_executor.d.cts +18 -0
- package/dist/ipc/job_executor.d.ts +18 -0
- package/dist/ipc/job_executor.d.ts.map +1 -0
- package/dist/ipc/job_executor.js +10 -0
- package/dist/ipc/job_executor.js.map +1 -0
- package/dist/ipc/job_proc_executor.cjs +115 -0
- package/dist/ipc/job_proc_executor.cjs.map +1 -0
- package/dist/ipc/job_proc_executor.d.cts +19 -0
- package/dist/ipc/job_proc_executor.d.ts +19 -0
- package/dist/ipc/job_proc_executor.d.ts.map +1 -0
- package/dist/ipc/job_proc_executor.js +89 -0
- package/dist/ipc/job_proc_executor.js.map +1 -0
- package/dist/ipc/job_proc_lazy_main.cjs +210 -0
- package/dist/ipc/job_proc_lazy_main.cjs.map +1 -0
- package/dist/ipc/job_proc_lazy_main.d.cts +2 -0
- package/dist/ipc/job_proc_lazy_main.d.ts +2 -0
- package/dist/ipc/job_proc_lazy_main.d.ts.map +1 -0
- package/dist/ipc/job_proc_lazy_main.js +187 -0
- package/dist/ipc/job_proc_lazy_main.js.map +1 -0
- package/dist/ipc/message.cjs +17 -0
- package/dist/ipc/message.cjs.map +1 -0
- package/dist/ipc/message.d.cts +58 -0
- package/dist/ipc/message.d.ts +58 -0
- package/dist/ipc/message.d.ts.map +1 -0
- package/dist/ipc/message.js +1 -0
- package/dist/ipc/message.js.map +1 -0
- package/dist/ipc/proc_pool.cjs +164 -0
- package/dist/ipc/proc_pool.cjs.map +1 -0
- package/dist/ipc/proc_pool.d.cts +31 -0
- package/dist/ipc/proc_pool.d.ts +31 -0
- package/dist/ipc/proc_pool.d.ts.map +1 -0
- package/dist/ipc/proc_pool.js +140 -0
- package/dist/ipc/proc_pool.js.map +1 -0
- package/dist/ipc/supervised_proc.cjs +229 -0
- package/dist/ipc/supervised_proc.cjs.map +1 -0
- package/dist/ipc/supervised_proc.d.cts +32 -0
- package/dist/ipc/supervised_proc.d.ts +32 -0
- package/dist/ipc/supervised_proc.d.ts.map +1 -0
- package/dist/ipc/supervised_proc.js +195 -0
- package/dist/ipc/supervised_proc.js.map +1 -0
- package/dist/ipc/supervised_proc.test.cjs +145 -0
- package/dist/ipc/supervised_proc.test.cjs.map +1 -0
- package/dist/ipc/supervised_proc.test.js +122 -0
- package/dist/ipc/supervised_proc.test.js.map +1 -0
- package/dist/job.cjs +373 -0
- package/dist/job.cjs.map +1 -0
- package/dist/job.d.cts +141 -0
- package/dist/job.d.ts +141 -0
- package/dist/job.d.ts.map +1 -0
- package/dist/job.js +332 -0
- package/dist/job.js.map +1 -0
- package/dist/llm/chat_context.cjs +527 -0
- package/dist/llm/chat_context.cjs.map +1 -0
- package/dist/llm/chat_context.d.cts +223 -0
- package/dist/llm/chat_context.d.ts +223 -0
- package/dist/llm/chat_context.d.ts.map +1 -0
- package/dist/llm/chat_context.js +496 -0
- package/dist/llm/chat_context.js.map +1 -0
- package/dist/llm/chat_context.test.cjs +911 -0
- package/dist/llm/chat_context.test.cjs.map +1 -0
- package/dist/llm/chat_context.test.js +916 -0
- package/dist/llm/chat_context.test.js.map +1 -0
- package/dist/llm/fallback_adapter.cjs +278 -0
- package/dist/llm/fallback_adapter.cjs.map +1 -0
- package/dist/llm/fallback_adapter.d.cts +73 -0
- package/dist/llm/fallback_adapter.d.ts +73 -0
- package/dist/llm/fallback_adapter.d.ts.map +1 -0
- package/dist/llm/fallback_adapter.js +254 -0
- package/dist/llm/fallback_adapter.js.map +1 -0
- package/dist/llm/fallback_adapter.test.cjs +176 -0
- package/dist/llm/fallback_adapter.test.cjs.map +1 -0
- package/dist/llm/fallback_adapter.test.js +175 -0
- package/dist/llm/fallback_adapter.test.js.map +1 -0
- package/dist/llm/index.cjs +79 -0
- package/dist/llm/index.cjs.map +1 -0
- package/dist/llm/index.d.cts +9 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +61 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/llm/llm.cjs +226 -0
- package/dist/llm/llm.cjs.map +1 -0
- package/dist/llm/llm.d.cts +94 -0
- package/dist/llm/llm.d.ts +94 -0
- package/dist/llm/llm.d.ts.map +1 -0
- package/dist/llm/llm.js +201 -0
- package/dist/llm/llm.js.map +1 -0
- package/dist/llm/provider_format/google.cjs +132 -0
- package/dist/llm/provider_format/google.cjs.map +1 -0
- package/dist/llm/provider_format/google.d.cts +6 -0
- package/dist/llm/provider_format/google.d.ts +6 -0
- package/dist/llm/provider_format/google.d.ts.map +1 -0
- package/dist/llm/provider_format/google.js +108 -0
- package/dist/llm/provider_format/google.js.map +1 -0
- package/dist/llm/provider_format/google.test.cjs +724 -0
- package/dist/llm/provider_format/google.test.cjs.map +1 -0
- package/dist/llm/provider_format/google.test.js +728 -0
- package/dist/llm/provider_format/google.test.js.map +1 -0
- package/dist/llm/provider_format/index.cjs +40 -0
- package/dist/llm/provider_format/index.cjs.map +1 -0
- package/dist/llm/provider_format/index.d.cts +4 -0
- package/dist/llm/provider_format/index.d.ts +4 -0
- package/dist/llm/provider_format/index.d.ts.map +1 -0
- package/dist/llm/provider_format/index.js +16 -0
- package/dist/llm/provider_format/index.js.map +1 -0
- package/dist/llm/provider_format/openai.cjs +138 -0
- package/dist/llm/provider_format/openai.cjs.map +1 -0
- package/dist/llm/provider_format/openai.d.cts +3 -0
- package/dist/llm/provider_format/openai.d.ts +3 -0
- package/dist/llm/provider_format/openai.d.ts.map +1 -0
- package/dist/llm/provider_format/openai.js +114 -0
- package/dist/llm/provider_format/openai.js.map +1 -0
- package/dist/llm/provider_format/openai.test.cjs +557 -0
- package/dist/llm/provider_format/openai.test.cjs.map +1 -0
- package/dist/llm/provider_format/openai.test.js +561 -0
- package/dist/llm/provider_format/openai.test.js.map +1 -0
- package/dist/llm/provider_format/utils.cjs +146 -0
- package/dist/llm/provider_format/utils.cjs.map +1 -0
- package/dist/llm/provider_format/utils.d.cts +38 -0
- package/dist/llm/provider_format/utils.d.ts +38 -0
- package/dist/llm/provider_format/utils.d.ts.map +1 -0
- package/dist/llm/provider_format/utils.js +122 -0
- package/dist/llm/provider_format/utils.js.map +1 -0
- package/dist/llm/realtime.cjs +77 -0
- package/dist/llm/realtime.cjs.map +1 -0
- package/dist/llm/realtime.d.cts +106 -0
- package/dist/llm/realtime.d.ts +106 -0
- package/dist/llm/realtime.d.ts.map +1 -0
- package/dist/llm/realtime.js +52 -0
- package/dist/llm/realtime.js.map +1 -0
- package/dist/llm/remote_chat_context.cjs +112 -0
- package/dist/llm/remote_chat_context.cjs.map +1 -0
- package/dist/llm/remote_chat_context.d.cts +25 -0
- package/dist/llm/remote_chat_context.d.ts +25 -0
- package/dist/llm/remote_chat_context.d.ts.map +1 -0
- package/dist/llm/remote_chat_context.js +88 -0
- package/dist/llm/remote_chat_context.js.map +1 -0
- package/dist/llm/remote_chat_context.test.cjs +225 -0
- package/dist/llm/remote_chat_context.test.cjs.map +1 -0
- package/dist/llm/remote_chat_context.test.js +224 -0
- package/dist/llm/remote_chat_context.test.js.map +1 -0
- package/dist/llm/tool_context.cjs +152 -0
- package/dist/llm/tool_context.cjs.map +1 -0
- package/dist/llm/tool_context.d.cts +153 -0
- package/dist/llm/tool_context.d.ts +153 -0
- package/dist/llm/tool_context.d.ts.map +1 -0
- package/dist/llm/tool_context.js +119 -0
- package/dist/llm/tool_context.js.map +1 -0
- package/dist/llm/tool_context.test.cjs +359 -0
- package/dist/llm/tool_context.test.cjs.map +1 -0
- package/dist/llm/tool_context.test.js +336 -0
- package/dist/llm/tool_context.test.js.map +1 -0
- package/dist/llm/tool_context.type.test.cjs +92 -0
- package/dist/llm/tool_context.type.test.cjs.map +1 -0
- package/dist/llm/tool_context.type.test.js +91 -0
- package/dist/llm/tool_context.type.test.js.map +1 -0
- package/dist/llm/utils.cjs +267 -0
- package/dist/llm/utils.cjs.map +1 -0
- package/dist/llm/utils.d.cts +41 -0
- package/dist/llm/utils.d.ts +41 -0
- package/dist/llm/utils.d.ts.map +1 -0
- package/dist/llm/utils.js +230 -0
- package/dist/llm/utils.js.map +1 -0
- package/dist/llm/utils.test.cjs +513 -0
- package/dist/llm/utils.test.cjs.map +1 -0
- package/dist/llm/utils.test.js +490 -0
- package/dist/llm/utils.test.js.map +1 -0
- package/dist/llm/zod-utils.cjs +102 -0
- package/dist/llm/zod-utils.cjs.map +1 -0
- package/dist/llm/zod-utils.d.cts +65 -0
- package/dist/llm/zod-utils.d.ts +65 -0
- package/dist/llm/zod-utils.d.ts.map +1 -0
- package/dist/llm/zod-utils.js +64 -0
- package/dist/llm/zod-utils.js.map +1 -0
- package/dist/llm/zod-utils.test.cjs +472 -0
- package/dist/llm/zod-utils.test.cjs.map +1 -0
- package/dist/llm/zod-utils.test.js +455 -0
- package/dist/llm/zod-utils.test.js.map +1 -0
- package/dist/log.cjs +81 -0
- package/dist/log.cjs.map +1 -0
- package/dist/log.d.cts +20 -0
- package/dist/log.d.ts +20 -0
- package/dist/log.d.ts.map +1 -0
- package/dist/log.js +54 -0
- package/dist/log.js.map +1 -0
- package/dist/metrics/base.cjs +17 -0
- package/dist/metrics/base.cjs.map +1 -0
- package/dist/metrics/base.d.cts +150 -0
- package/dist/metrics/base.d.ts +150 -0
- package/dist/metrics/base.d.ts.map +1 -0
- package/dist/metrics/base.js +1 -0
- package/dist/metrics/base.js.map +1 -0
- package/dist/metrics/index.cjs +32 -0
- package/dist/metrics/index.cjs.map +1 -0
- package/dist/metrics/index.d.cts +4 -0
- package/dist/metrics/index.d.ts +4 -0
- package/dist/metrics/index.d.ts.map +1 -0
- package/dist/metrics/index.js +7 -0
- package/dist/metrics/index.js.map +1 -0
- package/dist/metrics/usage_collector.cjs +58 -0
- package/dist/metrics/usage_collector.cjs.map +1 -0
- package/dist/metrics/usage_collector.d.cts +15 -0
- package/dist/metrics/usage_collector.d.ts +15 -0
- package/dist/metrics/usage_collector.d.ts.map +1 -0
- package/dist/metrics/usage_collector.js +34 -0
- package/dist/metrics/usage_collector.js.map +1 -0
- package/dist/metrics/utils.cjs +74 -0
- package/dist/metrics/utils.cjs.map +1 -0
- package/dist/metrics/utils.d.cts +3 -0
- package/dist/metrics/utils.d.ts +3 -0
- package/dist/metrics/utils.d.ts.map +1 -0
- package/dist/metrics/utils.js +50 -0
- package/dist/metrics/utils.js.map +1 -0
- package/dist/plugin.cjs +62 -0
- package/dist/plugin.cjs.map +1 -0
- package/dist/plugin.d.cts +24 -0
- package/dist/plugin.d.ts +24 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +37 -0
- package/dist/plugin.js.map +1 -0
- package/dist/stream/deferred_stream.cjs +106 -0
- package/dist/stream/deferred_stream.cjs.map +1 -0
- package/dist/stream/deferred_stream.d.cts +32 -0
- package/dist/stream/deferred_stream.d.ts +32 -0
- package/dist/stream/deferred_stream.d.ts.map +1 -0
- package/dist/stream/deferred_stream.js +81 -0
- package/dist/stream/deferred_stream.js.map +1 -0
- package/dist/stream/deferred_stream.test.cjs +527 -0
- package/dist/stream/deferred_stream.test.cjs.map +1 -0
- package/dist/stream/deferred_stream.test.js +526 -0
- package/dist/stream/deferred_stream.test.js.map +1 -0
- package/dist/stream/identity_transform.cjs +42 -0
- package/dist/stream/identity_transform.cjs.map +1 -0
- package/dist/stream/identity_transform.d.cts +6 -0
- package/dist/stream/identity_transform.d.ts +6 -0
- package/dist/stream/identity_transform.d.ts.map +1 -0
- package/dist/stream/identity_transform.js +18 -0
- package/dist/stream/identity_transform.js.map +1 -0
- package/dist/stream/identity_transform.test.cjs +125 -0
- package/dist/stream/identity_transform.test.cjs.map +1 -0
- package/dist/stream/identity_transform.test.js +124 -0
- package/dist/stream/identity_transform.test.js.map +1 -0
- package/dist/stream/index.cjs +38 -0
- package/dist/stream/index.cjs.map +1 -0
- package/dist/stream/index.d.cts +5 -0
- package/dist/stream/index.d.ts +5 -0
- package/dist/stream/index.d.ts.map +1 -0
- package/dist/stream/index.js +11 -0
- package/dist/stream/index.js.map +1 -0
- package/dist/stream/merge_readable_streams.cjs +59 -0
- package/dist/stream/merge_readable_streams.cjs.map +1 -0
- package/dist/stream/merge_readable_streams.d.cts +4 -0
- package/dist/stream/merge_readable_streams.d.ts +4 -0
- package/dist/stream/merge_readable_streams.d.ts.map +1 -0
- package/dist/stream/merge_readable_streams.js +35 -0
- package/dist/stream/merge_readable_streams.js.map +1 -0
- package/dist/stream/stream_channel.cjs +57 -0
- package/dist/stream/stream_channel.cjs.map +1 -0
- package/dist/stream/stream_channel.d.cts +11 -0
- package/dist/stream/stream_channel.d.ts +11 -0
- package/dist/stream/stream_channel.d.ts.map +1 -0
- package/dist/stream/stream_channel.js +33 -0
- package/dist/stream/stream_channel.js.map +1 -0
- package/dist/stream/stream_channel.test.cjs +124 -0
- package/dist/stream/stream_channel.test.cjs.map +1 -0
- package/dist/stream/stream_channel.test.js +123 -0
- package/dist/stream/stream_channel.test.js.map +1 -0
- package/dist/stt/index.cjs +38 -0
- package/dist/stt/index.cjs.map +1 -0
- package/dist/stt/index.d.cts +3 -0
- package/dist/stt/index.d.ts +3 -0
- package/dist/stt/index.d.ts.map +1 -0
- package/dist/stt/index.js +14 -0
- package/dist/stt/index.js.map +1 -0
- package/dist/stt/stream_adapter.cjs +115 -0
- package/dist/stt/stream_adapter.cjs.map +1 -0
- package/dist/stt/stream_adapter.d.cts +23 -0
- package/dist/stt/stream_adapter.d.ts +23 -0
- package/dist/stt/stream_adapter.d.ts.map +1 -0
- package/dist/stt/stream_adapter.js +90 -0
- package/dist/stt/stream_adapter.js.map +1 -0
- package/dist/stt/stt.cjs +253 -0
- package/dist/stt/stt.cjs.map +1 -0
- package/dist/stt/stt.d.cts +158 -0
- package/dist/stt/stt.d.ts +158 -0
- package/dist/stt/stt.d.ts.map +1 -0
- package/dist/stt/stt.js +227 -0
- package/dist/stt/stt.js.map +1 -0
- package/dist/telemetry/index.cjs +72 -0
- package/dist/telemetry/index.cjs.map +1 -0
- package/dist/telemetry/index.d.cts +7 -0
- package/dist/telemetry/index.d.ts +7 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +37 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/logging.cjs +65 -0
- package/dist/telemetry/logging.cjs.map +1 -0
- package/dist/telemetry/logging.d.cts +21 -0
- package/dist/telemetry/logging.d.ts +21 -0
- package/dist/telemetry/logging.d.ts.map +1 -0
- package/dist/telemetry/logging.js +40 -0
- package/dist/telemetry/logging.js.map +1 -0
- package/dist/telemetry/otel_http_exporter.cjs +147 -0
- package/dist/telemetry/otel_http_exporter.cjs.map +1 -0
- package/dist/telemetry/otel_http_exporter.d.cts +62 -0
- package/dist/telemetry/otel_http_exporter.d.ts +62 -0
- package/dist/telemetry/otel_http_exporter.d.ts.map +1 -0
- package/dist/telemetry/otel_http_exporter.js +123 -0
- package/dist/telemetry/otel_http_exporter.js.map +1 -0
- package/dist/telemetry/pino_otel_transport.cjs +217 -0
- package/dist/telemetry/pino_otel_transport.cjs.map +1 -0
- package/dist/telemetry/pino_otel_transport.d.cts +58 -0
- package/dist/telemetry/pino_otel_transport.d.ts +58 -0
- package/dist/telemetry/pino_otel_transport.d.ts.map +1 -0
- package/dist/telemetry/pino_otel_transport.js +189 -0
- package/dist/telemetry/pino_otel_transport.js.map +1 -0
- package/dist/telemetry/trace_types.cjs +206 -0
- package/dist/telemetry/trace_types.cjs.map +1 -0
- package/dist/telemetry/trace_types.d.cts +61 -0
- package/dist/telemetry/trace_types.d.ts +61 -0
- package/dist/telemetry/trace_types.d.ts.map +1 -0
- package/dist/telemetry/trace_types.js +123 -0
- package/dist/telemetry/trace_types.js.map +1 -0
- package/dist/telemetry/traces.cjs +444 -0
- package/dist/telemetry/traces.cjs.map +1 -0
- package/dist/telemetry/traces.d.cts +114 -0
- package/dist/telemetry/traces.d.ts +114 -0
- package/dist/telemetry/traces.d.ts.map +1 -0
- package/dist/telemetry/traces.js +409 -0
- package/dist/telemetry/traces.js.map +1 -0
- package/dist/telemetry/utils.cjs +86 -0
- package/dist/telemetry/utils.cjs.map +1 -0
- package/dist/telemetry/utils.d.cts +5 -0
- package/dist/telemetry/utils.d.ts +5 -0
- package/dist/telemetry/utils.d.ts.map +1 -0
- package/dist/telemetry/utils.js +51 -0
- package/dist/telemetry/utils.js.map +1 -0
- package/dist/tokenize/basic/basic.cjs +105 -0
- package/dist/tokenize/basic/basic.cjs.map +1 -0
- package/dist/tokenize/basic/basic.d.cts +24 -0
- package/dist/tokenize/basic/basic.d.ts +24 -0
- package/dist/tokenize/basic/basic.d.ts.map +1 -0
- package/dist/tokenize/basic/basic.js +67 -0
- package/dist/tokenize/basic/basic.js.map +1 -0
- package/dist/tokenize/basic/hyphenator.cjs +425 -0
- package/dist/tokenize/basic/hyphenator.cjs.map +1 -0
- package/dist/tokenize/basic/hyphenator.d.cts +17 -0
- package/dist/tokenize/basic/hyphenator.d.ts +17 -0
- package/dist/tokenize/basic/hyphenator.d.ts.map +1 -0
- package/dist/tokenize/basic/hyphenator.js +401 -0
- package/dist/tokenize/basic/hyphenator.js.map +1 -0
- package/dist/tokenize/basic/index.cjs +37 -0
- package/dist/tokenize/basic/index.cjs.map +1 -0
- package/dist/tokenize/basic/index.d.cts +2 -0
- package/dist/tokenize/basic/index.d.ts +2 -0
- package/dist/tokenize/basic/index.d.ts.map +1 -0
- package/dist/tokenize/basic/index.js +15 -0
- package/dist/tokenize/basic/index.js.map +1 -0
- package/dist/tokenize/basic/paragraph.cjs +57 -0
- package/dist/tokenize/basic/paragraph.cjs.map +1 -0
- package/dist/tokenize/basic/paragraph.d.cts +5 -0
- package/dist/tokenize/basic/paragraph.d.ts +5 -0
- package/dist/tokenize/basic/paragraph.d.ts.map +1 -0
- package/dist/tokenize/basic/paragraph.js +33 -0
- package/dist/tokenize/basic/paragraph.js.map +1 -0
- package/dist/tokenize/basic/sentence.cjs +97 -0
- package/dist/tokenize/basic/sentence.cjs.map +1 -0
- package/dist/tokenize/basic/sentence.d.cts +5 -0
- package/dist/tokenize/basic/sentence.d.ts +5 -0
- package/dist/tokenize/basic/sentence.d.ts.map +1 -0
- package/dist/tokenize/basic/sentence.js +73 -0
- package/dist/tokenize/basic/sentence.js.map +1 -0
- package/dist/tokenize/basic/word.cjs +44 -0
- package/dist/tokenize/basic/word.cjs.map +1 -0
- package/dist/tokenize/basic/word.d.cts +5 -0
- package/dist/tokenize/basic/word.d.ts +5 -0
- package/dist/tokenize/basic/word.d.ts.map +1 -0
- package/dist/tokenize/basic/word.js +20 -0
- package/dist/tokenize/basic/word.js.map +1 -0
- package/dist/tokenize/index.cjs +55 -0
- package/dist/tokenize/index.cjs.map +1 -0
- package/dist/tokenize/index.d.cts +5 -0
- package/dist/tokenize/index.d.ts +5 -0
- package/dist/tokenize/index.d.ts.map +1 -0
- package/dist/tokenize/index.js +19 -0
- package/dist/tokenize/index.js.map +1 -0
- package/dist/tokenize/token_stream.cjs +168 -0
- package/dist/tokenize/token_stream.cjs.map +1 -0
- package/dist/tokenize/token_stream.d.cts +40 -0
- package/dist/tokenize/token_stream.d.ts +40 -0
- package/dist/tokenize/token_stream.d.ts.map +1 -0
- package/dist/tokenize/token_stream.js +142 -0
- package/dist/tokenize/token_stream.js.map +1 -0
- package/dist/tokenize/tokenizer.cjs +184 -0
- package/dist/tokenize/tokenizer.cjs.map +1 -0
- package/dist/tokenize/tokenizer.d.cts +55 -0
- package/dist/tokenize/tokenizer.d.ts +55 -0
- package/dist/tokenize/tokenizer.d.ts.map +1 -0
- package/dist/tokenize/tokenizer.js +156 -0
- package/dist/tokenize/tokenizer.js.map +1 -0
- package/dist/tokenize/tokenizer.test.cjs +220 -0
- package/dist/tokenize/tokenizer.test.cjs.map +1 -0
- package/dist/tokenize/tokenizer.test.js +219 -0
- package/dist/tokenize/tokenizer.test.js.map +1 -0
- package/dist/transcription.cjs +247 -0
- package/dist/transcription.cjs.map +1 -0
- package/dist/transcription.d.cts +31 -0
- package/dist/transcription.d.ts +31 -0
- package/dist/transcription.d.ts.map +1 -0
- package/dist/transcription.js +222 -0
- package/dist/transcription.js.map +1 -0
- package/dist/tts/index.cjs +38 -0
- package/dist/tts/index.cjs.map +1 -0
- package/dist/tts/index.d.cts +3 -0
- package/dist/tts/index.d.ts +3 -0
- package/dist/tts/index.d.ts.map +1 -0
- package/dist/tts/index.js +14 -0
- package/dist/tts/index.js.map +1 -0
- package/dist/tts/stream_adapter.cjs +105 -0
- package/dist/tts/stream_adapter.cjs.map +1 -0
- package/dist/tts/stream_adapter.d.cts +20 -0
- package/dist/tts/stream_adapter.d.ts +20 -0
- package/dist/tts/stream_adapter.d.ts.map +1 -0
- package/dist/tts/stream_adapter.js +80 -0
- package/dist/tts/stream_adapter.js.map +1 -0
- package/dist/tts/tts.cjs +431 -0
- package/dist/tts/tts.cjs.map +1 -0
- package/dist/tts/tts.d.cts +161 -0
- package/dist/tts/tts.d.ts +161 -0
- package/dist/tts/tts.d.ts.map +1 -0
- package/dist/tts/tts.js +405 -0
- package/dist/tts/tts.js.map +1 -0
- package/dist/types.cjs +49 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +44 -0
- package/dist/types.d.ts +44 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +23 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/ws_transport.cjs +51 -0
- package/dist/utils/ws_transport.cjs.map +1 -0
- package/dist/utils/ws_transport.d.cts +9 -0
- package/dist/utils/ws_transport.d.ts +9 -0
- package/dist/utils/ws_transport.d.ts.map +1 -0
- package/dist/utils/ws_transport.js +17 -0
- package/dist/utils/ws_transport.js.map +1 -0
- package/dist/utils/ws_transport.test.cjs +212 -0
- package/dist/utils/ws_transport.test.cjs.map +1 -0
- package/dist/utils/ws_transport.test.js +211 -0
- package/dist/utils/ws_transport.test.js.map +1 -0
- package/dist/utils.cjs +669 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/utils.d.cts +244 -0
- package/dist/utils.d.ts +244 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +617 -0
- package/dist/utils.js.map +1 -0
- package/dist/utils.test.cjs +492 -0
- package/dist/utils.test.cjs.map +1 -0
- package/dist/utils.test.js +491 -0
- package/dist/utils.test.js.map +1 -0
- package/dist/vad.cjs +211 -0
- package/dist/vad.cjs.map +1 -0
- package/dist/vad.d.cts +105 -0
- package/dist/vad.d.ts +105 -0
- package/dist/vad.d.ts.map +1 -0
- package/dist/vad.js +185 -0
- package/dist/vad.js.map +1 -0
- package/dist/version.cjs +29 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.d.cts +2 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +5 -0
- package/dist/version.js.map +1 -0
- package/dist/voice/agent.cjs +308 -0
- package/dist/voice/agent.cjs.map +1 -0
- package/dist/voice/agent.d.cts +83 -0
- package/dist/voice/agent.d.ts +83 -0
- package/dist/voice/agent.d.ts.map +1 -0
- package/dist/voice/agent.js +287 -0
- package/dist/voice/agent.js.map +1 -0
- package/dist/voice/agent.test.cjs +61 -0
- package/dist/voice/agent.test.cjs.map +1 -0
- package/dist/voice/agent.test.js +60 -0
- package/dist/voice/agent.test.js.map +1 -0
- package/dist/voice/agent_activity.cjs +1784 -0
- package/dist/voice/agent_activity.cjs.map +1 -0
- package/dist/voice/agent_activity.d.cts +116 -0
- package/dist/voice/agent_activity.d.ts +116 -0
- package/dist/voice/agent_activity.d.ts.map +1 -0
- package/dist/voice/agent_activity.js +1780 -0
- package/dist/voice/agent_activity.js.map +1 -0
- package/dist/voice/agent_session.cjs +592 -0
- package/dist/voice/agent_session.cjs.map +1 -0
- package/dist/voice/agent_session.d.cts +165 -0
- package/dist/voice/agent_session.d.ts +165 -0
- package/dist/voice/agent_session.d.ts.map +1 -0
- package/dist/voice/agent_session.js +582 -0
- package/dist/voice/agent_session.js.map +1 -0
- package/dist/voice/audio_recognition.cjs +668 -0
- package/dist/voice/audio_recognition.cjs.map +1 -0
- package/dist/voice/audio_recognition.d.cts +127 -0
- package/dist/voice/audio_recognition.d.ts +127 -0
- package/dist/voice/audio_recognition.d.ts.map +1 -0
- package/dist/voice/audio_recognition.js +647 -0
- package/dist/voice/audio_recognition.js.map +1 -0
- package/dist/voice/avatar/datastream_io.cjs +204 -0
- package/dist/voice/avatar/datastream_io.cjs.map +1 -0
- package/dist/voice/avatar/datastream_io.d.cts +37 -0
- package/dist/voice/avatar/datastream_io.d.ts +37 -0
- package/dist/voice/avatar/datastream_io.d.ts.map +1 -0
- package/dist/voice/avatar/datastream_io.js +188 -0
- package/dist/voice/avatar/datastream_io.js.map +1 -0
- package/dist/voice/avatar/index.cjs +23 -0
- package/dist/voice/avatar/index.cjs.map +1 -0
- package/dist/voice/avatar/index.d.cts +2 -0
- package/dist/voice/avatar/index.d.ts +2 -0
- package/dist/voice/avatar/index.d.ts.map +1 -0
- package/dist/voice/avatar/index.js +2 -0
- package/dist/voice/avatar/index.js.map +1 -0
- package/dist/voice/background_audio.cjs +366 -0
- package/dist/voice/background_audio.cjs.map +1 -0
- package/dist/voice/background_audio.d.cts +121 -0
- package/dist/voice/background_audio.d.ts +121 -0
- package/dist/voice/background_audio.d.ts.map +1 -0
- package/dist/voice/background_audio.js +342 -0
- package/dist/voice/background_audio.js.map +1 -0
- package/dist/voice/events.cjs +147 -0
- package/dist/voice/events.cjs.map +1 -0
- package/dist/voice/events.d.cts +127 -0
- package/dist/voice/events.d.ts +127 -0
- package/dist/voice/events.d.ts.map +1 -0
- package/dist/voice/events.js +112 -0
- package/dist/voice/events.js.map +1 -0
- package/dist/voice/generation.cjs +747 -0
- package/dist/voice/generation.cjs.map +1 -0
- package/dist/voice/generation.d.cts +116 -0
- package/dist/voice/generation.d.ts +116 -0
- package/dist/voice/generation.d.ts.map +1 -0
- package/dist/voice/generation.js +719 -0
- package/dist/voice/generation.js.map +1 -0
- package/dist/voice/generation_tools.test.cjs +236 -0
- package/dist/voice/generation_tools.test.cjs.map +1 -0
- package/dist/voice/generation_tools.test.js +235 -0
- package/dist/voice/generation_tools.test.js.map +1 -0
- package/dist/voice/index.cjs +49 -0
- package/dist/voice/index.cjs.map +1 -0
- package/dist/voice/index.d.cts +10 -0
- package/dist/voice/index.d.ts +10 -0
- package/dist/voice/index.d.ts.map +1 -0
- package/dist/voice/index.js +16 -0
- package/dist/voice/index.js.map +1 -0
- package/dist/voice/interruption_detection.test.cjs +114 -0
- package/dist/voice/interruption_detection.test.cjs.map +1 -0
- package/dist/voice/interruption_detection.test.js +113 -0
- package/dist/voice/interruption_detection.test.js.map +1 -0
- package/dist/voice/io.cjs +270 -0
- package/dist/voice/io.cjs.map +1 -0
- package/dist/voice/io.d.cts +126 -0
- package/dist/voice/io.d.ts +126 -0
- package/dist/voice/io.d.ts.map +1 -0
- package/dist/voice/io.js +242 -0
- package/dist/voice/io.js.map +1 -0
- package/dist/voice/recorder_io/index.cjs +23 -0
- package/dist/voice/recorder_io/index.cjs.map +1 -0
- package/dist/voice/recorder_io/index.d.cts +2 -0
- package/dist/voice/recorder_io/index.d.ts +2 -0
- package/dist/voice/recorder_io/index.d.ts.map +1 -0
- package/dist/voice/recorder_io/index.js +2 -0
- package/dist/voice/recorder_io/index.js.map +1 -0
- package/dist/voice/recorder_io/recorder_io.cjs +542 -0
- package/dist/voice/recorder_io/recorder_io.cjs.map +1 -0
- package/dist/voice/recorder_io/recorder_io.d.cts +100 -0
- package/dist/voice/recorder_io/recorder_io.d.ts +100 -0
- package/dist/voice/recorder_io/recorder_io.d.ts.map +1 -0
- package/dist/voice/recorder_io/recorder_io.js +508 -0
- package/dist/voice/recorder_io/recorder_io.js.map +1 -0
- package/dist/voice/report.cjs +75 -0
- package/dist/voice/report.cjs.map +1 -0
- package/dist/voice/report.d.cts +42 -0
- package/dist/voice/report.d.ts +42 -0
- package/dist/voice/report.d.ts.map +1 -0
- package/dist/voice/report.js +50 -0
- package/dist/voice/report.js.map +1 -0
- package/dist/voice/room_io/_input.cjs +133 -0
- package/dist/voice/room_io/_input.cjs.map +1 -0
- package/dist/voice/room_io/_input.d.cts +24 -0
- package/dist/voice/room_io/_input.d.ts +24 -0
- package/dist/voice/room_io/_input.d.ts.map +1 -0
- package/dist/voice/room_io/_input.js +114 -0
- package/dist/voice/room_io/_input.js.map +1 -0
- package/dist/voice/room_io/_output.cjs +359 -0
- package/dist/voice/room_io/_output.cjs.map +1 -0
- package/dist/voice/room_io/_output.d.cts +77 -0
- package/dist/voice/room_io/_output.d.ts +77 -0
- package/dist/voice/room_io/_output.d.ts.map +1 -0
- package/dist/voice/room_io/_output.js +343 -0
- package/dist/voice/room_io/_output.js.map +1 -0
- package/dist/voice/room_io/index.cjs +25 -0
- package/dist/voice/room_io/index.cjs.map +1 -0
- package/dist/voice/room_io/index.d.cts +3 -0
- package/dist/voice/room_io/index.d.ts +3 -0
- package/dist/voice/room_io/index.d.ts.map +1 -0
- package/dist/voice/room_io/index.js +3 -0
- package/dist/voice/room_io/index.js.map +1 -0
- package/dist/voice/room_io/room_io.cjs +373 -0
- package/dist/voice/room_io/room_io.cjs.map +1 -0
- package/dist/voice/room_io/room_io.d.cts +94 -0
- package/dist/voice/room_io/room_io.d.ts +94 -0
- package/dist/voice/room_io/room_io.d.ts.map +1 -0
- package/dist/voice/room_io/room_io.js +364 -0
- package/dist/voice/room_io/room_io.js.map +1 -0
- package/dist/voice/run_context.cjs +51 -0
- package/dist/voice/run_context.cjs.map +1 -0
- package/dist/voice/run_context.d.cts +22 -0
- package/dist/voice/run_context.d.ts +22 -0
- package/dist/voice/run_context.d.ts.map +1 -0
- package/dist/voice/run_context.js +27 -0
- package/dist/voice/run_context.js.map +1 -0
- package/dist/voice/speech_handle.cjs +228 -0
- package/dist/voice/speech_handle.cjs.map +1 -0
- package/dist/voice/speech_handle.d.cts +97 -0
- package/dist/voice/speech_handle.d.ts +97 -0
- package/dist/voice/speech_handle.d.ts.map +1 -0
- package/dist/voice/speech_handle.js +204 -0
- package/dist/voice/speech_handle.js.map +1 -0
- package/dist/voice/transcription/_utils.cjs +45 -0
- package/dist/voice/transcription/_utils.cjs.map +1 -0
- package/dist/voice/transcription/_utils.d.cts +3 -0
- package/dist/voice/transcription/_utils.d.ts +3 -0
- package/dist/voice/transcription/_utils.d.ts.map +1 -0
- package/dist/voice/transcription/_utils.js +21 -0
- package/dist/voice/transcription/_utils.js.map +1 -0
- package/dist/voice/transcription/index.cjs +23 -0
- package/dist/voice/transcription/index.cjs.map +1 -0
- package/dist/voice/transcription/index.d.cts +2 -0
- package/dist/voice/transcription/index.d.ts +2 -0
- package/dist/voice/transcription/index.d.ts.map +1 -0
- package/dist/voice/transcription/index.js +2 -0
- package/dist/voice/transcription/index.js.map +1 -0
- package/dist/voice/transcription/synchronizer.cjs +379 -0
- package/dist/voice/transcription/synchronizer.cjs.map +1 -0
- package/dist/voice/transcription/synchronizer.d.cts +87 -0
- package/dist/voice/transcription/synchronizer.d.ts +87 -0
- package/dist/voice/transcription/synchronizer.d.ts.map +1 -0
- package/dist/voice/transcription/synchronizer.js +354 -0
- package/dist/voice/transcription/synchronizer.js.map +1 -0
- package/dist/worker.cjs +680 -0
- package/dist/worker.cjs.map +1 -0
- package/dist/worker.d.cts +119 -0
- package/dist/worker.d.ts +119 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +645 -0
- package/dist/worker.js.map +1 -0
- package/package.json +86 -0
- package/resources/NOTICE +2 -0
- package/resources/keyboard-typing.ogg +0 -0
- package/resources/keyboard-typing2.ogg +0 -0
- package/resources/office-ambience.ogg +0 -0
- package/src/_exceptions.ts +137 -0
- package/src/audio.ts +205 -0
- package/src/cli.ts +224 -0
- package/src/connection_pool.test.ts +346 -0
- package/src/connection_pool.ts +307 -0
- package/src/constants.ts +9 -0
- package/src/generator.ts +38 -0
- package/src/http_server.ts +64 -0
- package/src/index.ts +41 -0
- package/src/inference/api_protos.ts +82 -0
- package/src/inference/index.ts +32 -0
- package/src/inference/interruption/AdaptiveInterruptionDetector.ts +166 -0
- package/src/inference/interruption/InterruptionStream.ts +397 -0
- package/src/inference/interruption/defaults.ts +33 -0
- package/src/inference/interruption/errors.ts +0 -0
- package/src/inference/interruption/http_transport.ts +61 -0
- package/src/inference/interruption/index.ts +4 -0
- package/src/inference/interruption/interruption.ts +88 -0
- package/src/inference/llm.ts +532 -0
- package/src/inference/stt.ts +524 -0
- package/src/inference/tts.ts +574 -0
- package/src/inference/utils.test.ts +31 -0
- package/src/inference/utils.ts +81 -0
- package/src/inference_runner.ts +19 -0
- package/src/ipc/index.ts +5 -0
- package/src/ipc/inference_executor.ts +7 -0
- package/src/ipc/inference_proc_executor.ts +101 -0
- package/src/ipc/inference_proc_lazy_main.ts +115 -0
- package/src/ipc/job_executor.ts +23 -0
- package/src/ipc/job_proc_executor.ts +122 -0
- package/src/ipc/job_proc_lazy_main.ts +247 -0
- package/src/ipc/message.ts +52 -0
- package/src/ipc/proc_pool.ts +164 -0
- package/src/ipc/supervised_proc.test.ts +153 -0
- package/src/ipc/supervised_proc.ts +242 -0
- package/src/job.ts +461 -0
- package/src/llm/__snapshots__/chat_context.test.ts.snap +527 -0
- package/src/llm/__snapshots__/tool_context.test.ts.snap +177 -0
- package/src/llm/__snapshots__/zod-utils.test.ts.snap +559 -0
- package/src/llm/chat_context.test.ts +1057 -0
- package/src/llm/chat_context.ts +759 -0
- package/src/llm/fallback_adapter.test.ts +238 -0
- package/src/llm/fallback_adapter.ts +391 -0
- package/src/llm/index.ts +74 -0
- package/src/llm/llm.ts +303 -0
- package/src/llm/provider_format/google.test.ts +843 -0
- package/src/llm/provider_format/google.ts +134 -0
- package/src/llm/provider_format/index.ts +23 -0
- package/src/llm/provider_format/openai.test.ts +675 -0
- package/src/llm/provider_format/openai.ts +146 -0
- package/src/llm/provider_format/utils.ts +187 -0
- package/src/llm/realtime.ts +163 -0
- package/src/llm/remote_chat_context.test.ts +290 -0
- package/src/llm/remote_chat_context.ts +114 -0
- package/src/llm/tool_context.test.ts +407 -0
- package/src/llm/tool_context.ts +343 -0
- package/src/llm/tool_context.type.test.ts +115 -0
- package/src/llm/utils.test.ts +670 -0
- package/src/llm/utils.ts +336 -0
- package/src/llm/zod-utils.test.ts +577 -0
- package/src/llm/zod-utils.ts +153 -0
- package/src/log.ts +83 -0
- package/src/metrics/base.ts +168 -0
- package/src/metrics/index.ts +15 -0
- package/src/metrics/usage_collector.ts +46 -0
- package/src/metrics/utils.ts +64 -0
- package/src/plugin.ts +46 -0
- package/src/stream/deferred_stream.test.ts +755 -0
- package/src/stream/deferred_stream.ts +127 -0
- package/src/stream/identity_transform.test.ts +179 -0
- package/src/stream/identity_transform.ts +18 -0
- package/src/stream/index.ts +7 -0
- package/src/stream/merge_readable_streams.ts +40 -0
- package/src/stream/stream_channel.test.ts +166 -0
- package/src/stream/stream_channel.ts +44 -0
- package/src/stt/index.ts +15 -0
- package/src/stt/stream_adapter.ts +107 -0
- package/src/stt/stt.ts +374 -0
- package/src/telemetry/index.ts +28 -0
- package/src/telemetry/logging.ts +55 -0
- package/src/telemetry/otel_http_exporter.ts +195 -0
- package/src/telemetry/pino_otel_transport.ts +265 -0
- package/src/telemetry/trace_types.ts +95 -0
- package/src/telemetry/traces.ts +612 -0
- package/src/telemetry/utils.ts +61 -0
- package/src/tokenize/basic/basic.ts +83 -0
- package/src/tokenize/basic/hyphenator.ts +434 -0
- package/src/tokenize/basic/index.ts +11 -0
- package/src/tokenize/basic/paragraph.ts +43 -0
- package/src/tokenize/basic/sentence.ts +89 -0
- package/src/tokenize/basic/word.ts +27 -0
- package/src/tokenize/index.ts +16 -0
- package/src/tokenize/token_stream.ts +180 -0
- package/src/tokenize/tokenizer.test.ts +255 -0
- package/src/tokenize/tokenizer.ts +152 -0
- package/src/transcription.ts +307 -0
- package/src/tts/index.ts +12 -0
- package/src/tts/stream_adapter.ts +110 -0
- package/src/tts/tts.ts +598 -0
- package/src/types.ts +66 -0
- package/src/utils/ws_transport.test.ts +282 -0
- package/src/utils/ws_transport.ts +22 -0
- package/src/utils.test.ts +651 -0
- package/src/utils.ts +871 -0
- package/src/vad.ts +262 -0
- package/src/version.ts +5 -0
- package/src/voice/agent.test.ts +80 -0
- package/src/voice/agent.ts +418 -0
- package/src/voice/agent_activity.ts +2375 -0
- package/src/voice/agent_session.ts +866 -0
- package/src/voice/audio_recognition.ts +877 -0
- package/src/voice/avatar/datastream_io.ts +247 -0
- package/src/voice/avatar/index.ts +4 -0
- package/src/voice/background_audio.ts +491 -0
- package/src/voice/events.ts +261 -0
- package/src/voice/generation.ts +946 -0
- package/src/voice/generation_tools.test.ts +268 -0
- package/src/voice/index.ts +12 -0
- package/src/voice/interruption_detection.test.ts +151 -0
- package/src/voice/io.ts +347 -0
- package/src/voice/recorder_io/index.ts +4 -0
- package/src/voice/recorder_io/recorder_io.ts +690 -0
- package/src/voice/report.ts +100 -0
- package/src/voice/room_io/_input.ts +162 -0
- package/src/voice/room_io/_output.ts +439 -0
- package/src/voice/room_io/index.ts +5 -0
- package/src/voice/room_io/room_io.ts +518 -0
- package/src/voice/run_context.ts +34 -0
- package/src/voice/speech_handle.ts +250 -0
- package/src/voice/transcription/_utils.ts +25 -0
- package/src/voice/transcription/index.ts +4 -0
- package/src/voice/transcription/synchronizer.ts +477 -0
- package/src/worker.ts +798 -0
|
@@ -0,0 +1,336 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import * as z3 from "zod/v3";
|
|
4
|
+
import * as z4 from "zod/v4";
|
|
5
|
+
import { tool } from "./tool_context.js";
|
|
6
|
+
import { createToolOptions, oaiParams } from "./utils.js";
|
|
7
|
+
describe("Tool Context", () => {
|
|
8
|
+
describe("oaiParams", () => {
|
|
9
|
+
it("should handle basic object schema", () => {
|
|
10
|
+
const schema = z.object({
|
|
11
|
+
name: z.string().describe("The user name"),
|
|
12
|
+
age: z.number().describe("The user age")
|
|
13
|
+
});
|
|
14
|
+
const result = oaiParams(schema);
|
|
15
|
+
expect(result).toMatchSnapshot();
|
|
16
|
+
});
|
|
17
|
+
it("should handle enum fields", () => {
|
|
18
|
+
const schema = z.object({
|
|
19
|
+
color: z.enum(["red", "blue", "green"]).describe("Choose a color")
|
|
20
|
+
});
|
|
21
|
+
const result = oaiParams(schema);
|
|
22
|
+
expect(result).toMatchSnapshot();
|
|
23
|
+
});
|
|
24
|
+
it("should handle array fields", () => {
|
|
25
|
+
const schema = z.object({
|
|
26
|
+
tags: z.array(z.string()).describe("List of tags")
|
|
27
|
+
});
|
|
28
|
+
const result = oaiParams(schema);
|
|
29
|
+
expect(result).toMatchSnapshot();
|
|
30
|
+
});
|
|
31
|
+
it("should handle array of enums", () => {
|
|
32
|
+
const schema = z.object({
|
|
33
|
+
colors: z.array(z.enum(["red", "blue", "green"])).describe("List of colors")
|
|
34
|
+
});
|
|
35
|
+
const result = oaiParams(schema);
|
|
36
|
+
expect(result).toMatchSnapshot();
|
|
37
|
+
});
|
|
38
|
+
it("should handle optional fields", () => {
|
|
39
|
+
const schema = z.object({
|
|
40
|
+
name: z.string().describe("The user name"),
|
|
41
|
+
age: z.number().optional().describe("The user age")
|
|
42
|
+
});
|
|
43
|
+
const result = oaiParams(schema);
|
|
44
|
+
expect(result).toMatchSnapshot();
|
|
45
|
+
});
|
|
46
|
+
it("should handle fields without descriptions", () => {
|
|
47
|
+
const schema = z.object({
|
|
48
|
+
name: z.string(),
|
|
49
|
+
age: z.number()
|
|
50
|
+
});
|
|
51
|
+
const result = oaiParams(schema);
|
|
52
|
+
expect(result).toMatchSnapshot();
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
describe("tool", () => {
|
|
56
|
+
it("should create and execute a basic core tool", async () => {
|
|
57
|
+
const getWeather = tool({
|
|
58
|
+
description: "Get the weather for a given location",
|
|
59
|
+
parameters: z.object({
|
|
60
|
+
location: z.string()
|
|
61
|
+
}),
|
|
62
|
+
execute: async ({ location }, { ctx }) => {
|
|
63
|
+
return `The weather in ${location} is sunny, ${ctx.userData.name}`;
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
const result = await getWeather.execute(
|
|
67
|
+
{ location: "San Francisco" },
|
|
68
|
+
createToolOptions("123", { name: "John" })
|
|
69
|
+
);
|
|
70
|
+
expect(result).toBe("The weather in San Francisco is sunny, John");
|
|
71
|
+
});
|
|
72
|
+
it("should properly type a callable function", async () => {
|
|
73
|
+
const testFunction = tool({
|
|
74
|
+
description: "Test function",
|
|
75
|
+
parameters: z.object({
|
|
76
|
+
name: z.string().describe("The user name"),
|
|
77
|
+
age: z.number().describe("The user age")
|
|
78
|
+
}),
|
|
79
|
+
execute: async (args) => {
|
|
80
|
+
return `${args.name} is ${args.age} years old`;
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
const result = await testFunction.execute(
|
|
84
|
+
{ name: "John", age: 30 },
|
|
85
|
+
createToolOptions("123")
|
|
86
|
+
);
|
|
87
|
+
expect(result).toBe("John is 30 years old");
|
|
88
|
+
});
|
|
89
|
+
it("should handle async execution", async () => {
|
|
90
|
+
const testFunction = tool({
|
|
91
|
+
description: "Async test function",
|
|
92
|
+
parameters: z.object({
|
|
93
|
+
delay: z.number().describe("Delay in milliseconds")
|
|
94
|
+
}),
|
|
95
|
+
execute: async (args) => {
|
|
96
|
+
await new Promise((resolve) => setTimeout(resolve, args.delay));
|
|
97
|
+
return args.delay;
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
const start = Date.now();
|
|
101
|
+
const result = await testFunction.execute({ delay: 100 }, createToolOptions("123"));
|
|
102
|
+
const duration = Date.now() - start;
|
|
103
|
+
expect(result).toBe(100);
|
|
104
|
+
expect(duration).toBeGreaterThanOrEqual(95);
|
|
105
|
+
});
|
|
106
|
+
describe("nested array support", () => {
|
|
107
|
+
it("should handle nested array fields", () => {
|
|
108
|
+
const schema = z.object({
|
|
109
|
+
items: z.array(
|
|
110
|
+
z.object({
|
|
111
|
+
name: z.string().describe("the item name"),
|
|
112
|
+
modifiers: z.array(
|
|
113
|
+
z.object({
|
|
114
|
+
modifier_name: z.string(),
|
|
115
|
+
modifier_value: z.string()
|
|
116
|
+
})
|
|
117
|
+
).describe("list of the modifiers applied on this item, such as size")
|
|
118
|
+
})
|
|
119
|
+
)
|
|
120
|
+
});
|
|
121
|
+
const result = oaiParams(schema);
|
|
122
|
+
expect(result).toMatchSnapshot();
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
describe("optional parameters", () => {
|
|
126
|
+
it("should create a tool without parameters", async () => {
|
|
127
|
+
const simpleAction = tool({
|
|
128
|
+
description: "Perform a simple action",
|
|
129
|
+
execute: async () => {
|
|
130
|
+
return "Action performed";
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
expect(simpleAction.type).toBe("function");
|
|
134
|
+
expect(simpleAction.description).toBe("Perform a simple action");
|
|
135
|
+
expect(simpleAction.parameters).toBeDefined();
|
|
136
|
+
expect(simpleAction.parameters._def.typeName).toBe("ZodObject");
|
|
137
|
+
const result = await simpleAction.execute({}, createToolOptions("123"));
|
|
138
|
+
expect(result).toBe("Action performed");
|
|
139
|
+
});
|
|
140
|
+
it("should support .optional() fields in tool parameters", async () => {
|
|
141
|
+
const weatherTool = tool({
|
|
142
|
+
description: "Get weather information",
|
|
143
|
+
parameters: z.object({
|
|
144
|
+
location: z.string().describe("The city or location").optional(),
|
|
145
|
+
units: z.enum(["celsius", "fahrenheit"]).describe("Temperature units").optional()
|
|
146
|
+
}),
|
|
147
|
+
execute: async ({ location, units }) => {
|
|
148
|
+
const loc = location ?? "Unknown";
|
|
149
|
+
const unit = units ?? "celsius";
|
|
150
|
+
return `Weather in ${loc} (${unit})`;
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
expect(weatherTool.type).toBe("function");
|
|
154
|
+
expect(weatherTool.description).toBe("Get weather information");
|
|
155
|
+
const result1 = await weatherTool.execute(
|
|
156
|
+
{ location: "London", units: "celsius" },
|
|
157
|
+
createToolOptions("123")
|
|
158
|
+
);
|
|
159
|
+
expect(result1).toBe("Weather in London (celsius)");
|
|
160
|
+
const result2 = await weatherTool.execute({}, createToolOptions("123"));
|
|
161
|
+
expect(result2).toBe("Weather in Unknown (celsius)");
|
|
162
|
+
const result3 = await weatherTool.execute({ location: "Paris" }, createToolOptions("123"));
|
|
163
|
+
expect(result3).toBe("Weather in Paris (celsius)");
|
|
164
|
+
});
|
|
165
|
+
it("should handle tools with context but no parameters", async () => {
|
|
166
|
+
const greetUser = tool({
|
|
167
|
+
description: "Greet the current user",
|
|
168
|
+
execute: async (_, { ctx }) => {
|
|
169
|
+
return `Hello, ${ctx.userData.username}!`;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
const result = await greetUser.execute({}, createToolOptions("123", { username: "Alice" }));
|
|
173
|
+
expect(result).toBe("Hello, Alice!");
|
|
174
|
+
});
|
|
175
|
+
it("should create a tool that accesses tool call id without parameters", async () => {
|
|
176
|
+
const getCallId = tool({
|
|
177
|
+
description: "Get the current tool call ID",
|
|
178
|
+
execute: async (_, { toolCallId }) => {
|
|
179
|
+
return `Tool call ID: ${toolCallId}`;
|
|
180
|
+
}
|
|
181
|
+
});
|
|
182
|
+
const result = await getCallId.execute({}, createToolOptions("test-id-456"));
|
|
183
|
+
expect(result).toBe("Tool call ID: test-id-456");
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe("Zod v3 and v4 compatibility", () => {
|
|
187
|
+
it("should work with Zod v3 schemas", async () => {
|
|
188
|
+
const v3Tool = tool({
|
|
189
|
+
description: "A tool using Zod v3 schema",
|
|
190
|
+
parameters: z3.object({
|
|
191
|
+
name: z3.string(),
|
|
192
|
+
count: z3.number()
|
|
193
|
+
}),
|
|
194
|
+
execute: async ({ name, count }) => {
|
|
195
|
+
return `${name}: ${count}`;
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
const result = await v3Tool.execute(
|
|
199
|
+
{ name: "Test", count: 42 },
|
|
200
|
+
createToolOptions("v3-test")
|
|
201
|
+
);
|
|
202
|
+
expect(result).toBe("Test: 42");
|
|
203
|
+
});
|
|
204
|
+
it("should work with Zod v4 schemas", async () => {
|
|
205
|
+
const v4Tool = tool({
|
|
206
|
+
description: "A tool using Zod v4 schema",
|
|
207
|
+
parameters: z4.object({
|
|
208
|
+
name: z4.string(),
|
|
209
|
+
count: z4.number()
|
|
210
|
+
}),
|
|
211
|
+
execute: async ({ name, count }) => {
|
|
212
|
+
return `${name}: ${count}`;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
const result = await v4Tool.execute(
|
|
216
|
+
{ name: "Test", count: 42 },
|
|
217
|
+
createToolOptions("v4-test")
|
|
218
|
+
);
|
|
219
|
+
expect(result).toBe("Test: 42");
|
|
220
|
+
});
|
|
221
|
+
it("should handle v4 schemas with optional fields", async () => {
|
|
222
|
+
const v4Tool = tool({
|
|
223
|
+
description: "Tool with optional field using v4",
|
|
224
|
+
parameters: z4.object({
|
|
225
|
+
required: z4.string(),
|
|
226
|
+
optional: z4.string().optional()
|
|
227
|
+
}),
|
|
228
|
+
execute: async ({ required, optional }) => {
|
|
229
|
+
return optional ? `${required} - ${optional}` : required;
|
|
230
|
+
}
|
|
231
|
+
});
|
|
232
|
+
const result1 = await v4Tool.execute({ required: "Hello" }, createToolOptions("test-1"));
|
|
233
|
+
expect(result1).toBe("Hello");
|
|
234
|
+
const result2 = await v4Tool.execute(
|
|
235
|
+
{ required: "Hello", optional: "World" },
|
|
236
|
+
createToolOptions("test-2")
|
|
237
|
+
);
|
|
238
|
+
expect(result2).toBe("Hello - World");
|
|
239
|
+
});
|
|
240
|
+
it("should handle v4 enum schemas", async () => {
|
|
241
|
+
const v4Tool = tool({
|
|
242
|
+
description: "Tool with enum using v4",
|
|
243
|
+
parameters: z4.object({
|
|
244
|
+
color: z4.enum(["red", "blue", "green"])
|
|
245
|
+
}),
|
|
246
|
+
execute: async ({ color }) => {
|
|
247
|
+
return `Selected color: ${color}`;
|
|
248
|
+
}
|
|
249
|
+
});
|
|
250
|
+
const result = await v4Tool.execute({ color: "blue" }, createToolOptions("test-enum"));
|
|
251
|
+
expect(result).toBe("Selected color: blue");
|
|
252
|
+
});
|
|
253
|
+
it("should handle v4 array schemas", async () => {
|
|
254
|
+
const v4Tool = tool({
|
|
255
|
+
description: "Tool with array using v4",
|
|
256
|
+
parameters: z4.object({
|
|
257
|
+
tags: z4.array(z4.string())
|
|
258
|
+
}),
|
|
259
|
+
execute: async ({ tags }) => {
|
|
260
|
+
return `Tags: ${tags.join(", ")}`;
|
|
261
|
+
}
|
|
262
|
+
});
|
|
263
|
+
const result = await v4Tool.execute(
|
|
264
|
+
{ tags: ["nodejs", "typescript", "testing"] },
|
|
265
|
+
createToolOptions("test-array")
|
|
266
|
+
);
|
|
267
|
+
expect(result).toBe("Tags: nodejs, typescript, testing");
|
|
268
|
+
});
|
|
269
|
+
it("should handle v4 nested object schemas", async () => {
|
|
270
|
+
const v4Tool = tool({
|
|
271
|
+
description: "Tool with nested object using v4",
|
|
272
|
+
parameters: z4.object({
|
|
273
|
+
user: z4.object({
|
|
274
|
+
name: z4.string(),
|
|
275
|
+
email: z4.string()
|
|
276
|
+
})
|
|
277
|
+
}),
|
|
278
|
+
execute: async ({ user }) => {
|
|
279
|
+
return `${user.name} (${user.email})`;
|
|
280
|
+
}
|
|
281
|
+
});
|
|
282
|
+
const result = await v4Tool.execute(
|
|
283
|
+
{ user: { name: "John Doe", email: "john@example.com" } },
|
|
284
|
+
createToolOptions("test-nested")
|
|
285
|
+
);
|
|
286
|
+
expect(result).toBe("John Doe (john@example.com)");
|
|
287
|
+
});
|
|
288
|
+
});
|
|
289
|
+
describe("oaiParams with v4 schemas", () => {
|
|
290
|
+
it("should convert v4 basic object schema", () => {
|
|
291
|
+
const schema = z4.object({
|
|
292
|
+
name: z4.string().describe("User name"),
|
|
293
|
+
age: z4.number().describe("User age")
|
|
294
|
+
});
|
|
295
|
+
const result = oaiParams(schema);
|
|
296
|
+
expect(result.type).toBe("object");
|
|
297
|
+
expect(result.properties).toHaveProperty("name");
|
|
298
|
+
expect(result.properties).toHaveProperty("age");
|
|
299
|
+
expect(result.required).toContain("name");
|
|
300
|
+
expect(result.required).toContain("age");
|
|
301
|
+
});
|
|
302
|
+
it("should handle v4 optional fields", () => {
|
|
303
|
+
const schema = z4.object({
|
|
304
|
+
required: z4.string(),
|
|
305
|
+
optional: z4.string().optional()
|
|
306
|
+
});
|
|
307
|
+
const result = oaiParams(schema);
|
|
308
|
+
expect(result.required).toContain("required");
|
|
309
|
+
expect(result.required).not.toContain("optional");
|
|
310
|
+
});
|
|
311
|
+
it("should handle v4 enum fields", () => {
|
|
312
|
+
var _a;
|
|
313
|
+
const schema = z4.object({
|
|
314
|
+
status: z4.enum(["pending", "approved", "rejected"])
|
|
315
|
+
});
|
|
316
|
+
const result = oaiParams(schema);
|
|
317
|
+
const properties = result.properties;
|
|
318
|
+
expect((_a = properties.status) == null ? void 0 : _a.enum).toEqual(["pending", "approved", "rejected"]);
|
|
319
|
+
});
|
|
320
|
+
it("should handle v4 array fields", () => {
|
|
321
|
+
const schema = z4.object({
|
|
322
|
+
items: z4.array(z4.string())
|
|
323
|
+
});
|
|
324
|
+
const result = oaiParams(schema);
|
|
325
|
+
const properties = result.properties;
|
|
326
|
+
expect(
|
|
327
|
+
properties.items && typeof properties.items === "object" ? properties.items.type : void 0
|
|
328
|
+
).toBe("array");
|
|
329
|
+
expect(
|
|
330
|
+
properties.items && properties.items.items && typeof properties.items.items === "object" ? properties.items.items.type : void 0
|
|
331
|
+
).toBe("string");
|
|
332
|
+
});
|
|
333
|
+
});
|
|
334
|
+
});
|
|
335
|
+
});
|
|
336
|
+
//# sourceMappingURL=tool_context.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/tool_context.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { describe, expect, it } from 'vitest';\nimport { z } from 'zod';\nimport * as z3 from 'zod/v3';\nimport * as z4 from 'zod/v4';\nimport { type ToolOptions, tool } from './tool_context.js';\nimport { createToolOptions, oaiParams } from './utils.js';\n\ndescribe('Tool Context', () => {\n describe('oaiParams', () => {\n it('should handle basic object schema', () => {\n const schema = z.object({\n name: z.string().describe('The user name'),\n age: z.number().describe('The user age'),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n\n it('should handle enum fields', () => {\n const schema = z.object({\n color: z.enum(['red', 'blue', 'green']).describe('Choose a color'),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n\n it('should handle array fields', () => {\n const schema = z.object({\n tags: z.array(z.string()).describe('List of tags'),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n\n it('should handle array of enums', () => {\n const schema = z.object({\n colors: z.array(z.enum(['red', 'blue', 'green'])).describe('List of colors'),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n\n it('should handle optional fields', () => {\n const schema = z.object({\n name: z.string().describe('The user name'),\n age: z.number().optional().describe('The user age'),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n\n it('should handle fields without descriptions', () => {\n const schema = z.object({\n name: z.string(),\n age: z.number(),\n });\n\n const result = oaiParams(schema);\n\n expect(result).toMatchSnapshot();\n });\n });\n\n describe('tool', () => {\n it('should create and execute a basic core tool', async () => {\n const getWeather = tool({\n description: 'Get the weather for a given location',\n parameters: z.object({\n location: z.string(),\n }),\n execute: async ({ location }, { ctx }: ToolOptions<{ name: string }>) => {\n return `The weather in ${location} is sunny, ${ctx.userData.name}`;\n },\n });\n\n const result = await getWeather.execute(\n { location: 'San Francisco' },\n createToolOptions('123', { name: 'John' }),\n );\n expect(result).toBe('The weather in San Francisco is sunny, John');\n });\n\n it('should properly type a callable function', async () => {\n const testFunction = tool({\n description: 'Test function',\n parameters: z.object({\n name: z.string().describe('The user name'),\n age: z.number().describe('The user age'),\n }),\n execute: async (args) => {\n return `${args.name} is ${args.age} years old`;\n },\n });\n\n const result = await testFunction.execute(\n { name: 'John', age: 30 },\n createToolOptions('123'),\n );\n expect(result).toBe('John is 30 years old');\n });\n\n it('should handle async execution', async () => {\n const testFunction = tool({\n description: 'Async test function',\n parameters: z.object({\n delay: z.number().describe('Delay in milliseconds'),\n }),\n execute: async (args) => {\n await new Promise((resolve) => setTimeout(resolve, args.delay));\n return args.delay;\n },\n });\n\n const start = Date.now();\n const result = await testFunction.execute({ delay: 100 }, createToolOptions('123'));\n const duration = Date.now() - start;\n\n expect(result).toBe(100);\n expect(duration).toBeGreaterThanOrEqual(95); // Allow for small timing variations\n });\n\n describe('nested array support', () => {\n it('should handle nested array fields', () => {\n const schema = z.object({\n items: z.array(\n z.object({\n name: z.string().describe('the item name'),\n modifiers: z\n .array(\n z.object({\n modifier_name: z.string(),\n modifier_value: z.string(),\n }),\n )\n .describe('list of the modifiers applied on this item, such as size'),\n }),\n ),\n });\n const result = oaiParams(schema);\n expect(result).toMatchSnapshot();\n });\n });\n\n describe('optional parameters', () => {\n it('should create a tool without parameters', async () => {\n const simpleAction = tool({\n description: 'Perform a simple action',\n execute: async () => {\n return 'Action performed';\n },\n });\n\n expect(simpleAction.type).toBe('function');\n expect(simpleAction.description).toBe('Perform a simple action');\n expect(simpleAction.parameters).toBeDefined();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n expect((simpleAction.parameters as any)._def.typeName).toBe('ZodObject');\n\n const result = await simpleAction.execute({}, createToolOptions('123'));\n expect(result).toBe('Action performed');\n });\n\n it('should support .optional() fields in tool parameters', async () => {\n const weatherTool = tool({\n description: 'Get weather information',\n parameters: z.object({\n location: z.string().describe('The city or location').optional(),\n units: z.enum(['celsius', 'fahrenheit']).describe('Temperature units').optional(),\n }),\n execute: async ({ location, units }) => {\n const loc = location ?? 'Unknown';\n const unit = units ?? 'celsius';\n return `Weather in ${loc} (${unit})`;\n },\n });\n\n expect(weatherTool.type).toBe('function');\n expect(weatherTool.description).toBe('Get weather information');\n\n const result1 = await weatherTool.execute(\n { location: 'London', units: 'celsius' },\n createToolOptions('123'),\n );\n expect(result1).toBe('Weather in London (celsius)');\n\n const result2 = await weatherTool.execute({}, createToolOptions('123'));\n expect(result2).toBe('Weather in Unknown (celsius)');\n\n const result3 = await weatherTool.execute({ location: 'Paris' }, createToolOptions('123'));\n expect(result3).toBe('Weather in Paris (celsius)');\n });\n\n it('should handle tools with context but no parameters', async () => {\n const greetUser = tool({\n description: 'Greet the current user',\n execute: async (_, { ctx }: ToolOptions<{ username: string }>) => {\n return `Hello, ${ctx.userData.username}!`;\n },\n });\n\n const result = await greetUser.execute({}, createToolOptions('123', { username: 'Alice' }));\n expect(result).toBe('Hello, Alice!');\n });\n\n it('should create a tool that accesses tool call id without parameters', async () => {\n const getCallId = tool({\n description: 'Get the current tool call ID',\n execute: async (_, { toolCallId }) => {\n return `Tool call ID: ${toolCallId}`;\n },\n });\n\n const result = await getCallId.execute({}, createToolOptions('test-id-456'));\n expect(result).toBe('Tool call ID: test-id-456');\n });\n });\n\n describe('Zod v3 and v4 compatibility', () => {\n it('should work with Zod v3 schemas', async () => {\n const v3Tool = tool({\n description: 'A tool using Zod v3 schema',\n parameters: z3.object({\n name: z3.string(),\n count: z3.number(),\n }),\n execute: async ({ name, count }) => {\n return `${name}: ${count}`;\n },\n });\n\n const result = await v3Tool.execute(\n { name: 'Test', count: 42 },\n createToolOptions('v3-test'),\n );\n expect(result).toBe('Test: 42');\n });\n\n it('should work with Zod v4 schemas', async () => {\n const v4Tool = tool({\n description: 'A tool using Zod v4 schema',\n parameters: z4.object({\n name: z4.string(),\n count: z4.number(),\n }),\n execute: async ({ name, count }) => {\n return `${name}: ${count}`;\n },\n });\n\n const result = await v4Tool.execute(\n { name: 'Test', count: 42 },\n createToolOptions('v4-test'),\n );\n expect(result).toBe('Test: 42');\n });\n\n it('should handle v4 schemas with optional fields', async () => {\n const v4Tool = tool({\n description: 'Tool with optional field using v4',\n parameters: z4.object({\n required: z4.string(),\n optional: z4.string().optional(),\n }),\n execute: async ({ required, optional }) => {\n return optional ? `${required} - ${optional}` : required;\n },\n });\n\n const result1 = await v4Tool.execute({ required: 'Hello' }, createToolOptions('test-1'));\n expect(result1).toBe('Hello');\n\n const result2 = await v4Tool.execute(\n { required: 'Hello', optional: 'World' },\n createToolOptions('test-2'),\n );\n expect(result2).toBe('Hello - World');\n });\n\n it('should handle v4 enum schemas', async () => {\n const v4Tool = tool({\n description: 'Tool with enum using v4',\n parameters: z4.object({\n color: z4.enum(['red', 'blue', 'green']),\n }),\n execute: async ({ color }) => {\n return `Selected color: ${color}`;\n },\n });\n\n const result = await v4Tool.execute({ color: 'blue' }, createToolOptions('test-enum'));\n expect(result).toBe('Selected color: blue');\n });\n\n it('should handle v4 array schemas', async () => {\n const v4Tool = tool({\n description: 'Tool with array using v4',\n parameters: z4.object({\n tags: z4.array(z4.string()),\n }),\n execute: async ({ tags }) => {\n return `Tags: ${tags.join(', ')}`;\n },\n });\n\n const result = await v4Tool.execute(\n { tags: ['nodejs', 'typescript', 'testing'] },\n createToolOptions('test-array'),\n );\n expect(result).toBe('Tags: nodejs, typescript, testing');\n });\n\n it('should handle v4 nested object schemas', async () => {\n const v4Tool = tool({\n description: 'Tool with nested object using v4',\n parameters: z4.object({\n user: z4.object({\n name: z4.string(),\n email: z4.string(),\n }),\n }),\n execute: async ({ user }) => {\n return `${user.name} (${user.email})`;\n },\n });\n\n const result = await v4Tool.execute(\n { user: { name: 'John Doe', email: 'john@example.com' } },\n createToolOptions('test-nested'),\n );\n expect(result).toBe('John Doe (john@example.com)');\n });\n });\n\n describe('oaiParams with v4 schemas', () => {\n it('should convert v4 basic object schema', () => {\n const schema = z4.object({\n name: z4.string().describe('User name'),\n age: z4.number().describe('User age'),\n });\n\n const result = oaiParams(schema);\n\n expect(result.type).toBe('object');\n expect(result.properties).toHaveProperty('name');\n expect(result.properties).toHaveProperty('age');\n expect(result.required).toContain('name');\n expect(result.required).toContain('age');\n });\n\n it('should handle v4 optional fields', () => {\n const schema = z4.object({\n required: z4.string(),\n optional: z4.string().optional(),\n });\n\n const result = oaiParams(schema);\n\n expect(result.required).toContain('required');\n expect(result.required).not.toContain('optional');\n });\n\n it('should handle v4 enum fields', () => {\n const schema = z4.object({\n status: z4.enum(['pending', 'approved', 'rejected']),\n });\n\n const result = oaiParams(schema);\n\n const properties = result.properties as Record<string, Record<string, unknown>>;\n expect(properties.status?.enum).toEqual(['pending', 'approved', 'rejected']);\n });\n\n it('should handle v4 array fields', () => {\n const schema = z4.object({\n items: z4.array(z4.string()),\n });\n\n const result = oaiParams(schema);\n\n const properties = result.properties as Record<string, any>;\n expect(\n properties.items && typeof properties.items === 'object'\n ? properties.items.type\n : undefined,\n ).toBe('array');\n expect(\n properties.items && properties.items.items && typeof properties.items.items === 'object'\n ? properties.items.items.type\n : undefined,\n ).toBe('string');\n });\n });\n });\n});\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var import_vitest = require("vitest");
|
|
3
|
+
var import_zod = require("zod");
|
|
4
|
+
var import_index = require("./index.cjs");
|
|
5
|
+
(0, import_vitest.describe)("tool type inference", () => {
|
|
6
|
+
(0, import_vitest.it)("should infer argument type from zod schema", () => {
|
|
7
|
+
const toolType = (0, import_index.tool)({
|
|
8
|
+
description: "test",
|
|
9
|
+
parameters: import_zod.z.object({ number: import_zod.z.number() }),
|
|
10
|
+
execute: async () => "test"
|
|
11
|
+
});
|
|
12
|
+
(0, import_vitest.expectTypeOf)(toolType).toEqualTypeOf();
|
|
13
|
+
});
|
|
14
|
+
(0, import_vitest.it)("should infer provider defined tool type", () => {
|
|
15
|
+
const toolType = (0, import_index.tool)({
|
|
16
|
+
id: "code-interpreter",
|
|
17
|
+
config: {
|
|
18
|
+
language: "python"
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
(0, import_vitest.expectTypeOf)(toolType).toEqualTypeOf();
|
|
22
|
+
});
|
|
23
|
+
(0, import_vitest.it)("should infer run context type", () => {
|
|
24
|
+
const toolType = (0, import_index.tool)({
|
|
25
|
+
description: "test",
|
|
26
|
+
parameters: import_zod.z.object({ number: import_zod.z.number() }),
|
|
27
|
+
execute: async ({ number }, { ctx }) => {
|
|
28
|
+
return `The number is ${number}, ${ctx.userData.name}`;
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
(0, import_vitest.expectTypeOf)(toolType).toEqualTypeOf();
|
|
32
|
+
});
|
|
33
|
+
(0, import_vitest.it)("should not accept primitive zod schemas", () => {
|
|
34
|
+
(0, import_vitest.expect)(() => {
|
|
35
|
+
(0, import_index.tool)({
|
|
36
|
+
name: "test",
|
|
37
|
+
description: "test",
|
|
38
|
+
parameters: import_zod.z.string(),
|
|
39
|
+
execute: async () => "test"
|
|
40
|
+
});
|
|
41
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
42
|
+
});
|
|
43
|
+
(0, import_vitest.it)("should not accept array schemas", () => {
|
|
44
|
+
(0, import_vitest.expect)(() => {
|
|
45
|
+
(0, import_index.tool)({
|
|
46
|
+
name: "test",
|
|
47
|
+
description: "test",
|
|
48
|
+
parameters: import_zod.z.array(import_zod.z.string()),
|
|
49
|
+
execute: async () => "test"
|
|
50
|
+
});
|
|
51
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
52
|
+
});
|
|
53
|
+
(0, import_vitest.it)("should not accept union schemas", () => {
|
|
54
|
+
(0, import_vitest.expect)(() => {
|
|
55
|
+
(0, import_index.tool)({
|
|
56
|
+
name: "test",
|
|
57
|
+
description: "test",
|
|
58
|
+
parameters: import_zod.z.union([import_zod.z.object({ a: import_zod.z.string() }), import_zod.z.object({ b: import_zod.z.number() })]),
|
|
59
|
+
execute: async () => "test"
|
|
60
|
+
});
|
|
61
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
62
|
+
});
|
|
63
|
+
(0, import_vitest.it)("should not accept non-Zod values as parameters", () => {
|
|
64
|
+
(0, import_vitest.expect)(() => {
|
|
65
|
+
(0, import_index.tool)({
|
|
66
|
+
name: "test",
|
|
67
|
+
description: "test",
|
|
68
|
+
parameters: "invalid schema",
|
|
69
|
+
execute: async () => "test"
|
|
70
|
+
});
|
|
71
|
+
}).toThrowError("Tool parameters must be a Zod object schema or a raw JSON schema");
|
|
72
|
+
});
|
|
73
|
+
(0, import_vitest.it)("should infer empty object type when parameters are omitted", () => {
|
|
74
|
+
const toolType = (0, import_index.tool)({
|
|
75
|
+
description: "Simple action without parameters",
|
|
76
|
+
execute: async () => "done"
|
|
77
|
+
});
|
|
78
|
+
(0, import_vitest.expectTypeOf)(toolType).toEqualTypeOf();
|
|
79
|
+
});
|
|
80
|
+
(0, import_vitest.it)("should infer correct types with context but no parameters", () => {
|
|
81
|
+
const toolType = (0, import_index.tool)({
|
|
82
|
+
description: "Action with context",
|
|
83
|
+
execute: async (args, { ctx }) => {
|
|
84
|
+
(0, import_vitest.expectTypeOf)(args).toEqualTypeOf();
|
|
85
|
+
(0, import_vitest.expectTypeOf)(ctx.userData.userId).toEqualTypeOf();
|
|
86
|
+
return ctx.userData.userId;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
(0, import_vitest.expectTypeOf)(toolType).toEqualTypeOf();
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=tool_context.type.test.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/tool_context.type.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { describe, expect, expectTypeOf, it } from 'vitest';\nimport { z } from 'zod';\nimport { type FunctionTool, type ProviderDefinedTool, type ToolOptions, tool } from './index.js';\n\ndescribe('tool type inference', () => {\n it('should infer argument type from zod schema', () => {\n const toolType = tool({\n description: 'test',\n parameters: z.object({ number: z.number() }),\n execute: async () => 'test' as const,\n });\n\n expectTypeOf(toolType).toEqualTypeOf<FunctionTool<{ number: number }, unknown, 'test'>>();\n });\n\n it('should infer provider defined tool type', () => {\n const toolType = tool({\n id: 'code-interpreter',\n config: {\n language: 'python',\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<ProviderDefinedTool>();\n });\n\n it('should infer run context type', () => {\n const toolType = tool({\n description: 'test',\n parameters: z.object({ number: z.number() }),\n execute: async ({ number }, { ctx }: ToolOptions<{ name: string }>) => {\n return `The number is ${number}, ${ctx.userData.name}`;\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<\n FunctionTool<{ number: number }, { name: string }, string>\n >();\n });\n\n it('should not accept primitive zod schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that non-object schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.string(),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept array schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that array schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.array(z.string()),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept union schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that union schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.union([z.object({ a: z.string() }), z.object({ b: z.number() })]),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept non-Zod values as parameters', () => {\n expect(() => {\n // @ts-expect-error - Testing that non-Zod values are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: 'invalid schema',\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema or a raw JSON schema');\n });\n\n it('should infer empty object type when parameters are omitted', () => {\n const toolType = tool({\n description: 'Simple action without parameters',\n execute: async () => 'done' as const,\n });\n\n expectTypeOf(toolType).toEqualTypeOf<FunctionTool<Record<string, never>, unknown, 'done'>>();\n });\n\n it('should infer correct types with context but no parameters', () => {\n const toolType = tool({\n description: 'Action with context',\n execute: async (args, { ctx }: ToolOptions<{ userId: number }>) => {\n expectTypeOf(args).toEqualTypeOf<Record<string, never>>();\n expectTypeOf(ctx.userData.userId).toEqualTypeOf<number>();\n return ctx.userData.userId;\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<\n FunctionTool<Record<string, never>, { userId: number }, number>\n >();\n });\n});\n"],"mappings":";AAGA,oBAAmD;AACnD,iBAAkB;AAClB,mBAAoF;AAAA,IAEpF,wBAAS,uBAAuB,MAAM;AACpC,wBAAG,8CAA8C,MAAM;AACrD,UAAM,eAAW,mBAAK;AAAA,MACpB,aAAa;AAAA,MACb,YAAY,aAAE,OAAO,EAAE,QAAQ,aAAE,OAAO,EAAE,CAAC;AAAA,MAC3C,SAAS,YAAY;AAAA,IACvB,CAAC;AAED,oCAAa,QAAQ,EAAE,cAAiE;AAAA,EAC1F,CAAC;AAED,wBAAG,2CAA2C,MAAM;AAClD,UAAM,eAAW,mBAAK;AAAA,MACpB,IAAI;AAAA,MACJ,QAAQ;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAED,oCAAa,QAAQ,EAAE,cAAmC;AAAA,EAC5D,CAAC;AAED,wBAAG,iCAAiC,MAAM;AACxC,UAAM,eAAW,mBAAK;AAAA,MACpB,aAAa;AAAA,MACb,YAAY,aAAE,OAAO,EAAE,QAAQ,aAAE,OAAO,EAAE,CAAC;AAAA,MAC3C,SAAS,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,MAAqC;AACrE,eAAO,iBAAiB,MAAM,KAAK,IAAI,SAAS,IAAI;AAAA,MACtD;AAAA,IACF,CAAC;AAED,oCAAa,QAAQ,EAAE,cAErB;AAAA,EACJ,CAAC;AAED,wBAAG,2CAA2C,MAAM;AAClD,8BAAO,MAAM;AAEX,6BAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,aAAE,OAAO;AAAA,QACrB,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,wBAAG,mCAAmC,MAAM;AAC1C,8BAAO,MAAM;AAEX,6BAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,QAC9B,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,wBAAG,mCAAmC,MAAM;AAC1C,8BAAO,MAAM;AAEX,6BAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,aAAE,MAAM,CAAC,aAAE,OAAO,EAAE,GAAG,aAAE,OAAO,EAAE,CAAC,GAAG,aAAE,OAAO,EAAE,GAAG,aAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,QAC9E,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,wBAAG,kDAAkD,MAAM;AACzD,8BAAO,MAAM;AAEX,6BAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,kEAAkE;AAAA,EACpF,CAAC;AAED,wBAAG,8DAA8D,MAAM;AACrE,UAAM,eAAW,mBAAK;AAAA,MACpB,aAAa;AAAA,MACb,SAAS,YAAY;AAAA,IACvB,CAAC;AAED,oCAAa,QAAQ,EAAE,cAAoE;AAAA,EAC7F,CAAC;AAED,wBAAG,6DAA6D,MAAM;AACpE,UAAM,eAAW,mBAAK;AAAA,MACpB,aAAa;AAAA,MACb,SAAS,OAAO,MAAM,EAAE,IAAI,MAAuC;AACjE,wCAAa,IAAI,EAAE,cAAqC;AACxD,wCAAa,IAAI,SAAS,MAAM,EAAE,cAAsB;AACxD,eAAO,IAAI,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAED,oCAAa,QAAQ,EAAE,cAErB;AAAA,EACJ,CAAC;AACH,CAAC;","names":[]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { describe, expect, expectTypeOf, it } from "vitest";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
import { tool } from "./index.js";
|
|
4
|
+
describe("tool type inference", () => {
|
|
5
|
+
it("should infer argument type from zod schema", () => {
|
|
6
|
+
const toolType = tool({
|
|
7
|
+
description: "test",
|
|
8
|
+
parameters: z.object({ number: z.number() }),
|
|
9
|
+
execute: async () => "test"
|
|
10
|
+
});
|
|
11
|
+
expectTypeOf(toolType).toEqualTypeOf();
|
|
12
|
+
});
|
|
13
|
+
it("should infer provider defined tool type", () => {
|
|
14
|
+
const toolType = tool({
|
|
15
|
+
id: "code-interpreter",
|
|
16
|
+
config: {
|
|
17
|
+
language: "python"
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
expectTypeOf(toolType).toEqualTypeOf();
|
|
21
|
+
});
|
|
22
|
+
it("should infer run context type", () => {
|
|
23
|
+
const toolType = tool({
|
|
24
|
+
description: "test",
|
|
25
|
+
parameters: z.object({ number: z.number() }),
|
|
26
|
+
execute: async ({ number }, { ctx }) => {
|
|
27
|
+
return `The number is ${number}, ${ctx.userData.name}`;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
expectTypeOf(toolType).toEqualTypeOf();
|
|
31
|
+
});
|
|
32
|
+
it("should not accept primitive zod schemas", () => {
|
|
33
|
+
expect(() => {
|
|
34
|
+
tool({
|
|
35
|
+
name: "test",
|
|
36
|
+
description: "test",
|
|
37
|
+
parameters: z.string(),
|
|
38
|
+
execute: async () => "test"
|
|
39
|
+
});
|
|
40
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
41
|
+
});
|
|
42
|
+
it("should not accept array schemas", () => {
|
|
43
|
+
expect(() => {
|
|
44
|
+
tool({
|
|
45
|
+
name: "test",
|
|
46
|
+
description: "test",
|
|
47
|
+
parameters: z.array(z.string()),
|
|
48
|
+
execute: async () => "test"
|
|
49
|
+
});
|
|
50
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
51
|
+
});
|
|
52
|
+
it("should not accept union schemas", () => {
|
|
53
|
+
expect(() => {
|
|
54
|
+
tool({
|
|
55
|
+
name: "test",
|
|
56
|
+
description: "test",
|
|
57
|
+
parameters: z.union([z.object({ a: z.string() }), z.object({ b: z.number() })]),
|
|
58
|
+
execute: async () => "test"
|
|
59
|
+
});
|
|
60
|
+
}).toThrowError("Tool parameters must be a Zod object schema (z.object(...))");
|
|
61
|
+
});
|
|
62
|
+
it("should not accept non-Zod values as parameters", () => {
|
|
63
|
+
expect(() => {
|
|
64
|
+
tool({
|
|
65
|
+
name: "test",
|
|
66
|
+
description: "test",
|
|
67
|
+
parameters: "invalid schema",
|
|
68
|
+
execute: async () => "test"
|
|
69
|
+
});
|
|
70
|
+
}).toThrowError("Tool parameters must be a Zod object schema or a raw JSON schema");
|
|
71
|
+
});
|
|
72
|
+
it("should infer empty object type when parameters are omitted", () => {
|
|
73
|
+
const toolType = tool({
|
|
74
|
+
description: "Simple action without parameters",
|
|
75
|
+
execute: async () => "done"
|
|
76
|
+
});
|
|
77
|
+
expectTypeOf(toolType).toEqualTypeOf();
|
|
78
|
+
});
|
|
79
|
+
it("should infer correct types with context but no parameters", () => {
|
|
80
|
+
const toolType = tool({
|
|
81
|
+
description: "Action with context",
|
|
82
|
+
execute: async (args, { ctx }) => {
|
|
83
|
+
expectTypeOf(args).toEqualTypeOf();
|
|
84
|
+
expectTypeOf(ctx.userData.userId).toEqualTypeOf();
|
|
85
|
+
return ctx.userData.userId;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
expectTypeOf(toolType).toEqualTypeOf();
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=tool_context.type.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/llm/tool_context.type.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { describe, expect, expectTypeOf, it } from 'vitest';\nimport { z } from 'zod';\nimport { type FunctionTool, type ProviderDefinedTool, type ToolOptions, tool } from './index.js';\n\ndescribe('tool type inference', () => {\n it('should infer argument type from zod schema', () => {\n const toolType = tool({\n description: 'test',\n parameters: z.object({ number: z.number() }),\n execute: async () => 'test' as const,\n });\n\n expectTypeOf(toolType).toEqualTypeOf<FunctionTool<{ number: number }, unknown, 'test'>>();\n });\n\n it('should infer provider defined tool type', () => {\n const toolType = tool({\n id: 'code-interpreter',\n config: {\n language: 'python',\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<ProviderDefinedTool>();\n });\n\n it('should infer run context type', () => {\n const toolType = tool({\n description: 'test',\n parameters: z.object({ number: z.number() }),\n execute: async ({ number }, { ctx }: ToolOptions<{ name: string }>) => {\n return `The number is ${number}, ${ctx.userData.name}`;\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<\n FunctionTool<{ number: number }, { name: string }, string>\n >();\n });\n\n it('should not accept primitive zod schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that non-object schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.string(),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept array schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that array schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.array(z.string()),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept union schemas', () => {\n expect(() => {\n // @ts-expect-error - Testing that union schemas are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: z.union([z.object({ a: z.string() }), z.object({ b: z.number() })]),\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema (z.object(...))');\n });\n\n it('should not accept non-Zod values as parameters', () => {\n expect(() => {\n // @ts-expect-error - Testing that non-Zod values are rejected\n tool({\n name: 'test',\n description: 'test',\n parameters: 'invalid schema',\n execute: async () => 'test' as const,\n });\n }).toThrowError('Tool parameters must be a Zod object schema or a raw JSON schema');\n });\n\n it('should infer empty object type when parameters are omitted', () => {\n const toolType = tool({\n description: 'Simple action without parameters',\n execute: async () => 'done' as const,\n });\n\n expectTypeOf(toolType).toEqualTypeOf<FunctionTool<Record<string, never>, unknown, 'done'>>();\n });\n\n it('should infer correct types with context but no parameters', () => {\n const toolType = tool({\n description: 'Action with context',\n execute: async (args, { ctx }: ToolOptions<{ userId: number }>) => {\n expectTypeOf(args).toEqualTypeOf<Record<string, never>>();\n expectTypeOf(ctx.userData.userId).toEqualTypeOf<number>();\n return ctx.userData.userId;\n },\n });\n\n expectTypeOf(toolType).toEqualTypeOf<\n FunctionTool<Record<string, never>, { userId: number }, number>\n >();\n });\n});\n"],"mappings":"AAGA,SAAS,UAAU,QAAQ,cAAc,UAAU;AACnD,SAAS,SAAS;AAClB,SAAwE,YAAY;AAEpF,SAAS,uBAAuB,MAAM;AACpC,KAAG,8CAA8C,MAAM;AACrD,UAAM,WAAW,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAAA,MAC3C,SAAS,YAAY;AAAA,IACvB,CAAC;AAED,iBAAa,QAAQ,EAAE,cAAiE;AAAA,EAC1F,CAAC;AAED,KAAG,2CAA2C,MAAM;AAClD,UAAM,WAAW,KAAK;AAAA,MACpB,IAAI;AAAA,MACJ,QAAQ;AAAA,QACN,UAAU;AAAA,MACZ;AAAA,IACF,CAAC;AAED,iBAAa,QAAQ,EAAE,cAAmC;AAAA,EAC5D,CAAC;AAED,KAAG,iCAAiC,MAAM;AACxC,UAAM,WAAW,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;AAAA,MAC3C,SAAS,OAAO,EAAE,OAAO,GAAG,EAAE,IAAI,MAAqC;AACrE,eAAO,iBAAiB,MAAM,KAAK,IAAI,SAAS,IAAI;AAAA,MACtD;AAAA,IACF,CAAC;AAED,iBAAa,QAAQ,EAAE,cAErB;AAAA,EACJ,CAAC;AAED,KAAG,2CAA2C,MAAM;AAClD,WAAO,MAAM;AAEX,WAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,EAAE,OAAO;AAAA,QACrB,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,WAAO,MAAM;AAEX,WAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC;AAAA,QAC9B,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,KAAG,mCAAmC,MAAM;AAC1C,WAAO,MAAM;AAEX,WAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;AAAA,QAC9E,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,6DAA6D;AAAA,EAC/E,CAAC;AAED,KAAG,kDAAkD,MAAM;AACzD,WAAO,MAAM;AAEX,WAAK;AAAA,QACH,MAAM;AAAA,QACN,aAAa;AAAA,QACb,YAAY;AAAA,QACZ,SAAS,YAAY;AAAA,MACvB,CAAC;AAAA,IACH,CAAC,EAAE,aAAa,kEAAkE;AAAA,EACpF,CAAC;AAED,KAAG,8DAA8D,MAAM;AACrE,UAAM,WAAW,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,SAAS,YAAY;AAAA,IACvB,CAAC;AAED,iBAAa,QAAQ,EAAE,cAAoE;AAAA,EAC7F,CAAC;AAED,KAAG,6DAA6D,MAAM;AACpE,UAAM,WAAW,KAAK;AAAA,MACpB,aAAa;AAAA,MACb,SAAS,OAAO,MAAM,EAAE,IAAI,MAAuC;AACjE,qBAAa,IAAI,EAAE,cAAqC;AACxD,qBAAa,IAAI,SAAS,MAAM,EAAE,cAAsB;AACxD,eAAO,IAAI,SAAS;AAAA,MACtB;AAAA,IACF,CAAC;AAED,iBAAa,QAAQ,EAAE,cAErB;AAAA,EACJ,CAAC;AACH,CAAC;","names":[]}
|