@jungjaehoon/mama-os 0.28.6 → 0.29.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (452) hide show
  1. package/dist/agent/agent-loop.d.ts +0 -4
  2. package/dist/agent/agent-loop.d.ts.map +1 -1
  3. package/dist/agent/agent-loop.js +33 -10
  4. package/dist/agent/agent-loop.js.map +1 -1
  5. package/dist/agent/code-act/host-bridge.d.ts.map +1 -1
  6. package/dist/agent/code-act/host-bridge.js +53 -3
  7. package/dist/agent/code-act/host-bridge.js.map +1 -1
  8. package/dist/agent/code-act/tool-policy.d.ts.map +1 -1
  9. package/dist/agent/code-act/tool-policy.js +5 -0
  10. package/dist/agent/code-act/tool-policy.js.map +1 -1
  11. package/dist/agent/codex-auth.d.ts +0 -1
  12. package/dist/agent/codex-auth.d.ts.map +1 -1
  13. package/dist/agent/codex-auth.js +0 -4
  14. package/dist/agent/codex-auth.js.map +1 -1
  15. package/dist/agent/codex-home.d.ts +0 -2
  16. package/dist/agent/codex-home.d.ts.map +1 -1
  17. package/dist/agent/codex-home.js +0 -66
  18. package/dist/agent/codex-home.js.map +1 -1
  19. package/dist/agent/context-compile-service.d.ts +9 -0
  20. package/dist/agent/context-compile-service.d.ts.map +1 -1
  21. package/dist/agent/context-compile-service.js +6 -0
  22. package/dist/agent/context-compile-service.js.map +1 -1
  23. package/dist/agent/context-prompt-builder.d.ts +0 -6
  24. package/dist/agent/context-prompt-builder.d.ts.map +1 -1
  25. package/dist/agent/context-prompt-builder.js +0 -131
  26. package/dist/agent/context-prompt-builder.js.map +1 -1
  27. package/dist/agent/contract-extractor.d.ts +0 -4
  28. package/dist/agent/contract-extractor.d.ts.map +1 -1
  29. package/dist/agent/contract-extractor.js +0 -68
  30. package/dist/agent/contract-extractor.js.map +1 -1
  31. package/dist/agent/gateway-tool-executor.d.ts +20 -15
  32. package/dist/agent/gateway-tool-executor.d.ts.map +1 -1
  33. package/dist/agent/gateway-tool-executor.js +236 -90
  34. package/dist/agent/gateway-tool-executor.js.map +1 -1
  35. package/dist/agent/gateway-tools.md +7 -4
  36. package/dist/agent/skill-loader.d.ts +0 -7
  37. package/dist/agent/skill-loader.d.ts.map +1 -1
  38. package/dist/agent/skill-loader.js +0 -86
  39. package/dist/agent/skill-loader.js.map +1 -1
  40. package/dist/agent/token-estimator.d.ts +0 -8
  41. package/dist/agent/token-estimator.d.ts.map +1 -1
  42. package/dist/agent/token-estimator.js +0 -14
  43. package/dist/agent/token-estimator.js.map +1 -1
  44. package/dist/agent/tool-registry.d.ts.map +1 -1
  45. package/dist/agent/tool-registry.js +23 -5
  46. package/dist/agent/tool-registry.js.map +1 -1
  47. package/dist/agent/types.d.ts +27 -1
  48. package/dist/agent/types.d.ts.map +1 -1
  49. package/dist/agent/types.js.map +1 -1
  50. package/dist/api/agent-graph-handler.d.ts +9 -0
  51. package/dist/api/agent-graph-handler.d.ts.map +1 -1
  52. package/dist/api/agent-graph-handler.js +27 -1
  53. package/dist/api/agent-graph-handler.js.map +1 -1
  54. package/dist/api/entity-audit-handler.d.ts +1 -2
  55. package/dist/api/entity-audit-handler.d.ts.map +1 -1
  56. package/dist/api/entity-audit-handler.js +0 -5
  57. package/dist/api/entity-audit-handler.js.map +1 -1
  58. package/dist/api/index.d.ts +1 -9
  59. package/dist/api/index.d.ts.map +1 -1
  60. package/dist/api/index.js +4 -17
  61. package/dist/api/index.js.map +1 -1
  62. package/dist/api/intelligence-handler.d.ts +0 -5
  63. package/dist/api/intelligence-handler.d.ts.map +1 -1
  64. package/dist/api/intelligence-handler.js +0 -15
  65. package/dist/api/intelligence-handler.js.map +1 -1
  66. package/dist/api/types.d.ts +1 -5
  67. package/dist/api/types.d.ts.map +1 -1
  68. package/dist/api/types.js +0 -14
  69. package/dist/api/types.js.map +1 -1
  70. package/dist/cli/commands/start.d.ts +117 -3
  71. package/dist/cli/commands/start.d.ts.map +1 -1
  72. package/dist/cli/commands/start.js +223 -62
  73. package/dist/cli/commands/start.js.map +1 -1
  74. package/dist/cli/config/config-manager.d.ts +0 -5
  75. package/dist/cli/config/config-manager.d.ts.map +1 -1
  76. package/dist/cli/config/config-manager.js +0 -29
  77. package/dist/cli/config/config-manager.js.map +1 -1
  78. package/dist/cli/config/types.d.ts.map +1 -1
  79. package/dist/cli/config/types.js +3 -0
  80. package/dist/cli/config/types.js.map +1 -1
  81. package/dist/cli/runtime/api-routes-init.d.ts.map +1 -1
  82. package/dist/cli/runtime/api-routes-init.js +32 -5
  83. package/dist/cli/runtime/api-routes-init.js.map +1 -1
  84. package/dist/cli/runtime/api-server-init.d.ts.map +1 -1
  85. package/dist/cli/runtime/api-server-init.js +2 -0
  86. package/dist/cli/runtime/api-server-init.js.map +1 -1
  87. package/dist/cli/runtime/gateway-init.d.ts +1 -1
  88. package/dist/cli/runtime/gateway-init.d.ts.map +1 -1
  89. package/dist/cli/runtime/gateway-init.js +11 -38
  90. package/dist/cli/runtime/gateway-init.js.map +1 -1
  91. package/dist/cli/runtime/gateway-wiring.d.ts.map +1 -1
  92. package/dist/cli/runtime/gateway-wiring.js +6 -120
  93. package/dist/cli/runtime/gateway-wiring.js.map +1 -1
  94. package/dist/cli/utils/pid-manager.d.ts +0 -10
  95. package/dist/cli/utils/pid-manager.d.ts.map +1 -1
  96. package/dist/cli/utils/pid-manager.js +0 -26
  97. package/dist/cli/utils/pid-manager.js.map +1 -1
  98. package/dist/connectors/framework/polling-scheduler.d.ts +33 -1
  99. package/dist/connectors/framework/polling-scheduler.d.ts.map +1 -1
  100. package/dist/connectors/framework/polling-scheduler.js +46 -40
  101. package/dist/connectors/framework/polling-scheduler.js.map +1 -1
  102. package/dist/connectors/trello/query-tools.d.ts +32 -5
  103. package/dist/connectors/trello/query-tools.d.ts.map +1 -1
  104. package/dist/connectors/trello/query-tools.js +56 -17
  105. package/dist/connectors/trello/query-tools.js.map +1 -1
  106. package/dist/db/agent-store.d.ts +0 -4
  107. package/dist/db/agent-store.d.ts.map +1 -1
  108. package/dist/db/agent-store.js +0 -65
  109. package/dist/db/agent-store.js.map +1 -1
  110. package/dist/envelope/enforcer.d.ts.map +1 -1
  111. package/dist/envelope/enforcer.js +10 -1
  112. package/dist/envelope/enforcer.js.map +1 -1
  113. package/dist/envelope/index.d.ts +0 -1
  114. package/dist/envelope/index.d.ts.map +1 -1
  115. package/dist/envelope/index.js +0 -1
  116. package/dist/envelope/index.js.map +1 -1
  117. package/dist/envelope/signature.d.ts +0 -1
  118. package/dist/envelope/signature.d.ts.map +1 -1
  119. package/dist/envelope/signature.js +0 -7
  120. package/dist/envelope/signature.js.map +1 -1
  121. package/dist/envelope/tool-connector-scope.d.ts +35 -0
  122. package/dist/envelope/tool-connector-scope.d.ts.map +1 -0
  123. package/dist/envelope/tool-connector-scope.js +57 -0
  124. package/dist/envelope/tool-connector-scope.js.map +1 -0
  125. package/dist/evidence/effects.d.ts +107 -0
  126. package/dist/evidence/effects.d.ts.map +1 -0
  127. package/dist/evidence/effects.js +281 -0
  128. package/dist/evidence/effects.js.map +1 -0
  129. package/dist/evidence/read.d.ts +75 -0
  130. package/dist/evidence/read.d.ts.map +1 -0
  131. package/dist/evidence/read.js +105 -0
  132. package/dist/evidence/read.js.map +1 -0
  133. package/dist/gateways/base-gateway.d.ts +23 -3
  134. package/dist/gateways/base-gateway.d.ts.map +1 -1
  135. package/dist/gateways/base-gateway.js +15 -2
  136. package/dist/gateways/base-gateway.js.map +1 -1
  137. package/dist/gateways/discord.d.ts +4 -16
  138. package/dist/gateways/discord.d.ts.map +1 -1
  139. package/dist/gateways/discord.js +22 -189
  140. package/dist/gateways/discord.js.map +1 -1
  141. package/dist/gateways/index.d.ts +2 -1
  142. package/dist/gateways/index.d.ts.map +1 -1
  143. package/dist/gateways/message-router.d.ts +13 -20
  144. package/dist/gateways/message-router.d.ts.map +1 -1
  145. package/dist/gateways/message-router.js +32 -3
  146. package/dist/gateways/message-router.js.map +1 -1
  147. package/dist/gateways/slack.d.ts +2 -12
  148. package/dist/gateways/slack.d.ts.map +1 -1
  149. package/dist/gateways/slack.js +6 -220
  150. package/dist/gateways/slack.js.map +1 -1
  151. package/dist/gateways/telegram.d.ts +2 -2
  152. package/dist/gateways/telegram.d.ts.map +1 -1
  153. package/dist/gateways/telegram.js +3 -2
  154. package/dist/gateways/telegram.js.map +1 -1
  155. package/dist/gateways/turn-contract.d.ts +104 -0
  156. package/dist/gateways/turn-contract.d.ts.map +1 -0
  157. package/dist/{memory/consult-contract.js → gateways/turn-contract.js} +1 -1
  158. package/dist/gateways/turn-contract.js.map +1 -0
  159. package/dist/memory/provenance-live.d.ts +111 -0
  160. package/dist/memory/provenance-live.d.ts.map +1 -0
  161. package/dist/memory/provenance-live.js +381 -0
  162. package/dist/memory/provenance-live.js.map +1 -0
  163. package/dist/memory/provenance-resolver.d.ts +184 -0
  164. package/dist/memory/provenance-resolver.d.ts.map +1 -0
  165. package/dist/memory/provenance-resolver.js +152 -0
  166. package/dist/memory/provenance-resolver.js.map +1 -0
  167. package/dist/multi-agent/agent-event-bus.d.ts +1 -0
  168. package/dist/multi-agent/agent-event-bus.d.ts.map +1 -1
  169. package/dist/multi-agent/bmad-templates.d.ts +0 -18
  170. package/dist/multi-agent/bmad-templates.d.ts.map +1 -1
  171. package/dist/multi-agent/bmad-templates.js +0 -127
  172. package/dist/multi-agent/bmad-templates.js.map +1 -1
  173. package/dist/multi-agent/dashboard-agent-persona.js +3 -3
  174. package/dist/operator/board-reconcile.d.ts +2 -3
  175. package/dist/operator/board-reconcile.d.ts.map +1 -1
  176. package/dist/operator/board-reconcile.js +18 -32
  177. package/dist/operator/board-reconcile.js.map +1 -1
  178. package/dist/operator/changes-projection.d.ts +70 -0
  179. package/dist/operator/changes-projection.d.ts.map +1 -0
  180. package/dist/operator/changes-projection.js +109 -0
  181. package/dist/operator/changes-projection.js.map +1 -0
  182. package/dist/operator/external-correlation.d.ts +94 -0
  183. package/dist/operator/external-correlation.d.ts.map +1 -0
  184. package/dist/operator/external-correlation.js +177 -0
  185. package/dist/operator/external-correlation.js.map +1 -0
  186. package/dist/operator/operator-trigger-loop.d.ts +9 -1
  187. package/dist/operator/operator-trigger-loop.d.ts.map +1 -1
  188. package/dist/operator/operator-trigger-loop.js +8 -4
  189. package/dist/operator/operator-trigger-loop.js.map +1 -1
  190. package/dist/operator/provenance-lookup.d.ts +18 -0
  191. package/dist/operator/provenance-lookup.d.ts.map +1 -0
  192. package/dist/operator/provenance-lookup.js +54 -0
  193. package/dist/operator/provenance-lookup.js.map +1 -0
  194. package/dist/operator/report-carry.d.ts +18 -1
  195. package/dist/operator/report-carry.d.ts.map +1 -1
  196. package/dist/operator/report-carry.js +22 -3
  197. package/dist/operator/report-carry.js.map +1 -1
  198. package/dist/operator/report-run.d.ts +31 -0
  199. package/dist/operator/report-run.d.ts.map +1 -1
  200. package/dist/operator/report-run.js +140 -22
  201. package/dist/operator/report-run.js.map +1 -1
  202. package/dist/operator/task-ledger.d.ts +84 -2
  203. package/dist/operator/task-ledger.d.ts.map +1 -1
  204. package/dist/operator/task-ledger.js +274 -31
  205. package/dist/operator/task-ledger.js.map +1 -1
  206. package/dist/operator/trigger-author.d.ts +7 -0
  207. package/dist/operator/trigger-author.d.ts.map +1 -1
  208. package/dist/operator/trigger-author.js +78 -7
  209. package/dist/operator/trigger-author.js.map +1 -1
  210. package/dist/operator/worker-run.js +1 -1
  211. package/dist/operator/worker-run.js.map +1 -1
  212. package/dist/operator/workorder-hooks.d.ts +79 -4
  213. package/dist/operator/workorder-hooks.d.ts.map +1 -1
  214. package/dist/operator/workorder-hooks.js +152 -20
  215. package/dist/operator/workorder-hooks.js.map +1 -1
  216. package/dist/operator/workorder-publishers.d.ts +2 -0
  217. package/dist/operator/workorder-publishers.d.ts.map +1 -1
  218. package/dist/operator/workorder-publishers.js +8 -1
  219. package/dist/operator/workorder-publishers.js.map +1 -1
  220. package/dist/utils/untrusted-content.d.ts +11 -0
  221. package/dist/utils/untrusted-content.d.ts.map +1 -1
  222. package/dist/utils/untrusted-content.js +20 -0
  223. package/dist/utils/untrusted-content.js.map +1 -1
  224. package/package.json +4 -3
  225. package/scripts/backfill-channel-keys.ts +451 -0
  226. package/dist/agent/auto-recall.d.ts +0 -48
  227. package/dist/agent/auto-recall.d.ts.map +0 -1
  228. package/dist/agent/auto-recall.js +0 -192
  229. package/dist/agent/auto-recall.js.map +0 -1
  230. package/dist/agent/claude-client.d.ts +0 -50
  231. package/dist/agent/claude-client.d.ts.map +0 -1
  232. package/dist/agent/claude-client.js +0 -219
  233. package/dist/agent/claude-client.js.map +0 -1
  234. package/dist/agent/delegation-executor.d.ts +0 -49
  235. package/dist/agent/delegation-executor.d.ts.map +0 -1
  236. package/dist/agent/delegation-executor.js +0 -692
  237. package/dist/agent/delegation-executor.js.map +0 -1
  238. package/dist/agent/mcp-executor.d.ts +0 -60
  239. package/dist/agent/mcp-executor.d.ts.map +0 -1
  240. package/dist/agent/mcp-executor.js +0 -190
  241. package/dist/agent/mcp-executor.js.map +0 -1
  242. package/dist/agent/process-tree.d.ts +0 -6
  243. package/dist/agent/process-tree.d.ts.map +0 -1
  244. package/dist/agent/process-tree.js +0 -21
  245. package/dist/agent/process-tree.js.map +0 -1
  246. package/dist/agent/streaming-callback-manager.d.ts +0 -85
  247. package/dist/agent/streaming-callback-manager.d.ts.map +0 -1
  248. package/dist/agent/streaming-callback-manager.js +0 -103
  249. package/dist/agent/streaming-callback-manager.js.map +0 -1
  250. package/dist/agent/token-budget.d.ts +0 -49
  251. package/dist/agent/token-budget.d.ts.map +0 -1
  252. package/dist/agent/token-budget.js +0 -92
  253. package/dist/agent/token-budget.js.map +0 -1
  254. package/dist/connectors/kagemusha/history-compiler.d.ts +0 -18
  255. package/dist/connectors/kagemusha/history-compiler.d.ts.map +0 -1
  256. package/dist/connectors/kagemusha/history-compiler.js +0 -35
  257. package/dist/connectors/kagemusha/history-compiler.js.map +0 -1
  258. package/dist/db/migrations/wiki-artifacts.d.ts +0 -3
  259. package/dist/db/migrations/wiki-artifacts.d.ts.map +0 -1
  260. package/dist/db/migrations/wiki-artifacts.js +0 -24
  261. package/dist/db/migrations/wiki-artifacts.js.map +0 -1
  262. package/dist/envelope/subset.d.ts +0 -9
  263. package/dist/envelope/subset.d.ts.map +0 -1
  264. package/dist/envelope/subset.js +0 -67
  265. package/dist/envelope/subset.js.map +0 -1
  266. package/dist/memory/consult-contract.d.ts +0 -8
  267. package/dist/memory/consult-contract.d.ts.map +0 -1
  268. package/dist/memory/consult-contract.js.map +0 -1
  269. package/dist/multi-agent/agent-message-queue.d.ts +0 -104
  270. package/dist/multi-agent/agent-message-queue.d.ts.map +0 -1
  271. package/dist/multi-agent/agent-message-queue.js +0 -227
  272. package/dist/multi-agent/agent-message-queue.js.map +0 -1
  273. package/dist/multi-agent/background-task-manager.d.ts +0 -248
  274. package/dist/multi-agent/background-task-manager.d.ts.map +0 -1
  275. package/dist/multi-agent/background-task-manager.js +0 -415
  276. package/dist/multi-agent/background-task-manager.js.map +0 -1
  277. package/dist/multi-agent/category-router.d.ts +0 -56
  278. package/dist/multi-agent/category-router.d.ts.map +0 -1
  279. package/dist/multi-agent/category-router.js +0 -99
  280. package/dist/multi-agent/category-router.js.map +0 -1
  281. package/dist/multi-agent/council-engine.d.ts +0 -60
  282. package/dist/multi-agent/council-engine.d.ts.map +0 -1
  283. package/dist/multi-agent/council-engine.js +0 -284
  284. package/dist/multi-agent/council-engine.js.map +0 -1
  285. package/dist/multi-agent/delegation-format-validator.d.ts +0 -22
  286. package/dist/multi-agent/delegation-format-validator.d.ts.map +0 -1
  287. package/dist/multi-agent/delegation-format-validator.js +0 -31
  288. package/dist/multi-agent/delegation-format-validator.js.map +0 -1
  289. package/dist/multi-agent/delegation-manager.d.ts +0 -128
  290. package/dist/multi-agent/delegation-manager.d.ts.map +0 -1
  291. package/dist/multi-agent/delegation-manager.js +0 -276
  292. package/dist/multi-agent/delegation-manager.js.map +0 -1
  293. package/dist/multi-agent/i18n-messages.d.ts +0 -35
  294. package/dist/multi-agent/i18n-messages.d.ts.map +0 -1
  295. package/dist/multi-agent/i18n-messages.js +0 -54
  296. package/dist/multi-agent/i18n-messages.js.map +0 -1
  297. package/dist/multi-agent/index.d.ts +0 -31
  298. package/dist/multi-agent/index.d.ts.map +0 -1
  299. package/dist/multi-agent/index.js +0 -46
  300. package/dist/multi-agent/index.js.map +0 -1
  301. package/dist/multi-agent/multi-agent-base.d.ts +0 -223
  302. package/dist/multi-agent/multi-agent-base.d.ts.map +0 -1
  303. package/dist/multi-agent/multi-agent-base.js +0 -592
  304. package/dist/multi-agent/multi-agent-base.js.map +0 -1
  305. package/dist/multi-agent/multi-agent-discord.d.ts +0 -142
  306. package/dist/multi-agent/multi-agent-discord.d.ts.map +0 -1
  307. package/dist/multi-agent/multi-agent-discord.js +0 -1235
  308. package/dist/multi-agent/multi-agent-discord.js.map +0 -1
  309. package/dist/multi-agent/multi-agent-slack.d.ts +0 -146
  310. package/dist/multi-agent/multi-agent-slack.d.ts.map +0 -1
  311. package/dist/multi-agent/multi-agent-slack.js +0 -953
  312. package/dist/multi-agent/multi-agent-slack.js.map +0 -1
  313. package/dist/multi-agent/multi-bot-manager.d.ts +0 -119
  314. package/dist/multi-agent/multi-bot-manager.d.ts.map +0 -1
  315. package/dist/multi-agent/multi-bot-manager.js +0 -449
  316. package/dist/multi-agent/multi-bot-manager.js.map +0 -1
  317. package/dist/multi-agent/orchestrator.d.ts +0 -110
  318. package/dist/multi-agent/orchestrator.d.ts.map +0 -1
  319. package/dist/multi-agent/orchestrator.js +0 -436
  320. package/dist/multi-agent/orchestrator.js.map +0 -1
  321. package/dist/multi-agent/rate-limiter.d.ts +0 -76
  322. package/dist/multi-agent/rate-limiter.d.ts.map +0 -1
  323. package/dist/multi-agent/rate-limiter.js +0 -128
  324. package/dist/multi-agent/rate-limiter.js.map +0 -1
  325. package/dist/multi-agent/shared-context.d.ts +0 -127
  326. package/dist/multi-agent/shared-context.d.ts.map +0 -1
  327. package/dist/multi-agent/shared-context.js +0 -239
  328. package/dist/multi-agent/shared-context.js.map +0 -1
  329. package/dist/multi-agent/slack-config-validator.d.ts +0 -42
  330. package/dist/multi-agent/slack-config-validator.d.ts.map +0 -1
  331. package/dist/multi-agent/slack-config-validator.js +0 -194
  332. package/dist/multi-agent/slack-config-validator.js.map +0 -1
  333. package/dist/multi-agent/slack-multi-bot-manager.d.ts +0 -143
  334. package/dist/multi-agent/slack-multi-bot-manager.d.ts.map +0 -1
  335. package/dist/multi-agent/slack-multi-bot-manager.js +0 -413
  336. package/dist/multi-agent/slack-multi-bot-manager.js.map +0 -1
  337. package/dist/multi-agent/swarm/swarm-anti-pattern-detector.d.ts +0 -98
  338. package/dist/multi-agent/swarm/swarm-anti-pattern-detector.d.ts.map +0 -1
  339. package/dist/multi-agent/swarm/swarm-anti-pattern-detector.js +0 -225
  340. package/dist/multi-agent/swarm/swarm-anti-pattern-detector.js.map +0 -1
  341. package/dist/multi-agent/swarm/swarm-db.d.ts +0 -175
  342. package/dist/multi-agent/swarm/swarm-db.d.ts.map +0 -1
  343. package/dist/multi-agent/swarm/swarm-db.js +0 -313
  344. package/dist/multi-agent/swarm/swarm-db.js.map +0 -1
  345. package/dist/multi-agent/swarm/swarm-event-reporter.d.ts +0 -116
  346. package/dist/multi-agent/swarm/swarm-event-reporter.d.ts.map +0 -1
  347. package/dist/multi-agent/swarm/swarm-event-reporter.js +0 -243
  348. package/dist/multi-agent/swarm/swarm-event-reporter.js.map +0 -1
  349. package/dist/multi-agent/swarm/swarm-mama-adapter.d.ts +0 -57
  350. package/dist/multi-agent/swarm/swarm-mama-adapter.d.ts.map +0 -1
  351. package/dist/multi-agent/swarm/swarm-mama-adapter.js +0 -87
  352. package/dist/multi-agent/swarm/swarm-mama-adapter.js.map +0 -1
  353. package/dist/multi-agent/swarm/swarm-manager.d.ts +0 -122
  354. package/dist/multi-agent/swarm/swarm-manager.d.ts.map +0 -1
  355. package/dist/multi-agent/swarm/swarm-manager.js +0 -199
  356. package/dist/multi-agent/swarm/swarm-manager.js.map +0 -1
  357. package/dist/multi-agent/swarm/swarm-task-learner.d.ts +0 -104
  358. package/dist/multi-agent/swarm/swarm-task-learner.d.ts.map +0 -1
  359. package/dist/multi-agent/swarm/swarm-task-learner.js +0 -211
  360. package/dist/multi-agent/swarm/swarm-task-learner.js.map +0 -1
  361. package/dist/multi-agent/swarm/swarm-task-runner.d.ts +0 -155
  362. package/dist/multi-agent/swarm/swarm-task-runner.d.ts.map +0 -1
  363. package/dist/multi-agent/swarm/swarm-task-runner.js +0 -615
  364. package/dist/multi-agent/swarm/swarm-task-runner.js.map +0 -1
  365. package/dist/multi-agent/swarm/wave-engine.d.ts +0 -96
  366. package/dist/multi-agent/swarm/wave-engine.d.ts.map +0 -1
  367. package/dist/multi-agent/swarm/wave-engine.js +0 -123
  368. package/dist/multi-agent/swarm/wave-engine.js.map +0 -1
  369. package/dist/multi-agent/system-reminder.d.ts +0 -206
  370. package/dist/multi-agent/system-reminder.d.ts.map +0 -1
  371. package/dist/multi-agent/system-reminder.js +0 -455
  372. package/dist/multi-agent/system-reminder.js.map +0 -1
  373. package/dist/multi-agent/task-continuation.d.ts +0 -74
  374. package/dist/multi-agent/task-continuation.d.ts.map +0 -1
  375. package/dist/multi-agent/task-continuation.js +0 -172
  376. package/dist/multi-agent/task-continuation.js.map +0 -1
  377. package/dist/multi-agent/ultrawork-state.d.ts +0 -57
  378. package/dist/multi-agent/ultrawork-state.d.ts.map +0 -1
  379. package/dist/multi-agent/ultrawork-state.js +0 -191
  380. package/dist/multi-agent/ultrawork-state.js.map +0 -1
  381. package/dist/multi-agent/ultrawork.d.ts +0 -152
  382. package/dist/multi-agent/ultrawork.d.ts.map +0 -1
  383. package/dist/multi-agent/ultrawork.js +0 -879
  384. package/dist/multi-agent/ultrawork.js.map +0 -1
  385. package/dist/multi-agent/work-tracker.d.ts +0 -22
  386. package/dist/multi-agent/work-tracker.d.ts.map +0 -1
  387. package/dist/multi-agent/work-tracker.js +0 -45
  388. package/dist/multi-agent/work-tracker.js.map +0 -1
  389. package/dist/multi-agent/workflow-engine.d.ts +0 -87
  390. package/dist/multi-agent/workflow-engine.d.ts.map +0 -1
  391. package/dist/multi-agent/workflow-engine.js +0 -604
  392. package/dist/multi-agent/workflow-engine.js.map +0 -1
  393. package/dist/onboarding/all-tools.d.ts +0 -18
  394. package/dist/onboarding/all-tools.d.ts.map +0 -1
  395. package/dist/onboarding/all-tools.js +0 -149
  396. package/dist/onboarding/all-tools.js.map +0 -1
  397. package/dist/onboarding/autonomous-discovery-tools.d.ts +0 -23
  398. package/dist/onboarding/autonomous-discovery-tools.d.ts.map +0 -1
  399. package/dist/onboarding/autonomous-discovery-tools.js +0 -268
  400. package/dist/onboarding/autonomous-discovery-tools.js.map +0 -1
  401. package/dist/onboarding/onboarding-state.d.ts +0 -70
  402. package/dist/onboarding/onboarding-state.d.ts.map +0 -1
  403. package/dist/onboarding/onboarding-state.js +0 -183
  404. package/dist/onboarding/onboarding-state.js.map +0 -1
  405. package/dist/onboarding/personality-quiz.d.ts +0 -35
  406. package/dist/onboarding/personality-quiz.d.ts.map +0 -1
  407. package/dist/onboarding/personality-quiz.js +0 -219
  408. package/dist/onboarding/personality-quiz.js.map +0 -1
  409. package/dist/onboarding/phase-5-summary.d.ts +0 -26
  410. package/dist/onboarding/phase-5-summary.d.ts.map +0 -1
  411. package/dist/onboarding/phase-5-summary.js +0 -153
  412. package/dist/onboarding/phase-5-summary.js.map +0 -1
  413. package/dist/onboarding/phase-6-security.d.ts +0 -33
  414. package/dist/onboarding/phase-6-security.d.ts.map +0 -1
  415. package/dist/onboarding/phase-6-security.js +0 -473
  416. package/dist/onboarding/phase-6-security.js.map +0 -1
  417. package/dist/onboarding/phase-7-integrations.d.ts +0 -91
  418. package/dist/onboarding/phase-7-integrations.d.ts.map +0 -1
  419. package/dist/onboarding/phase-7-integrations.js +0 -725
  420. package/dist/onboarding/phase-7-integrations.js.map +0 -1
  421. package/dist/onboarding/phase-8-demo.d.ts +0 -43
  422. package/dist/onboarding/phase-8-demo.d.ts.map +0 -1
  423. package/dist/onboarding/phase-8-demo.js +0 -346
  424. package/dist/onboarding/phase-8-demo.js.map +0 -1
  425. package/dist/onboarding/phase-9-finalization.d.ts +0 -27
  426. package/dist/onboarding/phase-9-finalization.d.ts.map +0 -1
  427. package/dist/onboarding/phase-9-finalization.js +0 -417
  428. package/dist/onboarding/phase-9-finalization.js.map +0 -1
  429. package/dist/onboarding/ritual-prompt.d.ts +0 -2
  430. package/dist/onboarding/ritual-prompt.d.ts.map +0 -1
  431. package/dist/onboarding/ritual-prompt.js +0 -285
  432. package/dist/onboarding/ritual-prompt.js.map +0 -1
  433. package/dist/onboarding/ritual-tools.d.ts +0 -17
  434. package/dist/onboarding/ritual-tools.d.ts.map +0 -1
  435. package/dist/onboarding/ritual-tools.js +0 -93
  436. package/dist/onboarding/ritual-tools.js.map +0 -1
  437. package/dist/setup/setup-tools.d.ts +0 -13
  438. package/dist/setup/setup-tools.d.ts.map +0 -1
  439. package/dist/setup/setup-tools.js +0 -106
  440. package/dist/setup/setup-tools.js.map +0 -1
  441. package/dist/utils/slack-input-validator.d.ts +0 -74
  442. package/dist/utils/slack-input-validator.d.ts.map +0 -1
  443. package/dist/utils/slack-input-validator.js +0 -275
  444. package/dist/utils/slack-input-validator.js.map +0 -1
  445. package/dist/utils/slack-rate-limiter.d.ts +0 -139
  446. package/dist/utils/slack-rate-limiter.d.ts.map +0 -1
  447. package/dist/utils/slack-rate-limiter.js +0 -324
  448. package/dist/utils/slack-rate-limiter.js.map +0 -1
  449. package/dist/wiki/wiki-compiler.d.ts +0 -13
  450. package/dist/wiki/wiki-compiler.d.ts.map +0 -1
  451. package/dist/wiki/wiki-compiler.js +0 -82
  452. package/dist/wiki/wiki-compiler.js.map +0 -1
