@pipedog/core 0.0.0 → 0.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.
Files changed (736) hide show
  1. package/LICENSE +25 -0
  2. package/NOTICE +9 -0
  3. package/dist/adapters/base_llm_adapter.d.ts +266 -0
  4. package/dist/adapters/base_llm_adapter.js +489 -0
  5. package/dist/adapters/index.d.ts +2 -0
  6. package/dist/adapters/index.js +8 -0
  7. package/dist/adapters/schemas/direct_function.d.ts +202 -0
  8. package/dist/adapters/schemas/direct_function.js +302 -0
  9. package/dist/adapters/schemas/function_schema.d.ts +67 -0
  10. package/dist/adapters/schemas/function_schema.js +72 -0
  11. package/dist/adapters/schemas/index.d.ts +2 -0
  12. package/dist/adapters/schemas/index.js +8 -0
  13. package/dist/adapters/schemas/tools_schema.d.ts +57 -0
  14. package/dist/adapters/schemas/tools_schema.js +79 -0
  15. package/dist/adapters/services/index.d.ts +2 -0
  16. package/dist/adapters/services/index.js +8 -0
  17. package/dist/adapters/services/open_ai_adapter.d.ts +147 -0
  18. package/dist/adapters/services/open_ai_adapter.js +250 -0
  19. package/dist/audio/dtmf/dtmf_data.d.ts +3 -0
  20. package/dist/audio/dtmf/dtmf_data.js +22 -0
  21. package/dist/audio/dtmf/index.d.ts +2 -0
  22. package/dist/audio/dtmf/index.js +8 -0
  23. package/dist/audio/dtmf/types.d.ts +31 -0
  24. package/dist/audio/dtmf/types.js +35 -0
  25. package/dist/audio/dtmf/utils.d.ts +13 -0
  26. package/dist/audio/dtmf/utils.js +62 -0
  27. package/dist/audio/filters/base_audio_filter.d.ts +51 -0
  28. package/dist/audio/filters/base_audio_filter.js +17 -0
  29. package/dist/audio/filters/index.d.ts +2 -0
  30. package/dist/audio/filters/index.js +8 -0
  31. package/dist/audio/index.d.ts +2 -0
  32. package/dist/audio/index.js +8 -0
  33. package/dist/audio/krisp_instance.d.ts +95 -0
  34. package/dist/audio/krisp_instance.js +229 -0
  35. package/dist/audio/mixers/base_audio_mixer.d.ts +56 -0
  36. package/dist/audio/mixers/base_audio_mixer.js +16 -0
  37. package/dist/audio/mixers/index.d.ts +2 -0
  38. package/dist/audio/mixers/index.js +8 -0
  39. package/dist/audio/resamplers/base_audio_resampler.d.ts +46 -0
  40. package/dist/audio/resamplers/base_audio_resampler.js +35 -0
  41. package/dist/audio/resamplers/engine.d.ts +60 -0
  42. package/dist/audio/resamplers/engine.js +89 -0
  43. package/dist/audio/resamplers/index.d.ts +2 -0
  44. package/dist/audio/resamplers/index.js +8 -0
  45. package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
  46. package/dist/audio/resamplers/resampy_resampler.js +15 -0
  47. package/dist/audio/resamplers/sinc_engine.d.ts +10 -0
  48. package/dist/audio/resamplers/sinc_engine.js +235 -0
  49. package/dist/audio/resamplers/soxr_resampler.d.ts +58 -0
  50. package/dist/audio/resamplers/soxr_resampler.js +79 -0
  51. package/dist/audio/resamplers/soxr_stream_resampler.d.ts +78 -0
  52. package/dist/audio/resamplers/soxr_stream_resampler.js +159 -0
  53. package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
  54. package/dist/audio/turn/base_turn_analyzer.js +61 -0
  55. package/dist/audio/turn/index.d.ts +2 -0
  56. package/dist/audio/turn/index.js +8 -0
  57. package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
  58. package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
  59. package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
  60. package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
  61. package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
  62. package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +151 -0
  63. package/dist/audio/utils.d.ts +224 -0
  64. package/dist/audio/utils.js +634 -0
  65. package/dist/audio/vad/data/index.d.ts +2 -0
  66. package/dist/audio/vad/data/index.js +8 -0
  67. package/dist/audio/vad/index.d.ts +2 -0
  68. package/dist/audio/vad/index.js +8 -0
  69. package/dist/audio/vad/vad_analyzer.d.ts +134 -0
  70. package/dist/audio/vad/vad_analyzer.js +249 -0
  71. package/dist/audio/vad/vad_controller.d.ts +143 -0
  72. package/dist/audio/vad/vad_controller.js +228 -0
  73. package/dist/audio/volume.d.ts +38 -0
  74. package/dist/audio/volume.js +75 -0
  75. package/dist/bus/adapters/base.d.ts +35 -0
  76. package/dist/bus/adapters/base.js +19 -0
  77. package/dist/bus/adapters/index.d.ts +10 -0
  78. package/dist/bus/adapters/index.js +15 -0
  79. package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
  80. package/dist/bus/adapters/llm_context_adapter.js +82 -0
  81. package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
  82. package/dist/bus/adapters/tools_schema_adapter.js +70 -0
  83. package/dist/bus/bridge_processor.d.ts +111 -0
  84. package/dist/bus/bridge_processor.js +166 -0
  85. package/dist/bus/bus.d.ts +110 -0
  86. package/dist/bus/bus.js +200 -0
  87. package/dist/bus/index.d.ts +22 -0
  88. package/dist/bus/index.js +27 -0
  89. package/dist/bus/local/async_queue.d.ts +12 -0
  90. package/dist/bus/local/async_queue.js +21 -0
  91. package/dist/bus/local/index.d.ts +3 -0
  92. package/dist/bus/local/index.js +8 -0
  93. package/dist/bus/messages.d.ts +378 -0
  94. package/dist/bus/messages.js +357 -0
  95. package/dist/bus/network/index.d.ts +16 -0
  96. package/dist/bus/network/index.js +21 -0
  97. package/dist/bus/queue.d.ts +27 -0
  98. package/dist/bus/queue.js +51 -0
  99. package/dist/bus/serializers/base.d.ts +25 -0
  100. package/dist/bus/serializers/base.js +14 -0
  101. package/dist/bus/serializers/index.d.ts +9 -0
  102. package/dist/bus/serializers/index.js +14 -0
  103. package/dist/bus/serializers/json.d.ts +77 -0
  104. package/dist/bus/serializers/json.js +367 -0
  105. package/dist/bus/subscriber.d.ts +46 -0
  106. package/dist/bus/subscriber.js +27 -0
  107. package/dist/bus/ui/index.d.ts +3 -0
  108. package/dist/bus/ui/index.js +8 -0
  109. package/dist/bus/ui/messages.d.ts +186 -0
  110. package/dist/bus/ui/messages.js +171 -0
  111. package/dist/classifiers/base_classifier.d.ts +263 -0
  112. package/dist/classifiers/base_classifier.js +346 -0
  113. package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
  114. package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
  115. package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
  116. package/dist/classifiers/cloudflare/clef/client.js +234 -0
  117. package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
  118. package/dist/classifiers/cloudflare/clef/index.js +8 -0
  119. package/dist/classifiers/cloudflare/index.d.ts +2 -0
  120. package/dist/classifiers/cloudflare/index.js +8 -0
  121. package/dist/classifiers/http_client.d.ts +70 -0
  122. package/dist/classifiers/http_client.js +161 -0
  123. package/dist/classifiers/index.d.ts +2 -0
  124. package/dist/classifiers/index.js +8 -0
  125. package/dist/classifiers/jev/classifier.d.ts +8 -0
  126. package/dist/classifiers/jev/classifier.js +13 -0
  127. package/dist/classifiers/jev/client.d.ts +8 -0
  128. package/dist/classifiers/jev/client.js +13 -0
  129. package/dist/classifiers/jev/index.d.ts +2 -0
  130. package/dist/classifiers/jev/index.js +8 -0
  131. package/dist/classifiers/llm/classifier.d.ts +72 -0
  132. package/dist/classifiers/llm/classifier.js +304 -0
  133. package/dist/classifiers/llm/index.d.ts +2 -0
  134. package/dist/classifiers/llm/index.js +8 -0
  135. package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
  136. package/dist/classifiers/openai/decisions/classifier.js +241 -0
  137. package/dist/classifiers/openai/decisions/client.d.ts +108 -0
  138. package/dist/classifiers/openai/decisions/client.js +234 -0
  139. package/dist/classifiers/openai/decisions/index.d.ts +2 -0
  140. package/dist/classifiers/openai/decisions/index.js +8 -0
  141. package/dist/classifiers/openai/index.d.ts +2 -0
  142. package/dist/classifiers/openai/index.js +8 -0
  143. package/dist/classifiers/typesafe/index.d.ts +2 -0
  144. package/dist/classifiers/typesafe/index.js +8 -0
  145. package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
  146. package/dist/classifiers/typesafe/jev/classifier.js +220 -0
  147. package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
  148. package/dist/classifiers/typesafe/jev/client.js +233 -0
  149. package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
  150. package/dist/classifiers/typesafe/jev/index.js +8 -0
  151. package/dist/clocks/base_clock.d.ts +13 -0
  152. package/dist/clocks/base_clock.js +14 -0
  153. package/dist/clocks/index.d.ts +2 -0
  154. package/dist/clocks/index.js +8 -0
  155. package/dist/clocks/system_clock.d.ts +15 -0
  156. package/dist/clocks/system_clock.js +25 -0
  157. package/dist/frames/frames.d.ts +2533 -0
  158. package/dist/frames/frames.js +2485 -0
  159. package/dist/frames/index.d.ts +2 -0
  160. package/dist/frames/index.js +8 -0
  161. package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
  162. package/dist/frames/protobufs/frames_pb2.js +466 -0
  163. package/dist/index.d.ts +11 -0
  164. package/dist/index.js +56 -0
  165. package/dist/metrics/index.d.ts +2 -0
  166. package/dist/metrics/index.js +8 -0
  167. package/dist/metrics/metrics.d.ts +276 -0
  168. package/dist/metrics/metrics.js +254 -0
  169. package/dist/observers/base_observer.d.ts +173 -0
  170. package/dist/observers/base_observer.js +151 -0
  171. package/dist/observers/error_observer.d.ts +75 -0
  172. package/dist/observers/error_observer.js +87 -0
  173. package/dist/observers/function_call_observer.d.ts +157 -0
  174. package/dist/observers/function_call_observer.js +222 -0
  175. package/dist/observers/index.d.ts +2 -0
  176. package/dist/observers/index.js +8 -0
  177. package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
  178. package/dist/observers/loggers/debug_log_observer.js +228 -0
  179. package/dist/observers/loggers/index.d.ts +2 -0
  180. package/dist/observers/loggers/index.js +8 -0
  181. package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
  182. package/dist/observers/loggers/llm_log_observer.js +110 -0
  183. package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
  184. package/dist/observers/loggers/metrics_log_observer.js +186 -0
  185. package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
  186. package/dist/observers/loggers/transcription_log_observer.js +74 -0
  187. package/dist/observers/service_metrics_observer.d.ts +168 -0
  188. package/dist/observers/service_metrics_observer.js +236 -0
  189. package/dist/observers/speaking_observer.d.ts +104 -0
  190. package/dist/observers/speaking_observer.js +150 -0
  191. package/dist/observers/startup_timing_observer.d.ts +221 -0
  192. package/dist/observers/startup_timing_observer.js +365 -0
  193. package/dist/observers/turn_tracking_observer.d.ts +78 -0
  194. package/dist/observers/turn_tracking_observer.js +189 -0
  195. package/dist/observers/user_bot_latency_observer.d.ts +411 -0
  196. package/dist/observers/user_bot_latency_observer.js +974 -0
  197. package/dist/pipeline/base_pipeline.d.ts +49 -0
  198. package/dist/pipeline/base_pipeline.js +101 -0
  199. package/dist/pipeline/capabilities.d.ts +76 -0
  200. package/dist/pipeline/capabilities.js +97 -0
  201. package/dist/pipeline/index.d.ts +2 -0
  202. package/dist/pipeline/index.js +8 -0
  203. package/dist/pipeline/job_context.d.ts +317 -0
  204. package/dist/pipeline/job_context.js +450 -0
  205. package/dist/pipeline/job_decorator.d.ts +54 -0
  206. package/dist/pipeline/job_decorator.js +92 -0
  207. package/dist/pipeline/llm_switcher.d.ts +84 -0
  208. package/dist/pipeline/llm_switcher.js +107 -0
  209. package/dist/pipeline/llm_with_backend.d.ts +435 -0
  210. package/dist/pipeline/llm_with_backend.js +806 -0
  211. package/dist/pipeline/parallel_pipeline.d.ts +83 -0
  212. package/dist/pipeline/parallel_pipeline.js +200 -0
  213. package/dist/pipeline/pipeline.d.ts +126 -0
  214. package/dist/pipeline/pipeline.js +196 -0
  215. package/dist/pipeline/service_switcher.d.ts +287 -0
  216. package/dist/pipeline/service_switcher.js +509 -0
  217. package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
  218. package/dist/pipeline/sync_parallel_pipeline.js +387 -0
  219. package/dist/pipeline/worker.d.ts +821 -0
  220. package/dist/pipeline/worker.js +1656 -0
  221. package/dist/pipeline/worker_observer.d.ts +131 -0
  222. package/dist/pipeline/worker_observer.js +274 -0
  223. package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
  224. package/dist/pipeline/worker_ready_decorator.js +76 -0
  225. package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
  226. package/dist/processors/aggregators/async_tool_messages.js +291 -0
  227. package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
  228. package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
  229. package/dist/processors/aggregators/gated.d.ts +43 -0
  230. package/dist/processors/aggregators/gated.js +86 -0
  231. package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
  232. package/dist/processors/aggregators/gated_llm_context.js +86 -0
  233. package/dist/processors/aggregators/index.d.ts +2 -0
  234. package/dist/processors/aggregators/index.js +8 -0
  235. package/dist/processors/aggregators/llm_context.d.ts +370 -0
  236. package/dist/processors/aggregators/llm_context.js +580 -0
  237. package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
  238. package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
  239. package/dist/processors/aggregators/llm_response.d.ts +37 -0
  240. package/dist/processors/aggregators/llm_response.js +71 -0
  241. package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
  242. package/dist/processors/aggregators/llm_response_universal.js +2394 -0
  243. package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
  244. package/dist/processors/aggregators/llm_text_processor.js +102 -0
  245. package/dist/processors/aggregators/sentence.d.ts +39 -0
  246. package/dist/processors/aggregators/sentence.js +69 -0
  247. package/dist/processors/async_generator.d.ts +42 -0
  248. package/dist/processors/async_generator.js +76 -0
  249. package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
  250. package/dist/processors/audio/audio_buffer_processor.js +565 -0
  251. package/dist/processors/audio/index.d.ts +2 -0
  252. package/dist/processors/audio/index.js +8 -0
  253. package/dist/processors/audio/vad_processor.d.ts +67 -0
  254. package/dist/processors/audio/vad_processor.js +103 -0
  255. package/dist/processors/consumer_processor.d.ts +49 -0
  256. package/dist/processors/consumer_processor.js +85 -0
  257. package/dist/processors/filters/frame_filter.d.ts +39 -0
  258. package/dist/processors/filters/frame_filter.js +52 -0
  259. package/dist/processors/filters/function_filter.d.ts +59 -0
  260. package/dist/processors/filters/function_filter.js +78 -0
  261. package/dist/processors/filters/identity_filter.d.ts +33 -0
  262. package/dist/processors/filters/identity_filter.js +37 -0
  263. package/dist/processors/filters/index.d.ts +2 -0
  264. package/dist/processors/filters/index.js +8 -0
  265. package/dist/processors/filters/null_filter.d.ts +34 -0
  266. package/dist/processors/filters/null_filter.js +47 -0
  267. package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
  268. package/dist/processors/filters/wake_notifier_filter.js +49 -0
  269. package/dist/processors/frame_processor.d.ts +360 -0
  270. package/dist/processors/frame_processor.js +932 -0
  271. package/dist/processors/frameworks/index.d.ts +2 -0
  272. package/dist/processors/frameworks/index.js +8 -0
  273. package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
  274. package/dist/processors/frameworks/rtvi/frames.js +259 -0
  275. package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
  276. package/dist/processors/frameworks/rtvi/index.js +11 -0
  277. package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
  278. package/dist/processors/frameworks/rtvi/models.js +1807 -0
  279. package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
  280. package/dist/processors/frameworks/rtvi/observer.js +1113 -0
  281. package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
  282. package/dist/processors/frameworks/rtvi/processor.js +676 -0
  283. package/dist/processors/idle_frame_processor.d.ts +44 -0
  284. package/dist/processors/idle_frame_processor.js +86 -0
  285. package/dist/processors/index.d.ts +2 -0
  286. package/dist/processors/index.js +8 -0
  287. package/dist/processors/logger.d.ts +42 -0
  288. package/dist/processors/logger.js +87 -0
  289. package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
  290. package/dist/processors/metrics/frame_processor_metrics.js +372 -0
  291. package/dist/processors/metrics/index.d.ts +2 -0
  292. package/dist/processors/metrics/index.js +8 -0
  293. package/dist/processors/producer_processor.d.ts +68 -0
  294. package/dist/processors/producer_processor.js +78 -0
  295. package/dist/processors/text_transformer.d.ts +30 -0
  296. package/dist/processors/text_transformer.js +48 -0
  297. package/dist/registry/index.d.ts +3 -0
  298. package/dist/registry/index.js +8 -0
  299. package/dist/registry/registry.d.ts +69 -0
  300. package/dist/registry/registry.js +149 -0
  301. package/dist/registry/types.d.ts +47 -0
  302. package/dist/registry/types.js +39 -0
  303. package/dist/serializers/base_serializer.d.ts +94 -0
  304. package/dist/serializers/base_serializer.js +82 -0
  305. package/dist/serializers/index.d.ts +2 -0
  306. package/dist/serializers/index.js +8 -0
  307. package/dist/services/ai_service.d.ts +145 -0
  308. package/dist/services/ai_service.js +262 -0
  309. package/dist/services/anthropic/index.d.ts +2 -0
  310. package/dist/services/anthropic/index.js +7 -0
  311. package/dist/services/assemblyai/index.d.ts +2 -0
  312. package/dist/services/assemblyai/index.js +7 -0
  313. package/dist/services/asyncai/index.d.ts +2 -0
  314. package/dist/services/asyncai/index.js +7 -0
  315. package/dist/services/aws/index.d.ts +2 -0
  316. package/dist/services/aws/index.js +7 -0
  317. package/dist/services/azure/index.d.ts +2 -0
  318. package/dist/services/azure/index.js +7 -0
  319. package/dist/services/baseten/index.d.ts +2 -0
  320. package/dist/services/baseten/index.js +7 -0
  321. package/dist/services/bland/index.d.ts +2 -0
  322. package/dist/services/bland/index.js +7 -0
  323. package/dist/services/camb/index.d.ts +2 -0
  324. package/dist/services/camb/index.js +7 -0
  325. package/dist/services/cartesia/index.d.ts +2 -0
  326. package/dist/services/cartesia/index.js +7 -0
  327. package/dist/services/cerebras/index.d.ts +2 -0
  328. package/dist/services/cerebras/index.js +7 -0
  329. package/dist/services/crusoe/index.d.ts +2 -0
  330. package/dist/services/crusoe/index.js +7 -0
  331. package/dist/services/deepgram/index.d.ts +2 -0
  332. package/dist/services/deepgram/index.js +7 -0
  333. package/dist/services/deepseek/index.d.ts +2 -0
  334. package/dist/services/deepseek/index.js +7 -0
  335. package/dist/services/elevenlabs/index.d.ts +2 -0
  336. package/dist/services/elevenlabs/index.js +7 -0
  337. package/dist/services/fal/index.d.ts +2 -0
  338. package/dist/services/fal/index.js +7 -0
  339. package/dist/services/fireworks/index.d.ts +2 -0
  340. package/dist/services/fireworks/index.js +7 -0
  341. package/dist/services/fish/index.d.ts +2 -0
  342. package/dist/services/fish/index.js +7 -0
  343. package/dist/services/funasr/index.d.ts +3 -0
  344. package/dist/services/funasr/index.js +8 -0
  345. package/dist/services/gladia/index.d.ts +2 -0
  346. package/dist/services/gladia/index.js +7 -0
  347. package/dist/services/google/index.d.ts +2 -0
  348. package/dist/services/google/index.js +7 -0
  349. package/dist/services/gradium/index.d.ts +2 -0
  350. package/dist/services/gradium/index.js +7 -0
  351. package/dist/services/grok/index.d.ts +2 -0
  352. package/dist/services/grok/index.js +7 -0
  353. package/dist/services/groq/index.d.ts +2 -0
  354. package/dist/services/groq/index.js +7 -0
  355. package/dist/services/heygen/index.d.ts +2 -0
  356. package/dist/services/heygen/index.js +7 -0
  357. package/dist/services/hume/index.d.ts +2 -0
  358. package/dist/services/hume/index.js +7 -0
  359. package/dist/services/image_service.d.ts +52 -0
  360. package/dist/services/image_service.js +60 -0
  361. package/dist/services/inception/index.d.ts +2 -0
  362. package/dist/services/inception/index.js +7 -0
  363. package/dist/services/index.d.ts +2 -0
  364. package/dist/services/index.js +8 -0
  365. package/dist/services/inworld/index.d.ts +2 -0
  366. package/dist/services/inworld/index.js +7 -0
  367. package/dist/services/keenable/index.d.ts +2 -0
  368. package/dist/services/keenable/index.js +7 -0
  369. package/dist/services/kokoro/index.d.ts +2 -0
  370. package/dist/services/kokoro/index.js +7 -0
  371. package/dist/services/llm_service.d.ts +1106 -0
  372. package/dist/services/llm_service.js +2231 -0
  373. package/dist/services/mem0/index.d.ts +2 -0
  374. package/dist/services/mem0/index.js +7 -0
  375. package/dist/services/meta/index.d.ts +2 -0
  376. package/dist/services/meta/index.js +7 -0
  377. package/dist/services/minimax/index.d.ts +2 -0
  378. package/dist/services/minimax/index.js +7 -0
  379. package/dist/services/mistral/index.d.ts +2 -0
  380. package/dist/services/mistral/index.js +7 -0
  381. package/dist/services/moondream/index.d.ts +2 -0
  382. package/dist/services/moondream/index.js +7 -0
  383. package/dist/services/moonshine/index.d.ts +2 -0
  384. package/dist/services/moonshine/index.js +7 -0
  385. package/dist/services/nebius/index.d.ts +2 -0
  386. package/dist/services/nebius/index.js +7 -0
  387. package/dist/services/neuphonic/index.d.ts +2 -0
  388. package/dist/services/neuphonic/index.js +7 -0
  389. package/dist/services/novita/index.d.ts +2 -0
  390. package/dist/services/novita/index.js +7 -0
  391. package/dist/services/nvidia/index.d.ts +2 -0
  392. package/dist/services/nvidia/index.js +11 -0
  393. package/dist/services/ollama/index.d.ts +2 -0
  394. package/dist/services/ollama/index.js +7 -0
  395. package/dist/services/openai/index.d.ts +2 -0
  396. package/dist/services/openai/index.js +7 -0
  397. package/dist/services/openclaw/index.d.ts +14 -0
  398. package/dist/services/openclaw/index.js +19 -0
  399. package/dist/services/openrouter/index.d.ts +2 -0
  400. package/dist/services/openrouter/index.js +7 -0
  401. package/dist/services/perplexity/index.d.ts +2 -0
  402. package/dist/services/perplexity/index.js +7 -0
  403. package/dist/services/piper/index.d.ts +2 -0
  404. package/dist/services/piper/index.js +7 -0
  405. package/dist/services/pocket_tts/index.d.ts +2 -0
  406. package/dist/services/pocket_tts/index.js +7 -0
  407. package/dist/services/qwen/index.d.ts +2 -0
  408. package/dist/services/qwen/index.js +7 -0
  409. package/dist/services/resembleai/index.d.ts +2 -0
  410. package/dist/services/resembleai/index.js +7 -0
  411. package/dist/services/rime/index.d.ts +2 -0
  412. package/dist/services/rime/index.js +7 -0
  413. package/dist/services/sambanova/index.d.ts +2 -0
  414. package/dist/services/sambanova/index.js +7 -0
  415. package/dist/services/sarvam/index.d.ts +2 -0
  416. package/dist/services/sarvam/index.js +7 -0
  417. package/dist/services/settings.d.ts +356 -0
  418. package/dist/services/settings.js +437 -0
  419. package/dist/services/simli/index.d.ts +2 -0
  420. package/dist/services/simli/index.js +7 -0
  421. package/dist/services/smallest/index.d.ts +2 -0
  422. package/dist/services/smallest/index.js +7 -0
  423. package/dist/services/soniox/index.d.ts +2 -0
  424. package/dist/services/soniox/index.js +7 -0
  425. package/dist/services/speechify/index.d.ts +2 -0
  426. package/dist/services/speechify/index.js +7 -0
  427. package/dist/services/speechmatics/index.d.ts +2 -0
  428. package/dist/services/speechmatics/index.js +7 -0
  429. package/dist/services/stt_latency.d.ts +62 -0
  430. package/dist/services/stt_latency.js +71 -0
  431. package/dist/services/stt_service.d.ts +601 -0
  432. package/dist/services/stt_service.js +1044 -0
  433. package/dist/services/tavus/index.d.ts +2 -0
  434. package/dist/services/tavus/index.js +7 -0
  435. package/dist/services/together/index.d.ts +2 -0
  436. package/dist/services/together/index.js +7 -0
  437. package/dist/services/tts_service.d.ts +909 -0
  438. package/dist/services/tts_service.js +2018 -0
  439. package/dist/services/ultravox/index.d.ts +2 -0
  440. package/dist/services/ultravox/index.js +9 -0
  441. package/dist/services/vision_service.d.ts +56 -0
  442. package/dist/services/vision_service.js +62 -0
  443. package/dist/services/websocket_service.d.ts +213 -0
  444. package/dist/services/websocket_service.js +654 -0
  445. package/dist/services/whisper/index.d.ts +2 -0
  446. package/dist/services/whisper/index.js +9 -0
  447. package/dist/services/xai/index.d.ts +2 -0
  448. package/dist/services/xai/index.js +9 -0
  449. package/dist/services/xtts/index.d.ts +2 -0
  450. package/dist/services/xtts/index.js +9 -0
  451. package/dist/tests/index.d.ts +2 -0
  452. package/dist/tests/index.js +8 -0
  453. package/dist/tests/utils.d.ts +123 -0
  454. package/dist/tests/utils.js +212 -0
  455. package/dist/transcriptions/index.d.ts +2 -0
  456. package/dist/transcriptions/index.js +8 -0
  457. package/dist/transcriptions/language.d.ts +376 -0
  458. package/dist/transcriptions/language.js +543 -0
  459. package/dist/transports/base_input.d.ts +149 -0
  460. package/dist/transports/base_input.js +338 -0
  461. package/dist/transports/base_output.d.ts +432 -0
  462. package/dist/transports/base_output.js +1231 -0
  463. package/dist/transports/base_transport.d.ts +223 -0
  464. package/dist/transports/base_transport.js +167 -0
  465. package/dist/transports/daily/index.d.ts +2 -0
  466. package/dist/transports/daily/index.js +9 -0
  467. package/dist/transports/heygen/index.d.ts +2 -0
  468. package/dist/transports/heygen/index.js +9 -0
  469. package/dist/transports/index.d.ts +2 -0
  470. package/dist/transports/index.js +8 -0
  471. package/dist/transports/lemonslice/index.d.ts +2 -0
  472. package/dist/transports/lemonslice/index.js +9 -0
  473. package/dist/transports/livekit/index.d.ts +2 -0
  474. package/dist/transports/livekit/index.js +9 -0
  475. package/dist/transports/local/index.d.ts +2 -0
  476. package/dist/transports/local/index.js +9 -0
  477. package/dist/transports/moq/index.d.ts +2 -0
  478. package/dist/transports/moq/index.js +9 -0
  479. package/dist/transports/smallwebrtc/index.d.ts +2 -0
  480. package/dist/transports/smallwebrtc/index.js +9 -0
  481. package/dist/transports/tavus/index.d.ts +2 -0
  482. package/dist/transports/tavus/index.js +9 -0
  483. package/dist/transports/video_in_sampler.d.ts +157 -0
  484. package/dist/transports/video_in_sampler.js +258 -0
  485. package/dist/transports/vonage/index.d.ts +2 -0
  486. package/dist/transports/vonage/index.js +9 -0
  487. package/dist/transports/websocket/index.d.ts +2 -0
  488. package/dist/transports/websocket/index.js +9 -0
  489. package/dist/transports/whatsapp/index.d.ts +2 -0
  490. package/dist/transports/whatsapp/index.js +9 -0
  491. package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
  492. package/dist/turns/eager_end_of_turn_mixin.js +122 -0
  493. package/dist/turns/empty_user_turn.d.ts +55 -0
  494. package/dist/turns/empty_user_turn.js +53 -0
  495. package/dist/turns/index.d.ts +2 -0
  496. package/dist/turns/index.js +8 -0
  497. package/dist/turns/speculation_gate.d.ts +169 -0
  498. package/dist/turns/speculation_gate.js +294 -0
  499. package/dist/turns/types.d.ts +33 -0
  500. package/dist/turns/types.js +35 -0
  501. package/dist/turns/user_idle_controller.d.ts +94 -0
  502. package/dist/turns/user_idle_controller.js +187 -0
  503. package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
  504. package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
  505. package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
  506. package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
  507. package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
  508. package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
  509. package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
  510. package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
  511. package/dist/turns/user_mute/index.d.ts +6 -0
  512. package/dist/turns/user_mute/index.js +11 -0
  513. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
  514. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
  515. package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
  516. package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
  517. package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
  518. package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
  519. package/dist/turns/user_start/index.d.ts +8 -0
  520. package/dist/turns/user_start/index.js +16 -0
  521. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
  522. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
  523. package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
  524. package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
  525. package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
  526. package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
  527. package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
  528. package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
  529. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
  530. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
  531. package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
  532. package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
  533. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
  534. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
  535. package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
  536. package/dist/turns/user_stop/eager_match_policy.js +50 -0
  537. package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
  538. package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
  539. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
  540. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
  541. package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
  542. package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
  543. package/dist/turns/user_stop/index.d.ts +10 -0
  544. package/dist/turns/user_stop/index.js +15 -0
  545. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
  546. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
  547. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
  548. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
  549. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
  550. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
  551. package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
  552. package/dist/turns/user_turn_completion_mixin.js +591 -0
  553. package/dist/turns/user_turn_controller.d.ts +134 -0
  554. package/dist/turns/user_turn_controller.js +335 -0
  555. package/dist/turns/user_turn_processor.d.ts +87 -0
  556. package/dist/turns/user_turn_processor.js +180 -0
  557. package/dist/turns/user_turn_strategies.d.ts +187 -0
  558. package/dist/turns/user_turn_strategies.js +222 -0
  559. package/dist/utils/async_tool_cancellation.d.ts +35 -0
  560. package/dist/utils/async_tool_cancellation.js +78 -0
  561. package/dist/utils/asyncio/index.d.ts +2 -0
  562. package/dist/utils/asyncio/index.js +7 -0
  563. package/dist/utils/asyncio/task_manager.d.ts +49 -0
  564. package/dist/utils/asyncio/task_manager.js +105 -0
  565. package/dist/utils/base_object.d.ts +76 -0
  566. package/dist/utils/base_object.js +154 -0
  567. package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
  568. package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
  569. package/dist/utils/context/audio_context_manager.d.ts +131 -0
  570. package/dist/utils/context/audio_context_manager.js +233 -0
  571. package/dist/utils/context/index.d.ts +2 -0
  572. package/dist/utils/context/index.js +7 -0
  573. package/dist/utils/context/llm_context_summarization.d.ts +258 -0
  574. package/dist/utils/context/llm_context_summarization.js +511 -0
  575. package/dist/utils/context/text_segment_map.d.ts +611 -0
  576. package/dist/utils/context/text_segment_map.js +1132 -0
  577. package/dist/utils/context/word_completion_tracker.d.ts +273 -0
  578. package/dist/utils/context/word_completion_tracker.js +441 -0
  579. package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
  580. package/dist/utils/context/word_timestamp_tracker.js +98 -0
  581. package/dist/utils/deprecation.d.ts +28 -0
  582. package/dist/utils/deprecation.js +75 -0
  583. package/dist/utils/env.d.ts +38 -0
  584. package/dist/utils/env.js +62 -0
  585. package/dist/utils/errors.d.ts +75 -0
  586. package/dist/utils/errors.js +202 -0
  587. package/dist/utils/file_resolver.d.ts +126 -0
  588. package/dist/utils/file_resolver.js +314 -0
  589. package/dist/utils/file_storage.d.ts +115 -0
  590. package/dist/utils/file_storage.js +178 -0
  591. package/dist/utils/frame_queue.d.ts +36 -0
  592. package/dist/utils/frame_queue.js +66 -0
  593. package/dist/utils/http.d.ts +39 -0
  594. package/dist/utils/http.js +53 -0
  595. package/dist/utils/image.d.ts +14 -0
  596. package/dist/utils/image.js +63 -0
  597. package/dist/utils/index.d.ts +2 -0
  598. package/dist/utils/index.js +8 -0
  599. package/dist/utils/jpeg_encoder.d.ts +14 -0
  600. package/dist/utils/jpeg_encoder.js +315 -0
  601. package/dist/utils/log_config.d.ts +34 -0
  602. package/dist/utils/log_config.js +76 -0
  603. package/dist/utils/logger.d.ts +40 -0
  604. package/dist/utils/logger.js +91 -0
  605. package/dist/utils/mixin.d.ts +14 -0
  606. package/dist/utils/mixin.js +63 -0
  607. package/dist/utils/network.d.ts +73 -0
  608. package/dist/utils/network.js +90 -0
  609. package/dist/utils/security/allowed_origins.d.ts +16 -0
  610. package/dist/utils/security/allowed_origins.js +34 -0
  611. package/dist/utils/security/index.d.ts +2 -0
  612. package/dist/utils/security/index.js +7 -0
  613. package/dist/utils/security/redaction.d.ts +27 -0
  614. package/dist/utils/security/redaction.js +123 -0
  615. package/dist/utils/security/ssrf.d.ts +79 -0
  616. package/dist/utils/security/ssrf.js +327 -0
  617. package/dist/utils/shared.d.ts +35 -0
  618. package/dist/utils/shared.js +136 -0
  619. package/dist/utils/startup.d.ts +17 -0
  620. package/dist/utils/startup.js +130 -0
  621. package/dist/utils/string.d.ts +116 -0
  622. package/dist/utils/string.js +460 -0
  623. package/dist/utils/sync/base_notifier.d.ts +25 -0
  624. package/dist/utils/sync/base_notifier.js +16 -0
  625. package/dist/utils/sync/event_notifier.d.ts +38 -0
  626. package/dist/utils/sync/event_notifier.js +51 -0
  627. package/dist/utils/sync/index.d.ts +2 -0
  628. package/dist/utils/sync/index.js +7 -0
  629. package/dist/utils/text/alnum_utils.d.ts +109 -0
  630. package/dist/utils/text/alnum_utils.js +262 -0
  631. package/dist/utils/text/base_text_aggregator.d.ts +146 -0
  632. package/dist/utils/text/base_text_aggregator.js +102 -0
  633. package/dist/utils/text/base_text_filter.d.ts +54 -0
  634. package/dist/utils/text/base_text_filter.js +50 -0
  635. package/dist/utils/text/index.d.ts +2 -0
  636. package/dist/utils/text/index.js +7 -0
  637. package/dist/utils/text/markdown_text_filter.d.ts +147 -0
  638. package/dist/utils/text/markdown_text_filter.js +522 -0
  639. package/dist/utils/text/markup_utils.d.ts +54 -0
  640. package/dist/utils/text/markup_utils.js +156 -0
  641. package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
  642. package/dist/utils/text/pattern_pair_aggregator.js +478 -0
  643. package/dist/utils/text/phonemes.d.ts +60 -0
  644. package/dist/utils/text/phonemes.js +172 -0
  645. package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
  646. package/dist/utils/text/simple_text_aggregator.js +254 -0
  647. package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
  648. package/dist/utils/text/skip_tags_aggregator.js +147 -0
  649. package/dist/utils/text/transforms/acronyms.d.ts +21 -0
  650. package/dist/utils/text/transforms/acronyms.js +31 -0
  651. package/dist/utils/text/transforms/currency.d.ts +16 -0
  652. package/dist/utils/text/transforms/currency.js +56 -0
  653. package/dist/utils/text/transforms/dates.d.ts +18 -0
  654. package/dist/utils/text/transforms/dates.js +102 -0
  655. package/dist/utils/text/transforms/email.d.ts +17 -0
  656. package/dist/utils/text/transforms/email.js +35 -0
  657. package/dist/utils/text/transforms/index.d.ts +37 -0
  658. package/dist/utils/text/transforms/index.js +42 -0
  659. package/dist/utils/text/transforms/numbers.d.ts +25 -0
  660. package/dist/utils/text/transforms/numbers.js +59 -0
  661. package/dist/utils/text/transforms/percentages.d.ts +16 -0
  662. package/dist/utils/text/transforms/percentages.js +32 -0
  663. package/dist/utils/text/transforms/phone.d.ts +21 -0
  664. package/dist/utils/text/transforms/phone.js +39 -0
  665. package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
  666. package/dist/utils/text/transforms/pronunciations.js +112 -0
  667. package/dist/utils/text/transforms/replacements.d.ts +39 -0
  668. package/dist/utils/text/transforms/replacements.js +46 -0
  669. package/dist/utils/text/transforms/strip_markdown.d.ts +25 -0
  670. package/dist/utils/text/transforms/strip_markdown.js +60 -0
  671. package/dist/utils/text/transforms/units.d.ts +22 -0
  672. package/dist/utils/text/transforms/units.js +81 -0
  673. package/dist/utils/text/transforms/voice_formatter.d.ts +86 -0
  674. package/dist/utils/text/transforms/voice_formatter.js +98 -0
  675. package/dist/utils/text/unicode_digits.d.ts +3 -0
  676. package/dist/utils/text/unicode_digits.js +34 -0
  677. package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
  678. package/dist/utils/text/word_timestamp_utils.js +52 -0
  679. package/dist/utils/time.d.ts +13 -0
  680. package/dist/utils/time.js +31 -0
  681. package/dist/utils/tracing/index.d.ts +3 -0
  682. package/dist/utils/tracing/index.js +8 -0
  683. package/dist/utils/tracing/service_attributes.d.ts +198 -0
  684. package/dist/utils/tracing/service_attributes.js +434 -0
  685. package/dist/utils/tracing/service_decorators.d.ts +214 -0
  686. package/dist/utils/tracing/service_decorators.js +1662 -0
  687. package/dist/utils/tracing/setup.d.ts +107 -0
  688. package/dist/utils/tracing/setup.js +160 -0
  689. package/dist/utils/tracing/tracing_context.d.ts +55 -0
  690. package/dist/utils/tracing/tracing_context.js +97 -0
  691. package/dist/utils/tracing/turn_trace_observer.d.ts +95 -0
  692. package/dist/utils/tracing/turn_trace_observer.js +233 -0
  693. package/dist/utils/types.d.ts +80 -0
  694. package/dist/utils/types.js +108 -0
  695. package/dist/utils/utils.d.ts +5 -0
  696. package/dist/utils/utils.js +22 -0
  697. package/dist/utils/yaml.d.ts +179 -0
  698. package/dist/utils/yaml.js +556 -0
  699. package/dist/version.d.ts +3 -0
  700. package/dist/version.js +7 -0
  701. package/dist/workers/base_worker.d.ts +772 -0
  702. package/dist/workers/base_worker.js +1298 -0
  703. package/dist/workers/index.d.ts +2 -0
  704. package/dist/workers/index.js +8 -0
  705. package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
  706. package/dist/workers/llm/backend_llm_worker.js +1055 -0
  707. package/dist/workers/llm/index.d.ts +6 -0
  708. package/dist/workers/llm/index.js +11 -0
  709. package/dist/workers/llm/llm_context_worker.d.ts +66 -0
  710. package/dist/workers/llm/llm_context_worker.js +72 -0
  711. package/dist/workers/llm/llm_worker.d.ts +180 -0
  712. package/dist/workers/llm/llm_worker.js +323 -0
  713. package/dist/workers/llm/tool_decorator.d.ts +68 -0
  714. package/dist/workers/llm/tool_decorator.js +60 -0
  715. package/dist/workers/proxy/index.d.ts +3 -0
  716. package/dist/workers/proxy/index.js +9 -0
  717. package/dist/workers/proxy/websocket/client.d.ts +110 -0
  718. package/dist/workers/proxy/websocket/client.js +196 -0
  719. package/dist/workers/proxy/websocket/index.d.ts +3 -0
  720. package/dist/workers/proxy/websocket/index.js +10 -0
  721. package/dist/workers/runner.d.ts +268 -0
  722. package/dist/workers/runner.js +489 -0
  723. package/dist/workers/ui/index.d.ts +22 -0
  724. package/dist/workers/ui/index.js +27 -0
  725. package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
  726. package/dist/workers/ui/ui_event_decorator.js +75 -0
  727. package/dist/workers/ui/ui_job_context.d.ts +12 -0
  728. package/dist/workers/ui/ui_job_context.js +17 -0
  729. package/dist/workers/ui/ui_prompts.d.ts +21 -0
  730. package/dist/workers/ui/ui_prompts.js +41 -0
  731. package/dist/workers/ui/ui_tools.d.ts +32 -0
  732. package/dist/workers/ui/ui_tools.js +112 -0
  733. package/dist/workers/ui/ui_worker.d.ts +571 -0
  734. package/dist/workers/ui/ui_worker.js +1156 -0
  735. package/package.json +61 -3
  736. package/README.md +0 -5
