@vascend/talos 0.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 +202 -0
- package/dist/backend/asset-events.d.ts +31 -0
- package/dist/backend/asset-events.js +149 -0
- package/dist/backend/assets.d.ts +31 -0
- package/dist/backend/assets.js +210 -0
- package/dist/backend/auth.d.ts +18 -0
- package/dist/backend/auth.js +59 -0
- package/dist/backend/config.d.ts +14 -0
- package/dist/backend/config.js +41 -0
- package/dist/backend/conversations.d.ts +21 -0
- package/dist/backend/conversations.js +141 -0
- package/dist/backend/crypto.d.ts +9 -0
- package/dist/backend/crypto.js +68 -0
- package/dist/backend/engine.d.ts +13 -0
- package/dist/backend/engine.js +78 -0
- package/dist/backend/http.d.ts +25 -0
- package/dist/backend/http.js +112 -0
- package/dist/backend/index.d.ts +1 -0
- package/dist/backend/index.js +24 -0
- package/dist/backend/routes.d.ts +14 -0
- package/dist/backend/routes.js +169 -0
- package/dist/backend/sdk.d.ts +12 -0
- package/dist/backend/sdk.js +11 -0
- package/dist/backend/server.d.ts +12 -0
- package/dist/backend/server.js +91 -0
- package/dist/backend/temp-image-store.d.ts +46 -0
- package/dist/backend/temp-image-store.js +197 -0
- package/dist/backend/types.d.ts +103 -0
- package/dist/backend/types.js +29 -0
- package/dist/backend/users.d.ts +13 -0
- package/dist/backend/users.js +76 -0
- package/dist/backend/ws-handler.d.ts +14 -0
- package/dist/backend/ws-handler.js +72 -0
- package/dist/backend/ws.d.ts +19 -0
- package/dist/backend/ws.js +146 -0
- package/dist/core/agent.d.ts +56 -0
- package/dist/core/agent.js +1783 -0
- package/dist/core/background.d.ts +45 -0
- package/dist/core/background.js +140 -0
- package/dist/core/bootstrap.d.ts +45 -0
- package/dist/core/bootstrap.js +294 -0
- package/dist/core/cli-args.d.ts +41 -0
- package/dist/core/cli-args.js +282 -0
- package/dist/core/collapsible-output.d.ts +38 -0
- package/dist/core/collapsible-output.js +143 -0
- package/dist/core/compaction-checkpoint.d.ts +9 -0
- package/dist/core/compaction-checkpoint.js +58 -0
- package/dist/core/compaction.d.ts +42 -0
- package/dist/core/compaction.js +270 -0
- package/dist/core/config.d.ts +49 -0
- package/dist/core/config.js +417 -0
- package/dist/core/context-ledger.d.ts +99 -0
- package/dist/core/context-ledger.js +222 -0
- package/dist/core/context-policy.d.ts +17 -0
- package/dist/core/context-policy.js +81 -0
- package/dist/core/continuation-review.d.ts +23 -0
- package/dist/core/continuation-review.js +64 -0
- package/dist/core/crash-report.d.ts +3 -0
- package/dist/core/crash-report.js +27 -0
- package/dist/core/credentials.d.ts +11 -0
- package/dist/core/credentials.js +183 -0
- package/dist/core/doctor.d.ts +24 -0
- package/dist/core/doctor.js +125 -0
- package/dist/core/effort.d.ts +5 -0
- package/dist/core/effort.js +42 -0
- package/dist/core/env-paths.d.ts +3 -0
- package/dist/core/env-paths.js +38 -0
- package/dist/core/execution-guidance.d.ts +9 -0
- package/dist/core/execution-guidance.js +73 -0
- package/dist/core/execution-target.d.ts +41 -0
- package/dist/core/execution-target.js +69 -0
- package/dist/core/file-coordination.d.ts +66 -0
- package/dist/core/file-coordination.js +176 -0
- package/dist/core/file-lease-store.d.ts +14 -0
- package/dist/core/file-lease-store.js +89 -0
- package/dist/core/image-limits.d.ts +26 -0
- package/dist/core/image-limits.js +205 -0
- package/dist/core/interruptible-completion.d.ts +3 -0
- package/dist/core/interruptible-completion.js +42 -0
- package/dist/core/kingdoms-mode-state.d.ts +24 -0
- package/dist/core/kingdoms-mode-state.js +139 -0
- package/dist/core/licenza.d.ts +38 -0
- package/dist/core/licenza.js +125 -0
- package/dist/core/model-limits.d.ts +2 -0
- package/dist/core/model-limits.js +36 -0
- package/dist/core/output-lifecycle.d.ts +44 -0
- package/dist/core/output-lifecycle.js +190 -0
- package/dist/core/package-update.d.ts +15 -0
- package/dist/core/package-update.js +121 -0
- package/dist/core/permission-queue.d.ts +2 -0
- package/dist/core/permission-queue.js +20 -0
- package/dist/core/prompt-attachment.d.ts +21 -0
- package/dist/core/prompt-attachment.js +123 -0
- package/dist/core/request-plan.d.ts +16 -0
- package/dist/core/request-plan.js +36 -0
- package/dist/core/run-timing.d.ts +17 -0
- package/dist/core/run-timing.js +123 -0
- package/dist/core/self-update.d.ts +17 -0
- package/dist/core/self-update.js +54 -0
- package/dist/core/session-refs.d.ts +27 -0
- package/dist/core/session-refs.js +126 -0
- package/dist/core/session-storage.d.ts +4 -0
- package/dist/core/session-storage.js +48 -0
- package/dist/core/session-title.d.ts +1 -0
- package/dist/core/session-title.js +21 -0
- package/dist/core/session-usage.d.ts +17 -0
- package/dist/core/session-usage.js +74 -0
- package/dist/core/session.d.ts +58 -0
- package/dist/core/session.js +296 -0
- package/dist/core/settings.d.ts +17 -0
- package/dist/core/settings.js +107 -0
- package/dist/core/storage-retention.d.ts +21 -0
- package/dist/core/storage-retention.js +227 -0
- package/dist/core/text-sanitize.d.ts +1 -0
- package/dist/core/text-sanitize.js +35 -0
- package/dist/core/tool-artifacts.d.ts +6 -0
- package/dist/core/tool-artifacts.js +51 -0
- package/dist/core/tool-compress.d.ts +8 -0
- package/dist/core/tool-compress.js +111 -0
- package/dist/core/tool-executor.d.ts +16 -0
- package/dist/core/tool-executor.js +97 -0
- package/dist/core/tool-result-index.d.ts +52 -0
- package/dist/core/tool-result-index.js +327 -0
- package/dist/core/tool-result-store.d.ts +38 -0
- package/dist/core/tool-result-store.js +190 -0
- package/dist/core/tool-scheduler.d.ts +16 -0
- package/dist/core/tool-scheduler.js +35 -0
- package/dist/core/trust.d.ts +21 -0
- package/dist/core/trust.js +95 -0
- package/dist/core/types.d.ts +402 -0
- package/dist/core/types.js +1 -0
- package/dist/core/update-check.d.ts +26 -0
- package/dist/core/update-check.js +89 -0
- package/dist/core/update-process.d.ts +10 -0
- package/dist/core/update-process.js +31 -0
- package/dist/core/user-inbox.d.ts +23 -0
- package/dist/core/user-inbox.js +56 -0
- package/dist/core/user-input.d.ts +10 -0
- package/dist/core/user-input.js +35 -0
- package/dist/core/version.d.ts +1 -0
- package/dist/core/version.js +10 -0
- package/dist/core/vibe-modes.d.ts +38 -0
- package/dist/core/vibe-modes.js +383 -0
- package/dist/core/workspace-roots.d.ts +13 -0
- package/dist/core/workspace-roots.js +91 -0
- package/dist/core/workspace-sessions.d.ts +51 -0
- package/dist/core/workspace-sessions.js +243 -0
- package/dist/cowork/client.d.ts +29 -0
- package/dist/cowork/client.js +49 -0
- package/dist/cowork/engine-bridge.d.ts +22 -0
- package/dist/cowork/engine-bridge.js +98 -0
- package/dist/cowork/index.d.ts +11 -0
- package/dist/cowork/index.js +16 -0
- package/dist/cowork/ipc.d.ts +97 -0
- package/dist/cowork/ipc.js +96 -0
- package/dist/cowork/manager.d.ts +66 -0
- package/dist/cowork/manager.js +325 -0
- package/dist/cowork/store.d.ts +23 -0
- package/dist/cowork/store.js +182 -0
- package/dist/cowork/sync.d.ts +20 -0
- package/dist/cowork/sync.js +164 -0
- package/dist/cowork/types.d.ts +78 -0
- package/dist/cowork/types.js +21 -0
- package/dist/extensions/ext-tools.d.ts +3 -0
- package/dist/extensions/ext-tools.js +73 -0
- package/dist/extensions/loader.d.ts +91 -0
- package/dist/extensions/loader.js +474 -0
- package/dist/extensions/settings.d.ts +20 -0
- package/dist/extensions/settings.js +86 -0
- package/dist/extensions/types.d.ts +219 -0
- package/dist/extensions/types.js +1 -0
- package/dist/horizon/async-queue.d.ts +9 -0
- package/dist/horizon/async-queue.js +46 -0
- package/dist/horizon/engine.d.ts +85 -0
- package/dist/horizon/engine.js +603 -0
- package/dist/horizon/index.d.ts +4 -0
- package/dist/horizon/index.js +2 -0
- package/dist/horizon/main-team.d.ts +163 -0
- package/dist/horizon/main-team.js +774 -0
- package/dist/horizon/types.d.ts +233 -0
- package/dist/horizon/types.js +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +233 -0
- package/dist/mcp/protocol.d.ts +81 -0
- package/dist/mcp/protocol.js +122 -0
- package/dist/package.json +1 -0
- package/dist/packages/packages.d.ts +12 -0
- package/dist/packages/packages.js +323 -0
- package/dist/prompts/templates.d.ts +13 -0
- package/dist/prompts/templates.js +139 -0
- package/dist/providers/anthropic-oauth.d.ts +13 -0
- package/dist/providers/anthropic-oauth.js +124 -0
- package/dist/providers/anthropic.d.ts +27 -0
- package/dist/providers/anthropic.js +526 -0
- package/dist/providers/catalog.d.ts +15 -0
- package/dist/providers/catalog.js +166 -0
- package/dist/providers/effort.d.ts +12 -0
- package/dist/providers/effort.js +102 -0
- package/dist/providers/model-catalog.d.ts +43 -0
- package/dist/providers/model-catalog.js +70 -0
- package/dist/providers/model-effort.d.ts +5 -0
- package/dist/providers/model-effort.js +43 -0
- package/dist/providers/model-registry.d.ts +39 -0
- package/dist/providers/model-registry.js +142 -0
- package/dist/providers/models-dev.d.ts +9 -0
- package/dist/providers/models-dev.js +97 -0
- package/dist/providers/oauth-callback-server.d.ts +28 -0
- package/dist/providers/oauth-callback-server.js +184 -0
- package/dist/providers/oauth-orchestrator.d.ts +58 -0
- package/dist/providers/oauth-orchestrator.js +159 -0
- package/dist/providers/oauth-store.d.ts +12 -0
- package/dist/providers/oauth-store.js +139 -0
- package/dist/providers/open-browser.d.ts +20 -0
- package/dist/providers/open-browser.js +92 -0
- package/dist/providers/openai-compat.d.ts +14 -0
- package/dist/providers/openai-compat.js +523 -0
- package/dist/providers/openai-oauth.d.ts +15 -0
- package/dist/providers/openai-oauth.js +382 -0
- package/dist/providers/openrouter-auth.d.ts +73 -0
- package/dist/providers/openrouter-auth.js +321 -0
- package/dist/providers/openrouter-manual-fallback.d.ts +25 -0
- package/dist/providers/openrouter-manual-fallback.js +161 -0
- package/dist/providers/openrouter.d.ts +15 -0
- package/dist/providers/openrouter.js +107 -0
- package/dist/providers/plan-limits.d.ts +6 -0
- package/dist/providers/plan-limits.js +175 -0
- package/dist/providers/provider-reset.d.ts +4 -0
- package/dist/providers/provider-reset.js +83 -0
- package/dist/providers/quota-limits.d.ts +4 -0
- package/dist/providers/quota-limits.js +33 -0
- package/dist/providers/registry.d.ts +33 -0
- package/dist/providers/registry.js +213 -0
- package/dist/providers/retry.d.ts +37 -0
- package/dist/providers/retry.js +347 -0
- package/dist/rpc/server.d.ts +23 -0
- package/dist/rpc/server.js +222 -0
- package/dist/sdk.d.ts +67 -0
- package/dist/sdk.js +64 -0
- package/dist/skills/skills.d.ts +17 -0
- package/dist/skills/skills.js +155 -0
- package/dist/text-sanitize.js +28 -0
- package/dist/tools/ask-user.d.ts +2 -0
- package/dist/tools/ask-user.js +60 -0
- package/dist/tools/builtin.d.ts +48 -0
- package/dist/tools/builtin.js +2494 -0
- package/dist/tools/capabilities.d.ts +5 -0
- package/dist/tools/capabilities.js +55 -0
- package/dist/tools/computer-capture.d.ts +2 -0
- package/dist/tools/computer-capture.js +91 -0
- package/dist/tools/computer-posix.d.ts +5 -0
- package/dist/tools/computer-posix.js +136 -0
- package/dist/tools/computer-use.d.ts +14 -0
- package/dist/tools/computer-use.js +108 -0
- package/dist/tools/discovery.d.ts +12 -0
- package/dist/tools/discovery.js +205 -0
- package/dist/tools/execute.d.ts +2 -0
- package/dist/tools/execute.js +73 -0
- package/dist/tools/normalize-input.d.ts +17 -0
- package/dist/tools/normalize-input.js +174 -0
- package/dist/tools/output-artifact.d.ts +3 -0
- package/dist/tools/output-artifact.js +80 -0
- package/dist/tools/pagination.d.ts +15 -0
- package/dist/tools/pagination.js +93 -0
- package/dist/tools/plan-status.d.ts +2 -0
- package/dist/tools/plan-status.js +109 -0
- package/dist/tools/program-input.d.ts +3 -0
- package/dist/tools/program-input.js +19 -0
- package/dist/tools/program.d.ts +3 -0
- package/dist/tools/program.js +567 -0
- package/dist/tools/protocol-catalog.d.ts +12 -0
- package/dist/tools/protocol-catalog.js +46 -0
- package/dist/tools/ramification-tools.d.ts +12 -0
- package/dist/tools/ramification-tools.js +528 -0
- package/dist/tools/regex-compat.d.ts +9 -0
- package/dist/tools/regex-compat.js +96 -0
- package/dist/tools/registry.d.ts +51 -0
- package/dist/tools/registry.js +185 -0
- package/dist/tools/resolve.d.ts +2 -0
- package/dist/tools/resolve.js +107 -0
- package/dist/tools/shell-env.d.ts +2 -0
- package/dist/tools/shell-env.js +7 -0
- package/dist/tools/team-input.d.ts +3 -0
- package/dist/tools/team-input.js +129 -0
- package/dist/tools/team-tools.d.ts +7 -0
- package/dist/tools/team-tools.js +348 -0
- package/dist/tools/workspace-sessions.d.ts +2 -0
- package/dist/tools/workspace-sessions.js +35 -0
- package/dist/tui/account-entry.d.ts +1 -0
- package/dist/tui/account-entry.js +93 -0
- package/dist/tui/attachment-highlight.d.ts +1 -0
- package/dist/tui/attachment-highlight.js +24 -0
- package/dist/tui/attachment-refs.d.ts +2 -0
- package/dist/tui/attachment-refs.js +3 -0
- package/dist/tui/bottom-input.d.ts +219 -0
- package/dist/tui/bottom-input.js +1958 -0
- package/dist/tui/branding.d.ts +107 -0
- package/dist/tui/branding.js +750 -0
- package/dist/tui/clipboard-image.d.ts +10 -0
- package/dist/tui/clipboard-image.js +163 -0
- package/dist/tui/clipboard-text.d.ts +9 -0
- package/dist/tui/clipboard-text.js +51 -0
- package/dist/tui/clipboard-windows.d.ts +8 -0
- package/dist/tui/clipboard-windows.js +84 -0
- package/dist/tui/collapsible-command.d.ts +15 -0
- package/dist/tui/collapsible-command.js +48 -0
- package/dist/tui/command-feedback.d.ts +10 -0
- package/dist/tui/command-feedback.js +46 -0
- package/dist/tui/command-output-registry.d.ts +28 -0
- package/dist/tui/command-output-registry.js +103 -0
- package/dist/tui/command-transcript.d.ts +12 -0
- package/dist/tui/command-transcript.js +90 -0
- package/dist/tui/commands.d.ts +20 -0
- package/dist/tui/commands.js +131 -0
- package/dist/tui/context-bar.d.ts +4 -0
- package/dist/tui/context-bar.js +74 -0
- package/dist/tui/context-meter.d.ts +25 -0
- package/dist/tui/context-meter.js +81 -0
- package/dist/tui/cost-binding.d.ts +8 -0
- package/dist/tui/cost-binding.js +43 -0
- package/dist/tui/cost-tracker.d.ts +49 -0
- package/dist/tui/cost-tracker.js +122 -0
- package/dist/tui/diff.d.ts +9 -0
- package/dist/tui/diff.js +119 -0
- package/dist/tui/i18n-catalog.d.ts +5 -0
- package/dist/tui/i18n-catalog.js +184 -0
- package/dist/tui/i18n.d.ts +6 -0
- package/dist/tui/i18n.js +10 -0
- package/dist/tui/image-attachments.d.ts +46 -0
- package/dist/tui/image-attachments.js +167 -0
- package/dist/tui/images.d.ts +12 -0
- package/dist/tui/images.js +87 -0
- package/dist/tui/intro.d.ts +13 -0
- package/dist/tui/intro.js +109 -0
- package/dist/tui/language-preference.d.ts +6 -0
- package/dist/tui/language-preference.js +24 -0
- package/dist/tui/live-output.d.ts +2 -0
- package/dist/tui/live-output.js +18 -0
- package/dist/tui/locales.d.ts +19 -0
- package/dist/tui/locales.js +22 -0
- package/dist/tui/login-menu.d.ts +17 -0
- package/dist/tui/login-menu.js +58 -0
- package/dist/tui/logo.d.ts +8 -0
- package/dist/tui/logo.js +305 -0
- package/dist/tui/markdown-inline.d.ts +3 -0
- package/dist/tui/markdown-inline.js +99 -0
- package/dist/tui/markdown-table.d.ts +4 -0
- package/dist/tui/markdown-table.js +63 -0
- package/dist/tui/markdown.d.ts +11 -0
- package/dist/tui/markdown.js +257 -0
- package/dist/tui/mcp-transcript.d.ts +7 -0
- package/dist/tui/mcp-transcript.js +40 -0
- package/dist/tui/model-details.d.ts +2 -0
- package/dist/tui/model-details.js +21 -0
- package/dist/tui/model-selection.d.ts +7 -0
- package/dist/tui/model-selection.js +41 -0
- package/dist/tui/native-scrollback.d.ts +27 -0
- package/dist/tui/native-scrollback.js +134 -0
- package/dist/tui/onboarding.d.ts +72 -0
- package/dist/tui/onboarding.js +207 -0
- package/dist/tui/paste-collapse.d.ts +39 -0
- package/dist/tui/paste-collapse.js +117 -0
- package/dist/tui/perm-mode.d.ts +8 -0
- package/dist/tui/perm-mode.js +41 -0
- package/dist/tui/prompt-queue-store.d.ts +26 -0
- package/dist/tui/prompt-queue-store.js +87 -0
- package/dist/tui/prompt-queue.d.ts +47 -0
- package/dist/tui/prompt-queue.js +187 -0
- package/dist/tui/provider-menu.d.ts +33 -0
- package/dist/tui/provider-menu.js +175 -0
- package/dist/tui/question.d.ts +24 -0
- package/dist/tui/question.js +32 -0
- package/dist/tui/queue-screen.d.ts +25 -0
- package/dist/tui/queue-screen.js +152 -0
- package/dist/tui/queue-team.d.ts +3 -0
- package/dist/tui/queue-team.js +28 -0
- package/dist/tui/queued-questions.d.ts +20 -0
- package/dist/tui/queued-questions.js +163 -0
- package/dist/tui/quick-help.d.ts +1 -0
- package/dist/tui/quick-help.js +53 -0
- package/dist/tui/repl.d.ts +78 -0
- package/dist/tui/repl.js +4130 -0
- package/dist/tui/restore-queued-input.d.ts +3 -0
- package/dist/tui/restore-queued-input.js +20 -0
- package/dist/tui/review-detail.d.ts +6 -0
- package/dist/tui/review-detail.js +56 -0
- package/dist/tui/review-files.d.ts +3 -0
- package/dist/tui/review-files.js +22 -0
- package/dist/tui/review-render.d.ts +22 -0
- package/dist/tui/review-render.js +98 -0
- package/dist/tui/review-screen.d.ts +38 -0
- package/dist/tui/review-screen.js +358 -0
- package/dist/tui/review-store.d.ts +60 -0
- package/dist/tui/review-store.js +270 -0
- package/dist/tui/review-team.d.ts +2 -0
- package/dist/tui/review-team.js +27 -0
- package/dist/tui/selector-mouse.d.ts +26 -0
- package/dist/tui/selector-mouse.js +65 -0
- package/dist/tui/selector.d.ts +51 -0
- package/dist/tui/selector.js +299 -0
- package/dist/tui/session-replay.d.ts +10 -0
- package/dist/tui/session-replay.js +78 -0
- package/dist/tui/session-usage.d.ts +22 -0
- package/dist/tui/session-usage.js +55 -0
- package/dist/tui/skill-transcript.d.ts +5 -0
- package/dist/tui/skill-transcript.js +31 -0
- package/dist/tui/startup.d.ts +5 -0
- package/dist/tui/startup.js +61 -0
- package/dist/tui/status-line-loader.d.ts +8 -0
- package/dist/tui/status-line-loader.js +33 -0
- package/dist/tui/status-line.d.ts +38 -0
- package/dist/tui/status-line.js +213 -0
- package/dist/tui/system-language.d.ts +8 -0
- package/dist/tui/system-language.js +41 -0
- package/dist/tui/task-labels.d.ts +2 -0
- package/dist/tui/task-labels.js +7 -0
- package/dist/tui/term-bg.d.ts +4 -0
- package/dist/tui/term-bg.js +67 -0
- package/dist/tui/terminal-screen.d.ts +12 -0
- package/dist/tui/terminal-screen.js +1 -0
- package/dist/tui/terminal-text.d.ts +7 -0
- package/dist/tui/terminal-text.js +123 -0
- package/dist/tui/theme.d.ts +25 -0
- package/dist/tui/theme.js +383 -0
- package/dist/tui/tool-style.d.ts +7 -0
- package/dist/tui/tool-style.js +119 -0
- package/dist/tui/update-prompt.d.ts +14 -0
- package/dist/tui/update-prompt.js +104 -0
- package/dist/tui/usage-footer.d.ts +9 -0
- package/dist/tui/usage-footer.js +123 -0
- package/dist/tui/vascend-login.d.ts +68 -0
- package/dist/tui/vascend-login.js +355 -0
- package/dist/tui/web-login.d.ts +28 -0
- package/dist/tui/web-login.js +115 -0
- package/dist/vascend/activity-status.d.ts +12 -0
- package/dist/vascend/activity-status.js +68 -0
- package/dist/vascend/architecture-map.d.ts +73 -0
- package/dist/vascend/architecture-map.js +424 -0
- package/dist/vascend/attention-layout.d.ts +19 -0
- package/dist/vascend/attention-layout.js +141 -0
- package/dist/vascend/budget-allocator.d.ts +31 -0
- package/dist/vascend/budget-allocator.js +79 -0
- package/dist/vascend/candidate-collector.d.ts +20 -0
- package/dist/vascend/candidate-collector.js +220 -0
- package/dist/vascend/code-events.d.ts +24 -0
- package/dist/vascend/code-events.js +304 -0
- package/dist/vascend/code-graph-memory.d.ts +38 -0
- package/dist/vascend/code-graph-memory.js +334 -0
- package/dist/vascend/code-graph-runtime.d.ts +19 -0
- package/dist/vascend/code-graph-runtime.js +190 -0
- package/dist/vascend/code-graph-types.d.ts +58 -0
- package/dist/vascend/code-graph-types.js +50 -0
- package/dist/vascend/code-parser.d.ts +4 -0
- package/dist/vascend/code-parser.js +257 -0
- package/dist/vascend/competitor-knowledge.d.ts +53 -0
- package/dist/vascend/competitor-knowledge.js +262 -0
- package/dist/vascend/completeness.d.ts +16 -0
- package/dist/vascend/completeness.js +90 -0
- package/dist/vascend/context-autotuner.d.ts +45 -0
- package/dist/vascend/context-autotuner.js +231 -0
- package/dist/vascend/context-candidate.d.ts +45 -0
- package/dist/vascend/context-candidate.js +150 -0
- package/dist/vascend/context-capsule.d.ts +51 -0
- package/dist/vascend/context-capsule.js +133 -0
- package/dist/vascend/context-fabric.d.ts +108 -0
- package/dist/vascend/context-fabric.js +480 -0
- package/dist/vascend/context-feedback-loop.d.ts +56 -0
- package/dist/vascend/context-feedback-loop.js +204 -0
- package/dist/vascend/context-learning-identity.d.ts +4 -0
- package/dist/vascend/context-learning-identity.js +8 -0
- package/dist/vascend/context-links.d.ts +14 -0
- package/dist/vascend/context-links.js +83 -0
- package/dist/vascend/context-lint.d.ts +22 -0
- package/dist/vascend/context-lint.js +91 -0
- package/dist/vascend/context-market-selection.d.ts +17 -0
- package/dist/vascend/context-market-selection.js +50 -0
- package/dist/vascend/context-metrics.d.ts +25 -0
- package/dist/vascend/context-metrics.js +57 -0
- package/dist/vascend/context-pack-render.d.ts +16 -0
- package/dist/vascend/context-pack-render.js +52 -0
- package/dist/vascend/context-pareto.d.ts +33 -0
- package/dist/vascend/context-pareto.js +165 -0
- package/dist/vascend/context-pattern-explorer.d.ts +41 -0
- package/dist/vascend/context-pattern-explorer.js +276 -0
- package/dist/vascend/context-regret.d.ts +32 -0
- package/dist/vascend/context-regret.js +93 -0
- package/dist/vascend/context-retriever.d.ts +22 -0
- package/dist/vascend/context-retriever.js +243 -0
- package/dist/vascend/context-scope-index.d.ts +5 -0
- package/dist/vascend/context-scope-index.js +96 -0
- package/dist/vascend/context-scorer.d.ts +35 -0
- package/dist/vascend/context-scorer.js +162 -0
- package/dist/vascend/context-search-index.d.ts +12 -0
- package/dist/vascend/context-search-index.js +25 -0
- package/dist/vascend/context-snapshot.d.ts +22 -0
- package/dist/vascend/context-snapshot.js +135 -0
- package/dist/vascend/context-window-compiler.d.ts +42 -0
- package/dist/vascend/context-window-compiler.js +237 -0
- package/dist/vascend/contract-memory.d.ts +61 -0
- package/dist/vascend/contract-memory.js +435 -0
- package/dist/vascend/council.d.ts +58 -0
- package/dist/vascend/council.js +337 -0
- package/dist/vascend/decision-promotion.d.ts +48 -0
- package/dist/vascend/decision-promotion.js +410 -0
- package/dist/vascend/delta-context.d.ts +12 -0
- package/dist/vascend/delta-context.js +36 -0
- package/dist/vascend/dev-context-compiler.d.ts +27 -0
- package/dist/vascend/dev-context-compiler.js +133 -0
- package/dist/vascend/dev-context-layout.d.ts +30 -0
- package/dist/vascend/dev-context-layout.js +262 -0
- package/dist/vascend/evidence-slots.d.ts +14 -0
- package/dist/vascend/evidence-slots.js +55 -0
- package/dist/vascend/expansion-levels.d.ts +15 -0
- package/dist/vascend/expansion-levels.js +178 -0
- package/dist/vascend/file-lock.d.ts +7 -0
- package/dist/vascend/file-lock.js +95 -0
- package/dist/vascend/granular-kingdom.d.ts +25 -0
- package/dist/vascend/granular-kingdom.js +259 -0
- package/dist/vascend/granular-launcher.d.ts +48 -0
- package/dist/vascend/granular-launcher.js +202 -0
- package/dist/vascend/kingdom-bus.d.ts +25 -0
- package/dist/vascend/kingdom-bus.js +54 -0
- package/dist/vascend/kingdom-channel.d.ts +22 -0
- package/dist/vascend/kingdom-channel.js +180 -0
- package/dist/vascend/kingdom-kpi.d.ts +48 -0
- package/dist/vascend/kingdom-kpi.js +172 -0
- package/dist/vascend/kingdom-live.d.ts +28 -0
- package/dist/vascend/kingdom-live.js +61 -0
- package/dist/vascend/kingdom-run.d.ts +18 -0
- package/dist/vascend/kingdom-run.js +506 -0
- package/dist/vascend/kingdom-scribe.d.ts +20 -0
- package/dist/vascend/kingdom-scribe.js +52 -0
- package/dist/vascend/kingdom.d.ts +79 -0
- package/dist/vascend/kingdom.js +870 -0
- package/dist/vascend/lexical-index.d.ts +10 -0
- package/dist/vascend/lexical-index.js +99 -0
- package/dist/vascend/lexical-search.d.ts +29 -0
- package/dist/vascend/lexical-search.js +262 -0
- package/dist/vascend/long-term-context.d.ts +51 -0
- package/dist/vascend/long-term-context.js +194 -0
- package/dist/vascend/mandate.d.ts +33 -0
- package/dist/vascend/mandate.js +107 -0
- package/dist/vascend/memory-packet.d.ts +13 -0
- package/dist/vascend/memory-packet.js +155 -0
- package/dist/vascend/memory-status.d.ts +22 -0
- package/dist/vascend/memory-status.js +73 -0
- package/dist/vascend/memory-store.d.ts +62 -0
- package/dist/vascend/memory-store.js +273 -0
- package/dist/vascend/objective-revision.d.ts +69 -0
- package/dist/vascend/objective-revision.js +319 -0
- package/dist/vascend/patch-plan-store.d.ts +33 -0
- package/dist/vascend/patch-plan-store.js +240 -0
- package/dist/vascend/patch-plan.d.ts +97 -0
- package/dist/vascend/patch-plan.js +345 -0
- package/dist/vascend/plan-progress.d.ts +11 -0
- package/dist/vascend/plan-progress.js +68 -0
- package/dist/vascend/plan-store.d.ts +64 -0
- package/dist/vascend/plan-store.js +460 -0
- package/dist/vascend/proof-chains.d.ts +19 -0
- package/dist/vascend/proof-chains.js +120 -0
- package/dist/vascend/ramification-store.d.ts +25 -0
- package/dist/vascend/ramification-store.js +94 -0
- package/dist/vascend/ramification.d.ts +193 -0
- package/dist/vascend/ramification.js +583 -0
- package/dist/vascend/recall-planner.d.ts +17 -0
- package/dist/vascend/recall-planner.js +109 -0
- package/dist/vascend/requirements.d.ts +31 -0
- package/dist/vascend/requirements.js +151 -0
- package/dist/vascend/reviewer.d.ts +9 -0
- package/dist/vascend/reviewer.js +93 -0
- package/dist/vascend/room-graph.d.ts +29 -0
- package/dist/vascend/room-graph.js +242 -0
- package/dist/vascend/room-memory.d.ts +57 -0
- package/dist/vascend/room-memory.js +631 -0
- package/dist/vascend/runtime.d.ts +84 -0
- package/dist/vascend/runtime.js +286 -0
- package/dist/vascend/self-improve.d.ts +104 -0
- package/dist/vascend/self-improve.js +396 -0
- package/dist/vascend/session-search.d.ts +52 -0
- package/dist/vascend/session-search.js +349 -0
- package/dist/vascend/supersession-graph.d.ts +14 -0
- package/dist/vascend/supersession-graph.js +70 -0
- package/dist/vascend/team-areas.d.ts +9 -0
- package/dist/vascend/team-areas.js +28 -0
- package/dist/vascend/team-handoff.d.ts +24 -0
- package/dist/vascend/team-handoff.js +37 -0
- package/dist/vascend/team-scheduler.d.ts +13 -0
- package/dist/vascend/team-scheduler.js +74 -0
- package/dist/vascend/team-session.d.ts +42 -0
- package/dist/vascend/team-session.js +142 -0
- package/dist/vascend/test-failure-memory.d.ts +76 -0
- package/dist/vascend/test-failure-memory.js +354 -0
- package/dist/vascend/token-market.d.ts +42 -0
- package/dist/vascend/token-market.js +144 -0
- package/dist/vascend/tuner-baseline-store.d.ts +52 -0
- package/dist/vascend/tuner-baseline-store.js +446 -0
- package/dist/vascend/user-profile.d.ts +44 -0
- package/dist/vascend/user-profile.js +131 -0
- package/dist/vascend/vision.d.ts +94 -0
- package/dist/vascend/vision.js +375 -0
- package/dist/vascend/work-agent.d.ts +12 -0
- package/dist/vascend/work-agent.js +83 -0
- package/dist/vascend/work-queue.d.ts +62 -0
- package/dist/vascend/work-queue.js +255 -0
- package/dist/vascend/work-runner.d.ts +64 -0
- package/dist/vascend/work-runner.js +137 -0
- package/dist/vascend/worktree.d.ts +38 -0
- package/dist/vascend/worktree.js +206 -0
- package/dist/vendor/computer-use/README.md +7 -0
- package/dist/vendor/computer-use/computer-desktop.js +211 -0
- package/dist/vendor/computer-use/computer-observe.js +315 -0
- package/dist/vendor/computer-use/computer-scripts.js +1230 -0
- package/dist/vendor/computer-use/computer-tools.js +2136 -0
- package/dist/vendor/computer-use/package.json +1 -0
- package/dist/vendor/computer-use/rac/atomic-input.js +91 -0
- package/dist/vendor/computer-use/rac/grammatica.js +101 -0
- package/dist/vendor/computer-use/rac/parser.js +185 -0
- package/dist/vendor/computer-use/rac/protocol.js +136 -0
- package/install.ps1 +30 -0
- package/install.sh +50 -0
- package/package.json +56 -0
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
import { parseVibeMode } from "./vibe-modes.js";
|
|
2
|
+
import { SessionIdError, validateSessionId } from "./session.js";
|
|
3
|
+
export class CliArgumentError extends Error {
|
|
4
|
+
exitCode = 2;
|
|
5
|
+
constructor(message) {
|
|
6
|
+
super(message);
|
|
7
|
+
this.name = "CliArgumentError";
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
export function parseCliArgs(argv) {
|
|
11
|
+
const args = {
|
|
12
|
+
mode: "tui",
|
|
13
|
+
json: false,
|
|
14
|
+
yolo: false,
|
|
15
|
+
addDirs: [],
|
|
16
|
+
promptTemplates: [],
|
|
17
|
+
skills: [],
|
|
18
|
+
noSkills: false,
|
|
19
|
+
excludeTools: [],
|
|
20
|
+
help: false,
|
|
21
|
+
version: false,
|
|
22
|
+
extensionFlags: [],
|
|
23
|
+
};
|
|
24
|
+
const positional = [];
|
|
25
|
+
let explicitMode = null;
|
|
26
|
+
let afterDoubleDash = false;
|
|
27
|
+
const requireValue = (index, flag) => {
|
|
28
|
+
const value = argv[index + 1];
|
|
29
|
+
if (!value || value.startsWith("-"))
|
|
30
|
+
throw new CliArgumentError(`${flag} richiede un valore`);
|
|
31
|
+
return value;
|
|
32
|
+
};
|
|
33
|
+
const requirePositive = (index, flag) => {
|
|
34
|
+
const raw = Number(requireValue(index, flag));
|
|
35
|
+
if (!Number.isFinite(raw) || raw <= 0)
|
|
36
|
+
throw new CliArgumentError(`${flag} richiede un numero maggiore di zero`);
|
|
37
|
+
return Math.trunc(raw);
|
|
38
|
+
};
|
|
39
|
+
const setMode = (mode, flag) => {
|
|
40
|
+
if (explicitMode && explicitMode !== mode) {
|
|
41
|
+
throw new CliArgumentError(`${flag} e la modalita' ${explicitMode} non possono essere usati insieme`);
|
|
42
|
+
}
|
|
43
|
+
explicitMode = mode;
|
|
44
|
+
args.mode = mode;
|
|
45
|
+
};
|
|
46
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
47
|
+
const token = argv[i];
|
|
48
|
+
if (afterDoubleDash) {
|
|
49
|
+
positional.push(token);
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
if (token === "--") {
|
|
53
|
+
afterDoubleDash = true;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
switch (token) {
|
|
57
|
+
case "-h":
|
|
58
|
+
case "--help":
|
|
59
|
+
args.help = true;
|
|
60
|
+
break;
|
|
61
|
+
case "-V":
|
|
62
|
+
case "--version":
|
|
63
|
+
args.version = true;
|
|
64
|
+
break;
|
|
65
|
+
case "-p":
|
|
66
|
+
case "--print":
|
|
67
|
+
setMode("print", token);
|
|
68
|
+
break;
|
|
69
|
+
case "--rpc":
|
|
70
|
+
setMode("rpc", token);
|
|
71
|
+
break;
|
|
72
|
+
case "--doctor":
|
|
73
|
+
setMode("doctor", token);
|
|
74
|
+
break;
|
|
75
|
+
// Lavoro autonomo: il ciclo fuori dalla conversazione.
|
|
76
|
+
case "--work":
|
|
77
|
+
setMode("work", token);
|
|
78
|
+
break;
|
|
79
|
+
case "--work-list":
|
|
80
|
+
setMode("work", token);
|
|
81
|
+
args.workList = true;
|
|
82
|
+
break;
|
|
83
|
+
case "--work-scope":
|
|
84
|
+
setMode("work", token);
|
|
85
|
+
args.workScope = requireValue(i, token);
|
|
86
|
+
i += 1;
|
|
87
|
+
break;
|
|
88
|
+
case "--work-verify":
|
|
89
|
+
setMode("work", token);
|
|
90
|
+
args.workVerify = requireValue(i, token);
|
|
91
|
+
i += 1;
|
|
92
|
+
break;
|
|
93
|
+
case "--work-max":
|
|
94
|
+
setMode("work", token);
|
|
95
|
+
args.workMax = requirePositive(i, token);
|
|
96
|
+
i += 1;
|
|
97
|
+
break;
|
|
98
|
+
case "--work-minutes":
|
|
99
|
+
setMode("work", token);
|
|
100
|
+
args.workMinutes = requirePositive(i, token);
|
|
101
|
+
i += 1;
|
|
102
|
+
break;
|
|
103
|
+
case "--json":
|
|
104
|
+
args.json = true;
|
|
105
|
+
break;
|
|
106
|
+
case "--yolo":
|
|
107
|
+
args.yolo = true;
|
|
108
|
+
break;
|
|
109
|
+
case "-m":
|
|
110
|
+
case "--model":
|
|
111
|
+
args.model = requireValue(i, token);
|
|
112
|
+
i += 1;
|
|
113
|
+
break;
|
|
114
|
+
case "-C":
|
|
115
|
+
case "--cwd":
|
|
116
|
+
args.cwd = requireValue(i, token);
|
|
117
|
+
i += 1;
|
|
118
|
+
break;
|
|
119
|
+
case "--add-dir":
|
|
120
|
+
args.addDirs.push(requireValue(i, token));
|
|
121
|
+
i += 1;
|
|
122
|
+
break;
|
|
123
|
+
case "--config":
|
|
124
|
+
args.config = requireValue(i, token);
|
|
125
|
+
i += 1;
|
|
126
|
+
break;
|
|
127
|
+
case "--prompt-template":
|
|
128
|
+
args.promptTemplates.push(requireValue(i, token));
|
|
129
|
+
i += 1;
|
|
130
|
+
break;
|
|
131
|
+
case "--skill":
|
|
132
|
+
args.skills.push(requireValue(i, token));
|
|
133
|
+
i += 1;
|
|
134
|
+
break;
|
|
135
|
+
case "--no-skills":
|
|
136
|
+
args.noSkills = true;
|
|
137
|
+
break;
|
|
138
|
+
case "--approve":
|
|
139
|
+
args.approve = true;
|
|
140
|
+
break;
|
|
141
|
+
case "--no-approve":
|
|
142
|
+
args.noApprove = true;
|
|
143
|
+
break;
|
|
144
|
+
case "--session-id":
|
|
145
|
+
args.sessionId = requireValue(i, token);
|
|
146
|
+
i += 1;
|
|
147
|
+
break;
|
|
148
|
+
case "-c":
|
|
149
|
+
case "--continue":
|
|
150
|
+
args.continueLast = true;
|
|
151
|
+
break;
|
|
152
|
+
case "--resume": {
|
|
153
|
+
const next = argv[i + 1];
|
|
154
|
+
if (next && !next.startsWith("-")) {
|
|
155
|
+
args.sessionId = next;
|
|
156
|
+
i += 1;
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
args.resumePicker = true;
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
}
|
|
163
|
+
case "--name":
|
|
164
|
+
args.name = requireValue(i, token);
|
|
165
|
+
i += 1;
|
|
166
|
+
break;
|
|
167
|
+
case "--exclude-tools":
|
|
168
|
+
args.excludeTools.push(...requireValue(i, token).split(",").map((value) => value.trim()).filter(Boolean));
|
|
169
|
+
i += 1;
|
|
170
|
+
break;
|
|
171
|
+
case "--vibe":
|
|
172
|
+
case "--mode": {
|
|
173
|
+
const raw = requireValue(i, token);
|
|
174
|
+
const parsed = parseVibeMode(raw);
|
|
175
|
+
if (!parsed)
|
|
176
|
+
throw new CliArgumentError(`modalita' vibe sconosciuta: ${raw}`);
|
|
177
|
+
args.vibeMode = parsed;
|
|
178
|
+
i += 1;
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
default: {
|
|
182
|
+
if (token.startsWith("--")) {
|
|
183
|
+
// Le estensioni vengono caricate dopo il parsing core. I flag custom
|
|
184
|
+
// con valore usano --nome=valore, evitando ambiguita' col prompt.
|
|
185
|
+
const eq = token.indexOf("=");
|
|
186
|
+
args.extensionFlags.push(eq > 2
|
|
187
|
+
? { name: token.slice(0, eq), value: token.slice(eq + 1) }
|
|
188
|
+
: { name: token });
|
|
189
|
+
}
|
|
190
|
+
else if (token.startsWith("-")) {
|
|
191
|
+
throw new CliArgumentError(`flag sconosciuto: ${token}`);
|
|
192
|
+
}
|
|
193
|
+
else {
|
|
194
|
+
positional.push(token);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
if (args.help || args.version)
|
|
200
|
+
return Object.freeze({ ...args });
|
|
201
|
+
if (args.sessionId) {
|
|
202
|
+
try {
|
|
203
|
+
args.sessionId = validateSessionId(args.sessionId);
|
|
204
|
+
}
|
|
205
|
+
catch (err) {
|
|
206
|
+
if (err instanceof SessionIdError)
|
|
207
|
+
throw new CliArgumentError(err.message);
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
if (args.approve && args.noApprove)
|
|
212
|
+
throw new CliArgumentError("--approve e --no-approve sono incompatibili");
|
|
213
|
+
if (args.continueLast && (args.sessionId || args.resumePicker)) {
|
|
214
|
+
throw new CliArgumentError("--continue non puo' essere combinato con --resume/--session-id");
|
|
215
|
+
}
|
|
216
|
+
if (args.resumePicker && args.mode !== "tui") {
|
|
217
|
+
throw new CliArgumentError("--resume senza id richiede la TUI");
|
|
218
|
+
}
|
|
219
|
+
if (args.json && args.mode === "tui") {
|
|
220
|
+
throw new CliArgumentError("--json richiede --print, --rpc, --doctor o --work");
|
|
221
|
+
}
|
|
222
|
+
if (positional.length) {
|
|
223
|
+
if (args.mode !== "print") {
|
|
224
|
+
throw new CliArgumentError("un prompt posizionale richiede --print (-p)");
|
|
225
|
+
}
|
|
226
|
+
args.prompt = positional.join(" ");
|
|
227
|
+
}
|
|
228
|
+
return Object.freeze({ ...args });
|
|
229
|
+
}
|
|
230
|
+
export function cliHelp() {
|
|
231
|
+
return `Horizon - agente Vascend da terminale
|
|
232
|
+
|
|
233
|
+
USO
|
|
234
|
+
horizon [opzioni]
|
|
235
|
+
horizon --print [opzioni] "prompt"
|
|
236
|
+
horizon --rpc [opzioni]
|
|
237
|
+
horizon --doctor
|
|
238
|
+
horizon --work [--work-verify "npm test"] [--work-max N] [--work-minutes N]
|
|
239
|
+
|
|
240
|
+
MODALITA'
|
|
241
|
+
-p, --print esegue un prompt one-shot
|
|
242
|
+
--rpc protocollo JSONL su stdin/stdout
|
|
243
|
+
--doctor diagnostica ambiente (provider, modello, sessioni)
|
|
244
|
+
--json emette AgentEvent JSONL (print/RPC/work) o il report doctor
|
|
245
|
+
|
|
246
|
+
LAVORO AUTONOMO (il ciclo sta fuori dalla conversazione)
|
|
247
|
+
--work prende le unita' dalla coda, una per agente NUOVO
|
|
248
|
+
--work-list mostra la coda (stati, lease, tentativi) e esce
|
|
249
|
+
--work-scope <nome> coda e memoria condivisa del progetto (default: default)
|
|
250
|
+
--work-verify <cmd> comando che decide se un'unita' e' fatta (exit code)
|
|
251
|
+
--work-max <N> quante unita' al massimo in questo giro (default 25)
|
|
252
|
+
--work-minutes <N> smette di rivendicare dopo N minuti
|
|
253
|
+
|
|
254
|
+
MODELLO E CONTESTO
|
|
255
|
+
-m, --model <provider/id> seleziona provider e modello
|
|
256
|
+
-C, --cwd <path> workspace seguito
|
|
257
|
+
--add-dir <path> aggiunge una root allo stesso workspace (ripetibile)
|
|
258
|
+
--vibe <modalita> auto, flow, debug, architect, ui, ship,
|
|
259
|
+
migrate, security, swarm, ultracheck, ...
|
|
260
|
+
--config <path> config esplicita
|
|
261
|
+
--prompt-template <p> directory/file template aggiuntivo (ripetibile)
|
|
262
|
+
--skill <path> skill aggiuntiva (ripetibile)
|
|
263
|
+
--no-skills disabilita discovery skill
|
|
264
|
+
|
|
265
|
+
SESSIONE E SICUREZZA
|
|
266
|
+
-c, --continue riprende l'ultima sessione
|
|
267
|
+
--resume [id] riprende id; senza id apre il picker TUI
|
|
268
|
+
--session-id <id> usa una sessione specifica
|
|
269
|
+
--name <nome> assegna un nome alla sessione
|
|
270
|
+
--approve considera fidate le risorse locali
|
|
271
|
+
--no-approve nega le risorse locali
|
|
272
|
+
--yolo auto-approva i tool (anche in TUI; usare con cautela)
|
|
273
|
+
--exclude-tools <a,b> rimuove tool dal registry
|
|
274
|
+
|
|
275
|
+
ALTRO
|
|
276
|
+
-h, --help mostra questo aiuto
|
|
277
|
+
-V, --version mostra la versione
|
|
278
|
+
-- termina il parsing delle opzioni
|
|
279
|
+
|
|
280
|
+
I flag delle estensioni sono accettati dopo il bootstrap. Per un valore usa
|
|
281
|
+
la forma non ambigua --nome=valore.`;
|
|
282
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export type CollapsibleState = "open" | "closed";
|
|
2
|
+
export type ContentSource = string | (() => string);
|
|
3
|
+
export interface CollapsibleOptions {
|
|
4
|
+
readonly summary: string;
|
|
5
|
+
readonly content: ContentSource;
|
|
6
|
+
readonly open?: boolean;
|
|
7
|
+
readonly onCleanup?: (id: string) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface Collapsible {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
summary: string;
|
|
12
|
+
state: CollapsibleState;
|
|
13
|
+
readonly createdAt: number;
|
|
14
|
+
readonly source: ContentSource;
|
|
15
|
+
materialized: string | null;
|
|
16
|
+
readonly onCleanup?: (id: string) => void;
|
|
17
|
+
}
|
|
18
|
+
export declare class CollapsibleRegistry {
|
|
19
|
+
private readonly items;
|
|
20
|
+
private readonly order;
|
|
21
|
+
private seq;
|
|
22
|
+
private readonly changeCbs;
|
|
23
|
+
register(opts: CollapsibleOptions): string;
|
|
24
|
+
get(id: string): Collapsible | undefined;
|
|
25
|
+
list(): readonly Collapsible[];
|
|
26
|
+
isOpen(id: string): boolean;
|
|
27
|
+
render(id: string): string;
|
|
28
|
+
open(id: string): boolean;
|
|
29
|
+
close(id: string): boolean;
|
|
30
|
+
toggle(id: string): CollapsibleState | null;
|
|
31
|
+
updateSummary(id: string, summary: string): boolean;
|
|
32
|
+
remove(id: string): boolean;
|
|
33
|
+
closeAll(): number;
|
|
34
|
+
size(): number;
|
|
35
|
+
onChange(cb: () => void): () => void;
|
|
36
|
+
private emitChange;
|
|
37
|
+
}
|
|
38
|
+
export declare const collapsibleRegistry: CollapsibleRegistry;
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// Utility riutilizzabile per OUTPUT COLLASSABILI/ESPANDIBILI in chat.
|
|
2
|
+
//
|
|
3
|
+
// Modella un blocco di output (es. il risultato di un comando) che puo' essere
|
|
4
|
+
// mostrato in forma compatta (solo una riga di sintesi) oppure espanso (con il
|
|
5
|
+
// contenuto completo). Lo stato e' apri/chiudi (open/closed) e quando il blocco
|
|
6
|
+
// e' CHIUSO il suo contenuto pesante viene rilasciato (cleanup automatico), per
|
|
7
|
+
// non trattenere stringhe enormi in memoria piu' del necessario.
|
|
8
|
+
//
|
|
9
|
+
// E' deliberatamente DISACCOPPIATA da qualunque comando o dalla TUI: non importa
|
|
10
|
+
// nulla del rendering. Chi consuma (la TUI, un comando, un test) registra un
|
|
11
|
+
// blocco, riceve un id stabile e poi lo apre/chiude/interroga. Un callback
|
|
12
|
+
// onChange permette al consumatore di ri-renderizzare quando lo stato cambia.
|
|
13
|
+
// Stesso stile di BackgroundManager: classe pura, zero dipendenze a runtime.
|
|
14
|
+
// Registry dei blocchi collassabili. Gestisce id stabili, ordine d'inserimento,
|
|
15
|
+
// transizioni di stato con cleanup e notifiche di cambiamento. Riutilizzabile:
|
|
16
|
+
// se ne possono creare istanze separate (una per chat) o usarne una condivisa.
|
|
17
|
+
export class CollapsibleRegistry {
|
|
18
|
+
items = new Map();
|
|
19
|
+
order = [];
|
|
20
|
+
seq = 0;
|
|
21
|
+
changeCbs = new Set();
|
|
22
|
+
// Registra un nuovo blocco e ne ritorna l'id stabile.
|
|
23
|
+
register(opts) {
|
|
24
|
+
this.seq += 1;
|
|
25
|
+
const id = `co${this.seq}`;
|
|
26
|
+
const open = opts.open === true;
|
|
27
|
+
const item = {
|
|
28
|
+
id,
|
|
29
|
+
summary: opts.summary,
|
|
30
|
+
state: open ? "open" : "closed",
|
|
31
|
+
createdAt: Date.now(),
|
|
32
|
+
source: opts.content,
|
|
33
|
+
materialized: open ? resolveSource(opts.content) : null,
|
|
34
|
+
onCleanup: opts.onCleanup,
|
|
35
|
+
};
|
|
36
|
+
this.items.set(id, item);
|
|
37
|
+
this.order.push(id);
|
|
38
|
+
this.emitChange();
|
|
39
|
+
return id;
|
|
40
|
+
}
|
|
41
|
+
get(id) { return this.items.get(id); }
|
|
42
|
+
// Blocchi in ordine d'inserimento.
|
|
43
|
+
list() {
|
|
44
|
+
return this.order.map((id) => this.items.get(id)).filter((x) => Boolean(x));
|
|
45
|
+
}
|
|
46
|
+
// true se il blocco esiste ed e' aperto.
|
|
47
|
+
isOpen(id) { return this.items.get(id)?.state === "open"; }
|
|
48
|
+
// Contenuto da mostrare: la sintesi se chiuso, il contenuto completo se aperto.
|
|
49
|
+
// Materializza il contenuto lazy alla prima apertura.
|
|
50
|
+
render(id) {
|
|
51
|
+
const it = this.items.get(id);
|
|
52
|
+
if (!it)
|
|
53
|
+
return "";
|
|
54
|
+
if (it.state === "closed")
|
|
55
|
+
return it.summary;
|
|
56
|
+
if (it.materialized === null)
|
|
57
|
+
it.materialized = resolveSource(it.source);
|
|
58
|
+
return it.materialized;
|
|
59
|
+
}
|
|
60
|
+
// Apre (espande) un blocco. No-op se gia' aperto o inesistente. Ritorna true
|
|
61
|
+
// se lo stato e' cambiato.
|
|
62
|
+
open(id) {
|
|
63
|
+
const it = this.items.get(id);
|
|
64
|
+
if (!it || it.state === "open")
|
|
65
|
+
return false;
|
|
66
|
+
it.state = "open";
|
|
67
|
+
it.materialized = resolveSource(it.source);
|
|
68
|
+
this.emitChange();
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
// Chiude (collassa) un blocco: rilascia il contenuto materializzato (cleanup
|
|
72
|
+
// automatico della memoria) e invoca onCleanup. No-op se gia' chiuso. Ritorna
|
|
73
|
+
// true se lo stato e' cambiato.
|
|
74
|
+
close(id) {
|
|
75
|
+
const it = this.items.get(id);
|
|
76
|
+
if (!it || it.state === "closed")
|
|
77
|
+
return false;
|
|
78
|
+
it.state = "closed";
|
|
79
|
+
it.materialized = null; // cleanup: non trattenere il contenuto pesante
|
|
80
|
+
this.emitChange();
|
|
81
|
+
it.onCleanup?.(it.id);
|
|
82
|
+
return true;
|
|
83
|
+
}
|
|
84
|
+
// Inverte lo stato del blocco. Ritorna il nuovo stato, o null se inesistente.
|
|
85
|
+
toggle(id) {
|
|
86
|
+
const it = this.items.get(id);
|
|
87
|
+
if (!it)
|
|
88
|
+
return null;
|
|
89
|
+
if (it.state === "open") {
|
|
90
|
+
this.close(id);
|
|
91
|
+
return "closed";
|
|
92
|
+
}
|
|
93
|
+
this.open(id);
|
|
94
|
+
return "open";
|
|
95
|
+
}
|
|
96
|
+
// Aggiorna la riga di sintesi (es. mentre l'output cresce). No-op se assente.
|
|
97
|
+
updateSummary(id, summary) {
|
|
98
|
+
const it = this.items.get(id);
|
|
99
|
+
if (!it)
|
|
100
|
+
return false;
|
|
101
|
+
it.summary = summary;
|
|
102
|
+
this.emitChange();
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
// Rimuove un blocco dal registry. Se era aperto, scatta prima il cleanup.
|
|
106
|
+
remove(id) {
|
|
107
|
+
const it = this.items.get(id);
|
|
108
|
+
if (!it)
|
|
109
|
+
return false;
|
|
110
|
+
if (it.state === "open") {
|
|
111
|
+
it.state = "closed";
|
|
112
|
+
it.materialized = null;
|
|
113
|
+
it.onCleanup?.(it.id);
|
|
114
|
+
}
|
|
115
|
+
this.items.delete(id);
|
|
116
|
+
const i = this.order.indexOf(id);
|
|
117
|
+
if (i >= 0)
|
|
118
|
+
this.order.splice(i, 1);
|
|
119
|
+
this.emitChange();
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
// Chiude tutti i blocchi aperti (cleanup di massa). Ritorna quanti ne ha chiusi.
|
|
123
|
+
closeAll() {
|
|
124
|
+
let n = 0;
|
|
125
|
+
for (const id of this.order)
|
|
126
|
+
if (this.close(id))
|
|
127
|
+
n += 1;
|
|
128
|
+
return n;
|
|
129
|
+
}
|
|
130
|
+
// Numero di blocchi registrati.
|
|
131
|
+
size() { return this.items.size; }
|
|
132
|
+
// Sottoscrive ai cambi di stato. Ritorna una funzione di unsubscribe.
|
|
133
|
+
onChange(cb) { this.changeCbs.add(cb); return () => this.changeCbs.delete(cb); }
|
|
134
|
+
emitChange() { for (const cb of this.changeCbs)
|
|
135
|
+
cb(); }
|
|
136
|
+
}
|
|
137
|
+
// Risolve una ContentSource al suo valore stringa (invoca la funzione se lazy).
|
|
138
|
+
function resolveSource(src) {
|
|
139
|
+
return typeof src === "function" ? src() : src;
|
|
140
|
+
}
|
|
141
|
+
// Istanza condivisa di processo (comoda per la TUI; i test possono crearne di
|
|
142
|
+
// proprie per isolamento).
|
|
143
|
+
export const collapsibleRegistry = new CollapsibleRegistry();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { PiConfig } from "./config.js";
|
|
2
|
+
import type { Message } from "./types.js";
|
|
3
|
+
import { type PlanTask } from "../vascend/plan-store.js";
|
|
4
|
+
export interface CheckpointTask extends PlanTask {
|
|
5
|
+
readonly ref: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function checkpointTasks(config: PiConfig, sessionId: string, owner?: string): readonly CheckpointTask[] | null;
|
|
8
|
+
export declare function completedWaypoints(before: readonly CheckpointTask[], after: readonly CheckpointTask[]): readonly CheckpointTask[];
|
|
9
|
+
export declare function compactionCheckpoint(tasks: readonly CheckpointTask[] | null, messages: readonly Message[], cutIndex: number): string;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { VascendPlanStore } from "../vascend/plan-store.js";
|
|
2
|
+
import { hasTaskEvidence } from "../vascend/plan-progress.js";
|
|
3
|
+
// Read the same authoritative scope as the tool executor, including delegated
|
|
4
|
+
// task ownership. A failed read is not evidence that work has been completed.
|
|
5
|
+
export function checkpointTasks(config, sessionId, owner) {
|
|
6
|
+
try {
|
|
7
|
+
const scope = config.planStoreId ?? config.roomStoreId ?? sessionId;
|
|
8
|
+
const group = config.planCastle ?? owner?.trim();
|
|
9
|
+
return VascendPlanStore.open(config.sessionDir, scope, { strict: true }).castles()
|
|
10
|
+
.filter(plan => !group || plan.slug === group)
|
|
11
|
+
.flatMap(plan => plan.tasks
|
|
12
|
+
.filter(task => !config.planTasks?.length || config.planTasks.includes(task.id))
|
|
13
|
+
.map(task => ({ ...task, ref: `${plan.slug}/${task.id}` })));
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function completedWaypoints(before, after) {
|
|
20
|
+
const previous = new Map(before.map(task => [task.ref, task]));
|
|
21
|
+
return after.filter(task => {
|
|
22
|
+
const old = previous.get(task.ref);
|
|
23
|
+
return task.status === "completed" && hasTaskEvidence(task)
|
|
24
|
+
&& (old?.status !== "completed" || old.title !== task.title);
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
const MAX_STATE_CHARS = 16_000;
|
|
28
|
+
const clip = (text, max) => text.length <= max ? text : `${text.slice(0, max - 3)}...`;
|
|
29
|
+
// Persist a small, deterministic continuation state alongside the model's
|
|
30
|
+
// summary. This is data, never a claim that unchecked work has been verified.
|
|
31
|
+
export function compactionCheckpoint(tasks, messages, cutIndex) {
|
|
32
|
+
const lines = [];
|
|
33
|
+
const requestIndex = messages.findLastIndex(message => message.role === "user"
|
|
34
|
+
&& !message.content.some(part => part.type === "tool_result"));
|
|
35
|
+
if (requestIndex >= 0 && requestIndex < cutIndex) {
|
|
36
|
+
const request = messages[requestIndex].content.filter(part => part.type === "text").map(part => part.text).join("\n");
|
|
37
|
+
if (request)
|
|
38
|
+
lines.push(`Richiesta utente in corso: ${JSON.stringify(clip(request, 8_000))}`);
|
|
39
|
+
}
|
|
40
|
+
if (tasks?.length) {
|
|
41
|
+
lines.push("Stato del piano al checkpoint; prima di agire verifica lo stato corrente con vascend_status.");
|
|
42
|
+
const priority = { running: 0, failed: 1, pending: 2, completed: 3 };
|
|
43
|
+
const open = tasks.filter(task => task.status !== "completed")
|
|
44
|
+
.sort((a, b) => priority[a.status] - priority[b.status]);
|
|
45
|
+
const done = tasks.filter(task => task.status === "completed").slice(-8);
|
|
46
|
+
for (const task of [...open, ...done]) {
|
|
47
|
+
const line = JSON.stringify({ ref: task.ref, status: task.status, title: clip(task.title, 180),
|
|
48
|
+
...(task.evidence?.length ? { evidence: clip(task.evidence.at(-1), 240) } : {}),
|
|
49
|
+
...(task.notes?.length ? { notes: clip(task.notes.slice(-3).join(" | "), 480) } : {}), });
|
|
50
|
+
if (lines.join("\n").length + line.length > MAX_STATE_CHARS) {
|
|
51
|
+
lines.push("Altre attivita nel piano persistito: usa vascend_status con paginazione.");
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
lines.push(line);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return lines.length ? `STATO DI RIPRESA (dati della sessione)\n${lines.join("\n")}` : "";
|
|
58
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Message, Provider, ToolDef } from "./types.js";
|
|
2
|
+
export interface CompactionConfig {
|
|
3
|
+
readonly enabled: boolean;
|
|
4
|
+
readonly reserveTokens: number;
|
|
5
|
+
readonly keepRecentTokens: number;
|
|
6
|
+
readonly perRoom: boolean;
|
|
7
|
+
readonly roomFanout: number;
|
|
8
|
+
}
|
|
9
|
+
export declare const DEFAULT_COMPACTION: CompactionConfig;
|
|
10
|
+
export declare function estimateTokens(text: string): number;
|
|
11
|
+
export declare const IMAGE_TOKEN_ESTIMATE = 1400;
|
|
12
|
+
export declare function estimateMessagesTokens(messages: readonly Message[]): number;
|
|
13
|
+
export declare function estimateToolDefinitionTokens(tools: readonly ToolDef[]): number;
|
|
14
|
+
export declare function contextWindowFor(model: string, override?: number): number;
|
|
15
|
+
export declare function shouldCompact(contextTokens: number, contextWindow: number, reserveTokens: number): boolean;
|
|
16
|
+
export type CompactionMove = "none" | "speculative" | "await" | "now";
|
|
17
|
+
export declare const SPECULATIVE_FRACTION = 0.8;
|
|
18
|
+
export declare function planCompactionMove(input: {
|
|
19
|
+
readonly enabled: boolean;
|
|
20
|
+
readonly tokens: number;
|
|
21
|
+
readonly contextWindow: number;
|
|
22
|
+
readonly reserveTokens: number;
|
|
23
|
+
readonly inFlight: boolean;
|
|
24
|
+
readonly speculativeFraction?: number;
|
|
25
|
+
}): CompactionMove;
|
|
26
|
+
export interface CompactionPlan {
|
|
27
|
+
readonly cutIndex: number;
|
|
28
|
+
readonly toSummarize: readonly Message[];
|
|
29
|
+
readonly toKeep: readonly Message[];
|
|
30
|
+
}
|
|
31
|
+
export declare function planCompaction(messages: readonly Message[], keepRecentTokens: number): CompactionPlan | null;
|
|
32
|
+
export declare function verifySummary(summary: string, anchors: readonly string[], preservedMessages?: readonly Message[]): readonly string[];
|
|
33
|
+
export declare function protectedExcerpts(messages: readonly Message[], anchors: readonly string[], maxChars?: number): readonly string[];
|
|
34
|
+
export declare function withProtectedExcerpts(summary: string, excerpts: readonly string[]): string;
|
|
35
|
+
export declare function repairInstructions(missing: readonly string[], base?: string): string;
|
|
36
|
+
export declare function summarizeMessages(provider: Provider, toSummarize: readonly Message[], opts: {
|
|
37
|
+
readonly model: string;
|
|
38
|
+
readonly maxTokens: number;
|
|
39
|
+
readonly signal: AbortSignal;
|
|
40
|
+
readonly previousSummary?: string;
|
|
41
|
+
readonly instructions?: string;
|
|
42
|
+
}): Promise<string>;
|