agent-nuvira 3.3.3 → 3.3.4

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 (349) hide show
  1. package/README.md +13 -5
  2. package/dist/agent-sdk/src/agent.d.ts +2 -0
  3. package/dist/agent-sdk/src/agent.d.ts.map +1 -1
  4. package/dist/agent-sdk/src/define.d.ts +64 -0
  5. package/dist/agent-sdk/src/define.d.ts.map +1 -0
  6. package/dist/agent-sdk/src/define.js +76 -0
  7. package/dist/agent-sdk/src/define.js.map +1 -0
  8. package/dist/agent-sdk/src/index.d.ts +9 -0
  9. package/dist/agent-sdk/src/index.d.ts.map +1 -1
  10. package/dist/agent-sdk/src/index.js +9 -0
  11. package/dist/agent-sdk/src/index.js.map +1 -1
  12. package/dist/agent-sdk/src/scaffold.d.ts +11 -0
  13. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -1
  14. package/dist/agent-sdk/src/scaffold.js +16 -6
  15. package/dist/agent-sdk/src/scaffold.js.map +1 -1
  16. package/dist/agents/long-form-plan.d.ts.map +1 -1
  17. package/dist/agents/long-form-plan.js +2 -1
  18. package/dist/agents/long-form-plan.js.map +1 -1
  19. package/dist/agents/orchestrator.d.ts.map +1 -1
  20. package/dist/agents/orchestrator.js +5 -4
  21. package/dist/agents/orchestrator.js.map +1 -1
  22. package/dist/cli/agent.d.ts +2 -2
  23. package/dist/cli/agent.js +10 -10
  24. package/dist/cli/chat.d.ts +94 -0
  25. package/dist/cli/chat.d.ts.map +1 -1
  26. package/dist/cli/chat.js +354 -20
  27. package/dist/cli/chat.js.map +1 -1
  28. package/dist/cli/cli-program.d.ts.map +1 -1
  29. package/dist/cli/cli-program.js +5 -0
  30. package/dist/cli/cli-program.js.map +1 -1
  31. package/dist/cli/config.d.ts.map +1 -1
  32. package/dist/cli/config.js +9 -1
  33. package/dist/cli/config.js.map +1 -1
  34. package/dist/cli/doctor.d.ts.map +1 -1
  35. package/dist/cli/doctor.js +3 -2
  36. package/dist/cli/doctor.js.map +1 -1
  37. package/dist/cli/edit.js +2 -2
  38. package/dist/cli/eval.d.ts +17 -0
  39. package/dist/cli/eval.d.ts.map +1 -1
  40. package/dist/cli/eval.js +105 -2
  41. package/dist/cli/eval.js.map +1 -1
  42. package/dist/cli/execute.d.ts +16 -1
  43. package/dist/cli/execute.d.ts.map +1 -1
  44. package/dist/cli/execute.js +192 -22
  45. package/dist/cli/execute.js.map +1 -1
  46. package/dist/cli/loop-executor.d.ts +55 -0
  47. package/dist/cli/loop-executor.d.ts.map +1 -1
  48. package/dist/cli/loop-executor.js +212 -13
  49. package/dist/cli/loop-executor.js.map +1 -1
  50. package/dist/cli/model.d.ts.map +1 -1
  51. package/dist/cli/model.js +9 -8
  52. package/dist/cli/model.js.map +1 -1
  53. package/dist/cli/models.d.ts +1 -1
  54. package/dist/cli/models.js +4 -4
  55. package/dist/cli/parity.d.ts +85 -0
  56. package/dist/cli/parity.d.ts.map +1 -0
  57. package/dist/cli/parity.js +506 -0
  58. package/dist/cli/parity.js.map +1 -0
  59. package/dist/cli/plan.d.ts.map +1 -1
  60. package/dist/cli/plan.js +2 -1
  61. package/dist/cli/plan.js.map +1 -1
  62. package/dist/cli/retrieval.d.ts.map +1 -1
  63. package/dist/cli/retrieval.js +5 -4
  64. package/dist/cli/retrieval.js.map +1 -1
  65. package/dist/cli/sdk.js +4 -4
  66. package/dist/cli/sdk.js.map +1 -1
  67. package/dist/cli/trace.d.ts.map +1 -1
  68. package/dist/cli/trace.js +2 -1
  69. package/dist/cli/trace.js.map +1 -1
  70. package/dist/cli/workflow.js +2 -2
  71. package/dist/cli/workflow.js.map +1 -1
  72. package/dist/config/types.d.ts +44 -0
  73. package/dist/config/types.d.ts.map +1 -1
  74. package/dist/findings/verdicts.d.ts +241 -0
  75. package/dist/findings/verdicts.d.ts.map +1 -0
  76. package/dist/findings/verdicts.js +284 -0
  77. package/dist/findings/verdicts.js.map +1 -0
  78. package/dist/gateway/adapters.d.ts +65 -0
  79. package/dist/gateway/adapters.d.ts.map +1 -1
  80. package/dist/gateway/adapters.js +216 -10
  81. package/dist/gateway/adapters.js.map +1 -1
  82. package/dist/gateway/channel-directory.d.ts +31 -0
  83. package/dist/gateway/channel-directory.d.ts.map +1 -1
  84. package/dist/gateway/channel-directory.js +40 -0
  85. package/dist/gateway/channel-directory.js.map +1 -1
  86. package/dist/gateway/gateway-log.d.ts +1 -1
  87. package/dist/gateway/gateway-log.d.ts.map +1 -1
  88. package/dist/gateway/gateway-log.js.map +1 -1
  89. package/dist/gateway/hooks.d.ts +87 -19
  90. package/dist/gateway/hooks.d.ts.map +1 -1
  91. package/dist/gateway/hooks.js +62 -23
  92. package/dist/gateway/hooks.js.map +1 -1
  93. package/dist/gateway/inbound-media.d.ts +147 -0
  94. package/dist/gateway/inbound-media.d.ts.map +1 -0
  95. package/dist/gateway/inbound-media.js +317 -0
  96. package/dist/gateway/inbound-media.js.map +1 -0
  97. package/dist/gateway/inbox.d.ts +8 -1
  98. package/dist/gateway/inbox.d.ts.map +1 -1
  99. package/dist/gateway/inbox.js.map +1 -1
  100. package/dist/gateway/platform-config.d.ts +14 -0
  101. package/dist/gateway/platform-config.d.ts.map +1 -1
  102. package/dist/gateway/platform-config.js +26 -8
  103. package/dist/gateway/platform-config.js.map +1 -1
  104. package/dist/gateway/realtime.d.ts +114 -0
  105. package/dist/gateway/realtime.d.ts.map +1 -0
  106. package/dist/gateway/realtime.js +402 -0
  107. package/dist/gateway/realtime.js.map +1 -0
  108. package/dist/gateway/registry.d.ts +31 -0
  109. package/dist/gateway/registry.d.ts.map +1 -1
  110. package/dist/gateway/registry.js +224 -4
  111. package/dist/gateway/registry.js.map +1 -1
  112. package/dist/gateway/whatsapp/baileys-bridge.d.ts +11 -1
  113. package/dist/gateway/whatsapp/baileys-bridge.d.ts.map +1 -1
  114. package/dist/gateway/whatsapp/baileys-bridge.js +123 -4
  115. package/dist/gateway/whatsapp/baileys-bridge.js.map +1 -1
  116. package/dist/gateway/whatsapp/bridge.d.ts +6 -2
  117. package/dist/gateway/whatsapp/bridge.d.ts.map +1 -1
  118. package/dist/gateway/whatsapp/bridge.js.map +1 -1
  119. package/dist/index.js +8 -0
  120. package/dist/index.js.map +1 -1
  121. package/dist/inference/factory.d.ts +14 -0
  122. package/dist/inference/factory.d.ts.map +1 -1
  123. package/dist/inference/factory.js +17 -0
  124. package/dist/inference/factory.js.map +1 -1
  125. package/dist/inference/groq-adapter.d.ts +2 -0
  126. package/dist/inference/groq-adapter.d.ts.map +1 -1
  127. package/dist/inference/groq-adapter.js +16 -6
  128. package/dist/inference/groq-adapter.js.map +1 -1
  129. package/dist/inference/tools.d.ts.map +1 -1
  130. package/dist/inference/tools.js +29 -0
  131. package/dist/inference/tools.js.map +1 -1
  132. package/dist/learning/benchmark.d.ts.map +1 -1
  133. package/dist/learning/benchmark.js +3 -2
  134. package/dist/learning/benchmark.js.map +1 -1
  135. package/dist/learning/continuation.d.ts.map +1 -1
  136. package/dist/learning/continuation.js +2 -1
  137. package/dist/learning/continuation.js.map +1 -1
  138. package/dist/learning/cost-tracker.d.ts.map +1 -1
  139. package/dist/learning/cost-tracker.js +2 -1
  140. package/dist/learning/cost-tracker.js.map +1 -1
  141. package/dist/learning/deferred-task.d.ts.map +1 -1
  142. package/dist/learning/deferred-task.js +13 -4
  143. package/dist/learning/deferred-task.js.map +1 -1
  144. package/dist/learning/eval-framework.d.ts.map +1 -1
  145. package/dist/learning/eval-framework.js +2 -1
  146. package/dist/learning/eval-framework.js.map +1 -1
  147. package/dist/learning/long-form.d.ts.map +1 -1
  148. package/dist/learning/long-form.js +2 -1
  149. package/dist/learning/long-form.js.map +1 -1
  150. package/dist/learning/model-registry.d.ts.map +1 -1
  151. package/dist/learning/model-registry.js +2 -1
  152. package/dist/learning/model-registry.js.map +1 -1
  153. package/dist/learning/reasoning-cache.d.ts.map +1 -1
  154. package/dist/learning/reasoning-cache.js +2 -1
  155. package/dist/learning/reasoning-cache.js.map +1 -1
  156. package/dist/learning/reasoning-trace.d.ts +37 -1
  157. package/dist/learning/reasoning-trace.d.ts.map +1 -1
  158. package/dist/learning/reasoning-trace.js +66 -0
  159. package/dist/learning/reasoning-trace.js.map +1 -1
  160. package/dist/learning/resilient-call.d.ts.map +1 -1
  161. package/dist/learning/resilient-call.js +2 -1
  162. package/dist/learning/resilient-call.js.map +1 -1
  163. package/dist/learning/retrieval.d.ts.map +1 -1
  164. package/dist/learning/retrieval.js +2 -1
  165. package/dist/learning/retrieval.js.map +1 -1
  166. package/dist/learning/seeded-benchmark.d.ts +160 -0
  167. package/dist/learning/seeded-benchmark.d.ts.map +1 -0
  168. package/dist/learning/seeded-benchmark.js +321 -0
  169. package/dist/learning/seeded-benchmark.js.map +1 -0
  170. package/dist/learning/seeded-bugs.d.ts +142 -0
  171. package/dist/learning/seeded-bugs.d.ts.map +1 -0
  172. package/dist/learning/seeded-bugs.js +535 -0
  173. package/dist/learning/seeded-bugs.js.map +1 -0
  174. package/dist/learning/step-checkpoint.d.ts +127 -0
  175. package/dist/learning/step-checkpoint.d.ts.map +1 -0
  176. package/dist/learning/step-checkpoint.js +244 -0
  177. package/dist/learning/step-checkpoint.js.map +1 -0
  178. package/dist/nlu/intent-confirm.d.ts +23 -1
  179. package/dist/nlu/intent-confirm.d.ts.map +1 -1
  180. package/dist/nlu/intent-confirm.js +85 -2
  181. package/dist/nlu/intent-confirm.js.map +1 -1
  182. package/dist/nlu/learnings.d.ts +7 -0
  183. package/dist/nlu/learnings.d.ts.map +1 -1
  184. package/dist/nlu/learnings.js +7 -0
  185. package/dist/nlu/learnings.js.map +1 -1
  186. package/dist/observability/debug-log.d.ts +250 -0
  187. package/dist/observability/debug-log.d.ts.map +1 -0
  188. package/dist/observability/debug-log.js +500 -0
  189. package/dist/observability/debug-log.js.map +1 -0
  190. package/dist/observability/event-bus.d.ts.map +1 -1
  191. package/dist/observability/event-bus.js +4 -1
  192. package/dist/observability/event-bus.js.map +1 -1
  193. package/dist/observability/otel.d.ts +278 -0
  194. package/dist/observability/otel.d.ts.map +1 -0
  195. package/dist/observability/otel.js +590 -0
  196. package/dist/observability/otel.js.map +1 -0
  197. package/dist/parity/drivers.d.ts +99 -0
  198. package/dist/parity/drivers.d.ts.map +1 -0
  199. package/dist/parity/drivers.js +1362 -0
  200. package/dist/parity/drivers.js.map +1 -0
  201. package/dist/parity/graph.d.ts +73 -0
  202. package/dist/parity/graph.d.ts.map +1 -0
  203. package/dist/parity/graph.js +162 -0
  204. package/dist/parity/graph.js.map +1 -0
  205. package/dist/parity/matrix.d.ts +105 -0
  206. package/dist/parity/matrix.d.ts.map +1 -0
  207. package/dist/parity/matrix.js +352 -0
  208. package/dist/parity/matrix.js.map +1 -0
  209. package/dist/parity/observation.d.ts +444 -0
  210. package/dist/parity/observation.d.ts.map +1 -0
  211. package/dist/parity/observation.js +333 -0
  212. package/dist/parity/observation.js.map +1 -0
  213. package/dist/parity/scenarios.d.ts +229 -0
  214. package/dist/parity/scenarios.d.ts.map +1 -0
  215. package/dist/parity/scenarios.js +175 -0
  216. package/dist/parity/scenarios.js.map +1 -0
  217. package/dist/parity/surfaces.d.ts +122 -0
  218. package/dist/parity/surfaces.d.ts.map +1 -0
  219. package/dist/parity/surfaces.js +190 -0
  220. package/dist/parity/surfaces.js.map +1 -0
  221. package/dist/runtime/fault-injection.d.ts +173 -0
  222. package/dist/runtime/fault-injection.d.ts.map +1 -0
  223. package/dist/runtime/fault-injection.js +281 -0
  224. package/dist/runtime/fault-injection.js.map +1 -0
  225. package/dist/tools/child-agent-entry.d.ts +23 -0
  226. package/dist/tools/child-agent-entry.d.ts.map +1 -0
  227. package/dist/tools/child-agent-entry.js +129 -0
  228. package/dist/tools/child-agent-entry.js.map +1 -0
  229. package/dist/tools/child-agent-runtime.d.ts +124 -0
  230. package/dist/tools/child-agent-runtime.d.ts.map +1 -0
  231. package/dist/tools/child-agent-runtime.js +704 -0
  232. package/dist/tools/child-agent-runtime.js.map +1 -0
  233. package/dist/tools/coding-tools.d.ts.map +1 -1
  234. package/dist/tools/coding-tools.js +82 -10
  235. package/dist/tools/coding-tools.js.map +1 -1
  236. package/dist/tools/delegation-system.d.ts +31 -0
  237. package/dist/tools/delegation-system.d.ts.map +1 -1
  238. package/dist/tools/delegation-system.js +70 -9
  239. package/dist/tools/delegation-system.js.map +1 -1
  240. package/dist/tools/extract/docx.d.ts +27 -0
  241. package/dist/tools/extract/docx.d.ts.map +1 -0
  242. package/dist/tools/extract/docx.js +48 -0
  243. package/dist/tools/extract/docx.js.map +1 -0
  244. package/dist/tools/extract/html-text.d.ts +27 -0
  245. package/dist/tools/extract/html-text.d.ts.map +1 -0
  246. package/dist/tools/extract/html-text.js +86 -0
  247. package/dist/tools/extract/html-text.js.map +1 -0
  248. package/dist/tools/extract/pdf-ocr.d.ts +58 -0
  249. package/dist/tools/extract/pdf-ocr.d.ts.map +1 -0
  250. package/dist/tools/extract/pdf-ocr.js +116 -0
  251. package/dist/tools/extract/pdf-ocr.js.map +1 -0
  252. package/dist/tools/extract/pdf.d.ts +65 -0
  253. package/dist/tools/extract/pdf.d.ts.map +1 -0
  254. package/dist/tools/extract/pdf.js +197 -0
  255. package/dist/tools/extract/pdf.js.map +1 -0
  256. package/dist/tools/extract/pptx.d.ts +32 -0
  257. package/dist/tools/extract/pptx.d.ts.map +1 -0
  258. package/dist/tools/extract/pptx.js +77 -0
  259. package/dist/tools/extract/pptx.js.map +1 -0
  260. package/dist/tools/extract/xlsx.d.ts +47 -0
  261. package/dist/tools/extract/xlsx.d.ts.map +1 -0
  262. package/dist/tools/extract/xlsx.js +111 -0
  263. package/dist/tools/extract/xlsx.js.map +1 -0
  264. package/dist/tools/finding-tool.d.ts +76 -0
  265. package/dist/tools/finding-tool.d.ts.map +1 -0
  266. package/dist/tools/finding-tool.js +125 -0
  267. package/dist/tools/finding-tool.js.map +1 -0
  268. package/dist/tools/messaging-tools.d.ts +41 -11
  269. package/dist/tools/messaging-tools.d.ts.map +1 -1
  270. package/dist/tools/messaging-tools.js +104 -55
  271. package/dist/tools/messaging-tools.js.map +1 -1
  272. package/dist/tools/neutts-synth.d.ts +27 -3
  273. package/dist/tools/neutts-synth.d.ts.map +1 -1
  274. package/dist/tools/neutts-synth.js +57 -13
  275. package/dist/tools/neutts-synth.js.map +1 -1
  276. package/dist/tools/pipeline-tool.d.ts +43 -1
  277. package/dist/tools/pipeline-tool.d.ts.map +1 -1
  278. package/dist/tools/pipeline-tool.js +13 -2
  279. package/dist/tools/pipeline-tool.js.map +1 -1
  280. package/dist/tools/read-extract.d.ts +116 -45
  281. package/dist/tools/read-extract.d.ts.map +1 -1
  282. package/dist/tools/read-extract.js +494 -158
  283. package/dist/tools/read-extract.js.map +1 -1
  284. package/dist/tools/registry.d.ts +2 -2
  285. package/dist/tools/registry.d.ts.map +1 -1
  286. package/dist/tools/registry.js +152 -23
  287. package/dist/tools/registry.js.map +1 -1
  288. package/dist/tools/subagent-refusal.d.ts +15 -0
  289. package/dist/tools/subagent-refusal.d.ts.map +1 -0
  290. package/dist/tools/subagent-refusal.js +18 -0
  291. package/dist/tools/subagent-refusal.js.map +1 -0
  292. package/dist/tools/subagent-spawner.d.ts +122 -0
  293. package/dist/tools/subagent-spawner.d.ts.map +1 -1
  294. package/dist/tools/subagent-spawner.js +249 -28
  295. package/dist/tools/subagent-spawner.js.map +1 -1
  296. package/dist/tools/tool-hooks.d.ts +177 -0
  297. package/dist/tools/tool-hooks.d.ts.map +1 -0
  298. package/dist/tools/tool-hooks.js +427 -0
  299. package/dist/tools/tool-hooks.js.map +1 -0
  300. package/dist/tools/tool-loop.d.ts +82 -0
  301. package/dist/tools/tool-loop.d.ts.map +1 -1
  302. package/dist/tools/tool-loop.js +167 -9
  303. package/dist/tools/tool-loop.js.map +1 -1
  304. package/dist/tools/tool-refusal.d.ts +68 -0
  305. package/dist/tools/tool-refusal.d.ts.map +1 -0
  306. package/dist/tools/tool-refusal.js +78 -0
  307. package/dist/tools/tool-refusal.js.map +1 -0
  308. package/dist/tools/toolsets.d.ts +8 -0
  309. package/dist/tools/toolsets.d.ts.map +1 -1
  310. package/dist/tools/toolsets.js +12 -2
  311. package/dist/tools/toolsets.js.map +1 -1
  312. package/dist/tools/vision-tools.d.ts +88 -83
  313. package/dist/tools/vision-tools.d.ts.map +1 -1
  314. package/dist/tools/vision-tools.js +134 -103
  315. package/dist/tools/vision-tools.js.map +1 -1
  316. package/dist/tools/worktree.d.ts +210 -0
  317. package/dist/tools/worktree.d.ts.map +1 -0
  318. package/dist/tools/worktree.js +374 -0
  319. package/dist/tools/worktree.js.map +1 -0
  320. package/dist/utils/format.d.ts +3 -0
  321. package/dist/utils/format.d.ts.map +1 -0
  322. package/dist/utils/format.js +32 -0
  323. package/dist/utils/format.js.map +1 -0
  324. package/dist/web-dashboard/attachment-extract.d.ts +64 -0
  325. package/dist/web-dashboard/attachment-extract.d.ts.map +1 -0
  326. package/dist/web-dashboard/attachment-extract.js +154 -0
  327. package/dist/web-dashboard/attachment-extract.js.map +1 -0
  328. package/dist/web-dashboard/chat-console.d.ts +108 -1
  329. package/dist/web-dashboard/chat-console.d.ts.map +1 -1
  330. package/dist/web-dashboard/chat-console.js +36 -0
  331. package/dist/web-dashboard/chat-console.js.map +1 -1
  332. package/dist/web-dashboard/hub-data.d.ts +37 -0
  333. package/dist/web-dashboard/hub-data.d.ts.map +1 -1
  334. package/dist/web-dashboard/hub-data.js +61 -1
  335. package/dist/web-dashboard/hub-data.js.map +1 -1
  336. package/dist/web-dashboard/server.d.ts +14 -0
  337. package/dist/web-dashboard/server.d.ts.map +1 -1
  338. package/dist/web-dashboard/server.js +247 -13
  339. package/dist/web-dashboard/server.js.map +1 -1
  340. package/dist/web-dashboard/src/types.d.ts +196 -48
  341. package/dist/web-dashboard/src/types.d.ts.map +1 -1
  342. package/package.json +18 -3
  343. package/src/web-dashboard/public/assets/{index-Cyd6tIew.css → index-XJjj2cBX.css} +1 -1
  344. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js +207 -0
  345. package/src/web-dashboard/public/assets/index-YWF9FpwQ.js.map +1 -0
  346. package/src/web-dashboard/public/index.html +2 -2
  347. package/dist/tools/child-agent-worker.js +0 -212
  348. package/src/web-dashboard/public/assets/index-CxDj7p6i.js +0 -207
  349. package/src/web-dashboard/public/assets/index-CxDj7p6i.js.map +0 -1
