@theowlops/boombot 0.0.0-stage → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. package/README.md +69 -3
  2. package/dist/LICENSE +21 -0
  3. package/dist/bin/boombot.js +16 -0
  4. package/dist/cli/api-key.js +123 -0
  5. package/dist/cli/bin-bun.js +17 -0
  6. package/dist/cli/bin.js +34 -0
  7. package/dist/cli/cli/cli-error.js +61 -0
  8. package/dist/cli/cli/dispatch.js +138 -0
  9. package/dist/cli/cli/help.js +83 -0
  10. package/dist/cli/cli/parser.js +89 -0
  11. package/dist/cli/cli/registry.js +185 -0
  12. package/dist/cli/cli/spec.js +41 -0
  13. package/dist/cli/cli/suggest.js +125 -0
  14. package/dist/cli/cli/version.js +30 -0
  15. package/dist/cli/cli/vocabulary.js +87 -0
  16. package/dist/cli/commands/doctor.js +365 -0
  17. package/dist/cli/commands/gateway.js +290 -0
  18. package/dist/cli/commands/migrate.js +270 -0
  19. package/dist/cli/commands/plugin.js +97 -0
  20. package/dist/cli/commands/setup.js +230 -0
  21. package/dist/cli/config-file.js +133 -0
  22. package/dist/cli/master-key.js +78 -0
  23. package/dist/cli/open-browser.js +59 -0
  24. package/dist/cli/web-assets.js +58 -0
  25. package/dist/gateway/auth.js +46 -0
  26. package/dist/gateway/config-format.js +202 -0
  27. package/dist/gateway/config.js +427 -0
  28. package/dist/gateway/context.js +1 -0
  29. package/dist/gateway/env-file.js +129 -0
  30. package/dist/gateway/events.js +172 -0
  31. package/dist/gateway/guard/tagging.js +505 -0
  32. package/dist/gateway/handlers/index.js +66 -0
  33. package/dist/gateway/handlers/memory.js +54 -0
  34. package/dist/gateway/handlers/providers.js +73 -0
  35. package/dist/gateway/handlers/registry.js +39 -0
  36. package/dist/gateway/handlers/sessions.js +188 -0
  37. package/dist/gateway/handlers/system.js +12 -0
  38. package/dist/gateway/handlers/tasks.js +191 -0
  39. package/dist/gateway/handlers/turn.js +100 -0
  40. package/dist/gateway/index.js +126 -0
  41. package/dist/gateway/main.js +23 -0
  42. package/dist/gateway/server.js +354 -0
  43. package/dist/gateway/services/context-limits.js +75 -0
  44. package/dist/gateway/services/history-normalizer.js +42 -0
  45. package/dist/gateway/services/image-pipeline.js +56 -0
  46. package/dist/gateway/services/key-roulette-client.js +43 -0
  47. package/dist/gateway/services/llm-client.js +593 -0
  48. package/dist/gateway/services/llm-decoder.js +200 -0
  49. package/dist/gateway/services/local-fallback.js +135 -0
  50. package/dist/gateway/services/memory.js +511 -0
  51. package/dist/gateway/services/persistent-memory.js +196 -0
  52. package/dist/gateway/services/providers.js +44 -0
  53. package/dist/gateway/services/tasks.js +237 -0
  54. package/dist/gateway/services/verification.js +124 -0
  55. package/dist/gateway/services/vision-payload.js +48 -0
  56. package/dist/gateway/services.js +257 -0
  57. package/dist/gateway/session-snapshot.js +19 -0
  58. package/dist/gateway/sessions.js +701 -0
  59. package/dist/gateway/static.js +239 -0
  60. package/dist/gateway/turns/clarify-tool.js +57 -0
  61. package/dist/gateway/turns/cronjob-tool.js +96 -0
  62. package/dist/gateway/turns/deferred-tools.js +154 -0
  63. package/dist/gateway/turns/execute-code-tool.js +84 -0
  64. package/dist/gateway/turns/file-tool-defs.js +178 -0
  65. package/dist/gateway/turns/file-tool-ops.js +178 -0
  66. package/dist/gateway/turns/file-tool-scan.js +182 -0
  67. package/dist/gateway/turns/file-tool.js +302 -0
  68. package/dist/gateway/turns/index.js +416 -0
  69. package/dist/gateway/turns/jev-middleware.js +91 -0
  70. package/dist/gateway/turns/local-reply.js +156 -0
  71. package/dist/gateway/turns/mcp-client.js +643 -0
  72. package/dist/gateway/turns/memory-tool.js +171 -0
  73. package/dist/gateway/turns/middleware.js +96 -0
  74. package/dist/gateway/turns/python-core.js +397 -0
  75. package/dist/gateway/turns/routing/index.js +3 -0
  76. package/dist/gateway/turns/routing/intent-classifier.js +60 -0
  77. package/dist/gateway/turns/routing/planner-adapter.js +91 -0
  78. package/dist/gateway/turns/routing/types.js +1 -0
  79. package/dist/gateway/turns/runtime-deps.js +228 -0
  80. package/dist/gateway/turns/self-config-tool.js +277 -0
  81. package/dist/gateway/turns/service-types.js +11 -0
  82. package/dist/gateway/turns/service.js +820 -0
  83. package/dist/gateway/turns/session-adapter.js +158 -0
  84. package/dist/gateway/turns/session-tool.js +49 -0
  85. package/dist/gateway/turns/shell-tool.js +190 -0
  86. package/dist/gateway/turns/skill-tool.js +239 -0
  87. package/dist/gateway/turns/spillover.js +201 -0
  88. package/dist/gateway/turns/subagent-tool.js +140 -0
  89. package/dist/gateway/turns/system-prompt.js +121 -0
  90. package/dist/gateway/turns/tool-schema.js +90 -0
  91. package/dist/gateway/turns/turn-utils.js +58 -0
  92. package/dist/gateway/turns/vision-tool.js +120 -0
  93. package/dist/gateway/types.js +1 -0
  94. package/dist/native/win32-x64/boombot-native-host.exe +0 -0
  95. package/dist/node_modules/@boombot/channels/handlers.d.ts +9 -0
  96. package/dist/node_modules/@boombot/channels/handlers.js +109 -0
  97. package/dist/node_modules/@boombot/channels/index.d.ts +12 -0
  98. package/dist/node_modules/@boombot/channels/index.js +12 -0
  99. package/dist/node_modules/@boombot/channels/package.json +9 -0
  100. package/dist/node_modules/@boombot/channels/service.d.ts +62 -0
  101. package/dist/node_modules/@boombot/channels/service.js +608 -0
  102. package/dist/node_modules/@boombot/channels/tool.d.ts +10 -0
  103. package/dist/node_modules/@boombot/channels/tool.js +46 -0
  104. package/dist/node_modules/@boombot/channels/transports/common/dedup.d.ts +17 -0
  105. package/dist/node_modules/@boombot/channels/transports/common/dedup.js +42 -0
  106. package/dist/node_modules/@boombot/channels/transports/common/handoff.d.ts +19 -0
  107. package/dist/node_modules/@boombot/channels/transports/common/handoff.js +32 -0
  108. package/dist/node_modules/@boombot/channels/transports/common/index.d.ts +3 -0
  109. package/dist/node_modules/@boombot/channels/transports/common/index.js +3 -0
  110. package/dist/node_modules/@boombot/channels/transports/common/types.d.ts +99 -0
  111. package/dist/node_modules/@boombot/channels/transports/common/types.js +54 -0
  112. package/dist/node_modules/@boombot/channels/transports/common.d.ts +2 -0
  113. package/dist/node_modules/@boombot/channels/transports/common.js +2 -0
  114. package/dist/node_modules/@boombot/channels/transports/dedup/index.d.ts +1 -0
  115. package/dist/node_modules/@boombot/channels/transports/dedup/index.js +1 -0
  116. package/dist/node_modules/@boombot/channels/transports/dedup.d.ts +2 -0
  117. package/dist/node_modules/@boombot/channels/transports/dedup.js +2 -0
  118. package/dist/node_modules/@boombot/channels/transports/discord/index.d.ts +1 -0
  119. package/dist/node_modules/@boombot/channels/transports/discord/index.js +1 -0
  120. package/dist/node_modules/@boombot/channels/transports/discord/transport.d.ts +36 -0
  121. package/dist/node_modules/@boombot/channels/transports/discord/transport.js +199 -0
  122. package/dist/node_modules/@boombot/channels/transports/discord.d.ts +2 -0
  123. package/dist/node_modules/@boombot/channels/transports/discord.js +2 -0
  124. package/dist/node_modules/@boombot/channels/transports/handoff.d.ts +2 -0
  125. package/dist/node_modules/@boombot/channels/transports/handoff.js +2 -0
  126. package/dist/node_modules/@boombot/channels/transports/messenger/index.d.ts +1 -0
  127. package/dist/node_modules/@boombot/channels/transports/messenger/index.js +1 -0
  128. package/dist/node_modules/@boombot/channels/transports/messenger/transport.d.ts +34 -0
  129. package/dist/node_modules/@boombot/channels/transports/messenger/transport.js +180 -0
  130. package/dist/node_modules/@boombot/channels/transports/messenger.d.ts +2 -0
  131. package/dist/node_modules/@boombot/channels/transports/messenger.js +2 -0
  132. package/dist/node_modules/@boombot/channels/transports/slack/index.d.ts +1 -0
  133. package/dist/node_modules/@boombot/channels/transports/slack/index.js +1 -0
  134. package/dist/node_modules/@boombot/channels/transports/slack/transport.d.ts +35 -0
  135. package/dist/node_modules/@boombot/channels/transports/slack/transport.js +183 -0
  136. package/dist/node_modules/@boombot/channels/transports/slack.d.ts +2 -0
  137. package/dist/node_modules/@boombot/channels/transports/slack.js +2 -0
  138. package/dist/node_modules/@boombot/channels/transports/streamer/index.d.ts +1 -0
  139. package/dist/node_modules/@boombot/channels/transports/streamer/index.js +1 -0
  140. package/dist/node_modules/@boombot/channels/transports/streamer/streamer.d.ts +31 -0
  141. package/dist/node_modules/@boombot/channels/transports/streamer/streamer.js +141 -0
  142. package/dist/node_modules/@boombot/channels/transports/streamer.d.ts +2 -0
  143. package/dist/node_modules/@boombot/channels/transports/streamer.js +2 -0
  144. package/dist/node_modules/@boombot/channels/transports/telegram/index.d.ts +1 -0
  145. package/dist/node_modules/@boombot/channels/transports/telegram/index.js +1 -0
  146. package/dist/node_modules/@boombot/channels/transports/telegram/transport.d.ts +75 -0
  147. package/dist/node_modules/@boombot/channels/transports/telegram/transport.js +395 -0
  148. package/dist/node_modules/@boombot/channels/transports/telegram.d.ts +2 -0
  149. package/dist/node_modules/@boombot/channels/transports/telegram.js +2 -0
  150. package/dist/node_modules/@boombot/channels/transports/tiktok/index.d.ts +1 -0
  151. package/dist/node_modules/@boombot/channels/transports/tiktok/index.js +1 -0
  152. package/dist/node_modules/@boombot/channels/transports/tiktok/transport.d.ts +27 -0
  153. package/dist/node_modules/@boombot/channels/transports/tiktok/transport.js +97 -0
  154. package/dist/node_modules/@boombot/channels/transports/tiktok.d.ts +2 -0
  155. package/dist/node_modules/@boombot/channels/transports/tiktok.js +2 -0
  156. package/dist/node_modules/@boombot/channels/transports/whatsapp/index.d.ts +1 -0
  157. package/dist/node_modules/@boombot/channels/transports/whatsapp/index.js +1 -0
  158. package/dist/node_modules/@boombot/channels/transports/whatsapp/transport.d.ts +38 -0
  159. package/dist/node_modules/@boombot/channels/transports/whatsapp/transport.js +189 -0
  160. package/dist/node_modules/@boombot/channels/transports/whatsapp.d.ts +2 -0
  161. package/dist/node_modules/@boombot/channels/transports/whatsapp.js +2 -0
  162. package/dist/node_modules/@boombot/channels/transports/zalo/index.d.ts +2 -0
  163. package/dist/node_modules/@boombot/channels/transports/zalo/index.js +2 -0
  164. package/dist/node_modules/@boombot/channels/transports/zalo/oa.d.ts +28 -0
  165. package/dist/node_modules/@boombot/channels/transports/zalo/oa.js +94 -0
  166. package/dist/node_modules/@boombot/channels/transports/zalo/personal.d.ts +106 -0
  167. package/dist/node_modules/@boombot/channels/transports/zalo/personal.js +171 -0
  168. package/dist/node_modules/@boombot/channels/transports/zalo-personal.d.ts +2 -0
  169. package/dist/node_modules/@boombot/channels/transports/zalo-personal.js +2 -0
  170. package/dist/node_modules/@boombot/channels/transports/zalo.d.ts +2 -0
  171. package/dist/node_modules/@boombot/channels/transports/zalo.js +2 -0
  172. package/dist/node_modules/@boombot/core/agent-core/index.d.ts +12 -0
  173. package/dist/node_modules/@boombot/core/agent-core/index.js +12 -0
  174. package/dist/node_modules/@boombot/core/agent-core/middleware.d.ts +60 -0
  175. package/dist/node_modules/@boombot/core/agent-core/middleware.js +152 -0
  176. package/dist/node_modules/@boombot/core/agent-core/routing.d.ts +128 -0
  177. package/dist/node_modules/@boombot/core/agent-core/routing.js +437 -0
  178. package/dist/node_modules/@boombot/core/agent-core/runtime-deps.d.ts +88 -0
  179. package/dist/node_modules/@boombot/core/agent-core/runtime-deps.js +8 -0
  180. package/dist/node_modules/@boombot/core/agent-core/tool-errors.d.ts +44 -0
  181. package/dist/node_modules/@boombot/core/agent-core/tool-errors.js +60 -0
  182. package/dist/node_modules/@boombot/core/agent-core/turn-loop.d.ts +21 -0
  183. package/dist/node_modules/@boombot/core/agent-core/turn-loop.js +561 -0
  184. package/dist/node_modules/@boombot/core/agent-core/types.d.ts +189 -0
  185. package/dist/node_modules/@boombot/core/agent-core/types.js +7 -0
  186. package/dist/node_modules/@boombot/core/compaction/compactor.d.ts +19 -0
  187. package/dist/node_modules/@boombot/core/compaction/compactor.js +127 -0
  188. package/dist/node_modules/@boombot/core/compaction/estimator.d.ts +10 -0
  189. package/dist/node_modules/@boombot/core/compaction/estimator.js +48 -0
  190. package/dist/node_modules/@boombot/core/compaction/index.d.ts +3 -0
  191. package/dist/node_modules/@boombot/core/compaction/index.js +3 -0
  192. package/dist/node_modules/@boombot/core/compaction/types.d.ts +31 -0
  193. package/dist/node_modules/@boombot/core/compaction/types.js +7 -0
  194. package/dist/node_modules/@boombot/core/index.d.ts +9 -0
  195. package/dist/node_modules/@boombot/core/index.js +9 -0
  196. package/dist/node_modules/@boombot/core/jev/index.d.ts +2 -0
  197. package/dist/node_modules/@boombot/core/jev/index.js +2 -0
  198. package/dist/node_modules/@boombot/core/jev/jev.d.ts +30 -0
  199. package/dist/node_modules/@boombot/core/jev/jev.js +164 -0
  200. package/dist/node_modules/@boombot/core/jev/types.d.ts +22 -0
  201. package/dist/node_modules/@boombot/core/jev/types.js +1 -0
  202. package/dist/node_modules/@boombot/core/memory/consolidation/budget.d.ts +63 -0
  203. package/dist/node_modules/@boombot/core/memory/consolidation/budget.js +94 -0
  204. package/dist/node_modules/@boombot/core/memory/consolidation/consolidator.d.ts +152 -0
  205. package/dist/node_modules/@boombot/core/memory/consolidation/consolidator.js +318 -0
  206. package/dist/node_modules/@boombot/core/memory/consolidation/index.d.ts +12 -0
  207. package/dist/node_modules/@boombot/core/memory/consolidation/index.js +12 -0
  208. package/dist/node_modules/@boombot/core/memory/curation.d.ts +86 -0
  209. package/dist/node_modules/@boombot/core/memory/curation.js +120 -0
  210. package/dist/node_modules/@boombot/core/memory/errors.d.ts +12 -0
  211. package/dist/node_modules/@boombot/core/memory/errors.js +20 -0
  212. package/dist/node_modules/@boombot/core/memory/hybrid-search.d.ts +29 -0
  213. package/dist/node_modules/@boombot/core/memory/hybrid-search.js +52 -0
  214. package/dist/node_modules/@boombot/core/memory/index.d.ts +23 -0
  215. package/dist/node_modules/@boombot/core/memory/index.js +23 -0
  216. package/dist/node_modules/@boombot/core/memory/indexer.d.ts +47 -0
  217. package/dist/node_modules/@boombot/core/memory/indexer.js +138 -0
  218. package/dist/node_modules/@boombot/core/memory/lifecycle.d.ts +12 -0
  219. package/dist/node_modules/@boombot/core/memory/lifecycle.js +66 -0
  220. package/dist/node_modules/@boombot/core/memory/provider.d.ts +84 -0
  221. package/dist/node_modules/@boombot/core/memory/provider.js +117 -0
  222. package/dist/node_modules/@boombot/core/memory/recall.d.ts +7 -0
  223. package/dist/node_modules/@boombot/core/memory/recall.js +111 -0
  224. package/dist/node_modules/@boombot/core/memory/scope-resolver.d.ts +27 -0
  225. package/dist/node_modules/@boombot/core/memory/scope-resolver.js +60 -0
  226. package/dist/node_modules/@boombot/core/memory/search.d.ts +37 -0
  227. package/dist/node_modules/@boombot/core/memory/search.js +158 -0
  228. package/dist/node_modules/@boombot/core/memory/store.d.ts +60 -0
  229. package/dist/node_modules/@boombot/core/memory/store.js +289 -0
  230. package/dist/node_modules/@boombot/core/memory/types.d.ts +121 -0
  231. package/dist/node_modules/@boombot/core/memory/types.js +21 -0
  232. package/dist/node_modules/@boombot/core/memory/vector-index.d.ts +34 -0
  233. package/dist/node_modules/@boombot/core/memory/vector-index.js +65 -0
  234. package/dist/node_modules/@boombot/core/package.json +9 -0
  235. package/dist/node_modules/@boombot/core/reflection/classifier.d.ts +13 -0
  236. package/dist/node_modules/@boombot/core/reflection/classifier.js +77 -0
  237. package/dist/node_modules/@boombot/core/reflection/index.d.ts +2 -0
  238. package/dist/node_modules/@boombot/core/reflection/index.js +2 -0
  239. package/dist/node_modules/@boombot/core/reflection/types.d.ts +13 -0
  240. package/dist/node_modules/@boombot/core/reflection/types.js +4 -0
  241. package/dist/node_modules/@boombot/core/research/config.d.ts +89 -0
  242. package/dist/node_modules/@boombot/core/research/config.js +206 -0
  243. package/dist/node_modules/@boombot/core/research/crawl.d.ts +36 -0
  244. package/dist/node_modules/@boombot/core/research/crawl.js +179 -0
  245. package/dist/node_modules/@boombot/core/research/factory.d.ts +26 -0
  246. package/dist/node_modules/@boombot/core/research/factory.js +46 -0
  247. package/dist/node_modules/@boombot/core/research/http.d.ts +87 -0
  248. package/dist/node_modules/@boombot/core/research/http.js +250 -0
  249. package/dist/node_modules/@boombot/core/research/index.d.ts +17 -0
  250. package/dist/node_modules/@boombot/core/research/index.js +10 -0
  251. package/dist/node_modules/@boombot/core/research/orchestrator.d.ts +113 -0
  252. package/dist/node_modules/@boombot/core/research/orchestrator.js +252 -0
  253. package/dist/node_modules/@boombot/core/research/parse/docx.d.ts +24 -0
  254. package/dist/node_modules/@boombot/core/research/parse/docx.js +183 -0
  255. package/dist/node_modules/@boombot/core/research/parse/guards.d.ts +89 -0
  256. package/dist/node_modules/@boombot/core/research/parse/guards.js +171 -0
  257. package/dist/node_modules/@boombot/core/research/parse/index.d.ts +68 -0
  258. package/dist/node_modules/@boombot/core/research/parse/index.js +219 -0
  259. package/dist/node_modules/@boombot/core/research/parse/pdf.d.ts +38 -0
  260. package/dist/node_modules/@boombot/core/research/parse/pdf.js +567 -0
  261. package/dist/node_modules/@boombot/core/research/providers/arxiv.d.ts +9 -0
  262. package/dist/node_modules/@boombot/core/research/providers/arxiv.js +72 -0
  263. package/dist/node_modules/@boombot/core/research/providers/brave.d.ts +11 -0
  264. package/dist/node_modules/@boombot/core/research/providers/brave.js +36 -0
  265. package/dist/node_modules/@boombot/core/research/providers/duckduckgo.d.ts +9 -0
  266. package/dist/node_modules/@boombot/core/research/providers/duckduckgo.js +78 -0
  267. package/dist/node_modules/@boombot/core/research/providers/exa.d.ts +11 -0
  268. package/dist/node_modules/@boombot/core/research/providers/exa.js +34 -0
  269. package/dist/node_modules/@boombot/core/research/providers/firecrawl.d.ts +16 -0
  270. package/dist/node_modules/@boombot/core/research/providers/firecrawl.js +47 -0
  271. package/dist/node_modules/@boombot/core/research/providers/index.d.ts +17 -0
  272. package/dist/node_modules/@boombot/core/research/providers/index.js +11 -0
  273. package/dist/node_modules/@boombot/core/research/providers/jina.d.ts +13 -0
  274. package/dist/node_modules/@boombot/core/research/providers/jina.js +114 -0
  275. package/dist/node_modules/@boombot/core/research/providers/openalex.d.ts +14 -0
  276. package/dist/node_modules/@boombot/core/research/providers/openalex.js +66 -0
  277. package/dist/node_modules/@boombot/core/research/providers/semantic-scholar.d.ts +9 -0
  278. package/dist/node_modules/@boombot/core/research/providers/semantic-scholar.js +56 -0
  279. package/dist/node_modules/@boombot/core/research/providers/tavily.d.ts +11 -0
  280. package/dist/node_modules/@boombot/core/research/providers/tavily.js +35 -0
  281. package/dist/node_modules/@boombot/core/research/providers/wikipedia.d.ts +12 -0
  282. package/dist/node_modules/@boombot/core/research/providers/wikipedia.js +47 -0
  283. package/dist/node_modules/@boombot/core/research/tools.d.ts +27 -0
  284. package/dist/node_modules/@boombot/core/research/tools.js +251 -0
  285. package/dist/node_modules/@boombot/core/research/types.d.ts +133 -0
  286. package/dist/node_modules/@boombot/core/research/types.js +8 -0
  287. package/dist/node_modules/@boombot/core/research/wiring.d.ts +25 -0
  288. package/dist/node_modules/@boombot/core/research/wiring.js +51 -0
  289. package/dist/node_modules/@boombot/core/scheduler/cron.d.ts +34 -0
  290. package/dist/node_modules/@boombot/core/scheduler/cron.js +147 -0
  291. package/dist/node_modules/@boombot/core/scheduler/evaluator.d.ts +42 -0
  292. package/dist/node_modules/@boombot/core/scheduler/evaluator.js +148 -0
  293. package/dist/node_modules/@boombot/core/scheduler/index.d.ts +15 -0
  294. package/dist/node_modules/@boombot/core/scheduler/index.js +15 -0
  295. package/dist/node_modules/@boombot/core/scheduler/registry.d.ts +81 -0
  296. package/dist/node_modules/@boombot/core/scheduler/registry.js +263 -0
  297. package/dist/node_modules/@boombot/core/scheduler/runner.d.ts +59 -0
  298. package/dist/node_modules/@boombot/core/scheduler/runner.js +257 -0
  299. package/dist/node_modules/@boombot/core/scheduler/store.d.ts +150 -0
  300. package/dist/node_modules/@boombot/core/scheduler/store.js +526 -0
  301. package/dist/node_modules/@boombot/core/scheduler/timezone.d.ts +35 -0
  302. package/dist/node_modules/@boombot/core/scheduler/timezone.js +96 -0
  303. package/dist/node_modules/@boombot/core/scheduler/types.d.ts +157 -0
  304. package/dist/node_modules/@boombot/core/scheduler/types.js +89 -0
  305. package/dist/node_modules/@boombot/core/task-runner/index.d.ts +7 -0
  306. package/dist/node_modules/@boombot/core/task-runner/index.js +5 -0
  307. package/dist/node_modules/@boombot/core/task-runner/planner.d.ts +37 -0
  308. package/dist/node_modules/@boombot/core/task-runner/planner.js +154 -0
  309. package/dist/node_modules/@boombot/core/task-runner/runner.d.ts +8 -0
  310. package/dist/node_modules/@boombot/core/task-runner/runner.js +564 -0
  311. package/dist/node_modules/@boombot/core/task-runner/store.d.ts +28 -0
  312. package/dist/node_modules/@boombot/core/task-runner/store.js +126 -0
  313. package/dist/node_modules/@boombot/core/task-runner/types.d.ts +138 -0
  314. package/dist/node_modules/@boombot/core/task-runner/types.js +11 -0
  315. package/dist/node_modules/@boombot/core/workflow/dag.d.ts +16 -0
  316. package/dist/node_modules/@boombot/core/workflow/dag.js +109 -0
  317. package/dist/node_modules/@boombot/core/workflow/engine.d.ts +34 -0
  318. package/dist/node_modules/@boombot/core/workflow/engine.js +304 -0
  319. package/dist/node_modules/@boombot/core/workflow/index.d.ts +3 -0
  320. package/dist/node_modules/@boombot/core/workflow/index.js +3 -0
  321. package/dist/node_modules/@boombot/core/workflow/types.d.ts +98 -0
  322. package/dist/node_modules/@boombot/core/workflow/types.js +21 -0
  323. package/dist/node_modules/@boombot/cronjobs/handlers.d.ts +11 -0
  324. package/dist/node_modules/@boombot/cronjobs/handlers.js +174 -0
  325. package/dist/node_modules/@boombot/cronjobs/index.d.ts +2 -0
  326. package/dist/node_modules/@boombot/cronjobs/index.js +2 -0
  327. package/dist/node_modules/@boombot/cronjobs/package.json +9 -0
  328. package/dist/node_modules/@boombot/cronjobs/service.d.ts +53 -0
  329. package/dist/node_modules/@boombot/cronjobs/service.js +200 -0
  330. package/dist/node_modules/@boombot/plugins/index.d.ts +2 -0
  331. package/dist/node_modules/@boombot/plugins/index.js +2 -0
  332. package/dist/node_modules/@boombot/plugins/installer.d.ts +45 -0
  333. package/dist/node_modules/@boombot/plugins/installer.js +487 -0
  334. package/dist/node_modules/@boombot/plugins/manager.d.ts +23 -0
  335. package/dist/node_modules/@boombot/plugins/manager.js +243 -0
  336. package/dist/node_modules/@boombot/plugins/package.json +9 -0
  337. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-channels.d.ts +125 -0
  338. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-channels.js +76 -0
  339. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-plugins.d.ts +220 -0
  340. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-plugins.js +60 -0
  341. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-scheduler.d.ts +33 -0
  342. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-scheduler.js +25 -0
  343. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands.d.ts +4349 -0
  344. package/dist/node_modules/@boombot/protocol/gateway-protocol/commands.js +563 -0
  345. package/dist/node_modules/@boombot/protocol/gateway-protocol/envelope.d.ts +32 -0
  346. package/dist/node_modules/@boombot/protocol/gateway-protocol/envelope.js +61 -0
  347. package/dist/node_modules/@boombot/protocol/gateway-protocol/errors.d.ts +13 -0
  348. package/dist/node_modules/@boombot/protocol/gateway-protocol/errors.js +16 -0
  349. package/dist/node_modules/@boombot/protocol/gateway-protocol/events.d.ts +567 -0
  350. package/dist/node_modules/@boombot/protocol/gateway-protocol/events.js +395 -0
  351. package/dist/node_modules/@boombot/protocol/gateway-protocol/index.d.ts +20 -0
  352. package/dist/node_modules/@boombot/protocol/gateway-protocol/index.js +13 -0
  353. package/dist/node_modules/@boombot/protocol/gateway-protocol/types.d.ts +91 -0
  354. package/dist/node_modules/@boombot/protocol/gateway-protocol/types.js +7 -0
  355. package/dist/node_modules/@boombot/protocol/index.d.ts +4 -0
  356. package/dist/node_modules/@boombot/protocol/index.js +3 -0
  357. package/dist/node_modules/@boombot/protocol/package.json +9 -0
  358. package/dist/node_modules/@boombot/protocol/plugin-sdk/channel.d.ts +41 -0
  359. package/dist/node_modules/@boombot/protocol/plugin-sdk/channel.js +17 -0
  360. package/dist/node_modules/@boombot/protocol/plugin-sdk/index.d.ts +10 -0
  361. package/dist/node_modules/@boombot/protocol/plugin-sdk/index.js +10 -0
  362. package/dist/node_modules/@boombot/protocol/plugin-sdk/manifest.d.ts +58 -0
  363. package/dist/node_modules/@boombot/protocol/plugin-sdk/manifest.js +116 -0
  364. package/dist/node_modules/@boombot/protocol/plugin-sdk/plugin.d.ts +25 -0
  365. package/dist/node_modules/@boombot/protocol/plugin-sdk/plugin.js +1 -0
  366. package/dist/node_modules/@boombot/protocol/providers/cipher.d.ts +7 -0
  367. package/dist/node_modules/@boombot/protocol/providers/cipher.js +52 -0
  368. package/dist/node_modules/@boombot/protocol/providers/index.d.ts +19 -0
  369. package/dist/node_modules/@boombot/protocol/providers/index.js +19 -0
  370. package/dist/node_modules/@boombot/protocol/providers/key-roulette.d.ts +79 -0
  371. package/dist/node_modules/@boombot/protocol/providers/key-roulette.js +81 -0
  372. package/dist/node_modules/@boombot/protocol/providers/probe.d.ts +29 -0
  373. package/dist/node_modules/@boombot/protocol/providers/probe.js +96 -0
  374. package/dist/node_modules/@boombot/protocol/providers/profiles/anthropic.d.ts +11 -0
  375. package/dist/node_modules/@boombot/protocol/providers/profiles/anthropic.js +11 -0
  376. package/dist/node_modules/@boombot/protocol/providers/profiles/custom.d.ts +22 -0
  377. package/dist/node_modules/@boombot/protocol/providers/profiles/custom.js +222 -0
  378. package/dist/node_modules/@boombot/protocol/providers/profiles/deepseek.d.ts +7 -0
  379. package/dist/node_modules/@boombot/protocol/providers/profiles/deepseek.js +9 -0
  380. package/dist/node_modules/@boombot/protocol/providers/profiles/google.d.ts +10 -0
  381. package/dist/node_modules/@boombot/protocol/providers/profiles/google.js +10 -0
  382. package/dist/node_modules/@boombot/protocol/providers/profiles/index.d.ts +31 -0
  383. package/dist/node_modules/@boombot/protocol/providers/profiles/index.js +56 -0
  384. package/dist/node_modules/@boombot/protocol/providers/profiles/local.d.ts +10 -0
  385. package/dist/node_modules/@boombot/protocol/providers/profiles/local.js +11 -0
  386. package/dist/node_modules/@boombot/protocol/providers/profiles/mistral.d.ts +7 -0
  387. package/dist/node_modules/@boombot/protocol/providers/profiles/mistral.js +9 -0
  388. package/dist/node_modules/@boombot/protocol/providers/profiles/openai-compatible.d.ts +10 -0
  389. package/dist/node_modules/@boombot/protocol/providers/profiles/openai-compatible.js +10 -0
  390. package/dist/node_modules/@boombot/protocol/providers/profiles/openai.d.ts +7 -0
  391. package/dist/node_modules/@boombot/protocol/providers/profiles/openai.js +11 -0
  392. package/dist/node_modules/@boombot/protocol/providers/profiles/types.d.ts +58 -0
  393. package/dist/node_modules/@boombot/protocol/providers/profiles/types.js +1 -0
  394. package/dist/node_modules/@boombot/protocol/providers/profiles/xai.d.ts +7 -0
  395. package/dist/node_modules/@boombot/protocol/providers/profiles/xai.js +10 -0
  396. package/dist/node_modules/@boombot/protocol/providers/request-profile.d.ts +102 -0
  397. package/dist/node_modules/@boombot/protocol/providers/request-profile.js +118 -0
  398. package/dist/node_modules/@boombot/protocol/providers/service.d.ts +2 -0
  399. package/dist/node_modules/@boombot/protocol/providers/service.js +418 -0
  400. package/dist/node_modules/@boombot/protocol/providers/types.d.ts +141 -0
  401. package/dist/node_modules/@boombot/protocol/providers/types.js +16 -0
  402. package/dist/node_modules/@boombot/sandbox/fs-path.d.ts +13 -0
  403. package/dist/node_modules/@boombot/sandbox/fs-path.js +79 -0
  404. package/dist/node_modules/@boombot/sandbox/index.d.ts +13 -0
  405. package/dist/node_modules/@boombot/sandbox/index.js +13 -0
  406. package/dist/node_modules/@boombot/sandbox/native.d.ts +39 -0
  407. package/dist/node_modules/@boombot/sandbox/native.js +224 -0
  408. package/dist/node_modules/@boombot/sandbox/package.json +9 -0
  409. package/dist/node_modules/@boombot/sandbox/sandbox.d.ts +92 -0
  410. package/dist/node_modules/@boombot/sandbox/sandbox.js +229 -0
  411. package/dist/node_modules/@boombot/security/harness-guard/boundary.d.ts +22 -0
  412. package/dist/node_modules/@boombot/security/harness-guard/boundary.js +105 -0
  413. package/dist/node_modules/@boombot/security/harness-guard/gates.d.ts +90 -0
  414. package/dist/node_modules/@boombot/security/harness-guard/gates.js +791 -0
  415. package/dist/node_modules/@boombot/security/harness-guard/index.d.ts +23 -0
  416. package/dist/node_modules/@boombot/security/harness-guard/index.js +23 -0
  417. package/dist/node_modules/@boombot/security/harness-guard/policy.d.ts +20 -0
  418. package/dist/node_modules/@boombot/security/harness-guard/policy.js +70 -0
  419. package/dist/node_modules/@boombot/security/harness-guard/sanitizer.d.ts +53 -0
  420. package/dist/node_modules/@boombot/security/harness-guard/sanitizer.js +145 -0
  421. package/dist/node_modules/@boombot/security/harness-guard/types.d.ts +71 -0
  422. package/dist/node_modules/@boombot/security/harness-guard/types.js +10 -0
  423. package/dist/node_modules/@boombot/security/harness-guard/verifier.d.ts +59 -0
  424. package/dist/node_modules/@boombot/security/harness-guard/verifier.js +169 -0
  425. package/dist/node_modules/@boombot/security/index.d.ts +5 -0
  426. package/dist/node_modules/@boombot/security/index.js +9 -0
  427. package/dist/node_modules/@boombot/security/package.json +9 -0
  428. package/dist/node_modules/@boombot/security/policy/approval.d.ts +117 -0
  429. package/dist/node_modules/@boombot/security/policy/approval.js +223 -0
  430. package/dist/node_modules/@boombot/security/reasoning-guard/claim-extractor.d.ts +10 -0
  431. package/dist/node_modules/@boombot/security/reasoning-guard/claim-extractor.js +124 -0
  432. package/dist/node_modules/@boombot/security/reasoning-guard/evidence-ledger.d.ts +25 -0
  433. package/dist/node_modules/@boombot/security/reasoning-guard/evidence-ledger.js +70 -0
  434. package/dist/node_modules/@boombot/security/reasoning-guard/gate.d.ts +38 -0
  435. package/dist/node_modules/@boombot/security/reasoning-guard/gate.js +61 -0
  436. package/dist/node_modules/@boombot/security/reasoning-guard/grounding-check.d.ts +12 -0
  437. package/dist/node_modules/@boombot/security/reasoning-guard/grounding-check.js +234 -0
  438. package/dist/node_modules/@boombot/security/reasoning-guard/index.d.ts +17 -0
  439. package/dist/node_modules/@boombot/security/reasoning-guard/index.js +13 -0
  440. package/dist/node_modules/@boombot/security/reasoning-guard/policy.d.ts +15 -0
  441. package/dist/node_modules/@boombot/security/reasoning-guard/policy.js +39 -0
  442. package/dist/node_modules/@boombot/security/reasoning-guard/types.d.ts +46 -0
  443. package/dist/node_modules/@boombot/security/reasoning-guard/types.js +7 -0
  444. package/dist/node_modules/@boombot/security/security/approval.d.ts +63 -0
  445. package/dist/node_modules/@boombot/security/security/approval.js +140 -0
  446. package/dist/node_modules/@boombot/security/security/audit.d.ts +39 -0
  447. package/dist/node_modules/@boombot/security/security/audit.js +70 -0
  448. package/dist/node_modules/@boombot/security/security/index.d.ts +12 -0
  449. package/dist/node_modules/@boombot/security/security/index.js +12 -0
  450. package/dist/node_modules/@boombot/security/security/trust.d.ts +79 -0
  451. package/dist/node_modules/@boombot/security/security/trust.js +87 -0
  452. package/dist/package.json +5 -0
  453. package/dist/proto/agent_core.proto +56 -0
  454. package/dist/python/agent-core-python/pyproject.toml +40 -0
  455. package/dist/python/agent-core-python/src/boombot_agent/__init__.py +5 -0
  456. package/dist/python/agent-core-python/src/boombot_agent/generated/__init__.py +0 -0
  457. package/dist/python/agent-core-python/src/boombot_agent/generated/agent_core_pb2.py +54 -0
  458. package/dist/python/agent-core-python/src/boombot_agent/generated/agent_core_pb2_grpc.py +140 -0
  459. package/dist/python/agent-core-python/src/boombot_agent/rpc.py +265 -0
  460. package/dist/python/agent-core-python/src/boombot_agent/turn.py +577 -0
  461. package/dist/python/agent-core-python/src/boombot_ml/__init__.py +12 -0
  462. package/dist/python/agent-core-python/src/boombot_ml/embeddings.py +58 -0
  463. package/dist/python/agent-core-python/src/boombot_ml/training.py +156 -0
  464. package/dist/python/agent-core-python/uv.lock +2856 -0
  465. package/dist/web/assets/ChatView-BZrSD-64.js +262 -0
  466. package/dist/web/assets/ChatView-Cahbjez6.css +1 -0
  467. package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  468. package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  469. package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  470. package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  471. package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  472. package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  473. package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  474. package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  475. package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  476. package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  477. package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  478. package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  479. package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  480. package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  481. package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  482. package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  483. package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  484. package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  485. package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  486. package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  487. package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  488. package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  489. package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  490. package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  491. package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  492. package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  493. package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  494. package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  495. package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  496. package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  497. package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  498. package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  499. package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  500. package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  501. package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  502. package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  503. package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  504. package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  505. package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  506. package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  507. package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  508. package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  509. package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  510. package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  511. package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  512. package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  513. package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  514. package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  515. package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  516. package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  517. package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  518. package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  519. package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  520. package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  521. package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  522. package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  523. package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  524. package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  525. package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  526. package/dist/web/assets/MemoryView-BJbXqqs7.css +1 -0
  527. package/dist/web/assets/MemoryView-BfMq_6CD.js +1 -0
  528. package/dist/web/assets/SchedulesView-B22QmPR-.js +1 -0
  529. package/dist/web/assets/SchedulesView-C6XK7A8a.css +1 -0
  530. package/dist/web/assets/SessionsView-C1dqdhxI.css +1 -0
  531. package/dist/web/assets/SessionsView-DS0-aH2a.js +1 -0
  532. package/dist/web/assets/TasksView-Dtasg4hd.css +1 -0
  533. package/dist/web/assets/TasksView-ey0FLsW8.js +2 -0
  534. package/dist/web/assets/Textarea-DN3Zybl1.js +1 -0
  535. package/dist/web/assets/Tooltip-Bn2cqFPz.css +1 -0
  536. package/dist/web/assets/Tooltip-MzV2Gqnc.js +1 -0
  537. package/dist/web/assets/browser-Bnt73-Ub.js +8 -0
  538. package/dist/web/assets/index-BL8bi7Yt.css +1 -0
  539. package/dist/web/assets/index-CuPR73Tn.js +73 -0
  540. package/dist/web/favicon.svg +4 -0
  541. package/dist/web/index.html +26 -0
  542. package/dist/web/logo.jpg +0 -0
  543. package/dist/web/logo.png +0 -0
  544. package/package.json +51 -4
