@0xmaxma/claude-gateway 1.8.14 → 2.0.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 (582) hide show
  1. package/README.md +28 -1613
  2. package/config.template.json +7 -1
  3. package/dist/agent/runner.d.ts +377 -0
  4. package/dist/agent/runner.d.ts.map +1 -1
  5. package/dist/agent/runner.js +680 -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 +135 -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 +256 -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 +148 -0
  166. package/dist/orchestration/decisions.js.map +1 -0
  167. package/dist/orchestration/delivery.d.ts +30 -0
  168. package/dist/orchestration/delivery.d.ts.map +1 -0
  169. package/dist/orchestration/delivery.js +219 -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 +232 -0
  252. package/dist/orchestration/runtime.d.ts.map +1 -0
  253. package/dist/orchestration/runtime.js +962 -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 +86 -0
  272. package/dist/orchestration/store.d.ts.map +1 -0
  273. package/dist/orchestration/store.js +275 -0
  274. package/dist/orchestration/store.js.map +1 -0
  275. package/dist/orchestration/task-controls.d.ts +130 -0
  276. package/dist/orchestration/task-controls.d.ts.map +1 -0
  277. package/dist/orchestration/task-controls.js +55 -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-report.d.ts +7 -0
  284. package/dist/orchestration/task-report.d.ts.map +1 -0
  285. package/dist/orchestration/task-report.js +33 -0
  286. package/dist/orchestration/task-report.js.map +1 -0
  287. package/dist/orchestration/tasks/checkpoint-hook.d.ts +19 -0
  288. package/dist/orchestration/tasks/checkpoint-hook.d.ts.map +1 -0
  289. package/dist/orchestration/tasks/checkpoint-hook.js +49 -0
  290. package/dist/orchestration/tasks/checkpoint-hook.js.map +1 -0
  291. package/dist/orchestration/tasks/cleanup.d.ts +18 -0
  292. package/dist/orchestration/tasks/cleanup.d.ts.map +1 -0
  293. package/dist/orchestration/tasks/cleanup.js +113 -0
  294. package/dist/orchestration/tasks/cleanup.js.map +1 -0
  295. package/dist/orchestration/tasks/driver.d.ts +23 -0
  296. package/dist/orchestration/tasks/driver.d.ts.map +1 -0
  297. package/dist/orchestration/tasks/driver.js +209 -0
  298. package/dist/orchestration/tasks/driver.js.map +1 -0
  299. package/dist/orchestration/tasks/failure.d.ts +5 -0
  300. package/dist/orchestration/tasks/failure.d.ts.map +1 -0
  301. package/dist/orchestration/tasks/failure.js +17 -0
  302. package/dist/orchestration/tasks/failure.js.map +1 -0
  303. package/dist/orchestration/tasks/pool.d.ts +18 -0
  304. package/dist/orchestration/tasks/pool.d.ts.map +1 -0
  305. package/dist/orchestration/tasks/pool.js +73 -0
  306. package/dist/orchestration/tasks/pool.js.map +1 -0
  307. package/dist/orchestration/tasks/scheduler.d.ts +38 -0
  308. package/dist/orchestration/tasks/scheduler.d.ts.map +1 -0
  309. package/dist/orchestration/tasks/scheduler.js +160 -0
  310. package/dist/orchestration/tasks/scheduler.js.map +1 -0
  311. package/dist/orchestration/tasks/service.d.ts +109 -0
  312. package/dist/orchestration/tasks/service.d.ts.map +1 -0
  313. package/dist/orchestration/tasks/service.js +697 -0
  314. package/dist/orchestration/tasks/service.js.map +1 -0
  315. package/dist/orchestration/tasks/shared-workspace.d.ts +25 -0
  316. package/dist/orchestration/tasks/shared-workspace.d.ts.map +1 -0
  317. package/dist/orchestration/tasks/shared-workspace.js +162 -0
  318. package/dist/orchestration/tasks/shared-workspace.js.map +1 -0
  319. package/dist/orchestration/tasks/task-directive.d.ts +6 -0
  320. package/dist/orchestration/tasks/task-directive.d.ts.map +1 -0
  321. package/dist/orchestration/tasks/task-directive.js +41 -0
  322. package/dist/orchestration/tasks/task-directive.js.map +1 -0
  323. package/dist/orchestration/tasks/timing.d.ts +15 -0
  324. package/dist/orchestration/tasks/timing.d.ts.map +1 -0
  325. package/dist/orchestration/tasks/timing.js +48 -0
  326. package/dist/orchestration/tasks/timing.js.map +1 -0
  327. package/dist/orchestration/tasks/tool-repetition.d.ts +3 -0
  328. package/dist/orchestration/tasks/tool-repetition.d.ts.map +1 -0
  329. package/dist/orchestration/tasks/tool-repetition.js +30 -0
  330. package/dist/orchestration/tasks/tool-repetition.js.map +1 -0
  331. package/dist/orchestration/tasks/workspace.d.ts +24 -0
  332. package/dist/orchestration/tasks/workspace.d.ts.map +1 -0
  333. package/dist/orchestration/tasks/workspace.js +147 -0
  334. package/dist/orchestration/tasks/workspace.js.map +1 -0
  335. package/dist/orchestration/telegram-speech.d.ts +17 -0
  336. package/dist/orchestration/telegram-speech.d.ts.map +1 -0
  337. package/dist/orchestration/telegram-speech.js +55 -0
  338. package/dist/orchestration/telegram-speech.js.map +1 -0
  339. package/dist/orchestration/telegram-tool-status.d.ts +23 -0
  340. package/dist/orchestration/telegram-tool-status.d.ts.map +1 -0
  341. package/dist/orchestration/telegram-tool-status.js +207 -0
  342. package/dist/orchestration/telegram-tool-status.js.map +1 -0
  343. package/dist/orchestration/telegram-voices.d.ts +42 -0
  344. package/dist/orchestration/telegram-voices.d.ts.map +1 -0
  345. package/dist/orchestration/telegram-voices.js +70 -0
  346. package/dist/orchestration/telegram-voices.js.map +1 -0
  347. package/dist/orchestration/tool-activity.d.ts +10 -0
  348. package/dist/orchestration/tool-activity.d.ts.map +1 -0
  349. package/dist/orchestration/tool-activity.js +38 -0
  350. package/dist/orchestration/tool-activity.js.map +1 -0
  351. package/dist/orchestration/types.d.ts +177 -0
  352. package/dist/orchestration/types.d.ts.map +1 -0
  353. package/dist/orchestration/types.js +13 -0
  354. package/dist/orchestration/types.js.map +1 -0
  355. package/dist/orchestration/voice-reply-policy.d.ts +8 -0
  356. package/dist/orchestration/voice-reply-policy.d.ts.map +1 -0
  357. package/dist/orchestration/voice-reply-policy.js +46 -0
  358. package/dist/orchestration/voice-reply-policy.js.map +1 -0
  359. package/dist/orchestration/worker-shares.d.ts +8 -0
  360. package/dist/orchestration/worker-shares.d.ts.map +1 -0
  361. package/dist/orchestration/worker-shares.js +59 -0
  362. package/dist/orchestration/worker-shares.js.map +1 -0
  363. package/dist/orchestration/workflow.d.ts +121 -0
  364. package/dist/orchestration/workflow.d.ts.map +1 -0
  365. package/dist/orchestration/workflow.js +69 -0
  366. package/dist/orchestration/workflow.js.map +1 -0
  367. package/dist/session/input-image.d.ts +10 -0
  368. package/dist/session/input-image.d.ts.map +1 -0
  369. package/dist/session/input-image.js +3 -0
  370. package/dist/session/input-image.js.map +1 -0
  371. package/dist/session/process.d.ts +15 -3
  372. package/dist/session/process.d.ts.map +1 -1
  373. package/dist/session/process.js +143 -35
  374. package/dist/session/process.js.map +1 -1
  375. package/dist/session/runtime-profile.d.ts +36 -0
  376. package/dist/session/runtime-profile.d.ts.map +1 -0
  377. package/dist/session/runtime-profile.js +63 -0
  378. package/dist/session/runtime-profile.js.map +1 -0
  379. package/dist/session/store.d.ts.map +1 -1
  380. package/dist/session/store.js +23 -1
  381. package/dist/session/store.js.map +1 -1
  382. package/dist/share/share-store.d.ts +3 -1
  383. package/dist/share/share-store.d.ts.map +1 -1
  384. package/dist/share/share-store.js +13 -2
  385. package/dist/share/share-store.js.map +1 -1
  386. package/dist/shared/line-request-order.d.ts +2 -0
  387. package/dist/shared/line-request-order.d.ts.map +1 -0
  388. package/dist/shared/line-request-order.js +16 -0
  389. package/dist/shared/line-request-order.js.map +1 -0
  390. package/dist/shared/task-elapsed.d.ts +3 -0
  391. package/dist/shared/task-elapsed.d.ts.map +1 -0
  392. package/dist/shared/task-elapsed.js +12 -0
  393. package/dist/shared/task-elapsed.js.map +1 -0
  394. package/dist/shared/task-updated-time.d.ts +3 -0
  395. package/dist/shared/task-updated-time.d.ts.map +1 -0
  396. package/dist/shared/task-updated-time.js +15 -0
  397. package/dist/shared/task-updated-time.js.map +1 -0
  398. package/dist/skills/loader.d.ts +2 -0
  399. package/dist/skills/loader.d.ts.map +1 -1
  400. package/dist/skills/loader.js.map +1 -1
  401. package/dist/telegram/chunks.d.ts +19 -0
  402. package/dist/telegram/chunks.d.ts.map +1 -0
  403. package/dist/telegram/chunks.js +129 -0
  404. package/dist/telegram/chunks.js.map +1 -0
  405. package/dist/telegram/markdown.d.ts.map +1 -1
  406. package/dist/telegram/markdown.js +18 -3
  407. package/dist/telegram/markdown.js.map +1 -1
  408. package/dist/telegram/receiver.d.ts +2 -1
  409. package/dist/telegram/receiver.d.ts.map +1 -1
  410. package/dist/telegram/receiver.js +6 -1
  411. package/dist/telegram/receiver.js.map +1 -1
  412. package/dist/types.d.ts +14 -0
  413. package/dist/types.d.ts.map +1 -1
  414. package/dist/ui/web-ui.d.ts.map +1 -1
  415. package/dist/ui/web-ui.js +31 -5
  416. package/dist/ui/web-ui.js.map +1 -1
  417. package/dist/voice/diagnostics.d.ts +29 -0
  418. package/dist/voice/diagnostics.d.ts.map +1 -0
  419. package/dist/voice/diagnostics.js +37 -0
  420. package/dist/voice/diagnostics.js.map +1 -0
  421. package/dist/voice/errors.d.ts +19 -0
  422. package/dist/voice/errors.d.ts.map +1 -0
  423. package/dist/voice/errors.js +133 -0
  424. package/dist/voice/errors.js.map +1 -0
  425. package/dist/voice/line-audio.d.ts +4 -0
  426. package/dist/voice/line-audio.d.ts.map +1 -0
  427. package/dist/voice/line-audio.js +27 -0
  428. package/dist/voice/line-audio.js.map +1 -0
  429. package/dist/voice/managed-quota.d.ts +5 -0
  430. package/dist/voice/managed-quota.d.ts.map +1 -0
  431. package/dist/voice/managed-quota.js +35 -0
  432. package/dist/voice/managed-quota.js.map +1 -0
  433. package/dist/voice/mp3.d.ts +3 -0
  434. package/dist/voice/mp3.d.ts.map +1 -0
  435. package/dist/voice/mp3.js +30 -0
  436. package/dist/voice/mp3.js.map +1 -0
  437. package/dist/voice/notes.d.ts +9 -0
  438. package/dist/voice/notes.d.ts.map +1 -0
  439. package/dist/voice/notes.js +68 -0
  440. package/dist/voice/notes.js.map +1 -0
  441. package/dist/voice/playback.d.ts +22 -0
  442. package/dist/voice/playback.d.ts.map +1 -0
  443. package/dist/voice/playback.js +52 -0
  444. package/dist/voice/playback.js.map +1 -0
  445. package/dist/voice/preview.d.ts +6 -0
  446. package/dist/voice/preview.d.ts.map +1 -0
  447. package/dist/voice/preview.js +44 -0
  448. package/dist/voice/preview.js.map +1 -0
  449. package/dist/voice/protocol.d.ts +10 -0
  450. package/dist/voice/protocol.d.ts.map +1 -0
  451. package/dist/voice/protocol.js +30 -0
  452. package/dist/voice/protocol.js.map +1 -0
  453. package/dist/voice/providers/cartesia-tts.d.ts +26 -0
  454. package/dist/voice/providers/cartesia-tts.d.ts.map +1 -0
  455. package/dist/voice/providers/cartesia-tts.js +95 -0
  456. package/dist/voice/providers/cartesia-tts.js.map +1 -0
  457. package/dist/voice/providers/deepgram-stt.d.ts +20 -0
  458. package/dist/voice/providers/deepgram-stt.d.ts.map +1 -0
  459. package/dist/voice/providers/deepgram-stt.js +66 -0
  460. package/dist/voice/providers/deepgram-stt.js.map +1 -0
  461. package/dist/voice/providers/elevenlabs-stt.d.ts +20 -0
  462. package/dist/voice/providers/elevenlabs-stt.d.ts.map +1 -0
  463. package/dist/voice/providers/elevenlabs-stt.js +92 -0
  464. package/dist/voice/providers/elevenlabs-stt.js.map +1 -0
  465. package/dist/voice/providers/elevenlabs-tts.d.ts +26 -0
  466. package/dist/voice/providers/elevenlabs-tts.d.ts.map +1 -0
  467. package/dist/voice/providers/elevenlabs-tts.js +82 -0
  468. package/dist/voice/providers/elevenlabs-tts.js.map +1 -0
  469. package/dist/voice/providers/encoded-audio-tts.d.ts +21 -0
  470. package/dist/voice/providers/encoded-audio-tts.d.ts.map +1 -0
  471. package/dist/voice/providers/encoded-audio-tts.js +175 -0
  472. package/dist/voice/providers/encoded-audio-tts.js.map +1 -0
  473. package/dist/voice/providers/fake.d.ts +39 -0
  474. package/dist/voice/providers/fake.d.ts.map +1 -0
  475. package/dist/voice/providers/fake.js +41 -0
  476. package/dist/voice/providers/fake.js.map +1 -0
  477. package/dist/voice/providers/gemini-live-stt.d.ts +21 -0
  478. package/dist/voice/providers/gemini-live-stt.d.ts.map +1 -0
  479. package/dist/voice/providers/gemini-live-stt.js +158 -0
  480. package/dist/voice/providers/gemini-live-stt.js.map +1 -0
  481. package/dist/voice/providers/gemini.d.ts +60 -0
  482. package/dist/voice/providers/gemini.d.ts.map +1 -0
  483. package/dist/voice/providers/gemini.js +124 -0
  484. package/dist/voice/providers/gemini.js.map +1 -0
  485. package/dist/voice/providers/model-ref.d.ts +9 -0
  486. package/dist/voice/providers/model-ref.d.ts.map +1 -0
  487. package/dist/voice/providers/model-ref.js +31 -0
  488. package/dist/voice/providers/model-ref.js.map +1 -0
  489. package/dist/voice/providers/openrouter.d.ts +39 -0
  490. package/dist/voice/providers/openrouter.d.ts.map +1 -0
  491. package/dist/voice/providers/openrouter.js +154 -0
  492. package/dist/voice/providers/openrouter.js.map +1 -0
  493. package/dist/voice/providers/paxalabs-stt.d.ts +12 -0
  494. package/dist/voice/providers/paxalabs-stt.d.ts.map +1 -0
  495. package/dist/voice/providers/paxalabs-stt.js +41 -0
  496. package/dist/voice/providers/paxalabs-stt.js.map +1 -0
  497. package/dist/voice/providers/paxalabs-tts.d.ts +23 -0
  498. package/dist/voice/providers/paxalabs-tts.d.ts.map +1 -0
  499. package/dist/voice/providers/paxalabs-tts.js +80 -0
  500. package/dist/voice/providers/paxalabs-tts.js.map +1 -0
  501. package/dist/voice/providers/recorded-stt.d.ts +34 -0
  502. package/dist/voice/providers/recorded-stt.d.ts.map +1 -0
  503. package/dist/voice/providers/recorded-stt.js +59 -0
  504. package/dist/voice/providers/recorded-stt.js.map +1 -0
  505. package/dist/voice/providers/registry.d.ts +10 -0
  506. package/dist/voice/providers/registry.d.ts.map +1 -0
  507. package/dist/voice/providers/registry.js +77 -0
  508. package/dist/voice/providers/registry.js.map +1 -0
  509. package/dist/voice/providers/socket.d.ts +10 -0
  510. package/dist/voice/providers/socket.d.ts.map +1 -0
  511. package/dist/voice/providers/socket.js +91 -0
  512. package/dist/voice/providers/socket.js.map +1 -0
  513. package/dist/voice/providers/upstream.d.ts +9 -0
  514. package/dist/voice/providers/upstream.d.ts.map +1 -0
  515. package/dist/voice/providers/upstream.js +51 -0
  516. package/dist/voice/providers/upstream.js.map +1 -0
  517. package/dist/voice/providers/voice-catalog.d.ts +17 -0
  518. package/dist/voice/providers/voice-catalog.d.ts.map +1 -0
  519. package/dist/voice/providers/voice-catalog.js +167 -0
  520. package/dist/voice/providers/voice-catalog.js.map +1 -0
  521. package/dist/voice/queue.d.ts +2 -0
  522. package/dist/voice/queue.d.ts.map +1 -0
  523. package/dist/voice/queue.js +6 -0
  524. package/dist/voice/queue.js.map +1 -0
  525. package/dist/voice/session.d.ts +86 -0
  526. package/dist/voice/session.d.ts.map +1 -0
  527. package/dist/voice/session.js +464 -0
  528. package/dist/voice/session.js.map +1 -0
  529. package/dist/voice/turn-manager.d.ts +27 -0
  530. package/dist/voice/turn-manager.d.ts.map +1 -0
  531. package/dist/voice/turn-manager.js +75 -0
  532. package/dist/voice/turn-manager.js.map +1 -0
  533. package/dist/voice/types.d.ts +78 -0
  534. package/dist/voice/types.d.ts.map +1 -0
  535. package/dist/voice/types.js +18 -0
  536. package/dist/voice/types.js.map +1 -0
  537. package/dist/voice/wav.d.ts +2 -0
  538. package/dist/voice/wav.d.ts.map +1 -0
  539. package/dist/voice/wav.js +21 -0
  540. package/dist/voice/wav.js.map +1 -0
  541. package/dist/wechat/ilink-client.d.ts +13 -0
  542. package/dist/wechat/ilink-client.d.ts.map +1 -1
  543. package/dist/wechat/ilink-client.js +19 -0
  544. package/dist/wechat/ilink-client.js.map +1 -1
  545. package/dist/whatsapp/manager.d.ts.map +1 -1
  546. package/dist/whatsapp/manager.js +51 -1
  547. package/dist/whatsapp/manager.js.map +1 -1
  548. package/mcp/capability-catalog.ts +206 -0
  549. package/mcp/modules.ts +56 -0
  550. package/mcp/server.ts +18 -37
  551. package/mcp/tools/browser/module.ts +1 -1
  552. package/mcp/tools/browser/skills/open-browser/SKILL.md +5 -3
  553. package/mcp/tools/discord/commands.ts +17 -1
  554. package/mcp/tools/discord/inbound.ts +11 -0
  555. package/mcp/tools/discord/module.ts +42 -2
  556. package/mcp/tools/discord/receiver-server.ts +10 -0
  557. package/mcp/tools/discord/types.ts +4 -1
  558. package/mcp/tools/image/module.ts +3 -1
  559. package/mcp/tools/receiver-spool.test.ts +28 -0
  560. package/mcp/tools/receiver-spool.ts +56 -0
  561. package/mcp/tools/share-file/module.ts +9 -1
  562. package/mcp/tools/shared/share-client.ts +19 -0
  563. package/mcp/tools/tasks/module.ts +35 -0
  564. package/mcp/tools/telegram/media-group.ts +21 -0
  565. package/mcp/tools/telegram/receiver-server.ts +232 -11
  566. package/mcp/tools/telegram/selection-confirmation.ts +20 -0
  567. package/mcp/tools/telegram/task-browser.ts +117 -0
  568. package/mcp/tools/telegram/task-detail.ts +36 -0
  569. package/mcp/tools/telegram/task-elapsed.ts +1 -0
  570. package/mcp/tools/telegram/typing.ts +6 -116
  571. package/mcp/tools/video/module.ts +1 -1
  572. package/mcp/types.ts +5 -0
  573. package/package.json +2 -1
  574. package/resource/claude_gateway.jpeg +0 -0
  575. package/scripts/orchestration/bench-store.cjs +30 -0
  576. package/scripts/orchestration/inspect.cjs +16 -0
  577. package/scripts/orchestration/probe-profile.cjs +67 -0
  578. package/scripts/orchestration/reconcile.cjs +21 -0
  579. package/scripts/orchestration/smoke-elevenlabs.cjs +90 -0
  580. package/scripts/orchestration/smoke-media.cjs +70 -0
  581. package/scripts/orchestration/smoke-text.cjs +101 -0
  582. package/scripts/orchestration/smoke-vision.cjs +49 -0
