@bubblebrain-ai/bubble 0.0.63 → 0.0.64
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 +437 -11
- package/dist/agent/abort-errors.d.ts +18 -0
- package/dist/agent/abort-errors.js +51 -0
- package/dist/agent/budget-ledger.d.ts +20 -0
- package/dist/agent/budget-ledger.js +45 -0
- package/dist/agent/categories.d.ts +100 -0
- package/dist/agent/categories.js +203 -0
- package/dist/agent/change-tracker.d.ts +40 -0
- package/dist/agent/change-tracker.js +89 -0
- package/dist/agent/child-runner.d.ts +64 -0
- package/dist/agent/child-runner.js +405 -0
- package/dist/agent/input-controller.d.ts +14 -0
- package/dist/agent/input-controller.js +43 -0
- package/dist/agent/internal-reminder-sanitizer.d.ts +25 -0
- package/dist/agent/internal-reminder-sanitizer.js +297 -0
- package/dist/agent/profiles.d.ts +76 -0
- package/dist/agent/profiles.js +526 -0
- package/dist/agent/provider-fingerprint.d.ts +6 -0
- package/dist/agent/provider-fingerprint.js +89 -0
- package/dist/agent/resident-history.d.ts +7 -0
- package/dist/agent/resident-history.js +61 -0
- package/dist/agent/result-integrator.d.ts +22 -0
- package/dist/agent/result-integrator.js +50 -0
- package/dist/agent/routing-catalog.d.ts +131 -0
- package/dist/agent/routing-catalog.js +260 -0
- package/dist/agent/structured-output.d.ts +37 -0
- package/dist/agent/structured-output.js +193 -0
- package/dist/agent/subagent/router.d.ts +65 -0
- package/dist/agent/subagent/router.js +203 -0
- package/dist/agent/subagent/runtime.d.ts +235 -0
- package/dist/agent/subagent/runtime.js +835 -0
- package/dist/agent/subagent-control.d.ts +100 -0
- package/dist/agent/subagent-control.js +70 -0
- package/dist/agent/subagent-lifecycle-reminder.d.ts +3 -0
- package/dist/agent/subagent-lifecycle-reminder.js +112 -0
- package/dist/agent/subagent-route-format.d.ts +8 -0
- package/dist/agent/subagent-route-format.js +18 -0
- package/dist/agent/subagent-scheduler.d.ts +105 -0
- package/dist/agent/subagent-scheduler.js +287 -0
- package/dist/agent/subagent-store.d.ts +57 -0
- package/dist/agent/subagent-store.js +180 -0
- package/dist/agent/subagent-summary.d.ts +30 -0
- package/dist/agent/subagent-summary.js +74 -0
- package/dist/agent/subagent-wait-guidance.d.ts +2 -0
- package/dist/agent/subagent-wait-guidance.js +8 -0
- package/dist/agent/subtask-policy.d.ts +13 -0
- package/dist/agent/subtask-policy.js +56 -0
- package/dist/agent/task-lifecycle-reminder.d.ts +26 -0
- package/dist/agent/task-lifecycle-reminder.js +59 -0
- package/dist/agent/tool-intent.d.ts +45 -0
- package/dist/agent/tool-intent.js +318 -0
- package/dist/agent/tool-visibility.d.ts +10 -0
- package/dist/agent/tool-visibility.js +6 -0
- package/dist/agent/transcript-helpers.d.ts +20 -0
- package/dist/agent/transcript-helpers.js +63 -0
- package/dist/agent/update-queue.d.ts +13 -0
- package/dist/agent/update-queue.js +69 -0
- package/dist/agent/workflow/control.d.ts +60 -0
- package/dist/agent/workflow/control.js +62 -0
- package/dist/agent/workflow/errors.d.ts +16 -0
- package/dist/agent/workflow/errors.js +24 -0
- package/dist/agent/workflow/runs.d.ts +73 -0
- package/dist/agent/workflow/runs.js +160 -0
- package/dist/agent/workflow/runtime.d.ts +88 -0
- package/dist/agent/workflow/runtime.js +319 -0
- package/dist/agent/worktree.d.ts +29 -0
- package/dist/agent/worktree.js +73 -0
- package/dist/agent.d.ts +460 -0
- package/dist/agent.js +2210 -0
- package/dist/anthropic-thinking.d.ts +4 -0
- package/dist/anthropic-thinking.js +11 -0
- package/dist/approval/controller.d.ts +71 -0
- package/dist/approval/controller.js +286 -0
- package/dist/approval/danger.d.ts +13 -0
- package/dist/approval/danger.js +55 -0
- package/dist/approval/diff-hunks.d.ts +12 -0
- package/dist/approval/diff-hunks.js +32 -0
- package/dist/approval/protected-paths.d.ts +1 -0
- package/dist/approval/protected-paths.js +35 -0
- package/dist/approval/session-cache.d.ts +21 -0
- package/dist/approval/session-cache.js +38 -0
- package/dist/approval/tool-helper.d.ts +14 -0
- package/dist/approval/tool-helper.js +47 -0
- package/dist/approval/types.d.ts +146 -0
- package/dist/approval/types.js +8 -0
- package/dist/bin.d.ts +2 -0
- package/dist/bin.js +3 -0
- package/dist/bubble-home.d.ts +8 -0
- package/dist/bubble-home.js +19 -0
- package/dist/checkpoints.d.ts +57 -0
- package/dist/checkpoints.js +0 -0
- package/dist/cli.d.ts +37 -0
- package/dist/cli.js +175 -0
- package/dist/clipboard.d.ts +14 -0
- package/dist/clipboard.js +132 -0
- package/dist/config.d.ts +96 -0
- package/dist/config.js +287 -0
- package/dist/context/budget.d.ts +28 -0
- package/dist/context/budget.js +130 -0
- package/dist/context/checkpoint.d.ts +18 -0
- package/dist/context/checkpoint.js +117 -0
- package/dist/context/compact-llm.d.ts +25 -0
- package/dist/context/compact-llm.js +175 -0
- package/dist/context/compact.d.ts +124 -0
- package/dist/context/compact.js +635 -0
- package/dist/context/compaction-files.d.ts +44 -0
- package/dist/context/compaction-files.js +148 -0
- package/dist/context/llm-compactor.d.ts +53 -0
- package/dist/context/llm-compactor.js +424 -0
- package/dist/context/overflow.d.ts +9 -0
- package/dist/context/overflow.js +50 -0
- package/dist/context/projector.d.ts +34 -0
- package/dist/context/projector.js +251 -0
- package/dist/context/prune.d.ts +26 -0
- package/dist/context/prune.js +171 -0
- package/dist/context/session-write-lock.d.ts +20 -0
- package/dist/context/session-write-lock.js +162 -0
- package/dist/context/token-estimator.d.ts +14 -0
- package/dist/context/token-estimator.js +106 -0
- package/dist/context/tool-images.d.ts +3 -0
- package/dist/context/tool-images.js +35 -0
- package/dist/context/tool-output-truncate.d.ts +24 -0
- package/dist/context/tool-output-truncate.js +181 -0
- package/dist/context/usage.d.ts +34 -0
- package/dist/context/usage.js +230 -0
- package/dist/debug-trace.d.ts +27 -0
- package/dist/debug-trace.js +401 -0
- package/dist/diff-stats.d.ts +5 -0
- package/dist/diff-stats.js +21 -0
- package/dist/external-runtime/grok-acp.d.ts +56 -0
- package/dist/external-runtime/grok-acp.js +386 -0
- package/dist/external-runtime/grok-binary.d.ts +25 -0
- package/dist/external-runtime/grok-binary.js +108 -0
- package/dist/external-runtime/grok-errors.d.ts +7 -0
- package/dist/external-runtime/grok-errors.js +15 -0
- package/dist/external-runtime/grok-input-policy.d.ts +58 -0
- package/dist/external-runtime/grok-input-policy.js +52 -0
- package/dist/external-runtime/grok-ndjson.d.ts +14 -0
- package/dist/external-runtime/grok-ndjson.js +193 -0
- package/dist/external-runtime/grok-network.d.ts +15 -0
- package/dist/external-runtime/grok-network.js +81 -0
- package/dist/external-runtime/grok-preflight.d.ts +28 -0
- package/dist/external-runtime/grok-preflight.js +194 -0
- package/dist/external-runtime/grok-process.d.ts +26 -0
- package/dist/external-runtime/grok-process.js +184 -0
- package/dist/external-runtime/grok-profile.d.ts +32 -0
- package/dist/external-runtime/grok-profile.js +419 -0
- package/dist/external-runtime/grok-provider.d.ts +31 -0
- package/dist/external-runtime/grok-provider.js +41 -0
- package/dist/external-runtime/grok-runtime.d.ts +91 -0
- package/dist/external-runtime/grok-runtime.js +882 -0
- package/dist/external-runtime/index.d.ts +13 -0
- package/dist/external-runtime/index.js +13 -0
- package/dist/external-runtime/session-policy.d.ts +11 -0
- package/dist/external-runtime/session-policy.js +30 -0
- package/dist/external-runtime/types.d.ts +65 -0
- package/dist/external-runtime/types.js +1 -0
- package/dist/feedback/collect.d.ts +7 -0
- package/dist/feedback/collect.js +119 -0
- package/dist/feedback/config.d.ts +14 -0
- package/dist/feedback/config.js +16 -0
- package/dist/feedback/redact.d.ts +1 -0
- package/dist/feedback/redact.js +25 -0
- package/dist/feedback/submit.d.ts +6 -0
- package/dist/feedback/submit.js +43 -0
- package/dist/feedback/types.d.ts +22 -0
- package/dist/feedback/types.js +1 -0
- package/dist/feishu/agent-host/approval-card.d.ts +11 -0
- package/dist/feishu/agent-host/approval-card.js +85 -0
- package/dist/feishu/agent-host/approval-ui.d.ts +59 -0
- package/dist/feishu/agent-host/approval-ui.js +214 -0
- package/dist/feishu/agent-host/run-driver.d.ts +51 -0
- package/dist/feishu/agent-host/run-driver.js +397 -0
- package/dist/feishu/agent-host/runtime-deps.d.ts +33 -0
- package/dist/feishu/agent-host/runtime-deps.js +8 -0
- package/dist/feishu/card/budget.d.ts +40 -0
- package/dist/feishu/card/budget.js +134 -0
- package/dist/feishu/card/renderer.d.ts +29 -0
- package/dist/feishu/card/renderer.js +245 -0
- package/dist/feishu/card/run-state-types.d.ts +49 -0
- package/dist/feishu/card/run-state-types.js +15 -0
- package/dist/feishu/card/run-state.d.ts +21 -0
- package/dist/feishu/card/run-state.js +223 -0
- package/dist/feishu/channel/channel.d.ts +52 -0
- package/dist/feishu/channel/channel.js +74 -0
- package/dist/feishu/config.d.ts +24 -0
- package/dist/feishu/config.js +97 -0
- package/dist/feishu/format.d.ts +6 -0
- package/dist/feishu/format.js +14 -0
- package/dist/feishu/index.d.ts +4 -0
- package/dist/feishu/index.js +4 -0
- package/dist/feishu/logger.d.ts +31 -0
- package/dist/feishu/logger.js +62 -0
- package/dist/feishu/paths.d.ts +12 -0
- package/dist/feishu/paths.js +38 -0
- package/dist/feishu/process-registry.d.ts +29 -0
- package/dist/feishu/process-registry.js +90 -0
- package/dist/feishu/router/commands.d.ts +38 -0
- package/dist/feishu/router/commands.js +286 -0
- package/dist/feishu/router/event-router.d.ts +40 -0
- package/dist/feishu/router/event-router.js +208 -0
- package/dist/feishu/router/whitelist.d.ts +23 -0
- package/dist/feishu/router/whitelist.js +20 -0
- package/dist/feishu/runtime/active-runs.d.ts +32 -0
- package/dist/feishu/runtime/active-runs.js +84 -0
- package/dist/feishu/runtime/pending-queue.d.ts +36 -0
- package/dist/feishu/runtime/pending-queue.js +98 -0
- package/dist/feishu/runtime/process-pool.d.ts +29 -0
- package/dist/feishu/runtime/process-pool.js +49 -0
- package/dist/feishu/schema.d.ts +17 -0
- package/dist/feishu/schema.js +252 -0
- package/dist/feishu/scope/scope-registry.d.ts +39 -0
- package/dist/feishu/scope/scope-registry.js +148 -0
- package/dist/feishu/scope/session-binder.d.ts +44 -0
- package/dist/feishu/scope/session-binder.js +100 -0
- package/dist/feishu/scope/session-store.d.ts +24 -0
- package/dist/feishu/scope/session-store.js +73 -0
- package/dist/feishu/secrets.d.ts +37 -0
- package/dist/feishu/secrets.js +129 -0
- package/dist/feishu/serve.d.ts +12 -0
- package/dist/feishu/serve.js +302 -0
- package/dist/feishu/types.d.ts +75 -0
- package/dist/feishu/types.js +23 -0
- package/dist/feishu/wizard.d.ts +24 -0
- package/dist/feishu/wizard.js +121 -0
- package/dist/goal/command.d.ts +20 -0
- package/dist/goal/command.js +76 -0
- package/dist/goal/engine.d.ts +33 -0
- package/dist/goal/engine.js +65 -0
- package/dist/goal/format.d.ts +18 -0
- package/dist/goal/format.js +112 -0
- package/dist/goal/prompts.d.ts +13 -0
- package/dist/goal/prompts.js +84 -0
- package/dist/goal/store.d.ts +64 -0
- package/dist/goal/store.js +174 -0
- package/dist/goal/tools.d.ts +13 -0
- package/dist/goal/tools.js +67 -0
- package/dist/goal/usage.d.ts +2 -0
- package/dist/goal/usage.js +3 -0
- package/dist/hooks/config.d.ts +9 -0
- package/dist/hooks/config.js +278 -0
- package/dist/hooks/controller.d.ts +24 -0
- package/dist/hooks/controller.js +254 -0
- package/dist/hooks/index.d.ts +6 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/log.d.ts +14 -0
- package/dist/hooks/log.js +54 -0
- package/dist/hooks/runner.d.ts +5 -0
- package/dist/hooks/runner.js +225 -0
- package/dist/hooks/trust.d.ts +37 -0
- package/dist/hooks/trust.js +143 -0
- package/dist/hooks/types.d.ts +173 -0
- package/dist/hooks/types.js +46 -0
- package/dist/loop/engine.d.ts +29 -0
- package/dist/loop/engine.js +63 -0
- package/dist/lsp/config.d.ts +18 -0
- package/dist/lsp/config.js +58 -0
- package/dist/lsp/diagnostics.d.ts +24 -0
- package/dist/lsp/diagnostics.js +103 -0
- package/dist/lsp/index.d.ts +3 -0
- package/dist/lsp/index.js +3 -0
- package/dist/lsp/service.d.ts +97 -0
- package/dist/lsp/service.js +815 -0
- package/dist/main.d.ts +5 -0
- package/dist/main.js +984 -0
- package/dist/mcp/client.d.ts +68 -0
- package/dist/mcp/client.js +177 -0
- package/dist/mcp/config.d.ts +30 -0
- package/dist/mcp/config.js +144 -0
- package/dist/mcp/manager.d.ts +67 -0
- package/dist/mcp/manager.js +328 -0
- package/dist/mcp/name.d.ts +26 -0
- package/dist/mcp/name.js +40 -0
- package/dist/mcp/transports.d.ts +54 -0
- package/dist/mcp/transports.js +267 -0
- package/dist/mcp/types.d.ts +111 -0
- package/dist/mcp/types.js +14 -0
- package/dist/memory/db.d.ts +65 -0
- package/dist/memory/db.js +332 -0
- package/dist/memory/index.d.ts +10 -0
- package/dist/memory/index.js +10 -0
- package/dist/memory/paths.d.ts +18 -0
- package/dist/memory/paths.js +38 -0
- package/dist/memory/phase1.d.ts +23 -0
- package/dist/memory/phase1.js +292 -0
- package/dist/memory/phase2.d.ts +19 -0
- package/dist/memory/phase2.js +119 -0
- package/dist/memory/prompts.d.ts +19 -0
- package/dist/memory/prompts.js +104 -0
- package/dist/memory/reset.d.ts +1 -0
- package/dist/memory/reset.js +13 -0
- package/dist/memory/session-policy.d.ts +25 -0
- package/dist/memory/session-policy.js +55 -0
- package/dist/memory/start.d.ts +24 -0
- package/dist/memory/start.js +50 -0
- package/dist/memory/storage.d.ts +11 -0
- package/dist/memory/storage.js +95 -0
- package/dist/memory/store.d.ts +43 -0
- package/dist/memory/store.js +193 -0
- package/dist/memory/usage.d.ts +1 -0
- package/dist/memory/usage.js +38 -0
- package/dist/model-catalog.d.ts +65 -0
- package/dist/model-catalog.js +387 -0
- package/dist/model-config.d.ts +40 -0
- package/dist/model-config.js +74 -0
- package/dist/model-data.generated.d.ts +16 -0
- package/dist/model-data.generated.js +275 -0
- package/dist/model-pricing.d.ts +54 -0
- package/dist/model-pricing.js +244 -0
- package/dist/model-selection.d.ts +7 -0
- package/dist/model-selection.js +18 -0
- package/dist/network/chatgpt-transport.d.ts +16 -0
- package/dist/network/chatgpt-transport.js +232 -0
- package/dist/network/errors.d.ts +47 -0
- package/dist/network/errors.js +48 -0
- package/dist/network/provider-transport-log.d.ts +12 -0
- package/dist/network/provider-transport-log.js +32 -0
- package/dist/network/provider-transport.d.ts +37 -0
- package/dist/network/provider-transport.js +256 -0
- package/dist/network/retry.d.ts +34 -0
- package/dist/network/retry.js +97 -0
- package/dist/network/system-proxy.d.ts +18 -0
- package/dist/network/system-proxy.js +175 -0
- package/dist/oauth/grok.d.ts +26 -0
- package/dist/oauth/grok.js +251 -0
- package/dist/oauth/index.d.ts +4 -0
- package/dist/oauth/index.js +3 -0
- package/dist/oauth/openai-codex.d.ts +15 -0
- package/dist/oauth/openai-codex.js +193 -0
- package/dist/oauth/refresh-control.d.ts +12 -0
- package/dist/oauth/refresh-control.js +42 -0
- package/dist/oauth/storage.d.ts +88 -0
- package/dist/oauth/storage.js +357 -0
- package/dist/oauth/types.d.ts +15 -0
- package/dist/oauth/types.js +1 -0
- package/dist/orchestrator/default-hooks.d.ts +22 -0
- package/dist/orchestrator/default-hooks.js +127 -0
- package/dist/orchestrator/hooks.d.ts +69 -0
- package/dist/orchestrator/hooks.js +52 -0
- package/dist/permission/mode.d.ts +19 -0
- package/dist/permission/mode.js +16 -0
- package/dist/permissions/rule.d.ts +42 -0
- package/dist/permissions/rule.js +293 -0
- package/dist/permissions/settings.d.ts +97 -0
- package/dist/permissions/settings.js +289 -0
- package/dist/permissions/shell-command.d.ts +36 -0
- package/dist/permissions/shell-command.js +226 -0
- package/dist/permissions/trust-prompt.d.ts +10 -0
- package/dist/permissions/trust-prompt.js +34 -0
- package/dist/permissions/trust.d.ts +26 -0
- package/dist/permissions/trust.js +113 -0
- package/dist/permissions/types.d.ts +61 -0
- package/dist/permissions/types.js +14 -0
- package/dist/print-output.d.ts +98 -0
- package/dist/print-output.js +117 -0
- package/dist/prompt/compose.d.ts +19 -0
- package/dist/prompt/compose.js +110 -0
- package/dist/prompt/delegation.d.ts +14 -0
- package/dist/prompt/delegation.js +100 -0
- package/dist/prompt/environment.d.ts +12 -0
- package/dist/prompt/environment.js +55 -0
- package/dist/prompt/provider-prompts/anthropic.d.ts +1 -0
- package/dist/prompt/provider-prompts/anthropic.js +5 -0
- package/dist/prompt/provider-prompts/codex.d.ts +1 -0
- package/dist/prompt/provider-prompts/codex.js +5 -0
- package/dist/prompt/provider-prompts/deepseek.d.ts +1 -0
- package/dist/prompt/provider-prompts/deepseek.js +7 -0
- package/dist/prompt/provider-prompts/default.d.ts +1 -0
- package/dist/prompt/provider-prompts/default.js +6 -0
- package/dist/prompt/provider-prompts/gemini.d.ts +1 -0
- package/dist/prompt/provider-prompts/gemini.js +5 -0
- package/dist/prompt/provider-prompts/glm.d.ts +1 -0
- package/dist/prompt/provider-prompts/glm.js +7 -0
- package/dist/prompt/provider-prompts/gpt.d.ts +1 -0
- package/dist/prompt/provider-prompts/gpt.js +5 -0
- package/dist/prompt/provider-prompts/kimi.d.ts +1 -0
- package/dist/prompt/provider-prompts/kimi.js +8 -0
- package/dist/prompt/reminders.d.ts +33 -0
- package/dist/prompt/reminders.js +135 -0
- package/dist/prompt/routing.d.ts +14 -0
- package/dist/prompt/routing.js +71 -0
- package/dist/prompt/runtime.d.ts +12 -0
- package/dist/prompt/runtime.js +40 -0
- package/dist/prompt/task-reminders.d.ts +12 -0
- package/dist/prompt/task-reminders.js +64 -0
- package/dist/provider-ai-sdk.d.ts +59 -0
- package/dist/provider-ai-sdk.js +541 -0
- package/dist/provider-anthropic.d.ts +126 -0
- package/dist/provider-anthropic.js +940 -0
- package/dist/provider-ark-responses.d.ts +29 -0
- package/dist/provider-ark-responses.js +518 -0
- package/dist/provider-artifacts.d.ts +7 -0
- package/dist/provider-artifacts.js +60 -0
- package/dist/provider-error-record.d.ts +43 -0
- package/dist/provider-error-record.js +213 -0
- package/dist/provider-grok.d.ts +50 -0
- package/dist/provider-grok.js +110 -0
- package/dist/provider-model-policy.d.ts +16 -0
- package/dist/provider-model-policy.js +33 -0
- package/dist/provider-openai-codex.d.ts +66 -0
- package/dist/provider-openai-codex.js +781 -0
- package/dist/provider-registry.d.ts +197 -0
- package/dist/provider-registry.js +1194 -0
- package/dist/provider-transform.d.ts +12 -0
- package/dist/provider-transform.js +293 -0
- package/dist/provider-zen-errors.d.ts +9 -0
- package/dist/provider-zen-errors.js +36 -0
- package/dist/provider.d.ts +85 -0
- package/dist/provider.js +925 -0
- package/dist/question/controller.d.ts +22 -0
- package/dist/question/controller.js +98 -0
- package/dist/question/index.d.ts +2 -0
- package/dist/question/index.js +2 -0
- package/dist/question/normalize.d.ts +6 -0
- package/dist/question/normalize.js +11 -0
- package/dist/question/types.d.ts +42 -0
- package/dist/question/types.js +6 -0
- package/dist/reasoning-debug.d.ts +7 -0
- package/dist/reasoning-debug.js +33 -0
- package/dist/rewind.d.ts +20 -0
- package/dist/rewind.js +29 -0
- package/dist/sdk/index.d.ts +319 -0
- package/dist/sdk/index.js +1068 -0
- package/dist/sdk/replay-event-log.d.ts +26 -0
- package/dist/sdk/replay-event-log.js +122 -0
- package/dist/sdk/session-turn-coordinator.d.ts +45 -0
- package/dist/sdk/session-turn-coordinator.js +227 -0
- package/dist/session-context-fence.d.ts +16 -0
- package/dist/session-context-fence.js +26 -0
- package/dist/session-log.d.ts +25 -0
- package/dist/session-log.js +444 -0
- package/dist/session-title.d.ts +16 -0
- package/dist/session-title.js +131 -0
- package/dist/session-types.d.ts +86 -0
- package/dist/session-types.js +1 -0
- package/dist/session.d.ts +135 -0
- package/dist/session.js +664 -0
- package/dist/skills/discovery.d.ts +12 -0
- package/dist/skills/discovery.js +166 -0
- package/dist/skills/format.d.ts +32 -0
- package/dist/skills/format.js +68 -0
- package/dist/skills/frontmatter.d.ts +5 -0
- package/dist/skills/frontmatter.js +60 -0
- package/dist/skills/invocation.d.ts +8 -0
- package/dist/skills/invocation.js +33 -0
- package/dist/skills/registry.d.ts +28 -0
- package/dist/skills/registry.js +79 -0
- package/dist/skills/types.d.ts +34 -0
- package/dist/skills/types.js +1 -0
- package/dist/slash-commands/commands.d.ts +10 -0
- package/dist/slash-commands/commands.js +1251 -0
- package/dist/slash-commands/feishu.d.ts +17 -0
- package/dist/slash-commands/feishu.js +400 -0
- package/dist/slash-commands/index.d.ts +4 -0
- package/dist/slash-commands/index.js +8 -0
- package/dist/slash-commands/registry.d.ts +32 -0
- package/dist/slash-commands/registry.js +73 -0
- package/dist/slash-commands/types.d.ts +109 -0
- package/dist/slash-commands/types.js +1 -0
- package/dist/slash-commands/unified.d.ts +38 -0
- package/dist/slash-commands/unified.js +38 -0
- package/dist/stats/usage.d.ts +59 -0
- package/dist/stats/usage.js +485 -0
- package/dist/stream-json.d.ts +13 -0
- package/dist/stream-json.js +74 -0
- package/dist/system-prompt.d.ts +40 -0
- package/dist/system-prompt.js +7 -0
- package/dist/tasks/manager.d.ts +145 -0
- package/dist/tasks/manager.js +634 -0
- package/dist/tasks/process-utils.d.ts +10 -0
- package/dist/tasks/process-utils.js +49 -0
- package/dist/tasks/promotion.d.ts +17 -0
- package/dist/tasks/promotion.js +30 -0
- package/dist/tasks/wake.d.ts +53 -0
- package/dist/tasks/wake.js +125 -0
- package/dist/text-display.d.ts +3 -0
- package/dist/text-display.js +25 -0
- package/dist/tools/agent-lifecycle.d.ts +30 -0
- package/dist/tools/agent-lifecycle.js +790 -0
- package/dist/tools/bash.d.ts +23 -0
- package/dist/tools/bash.js +443 -0
- package/dist/tools/child-tools.d.ts +41 -0
- package/dist/tools/child-tools.js +122 -0
- package/dist/tools/edit-apply.d.ts +25 -0
- package/dist/tools/edit-apply.js +274 -0
- package/dist/tools/edit.d.ts +18 -0
- package/dist/tools/edit.js +200 -0
- package/dist/tools/exa-mcp.d.ts +3 -0
- package/dist/tools/exa-mcp.js +74 -0
- package/dist/tools/exit-plan-mode.d.ts +22 -0
- package/dist/tools/exit-plan-mode.js +79 -0
- package/dist/tools/file-mutation-queue.d.ts +2 -0
- package/dist/tools/file-mutation-queue.js +43 -0
- package/dist/tools/file-state.d.ts +48 -0
- package/dist/tools/file-state.js +76 -0
- package/dist/tools/grep.d.ts +9 -0
- package/dist/tools/grep.js +387 -0
- package/dist/tools/index.d.ts +63 -0
- package/dist/tools/index.js +76 -0
- package/dist/tools/ls.d.ts +3 -0
- package/dist/tools/ls.js +85 -0
- package/dist/tools/lsp.d.ts +4 -0
- package/dist/tools/lsp.js +95 -0
- package/dist/tools/memory.d.ts +8 -0
- package/dist/tools/memory.js +77 -0
- package/dist/tools/path-utils.d.ts +8 -0
- package/dist/tools/path-utils.js +53 -0
- package/dist/tools/prompt-metadata.d.ts +3 -0
- package/dist/tools/prompt-metadata.js +17 -0
- package/dist/tools/question.d.ts +3 -0
- package/dist/tools/question.js +177 -0
- package/dist/tools/read.d.ts +8 -0
- package/dist/tools/read.js +309 -0
- package/dist/tools/sensitive-paths.d.ts +11 -0
- package/dist/tools/sensitive-paths.js +106 -0
- package/dist/tools/server-manager.d.ts +6 -0
- package/dist/tools/server-manager.js +6 -0
- package/dist/tools/server.d.ts +6 -0
- package/dist/tools/server.js +249 -0
- package/dist/tools/skill-search.d.ts +10 -0
- package/dist/tools/skill-search.js +134 -0
- package/dist/tools/skill.d.ts +7 -0
- package/dist/tools/skill.js +81 -0
- package/dist/tools/task-tools.d.ts +10 -0
- package/dist/tools/task-tools.js +133 -0
- package/dist/tools/tool-search.d.ts +23 -0
- package/dist/tools/tool-search.js +145 -0
- package/dist/tools/web-fetch.d.ts +6 -0
- package/dist/tools/web-fetch.js +76 -0
- package/dist/tools/web-search.d.ts +5 -0
- package/dist/tools/web-search.js +50 -0
- package/dist/tools/write.d.ts +10 -0
- package/dist/tools/write.js +155 -0
- package/dist/tui/animation-clock.d.ts +14 -0
- package/dist/tui/animation-clock.js +34 -0
- package/dist/tui/app.d.ts +176 -0
- package/dist/tui/app.js +1659 -0
- package/dist/tui/components/approval-dialog.d.ts +43 -0
- package/dist/tui/components/approval-dialog.js +212 -0
- package/dist/tui/components/bottom-sheet.d.ts +9 -0
- package/dist/tui/components/bottom-sheet.js +32 -0
- package/dist/tui/components/context-info.d.ts +54 -0
- package/dist/tui/components/context-info.js +388 -0
- package/dist/tui/components/feedback-dialog.d.ts +56 -0
- package/dist/tui/components/feedback-dialog.js +262 -0
- package/dist/tui/components/feishu-setup-dialog.d.ts +65 -0
- package/dist/tui/components/feishu-setup-dialog.js +332 -0
- package/dist/tui/components/image-preview.d.ts +32 -0
- package/dist/tui/components/image-preview.js +130 -0
- package/dist/tui/components/plan-dialog.d.ts +34 -0
- package/dist/tui/components/plan-dialog.js +196 -0
- package/dist/tui/components/provider-key-input.d.ts +18 -0
- package/dist/tui/components/provider-key-input.js +49 -0
- package/dist/tui/components/question-dialog.d.ts +25 -0
- package/dist/tui/components/question-dialog.js +263 -0
- package/dist/tui/components/responsive-transcript.d.ts +31 -0
- package/dist/tui/components/responsive-transcript.js +77 -0
- package/dist/tui/components/rewind-picker.d.ts +62 -0
- package/dist/tui/components/rewind-picker.js +317 -0
- package/dist/tui/components/session-picker.d.ts +49 -0
- package/dist/tui/components/session-picker.js +303 -0
- package/dist/tui/components/skills-panel.d.ts +63 -0
- package/dist/tui/components/skills-panel.js +582 -0
- package/dist/tui/components/stats-panel.d.ts +40 -0
- package/dist/tui/components/stats-panel.js +301 -0
- package/dist/tui/components/streaming-message.d.ts +69 -0
- package/dist/tui/components/streaming-message.js +398 -0
- package/dist/tui/components/subagent-inspector.d.ts +28 -0
- package/dist/tui/components/subagent-inspector.js +127 -0
- package/dist/tui/components/task-inspector.d.ts +26 -0
- package/dist/tui/components/task-inspector.js +70 -0
- package/dist/tui/components/tasks-pane.d.ts +126 -0
- package/dist/tui/components/tasks-pane.js +566 -0
- package/dist/tui/components/transcript.d.ts +103 -0
- package/dist/tui/components/transcript.js +858 -0
- package/dist/tui/components/welcome.d.ts +20 -0
- package/dist/tui/components/welcome.js +133 -0
- package/dist/tui/components/workflow-inspector.d.ts +30 -0
- package/dist/tui/components/workflow-inspector.js +136 -0
- package/dist/tui/composer-autocomplete.d.ts +76 -0
- package/dist/tui/composer-autocomplete.js +465 -0
- package/dist/tui/composer-style.d.ts +7 -0
- package/dist/tui/composer-style.js +29 -0
- package/dist/tui/controller/agent-event-reducer.d.ts +75 -0
- package/dist/tui/controller/agent-event-reducer.js +239 -0
- package/dist/tui/controller/composer-controller.d.ts +95 -0
- package/dist/tui/controller/composer-controller.js +502 -0
- package/dist/tui/controller/controller.d.ts +199 -0
- package/dist/tui/controller/controller.js +1034 -0
- package/dist/tui/controller/effects.d.ts +71 -0
- package/dist/tui/controller/effects.js +1 -0
- package/dist/tui/controller/goal-runtime-controller.d.ts +47 -0
- package/dist/tui/controller/goal-runtime-controller.js +202 -0
- package/dist/tui/controller/input-queue-machine.d.ts +71 -0
- package/dist/tui/controller/input-queue-machine.js +121 -0
- package/dist/tui/controller/intents.d.ts +56 -0
- package/dist/tui/controller/intents.js +6 -0
- package/dist/tui/controller/overlay-controller.d.ts +64 -0
- package/dist/tui/controller/overlay-controller.js +129 -0
- package/dist/tui/controller/ports.d.ts +57 -0
- package/dist/tui/controller/ports.js +9 -0
- package/dist/tui/controller/session-transition.d.ts +54 -0
- package/dist/tui/controller/session-transition.js +68 -0
- package/dist/tui/controller/state.d.ts +14 -0
- package/dist/tui/controller/state.js +36 -0
- package/dist/tui/controller/task-runtime-controller.d.ts +66 -0
- package/dist/tui/controller/task-runtime-controller.js +158 -0
- package/dist/tui/detect-theme.d.ts +4 -0
- package/dist/tui/detect-theme.js +116 -0
- package/dist/tui/display-history.d.ts +64 -0
- package/dist/tui/display-history.js +283 -0
- package/dist/tui/display-sanitizer.d.ts +3 -0
- package/dist/tui/display-sanitizer.js +38 -0
- package/dist/tui/edit-diff.d.ts +11 -0
- package/dist/tui/edit-diff.js +57 -0
- package/dist/tui/file-mentions.d.ts +29 -0
- package/dist/tui/file-mentions.js +174 -0
- package/dist/tui/footer.d.ts +37 -0
- package/dist/tui/footer.js +80 -0
- package/dist/tui/formatting/edit-diff.d.ts +11 -0
- package/dist/tui/formatting/edit-diff.js +52 -0
- package/dist/tui/formatting/summary.d.ts +43 -0
- package/dist/tui/formatting/summary.js +150 -0
- package/dist/tui/fullscreen.d.ts +48 -0
- package/dist/tui/fullscreen.js +256 -0
- package/dist/tui/image-display.d.ts +23 -0
- package/dist/tui/image-display.js +92 -0
- package/dist/tui/image-paste.d.ts +113 -0
- package/dist/tui/image-paste.js +565 -0
- package/dist/tui/input-history.d.ts +47 -0
- package/dist/tui/input-history.js +250 -0
- package/dist/tui/markdown-style.d.ts +5 -0
- package/dist/tui/markdown-style.js +23 -0
- package/dist/tui/model/composer-buffer.d.ts +55 -0
- package/dist/tui/model/composer-buffer.js +317 -0
- package/dist/tui/model/composer-types.d.ts +17 -0
- package/dist/tui/model/composer-types.js +1 -0
- package/dist/tui/model/display-history.d.ts +78 -0
- package/dist/tui/model/display-history.js +124 -0
- package/dist/tui/model/display-reconstruct.d.ts +3 -0
- package/dist/tui/model/display-reconstruct.js +130 -0
- package/dist/tui/model/file-mentions.d.ts +31 -0
- package/dist/tui/model/file-mentions.js +178 -0
- package/dist/tui/model/image-attachment.d.ts +15 -0
- package/dist/tui/model/image-attachment.js +1 -0
- package/dist/tui/model/image-paste.d.ts +119 -0
- package/dist/tui/model/image-paste.js +610 -0
- package/dist/tui/model/input-history.d.ts +1 -0
- package/dist/tui/model/input-history.js +1 -0
- package/dist/tui/model/input-queue.d.ts +12 -0
- package/dist/tui/model/input-queue.js +17 -0
- package/dist/tui/model/key-events.d.ts +9 -0
- package/dist/tui/model/key-events.js +8 -0
- package/dist/tui/model/paste-operation-tracker.d.ts +13 -0
- package/dist/tui/model/paste-operation-tracker.js +25 -0
- package/dist/tui/model/recent-activity.d.ts +8 -0
- package/dist/tui/model/recent-activity.js +71 -0
- package/dist/tui/model/subagent-view.d.ts +87 -0
- package/dist/tui/model/subagent-view.js +336 -0
- package/dist/tui/model/submit-dedupe.d.ts +5 -0
- package/dist/tui/model/submit-dedupe.js +25 -0
- package/dist/tui/model/sync-output.d.ts +17 -0
- package/dist/tui/model/sync-output.js +35 -0
- package/dist/tui/model/task-lifecycle.d.ts +57 -0
- package/dist/tui/model/task-lifecycle.js +124 -0
- package/dist/tui/model/terminal-env.d.ts +15 -0
- package/dist/tui/model/terminal-env.js +22 -0
- package/dist/tui/model/terminal-mouse.d.ts +28 -0
- package/dist/tui/model/terminal-mouse.js +82 -0
- package/dist/tui/model/theme-style.d.ts +10 -0
- package/dist/tui/model/theme-style.js +79 -0
- package/dist/tui/model/theme.d.ts +72 -0
- package/dist/tui/model/theme.js +121 -0
- package/dist/tui/model/trace-groups.d.ts +45 -0
- package/dist/tui/model/trace-groups.js +558 -0
- package/dist/tui/model/trace-interaction.d.ts +63 -0
- package/dist/tui/model/trace-interaction.js +87 -0
- package/dist/tui/model/width.d.ts +18 -0
- package/dist/tui/model/width.js +130 -0
- package/dist/tui/model-picker-data.d.ts +9 -0
- package/dist/tui/model-picker-data.js +39 -0
- package/dist/tui/model-switch.d.ts +49 -0
- package/dist/tui/model-switch.js +67 -0
- package/dist/tui/paste-placeholder.d.ts +11 -0
- package/dist/tui/paste-placeholder.js +52 -0
- package/dist/tui/recent-activity.d.ts +8 -0
- package/dist/tui/recent-activity.js +71 -0
- package/dist/tui/run-session-picker.d.ts +9 -0
- package/dist/tui/run-session-picker.js +64 -0
- package/dist/tui/run.d.ts +72 -0
- package/dist/tui/run.js +139 -0
- package/dist/tui/session-display.d.ts +6 -0
- package/dist/tui/session-display.js +12 -0
- package/dist/tui/session-picker-data.d.ts +18 -0
- package/dist/tui/session-picker-data.js +21 -0
- package/dist/tui/terminal/multiplexer.d.ts +5 -0
- package/dist/tui/terminal/multiplexer.js +14 -0
- package/dist/tui/testing/fake-agent.d.ts +24 -0
- package/dist/tui/testing/fake-agent.js +22 -0
- package/dist/tui/testing/spy-host.d.ts +21 -0
- package/dist/tui/testing/spy-host.js +55 -0
- package/dist/tui/trace-groups.d.ts +43 -0
- package/dist/tui/trace-groups.js +554 -0
- package/dist/tui/wordmark.d.ts +18 -0
- package/dist/tui/wordmark.js +208 -0
- package/dist/types.d.ts +503 -0
- package/dist/types.js +4 -0
- package/dist/update/index.d.ts +61 -0
- package/dist/update/index.js +267 -0
- package/dist/variant/thinking-level.d.ts +5 -0
- package/dist/variant/thinking-level.js +26 -0
- package/dist/variant/variant-resolver.d.ts +28 -0
- package/dist/variant/variant-resolver.js +62 -0
- package/node_modules/@bubblebrain-ai/pi-tui/LICENSE +21 -0
- package/node_modules/@bubblebrain-ai/pi-tui/README.md +854 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/alt-screen-search.d.ts +26 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/alt-screen-search.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/alt-screen-search.js +121 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/alt-screen-search.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/autocomplete.d.ts +86 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/autocomplete.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/autocomplete.js +649 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/autocomplete.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/alt-screen-flash.d.ts +13 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/alt-screen-flash.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/alt-screen-flash.js +36 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/alt-screen-flash.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/box.d.ts +22 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/box.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/box.js +99 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/box.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/cancellable-loader.d.ts +22 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/cancellable-loader.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/cancellable-loader.js +36 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/cancellable-loader.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/editor.d.ts +330 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/editor.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/editor.js +2344 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/editor.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/h-stack.d.ts +7 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/h-stack.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/h-stack.js +43 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/h-stack.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/image.d.ts +28 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/image.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/image.js +82 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/image.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/input.d.ts +48 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/input.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/input.js +390 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/input.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/loader.d.ts +31 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/loader.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/loader.js +67 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/loader.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/markdown.d.ts +103 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/markdown.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/markdown.js +797 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/markdown.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/scroll-view.d.ts +56 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/scroll-view.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/scroll-view.js +179 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/scroll-view.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/select-list.d.ts +53 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/select-list.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/select-list.js +175 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/select-list.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/settings-list.d.ts +50 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/settings-list.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/settings-list.js +174 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/settings-list.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/spacer.d.ts +12 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/spacer.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/spacer.js +22 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/spacer.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/stack.d.ts +32 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/stack.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/stack.js +109 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/stack.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/text.d.ts +19 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/text.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/text.js +81 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/text.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/truncated-text.d.ts +13 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/truncated-text.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/truncated-text.js +48 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/truncated-text.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/v-stack.d.ts +8 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/v-stack.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/v-stack.js +26 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/components/v-stack.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/editor-component.d.ts +39 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/editor-component.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/editor-component.js +2 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/editor-component.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/fuzzy.d.ts +16 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/fuzzy.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/fuzzy.js +110 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/fuzzy.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/index.d.ts +31 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/index.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/index.js +42 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/index.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keybindings.d.ts +273 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keybindings.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keybindings.js +231 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keybindings.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keys.d.ts +184 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keys.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keys.js +1174 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/keys.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/kill-ring.d.ts +28 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/kill-ring.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/kill-ring.js +46 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/kill-ring.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/latex.d.ts +10 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/latex.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/latex.js +1268 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/latex.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout-node.d.ts +40 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout-node.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout-node.js +6 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout-node.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout.d.ts +42 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout.js +335 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/layout.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/native-modifiers.d.ts +3 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/native-modifiers.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/native-modifiers.js +60 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/native-modifiers.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/stdin-buffer.d.ts +56 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/stdin-buffer.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/stdin-buffer.js +363 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/stdin-buffer.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-colors.d.ts +10 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-colors.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-colors.js +59 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-colors.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-image.d.ts +116 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-image.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-image.js +518 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal-image.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal.d.ts +142 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal.js +544 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/terminal.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/testing.d.ts +11 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/testing.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/testing.js +11 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/testing.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-alt-screen.d.ts +141 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-alt-screen.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-alt-screen.js +1340 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-alt-screen.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-main-screen.d.ts +39 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-main-screen.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-main-screen.js +536 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui-main-screen.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui.d.ts +340 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui.js +1020 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/tui.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/undo-stack.d.ts +17 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/undo-stack.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/undo-stack.js +27 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/undo-stack.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/utils.d.ts +96 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/utils.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/utils.js +1193 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/utils.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/word-navigation.d.ts +25 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/word-navigation.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/word-navigation.js +96 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/src/word-navigation.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/test/virtual-terminal.d.ts +73 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/test/virtual-terminal.d.ts.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/test/virtual-terminal.js +188 -0
- package/node_modules/@bubblebrain-ai/pi-tui/dist/test/virtual-terminal.js.map +1 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/darwin/README.md +20 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/darwin/build.sh +62 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/darwin/src/darwin-modifiers.c +70 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/win32/README.md +22 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/win32/build.mjs +229 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
- package/node_modules/@bubblebrain-ai/pi-tui/native/win32/src/win32-console-mode.c +119 -0
- package/node_modules/@bubblebrain-ai/pi-tui/package.json +66 -0
- package/node_modules/get-east-asian-width/index.d.ts +60 -0
- package/node_modules/get-east-asian-width/index.js +30 -0
- package/node_modules/get-east-asian-width/license +9 -0
- package/node_modules/get-east-asian-width/lookup-data.js +21 -0
- package/node_modules/get-east-asian-width/lookup.js +138 -0
- package/node_modules/get-east-asian-width/package.json +71 -0
- package/node_modules/get-east-asian-width/readme.md +65 -0
- package/node_modules/get-east-asian-width/utilities.js +24 -0
- package/node_modules/marked/LICENSE +44 -0
- package/node_modules/marked/README.md +115 -0
- package/node_modules/marked/bin/main.js +284 -0
- package/node_modules/marked/bin/marked.js +16 -0
- package/node_modules/marked/lib/marked.d.ts +760 -0
- package/node_modules/marked/lib/marked.esm.js +77 -0
- package/node_modules/marked/lib/marked.esm.js.map +7 -0
- package/node_modules/marked/lib/marked.umd.js +79 -0
- package/node_modules/marked/lib/marked.umd.js.map +7 -0
- package/node_modules/marked/man/marked.1 +113 -0
- package/node_modules/marked/man/marked.1.md +93 -0
- package/node_modules/marked/package.json +103 -0
- package/package.json +96 -17
- package/bin/bubble.js +0 -39
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResultIntegrator — turns background child completions into ingestion
|
|
3
|
+
* notices injected before the parent's next inference turn (design doc §5).
|
|
4
|
+
*
|
|
5
|
+
* Injection marks the child as delivered (§3.3), so the lifecycle reminder
|
|
6
|
+
* demotes it to a one-liner and the same summary never appears twice in full
|
|
7
|
+
* form in the parent transcript.
|
|
8
|
+
*/
|
|
9
|
+
import type { SubagentThreadRecord } from "./subagent-control.js";
|
|
10
|
+
import type { SubagentStore } from "./subagent-store.js";
|
|
11
|
+
export declare class ResultIntegrator {
|
|
12
|
+
private readonly pending;
|
|
13
|
+
enqueue(agentId: string): void;
|
|
14
|
+
hasPending(): boolean;
|
|
15
|
+
/**
|
|
16
|
+
* Builds notices for children whose results have not yet reached parent
|
|
17
|
+
* context, marking them delivered. Already-delivered children (e.g. the
|
|
18
|
+
* model wait_agent-ed first) are skipped silently.
|
|
19
|
+
*/
|
|
20
|
+
drainNotices(store: SubagentStore, now?: number): string[];
|
|
21
|
+
}
|
|
22
|
+
export declare function buildIngestionNotice(record: SubagentThreadRecord): string;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ResultIntegrator — turns background child completions into ingestion
|
|
3
|
+
* notices injected before the parent's next inference turn (design doc §5).
|
|
4
|
+
*
|
|
5
|
+
* Injection marks the child as delivered (§3.3), so the lifecycle reminder
|
|
6
|
+
* demotes it to a one-liner and the same summary never appears twice in full
|
|
7
|
+
* form in the parent transcript.
|
|
8
|
+
*/
|
|
9
|
+
import { fenceChildOutput } from "./subagent-summary.js";
|
|
10
|
+
export class ResultIntegrator {
|
|
11
|
+
pending = [];
|
|
12
|
+
enqueue(agentId) {
|
|
13
|
+
if (!this.pending.includes(agentId)) {
|
|
14
|
+
this.pending.push(agentId);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
hasPending() {
|
|
18
|
+
return this.pending.length > 0;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Builds notices for children whose results have not yet reached parent
|
|
22
|
+
* context, marking them delivered. Already-delivered children (e.g. the
|
|
23
|
+
* model wait_agent-ed first) are skipped silently.
|
|
24
|
+
*/
|
|
25
|
+
drainNotices(store, now = Date.now()) {
|
|
26
|
+
const ids = this.pending.splice(0, this.pending.length);
|
|
27
|
+
const notices = [];
|
|
28
|
+
for (const id of ids) {
|
|
29
|
+
const record = store.get(id);
|
|
30
|
+
if (!record || record.deliveredAt !== undefined)
|
|
31
|
+
continue;
|
|
32
|
+
notices.push(buildIngestionNotice(record));
|
|
33
|
+
store.markDelivered(id, now);
|
|
34
|
+
}
|
|
35
|
+
return notices;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export function buildIngestionNotice(record) {
|
|
39
|
+
const lines = [
|
|
40
|
+
`subagent ${record.nickname} (agent_id: ${record.agentId}) ${record.status}.`,
|
|
41
|
+
];
|
|
42
|
+
if (record.error) {
|
|
43
|
+
lines.push(`error: ${record.error}`);
|
|
44
|
+
}
|
|
45
|
+
if (record.summary) {
|
|
46
|
+
lines.push(fenceChildOutput(record.summary));
|
|
47
|
+
}
|
|
48
|
+
lines.push("Full result via wait_agent. Do not redo this delegated work.");
|
|
49
|
+
return lines.join("\n");
|
|
50
|
+
}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing catalog: the single source of catalog truth for subagent model
|
|
3
|
+
* routing (docs/model-routing-design.md §1).
|
|
4
|
+
*
|
|
5
|
+
* No routing consumer reads `listBuiltinModels` / `getConfigured` directly —
|
|
6
|
+
* neither reflects what is actually runnable. Consumers read a
|
|
7
|
+
* `RoutingSnapshot` through the live accessor created here; the accessor
|
|
8
|
+
* caches by the registry's routing revision and rebuilds lazily, so tier
|
|
9
|
+
* resolution, validation, the detector, and the menu are never stale (§1.5).
|
|
10
|
+
*/
|
|
11
|
+
import { type ModelTier } from "../model-catalog.js";
|
|
12
|
+
import type { ProviderRegistry } from "../provider-registry.js";
|
|
13
|
+
import { selectTierCandidates, type AgentCategoriesConfig, type TierCatalogEntry, type TierRoutingContext } from "./categories.js";
|
|
14
|
+
import type { ThinkingLevel } from "../types.js";
|
|
15
|
+
export interface AgentRoutingConfig {
|
|
16
|
+
/** Automatic builtin-tier downgrade routing (§3.2). */
|
|
17
|
+
autoTier: boolean;
|
|
18
|
+
/** Call-site cross-provider routing; default open, set false to lock (§7.2). */
|
|
19
|
+
allowCrossProvider: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare const DEFAULT_AGENT_ROUTING: AgentRoutingConfig;
|
|
22
|
+
export declare function sanitizeAgentRouting(value: unknown): AgentRoutingConfig;
|
|
23
|
+
export interface RoutingModelEntry {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
tier?: ModelTier;
|
|
27
|
+
routingPriority?: number;
|
|
28
|
+
/** Index in the builtin catalog order, when the id is builtin (§3.2 tiebreak). */
|
|
29
|
+
builtinIndex?: number;
|
|
30
|
+
source: "builtin" | "dynamic" | "custom";
|
|
31
|
+
}
|
|
32
|
+
export type RoutingMembershipSource = "custom-allowlist" | "complete-discovery" | "fallback-union";
|
|
33
|
+
export interface RoutingSnapshot {
|
|
34
|
+
parent: {
|
|
35
|
+
providerId: string;
|
|
36
|
+
model: string;
|
|
37
|
+
tier?: ModelTier;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Subscription (OAuth) catalogs are account-scoped: the server decides which
|
|
41
|
+
* models this account may use, so only models the CURRENT identity's
|
|
42
|
+
* discovery snapshot (or the user's models.json) confirmed may be chosen by
|
|
43
|
+
* automatic tier routing. API-key providers keep their builtin tiers routable.
|
|
44
|
+
*/
|
|
45
|
+
accountScopedCatalog: boolean;
|
|
46
|
+
/** Models automatic tier routing may pick from (see accountScopedCatalog). */
|
|
47
|
+
tierCatalog: TierCatalogEntry[];
|
|
48
|
+
/** Catalog-effective provider id (openai OAuth -> "openai-codex" alias). */
|
|
49
|
+
effectiveProviderId: string;
|
|
50
|
+
membershipSource: RoutingMembershipSource;
|
|
51
|
+
/** Model list for the PARENT provider only (§1.2 scope note). */
|
|
52
|
+
models: RoutingModelEntry[];
|
|
53
|
+
/** True iff membershipSource === "custom-allowlist" — the only catalog
|
|
54
|
+
* that hard-rejects unknown ids (§1.4). */
|
|
55
|
+
authoritative: boolean;
|
|
56
|
+
registryRevision: number;
|
|
57
|
+
/**
|
|
58
|
+
* Earliest expiry of the discovery data this snapshot consumed. TTL expiry
|
|
59
|
+
* is passive — it bumps no revision — so the accessor must rebuild past
|
|
60
|
+
* this instant or it serves a catalog the registry itself no longer would.
|
|
61
|
+
*/
|
|
62
|
+
discoveryExpiresAt?: number;
|
|
63
|
+
/** Provider ids with active credentials (getEnabled, §1.1). */
|
|
64
|
+
runnableProviderIds: string[];
|
|
65
|
+
/** Post-merge, post-tier-resolution category bindings (§3). */
|
|
66
|
+
resolvedCategories: Array<{
|
|
67
|
+
name: string;
|
|
68
|
+
model: string | "inherit";
|
|
69
|
+
thinkingLevel?: ThinkingLevel;
|
|
70
|
+
tierSource?: "builtin" | "user";
|
|
71
|
+
}>;
|
|
72
|
+
}
|
|
73
|
+
export type RoutingSnapshotAccessor = (parent: {
|
|
74
|
+
providerId: string;
|
|
75
|
+
model: string;
|
|
76
|
+
}) => RoutingSnapshot;
|
|
77
|
+
/**
|
|
78
|
+
* Membership versus metadata (§1.3): an authoritative source alone decides
|
|
79
|
+
* which ids exist; lower-priority sources only enrich per-field metadata
|
|
80
|
+
* (tier: dynamic ?? custom ?? builtin).
|
|
81
|
+
*/
|
|
82
|
+
export declare function buildRoutingSnapshot(registry: ProviderRegistry, parent: {
|
|
83
|
+
providerId: string;
|
|
84
|
+
model: string;
|
|
85
|
+
}, agentCategories: AgentCategoriesConfig, agentRouting: AgentRoutingConfig): RoutingSnapshot;
|
|
86
|
+
/**
|
|
87
|
+
* Catalog visible to automatic tier routing. On an account-scoped catalog only
|
|
88
|
+
* models confirmed by the current identity's discovery snapshot, or listed by
|
|
89
|
+
* the user in models.json, are candidates. A builtin-only entry (e.g. a static
|
|
90
|
+
* fast-tier model the ChatGPT plan does not include) or an overlay entry left
|
|
91
|
+
* by another account's cache would otherwise be routed to and rejected
|
|
92
|
+
* server-side. Without a snapshot nothing but user-listed models qualifies.
|
|
93
|
+
*/
|
|
94
|
+
export declare function tierCatalogEntries(models: readonly RoutingModelEntry[], accountScopedCatalog: boolean, confirmedIds?: ReadonlySet<string>): TierCatalogEntry[];
|
|
95
|
+
/** Tier-resolution context derived from a snapshot (consumed by categories §3.2). */
|
|
96
|
+
export declare function tierContextFromSnapshot(snapshot: RoutingSnapshot, agentRouting: AgentRoutingConfig): TierRoutingContext;
|
|
97
|
+
/**
|
|
98
|
+
* Live accessor (§1.5): caches by (routing revision, parent route) and
|
|
99
|
+
* rebuilds lazily, so a discovery completion or provider mutation is
|
|
100
|
+
* reflected at the very next read. Building is synchronous over cached
|
|
101
|
+
* registry state — microseconds, never I/O.
|
|
102
|
+
*/
|
|
103
|
+
export declare function createRoutingSnapshotAccessor(registry: ProviderRegistry, getAgentCategories: () => AgentCategoriesConfig, getAgentRouting: () => AgentRoutingConfig): RoutingSnapshotAccessor;
|
|
104
|
+
/** Tier of a model within a snapshot, when known. */
|
|
105
|
+
export declare function snapshotModelTier(snapshot: RoutingSnapshot, modelId: string): ModelTier | undefined;
|
|
106
|
+
export interface RoutableModelEntry {
|
|
107
|
+
/** Routable provider id — what goes before the colon in provider:model. */
|
|
108
|
+
providerId: string;
|
|
109
|
+
id: string;
|
|
110
|
+
name: string;
|
|
111
|
+
}
|
|
112
|
+
export type RoutableModelIndex = () => RoutableModelEntry[];
|
|
113
|
+
/** Revision-cached index over all runnable providers' catalogs. */
|
|
114
|
+
export declare function createRoutableModelIndex(registry: ProviderRegistry): RoutableModelIndex;
|
|
115
|
+
/** Loose normalization for model-name matching: case/punctuation-insensitive. */
|
|
116
|
+
export declare function normalizeModelToken(value: string): string;
|
|
117
|
+
/**
|
|
118
|
+
* Near-match candidates for a (probably mistyped) model id within one
|
|
119
|
+
* provider's catalog. "suggest" matches normalized prefixes in either
|
|
120
|
+
* direction (soft "did you mean" notes). "truncation" matches only inputs
|
|
121
|
+
* the catalog EXTENDS ("gpt-5.6" -> gpt-5.6-sol/-terra/-luna) — the one
|
|
122
|
+
* direction that is typo evidence. An input extending a catalog id
|
|
123
|
+
* (gpt-5.6-sol-20260701 vs cataloged gpt-5.6-sol) is more likely a newly
|
|
124
|
+
* released variant the local catalog lags on, and must not be treated as a
|
|
125
|
+
* typo by hard-reject paths. Capped, deterministic order.
|
|
126
|
+
*/
|
|
127
|
+
export declare function nearModelMatches(input: string, candidates: RoutableModelEntry[], options?: {
|
|
128
|
+
limit?: number;
|
|
129
|
+
mode?: "suggest" | "truncation";
|
|
130
|
+
}): string[];
|
|
131
|
+
export { selectTierCandidates };
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Routing catalog: the single source of catalog truth for subagent model
|
|
3
|
+
* routing (docs/model-routing-design.md §1).
|
|
4
|
+
*
|
|
5
|
+
* No routing consumer reads `listBuiltinModels` / `getConfigured` directly —
|
|
6
|
+
* neither reflects what is actually runnable. Consumers read a
|
|
7
|
+
* `RoutingSnapshot` through the live accessor created here; the accessor
|
|
8
|
+
* caches by the registry's routing revision and rebuilds lazily, so tier
|
|
9
|
+
* resolution, validation, the detector, and the menu are never stale (§1.5).
|
|
10
|
+
*/
|
|
11
|
+
import { getBuiltinModel, listBuiltinModels, listDynamicModelMetadata, } from "../model-catalog.js";
|
|
12
|
+
import { mergeAgentCategoriesWithProvenance, resolveSubagentRoute, selectTierCandidates, } from "./categories.js";
|
|
13
|
+
import { filterProviderModels } from "../provider-model-policy.js";
|
|
14
|
+
export const DEFAULT_AGENT_ROUTING = {
|
|
15
|
+
autoTier: true,
|
|
16
|
+
allowCrossProvider: true,
|
|
17
|
+
};
|
|
18
|
+
export function sanitizeAgentRouting(value) {
|
|
19
|
+
const config = { ...DEFAULT_AGENT_ROUTING };
|
|
20
|
+
if (value && typeof value === "object" && !Array.isArray(value)) {
|
|
21
|
+
const record = value;
|
|
22
|
+
if (typeof record.autoTier === "boolean")
|
|
23
|
+
config.autoTier = record.autoTier;
|
|
24
|
+
if (typeof record.allowCrossProvider === "boolean") {
|
|
25
|
+
config.allowCrossProvider = record.allowCrossProvider;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return config;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Membership versus metadata (§1.3): an authoritative source alone decides
|
|
32
|
+
* which ids exist; lower-priority sources only enrich per-field metadata
|
|
33
|
+
* (tier: dynamic ?? custom ?? builtin).
|
|
34
|
+
*/
|
|
35
|
+
export function buildRoutingSnapshot(registry, parent, agentCategories, agentRouting) {
|
|
36
|
+
const configured = registry.getConfigured().find((item) => item.id === parent.providerId);
|
|
37
|
+
const effectiveProviderId = parent.providerId === "openai" && configured?.authType === "oauth"
|
|
38
|
+
? "openai-codex"
|
|
39
|
+
: parent.providerId;
|
|
40
|
+
const accountScopedCatalog = configured?.authType === "oauth";
|
|
41
|
+
const builtins = listBuiltinModels(effectiveProviderId);
|
|
42
|
+
const builtinIndex = new Map(builtins.map((model, index) => [model.id, index]));
|
|
43
|
+
const dynamic = listDynamicModelMetadata(effectiveProviderId);
|
|
44
|
+
const custom = filterProviderModels(parent.providerId, registry.getModelConfig().getCustomModels(parent.providerId));
|
|
45
|
+
const discovery = registry.getCachedDiscoverySnapshot(parent.providerId);
|
|
46
|
+
const metadataFor = (id) => {
|
|
47
|
+
const dynamicEntry = dynamic.find((model) => model.id === id);
|
|
48
|
+
const discoveryEntry = discovery?.models.find((model) => model.id === id);
|
|
49
|
+
const customEntry = custom.find((model) => model.id === id);
|
|
50
|
+
const builtinEntry = builtins.find((model) => model.id === id);
|
|
51
|
+
return {
|
|
52
|
+
id,
|
|
53
|
+
name: dynamicEntry?.name ?? discoveryEntry?.name ?? customEntry?.name ?? builtinEntry?.name ?? id,
|
|
54
|
+
// Field-level merge (§1.3): discovery decides existence, but tier falls
|
|
55
|
+
// back through custom to builtin when the fresher source omits it.
|
|
56
|
+
tier: dynamicEntry?.tier ?? discoveryEntry?.tier ?? customEntry?.tier ?? builtinEntry?.tier,
|
|
57
|
+
routingPriority: customEntry?.routingPriority,
|
|
58
|
+
builtinIndex: builtinIndex.get(id),
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
let membershipSource;
|
|
62
|
+
let memberIds;
|
|
63
|
+
const memberSource = new Map();
|
|
64
|
+
if (custom.length > 0) {
|
|
65
|
+
membershipSource = "custom-allowlist";
|
|
66
|
+
memberIds = custom.map((model) => model.id);
|
|
67
|
+
for (const id of memberIds)
|
|
68
|
+
memberSource.set(id, "custom");
|
|
69
|
+
}
|
|
70
|
+
else if (discovery && discovery.complete) {
|
|
71
|
+
membershipSource = "complete-discovery";
|
|
72
|
+
memberIds = discovery.models.map((model) => model.id);
|
|
73
|
+
for (const id of memberIds)
|
|
74
|
+
memberSource.set(id, "dynamic");
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
membershipSource = "fallback-union";
|
|
78
|
+
memberIds = [];
|
|
79
|
+
for (const model of dynamic) {
|
|
80
|
+
if (!memberSource.has(model.id)) {
|
|
81
|
+
memberSource.set(model.id, "dynamic");
|
|
82
|
+
memberIds.push(model.id);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
for (const model of custom) {
|
|
86
|
+
if (!memberSource.has(model.id)) {
|
|
87
|
+
memberSource.set(model.id, "custom");
|
|
88
|
+
memberIds.push(model.id);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const model of builtins) {
|
|
92
|
+
if (!memberSource.has(model.id)) {
|
|
93
|
+
memberSource.set(model.id, "builtin");
|
|
94
|
+
memberIds.push(model.id);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const models = memberIds.map((id) => ({
|
|
99
|
+
...metadataFor(id),
|
|
100
|
+
source: memberSource.get(id) ?? "builtin",
|
|
101
|
+
}));
|
|
102
|
+
const parentTier = models.find((model) => model.id === parent.model)?.tier
|
|
103
|
+
?? getBuiltinModel(effectiveProviderId, parent.model)?.tier;
|
|
104
|
+
const runnableProviderIds = registry.getEnabled().map((provider) => provider.id);
|
|
105
|
+
// The dynamic overlay is provider-wide and is rebuilt from EVERY unexpired
|
|
106
|
+
// disk-cache entry at startup (other accounts, older client pins included),
|
|
107
|
+
// so "dynamic" membership alone does not prove this account can use a model.
|
|
108
|
+
// Only the current identity's own COMPLETE discovery does: a failed fetch is
|
|
109
|
+
// cached briefly as a builtin fallback and must not confirm anything.
|
|
110
|
+
const tierCatalog = tierCatalogEntries(models, accountScopedCatalog, discovery?.complete ? new Set(discovery.models.map((model) => model.id)) : undefined);
|
|
111
|
+
return {
|
|
112
|
+
parent: { ...parent, tier: parentTier },
|
|
113
|
+
accountScopedCatalog,
|
|
114
|
+
tierCatalog,
|
|
115
|
+
effectiveProviderId,
|
|
116
|
+
membershipSource,
|
|
117
|
+
models,
|
|
118
|
+
authoritative: membershipSource === "custom-allowlist",
|
|
119
|
+
registryRevision: registry.getRoutingRevision(),
|
|
120
|
+
discoveryExpiresAt: discovery?.expiresAt,
|
|
121
|
+
runnableProviderIds,
|
|
122
|
+
resolvedCategories: resolveCategoriesForMenu(parent, parentTier, tierCatalog, agentCategories, agentRouting),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Catalog visible to automatic tier routing. On an account-scoped catalog only
|
|
127
|
+
* models confirmed by the current identity's discovery snapshot, or listed by
|
|
128
|
+
* the user in models.json, are candidates. A builtin-only entry (e.g. a static
|
|
129
|
+
* fast-tier model the ChatGPT plan does not include) or an overlay entry left
|
|
130
|
+
* by another account's cache would otherwise be routed to and rejected
|
|
131
|
+
* server-side. Without a snapshot nothing but user-listed models qualifies.
|
|
132
|
+
*/
|
|
133
|
+
export function tierCatalogEntries(models, accountScopedCatalog, confirmedIds) {
|
|
134
|
+
return models
|
|
135
|
+
.filter((model) => (!accountScopedCatalog
|
|
136
|
+
|| model.source === "custom"
|
|
137
|
+
|| (confirmedIds?.has(model.id) ?? false)))
|
|
138
|
+
.map((model) => ({
|
|
139
|
+
id: model.id,
|
|
140
|
+
tier: model.tier,
|
|
141
|
+
routingPriority: model.routingPriority,
|
|
142
|
+
builtinIndex: model.builtinIndex,
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
/** Tier-resolution context derived from a snapshot (consumed by categories §3.2). */
|
|
146
|
+
export function tierContextFromSnapshot(snapshot, agentRouting) {
|
|
147
|
+
return {
|
|
148
|
+
parentTier: snapshot.parent.tier,
|
|
149
|
+
models: snapshot.tierCatalog,
|
|
150
|
+
autoTier: agentRouting.autoTier,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Live accessor (§1.5): caches by (routing revision, parent route) and
|
|
155
|
+
* rebuilds lazily, so a discovery completion or provider mutation is
|
|
156
|
+
* reflected at the very next read. Building is synchronous over cached
|
|
157
|
+
* registry state — microseconds, never I/O.
|
|
158
|
+
*/
|
|
159
|
+
export function createRoutingSnapshotAccessor(registry, getAgentCategories, getAgentRouting) {
|
|
160
|
+
let cached;
|
|
161
|
+
return (parent) => {
|
|
162
|
+
if (cached
|
|
163
|
+
&& cached.registryRevision === registry.getRoutingRevision()
|
|
164
|
+
&& cached.parent.providerId === parent.providerId
|
|
165
|
+
&& cached.parent.model === parent.model
|
|
166
|
+
&& (cached.discoveryExpiresAt === undefined || Date.now() < cached.discoveryExpiresAt)) {
|
|
167
|
+
return cached;
|
|
168
|
+
}
|
|
169
|
+
cached = buildRoutingSnapshot(registry, parent, getAgentCategories(), getAgentRouting());
|
|
170
|
+
return cached;
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
function resolveCategoriesForMenu(parent, parentTier, models, agentCategories, agentRouting) {
|
|
174
|
+
const merged = mergeAgentCategoriesWithProvenance(agentCategories);
|
|
175
|
+
const tierContext = {
|
|
176
|
+
parentTier,
|
|
177
|
+
models,
|
|
178
|
+
autoTier: agentRouting.autoTier,
|
|
179
|
+
};
|
|
180
|
+
return Object.entries(merged).map(([name, entry]) => {
|
|
181
|
+
const resolution = resolveSubagentRoute(name, { providerId: parent.providerId, model: parent.model, thinkingLevel: "medium" }, agentCategories, tierContext);
|
|
182
|
+
const route = "route" in resolution ? resolution.route : undefined;
|
|
183
|
+
return {
|
|
184
|
+
name,
|
|
185
|
+
model: route && route.model !== parent.model ? route.model : "inherit",
|
|
186
|
+
thinkingLevel: entry.config.thinkingLevel,
|
|
187
|
+
tierSource: entry.provenance.tierSource,
|
|
188
|
+
};
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/** Tier of a model within a snapshot, when known. */
|
|
192
|
+
export function snapshotModelTier(snapshot, modelId) {
|
|
193
|
+
return snapshot.models.find((model) => model.id === modelId)?.tier;
|
|
194
|
+
}
|
|
195
|
+
/** Revision-cached index over all runnable providers' catalogs. */
|
|
196
|
+
export function createRoutableModelIndex(registry) {
|
|
197
|
+
let cachedRevision = -1;
|
|
198
|
+
let cached = [];
|
|
199
|
+
return () => {
|
|
200
|
+
const revision = registry.getRoutingRevision();
|
|
201
|
+
if (revision === cachedRevision)
|
|
202
|
+
return cached;
|
|
203
|
+
const entries = [];
|
|
204
|
+
for (const provider of registry.getEnabled()) {
|
|
205
|
+
const effectiveProviderId = provider.id === "openai" && provider.authType === "oauth"
|
|
206
|
+
? "openai-codex"
|
|
207
|
+
: provider.id;
|
|
208
|
+
const seen = new Set();
|
|
209
|
+
const push = (id, name) => {
|
|
210
|
+
if (seen.has(id))
|
|
211
|
+
return;
|
|
212
|
+
seen.add(id);
|
|
213
|
+
entries.push({ providerId: provider.id, id, name });
|
|
214
|
+
};
|
|
215
|
+
for (const model of filterProviderModels(provider.id, registry.getModelConfig().getCustomModels(provider.id)))
|
|
216
|
+
push(model.id, model.name);
|
|
217
|
+
for (const model of listDynamicModelMetadata(effectiveProviderId))
|
|
218
|
+
push(model.id, model.name);
|
|
219
|
+
for (const model of listBuiltinModels(effectiveProviderId))
|
|
220
|
+
push(model.id, model.name);
|
|
221
|
+
}
|
|
222
|
+
cachedRevision = revision;
|
|
223
|
+
cached = entries;
|
|
224
|
+
return cached;
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
/** Loose normalization for model-name matching: case/punctuation-insensitive. */
|
|
228
|
+
export function normalizeModelToken(value) {
|
|
229
|
+
return value.toLowerCase().replace(/[-._\s]/g, "");
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Near-match candidates for a (probably mistyped) model id within one
|
|
233
|
+
* provider's catalog. "suggest" matches normalized prefixes in either
|
|
234
|
+
* direction (soft "did you mean" notes). "truncation" matches only inputs
|
|
235
|
+
* the catalog EXTENDS ("gpt-5.6" -> gpt-5.6-sol/-terra/-luna) — the one
|
|
236
|
+
* direction that is typo evidence. An input extending a catalog id
|
|
237
|
+
* (gpt-5.6-sol-20260701 vs cataloged gpt-5.6-sol) is more likely a newly
|
|
238
|
+
* released variant the local catalog lags on, and must not be treated as a
|
|
239
|
+
* typo by hard-reject paths. Capped, deterministic order.
|
|
240
|
+
*/
|
|
241
|
+
export function nearModelMatches(input, candidates, options = {}) {
|
|
242
|
+
const limit = options.limit ?? 5;
|
|
243
|
+
const mode = options.mode ?? "suggest";
|
|
244
|
+
const normalized = normalizeModelToken(input);
|
|
245
|
+
if (normalized.length < 3)
|
|
246
|
+
return [];
|
|
247
|
+
return candidates
|
|
248
|
+
.filter((candidate) => {
|
|
249
|
+
const other = normalizeModelToken(candidate.id);
|
|
250
|
+
if (other === normalized)
|
|
251
|
+
return false;
|
|
252
|
+
if (other.startsWith(normalized))
|
|
253
|
+
return true;
|
|
254
|
+
return mode === "suggest" && normalized.startsWith(other);
|
|
255
|
+
})
|
|
256
|
+
.map((candidate) => candidate.id)
|
|
257
|
+
.sort()
|
|
258
|
+
.slice(0, limit);
|
|
259
|
+
}
|
|
260
|
+
export { selectTierCandidates };
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structured output for subagents (design v2 §1.2).
|
|
3
|
+
*
|
|
4
|
+
* When a spawn/batch member carries an `output_schema`, its task is augmented
|
|
5
|
+
* with an instruction to return ONLY JSON matching the schema; after it
|
|
6
|
+
* finishes, its summary is validated against the schema, with one corrective
|
|
7
|
+
* retry. The parent then gets a typed object it can branch on, rather than
|
|
8
|
+
* prose to re-parse.
|
|
9
|
+
*
|
|
10
|
+
* The validator is a deliberately small, dependency-free subset of JSON Schema
|
|
11
|
+
* — enough for LLM structured output (object/array/string/number/integer/
|
|
12
|
+
* boolean/null, properties, required, items, enum, nullable). It is not a full
|
|
13
|
+
* JSON Schema implementation; unknown keywords are ignored (permissive).
|
|
14
|
+
*/
|
|
15
|
+
export interface SchemaValidationOk {
|
|
16
|
+
ok: true;
|
|
17
|
+
value: unknown;
|
|
18
|
+
}
|
|
19
|
+
export interface SchemaValidationError {
|
|
20
|
+
ok: false;
|
|
21
|
+
errors: string[];
|
|
22
|
+
}
|
|
23
|
+
export type SchemaValidationResult = SchemaValidationOk | SchemaValidationError;
|
|
24
|
+
/** Extracts a JSON value from a child summary that may be fenced or prose-wrapped. */
|
|
25
|
+
export declare function extractJson(summary: string): {
|
|
26
|
+
ok: true;
|
|
27
|
+
value: unknown;
|
|
28
|
+
} | {
|
|
29
|
+
ok: false;
|
|
30
|
+
error: string;
|
|
31
|
+
};
|
|
32
|
+
/** Validates a child summary: extracts JSON then checks it against the schema. */
|
|
33
|
+
export declare function validateStructuredSummary(summary: string, schema: unknown): SchemaValidationResult;
|
|
34
|
+
/** Appends the "respond with only JSON matching this schema" instruction to a task. */
|
|
35
|
+
export declare function appendOutputSchemaInstructions(task: string, schema: unknown): string;
|
|
36
|
+
/** Corrective re-prompt sent once when the first summary fails validation. */
|
|
37
|
+
export declare function buildSchemaCorrectionPrompt(schema: unknown, previous: string): string;
|