@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,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for the BoomBot durable scheduler.
|
|
3
|
+
*
|
|
4
|
+
* A scheduled job contains an opaque ID, owner, schedule,
|
|
5
|
+
* timezone, payload reference, enabled state, concurrency policy, retry
|
|
6
|
+
* policy, and next-run time. Schedules are persisted before acknowledgment.
|
|
7
|
+
*/
|
|
8
|
+
export type ConcurrencyPolicy = 'forbid' | 'allow' | 'replace';
|
|
9
|
+
export type MissedRunPolicy = 'skip' | 'run_once' | 'catch_up_bounded';
|
|
10
|
+
export type RunStatus = 'claimed' | 'running' | 'completed' | 'failed' | 'dead_letter';
|
|
11
|
+
/** User-supplied schedule specification (validated at the trust boundary). */
|
|
12
|
+
export interface ScheduleSpec {
|
|
13
|
+
readonly name: string;
|
|
14
|
+
/** 5-field cron expression, e.g. "0 9 * * 1-5". */
|
|
15
|
+
readonly cron: string;
|
|
16
|
+
/** IANA timezone, e.g. "Asia/Ho_Chi_Minh". */
|
|
17
|
+
readonly timezone: string;
|
|
18
|
+
/**
|
|
19
|
+
* Registered prompt text submitted as an agent turn when the schedule
|
|
20
|
+
* fires. This is inert text — never code, never a shell command.
|
|
21
|
+
*/
|
|
22
|
+
readonly promptText: string;
|
|
23
|
+
readonly enabled?: boolean;
|
|
24
|
+
readonly concurrencyPolicy?: ConcurrencyPolicy;
|
|
25
|
+
readonly missedRunPolicy?: MissedRunPolicy;
|
|
26
|
+
/** Max catch-up runs per tick for `catch_up_bounded`. Default 3. */
|
|
27
|
+
readonly maxCatchUp?: number;
|
|
28
|
+
/** Max attempts per run before dead-letter. Default 3. */
|
|
29
|
+
readonly maxAttempts?: number;
|
|
30
|
+
readonly baseRetryDelayMs?: number;
|
|
31
|
+
readonly maxRetryDelayMs?: number;
|
|
32
|
+
}
|
|
33
|
+
export interface SchedulerJob {
|
|
34
|
+
readonly id: string;
|
|
35
|
+
readonly ownerPrincipalId: string;
|
|
36
|
+
readonly name: string;
|
|
37
|
+
readonly cronExpr: string;
|
|
38
|
+
readonly timezone: string;
|
|
39
|
+
readonly promptText: string;
|
|
40
|
+
readonly enabled: boolean;
|
|
41
|
+
readonly concurrencyPolicy: ConcurrencyPolicy;
|
|
42
|
+
readonly missedRunPolicy: MissedRunPolicy;
|
|
43
|
+
readonly maxCatchUp: number;
|
|
44
|
+
readonly maxAttempts: number;
|
|
45
|
+
readonly baseRetryDelayMs: number;
|
|
46
|
+
readonly maxRetryDelayMs: number;
|
|
47
|
+
/** ISO-8601 UTC of the next scheduled fire, or null when disabled. */
|
|
48
|
+
readonly nextRunAt: string | null;
|
|
49
|
+
readonly createdAt: string;
|
|
50
|
+
readonly updatedAt: string;
|
|
51
|
+
}
|
|
52
|
+
export interface SchedulerRun {
|
|
53
|
+
readonly id: string;
|
|
54
|
+
readonly jobId: string;
|
|
55
|
+
readonly idempotencyKey: string;
|
|
56
|
+
/** ISO-8601 UTC fire time this run serves. */
|
|
57
|
+
readonly scheduledFireAt: string;
|
|
58
|
+
readonly status: RunStatus;
|
|
59
|
+
readonly attempt: number;
|
|
60
|
+
readonly notBeforeAt: string;
|
|
61
|
+
readonly claimedBy: string;
|
|
62
|
+
readonly leaseExpiresAt: string;
|
|
63
|
+
readonly claimedAt: string;
|
|
64
|
+
readonly completedAt: string | null;
|
|
65
|
+
readonly errorCode: string | null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Proof that the caller was authenticated by the HOST's authN layer
|
|
69
|
+
* (SECURITY FIX: confused-deputy / identity-binding gap, medium).
|
|
70
|
+
*
|
|
71
|
+
* `ScheduleRegistry` management methods take this instead of a bare
|
|
72
|
+
* principal-id string. Only `createAuthenticatedContext()` — which the host
|
|
73
|
+
* calls with the principal id from its OWN verified session/auth context —
|
|
74
|
+
* can mint a value carrying the brand: a plain `{ principalId }` object (or
|
|
75
|
+
* a header / JWT claim / plugin-supplied string the host did not verify)
|
|
76
|
+
* fails both the type check and the runtime brand check in
|
|
77
|
+
* `assertAuthenticatedContext()`.
|
|
78
|
+
*
|
|
79
|
+
* HOST INTEGRATION (MUST):
|
|
80
|
+
* - Mint the context from the Gateway's authenticated session ONLY.
|
|
81
|
+
* - NEVER mint from user input, request headers, plugin-supplied data, or
|
|
82
|
+
* unverified token claims. A confused-deputy host that mints from
|
|
83
|
+
* attacker-influenced data re-opens the impersonation gap below.
|
|
84
|
+
*/
|
|
85
|
+
/**
|
|
86
|
+
* Brand key: a module-private runtime symbol, also used as the type-level
|
|
87
|
+
* brand via its `unique symbol` type. Never exported, so only
|
|
88
|
+
* `createAuthenticatedContext()` (this module) can mint a branded context;
|
|
89
|
+
* a forged plain object fails the runtime check in
|
|
90
|
+
* `assertAuthenticatedContext()`.
|
|
91
|
+
*/
|
|
92
|
+
declare const authenticatedBrand: unique symbol;
|
|
93
|
+
export interface AuthenticatedContext {
|
|
94
|
+
readonly principalId: string;
|
|
95
|
+
readonly [authenticatedBrand]: true;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Mint an `AuthenticatedContext`. The host MUST call this with the
|
|
99
|
+
* principal id from its own verified session/auth context — never from
|
|
100
|
+
* user input, headers, or plugin data (see `AuthenticatedContext`).
|
|
101
|
+
*/
|
|
102
|
+
export declare function createAuthenticatedContext(principalId: string): AuthenticatedContext;
|
|
103
|
+
/**
|
|
104
|
+
* Runtime brand check: rejects forged or plain `{ principalId }` objects
|
|
105
|
+
* that were not minted by `createAuthenticatedContext()`. Defense in depth
|
|
106
|
+
* behind the type-level brand.
|
|
107
|
+
*/
|
|
108
|
+
export declare function assertAuthenticatedContext(context: unknown): asserts context is AuthenticatedContext;
|
|
109
|
+
/** Narrow port: who may manage schedules. Wired by the host to Gateway authZ. */
|
|
110
|
+
export interface SchedulerAuthorizer {
|
|
111
|
+
canManage(principalId: string): boolean | Promise<boolean>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Narrow port: submit a turn for a fired schedule. The host wires this to the
|
|
115
|
+
* sessions facade (`turn.submit`); `command_idempotency` dedupes on the
|
|
116
|
+
* idempotency key. The scheduler never executes anything itself.
|
|
117
|
+
*/
|
|
118
|
+
export interface TurnSubmitter {
|
|
119
|
+
submit(input: {
|
|
120
|
+
readonly principalId: string;
|
|
121
|
+
readonly text: string;
|
|
122
|
+
readonly idempotencyKey: string;
|
|
123
|
+
/**
|
|
124
|
+
* Run context, populated by `SchedulerRunner.driveRun` when driving a
|
|
125
|
+
* claimed run. Host submitters (e.g. the gateway scheduler service) use
|
|
126
|
+
* these to record per-attempt delivery outcomes. Optional so existing
|
|
127
|
+
* submitters that only need the narrow port keep compiling.
|
|
128
|
+
*/
|
|
129
|
+
readonly jobId?: string;
|
|
130
|
+
readonly jobName?: string;
|
|
131
|
+
readonly runId?: string;
|
|
132
|
+
readonly attempt?: number;
|
|
133
|
+
}): Promise<{
|
|
134
|
+
readonly turnId: string;
|
|
135
|
+
}>;
|
|
136
|
+
}
|
|
137
|
+
/** Wall-clock source (injectable for tests). */
|
|
138
|
+
export interface WallClock {
|
|
139
|
+
now(): number;
|
|
140
|
+
}
|
|
141
|
+
export type SchedulerErrorCode = 'SCHEDULER_UNAUTHORIZED' | 'SCHEDULER_INVALID_SPEC' | 'SCHEDULER_NOT_FOUND' | 'SCHEDULER_CONFLICT' | 'SCHEDULER_LIMIT_EXCEEDED' | 'SCHEDULER_INVALID_STATE' | 'SCHEDULER_STORAGE_ERROR';
|
|
142
|
+
export declare class SchedulerError extends Error {
|
|
143
|
+
readonly code: SchedulerErrorCode;
|
|
144
|
+
constructor(code: SchedulerErrorCode, message: string, cause?: unknown);
|
|
145
|
+
}
|
|
146
|
+
export declare function unauthorized(message: string): SchedulerError;
|
|
147
|
+
export declare function invalidSpec(message: string): SchedulerError;
|
|
148
|
+
export declare function notFound(message: string): SchedulerError;
|
|
149
|
+
export declare function limitExceeded(message: string): SchedulerError;
|
|
150
|
+
/**
|
|
151
|
+
* The target exists but is in a state that forbids the operation
|
|
152
|
+
* (e.g. `run-now` on a disabled schedule). Client-caused: hosts map this
|
|
153
|
+
* to a 4xx, never a 500.
|
|
154
|
+
*/
|
|
155
|
+
export declare function invalidState(message: string): SchedulerError;
|
|
156
|
+
export declare function storageError(message: string, cause?: unknown): SchedulerError;
|
|
157
|
+
export {};
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for the BoomBot durable scheduler.
|
|
3
|
+
*
|
|
4
|
+
* A scheduled job contains an opaque ID, owner, schedule,
|
|
5
|
+
* timezone, payload reference, enabled state, concurrency policy, retry
|
|
6
|
+
* policy, and next-run time. Schedules are persisted before acknowledgment.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Proof that the caller was authenticated by the HOST's authN layer
|
|
10
|
+
* (SECURITY FIX: confused-deputy / identity-binding gap, medium).
|
|
11
|
+
*
|
|
12
|
+
* `ScheduleRegistry` management methods take this instead of a bare
|
|
13
|
+
* principal-id string. Only `createAuthenticatedContext()` — which the host
|
|
14
|
+
* calls with the principal id from its OWN verified session/auth context —
|
|
15
|
+
* can mint a value carrying the brand: a plain `{ principalId }` object (or
|
|
16
|
+
* a header / JWT claim / plugin-supplied string the host did not verify)
|
|
17
|
+
* fails both the type check and the runtime brand check in
|
|
18
|
+
* `assertAuthenticatedContext()`.
|
|
19
|
+
*
|
|
20
|
+
* HOST INTEGRATION (MUST):
|
|
21
|
+
* - Mint the context from the Gateway's authenticated session ONLY.
|
|
22
|
+
* - NEVER mint from user input, request headers, plugin-supplied data, or
|
|
23
|
+
* unverified token claims. A confused-deputy host that mints from
|
|
24
|
+
* attacker-influenced data re-opens the impersonation gap below.
|
|
25
|
+
*/
|
|
26
|
+
/**
|
|
27
|
+
* Brand key: a module-private runtime symbol, also used as the type-level
|
|
28
|
+
* brand via its `unique symbol` type. Never exported, so only
|
|
29
|
+
* `createAuthenticatedContext()` (this module) can mint a branded context;
|
|
30
|
+
* a forged plain object fails the runtime check in
|
|
31
|
+
* `assertAuthenticatedContext()`.
|
|
32
|
+
*/
|
|
33
|
+
const authenticatedBrand = Symbol('boombot.scheduler.authenticated');
|
|
34
|
+
/**
|
|
35
|
+
* Mint an `AuthenticatedContext`. The host MUST call this with the
|
|
36
|
+
* principal id from its own verified session/auth context — never from
|
|
37
|
+
* user input, headers, or plugin data (see `AuthenticatedContext`).
|
|
38
|
+
*/
|
|
39
|
+
export function createAuthenticatedContext(principalId) {
|
|
40
|
+
if (typeof principalId !== 'string' || principalId.length === 0) {
|
|
41
|
+
throw unauthorized('principalId is required to mint an authenticated context');
|
|
42
|
+
}
|
|
43
|
+
return { principalId, [authenticatedBrand]: true };
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Runtime brand check: rejects forged or plain `{ principalId }` objects
|
|
47
|
+
* that were not minted by `createAuthenticatedContext()`. Defense in depth
|
|
48
|
+
* behind the type-level brand.
|
|
49
|
+
*/
|
|
50
|
+
export function assertAuthenticatedContext(context) {
|
|
51
|
+
if (typeof context !== 'object' ||
|
|
52
|
+
context === null ||
|
|
53
|
+
typeof context.principalId !== 'string' ||
|
|
54
|
+
context[authenticatedBrand] !== true) {
|
|
55
|
+
throw unauthorized('caller context is not authenticated: mint via createAuthenticatedContext() ' +
|
|
56
|
+
'from the host authN layer');
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
export class SchedulerError extends Error {
|
|
60
|
+
code;
|
|
61
|
+
constructor(code, message, cause) {
|
|
62
|
+
super(message, cause === undefined ? undefined : { cause });
|
|
63
|
+
this.name = 'SchedulerError';
|
|
64
|
+
this.code = code;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
export function unauthorized(message) {
|
|
68
|
+
return new SchedulerError('SCHEDULER_UNAUTHORIZED', message);
|
|
69
|
+
}
|
|
70
|
+
export function invalidSpec(message) {
|
|
71
|
+
return new SchedulerError('SCHEDULER_INVALID_SPEC', message);
|
|
72
|
+
}
|
|
73
|
+
export function notFound(message) {
|
|
74
|
+
return new SchedulerError('SCHEDULER_NOT_FOUND', message);
|
|
75
|
+
}
|
|
76
|
+
export function limitExceeded(message) {
|
|
77
|
+
return new SchedulerError('SCHEDULER_LIMIT_EXCEEDED', message);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The target exists but is in a state that forbids the operation
|
|
81
|
+
* (e.g. `run-now` on a disabled schedule). Client-caused: hosts map this
|
|
82
|
+
* to a 4xx, never a 500.
|
|
83
|
+
*/
|
|
84
|
+
export function invalidState(message) {
|
|
85
|
+
return new SchedulerError('SCHEDULER_INVALID_STATE', message);
|
|
86
|
+
}
|
|
87
|
+
export function storageError(message, cause) {
|
|
88
|
+
return new SchedulerError('SCHEDULER_STORAGE_ERROR', message, cause);
|
|
89
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { StepStatus, Task, TaskCheckpoint, TaskEvent, TaskInput, TaskRunner, TaskStatus, TaskStep, TurnRunner, TurnRunnerEvent, } from './types.js';
|
|
2
|
+
export { TaskError } from './types.js';
|
|
3
|
+
export { TaskStore, createTaskStore } from './store.js';
|
|
4
|
+
export { createTaskRunner } from './runner.js';
|
|
5
|
+
export type { TaskRunnerOptions } from './runner.js';
|
|
6
|
+
export { decomposeGoal, planToTaskInput, createAndStartFromGoal, } from './planner.js';
|
|
7
|
+
export type { PlannedStep, TaskPlan, TaskPlannerOptions, } from './planner.js';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// @boombot/core — background task runner with durable checkpoints.
|
|
2
|
+
export { TaskError } from './types.js';
|
|
3
|
+
export { TaskStore, createTaskStore } from './store.js';
|
|
4
|
+
export { createTaskRunner } from './runner.js';
|
|
5
|
+
export { decomposeGoal, planToTaskInput, createAndStartFromGoal, } from './planner.js';
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Task Decomposition & Planner for @boombot/core.
|
|
3
|
+
*
|
|
4
|
+
* Decomposes high-level complex goals into ordered, durable TaskSteps
|
|
5
|
+
* with explicit dependencies, checkpoints, and automated fallback planning.
|
|
6
|
+
*/
|
|
7
|
+
import type { Task, TaskInput, TaskRunner } from './types.js';
|
|
8
|
+
export interface PlannedStep {
|
|
9
|
+
readonly title: string;
|
|
10
|
+
readonly prompt: string;
|
|
11
|
+
readonly description?: string;
|
|
12
|
+
readonly dependencies?: readonly number[];
|
|
13
|
+
}
|
|
14
|
+
export interface TaskPlan {
|
|
15
|
+
readonly goal: string;
|
|
16
|
+
readonly summary: string;
|
|
17
|
+
readonly steps: readonly PlannedStep[];
|
|
18
|
+
readonly totalSteps: number;
|
|
19
|
+
}
|
|
20
|
+
export interface TaskPlannerOptions {
|
|
21
|
+
/** Optional custom LLM decomposition function. */
|
|
22
|
+
readonly decomposeLlm?: (goal: string, context?: string) => Promise<string>;
|
|
23
|
+
/** Maximum number of sub-steps allowed. Default 8. */
|
|
24
|
+
readonly maxSteps?: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Decomposes a high-level goal into an ordered, executable TaskPlan.
|
|
28
|
+
*/
|
|
29
|
+
export declare function decomposeGoal(goal: string, context?: string, options?: TaskPlannerOptions): Promise<TaskPlan>;
|
|
30
|
+
/**
|
|
31
|
+
* Converts a TaskPlan into TaskInput ready for TaskRunner.createAndStart.
|
|
32
|
+
*/
|
|
33
|
+
export declare function planToTaskInput(plan: TaskPlan): TaskInput;
|
|
34
|
+
/**
|
|
35
|
+
* Helper to decompose a goal and immediately launch it in the given TaskRunner.
|
|
36
|
+
*/
|
|
37
|
+
export declare function createAndStartFromGoal(runner: TaskRunner, goal: string, context?: string, options?: TaskPlannerOptions): Promise<Task>;
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dynamic Task Decomposition & Planner for @boombot/core.
|
|
3
|
+
*
|
|
4
|
+
* Decomposes high-level complex goals into ordered, durable TaskSteps
|
|
5
|
+
* with explicit dependencies, checkpoints, and automated fallback planning.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Parses structured JSON response from LLM or extracts steps from bulleted text.
|
|
9
|
+
*/
|
|
10
|
+
function parseLlmPlanJson(raw, goal) {
|
|
11
|
+
try {
|
|
12
|
+
const jsonMatch = raw.match(/\{[\s\S]*\}/);
|
|
13
|
+
if (!jsonMatch)
|
|
14
|
+
return null;
|
|
15
|
+
const parsed = JSON.parse(jsonMatch[0]);
|
|
16
|
+
if (!parsed || !Array.isArray(parsed.steps) || parsed.steps.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
const steps = parsed.steps.map((s, idx) => ({
|
|
20
|
+
title: typeof s.title === 'string' ? s.title : `Step ${idx + 1}`,
|
|
21
|
+
prompt: typeof s.prompt === 'string' && s.prompt.trim()
|
|
22
|
+
? s.prompt.trim()
|
|
23
|
+
: typeof s.title === 'string'
|
|
24
|
+
? s.title
|
|
25
|
+
: `Execute step ${idx + 1}`,
|
|
26
|
+
description: typeof s.description === 'string' ? s.description : undefined,
|
|
27
|
+
dependencies: Array.isArray(s.dependencies)
|
|
28
|
+
? s.dependencies.filter((d) => typeof d === 'number')
|
|
29
|
+
: undefined,
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
goal,
|
|
33
|
+
summary: typeof parsed.summary === 'string' ? parsed.summary : `Plan for: ${goal}`,
|
|
34
|
+
steps,
|
|
35
|
+
totalSteps: steps.length,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Heuristically extracts numbered/bulleted steps from user input if present.
|
|
44
|
+
*/
|
|
45
|
+
function extractHeuristicSteps(text) {
|
|
46
|
+
const lines = text.split('\n').map((l) => l.trim());
|
|
47
|
+
const steps = [];
|
|
48
|
+
const stepPattern = /^(?:(?:\d+[\.\)]|\-|\*)\s+)(.+)$/;
|
|
49
|
+
for (const line of lines) {
|
|
50
|
+
const match = line.match(stepPattern);
|
|
51
|
+
if (match && match[1]) {
|
|
52
|
+
const content = match[1].trim();
|
|
53
|
+
if (content.length > 5) {
|
|
54
|
+
steps.push({
|
|
55
|
+
title: content.slice(0, 50),
|
|
56
|
+
prompt: content,
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return steps;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Standard 4-phase autonomous software engineering lifecycle.
|
|
65
|
+
*/
|
|
66
|
+
function createDefaultDecomposition(goal, context) {
|
|
67
|
+
const ctxHint = context ? ` (Context: ${context})` : '';
|
|
68
|
+
const steps = [
|
|
69
|
+
{
|
|
70
|
+
title: 'Phase 1: Reconnaissance & Inspection',
|
|
71
|
+
prompt: `Inspect codebase, identify required files, analyze dependencies and verify prerequisites for: ${goal}${ctxHint}`,
|
|
72
|
+
description: 'Audit workspace and understand existing architecture before making changes.',
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
title: 'Phase 2: Core Implementation',
|
|
76
|
+
prompt: `Implement core changes, logic, and data models to fulfill goal: ${goal}${ctxHint}`,
|
|
77
|
+
description: 'Perform minimal, targeted implementation adhering to clean architecture.',
|
|
78
|
+
dependencies: [0],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: 'Phase 3: Verification & Test Execution',
|
|
82
|
+
prompt: `Verify changes for: ${goal}. Run unit tests, typechecks, linter and inspect edge cases.`,
|
|
83
|
+
description: 'Run automated test suites and ensure zero regressions.',
|
|
84
|
+
dependencies: [1],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
title: 'Phase 4: Polish & Documentation',
|
|
88
|
+
prompt: `Review diffs, ensure no secrets or debug statements remain, and document changes for: ${goal}`,
|
|
89
|
+
description: 'Finalize deliverable with clean git state and audit verification.',
|
|
90
|
+
dependencies: [2],
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
return {
|
|
94
|
+
goal,
|
|
95
|
+
summary: `Autonomous Plan: ${goal.slice(0, 60)}`,
|
|
96
|
+
steps,
|
|
97
|
+
totalSteps: steps.length,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Decomposes a high-level goal into an ordered, executable TaskPlan.
|
|
102
|
+
*/
|
|
103
|
+
export async function decomposeGoal(goal, context, options = {}) {
|
|
104
|
+
const maxSteps = options.maxSteps ?? 8;
|
|
105
|
+
// 1. If LLM decomposer function provided, attempt structured decomposition
|
|
106
|
+
if (options.decomposeLlm) {
|
|
107
|
+
try {
|
|
108
|
+
const raw = await options.decomposeLlm(goal, context);
|
|
109
|
+
const plan = parseLlmPlanJson(raw, goal);
|
|
110
|
+
if (plan && plan.steps.length > 0) {
|
|
111
|
+
return {
|
|
112
|
+
...plan,
|
|
113
|
+
steps: plan.steps.slice(0, maxSteps),
|
|
114
|
+
totalSteps: Math.min(plan.steps.length, maxSteps),
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Fall through to heuristic / rule-based planner
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// 2. Check for explicit bulleted steps in the goal prompt
|
|
123
|
+
const userSteps = extractHeuristicSteps(goal);
|
|
124
|
+
if (userSteps.length >= 2) {
|
|
125
|
+
const limited = userSteps.slice(0, maxSteps);
|
|
126
|
+
return {
|
|
127
|
+
goal,
|
|
128
|
+
summary: `User Specified Steps (${limited.length} phases)`,
|
|
129
|
+
steps: limited,
|
|
130
|
+
totalSteps: limited.length,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
// 3. Fallback to robust 4-phase autonomous software engineering lifecycle
|
|
134
|
+
return createDefaultDecomposition(goal, context);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Converts a TaskPlan into TaskInput ready for TaskRunner.createAndStart.
|
|
138
|
+
*/
|
|
139
|
+
export function planToTaskInput(plan) {
|
|
140
|
+
return {
|
|
141
|
+
title: plan.summary,
|
|
142
|
+
steps: plan.steps.map((s) => ({
|
|
143
|
+
prompt: `[${s.title}] ${s.prompt}`,
|
|
144
|
+
})),
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Helper to decompose a goal and immediately launch it in the given TaskRunner.
|
|
149
|
+
*/
|
|
150
|
+
export async function createAndStartFromGoal(runner, goal, context, options = {}) {
|
|
151
|
+
const plan = await decomposeGoal(goal, context, options);
|
|
152
|
+
const input = planToTaskInput(plan);
|
|
153
|
+
return runner.createAndStart(input);
|
|
154
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TaskStore } from './store.js';
|
|
2
|
+
import type { TaskEvent, TaskRunner, TurnRunner } from './types.js';
|
|
3
|
+
export interface TaskRunnerOptions {
|
|
4
|
+
store: TaskStore;
|
|
5
|
+
turnRunner: TurnRunner;
|
|
6
|
+
onEvent?: (e: TaskEvent) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function createTaskRunner(options: TaskRunnerOptions): TaskRunner;
|