@@ -0,0 +1,281 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EffectWithoutCauseError = exports.EVIDENCE_EFFECTS_DDL = void 0;
4
+ exports.isUsableCause = isUsableCause;
5
+ exports.ensureEffectLedger = ensureEffectLedger;
6
+ exports.payloadHash = payloadHash;
7
+ exports.recordEffect = recordEffect;
8
+ exports.recordUnattributedChange = recordUnattributedChange;
9
+ exports.listEffects = listEffects;
10
+ exports.changeCoverage = changeCoverage;
11
+ /**
12
+ * Every durable change, and what caused it.
13
+ *
14
+ * This is the half the system never had. Measured over ten days: 1,471 workorders ran,
15
+ * 1,169 of them closed as `done`, and FIVE durable effect receipts exist - all five inside
16
+ * one eleven-minute window a week earlier. `done` meant "the run finished", not "something
17
+ * changed", and nothing downstream could tell the difference. The peer system recorded
18
+ * 1,080 effects over the same kind of window, every one of them naming the events that
19
+ * caused it, and its reports are projections of that table rather than prose assembled
20
+ * from whatever a model happened to read.
21
+ *
22
+ * So the rule here is narrow and total:
23
+ *
24
+ * A CHANGE THAT CANNOT NAME ITS CAUSE IS NOT RECORDED AS ONE. `source_event_ids` is NOT
25
+ * NULL and must be non-empty, enforced by the schema rather than by callers remembering.
26
+ * The tempting softening - allow an empty array "for now" - is exactly how the effect
27
+ * table becomes a second log: it would fill with rows that prove nothing, and the first
28
+ * question anyone asks of it ("what made this happen?") would have no answer for most of
29
+ * them. If a write genuinely has no observed cause, that is worth discovering, not
30
+ * papering over.
31
+ *
32
+ * The kinds are a closed set for the same reason the peer's are: an open `effect_kind`
33
+ * column drifts into free text within a month, and then counting what the system actually
34
+ * did requires reading strings. Adding a kind should be a deliberate edit here.
35
+ *
36
+ * ONE TABLE, BOTH NUMBERS. A change that could not name a cause is still recorded here,
37
+ * marked `unattributed` and holding an empty cause list that the schema forces to stay
38
+ * empty. This is not the softening warned about above - `recordEffect` still refuses a
39
+ * causeless effect, and a writer has to call `recordUnattributedChange` by name to admit
40
+ * one. It is here because the failure this whole redesign keeps finding is a numerator
41
+ * with no denominator. Split across two tables, "every effect names its cause" is true by
42
+ * construction and means nothing; in one table the ratio is a single GROUP BY.
43
+ *
44
+ * WHAT THIS TABLE DOES NOT YET ANSWER, stated plainly so nobody reads more into the
45
+ * number than it holds: the "1,169 done, five receipts" comparison needs RUNS beside
46
+ * CHANGES, and runs still live in `operator_tasks`. `changeCoverage` answers "of the
47
+ * changes recorded, how many rest on evidence" - not "how many runs changed anything".
48
+ * The join that answers the second question needs the run id on both sides, and only one
49
+ * side carries it today.
50
+ *
51
+ * Recording the unattributed change rather than refusing the write follows the operating
52
+ * rule this system runs under: enforce only what is irreversible or externally visible,
53
+ * and make everything else loud. A task row is neither, so the ledger observes it.
54
+ *
55
+ * A CAUSE IS AN EVENT ID, and the schema checks the shape rather than trusting the helper
56
+ * to have filtered - `[""]`, `[null]`, `[0]` and a 200 KB string are all "non-empty
57
+ * arrays" and all lies. What the schema still cannot check is whether the id names an
58
+ * event that exists and is readable: the event index lives in a different database. A
59
+ * cited cause that resolves to nothing is a fabricated citation, and catching those is the
60
+ * next thing this needs.
61
+ */
62
+ const node_crypto_1 = require("node:crypto");
63
+ const EFFECT_KINDS = [
64
+ 'task_create',
65
+ 'task_update',
66
+ 'report_update',
67
+ 'report_publish',
68
+ 'memory_write',
69
+ 'wiki_write',
70
+ ];
71
+ const EFFECT_TARGETS = ['task', 'report_slot', 'memory', 'wiki_page'];
72
+ /** Long enough for any upstream id, short enough that the column cannot carry content. */
73
+ const MAX_EVENT_ID_LENGTH = 200;
74
+ const PAYLOAD_HASH_LENGTH = 32;
75
+ /**
76
+ * Whether a value can serve as a cause at all.
77
+ *
78
+ * Callers ask before writing rather than discovering it as a constraint violation,
79
+ * because the answer changes what they record, not whether they may proceed: a malformed
80
+ * cause makes a change unattributed, it does not make the change illegitimate. Legacy
81
+ * rows really do carry 400-character source identifiers, and refusing to let the operator
82
+ * update a work item because its upstream id is the wrong shape would be enforcement
83
+ * bought with the owner's work.
84
+ */
85
+ function isUsableCause(value) {
86
+ if (typeof value !== 'string')
87
+ return false;
88
+ const trimmed = value.trim();
89
+ return trimmed.length > 0 && trimmed.length <= MAX_EVENT_ID_LENGTH;
90
+ }
91
+ const quoted = (values) => values.map((v) => `'${v}'`).join(', ');
92
+ exports.EVIDENCE_EFFECTS_DDL = `
93
+ CREATE TABLE IF NOT EXISTS evidence_effects (
94
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
95
+ run_id TEXT,
96
+ channel_id TEXT,
97
+ cause_state TEXT NOT NULL CHECK (cause_state IN ('attributed', 'unattributed')),
98
+ source_event_ids_json TEXT NOT NULL
99
+ CHECK (
100
+ json_valid(source_event_ids_json)
101
+ AND (
102
+ (cause_state = 'attributed' AND json_array_length(source_event_ids_json) >= 1)
103
+ OR (cause_state = 'unattributed' AND json_array_length(source_event_ids_json) = 0)
104
+ )
105
+ ),
106
+ effect_kind TEXT NOT NULL CHECK (effect_kind IN (${quoted(EFFECT_KINDS)})),
107
+ target_type TEXT NOT NULL CHECK (target_type IN (${quoted(EFFECT_TARGETS)})),
108
+ target_id TEXT NOT NULL CHECK (length(trim(target_id)) > 0),
109
+ payload_hash TEXT NOT NULL CHECK (length(payload_hash) = ${PAYLOAD_HASH_LENGTH}),
110
+ created_at INTEGER NOT NULL CHECK (typeof(created_at) = 'integer' AND created_at >= 0)
111
+ )
112
+ `;
113
+ /**
114
+ * Per-element shape of the cause list.
115
+ *
116
+ * A trigger rather than a CHECK because SQLite forbids subqueries in CHECK, and checking
117
+ * each element needs `json_each`. Without this the column enforces only "non-empty array",
118
+ * which `[""]` and `[null]` and `[0]` all satisfy while naming nothing.
119
+ *
120
+ * The length bound is not cosmetic: an unbounded cause id turns an audit ledger into a
121
+ * content channel, which is the one thing the payload is hashed to avoid.
122
+ */
123
+ const EVIDENCE_EFFECTS_CAUSE_TRIGGER = `
124
+ CREATE TRIGGER IF NOT EXISTS evidence_effects_cause_shape
125
+ BEFORE INSERT ON evidence_effects
126
+ WHEN EXISTS (
127
+ SELECT 1 FROM json_each(NEW.source_event_ids_json)
128
+ WHERE json_each.type <> 'text'
129
+ OR trim(json_each.value) = ''
130
+ OR length(json_each.value) > ${MAX_EVENT_ID_LENGTH}
131
+ )
132
+ BEGIN
133
+ SELECT RAISE(ABORT, 'evidence_effects: a cause must be a non-empty event id');
134
+ END
135
+ `;
136
+ const INDEXES = [
137
+ `CREATE INDEX IF NOT EXISTS idx_evidence_effects_run
138
+ ON evidence_effects(run_id, created_at DESC)`,
139
+ `CREATE INDEX IF NOT EXISTS idx_evidence_effects_target
140
+ ON evidence_effects(target_type, target_id, created_at DESC)`,
141
+ `CREATE INDEX IF NOT EXISTS idx_evidence_effects_channel
142
+ ON evidence_effects(channel_id, created_at DESC)`,
143
+ // Coverage is meant to be cheap enough that nobody has an excuse not to look.
144
+ `CREATE INDEX IF NOT EXISTS idx_evidence_effects_coverage
145
+ ON evidence_effects(created_at DESC, cause_state)`,
146
+ ];
147
+ function ensureEffectLedger(adapter) {
148
+ adapter.prepare(exports.EVIDENCE_EFFECTS_DDL).run();
149
+ adapter.prepare(EVIDENCE_EFFECTS_CAUSE_TRIGGER).run();
150
+ for (const sql of INDEXES) {
151
+ adapter.prepare(sql).run();
152
+ }
153
+ }
154
+ class EffectWithoutCauseError extends Error {
155
+ constructor(kind, targetId) {
156
+ super(`Refusing to record ${kind} on ${targetId} with no source events: a change that cannot name its cause is not an effect.`);
157
+ this.name = 'EffectWithoutCauseError';
158
+ }
159
+ }
160
+ exports.EffectWithoutCauseError = EffectWithoutCauseError;
161
+ /** Stable hash of what was written. The ledger proves a change happened, not what it said. */
162
+ function payloadHash(payload) {
163
+ return (0, node_crypto_1.createHash)('sha256')
164
+ .update(JSON.stringify(payload ?? null))
165
+ .digest('hex')
166
+ .slice(0, PAYLOAD_HASH_LENGTH);
167
+ }
168
+ /**
169
+ * Record a durable change.
170
+ *
171
+ * Throws rather than returning a failure when the cause is missing. A caller that wrote
172
+ * something and then could not say why must not proceed as if the write were accounted
173
+ * for - silently skipping the ledger row is how 1,169 runs closed as `done` while five
174
+ * receipts existed.
175
+ */
176
+ function recordEffect(adapter, input) {
177
+ const sourceEventIds = [
178
+ ...new Set(input.sourceEventIds.filter(isUsableCause).map((id) => id.trim())),
179
+ ];
180
+ if (sourceEventIds.length === 0) {
181
+ throw new EffectWithoutCauseError(input.kind, input.targetId);
182
+ }
183
+ return insertChange(adapter, input, 'attributed', sourceEventIds);
184
+ }
185
+ /**
186
+ * Record a durable change that could not name what caused it.
187
+ *
188
+ * Deliberately a separate function with an uncomfortable name. Every call is an admission
189
+ * that the system changed something it cannot explain, and the point is that the count of
190
+ * these is visible next to the count of real effects rather than absent from both.
191
+ */
192
+ function recordUnattributedChange(adapter, input) {
193
+ return insertChange(adapter, input, 'unattributed', []);
194
+ }
195
+ function insertChange(adapter, input, causeState, sourceEventIds) {
196
+ const result = adapter
197
+ .prepare(`INSERT INTO evidence_effects
198
+ (run_id, channel_id, cause_state, source_event_ids_json,
199
+ effect_kind, target_type, target_id, payload_hash, created_at)
200
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`)
201
+ .run(input.runId ?? null, input.channelId ?? null, causeState, JSON.stringify(sourceEventIds), input.kind, input.targetType, input.targetId, payloadHash(input.payload), input.atMs);
202
+ return Number(result.lastInsertRowid ?? 0);
203
+ }
204
+ /** Read effects back, newest first - the substrate a report projects from. */
205
+ function listEffects(adapter, query = {}) {
206
+ const clauses = [];
207
+ const params = [];
208
+ if (query.runId !== undefined) {
209
+ clauses.push('run_id = ?');
210
+ params.push(query.runId);
211
+ }
212
+ if (query.targetType !== undefined) {
213
+ clauses.push('target_type = ?');
214
+ params.push(query.targetType);
215
+ }
216
+ if (query.targetId !== undefined) {
217
+ clauses.push('target_id = ?');
218
+ params.push(query.targetId);
219
+ }
220
+ if (query.causeState !== undefined) {
221
+ clauses.push('cause_state = ?');
222
+ params.push(query.causeState);
223
+ }
224
+ if (query.sinceMs !== undefined) {
225
+ clauses.push('created_at >= ?');
226
+ params.push(query.sinceMs);
227
+ }
228
+ params.push(Math.min(Math.max(query.limit ?? 200, 1), 1000));
229
+ const rows = adapter
230
+ .prepare(`SELECT * FROM evidence_effects
231
+ ${clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : ''}
232
+ ORDER BY created_at DESC, id DESC
233
+ LIMIT ?`)
234
+ .all(...params);
235
+ return rows.map((row) => ({
236
+ id: Number(row.id),
237
+ runId: typeof row.run_id === 'string' ? row.run_id : null,
238
+ channelId: typeof row.channel_id === 'string' ? row.channel_id : null,
239
+ causeState: String(row.cause_state),
240
+ sourceEventIds: JSON.parse(String(row.source_event_ids_json)),
241
+ kind: String(row.effect_kind),
242
+ targetType: String(row.target_type),
243
+ targetId: String(row.target_id),
244
+ payloadHash: String(row.payload_hash),
245
+ atMs: Number(row.created_at),
246
+ }));
247
+ }
248
+ /**
249
+ * How much of what the system changed rests on evidence.
250
+ *
251
+ * The single number this ledger exists to make answerable, and the one the previous shape
252
+ * of the system could not produce at all.
253
+ */
254
+ function changeCoverage(adapter, sinceMs, targetType) {
255
+ // Coverage must describe the same population as the rows a caller is looking at, or the
256
+ // two halves of one answer disagree and the reader cannot tell which is wrong.
257
+ const clauses = [];
258
+ const params = [];
259
+ if (sinceMs !== undefined) {
260
+ clauses.push('created_at >= ?');
261
+ params.push(sinceMs);
262
+ }
263
+ if (targetType !== undefined) {
264
+ clauses.push('target_type = ?');
265
+ params.push(targetType);
266
+ }
267
+ const rows = adapter
268
+ .prepare(`SELECT cause_state, COUNT(*) AS n FROM evidence_effects
269
+ ${clauses.length > 0 ? `WHERE ${clauses.join(' AND ')}` : ''}
270
+ GROUP BY cause_state`)
271
+ .all(...params);
272
+ const coverage = { attributed: 0, unattributed: 0 };
273
+ for (const row of rows) {
274
+ if (row.cause_state === 'attributed')
275
+ coverage.attributed = Number(row.n);
276
+ if (row.cause_state === 'unattributed')
277
+ coverage.unattributed = Number(row.n);
278
+ }
279
+ return coverage;
280
+ }
281
+ //# sourceMappingURL=effects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effects.js","sourceRoot":"","sources":["../../src/evidence/effects.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ /**
2
+ * The live grant: which connectors and channels this system was told to look at.
3
+ *
4
+ * This file used to also carry a boolean visibility predicate and a SQL reader of its own -
5
+ * a third and fourth compiled copy of a rule whose whole point was that there be one. Both
6
+ * had zero callers, which is worse than a live copy rather than better: nothing exercises
7
+ * them, so nothing notices when they drift, and they sit there looking authoritative until
8
+ * someone reads one and believes it. They are deleted. The rule lives in mama-core's
9
+ * channel-grant.ts, where its two used forms sit adjacent with a differential between them.
10
+ *
11
+ * What remains here is the part that is genuinely local: turning the owner's connector
12
+ * config into a grant, and narrowing that grant to what one envelope may read.
13
+ *
14
+ * WHY A GRANT AT ALL. The path it replaced returned ZERO rows out of 30,671 in production,
15
+ * blocked four separate ways at once: a project window whose column was null on every row,
16
+ * a tenant partition with exactly one value, a scope-id namespace that shared nothing with
17
+ * the one callers hold, and a legacy escape hatch gated shut whenever any specific scope
18
+ * was present - which is always. Each was individually fatal, so this is a replacement and
19
+ * not a repair.
20
+ *
21
+ * An event is visible when the caller was granted its connector and its channel. Both come
22
+ * from `(source_connector, channel)`, which every indexed row carries with no nulls, and
23
+ * which is the SAME key the connector config declares its channels under. The old path
24
+ * invented a third naming layer on top of that key, populated it 37% of the time, and then
25
+ * filtered on it.
26
+ */
27
+ import type { ChannelGrant } from '@jungjaehoon/mama-core/context-compile';
28
+ /**
29
+ * Build a grant from the connector config, which already names every channel.
30
+ *
31
+ * A connector present with an EMPTY channel list is denied rather than granted everything -
32
+ * that rule is stated and enforced in `isChannelGranted`, which is the only place it lives.
33
+ */
34
+ export declare function grantFromConnectorConfig(config: unknown): ChannelGrant;
35
+ /**
36
+ * The live grant, read fresh on every call.
37
+ *
38
+ * Not cached at boot: the owner adds and removes channels while the daemon runs, and a
39
+ * grant captured once would keep reading a channel after it was removed - the failure
40
+ * mode where turning something off does not turn it off.
41
+ */
42
+ export declare function liveBoundaryChannels(): ChannelGrant;
43
+ /**
44
+ * Narrow the configured grant to what THIS envelope may read.
45
+ *
46
+ * Two independent narrowings, and the second is the whole reason this exists rather than a
47
+ * one-line filter:
48
+ *
49
+ * 1. Connector - the envelope's `raw_connectors` is the standing permission.
50
+ *
51
+ * 2. CHANNEL - when the envelope names channel scopes, only those channels are readable.
52
+ * Raw visibility used to be decided by the scope columns, so a per-message envelope
53
+ * scoped to one channel could not reach another. Deciding it by connector alone silently
54
+ * dropped that isolation: reactive envelopes for two channels of the same connector
55
+ * carry identical `raw_connectors`, so every such run could have compiled 500-character
56
+ * excerpts out of every other configured channel of that connector. The scope columns
57
+ * were the wrong mechanism - populated on 37% of rows in three namespaces - but the
58
+ * isolation they attempted is real, and it belongs here, where the envelope's own
59
+ * channel scopes state it exactly.
60
+ *
61
+ * An envelope with no channel scope is a run that was never bound to one (a report, a
62
+ * scheduled worker), and it keeps the connector-level ceiling.
63
+ *
64
+ * CALLERS MUST PASS THE ENVELOPE'S OWN SCOPES, never a caller-requested subset. A request
65
+ * may narrow what it asks for; it must not be able to widen its grant by asking for less.
66
+ * Two surfaces got that wrong before it was written down here.
67
+ */
68
+ export declare function narrowGrantToEnvelope(configured: ChannelGrant, visibility: {
69
+ connectors: readonly string[];
70
+ scopes: readonly {
71
+ kind: string;
72
+ id: string;
73
+ }[];
74
+ }): ChannelGrant;
75
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../src/evidence/read.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAG3E;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,YAAY,CAqBtE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,IAAI,YAAY,CAMnD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,YAAY,EACxB,UAAU,EAAE;IACV,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,MAAM,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACjD,GACA,YAAY,CA0Bd"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.grantFromConnectorConfig = grantFromConnectorConfig;
4
+ exports.liveBoundaryChannels = liveBoundaryChannels;
5
+ exports.narrowGrantToEnvelope = narrowGrantToEnvelope;
6
+ const config_loader_js_1 = require("../connectors/config-loader.js");
7
+ /**
8
+ * Build a grant from the connector config, which already names every channel.
9
+ *
10
+ * A connector present with an EMPTY channel list is denied rather than granted everything -
11
+ * that rule is stated and enforced in `isChannelGranted`, which is the only place it lives.
12
+ */
13
+ function grantFromConnectorConfig(config) {
14
+ const grant = {};
15
+ if (config === null || typeof config !== 'object') {
16
+ return grant;
17
+ }
18
+ for (const [connector, raw] of Object.entries(config)) {
19
+ if (raw === null || typeof raw !== 'object') {
20
+ continue;
21
+ }
22
+ const entry = raw;
23
+ // A disabled connector is not a grant. Reading its history because rows survive
24
+ // disabling would make "off" mean "off for new data only".
25
+ if (entry.enabled === false) {
26
+ continue;
27
+ }
28
+ if (entry.channels === null || typeof entry.channels !== 'object') {
29
+ continue;
30
+ }
31
+ grant[connector] = Object.keys(entry.channels);
32
+ }
33
+ return grant;
34
+ }
35
+ /**
36
+ * The live grant, read fresh on every call.
37
+ *
38
+ * Not cached at boot: the owner adds and removes channels while the daemon runs, and a
39
+ * grant captured once would keep reading a channel after it was removed - the failure
40
+ * mode where turning something off does not turn it off.
41
+ */
42
+ function liveBoundaryChannels() {
43
+ const loaded = (0, config_loader_js_1.loadConnectorConfig)();
44
+ // A config that cannot be read is not a grant. Falling back to "everything" on a parse
45
+ // error is how a read path ends up wider precisely when the configuration is broken.
46
+ if (!loaded.ok)
47
+ return {};
48
+ return grantFromConnectorConfig(loaded.config);
49
+ }
50
+ /**
51
+ * Narrow the configured grant to what THIS envelope may read.
52
+ *
53
+ * Two independent narrowings, and the second is the whole reason this exists rather than a
54
+ * one-line filter:
55
+ *
56
+ * 1. Connector - the envelope's `raw_connectors` is the standing permission.
57
+ *
58
+ * 2. CHANNEL - when the envelope names channel scopes, only those channels are readable.
59
+ * Raw visibility used to be decided by the scope columns, so a per-message envelope
60
+ * scoped to one channel could not reach another. Deciding it by connector alone silently
61
+ * dropped that isolation: reactive envelopes for two channels of the same connector
62
+ * carry identical `raw_connectors`, so every such run could have compiled 500-character
63
+ * excerpts out of every other configured channel of that connector. The scope columns
64
+ * were the wrong mechanism - populated on 37% of rows in three namespaces - but the
65
+ * isolation they attempted is real, and it belongs here, where the envelope's own
66
+ * channel scopes state it exactly.
67
+ *
68
+ * An envelope with no channel scope is a run that was never bound to one (a report, a
69
+ * scheduled worker), and it keeps the connector-level ceiling.
70
+ *
71
+ * CALLERS MUST PASS THE ENVELOPE'S OWN SCOPES, never a caller-requested subset. A request
72
+ * may narrow what it asks for; it must not be able to widen its grant by asking for less.
73
+ * Two surfaces got that wrong before it was written down here.
74
+ */
75
+ function narrowGrantToEnvelope(configured, visibility) {
76
+ // Channel scope ids are `<connector>:<channelId>` (deriveMemoryScopes). Split on the
77
+ // FIRST separator only: channel ids contain colons of their own.
78
+ const scopedChannels = new Map();
79
+ for (const scope of visibility.scopes) {
80
+ if (scope.kind !== 'channel')
81
+ continue;
82
+ const separator = scope.id.indexOf(':');
83
+ if (separator <= 0)
84
+ continue;
85
+ const connector = scope.id.slice(0, separator);
86
+ const channelId = scope.id.slice(separator + 1);
87
+ if (channelId.length === 0)
88
+ continue;
89
+ const existing = scopedChannels.get(connector) ?? new Set();
90
+ existing.add(channelId);
91
+ scopedChannels.set(connector, existing);
92
+ }
93
+ const narrowed = {};
94
+ for (const [connector, channels] of Object.entries(configured)) {
95
+ if (!visibility.connectors.includes(connector))
96
+ continue;
97
+ const bound = scopedChannels.get(connector);
98
+ // A channel scope naming no configured channel leaves the connector with an empty
99
+ // grant, which reads nothing. That is the correct answer: the run is bound to a channel
100
+ // this system was not told to look at.
101
+ narrowed[connector] = bound ? channels.filter((channel) => bound.has(channel)) : channels;
102
+ }
103
+ return narrowed;
104
+ }
105
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/evidence/read.ts"],"names":[],"mappings":"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"}
@@ -5,14 +5,34 @@
5
5
  * Platform-specific behavior is implemented via abstract methods and properties.
