@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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,8 @@
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/__init__.py
6
+ // Upstream's `__init__.py` is empty: import the package's modules directly.
7
+ export {};
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,552 @@
1
+ /**
2
+ * Backend LLM worker for two-tier voice agents.
3
+ *
4
+ * A frontend holds the conversation and hands off requests that need tools or
5
+ * careful reasoning. What the frontend is does not matter to this contract: a
6
+ * speech-to-speech model delegating on its own, or a pipeline calling a tool.
7
+ * A `BackendLLMWorker` runs any Pipecat LLM service, with its own context and
8
+ * multi-step tool calling, to do that work.
9
+ *
10
+ * The frontend and the backend exchange messages. A frontend *attaches* to the
11
+ * worker once, for as long as it lives, and from then on hears everything the
12
+ * backend produces as a stream: each of its model's turns and reasoning
13
+ * summaries as a `BackendOutput`, each phase of the function calls it makes as
14
+ * a `BackendToolCall`, and when it has run out of things to do, that it is
15
+ * idle. Requests go the other way as messages appended to the backend's
16
+ * conversation, each answered at once; a message that arrives while the
17
+ * backend is working joins that work, and the backend's model sorts out what
18
+ * it means. `_BackendSession` is the caller side of that contract.
19
+ *
20
+ * A request is text, so how a frontend words one is its own business.
21
+ * `_renderTranscriptRequest` renders the conversation as a labelled
22
+ * transcript, which is what a frontend hands over when its model signals a
23
+ * handoff without wording a request; a frontend whose model does word one
24
+ * sends that instead. `OpenAILiveLLMService`'s client delegation and
25
+ * `LLMWithBackend` both drive the worker this way.
26
+ *
27
+ * Porting notes:
28
+ * - DIVERGENCE: upstream overrides `PipelineWorker.capabilities` with a plain
29
+ * dict. TypeScript does not allow an override of a different type, so the
30
+ * backend's capabilities are exposed as `backendCapabilities`, and
31
+ * `PipelineWorker.capabilities` keeps its meaning.
32
+ * - `_BackendSession`'s `async with` is `enter()` / `exit()` (or `run(fn)`),
33
+ * and its `async for` is `for await`.
34
+ */
35
+ import { Event } from "@pipedog/asyncio";
36
+ import type { BusJobCancelMessage, BusJobRequestMessage } from "../../bus/messages.ts";
37
+ import { type ErrorFrame, type Frame } from "../../frames/frames.ts";
38
+ import { type JobGroup, JobParams } from "../../pipeline/job_context.ts";
39
+ import { type LLMContext, type LLMContextMessage } from "../../processors/aggregators/llm_context.ts";
40
+ import { type AssistantThoughtMessage, type AssistantTurnStoppedMessage, type LLMAssistantAggregatorParams, LLMUserAggregatorParams } from "../../processors/aggregators/llm_response_universal.ts";
41
+ import type { LLMService } from "../../services/llm_service.ts";
42
+ import type { BaseWorker } from "../base_worker.ts";
43
+ import { LLMContextWorker } from "./llm_context_worker.ts";
44
+ type Dict = Record<string, unknown>;
45
+ /** Name of the job that attaches a frontend to a `BackendLLMWorker`. */
46
+ export declare const ATTACH_JOB_NAME = "attach";
47
+ /** Name of the job that puts a message to an attached `BackendLLMWorker`. */
48
+ export declare const MESSAGE_JOB_NAME = "message";
49
+ /** The `type` of a job update that carries a `BackendOutput`. */
50
+ export declare const OUTPUT_UPDATE_TYPE = "output";
51
+ /** The `type` of a job update that carries a `BackendToolCall`. */
52
+ export declare const TOOL_CALL_UPDATE_TYPE = "tool_call";
53
+ /** The `type` of the update that opens an `attach` job's stream. */
54
+ export declare const ATTACHED_UPDATE_TYPE = "attached";
55
+ /** The `type` of the update that says the backend has nothing left to do. */
56
+ export declare const IDLE_UPDATE_TYPE = "idle";
57
+ /** The `type` of the update that says the backend could not go on. */
58
+ export declare const ERROR_UPDATE_TYPE = "error";
59
+ /**
60
+ * The mark the backend's model puts at the start of a message it wants the
61
+ * user told. The message is sent with `prefersSpoken: true`, mark stripped; a
62
+ * message without it is a note (`prefersSpoken: false`). Strict prompt,
63
+ * flexible parsing: the model is told to put the mark first, but sometimes
64
+ * writes a note paragraph and then a marked one, so a mark at the start of a
65
+ * later line splits the message, a note before it and a spoken message from it
66
+ * on, rather than losing the result. The turn-completion markers are read the
67
+ * same way (`user_turn_completion_mixin`).
68
+ */
69
+ export declare const SPOKEN_MARK = ">>";
70
+ /**
71
+ * How the backend's model works with the assistant, appended to its system
72
+ * instruction: who it is, which of what it writes the user hears, and how it
73
+ * takes requests. The backend's own system instruction says what it does;
74
+ * this says how what it writes reaches the user.
75
+ * `new BackendLLMWorker({ pairingInstruction })` replaces it.
76
+ */
77
+ export declare const BACKEND_PAIRING_INSTRUCTION: string;
78
+ export interface BackendOutputOptions {
79
+ /** The text the backend produced. */
80
+ text: string;
81
+ /** Whether this is a reasoning summary rather than a response. Defaults to false. */
82
+ isThought?: boolean;
83
+ /** Whether the backend would like the user to hear this. Defaults to true. */
84
+ prefersSpoken?: boolean;
85
+ }
86
+ /**
87
+ * One piece of output from a backend, on its way to the frontend.
88
+ *
89
+ * - `text`: the text the backend produced.
90
+ * - `isThought`: whether this is a reasoning summary rather than a response.
91
+ * - `prefersSpoken`: whether the backend would like the user to hear this.
92
+ * This is just a hint to the frontend: it may choose to follow it or not.
93
+ * `OpenAILiveLLMService`'s live model takes it into consideration, but
94
+ * ultimately decides what to speak (or not) based on the conversation.
95
+ */
96
+ export declare class BackendOutput {
97
+ text: string;
98
+ isThought: boolean;
99
+ prefersSpoken: boolean;
100
+ constructor(options: BackendOutputOptions);
101
+ /**
102
+ * Render the output as a job update payload.
103
+ *
104
+ * @returns The payload.
105
+ */
106
+ toPayload(): Dict;
107
+ /**
108
+ * Rebuild an output from a job update payload.
109
+ *
110
+ * @param payload The update payload.
111
+ * @returns The output.
112
+ */
113
+ static fromPayload(payload: Dict): BackendOutput;
114
+ }
115
+ /** The phases of a `BackendToolCall`. */
116
+ export type BackendToolCallPhase = "started" | "in_progress" | "result" | "cancelled";
117
+ export interface BackendToolCallOptions {
118
+ /** `started`, `in_progress`, `result` or `cancelled`. */
119
+ phase: BackendToolCallPhase;
120
+ /** Name of the function called. */
121
+ functionName: string;
122
+ /** Unique identifier of the call. */
123
+ toolCallId: string;
124
+ /** Arguments passed to the function, once known. */
125
+ arguments?: Record<string, unknown> | null;
126
+ /** The result, for the `result` phase. */
127
+ result?: unknown;
128
+ /**
129
+ * For the `result` phase, whether the result completes the call rather
130
+ * than being one of a stream of intermediate results. Defaults to true.
131
+ */
132
+ isFinal?: boolean;
133
+ }
134
+ /**
135
+ * One phase of a function call the backend made while working, on its way to
136
+ * the frontend.
137
+ *
138
+ * The call ran in the backend's own pipeline; the frontend reports it to
139
+ * clients, as the `ExternalFunctionCall*Frame` `toFrame` builds, and does
140
+ * nothing else with it. The phases mirror the pipeline's own function-call
141
+ * frames.
142
+ *
143
+ * - `phase`: `started`, `in_progress`, `result` or `cancelled`.
144
+ * - `functionName`: name of the function called.
145
+ * - `toolCallId`: unique identifier of the call.
146
+ * - `arguments`: arguments passed to the function, once known.
147
+ * - `result`: the result, for the `result` phase.
148
+ * - `isFinal`: for the `result` phase, whether the result completes the call
149
+ * rather than being one of a stream of intermediate results.
150
+ */
151
+ export declare class BackendToolCall {
152
+ phase: BackendToolCallPhase;
153
+ functionName: string;
154
+ toolCallId: string;
155
+ arguments: Record<string, unknown> | null;
156
+ result: unknown;
157
+ isFinal: boolean;
158
+ constructor(options: BackendToolCallOptions);
159
+ /**
160
+ * Render the call phase as a job update payload.
161
+ *
162
+ * @returns The payload.
163
+ */
164
+ toPayload(): Dict;
165
+ /**
166
+ * Rebuild a call phase from a job update payload.
167
+ *
168
+ * @param payload The update payload.
169
+ * @returns The call phase.
170
+ */
171
+ static fromPayload(payload: Dict): BackendToolCall;
172
+ /**
173
+ * Build the frame that reports this phase in the frontend's pipeline.
174
+ *
175
+ * @returns The frame for the phase.
176
+ */
177
+ toFrame(): Frame;
178
+ }
179
+ /** The backend has nothing left to do: no run outstanding, no call in flight. */
180
+ export declare class BackendIdle {
181
+ }
182
+ /**
183
+ * The backend could not go on with what it was doing.
184
+ *
185
+ * - `error`: what went wrong.
186
+ */
187
+ export declare class BackendError {
188
+ error: string;
189
+ constructor(options: {
190
+ error: string;
191
+ });
192
+ }
193
+ /** What a `_BackendSession` yields. */
194
+ export type BackendEvent = BackendOutput | BackendToolCall | BackendIdle | BackendError;
195
+ /**
196
+ * Shapes one of the backend model's outputs before it is sent.
197
+ *
198
+ * Returns the output to send in place of `output`, or null to send nothing.
199
+ */
200
+ export type BackendOutputTransform = (output: BackendOutput) => Promise<BackendOutput | null>;
201
+ /** What `_renderTranscriptRequest` tells the backend to do with a transcript. */
202
+ export declare const TRANSCRIPT_REQUEST_INSTRUCTION: string;
203
+ /**
204
+ * Appended to a request the frontend worded itself, so the backend tells the
205
+ * user its result on its own rather than with whatever else it is doing.
206
+ */
207
+ export declare const EXPLICIT_REQUEST_INSTRUCTION: string;
208
+ /**
209
+ * Render a request the frontend worded itself, with what the backend should do
210
+ * with it after.
211
+ *
212
+ * @param request The request, as the frontend's model worded it.
213
+ * @param options.instruction What the backend should do with the request,
214
+ * placed after it.
215
+ * @returns The rendered request.
216
+ */
217
+ export declare function _renderExplicitRequest(request: string, options?: {
218
+ instruction?: string;
219
+ }): string;
220
+ /**
221
+ * Split a message the model wrote into its note and its spoken part, by the
222
+ * mark.
223
+ *
224
+ * @param text The message, stripped.
225
+ * @returns The note (what precedes the first line that begins with the mark,
226
+ * or the whole message when no line does) and the spoken part (what follows
227
+ * the mark, with any later mark removed, or empty), each stripped.
228
+ */
229
+ export declare function _splitSpoken(text: string): [string, string];
230
+ /**
231
+ * Render a conversation as a labelled transcript for the backend to act on.
232
+ *
233
+ * Flattening the conversation into one message keeps the two conversations
234
+ * apart: the backend's context holds only what the backend itself said as
235
+ * assistant messages, so it never mistakes the frontend's speech for its own.
236
+ *
237
+ * Only user and assistant text crosses today: tool calls, tool results,
238
+ * images, other non-text content and messages in a service's own format are
239
+ * skipped, and say so at debug level. Carrying more is a question of how to
240
+ * render it.
241
+ *
242
+ * @param conversation The conversation the user is having with the frontend,
243
+ * as standard context messages.
244
+ * @param options.instruction What the backend should do with the transcript,
245
+ * placed after it.
246
+ * @param options.first Whether this is the backend's first request in the
247
+ * conversation. It decides how the transcript is introduced: as the
248
+ * conversation so far, or as what has been said since the previous
249
+ * delegation. Defaults to true.
250
+ * @returns The rendered request.
251
+ */
252
+ export declare function _renderTranscriptRequest(conversation: readonly LLMContextMessage[], options?: {
253
+ instruction?: string;
254
+ first?: boolean;
255
+ }): string;
256
+ /** The frontend attached to the worker, for as long as its `attach` job lives. */
257
+ declare class _AttachedFrontend {
258
+ jobId: string;
259
+ detached: Event;
260
+ constructor(options: {
261
+ jobId: string;
262
+ detached?: Event;
263
+ });
264
+ }
265
+ export interface BackendLLMWorkerOptions {
266
+ /** The backend LLM service. */
267
+ llm: LLMService;
268
+ /**
269
+ * The backend's context, typically carrying its tools. A fresh empty
270
+ * context when omitted.
271
+ */
272
+ context?: LLMContext | null;
273
+ /**
274
+ * Unique name for this worker on the bus. Auto-generated when omitted; give
275
+ * one when the backend runs in another process, where the frontend
276
+ * addresses it by name.
277
+ */
278
+ name?: string | null;
279
+ /**
280
+ * Called with each `BackendOutput` the model produces before it is sent, to
281
+ * adjust its text or whether the user may hear it, or to return null and
282
+ * send nothing. Outputs the app sends itself are not passed through it
283
+ * unless the call asks.
284
+ */
285
+ transformOutput?: BackendOutputTransform | null;
286
+ /**
287
+ * How the model works with the assistant, appended to the LLM's system
288
+ * instruction: `BACKEND_PAIRING_INSTRUCTION` unless given. One of its own
289
+ * has to say what that one says: that the assistant sends it requests, that
290
+ * the user hears what it marks with `SPOKEN_MARK` and nothing else, and how
291
+ * to take requests that arrive while it works.
292
+ */
293
+ pairingInstruction?: string;
294
+ /**
295
+ * Optional parameters for the user aggregator. Defaults to external turn
296
+ * strategies: the backend has no audio, so the default VAD and
297
+ * turn-analysis strategies (and the model the latter loads) have nothing to
298
+ * do here.
299
+ */
300
+ userParams?: LLMUserAggregatorParams | null;
301
+ /** Optional parameters for the assistant aggregator. */
302
+ assistantParams?: LLMAssistantAggregatorParams | null;
303
+ }
304
+ /**
305
+ * A worker that runs an LLM service as the backend a frontend delegates to.
306
+ *
307
+ * The worker owns the backend's conversation: an `LLMContext` plus the
308
+ * aggregator pair, so multi-step tool calling works as it does in any
309
+ * pipeline. A frontend attaches once, for as long as it lives, and from then
310
+ * on hears everything the backend produces; requests it sends are appended to
311
+ * that conversation as user messages and run the model. `_BackendSession` is
312
+ * the caller side.
313
+ *
314
+ * The worker's LLM does the reasoning its frontend hands off, so it runs at
315
+ * its provider's default thinking unless its settings configure thinking (see
316
+ * `LLMSettings.useProviderThinkingDefault`).
317
+ *
318
+ * Job contract:
319
+ *
320
+ * - `attach`: no payload. Its first update is
321
+ * `{"type": "attached", "capabilities": {...}}`; after that, a
322
+ * `BackendOutput` payload for each of the model's turns and reasoning
323
+ * summaries and each output the app sends with `sendOutput`, a
324
+ * `BackendToolCall` payload for each phase of each function call the
325
+ * backend makes, `{"type": "idle"}` when the backend has nothing left to
326
+ * do, and `{"type": "error", "error": ...}` when it could not go on. The job
327
+ * lives until the requester cancels it, which stops the backend's work.
328
+ * Refused while another frontend is attached.
329
+ * - `message`: `{"request": str}`, appended as a user message; responds at
330
+ * once with `{"backend": "idle" | "working"}`, what the backend was doing
331
+ * when the message arrived. A message that arrives mid-run is taken up
332
+ * after the current step, with everything that came before it in view.
333
+ *
334
+ * The model decides what the user hears: a message it begins with
335
+ * `SPOKEN_MARK` asks to be spoken, whether or not the turn also calls tools,
336
+ * and the mark is stripped; anything else it writes, reasoning summaries
337
+ * included, is a note that the frontend keeps but does not speak. A mark at
338
+ * the start of a later line splits the message into a note and a spoken part,
339
+ * since the model sometimes writes it that way. The backend's own system
340
+ * instruction says what it does and, in plain words, what the user should be
341
+ * told; the pairing instruction the worker appends
342
+ * (`BACKEND_PAIRING_INSTRUCTION`, or the `pairingInstruction` given) is the
343
+ * only place the mark is named. `transformOutput` can change the flag, or the
344
+ * text, or drop the output.
345
+ *
346
+ * @example
347
+ * const backend = new BackendLLMWorker({
348
+ * llm: new AnthropicLLMService({ apiKey: ... }),
349
+ * context: new LLMContext({
350
+ * messages: [{ role: "system", content: BACKEND_INSTRUCTIONS }],
351
+ * tools: [getWeather],
352
+ * }),
353
+ * });
354
+ */
355
+ export declare class BackendLLMWorker extends LLMContextWorker {
356
+ protected _attached: _AttachedFrontend | null;
357
+ protected _transformOutput: BackendOutputTransform | null;
358
+ protected _requestsPending: number;
359
+ protected _runsRequested: number;
360
+ protected _runsCompleted: number;
361
+ protected _idleAnnounced: boolean;
362
+ protected _requestAwaitingRun: number | null;
363
+ /**
364
+ * Initialize the backend worker.
365
+ *
366
+ * @throws Error If the LLM service declines the role.
367
+ */
368
+ constructor(options: BackendLLMWorkerOptions);
369
+ /** Whether the backend has work in hand: a request or run outstanding, or a call in flight. */
370
+ get working(): boolean;
371
+ /** Whether a run is in progress or queued for the model. */
372
+ protected get _modelBusy(): boolean;
373
+ /**
374
+ * What an attached frontend can count on; all of it, for a backend that is
375
+ * an LLM.
376
+ *
377
+ * DIVERGENCE: `capabilities` upstream (see the module notes).
378
+ */
379
+ get backendCapabilities(): Record<string, boolean>;
380
+ /**
381
+ * Attach a frontend: stream everything the backend produces until the job
382
+ * is cancelled.
383
+ *
384
+ * @param message The job request.
385
+ */
386
+ attachFrontend(message: BusJobRequestMessage): Promise<void>;
387
+ /**
388
+ * Put a message to the backend, and say what it was doing when it arrived.
389
+ *
390
+ * @param message The job request; see the class docs for the payload.
391
+ */
392
+ handleMessage(message: BusJobRequestMessage): Promise<void>;
393
+ protected _refuse(jobId: string, reason: string): Promise<void>;
394
+ /**
395
+ * Append a request to the backend's conversation, and run the model on it
396
+ * if it is idle.
397
+ *
398
+ * While a run is in progress or queued, or a synchronous call is in flight,
399
+ * the request asks for no run of its own: the run that follows the current
400
+ * step takes it up (see `_requestAwaitingRun`). A run while a synchronous
401
+ * call is in flight would see the call without its result, which the
402
+ * adapter cannot send as it is.
403
+ */
404
+ protected _queueRequest(request: string): Promise<void>;
405
+ /** Whether a synchronous call is in flight, whose result will bring the next run. */
406
+ protected get _synchronousCallInFlight(): boolean;
407
+ /** Run the model on a request that was waiting for the current step, if nothing else will. */
408
+ protected _runAwaitingRequest(): Promise<void>;
409
+ /**
410
+ * Interrupt the pipeline and cancel every function call in flight.
411
+ *
412
+ * An interruption stops the run in progress and the calls that opt into
413
+ * cancellation on interruption; the async ones, which an interruption
414
+ * leaves running by design, are cancelled on their own. A request not yet
415
+ * taken up is dropped with the interruption, and one held for the current
416
+ * step is let go of, so that neither runs the model on work the frontend
417
+ * has abandoned: the cancellations that follow would otherwise run a held
418
+ * request as they settle.
419
+ */
420
+ protected _stopWork(reason: string): Promise<void>;
421
+ /**
422
+ * Send one output of the app's own to the frontend.
423
+ *
424
+ * It reaches the frontend as the model's outputs do, but as given unless
425
+ * asked: `transformOutput` is not applied to it by default. With no
426
+ * frontend attached there is nowhere for it to go, and it is dropped with a
427
+ * warning.
428
+ *
429
+ * @param output The output.
430
+ * @param options.applyTransformOutput Whether to run the output through
431
+ * `transformOutput` as the model's outputs are. Defaults to false.
432
+ */
433
+ sendOutput(output: BackendOutput, options?: {
434
+ applyTransformOutput?: boolean;
435
+ }): Promise<void>;
436
+ protected _onAssistantTurnStopped(message: AssistantTurnStoppedMessage): Promise<void>;
437
+ /** Send the idle update once the backend has nothing left to do, once per lull. */
438
+ protected _announceIdleIfDone(): Promise<void>;
439
+ /** Relay a phase of one of the backend's own function calls as a job update. */
440
+ protected _onFunctionCallFrame(frame: Frame): Promise<void>;
441
+ /**
442
+ * Stop the model: the frontend that was attached is gone.
443
+ *
444
+ * The `attach` job's handler is already cancelled by the time this runs,
445
+ * and has let go of the attachment; the work in flight stops too, so none
446
+ * of it is reported after the frontend has let go of it.
447
+ */
448
+ onJobCancelled(message: BusJobCancelMessage): Promise<void>;
449
+ /**
450
+ * Tell the frontend the backend cannot go on with what it was doing.
451
+ *
452
+ * A tool handler that raises is the exception. The LLM service reports that
453
+ * as `ErrorCategory.APPLICATION`, settles the call with an error result and
454
+ * carries on, so the model still has something coming.
455
+ */
456
+ protected _onPipelineError(frame: ErrorFrame): Promise<void>;
457
+ protected _onAssistantThought(message: AssistantThoughtMessage): Promise<void>;
458
+ /** Run an output through `transformOutput`, if there is one. */
459
+ protected _shape(output: BackendOutput): Promise<BackendOutput | null>;
460
+ /** Send one output as a job update, after any configured transform. */
461
+ protected _emit(output: BackendOutput, options?: {
462
+ applyTransformOutput?: boolean;
463
+ }): Promise<void>;
464
+ /** Send a job update to the attached frontend. */
465
+ protected _sendUpdate(payload: Dict): Promise<void>;
466
+ }
467
+ /** Turn an `attach` stream update into the event it carries, if it carries one. */
468
+ export declare function _eventFromPayload(payload: Dict): BackendEvent | null;
469
+ /**
470
+ * A frontend's side of the attached contract: one worker, attached for the
471
+ * session's life.
472
+ *
473
+ * Opening the session sends the `attach` job; closing it cancels the job,
474
+ * which stops the backend's work. In between, the session is an async
475
+ * iterator over what the backend produces, and `send` puts messages to it.
476
+ * The iteration ends when the backend goes away, with a `JobError` if it
477
+ * failed.
478
+ *
479
+ * @example
480
+ * const session = new _BackendSession(worker, "backend");
481
+ * await session.run(async (session) => {
482
+ * await session.send(request);
483
+ * for await (const event of session) {
484
+ * ...
485
+ * }
486
+ * });
487
+ */
488
+ export declare class _BackendSession implements AsyncIterableIterator<BackendEvent> {
489
+ protected _worker: BaseWorker;
490
+ protected _backendName: string;
491
+ protected _timeoutSecs: number | null;
492
+ protected _group: JobGroup | null;
493
+ protected _capabilities: Record<string, boolean>;
494
+ /**
495
+ * Whether the stream ended because this side let go of the backend (the
496
+ * session was closed, or the attaching worker stopped), as opposed to the
497
+ * backend going away.
498
+ */
499
+ detached: boolean;
500
+ /**
501
+ * Initialize the session.
502
+ *
503
+ * @param worker The worker attaching (for a pipeline processor,
504
+ * `this.pipelineWorker`).
505
+ * @param backendName Name of the backend worker.
506
+ * @param options.timeoutSecs How long a message may take to be
507
+ * acknowledged, including the wait for the backend to become ready. The
508
+ * attachment itself has no timeout. Defaults to 30.
509
+ */
510
+ constructor(worker: BaseWorker, backendName: string, options?: {
511
+ timeoutSecs?: number | null;
512
+ });
513
+ /** Name of the backend worker. */
514
+ get backendName(): string;
515
+ /** What the backend said it can do, once its stream has opened. */
516
+ get capabilities(): Record<string, boolean>;
517
+ /** Open the session (`__aenter__`): send the `attach` job. */
518
+ enter(): Promise<this>;
519
+ /** Leave the session (`__aexit__`): close it. */
520
+ exit(_error?: unknown): Promise<void>;
521
+ /**
522
+ * Run `fn` inside the session, as `async with` does: open, run the block,
523
+ * then close (whether or not the block threw).
524
+ */
525
+ run<R>(fn: (session: this) => Promise<R> | R): Promise<R>;
526
+ /** Detach: cancel the `attach` job, which stops the backend's work. */
527
+ close(): Promise<void>;
528
+ [Symbol.asyncIterator](): this;
529
+ /** The next event from the backend (`__anext__`). */
530
+ next(): Promise<IteratorResult<BackendEvent>>;
531
+ /**
532
+ * Put a message to the backend.
533
+ *
534
+ * @param request The text to append to the backend's conversation.
535
+ * @returns What the backend was doing when the message arrived: `"idle"` or
536
+ * `"working"`.
537
+ * @throws JobError If the backend refused the message or did not answer in
538
+ * time.
539
+ */
540
+ send(request: string): Promise<string>;
541
+ /**
542
+ * Run one short job on the backend and return its response.
543
+ *
544
+ * @throws JobError If the backend refused, naming its reason, or did not
545
+ * answer in time.
546
+ */
547
+ protected _ask(params: JobParams): Promise<Dict>;
548
+ }
549
+ /** The job error with the backend's own reason for it, when its response gave one. */
550
+ export declare function _withReason(error: string, response: Dict | null | undefined): string;
551
+ export {};
552
+ //# sourceMappingURL=backend_llm_worker.d.ts.map