@@ -0,0 +1,417 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CapabilityCatalog = void 0;
4
+ exports.probeMcpConfiguration = probeMcpConfiguration;
5
+ exports.readCapabilityPage = readCapabilityPage;
6
+ const child_process_1 = require("child_process");
7
+ const crypto_1 = require("crypto");
8
+ const promises_1 = require("fs/promises");
9
+ const os_1 = require("os");
10
+ const path_1 = require("path");
11
+ const resolve_1 = require("../connectors/resolve");
12
+ const custom_1 = require("../connectors/custom");
13
+ const claude_bin_1 = require("../session/claude-bin");
14
+ const runtime_profile_1 = require("../session/runtime-profile");
15
+ const config_1 = require("./config");
16
+ const bridge_1 = require("./bridge");
17
+ const types_1 = require("./types");
18
+ function terminateCatalogProcess(child, signal = 'SIGTERM') {
19
+ try {
20
+ if (process.platform === 'linux' && child.pid)
21
+ process.kill(-child.pid, signal);
22
+ else
23
+ child.kill(signal);
24
+ }
25
+ catch {
26
+ /* Already exited. */
27
+ }
28
+ }
29
+ /** Obtain CLI-resolved MCP configs (including enabled plugins), without a user turn. */
30
+ function probeMcpConfiguration(command, args, cwd, onObserved) {
31
+ return new Promise((resolveResult, reject) => {
32
+ const child = (0, child_process_1.spawn)(command, args, {
33
+ cwd,
34
+ detached: process.platform === 'linux',
35
+ env: {
36
+ ...process.env,
37
+ ...((0, claude_bin_1.pathWithNativeBin)() ? { PATH: (0, claude_bin_1.pathWithNativeBin)() } : {}),
38
+ },
39
+ stdio: ['pipe', 'pipe', 'pipe'],
40
+ });
41
+ let buffer = '', bytes = 0, value;
42
+ let failure, stopped = false;
43
+ let kill;
44
+ let retry, polls = 0;
45
+ const stop = (error) => {
46
+ if (stopped)
47
+ return;
48
+ stopped = true;
49
+ failure = error;
50
+ if (retry)
51
+ clearTimeout(retry);
52
+ clearTimeout(timer);
53
+ child.stdin.end();
54
+ terminateCatalogProcess(child);
55
+ kill = setTimeout(() => terminateCatalogProcess(child, 'SIGKILL'), 1000);
56
+ kill.unref();
57
+ };
58
+ const timer = setTimeout(() => stop(Error('CAPABILITY_DISCOVERY_TIMEOUT')), 10000);
59
+ child.stdin.on('error', () => { });
60
+ child.stderr.on('data', () => { });
61
+ child.stdout.setEncoding('utf8');
62
+ child.on('error', () => {
63
+ clearTimeout(timer);
64
+ if (retry)
65
+ clearTimeout(retry);
66
+ if (kill)
67
+ clearTimeout(kill);
68
+ reject(Error('CAPABILITY_DISCOVERY_UNAVAILABLE'));
69
+ });
70
+ child.stdout.on('data', (chunk) => {
71
+ bytes += Buffer.byteLength(chunk);
72
+ if (bytes > 4 * 1024 * 1024) {
73
+ stop(Error('CAPABILITY_DISCOVERY_TOO_LARGE'));
74
+ return;
75
+ }
76
+ buffer += chunk.toString();
77
+ let end;
78
+ while ((end = buffer.indexOf('\n')) >= 0) {
79
+ const line = buffer.slice(0, end);
80
+ buffer = buffer.slice(end + 1);
81
+ try {
82
+ const event = JSON.parse(line);
83
+ if (event.type !== 'control_response')
84
+ continue;
85
+ if (event.response?.subtype !== 'success') {
86
+ stop(Error('CAPABILITY_DISCOVERY_UNAVAILABLE'));
87
+ return;
88
+ }
89
+ if (event.response.request_id === 'catalog-init')
90
+ child.stdin.write(JSON.stringify({
91
+ type: 'control_request',
92
+ request_id: 'catalog-mcp',
93
+ request: { subtype: 'mcp_status' },
94
+ }) + '\n');
95
+ if (event.response.request_id === 'catalog-mcp') {
96
+ const servers = event.response.response?.mcpServers;
97
+ if (!Array.isArray(servers))
98
+ throw Error('INVALID_CATALOG');
99
+ if (servers.some((s) => s.status === 'pending') && polls++ < 6) {
100
+ retry = setTimeout(() => child.stdin.write(JSON.stringify({
101
+ type: 'control_request',
102
+ request_id: 'catalog-mcp',
103
+ request: { subtype: 'mcp_status' },
104
+ }) + '\n'), 400);
105
+ return;
106
+ }
107
+ onObserved?.(servers
108
+ .filter((s) => typeof s.name === 'string' && !(0, custom_1.isReservedConnectorId)(s.name))
109
+ .map((s) => ({
110
+ name: s.name,
111
+ status: typeof s.status === 'string' ? s.status : 'unknown',
112
+ tools: Array.isArray(s.tools)
113
+ ? s.tools
114
+ .filter((t) => t &&
115
+ typeof t.name === 'string')
116
+ .map((t) => ({
117
+ name: t.name,
118
+ description: typeof t.description === 'string'
119
+ ? t.description
120
+ : '',
121
+ }))
122
+ : [],
123
+ })));
124
+ value = Object.fromEntries(servers
125
+ .filter((s) => typeof s.name === 'string' &&
126
+ s.config &&
127
+ !(0, custom_1.isReservedConnectorId)(s.name))
128
+ .map((s) => [s.name, s.config]));
129
+ stop();
130
+ return;
131
+ }
132
+ }
133
+ catch {
134
+ stop(Error('CAPABILITY_DISCOVERY_INVALID'));
135
+ return;
136
+ }
137
+ }
138
+ });
139
+ child.on('close', () => {
140
+ clearTimeout(timer);
141
+ if (retry)
142
+ clearTimeout(retry);
143
+ if (kill)
144
+ clearTimeout(kill);
145
+ terminateCatalogProcess(child, 'SIGKILL');
146
+ if (value && !failure)
147
+ resolveResult(value);
148
+ else
149
+ reject(failure ?? Error('CAPABILITY_DISCOVERY_UNAVAILABLE'));
150
+ });
151
+ child.stdin.write(JSON.stringify({
152
+ type: 'control_request',
153
+ request_id: 'catalog-init',
154
+ request: { subtype: 'initialize' },
155
+ }) + '\n');
156
+ });
157
+ }
158
+ function readCapabilityPage(snapshot, registry, args) {
159
+ const query = typeof args.query === 'string' ? args.query.toLowerCase() : '';
160
+ const offset = args.offset === undefined ? 0 : Number(args.offset);
161
+ if (!Number.isSafeInteger(offset) || offset < 0)
162
+ throw new types_1.OrchestrationError('INVALID_CAPABILITY_OFFSET');
163
+ const skills = [...(registry?.skills.entries() ?? [])].map(([name, skill]) => ({
164
+ name,
165
+ description: skill.description,
166
+ server: `skill:${skill.source}`,
167
+ status: skill.userInvocable ? 'available' : 'automatic_only',
168
+ via: skill.userInvocable ? 'skill-worker' : 'runtime',
169
+ }));
170
+ for (const skill of registry?.cliSkills ?? [])
171
+ if (!skills.some((s) => s.name === skill.name))
172
+ skills.push({
173
+ name: skill.name,
174
+ description: skill.description,
175
+ server: 'skill:claude-code',
176
+ status: 'available',
177
+ via: 'skill-worker',
178
+ });
179
+ const all = [...snapshot.entries, ...skills].filter((e) => !query ||
180
+ `${e.name} ${e.description} ${e.server}`.toLowerCase().includes(query));
181
+ all.sort((a, b) => a.server.localeCompare(b.server) || a.name.localeCompare(b.name));
182
+ const version = (0, crypto_1.createHash)('sha256')
183
+ .update(JSON.stringify({
184
+ entries: all,
185
+ servers: snapshot.servers,
186
+ skillDiscovery: registry?.cliDiscoveryError ?? '',
187
+ }))
188
+ .digest('hex');
189
+ if ((offset > 0 && typeof args.catalog_version !== 'string') ||
190
+ (args.catalog_version !== undefined && args.catalog_version !== version))
191
+ throw new types_1.OrchestrationError('CAPABILITY_CATALOG_CHANGED', 'Restart pagination from offset 0; the catalog changed.');
192
+ // Page by byte budget too. A single large description is preserved on its own page.
193
+ const entries = [];
194
+ let bytes = 0;
195
+ for (const entry of all.slice(offset, offset + 50)) {
196
+ const n = Buffer.byteLength(JSON.stringify(entry));
197
+ if (entries.length && bytes + n > 24000)
198
+ break;
199
+ entries.push(entry);
200
+ bytes += n;
201
+ }
202
+ const disabled = snapshot.servers.some((s) => s.name === 'execution' && s.status === 'disabled_for_agent');
203
+ if (disabled)
204
+ for (const entry of entries) {
205
+ entry.status = 'disabled_for_agent';
206
+ entry.via = 'unavailable';
207
+ }
208
+ const next = offset + entries.length;
209
+ return {
210
+ catalog_version: version,
211
+ observedAt: snapshot.observedAt,
212
+ servers: snapshot.servers,
213
+ skillDiscovery: registry?.cliDiscoveryError ? 'unavailable' : 'available',
214
+ entries,
215
+ total: all.length,
216
+ next_offset: next < all.length ? next : null,
217
+ note: 'Metadata describes capabilities, not authorization to execute or proof of working credentials, credit, or remote-device access. Unavailable discovery is not proof that a server has no tools. Fetch every page before claiming this is a complete list.',
218
+ };
219
+ }
220
+ let discoveryActive = false;
221
+ class CapabilityCatalog {
222
+ constructor(agent, gateway) {
223
+ this.agent = agent;
224
+ this.gateway = gateway;
225
+ }
226
+ async snapshot() {
227
+ const now = new Date().toISOString();
228
+ if (this.agent.allow_tools === false)
229
+ return {
230
+ entries: [],
231
+ servers: [{ name: 'execution', status: 'disabled_for_agent' }],
232
+ observedAt: now,
233
+ };
234
+ if (this.agent.type === 'app-agent')
235
+ return {
236
+ observedAt: now,
237
+ servers: [{ name: 'gateway', status: 'container_only' }],
238
+ entries: [
239
+ ...runtime_profile_1.DEFAULT_WORKER_TOOLS.map((name) => ({
240
+ name,
241
+ description: 'Claude Code tool inside the app container only.',
242
+ server: 'claude-code',
243
+ status: 'available',
244
+ via: 'worker',
245
+ })),
246
+ ...(0, bridge_1.containerTaskTools)('agent').map((t) => ({
247
+ name: `mcp__gateway__${t.name}`,
248
+ description: t.description,
249
+ server: 'gateway',
250
+ status: 'available',
251
+ via: 'agent',
252
+ })),
253
+ ...(0, bridge_1.containerTaskTools)('worker').map((t) => ({
254
+ name: `mcp__gateway__${t.name}`,
255
+ description: t.description,
256
+ server: 'gateway',
257
+ status: 'available',
258
+ via: 'worker',
259
+ })),
260
+ ],
261
+ };
262
+ const host = (0, config_1.resolveOrchestrationConfig)(this.agent.orchestration).tasks
263
+ .workspaceMode === 'host';
264
+ const resolved = host
265
+ ? (0, resolve_1.resolveEnabledConnectors)(this.agent, this.gateway.gateway.customConnectors, this.gateway.gateway.connectorsDefaultEnabled ?? true)
266
+ : {};
267
+ const servers = Object.fromEntries(Object.entries(resolved).filter(([id]) => !(0, custom_1.isReservedConnectorId)(id)));
268
+ const key = (0, crypto_1.createHash)('sha256')
269
+ .update(JSON.stringify({ host, servers, agent: this.agent, env: process.env }))
270
+ .digest('hex');
271
+ if (this.cache?.key === key && this.cache.until > Date.now())
272
+ return this.cache.value;
273
+ // One metadata subprocess tree at a time across agents, with no wait queue
274
+ // that could hold a conversational turn behind other agents' discovery.
275
+ if (discoveryActive)
276
+ return {
277
+ entries: [],
278
+ servers: [
279
+ { name: 'runtime', status: 'discovery_pending' },
280
+ ...Object.keys(servers).map((name) => ({
281
+ name,
282
+ status: 'discovery_pending',
283
+ })),
284
+ ],
285
+ observedAt: now,
286
+ };
287
+ discoveryActive = true;
288
+ const value = this.discover(host, servers)
289
+ .finally(() => {
290
+ discoveryActive = false;
291
+ })
292
+ .catch(() => ({
293
+ entries: [],
294
+ servers: [
295
+ { name: 'runtime', status: 'discovery_unavailable' },
296
+ ...Object.keys(servers).map((name) => ({
297
+ name,
298
+ status: 'discovery_unavailable',
299
+ })),
300
+ ],
301
+ observedAt: now,
302
+ }));
303
+ this.cache = { key, until: Date.now() + 30000, value };
304
+ return value;
305
+ }
306
+ async discover(host, connectors) {
307
+ const directory = await (0, promises_1.mkdtemp)((0, path_1.join)((0, os_1.tmpdir)(), 'gateway-capabilities-'));
308
+ try {
309
+ let servers = connectors;
310
+ let cliFailed = false;
311
+ let observed = [];
312
+ if (host) {
313
+ const file = (0, path_1.join)(directory, 'mcp.json');
314
+ await (0, promises_1.writeFile)(file, JSON.stringify({ mcpServers: connectors }), {
315
+ mode: 0o600,
316
+ });
317
+ const binary = process.env.CLAUDE_BIN || (0, claude_bin_1.resolveClaudeBin)().bin;
318
+ const [command, ...prefix] = binary.split(' ');
319
+ try {
320
+ servers = {
321
+ ...(await probeMcpConfiguration(command, [
322
+ ...prefix,
323
+ '-p',
324
+ '--input-format',
325
+ 'stream-json',
326
+ '--output-format',
327
+ 'stream-json',
328
+ '--verbose',
329
+ '--mcp-config',
330
+ file,
331
+ '--settings',
332
+ '{"disableAllHooks":true}',
333
+ '--tools',
334
+ 'default',
335
+ ], this.agent.orchestration?.tasks?.projectRoot ||
336
+ this.agent.workspace, (value) => {
337
+ observed = value;
338
+ })),
339
+ ...connectors,
340
+ };
341
+ }
342
+ catch {
343
+ cliFailed = true;
344
+ }
345
+ }
346
+ const snapshot = await new Promise((resolveResult, reject) => {
347
+ const child = (0, child_process_1.spawn)('bun', [(0, path_1.resolve)(__dirname, '../../mcp/capability-catalog.ts')], {
348
+ cwd: this.agent.workspace,
349
+ detached: process.platform === 'linux',
350
+ env: {
351
+ ...process.env,
352
+ GATEWAY_WORKSPACE_DIR: this.agent.workspace,
353
+ GATEWAY_ORIGIN_CHANNEL: 'api',
354
+ GETPOD_BROWSER_URL: process.env.GETPOD_BROWSER_URL ?? 'http://127.0.0.1:10880',
355
+ },
356
+ stdio: ['pipe', 'pipe', 'pipe'],
357
+ });
358
+ const chunks = [];
359
+ let bytes = 0;
360
+ const timer = setTimeout(() => {
361
+ terminateCatalogProcess(child, 'SIGKILL');
362
+ reject(Error('CAPABILITY_DISCOVERY_TIMEOUT'));
363
+ }, 30000);
364
+ child.stdin.on('error', () => { });
365
+ child.stderr.on('data', () => { });
366
+ child.stdout.on('data', (b) => {
367
+ bytes += b.length;
368
+ if (bytes > 4 * 1024 * 1024) {
369
+ terminateCatalogProcess(child, 'SIGKILL');
370
+ reject(Error('CAPABILITY_DISCOVERY_TOO_LARGE'));
371
+ }
372
+ else
373
+ chunks.push(b);
374
+ });
375
+ child.on('error', () => {
376
+ clearTimeout(timer);
377
+ reject(Error('CAPABILITY_DISCOVERY_UNAVAILABLE'));
378
+ });
379
+ child.on('close', (code) => {
380
+ clearTimeout(timer);
381
+ terminateCatalogProcess(child, 'SIGKILL');
382
+ try {
383
+ if (code !== 0)
384
+ throw Error();
385
+ resolveResult(JSON.parse(Buffer.concat(chunks).toString()));
386
+ }
387
+ catch {
388
+ reject(Error('CAPABILITY_DISCOVERY_UNAVAILABLE'));
389
+ }
390
+ });
391
+ child.stdin.end(JSON.stringify({ servers, observed }));
392
+ });
393
+ if (cliFailed)
394
+ snapshot.servers.push({
395
+ name: 'claude-code-mcp',
396
+ status: 'discovery_unavailable',
397
+ });
398
+ snapshot.entries.unshift({
399
+ name: host
400
+ ? 'Claude Code default tools'
401
+ : runtime_profile_1.DEFAULT_WORKER_TOOLS.join(', '),
402
+ description: host
403
+ ? 'Native Claude Code execution tools, resolved by the worker runtime. This entry is a tool set, not an exhaustive list of individual native names.'
404
+ : 'Native tools restricted by the isolated worker profile.',
405
+ server: 'claude-code',
406
+ status: 'available',
407
+ via: 'worker',
408
+ });
409
+ return snapshot;
410
+ }
411
+ finally {
412
+ await (0, promises_1.rm)(directory, { recursive: true, force: true });
413
+ }
414
+ }
415
+ }
416
+ exports.CapabilityCatalog = CapabilityCatalog;
417
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/orchestration/capabilities.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { GatewayConfig } from '../types';
2
+ import type { SessionRole } from './types';
3
+ export declare class ProcessCapacity {
4
+ readonly total: number;
5
+ readonly reservedAgent: number;
6
+ private readonly active;
7
+ private readonly workers;
8
+ constructor(total: number, reservedAgent: number);
9
+ acquire(role: SessionRole, enforce?: boolean): (() => void) | undefined;
10
+ acquireWorker(agentId: string, taskId: string, enforce?: boolean): (() => void) | undefined;
11
+ get count(): number;
12
+ }
13
+ export declare function gatewayCapacity(config: GatewayConfig): ProcessCapacity;
14
+ //# sourceMappingURL=capacity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacity.d.ts","sourceRoot":"","sources":["../../src/orchestration/capacity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAG3C,qBAAa,eAAe;IAGd,QAAQ,CAAC,KAAK,EAAE,MAAM;IAAE,QAAQ,CAAC,aAAa,EAAE,MAAM;IAFlE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;gBACpC,KAAK,EAAE,MAAM,EAAW,aAAa,EAAE,MAAM;IAGlE,OAAO,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,UAAO,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;IAMpE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS;IAaxF,IAAI,KAAK,IAAI,MAAM,CAA6B;CACjD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,eAAe,CAOtE"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProcessCapacity = void 0;
4
+ exports.gatewayCapacity = gatewayCapacity;
5
+ const types_1 = require("./types");
6
+ class ProcessCapacity {
7
+ constructor(total, reservedAgent) {
8
+ this.total = total;
9
+ this.reservedAgent = reservedAgent;
10
+ this.active = new Map();
11
+ this.workers = new Map();
12
+ if (!Number.isSafeInteger(total) || !Number.isSafeInteger(reservedAgent) || reservedAgent < 1 || total <= reservedAgent)
13
+ throw new types_1.OrchestrationError('INVALID_PROCESS_LIMITS');
14
+ }
15
+ acquire(role, enforce = true) {
16
+ if (enforce && this.active.size >= this.total)
17
+ return undefined;
18
+ if (enforce && role !== 'agent' && [...this.active.values()].filter(value => value !== 'agent').length >= this.total - this.reservedAgent)
19
+ return undefined;
20
+ const key = Symbol(role);
21
+ this.active.set(key, role);
22
+ return () => { this.active.delete(key); };
23
+ }
24
+ acquireWorker(agentId, taskId, enforce = true) {
25
+ const key = JSON.stringify([agentId, taskId]);
26
+ const existing = this.workers.get(key);
27
+ if (existing)
28
+ return existing;
29
+ const releaseSlot = this.acquire('worker', enforce);
30
+ if (!releaseSlot)
31
+ return undefined;
32
+ const release = () => {
33
+ releaseSlot();
34
+ if (this.workers.get(key) === release)
35
+ this.workers.delete(key);
36
+ };
37
+ this.workers.set(key, release);
38
+ return release;
39
+ }
40
+ get count() { return this.active.size; }
41
+ }
42
+ exports.ProcessCapacity = ProcessCapacity;
43
+ const capacities = new WeakMap();
44
+ function gatewayCapacity(config) {
45
+ let capacity = capacities.get(config);
46
+ if (!capacity) {
47
+ capacity = new ProcessCapacity(config.gateway.processLimits?.maxTotal ?? 32, config.gateway.processLimits?.reservedAgent ?? 2);
48
+ capacities.set(config, capacity);
49
+ }
50
+ return capacity;
51
+ }
52
+ //# sourceMappingURL=capacity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capacity.js","sourceRoot":"","sources":["../../src/orchestration/capacity.ts"],"names":[],"mappings":";;;AAgCA,0CAOC;AArCD,mCAA6C;AAE7C,MAAa,eAAe;IAG1B,YAAqB,KAAa,EAAW,aAAqB;QAA7C,UAAK,GAAL,KAAK,CAAQ;QAAW,kBAAa,GAAb,aAAa,CAAQ;QAFjD,WAAM,GAAG,IAAI,GAAG,EAAuB,CAAC;QACxC,YAAO,GAAG,IAAI,GAAG,EAAsB,CAAC;QAEvD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,aAAa,GAAG,CAAC,IAAI,KAAK,IAAI,aAAa;YAAE,MAAM,IAAI,0BAAkB,CAAC,wBAAwB,CAAC,CAAC;IAClL,CAAC;IACD,OAAO,CAAC,IAAiB,EAAE,OAAO,GAAG,IAAI;QACvC,IAAI,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAChE,IAAI,OAAO,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa;YAAE,OAAO,SAAS,CAAC;QAC5J,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrD,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC;IACD,aAAa,CAAC,OAAe,EAAE,MAAc,EAAE,OAAO,GAAG,IAAI;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,IAAI,CAAC,WAAW;YAAE,OAAO,SAAS,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,WAAW,EAAE,CAAC;YACd,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,OAAO;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClE,CAAC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,KAAK,KAAa,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;CACjD;AA1BD,0CA0BC;AACD,MAAM,UAAU,GAAG,IAAI,OAAO,EAAkC,CAAC;AACjE,SAAgB,eAAe,CAAC,MAAqB;IACnD,IAAI,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,aAAa,EAAE,aAAa,IAAI,CAAC,CAAC,CAAC;QAC/H,UAAU,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { AgentConfig } from '../types';
2
+ import { OrchestrationStore } from './store';
3
+ /** Managed conversations have no legacy stdin/heartbeat turn. Derive typing
4
+ * from durable work, including autonomous result decisions and queued inputs.
5
+ * Agent/Worker deadlines and recovery remain owned by the orchestration. */
6
+ export declare class ChannelActivity {
7
+ private readonly store;
8
+ private readonly agent;
9
+ private readonly enabled;
10
+ private readonly request;
11
+ private timer?;
12
+ private closed;
13
+ private readonly abort;
14
+ private readonly pending;
15
+ private readonly pulses;
16
+ constructor(store: OrchestrationStore, agent: () => AgentConfig, enabled: () => boolean, request?: typeof fetch);
17
+ start(): void;
18
+ tick(): Promise<void>;
19
+ close(): void;
20
+ }
21
+ //# sourceMappingURL=channel-activity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-activity.d.ts","sourceRoot":"","sources":["../../src/orchestration/channel-activity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE7C;;4EAE4E;AAC5E,qBAAa,eAAe;IAMd,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAsB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAC5E,OAAO,CAAC,QAAQ,CAAC,OAAO;IAAiB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANnE,OAAO,CAAC,KAAK,CAAC,CAAiC;IAC/C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAyB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;gBACvB,KAAK,EAAE,kBAAkB,EAAmB,KAAK,EAAE,MAAM,WAAW,EAC9E,OAAO,EAAE,MAAM,OAAO,EAAmB,OAAO,GAAE,OAAO,KAAa;IACzF,KAAK,IAAI,IAAI;IAKP,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B3B,KAAK,IAAI,IAAI;CAKd"}
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ChannelActivity = void 0;
4
+ /** Managed conversations have no legacy stdin/heartbeat turn. Derive typing
5
+ * from durable work, including autonomous result decisions and queued inputs.
6
+ * Agent/Worker deadlines and recovery remain owned by the orchestration. */
7
+ class ChannelActivity {
8
+ constructor(store, agent, enabled, request = fetch) {
9
+ this.store = store;
10
+ this.agent = agent;
11
+ this.enabled = enabled;
12
+ this.request = request;
13
+ this.closed = false;
14
+ this.abort = new AbortController();
15
+ this.pending = new Set();
16
+ this.pulses = new Map();
17
+ }
18
+ start() {
19
+ if (this.timer || this.closed)
20
+ return;
21
+ this.timer = setInterval(() => { void this.tick().catch(() => { }); }, 1000);
22
+ this.timer.unref();
23
+ }
24
+ async tick() {
25
+ if (this.closed)
26
+ return;
27
+ if (!this.enabled()) {
28
+ this.pulses.clear();
29
+ return;
30
+ }
31
+ const rows = this.store.all(`SELECT DISTINCT c.source,c.chat_id,c.thread_key FROM conversations c WHERE c.source IN ('telegram','discord') AND (
32
+ EXISTS (SELECT 1 FROM conversation_inputs i WHERE i.conversation_id=c.id AND i.status IN ('accepted','assigned')) OR
33
+ EXISTS (SELECT 1 FROM conversation_decisions d WHERE d.conversation_id=c.id AND d.state IN ('running','interrupting')) OR
34
+ EXISTS (SELECT 1 FROM tasks t WHERE t.conversation_id=c.id AND t.state IN ('queued','starting','running','interrupting','cancel_requested'))
35
+ )`);
36
+ const keys = new Set(rows.map(r => JSON.stringify([r.source, r.chat_id, r.thread_key])));
37
+ for (const key of this.pulses.keys())
38
+ if (!keys.has(key))
39
+ this.pulses.delete(key);
40
+ await Promise.all(rows.map(async (row) => {
41
+ const telegram = row.source === 'telegram';
42
+ const token = telegram ? this.agent().telegram?.botToken : this.agent().discord?.botToken;
43
+ if (!token)
44
+ return;
45
+ const key = JSON.stringify([row.source, row.chat_id, row.thread_key]), now = Date.now();
46
+ if (this.pending.has(key) || now - (this.pulses.get(key) ?? -Infinity) < 4000)
47
+ return;
48
+ this.pending.add(key);
49
+ this.pulses.set(key, now);
50
+ try {
51
+ await this.request(telegram ? `https://api.telegram.org/bot${token}/sendChatAction` : `https://discord.com/api/v10/channels/${encodeURIComponent(String(row.chat_id))}/typing`, {
52
+ method: 'POST', headers: telegram ? { 'Content-Type': 'application/json' } : { Authorization: `Bot ${token}`, 'Content-Length': '0' },
53
+ body: telegram ? JSON.stringify({ chat_id: row.chat_id, action: 'typing', ...(row.thread_key ? { message_thread_id: Number(row.thread_key) } : {}) }) : undefined,
54
+ signal: AbortSignal.any([this.abort.signal, AbortSignal.timeout(3000)]),
55
+ });
56
+ }
57
+ catch { /* Typing is best effort; never infer a model stall from transport failure. */ }
58
+ finally {
59
+ this.pending.delete(key);
60
+ }
61
+ }));
62
+ }
63
+ close() {
64
+ this.closed = true;
65
+ if (this.timer)
66
+ clearInterval(this.timer);
67
+ this.abort.abort();
68
+ this.pulses.clear();
69
+ }
70
+ }
71
+ exports.ChannelActivity = ChannelActivity;
72
+ //# sourceMappingURL=channel-activity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel-activity.js","sourceRoot":"","sources":["../../src/orchestration/channel-activity.ts"],"names":[],"mappings":"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"}