@pipedog/core 0.0.0 → 0.1.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 (698) 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/index.d.ts +2 -0
  42. package/dist/audio/resamplers/index.js +8 -0
  43. package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
  44. package/dist/audio/resamplers/resampy_resampler.js +15 -0
  45. package/dist/audio/resamplers/soxr_resampler.d.ts +54 -0
  46. package/dist/audio/resamplers/soxr_resampler.js +69 -0
  47. package/dist/audio/resamplers/soxr_stream_resampler.d.ts +75 -0
  48. package/dist/audio/resamplers/soxr_stream_resampler.js +146 -0
  49. package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
  50. package/dist/audio/turn/base_turn_analyzer.js +61 -0
  51. package/dist/audio/turn/index.d.ts +2 -0
  52. package/dist/audio/turn/index.js +8 -0
  53. package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
  54. package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
  55. package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
  56. package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
  57. package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
  58. package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +143 -0
  59. package/dist/audio/utils.d.ts +224 -0
  60. package/dist/audio/utils.js +634 -0
  61. package/dist/audio/vad/data/index.d.ts +2 -0
  62. package/dist/audio/vad/data/index.js +8 -0
  63. package/dist/audio/vad/index.d.ts +2 -0
  64. package/dist/audio/vad/index.js +8 -0
  65. package/dist/audio/vad/vad_analyzer.d.ts +126 -0
  66. package/dist/audio/vad/vad_analyzer.js +211 -0
  67. package/dist/audio/vad/vad_controller.d.ts +143 -0
  68. package/dist/audio/vad/vad_controller.js +228 -0
  69. package/dist/audio/volume.d.ts +38 -0
  70. package/dist/audio/volume.js +75 -0
  71. package/dist/bus/adapters/base.d.ts +35 -0
  72. package/dist/bus/adapters/base.js +19 -0
  73. package/dist/bus/adapters/index.d.ts +10 -0
  74. package/dist/bus/adapters/index.js +15 -0
  75. package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
  76. package/dist/bus/adapters/llm_context_adapter.js +82 -0
  77. package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
  78. package/dist/bus/adapters/tools_schema_adapter.js +70 -0
  79. package/dist/bus/bridge_processor.d.ts +111 -0
  80. package/dist/bus/bridge_processor.js +166 -0
  81. package/dist/bus/bus.d.ts +110 -0
  82. package/dist/bus/bus.js +200 -0
  83. package/dist/bus/index.d.ts +22 -0
  84. package/dist/bus/index.js +27 -0
  85. package/dist/bus/local/async_queue.d.ts +12 -0
  86. package/dist/bus/local/async_queue.js +21 -0
  87. package/dist/bus/local/index.d.ts +3 -0
  88. package/dist/bus/local/index.js +8 -0
  89. package/dist/bus/messages.d.ts +378 -0
  90. package/dist/bus/messages.js +357 -0
  91. package/dist/bus/network/index.d.ts +16 -0
  92. package/dist/bus/network/index.js +21 -0
  93. package/dist/bus/queue.d.ts +27 -0
  94. package/dist/bus/queue.js +51 -0
  95. package/dist/bus/serializers/base.d.ts +25 -0
  96. package/dist/bus/serializers/base.js +14 -0
  97. package/dist/bus/serializers/index.d.ts +9 -0
  98. package/dist/bus/serializers/index.js +14 -0
  99. package/dist/bus/serializers/json.d.ts +77 -0
  100. package/dist/bus/serializers/json.js +367 -0
  101. package/dist/bus/subscriber.d.ts +46 -0
  102. package/dist/bus/subscriber.js +27 -0
  103. package/dist/bus/ui/index.d.ts +3 -0
  104. package/dist/bus/ui/index.js +8 -0
  105. package/dist/bus/ui/messages.d.ts +186 -0
  106. package/dist/bus/ui/messages.js +171 -0
  107. package/dist/classifiers/base_classifier.d.ts +263 -0
  108. package/dist/classifiers/base_classifier.js +346 -0
  109. package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
  110. package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
  111. package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
  112. package/dist/classifiers/cloudflare/clef/client.js +234 -0
  113. package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
  114. package/dist/classifiers/cloudflare/clef/index.js +8 -0
  115. package/dist/classifiers/cloudflare/index.d.ts +2 -0
  116. package/dist/classifiers/cloudflare/index.js +8 -0
  117. package/dist/classifiers/http_client.d.ts +70 -0
  118. package/dist/classifiers/http_client.js +161 -0
  119. package/dist/classifiers/index.d.ts +2 -0
  120. package/dist/classifiers/index.js +8 -0
  121. package/dist/classifiers/jev/classifier.d.ts +8 -0
  122. package/dist/classifiers/jev/classifier.js +13 -0
  123. package/dist/classifiers/jev/client.d.ts +8 -0
  124. package/dist/classifiers/jev/client.js +13 -0
  125. package/dist/classifiers/jev/index.d.ts +2 -0
  126. package/dist/classifiers/jev/index.js +8 -0
  127. package/dist/classifiers/llm/classifier.d.ts +72 -0
  128. package/dist/classifiers/llm/classifier.js +304 -0
  129. package/dist/classifiers/llm/index.d.ts +2 -0
  130. package/dist/classifiers/llm/index.js +8 -0
  131. package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
  132. package/dist/classifiers/openai/decisions/classifier.js +241 -0
  133. package/dist/classifiers/openai/decisions/client.d.ts +108 -0
  134. package/dist/classifiers/openai/decisions/client.js +234 -0
  135. package/dist/classifiers/openai/decisions/index.d.ts +2 -0
  136. package/dist/classifiers/openai/decisions/index.js +8 -0
  137. package/dist/classifiers/openai/index.d.ts +2 -0
  138. package/dist/classifiers/openai/index.js +8 -0
  139. package/dist/classifiers/typesafe/index.d.ts +2 -0
  140. package/dist/classifiers/typesafe/index.js +8 -0
  141. package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
  142. package/dist/classifiers/typesafe/jev/classifier.js +220 -0
  143. package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
  144. package/dist/classifiers/typesafe/jev/client.js +233 -0
  145. package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
  146. package/dist/classifiers/typesafe/jev/index.js +8 -0
  147. package/dist/clocks/base_clock.d.ts +13 -0
  148. package/dist/clocks/base_clock.js +14 -0
  149. package/dist/clocks/index.d.ts +2 -0
  150. package/dist/clocks/index.js +8 -0
  151. package/dist/clocks/system_clock.d.ts +15 -0
  152. package/dist/clocks/system_clock.js +25 -0
  153. package/dist/frames/frames.d.ts +2533 -0
  154. package/dist/frames/frames.js +2485 -0
  155. package/dist/frames/index.d.ts +2 -0
  156. package/dist/frames/index.js +8 -0
  157. package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
  158. package/dist/frames/protobufs/frames_pb2.js +466 -0
  159. package/dist/index.d.ts +11 -0
  160. package/dist/index.js +56 -0
  161. package/dist/metrics/index.d.ts +2 -0
  162. package/dist/metrics/index.js +8 -0
  163. package/dist/metrics/metrics.d.ts +276 -0
  164. package/dist/metrics/metrics.js +254 -0
  165. package/dist/observers/base_observer.d.ts +173 -0
  166. package/dist/observers/base_observer.js +151 -0
  167. package/dist/observers/error_observer.d.ts +75 -0
  168. package/dist/observers/error_observer.js +87 -0
  169. package/dist/observers/function_call_observer.d.ts +157 -0
  170. package/dist/observers/function_call_observer.js +222 -0
  171. package/dist/observers/index.d.ts +2 -0
  172. package/dist/observers/index.js +8 -0
  173. package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
  174. package/dist/observers/loggers/debug_log_observer.js +228 -0
  175. package/dist/observers/loggers/index.d.ts +2 -0
  176. package/dist/observers/loggers/index.js +8 -0
  177. package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
  178. package/dist/observers/loggers/llm_log_observer.js +110 -0
  179. package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
  180. package/dist/observers/loggers/metrics_log_observer.js +186 -0
  181. package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
  182. package/dist/observers/loggers/transcription_log_observer.js +74 -0
  183. package/dist/observers/service_metrics_observer.d.ts +168 -0
  184. package/dist/observers/service_metrics_observer.js +236 -0
  185. package/dist/observers/speaking_observer.d.ts +104 -0
  186. package/dist/observers/speaking_observer.js +150 -0
  187. package/dist/observers/startup_timing_observer.d.ts +221 -0
  188. package/dist/observers/startup_timing_observer.js +365 -0
  189. package/dist/observers/turn_tracking_observer.d.ts +78 -0
  190. package/dist/observers/turn_tracking_observer.js +189 -0
  191. package/dist/observers/user_bot_latency_observer.d.ts +411 -0
  192. package/dist/observers/user_bot_latency_observer.js +974 -0
  193. package/dist/pipeline/base_pipeline.d.ts +49 -0
  194. package/dist/pipeline/base_pipeline.js +101 -0
  195. package/dist/pipeline/capabilities.d.ts +76 -0
  196. package/dist/pipeline/capabilities.js +97 -0
  197. package/dist/pipeline/index.d.ts +2 -0
  198. package/dist/pipeline/index.js +8 -0
  199. package/dist/pipeline/job_context.d.ts +317 -0
  200. package/dist/pipeline/job_context.js +450 -0
  201. package/dist/pipeline/job_decorator.d.ts +54 -0
  202. package/dist/pipeline/job_decorator.js +92 -0
  203. package/dist/pipeline/llm_switcher.d.ts +84 -0
  204. package/dist/pipeline/llm_switcher.js +107 -0
  205. package/dist/pipeline/llm_with_backend.d.ts +435 -0
  206. package/dist/pipeline/llm_with_backend.js +806 -0
  207. package/dist/pipeline/parallel_pipeline.d.ts +83 -0
  208. package/dist/pipeline/parallel_pipeline.js +200 -0
  209. package/dist/pipeline/pipeline.d.ts +126 -0
  210. package/dist/pipeline/pipeline.js +196 -0
  211. package/dist/pipeline/service_switcher.d.ts +287 -0
  212. package/dist/pipeline/service_switcher.js +509 -0
  213. package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
  214. package/dist/pipeline/sync_parallel_pipeline.js +387 -0
  215. package/dist/pipeline/worker.d.ts +814 -0
  216. package/dist/pipeline/worker.js +1639 -0
  217. package/dist/pipeline/worker_observer.d.ts +131 -0
  218. package/dist/pipeline/worker_observer.js +274 -0
  219. package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
  220. package/dist/pipeline/worker_ready_decorator.js +76 -0
  221. package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
  222. package/dist/processors/aggregators/async_tool_messages.js +291 -0
  223. package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
  224. package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
  225. package/dist/processors/aggregators/gated.d.ts +43 -0
  226. package/dist/processors/aggregators/gated.js +86 -0
  227. package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
  228. package/dist/processors/aggregators/gated_llm_context.js +86 -0
  229. package/dist/processors/aggregators/index.d.ts +2 -0
  230. package/dist/processors/aggregators/index.js +8 -0
  231. package/dist/processors/aggregators/llm_context.d.ts +370 -0
  232. package/dist/processors/aggregators/llm_context.js +580 -0
  233. package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
  234. package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
  235. package/dist/processors/aggregators/llm_response.d.ts +37 -0
  236. package/dist/processors/aggregators/llm_response.js +71 -0
  237. package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
  238. package/dist/processors/aggregators/llm_response_universal.js +2394 -0
  239. package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
  240. package/dist/processors/aggregators/llm_text_processor.js +102 -0
  241. package/dist/processors/aggregators/sentence.d.ts +39 -0
  242. package/dist/processors/aggregators/sentence.js +69 -0
  243. package/dist/processors/async_generator.d.ts +42 -0
  244. package/dist/processors/async_generator.js +76 -0
  245. package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
  246. package/dist/processors/audio/audio_buffer_processor.js +565 -0
  247. package/dist/processors/audio/index.d.ts +2 -0
  248. package/dist/processors/audio/index.js +8 -0
  249. package/dist/processors/audio/vad_processor.d.ts +67 -0
  250. package/dist/processors/audio/vad_processor.js +103 -0
  251. package/dist/processors/consumer_processor.d.ts +49 -0
  252. package/dist/processors/consumer_processor.js +85 -0
  253. package/dist/processors/filters/frame_filter.d.ts +39 -0
  254. package/dist/processors/filters/frame_filter.js +52 -0
  255. package/dist/processors/filters/function_filter.d.ts +59 -0
  256. package/dist/processors/filters/function_filter.js +78 -0
  257. package/dist/processors/filters/identity_filter.d.ts +33 -0
  258. package/dist/processors/filters/identity_filter.js +37 -0
  259. package/dist/processors/filters/index.d.ts +2 -0
  260. package/dist/processors/filters/index.js +8 -0
  261. package/dist/processors/filters/null_filter.d.ts +34 -0
  262. package/dist/processors/filters/null_filter.js +47 -0
  263. package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
  264. package/dist/processors/filters/wake_notifier_filter.js +49 -0
  265. package/dist/processors/frame_processor.d.ts +360 -0
  266. package/dist/processors/frame_processor.js +932 -0
  267. package/dist/processors/frameworks/index.d.ts +2 -0
  268. package/dist/processors/frameworks/index.js +8 -0
  269. package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
  270. package/dist/processors/frameworks/rtvi/frames.js +259 -0
  271. package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
  272. package/dist/processors/frameworks/rtvi/index.js +11 -0
  273. package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
  274. package/dist/processors/frameworks/rtvi/models.js +1807 -0
  275. package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
  276. package/dist/processors/frameworks/rtvi/observer.js +1113 -0
  277. package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
  278. package/dist/processors/frameworks/rtvi/processor.js +676 -0
  279. package/dist/processors/idle_frame_processor.d.ts +44 -0
  280. package/dist/processors/idle_frame_processor.js +86 -0
  281. package/dist/processors/index.d.ts +2 -0
  282. package/dist/processors/index.js +8 -0
  283. package/dist/processors/logger.d.ts +42 -0
  284. package/dist/processors/logger.js +87 -0
  285. package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
  286. package/dist/processors/metrics/frame_processor_metrics.js +372 -0
  287. package/dist/processors/metrics/index.d.ts +2 -0
  288. package/dist/processors/metrics/index.js +8 -0
  289. package/dist/processors/producer_processor.d.ts +68 -0
  290. package/dist/processors/producer_processor.js +78 -0
  291. package/dist/processors/text_transformer.d.ts +30 -0
  292. package/dist/processors/text_transformer.js +48 -0
  293. package/dist/registry/index.d.ts +3 -0
  294. package/dist/registry/index.js +8 -0
  295. package/dist/registry/registry.d.ts +69 -0
  296. package/dist/registry/registry.js +149 -0
  297. package/dist/registry/types.d.ts +47 -0
  298. package/dist/registry/types.js +39 -0
  299. package/dist/serializers/base_serializer.d.ts +94 -0
  300. package/dist/serializers/base_serializer.js +82 -0
  301. package/dist/serializers/index.d.ts +2 -0
  302. package/dist/serializers/index.js +8 -0
  303. package/dist/services/ai_service.d.ts +145 -0
  304. package/dist/services/ai_service.js +262 -0
  305. package/dist/services/anthropic/index.d.ts +2 -0
  306. package/dist/services/anthropic/index.js +7 -0
  307. package/dist/services/assemblyai/index.d.ts +2 -0
  308. package/dist/services/assemblyai/index.js +7 -0
  309. package/dist/services/asyncai/index.d.ts +2 -0
  310. package/dist/services/asyncai/index.js +7 -0
  311. package/dist/services/aws/index.d.ts +2 -0
  312. package/dist/services/aws/index.js +7 -0
  313. package/dist/services/azure/index.d.ts +2 -0
  314. package/dist/services/azure/index.js +7 -0
  315. package/dist/services/baseten/index.d.ts +2 -0
  316. package/dist/services/baseten/index.js +7 -0
  317. package/dist/services/bland/index.d.ts +2 -0
  318. package/dist/services/bland/index.js +7 -0
  319. package/dist/services/camb/index.d.ts +2 -0
  320. package/dist/services/camb/index.js +7 -0
  321. package/dist/services/cartesia/index.d.ts +2 -0
  322. package/dist/services/cartesia/index.js +7 -0
  323. package/dist/services/cerebras/index.d.ts +2 -0
  324. package/dist/services/cerebras/index.js +7 -0
  325. package/dist/services/crusoe/index.d.ts +2 -0
  326. package/dist/services/crusoe/index.js +7 -0
  327. package/dist/services/deepgram/index.d.ts +2 -0
  328. package/dist/services/deepgram/index.js +7 -0
  329. package/dist/services/deepseek/index.d.ts +2 -0
  330. package/dist/services/deepseek/index.js +7 -0
  331. package/dist/services/elevenlabs/index.d.ts +2 -0
  332. package/dist/services/elevenlabs/index.js +7 -0
  333. package/dist/services/fal/index.d.ts +2 -0
  334. package/dist/services/fal/index.js +7 -0
  335. package/dist/services/fireworks/index.d.ts +2 -0
  336. package/dist/services/fireworks/index.js +7 -0
  337. package/dist/services/fish/index.d.ts +2 -0
  338. package/dist/services/fish/index.js +7 -0
  339. package/dist/services/funasr/index.d.ts +3 -0
  340. package/dist/services/funasr/index.js +8 -0
  341. package/dist/services/gladia/index.d.ts +2 -0
  342. package/dist/services/gladia/index.js +7 -0
  343. package/dist/services/google/index.d.ts +2 -0
  344. package/dist/services/google/index.js +7 -0
  345. package/dist/services/gradium/index.d.ts +2 -0
  346. package/dist/services/gradium/index.js +7 -0
  347. package/dist/services/grok/index.d.ts +2 -0
  348. package/dist/services/grok/index.js +7 -0
  349. package/dist/services/groq/index.d.ts +2 -0
  350. package/dist/services/groq/index.js +7 -0
  351. package/dist/services/heygen/index.d.ts +2 -0
  352. package/dist/services/heygen/index.js +7 -0
  353. package/dist/services/hume/index.d.ts +2 -0
  354. package/dist/services/hume/index.js +7 -0
  355. package/dist/services/image_service.d.ts +52 -0
  356. package/dist/services/image_service.js +60 -0
  357. package/dist/services/inception/index.d.ts +2 -0
  358. package/dist/services/inception/index.js +7 -0
  359. package/dist/services/index.d.ts +2 -0
  360. package/dist/services/index.js +8 -0
  361. package/dist/services/inworld/index.d.ts +2 -0
  362. package/dist/services/inworld/index.js +7 -0
  363. package/dist/services/keenable/index.d.ts +2 -0
  364. package/dist/services/keenable/index.js +7 -0
  365. package/dist/services/kokoro/index.d.ts +2 -0
  366. package/dist/services/kokoro/index.js +7 -0
  367. package/dist/services/llm_service.d.ts +1106 -0
  368. package/dist/services/llm_service.js +2231 -0
  369. package/dist/services/mem0/index.d.ts +2 -0
  370. package/dist/services/mem0/index.js +7 -0
  371. package/dist/services/meta/index.d.ts +2 -0
  372. package/dist/services/meta/index.js +7 -0
  373. package/dist/services/minimax/index.d.ts +2 -0
  374. package/dist/services/minimax/index.js +7 -0
  375. package/dist/services/mistral/index.d.ts +2 -0
  376. package/dist/services/mistral/index.js +7 -0
  377. package/dist/services/moondream/index.d.ts +2 -0
  378. package/dist/services/moondream/index.js +7 -0
  379. package/dist/services/moonshine/index.d.ts +2 -0
  380. package/dist/services/moonshine/index.js +7 -0
  381. package/dist/services/nebius/index.d.ts +2 -0
  382. package/dist/services/nebius/index.js +7 -0
  383. package/dist/services/neuphonic/index.d.ts +2 -0
  384. package/dist/services/neuphonic/index.js +7 -0
  385. package/dist/services/novita/index.d.ts +2 -0
  386. package/dist/services/novita/index.js +7 -0
  387. package/dist/services/nvidia/index.d.ts +2 -0
  388. package/dist/services/nvidia/index.js +11 -0
  389. package/dist/services/ollama/index.d.ts +2 -0
  390. package/dist/services/ollama/index.js +7 -0
  391. package/dist/services/openai/index.d.ts +2 -0
  392. package/dist/services/openai/index.js +7 -0
  393. package/dist/services/openclaw/index.d.ts +14 -0
  394. package/dist/services/openclaw/index.js +19 -0
  395. package/dist/services/openrouter/index.d.ts +2 -0
  396. package/dist/services/openrouter/index.js +7 -0
  397. package/dist/services/perplexity/index.d.ts +2 -0
  398. package/dist/services/perplexity/index.js +7 -0
  399. package/dist/services/piper/index.d.ts +2 -0
  400. package/dist/services/piper/index.js +7 -0
  401. package/dist/services/pocket_tts/index.d.ts +2 -0
  402. package/dist/services/pocket_tts/index.js +7 -0
  403. package/dist/services/qwen/index.d.ts +2 -0
  404. package/dist/services/qwen/index.js +7 -0
  405. package/dist/services/resembleai/index.d.ts +2 -0
  406. package/dist/services/resembleai/index.js +7 -0
  407. package/dist/services/rime/index.d.ts +2 -0
  408. package/dist/services/rime/index.js +7 -0
  409. package/dist/services/sambanova/index.d.ts +2 -0
  410. package/dist/services/sambanova/index.js +7 -0
  411. package/dist/services/sarvam/index.d.ts +2 -0
  412. package/dist/services/sarvam/index.js +7 -0
  413. package/dist/services/settings.d.ts +356 -0
  414. package/dist/services/settings.js +437 -0
  415. package/dist/services/simli/index.d.ts +2 -0
  416. package/dist/services/simli/index.js +7 -0
  417. package/dist/services/smallest/index.d.ts +2 -0
  418. package/dist/services/smallest/index.js +7 -0
  419. package/dist/services/soniox/index.d.ts +2 -0
  420. package/dist/services/soniox/index.js +7 -0
  421. package/dist/services/speechify/index.d.ts +2 -0
  422. package/dist/services/speechify/index.js +7 -0
  423. package/dist/services/speechmatics/index.d.ts +2 -0
  424. package/dist/services/speechmatics/index.js +7 -0
  425. package/dist/services/stt_latency.d.ts +62 -0
  426. package/dist/services/stt_latency.js +71 -0
  427. package/dist/services/stt_service.d.ts +601 -0
  428. package/dist/services/stt_service.js +1044 -0
  429. package/dist/services/tavus/index.d.ts +2 -0
  430. package/dist/services/tavus/index.js +7 -0
  431. package/dist/services/together/index.d.ts +2 -0
  432. package/dist/services/together/index.js +7 -0
  433. package/dist/services/tts_service.d.ts +909 -0
  434. package/dist/services/tts_service.js +2018 -0
  435. package/dist/services/ultravox/index.d.ts +2 -0
  436. package/dist/services/ultravox/index.js +9 -0
  437. package/dist/services/vision_service.d.ts +56 -0
  438. package/dist/services/vision_service.js +62 -0
  439. package/dist/services/websocket_service.d.ts +213 -0
  440. package/dist/services/websocket_service.js +654 -0
  441. package/dist/services/whisper/index.d.ts +2 -0
  442. package/dist/services/whisper/index.js +9 -0
  443. package/dist/services/xai/index.d.ts +2 -0
  444. package/dist/services/xai/index.js +9 -0
  445. package/dist/services/xtts/index.d.ts +2 -0
  446. package/dist/services/xtts/index.js +9 -0
  447. package/dist/tests/index.d.ts +2 -0
  448. package/dist/tests/index.js +8 -0
  449. package/dist/tests/utils.d.ts +123 -0
  450. package/dist/tests/utils.js +212 -0
  451. package/dist/transcriptions/index.d.ts +2 -0
  452. package/dist/transcriptions/index.js +8 -0
  453. package/dist/transcriptions/language.d.ts +376 -0
  454. package/dist/transcriptions/language.js +543 -0
  455. package/dist/transports/base_input.d.ts +149 -0
  456. package/dist/transports/base_input.js +338 -0
  457. package/dist/transports/base_output.d.ts +432 -0
  458. package/dist/transports/base_output.js +1231 -0
  459. package/dist/transports/base_transport.d.ts +223 -0
  460. package/dist/transports/base_transport.js +167 -0
  461. package/dist/transports/daily/index.d.ts +2 -0
  462. package/dist/transports/daily/index.js +9 -0
  463. package/dist/transports/heygen/index.d.ts +2 -0
  464. package/dist/transports/heygen/index.js +9 -0
  465. package/dist/transports/index.d.ts +2 -0
  466. package/dist/transports/index.js +8 -0
  467. package/dist/transports/lemonslice/index.d.ts +2 -0
  468. package/dist/transports/lemonslice/index.js +9 -0
  469. package/dist/transports/livekit/index.d.ts +2 -0
  470. package/dist/transports/livekit/index.js +9 -0
  471. package/dist/transports/local/index.d.ts +2 -0
  472. package/dist/transports/local/index.js +9 -0
  473. package/dist/transports/moq/index.d.ts +2 -0
  474. package/dist/transports/moq/index.js +9 -0
  475. package/dist/transports/smallwebrtc/index.d.ts +2 -0
  476. package/dist/transports/smallwebrtc/index.js +9 -0
  477. package/dist/transports/tavus/index.d.ts +2 -0
  478. package/dist/transports/tavus/index.js +9 -0
  479. package/dist/transports/video_in_sampler.d.ts +157 -0
  480. package/dist/transports/video_in_sampler.js +258 -0
  481. package/dist/transports/vonage/index.d.ts +2 -0
  482. package/dist/transports/vonage/index.js +9 -0
  483. package/dist/transports/websocket/index.d.ts +2 -0
  484. package/dist/transports/websocket/index.js +9 -0
  485. package/dist/transports/whatsapp/index.d.ts +2 -0
  486. package/dist/transports/whatsapp/index.js +9 -0
  487. package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
  488. package/dist/turns/eager_end_of_turn_mixin.js +122 -0
  489. package/dist/turns/empty_user_turn.d.ts +55 -0
  490. package/dist/turns/empty_user_turn.js +53 -0
  491. package/dist/turns/index.d.ts +2 -0
  492. package/dist/turns/index.js +8 -0
  493. package/dist/turns/speculation_gate.d.ts +169 -0
  494. package/dist/turns/speculation_gate.js +294 -0
  495. package/dist/turns/types.d.ts +33 -0
  496. package/dist/turns/types.js +35 -0
  497. package/dist/turns/user_idle_controller.d.ts +94 -0
  498. package/dist/turns/user_idle_controller.js +187 -0
  499. package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
  500. package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
  501. package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
  502. package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
  503. package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
  504. package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
  505. package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
  506. package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
  507. package/dist/turns/user_mute/index.d.ts +6 -0
  508. package/dist/turns/user_mute/index.js +11 -0
  509. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
  510. package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
  511. package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
  512. package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
  513. package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
  514. package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
  515. package/dist/turns/user_start/index.d.ts +8 -0
  516. package/dist/turns/user_start/index.js +16 -0
  517. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
  518. package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
  519. package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
  520. package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
  521. package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
  522. package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
  523. package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
  524. package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
  525. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
  526. package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
  527. package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
  528. package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
  529. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
  530. package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
  531. package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
  532. package/dist/turns/user_stop/eager_match_policy.js +50 -0
  533. package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
  534. package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
  535. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
  536. package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
  537. package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
  538. package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
  539. package/dist/turns/user_stop/index.d.ts +10 -0
  540. package/dist/turns/user_stop/index.js +15 -0
  541. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
  542. package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
  543. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
  544. package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
  545. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
  546. package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
  547. package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
  548. package/dist/turns/user_turn_completion_mixin.js +591 -0
  549. package/dist/turns/user_turn_controller.d.ts +134 -0
  550. package/dist/turns/user_turn_controller.js +335 -0
  551. package/dist/turns/user_turn_processor.d.ts +87 -0
  552. package/dist/turns/user_turn_processor.js +180 -0
  553. package/dist/turns/user_turn_strategies.d.ts +187 -0
  554. package/dist/turns/user_turn_strategies.js +222 -0
  555. package/dist/utils/async_tool_cancellation.d.ts +35 -0
  556. package/dist/utils/async_tool_cancellation.js +78 -0
  557. package/dist/utils/asyncio/index.d.ts +2 -0
  558. package/dist/utils/asyncio/index.js +7 -0
  559. package/dist/utils/asyncio/task_manager.d.ts +49 -0
  560. package/dist/utils/asyncio/task_manager.js +105 -0
  561. package/dist/utils/base_object.d.ts +76 -0
  562. package/dist/utils/base_object.js +154 -0
  563. package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
  564. package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
  565. package/dist/utils/context/audio_context_manager.d.ts +131 -0
  566. package/dist/utils/context/audio_context_manager.js +233 -0
  567. package/dist/utils/context/index.d.ts +2 -0
  568. package/dist/utils/context/index.js +7 -0
  569. package/dist/utils/context/llm_context_summarization.d.ts +258 -0
  570. package/dist/utils/context/llm_context_summarization.js +511 -0
  571. package/dist/utils/context/text_segment_map.d.ts +611 -0
  572. package/dist/utils/context/text_segment_map.js +1132 -0
  573. package/dist/utils/context/word_completion_tracker.d.ts +273 -0
  574. package/dist/utils/context/word_completion_tracker.js +441 -0
  575. package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
  576. package/dist/utils/context/word_timestamp_tracker.js +98 -0
  577. package/dist/utils/deprecation.d.ts +28 -0
  578. package/dist/utils/deprecation.js +75 -0
  579. package/dist/utils/env.d.ts +38 -0
  580. package/dist/utils/env.js +62 -0
  581. package/dist/utils/errors.d.ts +75 -0
  582. package/dist/utils/errors.js +202 -0
  583. package/dist/utils/file_resolver.d.ts +126 -0
  584. package/dist/utils/file_resolver.js +314 -0
  585. package/dist/utils/file_storage.d.ts +99 -0
  586. package/dist/utils/file_storage.js +100 -0
  587. package/dist/utils/frame_queue.d.ts +36 -0
  588. package/dist/utils/frame_queue.js +66 -0
  589. package/dist/utils/http.d.ts +39 -0
  590. package/dist/utils/http.js +53 -0
  591. package/dist/utils/image.d.ts +15 -0
  592. package/dist/utils/image.js +30 -0
  593. package/dist/utils/index.d.ts +2 -0
  594. package/dist/utils/index.js +8 -0
  595. package/dist/utils/log_config.d.ts +34 -0
  596. package/dist/utils/log_config.js +76 -0
  597. package/dist/utils/logger.d.ts +40 -0
  598. package/dist/utils/logger.js +91 -0
  599. package/dist/utils/mixin.d.ts +14 -0
  600. package/dist/utils/mixin.js +63 -0
  601. package/dist/utils/network.d.ts +73 -0
  602. package/dist/utils/network.js +90 -0
  603. package/dist/utils/security/allowed_origins.d.ts +16 -0
  604. package/dist/utils/security/allowed_origins.js +34 -0
  605. package/dist/utils/security/index.d.ts +2 -0
  606. package/dist/utils/security/index.js +7 -0
  607. package/dist/utils/security/redaction.d.ts +27 -0
  608. package/dist/utils/security/redaction.js +123 -0
  609. package/dist/utils/security/ssrf.d.ts +79 -0
  610. package/dist/utils/security/ssrf.js +327 -0
  611. package/dist/utils/shared.d.ts +35 -0
  612. package/dist/utils/shared.js +136 -0
  613. package/dist/utils/startup.d.ts +17 -0
  614. package/dist/utils/startup.js +130 -0
  615. package/dist/utils/string.d.ts +116 -0
  616. package/dist/utils/string.js +460 -0
  617. package/dist/utils/sync/base_notifier.d.ts +25 -0
  618. package/dist/utils/sync/base_notifier.js +16 -0
  619. package/dist/utils/sync/event_notifier.d.ts +38 -0
  620. package/dist/utils/sync/event_notifier.js +51 -0
  621. package/dist/utils/sync/index.d.ts +2 -0
  622. package/dist/utils/sync/index.js +7 -0
  623. package/dist/utils/text/alnum_utils.d.ts +109 -0
  624. package/dist/utils/text/alnum_utils.js +262 -0
  625. package/dist/utils/text/base_text_aggregator.d.ts +146 -0
  626. package/dist/utils/text/base_text_aggregator.js +102 -0
  627. package/dist/utils/text/base_text_filter.d.ts +54 -0
  628. package/dist/utils/text/base_text_filter.js +50 -0
  629. package/dist/utils/text/index.d.ts +2 -0
  630. package/dist/utils/text/index.js +7 -0
  631. package/dist/utils/text/markdown_text_filter.d.ts +147 -0
  632. package/dist/utils/text/markdown_text_filter.js +522 -0
  633. package/dist/utils/text/markup_utils.d.ts +54 -0
  634. package/dist/utils/text/markup_utils.js +156 -0
  635. package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
  636. package/dist/utils/text/pattern_pair_aggregator.js +478 -0
  637. package/dist/utils/text/phonemes.d.ts +60 -0
  638. package/dist/utils/text/phonemes.js +172 -0
  639. package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
  640. package/dist/utils/text/simple_text_aggregator.js +254 -0
  641. package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
  642. package/dist/utils/text/skip_tags_aggregator.js +147 -0
  643. package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
  644. package/dist/utils/text/transforms/pronunciations.js +111 -0
  645. package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
  646. package/dist/utils/text/word_timestamp_utils.js +52 -0
  647. package/dist/utils/time.d.ts +13 -0
  648. package/dist/utils/time.js +31 -0
  649. package/dist/utils/tracing/index.d.ts +3 -0
  650. package/dist/utils/tracing/index.js +8 -0
  651. package/dist/utils/tracing/service_attributes.d.ts +198 -0
  652. package/dist/utils/tracing/service_attributes.js +434 -0
  653. package/dist/utils/tracing/service_decorators.d.ts +214 -0
  654. package/dist/utils/tracing/service_decorators.js +1662 -0
  655. package/dist/utils/tracing/setup.d.ts +95 -0
  656. package/dist/utils/tracing/setup.js +110 -0
  657. package/dist/utils/tracing/tracing_context.d.ts +55 -0
  658. package/dist/utils/tracing/tracing_context.js +97 -0
  659. package/dist/utils/tracing/turn_trace_observer.d.ts +90 -0
  660. package/dist/utils/tracing/turn_trace_observer.js +219 -0
  661. package/dist/utils/types.d.ts +80 -0
  662. package/dist/utils/types.js +108 -0
  663. package/dist/utils/utils.d.ts +5 -0
  664. package/dist/utils/utils.js +22 -0
  665. package/dist/utils/yaml.d.ts +64 -0
  666. package/dist/utils/yaml.js +41 -0
  667. package/dist/version.d.ts +3 -0
  668. package/dist/version.js +7 -0
  669. package/dist/workers/base_worker.d.ts +772 -0
  670. package/dist/workers/base_worker.js +1298 -0
  671. package/dist/workers/index.d.ts +2 -0
  672. package/dist/workers/index.js +8 -0
  673. package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
  674. package/dist/workers/llm/backend_llm_worker.js +1055 -0
  675. package/dist/workers/llm/index.d.ts +6 -0
  676. package/dist/workers/llm/index.js +11 -0
  677. package/dist/workers/llm/llm_context_worker.d.ts +66 -0
  678. package/dist/workers/llm/llm_context_worker.js +72 -0
  679. package/dist/workers/llm/llm_worker.d.ts +180 -0
  680. package/dist/workers/llm/llm_worker.js +323 -0
  681. package/dist/workers/llm/tool_decorator.d.ts +68 -0
  682. package/dist/workers/llm/tool_decorator.js +60 -0
  683. package/dist/workers/runner.d.ts +268 -0
  684. package/dist/workers/runner.js +489 -0
  685. package/dist/workers/ui/index.d.ts +22 -0
  686. package/dist/workers/ui/index.js +27 -0
  687. package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
  688. package/dist/workers/ui/ui_event_decorator.js +75 -0
  689. package/dist/workers/ui/ui_job_context.d.ts +12 -0
  690. package/dist/workers/ui/ui_job_context.js +17 -0
  691. package/dist/workers/ui/ui_prompts.d.ts +21 -0
  692. package/dist/workers/ui/ui_prompts.js +41 -0
  693. package/dist/workers/ui/ui_tools.d.ts +32 -0
  694. package/dist/workers/ui/ui_tools.js +112 -0
  695. package/dist/workers/ui/ui_worker.d.ts +571 -0
  696. package/dist/workers/ui/ui_worker.js +1156 -0
  697. package/package.json +46 -3
  698. package/README.md +0 -5
