@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,207 @@
|
|
|
1
|
+
// Primo ingresso della TUI: lingua e termini d'uso, PRIMA del login (stile
|
|
2
|
+
// Claude Code/Codex). Le scelte si conservano in ~/.talos/onboarding.json e
|
|
3
|
+
// non vengono richieste di nuovo; i termini sono VERSIONATI, cosi' un loro
|
|
4
|
+
// aggiornamento ripropone la schermata una volta sola.
|
|
5
|
+
//
|
|
6
|
+
// I collegamenti sono quelli ufficiali di vascend.it, gli stessi mostrati
|
|
7
|
+
// nelle email e nella schermata di accesso di Horizon (renderer/auth.js).
|
|
8
|
+
// Parte PURA: dati, i18n e persistenza; la UI la disegna repl.ts.
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
10
|
+
import { join } from "node:path";
|
|
11
|
+
import { talosConfigDir } from "../core/env-paths.js";
|
|
12
|
+
import { LANGUAGES, normalizeLanguage, normalizePreference } from "./locales.js";
|
|
13
|
+
export const LINGUE = LANGUAGES;
|
|
14
|
+
// Versione dei termini accettati: alzarla ripropone la schermata.
|
|
15
|
+
export const TERMINI_VERSIONE = "2026-08";
|
|
16
|
+
export const LINK_TERMINI = "https://vascend.it/terms";
|
|
17
|
+
export const LINK_PRIVACY = "https://vascend.it/privacy";
|
|
18
|
+
function onboardingPath(env) {
|
|
19
|
+
if (env["TALOS_NO_GLOBAL_CONFIG"] === "1")
|
|
20
|
+
return null;
|
|
21
|
+
return join(talosConfigDir(env), "onboarding.json");
|
|
22
|
+
}
|
|
23
|
+
export function leggiOnboarding(env) {
|
|
24
|
+
const path = onboardingPath(env);
|
|
25
|
+
if (!path || !existsSync(path))
|
|
26
|
+
return {};
|
|
27
|
+
try {
|
|
28
|
+
const raw = JSON.parse(readFileSync(path, "utf8"));
|
|
29
|
+
const lingua = normalizeLanguage(raw["lingua"]);
|
|
30
|
+
const languagePreference = normalizePreference(raw["languagePreference"]);
|
|
31
|
+
return {
|
|
32
|
+
...(lingua ? { lingua } : {}),
|
|
33
|
+
...(languagePreference ? { languagePreference } : {}),
|
|
34
|
+
...(typeof raw["terminiVersione"] === "string" ? { terminiVersione: raw["terminiVersione"] } : {}),
|
|
35
|
+
...(typeof raw["terminiQuando"] === "string" ? { terminiQuando: raw["terminiQuando"] } : {}),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return {};
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function salvaOnboarding(env, stato) {
|
|
43
|
+
const path = onboardingPath(env);
|
|
44
|
+
if (!path)
|
|
45
|
+
return false;
|
|
46
|
+
try {
|
|
47
|
+
mkdirSync(talosConfigDir(env), { recursive: true });
|
|
48
|
+
writeFileSync(path, JSON.stringify(stato), "utf8");
|
|
49
|
+
return true;
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
return false;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export function serveLingua(stato) {
|
|
56
|
+
return !stato.lingua;
|
|
57
|
+
}
|
|
58
|
+
export function serveTermini(stato) {
|
|
59
|
+
return stato.terminiVersione !== TERMINI_VERSIONE;
|
|
60
|
+
}
|
|
61
|
+
// Interpreta la risposta di consenso nella lingua scelta (si/sì/yes/y...).
|
|
62
|
+
export function consensoAffermativo(risposta, lingua) {
|
|
63
|
+
const r = risposta.trim().toLowerCase();
|
|
64
|
+
if (lingua === "en")
|
|
65
|
+
return r === "yes" || r === "y";
|
|
66
|
+
if (lingua === "es")
|
|
67
|
+
return r === "sí" || r === "si" || r === "s";
|
|
68
|
+
if (lingua === "de")
|
|
69
|
+
return r === "ja" || r === "j";
|
|
70
|
+
return r === "si" || r === "sì" || r === "s";
|
|
71
|
+
}
|
|
72
|
+
export const TESTI = {
|
|
73
|
+
es: {
|
|
74
|
+
byline: "by Vascend Technologies", linguaTitolo: "Idioma", linguaPrompt: "opción",
|
|
75
|
+
linguaNonValida: "opción no válida: indica el número del idioma.",
|
|
76
|
+
terminiTitolo: "Términos y condiciones",
|
|
77
|
+
terminiCorpo: "Al continuar aceptas los Términos de servicio y la Política de privacidad de Vascend.",
|
|
78
|
+
terminiStessiLink: "Son los mismos enlaces que aparecen en nuestros correos y en Horizon:",
|
|
79
|
+
terminiEtichetta: "Términos", privacyEtichetta: "Privacidad", terminiDomanda: "¿aceptas? [sí/no]",
|
|
80
|
+
terminiRifiutati: "No se puede usar Talos sin aceptar los términos.",
|
|
81
|
+
accessoTitolo: "Iniciar sesión", serveAccount: "Talos requiere tu cuenta de Vascend (la misma que usas en Horizon).",
|
|
82
|
+
nessunaPassword: "Sin contraseña: escribe tu correo para recibir un código de un solo uso.",
|
|
83
|
+
verificoAccesso: "comprobando la sesión de Vascend…", emailPrompt: "correo:",
|
|
84
|
+
serveEmail: "se necesita un correo (Ctrl+C para salir)",
|
|
85
|
+
contatto: email => `contactando con Vascend para solicitar un código para ${email}…`,
|
|
86
|
+
accountNuovo: "cuenta nueva: el registro se realiza en este mismo proceso.",
|
|
87
|
+
nomePrompt: "nombre:", cognomePrompt: "apellidos:", registro: "creando la cuenta y enviando el código…",
|
|
88
|
+
codiceInviato: "código enviado: revisa tu correo.", codicePrompt: "código:", verifico: "verificando el código…",
|
|
89
|
+
secondoFattore: "esta cuenta tiene activada la autenticación de dos factores.", totpPrompt: "código 2FA:",
|
|
90
|
+
verifico2fa: "verificando el código y el segundo factor…", identita: chi => `identidad confirmada: ${chi}`,
|
|
91
|
+
tokenNonSalvabile: "no se puede guardar el token (configuración global desactivada): acceso válido solo durante esta sesión",
|
|
92
|
+
ritiroLicenza: "obteniendo la licencia sin conexión…", licenzaPronta: "licencia sin conexión disponible.",
|
|
93
|
+
licenzaNonDisponibile: "licencia sin conexión no disponible: se volverá a intentar al iniciar.",
|
|
94
|
+
benvenuto: nome => `sesión iniciada. Bienvenido, ${nome}.`, accessoNota: chi => `cuenta de Vascend: ${chi}`,
|
|
95
|
+
ripartiamo: "volvamos al correo.", codiceNonValido: "código no válido",
|
|
96
|
+
troppiTentativi: "demasiados intentos: vuelve a intentarlo más tarde.", accessoAnnullato: "inicio de sesión cancelado.", uscireHint: "Ctrl+C para salir",
|
|
97
|
+
},
|
|
98
|
+
de: {
|
|
99
|
+
byline: "by Vascend Technologies", linguaTitolo: "Sprache", linguaPrompt: "Auswahl",
|
|
100
|
+
linguaNonValida: "ungültige Auswahl: Gib die Nummer der Sprache ein.",
|
|
101
|
+
terminiTitolo: "Nutzungsbedingungen",
|
|
102
|
+
terminiCorpo: "Wenn du fortfährst, akzeptierst du die Nutzungsbedingungen und die Datenschutzerklärung von Vascend.",
|
|
103
|
+
terminiStessiLink: "Dies sind dieselben Links wie in unseren E-Mails und in Horizon:",
|
|
104
|
+
terminiEtichetta: "Bedingungen", privacyEtichetta: "Datenschutz", terminiDomanda: "akzeptieren? [ja/nein]",
|
|
105
|
+
terminiRifiutati: "Talos kann ohne Zustimmung zu den Bedingungen nicht verwendet werden.",
|
|
106
|
+
accessoTitolo: "Anmelden", serveAccount: "Talos benötigt dein Vascend-Konto (dasselbe wie in Horizon).",
|
|
107
|
+
nessunaPassword: "Kein Passwort: Gib deine E-Mail-Adresse ein, um einen Einmalcode zu erhalten.",
|
|
108
|
+
verificoAccesso: "Vascend-Anmeldung wird geprüft…", emailPrompt: "E-Mail:",
|
|
109
|
+
serveEmail: "Eine E-Mail-Adresse ist erforderlich (Ctrl+C zum Beenden)",
|
|
110
|
+
contatto: email => `Vascend wird kontaktiert, um einen Code für ${email} anzufordern…`,
|
|
111
|
+
accountNuovo: "Neues Konto: Die Registrierung erfolgt im selben Ablauf.",
|
|
112
|
+
nomePrompt: "Vorname:", cognomePrompt: "Nachname:", registro: "Konto wird erstellt und Code gesendet…",
|
|
113
|
+
codiceInviato: "Code gesendet: Prüfe dein Postfach.", codicePrompt: "Code:", verifico: "Code wird geprüft…",
|
|
114
|
+
secondoFattore: "Für dieses Konto ist die Zwei-Faktor-Authentifizierung aktiviert.", totpPrompt: "2FA-Code:",
|
|
115
|
+
verifico2fa: "Code und zweiter Faktor werden geprüft…", identita: chi => `Identität bestätigt: ${chi}`,
|
|
116
|
+
tokenNonSalvabile: "Token kann nicht gespeichert werden (globale Konfiguration deaktiviert): Anmeldung gilt nur für diese Sitzung",
|
|
117
|
+
ritiroLicenza: "Offline-Lizenz wird abgerufen…", licenzaPronta: "Offline-Lizenz bereit.",
|
|
118
|
+
licenzaNonDisponibile: "Offline-Lizenz derzeit nicht verfügbar: Erneuter Versuch beim nächsten Start.",
|
|
119
|
+
benvenuto: nome => `Angemeldet. Willkommen, ${nome}.`, accessoNota: chi => `Vascend-Konto: ${chi}`,
|
|
120
|
+
ripartiamo: "Beginnen wir erneut mit der E-Mail-Adresse.", codiceNonValido: "Ungültiger Code",
|
|
121
|
+
troppiTentativi: "Zu viele Versuche: Bitte später erneut versuchen.", accessoAnnullato: "Anmeldung abgebrochen.", uscireHint: "Ctrl+C zum Beenden",
|
|
122
|
+
},
|
|
123
|
+
it: {
|
|
124
|
+
byline: "by Vascend Technologies",
|
|
125
|
+
linguaTitolo: "Lingua / Language",
|
|
126
|
+
linguaPrompt: "scelta",
|
|
127
|
+
linguaNonValida: "scelta non valida: indica il numero della lingua.",
|
|
128
|
+
terminiTitolo: "Termini e condizioni",
|
|
129
|
+
terminiCorpo: "Continuando accetti i Termini di servizio e la Privacy Policy di Vascend.",
|
|
130
|
+
terminiStessiLink: "Sono gli stessi collegamenti che trovi nelle email e su Horizon:",
|
|
131
|
+
terminiEtichetta: "Termini",
|
|
132
|
+
privacyEtichetta: "Privacy",
|
|
133
|
+
terminiDomanda: "accetti? [si/no]",
|
|
134
|
+
terminiRifiutati: "senza accettare i termini Talos non puo' essere usato.",
|
|
135
|
+
accessoTitolo: "Accesso",
|
|
136
|
+
serveAccount: "Per usare Talos serve l'account Vascend (lo stesso di Horizon).",
|
|
137
|
+
nessunaPassword: "Nessuna password: scrivi la tua email, arriva un codice monouso.",
|
|
138
|
+
verificoAccesso: "verifico l'accesso Vascend…",
|
|
139
|
+
emailPrompt: "email:",
|
|
140
|
+
serveEmail: "serve un'email (Ctrl+C per uscire)",
|
|
141
|
+
contatto: (email) => `contatto Vascend e chiedo un codice per ${email}…`,
|
|
142
|
+
accountNuovo: "account nuovo: registrazione nello stesso flusso.",
|
|
143
|
+
nomePrompt: "nome:",
|
|
144
|
+
cognomePrompt: "cognome:",
|
|
145
|
+
registro: "registro l'account e invio il codice…",
|
|
146
|
+
codiceInviato: "codice inviato: controlla la posta.",
|
|
147
|
+
codicePrompt: "codice:",
|
|
148
|
+
verifico: "verifico il codice…",
|
|
149
|
+
secondoFattore: "questo account ha il secondo fattore attivo.",
|
|
150
|
+
totpPrompt: "codice 2FA:",
|
|
151
|
+
verifico2fa: "verifico codice e secondo fattore…",
|
|
152
|
+
identita: (chi) => `identita' confermata: ${chi}`,
|
|
153
|
+
tokenNonSalvabile: "token non salvabile (config globale disattivata): accesso valido solo per questa sessione",
|
|
154
|
+
ritiroLicenza: "ritiro la licenza offline (per lavorare anche senza rete)…",
|
|
155
|
+
licenzaPronta: "licenza offline pronta.",
|
|
156
|
+
licenzaNonDisponibile: "licenza offline non disponibile ora: si riprova al prossimo avvio.",
|
|
157
|
+
benvenuto: (nome) => `dentro. benvenuto, ${nome}.`,
|
|
158
|
+
accessoNota: (chi) => `accesso Vascend: ${chi}`,
|
|
159
|
+
ripartiamo: "ripartiamo dall'email.",
|
|
160
|
+
codiceNonValido: "codice non valido",
|
|
161
|
+
troppiTentativi: "troppi tentativi: riprova piu' tardi.",
|
|
162
|
+
accessoAnnullato: "accesso annullato.",
|
|
163
|
+
uscireHint: "Ctrl+C per uscire",
|
|
164
|
+
},
|
|
165
|
+
en: {
|
|
166
|
+
byline: "by Vascend Technologies",
|
|
167
|
+
linguaTitolo: "Lingua / Language",
|
|
168
|
+
linguaPrompt: "choice",
|
|
169
|
+
linguaNonValida: "invalid choice: enter the language number.",
|
|
170
|
+
terminiTitolo: "Terms and conditions",
|
|
171
|
+
terminiCorpo: "By continuing you accept the Vascend Terms of Service and Privacy Policy.",
|
|
172
|
+
terminiStessiLink: "They are the same links you find in our emails and in Horizon:",
|
|
173
|
+
terminiEtichetta: "Terms",
|
|
174
|
+
privacyEtichetta: "Privacy",
|
|
175
|
+
terminiDomanda: "accept? [yes/no]",
|
|
176
|
+
terminiRifiutati: "Talos cannot be used without accepting the terms.",
|
|
177
|
+
accessoTitolo: "Sign in",
|
|
178
|
+
serveAccount: "Talos requires your Vascend account (the same one you use in Horizon).",
|
|
179
|
+
nessunaPassword: "No password: type your email, a one-time code will arrive.",
|
|
180
|
+
verificoAccesso: "checking your Vascend session…",
|
|
181
|
+
emailPrompt: "email:",
|
|
182
|
+
serveEmail: "an email is required (Ctrl+C to quit)",
|
|
183
|
+
contatto: (email) => `contacting Vascend and requesting a code for ${email}…`,
|
|
184
|
+
accountNuovo: "new account: registration happens in the same flow.",
|
|
185
|
+
nomePrompt: "first name:",
|
|
186
|
+
cognomePrompt: "last name:",
|
|
187
|
+
registro: "creating the account and sending the code…",
|
|
188
|
+
codiceInviato: "code sent: check your inbox.",
|
|
189
|
+
codicePrompt: "code:",
|
|
190
|
+
verifico: "verifying the code…",
|
|
191
|
+
secondoFattore: "this account has two-factor authentication enabled.",
|
|
192
|
+
totpPrompt: "2FA code:",
|
|
193
|
+
verifico2fa: "verifying code and second factor…",
|
|
194
|
+
identita: (chi) => `identity confirmed: ${chi}`,
|
|
195
|
+
tokenNonSalvabile: "token cannot be saved (global config disabled): access valid for this session only",
|
|
196
|
+
ritiroLicenza: "fetching the offline license (to work without a connection)…",
|
|
197
|
+
licenzaPronta: "offline license ready.",
|
|
198
|
+
licenzaNonDisponibile: "offline license not available now: will retry on next start.",
|
|
199
|
+
benvenuto: (nome) => `you are in. welcome, ${nome}.`,
|
|
200
|
+
accessoNota: (chi) => `Vascend account: ${chi}`,
|
|
201
|
+
ripartiamo: "let's start again from the email.",
|
|
202
|
+
codiceNonValido: "invalid code",
|
|
203
|
+
troppiTentativi: "too many attempts: try again later.",
|
|
204
|
+
accessoAnnullato: "sign-in cancelled.",
|
|
205
|
+
uscireHint: "Ctrl+C to quit",
|
|
206
|
+
},
|
|
207
|
+
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export interface PastedBlock {
|
|
2
|
+
/** Progressivo 1-based: il riferimento mostrato e' "txt #<index>". */
|
|
3
|
+
readonly index: number;
|
|
4
|
+
readonly ref: string;
|
|
5
|
+
readonly text: string;
|
|
6
|
+
readonly lines: number;
|
|
7
|
+
readonly chars: number;
|
|
8
|
+
/** Prima riga non vuota, per il badge sopra l'input. */
|
|
9
|
+
readonly preview: string;
|
|
10
|
+
}
|
|
11
|
+
export interface CollapseThreshold {
|
|
12
|
+
readonly minLines: number;
|
|
13
|
+
readonly minChars: number;
|
|
14
|
+
}
|
|
15
|
+
export declare const DEFAULT_COLLAPSE: CollapseThreshold;
|
|
16
|
+
export declare function countLines(text: string): number;
|
|
17
|
+
export declare function shouldCollapsePaste(text: string, threshold?: CollapseThreshold): boolean;
|
|
18
|
+
export declare function firstMeaningfulLine(text: string, max?: number): string;
|
|
19
|
+
export declare class PasteRegistry {
|
|
20
|
+
private readonly blocks;
|
|
21
|
+
add(text: string): PastedBlock;
|
|
22
|
+
get(index: number): PastedBlock | undefined;
|
|
23
|
+
get size(): number;
|
|
24
|
+
/** Riferimenti presenti nel testo E risolvibili qui, in ordine di apparizione. */
|
|
25
|
+
refsIn(text: string): readonly PastedBlock[];
|
|
26
|
+
/**
|
|
27
|
+
* Rimette il testo vero al posto dei riferimenti. Quello che il modello legge
|
|
28
|
+
* e' sempre il contenuto completo; i riferimenti non risolvibili restano
|
|
29
|
+
* intatti, perche' potrebbero essere testo dell'utente e non nostri token.
|
|
30
|
+
*/
|
|
31
|
+
expand(text: string): string;
|
|
32
|
+
reset(): void;
|
|
33
|
+
}
|
|
34
|
+
export declare function findPasteRefs(text: string): readonly number[];
|
|
35
|
+
export declare function pasteTokenSpanAt(buffer: string, cursor: number): {
|
|
36
|
+
start: number;
|
|
37
|
+
end: number;
|
|
38
|
+
} | null;
|
|
39
|
+
export declare function describePastedBlock(block: PastedBlock): string;
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// Collasso del testo incollato nel prompt.
|
|
2
|
+
//
|
|
3
|
+
// Incollare un file intero nel terminale rende il prompt illeggibile: la riga di
|
|
4
|
+
// input scorre per centinaia di righe e l'utente perde di vista quello che sta
|
|
5
|
+
// scrivendo. Qui l'incollo grande diventa un RIFERIMENTO compatto -- `txt #1` --
|
|
6
|
+
// esattamente come un'immagine diventa `img #1`. Il testo vero resta in un
|
|
7
|
+
// registro e viene rimesso al suo posto SOLO al momento dell'invio: il modello
|
|
8
|
+
// riceve tutto, l'utente vede una riga.
|
|
9
|
+
//
|
|
10
|
+
// Modulo puro: nessun I/O, nessun ANSI. Il riferimento e' testo normale, quindi
|
|
11
|
+
// sopravvive a copia/incolla, cronologia e modifica manuale del buffer.
|
|
12
|
+
import { TEXT_REF } from "./attachment-refs.js";
|
|
13
|
+
import { tr } from "./i18n.js";
|
|
14
|
+
// Sotto queste dimensioni l'incollo entra nel buffer com'e': collassare due
|
|
15
|
+
// righe sarebbe solo un ostacolo in piu' fra l'utente e il suo testo.
|
|
16
|
+
export const DEFAULT_COLLAPSE = { minLines: 6, minChars: 800 };
|
|
17
|
+
const REF_RE = new RegExp(TEXT_REF, "gi");
|
|
18
|
+
export function countLines(text) {
|
|
19
|
+
if (!text)
|
|
20
|
+
return 0;
|
|
21
|
+
return text.split("\n").length;
|
|
22
|
+
}
|
|
23
|
+
export function shouldCollapsePaste(text, threshold = DEFAULT_COLLAPSE) {
|
|
24
|
+
if (!text)
|
|
25
|
+
return false;
|
|
26
|
+
return countLines(text) >= threshold.minLines || text.length >= threshold.minChars;
|
|
27
|
+
}
|
|
28
|
+
export function firstMeaningfulLine(text, max = 60) {
|
|
29
|
+
const line = text.split("\n").map((l) => l.trim()).find(Boolean) ?? "";
|
|
30
|
+
const clean = line.replace(/\s+/g, " ");
|
|
31
|
+
return clean.length > max ? `${clean.slice(0, max - 1).trimEnd()}…` : clean;
|
|
32
|
+
}
|
|
33
|
+
// Registro degli incolli di UNA sessione. Come ImageRegistry: i riferimenti non
|
|
34
|
+
// attraversano una sessione nuova, altrimenti `txt #1` significherebbe cose
|
|
35
|
+
// diverse in momenti diversi.
|
|
36
|
+
export class PasteRegistry {
|
|
37
|
+
blocks = [];
|
|
38
|
+
add(text) {
|
|
39
|
+
const index = this.blocks.length + 1;
|
|
40
|
+
let chars = 0;
|
|
41
|
+
for (const _char of text)
|
|
42
|
+
chars++;
|
|
43
|
+
const block = {
|
|
44
|
+
index,
|
|
45
|
+
ref: tr("[Text #{index} · {count} caratteri]", "[Text #{index} · {count} characters]", { index, count: chars }),
|
|
46
|
+
text,
|
|
47
|
+
lines: countLines(text),
|
|
48
|
+
chars,
|
|
49
|
+
preview: firstMeaningfulLine(text),
|
|
50
|
+
};
|
|
51
|
+
this.blocks.push(block);
|
|
52
|
+
return block;
|
|
53
|
+
}
|
|
54
|
+
get(index) {
|
|
55
|
+
return this.blocks.find((block) => block.index === index);
|
|
56
|
+
}
|
|
57
|
+
get size() {
|
|
58
|
+
return this.blocks.length;
|
|
59
|
+
}
|
|
60
|
+
/** Riferimenti presenti nel testo E risolvibili qui, in ordine di apparizione. */
|
|
61
|
+
refsIn(text) {
|
|
62
|
+
const out = [];
|
|
63
|
+
for (const index of findPasteRefs(text)) {
|
|
64
|
+
const block = this.get(index);
|
|
65
|
+
if (block && !out.includes(block))
|
|
66
|
+
out.push(block);
|
|
67
|
+
}
|
|
68
|
+
return out;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Rimette il testo vero al posto dei riferimenti. Quello che il modello legge
|
|
72
|
+
* e' sempre il contenuto completo; i riferimenti non risolvibili restano
|
|
73
|
+
* intatti, perche' potrebbero essere testo dell'utente e non nostri token.
|
|
74
|
+
*/
|
|
75
|
+
expand(text) {
|
|
76
|
+
if (!this.blocks.length)
|
|
77
|
+
return text;
|
|
78
|
+
return text.replace(REF_RE, (match, digits) => {
|
|
79
|
+
const block = this.get(Number(digits));
|
|
80
|
+
return block ? block.text : match;
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
reset() {
|
|
84
|
+
this.blocks.length = 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
// Indici dei riferimenti "txt #N" presenti in un testo.
|
|
88
|
+
export function findPasteRefs(text) {
|
|
89
|
+
const out = [];
|
|
90
|
+
let match;
|
|
91
|
+
REF_RE.lastIndex = 0;
|
|
92
|
+
while ((match = REF_RE.exec(text)) !== null) {
|
|
93
|
+
const index = Number(match[1]);
|
|
94
|
+
if (Number.isFinite(index) && !out.includes(index))
|
|
95
|
+
out.push(index);
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
// Estensione del riferimento sotto il cursore: serve al backspace atomico, cosi'
|
|
100
|
+
// un `txt #1` si scollega per intero invece di sbriciolarsi un carattere alla
|
|
101
|
+
// volta.
|
|
102
|
+
export function pasteTokenSpanAt(buffer, cursor) {
|
|
103
|
+
REF_RE.lastIndex = 0;
|
|
104
|
+
let match;
|
|
105
|
+
while ((match = REF_RE.exec(buffer)) !== null) {
|
|
106
|
+
const start = match.index;
|
|
107
|
+
const end = start + match[0].length;
|
|
108
|
+
if (cursor > start && cursor <= end)
|
|
109
|
+
return { start, end };
|
|
110
|
+
}
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
// Riga di riepilogo per il badge sopra l'input: "txt #1 · 127 righe · import ...".
|
|
114
|
+
export function describePastedBlock(block) {
|
|
115
|
+
const size = block.lines === 1 ? "1 riga" : `${block.lines} righe`;
|
|
116
|
+
return block.preview ? `${block.ref} · ${size} · ${block.preview}` : `${block.ref} · ${size}`;
|
|
117
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TuiTheme } from "./branding.js";
|
|
2
|
+
export type PermMode = "normal" | "acceptEdits" | "auto";
|
|
3
|
+
export declare const PERM_CYCLE: readonly PermMode[];
|
|
4
|
+
export declare function nextPermMode(mode: PermMode): PermMode;
|
|
5
|
+
export declare function autoApproves(mode: PermMode, action: string): boolean;
|
|
6
|
+
export declare function renderModeHint(mode: PermMode, theme: TuiTheme): string;
|
|
7
|
+
export declare function renderComposerMode(mode: PermMode, theme: TuiTheme): string;
|
|
8
|
+
export declare function permModeLabel(mode: PermMode): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { tr } from "./i18n.js";
|
|
2
|
+
// Ordine del ciclo Shift+Tab: normal -> acceptEdits -> auto -> normal.
|
|
3
|
+
export const PERM_CYCLE = ["normal", "acceptEdits", "auto"];
|
|
4
|
+
export function nextPermMode(mode) {
|
|
5
|
+
const i = PERM_CYCLE.indexOf(mode);
|
|
6
|
+
return PERM_CYCLE[(i + 1) % PERM_CYCLE.length] ?? "normal";
|
|
7
|
+
}
|
|
8
|
+
// Tool considerati "modifiche ai file" (auto-approvati in acceptEdits).
|
|
9
|
+
const EDIT_ACTIONS = new Set(["write_file", "edit_file"]);
|
|
10
|
+
// True se la modalita' approva automaticamente questa azione (niente prompt).
|
|
11
|
+
export function autoApproves(mode, action) {
|
|
12
|
+
if (mode === "auto")
|
|
13
|
+
return true;
|
|
14
|
+
if (mode === "acceptEdits")
|
|
15
|
+
return EDIT_ACTIONS.has(action);
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
// Riga indicatore sopra l'input (vuota in modalita' normale, come Claude Code).
|
|
19
|
+
export function renderModeHint(mode, theme) {
|
|
20
|
+
if (mode === "normal")
|
|
21
|
+
return "";
|
|
22
|
+
if (mode === "acceptEdits") {
|
|
23
|
+
return theme.green(tr("⏵ modifiche", "⏵ edits")) + theme.dim(" · Shift+Tab");
|
|
24
|
+
}
|
|
25
|
+
return theme.yellow("⏵ auto") + theme.dim(" · Shift+Tab");
|
|
26
|
+
}
|
|
27
|
+
export function renderComposerMode(mode, theme) {
|
|
28
|
+
if (mode === "acceptEdits")
|
|
29
|
+
return theme.green("\x1b[7m EDIT \x1b[27m");
|
|
30
|
+
if (mode === "auto")
|
|
31
|
+
return theme.yellow("\x1b[7m AUTO \x1b[27m");
|
|
32
|
+
return theme.dark("\x1b[7m ASK \x1b[27m");
|
|
33
|
+
}
|
|
34
|
+
// Etichetta breve per i messaggi di conferma cambio modalita'.
|
|
35
|
+
export function permModeLabel(mode) {
|
|
36
|
+
if (mode === "acceptEdits")
|
|
37
|
+
return tr("accetta modifiche", "accept edits");
|
|
38
|
+
if (mode === "auto")
|
|
39
|
+
return "auto";
|
|
40
|
+
return tr("normale", "normal");
|
|
41
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { QueuedPrompt } from "./prompt-queue.js";
|
|
2
|
+
export interface QueueSnapshot {
|
|
3
|
+
readonly entries: readonly QueuedPrompt[];
|
|
4
|
+
readonly paused: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface QueuePersistence {
|
|
7
|
+
load(): QueueSnapshot | undefined;
|
|
8
|
+
save(snapshot: QueueSnapshot): void;
|
|
9
|
+
}
|
|
10
|
+
interface QueueFile extends QueueSnapshot {
|
|
11
|
+
readonly version: 1;
|
|
12
|
+
readonly sessionId: string;
|
|
13
|
+
readonly updatedAt: number;
|
|
14
|
+
readonly ownerPid: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class PromptQueueFile implements QueuePersistence {
|
|
17
|
+
private readonly base;
|
|
18
|
+
readonly sessionId: string;
|
|
19
|
+
constructor(base: string, sessionId: string);
|
|
20
|
+
private path;
|
|
21
|
+
load(): QueueFile | undefined;
|
|
22
|
+
save(snapshot: QueueSnapshot): void;
|
|
23
|
+
}
|
|
24
|
+
declare function processAlive(pid: number): boolean;
|
|
25
|
+
export declare function recoverableQueue(base: string, alive?: typeof processAlive): string | undefined;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { existsSync, lstatSync, mkdirSync, readdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { randomUUID } from "node:crypto";
|
|
4
|
+
import { validateSessionId } from "../core/session.js";
|
|
5
|
+
export class PromptQueueFile {
|
|
6
|
+
base;
|
|
7
|
+
sessionId;
|
|
8
|
+
constructor(base, sessionId) {
|
|
9
|
+
this.base = base;
|
|
10
|
+
this.sessionId = sessionId;
|
|
11
|
+
validateSessionId(sessionId);
|
|
12
|
+
}
|
|
13
|
+
path(create = false) {
|
|
14
|
+
const directory = join(this.base, "queues");
|
|
15
|
+
if (create)
|
|
16
|
+
mkdirSync(directory, { recursive: true });
|
|
17
|
+
if (existsSync(directory) && lstatSync(directory).isSymbolicLink())
|
|
18
|
+
throw new Error("La directory della coda è un collegamento.");
|
|
19
|
+
const file = join(directory, `${this.sessionId}.json`);
|
|
20
|
+
if (existsSync(file) && lstatSync(file).isSymbolicLink())
|
|
21
|
+
throw new Error("Il file della coda è un collegamento.");
|
|
22
|
+
return file;
|
|
23
|
+
}
|
|
24
|
+
load() {
|
|
25
|
+
const file = this.path();
|
|
26
|
+
if (!existsSync(file))
|
|
27
|
+
return undefined;
|
|
28
|
+
const data = JSON.parse(readFileSync(file, "utf8"));
|
|
29
|
+
if (data.version !== 1 || data.sessionId !== this.sessionId || !Array.isArray(data.entries)
|
|
30
|
+
|| typeof data.paused !== "boolean" || !Number.isFinite(data.updatedAt))
|
|
31
|
+
throw new Error("Formato della coda non valido.");
|
|
32
|
+
const ids = new Set();
|
|
33
|
+
for (const e of data.entries) {
|
|
34
|
+
if (!e || typeof e.id !== "string" || !e.id || ids.has(e.id) || typeof e.text !== "string" || !e.text.trim()
|
|
35
|
+
|| !Number.isFinite(e.queuedAt) || !["after-turn", "during-turn", "immediate"].includes(e.delivery)
|
|
36
|
+
|| (e.teamBatchId !== undefined && (typeof e.teamBatchId !== "string" || !e.teamBatchId))
|
|
37
|
+
|| !Array.isArray(e.parts) || !e.parts.length || !e.parts.every((p) => p &&
|
|
38
|
+
(p.type === "text" ? typeof p.text === "string" : p.type === "image" && typeof p.data === "string" && typeof p.mime === "string"))) {
|
|
39
|
+
throw new Error("Messaggio salvato in coda non valido.");
|
|
40
|
+
}
|
|
41
|
+
ids.add(e.id);
|
|
42
|
+
}
|
|
43
|
+
return data;
|
|
44
|
+
}
|
|
45
|
+
save(snapshot) {
|
|
46
|
+
const file = this.path(true);
|
|
47
|
+
const temporary = `${file}.${randomUUID()}.tmp`;
|
|
48
|
+
const data = { version: 1, sessionId: this.sessionId, updatedAt: Date.now(), ownerPid: process.pid, ...snapshot };
|
|
49
|
+
writeFileSync(temporary, JSON.stringify(data) + "\n", { encoding: "utf8", mode: 0o600, flag: "wx" });
|
|
50
|
+
renameSync(temporary, file);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function processAlive(pid) {
|
|
54
|
+
if (!Number.isInteger(pid) || pid <= 0)
|
|
55
|
+
return false;
|
|
56
|
+
try {
|
|
57
|
+
process.kill(pid, 0);
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return error.code !== "ESRCH";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Solo l'avvio normale recupera una chat lasciata con messaggi pendenti.
|
|
65
|
+
// Una scelta esplicita (--session-id, --continue, --resume) ha precedenza.
|
|
66
|
+
export function recoverableQueue(base, alive = processAlive) {
|
|
67
|
+
let files;
|
|
68
|
+
try {
|
|
69
|
+
files = readdirSync(join(base, "queues"));
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
const found = [];
|
|
75
|
+
for (const file of files) {
|
|
76
|
+
if (!file.endsWith(".json"))
|
|
77
|
+
continue;
|
|
78
|
+
try {
|
|
79
|
+
const id = file.slice(0, -5);
|
|
80
|
+
const saved = new PromptQueueFile(base, id).load();
|
|
81
|
+
if (saved?.entries.length && existsSync(join(base, `${id}.jsonl`)) && !alive(saved.ownerPid))
|
|
82
|
+
found.push(saved);
|
|
83
|
+
}
|
|
84
|
+
catch { /* Una coda illeggibile non impedisce l'avvio delle altre chat. */ }
|
|
85
|
+
}
|
|
86
|
+
return found.sort((a, b) => b.updatedAt - a.updatedAt)[0]?.sessionId;
|
|
87
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { ContentPart } from "../core/types.js";
|
|
2
|
+
import type { QueuePersistence } from "./prompt-queue-store.js";
|
|
3
|
+
import { type PendingUserMessage, type UserInbox } from "../core/user-inbox.js";
|
|
4
|
+
export type PromptDelivery = "after-turn" | "during-turn" | "immediate";
|
|
5
|
+
export interface QueuedPrompt extends PendingUserMessage {
|
|
6
|
+
readonly text: string;
|
|
7
|
+
readonly delivery: PromptDelivery;
|
|
8
|
+
readonly teamBatchId?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class PromptQueue {
|
|
11
|
+
private readonly prepare;
|
|
12
|
+
private readonly onChange;
|
|
13
|
+
private readonly persistence?;
|
|
14
|
+
private entries;
|
|
15
|
+
storageError: string;
|
|
16
|
+
private storageReadable;
|
|
17
|
+
private readonly delivered;
|
|
18
|
+
private readonly immediateListeners;
|
|
19
|
+
private pausing;
|
|
20
|
+
private holding;
|
|
21
|
+
readonly inbox: UserInbox;
|
|
22
|
+
constructor(prepare?: (text: string) => readonly ContentPart[], onChange?: () => void, persistence?: QueuePersistence | undefined, restoreInput?: (entry: QueuedPrompt) => QueuedPrompt);
|
|
23
|
+
get length(): number;
|
|
24
|
+
get teamRequestCount(): number;
|
|
25
|
+
get blocked(): boolean;
|
|
26
|
+
get paused(): boolean;
|
|
27
|
+
set paused(value: boolean);
|
|
28
|
+
get held(): boolean;
|
|
29
|
+
set held(value: boolean);
|
|
30
|
+
private get immediatePending();
|
|
31
|
+
private ready;
|
|
32
|
+
private notifyImmediate;
|
|
33
|
+
items(): readonly QueuedPrompt[];
|
|
34
|
+
get(id: string): QueuedPrompt | undefined;
|
|
35
|
+
private persist;
|
|
36
|
+
private changed;
|
|
37
|
+
add(text: string, delivery?: PromptDelivery, parts?: readonly ContentPart[], id?: string): QueuedPrompt;
|
|
38
|
+
update(id: string, text: string): boolean;
|
|
39
|
+
remove(id: string): boolean;
|
|
40
|
+
move(id: string, offset: number): boolean;
|
|
41
|
+
moveFirst(id: string): boolean;
|
|
42
|
+
setDelivery(id: string, delivery: PromptDelivery): boolean;
|
|
43
|
+
sendNow(id: string): boolean;
|
|
44
|
+
sendToTeam(): boolean;
|
|
45
|
+
takeNext(): QueuedPrompt | undefined;
|
|
46
|
+
acknowledge(id: string): string | undefined;
|
|
47
|
+
}
|