@@ -0,0 +1,395 @@
1
+ import { z } from "zod";
2
+ import { turnStatusSchema } from "./commands.js";
3
+ import { ProtocolError } from "./errors.js";
4
+ /**
5
+ * SSE / stream events emitted by the gateway while an agent turn runs.
6
+ *
7
+ * Transport: the client POSTs `agent.turn.submit`, then opens the turn's event
8
+ * stream (`GET /v1/turns/:turnId/events`, `text/event-stream`). Each SSE
9
+ * `data:` line is one JSON event below.
10
+ *
11
+ * Event names follow the same dotted convention as commands. New event types
12
+ * are added additively; existing fields are never removed or retyped within a
13
+ * wire version.
14
+ *
15
+ * Two families coexist: `agent.turn.*` (the original assistant-message
16
+ * oriented events) and `turn.*` (typed turn-lifecycle taxonomy with a
17
+ * per-turn `runId` for cross-event correlation).
18
+ */
19
+ export const toolCallSchema = z.object({
20
+ id: z.string().min(1),
21
+ name: z.string().min(1),
22
+ arguments: z.record(z.string(), z.unknown()),
23
+ startedAt: z.string(),
24
+ });
25
+ const agentTurnToken = {
26
+ type: "agent.turn.token",
27
+ schema: z.object({
28
+ turnId: z.string().min(1),
29
+ /** Incremental text delta for the assistant message. */
30
+ delta: z.string(),
31
+ }),
32
+ };
33
+ const agentTurnToolCall = {
34
+ type: "agent.turn.tool_call",
35
+ schema: z.object({
36
+ turnId: z.string().min(1),
37
+ toolCall: toolCallSchema,
38
+ }),
39
+ };
40
+ const agentTurnDone = {
41
+ type: "agent.turn.done",
42
+ schema: z.object({
43
+ turnId: z.string().min(1),
44
+ status: turnStatusSchema,
45
+ /** Final assistant text when the turn completed. */
46
+ output: z.string().optional(),
47
+ usage: z.object({
48
+ inputTokens: z.number().int().nonnegative(),
49
+ outputTokens: z.number().int().nonnegative(),
50
+ totalTokens: z.number().int().nonnegative(),
51
+ }).optional(),
52
+ }),
53
+ };
54
+ const agentTurnError = {
55
+ type: "agent.turn.error",
56
+ schema: z.object({
57
+ turnId: z.string().min(1),
58
+ error: z.string(),
59
+ /** True when the client may retry with the same requestId. */
60
+ retryable: z.boolean().optional(),
61
+ }),
62
+ };
63
+ // ---------------------------------------------------------------------------
64
+ // Turn lifecycle events (typed turn event taxonomy, additive in wire v1).
65
+ //
66
+ // A second, parallel event family alongside `agent.turn.*`, inspired by
67
+ // LangChain `astream_events`. Every event of one turn carries the same
68
+ // `runId` (a UUID generated by the gateway), so clients can correlate the
69
+ // full lifecycle: start -> tool_start/tool_end -> done.
70
+ // ---------------------------------------------------------------------------
71
+ const turnStart = {
72
+ type: "turn.start",
73
+ schema: z.object({
74
+ turnId: z.string().min(1),
75
+ /** UUID generated per turn; traces every event of the turn. */
76
+ runId: z.string().min(1),
77
+ }),
78
+ };
79
+ const turnToolStart = {
80
+ type: "turn.tool_start",
81
+ schema: z.object({
82
+ turnId: z.string().min(1),
83
+ /** UUID generated per turn; traces every event of the turn. */
84
+ runId: z.string().min(1),
85
+ toolCallId: z.string().min(1),
86
+ toolName: z.string().min(1),
87
+ }),
88
+ };
89
+ const turnToolEnd = {
90
+ type: "turn.tool_end",
91
+ schema: z.object({
92
+ turnId: z.string().min(1),
93
+ /** UUID generated per turn; traces every event of the turn. */
94
+ runId: z.string().min(1),
95
+ toolCallId: z.string().min(1),
96
+ toolName: z.string().min(1),
97
+ durationMs: z.number().nonnegative(),
98
+ status: z.enum(["ok", "error"]),
99
+ }),
100
+ };
101
+ const turnApprovalRequired = {
102
+ type: "turn.approval_required",
103
+ schema: z.object({
104
+ turnId: z.string().min(1),
105
+ /** UUID generated per turn; traces every event of the turn. */
106
+ runId: z.string().min(1),
107
+ toolName: z.string().min(1),
108
+ args: z.record(z.string(), z.unknown()),
109
+ reason: z.string(),
110
+ /**
111
+ * P1-2: set on boot re-announcements of approvals that survived a
112
+ * gateway restart. No live turn waits behind such an event — answering
113
+ * records the decision and `turn.approve` reports `resumed: false`.
114
+ */
115
+ resumed: z.boolean().optional(),
116
+ }),
117
+ };
118
+ // ---------------------------------------------------------------------------
119
+ // Harness guard events (wire v1 additive).
120
+ //
121
+ // `@boombot/security` blocks a tool call BEFORE its handler runs
122
+ // (deterministic pre-execution gate: data boundary + tool gates +
123
+ // dual-agent verification). The block is announced on the wire so the
124
+ // client knows why the call never executed.
125
+ // ---------------------------------------------------------------------------
126
+ const guardBlocked = {
127
+ type: "guard.blocked",
128
+ schema: z.object({
129
+ turnId: z.string().min(1),
130
+ /** UUID generated per turn; traces every event of the turn. */
131
+ runId: z.string().min(1),
132
+ toolName: z.string().min(1),
133
+ /** Which guard layer denied the call: boundary | gates | verifier | sanitizer. */
134
+ layer: z.string().min(1),
135
+ reason: z.string(),
136
+ }),
137
+ };
138
+ // ---------------------------------------------------------------------------
139
+ // Harness guard tagging events (wire v1 additive).
140
+ //
141
+ // `@boombot/security` output tagging: after a turn settles, the
142
+ // gateway tags every tool output as trusted/untrusted (see
143
+ // `agent-worker/src/guard/tagging.ts`) and announces each created tag on the
144
+ // wire, so clients can observe the trust boundary in real time.
145
+ // ---------------------------------------------------------------------------
146
+ const guardTagged = {
147
+ type: "guard.tagged",
148
+ schema: z.object({
149
+ turnId: z.string().min(1),
150
+ /** UUID generated per turn; traces every event of the turn. */
151
+ runId: z.string().min(1),
152
+ /** Tool that produced the output; empty string when the name is unknown. */
153
+ toolName: z.string(),
154
+ /** The boundary classification assigned to this tool output. */
155
+ trust: z.enum(["trusted", "untrusted"]),
156
+ /** Tool-call id of the tagged output, when known. */
157
+ callId: z.string().optional(),
158
+ /** `detectInstructions` pattern ids found in the output (untrusted only). */
159
+ patterns: z.array(z.string()).optional(),
160
+ }),
161
+ };
162
+ // ---------------------------------------------------------------------------
163
+ // Background task runner events (wire v1 additive).
164
+ //
165
+ // Lifecycle of tasks created with `task.create`. Clients correlate events by
166
+ // `taskId`. Mirrors the task status machine: queued -> running ->
167
+ // paused/awaiting_approval/completed/failed/cancelled/interrupted.
168
+ // ---------------------------------------------------------------------------
169
+ const taskCreated = {
170
+ type: "task.created",
171
+ schema: z.object({
172
+ taskId: z.string().min(1),
173
+ }),
174
+ };
175
+ const taskProgress = {
176
+ type: "task.progress",
177
+ schema: z.object({
178
+ taskId: z.string().min(1),
179
+ stepIndex: z.number().int().nonnegative(),
180
+ totalSteps: z.number().int().nonnegative(),
181
+ detail: z.string().optional(),
182
+ }),
183
+ };
184
+ const taskCheckpoint = {
185
+ type: "task.checkpoint",
186
+ schema: z.object({
187
+ taskId: z.string().min(1),
188
+ stepIndex: z.number().int().nonnegative(),
189
+ }),
190
+ };
191
+ const taskPaused = {
192
+ type: "task.paused",
193
+ schema: z.object({
194
+ taskId: z.string().min(1),
195
+ }),
196
+ };
197
+ const taskResumed = {
198
+ type: "task.resumed",
199
+ schema: z.object({
200
+ taskId: z.string().min(1),
201
+ }),
202
+ };
203
+ /**
204
+ * `task.awaiting_approval` — a task step requested a tool approval (HITL).
205
+ * The client answers with `task.resume` carrying `approved` / `editedArgs`.
206
+ */
207
+ const taskAwaitingApproval = {
208
+ type: "task.awaiting_approval",
209
+ schema: z.object({
210
+ taskId: z.string().min(1),
211
+ runId: z.string().min(1),
212
+ toolName: z.string().min(1),
213
+ reason: z.string(),
214
+ }),
215
+ };
216
+ const taskCompleted = {
217
+ type: "task.completed",
218
+ schema: z.object({
219
+ taskId: z.string().min(1),
220
+ }),
221
+ };
222
+ const taskFailed = {
223
+ type: "task.failed",
224
+ schema: z.object({
225
+ taskId: z.string().min(1),
226
+ error: z.string(),
227
+ }),
228
+ };
229
+ const taskCancelled = {
230
+ type: "task.cancelled",
231
+ schema: z.object({
232
+ taskId: z.string().min(1),
233
+ }),
234
+ };
235
+ /**
236
+ * `task.interrupted` — the gateway marks tasks found in a non-terminal
237
+ * state at boot as interrupted (crash recovery). The task-runner bridge
238
+ * already publishes this event; the schema was missing, so clients calling
239
+ * `parseEvent` on it failed.
240
+ */
241
+ const taskInterrupted = {
242
+ type: "task.interrupted",
243
+ schema: z.object({
244
+ taskId: z.string().min(1),
245
+ }),
246
+ };
247
+ // ---------------------------------------------------------------------------
248
+ // Reasoning-guard verification events (wire v1 additive).
249
+ //
250
+ // `@boombot/security` verifies the final assistant message after the
251
+ // turn finalizer and reports which claims are grounded in tool evidence.
252
+ // The web ChatView renders the report as a verification badge
253
+ // (`report.verdicts[]` + `report.ungroundedCount`).
254
+ // ---------------------------------------------------------------------------
255
+ const turnVerification = {
256
+ type: "turn.verification",
257
+ schema: z.object({
258
+ turnId: z.string().min(1),
259
+ /** UUID generated per turn; traces every event of the turn. */
260
+ runId: z.string().min(1),
261
+ report: z.object({
262
+ verdicts: z.array(z.object({
263
+ verdict: z.string().min(1),
264
+ claim: z.string().optional(),
265
+ })),
266
+ ungroundedCount: z.number().int().nonnegative(),
267
+ }),
268
+ }),
269
+ };
270
+ // ---------------------------------------------------------------------------
271
+ // Adaptive-routing events (wire v1 additive).
272
+ //
273
+ // `@boombot/core`'s routing middleware (PR #14) classifies every
274
+ // turn `fast`/`deep` at preflight (and can upgrade fast → deep mid-turn
275
+ // when a model round's tool calls look risky). It escalates fast → deep at
276
+ // most once per turn when the verification snapshot reports unsupported
277
+ // claims. The gateway's `bridgeEvent` maps those internal `AgentEvent`s
278
+ // onto these wire events so clients can observe the routing decision and
279
+ // its single escalation.
280
+ // ---------------------------------------------------------------------------
281
+ const turnRouted = {
282
+ type: "turn.routed",
283
+ schema: z.object({
284
+ turnId: z.string().min(1),
285
+ /** UUID generated per turn; traces every event of the turn. */
286
+ runId: z.string().min(1),
287
+ /** Routing decision for the turn: `fast` (cheap) or `deep` (careful). */
288
+ route: z.enum(["fast", "deep"]),
289
+ /** Why the router decided this route (e.g. `default:fast`, `risk:destructive`). */
290
+ reason: z.string(),
291
+ }),
292
+ };
293
+ const turnEscalated = {
294
+ type: "turn.escalated",
295
+ schema: z.object({
296
+ turnId: z.string().min(1),
297
+ /** UUID generated per turn; traces every event of the turn. */
298
+ runId: z.string().min(1),
299
+ /** Escalation always runs fast → deep: the only direction the router escalates. */
300
+ from: z.enum(["fast", "deep"]),
301
+ to: z.enum(["fast", "deep"]),
302
+ /** What triggered the escalation (e.g. `guard:unsupported-claims`). */
303
+ trigger: z.string().min(1),
304
+ }),
305
+ };
306
+ // ---------------------------------------------------------------------------
307
+ // Reasoning delta events (wire v1 additive).
308
+ //
309
+ // Providers that expose intermediate reasoning (DeepSeek `reasoning_content`,
310
+ // OpenRouter `reasoning`, Anthropic `thinking`) stream it separately from the
311
+ // final answer. The Python turn loop forwards those fragments as internal
312
+ // `reasoning.delta` events, and `bridgeEvent` maps them here so the web UI
313
+ // can render a collapsible "thinking" block instead of mixing reasoning
314
+ // into the answer text.
315
+ // ---------------------------------------------------------------------------
316
+ const turnReasoningDelta = {
317
+ type: "turn.reasoning_delta",
318
+ schema: z.object({
319
+ turnId: z.string().min(1),
320
+ /** UUID generated per turn; traces every event of the turn. */
321
+ runId: z.string().min(1).optional(),
322
+ /** One reasoning fragment; concatenate across events for the full trace. */
323
+ delta: z.string(),
324
+ }),
325
+ };
326
+ const turnCompacted = {
327
+ type: "turn.compacted",
328
+ schema: z.object({
329
+ turnId: z.string().min(1),
330
+ prunedTurns: z.number().int().nonnegative(),
331
+ originalTokens: z.number().int().nonnegative(),
332
+ compactedTokens: z.number().int().nonnegative(),
333
+ }),
334
+ };
335
+ /** Every stream event type, mapped to its payload schema. */
336
+ export const STREAM_EVENT_SCHEMAS = {
337
+ "agent.turn.token": agentTurnToken,
338
+ "agent.turn.tool_call": agentTurnToolCall,
339
+ "agent.turn.done": agentTurnDone,
340
+ "agent.turn.error": agentTurnError,
341
+ "turn.start": turnStart,
342
+ "turn.tool_start": turnToolStart,
343
+ "turn.tool_end": turnToolEnd,
344
+ "turn.approval_required": turnApprovalRequired,
345
+ "turn.verification": turnVerification,
346
+ "turn.routed": turnRouted,
347
+ "turn.escalated": turnEscalated,
348
+ "turn.reasoning_delta": turnReasoningDelta,
349
+ "turn.compacted": turnCompacted,
350
+ "guard.blocked": guardBlocked,
351
+ "guard.tagged": guardTagged,
352
+ "task.created": taskCreated,
353
+ "task.progress": taskProgress,
354
+ "task.checkpoint": taskCheckpoint,
355
+ "task.paused": taskPaused,
356
+ "task.resumed": taskResumed,
357
+ "task.awaiting_approval": taskAwaitingApproval,
358
+ "task.completed": taskCompleted,
359
+ "task.failed": taskFailed,
360
+ "task.cancelled": taskCancelled,
361
+ "task.interrupted": taskInterrupted,
362
+ };
363
+ function isRecord(value) {
364
+ return typeof value === "object" && value !== null && !Array.isArray(value);
365
+ }
366
+ /**
367
+ * Validate a raw SSE `data:` value (parsed JSON object or JSON string).
368
+ * Returns the event with its `type` and validated `payload`.
369
+ * Throws {@link ProtocolError} with code INVALID_EVENT on any mismatch.
370
+ */
371
+ export function parseEvent(raw) {
372
+ let value = raw;
373
+ if (typeof raw === "string") {
374
+ try {
375
+ value = JSON.parse(raw);
376
+ }
377
+ catch {
378
+ throw new ProtocolError("INVALID_EVENT", "Event is not valid JSON");
379
+ }
380
+ }
381
+ if (!isRecord(value) || typeof value.type !== "string") {
382
+ throw new ProtocolError("INVALID_EVENT", "Event must be an object with a string type");
383
+ }
384
+ const entry = STREAM_EVENT_SCHEMAS[value.type];
385
+ if (!entry) {
386
+ throw new ProtocolError("INVALID_EVENT", `Unknown event type: ${value.type}`, {
387
+ type: value.type,
388
+ });
389
+ }
390
+ const result = entry.schema.safeParse(value.payload);
391
+ if (!result.success) {
392
+ throw new ProtocolError("INVALID_EVENT", `Invalid payload for event ${value.type}: ${result.error.message}`, { type: value.type, issues: result.error.issues });
393
+ }
394
+ return { type: value.type, payload: result.data };
395
+ }
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Public API of `@boombot/protocol`.
3
+ *
4
+ * Only the modules below are public. There are no internals to hide — every
5
+ * file in `src/` is part of the contract surface.
6
+ */
7
+ export { createEnvelope, parseEnvelope, WIRE_VERSION, } from "./envelope.js";
8
+ export type { Envelope } from "./envelope.js";
9
+ export { ProtocolError } from "./errors.js";
10
+ export type { ProtocolErrorCode } from "./errors.js";
11
+ export { COMMAND_SCHEMAS, parseCommand, parseCommandResponse, attachmentSchema, channelSchema, messageSchema, memoryHitSchema, providerInputSchema, providerKindSchema, providerSchema, reasoningProfileSchema, requestProfileSchema, scheduleSchema, sessionSchema, taskSchema, taskStatusSchema, taskStepSchema, turnStatusSchema, } from "./commands.js";
12
+ export { pluginInfoSchema, marketplacePluginSchema, PLUGIN_COMMAND_DEFS, } from "./commands-plugins.js";
13
+ export type { CommandDef, CommandPayload, CommandResponse, CommandType, ParsedCommand, Task, TaskStatus, TaskStep, } from "./commands.js";
14
+ export { EXTRA_COMMAND_DEFS as SCHEDULER_EXTRA_COMMAND_DEFS } from "./commands-scheduler.js";
15
+ export type { ExtraCommandType as SchedulerExtraCommandType } from "./commands-scheduler.js";
16
+ export { EXTRA_COMMAND_DEFS as CHANNEL_EXTRA_COMMAND_DEFS } from "./commands-channels.js";
17
+ export type { ExtraCommandType as ChannelExtraCommandType } from "./commands-channels.js";
18
+ export { parseEvent, STREAM_EVENT_SCHEMAS, toolCallSchema } from "./events.js";
19
+ export type { StreamEvent, StreamEventPayload, StreamEventType, } from "./events.js";
20
+ export type { Attachment, ChannelInfo, ChannelStatus, MemoryHit, Message, ProviderInfo, ProviderKind, Schedule, SessionSummary, ToolCall, TurnResult, TurnStatus, } from "./types.js";
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Public API of `@boombot/protocol`.
3
+ *
4
+ * Only the modules below are public. There are no internals to hide — every
5
+ * file in `src/` is part of the contract surface.
6
+ */
7
+ export { createEnvelope, parseEnvelope, WIRE_VERSION, } from "./envelope.js";
8
+ export { ProtocolError } from "./errors.js";
9
+ export { COMMAND_SCHEMAS, parseCommand, parseCommandResponse, attachmentSchema, channelSchema, messageSchema, memoryHitSchema, providerInputSchema, providerKindSchema, providerSchema, reasoningProfileSchema, requestProfileSchema, scheduleSchema, sessionSchema, taskSchema, taskStatusSchema, taskStepSchema, turnStatusSchema, } from "./commands.js";
10
+ export { pluginInfoSchema, marketplacePluginSchema, PLUGIN_COMMAND_DEFS, } from "./commands-plugins.js";
11
+ export { EXTRA_COMMAND_DEFS as SCHEDULER_EXTRA_COMMAND_DEFS } from "./commands-scheduler.js";
12
+ export { EXTRA_COMMAND_DEFS as CHANNEL_EXTRA_COMMAND_DEFS } from "./commands-channels.js";
13
+ export { parseEvent, STREAM_EVENT_SCHEMAS, toolCallSchema } from "./events.js";
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Shared domain types used by command payloads, responses and stream events.
3
+ *
4
+ * These are plain TypeScript types (compile-time only). The runtime shapes are
5
+ * enforced by the zod schemas in `commands.ts` and `events.ts`.
6
+ */
7
+ /** Summary of an agent conversation session, as listed by `session.list`. */
8
+ export interface SessionSummary {
9
+ id: string;
10
+ title: string;
11
+ createdAt: string;
12
+ updatedAt: string;
13
+ messageCount: number;
14
+ }
15
+ /** A chat message inside a session. */
16
+ export interface Message {
17
+ id: string;
18
+ role: "user" | "assistant" | "system" | "tool";
19
+ content: string;
20
+ createdAt: string;
21
+ toolCallId?: string;
22
+ toolName?: string;
23
+ }
24
+ /** A tool invocation made by the agent during a turn. */
25
+ export interface ToolCall {
26
+ id: string;
27
+ name: string;
28
+ arguments: Record<string, unknown>;
29
+ startedAt: string;
30
+ }
31
+ /** Supported model-provider kinds for `provider.*` commands. */
32
+ export type ProviderKind = "openai" | "anthropic" | "google" | "mistral" | "xai" | "deepseek" | "openai-compatible" | "local";
33
+ /** Provider record as returned by `provider.list` / `provider.save`. */
34
+ export interface ProviderInfo {
35
+ id: string;
36
+ name: string;
37
+ kind: ProviderKind;
38
+ /** Custom endpoint; defaults are implied when omitted (except `local`). */
39
+ baseUrl?: string;
40
+ /** True when a secret key is stored server-side. The key value itself is never sent. */
41
+ hasKey: boolean;
42
+ active: boolean;
43
+ /**
44
+ * Default chat model for turns, as set via `provider.save`. Unlike `models`
45
+ * (probe-discovered catalogue) this is explicit and never overwritten by
46
+ * `provider.test`. Turns fail when neither is set.
47
+ */
48
+ model?: string;
49
+ models?: string[];
50
+ }
51
+ /** A scheduled job, as used by `schedule.*` commands. */
52
+ export interface Schedule {
53
+ id: string;
54
+ name: string;
55
+ cron: string;
56
+ prompt: string;
57
+ enabled: boolean;
58
+ nextRunAt?: string;
59
+ }
60
+ /** One memory recall hit returned by `memory.search`. */
61
+ export interface MemoryHit {
62
+ id: string;
63
+ excerpt: string;
64
+ score: number;
65
+ }
66
+ /** Channel connection status as returned by `channel.list`. */
67
+ export type ChannelStatus = "connected" | "disconnected" | "error" | "pending";
68
+ export interface ChannelInfo {
69
+ id: string;
70
+ kind: string;
71
+ status: ChannelStatus;
72
+ displayName: string;
73
+ }
74
+ /** Attachment reference submitted with an agent turn. */
75
+ export interface Attachment {
76
+ id: string;
77
+ name: string;
78
+ mimeType: string;
79
+ sizeBytes: number;
80
+ /** Where the gateway can fetch the bytes (opaque to the client). */
81
+ ref: string;
82
+ }
83
+ /** Terminal status of an agent turn. */
84
+ export type TurnStatus = "queued" | "running" | "completed" | "cancelled" | "failed";
85
+ /** Result summary carried by the `agent.turn.done` stream event. */
86
+ export interface TurnResult {
87
+ turnId: string;
88
+ status: TurnStatus;
89
+ output?: string;
90
+ error?: string;
91
+ }
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Shared domain types used by command payloads, responses and stream events.
3
+ *
4
+ * These are plain TypeScript types (compile-time only). The runtime shapes are
5
+ * enforced by the zod schemas in `commands.ts` and `events.ts`.
6
+ */
7
+ export {};
@@ -0,0 +1,4 @@
1
+ export * from './gateway-protocol/index.js';
2
+ export * from './plugin-sdk/index.js';
3
+ export * from './providers/index.js';
4
+ export type { ProviderKind } from './gateway-protocol/index.js';
@@ -0,0 +1,3 @@
1
+ export * from './gateway-protocol/index.js';
2
+ export * from './plugin-sdk/index.js';
3
+ export * from './providers/index.js';
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "@boombot/protocol",
3
+ "version": "2.0.0",
4
+ "type": "module",
5
+ "main": "./index.js",
6
+ "exports": {
7
+ ".": "./index.js"
8
+ }
9
+ }
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Channel contracts for `@boombot/protocol`.
3
+ *
4
+ * Extensions implement `ChannelAdapter` for their platform (Telegram,
5
+ * WhatsApp, Discord, Slack, …). The gateway (phase 2) loads adapters
6
+ * through the plugin manifest and never touches platform SDKs directly.
7
+ */
8
+ /** Messaging platforms with a first-class adapter contract. */
9
+ export type ChannelKind = 'telegram' | 'whatsapp' | 'discord' | 'slack' | 'zalo' | 'messenger' | 'tiktok';
10
+ /** All known channel kinds — used by manifest validation. */
11
+ export declare const CHANNEL_KINDS: readonly ChannelKind[];
12
+ export interface InboundMessage {
13
+ readonly channel: ChannelKind;
14
+ readonly chatId: string;
15
+ readonly senderId: string;
16
+ readonly messageId: string;
17
+ readonly text: string;
18
+ /** Unix epoch milliseconds. */
19
+ readonly timestamp: number;
20
+ }
21
+ export interface SendOptions {
22
+ readonly replyToMessageId?: string;
23
+ readonly silent?: boolean;
24
+ }
25
+ export interface SendResult {
26
+ readonly delivered: boolean;
27
+ readonly messageId?: string;
28
+ readonly error?: string;
29
+ }
30
+ export type MessageHandler = (msg: InboundMessage) => void | Promise<void>;
31
+ /**
32
+ * Platform adapter implemented by extensions.
33
+ * Lifecycle: `connect` once at gateway boot, `disconnect` on shutdown.
34
+ */
35
+ export interface ChannelAdapter {
36
+ readonly kind: ChannelKind;
37
+ connect(config: Readonly<Record<string, unknown>>): Promise<void>;
38
+ disconnect(): Promise<void>;
39
+ sendMessage(target: string, text: string, opts?: SendOptions): Promise<SendResult>;
40
+ onMessage(handler: MessageHandler): void;
41
+ }
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Channel contracts for `@boombot/protocol`.
3
+ *
4
+ * Extensions implement `ChannelAdapter` for their platform (Telegram,
5
+ * WhatsApp, Discord, Slack, …). The gateway (phase 2) loads adapters
6
+ * through the plugin manifest and never touches platform SDKs directly.
7
+ */
8
+ /** All known channel kinds — used by manifest validation. */
9
+ export const CHANNEL_KINDS = [
10
+ 'telegram',
11
+ 'whatsapp',
12
+ 'discord',
13
+ 'slack',
14
+ 'zalo',
15
+ 'messenger',
16
+ 'tiktok',
17
+ ];
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `@boombot/protocol` — the ONLY public barrel extensions may import.
3
+ *
4
+ * Boundary rule (enforced by lint from day one): extensions import from
5
+ * `@boombot/protocol` and nothing else under `@boombot/*`. Core internals
6
+ * are never reachable from extension code.
7
+ */
8
+ export * from './manifest.js';
9
+ export * from './channel.js';
10
+ export * from './plugin.js';
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `@boombot/protocol` — the ONLY public barrel extensions may import.
3
+ *
4
+ * Boundary rule (enforced by lint from day one): extensions import from
5
+ * `@boombot/protocol` and nothing else under `@boombot/*`. Core internals
6
+ * are never reachable from extension code.
7
+ */
8
+ export * from './manifest.js';
9
+ export * from './channel.js';
10
+ export * from './plugin.js';