@@ -0,0 +1,6 @@
1
+ /** LLM worker package -- `LLMWorker`, `LLMContextWorker`, `BackendLLMWorker`, and the `tool` decorator. */
2
+ export { BackendLLMWorker, BackendOutput } from "./backend_llm_worker.ts";
3
+ export { LLMContextWorker } from "./llm_context_worker.ts";
4
+ export { LLMWorker, LLMWorkerActivationArgs } from "./llm_worker.ts";
5
+ export { tool } from "./tool_decorator.ts";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,11 @@
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/workers/llm/__init__.py
6
+ /** LLM worker package -- `LLMWorker`, `LLMContextWorker`, `BackendLLMWorker`, and the `tool` decorator. */
7
+ export { BackendLLMWorker, BackendOutput } from "./backend_llm_worker.js";
8
+ export { LLMContextWorker } from "./llm_context_worker.js";
9
+ export { LLMWorker, LLMWorkerActivationArgs } from "./llm_worker.js";
10
+ export { tool } from "./tool_decorator.js";
11
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,66 @@
1
+ import { LLMContext } from "../../processors/aggregators/llm_context.ts";
2
+ import { type LLMAssistantAggregator, type LLMAssistantAggregatorParams, LLMContextAggregatorPair, type LLMUserAggregator, type LLMUserAggregatorParams } from "../../processors/aggregators/llm_response_universal.ts";
3
+ import type { LLMService } from "../../services/llm_service.ts";
4
+ import { LLMWorker } from "./llm_worker.ts";
5
+ export interface LLMContextWorkerOptions {
6
+ /**
7
+ * Unique name for this worker on the bus. Auto-generated when omitted; give
8
+ * one when other workers address this one by name, as they must when it
9
+ * runs in another process.
10
+ */
11
+ name?: string | null;
12
+ /** The LLM service. */
13
+ llm: LLMService;
14
+ /** Whether the worker starts active. Defaults to false. */
15
+ active?: boolean;
16
+ /**
17
+ * Bridge configuration forwarded to `PipelineWorker`. Pass `[]` to wrap the
18
+ * pipeline with bus edges so it can exchange frames with another bridged
19
+ * worker.
20
+ */
21
+ bridged?: readonly string[] | null;
22
+ /**
23
+ * Whether to defer frames queued during tool execution until all tools
24
+ * complete. Defaults to true.
25
+ */
26
+ deferToolFrames?: boolean;
27
+ /** Optional pre-built `LLMContext`. When omitted, a fresh empty context is created. */
28
+ context?: LLMContext | null;
29
+ /** Optional parameters for the user aggregator. */
30
+ userParams?: LLMUserAggregatorParams | null;
31
+ /** Optional parameters for the assistant aggregator. */
32
+ assistantParams?: LLMAssistantAggregatorParams | null;
33
+ }
34
+ /**
35
+ * LLM worker that owns an `LLMContext` and a context aggregator pair.
36
+ *
37
+ * Useful for workers that need to track their own conversation history,
38
+ * typically workers that run their own LLM pipeline outside of a shared
39
+ * transport pipeline. Subclasses do not need to instantiate the context or
40
+ * aggregators themselves; the pipeline is built as
41
+ * `[userAggregator, llm, assistantAggregator]` automatically.
42
+ *
43
+ * @example
44
+ * const worker = new LLMContextWorker({
45
+ * name: "worker",
46
+ * llm: new OpenAILLMService({ ... }),
47
+ * });
48
+ *
49
+ * worker.assistantAggregator.addEventHandler(
50
+ * "on_assistant_turn_stopped",
51
+ * async (aggregator, message) => { ... },
52
+ * );
53
+ */
54
+ export declare class LLMContextWorker extends LLMWorker {
55
+ protected _context: LLMContext;
56
+ protected _aggregators: LLMContextAggregatorPair;
57
+ /** Initialize the LLMContextWorker. */
58
+ constructor(options: LLMContextWorkerOptions);
59
+ /** The `LLMContext` owned by this worker. */
60
+ get context(): LLMContext;
61
+ /** The user-side context aggregator. */
62
+ get userAggregator(): LLMUserAggregator;
63
+ /** The assistant-side context aggregator. */
64
+ get assistantAggregator(): LLMAssistantAggregator;
65
+ }
66
+ //# sourceMappingURL=llm_context_worker.d.ts.map
@@ -0,0 +1,72 @@
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/workers/llm/llm_context_worker.py
6
+ /**
7
+ * LLM worker with a built-in `LLMContext` and aggregator pair.
8
+ *
9
+ * Provides the `LLMContextWorker` class that extends `LLMWorker` with a
10
+ * self-contained conversation context, removing the need for subclasses to
11
+ * manually wire `LLMContextAggregatorPair`.
12
+ */
13
+ import { Pipeline } from "../../pipeline/pipeline.js";
14
+ import { LLMContext } from "../../processors/aggregators/llm_context.js";
15
+ import { LLMContextAggregatorPair, } from "../../processors/aggregators/llm_response_universal.js";
16
+ import { LLMWorker } from "./llm_worker.js";
17
+ /**
18
+ * LLM worker that owns an `LLMContext` and a context aggregator pair.
19
+ *
20
+ * Useful for workers that need to track their own conversation history,
21
+ * typically workers that run their own LLM pipeline outside of a shared
22
+ * transport pipeline. Subclasses do not need to instantiate the context or
23
+ * aggregators themselves; the pipeline is built as
24
+ * `[userAggregator, llm, assistantAggregator]` automatically.
25
+ *
26
+ * @example
27
+ * const worker = new LLMContextWorker({
28
+ * name: "worker",
29
+ * llm: new OpenAILLMService({ ... }),
30
+ * });
31
+ *
32
+ * worker.assistantAggregator.addEventHandler(
33
+ * "on_assistant_turn_stopped",
34
+ * async (aggregator, message) => { ... },
35
+ * );
36
+ */
37
+ export class LLMContextWorker extends LLMWorker {
38
+ _context;
39
+ _aggregators;
40
+ /** Initialize the LLMContextWorker. */
41
+ constructor(options) {
42
+ const context = options.context || new LLMContext();
43
+ const aggregators = new LLMContextAggregatorPair(context, {
44
+ userParams: options.userParams ?? null,
45
+ assistantParams: options.assistantParams ?? null,
46
+ });
47
+ const pipeline = new Pipeline([aggregators.user(), options.llm, aggregators.assistant()]);
48
+ super({
49
+ name: options.name ?? null,
50
+ llm: options.llm,
51
+ pipeline,
52
+ active: options.active ?? false,
53
+ bridged: options.bridged ?? null,
54
+ deferToolFrames: options.deferToolFrames ?? true,
55
+ });
56
+ this._context = context;
57
+ this._aggregators = aggregators;
58
+ }
59
+ /** The `LLMContext` owned by this worker. */
60
+ get context() {
61
+ return this._context;
62
+ }
63
+ /** The user-side context aggregator. */
64
+ get userAggregator() {
65
+ return this._aggregators.user();
66
+ }
67
+ /** The assistant-side context aggregator. */
68
+ get assistantAggregator() {
69
+ return this._aggregators.assistant();
70
+ }
71
+ }
72
+ //# sourceMappingURL=llm_context_worker.js.map
@@ -0,0 +1,180 @@
1
+ import { type Frame } from "../../frames/frames.ts";
2
+ import { Pipeline } from "../../pipeline/pipeline.ts";
3
+ import { PipelineWorker } from "../../pipeline/worker.ts";
4
+ import type { LLMContextMessage } from "../../processors/aggregators/llm_context.ts";
5
+ import { FrameDirection } from "../../processors/frame_processor.ts";
6
+ import type { FunctionCallParams, LLMService } from "../../services/llm_service.ts";
7
+ import { WorkerActivationArgs, type WorkerActivationArgsOptions } from "../base_worker.ts";
8
+ import { type LLMTool } from "./tool_decorator.ts";
9
+ type Dict = Record<string, unknown>;
10
+ export interface LLMWorkerActivationArgsOptions extends WorkerActivationArgsOptions {
11
+ /** LLM context messages to inject on activation. */
12
+ messages?: LLMContextMessage[] | null;
13
+ /**
14
+ * Whether to run the LLM after appending messages. Defaults to true when
15
+ * `messages` is set.
16
+ */
17
+ runLlm?: boolean | null;
18
+ }
19
+ /**
20
+ * Activation arguments for LLM workers.
21
+ *
22
+ * - `messages`: LLM context messages to inject on activation.
23
+ * - `runLlm`: whether to run the LLM after appending messages. Defaults to
24
+ * true when `messages` is set.
25
+ */
26
+ export declare class LLMWorkerActivationArgs extends WorkerActivationArgs {
27
+ messages: LLMContextMessage[] | null;
28
+ runLlm: boolean | null;
29
+ constructor(options?: LLMWorkerActivationArgsOptions);
30
+ }
31
+ export interface LLMWorkerOptions {
32
+ /**
33
+ * Unique name for this worker on the bus. Auto-generated when omitted; give
34
+ * one when other workers address this one by name, as they must when it
35
+ * runs in another process.
36
+ */
37
+ name?: string | null;
38
+ /** The LLM service. `tool` decorated methods are automatically registered on it. */
39
+ llm: LLMService;
40
+ /**
41
+ * Optional pipeline override. When null, defaults to `new Pipeline([llm])`.
42
+ * Subclasses can pass a custom pipeline that wraps the LLM with additional
43
+ * processors.
44
+ */
45
+ pipeline?: Pipeline | null;
46
+ /** Whether the worker starts active. Defaults to false. */
47
+ active?: boolean;
48
+ /**
49
+ * Bridge configuration forwarded to `PipelineWorker`. Pass `[]` to wrap the
50
+ * LLM pipeline with bus edge processors so it can exchange frames with
51
+ * another bridged worker.
52
+ */
53
+ bridged?: readonly string[] | null;
54
+ /**
55
+ * Whether to defer frames queued during tool execution until all tools
56
+ * complete. Defaults to true.
57
+ */
58
+ deferToolFrames?: boolean;
59
+ }
60
+ /**
61
+ * Worker with an LLM pipeline and automatic tool registration.
62
+ *
63
+ * Methods decorated with `tool` are registered as direct functions on the LLM
64
+ * and tracked so that frames queued during tool execution can be deferred
65
+ * until all tools complete.
66
+ *
67
+ * @example
68
+ * class MyTask extends LLMWorker {
69
+ * async my_function(params: FunctionCallParams, arg: string) { ... }
70
+ * static {
71
+ * tool(this.prototype.my_function);
72
+ * }
73
+ * }
74
+ *
75
+ * const worker = new MyTask({ name: "worker", llm: new OpenAILLMService({ apiKey: "..." }) });
76
+ */
77
+ export declare class LLMWorker extends PipelineWorker {
78
+ protected _deferToolFrames: boolean;
79
+ protected _toolCallInflight: number;
80
+ protected _deferredFrames: [Frame, FrameDirection][];
81
+ protected _pendingHandover: (() => Promise<void>) | null;
82
+ protected _closing: boolean;
83
+ protected _llm: LLMService;
84
+ /** Initialize the LLMWorker. */
85
+ constructor(options: LLMWorkerOptions);
86
+ /** The LLM service this worker wraps. */
87
+ get llm(): LLMService;
88
+ /** True when one or more `tool` methods are executing. */
89
+ get toolCallActive(): boolean;
90
+ /**
91
+ * Configure the LLM with tools and activation messages.
92
+ *
93
+ * @param args Optional activation arguments with messages to append.
94
+ */
95
+ onActivated(args: Dict | null): Promise<void>;
96
+ /**
97
+ * Queue a frame, holding it if a tool handler queued it.
98
+ *
99
+ * A frame queued from inside one of this worker's `tool` handlers, or from
100
+ * anything that handler awaits, is held and delivered once the last tool
101
+ * finishes. Frames from anywhere else are queued immediately: the worker's
102
+ * own traffic and frames arriving over the bus, which run outside any
103
+ * handler's context, and frames a handler on a different worker queues
104
+ * here, which this worker would never release.
105
+ *
106
+ * @param frame Any `Frame` to deliver.
107
+ * @param direction Direction the frame should travel. Defaults to
108
+ * `FrameDirection.DOWNSTREAM`.
109
+ */
110
+ queueFrame(frame: Frame, direction?: FrameDirection): Promise<void>;
111
+ /**
112
+ * Return the tools for this worker's LLM.
113
+ *
114
+ * By default, returns all methods decorated with `tool`. Override to
115
+ * provide additional or different tools.
116
+ *
117
+ * @returns List of tool functions.
118
+ */
119
+ buildTools(): LLMTool[];
120
+ /**
121
+ * Request a graceful end of the session.
122
+ *
123
+ * When called from a `tool` handler, deliver the function call result first
124
+ * with `await params.resultCallback(result)`: the LLM output it triggers is
125
+ * delivered before the session ends.
126
+ *
127
+ * @param options.reason Optional human-readable reason for ending.
128
+ */
129
+ end(options?: {
130
+ reason?: string | null;
131
+ }): Promise<void>;
132
+ /**
133
+ * Activate another worker, draining this worker's pipeline to hand over.
134
+ *
135
+ * When called from a `tool` handler, deliver the function call result first
136
+ * with `await params.resultCallback(result)`: the output it triggers is
137
+ * delivered before the target is activated. The handover itself waits
138
+ * until the tool call asking for it has finished.
139
+ *
140
+ * @param workerName The name of the worker to activate.
141
+ * @param options.args Optional `WorkerActivationArgs` forwarded to the
142
+ * target worker's `onActivated` handler.
143
+ * @param options.deactivateSelf Whether to deactivate this worker before
144
+ * activating the target. Deactivating this worker drains its pipeline
145
+ * first; staying active does not. A worker that stays active and wants to
146
+ * drain anyway can call `flushPipeline` before this.
147
+ */
148
+ activateWorker(workerName: string, options?: {
149
+ args?: WorkerActivationArgs | null;
150
+ deactivateSelf?: boolean;
151
+ }): Promise<void>;
152
+ /**
153
+ * Process deferred frames before they are flushed.
154
+ *
155
+ * Called after all in-flight tools complete, before the deferred frames are
156
+ * queued into the pipeline. Override to inspect, modify, reorder, or filter
157
+ * the frames.
158
+ *
159
+ * @param frames The deferred frames collected during tool execution.
160
+ * @returns The frames to queue. Return the list as-is for default behavior.
161
+ */
162
+ processDeferredToolFrames(frames: [Frame, FrameDirection][]): Promise<[Frame, FrameDirection][]>;
163
+ /** Register `tool` methods on the LLM in place. */
164
+ protected _registerTools(llm: LLMService): void;
165
+ /**
166
+ * Run a handover once no tool call is in flight.
167
+ *
168
+ * A tool asking to end or hand over is still running when it asks, and
169
+ * deactivating a worker mid-call leaves the rest of that call to a worker
170
+ * nobody is listening to. Held here and run once the last call finishes;
171
+ * outside a call there is nothing to wait for, so it runs now.
172
+ *
173
+ * @param handover What to do once the calls are done.
174
+ */
175
+ protected _afterToolCalls(handover: () => Promise<void>): Promise<void>;
176
+ protected _trackToolCall(method: LLMTool): (params: FunctionCallParams) => Promise<void>;
177
+ protected _flushDeferredFrames(): Promise<void>;
178
+ }
179
+ export {};
180
+ //# sourceMappingURL=llm_worker.d.ts.map
@@ -0,0 +1,323 @@
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/workers/llm/llm_worker.py
6
+ /**
7
+ * LLM worker with tool registration.
8
+ *
9
+ * Provides the `LLMWorker` class that extends `PipelineWorker` with an LLM
10
+ * pipeline and automatic tool registration.
11
+ *
12
+ * Porting notes:
13
+ * - The deprecated `messages` / `resultCallback` arguments of `end()` and
14
+ * `activateWorker()` are not ported, nor is `_finishFunctionCall`, which
15
+ * only they used. Call `params.resultCallback(result)` before `end()` /
16
+ * `activateWorker()` instead.
17
+ * - `_IN_TOOL_CALL` is a context variable upstream. JavaScript has no
18
+ * context variables in core (no `node:async_hooks` outside
19
+ * `@pipedog/asyncio`), so the worker running a tool is recorded per
20
+ * asyncio-style task instead. DIVERGENCE: a task the tool handler spawns
21
+ * (e.g. with `gather` or `createTask`) does not inherit it, so frames
22
+ * queued from such a task are not held.
23
+ * - Tools are registered with `llm.registerFunction` and a bound direct
24
+ * function wrapper, rather than upstream's private
25
+ * `_register_direct_function`, because a bound (or wrapping) function no
26
+ * longer exposes the parameter list its direct-function schema is read
27
+ * from. The registration is explicit either way, so the advertised tools
28
+ * never auto-register over it.
29
+ */
30
+ import { currentTask } from "@pipedog/asyncio";
31
+ import { DirectFunctionWrapper } from "../../adapters/schemas/direct_function.js";
32
+ import { ToolsSchema } from "../../adapters/schemas/tools_schema.js";
33
+ import { LLMMessagesAppendFrame, LLMSetToolsFrame } from "../../frames/frames.js";
34
+ import { Pipeline } from "../../pipeline/pipeline.js";
35
+ import { PipelineParams, PipelineWorker } from "../../pipeline/worker.js";
36
+ import { FrameDirection } from "../../processors/frame_processor.js";
37
+ import { WorkerActivationArgs } from "../base_worker.js";
38
+ import { _collectTools } from "./tool_decorator.js";
39
+ /**
40
+ * Activation arguments for LLM workers.
41
+ *
42
+ * - `messages`: LLM context messages to inject on activation.
43
+ * - `runLlm`: whether to run the LLM after appending messages. Defaults to
44
+ * true when `messages` is set.
45
+ */
46
+ export class LLMWorkerActivationArgs extends WorkerActivationArgs {
47
+ messages;
48
+ runLlm;
49
+ constructor(options = {}) {
50
+ super(options);
51
+ this.messages = options.messages ?? null;
52
+ this.runLlm = options.runLlm ?? null;
53
+ }
54
+ }
55
+ /**
56
+ * The worker whose `tool` handler is running, for the duration of that
57
+ * handler. Upstream this is a context variable rather than a counter so it
58
+ * answers "did this come from a tool", not "is a tool running somewhere": the
59
+ * bus dispatch tasks were created before any tool and carry a context where
60
+ * this is unset, so their frames are never mistaken for a handler's. It holds
61
+ * the worker rather than a flag because a handler can reach another worker,
62
+ * and only the worker running the tool will release what it holds.
63
+ *
64
+ * Here it is kept per task (see the module notes).
65
+ */
66
+ const IN_TOOL_CALL = new WeakMap();
67
+ function getInToolCall() {
68
+ const task = currentTask();
69
+ return task ? (IN_TOOL_CALL.get(task) ?? null) : null;
70
+ }
71
+ /** Set the current task's value; returns a token to restore the previous one. */
72
+ function setInToolCall(worker) {
73
+ const task = currentTask();
74
+ const previous = task ? (IN_TOOL_CALL.get(task) ?? null) : null;
75
+ if (task) {
76
+ IN_TOOL_CALL.set(task, worker);
77
+ }
78
+ return { task, previous };
79
+ }
80
+ function resetInToolCall(token) {
81
+ if (!token.task)
82
+ return;
83
+ if (token.previous === null) {
84
+ IN_TOOL_CALL.delete(token.task);
85
+ }
86
+ else {
87
+ IN_TOOL_CALL.set(token.task, token.previous);
88
+ }
89
+ }
90
+ /**
91
+ * A direct function wrapper that invokes the function with `this` bound to
92
+ * its owner, so a tool method keeps both its parameter list (read from its
93
+ * source) and its worker.
94
+ */
95
+ class _BoundDirectFunctionWrapper extends DirectFunctionWrapper {
96
+ #thisArg;
97
+ constructor(fn, thisArg) {
98
+ super(fn);
99
+ this.#thisArg = thisArg;
100
+ }
101
+ async invoke(args, params) {
102
+ const positional = this._argumentNames().map((name) => args[name]);
103
+ return await this.function.call(this.#thisArg, params, ...positional);
104
+ }
105
+ }
106
+ /**
107
+ * Worker with an LLM pipeline and automatic tool registration.
108
+ *
109
+ * Methods decorated with `tool` are registered as direct functions on the LLM
110
+ * and tracked so that frames queued during tool execution can be deferred
111
+ * until all tools complete.
112
+ *
113
+ * @example
114
+ * class MyTask extends LLMWorker {
115
+ * async my_function(params: FunctionCallParams, arg: string) { ... }
116
+ * static {
117
+ * tool(this.prototype.my_function);
118
+ * }
119
+ * }
120
+ *
121
+ * const worker = new MyTask({ name: "worker", llm: new OpenAILLMService({ apiKey: "..." }) });
122
+ */
123
+ export class LLMWorker extends PipelineWorker {
124
+ // State referenced by tool wrapper closures.
125
+ _deferToolFrames;
126
+ _toolCallInflight = 0;
127
+ _deferredFrames = [];
128
+ // A handover or ending a tool asked for, held until its call is done.
129
+ _pendingHandover = null;
130
+ _closing = false;
131
+ _llm;
132
+ /** Initialize the LLMWorker. */
133
+ constructor(options) {
134
+ const pipeline = options.pipeline ?? new Pipeline([options.llm]);
135
+ super(pipeline, {
136
+ name: options.name ?? null,
137
+ bridged: options.bridged ?? null,
138
+ idleTimeoutSecs: null,
139
+ params: new PipelineParams({
140
+ enableMetrics: true,
141
+ enableUsageMetrics: true,
142
+ }),
143
+ active: options.active ?? false,
144
+ });
145
+ this._deferToolFrames = options.deferToolFrames ?? true;
146
+ this._llm = options.llm;
147
+ this._registerTools(this._llm);
148
+ }
149
+ /** The LLM service this worker wraps. */
150
+ get llm() {
151
+ return this._llm;
152
+ }
153
+ /** True when one or more `tool` methods are executing. */
154
+ get toolCallActive() {
155
+ return this._toolCallInflight > 0;
156
+ }
157
+ /**
158
+ * Configure the LLM with tools and activation messages.
159
+ *
160
+ * @param args Optional activation arguments with messages to append.
161
+ */
162
+ async onActivated(args) {
163
+ await super.onActivated(args);
164
+ const activation = args
165
+ ? LLMWorkerActivationArgs.fromDict(args)
166
+ : new LLMWorkerActivationArgs();
167
+ const tools = this.buildTools();
168
+ if (tools.length > 0) {
169
+ await this.queueFrame(new LLMSetToolsFrame({ tools: new ToolsSchema({ standardTools: tools }) }));
170
+ }
171
+ if (activation.messages && activation.messages.length > 0) {
172
+ const runLlm = activation.runLlm !== null ? activation.runLlm : true;
173
+ await this.queueFrame(new LLMMessagesAppendFrame({ messages: activation.messages, runLlm }));
174
+ }
175
+ }
176
+ /**
177
+ * Queue a frame, holding it if a tool handler queued it.
178
+ *
179
+ * A frame queued from inside one of this worker's `tool` handlers, or from
180
+ * anything that handler awaits, is held and delivered once the last tool
181
+ * finishes. Frames from anywhere else are queued immediately: the worker's
182
+ * own traffic and frames arriving over the bus, which run outside any
183
+ * handler's context, and frames a handler on a different worker queues
184
+ * here, which this worker would never release.
185
+ *
186
+ * @param frame Any `Frame` to deliver.
187
+ * @param direction Direction the frame should travel. Defaults to
188
+ * `FrameDirection.DOWNSTREAM`.
189
+ */
190
+ async queueFrame(frame, direction = FrameDirection.DOWNSTREAM) {
191
+ if (this._deferToolFrames && getInToolCall() === this && !this._closing) {
192
+ this._deferredFrames.push([frame, direction]);
193
+ }
194
+ else {
195
+ await super.queueFrame(frame, direction);
196
+ }
197
+ }
198
+ /**
199
+ * Return the tools for this worker's LLM.
200
+ *
201
+ * By default, returns all methods decorated with `tool`. Override to
202
+ * provide additional or different tools.
203
+ *
204
+ * @returns List of tool functions.
205
+ */
206
+ buildTools() {
207
+ return _collectTools(this);
208
+ }
209
+ /**
210
+ * Request a graceful end of the session.
211
+ *
212
+ * When called from a `tool` handler, deliver the function call result first
213
+ * with `await params.resultCallback(result)`: the LLM output it triggers is
214
+ * delivered before the session ends.
215
+ *
216
+ * @param options.reason Optional human-readable reason for ending.
217
+ */
218
+ async end(options = {}) {
219
+ this._closing = true;
220
+ await this._afterToolCalls(() => super.end({ reason: options.reason ?? null }));
221
+ }
222
+ /**
223
+ * Activate another worker, draining this worker's pipeline to hand over.
224
+ *
225
+ * When called from a `tool` handler, deliver the function call result first
226
+ * with `await params.resultCallback(result)`: the output it triggers is
227
+ * delivered before the target is activated. The handover itself waits
228
+ * until the tool call asking for it has finished.
229
+ *
230
+ * @param workerName The name of the worker to activate.
231
+ * @param options.args Optional `WorkerActivationArgs` forwarded to the
232
+ * target worker's `onActivated` handler.
233
+ * @param options.deactivateSelf Whether to deactivate this worker before
234
+ * activating the target. Deactivating this worker drains its pipeline
235
+ * first; staying active does not. A worker that stays active and wants to
236
+ * drain anyway can call `flushPipeline` before this.
237
+ */
238
+ async activateWorker(workerName, options = {}) {
239
+ await this._afterToolCalls(() => super.activateWorker(workerName, {
240
+ args: options.args ?? null,
241
+ deactivateSelf: options.deactivateSelf ?? false,
242
+ }));
243
+ }
244
+ /**
245
+ * Process deferred frames before they are flushed.
246
+ *
247
+ * Called after all in-flight tools complete, before the deferred frames are
248
+ * queued into the pipeline. Override to inspect, modify, reorder, or filter
249
+ * the frames.
250
+ *
251
+ * @param frames The deferred frames collected during tool execution.
252
+ * @returns The frames to queue. Return the list as-is for default behavior.
253
+ */
254
+ async processDeferredToolFrames(frames) {
255
+ return frames;
256
+ }
257
+ /** Register `tool` methods on the LLM in place. */
258
+ _registerTools(llm) {
259
+ for (const method of _collectTools(this)) {
260
+ const tracked = this._trackToolCall(method);
261
+ llm.registerFunction(method.name, tracked, {
262
+ cancelOnInterruption: method._pipecatCancelOnInterruption ?? true,
263
+ timeoutSecs: method._pipecatTimeoutSecs ?? null,
264
+ });
265
+ }
266
+ }
267
+ /**
268
+ * Run a handover once no tool call is in flight.
269
+ *
270
+ * A tool asking to end or hand over is still running when it asks, and
271
+ * deactivating a worker mid-call leaves the rest of that call to a worker
272
+ * nobody is listening to. Held here and run once the last call finishes;
273
+ * outside a call there is nothing to wait for, so it runs now.
274
+ *
275
+ * @param handover What to do once the calls are done.
276
+ */
277
+ async _afterToolCalls(handover) {
278
+ if (this._toolCallInflight) {
279
+ this._pendingHandover = handover;
280
+ }
281
+ else {
282
+ await handover();
283
+ }
284
+ }
285
+ _trackToolCall(method) {
286
+ const wrapper = new _BoundDirectFunctionWrapper(method, this);
287
+ return async (params) => {
288
+ this._toolCallInflight += 1;
289
+ const token = setInToolCall(this);
290
+ try {
291
+ await wrapper.invoke(params.arguments, params);
292
+ }
293
+ finally {
294
+ resetInToolCall(token);
295
+ this._toolCallInflight = Math.max(0, this._toolCallInflight - 1);
296
+ if (this._toolCallInflight === 0) {
297
+ if (!this._closing) {
298
+ await this._flushDeferredFrames();
299
+ }
300
+ const handover = this._pendingHandover;
301
+ this._pendingHandover = null;
302
+ if (handover) {
303
+ await handover();
304
+ }
305
+ }
306
+ }
307
+ };
308
+ }
309
+ async _flushDeferredFrames() {
310
+ const frames = [...this._deferredFrames];
311
+ this._deferredFrames.length = 0;
312
+ // Held frames go back in behind the function call result, so wait for
313
+ // that to be processed first. With nothing held there is nothing to
314
+ // order, and the round-trip would buy nothing.
315
+ if (frames.length > 0) {
316
+ await this.flushPipeline();
317
+ }
318
+ for (const [frame, direction] of await this.processDeferredToolFrames(frames)) {
319
+ await this.queueFrame(frame, direction);
320
+ }
321
+ }
322
+ }
323
+ //# sourceMappingURL=llm_worker.js.map