@@ -0,0 +1,402 @@
1
+ /**
2
+ * Real-time inbound transports for the gateway (`src/gateway/realtime.ts`).
3
+ *
4
+ * The webhook receiver covers platforms that PUSH to us — but a bot cannot
5
+ * receive Discord `MESSAGE_CREATE` events or Slack Events API deliveries over a
6
+ * webhook it does not own. Discord bots get messages over the Discord Gateway
7
+ * (a WebSocket we dial out to); Slack apps that cannot expose a public HTTPS
8
+ * endpoint use Socket Mode (a WebSocket that carries the very same
9
+ * `event_callback` envelopes the Events API would POST). Without these, an
10
+ * inbound document on either platform never reaches the hydration path, so the
11
+ * attachment handling added for webhooks was unreachable in practice.
12
+ *
13
+ * Both sources end at the same place: build an `InboundMessage`, download the
14
+ * attachment's bytes with the shared `downloadInboundAttachment` helper, and
15
+ * hand it to the registry's `handleInbound` — exactly like the webhook
16
+ * receiver. Extraction, auto-reply, and the sandbox prune are therefore shared,
17
+ * not reimplemented.
18
+ *
19
+ * The socket and `fetch` are injectable so tests drive a scripted gateway
20
+ * without network or a real Discord/Slack connection.
21
+ */
22
+ import { logger } from '../utils/logger.js';
23
+ import { downloadInboundAttachment, } from './inbound-media.js';
24
+ import { mediaKindFromMime, parseWebhookPayload, } from './adapters.js';
25
+ /**
26
+ * Default socket. Prefers the platform's built-in `WebSocket` (Node 22+, Bun,
27
+ * Deno) and falls back to `ws` — neither is a dependency of the gateway core,
28
+ * so this stays a lazy, best-effort import.
29
+ */
30
+ export async function defaultSocketFactory(url) {
31
+ const Native = globalThis.WebSocket;
32
+ let ws;
33
+ if (Native) {
34
+ ws = new Native(url);
35
+ }
36
+ else {
37
+ const mod = (await import('ws'));
38
+ const WS = mod.default;
39
+ if (!WS)
40
+ throw new Error('no WebSocket implementation available');
41
+ ws = new WS(url);
42
+ }
43
+ const socket = {
44
+ onopen: null,
45
+ onmessage: null,
46
+ onclose: null,
47
+ onerror: null,
48
+ send: (data) => ws.send(data),
49
+ close: () => ws.close(),
50
+ };
51
+ if (ws.addEventListener) {
52
+ ws.addEventListener('open', () => socket.onopen?.());
53
+ ws.addEventListener('message', (ev) => socket.onmessage?.({ data: ev.data }));
54
+ ws.addEventListener('close', () => socket.onclose?.());
55
+ ws.addEventListener('error', (err) => socket.onerror?.(err));
56
+ }
57
+ else {
58
+ ws.on?.('open', () => socket.onopen?.());
59
+ ws.on?.('message', (data) => socket.onmessage?.({ data }));
60
+ ws.on?.('close', () => socket.onclose?.());
61
+ ws.on?.('error', (err) => socket.onerror?.(err));
62
+ }
63
+ return socket;
64
+ }
65
+ /** Base backoff/reconnect plumbing shared by both transports. */
66
+ class ReconnectingSource {
67
+ backoffMs;
68
+ maxBackoffMs;
69
+ stopped = false;
70
+ attempt = 0;
71
+ retryTimer = null;
72
+ socket = null;
73
+ constructor(backoffMs = 1_000, maxBackoffMs = 30_000) {
74
+ this.backoffMs = backoffMs;
75
+ this.maxBackoffMs = maxBackoffMs;
76
+ }
77
+ async start(onMessage) {
78
+ this.stopped = false;
79
+ this.attempt = 0;
80
+ await this.connect(onMessage);
81
+ }
82
+ async connect(onMessage) {
83
+ if (this.stopped)
84
+ return;
85
+ try {
86
+ await this.open(onMessage);
87
+ this.attempt = 0;
88
+ }
89
+ catch {
90
+ // A failed handshake (bad token, network) retries with backoff rather
91
+ // than throwing into the adapter's `start()` — the gateway must stay up.
92
+ this.scheduleReconnect(onMessage);
93
+ }
94
+ }
95
+ /** Called by the transport when its socket drops. */
96
+ scheduleReconnect(onMessage) {
97
+ if (this.stopped)
98
+ return;
99
+ this.teardownSocket();
100
+ const delay = Math.min(this.backoffMs * 2 ** this.attempt, this.maxBackoffMs);
101
+ this.attempt += 1;
102
+ this.retryTimer = setTimeout(() => {
103
+ this.retryTimer = null;
104
+ void this.connect(onMessage);
105
+ }, delay);
106
+ this.retryTimer.unref?.();
107
+ }
108
+ teardownSocket() {
109
+ const socket = this.socket;
110
+ this.socket = null;
111
+ if (socket) {
112
+ socket.onmessage = null;
113
+ socket.onclose = null;
114
+ socket.onerror = null;
115
+ try {
116
+ socket.close();
117
+ }
118
+ catch {
119
+ // Already closed.
120
+ }
121
+ }
122
+ }
123
+ async stop() {
124
+ this.stopped = true;
125
+ if (this.retryTimer) {
126
+ clearTimeout(this.retryTimer);
127
+ this.retryTimer = null;
128
+ }
129
+ this.teardownSocket();
130
+ }
131
+ }
132
+ // ─── Discord Gateway (WebSocket) ────────────────────────────────────────────
133
+ /** GUILD_MESSAGES | DIRECT_MESSAGES | MESSAGE_CONTENT. */
134
+ const DISCORD_INTENTS = (1 << 9) | (1 << 12) | (1 << 15);
135
+ const DISCORD_API = 'https://discord.com/api/v10';
136
+ /**
137
+ * Inbound Discord messages over the Gateway (op 10 HELLO → op 2 IDENTIFY,
138
+ * heartbeat on the advertised interval, op 0 MESSAGE_CREATE). An attachment is
139
+ * downloaded before dispatch so it hydrates exactly like a webhook one.
140
+ */
141
+ export class DiscordGatewaySource extends ReconnectingSource {
142
+ opts;
143
+ heartbeat = null;
144
+ firstBeat = null;
145
+ fetcher;
146
+ constructor(opts) {
147
+ super(opts.backoffMs, opts.maxBackoffMs);
148
+ this.opts = opts;
149
+ this.fetcher = opts.fetchImpl ?? fetch;
150
+ }
151
+ /** Ask Discord for the socket URL; fall back to the public base. */
152
+ async gatewayUrl() {
153
+ try {
154
+ const res = await this.fetcher(`${DISCORD_API}/gateway/bot`, {
155
+ headers: { authorization: `Bot ${this.opts.token}` },
156
+ });
157
+ if (res.ok) {
158
+ const body = (await res.json());
159
+ if (body?.url)
160
+ return `${body.url}/?v=10&encoding=json`;
161
+ }
162
+ }
163
+ catch {
164
+ // Fall through to the public gateway.
165
+ }
166
+ return 'wss://gateway.discord.gg/?v=10&encoding=json';
167
+ }
168
+ async open(onMessage) {
169
+ const url = await this.gatewayUrl();
170
+ const socket = this.opts.socketFactory
171
+ ? this.opts.socketFactory(url)
172
+ : await defaultSocketFactory(url);
173
+ // Stopped while the handshake was in flight — do not adopt the socket.
174
+ if (this.stopped) {
175
+ socket.close();
176
+ return;
177
+ }
178
+ this.socket = socket;
179
+ socket.onmessage = (ev) => this.onFrame(ev.data, onMessage);
180
+ socket.onclose = () => {
181
+ // Logged because this is the ONLY outward sign a live check has: with no
182
+ // handler installed the socket is otherwise invisible, and a silent
183
+ // reconnect loop looks exactly like "no messages arrived".
184
+ logger.warn('Discord gateway: socket closed — reconnecting with backoff');
185
+ this.scheduleReconnect(onMessage);
186
+ };
187
+ socket.onerror = () => this.scheduleReconnect(onMessage);
188
+ logger.info('Discord gateway: connected — waiting for HELLO');
189
+ }
190
+ onFrame(raw, onMessage) {
191
+ let frame;
192
+ try {
193
+ frame = JSON.parse(typeof raw === 'string' ? raw : String(raw));
194
+ }
195
+ catch {
196
+ return;
197
+ }
198
+ switch (frame.op) {
199
+ case 10: // HELLO — begin heartbeating, then identify.
200
+ this.startHeartbeat(frame.d?.heartbeat_interval);
201
+ this.send({
202
+ op: 2,
203
+ d: {
204
+ token: this.opts.token,
205
+ intents: DISCORD_INTENTS,
206
+ properties: { os: 'linux', browser: 'nuvira', device: 'nuvira' },
207
+ },
208
+ });
209
+ return;
210
+ case 1: // Server asked for an immediate heartbeat.
211
+ this.send({ op: 1, d: null });
212
+ return;
213
+ case 11: // Heartbeat ACK.
214
+ case 0:
215
+ break;
216
+ case 7: // Reconnect requested by the server.
217
+ case 9: // Invalid session — re-identify on a fresh socket.
218
+ this.scheduleReconnect(onMessage);
219
+ return;
220
+ default:
221
+ return;
222
+ }
223
+ if (frame.t === 'MESSAGE_CREATE') {
224
+ void this.onMessageCreate(frame.d, onMessage);
225
+ }
226
+ }
227
+ startHeartbeat(intervalMs) {
228
+ this.clearHeartbeat();
229
+ const interval = typeof intervalMs === 'number' && intervalMs > 0 ? intervalMs : 41_250;
230
+ this.firstBeat = setTimeout(() => {
231
+ this.firstBeat = null;
232
+ this.send({ op: 1, d: null });
233
+ }, interval * Math.random());
234
+ this.firstBeat.unref?.();
235
+ this.heartbeat = setInterval(() => this.send({ op: 1, d: null }), interval);
236
+ this.heartbeat.unref?.();
237
+ }
238
+ clearHeartbeat() {
239
+ if (this.firstBeat) {
240
+ clearTimeout(this.firstBeat);
241
+ this.firstBeat = null;
242
+ }
243
+ if (this.heartbeat) {
244
+ clearInterval(this.heartbeat);
245
+ this.heartbeat = null;
246
+ }
247
+ }
248
+ send(payload) {
249
+ try {
250
+ this.socket?.send(JSON.stringify(payload));
251
+ }
252
+ catch {
253
+ // A dead socket surfaces via onclose → reconnect.
254
+ }
255
+ }
256
+ async onMessageCreate(d, onMessage) {
257
+ const channelId = d?.channel_id;
258
+ const content = typeof d?.content === 'string' ? d.content : '';
259
+ const first = (Array.isArray(d?.attachments) ? d.attachments[0] : undefined);
260
+ const hasMedia = Boolean(first?.url);
261
+ // A media-only message has empty content — it must still dispatch.
262
+ if (!channelId || (!content && !hasMedia))
263
+ return;
264
+ let media;
265
+ if (hasMedia && first?.url) {
266
+ const att = {
267
+ type: mediaKindFromMime(first.content_type, first.filename),
268
+ url: first.url,
269
+ filename: first.filename,
270
+ mimetype: first.content_type,
271
+ size: first.size,
272
+ };
273
+ const downloaded = await downloadInboundAttachment(att);
274
+ if (downloaded)
275
+ media = { ...downloaded, caption: content || undefined };
276
+ }
277
+ await onMessage({
278
+ platform: 'discord',
279
+ channelId,
280
+ text: content,
281
+ from: d?.author?.username ?? 'discord-user',
282
+ senderId: d?.author?.id !== undefined ? String(d.author.id) : undefined,
283
+ ...(d?.id !== undefined ? { messageId: String(d.id) } : {}),
284
+ // A guild_id is present for guild (group) messages, absent for DMs.
285
+ isGroup: Boolean(d?.guild_id),
286
+ ...(media ? { media } : {}),
287
+ });
288
+ }
289
+ async stop() {
290
+ this.clearHeartbeat();
291
+ await super.stop();
292
+ }
293
+ }
294
+ /**
295
+ * Inbound Slack messages over Socket Mode. Slack delivers the same
296
+ * `event_callback` envelopes as the Events API, so the webhook parser is reused
297
+ * verbatim — the only new work is the socket, the ack, and the token-auth file
298
+ * download.
299
+ */
300
+ export class SlackSocketModeSource extends ReconnectingSource {
301
+ opts;
302
+ fetcher;
303
+ constructor(opts) {
304
+ super(opts.backoffMs, opts.maxBackoffMs);
305
+ this.opts = opts;
306
+ this.fetcher = opts.fetchImpl ?? fetch;
307
+ }
308
+ /** `apps.connections.open` mints a single-use socket URL. */
309
+ async openSocketUrl() {
310
+ const res = await this.fetcher('https://slack.com/api/apps.connections.open', {
311
+ method: 'POST',
312
+ headers: {
313
+ authorization: `Bearer ${this.opts.appToken}`,
314
+ 'content-type': 'application/x-www-form-urlencoded',
315
+ },
316
+ });
317
+ if (!res.ok)
318
+ throw new Error(`Slack Socket Mode open failed (${res.status})`);
319
+ const body = (await res.json());
320
+ if (!body?.ok || !body.url) {
321
+ throw new Error(`Slack Socket Mode open failed (${body?.error ?? 'unknown'})`);
322
+ }
323
+ return body.url;
324
+ }
325
+ async open(onMessage) {
326
+ const url = await this.openSocketUrl();
327
+ const socket = this.opts.socketFactory
328
+ ? this.opts.socketFactory(url)
329
+ : await defaultSocketFactory(url);
330
+ if (this.stopped) {
331
+ socket.close();
332
+ return;
333
+ }
334
+ this.socket = socket;
335
+ socket.onmessage = (ev) => this.onFrame(ev.data, onMessage);
336
+ socket.onclose = () => {
337
+ logger.warn('Slack Socket Mode: socket closed — reconnecting with backoff');
338
+ this.scheduleReconnect(onMessage);
339
+ };
340
+ socket.onerror = () => this.scheduleReconnect(onMessage);
341
+ logger.info('Slack Socket Mode: connected');
342
+ }
343
+ send(payload) {
344
+ try {
345
+ this.socket?.send(JSON.stringify(payload));
346
+ }
347
+ catch {
348
+ // Dead socket → onclose → reconnect.
349
+ }
350
+ }
351
+ onFrame(raw, onMessage) {
352
+ let envelope;
353
+ try {
354
+ envelope = JSON.parse(typeof raw === 'string' ? raw : String(raw));
355
+ }
356
+ catch {
357
+ return;
358
+ }
359
+ // Slack retries any envelope it does not see acked.
360
+ if (envelope.envelope_id)
361
+ this.send({ envelope_id: envelope.envelope_id });
362
+ if (envelope.type === 'disconnect') {
363
+ // Slack is asking us to drop this connection and open a fresh URL.
364
+ logger.info('Slack Socket Mode: server asked us to reconnect');
365
+ this.scheduleReconnect(onMessage);
366
+ return;
367
+ }
368
+ if (envelope.type !== 'events_api' || !envelope.payload)
369
+ return;
370
+ void this.onEvent(envelope.payload, onMessage);
371
+ }
372
+ async onEvent(payload, onMessage) {
373
+ const parsed = parseWebhookPayload('slack', payload);
374
+ if (!parsed)
375
+ return;
376
+ let media;
377
+ if (parsed.media) {
378
+ const att = parsed.media.attachment;
379
+ const downloaded = await downloadInboundAttachment({
380
+ type: parsed.media.type,
381
+ url: att.url,
382
+ filename: att.filename,
383
+ mimetype: att.mimetype,
384
+ size: att.size,
385
+ authenticated: att.authenticated,
386
+ token: this.opts.botToken,
387
+ });
388
+ if (downloaded)
389
+ media = { ...downloaded, caption: parsed.media.caption };
390
+ }
391
+ await onMessage({
392
+ platform: 'slack',
393
+ channelId: parsed.channelId,
394
+ text: parsed.text,
395
+ from: parsed.from,
396
+ senderId: parsed.senderId,
397
+ isGroup: parsed.isGroup,
398
+ ...(media ? { media } : {}),
399
+ });
400
+ }
401
+ }
402
+ //# sourceMappingURL=realtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../src/gateway/realtime.ts"],"names":[],"mappings":"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"}
@@ -285,6 +285,8 @@ export declare class GatewayRegistry {
285
285
  private adapterHealth;
286
286
  /** Earliest epoch-ms at which a not-yet-started adapter may be retried. */
287
287
  private adapterRetryAt;
288
+ /** Epoch ms of the last inbound-sandbox sweep (throttles the hourly prune). */
289
+ private lastInboundPruneAt;
288
290
  /** The heartbeat + watchdog tick. */
289
291
  private livenessTimer;
290
292
  private chatEngine;
@@ -343,6 +345,18 @@ export declare class GatewayRegistry {
343
345
  hasConfiguredAdapter(): boolean;
344
346
  /** Send a text message to a channel target (alias or platform:channelId). */
345
347
  send(target: string, text: string): Promise<boolean>;
348
+ /**
349
+ * Deliver an ANSWER, using a VOICE NOTE when the sender's own message was a
350
+ * voice note and a TTS backend is installed.
351
+ *
352
+ * Falls back to text whenever anything is missing — no TTS backend, an answer
353
+ * too long to speak sanely, or a platform that cannot send audio — so a voice
354
+ * reply is a courtesy and never a way for the answer to get lost. Returns true
355
+ * when a voice note was delivered, false when text was sent instead.
356
+ */
357
+ replyInKind(ref: ChannelRef, text: string, opts?: {
358
+ voice?: boolean;
359
+ }): Promise<boolean>;
346
360
  /**
347
361
  * P3 — send media to a channel ref. Adapters that implement the optional
348
362
  * `sendMedia` (WhatsApp, Telegram, Discord) support it; others return false
@@ -451,6 +465,23 @@ export declare class GatewayRegistry {
451
465
  * used to choose the sender-facing failure wording — never to block a call.
452
466
  */
453
467
  private hasConfiguredModel;
468
+ /**
469
+ * One inbound chat turn, and the backend it was served by.
470
+ *
471
+ * The result carries `provider`/`model`/`transport` because this method is the
472
+ * surface's boundary: the shared engine resolves all three, and keeping only
473
+ * `content` + `generationFailed` is what made `run-attribution@gateway-chat`
474
+ * the one capability cell the gateway could not prove. A messaging run is
475
+ * also the hardest to inspect after the fact — there is no terminal to scroll
476
+ * — so the same triple goes to the gateway log.
477
+ *
478
+ * It also carries the turn's per-call tool lifecycles (`toolCalls`), read from
479
+ * the engine's `onToolCall` seam. Those are recorded, never sent to the
480
+ * sender: a chat turn's `started`/`called` events are internal, exactly like
481
+ * `onProgress`, but the OUTCOME of each call is a fact the surface should be
482
+ * able to report — otherwise a gateway turn's tool work is unattributable
483
+ * (`tool-call-lifecycle@gateway-chat`).
484
+ */
454
485
  private runInboundChat;
455
486
  /** Allow-list check: no allowIds configured = everyone; else exact platform:channelId. */
456
487
  private isAllowed;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/gateway/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/gateway/registry.ts"],"names":[],"mappings":"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"}