@0xmaxma/claude-gateway 1.8.14 → 2.0.1

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 (586) hide show
  1. package/README.md +28 -1613
  2. package/config.template.json +7 -1
  3. package/dist/agent/runner.d.ts +419 -0
  4. package/dist/agent/runner.d.ts.map +1 -1
  5. package/dist/agent/runner.js +736 -24
  6. package/dist/agent/runner.js.map +1 -1
  7. package/dist/agent/skill-learning/index.d.ts +6 -4
  8. package/dist/agent/skill-learning/index.d.ts.map +1 -1
  9. package/dist/agent/skill-learning/index.js +3 -3
  10. package/dist/agent/skill-learning/index.js.map +1 -1
  11. package/dist/agent/skill-learning/notifier.d.ts +3 -4
  12. package/dist/agent/skill-learning/notifier.d.ts.map +1 -1
  13. package/dist/agent/skill-learning/notifier.js +15 -13
  14. package/dist/agent/skill-learning/notifier.js.map +1 -1
  15. package/dist/agent/skill-learning/reviewer.d.ts.map +1 -1
  16. package/dist/agent/skill-learning/reviewer.js +3 -1
  17. package/dist/agent/skill-learning/reviewer.js.map +1 -1
  18. package/dist/api/connectors-router.d.ts.map +1 -1
  19. package/dist/api/connectors-router.js +110 -4
  20. package/dist/api/connectors-router.js.map +1 -1
  21. package/dist/api/gateway-router.d.ts +1 -0
  22. package/dist/api/gateway-router.d.ts.map +1 -1
  23. package/dist/api/gateway-router.js +13 -1
  24. package/dist/api/gateway-router.js.map +1 -1
  25. package/dist/api/line-webhook-router.d.ts +2 -2
  26. package/dist/api/line-webhook-router.d.ts.map +1 -1
  27. package/dist/api/line-webhook-router.js +264 -230
  28. package/dist/api/line-webhook-router.js.map +1 -1
  29. package/dist/api/router.d.ts.map +1 -1
  30. package/dist/api/router.js +162 -10
  31. package/dist/api/router.js.map +1 -1
  32. package/dist/api/share-router.d.ts.map +1 -1
  33. package/dist/api/share-router.js +29 -10
  34. package/dist/api/share-router.js.map +1 -1
  35. package/dist/api/slack-client.d.ts +2 -0
  36. package/dist/api/slack-client.d.ts.map +1 -1
  37. package/dist/api/slack-client.js +6 -2
  38. package/dist/api/slack-client.js.map +1 -1
  39. package/dist/api/slack-webhook-router.d.ts +3 -0
  40. package/dist/api/slack-webhook-router.d.ts.map +1 -1
  41. package/dist/api/slack-webhook-router.js +226 -131
  42. package/dist/api/slack-webhook-router.js.map +1 -1
  43. package/dist/api/voice-router.d.ts +21 -0
  44. package/dist/api/voice-router.d.ts.map +1 -0
  45. package/dist/api/voice-router.js +372 -0
  46. package/dist/api/voice-router.js.map +1 -0
  47. package/dist/api/voice-settings-router.d.ts +5 -0
  48. package/dist/api/voice-settings-router.d.ts.map +1 -0
  49. package/dist/api/voice-settings-router.js +318 -0
  50. package/dist/api/voice-settings-router.js.map +1 -0
  51. package/dist/apps/agent-container-migration.d.ts +11 -0
  52. package/dist/apps/agent-container-migration.d.ts.map +1 -0
  53. package/dist/apps/agent-container-migration.js +85 -0
  54. package/dist/apps/agent-container-migration.js.map +1 -0
  55. package/dist/apps/installer.d.ts +1 -1
  56. package/dist/apps/installer.d.ts.map +1 -1
  57. package/dist/apps/installer.js +2 -1
  58. package/dist/apps/installer.js.map +1 -1
  59. package/dist/cli/commands/tasks.d.ts +5 -0
  60. package/dist/cli/commands/tasks.d.ts.map +1 -0
  61. package/dist/cli/commands/tasks.js +92 -0
  62. package/dist/cli/commands/tasks.js.map +1 -0
  63. package/dist/cli/http-client.d.ts +2 -0
  64. package/dist/cli/http-client.d.ts.map +1 -1
  65. package/dist/cli/http-client.js +8 -3
  66. package/dist/cli/http-client.js.map +1 -1
  67. package/dist/cli/index.d.ts.map +1 -1
  68. package/dist/cli/index.js +5 -1
  69. package/dist/cli/index.js.map +1 -1
  70. package/dist/config/config-write-lock.d.ts +2 -0
  71. package/dist/config/config-write-lock.d.ts.map +1 -1
  72. package/dist/config/config-write-lock.js +5 -0
  73. package/dist/config/config-write-lock.js.map +1 -1
  74. package/dist/config/loader.d.ts.map +1 -1
  75. package/dist/config/loader.js +87 -2
  76. package/dist/config/loader.js.map +1 -1
  77. package/dist/config/migrator.d.ts.map +1 -1
  78. package/dist/config/migrator.js +12 -1
  79. package/dist/config/migrator.js.map +1 -1
  80. package/dist/config/watcher.d.ts.map +1 -1
  81. package/dist/config/watcher.js +6 -0
  82. package/dist/config/watcher.js.map +1 -1
  83. package/dist/connectors/resolve.d.ts.map +1 -1
  84. package/dist/connectors/resolve.js +3 -1
  85. package/dist/connectors/resolve.js.map +1 -1
  86. package/dist/connectors/types.d.ts +8 -0
  87. package/dist/connectors/types.d.ts.map +1 -1
  88. package/dist/cron/manager.d.ts.map +1 -1
  89. package/dist/cron/manager.js +21 -2
  90. package/dist/cron/manager.js.map +1 -1
  91. package/dist/discord/receiver.d.ts +2 -1
  92. package/dist/discord/receiver.d.ts.map +1 -1
  93. package/dist/discord/receiver.js +5 -1
  94. package/dist/discord/receiver.js.map +1 -1
  95. package/dist/history/db.d.ts +3 -0
  96. package/dist/history/db.d.ts.map +1 -1
  97. package/dist/history/db.js +21 -1
  98. package/dist/history/db.js.map +1 -1
  99. package/dist/history/types.d.ts +2 -0
  100. package/dist/history/types.d.ts.map +1 -1
  101. package/dist/index.js +48 -9
  102. package/dist/index.js.map +1 -1
  103. package/dist/orchestration/bounded-queue.d.ts +15 -0
  104. package/dist/orchestration/bounded-queue.d.ts.map +1 -0
  105. package/dist/orchestration/bounded-queue.js +58 -0
  106. package/dist/orchestration/bounded-queue.js.map +1 -0
  107. package/dist/orchestration/bridge.d.ts +55 -0
  108. package/dist/orchestration/bridge.d.ts.map +1 -0
  109. package/dist/orchestration/bridge.js +234 -0
  110. package/dist/orchestration/bridge.js.map +1 -0
  111. package/dist/orchestration/browser-routing.d.ts +7 -0
  112. package/dist/orchestration/browser-routing.d.ts.map +1 -0
  113. package/dist/orchestration/browser-routing.js +22 -0
  114. package/dist/orchestration/browser-routing.js.map +1 -0
  115. package/dist/orchestration/capabilities.d.ts +49 -0
  116. package/dist/orchestration/capabilities.d.ts.map +1 -0
  117. package/dist/orchestration/capabilities.js +417 -0
  118. package/dist/orchestration/capabilities.js.map +1 -0
  119. package/dist/orchestration/capacity.d.ts +14 -0
  120. package/dist/orchestration/capacity.d.ts.map +1 -0
  121. package/dist/orchestration/capacity.js +52 -0
  122. package/dist/orchestration/capacity.js.map +1 -0
  123. package/dist/orchestration/channel-activity.d.ts +21 -0
  124. package/dist/orchestration/channel-activity.d.ts.map +1 -0
  125. package/dist/orchestration/channel-activity.js +72 -0
  126. package/dist/orchestration/channel-activity.js.map +1 -0
  127. package/dist/orchestration/channel-controls.d.ts +32 -0
  128. package/dist/orchestration/channel-controls.d.ts.map +1 -0
  129. package/dist/orchestration/channel-controls.js +105 -0
  130. package/dist/orchestration/channel-controls.js.map +1 -0
  131. package/dist/orchestration/channel-input-media.d.ts +11 -0
  132. package/dist/orchestration/channel-input-media.d.ts.map +1 -0
  133. package/dist/orchestration/channel-input-media.js +54 -0
  134. package/dist/orchestration/channel-input-media.js.map +1 -0
  135. package/dist/orchestration/channel-media.d.ts +4 -0
  136. package/dist/orchestration/channel-media.d.ts.map +1 -0
  137. package/dist/orchestration/channel-media.js +70 -0
  138. package/dist/orchestration/channel-media.js.map +1 -0
  139. package/dist/orchestration/channel-speech.d.ts +7 -0
  140. package/dist/orchestration/channel-speech.d.ts.map +1 -0
  141. package/dist/orchestration/channel-speech.js +65 -0
  142. package/dist/orchestration/channel-speech.js.map +1 -0
  143. package/dist/orchestration/cli-skills.d.ts +12 -0
  144. package/dist/orchestration/cli-skills.d.ts.map +1 -0
  145. package/dist/orchestration/cli-skills.js +132 -0
  146. package/dist/orchestration/cli-skills.js.map +1 -0
  147. package/dist/orchestration/config.d.ts +260 -0
  148. package/dist/orchestration/config.d.ts.map +1 -0
  149. package/dist/orchestration/config.js +110 -0
  150. package/dist/orchestration/config.js.map +1 -0
  151. package/dist/orchestration/container.d.ts +21 -0
  152. package/dist/orchestration/container.d.ts.map +1 -0
  153. package/dist/orchestration/container.js +195 -0
  154. package/dist/orchestration/container.js.map +1 -0
  155. package/dist/orchestration/control-delivery.d.ts +5 -0
  156. package/dist/orchestration/control-delivery.d.ts.map +1 -0
  157. package/dist/orchestration/control-delivery.js +50 -0
  158. package/dist/orchestration/control-delivery.js.map +1 -0
  159. package/dist/orchestration/conversation-intake.d.ts +32 -0
  160. package/dist/orchestration/conversation-intake.d.ts.map +1 -0
  161. package/dist/orchestration/conversation-intake.js +92 -0
  162. package/dist/orchestration/conversation-intake.js.map +1 -0
  163. package/dist/orchestration/decisions.d.ts +27 -0
  164. package/dist/orchestration/decisions.d.ts.map +1 -0
  165. package/dist/orchestration/decisions.js +151 -0
  166. package/dist/orchestration/decisions.js.map +1 -0
  167. package/dist/orchestration/delivery.d.ts +34 -0
  168. package/dist/orchestration/delivery.d.ts.map +1 -0
  169. package/dist/orchestration/delivery.js +235 -0
  170. package/dist/orchestration/delivery.js.map +1 -0
  171. package/dist/orchestration/display-stream.d.ts +4 -0
  172. package/dist/orchestration/display-stream.d.ts.map +1 -0
  173. package/dist/orchestration/display-stream.js +77 -0
  174. package/dist/orchestration/display-stream.js.map +1 -0
  175. package/dist/orchestration/events.d.ts +30 -0
  176. package/dist/orchestration/events.d.ts.map +1 -0
  177. package/dist/orchestration/events.js +65 -0
  178. package/dist/orchestration/events.js.map +1 -0
  179. package/dist/orchestration/execution-observation.d.ts +38 -0
  180. package/dist/orchestration/execution-observation.d.ts.map +1 -0
  181. package/dist/orchestration/execution-observation.js +25 -0
  182. package/dist/orchestration/execution-observation.js.map +1 -0
  183. package/dist/orchestration/file-delivery.d.ts +16 -0
  184. package/dist/orchestration/file-delivery.d.ts.map +1 -0
  185. package/dist/orchestration/file-delivery.js +139 -0
  186. package/dist/orchestration/file-delivery.js.map +1 -0
  187. package/dist/orchestration/gateway-config.d.ts +17 -0
  188. package/dist/orchestration/gateway-config.d.ts.map +1 -0
  189. package/dist/orchestration/gateway-config.js +128 -0
  190. package/dist/orchestration/gateway-config.js.map +1 -0
  191. package/dist/orchestration/history.d.ts +13 -0
  192. package/dist/orchestration/history.d.ts.map +1 -0
  193. package/dist/orchestration/history.js +48 -0
  194. package/dist/orchestration/history.js.map +1 -0
  195. package/dist/orchestration/identity.d.ts +6 -0
  196. package/dist/orchestration/identity.d.ts.map +1 -0
  197. package/dist/orchestration/identity.js +13 -0
  198. package/dist/orchestration/identity.js.map +1 -0
  199. package/dist/orchestration/inference-errors.d.ts +3 -0
  200. package/dist/orchestration/inference-errors.d.ts.map +1 -0
  201. package/dist/orchestration/inference-errors.js +16 -0
  202. package/dist/orchestration/inference-errors.js.map +1 -0
  203. package/dist/orchestration/input-images.d.ts +12 -0
  204. package/dist/orchestration/input-images.d.ts.map +1 -0
  205. package/dist/orchestration/input-images.js +66 -0
  206. package/dist/orchestration/input-images.js.map +1 -0
  207. package/dist/orchestration/instance-lock.d.ts +5 -0
  208. package/dist/orchestration/instance-lock.d.ts.map +1 -0
  209. package/dist/orchestration/instance-lock.js +33 -0
  210. package/dist/orchestration/instance-lock.js.map +1 -0
  211. package/dist/orchestration/line-loading.d.ts +21 -0
  212. package/dist/orchestration/line-loading.d.ts.map +1 -0
  213. package/dist/orchestration/line-loading.js +89 -0
  214. package/dist/orchestration/line-loading.js.map +1 -0
  215. package/dist/orchestration/media.d.ts +3 -0
  216. package/dist/orchestration/media.d.ts.map +1 -0
  217. package/dist/orchestration/media.js +46 -0
  218. package/dist/orchestration/media.js.map +1 -0
  219. package/dist/orchestration/migrations/schema.d.ts +3 -0
  220. package/dist/orchestration/migrations/schema.d.ts.map +1 -0
  221. package/dist/orchestration/migrations/schema.js +80 -0
  222. package/dist/orchestration/migrations/schema.js.map +1 -0
  223. package/dist/orchestration/notification-mailbox.d.ts +5 -0
  224. package/dist/orchestration/notification-mailbox.d.ts.map +1 -0
  225. package/dist/orchestration/notification-mailbox.js +29 -0
  226. package/dist/orchestration/notification-mailbox.js.map +1 -0
  227. package/dist/orchestration/process-activity.d.ts +23 -0
  228. package/dist/orchestration/process-activity.d.ts.map +1 -0
  229. package/dist/orchestration/process-activity.js +95 -0
  230. package/dist/orchestration/process-activity.js.map +1 -0
  231. package/dist/orchestration/process-supervisor.d.ts +15 -0
  232. package/dist/orchestration/process-supervisor.d.ts.map +1 -0
  233. package/dist/orchestration/process-supervisor.js +92 -0
  234. package/dist/orchestration/process-supervisor.js.map +1 -0
  235. package/dist/orchestration/process-turn.d.ts +35 -0
  236. package/dist/orchestration/process-turn.d.ts.map +1 -0
  237. package/dist/orchestration/process-turn.js +246 -0
  238. package/dist/orchestration/process-turn.js.map +1 -0
  239. package/dist/orchestration/progress-review.d.ts +28 -0
  240. package/dist/orchestration/progress-review.d.ts.map +1 -0
  241. package/dist/orchestration/progress-review.js +48 -0
  242. package/dist/orchestration/progress-review.js.map +1 -0
  243. package/dist/orchestration/recovery.d.ts +8 -0
  244. package/dist/orchestration/recovery.d.ts.map +1 -0
  245. package/dist/orchestration/recovery.js +35 -0
  246. package/dist/orchestration/recovery.js.map +1 -0
  247. package/dist/orchestration/reply-context.d.ts +7 -0
  248. package/dist/orchestration/reply-context.d.ts.map +1 -0
  249. package/dist/orchestration/reply-context.js +54 -0
  250. package/dist/orchestration/reply-context.js.map +1 -0
  251. package/dist/orchestration/runtime.d.ts +237 -0
  252. package/dist/orchestration/runtime.d.ts.map +1 -0
  253. package/dist/orchestration/runtime.js +1031 -0
  254. package/dist/orchestration/runtime.js.map +1 -0
  255. package/dist/orchestration/skills.d.ts +17 -0
  256. package/dist/orchestration/skills.d.ts.map +1 -0
  257. package/dist/orchestration/skills.js +32 -0
  258. package/dist/orchestration/skills.js.map +1 -0
  259. package/dist/orchestration/source-policy.d.ts +6 -0
  260. package/dist/orchestration/source-policy.d.ts.map +1 -0
  261. package/dist/orchestration/source-policy.js +16 -0
  262. package/dist/orchestration/source-policy.js.map +1 -0
  263. package/dist/orchestration/speech.d.ts +24 -0
  264. package/dist/orchestration/speech.d.ts.map +1 -0
  265. package/dist/orchestration/speech.js +61 -0
  266. package/dist/orchestration/speech.js.map +1 -0
  267. package/dist/orchestration/stop-controls.d.ts +30 -0
  268. package/dist/orchestration/stop-controls.d.ts.map +1 -0
  269. package/dist/orchestration/stop-controls.js +79 -0
  270. package/dist/orchestration/stop-controls.js.map +1 -0
  271. package/dist/orchestration/store.d.ts +92 -0
  272. package/dist/orchestration/store.d.ts.map +1 -0
  273. package/dist/orchestration/store.js +326 -0
  274. package/dist/orchestration/store.js.map +1 -0
  275. package/dist/orchestration/task-controls.d.ts +172 -0
  276. package/dist/orchestration/task-controls.d.ts.map +1 -0
  277. package/dist/orchestration/task-controls.js +59 -0
  278. package/dist/orchestration/task-controls.js.map +1 -0
  279. package/dist/orchestration/task-files.d.ts +29 -0
  280. package/dist/orchestration/task-files.d.ts.map +1 -0
  281. package/dist/orchestration/task-files.js +200 -0
  282. package/dist/orchestration/task-files.js.map +1 -0
  283. package/dist/orchestration/task-questions.d.ts +26 -0
  284. package/dist/orchestration/task-questions.d.ts.map +1 -0
  285. package/dist/orchestration/task-questions.js +160 -0
  286. package/dist/orchestration/task-questions.js.map +1 -0
  287. package/dist/orchestration/task-report.d.ts +7 -0
  288. package/dist/orchestration/task-report.d.ts.map +1 -0
  289. package/dist/orchestration/task-report.js +33 -0
  290. package/dist/orchestration/task-report.js.map +1 -0
  291. package/dist/orchestration/tasks/checkpoint-hook.d.ts +19 -0
  292. package/dist/orchestration/tasks/checkpoint-hook.d.ts.map +1 -0
  293. package/dist/orchestration/tasks/checkpoint-hook.js +49 -0
  294. package/dist/orchestration/tasks/checkpoint-hook.js.map +1 -0
  295. package/dist/orchestration/tasks/cleanup.d.ts +18 -0
  296. package/dist/orchestration/tasks/cleanup.d.ts.map +1 -0
  297. package/dist/orchestration/tasks/cleanup.js +113 -0
  298. package/dist/orchestration/tasks/cleanup.js.map +1 -0
  299. package/dist/orchestration/tasks/driver.d.ts +23 -0
  300. package/dist/orchestration/tasks/driver.d.ts.map +1 -0
  301. package/dist/orchestration/tasks/driver.js +209 -0
  302. package/dist/orchestration/tasks/driver.js.map +1 -0
  303. package/dist/orchestration/tasks/failure.d.ts +5 -0
  304. package/dist/orchestration/tasks/failure.d.ts.map +1 -0
  305. package/dist/orchestration/tasks/failure.js +17 -0
  306. package/dist/orchestration/tasks/failure.js.map +1 -0
  307. package/dist/orchestration/tasks/pool.d.ts +18 -0
  308. package/dist/orchestration/tasks/pool.d.ts.map +1 -0
  309. package/dist/orchestration/tasks/pool.js +73 -0
  310. package/dist/orchestration/tasks/pool.js.map +1 -0
  311. package/dist/orchestration/tasks/scheduler.d.ts +38 -0
  312. package/dist/orchestration/tasks/scheduler.d.ts.map +1 -0
  313. package/dist/orchestration/tasks/scheduler.js +160 -0
  314. package/dist/orchestration/tasks/scheduler.js.map +1 -0
  315. package/dist/orchestration/tasks/service.d.ts +114 -0
  316. package/dist/orchestration/tasks/service.d.ts.map +1 -0
  317. package/dist/orchestration/tasks/service.js +760 -0
  318. package/dist/orchestration/tasks/service.js.map +1 -0
  319. package/dist/orchestration/tasks/shared-workspace.d.ts +25 -0
  320. package/dist/orchestration/tasks/shared-workspace.d.ts.map +1 -0
  321. package/dist/orchestration/tasks/shared-workspace.js +162 -0
  322. package/dist/orchestration/tasks/shared-workspace.js.map +1 -0
  323. package/dist/orchestration/tasks/task-directive.d.ts +6 -0
  324. package/dist/orchestration/tasks/task-directive.d.ts.map +1 -0
  325. package/dist/orchestration/tasks/task-directive.js +41 -0
  326. package/dist/orchestration/tasks/task-directive.js.map +1 -0
  327. package/dist/orchestration/tasks/timing.d.ts +15 -0
  328. package/dist/orchestration/tasks/timing.d.ts.map +1 -0
  329. package/dist/orchestration/tasks/timing.js +48 -0
  330. package/dist/orchestration/tasks/timing.js.map +1 -0
  331. package/dist/orchestration/tasks/tool-repetition.d.ts +3 -0
  332. package/dist/orchestration/tasks/tool-repetition.d.ts.map +1 -0
  333. package/dist/orchestration/tasks/tool-repetition.js +30 -0
  334. package/dist/orchestration/tasks/tool-repetition.js.map +1 -0
  335. package/dist/orchestration/tasks/workspace.d.ts +24 -0
  336. package/dist/orchestration/tasks/workspace.d.ts.map +1 -0
  337. package/dist/orchestration/tasks/workspace.js +147 -0
  338. package/dist/orchestration/tasks/workspace.js.map +1 -0
  339. package/dist/orchestration/telegram-speech.d.ts +17 -0
  340. package/dist/orchestration/telegram-speech.d.ts.map +1 -0
  341. package/dist/orchestration/telegram-speech.js +55 -0
  342. package/dist/orchestration/telegram-speech.js.map +1 -0
  343. package/dist/orchestration/telegram-tool-status.d.ts +23 -0
  344. package/dist/orchestration/telegram-tool-status.d.ts.map +1 -0
  345. package/dist/orchestration/telegram-tool-status.js +207 -0
  346. package/dist/orchestration/telegram-tool-status.js.map +1 -0
  347. package/dist/orchestration/telegram-voices.d.ts +42 -0
  348. package/dist/orchestration/telegram-voices.d.ts.map +1 -0
  349. package/dist/orchestration/telegram-voices.js +70 -0
  350. package/dist/orchestration/telegram-voices.js.map +1 -0
  351. package/dist/orchestration/tool-activity.d.ts +10 -0
  352. package/dist/orchestration/tool-activity.d.ts.map +1 -0
  353. package/dist/orchestration/tool-activity.js +38 -0
  354. package/dist/orchestration/tool-activity.js.map +1 -0
  355. package/dist/orchestration/types.d.ts +177 -0
  356. package/dist/orchestration/types.d.ts.map +1 -0
  357. package/dist/orchestration/types.js +13 -0
  358. package/dist/orchestration/types.js.map +1 -0
  359. package/dist/orchestration/voice-reply-policy.d.ts +8 -0
  360. package/dist/orchestration/voice-reply-policy.d.ts.map +1 -0
  361. package/dist/orchestration/voice-reply-policy.js +46 -0
  362. package/dist/orchestration/voice-reply-policy.js.map +1 -0
  363. package/dist/orchestration/worker-shares.d.ts +8 -0
  364. package/dist/orchestration/worker-shares.d.ts.map +1 -0
  365. package/dist/orchestration/worker-shares.js +59 -0
  366. package/dist/orchestration/worker-shares.js.map +1 -0
  367. package/dist/orchestration/workflow.d.ts +121 -0
  368. package/dist/orchestration/workflow.d.ts.map +1 -0
  369. package/dist/orchestration/workflow.js +69 -0
  370. package/dist/orchestration/workflow.js.map +1 -0
  371. package/dist/session/input-image.d.ts +10 -0
  372. package/dist/session/input-image.d.ts.map +1 -0
  373. package/dist/session/input-image.js +3 -0
  374. package/dist/session/input-image.js.map +1 -0
  375. package/dist/session/process.d.ts +15 -3
  376. package/dist/session/process.d.ts.map +1 -1
  377. package/dist/session/process.js +143 -35
  378. package/dist/session/process.js.map +1 -1
  379. package/dist/session/runtime-profile.d.ts +36 -0
  380. package/dist/session/runtime-profile.d.ts.map +1 -0
  381. package/dist/session/runtime-profile.js +63 -0
  382. package/dist/session/runtime-profile.js.map +1 -0
  383. package/dist/session/store.d.ts.map +1 -1
  384. package/dist/session/store.js +23 -1
  385. package/dist/session/store.js.map +1 -1
  386. package/dist/share/share-store.d.ts +3 -1
  387. package/dist/share/share-store.d.ts.map +1 -1
  388. package/dist/share/share-store.js +13 -2
  389. package/dist/share/share-store.js.map +1 -1
  390. package/dist/shared/line-request-order.d.ts +2 -0
  391. package/dist/shared/line-request-order.d.ts.map +1 -0
  392. package/dist/shared/line-request-order.js +16 -0
  393. package/dist/shared/line-request-order.js.map +1 -0
  394. package/dist/shared/task-elapsed.d.ts +3 -0
  395. package/dist/shared/task-elapsed.d.ts.map +1 -0
  396. package/dist/shared/task-elapsed.js +12 -0
  397. package/dist/shared/task-elapsed.js.map +1 -0
  398. package/dist/shared/task-updated-time.d.ts +3 -0
  399. package/dist/shared/task-updated-time.d.ts.map +1 -0
  400. package/dist/shared/task-updated-time.js +15 -0
  401. package/dist/shared/task-updated-time.js.map +1 -0
  402. package/dist/skills/loader.d.ts +2 -0
  403. package/dist/skills/loader.d.ts.map +1 -1
  404. package/dist/skills/loader.js.map +1 -1
  405. package/dist/telegram/chunks.d.ts +19 -0
  406. package/dist/telegram/chunks.d.ts.map +1 -0
  407. package/dist/telegram/chunks.js +129 -0
  408. package/dist/telegram/chunks.js.map +1 -0
  409. package/dist/telegram/markdown.d.ts.map +1 -1
  410. package/dist/telegram/markdown.js +18 -3
  411. package/dist/telegram/markdown.js.map +1 -1
  412. package/dist/telegram/receiver.d.ts +2 -1
  413. package/dist/telegram/receiver.d.ts.map +1 -1
  414. package/dist/telegram/receiver.js +6 -1
  415. package/dist/telegram/receiver.js.map +1 -1
  416. package/dist/types.d.ts +14 -0
  417. package/dist/types.d.ts.map +1 -1
  418. package/dist/ui/web-ui.d.ts.map +1 -1
  419. package/dist/ui/web-ui.js +31 -5
  420. package/dist/ui/web-ui.js.map +1 -1
  421. package/dist/voice/diagnostics.d.ts +29 -0
  422. package/dist/voice/diagnostics.d.ts.map +1 -0
  423. package/dist/voice/diagnostics.js +37 -0
  424. package/dist/voice/diagnostics.js.map +1 -0
  425. package/dist/voice/errors.d.ts +19 -0
  426. package/dist/voice/errors.d.ts.map +1 -0
  427. package/dist/voice/errors.js +133 -0
  428. package/dist/voice/errors.js.map +1 -0
  429. package/dist/voice/line-audio.d.ts +4 -0
  430. package/dist/voice/line-audio.d.ts.map +1 -0
  431. package/dist/voice/line-audio.js +27 -0
  432. package/dist/voice/line-audio.js.map +1 -0
  433. package/dist/voice/managed-quota.d.ts +5 -0
  434. package/dist/voice/managed-quota.d.ts.map +1 -0
  435. package/dist/voice/managed-quota.js +35 -0
  436. package/dist/voice/managed-quota.js.map +1 -0
  437. package/dist/voice/mp3.d.ts +3 -0
  438. package/dist/voice/mp3.d.ts.map +1 -0
  439. package/dist/voice/mp3.js +30 -0
  440. package/dist/voice/mp3.js.map +1 -0
  441. package/dist/voice/notes.d.ts +9 -0
  442. package/dist/voice/notes.d.ts.map +1 -0
  443. package/dist/voice/notes.js +68 -0
  444. package/dist/voice/notes.js.map +1 -0
  445. package/dist/voice/playback.d.ts +22 -0
  446. package/dist/voice/playback.d.ts.map +1 -0
  447. package/dist/voice/playback.js +52 -0
  448. package/dist/voice/playback.js.map +1 -0
  449. package/dist/voice/preview.d.ts +6 -0
  450. package/dist/voice/preview.d.ts.map +1 -0
  451. package/dist/voice/preview.js +44 -0
  452. package/dist/voice/preview.js.map +1 -0
  453. package/dist/voice/protocol.d.ts +10 -0
  454. package/dist/voice/protocol.d.ts.map +1 -0
  455. package/dist/voice/protocol.js +30 -0
  456. package/dist/voice/protocol.js.map +1 -0
  457. package/dist/voice/providers/cartesia-tts.d.ts +26 -0
  458. package/dist/voice/providers/cartesia-tts.d.ts.map +1 -0
  459. package/dist/voice/providers/cartesia-tts.js +95 -0
  460. package/dist/voice/providers/cartesia-tts.js.map +1 -0
  461. package/dist/voice/providers/deepgram-stt.d.ts +20 -0
  462. package/dist/voice/providers/deepgram-stt.d.ts.map +1 -0
  463. package/dist/voice/providers/deepgram-stt.js +66 -0
  464. package/dist/voice/providers/deepgram-stt.js.map +1 -0
  465. package/dist/voice/providers/elevenlabs-stt.d.ts +20 -0
  466. package/dist/voice/providers/elevenlabs-stt.d.ts.map +1 -0
  467. package/dist/voice/providers/elevenlabs-stt.js +92 -0
  468. package/dist/voice/providers/elevenlabs-stt.js.map +1 -0
  469. package/dist/voice/providers/elevenlabs-tts.d.ts +26 -0
  470. package/dist/voice/providers/elevenlabs-tts.d.ts.map +1 -0
  471. package/dist/voice/providers/elevenlabs-tts.js +82 -0
  472. package/dist/voice/providers/elevenlabs-tts.js.map +1 -0
  473. package/dist/voice/providers/encoded-audio-tts.d.ts +21 -0
  474. package/dist/voice/providers/encoded-audio-tts.d.ts.map +1 -0
  475. package/dist/voice/providers/encoded-audio-tts.js +175 -0
  476. package/dist/voice/providers/encoded-audio-tts.js.map +1 -0
  477. package/dist/voice/providers/fake.d.ts +39 -0
  478. package/dist/voice/providers/fake.d.ts.map +1 -0
  479. package/dist/voice/providers/fake.js +41 -0
  480. package/dist/voice/providers/fake.js.map +1 -0
  481. package/dist/voice/providers/gemini-live-stt.d.ts +21 -0
  482. package/dist/voice/providers/gemini-live-stt.d.ts.map +1 -0
  483. package/dist/voice/providers/gemini-live-stt.js +158 -0
  484. package/dist/voice/providers/gemini-live-stt.js.map +1 -0
  485. package/dist/voice/providers/gemini.d.ts +60 -0
  486. package/dist/voice/providers/gemini.d.ts.map +1 -0
  487. package/dist/voice/providers/gemini.js +124 -0
  488. package/dist/voice/providers/gemini.js.map +1 -0
  489. package/dist/voice/providers/model-ref.d.ts +9 -0
  490. package/dist/voice/providers/model-ref.d.ts.map +1 -0
  491. package/dist/voice/providers/model-ref.js +31 -0
  492. package/dist/voice/providers/model-ref.js.map +1 -0
  493. package/dist/voice/providers/openrouter.d.ts +39 -0
  494. package/dist/voice/providers/openrouter.d.ts.map +1 -0
  495. package/dist/voice/providers/openrouter.js +154 -0
  496. package/dist/voice/providers/openrouter.js.map +1 -0
  497. package/dist/voice/providers/paxalabs-stt.d.ts +12 -0
  498. package/dist/voice/providers/paxalabs-stt.d.ts.map +1 -0
  499. package/dist/voice/providers/paxalabs-stt.js +41 -0
  500. package/dist/voice/providers/paxalabs-stt.js.map +1 -0
  501. package/dist/voice/providers/paxalabs-tts.d.ts +23 -0
  502. package/dist/voice/providers/paxalabs-tts.d.ts.map +1 -0
  503. package/dist/voice/providers/paxalabs-tts.js +80 -0
  504. package/dist/voice/providers/paxalabs-tts.js.map +1 -0
  505. package/dist/voice/providers/recorded-stt.d.ts +34 -0
  506. package/dist/voice/providers/recorded-stt.d.ts.map +1 -0
  507. package/dist/voice/providers/recorded-stt.js +59 -0
  508. package/dist/voice/providers/recorded-stt.js.map +1 -0
  509. package/dist/voice/providers/registry.d.ts +10 -0
  510. package/dist/voice/providers/registry.d.ts.map +1 -0
  511. package/dist/voice/providers/registry.js +77 -0
  512. package/dist/voice/providers/registry.js.map +1 -0
  513. package/dist/voice/providers/socket.d.ts +10 -0
  514. package/dist/voice/providers/socket.d.ts.map +1 -0
  515. package/dist/voice/providers/socket.js +91 -0
  516. package/dist/voice/providers/socket.js.map +1 -0
  517. package/dist/voice/providers/upstream.d.ts +9 -0
  518. package/dist/voice/providers/upstream.d.ts.map +1 -0
  519. package/dist/voice/providers/upstream.js +51 -0
  520. package/dist/voice/providers/upstream.js.map +1 -0
  521. package/dist/voice/providers/voice-catalog.d.ts +17 -0
  522. package/dist/voice/providers/voice-catalog.d.ts.map +1 -0
  523. package/dist/voice/providers/voice-catalog.js +167 -0
  524. package/dist/voice/providers/voice-catalog.js.map +1 -0
  525. package/dist/voice/queue.d.ts +2 -0
  526. package/dist/voice/queue.d.ts.map +1 -0
  527. package/dist/voice/queue.js +6 -0
  528. package/dist/voice/queue.js.map +1 -0
  529. package/dist/voice/session.d.ts +86 -0
  530. package/dist/voice/session.d.ts.map +1 -0
  531. package/dist/voice/session.js +464 -0
  532. package/dist/voice/session.js.map +1 -0
  533. package/dist/voice/turn-manager.d.ts +27 -0
  534. package/dist/voice/turn-manager.d.ts.map +1 -0
  535. package/dist/voice/turn-manager.js +75 -0
  536. package/dist/voice/turn-manager.js.map +1 -0
  537. package/dist/voice/types.d.ts +78 -0
  538. package/dist/voice/types.d.ts.map +1 -0
  539. package/dist/voice/types.js +18 -0
  540. package/dist/voice/types.js.map +1 -0
  541. package/dist/voice/wav.d.ts +2 -0
  542. package/dist/voice/wav.d.ts.map +1 -0
  543. package/dist/voice/wav.js +21 -0
  544. package/dist/voice/wav.js.map +1 -0
  545. package/dist/wechat/ilink-client.d.ts +13 -0
  546. package/dist/wechat/ilink-client.d.ts.map +1 -1
  547. package/dist/wechat/ilink-client.js +19 -0
  548. package/dist/wechat/ilink-client.js.map +1 -1
  549. package/dist/whatsapp/manager.d.ts.map +1 -1
  550. package/dist/whatsapp/manager.js +51 -1
  551. package/dist/whatsapp/manager.js.map +1 -1
  552. package/mcp/capability-catalog.ts +206 -0
  553. package/mcp/modules.ts +56 -0
  554. package/mcp/server.ts +18 -37
  555. package/mcp/tools/browser/module.ts +1 -1
  556. package/mcp/tools/browser/skills/open-browser/SKILL.md +5 -3
  557. package/mcp/tools/discord/commands.ts +17 -1
  558. package/mcp/tools/discord/inbound.ts +11 -0
  559. package/mcp/tools/discord/module.ts +42 -2
  560. package/mcp/tools/discord/receiver-server.ts +10 -0
  561. package/mcp/tools/discord/types.ts +4 -1
  562. package/mcp/tools/image/module.ts +3 -1
  563. package/mcp/tools/receiver-spool.test.ts +28 -0
  564. package/mcp/tools/receiver-spool.ts +56 -0
  565. package/mcp/tools/share-file/module.ts +9 -1
  566. package/mcp/tools/shared/share-client.ts +19 -0
  567. package/mcp/tools/tasks/module.ts +35 -0
  568. package/mcp/tools/telegram/media-group.ts +21 -0
  569. package/mcp/tools/telegram/receiver-server.ts +246 -11
  570. package/mcp/tools/telegram/selection-confirmation.ts +20 -0
  571. package/mcp/tools/telegram/task-browser.ts +117 -0
  572. package/mcp/tools/telegram/task-detail.ts +36 -0
  573. package/mcp/tools/telegram/task-elapsed.ts +1 -0
  574. package/mcp/tools/telegram/typing.ts +6 -116
  575. package/mcp/tools/video/module.ts +1 -1
  576. package/mcp/types.ts +5 -0
  577. package/package.json +2 -1
  578. package/resource/claude_gateway.jpeg +0 -0
  579. package/scripts/orchestration/bench-store.cjs +30 -0
  580. package/scripts/orchestration/inspect.cjs +16 -0
  581. package/scripts/orchestration/probe-profile.cjs +67 -0
  582. package/scripts/orchestration/reconcile.cjs +21 -0
  583. package/scripts/orchestration/smoke-elevenlabs.cjs +90 -0
  584. package/scripts/orchestration/smoke-media.cjs +70 -0
  585. package/scripts/orchestration/smoke-text.cjs +101 -0
  586. package/scripts/orchestration/smoke-vision.cjs +49 -0
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveChannelFile = resolveChannelFile;
4
+ exports.sendChannelFile = sendChannelFile;
5
+ const line_request_order_1 = require("../shared/line-request-order");
6
+ const fs_1 = require("fs");
7
+ const path_1 = require("path");
8
+ const os_1 = require("os");
9
+ const media_store_1 = require("../history/media-store");
10
+ const share_store_1 = require("../share/share-store");
11
+ function resolveChannelFile(agent, file) {
12
+ const agentsRoot = (0, path_1.join)(agent.workspace, '../..');
13
+ let path, bytes;
14
+ try {
15
+ path = (0, fs_1.realpathSync)(media_store_1.MediaStore.resolvePath(agentsRoot, agent.id, file.path));
16
+ const ref = (0, path_1.relative)((0, fs_1.realpathSync)((0, path_1.join)(agentsRoot, agent.id, 'media')), path);
17
+ if (!ref || ref.startsWith('..') || (0, path_1.isAbsolute)(ref) || (0, fs_1.statSync)(path).size > 50 * 1024 * 1024)
18
+ throw new Error();
19
+ bytes = (0, fs_1.readFileSync)(path);
20
+ if (bytes.length > 50 * 1024 * 1024)
21
+ throw new Error();
22
+ }
23
+ catch {
24
+ throw new Error('ATTACHMENT_UNAVAILABLE');
25
+ }
26
+ return { path, bytes };
27
+ }
28
+ async function sendChannelFile(agent, binding, file, id, request, enabled = () => true) {
29
+ if (!enabled())
30
+ return { state: 'failed', code: 'VOICE_REPLY_DISABLED' };
31
+ const agentsRoot = (0, path_1.join)(agent.workspace, '../..');
32
+ const source = String(binding.channel), chat = String(binding.chat_id), thread = String(binding.thread_key);
33
+ let path, bytes;
34
+ try {
35
+ ({ path, bytes } = resolveChannelFile(agent, file));
36
+ }
37
+ catch {
38
+ return { state: 'failed', code: 'ATTACHMENT_UNAVAILABLE' };
39
+ }
40
+ const mime = file.kind === 'audio' ? (0, share_store_1.detectAudioMime)(bytes.subarray(0, 12)) ?? 'application/octet-stream' : (0, share_store_1.detectShareMime)(bytes.subarray(0, 12)) ?? 'application/octet-stream';
41
+ const image = file.kind === 'image' && mime.startsWith('image/');
42
+ const call = (url, init) => {
43
+ const send = () => request(url, { ...init, signal: AbortSignal.timeout(30000) });
44
+ return source === 'line' ? (0, line_request_order_1.orderLineRequest)(agent.id, chat, send) : send();
45
+ };
46
+ let response;
47
+ try {
48
+ if (source === 'telegram' && agent.telegram?.botToken) {
49
+ const form = new FormData(), photo = image && bytes.length <= 10 * 1024 * 1024;
50
+ form.set('chat_id', chat);
51
+ if (thread)
52
+ form.set('message_thread_id', thread);
53
+ if (file.caption)
54
+ form.set('caption', file.caption);
55
+ form.set(photo ? 'photo' : 'document', new Blob([new Uint8Array(bytes)], { type: mime }), file.name);
56
+ response = await call(`https://api.telegram.org/bot${agent.telegram.botToken}/${photo ? 'sendPhoto' : 'sendDocument'}`, { method: 'POST', body: form });
57
+ }
58
+ else if (source === 'whatsapp_cloud' && agent.whatsapp_cloud?.accessToken && agent.whatsapp_cloud.phoneNumberId) {
59
+ const url = `https://graph.facebook.com/v20.0/${encodeURIComponent(agent.whatsapp_cloud.phoneNumberId)}`;
60
+ const headers = { Authorization: `Bearer ${agent.whatsapp_cloud.accessToken}` };
61
+ const form = new FormData();
62
+ form.set('messaging_product', 'whatsapp');
63
+ form.set('type', mime);
64
+ form.set('file', new Blob([new Uint8Array(bytes)], { type: mime }), file.name);
65
+ const upload = await call(`${url}/media`, { method: 'POST', headers, body: form });
66
+ if (!upload.ok)
67
+ return { state: upload.status >= 500 ? 'unknown' : 'failed', code: `PROVIDER_HTTP_${upload.status}` };
68
+ const media = await upload.json();
69
+ if (!media.id || media.error)
70
+ return { state: 'failed', code: 'UPLOAD_REJECTED' };
71
+ if (!enabled())
72
+ return { state: 'failed', code: 'VOICE_REPLY_DISABLED' };
73
+ const type = image ? 'image' : file.kind === 'audio' ? 'audio' : 'document';
74
+ response = await call(`${url}/messages`, { method: 'POST', headers: { ...headers, 'Content-Type': 'application/json' },
75
+ body: JSON.stringify({ messaging_product: 'whatsapp', to: chat, type,
76
+ [type]: { id: media.id, ...(type === 'document' ? { filename: file.name } : {}), ...(type !== 'audio' && file.caption ? { caption: file.caption } : {}) } }) });
77
+ }
78
+ else if (source === 'discord' && agent.discord?.botToken) {
79
+ const form = new FormData();
80
+ form.set('payload_json', JSON.stringify({ content: file.caption, attachments: [{ id: 0, filename: file.name }], nonce: id.replace(/-/g, '').slice(0, 25), enforce_nonce: true, allowed_mentions: { parse: [] } }));
81
+ form.set('files[0]', new Blob([new Uint8Array(bytes)], { type: mime }), file.name);
82
+ response = await call(`https://discord.com/api/v10/channels/${encodeURIComponent(chat)}/messages`, { method: 'POST', headers: { Authorization: `Bot ${agent.discord.botToken}` }, body: form });
83
+ }
84
+ else if (source === 'slack' && agent.slack?.botToken) {
85
+ const authorization = { Authorization: `Bearer ${agent.slack.botToken}` };
86
+ const reserve = await call('https://slack.com/api/files.getUploadURLExternal', { method: 'POST', headers: authorization, body: new URLSearchParams({ filename: file.name, length: String(bytes.length) }) });
87
+ if (!reserve.ok)
88
+ return { state: reserve.status >= 500 ? 'unknown' : 'failed', code: `PROVIDER_HTTP_${reserve.status}` };
89
+ const slot = await reserve.json();
90
+ if (!slot.ok || !slot.file_id || !slot.upload_url?.startsWith('https://'))
91
+ return { state: 'failed', code: 'UPLOAD_SLOT_REJECTED' };
92
+ const form = new FormData();
93
+ form.set('file', new Blob([new Uint8Array(bytes)], { type: mime }), file.name);
94
+ const upload = await call(slot.upload_url, { method: 'POST', body: form });
95
+ if (!upload.ok)
96
+ return { state: 'unknown', code: 'UPLOAD_RECEIPT_UNKNOWN' };
97
+ if (!enabled())
98
+ return { state: 'failed', code: 'VOICE_REPLY_DISABLED' };
99
+ response = await call('https://slack.com/api/files.completeUploadExternal', { method: 'POST', headers: { ...authorization, 'Content-Type': 'application/json' },
100
+ body: JSON.stringify({ files: [{ id: slot.file_id, title: file.name }], channel_id: chat, ...(thread ? { thread_ts: thread } : {}), ...(file.caption ? { initial_comment: file.caption } : {}) }) });
101
+ }
102
+ else if (source === 'line' && agent.line?.channelAccessToken) {
103
+ const base = (0, fs_1.readFileSync)((0, path_1.join)(agent.workspace, '../.public-base'), 'utf8').trim().replace(/\/+$/, '');
104
+ if (!base.startsWith('https://'))
105
+ return { state: 'failed', code: 'PUBLIC_MEDIA_URL_REQUIRED' };
106
+ const validated = (0, share_store_1.validateShareFile)(agentsRoot, agent.id, path, 20 * 1024 * 1024, image ? 'image' : file.kind === 'audio' ? 'audio' : 'any');
107
+ const shares = new share_store_1.ShareStore((0, share_store_1.shareEnv)('DB_PATH') || (0, path_1.join)((0, os_1.homedir)(), '.claude-gateway', 'shares.db'));
108
+ let url;
109
+ try {
110
+ const share = shares.mintShare({ agentId: agent.id, sessionId: String(binding.conversation_id), relativePath: validated.relativePath,
111
+ dedupeRef: file.path, purpose: 'channel_delivery', ttlSeconds: 1800, allowKind: image ? 'image' : file.kind === 'audio' ? 'audio' : 'any' });
112
+ url = `${base}/shared/${share.token}${file.kind === 'audio' ? (mime === 'audio/mp4' ? '/audio.m4a' : '/audio.mp3') : ''}`;
113
+ }
114
+ finally {
115
+ shares.close();
116
+ }
117
+ const message = file.kind === 'audio' ? { type: 'audio', originalContentUrl: url, duration: file.durationMs } : image ? { type: 'image', originalContentUrl: url, previewImageUrl: url } : { type: 'text', text: `${file.name}\n${url}` };
118
+ if (!enabled())
119
+ return { state: 'failed', code: 'VOICE_REPLY_DISABLED' };
120
+ response = await call('https://api.line.me/v2/bot/message/push', { method: 'POST', headers: { 'Content-Type': 'application/json', Authorization: `Bearer ${agent.line.channelAccessToken}`, 'X-Line-Retry-Key': id }, body: JSON.stringify({ to: chat, messages: [message] }) });
121
+ if (response.status === 409 && response.headers.get('x-line-accepted-request-id'))
122
+ return { state: 'delivered', providerId: response.headers.get('x-line-accepted-request-id') };
123
+ }
124
+ else
125
+ return { state: 'failed', code: 'DELIVERY_NOT_CONFIGURED' };
126
+ if (!response.ok)
127
+ return { state: response.status >= 500 ? 'unknown' : 'failed', code: `PROVIDER_HTTP_${response.status}` };
128
+ const result = await response.json();
129
+ if (result.ok === false || result.error)
130
+ return { state: 'failed', code: 'PROVIDER_REJECTED' };
131
+ if (source === 'whatsapp_cloud' && !result.messages?.[0]?.id)
132
+ return { state: 'unknown', code: 'PROVIDER_RECEIPT_UNKNOWN' };
133
+ return { state: 'delivered', providerId: result.messages?.[0]?.id ?? result.id ?? result.files?.[0]?.id ?? result.sentMessages?.[0]?.id ?? (result.result?.message_id === undefined ? undefined : String(result.result.message_id)) };
134
+ }
135
+ catch {
136
+ return { state: 'unknown', code: 'PROVIDER_RECEIPT_UNKNOWN' };
137
+ }
138
+ }
139
+ //# sourceMappingURL=file-delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-delivery.js","sourceRoot":"","sources":["../../src/orchestration/file-delivery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { AgentConfig, GatewayConfig } from '../types';
2
+ import { OrchestrationConfig } from './config';
3
+ export type GatewayOrchestration = boolean | Omit<OrchestrationConfig, 'channels'>;
4
+ export declare const ORCHESTRATION_CHANNELS: string[];
5
+ export declare function gatewayOrchestrationEnabled(value: GatewayOrchestration | undefined): boolean;
6
+ export declare function validateGatewayOrchestration(value: unknown): void;
7
+ /** Derived mode is non-enumerable: serializing settings never writes per-Agent switches back to config.json. */
8
+ export declare function effectiveOrchestration(settings: OrchestrationConfig | undefined, global: GatewayOrchestration | undefined): OrchestrationConfig;
9
+ export declare function applyGatewayOrchestration(agent: AgentConfig, gateway: GatewayConfig): AgentConfig;
10
+ /** One-time structural migration. New documents have no inherited voice settings.
11
+ * Merge raw values, never environment-expanded credentials, and preserve explicit
12
+ * per-agent overrides (including false). Calling this again is a no-op. */
13
+ export declare function migrateAgentVoiceConfig(document: {
14
+ gateway?: any;
15
+ agents?: any[];
16
+ }): boolean;
17
+ //# sourceMappingURL=gateway-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-config.d.ts","sourceRoot":"","sources":["../../src/orchestration/gateway-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,WAAW,EAAC,aAAa,EAAC,MAAM,UAAU,CAAC;AACxD,OAAO,EAAC,mBAAmB,EAAgE,MAAM,UAAU,CAAC;AAE5G,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAC,UAAU,CAAC,CAAC;AAElF,eAAO,MAAM,sBAAsB,UAAyB,CAAC;AAC7D,wBAAgB,2BAA2B,CAAC,KAAK,EAAC,oBAAoB,GAAC,SAAS,GAAE,OAAO,CAAkE;AAC3J,wBAAgB,4BAA4B,CAAC,KAAK,EAAC,OAAO,GAAE,IAAI,CAI/D;AAMD,gHAAgH;AAChH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAC,mBAAmB,GAAC,SAAS,EAAC,MAAM,EAAC,oBAAoB,GAAC,SAAS,GAAE,mBAAmB,CAevI;AACD,wBAAgB,yBAAyB,CAAC,KAAK,EAAC,WAAW,EAAC,OAAO,EAAC,aAAa,GAAE,WAAW,CAO7F;AAED;;2EAE2E;AAC3E,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE;IAAE,OAAO,CAAC,EAAE,GAAG,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,GAAG,OAAO,CAsD5F"}
@@ -0,0 +1,128 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ORCHESTRATION_CHANNELS = void 0;
4
+ exports.gatewayOrchestrationEnabled = gatewayOrchestrationEnabled;
5
+ exports.validateGatewayOrchestration = validateGatewayOrchestration;
6
+ exports.effectiveOrchestration = effectiveOrchestration;
7
+ exports.applyGatewayOrchestration = applyGatewayOrchestration;
8
+ exports.migrateAgentVoiceConfig = migrateAgentVoiceConfig;
9
+ const model_ref_1 = require("../voice/providers/model-ref");
10
+ const config_1 = require("./config");
11
+ const types_1 = require("../history/types");
12
+ const overrides = Symbol('agent-orchestration-overrides');
13
+ exports.ORCHESTRATION_CHANNELS = ['api', ...types_1.CHAT_CHANNELS];
14
+ function gatewayOrchestrationEnabled(value) { return typeof value === 'boolean' ? value : value?.enabled !== false; }
15
+ function validateGatewayOrchestration(value) {
16
+ if (value === undefined || typeof value === 'boolean')
17
+ return;
18
+ (0, config_1.validateTree)(value, config_1.ORCHESTRATION_DEFAULTS, 'gateway.orchestration');
19
+ if (Object.prototype.hasOwnProperty.call(value, 'channels'))
20
+ throw Error('gateway.orchestration applies to every channel; channels is not configurable');
21
+ }
22
+ function merge(base, override) {
23
+ const result = { ...base };
24
+ for (const [key, value] of Object.entries(override ?? {}))
25
+ result[key] = value && typeof value === 'object' && !Array.isArray(value) ? merge(base?.[key] ?? {}, value) : value;
26
+ return result;
27
+ }
28
+ /** Derived mode is non-enumerable: serializing settings never writes per-Agent switches back to config.json. */
29
+ function effectiveOrchestration(settings, global) {
30
+ var _a;
31
+ validateGatewayOrchestration(global);
32
+ if (settings !== undefined)
33
+ (0, config_1.validateTree)(settings, config_1.ORCHESTRATION_DEFAULTS, 'agents[].orchestration');
34
+ const raw = { ...(settings?.[overrides] ?? settings) };
35
+ delete raw.enabled;
36
+ delete raw.channels;
37
+ const defaults = typeof global === 'object' ? { ...global } : {};
38
+ delete defaults.enabled;
39
+ const result = merge(defaults, raw);
40
+ // Reply permission belongs to the Agent. Accept old gateway keys for config
41
+ // compatibility, but never inherit their value into an Agent's policy.
42
+ if (result.voice) {
43
+ (_a = result.voice).notes ?? (_a.notes = {});
44
+ result.voice.notes.replyWithVoice = raw.voice?.notes?.replyWithVoice ?? true;
45
+ }
46
+ Object.defineProperties(result, { enabled: { value: gatewayOrchestrationEnabled(global) }, channels: { value: exports.ORCHESTRATION_CHANNELS }, [overrides]: { value: raw }, toJSON: { value: () => raw } });
47
+ (0, config_1.resolveOrchestrationConfig)(result);
48
+ return result;
49
+ }
50
+ function applyGatewayOrchestration(agent, gateway) {
51
+ // Normalize legacy in-memory callers too; loaded config is already migrated.
52
+ const document = { gateway: { orchestration: gateway.gateway.orchestration }, agents: [agent] };
53
+ migrateAgentVoiceConfig(document);
54
+ agent.orchestration = effectiveOrchestration(agent.orchestration, document.gateway.orchestration);
55
+ (0, config_1.resolveOrchestrationConfig)(agent.orchestration, agent.voice ?? { enabled: false });
56
+ return agent;
57
+ }
58
+ /** One-time structural migration. New documents have no inherited voice settings.
59
+ * Merge raw values, never environment-expanded credentials, and preserve explicit
60
+ * per-agent overrides (including false). Calling this again is a no-op. */
61
+ function migrateAgentVoiceConfig(document) {
62
+ const global = document.gateway?.orchestration;
63
+ validateGatewayOrchestration(global);
64
+ const legacyGlobal = global && typeof global === 'object' ? global : undefined;
65
+ let changed = false;
66
+ for (const agent of document.agents ?? []) {
67
+ if (!agent || typeof agent !== 'object' || Array.isArray(agent))
68
+ continue;
69
+ for (const role of ['tts', 'stt', 'notes']) {
70
+ const item = agent.voice?.[role];
71
+ if (typeof item?.provider === 'string' && (0, model_ref_1.canonicalVoiceProvider)(item.provider) !== item.provider) {
72
+ item.provider = (0, model_ref_1.canonicalVoiceProvider)(item.provider);
73
+ changed = true;
74
+ }
75
+ }
76
+ const legacy = agent.orchestration;
77
+ if (!legacyGlobal && !legacy?.voice)
78
+ continue;
79
+ // Reuse the old precedence rules before removing the inherited layer.
80
+ let effective;
81
+ try {
82
+ effective = effectiveOrchestration(legacy, global);
83
+ }
84
+ catch {
85
+ continue;
86
+ } // The loader reports/skips malformed agents individually.
87
+ const settings = JSON.parse(JSON.stringify(effective));
88
+ if (legacyGlobal) {
89
+ for (const field of ['conversation', 'tasks', 'events']) {
90
+ if (legacyGlobal[field] || legacy?.[field])
91
+ settings[field] = merge(legacyGlobal[field], legacy?.[field]);
92
+ }
93
+ }
94
+ if (legacyGlobal?.voice || legacy?.voice) {
95
+ const rawVoice = merge(merge(legacyGlobal?.voice, legacy?.voice), agent.voice);
96
+ const resolvedVoice = (0, config_1.resolveOrchestrationConfig)(effective).voice;
97
+ // Disabled, never-configured voice must not acquire fictional ElevenLabs
98
+ // selections merely because the previous runtime supplied defaults.
99
+ const hasSelection = ['tts', 'stt', 'notes'].some(field => ['provider', 'model', 'voiceId'].some(key => Boolean(rawVoice[field]?.[key])));
100
+ const voice = rawVoice.enabled !== true && !resolvedVoice.enabled && !hasSelection
101
+ ? rawVoice
102
+ : merge(resolvedVoice, agent.voice);
103
+ delete voice.allowedOrigins;
104
+ for (const role of ['tts', 'stt', 'notes'])
105
+ if (typeof voice[role]?.provider === 'string')
106
+ voice[role].provider = (0, model_ref_1.canonicalVoiceProvider)(voice[role].provider);
107
+ agent.voice = voice;
108
+ }
109
+ delete settings.voice;
110
+ if (Object.keys(settings).length)
111
+ agent.orchestration = settings;
112
+ else
113
+ delete agent.orchestration;
114
+ changed = true;
115
+ }
116
+ if (legacyGlobal) {
117
+ document.gateway.orchestration = gatewayOrchestrationEnabled(global);
118
+ changed = true;
119
+ }
120
+ // Materialize the default for older configs as well as fresh installs.
121
+ // Explicit false remains an opt-out; voice is still independently disabled.
122
+ if (document.gateway && document.gateway.orchestration === undefined) {
123
+ document.gateway.orchestration = true;
124
+ changed = true;
125
+ }
126
+ return changed;
127
+ }
128
+ //# sourceMappingURL=gateway-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-config.js","sourceRoot":"","sources":["../../src/orchestration/gateway-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { SessionStore } from '../session/store';
2
+ import { HistoryDB } from '../history/db';
3
+ import { OrchestrationStore } from './store';
4
+ /** Sidecar and canonical history cannot share a transaction. Each canonical
5
+ * writer deduplicates the same operation ID before the sidecar marks it done. */
6
+ export declare class OrchestrationHistoryWriter {
7
+ private readonly orchestration;
8
+ private readonly sessions;
9
+ private readonly history;
10
+ constructor(orchestration: OrchestrationStore, sessions: SessionStore, history: HistoryDB);
11
+ write(operationId: string): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/orchestration/history.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7C;iFACiF;AACjF,qBAAa,0BAA0B;IACzB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAAsB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAgB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAApG,aAAa,EAAE,kBAAkB,EAAmB,QAAQ,EAAE,YAAY,EAAmB,OAAO,EAAE,SAAS;IACtI,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA0BhD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OrchestrationHistoryWriter = void 0;
4
+ const reply_context_1 = require("./reply-context");
5
+ const types_1 = require("./types");
6
+ /** Sidecar and canonical history cannot share a transaction. Each canonical
7
+ * writer deduplicates the same operation ID before the sidecar marks it done. */
8
+ class OrchestrationHistoryWriter {
9
+ constructor(orchestration, sessions, history) {
10
+ this.orchestration = orchestration;
11
+ this.sessions = sessions;
12
+ this.history = history;
13
+ }
14
+ async write(operationId) {
15
+ const operation = this.orchestration.get('SELECT * FROM history_operations WHERE operation_id=?', operationId);
16
+ if (!operation)
17
+ throw new types_1.OrchestrationError('HISTORY_OPERATION_NOT_FOUND');
18
+ if (operation.state === 'completed')
19
+ return;
20
+ const conversation = this.orchestration.get('SELECT * FROM conversations WHERE id=?', operation.conversation_id);
21
+ const input = operation.input_id ? this.orchestration.get('SELECT * FROM conversation_inputs WHERE id=?', operation.input_id) : undefined;
22
+ const response = operation.response_id ? this.orchestration.get('SELECT * FROM assistant_responses WHERE id=?', operation.response_id) : undefined;
23
+ if (!input && !response)
24
+ throw new types_1.OrchestrationError('HISTORY_MESSAGE_NOT_FOUND');
25
+ if (input?.store_user_message === 0 || (response && !String(response.generated_text).trim())) {
26
+ this.orchestration.run("UPDATE history_operations SET state='completed',updated_at=? WHERE operation_id=?", Date.now(), operationId);
27
+ this.orchestration.run("UPDATE outbox SET state='completed' WHERE kind='history' AND dedup_key=?", operationId);
28
+ return;
29
+ }
30
+ const source = String(conversation.source);
31
+ const sessionId = String(conversation.agent_session_id), chatId = String(conversation.chat_id);
32
+ const message = { operationId, role: input ? 'user' : 'assistant',
33
+ content: String(input?.text ?? response?.generated_text), ts: Number(input?.created_at ?? response?.completed_at ?? response?.created_at) };
34
+ if (source === 'api')
35
+ await this.sessions.appendMessage(this.orchestration.agentId, sessionId, message);
36
+ else
37
+ await this.sessions.appendTelegramMessage(this.orchestration.agentId, chatId, sessionId, message, source);
38
+ const ingress = input ? JSON.parse(String(input.ingress_json ?? '{}')) : {};
39
+ if (input)
40
+ ingress.metadata = (0, reply_context_1.resolveStoredReply)(this.orchestration, { agentId: this.orchestration.agentId, agentSessionId: sessionId, source, accountId: String(conversation.account_id), chatId, threadKey: String(conversation.thread_key), principalId: String(input.principal_id) }, ingress.metadata);
41
+ const mediaFiles = input ? JSON.parse(String(input.attachment_refs_json)) : this.orchestration.all('SELECT path FROM task_files WHERE response_id=? ORDER BY created_at,id', response.id).map(row => String(row.path));
42
+ const ref = this.history.insertMessageOnce(operationId, { ...message, ...ingress.metadata, repliedToMessageId: ingress.metadata?.repliedMessageId, repliedToText: ingress.metadata?.repliedText, repliedToUser: ingress.metadata?.repliedSender, mediaFiles: mediaFiles.length ? mediaFiles : undefined, chatId: `${source}-${chatId}`, sessionId, source });
43
+ this.orchestration.run("UPDATE history_operations SET state='completed',canonical_message_ref=?,updated_at=? WHERE operation_id=?", String(ref), Date.now(), operationId);
44
+ this.orchestration.run("UPDATE outbox SET state='completed' WHERE kind='history' AND dedup_key=?", operationId);
45
+ }
46
+ }
47
+ exports.OrchestrationHistoryWriter = OrchestrationHistoryWriter;
48
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/orchestration/history.ts"],"names":[],"mappings":";;;AAAA,mDAAqD;AAKrD,mCAA6C;AAE7C;iFACiF;AACjF,MAAa,0BAA0B;IACrC,YAA6B,aAAiC,EAAmB,QAAsB,EAAmB,OAAkB;QAA/G,kBAAa,GAAb,aAAa,CAAoB;QAAmB,aAAQ,GAAR,QAAQ,CAAc;QAAmB,YAAO,GAAP,OAAO,CAAW;IAAG,CAAC;IAChJ,KAAK,CAAC,KAAK,CAAC,WAAmB;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,uDAAuD,EAAE,WAAW,CAAC,CAAC;QAC/G,IAAI,CAAC,SAAS;YAAE,MAAM,IAAI,0BAAkB,CAAC,6BAA6B,CAAC,CAAC;QAC5E,IAAI,SAAS,CAAC,KAAK,KAAK,WAAW;YAAE,OAAO;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,wCAAwC,EAAE,SAAS,CAAC,eAAe,CAAE,CAAC;QAClH,MAAM,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,8CAA8C,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1I,MAAM,QAAQ,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,8CAA8C,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnJ,IAAI,CAAC,KAAK,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,0BAAkB,CAAC,2BAA2B,CAAC,CAAC;QACnF,IAAI,KAAK,EAAE,kBAAkB,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;YAC7F,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,mFAAmF,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;YACrI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,0EAA0E,EAAE,WAAW,CAAC,CAAC;YAChH,OAAO;QACT,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAqB,CAAC;QAC/D,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/F,MAAM,OAAO,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,WAAoB;YACjF,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,QAAQ,EAAE,cAAc,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,IAAI,QAAQ,EAAE,YAAY,IAAI,QAAQ,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9I,IAAI,MAAM,KAAK,KAAK;YAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;;YACnG,MAAM,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/G,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAG,KAAK;YAAC,OAAO,CAAC,QAAQ,GAAC,IAAA,kCAAkB,EAAC,IAAI,CAAC,aAAa,EAAC,EAAC,OAAO,EAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAC,cAAc,EAAC,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC,EAAC,WAAW,EAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,EAAC,EAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzR,MAAM,UAAU,GAAa,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,wEAAwE,EAAE,QAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAClO,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,kBAAkB,EAAE,OAAO,CAAC,QAAQ,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7V,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,2GAA2G,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAC1K,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,0EAA0E,EAAE,WAAW,CAAC,CAAC;IAClH,CAAC;CACF;AA5BD,gEA4BC"}
@@ -0,0 +1,6 @@
1
+ import type { AgentConfig, ApiKey } from '../types';
2
+ import type { ExecutionCapabilities } from './types';
3
+ /** Config IDs survive key rotation; legacy keys have a non-reversible stable fallback. */
4
+ export declare function apiPrincipal(key: ApiKey): string;
5
+ export declare function apiExecutionCapabilities(agent: AgentConfig, key: ApiKey): ExecutionCapabilities;
6
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../src/orchestration/identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,0FAA0F;AAC1F,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AACD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,GAAG,qBAAqB,CAE/F"}
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.apiPrincipal = apiPrincipal;
4
+ exports.apiExecutionCapabilities = apiExecutionCapabilities;
5
+ const crypto_1 = require("crypto");
6
+ /** Config IDs survive key rotation; legacy keys have a non-reversible stable fallback. */
7
+ function apiPrincipal(key) {
8
+ return key.id ? `api:${key.id}` : `api-sha256:${(0, crypto_1.createHash)('sha256').update(key.key).digest('hex')}`;
9
+ }
10
+ function apiExecutionCapabilities(agent, key) {
11
+ return { execute: agent.allow_tools ?? Boolean(key.allow_tools), writeMemory: false };
12
+ }
13
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../src/orchestration/identity.ts"],"names":[],"mappings":";;AAKA,oCAEC;AACD,4DAEC;AAVD,mCAAoC;AAIpC,0FAA0F;AAC1F,SAAgB,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,IAAA,mBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;AACvG,CAAC;AACD,SAAgB,wBAAwB,CAAC,KAAkB,EAAE,GAAW;IACtE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACxF,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** User-facing provider failures, without credentials or internal stack traces. */
2
+ export declare function inferenceFailureMessage(error: unknown): string | undefined;
3
+ //# sourceMappingURL=inference-errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference-errors.d.ts","sourceRoot":"","sources":["../../src/orchestration/inference-errors.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAQ1E"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inferenceFailureMessage = inferenceFailureMessage;
4
+ /** User-facing provider failures, without credentials or internal stack traces. */
5
+ function inferenceFailureMessage(error) {
6
+ const failure = error;
7
+ if (failure?.code === 'PROVIDER_CAPACITY')
8
+ return '503: Provider capacity is fully in use right now. Please try again later.';
9
+ if (failure?.code === 'PROVIDER_UNAVAILABLE')
10
+ return '503: The model provider is temporarily unavailable. Please try again shortly.';
11
+ if (failure?.code === 'INFERENCE_FAILED' && typeof failure.message === 'string' && /^API Error:/i.test(failure.message)) {
12
+ return failure.message.replace(/^API Error:\s*/i, '').replace(/Bearer\s+[^\s"']+/gi, 'Bearer [redacted]').replace(/sk-[A-Za-z0-9_-]+/g, '[redacted]').slice(0, 1000);
13
+ }
14
+ return undefined;
15
+ }
16
+ //# sourceMappingURL=inference-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inference-errors.js","sourceRoot":"","sources":["../../src/orchestration/inference-errors.ts"],"names":[],"mappings":";;AACA,0DAQC;AATD,mFAAmF;AACnF,SAAgB,uBAAuB,CAAC,KAAc;IACpD,MAAM,OAAO,GAAG,KAAmD,CAAC;IACpE,IAAI,OAAO,EAAE,IAAI,KAAK,mBAAmB;QAAE,OAAO,2EAA2E,CAAC;IAC9H,IAAI,OAAO,EAAE,IAAI,KAAK,sBAAsB;QAAE,OAAO,+EAA+E,CAAC;IACrI,IAAI,OAAO,EAAE,IAAI,KAAK,kBAAkB,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACxH,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACvK,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { InputImage } from '../session/input-image';
2
+ /** Load only scoped ingress media. Keep original refs in storage and worker context;
3
+ * base64 lives only in the transient inference request. Do not silently omit images. */
4
+ export declare function loadInputImages(agentsRoot: string, agentId: string, refs?: string[]): Promise<{
5
+ images: InputImage[];
6
+ refs: string[];
7
+ unavailable: Array<{
8
+ ref: string;
9
+ reason: string;
10
+ }>;
11
+ }>;
12
+ //# sourceMappingURL=input-images.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-images.d.ts","sourceRoot":"","sources":["../../src/orchestration/input-images.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAWzD;wFACwF;AACxF,wBAAsB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC;IACvG,MAAM,EAAE,UAAU,EAAE,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,WAAW,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC3F,CAAC,CAmCD"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadInputImages = loadInputImages;
4
+ const fs_1 = require("fs");
5
+ const promises_1 = require("fs/promises");
6
+ const media_store_1 = require("../history/media-store");
7
+ const MAX_IMAGE_BYTES = 5 * 1024 * 1024;
8
+ const MAX_TURN_BYTES = 20 * 1024 * 1024;
9
+ const MAX_IMAGES = 20;
10
+ function imageMime(bytes) {
11
+ if (bytes.subarray(0, 8).equals(Buffer.from([137, 80, 78, 71, 13, 10, 26, 10])))
12
+ return 'image/png';
13
+ if (bytes[0] === 255 && bytes[1] === 216 && bytes[2] === 255)
14
+ return 'image/jpeg';
15
+ if (/^GIF8[79]a$/.test(bytes.subarray(0, 6).toString('ascii')))
16
+ return 'image/gif';
17
+ if (bytes.subarray(0, 4).toString() === 'RIFF' && bytes.subarray(8, 12).toString() === 'WEBP')
18
+ return 'image/webp';
19
+ }
20
+ /** Load only scoped ingress media. Keep original refs in storage and worker context;
21
+ * base64 lives only in the transient inference request. Do not silently omit images. */
22
+ async function loadInputImages(agentsRoot, agentId, refs = []) {
23
+ const result = { images: [], refs: [], unavailable: [] };
24
+ let total = 0;
25
+ for (const ref of [...new Set(refs)]) {
26
+ let file;
27
+ try {
28
+ file = await (0, promises_1.open)(media_store_1.MediaStore.resolvePath(agentsRoot, agentId, ref), fs_1.constants.O_RDONLY | fs_1.constants.O_NOFOLLOW | fs_1.constants.O_NONBLOCK);
29
+ const stat = await file.stat();
30
+ if (!stat.isFile())
31
+ throw new Error('not a regular file');
32
+ const header = Buffer.alloc(12);
33
+ await file.read(header, 0, header.length, 0);
34
+ const mime = imageMime(header);
35
+ if (!mime) {
36
+ if (/\.(png|jpe?g|gif|webp|heic|heif|avif|svg|bmp|tiff?)$/i.test(ref))
37
+ result.unavailable.push({ ref, reason: 'Unsupported or invalid image; resend as PNG, JPEG, GIF or WebP.' });
38
+ continue;
39
+ }
40
+ if (stat.size > MAX_IMAGE_BYTES || total + stat.size > MAX_TURN_BYTES || result.images.length >= MAX_IMAGES) {
41
+ result.unavailable.push({ ref, reason: 'Image input limit: 5 MiB per image, 20 MiB and 20 images per turn. Resize or send fewer images.' });
42
+ continue;
43
+ }
44
+ // Bounded positional read even if the source file grows concurrently.
45
+ const bytes = Buffer.alloc(stat.size);
46
+ let offset = 0;
47
+ while (offset < bytes.length) {
48
+ const { bytesRead } = await file.read(bytes, offset, bytes.length - offset, offset);
49
+ if (!bytesRead)
50
+ throw new Error('incomplete image');
51
+ offset += bytesRead;
52
+ }
53
+ result.images.push({ type: 'image', source: { type: 'base64', media_type: mime, data: bytes.toString('base64') } });
54
+ result.refs.push(ref);
55
+ total += bytes.length;
56
+ }
57
+ catch {
58
+ result.unavailable.push({ ref, reason: 'Attachment unavailable. Do not claim to have inspected it; ask the user to resend if needed.' });
59
+ }
60
+ finally {
61
+ await file?.close();
62
+ }
63
+ }
64
+ return result;
65
+ }
66
+ //# sourceMappingURL=input-images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"input-images.js","sourceRoot":"","sources":["../../src/orchestration/input-images.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** A separate SQLite file holds an OS-released instance lock. This connection
2
+ * contains no application data and never shares task/history transactions.
3
+ * Unlike PID files it survives crashes without stale-file deletion races. */
4
+ export declare function acquireInstanceLock(filename: string): () => void;
5
+ //# sourceMappingURL=instance-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-lock.d.ts","sourceRoot":"","sources":["../../src/orchestration/instance-lock.ts"],"names":[],"mappings":"AAIA;;6EAE6E;AAC7E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,IAAI,CAehE"}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.acquireInstanceLock = acquireInstanceLock;
4
+ const node_sqlite_1 = require("node:sqlite");
5
+ const fs_1 = require("fs");
6
+ const types_1 = require("./types");
7
+ /** A separate SQLite file holds an OS-released instance lock. This connection
8
+ * contains no application data and never shares task/history transactions.
9
+ * Unlike PID files it survives crashes without stale-file deletion races. */
10
+ function acquireInstanceLock(filename) {
11
+ const lock = new node_sqlite_1.DatabaseSync(filename);
12
+ try {
13
+ (0, fs_1.chmodSync)(filename, 0o600);
14
+ lock.exec('PRAGMA busy_timeout=0; BEGIN EXCLUSIVE;');
15
+ }
16
+ catch {
17
+ lock.close();
18
+ throw new types_1.OrchestrationError('ORCHESTRATION_ALREADY_RUNNING');
19
+ }
20
+ let released = false;
21
+ return () => {
22
+ if (released)
23
+ return;
24
+ released = true;
25
+ try {
26
+ lock.exec('ROLLBACK');
27
+ }
28
+ finally {
29
+ lock.close();
30
+ }
31
+ };
32
+ }
33
+ //# sourceMappingURL=instance-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instance-lock.js","sourceRoot":"","sources":["../../src/orchestration/instance-lock.ts"],"names":[],"mappings":";;AAOA,kDAeC;AAtBD,6CAA2C;AAC3C,2BAA+B;AAC/B,mCAA6C;AAE7C;;6EAE6E;AAC7E,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,MAAM,IAAI,GAAG,IAAI,0BAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC;QACH,IAAA,cAAS,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,0BAAkB,CAAC,+BAA+B,CAAC,CAAC;IAChE,CAAC;IACD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO,GAAG,EAAE;QACV,IAAI,QAAQ;YAAE,OAAO;QACrB,QAAQ,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAC,CAAC;gBAAS,CAAC;YAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,CAAC;IAC1D,CAAC,CAAC;AACJ,CAAC"}