@livekit/agents 1.1.0 → 1.2.0
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/dist/audio.cjs +89 -3
- package/dist/audio.cjs.map +1 -1
- package/dist/audio.d.cts +36 -1
- package/dist/audio.d.ts +36 -1
- package/dist/audio.d.ts.map +1 -1
- package/dist/audio.js +76 -2
- package/dist/audio.js.map +1 -1
- package/dist/beta/index.cjs +29 -0
- package/dist/beta/index.cjs.map +1 -0
- package/dist/beta/index.d.cts +2 -0
- package/dist/beta/index.d.ts +2 -0
- package/dist/beta/index.d.ts.map +1 -0
- package/dist/beta/index.js +7 -0
- package/dist/beta/index.js.map +1 -0
- package/dist/beta/workflows/index.cjs +29 -0
- package/dist/beta/workflows/index.cjs.map +1 -0
- package/dist/beta/workflows/index.d.cts +2 -0
- package/dist/beta/workflows/index.d.ts +2 -0
- package/dist/beta/workflows/index.d.ts.map +1 -0
- package/dist/beta/workflows/index.js +7 -0
- package/dist/beta/workflows/index.js.map +1 -0
- package/dist/beta/workflows/task_group.cjs +162 -0
- package/dist/beta/workflows/task_group.cjs.map +1 -0
- package/dist/beta/workflows/task_group.d.cts +32 -0
- package/dist/beta/workflows/task_group.d.ts +32 -0
- package/dist/beta/workflows/task_group.d.ts.map +1 -0
- package/dist/beta/workflows/task_group.js +138 -0
- package/dist/beta/workflows/task_group.js.map +1 -0
- package/dist/cli.cjs +44 -46
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +3 -3
- package/dist/cli.d.ts +3 -3
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +45 -47
- package/dist/cli.js.map +1 -1
- 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 +30 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +10 -0
- package/dist/constants.d.ts +10 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +20 -0
- package/dist/constants.js.map +1 -1
- package/dist/cpu.cjs +189 -0
- package/dist/cpu.cjs.map +1 -0
- package/dist/cpu.d.cts +24 -0
- package/dist/cpu.d.ts +24 -0
- package/dist/cpu.d.ts.map +1 -0
- package/dist/cpu.js +152 -0
- package/dist/cpu.js.map +1 -0
- package/dist/cpu.test.cjs +227 -0
- package/dist/cpu.test.cjs.map +1 -0
- package/dist/cpu.test.js +204 -0
- package/dist/cpu.test.js.map +1 -0
- package/dist/http_server.cjs +9 -6
- package/dist/http_server.cjs.map +1 -1
- package/dist/http_server.d.cts +5 -1
- package/dist/http_server.d.ts +5 -1
- package/dist/http_server.d.ts.map +1 -1
- package/dist/http_server.js +9 -6
- package/dist/http_server.js.map +1 -1
- package/dist/index.cjs +24 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +15 -11
- package/dist/index.d.ts +15 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -9
- package/dist/index.js.map +1 -1
- package/dist/inference/api_protos.cjs +70 -2
- package/dist/inference/api_protos.cjs.map +1 -1
- package/dist/inference/api_protos.d.cts +373 -32
- package/dist/inference/api_protos.d.ts +373 -32
- package/dist/inference/api_protos.d.ts.map +1 -1
- package/dist/inference/api_protos.js +62 -2
- package/dist/inference/api_protos.js.map +1 -1
- package/dist/inference/index.cjs +8 -0
- package/dist/inference/index.cjs.map +1 -1
- package/dist/inference/index.d.cts +3 -4
- package/dist/inference/index.d.ts +3 -4
- package/dist/inference/index.d.ts.map +1 -1
- package/dist/inference/index.js +18 -3
- package/dist/inference/index.js.map +1 -1
- package/dist/inference/interruption/defaults.cjs +81 -0
- package/dist/inference/interruption/defaults.cjs.map +1 -0
- package/dist/inference/interruption/defaults.d.cts +19 -0
- package/dist/inference/interruption/defaults.d.ts +19 -0
- package/dist/inference/interruption/defaults.d.ts.map +1 -0
- package/dist/inference/interruption/defaults.js +46 -0
- package/dist/inference/interruption/defaults.js.map +1 -0
- package/dist/inference/interruption/errors.cjs +44 -0
- package/dist/inference/interruption/errors.cjs.map +1 -0
- package/dist/inference/interruption/errors.d.cts +12 -0
- package/dist/inference/interruption/errors.d.ts +12 -0
- package/dist/inference/interruption/errors.d.ts.map +1 -0
- package/dist/inference/interruption/errors.js +20 -0
- package/dist/inference/interruption/errors.js.map +1 -0
- package/dist/inference/interruption/http_transport.cjs +163 -0
- package/dist/inference/interruption/http_transport.cjs.map +1 -0
- package/dist/inference/interruption/http_transport.d.cts +63 -0
- package/dist/inference/interruption/http_transport.d.ts +63 -0
- package/dist/inference/interruption/http_transport.d.ts.map +1 -0
- package/dist/inference/interruption/http_transport.js +137 -0
- package/dist/inference/interruption/http_transport.js.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.cjs +58 -0
- package/dist/inference/interruption/interruption_cache_entry.cjs.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.d.cts +30 -0
- package/dist/inference/interruption/interruption_cache_entry.d.ts +30 -0
- package/dist/inference/interruption/interruption_cache_entry.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_cache_entry.js +34 -0
- package/dist/inference/interruption/interruption_cache_entry.js.map +1 -0
- package/dist/inference/interruption/interruption_detector.cjs +198 -0
- package/dist/inference/interruption/interruption_detector.cjs.map +1 -0
- package/dist/inference/interruption/interruption_detector.d.cts +59 -0
- package/dist/inference/interruption/interruption_detector.d.ts +59 -0
- package/dist/inference/interruption/interruption_detector.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_detector.js +164 -0
- package/dist/inference/interruption/interruption_detector.js.map +1 -0
- package/dist/inference/interruption/interruption_stream.cjs +368 -0
- package/dist/inference/interruption/interruption_stream.cjs.map +1 -0
- package/dist/inference/interruption/interruption_stream.d.cts +46 -0
- package/dist/inference/interruption/interruption_stream.d.ts +46 -0
- package/dist/inference/interruption/interruption_stream.d.ts.map +1 -0
- package/dist/inference/interruption/interruption_stream.js +344 -0
- package/dist/inference/interruption/interruption_stream.js.map +1 -0
- package/dist/inference/interruption/types.cjs +17 -0
- package/dist/inference/interruption/types.cjs.map +1 -0
- package/dist/inference/interruption/types.d.cts +66 -0
- package/dist/inference/interruption/types.d.ts +66 -0
- package/dist/inference/interruption/types.d.ts.map +1 -0
- package/dist/inference/interruption/types.js +1 -0
- package/dist/inference/interruption/types.js.map +1 -0
- package/dist/inference/interruption/utils.cjs +130 -0
- package/dist/inference/interruption/utils.cjs.map +1 -0
- package/dist/inference/interruption/utils.d.cts +41 -0
- package/dist/inference/interruption/utils.d.ts +41 -0
- package/dist/inference/interruption/utils.d.ts.map +1 -0
- package/dist/inference/interruption/utils.js +105 -0
- package/dist/inference/interruption/utils.js.map +1 -0
- package/dist/inference/interruption/utils.test.cjs +105 -0
- package/dist/inference/interruption/utils.test.cjs.map +1 -0
- package/dist/inference/interruption/utils.test.js +104 -0
- package/dist/inference/interruption/utils.test.js.map +1 -0
- package/dist/inference/interruption/ws_transport.cjs +342 -0
- package/dist/inference/interruption/ws_transport.cjs.map +1 -0
- package/dist/inference/interruption/ws_transport.d.cts +33 -0
- package/dist/inference/interruption/ws_transport.d.ts +33 -0
- package/dist/inference/interruption/ws_transport.d.ts.map +1 -0
- package/dist/inference/interruption/ws_transport.js +308 -0
- package/dist/inference/interruption/ws_transport.js.map +1 -0
- package/dist/inference/llm.cjs +106 -66
- package/dist/inference/llm.cjs.map +1 -1
- package/dist/inference/llm.d.cts +65 -43
- package/dist/inference/llm.d.ts +65 -43
- package/dist/inference/llm.d.ts.map +1 -1
- package/dist/inference/llm.js +100 -66
- package/dist/inference/llm.js.map +1 -1
- package/dist/inference/stt.cjs +319 -170
- package/dist/inference/stt.cjs.map +1 -1
- package/dist/inference/stt.d.cts +64 -15
- package/dist/inference/stt.d.ts +64 -15
- package/dist/inference/stt.d.ts.map +1 -1
- package/dist/inference/stt.js +319 -170
- package/dist/inference/stt.js.map +1 -1
- package/dist/inference/stt.test.cjs +218 -0
- package/dist/inference/stt.test.cjs.map +1 -0
- package/dist/inference/stt.test.js +217 -0
- package/dist/inference/stt.test.js.map +1 -0
- package/dist/inference/tts.cjs +249 -71
- package/dist/inference/tts.cjs.map +1 -1
- package/dist/inference/tts.d.cts +55 -16
- package/dist/inference/tts.d.ts +55 -16
- package/dist/inference/tts.d.ts.map +1 -1
- package/dist/inference/tts.js +249 -77
- package/dist/inference/tts.js.map +1 -1
- package/dist/inference/tts.test.cjs +233 -0
- package/dist/inference/tts.test.cjs.map +1 -0
- package/dist/inference/tts.test.js +232 -0
- package/dist/inference/tts.test.js.map +1 -0
- package/dist/inference/utils.cjs +26 -7
- package/dist/inference/utils.cjs.map +1 -1
- package/dist/inference/utils.d.cts +14 -1
- package/dist/inference/utils.d.ts +14 -1
- package/dist/inference/utils.d.ts.map +1 -1
- package/dist/inference/utils.js +18 -2
- package/dist/inference/utils.js.map +1 -1
- package/dist/ipc/inference_proc_executor.cjs +6 -3
- package/dist/ipc/inference_proc_executor.cjs.map +1 -1
- package/dist/ipc/inference_proc_executor.d.ts.map +1 -1
- package/dist/ipc/inference_proc_executor.js +6 -3
- package/dist/ipc/inference_proc_executor.js.map +1 -1
- package/dist/ipc/inference_proc_lazy_main.cjs +13 -1
- package/dist/ipc/inference_proc_lazy_main.cjs.map +1 -1
- package/dist/ipc/inference_proc_lazy_main.js +13 -1
- package/dist/ipc/inference_proc_lazy_main.js.map +1 -1
- package/dist/ipc/job_proc_executor.cjs +6 -1
- package/dist/ipc/job_proc_executor.cjs.map +1 -1
- package/dist/ipc/job_proc_executor.d.ts.map +1 -1
- package/dist/ipc/job_proc_executor.js +6 -1
- package/dist/ipc/job_proc_executor.js.map +1 -1
- package/dist/ipc/job_proc_lazy_main.cjs +89 -17
- package/dist/ipc/job_proc_lazy_main.cjs.map +1 -1
- package/dist/ipc/job_proc_lazy_main.js +68 -18
- package/dist/ipc/job_proc_lazy_main.js.map +1 -1
- package/dist/ipc/supervised_proc.cjs +34 -8
- package/dist/ipc/supervised_proc.cjs.map +1 -1
- package/dist/ipc/supervised_proc.d.cts +8 -0
- package/dist/ipc/supervised_proc.d.ts +8 -0
- package/dist/ipc/supervised_proc.d.ts.map +1 -1
- package/dist/ipc/supervised_proc.js +34 -8
- package/dist/ipc/supervised_proc.js.map +1 -1
- 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 +109 -1
- package/dist/job.cjs.map +1 -1
- package/dist/job.d.cts +14 -0
- package/dist/job.d.ts +14 -0
- package/dist/job.d.ts.map +1 -1
- package/dist/job.js +99 -1
- package/dist/job.js.map +1 -1
- package/dist/language.cjs +394 -0
- package/dist/language.cjs.map +1 -0
- package/dist/language.d.cts +15 -0
- package/dist/language.d.ts +15 -0
- package/dist/language.d.ts.map +1 -0
- package/dist/language.js +363 -0
- package/dist/language.js.map +1 -0
- package/dist/language.test.cjs +43 -0
- package/dist/language.test.cjs.map +1 -0
- package/dist/language.test.js +49 -0
- package/dist/language.test.js.map +1 -0
- package/dist/llm/chat_context.cjs +274 -3
- package/dist/llm/chat_context.cjs.map +1 -1
- package/dist/llm/chat_context.d.cts +86 -2
- package/dist/llm/chat_context.d.ts +86 -2
- package/dist/llm/chat_context.d.ts.map +1 -1
- package/dist/llm/chat_context.js +273 -3
- package/dist/llm/chat_context.js.map +1 -1
- package/dist/llm/chat_context.test.cjs +574 -0
- package/dist/llm/chat_context.test.cjs.map +1 -1
- package/dist/llm/chat_context.test.js +574 -0
- package/dist/llm/chat_context.test.js.map +1 -1
- 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 +9 -0
- package/dist/llm/index.cjs.map +1 -1
- package/dist/llm/index.d.cts +4 -3
- package/dist/llm/index.d.ts +4 -3
- package/dist/llm/index.d.ts.map +1 -1
- package/dist/llm/index.js +11 -1
- package/dist/llm/index.js.map +1 -1
- package/dist/llm/llm.cjs +65 -11
- package/dist/llm/llm.cjs.map +1 -1
- package/dist/llm/llm.d.cts +13 -2
- package/dist/llm/llm.d.ts +13 -2
- package/dist/llm/llm.d.ts.map +1 -1
- package/dist/llm/llm.js +65 -11
- package/dist/llm/llm.js.map +1 -1
- package/dist/llm/provider_format/google.cjs +6 -2
- package/dist/llm/provider_format/google.cjs.map +1 -1
- package/dist/llm/provider_format/google.d.cts +1 -1
- package/dist/llm/provider_format/google.d.ts +1 -1
- package/dist/llm/provider_format/google.d.ts.map +1 -1
- package/dist/llm/provider_format/google.js +6 -2
- package/dist/llm/provider_format/google.js.map +1 -1
- package/dist/llm/provider_format/google.test.cjs +48 -0
- package/dist/llm/provider_format/google.test.cjs.map +1 -1
- package/dist/llm/provider_format/google.test.js +54 -1
- package/dist/llm/provider_format/google.test.js.map +1 -1
- package/dist/llm/provider_format/index.cjs +2 -0
- package/dist/llm/provider_format/index.cjs.map +1 -1
- package/dist/llm/provider_format/index.d.cts +2 -2
- package/dist/llm/provider_format/index.d.ts +2 -2
- package/dist/llm/provider_format/index.d.ts.map +1 -1
- package/dist/llm/provider_format/index.js +6 -1
- package/dist/llm/provider_format/index.js.map +1 -1
- package/dist/llm/provider_format/openai.cjs +126 -24
- package/dist/llm/provider_format/openai.cjs.map +1 -1
- package/dist/llm/provider_format/openai.d.cts +1 -0
- package/dist/llm/provider_format/openai.d.ts +1 -0
- package/dist/llm/provider_format/openai.d.ts.map +1 -1
- package/dist/llm/provider_format/openai.js +124 -23
- package/dist/llm/provider_format/openai.js.map +1 -1
- package/dist/llm/provider_format/openai.test.cjs +393 -0
- package/dist/llm/provider_format/openai.test.cjs.map +1 -1
- package/dist/llm/provider_format/openai.test.js +400 -2
- package/dist/llm/provider_format/openai.test.js.map +1 -1
- package/dist/llm/provider_format/utils.cjs +5 -4
- package/dist/llm/provider_format/utils.cjs.map +1 -1
- package/dist/llm/provider_format/utils.d.ts.map +1 -1
- package/dist/llm/provider_format/utils.js +5 -4
- package/dist/llm/provider_format/utils.js.map +1 -1
- package/dist/llm/realtime.cjs +3 -0
- package/dist/llm/realtime.cjs.map +1 -1
- package/dist/llm/realtime.d.cts +15 -1
- package/dist/llm/realtime.d.ts +15 -1
- package/dist/llm/realtime.d.ts.map +1 -1
- package/dist/llm/realtime.js +3 -0
- package/dist/llm/realtime.js.map +1 -1
- package/dist/llm/remote_chat_context.cjs.map +1 -1
- package/dist/llm/remote_chat_context.d.cts +2 -0
- package/dist/llm/remote_chat_context.d.ts +2 -0
- package/dist/llm/remote_chat_context.d.ts.map +1 -1
- package/dist/llm/remote_chat_context.js.map +1 -1
- package/dist/llm/tool_context.cjs +50 -2
- package/dist/llm/tool_context.cjs.map +1 -1
- package/dist/llm/tool_context.d.cts +47 -11
- package/dist/llm/tool_context.d.ts +47 -11
- package/dist/llm/tool_context.d.ts.map +1 -1
- package/dist/llm/tool_context.js +48 -3
- package/dist/llm/tool_context.js.map +1 -1
- package/dist/llm/tool_context.test.cjs +197 -0
- package/dist/llm/tool_context.test.cjs.map +1 -1
- package/dist/llm/tool_context.test.js +175 -0
- package/dist/llm/tool_context.test.js.map +1 -1
- package/dist/llm/utils.cjs +18 -12
- package/dist/llm/utils.cjs.map +1 -1
- package/dist/llm/utils.d.cts +2 -3
- package/dist/llm/utils.d.ts +2 -3
- package/dist/llm/utils.d.ts.map +1 -1
- package/dist/llm/utils.js +18 -12
- package/dist/llm/utils.js.map +1 -1
- 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 +45 -14
- package/dist/log.cjs.map +1 -1
- package/dist/log.d.cts +8 -1
- package/dist/log.d.ts +8 -1
- package/dist/log.d.ts.map +1 -1
- package/dist/log.js +45 -15
- package/dist/log.js.map +1 -1
- package/dist/metrics/base.cjs.map +1 -1
- package/dist/metrics/base.d.cts +75 -19
- package/dist/metrics/base.d.ts +75 -19
- package/dist/metrics/base.d.ts.map +1 -1
- package/dist/metrics/index.cjs +5 -0
- package/dist/metrics/index.cjs.map +1 -1
- package/dist/metrics/index.d.cts +2 -1
- package/dist/metrics/index.d.ts +2 -1
- package/dist/metrics/index.d.ts.map +1 -1
- package/dist/metrics/index.js +6 -0
- package/dist/metrics/index.js.map +1 -1
- package/dist/metrics/model_usage.cjs +189 -0
- package/dist/metrics/model_usage.cjs.map +1 -0
- package/dist/metrics/model_usage.d.cts +92 -0
- package/dist/metrics/model_usage.d.ts +92 -0
- package/dist/metrics/model_usage.d.ts.map +1 -0
- package/dist/metrics/model_usage.js +164 -0
- package/dist/metrics/model_usage.js.map +1 -0
- package/dist/metrics/model_usage.test.cjs +474 -0
- package/dist/metrics/model_usage.test.cjs.map +1 -0
- package/dist/metrics/model_usage.test.js +476 -0
- package/dist/metrics/model_usage.test.js.map +1 -0
- package/dist/metrics/usage_collector.cjs +5 -2
- package/dist/metrics/usage_collector.cjs.map +1 -1
- package/dist/metrics/usage_collector.d.cts +10 -1
- package/dist/metrics/usage_collector.d.ts +10 -1
- package/dist/metrics/usage_collector.d.ts.map +1 -1
- package/dist/metrics/usage_collector.js +5 -2
- package/dist/metrics/usage_collector.js.map +1 -1
- package/dist/metrics/utils.cjs +23 -7
- package/dist/metrics/utils.cjs.map +1 -1
- package/dist/metrics/utils.d.ts.map +1 -1
- package/dist/metrics/utils.js +23 -7
- package/dist/metrics/utils.js.map +1 -1
- package/dist/stream/deferred_stream.cjs +31 -10
- package/dist/stream/deferred_stream.cjs.map +1 -1
- package/dist/stream/deferred_stream.d.cts +6 -1
- package/dist/stream/deferred_stream.d.ts +6 -1
- package/dist/stream/deferred_stream.d.ts.map +1 -1
- package/dist/stream/deferred_stream.js +31 -10
- package/dist/stream/deferred_stream.js.map +1 -1
- package/dist/stream/deferred_stream.test.cjs +2 -2
- package/dist/stream/deferred_stream.test.cjs.map +1 -1
- package/dist/stream/deferred_stream.test.js +2 -2
- package/dist/stream/deferred_stream.test.js.map +1 -1
- package/dist/stream/index.cjs +3 -0
- package/dist/stream/index.cjs.map +1 -1
- package/dist/stream/index.d.cts +1 -0
- package/dist/stream/index.d.ts +1 -0
- package/dist/stream/index.d.ts.map +1 -1
- package/dist/stream/index.js +2 -0
- package/dist/stream/index.js.map +1 -1
- package/dist/stream/multi_input_stream.cjs +139 -0
- package/dist/stream/multi_input_stream.cjs.map +1 -0
- package/dist/stream/multi_input_stream.d.cts +55 -0
- package/dist/stream/multi_input_stream.d.ts +55 -0
- package/dist/stream/multi_input_stream.d.ts.map +1 -0
- package/dist/stream/multi_input_stream.js +115 -0
- package/dist/stream/multi_input_stream.js.map +1 -0
- package/dist/stream/multi_input_stream.test.cjs +344 -0
- package/dist/stream/multi_input_stream.test.cjs.map +1 -0
- package/dist/stream/multi_input_stream.test.js +343 -0
- package/dist/stream/multi_input_stream.test.js.map +1 -0
- package/dist/stream/stream_channel.cjs +39 -1
- package/dist/stream/stream_channel.cjs.map +1 -1
- package/dist/stream/stream_channel.d.cts +5 -2
- package/dist/stream/stream_channel.d.ts +5 -2
- package/dist/stream/stream_channel.d.ts.map +1 -1
- package/dist/stream/stream_channel.js +39 -1
- package/dist/stream/stream_channel.js.map +1 -1
- package/dist/stream/stream_channel.test.cjs +27 -0
- package/dist/stream/stream_channel.test.cjs.map +1 -1
- package/dist/stream/stream_channel.test.js +27 -0
- package/dist/stream/stream_channel.test.js.map +1 -1
- package/dist/stt/stream_adapter.cjs +24 -9
- package/dist/stt/stream_adapter.cjs.map +1 -1
- package/dist/stt/stream_adapter.d.cts +7 -3
- package/dist/stt/stream_adapter.d.ts +7 -3
- package/dist/stt/stream_adapter.d.ts.map +1 -1
- package/dist/stt/stream_adapter.js +24 -9
- package/dist/stt/stream_adapter.js.map +1 -1
- package/dist/stt/stt.cjs +86 -19
- package/dist/stt/stt.cjs.map +1 -1
- package/dist/stt/stt.d.cts +60 -5
- package/dist/stt/stt.d.ts +60 -5
- package/dist/stt/stt.d.ts.map +1 -1
- package/dist/stt/stt.js +88 -21
- package/dist/stt/stt.js.map +1 -1
- 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 +166 -0
- package/dist/telemetry/otel_http_exporter.cjs.map +1 -0
- package/dist/telemetry/otel_http_exporter.d.cts +63 -0
- package/dist/telemetry/otel_http_exporter.d.ts +63 -0
- package/dist/telemetry/otel_http_exporter.d.ts.map +1 -0
- package/dist/telemetry/otel_http_exporter.js +142 -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 +233 -0
- package/dist/telemetry/trace_types.cjs.map +1 -0
- package/dist/telemetry/trace_types.d.cts +74 -0
- package/dist/telemetry/trace_types.d.ts +74 -0
- package/dist/telemetry/trace_types.d.ts.map +1 -0
- package/dist/telemetry/trace_types.js +141 -0
- package/dist/telemetry/trace_types.js.map +1 -0
- package/dist/telemetry/traces.cjs +484 -0
- package/dist/telemetry/traces.cjs.map +1 -0
- package/dist/telemetry/traces.d.cts +116 -0
- package/dist/telemetry/traces.d.ts +116 -0
- package/dist/telemetry/traces.d.ts.map +1 -0
- package/dist/telemetry/traces.js +449 -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/sentence.cjs +3 -3
- package/dist/tokenize/basic/sentence.cjs.map +1 -1
- package/dist/tokenize/basic/sentence.js +3 -3
- package/dist/tokenize/basic/sentence.js.map +1 -1
- package/dist/tokenize/tokenizer.test.cjs +3 -1
- package/dist/tokenize/tokenizer.test.cjs.map +1 -1
- package/dist/tokenize/tokenizer.test.js +3 -1
- package/dist/tokenize/tokenizer.test.js.map +1 -1
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.d.cts +6 -0
- package/dist/transcription.d.ts +6 -0
- package/dist/transcription.d.ts.map +1 -1
- package/dist/transcription.js.map +1 -1
- package/dist/tts/fallback_adapter.cjs +466 -0
- package/dist/tts/fallback_adapter.cjs.map +1 -0
- package/dist/tts/fallback_adapter.d.cts +110 -0
- package/dist/tts/fallback_adapter.d.ts +110 -0
- package/dist/tts/fallback_adapter.d.ts.map +1 -0
- package/dist/tts/fallback_adapter.js +442 -0
- package/dist/tts/fallback_adapter.js.map +1 -0
- package/dist/tts/index.cjs +3 -0
- package/dist/tts/index.cjs.map +1 -1
- package/dist/tts/index.d.cts +1 -0
- package/dist/tts/index.d.ts +1 -0
- package/dist/tts/index.d.ts.map +1 -1
- package/dist/tts/index.js +2 -0
- package/dist/tts/index.js.map +1 -1
- package/dist/tts/stream_adapter.cjs +25 -8
- package/dist/tts/stream_adapter.cjs.map +1 -1
- package/dist/tts/stream_adapter.d.cts +6 -3
- package/dist/tts/stream_adapter.d.ts +6 -3
- package/dist/tts/stream_adapter.d.ts.map +1 -1
- package/dist/tts/stream_adapter.js +25 -8
- package/dist/tts/stream_adapter.js.map +1 -1
- package/dist/tts/tts.cjs +189 -57
- package/dist/tts/tts.cjs.map +1 -1
- package/dist/tts/tts.d.cts +58 -6
- package/dist/tts/tts.d.ts +58 -6
- package/dist/tts/tts.d.ts.map +1 -1
- package/dist/tts/tts.js +191 -59
- package/dist/tts/tts.js.map +1 -1
- package/dist/types.cjs +24 -32
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +45 -10
- package/dist/types.d.ts +45 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +20 -30
- package/dist/types.js.map +1 -1
- package/dist/utils.cjs +122 -26
- package/dist/utils.cjs.map +1 -1
- package/dist/utils.d.cts +41 -1
- package/dist/utils.d.ts +41 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +117 -25
- package/dist/utils.js.map +1 -1
- package/dist/utils.test.cjs +73 -1
- package/dist/utils.test.cjs.map +1 -1
- package/dist/utils.test.js +74 -10
- package/dist/utils.test.js.map +1 -1
- package/dist/vad.cjs +35 -15
- package/dist/vad.cjs.map +1 -1
- package/dist/vad.d.cts +15 -5
- package/dist/vad.d.ts +15 -5
- package/dist/vad.d.ts.map +1 -1
- package/dist/vad.js +35 -15
- package/dist/vad.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.cjs.map +1 -1
- package/dist/version.d.cts +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/dist/voice/agent.cjs +258 -35
- package/dist/voice/agent.cjs.map +1 -1
- package/dist/voice/agent.d.cts +54 -13
- package/dist/voice/agent.d.ts +54 -13
- package/dist/voice/agent.d.ts.map +1 -1
- package/dist/voice/agent.js +254 -34
- package/dist/voice/agent.js.map +1 -1
- package/dist/voice/agent.test.cjs +314 -0
- package/dist/voice/agent.test.cjs.map +1 -1
- package/dist/voice/agent.test.js +316 -2
- package/dist/voice/agent.test.js.map +1 -1
- package/dist/voice/agent_activity.cjs +1116 -385
- package/dist/voice/agent_activity.cjs.map +1 -1
- package/dist/voice/agent_activity.d.cts +72 -11
- package/dist/voice/agent_activity.d.ts +72 -11
- package/dist/voice/agent_activity.d.ts.map +1 -1
- package/dist/voice/agent_activity.js +1119 -383
- package/dist/voice/agent_activity.js.map +1 -1
- package/dist/voice/agent_activity.test.cjs +135 -0
- package/dist/voice/agent_activity.test.cjs.map +1 -0
- package/dist/voice/agent_activity.test.js +134 -0
- package/dist/voice/agent_activity.test.js.map +1 -0
- package/dist/voice/agent_session.cjs +550 -90
- package/dist/voice/agent_session.cjs.map +1 -1
- package/dist/voice/agent_session.d.cts +185 -25
- package/dist/voice/agent_session.d.ts +185 -25
- package/dist/voice/agent_session.d.ts.map +1 -1
- package/dist/voice/agent_session.js +556 -91
- package/dist/voice/agent_session.js.map +1 -1
- package/dist/voice/audio_recognition.cjs +605 -46
- package/dist/voice/audio_recognition.cjs.map +1 -1
- package/dist/voice/audio_recognition.d.cts +96 -4
- package/dist/voice/audio_recognition.d.ts +96 -4
- package/dist/voice/audio_recognition.d.ts.map +1 -1
- package/dist/voice/audio_recognition.js +611 -47
- package/dist/voice/audio_recognition.js.map +1 -1
- package/dist/voice/audio_recognition_span.test.cjs +295 -0
- package/dist/voice/audio_recognition_span.test.cjs.map +1 -0
- package/dist/voice/audio_recognition_span.test.js +299 -0
- package/dist/voice/audio_recognition_span.test.js.map +1 -0
- package/dist/voice/avatar/datastream_io.cjs +7 -1
- package/dist/voice/avatar/datastream_io.cjs.map +1 -1
- package/dist/voice/avatar/datastream_io.d.cts +1 -0
- package/dist/voice/avatar/datastream_io.d.ts +1 -0
- package/dist/voice/avatar/datastream_io.d.ts.map +1 -1
- package/dist/voice/avatar/datastream_io.js +7 -1
- package/dist/voice/avatar/datastream_io.js.map +1 -1
- package/dist/voice/background_audio.cjs +367 -0
- package/dist/voice/background_audio.cjs.map +1 -0
- package/dist/voice/background_audio.d.cts +123 -0
- package/dist/voice/background_audio.d.ts +123 -0
- package/dist/voice/background_audio.d.ts.map +1 -0
- package/dist/voice/background_audio.js +343 -0
- package/dist/voice/background_audio.js.map +1 -0
- package/dist/voice/events.cjs +3 -0
- package/dist/voice/events.cjs.map +1 -1
- package/dist/voice/events.d.cts +16 -9
- package/dist/voice/events.d.ts +16 -9
- package/dist/voice/events.d.ts.map +1 -1
- package/dist/voice/events.js +3 -0
- package/dist/voice/events.js.map +1 -1
- package/dist/voice/generation.cjs +205 -41
- package/dist/voice/generation.cjs.map +1 -1
- package/dist/voice/generation.d.cts +21 -5
- package/dist/voice/generation.d.ts +21 -5
- package/dist/voice/generation.d.ts.map +1 -1
- package/dist/voice/generation.js +215 -43
- package/dist/voice/generation.js.map +1 -1
- 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 +33 -2
- package/dist/voice/index.cjs.map +1 -1
- package/dist/voice/index.d.cts +8 -2
- package/dist/voice/index.d.ts +8 -2
- package/dist/voice/index.d.ts.map +1 -1
- package/dist/voice/index.js +19 -2
- package/dist/voice/index.js.map +1 -1
- 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 +66 -6
- package/dist/voice/io.cjs.map +1 -1
- package/dist/voice/io.d.cts +67 -7
- package/dist/voice/io.d.ts +67 -7
- package/dist/voice/io.d.ts.map +1 -1
- package/dist/voice/io.js +62 -5
- package/dist/voice/io.js.map +1 -1
- 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 +607 -0
- package/dist/voice/recorder_io/recorder_io.cjs.map +1 -0
- package/dist/voice/recorder_io/recorder_io.d.cts +106 -0
- package/dist/voice/recorder_io/recorder_io.d.ts +106 -0
- package/dist/voice/recorder_io/recorder_io.d.ts.map +1 -0
- package/dist/voice/recorder_io/recorder_io.js +573 -0
- package/dist/voice/recorder_io/recorder_io.js.map +1 -0
- package/dist/voice/remote_session.cjs +922 -0
- package/dist/voice/remote_session.cjs.map +1 -0
- package/dist/voice/remote_session.d.cts +108 -0
- package/dist/voice/remote_session.d.ts +108 -0
- package/dist/voice/remote_session.d.ts.map +1 -0
- package/dist/voice/remote_session.js +887 -0
- package/dist/voice/remote_session.js.map +1 -0
- package/dist/voice/report.cjs +88 -0
- package/dist/voice/report.cjs.map +1 -0
- package/dist/voice/report.d.cts +49 -0
- package/dist/voice/report.d.ts +49 -0
- package/dist/voice/report.d.ts.map +1 -0
- package/dist/voice/report.js +63 -0
- package/dist/voice/report.js.map +1 -0
- package/dist/voice/report.test.cjs +121 -0
- package/dist/voice/report.test.cjs.map +1 -0
- package/dist/voice/report.test.js +120 -0
- package/dist/voice/report.test.js.map +1 -0
- package/dist/voice/room_io/_input.cjs +40 -7
- package/dist/voice/room_io/_input.cjs.map +1 -1
- package/dist/voice/room_io/_input.d.cts +5 -2
- package/dist/voice/room_io/_input.d.ts +5 -2
- package/dist/voice/room_io/_input.d.ts.map +1 -1
- package/dist/voice/room_io/_input.js +41 -8
- package/dist/voice/room_io/_input.js.map +1 -1
- package/dist/voice/room_io/_output.cjs +19 -11
- package/dist/voice/room_io/_output.cjs.map +1 -1
- package/dist/voice/room_io/_output.d.cts +7 -4
- package/dist/voice/room_io/_output.d.ts +7 -4
- package/dist/voice/room_io/_output.d.ts.map +1 -1
- package/dist/voice/room_io/_output.js +20 -12
- package/dist/voice/room_io/_output.js.map +1 -1
- package/dist/voice/room_io/room_io.cjs +33 -6
- package/dist/voice/room_io/room_io.cjs.map +1 -1
- package/dist/voice/room_io/room_io.d.cts +29 -9
- package/dist/voice/room_io/room_io.d.ts +29 -9
- package/dist/voice/room_io/room_io.d.ts.map +1 -1
- package/dist/voice/room_io/room_io.js +33 -7
- package/dist/voice/room_io/room_io.js.map +1 -1
- package/dist/voice/speech_handle.cjs +22 -4
- package/dist/voice/speech_handle.cjs.map +1 -1
- package/dist/voice/speech_handle.d.cts +17 -2
- package/dist/voice/speech_handle.d.ts +17 -2
- package/dist/voice/speech_handle.d.ts.map +1 -1
- package/dist/voice/speech_handle.js +21 -4
- package/dist/voice/speech_handle.js.map +1 -1
- package/dist/voice/testing/fake_llm.cjs +127 -0
- package/dist/voice/testing/fake_llm.cjs.map +1 -0
- package/dist/voice/testing/fake_llm.d.cts +30 -0
- package/dist/voice/testing/fake_llm.d.ts +30 -0
- package/dist/voice/testing/fake_llm.d.ts.map +1 -0
- package/dist/voice/testing/fake_llm.js +103 -0
- package/dist/voice/testing/fake_llm.js.map +1 -0
- package/dist/voice/testing/index.cjs +57 -0
- package/dist/voice/testing/index.cjs.map +1 -0
- package/dist/voice/testing/index.d.cts +21 -0
- package/dist/voice/testing/index.d.ts +21 -0
- package/dist/voice/testing/index.d.ts.map +1 -0
- package/dist/voice/testing/index.js +35 -0
- package/dist/voice/testing/index.js.map +1 -0
- package/dist/voice/testing/run_result.cjs +817 -0
- package/dist/voice/testing/run_result.cjs.map +1 -0
- package/dist/voice/testing/run_result.d.cts +385 -0
- package/dist/voice/testing/run_result.d.ts +385 -0
- package/dist/voice/testing/run_result.d.ts.map +1 -0
- package/dist/voice/testing/run_result.js +790 -0
- package/dist/voice/testing/run_result.js.map +1 -0
- package/dist/voice/testing/types.cjs +46 -0
- package/dist/voice/testing/types.cjs.map +1 -0
- package/dist/voice/testing/types.d.cts +83 -0
- package/dist/voice/testing/types.d.ts +83 -0
- package/dist/voice/testing/types.d.ts.map +1 -0
- package/dist/voice/testing/types.js +19 -0
- package/dist/voice/testing/types.js.map +1 -0
- package/dist/voice/transcription/synchronizer.cjs +139 -15
- package/dist/voice/transcription/synchronizer.cjs.map +1 -1
- package/dist/voice/transcription/synchronizer.d.cts +35 -4
- package/dist/voice/transcription/synchronizer.d.ts +35 -4
- package/dist/voice/transcription/synchronizer.d.ts.map +1 -1
- package/dist/voice/transcription/synchronizer.js +143 -16
- package/dist/voice/transcription/synchronizer.js.map +1 -1
- package/dist/voice/transcription/synchronizer.test.cjs +151 -0
- package/dist/voice/transcription/synchronizer.test.cjs.map +1 -0
- package/dist/voice/transcription/synchronizer.test.js +150 -0
- package/dist/voice/transcription/synchronizer.test.js.map +1 -0
- package/dist/voice/turn_config/endpointing.cjs +33 -0
- package/dist/voice/turn_config/endpointing.cjs.map +1 -0
- package/dist/voice/turn_config/endpointing.d.cts +30 -0
- package/dist/voice/turn_config/endpointing.d.ts +30 -0
- package/dist/voice/turn_config/endpointing.d.ts.map +1 -0
- package/dist/voice/turn_config/endpointing.js +9 -0
- package/dist/voice/turn_config/endpointing.js.map +1 -0
- package/dist/voice/turn_config/interruption.cjs +37 -0
- package/dist/voice/turn_config/interruption.cjs.map +1 -0
- package/dist/voice/turn_config/interruption.d.cts +53 -0
- package/dist/voice/turn_config/interruption.d.ts +53 -0
- package/dist/voice/turn_config/interruption.d.ts.map +1 -0
- package/dist/voice/turn_config/interruption.js +13 -0
- package/dist/voice/turn_config/interruption.js.map +1 -0
- package/dist/voice/turn_config/turn_handling.cjs +35 -0
- package/dist/voice/turn_config/turn_handling.cjs.map +1 -0
- package/dist/voice/turn_config/turn_handling.d.cts +36 -0
- package/dist/voice/turn_config/turn_handling.d.ts +36 -0
- package/dist/voice/turn_config/turn_handling.d.ts.map +1 -0
- package/dist/voice/turn_config/turn_handling.js +11 -0
- package/dist/voice/turn_config/turn_handling.js.map +1 -0
- package/dist/voice/turn_config/utils.cjs +157 -0
- package/dist/voice/turn_config/utils.cjs.map +1 -0
- package/dist/voice/turn_config/utils.d.cts +37 -0
- package/dist/voice/turn_config/utils.d.ts +37 -0
- package/dist/voice/turn_config/utils.d.ts.map +1 -0
- package/dist/voice/turn_config/utils.js +131 -0
- package/dist/voice/turn_config/utils.js.map +1 -0
- package/dist/voice/turn_config/utils.test.cjs +128 -0
- package/dist/voice/turn_config/utils.test.cjs.map +1 -0
- package/dist/voice/turn_config/utils.test.js +127 -0
- package/dist/voice/turn_config/utils.test.js.map +1 -0
- package/dist/voice/utils.cjs +47 -0
- package/dist/voice/utils.cjs.map +1 -0
- package/dist/voice/utils.d.cts +4 -0
- package/dist/voice/utils.d.ts +4 -0
- package/dist/voice/utils.d.ts.map +1 -0
- package/dist/voice/utils.js +23 -0
- package/dist/voice/utils.js.map +1 -0
- package/dist/worker.cjs +44 -52
- package/dist/worker.cjs.map +1 -1
- package/dist/worker.d.cts +18 -8
- package/dist/worker.d.ts +18 -8
- package/dist/worker.d.ts.map +1 -1
- package/dist/worker.js +43 -43
- package/dist/worker.js.map +1 -1
- package/package.json +32 -12
- 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/audio.ts +132 -1
- package/src/beta/index.ts +9 -0
- package/src/beta/workflows/index.ts +9 -0
- package/src/beta/workflows/task_group.ts +194 -0
- package/src/cli.ts +57 -66
- package/src/connection_pool.test.ts +346 -0
- package/src/connection_pool.ts +307 -0
- package/src/constants.ts +14 -0
- package/src/cpu.test.ts +239 -0
- package/src/cpu.ts +173 -0
- package/src/http_server.ts +18 -6
- package/src/index.ts +15 -13
- package/src/inference/api_protos.ts +85 -2
- package/src/inference/index.ts +32 -4
- package/src/inference/interruption/defaults.ts +51 -0
- package/src/inference/interruption/errors.ts +25 -0
- package/src/inference/interruption/http_transport.ts +206 -0
- package/src/inference/interruption/interruption_cache_entry.ts +50 -0
- package/src/inference/interruption/interruption_detector.ts +204 -0
- package/src/inference/interruption/interruption_stream.ts +467 -0
- package/src/inference/interruption/types.ts +84 -0
- package/src/inference/interruption/utils.test.ts +132 -0
- package/src/inference/interruption/utils.ts +137 -0
- package/src/inference/interruption/ws_transport.ts +406 -0
- package/src/inference/llm.ts +214 -163
- package/src/inference/stt.test.ts +253 -0
- package/src/inference/stt.ts +449 -208
- package/src/inference/tts.test.ts +267 -0
- package/src/inference/tts.ts +377 -115
- package/src/inference/utils.ts +30 -2
- package/src/ipc/inference_proc_executor.ts +11 -3
- package/src/ipc/inference_proc_lazy_main.ts +13 -1
- package/src/ipc/job_proc_executor.ts +11 -1
- package/src/ipc/job_proc_lazy_main.ts +86 -20
- package/src/ipc/supervised_proc.test.ts +153 -0
- package/src/ipc/supervised_proc.ts +39 -10
- package/src/job.ts +120 -1
- package/src/language.test.ts +62 -0
- package/src/language.ts +380 -0
- package/src/llm/__snapshots__/zod-utils.test.ts.snap +559 -0
- package/src/llm/chat_context.test.ts +655 -0
- package/src/llm/chat_context.ts +412 -2
- package/src/llm/fallback_adapter.test.ts +238 -0
- package/src/llm/fallback_adapter.ts +391 -0
- package/src/llm/index.ts +11 -0
- package/src/llm/llm.ts +77 -12
- package/src/llm/provider_format/google.test.ts +72 -1
- package/src/llm/provider_format/google.ts +10 -6
- package/src/llm/provider_format/index.ts +7 -2
- package/src/llm/provider_format/openai.test.ts +480 -2
- package/src/llm/provider_format/openai.ts +152 -21
- package/src/llm/provider_format/utils.ts +11 -5
- package/src/llm/realtime.ts +23 -2
- package/src/llm/remote_chat_context.ts +2 -2
- package/src/llm/tool_context.test.ts +210 -1
- package/src/llm/tool_context.ts +115 -17
- package/src/llm/utils.ts +24 -16
- package/src/llm/zod-utils.test.ts +577 -0
- package/src/llm/zod-utils.ts +153 -0
- package/src/log.ts +71 -19
- package/src/metrics/base.ts +78 -19
- package/src/metrics/index.ts +12 -0
- package/src/metrics/model_usage.test.ts +545 -0
- package/src/metrics/model_usage.ts +262 -0
- package/src/metrics/usage_collector.ts +14 -3
- package/src/metrics/utils.ts +27 -7
- package/src/stream/deferred_stream.test.ts +3 -3
- package/src/stream/deferred_stream.ts +43 -11
- package/src/stream/index.ts +1 -0
- package/src/stream/multi_input_stream.test.ts +545 -0
- package/src/stream/multi_input_stream.ts +172 -0
- package/src/stream/stream_channel.test.ts +37 -0
- package/src/stream/stream_channel.ts +43 -3
- package/src/stt/stream_adapter.ts +30 -9
- package/src/stt/stt.ts +131 -22
- package/src/telemetry/index.ts +28 -0
- package/src/telemetry/logging.ts +55 -0
- package/src/telemetry/otel_http_exporter.ts +218 -0
- package/src/telemetry/pino_otel_transport.ts +265 -0
- package/src/telemetry/trace_types.ts +109 -0
- package/src/telemetry/traces.ts +673 -0
- package/src/telemetry/utils.ts +61 -0
- package/src/tokenize/basic/sentence.ts +3 -3
- package/src/tokenize/tokenizer.test.ts +4 -0
- package/src/transcription.ts +6 -0
- package/src/tts/fallback_adapter.ts +579 -0
- package/src/tts/index.ts +1 -0
- package/src/tts/stream_adapter.ts +38 -8
- package/src/tts/tts.ts +245 -62
- package/src/types.ts +62 -33
- package/src/utils.test.ts +90 -10
- package/src/utils.ts +176 -31
- package/src/vad.ts +42 -18
- package/src/version.ts +1 -1
- package/src/voice/agent.test.ts +347 -2
- package/src/voice/agent.ts +346 -44
- package/src/voice/agent_activity.test.ts +194 -0
- package/src/voice/agent_activity.ts +1457 -388
- package/src/voice/agent_session.ts +817 -112
- package/src/voice/audio_recognition.ts +845 -70
- package/src/voice/audio_recognition_span.test.ts +341 -0
- package/src/voice/avatar/datastream_io.ts +9 -1
- package/src/voice/background_audio.ts +494 -0
- package/src/voice/events.ts +27 -7
- package/src/voice/generation.ts +310 -56
- package/src/voice/generation_tools.test.ts +268 -0
- package/src/voice/index.ts +17 -3
- package/src/voice/interruption_detection.test.ts +151 -0
- package/src/voice/io.ts +115 -12
- package/src/voice/recorder_io/index.ts +4 -0
- package/src/voice/recorder_io/recorder_io.ts +783 -0
- package/src/voice/remote_session.ts +1083 -0
- package/src/voice/report.test.ts +136 -0
- package/src/voice/report.ts +140 -0
- package/src/voice/room_io/_input.ts +45 -10
- package/src/voice/room_io/_output.ts +26 -14
- package/src/voice/room_io/room_io.ts +67 -22
- package/src/voice/speech_handle.ts +38 -6
- package/src/voice/testing/fake_llm.ts +138 -0
- package/src/voice/testing/index.ts +52 -0
- package/src/voice/testing/run_result.ts +995 -0
- package/src/voice/testing/types.ts +118 -0
- package/src/voice/transcription/synchronizer.test.ts +206 -0
- package/src/voice/transcription/synchronizer.ts +204 -19
- package/src/voice/turn_config/endpointing.ts +33 -0
- package/src/voice/turn_config/interruption.ts +56 -0
- package/src/voice/turn_config/turn_handling.ts +45 -0
- package/src/voice/turn_config/utils.test.ts +148 -0
- package/src/voice/turn_config/utils.ts +167 -0
- package/src/voice/utils.ts +29 -0
- package/src/worker.ts +92 -78
- package/src/llm/__snapshots__/utils.test.ts.snap +0 -65
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from "vitest";
|
|
2
|
+
import { ConnectionPool } from "./connection_pool.js";
|
|
3
|
+
describe("ConnectionPool", () => {
|
|
4
|
+
const makeConnectCb = () => {
|
|
5
|
+
let n = 0;
|
|
6
|
+
return vi.fn(async (_timeout) => `conn_${++n}`);
|
|
7
|
+
};
|
|
8
|
+
describe("basic operations", () => {
|
|
9
|
+
it("should create and return a connection", async () => {
|
|
10
|
+
const connections = [];
|
|
11
|
+
const connectCb = vi.fn(async (_timeout) => {
|
|
12
|
+
const conn3 = `conn_${connections.length}`;
|
|
13
|
+
connections.push(conn3);
|
|
14
|
+
return conn3;
|
|
15
|
+
});
|
|
16
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
17
|
+
});
|
|
18
|
+
const pool = new ConnectionPool({
|
|
19
|
+
connectCb,
|
|
20
|
+
closeCb
|
|
21
|
+
});
|
|
22
|
+
const conn = await pool.get();
|
|
23
|
+
expect(conn).toBe("conn_0");
|
|
24
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
25
|
+
pool.put(conn);
|
|
26
|
+
const conn2 = await pool.get();
|
|
27
|
+
expect(conn2).toBe("conn_0");
|
|
28
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
29
|
+
});
|
|
30
|
+
it("should create new connection when none available", async () => {
|
|
31
|
+
const connectCb = makeConnectCb();
|
|
32
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
33
|
+
});
|
|
34
|
+
const pool = new ConnectionPool({
|
|
35
|
+
connectCb,
|
|
36
|
+
closeCb
|
|
37
|
+
});
|
|
38
|
+
const conn1 = await pool.get();
|
|
39
|
+
pool.put(conn1);
|
|
40
|
+
const conn2 = await pool.get();
|
|
41
|
+
expect(conn1).toBe(conn2);
|
|
42
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
43
|
+
});
|
|
44
|
+
it("should remove connection from pool", async () => {
|
|
45
|
+
const connectCb = makeConnectCb();
|
|
46
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
47
|
+
});
|
|
48
|
+
const pool = new ConnectionPool({
|
|
49
|
+
connectCb,
|
|
50
|
+
closeCb
|
|
51
|
+
});
|
|
52
|
+
const conn = await pool.get();
|
|
53
|
+
pool.put(conn);
|
|
54
|
+
pool.remove(conn);
|
|
55
|
+
const conn2 = await pool.get();
|
|
56
|
+
expect(conn2).not.toBe(conn);
|
|
57
|
+
expect(connectCb).toHaveBeenCalledTimes(2);
|
|
58
|
+
expect(closeCb).toHaveBeenCalledTimes(1);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe("maxSessionDuration", () => {
|
|
62
|
+
it("should expire connections after maxSessionDuration", async () => {
|
|
63
|
+
const connectCb = makeConnectCb();
|
|
64
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
65
|
+
});
|
|
66
|
+
const pool = new ConnectionPool({
|
|
67
|
+
connectCb,
|
|
68
|
+
closeCb,
|
|
69
|
+
maxSessionDuration: 100
|
|
70
|
+
// 100ms
|
|
71
|
+
});
|
|
72
|
+
const conn1 = await pool.get();
|
|
73
|
+
pool.put(conn1);
|
|
74
|
+
await new Promise((resolve) => setTimeout(resolve, 150));
|
|
75
|
+
const conn2 = await pool.get();
|
|
76
|
+
expect(conn2).not.toBe(conn1);
|
|
77
|
+
expect(connectCb).toHaveBeenCalledTimes(2);
|
|
78
|
+
expect(closeCb).toHaveBeenCalledTimes(1);
|
|
79
|
+
});
|
|
80
|
+
it("should refresh connection timestamp when markRefreshedOnGet is true", async () => {
|
|
81
|
+
const connectCb = makeConnectCb();
|
|
82
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
83
|
+
});
|
|
84
|
+
const pool = new ConnectionPool({
|
|
85
|
+
connectCb,
|
|
86
|
+
closeCb,
|
|
87
|
+
maxSessionDuration: 200,
|
|
88
|
+
// 200ms
|
|
89
|
+
markRefreshedOnGet: true
|
|
90
|
+
});
|
|
91
|
+
const conn1 = await pool.get();
|
|
92
|
+
pool.put(conn1);
|
|
93
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
94
|
+
const conn2 = await pool.get();
|
|
95
|
+
expect(conn2).toBe(conn1);
|
|
96
|
+
pool.put(conn2);
|
|
97
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
98
|
+
const conn3 = await pool.get();
|
|
99
|
+
expect(conn3).toBe(conn1);
|
|
100
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
103
|
+
describe("withConnection", () => {
|
|
104
|
+
it("should return connection to pool on success", async () => {
|
|
105
|
+
const connectCb = makeConnectCb();
|
|
106
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
107
|
+
});
|
|
108
|
+
const pool = new ConnectionPool({
|
|
109
|
+
connectCb,
|
|
110
|
+
closeCb
|
|
111
|
+
});
|
|
112
|
+
let capturedConn;
|
|
113
|
+
await pool.withConnection(async (conn) => {
|
|
114
|
+
capturedConn = conn;
|
|
115
|
+
return "result";
|
|
116
|
+
});
|
|
117
|
+
const conn2 = await pool.get();
|
|
118
|
+
expect(conn2).toBe(capturedConn);
|
|
119
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
120
|
+
});
|
|
121
|
+
it("should remove connection from pool on error", async () => {
|
|
122
|
+
const connectCb = makeConnectCb();
|
|
123
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
124
|
+
});
|
|
125
|
+
const pool = new ConnectionPool({
|
|
126
|
+
connectCb,
|
|
127
|
+
closeCb
|
|
128
|
+
});
|
|
129
|
+
let capturedConn;
|
|
130
|
+
try {
|
|
131
|
+
await pool.withConnection(async (conn) => {
|
|
132
|
+
capturedConn = conn;
|
|
133
|
+
throw new Error("test error");
|
|
134
|
+
});
|
|
135
|
+
} catch (e) {
|
|
136
|
+
}
|
|
137
|
+
const conn2 = await pool.get();
|
|
138
|
+
expect(conn2).not.toBe(capturedConn);
|
|
139
|
+
expect(connectCb).toHaveBeenCalledTimes(2);
|
|
140
|
+
expect(closeCb).toHaveBeenCalledTimes(1);
|
|
141
|
+
});
|
|
142
|
+
it("should handle abort signal", async () => {
|
|
143
|
+
const connectCb = makeConnectCb();
|
|
144
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
145
|
+
});
|
|
146
|
+
const pool = new ConnectionPool({
|
|
147
|
+
connectCb,
|
|
148
|
+
closeCb
|
|
149
|
+
});
|
|
150
|
+
const abortController = new AbortController();
|
|
151
|
+
let capturedConn;
|
|
152
|
+
const promise = pool.withConnection(
|
|
153
|
+
async (conn) => {
|
|
154
|
+
capturedConn = conn;
|
|
155
|
+
await new Promise((resolve) => setTimeout(resolve, 1e3));
|
|
156
|
+
return "result";
|
|
157
|
+
},
|
|
158
|
+
{ signal: abortController.signal }
|
|
159
|
+
);
|
|
160
|
+
setTimeout(() => abortController.abort(), 10);
|
|
161
|
+
await expect(promise).rejects.toThrow();
|
|
162
|
+
const conn2 = await pool.get();
|
|
163
|
+
expect(conn2).not.toBe(capturedConn);
|
|
164
|
+
expect(closeCb).toHaveBeenCalledTimes(1);
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
describe("prewarm", () => {
|
|
168
|
+
it("should create connection in background", async () => {
|
|
169
|
+
let n = 0;
|
|
170
|
+
const connectCb = vi.fn(async (_timeout) => {
|
|
171
|
+
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
172
|
+
return `conn_${++n}`;
|
|
173
|
+
});
|
|
174
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
175
|
+
});
|
|
176
|
+
const pool = new ConnectionPool({
|
|
177
|
+
connectCb,
|
|
178
|
+
closeCb
|
|
179
|
+
});
|
|
180
|
+
pool.prewarm();
|
|
181
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
182
|
+
const conn = await pool.get();
|
|
183
|
+
expect(conn).toBeDefined();
|
|
184
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
185
|
+
});
|
|
186
|
+
it("should not prewarm if connections already exist", async () => {
|
|
187
|
+
const connectCb = makeConnectCb();
|
|
188
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
189
|
+
});
|
|
190
|
+
const pool = new ConnectionPool({
|
|
191
|
+
connectCb,
|
|
192
|
+
closeCb
|
|
193
|
+
});
|
|
194
|
+
const conn1 = await pool.get();
|
|
195
|
+
pool.put(conn1);
|
|
196
|
+
pool.prewarm();
|
|
197
|
+
const conn2 = await pool.get();
|
|
198
|
+
expect(conn2).toBe(conn1);
|
|
199
|
+
expect(connectCb).toHaveBeenCalledTimes(1);
|
|
200
|
+
});
|
|
201
|
+
});
|
|
202
|
+
describe("close", () => {
|
|
203
|
+
it("should close all connections", async () => {
|
|
204
|
+
const connectCb = makeConnectCb();
|
|
205
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
206
|
+
});
|
|
207
|
+
const pool = new ConnectionPool({
|
|
208
|
+
connectCb,
|
|
209
|
+
closeCb
|
|
210
|
+
});
|
|
211
|
+
const conn1 = await pool.get();
|
|
212
|
+
const conn2 = await pool.get();
|
|
213
|
+
pool.put(conn1);
|
|
214
|
+
pool.put(conn2);
|
|
215
|
+
await pool.close();
|
|
216
|
+
expect(closeCb).toHaveBeenCalledTimes(2);
|
|
217
|
+
});
|
|
218
|
+
it("should invalidate all connections", async () => {
|
|
219
|
+
const connectCb = makeConnectCb();
|
|
220
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
221
|
+
});
|
|
222
|
+
const pool = new ConnectionPool({
|
|
223
|
+
connectCb,
|
|
224
|
+
closeCb
|
|
225
|
+
});
|
|
226
|
+
const conn1 = await pool.get();
|
|
227
|
+
const conn2 = await pool.get();
|
|
228
|
+
pool.put(conn1);
|
|
229
|
+
pool.put(conn2);
|
|
230
|
+
pool.invalidate();
|
|
231
|
+
await pool.close();
|
|
232
|
+
expect(closeCb).toHaveBeenCalledTimes(2);
|
|
233
|
+
});
|
|
234
|
+
});
|
|
235
|
+
describe("concurrent access", () => {
|
|
236
|
+
it("should handle concurrent get requests", async () => {
|
|
237
|
+
const connectCb = vi.fn(async (_timeout) => {
|
|
238
|
+
await new Promise((resolve) => setTimeout(resolve, 10));
|
|
239
|
+
return `conn_${Date.now()}_${Math.random()}`;
|
|
240
|
+
});
|
|
241
|
+
const closeCb = vi.fn(async (_conn) => {
|
|
242
|
+
});
|
|
243
|
+
const pool = new ConnectionPool({
|
|
244
|
+
connectCb,
|
|
245
|
+
closeCb
|
|
246
|
+
});
|
|
247
|
+
const promises = Array.from({ length: 5 }, () => pool.get());
|
|
248
|
+
const connections = await Promise.all(promises);
|
|
249
|
+
const uniqueConnections = new Set(connections);
|
|
250
|
+
expect(uniqueConnections.size).toBe(5);
|
|
251
|
+
expect(connectCb).toHaveBeenCalledTimes(5);
|
|
252
|
+
});
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
//# sourceMappingURL=connection_pool.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/connection_pool.test.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { describe, expect, it, vi } from 'vitest';\nimport { ConnectionPool } from './connection_pool.js';\n\ndescribe('ConnectionPool', () => {\n const makeConnectCb = () => {\n let n = 0;\n return vi.fn(async (_timeout: number): Promise<string> => `conn_${++n}`);\n };\n\n describe('basic operations', () => {\n it('should create and return a connection', async () => {\n const connections: string[] = [];\n const connectCb = vi.fn(async (_timeout: number): Promise<string> => {\n const conn = `conn_${connections.length}`;\n connections.push(conn);\n return conn;\n });\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n const conn = await pool.get();\n expect(conn).toBe('conn_0');\n expect(connectCb).toHaveBeenCalledTimes(1);\n\n pool.put(conn);\n const conn2 = await pool.get();\n expect(conn2).toBe('conn_0'); // Should reuse\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n\n it('should create new connection when none available', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n const conn1 = await pool.get();\n pool.put(conn1);\n const conn2 = await pool.get();\n expect(conn1).toBe(conn2); // Should reuse\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n\n it('should remove connection from pool', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n const conn = await pool.get();\n pool.put(conn);\n pool.remove(conn);\n\n const conn2 = await pool.get();\n expect(conn2).not.toBe(conn); // Should create new connection\n expect(connectCb).toHaveBeenCalledTimes(2);\n expect(closeCb).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('maxSessionDuration', () => {\n it('should expire connections after maxSessionDuration', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n maxSessionDuration: 100, // 100ms\n });\n\n const conn1 = await pool.get();\n pool.put(conn1);\n\n // Wait for expiration\n await new Promise((resolve) => setTimeout(resolve, 150));\n\n const conn2 = await pool.get();\n expect(conn2).not.toBe(conn1); // Should create new connection\n expect(connectCb).toHaveBeenCalledTimes(2);\n expect(closeCb).toHaveBeenCalledTimes(1);\n });\n\n it('should refresh connection timestamp when markRefreshedOnGet is true', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n maxSessionDuration: 200, // 200ms\n markRefreshedOnGet: true,\n });\n\n const conn1 = await pool.get();\n pool.put(conn1);\n\n // Wait 100ms (less than expiration)\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n // Get again - should refresh timestamp\n const conn2 = await pool.get();\n expect(conn2).toBe(conn1); // Should reuse\n pool.put(conn2);\n\n // Wait another 100ms (total 200ms, but refreshed at 100ms)\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n // Should still be valid\n const conn3 = await pool.get();\n expect(conn3).toBe(conn1); // Should still reuse\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('withConnection', () => {\n it('should return connection to pool on success', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n let capturedConn: string | undefined;\n await pool.withConnection(async (conn) => {\n capturedConn = conn;\n return 'result';\n });\n\n // Connection should be returned to pool\n const conn2 = await pool.get();\n expect(conn2).toBe(capturedConn); // Should reuse\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n\n it('should remove connection from pool on error', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n let capturedConn: string | undefined;\n try {\n await pool.withConnection(async (conn) => {\n capturedConn = conn;\n throw new Error('test error');\n });\n } catch (e) {\n // Expected\n }\n\n // Connection should be removed from pool\n const conn2 = await pool.get();\n expect(conn2).not.toBe(capturedConn); // Should create new connection\n expect(connectCb).toHaveBeenCalledTimes(2);\n expect(closeCb).toHaveBeenCalledTimes(1);\n });\n\n it('should handle abort signal', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n const abortController = new AbortController();\n let capturedConn: string | undefined;\n\n const promise = pool.withConnection(\n async (conn) => {\n capturedConn = conn;\n await new Promise((resolve) => setTimeout(resolve, 1000));\n return 'result';\n },\n { signal: abortController.signal },\n );\n\n // Abort after a short delay\n setTimeout(() => abortController.abort(), 10);\n\n await expect(promise).rejects.toThrow();\n\n // Connection should be removed from pool\n const conn2 = await pool.get();\n expect(conn2).not.toBe(capturedConn); // Should create new connection\n expect(closeCb).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('prewarm', () => {\n it('should create connection in background', async () => {\n let n = 0;\n const connectCb = vi.fn(async (_timeout: number): Promise<string> => {\n await new Promise((resolve) => setTimeout(resolve, 50));\n return `conn_${++n}`;\n });\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n pool.prewarm();\n\n // Wait for prewarm to complete\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n const conn = await pool.get();\n expect(conn).toBeDefined();\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n\n it('should not prewarm if connections already exist', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n // Create a connection first\n const conn1 = await pool.get();\n pool.put(conn1);\n\n pool.prewarm(); // Should not create new connection\n\n const conn2 = await pool.get();\n expect(conn2).toBe(conn1); // Should reuse existing\n expect(connectCb).toHaveBeenCalledTimes(1);\n });\n });\n\n describe('close', () => {\n it('should close all connections', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n // Create two distinct connections by checking out both before returning either.\n const conn1 = await pool.get();\n const conn2 = await pool.get();\n pool.put(conn1);\n pool.put(conn2);\n\n await pool.close();\n\n expect(closeCb).toHaveBeenCalledTimes(2);\n });\n\n it('should invalidate all connections', async () => {\n const connectCb = makeConnectCb();\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n // Create two distinct connections by checking out both before returning either.\n const conn1 = await pool.get();\n const conn2 = await pool.get();\n pool.put(conn1);\n pool.put(conn2);\n\n pool.invalidate();\n await pool.close(); // Drain to close\n\n expect(closeCb).toHaveBeenCalledTimes(2);\n });\n });\n\n describe('concurrent access', () => {\n it('should handle concurrent get requests', async () => {\n const connectCb = vi.fn(async (_timeout: number): Promise<string> => {\n await new Promise((resolve) => setTimeout(resolve, 10));\n return `conn_${Date.now()}_${Math.random()}`;\n });\n const closeCb = vi.fn(async (_conn: string) => {\n // Mock close\n });\n\n const pool = new ConnectionPool<string>({\n connectCb,\n closeCb,\n });\n\n const promises = Array.from({ length: 5 }, () => pool.get());\n const connections = await Promise.all(promises);\n\n // All should be different connections\n const uniqueConnections = new Set(connections);\n expect(uniqueConnections.size).toBe(5);\n expect(connectCb).toHaveBeenCalledTimes(5);\n });\n });\n});\n"],"mappings":"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","names":["conn"]}
|
package/dist/constants.cjs
CHANGED
|
@@ -18,11 +18,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var constants_exports = {};
|
|
20
20
|
__export(constants_exports, {
|
|
21
|
+
ATTRIBUTE_AGENT_NAME: () => ATTRIBUTE_AGENT_NAME,
|
|
22
|
+
ATTRIBUTE_AGENT_STATE: () => ATTRIBUTE_AGENT_STATE,
|
|
21
23
|
ATTRIBUTE_PUBLISH_ON_BEHALF: () => ATTRIBUTE_PUBLISH_ON_BEHALF,
|
|
22
24
|
ATTRIBUTE_TRANSCRIPTION_FINAL: () => ATTRIBUTE_TRANSCRIPTION_FINAL,
|
|
23
25
|
ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID: () => ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID,
|
|
24
26
|
ATTRIBUTE_TRANSCRIPTION_TRACK_ID: () => ATTRIBUTE_TRANSCRIPTION_TRACK_ID,
|
|
27
|
+
RPC_GET_AGENT_INFO: () => RPC_GET_AGENT_INFO,
|
|
28
|
+
RPC_GET_CHAT_HISTORY: () => RPC_GET_CHAT_HISTORY,
|
|
29
|
+
RPC_GET_SESSION_STATE: () => RPC_GET_SESSION_STATE,
|
|
30
|
+
RPC_SEND_MESSAGE: () => RPC_SEND_MESSAGE,
|
|
31
|
+
TOPIC_AGENT_REQUEST: () => TOPIC_AGENT_REQUEST,
|
|
32
|
+
TOPIC_AGENT_RESPONSE: () => TOPIC_AGENT_RESPONSE,
|
|
25
33
|
TOPIC_CHAT: () => TOPIC_CHAT,
|
|
34
|
+
TOPIC_CLIENT_EVENTS: () => TOPIC_CLIENT_EVENTS,
|
|
35
|
+
TOPIC_SESSION_MESSAGES: () => TOPIC_SESSION_MESSAGES,
|
|
26
36
|
TOPIC_TRANSCRIPTION: () => TOPIC_TRANSCRIPTION
|
|
27
37
|
});
|
|
28
38
|
module.exports = __toCommonJS(constants_exports);
|
|
@@ -32,13 +42,33 @@ const TOPIC_TRANSCRIPTION = "lk.transcription";
|
|
|
32
42
|
const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = "lk.segment_id";
|
|
33
43
|
const ATTRIBUTE_PUBLISH_ON_BEHALF = "lk.publish_on_behalf";
|
|
34
44
|
const TOPIC_CHAT = "lk.chat";
|
|
45
|
+
const ATTRIBUTE_AGENT_STATE = "lk.agent.state";
|
|
46
|
+
const ATTRIBUTE_AGENT_NAME = "lk.agent.name";
|
|
47
|
+
const TOPIC_CLIENT_EVENTS = "lk.agent.events";
|
|
48
|
+
const RPC_GET_SESSION_STATE = "lk.agent.get_session_state";
|
|
49
|
+
const RPC_GET_CHAT_HISTORY = "lk.agent.get_chat_history";
|
|
50
|
+
const RPC_GET_AGENT_INFO = "lk.agent.get_agent_info";
|
|
51
|
+
const RPC_SEND_MESSAGE = "lk.agent.send_message";
|
|
52
|
+
const TOPIC_AGENT_REQUEST = "lk.agent.request";
|
|
53
|
+
const TOPIC_AGENT_RESPONSE = "lk.agent.response";
|
|
54
|
+
const TOPIC_SESSION_MESSAGES = "lk.agent.session";
|
|
35
55
|
// Annotate the CommonJS export names for ESM import in node:
|
|
36
56
|
0 && (module.exports = {
|
|
57
|
+
ATTRIBUTE_AGENT_NAME,
|
|
58
|
+
ATTRIBUTE_AGENT_STATE,
|
|
37
59
|
ATTRIBUTE_PUBLISH_ON_BEHALF,
|
|
38
60
|
ATTRIBUTE_TRANSCRIPTION_FINAL,
|
|
39
61
|
ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID,
|
|
40
62
|
ATTRIBUTE_TRANSCRIPTION_TRACK_ID,
|
|
63
|
+
RPC_GET_AGENT_INFO,
|
|
64
|
+
RPC_GET_CHAT_HISTORY,
|
|
65
|
+
RPC_GET_SESSION_STATE,
|
|
66
|
+
RPC_SEND_MESSAGE,
|
|
67
|
+
TOPIC_AGENT_REQUEST,
|
|
68
|
+
TOPIC_AGENT_RESPONSE,
|
|
41
69
|
TOPIC_CHAT,
|
|
70
|
+
TOPIC_CLIENT_EVENTS,
|
|
71
|
+
TOPIC_SESSION_MESSAGES,
|
|
42
72
|
TOPIC_TRANSCRIPTION
|
|
43
73
|
});
|
|
44
74
|
//# sourceMappingURL=constants.cjs.map
|
package/dist/constants.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport const ATTRIBUTE_TRANSCRIPTION_TRACK_ID = 'lk.transcribed_track_id';\nexport const ATTRIBUTE_TRANSCRIPTION_FINAL = 'lk.transcription_final';\nexport const TOPIC_TRANSCRIPTION = 'lk.transcription';\nexport const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = 'lk.segment_id';\nexport const ATTRIBUTE_PUBLISH_ON_BEHALF = 'lk.publish_on_behalf';\nexport const TOPIC_CHAT = 'lk.chat';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AACtC,MAAM,sBAAsB;AAC5B,MAAM,qCAAqC;AAC3C,MAAM,8BAA8B;AACpC,MAAM,aAAa;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport const ATTRIBUTE_TRANSCRIPTION_TRACK_ID = 'lk.transcribed_track_id';\nexport const ATTRIBUTE_TRANSCRIPTION_FINAL = 'lk.transcription_final';\nexport const TOPIC_TRANSCRIPTION = 'lk.transcription';\nexport const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = 'lk.segment_id';\nexport const ATTRIBUTE_PUBLISH_ON_BEHALF = 'lk.publish_on_behalf';\nexport const TOPIC_CHAT = 'lk.chat';\n\nexport const ATTRIBUTE_AGENT_STATE = 'lk.agent.state';\nexport const ATTRIBUTE_AGENT_NAME = 'lk.agent.name';\n\n// TODO(eval): export const ATTRIBUTE_SIMULATOR = 'lk.simulator';\n\nexport const TOPIC_CLIENT_EVENTS = 'lk.agent.events';\nexport const RPC_GET_SESSION_STATE = 'lk.agent.get_session_state';\nexport const RPC_GET_CHAT_HISTORY = 'lk.agent.get_chat_history';\nexport const RPC_GET_AGENT_INFO = 'lk.agent.get_agent_info';\nexport const RPC_SEND_MESSAGE = 'lk.agent.send_message';\nexport const TOPIC_AGENT_REQUEST = 'lk.agent.request';\nexport const TOPIC_AGENT_RESPONSE = 'lk.agent.response';\nexport const TOPIC_SESSION_MESSAGES = 'lk.agent.session';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGO,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AACtC,MAAM,sBAAsB;AAC5B,MAAM,qCAAqC;AAC3C,MAAM,8BAA8B;AACpC,MAAM,aAAa;AAEnB,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAI7B,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAC7B,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;","names":[]}
|
package/dist/constants.d.cts
CHANGED
|
@@ -4,4 +4,14 @@ export declare const TOPIC_TRANSCRIPTION = "lk.transcription";
|
|
|
4
4
|
export declare const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = "lk.segment_id";
|
|
5
5
|
export declare const ATTRIBUTE_PUBLISH_ON_BEHALF = "lk.publish_on_behalf";
|
|
6
6
|
export declare const TOPIC_CHAT = "lk.chat";
|
|
7
|
+
export declare const ATTRIBUTE_AGENT_STATE = "lk.agent.state";
|
|
8
|
+
export declare const ATTRIBUTE_AGENT_NAME = "lk.agent.name";
|
|
9
|
+
export declare const TOPIC_CLIENT_EVENTS = "lk.agent.events";
|
|
10
|
+
export declare const RPC_GET_SESSION_STATE = "lk.agent.get_session_state";
|
|
11
|
+
export declare const RPC_GET_CHAT_HISTORY = "lk.agent.get_chat_history";
|
|
12
|
+
export declare const RPC_GET_AGENT_INFO = "lk.agent.get_agent_info";
|
|
13
|
+
export declare const RPC_SEND_MESSAGE = "lk.agent.send_message";
|
|
14
|
+
export declare const TOPIC_AGENT_REQUEST = "lk.agent.request";
|
|
15
|
+
export declare const TOPIC_AGENT_RESPONSE = "lk.agent.response";
|
|
16
|
+
export declare const TOPIC_SESSION_MESSAGES = "lk.agent.session";
|
|
7
17
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts
CHANGED
|
@@ -4,4 +4,14 @@ export declare const TOPIC_TRANSCRIPTION = "lk.transcription";
|
|
|
4
4
|
export declare const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = "lk.segment_id";
|
|
5
5
|
export declare const ATTRIBUTE_PUBLISH_ON_BEHALF = "lk.publish_on_behalf";
|
|
6
6
|
export declare const TOPIC_CHAT = "lk.chat";
|
|
7
|
+
export declare const ATTRIBUTE_AGENT_STATE = "lk.agent.state";
|
|
8
|
+
export declare const ATTRIBUTE_AGENT_NAME = "lk.agent.name";
|
|
9
|
+
export declare const TOPIC_CLIENT_EVENTS = "lk.agent.events";
|
|
10
|
+
export declare const RPC_GET_SESSION_STATE = "lk.agent.get_session_state";
|
|
11
|
+
export declare const RPC_GET_CHAT_HISTORY = "lk.agent.get_chat_history";
|
|
12
|
+
export declare const RPC_GET_AGENT_INFO = "lk.agent.get_agent_info";
|
|
13
|
+
export declare const RPC_SEND_MESSAGE = "lk.agent.send_message";
|
|
14
|
+
export declare const TOPIC_AGENT_REQUEST = "lk.agent.request";
|
|
15
|
+
export declare const TOPIC_AGENT_RESPONSE = "lk.agent.response";
|
|
16
|
+
export declare const TOPIC_SESSION_MESSAGES = "lk.agent.session";
|
|
7
17
|
//# sourceMappingURL=constants.d.ts.map
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gCAAgC,4BAA4B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AACtE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,kCAAkC,kBAAkB,CAAC;AAClE,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,UAAU,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gCAAgC,4BAA4B,CAAC;AAC1E,eAAO,MAAM,6BAA6B,2BAA2B,CAAC;AACtE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,kCAAkC,kBAAkB,CAAC;AAClE,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAClE,eAAO,MAAM,UAAU,YAAY,CAAC;AAEpC,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AACtD,eAAO,MAAM,oBAAoB,kBAAkB,CAAC;AAIpD,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AACrD,eAAO,MAAM,qBAAqB,+BAA+B,CAAC;AAClE,eAAO,MAAM,oBAAoB,8BAA8B,CAAC;AAChE,eAAO,MAAM,kBAAkB,4BAA4B,CAAC;AAC5D,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AACxD,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,oBAAoB,sBAAsB,CAAC;AACxD,eAAO,MAAM,sBAAsB,qBAAqB,CAAC"}
|
package/dist/constants.js
CHANGED
|
@@ -4,12 +4,32 @@ const TOPIC_TRANSCRIPTION = "lk.transcription";
|
|
|
4
4
|
const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = "lk.segment_id";
|
|
5
5
|
const ATTRIBUTE_PUBLISH_ON_BEHALF = "lk.publish_on_behalf";
|
|
6
6
|
const TOPIC_CHAT = "lk.chat";
|
|
7
|
+
const ATTRIBUTE_AGENT_STATE = "lk.agent.state";
|
|
8
|
+
const ATTRIBUTE_AGENT_NAME = "lk.agent.name";
|
|
9
|
+
const TOPIC_CLIENT_EVENTS = "lk.agent.events";
|
|
10
|
+
const RPC_GET_SESSION_STATE = "lk.agent.get_session_state";
|
|
11
|
+
const RPC_GET_CHAT_HISTORY = "lk.agent.get_chat_history";
|
|
12
|
+
const RPC_GET_AGENT_INFO = "lk.agent.get_agent_info";
|
|
13
|
+
const RPC_SEND_MESSAGE = "lk.agent.send_message";
|
|
14
|
+
const TOPIC_AGENT_REQUEST = "lk.agent.request";
|
|
15
|
+
const TOPIC_AGENT_RESPONSE = "lk.agent.response";
|
|
16
|
+
const TOPIC_SESSION_MESSAGES = "lk.agent.session";
|
|
7
17
|
export {
|
|
18
|
+
ATTRIBUTE_AGENT_NAME,
|
|
19
|
+
ATTRIBUTE_AGENT_STATE,
|
|
8
20
|
ATTRIBUTE_PUBLISH_ON_BEHALF,
|
|
9
21
|
ATTRIBUTE_TRANSCRIPTION_FINAL,
|
|
10
22
|
ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID,
|
|
11
23
|
ATTRIBUTE_TRANSCRIPTION_TRACK_ID,
|
|
24
|
+
RPC_GET_AGENT_INFO,
|
|
25
|
+
RPC_GET_CHAT_HISTORY,
|
|
26
|
+
RPC_GET_SESSION_STATE,
|
|
27
|
+
RPC_SEND_MESSAGE,
|
|
28
|
+
TOPIC_AGENT_REQUEST,
|
|
29
|
+
TOPIC_AGENT_RESPONSE,
|
|
12
30
|
TOPIC_CHAT,
|
|
31
|
+
TOPIC_CLIENT_EVENTS,
|
|
32
|
+
TOPIC_SESSION_MESSAGES,
|
|
13
33
|
TOPIC_TRANSCRIPTION
|
|
14
34
|
};
|
|
15
35
|
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport const ATTRIBUTE_TRANSCRIPTION_TRACK_ID = 'lk.transcribed_track_id';\nexport const ATTRIBUTE_TRANSCRIPTION_FINAL = 'lk.transcription_final';\nexport const TOPIC_TRANSCRIPTION = 'lk.transcription';\nexport const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = 'lk.segment_id';\nexport const ATTRIBUTE_PUBLISH_ON_BEHALF = 'lk.publish_on_behalf';\nexport const TOPIC_CHAT = 'lk.chat';\n"],"mappings":"AAGO,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AACtC,MAAM,sBAAsB;AAC5B,MAAM,qCAAqC;AAC3C,MAAM,8BAA8B;AACpC,MAAM,aAAa;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2024 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nexport const ATTRIBUTE_TRANSCRIPTION_TRACK_ID = 'lk.transcribed_track_id';\nexport const ATTRIBUTE_TRANSCRIPTION_FINAL = 'lk.transcription_final';\nexport const TOPIC_TRANSCRIPTION = 'lk.transcription';\nexport const ATTRIBUTE_TRANSCRIPTION_SEGMENT_ID = 'lk.segment_id';\nexport const ATTRIBUTE_PUBLISH_ON_BEHALF = 'lk.publish_on_behalf';\nexport const TOPIC_CHAT = 'lk.chat';\n\nexport const ATTRIBUTE_AGENT_STATE = 'lk.agent.state';\nexport const ATTRIBUTE_AGENT_NAME = 'lk.agent.name';\n\n// TODO(eval): export const ATTRIBUTE_SIMULATOR = 'lk.simulator';\n\nexport const TOPIC_CLIENT_EVENTS = 'lk.agent.events';\nexport const RPC_GET_SESSION_STATE = 'lk.agent.get_session_state';\nexport const RPC_GET_CHAT_HISTORY = 'lk.agent.get_chat_history';\nexport const RPC_GET_AGENT_INFO = 'lk.agent.get_agent_info';\nexport const RPC_SEND_MESSAGE = 'lk.agent.send_message';\nexport const TOPIC_AGENT_REQUEST = 'lk.agent.request';\nexport const TOPIC_AGENT_RESPONSE = 'lk.agent.response';\nexport const TOPIC_SESSION_MESSAGES = 'lk.agent.session';\n"],"mappings":"AAGO,MAAM,mCAAmC;AACzC,MAAM,gCAAgC;AACtC,MAAM,sBAAsB;AAC5B,MAAM,qCAAqC;AAC3C,MAAM,8BAA8B;AACpC,MAAM,aAAa;AAEnB,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAI7B,MAAM,sBAAsB;AAC5B,MAAM,wBAAwB;AAC9B,MAAM,uBAAuB;AAC7B,MAAM,qBAAqB;AAC3B,MAAM,mBAAmB;AACzB,MAAM,sBAAsB;AAC5B,MAAM,uBAAuB;AAC7B,MAAM,yBAAyB;","names":[]}
|
package/dist/cpu.cjs
ADDED
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
var cpu_exports = {};
|
|
30
|
+
__export(cpu_exports, {
|
|
31
|
+
CGroupV1CpuMonitor: () => CGroupV1CpuMonitor,
|
|
32
|
+
CGroupV2CpuMonitor: () => CGroupV2CpuMonitor,
|
|
33
|
+
DefaultCpuMonitor: () => DefaultCpuMonitor,
|
|
34
|
+
getCpuMonitor: () => getCpuMonitor
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(cpu_exports);
|
|
37
|
+
var import_node_fs = require("node:fs");
|
|
38
|
+
var import_node_os = __toESM(require("node:os"), 1);
|
|
39
|
+
function cpuCountFromEnv() {
|
|
40
|
+
const raw = process.env.NUM_CPUS;
|
|
41
|
+
if (raw === void 0) return void 0;
|
|
42
|
+
const parsed = parseFloat(raw);
|
|
43
|
+
if (Number.isNaN(parsed)) {
|
|
44
|
+
console.warn("Failed to parse NUM_CPUS from environment");
|
|
45
|
+
return void 0;
|
|
46
|
+
}
|
|
47
|
+
return parsed;
|
|
48
|
+
}
|
|
49
|
+
class DefaultCpuMonitor {
|
|
50
|
+
cpuCount() {
|
|
51
|
+
return cpuCountFromEnv() ?? (import_node_os.default.cpus().length || 1);
|
|
52
|
+
}
|
|
53
|
+
cpuPercent(intervalMs) {
|
|
54
|
+
return new Promise((resolve) => {
|
|
55
|
+
const cpus1 = import_node_os.default.cpus();
|
|
56
|
+
const timer = setTimeout(() => {
|
|
57
|
+
const cpus2 = import_node_os.default.cpus();
|
|
58
|
+
let idle = 0;
|
|
59
|
+
let total = 0;
|
|
60
|
+
for (let i = 0; i < cpus1.length; i++) {
|
|
61
|
+
const cpu1 = cpus1[i].times;
|
|
62
|
+
const cpu2 = cpus2[i].times;
|
|
63
|
+
idle += cpu2.idle - cpu1.idle;
|
|
64
|
+
const total1 = Object.values(cpu1).reduce((acc, v) => acc + v, 0);
|
|
65
|
+
const total2 = Object.values(cpu2).reduce((acc, v) => acc + v, 0);
|
|
66
|
+
total += total2 - total1;
|
|
67
|
+
}
|
|
68
|
+
resolve(total === 0 ? 0 : Math.max(Math.min(+(1 - idle / total).toFixed(2), 1), 0));
|
|
69
|
+
}, intervalMs);
|
|
70
|
+
timer.unref();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
class CGroupV2CpuMonitor {
|
|
75
|
+
cpuCount() {
|
|
76
|
+
const envCpus = cpuCountFromEnv();
|
|
77
|
+
if (envCpus !== void 0) return envCpus;
|
|
78
|
+
const [quota, period] = this.#readCpuMax();
|
|
79
|
+
if (quota === "max") return import_node_os.default.cpus().length || 1;
|
|
80
|
+
return parseInt(quota) / period;
|
|
81
|
+
}
|
|
82
|
+
cpuPercent(intervalMs) {
|
|
83
|
+
return new Promise((resolve, reject) => {
|
|
84
|
+
const usageStart = this.#readCpuUsage();
|
|
85
|
+
const timer = setTimeout(() => {
|
|
86
|
+
try {
|
|
87
|
+
const usageEnd = this.#readCpuUsage();
|
|
88
|
+
const usageDiffUsec = usageEnd - usageStart;
|
|
89
|
+
const usageSeconds = usageDiffUsec / 1e6;
|
|
90
|
+
const numCpus = this.cpuCount();
|
|
91
|
+
const intervalSeconds = intervalMs / 1e3;
|
|
92
|
+
const percent = usageSeconds / (intervalSeconds * numCpus);
|
|
93
|
+
resolve(Math.max(Math.min(percent, 1), 0));
|
|
94
|
+
} catch (e) {
|
|
95
|
+
reject(e);
|
|
96
|
+
}
|
|
97
|
+
}, intervalMs);
|
|
98
|
+
timer.unref();
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
#readCpuMax() {
|
|
102
|
+
try {
|
|
103
|
+
const data = (0, import_node_fs.readFileSync)("/sys/fs/cgroup/cpu.max", "utf-8").trim().split(/\s+/);
|
|
104
|
+
const quota = data[0] ?? "max";
|
|
105
|
+
const period = data[1] ? parseInt(data[1]) : 1e5;
|
|
106
|
+
return [quota, Number.isNaN(period) ? 1e5 : period];
|
|
107
|
+
} catch {
|
|
108
|
+
return ["max", 1e5];
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
#readCpuUsage() {
|
|
112
|
+
const content = (0, import_node_fs.readFileSync)("/sys/fs/cgroup/cpu.stat", "utf-8");
|
|
113
|
+
for (const line of content.split("\n")) {
|
|
114
|
+
if (line.startsWith("usage_usec")) {
|
|
115
|
+
return parseInt(line.split(/\s+/)[1]);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
throw new Error("Failed to read CPU usage from /sys/fs/cgroup/cpu.stat");
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
class CGroupV1CpuMonitor {
|
|
122
|
+
cpuCount() {
|
|
123
|
+
const envCpus = cpuCountFromEnv();
|
|
124
|
+
if (envCpus !== void 0) return envCpus;
|
|
125
|
+
const [quota, period] = this.#readCfsQuotaAndPeriod();
|
|
126
|
+
if (quota === null || quota < 0 || period === null || period <= 0) {
|
|
127
|
+
return 2;
|
|
128
|
+
}
|
|
129
|
+
return Math.max(quota / period, 1);
|
|
130
|
+
}
|
|
131
|
+
cpuPercent(intervalMs) {
|
|
132
|
+
return new Promise((resolve, reject) => {
|
|
133
|
+
const usageStart = this.#readCpuacctUsage();
|
|
134
|
+
const timer = setTimeout(() => {
|
|
135
|
+
try {
|
|
136
|
+
const usageEnd = this.#readCpuacctUsage();
|
|
137
|
+
const usageDiffNs = usageEnd - usageStart;
|
|
138
|
+
const usageSeconds = usageDiffNs / 1e9;
|
|
139
|
+
const numCpus = this.cpuCount();
|
|
140
|
+
const intervalSeconds = intervalMs / 1e3;
|
|
141
|
+
const percent = usageSeconds / (intervalSeconds * numCpus);
|
|
142
|
+
resolve(Math.max(Math.min(percent, 1), 0));
|
|
143
|
+
} catch (e) {
|
|
144
|
+
reject(e);
|
|
145
|
+
}
|
|
146
|
+
}, intervalMs);
|
|
147
|
+
timer.unref();
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
#readCfsQuotaAndPeriod() {
|
|
151
|
+
const quota = readFirstInt("/sys/fs/cgroup/cpu/cpu.cfs_quota_us");
|
|
152
|
+
const period = readFirstInt("/sys/fs/cgroup/cpu/cpu.cfs_period_us");
|
|
153
|
+
return [quota, period];
|
|
154
|
+
}
|
|
155
|
+
#readCpuacctUsage() {
|
|
156
|
+
const value = readFirstInt("/sys/fs/cgroup/cpuacct/cpuacct.usage");
|
|
157
|
+
if (value === null) {
|
|
158
|
+
throw new Error("Failed to read cpuacct.usage for cgroup v1");
|
|
159
|
+
}
|
|
160
|
+
return value;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
function readFirstInt(path) {
|
|
164
|
+
try {
|
|
165
|
+
const val = parseInt((0, import_node_fs.readFileSync)(path, "utf-8").trim());
|
|
166
|
+
return Number.isNaN(val) ? null : val;
|
|
167
|
+
} catch {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
function isCGroupV2() {
|
|
172
|
+
return (0, import_node_fs.existsSync)("/sys/fs/cgroup/cpu.stat");
|
|
173
|
+
}
|
|
174
|
+
function isCGroupV1() {
|
|
175
|
+
return (0, import_node_fs.existsSync)("/sys/fs/cgroup/cpuacct/cpuacct.usage");
|
|
176
|
+
}
|
|
177
|
+
function getCpuMonitor() {
|
|
178
|
+
if (isCGroupV2()) return new CGroupV2CpuMonitor();
|
|
179
|
+
if (isCGroupV1()) return new CGroupV1CpuMonitor();
|
|
180
|
+
return new DefaultCpuMonitor();
|
|
181
|
+
}
|
|
182
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
183
|
+
0 && (module.exports = {
|
|
184
|
+
CGroupV1CpuMonitor,
|
|
185
|
+
CGroupV2CpuMonitor,
|
|
186
|
+
DefaultCpuMonitor,
|
|
187
|
+
getCpuMonitor
|
|
188
|
+
});
|
|
189
|
+
//# sourceMappingURL=cpu.cjs.map
|
package/dist/cpu.cjs.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cpu.ts"],"sourcesContent":["// SPDX-FileCopyrightText: 2025 LiveKit, Inc.\n//\n// SPDX-License-Identifier: Apache-2.0\nimport { existsSync, readFileSync } from 'node:fs';\nimport os from 'node:os';\n\n/** @internal */\nexport interface CpuMonitor {\n cpuCount(): number;\n cpuPercent(intervalMs: number): Promise<number>;\n}\n\nfunction cpuCountFromEnv(): number | undefined {\n const raw = process.env.NUM_CPUS;\n if (raw === undefined) return undefined;\n const parsed = parseFloat(raw);\n if (Number.isNaN(parsed)) {\n console.warn('Failed to parse NUM_CPUS from environment');\n return undefined;\n }\n return parsed;\n}\n\n/** @internal */\nexport class DefaultCpuMonitor implements CpuMonitor {\n cpuCount(): number {\n return cpuCountFromEnv() ?? (os.cpus().length || 1);\n }\n\n cpuPercent(intervalMs: number): Promise<number> {\n return new Promise((resolve) => {\n const cpus1 = os.cpus();\n const timer = setTimeout(() => {\n const cpus2 = os.cpus();\n let idle = 0;\n let total = 0;\n for (let i = 0; i < cpus1.length; i++) {\n const cpu1 = cpus1[i]!.times;\n const cpu2 = cpus2[i]!.times;\n idle += cpu2.idle - cpu1.idle;\n const total1 = Object.values(cpu1).reduce((acc, v) => acc + v, 0);\n const total2 = Object.values(cpu2).reduce((acc, v) => acc + v, 0);\n total += total2 - total1;\n }\n resolve(total === 0 ? 0 : Math.max(Math.min(+(1 - idle / total).toFixed(2), 1), 0));\n }, intervalMs);\n timer.unref();\n });\n }\n}\n\n/** @internal */\nexport class CGroupV2CpuMonitor implements CpuMonitor {\n cpuCount(): number {\n const envCpus = cpuCountFromEnv();\n if (envCpus !== undefined) return envCpus;\n const [quota, period] = this.#readCpuMax();\n if (quota === 'max') return os.cpus().length || 1;\n return parseInt(quota) / period;\n }\n\n cpuPercent(intervalMs: number): Promise<number> {\n return new Promise((resolve, reject) => {\n const usageStart = this.#readCpuUsage();\n const timer = setTimeout(() => {\n try {\n const usageEnd = this.#readCpuUsage();\n const usageDiffUsec = usageEnd - usageStart;\n const usageSeconds = usageDiffUsec / 1_000_000;\n const numCpus = this.cpuCount();\n const intervalSeconds = intervalMs / 1000;\n const percent = usageSeconds / (intervalSeconds * numCpus);\n resolve(Math.max(Math.min(percent, 1), 0));\n } catch (e) {\n reject(e);\n }\n }, intervalMs);\n timer.unref();\n });\n }\n\n #readCpuMax(): [string, number] {\n try {\n const data = readFileSync('/sys/fs/cgroup/cpu.max', 'utf-8').trim().split(/\\s+/);\n const quota = data[0] ?? 'max';\n const period = data[1] ? parseInt(data[1]) : 100_000;\n return [quota, Number.isNaN(period) ? 100_000 : period];\n } catch {\n return ['max', 100_000];\n }\n }\n\n #readCpuUsage(): number {\n const content = readFileSync('/sys/fs/cgroup/cpu.stat', 'utf-8');\n for (const line of content.split('\\n')) {\n if (line.startsWith('usage_usec')) {\n return parseInt(line.split(/\\s+/)[1]!);\n }\n }\n throw new Error('Failed to read CPU usage from /sys/fs/cgroup/cpu.stat');\n }\n}\n\n/** @internal */\nexport class CGroupV1CpuMonitor implements CpuMonitor {\n cpuCount(): number {\n const envCpus = cpuCountFromEnv();\n if (envCpus !== undefined) return envCpus;\n const [quota, period] = this.#readCfsQuotaAndPeriod();\n if (quota === null || quota < 0 || period === null || period <= 0) {\n // do not use the host CPU count as it could overstate the number available to the container\n return 2.0;\n }\n return Math.max(quota / period, 1.0);\n }\n\n cpuPercent(intervalMs: number): Promise<number> {\n return new Promise((resolve, reject) => {\n const usageStart = this.#readCpuacctUsage();\n const timer = setTimeout(() => {\n try {\n const usageEnd = this.#readCpuacctUsage();\n const usageDiffNs = usageEnd - usageStart;\n const usageSeconds = usageDiffNs / 1_000_000_000;\n const numCpus = this.cpuCount();\n const intervalSeconds = intervalMs / 1000;\n const percent = usageSeconds / (intervalSeconds * numCpus);\n resolve(Math.max(Math.min(percent, 1.0), 0.0));\n } catch (e) {\n reject(e);\n }\n }, intervalMs);\n timer.unref();\n });\n }\n\n #readCfsQuotaAndPeriod(): [number | null, number | null] {\n const quota = readFirstInt('/sys/fs/cgroup/cpu/cpu.cfs_quota_us');\n const period = readFirstInt('/sys/fs/cgroup/cpu/cpu.cfs_period_us');\n return [quota, period];\n }\n\n #readCpuacctUsage(): number {\n const value = readFirstInt('/sys/fs/cgroup/cpuacct/cpuacct.usage');\n if (value === null) {\n throw new Error('Failed to read cpuacct.usage for cgroup v1');\n }\n return value;\n }\n}\n\nfunction readFirstInt(path: string): number | null {\n try {\n const val = parseInt(readFileSync(path, 'utf-8').trim());\n return Number.isNaN(val) ? null : val;\n } catch {\n return null;\n }\n}\n\nfunction isCGroupV2(): boolean {\n return existsSync('/sys/fs/cgroup/cpu.stat');\n}\n\nfunction isCGroupV1(): boolean {\n return existsSync('/sys/fs/cgroup/cpuacct/cpuacct.usage');\n}\n\nexport function getCpuMonitor(): CpuMonitor {\n if (isCGroupV2()) return new CGroupV2CpuMonitor();\n if (isCGroupV1()) return new CGroupV1CpuMonitor();\n return new DefaultCpuMonitor();\n}\n"],"mappings":"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","names":["os"]}
|