@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.
- package/README.md +69 -3
- package/dist/LICENSE +21 -0
- package/dist/bin/boombot.js +16 -0
- package/dist/cli/api-key.js +123 -0
- package/dist/cli/bin-bun.js +17 -0
- package/dist/cli/bin.js +34 -0
- package/dist/cli/cli/cli-error.js +61 -0
- package/dist/cli/cli/dispatch.js +138 -0
- package/dist/cli/cli/help.js +83 -0
- package/dist/cli/cli/parser.js +89 -0
- package/dist/cli/cli/registry.js +185 -0
- package/dist/cli/cli/spec.js +41 -0
- package/dist/cli/cli/suggest.js +125 -0
- package/dist/cli/cli/version.js +30 -0
- package/dist/cli/cli/vocabulary.js +87 -0
- package/dist/cli/commands/doctor.js +365 -0
- package/dist/cli/commands/gateway.js +290 -0
- package/dist/cli/commands/migrate.js +270 -0
- package/dist/cli/commands/plugin.js +97 -0
- package/dist/cli/commands/setup.js +230 -0
- package/dist/cli/config-file.js +133 -0
- package/dist/cli/master-key.js +78 -0
- package/dist/cli/open-browser.js +59 -0
- package/dist/cli/web-assets.js +58 -0
- package/dist/gateway/auth.js +46 -0
- package/dist/gateway/config-format.js +202 -0
- package/dist/gateway/config.js +427 -0
- package/dist/gateway/context.js +1 -0
- package/dist/gateway/env-file.js +129 -0
- package/dist/gateway/events.js +172 -0
- package/dist/gateway/guard/tagging.js +505 -0
- package/dist/gateway/handlers/index.js +66 -0
- package/dist/gateway/handlers/memory.js +54 -0
- package/dist/gateway/handlers/providers.js +73 -0
- package/dist/gateway/handlers/registry.js +39 -0
- package/dist/gateway/handlers/sessions.js +188 -0
- package/dist/gateway/handlers/system.js +12 -0
- package/dist/gateway/handlers/tasks.js +191 -0
- package/dist/gateway/handlers/turn.js +100 -0
- package/dist/gateway/index.js +126 -0
- package/dist/gateway/main.js +23 -0
- package/dist/gateway/server.js +354 -0
- package/dist/gateway/services/context-limits.js +75 -0
- package/dist/gateway/services/history-normalizer.js +42 -0
- package/dist/gateway/services/image-pipeline.js +56 -0
- package/dist/gateway/services/key-roulette-client.js +43 -0
- package/dist/gateway/services/llm-client.js +593 -0
- package/dist/gateway/services/llm-decoder.js +200 -0
- package/dist/gateway/services/local-fallback.js +135 -0
- package/dist/gateway/services/memory.js +511 -0
- package/dist/gateway/services/persistent-memory.js +196 -0
- package/dist/gateway/services/providers.js +44 -0
- package/dist/gateway/services/tasks.js +237 -0
- package/dist/gateway/services/verification.js +124 -0
- package/dist/gateway/services/vision-payload.js +48 -0
- package/dist/gateway/services.js +257 -0
- package/dist/gateway/session-snapshot.js +19 -0
- package/dist/gateway/sessions.js +701 -0
- package/dist/gateway/static.js +239 -0
- package/dist/gateway/turns/clarify-tool.js +57 -0
- package/dist/gateway/turns/cronjob-tool.js +96 -0
- package/dist/gateway/turns/deferred-tools.js +154 -0
- package/dist/gateway/turns/execute-code-tool.js +84 -0
- package/dist/gateway/turns/file-tool-defs.js +178 -0
- package/dist/gateway/turns/file-tool-ops.js +178 -0
- package/dist/gateway/turns/file-tool-scan.js +182 -0
- package/dist/gateway/turns/file-tool.js +302 -0
- package/dist/gateway/turns/index.js +416 -0
- package/dist/gateway/turns/jev-middleware.js +91 -0
- package/dist/gateway/turns/local-reply.js +156 -0
- package/dist/gateway/turns/mcp-client.js +643 -0
- package/dist/gateway/turns/memory-tool.js +171 -0
- package/dist/gateway/turns/middleware.js +96 -0
- package/dist/gateway/turns/python-core.js +397 -0
- package/dist/gateway/turns/routing/index.js +3 -0
- package/dist/gateway/turns/routing/intent-classifier.js +60 -0
- package/dist/gateway/turns/routing/planner-adapter.js +91 -0
- package/dist/gateway/turns/routing/types.js +1 -0
- package/dist/gateway/turns/runtime-deps.js +228 -0
- package/dist/gateway/turns/self-config-tool.js +277 -0
- package/dist/gateway/turns/service-types.js +11 -0
- package/dist/gateway/turns/service.js +820 -0
- package/dist/gateway/turns/session-adapter.js +158 -0
- package/dist/gateway/turns/session-tool.js +49 -0
- package/dist/gateway/turns/shell-tool.js +190 -0
- package/dist/gateway/turns/skill-tool.js +239 -0
- package/dist/gateway/turns/spillover.js +201 -0
- package/dist/gateway/turns/subagent-tool.js +140 -0
- package/dist/gateway/turns/system-prompt.js +121 -0
- package/dist/gateway/turns/tool-schema.js +90 -0
- package/dist/gateway/turns/turn-utils.js +58 -0
- package/dist/gateway/turns/vision-tool.js +120 -0
- package/dist/gateway/types.js +1 -0
- package/dist/native/win32-x64/boombot-native-host.exe +0 -0
- package/dist/node_modules/@boombot/channels/handlers.d.ts +9 -0
- package/dist/node_modules/@boombot/channels/handlers.js +109 -0
- package/dist/node_modules/@boombot/channels/index.d.ts +12 -0
- package/dist/node_modules/@boombot/channels/index.js +12 -0
- package/dist/node_modules/@boombot/channels/package.json +9 -0
- package/dist/node_modules/@boombot/channels/service.d.ts +62 -0
- package/dist/node_modules/@boombot/channels/service.js +608 -0
- package/dist/node_modules/@boombot/channels/tool.d.ts +10 -0
- package/dist/node_modules/@boombot/channels/tool.js +46 -0
- package/dist/node_modules/@boombot/channels/transports/common/dedup.d.ts +17 -0
- package/dist/node_modules/@boombot/channels/transports/common/dedup.js +42 -0
- package/dist/node_modules/@boombot/channels/transports/common/handoff.d.ts +19 -0
- package/dist/node_modules/@boombot/channels/transports/common/handoff.js +32 -0
- package/dist/node_modules/@boombot/channels/transports/common/index.d.ts +3 -0
- package/dist/node_modules/@boombot/channels/transports/common/index.js +3 -0
- package/dist/node_modules/@boombot/channels/transports/common/types.d.ts +99 -0
- package/dist/node_modules/@boombot/channels/transports/common/types.js +54 -0
- package/dist/node_modules/@boombot/channels/transports/common.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/common.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/dedup/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/dedup/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/dedup.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/dedup.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/discord/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/discord/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/discord/transport.d.ts +36 -0
- package/dist/node_modules/@boombot/channels/transports/discord/transport.js +199 -0
- package/dist/node_modules/@boombot/channels/transports/discord.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/discord.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/handoff.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/handoff.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/messenger/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/messenger/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/messenger/transport.d.ts +34 -0
- package/dist/node_modules/@boombot/channels/transports/messenger/transport.js +180 -0
- package/dist/node_modules/@boombot/channels/transports/messenger.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/messenger.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/slack/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/slack/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/slack/transport.d.ts +35 -0
- package/dist/node_modules/@boombot/channels/transports/slack/transport.js +183 -0
- package/dist/node_modules/@boombot/channels/transports/slack.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/slack.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/streamer/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/streamer/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/streamer/streamer.d.ts +31 -0
- package/dist/node_modules/@boombot/channels/transports/streamer/streamer.js +141 -0
- package/dist/node_modules/@boombot/channels/transports/streamer.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/streamer.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/telegram/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/telegram/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/telegram/transport.d.ts +75 -0
- package/dist/node_modules/@boombot/channels/transports/telegram/transport.js +395 -0
- package/dist/node_modules/@boombot/channels/transports/telegram.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/telegram.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok/transport.d.ts +27 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok/transport.js +97 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/tiktok.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp/index.d.ts +1 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp/index.js +1 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp/transport.d.ts +38 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp/transport.js +189 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/whatsapp.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/index.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/index.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/oa.d.ts +28 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/oa.js +94 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/personal.d.ts +106 -0
- package/dist/node_modules/@boombot/channels/transports/zalo/personal.js +171 -0
- package/dist/node_modules/@boombot/channels/transports/zalo-personal.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo-personal.js +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo.d.ts +2 -0
- package/dist/node_modules/@boombot/channels/transports/zalo.js +2 -0
- package/dist/node_modules/@boombot/core/agent-core/index.d.ts +12 -0
- package/dist/node_modules/@boombot/core/agent-core/index.js +12 -0
- package/dist/node_modules/@boombot/core/agent-core/middleware.d.ts +60 -0
- package/dist/node_modules/@boombot/core/agent-core/middleware.js +152 -0
- package/dist/node_modules/@boombot/core/agent-core/routing.d.ts +128 -0
- package/dist/node_modules/@boombot/core/agent-core/routing.js +437 -0
- package/dist/node_modules/@boombot/core/agent-core/runtime-deps.d.ts +88 -0
- package/dist/node_modules/@boombot/core/agent-core/runtime-deps.js +8 -0
- package/dist/node_modules/@boombot/core/agent-core/tool-errors.d.ts +44 -0
- package/dist/node_modules/@boombot/core/agent-core/tool-errors.js +60 -0
- package/dist/node_modules/@boombot/core/agent-core/turn-loop.d.ts +21 -0
- package/dist/node_modules/@boombot/core/agent-core/turn-loop.js +561 -0
- package/dist/node_modules/@boombot/core/agent-core/types.d.ts +189 -0
- package/dist/node_modules/@boombot/core/agent-core/types.js +7 -0
- package/dist/node_modules/@boombot/core/compaction/compactor.d.ts +19 -0
- package/dist/node_modules/@boombot/core/compaction/compactor.js +127 -0
- package/dist/node_modules/@boombot/core/compaction/estimator.d.ts +10 -0
- package/dist/node_modules/@boombot/core/compaction/estimator.js +48 -0
- package/dist/node_modules/@boombot/core/compaction/index.d.ts +3 -0
- package/dist/node_modules/@boombot/core/compaction/index.js +3 -0
- package/dist/node_modules/@boombot/core/compaction/types.d.ts +31 -0
- package/dist/node_modules/@boombot/core/compaction/types.js +7 -0
- package/dist/node_modules/@boombot/core/index.d.ts +9 -0
- package/dist/node_modules/@boombot/core/index.js +9 -0
- package/dist/node_modules/@boombot/core/jev/index.d.ts +2 -0
- package/dist/node_modules/@boombot/core/jev/index.js +2 -0
- package/dist/node_modules/@boombot/core/jev/jev.d.ts +30 -0
- package/dist/node_modules/@boombot/core/jev/jev.js +164 -0
- package/dist/node_modules/@boombot/core/jev/types.d.ts +22 -0
- package/dist/node_modules/@boombot/core/jev/types.js +1 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/budget.d.ts +63 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/budget.js +94 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/consolidator.d.ts +152 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/consolidator.js +318 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/index.d.ts +12 -0
- package/dist/node_modules/@boombot/core/memory/consolidation/index.js +12 -0
- package/dist/node_modules/@boombot/core/memory/curation.d.ts +86 -0
- package/dist/node_modules/@boombot/core/memory/curation.js +120 -0
- package/dist/node_modules/@boombot/core/memory/errors.d.ts +12 -0
- package/dist/node_modules/@boombot/core/memory/errors.js +20 -0
- package/dist/node_modules/@boombot/core/memory/hybrid-search.d.ts +29 -0
- package/dist/node_modules/@boombot/core/memory/hybrid-search.js +52 -0
- package/dist/node_modules/@boombot/core/memory/index.d.ts +23 -0
- package/dist/node_modules/@boombot/core/memory/index.js +23 -0
- package/dist/node_modules/@boombot/core/memory/indexer.d.ts +47 -0
- package/dist/node_modules/@boombot/core/memory/indexer.js +138 -0
- package/dist/node_modules/@boombot/core/memory/lifecycle.d.ts +12 -0
- package/dist/node_modules/@boombot/core/memory/lifecycle.js +66 -0
- package/dist/node_modules/@boombot/core/memory/provider.d.ts +84 -0
- package/dist/node_modules/@boombot/core/memory/provider.js +117 -0
- package/dist/node_modules/@boombot/core/memory/recall.d.ts +7 -0
- package/dist/node_modules/@boombot/core/memory/recall.js +111 -0
- package/dist/node_modules/@boombot/core/memory/scope-resolver.d.ts +27 -0
- package/dist/node_modules/@boombot/core/memory/scope-resolver.js +60 -0
- package/dist/node_modules/@boombot/core/memory/search.d.ts +37 -0
- package/dist/node_modules/@boombot/core/memory/search.js +158 -0
- package/dist/node_modules/@boombot/core/memory/store.d.ts +60 -0
- package/dist/node_modules/@boombot/core/memory/store.js +289 -0
- package/dist/node_modules/@boombot/core/memory/types.d.ts +121 -0
- package/dist/node_modules/@boombot/core/memory/types.js +21 -0
- package/dist/node_modules/@boombot/core/memory/vector-index.d.ts +34 -0
- package/dist/node_modules/@boombot/core/memory/vector-index.js +65 -0
- package/dist/node_modules/@boombot/core/package.json +9 -0
- package/dist/node_modules/@boombot/core/reflection/classifier.d.ts +13 -0
- package/dist/node_modules/@boombot/core/reflection/classifier.js +77 -0
- package/dist/node_modules/@boombot/core/reflection/index.d.ts +2 -0
- package/dist/node_modules/@boombot/core/reflection/index.js +2 -0
- package/dist/node_modules/@boombot/core/reflection/types.d.ts +13 -0
- package/dist/node_modules/@boombot/core/reflection/types.js +4 -0
- package/dist/node_modules/@boombot/core/research/config.d.ts +89 -0
- package/dist/node_modules/@boombot/core/research/config.js +206 -0
- package/dist/node_modules/@boombot/core/research/crawl.d.ts +36 -0
- package/dist/node_modules/@boombot/core/research/crawl.js +179 -0
- package/dist/node_modules/@boombot/core/research/factory.d.ts +26 -0
- package/dist/node_modules/@boombot/core/research/factory.js +46 -0
- package/dist/node_modules/@boombot/core/research/http.d.ts +87 -0
- package/dist/node_modules/@boombot/core/research/http.js +250 -0
- package/dist/node_modules/@boombot/core/research/index.d.ts +17 -0
- package/dist/node_modules/@boombot/core/research/index.js +10 -0
- package/dist/node_modules/@boombot/core/research/orchestrator.d.ts +113 -0
- package/dist/node_modules/@boombot/core/research/orchestrator.js +252 -0
- package/dist/node_modules/@boombot/core/research/parse/docx.d.ts +24 -0
- package/dist/node_modules/@boombot/core/research/parse/docx.js +183 -0
- package/dist/node_modules/@boombot/core/research/parse/guards.d.ts +89 -0
- package/dist/node_modules/@boombot/core/research/parse/guards.js +171 -0
- package/dist/node_modules/@boombot/core/research/parse/index.d.ts +68 -0
- package/dist/node_modules/@boombot/core/research/parse/index.js +219 -0
- package/dist/node_modules/@boombot/core/research/parse/pdf.d.ts +38 -0
- package/dist/node_modules/@boombot/core/research/parse/pdf.js +567 -0
- package/dist/node_modules/@boombot/core/research/providers/arxiv.d.ts +9 -0
- package/dist/node_modules/@boombot/core/research/providers/arxiv.js +72 -0
- package/dist/node_modules/@boombot/core/research/providers/brave.d.ts +11 -0
- package/dist/node_modules/@boombot/core/research/providers/brave.js +36 -0
- package/dist/node_modules/@boombot/core/research/providers/duckduckgo.d.ts +9 -0
- package/dist/node_modules/@boombot/core/research/providers/duckduckgo.js +78 -0
- package/dist/node_modules/@boombot/core/research/providers/exa.d.ts +11 -0
- package/dist/node_modules/@boombot/core/research/providers/exa.js +34 -0
- package/dist/node_modules/@boombot/core/research/providers/firecrawl.d.ts +16 -0
- package/dist/node_modules/@boombot/core/research/providers/firecrawl.js +47 -0
- package/dist/node_modules/@boombot/core/research/providers/index.d.ts +17 -0
- package/dist/node_modules/@boombot/core/research/providers/index.js +11 -0
- package/dist/node_modules/@boombot/core/research/providers/jina.d.ts +13 -0
- package/dist/node_modules/@boombot/core/research/providers/jina.js +114 -0
- package/dist/node_modules/@boombot/core/research/providers/openalex.d.ts +14 -0
- package/dist/node_modules/@boombot/core/research/providers/openalex.js +66 -0
- package/dist/node_modules/@boombot/core/research/providers/semantic-scholar.d.ts +9 -0
- package/dist/node_modules/@boombot/core/research/providers/semantic-scholar.js +56 -0
- package/dist/node_modules/@boombot/core/research/providers/tavily.d.ts +11 -0
- package/dist/node_modules/@boombot/core/research/providers/tavily.js +35 -0
- package/dist/node_modules/@boombot/core/research/providers/wikipedia.d.ts +12 -0
- package/dist/node_modules/@boombot/core/research/providers/wikipedia.js +47 -0
- package/dist/node_modules/@boombot/core/research/tools.d.ts +27 -0
- package/dist/node_modules/@boombot/core/research/tools.js +251 -0
- package/dist/node_modules/@boombot/core/research/types.d.ts +133 -0
- package/dist/node_modules/@boombot/core/research/types.js +8 -0
- package/dist/node_modules/@boombot/core/research/wiring.d.ts +25 -0
- package/dist/node_modules/@boombot/core/research/wiring.js +51 -0
- package/dist/node_modules/@boombot/core/scheduler/cron.d.ts +34 -0
- package/dist/node_modules/@boombot/core/scheduler/cron.js +147 -0
- package/dist/node_modules/@boombot/core/scheduler/evaluator.d.ts +42 -0
- package/dist/node_modules/@boombot/core/scheduler/evaluator.js +148 -0
- package/dist/node_modules/@boombot/core/scheduler/index.d.ts +15 -0
- package/dist/node_modules/@boombot/core/scheduler/index.js +15 -0
- package/dist/node_modules/@boombot/core/scheduler/registry.d.ts +81 -0
- package/dist/node_modules/@boombot/core/scheduler/registry.js +263 -0
- package/dist/node_modules/@boombot/core/scheduler/runner.d.ts +59 -0
- package/dist/node_modules/@boombot/core/scheduler/runner.js +257 -0
- package/dist/node_modules/@boombot/core/scheduler/store.d.ts +150 -0
- package/dist/node_modules/@boombot/core/scheduler/store.js +526 -0
- package/dist/node_modules/@boombot/core/scheduler/timezone.d.ts +35 -0
- package/dist/node_modules/@boombot/core/scheduler/timezone.js +96 -0
- package/dist/node_modules/@boombot/core/scheduler/types.d.ts +157 -0
- package/dist/node_modules/@boombot/core/scheduler/types.js +89 -0
- package/dist/node_modules/@boombot/core/task-runner/index.d.ts +7 -0
- package/dist/node_modules/@boombot/core/task-runner/index.js +5 -0
- package/dist/node_modules/@boombot/core/task-runner/planner.d.ts +37 -0
- package/dist/node_modules/@boombot/core/task-runner/planner.js +154 -0
- package/dist/node_modules/@boombot/core/task-runner/runner.d.ts +8 -0
- package/dist/node_modules/@boombot/core/task-runner/runner.js +564 -0
- package/dist/node_modules/@boombot/core/task-runner/store.d.ts +28 -0
- package/dist/node_modules/@boombot/core/task-runner/store.js +126 -0
- package/dist/node_modules/@boombot/core/task-runner/types.d.ts +138 -0
- package/dist/node_modules/@boombot/core/task-runner/types.js +11 -0
- package/dist/node_modules/@boombot/core/workflow/dag.d.ts +16 -0
- package/dist/node_modules/@boombot/core/workflow/dag.js +109 -0
- package/dist/node_modules/@boombot/core/workflow/engine.d.ts +34 -0
- package/dist/node_modules/@boombot/core/workflow/engine.js +304 -0
- package/dist/node_modules/@boombot/core/workflow/index.d.ts +3 -0
- package/dist/node_modules/@boombot/core/workflow/index.js +3 -0
- package/dist/node_modules/@boombot/core/workflow/types.d.ts +98 -0
- package/dist/node_modules/@boombot/core/workflow/types.js +21 -0
- package/dist/node_modules/@boombot/cronjobs/handlers.d.ts +11 -0
- package/dist/node_modules/@boombot/cronjobs/handlers.js +174 -0
- package/dist/node_modules/@boombot/cronjobs/index.d.ts +2 -0
- package/dist/node_modules/@boombot/cronjobs/index.js +2 -0
- package/dist/node_modules/@boombot/cronjobs/package.json +9 -0
- package/dist/node_modules/@boombot/cronjobs/service.d.ts +53 -0
- package/dist/node_modules/@boombot/cronjobs/service.js +200 -0
- package/dist/node_modules/@boombot/plugins/index.d.ts +2 -0
- package/dist/node_modules/@boombot/plugins/index.js +2 -0
- package/dist/node_modules/@boombot/plugins/installer.d.ts +45 -0
- package/dist/node_modules/@boombot/plugins/installer.js +487 -0
- package/dist/node_modules/@boombot/plugins/manager.d.ts +23 -0
- package/dist/node_modules/@boombot/plugins/manager.js +243 -0
- package/dist/node_modules/@boombot/plugins/package.json +9 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-channels.d.ts +125 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-channels.js +76 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-plugins.d.ts +220 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-plugins.js +60 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-scheduler.d.ts +33 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands-scheduler.js +25 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands.d.ts +4349 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/commands.js +563 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/envelope.d.ts +32 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/envelope.js +61 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/errors.d.ts +13 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/errors.js +16 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/events.d.ts +567 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/events.js +395 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/index.d.ts +20 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/index.js +13 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/types.d.ts +91 -0
- package/dist/node_modules/@boombot/protocol/gateway-protocol/types.js +7 -0
- package/dist/node_modules/@boombot/protocol/index.d.ts +4 -0
- package/dist/node_modules/@boombot/protocol/index.js +3 -0
- package/dist/node_modules/@boombot/protocol/package.json +9 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/channel.d.ts +41 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/channel.js +17 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/index.d.ts +10 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/index.js +10 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/manifest.d.ts +58 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/manifest.js +116 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/plugin.d.ts +25 -0
- package/dist/node_modules/@boombot/protocol/plugin-sdk/plugin.js +1 -0
- package/dist/node_modules/@boombot/protocol/providers/cipher.d.ts +7 -0
- package/dist/node_modules/@boombot/protocol/providers/cipher.js +52 -0
- package/dist/node_modules/@boombot/protocol/providers/index.d.ts +19 -0
- package/dist/node_modules/@boombot/protocol/providers/index.js +19 -0
- package/dist/node_modules/@boombot/protocol/providers/key-roulette.d.ts +79 -0
- package/dist/node_modules/@boombot/protocol/providers/key-roulette.js +81 -0
- package/dist/node_modules/@boombot/protocol/providers/probe.d.ts +29 -0
- package/dist/node_modules/@boombot/protocol/providers/probe.js +96 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/anthropic.d.ts +11 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/anthropic.js +11 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/custom.d.ts +22 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/custom.js +222 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/deepseek.d.ts +7 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/deepseek.js +9 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/google.d.ts +10 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/google.js +10 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/index.d.ts +31 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/index.js +56 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/local.d.ts +10 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/local.js +11 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/mistral.d.ts +7 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/mistral.js +9 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/openai-compatible.d.ts +10 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/openai-compatible.js +10 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/openai.d.ts +7 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/openai.js +11 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/types.d.ts +58 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/types.js +1 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/xai.d.ts +7 -0
- package/dist/node_modules/@boombot/protocol/providers/profiles/xai.js +10 -0
- package/dist/node_modules/@boombot/protocol/providers/request-profile.d.ts +102 -0
- package/dist/node_modules/@boombot/protocol/providers/request-profile.js +118 -0
- package/dist/node_modules/@boombot/protocol/providers/service.d.ts +2 -0
- package/dist/node_modules/@boombot/protocol/providers/service.js +418 -0
- package/dist/node_modules/@boombot/protocol/providers/types.d.ts +141 -0
- package/dist/node_modules/@boombot/protocol/providers/types.js +16 -0
- package/dist/node_modules/@boombot/sandbox/fs-path.d.ts +13 -0
- package/dist/node_modules/@boombot/sandbox/fs-path.js +79 -0
- package/dist/node_modules/@boombot/sandbox/index.d.ts +13 -0
- package/dist/node_modules/@boombot/sandbox/index.js +13 -0
- package/dist/node_modules/@boombot/sandbox/native.d.ts +39 -0
- package/dist/node_modules/@boombot/sandbox/native.js +224 -0
- package/dist/node_modules/@boombot/sandbox/package.json +9 -0
- package/dist/node_modules/@boombot/sandbox/sandbox.d.ts +92 -0
- package/dist/node_modules/@boombot/sandbox/sandbox.js +229 -0
- package/dist/node_modules/@boombot/security/harness-guard/boundary.d.ts +22 -0
- package/dist/node_modules/@boombot/security/harness-guard/boundary.js +105 -0
- package/dist/node_modules/@boombot/security/harness-guard/gates.d.ts +90 -0
- package/dist/node_modules/@boombot/security/harness-guard/gates.js +791 -0
- package/dist/node_modules/@boombot/security/harness-guard/index.d.ts +23 -0
- package/dist/node_modules/@boombot/security/harness-guard/index.js +23 -0
- package/dist/node_modules/@boombot/security/harness-guard/policy.d.ts +20 -0
- package/dist/node_modules/@boombot/security/harness-guard/policy.js +70 -0
- package/dist/node_modules/@boombot/security/harness-guard/sanitizer.d.ts +53 -0
- package/dist/node_modules/@boombot/security/harness-guard/sanitizer.js +145 -0
- package/dist/node_modules/@boombot/security/harness-guard/types.d.ts +71 -0
- package/dist/node_modules/@boombot/security/harness-guard/types.js +10 -0
- package/dist/node_modules/@boombot/security/harness-guard/verifier.d.ts +59 -0
- package/dist/node_modules/@boombot/security/harness-guard/verifier.js +169 -0
- package/dist/node_modules/@boombot/security/index.d.ts +5 -0
- package/dist/node_modules/@boombot/security/index.js +9 -0
- package/dist/node_modules/@boombot/security/package.json +9 -0
- package/dist/node_modules/@boombot/security/policy/approval.d.ts +117 -0
- package/dist/node_modules/@boombot/security/policy/approval.js +223 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/claim-extractor.d.ts +10 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/claim-extractor.js +124 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/evidence-ledger.d.ts +25 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/evidence-ledger.js +70 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/gate.d.ts +38 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/gate.js +61 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/grounding-check.d.ts +12 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/grounding-check.js +234 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/index.d.ts +17 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/index.js +13 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/policy.d.ts +15 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/policy.js +39 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/types.d.ts +46 -0
- package/dist/node_modules/@boombot/security/reasoning-guard/types.js +7 -0
- package/dist/node_modules/@boombot/security/security/approval.d.ts +63 -0
- package/dist/node_modules/@boombot/security/security/approval.js +140 -0
- package/dist/node_modules/@boombot/security/security/audit.d.ts +39 -0
- package/dist/node_modules/@boombot/security/security/audit.js +70 -0
- package/dist/node_modules/@boombot/security/security/index.d.ts +12 -0
- package/dist/node_modules/@boombot/security/security/index.js +12 -0
- package/dist/node_modules/@boombot/security/security/trust.d.ts +79 -0
- package/dist/node_modules/@boombot/security/security/trust.js +87 -0
- package/dist/package.json +5 -0
- package/dist/proto/agent_core.proto +56 -0
- package/dist/python/agent-core-python/pyproject.toml +40 -0
- package/dist/python/agent-core-python/src/boombot_agent/__init__.py +5 -0
- package/dist/python/agent-core-python/src/boombot_agent/generated/__init__.py +0 -0
- package/dist/python/agent-core-python/src/boombot_agent/generated/agent_core_pb2.py +54 -0
- package/dist/python/agent-core-python/src/boombot_agent/generated/agent_core_pb2_grpc.py +140 -0
- package/dist/python/agent-core-python/src/boombot_agent/rpc.py +265 -0
- package/dist/python/agent-core-python/src/boombot_agent/turn.py +577 -0
- package/dist/python/agent-core-python/src/boombot_ml/__init__.py +12 -0
- package/dist/python/agent-core-python/src/boombot_ml/embeddings.py +58 -0
- package/dist/python/agent-core-python/src/boombot_ml/training.py +156 -0
- package/dist/python/agent-core-python/uv.lock +2856 -0
- package/dist/web/assets/ChatView-BZrSD-64.js +262 -0
- package/dist/web/assets/ChatView-Cahbjez6.css +1 -0
- package/dist/web/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/dist/web/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/dist/web/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/dist/web/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/dist/web/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/dist/web/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/dist/web/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/dist/web/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/dist/web/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/dist/web/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/dist/web/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/dist/web/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/dist/web/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/dist/web/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/dist/web/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/dist/web/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/dist/web/assets/MemoryView-BJbXqqs7.css +1 -0
- package/dist/web/assets/MemoryView-BfMq_6CD.js +1 -0
- package/dist/web/assets/SchedulesView-B22QmPR-.js +1 -0
- package/dist/web/assets/SchedulesView-C6XK7A8a.css +1 -0
- package/dist/web/assets/SessionsView-C1dqdhxI.css +1 -0
- package/dist/web/assets/SessionsView-DS0-aH2a.js +1 -0
- package/dist/web/assets/TasksView-Dtasg4hd.css +1 -0
- package/dist/web/assets/TasksView-ey0FLsW8.js +2 -0
- package/dist/web/assets/Textarea-DN3Zybl1.js +1 -0
- package/dist/web/assets/Tooltip-Bn2cqFPz.css +1 -0
- package/dist/web/assets/Tooltip-MzV2Gqnc.js +1 -0
- package/dist/web/assets/browser-Bnt73-Ub.js +8 -0
- package/dist/web/assets/index-BL8bi7Yt.css +1 -0
- package/dist/web/assets/index-CuPR73Tn.js +73 -0
- package/dist/web/favicon.svg +4 -0
- package/dist/web/index.html +26 -0
- package/dist/web/logo.jpg +0 -0
- package/dist/web/logo.png +0 -0
- 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,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';
|