@@ -0,0 +1,450 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/pipeline/job_context.py
6
+ /**
7
+ * Worker group types for structured concurrent worker execution.
8
+ *
9
+ * Porting notes:
10
+ * - `async with ctx:` becomes `await ctx.run(async (ctx) => { ... })`, or the
11
+ * explicit `await ctx.enter()` / `await ctx.exit(error)` pair.
12
+ * - `async for event in ctx` is `for await (const event of ctx)`.
13
+ * - The deprecated `resolve_job_params()` (and the per-argument job spelling
14
+ * it absorbs) is not ported.
15
+ */
16
+ import { Event, Queue, shield } from "@pipedog/asyncio";
17
+ /**
18
+ * Configuration for a job sent to a single worker.
19
+ *
20
+ * - `name`: optional job name, routing the request to the matching
21
+ * `job({ name })` handler on the worker.
22
+ * - `payload`: optional structured data describing the work.
23
+ * - `timeout`: optional timeout in seconds, covering both the wait for the
24
+ * worker to become ready and the job itself.
25
+ * - `label`: optional human-readable description of the work, e.g.
26
+ * `"Research: Radiohead"`. A `UIWorker` titles the client's progress card
27
+ * with it.
28
+ * - `cancellable`: whether an external requester, such as the client UI, may
29
+ * ask for the job to be cancelled. Cancellation the worker initiates itself
30
+ * (shutdown, timeout, `cancelOnError`) proceeds either way.
31
+ */
32
+ export class JobParams {
33
+ name;
34
+ payload;
35
+ timeout;
36
+ label;
37
+ cancellable;
38
+ constructor(options = {}) {
39
+ this.name = options.name ?? null;
40
+ this.payload = options.payload ?? null;
41
+ this.timeout = options.timeout ?? null;
42
+ this.label = options.label ?? null;
43
+ this.cancellable = options.cancellable ?? true;
44
+ }
45
+ }
46
+ /**
47
+ * Configuration for a job sent to several workers at once.
48
+ *
49
+ * Carries every `JobParams` field, which apply to the group as a whole, plus
50
+ * how the group reacts to one of its workers failing.
51
+ *
52
+ * - `cancelOnError`: whether a worker responding with an error status cancels
53
+ * the rest of the group.
54
+ */
55
+ export class JobGroupParams extends JobParams {
56
+ cancelOnError;
57
+ constructor(options = {}) {
58
+ super(options);
59
+ this.cancelOnError = options.cancelOnError ?? true;
60
+ }
61
+ }
62
+ /**
63
+ * Status of a completed worker.
64
+ *
65
+ * String values, so they compare naturally with plain strings and serialize
66
+ * without extra handling.
67
+ *
68
+ * - `COMPLETED`: the worker finished successfully.
69
+ * - `CANCELLED`: the worker was cancelled by the requester.
70
+ * - `FAILED`: the worker failed due to a logical or business error.
71
+ * - `ERROR`: the worker encountered an unexpected runtime error.
72
+ */
73
+ export const JobStatus = {
74
+ COMPLETED: "completed",
75
+ CANCELLED: "cancelled",
76
+ FAILED: "failed",
77
+ ERROR: "error",
78
+ };
79
+ /** Raised when a worker is cancelled due to a worker error or timeout. */
80
+ export class JobError extends Error {
81
+ name = "JobError";
82
+ }
83
+ /** Raised when a worker group is cancelled due to a worker error or timeout. */
84
+ export class JobGroupError extends Error {
85
+ name = "JobGroupError";
86
+ }
87
+ /**
88
+ * Collected results from a completed job group.
89
+ *
90
+ * - `jobId`: the shared job identifier.
91
+ * - `responses`: collected responses keyed by worker name.
92
+ */
93
+ export class JobGroupResponse {
94
+ jobId;
95
+ responses;
96
+ constructor(options) {
97
+ this.jobId = options.jobId;
98
+ this.responses = options.responses;
99
+ }
100
+ }
101
+ /**
102
+ * An event received from a worker during a single-worker job.
103
+ *
104
+ * - `type`: the event type.
105
+ * - `data`: optional event payload.
106
+ */
107
+ export class JobEvent {
108
+ static UPDATE = "update";
109
+ static STREAM_START = "stream_start";
110
+ static STREAM_DATA = "stream_data";
111
+ static STREAM_END = "stream_end";
112
+ type;
113
+ data;
114
+ constructor(options) {
115
+ this.type = options.type;
116
+ this.data = options.data ?? null;
117
+ }
118
+ }
119
+ /**
120
+ * An event received from a worker during job group execution.
121
+ *
122
+ * - `type`: the event type.
123
+ * - `workerName`: the name of the worker that sent the event.
124
+ * - `data`: optional event payload.
125
+ */
126
+ export class JobGroupEvent {
127
+ static UPDATE = "update";
128
+ static STREAM_START = "stream_start";
129
+ static STREAM_DATA = "stream_data";
130
+ static STREAM_END = "stream_end";
131
+ type;
132
+ workerName;
133
+ data;
134
+ constructor(options) {
135
+ this.type = options.type;
136
+ this.workerName = options.workerName;
137
+ this.data = options.data ?? null;
138
+ }
139
+ }
140
+ /**
141
+ * Tracks a group of workers launched together.
142
+ *
143
+ * - `jobId`: shared identifier for all workers in this group.
144
+ * - `workerNames`: names of the workers in the group, in dispatch order.
145
+ * - `responses`: collected responses keyed by worker name.
146
+ * - `timeoutTask`: optional task that cancels the group on timeout.
147
+ * - `cancelOnError`: whether to cancel the group if a worker errors.
148
+ * - `label`: optional human-readable description of the work, from
149
+ * `JobGroupParams.label`.
150
+ * - `cancellable`: whether an external requester may ask for the group to be
151
+ * cancelled, from `JobGroupParams.cancellable`.
152
+ * - `terminated`: names of the workers that have reached a terminal state,
153
+ * whether by responding or by ending their stream.
154
+ * - `eventQueue`: optional queue for streaming events to a `JobGroupContext`
155
+ * async iterator.
156
+ */
157
+ export class JobGroup {
158
+ jobId;
159
+ workerNames;
160
+ responses;
161
+ timeoutTask;
162
+ cancelOnError;
163
+ label;
164
+ cancellable;
165
+ terminated;
166
+ eventQueue;
167
+ _done = new Event();
168
+ _error = null;
169
+ constructor(options) {
170
+ this.jobId = options.jobId;
171
+ this.workerNames = options.workerNames;
172
+ this.responses = options.responses ?? {};
173
+ this.timeoutTask = options.timeoutTask ?? null;
174
+ this.cancelOnError = options.cancelOnError ?? true;
175
+ this.label = options.label ?? null;
176
+ this.cancellable = options.cancellable ?? true;
177
+ this.terminated = options.terminated ?? new Set();
178
+ this.eventQueue = options.eventQueue ?? null;
179
+ }
180
+ /** Whether the group has completed or failed. */
181
+ get isDone() {
182
+ return this._done.isSet();
183
+ }
184
+ /**
185
+ * Wait for all workers in the group to respond.
186
+ *
187
+ * @throws JobGroupError If the group was cancelled due to error or timeout.
188
+ */
189
+ async wait() {
190
+ await this._done.wait();
191
+ if (this._error) {
192
+ throw new JobGroupError(this._error);
193
+ }
194
+ }
195
+ /** Signal that all workers have responded. */
196
+ complete() {
197
+ this._done.set();
198
+ if (this.eventQueue) {
199
+ this.eventQueue.putNowait(null);
200
+ }
201
+ }
202
+ /**
203
+ * Signal that the group was cancelled.
204
+ *
205
+ * @param reason Human-readable reason for the failure.
206
+ */
207
+ fail(reason = null) {
208
+ this._error = reason;
209
+ this._done.set();
210
+ if (this.eventQueue) {
211
+ this.eventQueue.putNowait(null);
212
+ }
213
+ }
214
+ toString() {
215
+ return `JobGroup(job_id=${this.jobId}, worker_names=${JSON.stringify(this.workerNames)})`;
216
+ }
217
+ }
218
+ /**
219
+ * Async context manager and iterator for structured job group execution.
220
+ *
221
+ * Sends job requests on enter, waits for all responses on exit. Supports
222
+ * `for await` to receive intermediate events (updates and streaming data)
223
+ * from workers while waiting for completion.
224
+ *
225
+ * On normal completion, results are available via `responses`. On worker
226
+ * error (with `cancelOnError: true`) or timeout, throws `JobGroupError`. If
227
+ * the block throws, remaining jobs are cancelled.
228
+ *
229
+ * @example
230
+ * const tg = this.jobGroup(["w1", "w2"], { params: new JobGroupParams({ payload: data }) });
231
+ * await tg.run(async (tg) => {
232
+ * for await (const event of tg) {
233
+ * console.log(`${event.workerName} [${event.type}]:`, event.data);
234
+ * }
235
+ * });
236
+ *
237
+ * for (const [name, result] of Object.entries(tg.responses)) {
238
+ * console.log(name, result);
239
+ * }
240
+ */
241
+ export class JobGroupContext {
242
+ _worker;
243
+ _workerNames;
244
+ _params;
245
+ _group = null;
246
+ /**
247
+ * Initialize the JobGroupContext.
248
+ *
249
+ * @param worker The parent `BaseWorker` that owns this job group.
250
+ * @param workerNames Names of the workers to send the job to.
251
+ * @param options.params How to run the group. Defaults to `JobGroupParams` defaults.
252
+ */
253
+ constructor(worker, workerNames, options = {}) {
254
+ this._worker = worker;
255
+ this._workerNames = workerNames;
256
+ this._params = options.params ?? new JobGroupParams();
257
+ }
258
+ /** The shared job identifier for this group. */
259
+ get jobId() {
260
+ if (!this._group) {
261
+ throw new Error("Job group has not been started");
262
+ }
263
+ return this._group.jobId;
264
+ }
265
+ /** Collected responses keyed by worker name. */
266
+ get responses() {
267
+ if (!this._group) {
268
+ throw new Error("Job group has not been started");
269
+ }
270
+ return this._group.responses;
271
+ }
272
+ async *[Symbol.asyncIterator]() {
273
+ for (;;) {
274
+ if (!this._group?.eventQueue)
275
+ return;
276
+ const event = await this._group.eventQueue.get();
277
+ if (event === null)
278
+ return;
279
+ yield event;
280
+ }
281
+ }
282
+ /** Send the job requests (`__aenter__`). */
283
+ async enter() {
284
+ const group = await this._worker.createJobGroupAndRequestJob([...this._workerNames], {
285
+ params: this._params,
286
+ });
287
+ group.eventQueue = new Queue();
288
+ this._group = group;
289
+ return this;
290
+ }
291
+ /**
292
+ * Leave the block (`__aexit__`): cancel the remaining jobs if the block
293
+ * threw, otherwise wait for every response.
294
+ *
295
+ * @param error What the block threw, if anything (`undefined` when it
296
+ * completed normally).
297
+ */
298
+ async exit(error) {
299
+ if (error !== undefined) {
300
+ if (this._group && this._worker.jobGroups.has(this._group.jobId)) {
301
+ // Shield the cleanup so it completes even if the surrounding worker
302
+ // is being cancelled (e.g. tool interruption).
303
+ const jobId = this._group.jobId;
304
+ await shield(() => this._worker.cancelJobGroup(jobId, { reason: "context exited with error" }));
305
+ }
306
+ return;
307
+ }
308
+ if (this._group === null)
309
+ throw new Error("Job group has not been started");
310
+ await this._group.wait();
311
+ }
312
+ /**
313
+ * Run `fn` inside the context, as `async with` does: enter, run the block,
314
+ * then exit. An error thrown by the block cancels the group and is
315
+ * re-thrown.
316
+ */
317
+ async run(fn) {
318
+ await this.enter();
319
+ let result;
320
+ try {
321
+ result = await fn(this);
322
+ }
323
+ catch (e) {
324
+ await this.exit(e ?? new Error("context exited with error"));
325
+ throw e;
326
+ }
327
+ await this.exit();
328
+ return result;
329
+ }
330
+ }
331
+ /**
332
+ * Async context manager and iterator for a single-worker job.
333
+ *
334
+ * Sends a job request on enter, waits for the response on exit. Supports
335
+ * `for await` to receive intermediate events (updates and streaming data)
336
+ * from the worker while waiting for completion.
337
+ *
338
+ * On normal completion, the result is available via `response`. On worker
339
+ * error or timeout, throws `JobError`. If the block throws, the job is
340
+ * cancelled.
341
+ *
342
+ * @example
343
+ * const t = this.job("worker", { params: new JobParams({ payload: data }) });
344
+ * await t.run(async (t) => {
345
+ * for await (const event of t) {
346
+ * console.log(`[${event.type}]:`, event.data);
347
+ * }
348
+ * });
349
+ *
350
+ * console.log(t.response);
351
+ */
352
+ export class JobContext {
353
+ _worker;
354
+ _workerName;
355
+ _params;
356
+ _group = null;
357
+ /**
358
+ * Initialize the JobContext.
359
+ *
360
+ * @param worker The parent `BaseWorker` that owns this job.
361
+ * @param workerName Name of the worker to send the job to.
362
+ * @param options.params How to run the job. Defaults to `JobParams` defaults.
363
+ */
364
+ constructor(worker, workerName, options = {}) {
365
+ this._worker = worker;
366
+ this._workerName = workerName;
367
+ this._params = options.params ?? new JobParams();
368
+ }
369
+ /** The job identifier. */
370
+ get jobId() {
371
+ if (!this._group) {
372
+ throw new Error("Job has not been started");
373
+ }
374
+ return this._group.jobId;
375
+ }
376
+ /** The worker's response payload. */
377
+ get response() {
378
+ if (!this._group) {
379
+ throw new Error("Job has not been started");
380
+ }
381
+ return this._group.responses[this._workerName] ?? {};
382
+ }
383
+ async *[Symbol.asyncIterator]() {
384
+ for (;;) {
385
+ if (!this._group?.eventQueue)
386
+ return;
387
+ const event = await this._group.eventQueue.get();
388
+ if (event === null)
389
+ return;
390
+ yield new JobEvent({ type: event.type, data: event.data });
391
+ }
392
+ }
393
+ /** Send the job request (`__aenter__`). */
394
+ async enter() {
395
+ const group = await this._worker.createJobGroupAndRequestJob([this._workerName], {
396
+ params: new JobGroupParams({ ...this._params }),
397
+ });
398
+ group.eventQueue = new Queue();
399
+ this._group = group;
400
+ return this;
401
+ }
402
+ /**
403
+ * Leave the block (`__aexit__`): cancel the job if the block threw,
404
+ * otherwise wait for the response.
405
+ *
406
+ * @param error What the block threw, if anything (`undefined` when it
407
+ * completed normally).
408
+ * @throws JobError If the worker failed or timed out.
409
+ */
410
+ async exit(error) {
411
+ if (error !== undefined) {
412
+ if (this._group && this._worker.jobGroups.has(this._group.jobId)) {
413
+ // Shield the cleanup so it completes even if the surrounding worker
414
+ // is being cancelled (e.g. tool interruption).
415
+ const jobId = this._group.jobId;
416
+ await shield(() => this._worker.cancelJobGroup(jobId, { reason: "context exited with error" }));
417
+ }
418
+ return;
419
+ }
420
+ if (this._group === null)
421
+ throw new Error("Job has not been started");
422
+ try {
423
+ await this._group.wait();
424
+ }
425
+ catch (e) {
426
+ if (e instanceof JobGroupError) {
427
+ throw new JobError(e.message, { cause: e });
428
+ }
429
+ throw e;
430
+ }
431
+ }
432
+ /**
433
+ * Run `fn` inside the context, as `async with` does: enter, run the block,
434
+ * then exit. An error thrown by the block cancels the job and is re-thrown.
435
+ */
436
+ async run(fn) {
437
+ await this.enter();
438
+ let result;
439
+ try {
440
+ result = await fn(this);
441
+ }
442
+ catch (e) {
443
+ await this.exit(e ?? new Error("context exited with error"));
444
+ throw e;
445
+ }
446
+ await this.exit();
447
+ return result;
448
+ }
449
+ }
450
+ //# sourceMappingURL=job_context.js.map
@@ -0,0 +1,54 @@
1
+ /** Decorator for marking worker methods as job handlers. */
2
+ type AnyFn = (...args: any[]) => any;
3
+ /** A function marked by `job()`. */
4
+ export type JobHandler<F extends AnyFn = AnyFn> = F & {
5
+ isJobHandler: true;
6
+ jobName: string;
7
+ jobSequential: boolean;
8
+ };
9
+ /**
10
+ * Mark a worker method as a job handler.
11
+ *
12
+ * Decorated methods are automatically collected by `BaseWorker` at
13
+ * initialization and dispatched when matching job requests arrive. Each
14
+ * request runs in its own task so the bus message loop is never blocked.
15
+ *
16
+ * The returned decorator works both as a standard (TC39) method decorator and
17
+ * as a plain function, since runtimes that strip types (Node) do not run
18
+ * decorator syntax.
19
+ *
20
+ * @example
21
+ * class MyWorker extends BaseWorker {
22
+ * async onResearch(message: BusJobRequestMessage): Promise<void> { ... }
23
+ * async onWrite(message: BusJobRequestMessage): Promise<void> { ... }
24
+ * static {
25
+ * job({ name: "research" })(this.prototype.onResearch);
26
+ * job({ name: "write", sequential: true })(this.prototype.onWrite);
27
+ * }
28
+ * }
29
+ *
30
+ * @param options.name Job name to match. The handler only receives requests
31
+ * with a matching name.
32
+ * @param options.sequential When true, requests with this name run one at a
33
+ * time in FIFO order. Concurrent requests wait for the previous one to
34
+ * finish before running. When false (the default), multiple requests run
35
+ * concurrently. The wait time counts against the requester's timeout, so a
36
+ * slow predecessor can cause queued requests to time out before they start.
37
+ */
38
+ export declare function job(options: {
39
+ name: string;
40
+ sequential?: boolean;
41
+ }): <F extends AnyFn>(fn: F, _context?: unknown) => F;
42
+ /**
43
+ * Collect all `job` decorated bound methods from an object.
44
+ *
45
+ * Walks the prototype chain from the object's own class up, so an override in
46
+ * a subclass shadows the parent's method of the same name.
47
+ *
48
+ * @returns A map from job name to the bound method. Each bound method keeps
49
+ * the `jobSequential` flag of the decorated function.
50
+ * @throws Error If two handlers handle the same job name.
51
+ */
52
+ export declare function _collectJobHandlers(obj: object): Map<string, AnyFn>;
53
+ export {};
54
+ //# sourceMappingURL=job_decorator.d.ts.map
@@ -0,0 +1,92 @@
1
+ // Copyright (c) 2024-2026, Daily
2
+ // Copyright (c) 2026, pipedog contributors
3
+ // SPDX-License-Identifier: BSD-2-Clause
4
+ //
5
+ // Ported from pipecat: src/pipecat/pipeline/job_decorator.py
6
+ /**
7
+ * Mark a worker method as a job handler.
8
+ *
9
+ * Decorated methods are automatically collected by `BaseWorker` at
10
+ * initialization and dispatched when matching job requests arrive. Each
11
+ * request runs in its own task so the bus message loop is never blocked.
12
+ *
13
+ * The returned decorator works both as a standard (TC39) method decorator and
14
+ * as a plain function, since runtimes that strip types (Node) do not run
15
+ * decorator syntax.
16
+ *
17
+ * @example
18
+ * class MyWorker extends BaseWorker {
19
+ * async onResearch(message: BusJobRequestMessage): Promise<void> { ... }
20
+ * async onWrite(message: BusJobRequestMessage): Promise<void> { ... }
21
+ * static {
22
+ * job({ name: "research" })(this.prototype.onResearch);
23
+ * job({ name: "write", sequential: true })(this.prototype.onWrite);
24
+ * }
25
+ * }
26
+ *
27
+ * @param options.name Job name to match. The handler only receives requests
28
+ * with a matching name.
29
+ * @param options.sequential When true, requests with this name run one at a
30
+ * time in FIFO order. Concurrent requests wait for the previous one to
31
+ * finish before running. When false (the default), multiple requests run
32
+ * concurrently. The wait time counts against the requester's timeout, so a
33
+ * slow predecessor can cause queued requests to time out before they start.
34
+ */
35
+ export function job(options) {
36
+ const name = options.name;
37
+ const sequential = options.sequential ?? false;
38
+ return function decorator(fn, _context) {
39
+ const handler = fn;
40
+ handler.isJobHandler = true;
41
+ handler.jobName = name;
42
+ handler.jobSequential = sequential;
43
+ return fn;
44
+ };
45
+ }
46
+ /**
47
+ * Collect all `job` decorated bound methods from an object.
48
+ *
49
+ * Walks the prototype chain from the object's own class up, so an override in
50
+ * a subclass shadows the parent's method of the same name.
51
+ *
52
+ * @returns A map from job name to the bound method. Each bound method keeps
53
+ * the `jobSequential` flag of the decorated function.
54
+ * @throws Error If two handlers handle the same job name.
55
+ */
56
+ export function _collectJobHandlers(obj) {
57
+ const seen = new Set();
58
+ const handlers = new Map();
59
+ const handlerNames = new Map();
60
+ let proto = Object.getPrototypeOf(obj);
61
+ while (proto !== null && proto !== Object.prototype) {
62
+ for (const attrName of Object.getOwnPropertyNames(proto)) {
63
+ if (seen.has(attrName)) {
64
+ continue;
65
+ }
66
+ seen.add(attrName);
67
+ const descriptor = Object.getOwnPropertyDescriptor(proto, attrName);
68
+ // Skip accessors so collecting never runs a getter.
69
+ const val = descriptor && "value" in descriptor ? descriptor.value : undefined;
70
+ if (typeof val === "function" && val.isJobHandler === true) {
71
+ const jobName = val.jobName;
72
+ if (handlers.has(jobName)) {
73
+ const existing = handlerNames.get(jobName);
74
+ throw new Error(`Duplicate @job handler for '${jobName}': ` +
75
+ `'${attrName}' conflicts with '${existing}'`);
76
+ }
77
+ const method = obj[attrName];
78
+ // Python's bound method still exposes the function's attributes
79
+ // (`handler.job_sequential`); copy them onto the bound function.
80
+ const bound = method.bind(obj);
81
+ bound.isJobHandler = true;
82
+ bound.jobName = jobName;
83
+ bound.jobSequential = val.jobSequential;
84
+ handlers.set(jobName, bound);
85
+ handlerNames.set(jobName, attrName);
86
+ }
87
+ }
88
+ proto = Object.getPrototypeOf(proto);
89
+ }
90
+ return handlers;
91
+ }
92
+ //# sourceMappingURL=job_decorator.js.map
@@ -0,0 +1,84 @@
1
+ /** LLM switcher for switching between different LLMs at runtime, with different switching strategies. */
2
+ import { type Frame } from "../frames/frames.ts";
3
+ import type { LLMContext } from "../processors/aggregators/llm_context.ts";
4
+ import type { FrameDirection } from "../processors/frame_processor.ts";
5
+ import type { FunctionCallHandler, LLMService } from "../services/llm_service.ts";
6
+ import { ServiceSwitcher, type ServiceSwitcherOptions, type ServiceSwitcherStrategy, type ServiceSwitcherStrategyManual } from "./service_switcher.ts";
7
+ type AnyLLMService = LLMService<any>;
8
+ /** Options forwarded to the active LLM's `runInference()`. */
9
+ export type LLMSwitcherRunInferenceOptions = Parameters<AnyLLMService["runInference"]>[1];
10
+ /**
11
+ * A pipeline that switches between different LLMs at runtime.
12
+ *
13
+ * @example
14
+ * const llmSwitcher = new LLMSwitcher([openaiLlm, anthropicLlm]);
15
+ */
16
+ export declare class LLMSwitcher<S extends ServiceSwitcherStrategy = ServiceSwitcherStrategyManual> extends ServiceSwitcher<S> {
17
+ /**
18
+ * Initialize the service switcher with a list of LLMs and a switching strategy.
19
+ *
20
+ * @param llms List of LLM services to switch between.
21
+ * @param options.strategyType The strategy class to use for switching
22
+ * between LLMs. Defaults to `ServiceSwitcherStrategyManual`.
23
+ */
24
+ constructor(llms: AnyLLMService[], options?: ServiceSwitcherOptions<S>);
25
+ /**
26
+ * Process a frame, syncing context tool handlers on all member LLMs.
27
+ *
28
+ * On an `LLMContextFrame`, the handlers advertised in the context are synced
29
+ * on every member LLM — active or not — so that tools listed via
30
+ * `new LLMContext({ tools: [...] })` keep working across service switches.
31
+ *
32
+ * This is needed because member LLMs sit behind per-branch filters: only the
33
+ * active LLM receives the context frame and would otherwise sync its
34
+ * handlers, leaving inactive LLMs out of step with the advertised tools.
35
+ *
36
+ * @param frame The frame to process.
37
+ * @param direction The direction of frame flow.
38
+ */
39
+ processFrame(frame: Frame, direction: FrameDirection): Promise<void>;
40
+ /**
41
+ * Sync the context's tool handlers on every member LLM.
42
+ *
43
+ * @param tools The advertised tools whose handlers should be synced on all
44
+ * member LLMs.
45
+ */
46
+ protected _syncRegisteredToolHandlers(tools: unknown): void;
47
+ /** The list of LLMs managed by this switcher. */
48
+ get llms(): AnyLLMService[];
49
+ /** The currently active LLM. */
50
+ get activeLlm(): AnyLLMService;
51
+ /**
52
+ * Run a one-shot, out-of-band (i.e. out-of-pipeline) inference with the
53
+ * given LLM context, using the currently active LLM.
54
+ *
55
+ * @param context The LLM context containing conversation history.
56
+ * @param options Additional options forwarded to the active LLM's
57
+ * `runInference` (e.g. maxTokens, systemInstruction).
58
+ * @returns The LLM's response as a string, or null if no response is generated.
59
+ */
60
+ runInference(context: LLMContext, options?: LLMSwitcherRunInferenceOptions): Promise<string | null>;
61
+ /**
62
+ * Register a function handler for LLM function calls, on all LLMs, active or not.
63
+ *
64
+ * @param functionName The name of the function to handle. Use null to handle
65
+ * all function calls with a catch-all handler.
66
+ * @param handler The function handler. Should accept a single
67
+ * FunctionCallParams parameter.
68
+ * @param options.cancelOnInterruption Whether to cancel this function call
69
+ * when an interruption occurs. Defaults to null (fall back to the
70
+ * `toolOptions()` value on the handler, then to true).
71
+ * @param options.timeoutSecs Optional timeout in seconds for the function call.
72
+ * @param options.cancellableByLlm Whether the LLM may cancel this call while
73
+ * it runs, through the `cancel_<name>` tool advertised alongside it. Pair
74
+ * it with `cancelOnInterruption: false`. Defaults to null (fall back to the
75
+ * `toolOptions()` value, then to false).
76
+ */
77
+ registerFunction(functionName: string | null, handler: FunctionCallHandler, options?: {
78
+ cancelOnInterruption?: boolean | null;
79
+ timeoutSecs?: number | null;
80
+ cancellableByLlm?: boolean | null;
81
+ }): void;
82
+ }
83
+ export {};
84
+ //# sourceMappingURL=llm_switcher.d.ts.map