6
6
  */
7
7
  import type { Gateway, GatewayEvent, GatewayEventHandler, GatewayConfig, MessageSource } from './types.js';
8
- import { MessageRouter } from './message-router.js';
8
+ import type { SessionDirectory, TurnProcessor } from './turn-contract.js';
9
9
  export interface BaseGatewayOptions {
10
- messageRouter: MessageRouter;
10
+ /**
11
+ * How a turn is processed. Required, because this is what a user-facing surface
12
+ * actually needs; the concrete router is an extra capability, not the dependency.
13
+ */
14
+ turnProcessor: TurnProcessor;
15
+ /**
16
+ * Optional, and narrow. Only surfaces that read session data for their own display
17
+ * concerns - naming a channel, listing what is active - ask for this. It is not a
18
+ * router: a surface that serves turns cannot reach past the contract through it.
19
+ */
20
+ sessionDirectory?: SessionDirectory;
11
21
  config?: Partial<GatewayConfig>;
12
22
  }
13
23
  export declare abstract class BaseGateway implements Gateway {
14
24
  abstract readonly source: MessageSource;
15
- protected messageRouter: MessageRouter;
25
+ protected sessionDirectory?: SessionDirectory;
26
+ /**
27
+ * The turn seam, shared by every user-facing surface.
28
+ *
29
+ * Telegram, Discord and Slack are ONE role - the place a person reaches the agent - so
30
+ * the boundary belongs here rather than to any one of them. Connectors are not turn
31
+ * sources at all; they are data the agent reads, and they never pass through here.
32
+ *
33
+ * Required: a surface that serves turns needs this and nothing else.
34
+ */
35
+ protected turnProcessor: TurnProcessor;
16
36
  protected eventHandlers: GatewayEventHandler[];
17
37
  protected connected: boolean;
18
38
  constructor(options: BaseGatewayOptions);
@@ -1 +1 @@
1
- {"version":3,"file":"base-gateway.d.ts","sourceRoot":"","sources":["../../src/gateways/base-gateway.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,8BAAsB,WAAY,YAAW,OAAO;IAClD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAExC,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,aAAa,EAAE,mBAAmB,EAAE,CAAM;IACpD,SAAS,CAAC,SAAS,UAAS;gBAEhB,OAAO,EAAE,kBAAkB;IAMvC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvF,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAIvD,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI3C,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAU9C,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIvD"}
1
+ {"version":3,"file":"base-gateway.d.ts","sourceRoot":"","sources":["../../src/gateways/base-gateway.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,OAAO,EACP,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,aAAa,EACd,MAAM,YAAY,CAAC;AAGpB,OAAO,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC;;;OAGG;IACH,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED,8BAAsB,WAAY,YAAW,OAAO;IAClD,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAExC,SAAS,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IAC9C;;;;;;;;OAQG;IACH,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,SAAS,CAAC,aAAa,EAAE,mBAAmB,EAAE,CAAM;IACpD,SAAS,CAAC,SAAS,UAAS;gBAEhB,OAAO,EAAE,kBAAkB;IASvC,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IACpE,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEvF,0EAA0E;IAC1E,SAAS,CAAC,QAAQ,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAAC;IAIvD,WAAW,IAAI,OAAO;IAItB,OAAO,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAI3C,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IAU9C,SAAS,CAAC,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAIvD"}
@@ -8,11 +8,24 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.BaseGateway = void 0;
10
10
  class BaseGateway {
11
- messageRouter;
11
+ sessionDirectory;
12
+ /**
13
+ * The turn seam, shared by every user-facing surface.
14
+ *
15
+ * Telegram, Discord and Slack are ONE role - the place a person reaches the agent - so
16
+ * the boundary belongs here rather than to any one of them. Connectors are not turn
17
+ * sources at all; they are data the agent reads, and they never pass through here.
18
+ *
19
+ * Required: a surface that serves turns needs this and nothing else.
20
+ */
21
+ turnProcessor;
12
22
  eventHandlers = [];
13
23
  connected = false;
14
24
  constructor(options) {
15
- this.messageRouter = options.messageRouter;
25
+ this.sessionDirectory = options.sessionDirectory;
26
+ // No adaptation, no cast: the contract is the dependency, so a caller that does not
27
+ // satisfy it is a compile error rather than something quietly wrapped at runtime.
28
+ this.turnProcessor = options.turnProcessor;
16
29
  }
17
30
  // === Common implementations ===
18
31
  isConnected() {
@@ -1 +1 @@
1
- {"version":3,"file":"base-gateway.js","sourceRoot":"","sources":["../../src/gateways/base-gateway.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAgBH,MAAsB,WAAW;IAGrB,aAAa,CAAgB;IAC7B,aAAa,GAA0B,EAAE,CAAC;IAC1C,SAAS,GAAG,KAAK,CAAC;IAE5B,YAAY,OAA2B;QACrC,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAYD,iCAAiC;IAEjC,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,OAA4B;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAES,SAAS,CAAC,KAAmB;QACrC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAES,mBAAmB,CAAC,OAAe;QAC3C,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;CACF;AA7CD,kCA6CC"}
1
+ {"version":3,"file":"base-gateway.js","sourceRoot":"","sources":["../../src/gateways/base-gateway.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AA4BH,MAAsB,WAAW;IAGrB,gBAAgB,CAAoB;IAC9C;;;;;;;;OAQG;IACO,aAAa,CAAgB;IAC7B,aAAa,GAA0B,EAAE,CAAC;IAC1C,SAAS,GAAG,KAAK,CAAC;IAE5B,YAAY,OAA2B;QACrC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACjD,oFAAoF;QACpF,kFAAkF;QAClF,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAC7C,CAAC;IAYD,iCAAiC;IAEjC,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,OAAO,CAAC,OAA4B;QAClC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAES,SAAS,CAAC,KAAmB;QACrC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,CAAC;gBACH,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;YAC1D,CAAC;QACH,CAAC;IACH,CAAC;IAES,mBAAmB,CAAC,OAAe;QAC3C,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC;QAChD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC;CACF;AA1DD,kCA0DC"}
@@ -7,10 +7,8 @@
7
7
  import { Message } from 'discord.js';
8
8
  import { BaseGateway } from './base-gateway.js';
9
9
  import type { DiscordGatewayConfig, DiscordGuildConfig, DiscordChannelConfig } from './types.js';
10
- import type { MessageRouter } from './message-router.js';
10
+ import type { SessionDirectory, TurnProcessor } from './turn-contract.js';
11
11
  import type { MultiAgentConfig } from '../cli/config/types.js';
12
- import type { MultiAgentRuntimeOptions } from '../multi-agent/types.js';
13
- import { MultiAgentDiscordHandler } from '../multi-agent/multi-agent-discord.js';
14
12
  /**
15
13
  * Discord Gateway options
16
14
  */
@@ -18,15 +16,15 @@ export interface DiscordGatewayOptions {
18
16
  /** Discord bot token */
19
17
  token: string;
20
18
  /** Message router for processing messages */
21
- messageRouter: MessageRouter;
19
+ turnProcessor: TurnProcessor;
20
+ /** Reading sessions to NAME channels is a display concern, asked for by name. */
21
+ sessionDirectory: SessionDirectory;
22
22
  /** Default channel ID for fallback message/file sends */
23
23
  defaultChannelId?: string;
24
24
  /** Gateway configuration */
25
25
  config?: Partial<DiscordGatewayConfig>;
26
26
  /** Multi-agent configuration (optional) */
27
27
  multiAgentConfig?: MultiAgentConfig;
28
- /** Multi-agent runtime backend options (optional) */
29
- multiAgentRuntime?: MultiAgentRuntimeOptions;
30
28
  }
31
29
  /**
32
30
  * Discord Gateway class
@@ -43,8 +41,6 @@ export declare class DiscordGateway extends BaseGateway {
43
41
  private lastEditTime;
44
42
  private pendingEdit;
45
43
  private editTimer;
46
- private multiAgentHandler;
47
- private multiAgentRuntime?;
48
44
  protected get mentionPattern(): RegExp | null;
49
45
  constructor(options: DiscordGatewayOptions);
50
46
  /**
@@ -136,13 +132,5 @@ export declare class DiscordGateway extends BaseGateway {
136
132
  * @deprecated Use sendFile instead
137
133
  */
138
134
  sendImage(channelId: string, imagePath: string, caption?: string): Promise<void>;
139
- /**
140
- * Get the multi-agent handler (if enabled)
141
- */
142
- getMultiAgentHandler(): MultiAgentDiscordHandler | null;
143
- /**
144
- * Update multi-agent configuration
145
- */
146
- setMultiAgentConfig(config: MultiAgentConfig): Promise<void>;
147
135
  }
148
136
  //# sourceMappingURL=discord.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/gateways/discord.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAIL,OAAO,EAIR,MAAM,YAAY,CAAC;AAKpB,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,KAAK,EAEV,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,EAGrB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,aAAa,EAAoB,MAAM,qBAAqB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AAejF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,aAAa,EAAE,aAAa,CAAC;IAC7B,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,4BAA4B;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACvC,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAoDD;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,WAAW;IAC7C,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;IAErC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,gBAAgB,CAAC,CAAS;IAGlC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAA+B;IAGhD,OAAO,CAAC,iBAAiB,CAAyC;IAClE,OAAO,CAAC,iBAAiB,CAAC,CAA2B;IAErD,SAAS,KAAK,cAAc,IAAI,MAAM,GAAG,IAAI,CAE5C;gBAEW,OAAO,EAAE,qBAAqB;IA+C1C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmE3B;;OAEG;YACW,aAAa;IA4H3B;;;;OAIG;YACW,eAAe;IAuF7B;;OAEG;YACW,kBAAkB;IAmGhC;;OAEG;YACW,eAAe;IA+J7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAoDrB;;OAEG;cACgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAO/D;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc5E;;OAEG;YACW,SAAS;IAQvB;;OAEG;YACW,YAAY;IA8E1B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAmB7B;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IA8C5B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAS5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA6B3B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,IAAI;IAStD;;OAEG;IACH,SAAS,IAAI,oBAAoB;IAIjC;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAKjE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB,GAAG,IAAI;YAS1E,kBAAkB;IAoDhC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAapE;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpF;;;OAGG;IACG,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAItF;;OAEG;IACH,oBAAoB,IAAI,wBAAwB,GAAG,IAAI;IAIvD;;OAEG;IACG,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CA4BnE"}
1
+ {"version":3,"file":"discord.d.ts","sourceRoot":"","sources":["../../src/gateways/discord.ts"],"names":[],"mappings":"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"}