@andorra-labs/code 0.0.0-stage → 0.1.4
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/LICENSE.md +38 -0
- package/README.md +231 -3
- package/THIRD_PARTY_NOTICES.md +56 -0
- package/dist/src/account-presentation.d.ts +53 -0
- package/dist/src/account-presentation.js +99 -0
- package/dist/src/activity.d.ts +41 -0
- package/dist/src/activity.js +79 -0
- package/dist/src/agent-definitions.d.ts +61 -0
- package/dist/src/agent-definitions.js +303 -0
- package/dist/src/agent-execution.d.ts +4 -0
- package/dist/src/agent-execution.js +1198 -0
- package/dist/src/agent-mcp.d.ts +105 -0
- package/dist/src/agent-mcp.js +859 -0
- package/dist/src/agent-modifiers.d.ts +8 -0
- package/dist/src/agent-modifiers.js +333 -0
- package/dist/src/analytics.d.ts +81 -0
- package/dist/src/analytics.js +81 -0
- package/dist/src/anthropic-console-auth.d.ts +68 -0
- package/dist/src/anthropic-console-auth.js +318 -0
- package/dist/src/anthropic-credentials.d.ts +41 -0
- package/dist/src/anthropic-credentials.js +107 -0
- package/dist/src/app-server/protocol.d.ts +500 -0
- package/dist/src/app-server/protocol.js +106 -0
- package/dist/src/app-server/reasoning.d.ts +43 -0
- package/dist/src/app-server/reasoning.js +173 -0
- package/dist/src/app-server/terminal.d.ts +77 -0
- package/dist/src/app-server/terminal.js +177 -0
- package/dist/src/app-server/workspace.d.ts +247 -0
- package/dist/src/app-server/workspace.js +1098 -0
- package/dist/src/app-server.d.ts +1039 -0
- package/dist/src/app-server.js +6594 -0
- package/dist/src/artifacts.d.ts +27 -0
- package/dist/src/artifacts.js +103 -0
- package/dist/src/attachments.d.ts +158 -0
- package/dist/src/attachments.js +466 -0
- package/dist/src/auth/AuthManager.d.ts +110 -0
- package/dist/src/auth/AuthManager.js +435 -0
- package/dist/src/auth/callback.d.ts +10 -0
- package/dist/src/auth/callback.js +96 -0
- package/dist/src/auth/deployment.d.ts +18 -0
- package/dist/src/auth/deployment.js +18 -0
- package/dist/src/auth/index.d.ts +31 -0
- package/dist/src/auth/index.js +27 -0
- package/dist/src/auth/lock.d.ts +2 -0
- package/dist/src/auth/lock.js +29 -0
- package/dist/src/auth/store.d.ts +20 -0
- package/dist/src/auth/store.js +93 -0
- package/dist/src/auth/types.d.ts +24 -0
- package/dist/src/auth/types.js +8 -0
- package/dist/src/auth-commands.d.ts +5 -0
- package/dist/src/auth-commands.js +28 -0
- package/dist/src/automation-runner.d.ts +7 -0
- package/dist/src/automation-runner.js +113 -0
- package/dist/src/automation-service.d.ts +28 -0
- package/dist/src/automation-service.js +299 -0
- package/dist/src/automation-tool.d.ts +2 -0
- package/dist/src/automation-tool.js +49 -0
- package/dist/src/automation-worker-shutdown.d.ts +3 -0
- package/dist/src/automation-worker-shutdown.js +13 -0
- package/dist/src/automations.d.ts +63 -0
- package/dist/src/automations.js +265 -0
- package/dist/src/boot-trace.d.ts +15 -0
- package/dist/src/boot-trace.js +25 -0
- package/dist/src/browser-activity.d.ts +4 -0
- package/dist/src/browser-activity.js +18 -0
- package/dist/src/browser-bridge.d.ts +56 -0
- package/dist/src/browser-bridge.js +372 -0
- package/dist/src/browser-observation.d.ts +24 -0
- package/dist/src/browser-observation.js +104 -0
- package/dist/src/browser-panel-tool.d.ts +39 -0
- package/dist/src/browser-panel-tool.js +227 -0
- package/dist/src/browser-runner.d.ts +16 -0
- package/dist/src/browser-runner.js +302 -0
- package/dist/src/browser-server.d.ts +31 -0
- package/dist/src/browser-server.js +1189 -0
- package/dist/src/browser-session.d.ts +19 -0
- package/dist/src/browser-session.js +649 -0
- package/dist/src/browser-ui/andorra-logo.png +0 -0
- package/dist/src/browser-ui/app.js +419 -0
- package/dist/src/browser-ui/index.html +13 -0
- package/dist/src/browser-ui/style.css +243 -0
- package/dist/src/browser-view.d.ts +348 -0
- package/dist/src/browser-view.js +1487 -0
- package/dist/src/capabilities.d.ts +9 -0
- package/dist/src/capabilities.js +135 -0
- package/dist/src/clarification-ui.d.ts +23 -0
- package/dist/src/clarification-ui.js +59 -0
- package/dist/src/claude-executable.d.ts +6 -0
- package/dist/src/claude-executable.js +56 -0
- package/dist/src/claude-provider.d.ts +35 -0
- package/dist/src/claude-provider.js +391 -0
- package/dist/src/cli.d.ts +85 -0
- package/dist/src/cli.js +2564 -0
- package/dist/src/code-intelligence/CodeIntelligenceManager.d.ts +108 -0
- package/dist/src/code-intelligence/CodeIntelligenceManager.js +616 -0
- package/dist/src/code-intelligence/ContextLedger.d.ts +32 -0
- package/dist/src/code-intelligence/ContextLedger.js +77 -0
- package/dist/src/code-intelligence/ContextRouter.d.ts +8 -0
- package/dist/src/code-intelligence/ContextRouter.js +18 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphProjectSession.d.ts +82 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphProjectSession.js +444 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphProvider.d.ts +40 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphProvider.js +84 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphSyncBarrier.d.ts +22 -0
- package/dist/src/code-intelligence/codegraph/CodeGraphSyncBarrier.js +71 -0
- package/dist/src/code-intelligence/codegraph/repoExploreTool.d.ts +9 -0
- package/dist/src/code-intelligence/codegraph/repoExploreTool.js +26 -0
- package/dist/src/code-intelligence/repository.d.ts +13 -0
- package/dist/src/code-intelligence/repository.js +48 -0
- package/dist/src/code-intelligence/types.d.ts +78 -0
- package/dist/src/code-intelligence/types.js +3 -0
- package/dist/src/codex-auth.d.ts +83 -0
- package/dist/src/codex-auth.js +168 -0
- package/dist/src/codex-browser-auth.d.ts +74 -0
- package/dist/src/codex-browser-auth.js +429 -0
- package/dist/src/codex-errors.d.ts +3 -0
- package/dist/src/codex-errors.js +50 -0
- package/dist/src/codex-executable.d.ts +12 -0
- package/dist/src/codex-executable.js +154 -0
- package/dist/src/codex-provider.d.ts +25 -0
- package/dist/src/codex-provider.js +211 -0
- package/dist/src/codex-rpc.d.ts +43 -0
- package/dist/src/codex-rpc.js +136 -0
- package/dist/src/coding-tools.d.ts +19 -0
- package/dist/src/coding-tools.js +875 -0
- package/dist/src/command-metrics.d.ts +17 -0
- package/dist/src/command-metrics.js +34 -0
- package/dist/src/command-screens.d.ts +44 -0
- package/dist/src/command-screens.js +601 -0
- package/dist/src/commands.d.ts +111 -0
- package/dist/src/commands.js +550 -0
- package/dist/src/completion.d.ts +45 -0
- package/dist/src/completion.js +195 -0
- package/dist/src/config.d.ts +163 -0
- package/dist/src/config.js +663 -0
- package/dist/src/context-budget.d.ts +32 -0
- package/dist/src/context-budget.js +151 -0
- package/dist/src/context-compaction.d.ts +43 -0
- package/dist/src/context-compaction.js +269 -0
- package/dist/src/context-selection.d.ts +65 -0
- package/dist/src/context-selection.js +130 -0
- package/dist/src/dashboard-view.d.ts +37 -0
- package/dist/src/dashboard-view.js +254 -0
- package/dist/src/dashboard.d.ts +41 -0
- package/dist/src/dashboard.js +160 -0
- package/dist/src/deadline.d.ts +55 -0
- package/dist/src/deadline.js +164 -0
- package/dist/src/decision/ContinuationAdapter.d.ts +6 -0
- package/dist/src/decision/ContinuationAdapter.js +11 -0
- package/dist/src/decision/DecisionEngine.d.ts +23 -0
- package/dist/src/decision/DecisionEngine.js +1 -0
- package/dist/src/decision/DecisionManager.d.ts +47 -0
- package/dist/src/decision/DecisionManager.js +280 -0
- package/dist/src/decision/DecisionPolicy.d.ts +8 -0
- package/dist/src/decision/DecisionPolicy.js +54 -0
- package/dist/src/decision/FactContinuations.d.ts +147 -0
- package/dist/src/decision/FactContinuations.js +472 -0
- package/dist/src/decision/FactServiceGate.d.ts +12 -0
- package/dist/src/decision/FactServiceGate.js +37 -0
- package/dist/src/decision/PreparedSteps.d.ts +51 -0
- package/dist/src/decision/PreparedSteps.js +147 -0
- package/dist/src/decision/applyToolMenu.d.ts +3 -0
- package/dist/src/decision/applyToolMenu.js +61 -0
- package/dist/src/decision/checks.d.ts +13 -0
- package/dist/src/decision/checks.js +104 -0
- package/dist/src/decision/facts.d.ts +64 -0
- package/dist/src/decision/facts.js +90 -0
- package/dist/src/decision/guidancePolicy.d.ts +3 -0
- package/dist/src/decision/guidancePolicy.js +10 -0
- package/dist/src/decision/hostedPolicy.d.ts +14 -0
- package/dist/src/decision/hostedPolicy.js +21 -0
- package/dist/src/decision/index.d.ts +6 -0
- package/dist/src/decision/index.js +6 -0
- package/dist/src/decision/optimizationPolicy.d.ts +26 -0
- package/dist/src/decision/optimizationPolicy.js +38 -0
- package/dist/src/decision/providers/AndorraDecisionProvider.d.ts +17 -0
- package/dist/src/decision/providers/AndorraDecisionProvider.js +251 -0
- package/dist/src/decision/providers/HttpDecisionProvider.d.ts +16 -0
- package/dist/src/decision/providers/HttpDecisionProvider.js +105 -0
- package/dist/src/decision/providers/NoOpDecisionProvider.d.ts +4 -0
- package/dist/src/decision/providers/NoOpDecisionProvider.js +3 -0
- package/dist/src/decision/providers/index.d.ts +3 -0
- package/dist/src/decision/providers/index.js +13 -0
- package/dist/src/decision/providers/questions.d.ts +3 -0
- package/dist/src/decision/providers/questions.js +31 -0
- package/dist/src/decision/routeTools.d.ts +59 -0
- package/dist/src/decision/routeTools.js +131 -0
- package/dist/src/decision/toolFamilies.d.ts +7 -0
- package/dist/src/decision/toolFamilies.js +55 -0
- package/dist/src/decision/toolMenu.d.ts +35 -0
- package/dist/src/decision/toolMenu.js +73 -0
- package/dist/src/decision/types.d.ts +99 -0
- package/dist/src/decision/types.js +1 -0
- package/dist/src/diff-preview.d.ts +6 -0
- package/dist/src/diff-preview.js +120 -0
- package/dist/src/duration.d.ts +44 -0
- package/dist/src/duration.js +72 -0
- package/dist/src/efficiency.d.ts +101 -0
- package/dist/src/efficiency.js +104 -0
- package/dist/src/engine/protocol.d.ts +11 -0
- package/dist/src/engine/protocol.js +51 -0
- package/dist/src/extensions.d.ts +46 -0
- package/dist/src/extensions.js +846 -0
- package/dist/src/favicons.d.ts +37 -0
- package/dist/src/favicons.js +216 -0
- package/dist/src/file-read-state.d.ts +8 -0
- package/dist/src/file-read-state.js +31 -0
- package/dist/src/git-summary.d.ts +67 -0
- package/dist/src/git-summary.js +461 -0
- package/dist/src/goal-completion-verification.d.ts +18 -0
- package/dist/src/goal-completion-verification.js +43 -0
- package/dist/src/graph-account.d.ts +31 -0
- package/dist/src/graph-account.js +57 -0
- package/dist/src/graph-editor-session.d.ts +15 -0
- package/dist/src/graph-editor-session.js +70 -0
- package/dist/src/graph-health.d.ts +88 -0
- package/dist/src/graph-health.js +243 -0
- package/dist/src/graph-provider-portability.d.ts +30 -0
- package/dist/src/graph-provider-portability.js +197 -0
- package/dist/src/graph-quota.d.ts +55 -0
- package/dist/src/graph-quota.js +131 -0
- package/dist/src/graph-runner.d.ts +4 -0
- package/dist/src/graph-runner.js +1356 -0
- package/dist/src/graph-selection.d.ts +17 -0
- package/dist/src/graph-selection.js +31 -0
- package/dist/src/graph-server.d.ts +13 -0
- package/dist/src/graph-server.js +483 -0
- package/dist/src/graph-studio-features.d.ts +61 -0
- package/dist/src/graph-studio-features.js +348 -0
- package/dist/src/graph-sync.d.ts +76 -0
- package/dist/src/graph-sync.js +619 -0
- package/dist/src/graph-ui/andorra-logo.png +0 -0
- package/dist/src/graph-ui/app.js +1803 -0
- package/dist/src/graph-ui/compat.js +43 -0
- package/dist/src/graph-ui/controls.css +190 -0
- package/dist/src/graph-ui/controls.js +567 -0
- package/dist/src/graph-ui/edge-router.js +117 -0
- package/dist/src/graph-ui/embed.js +324 -0
- package/dist/src/graph-ui/fonts/geist-mono-latin-400-normal.woff2 +0 -0
- package/dist/src/graph-ui/fonts/geist-sans-latin-400-normal.woff2 +0 -0
- package/dist/src/graph-ui/fonts/geist-sans-latin-500-normal.woff2 +0 -0
- package/dist/src/graph-ui/icons.js +117 -0
- package/dist/src/graph-ui/index.html +7 -0
- package/dist/src/graph-ui/library.css +26 -0
- package/dist/src/graph-ui/sidebar.js +61 -0
- package/dist/src/graph-ui/studio-canvas.js +454 -0
- package/dist/src/graph-ui/studio.css +110 -0
- package/dist/src/graph-ui/studio.js +720 -0
- package/dist/src/graph-ui/style.css +477 -0
- package/dist/src/graph-ui/theme.js +92 -0
- package/dist/src/graph-ui/tokens.css +187 -0
- package/dist/src/graphs.d.ts +270 -0
- package/dist/src/graphs.js +1102 -0
- package/dist/src/grep-regex-worker.d.ts +1 -0
- package/dist/src/grep-regex-worker.js +20 -0
- package/dist/src/grep-regex.d.ts +11 -0
- package/dist/src/grep-regex.js +64 -0
- package/dist/src/handoffs.d.ts +34 -0
- package/dist/src/handoffs.js +229 -0
- package/dist/src/hardened-runtime.d.ts +14 -0
- package/dist/src/hardened-runtime.js +264 -0
- package/dist/src/limits.d.ts +77 -0
- package/dist/src/limits.js +88 -0
- package/dist/src/markdown.d.ts +31 -0
- package/dist/src/markdown.js +553 -0
- package/dist/src/mcp.d.ts +11 -0
- package/dist/src/mcp.js +175 -0
- package/dist/src/membership-errors.d.ts +4 -0
- package/dist/src/membership-errors.js +4 -0
- package/dist/src/membership.d.ts +81 -0
- package/dist/src/membership.js +247 -0
- package/dist/src/memory/LocalToolMemory.d.ts +20 -0
- package/dist/src/memory/LocalToolMemory.js +114 -0
- package/dist/src/memory/MemoryDistiller.d.ts +35 -0
- package/dist/src/memory/MemoryDistiller.js +216 -0
- package/dist/src/memory/MemoryManager.d.ts +76 -0
- package/dist/src/memory/MemoryManager.js +386 -0
- package/dist/src/memory/MemoryPolicy.d.ts +30 -0
- package/dist/src/memory/MemoryPolicy.js +96 -0
- package/dist/src/memory/MemoryProvider.d.ts +18 -0
- package/dist/src/memory/MemoryProvider.js +1 -0
- package/dist/src/memory/MemoryRetriever.d.ts +27 -0
- package/dist/src/memory/MemoryRetriever.js +149 -0
- package/dist/src/memory/PermissionMemoryProvider.d.ts +22 -0
- package/dist/src/memory/PermissionMemoryProvider.js +50 -0
- package/dist/src/memory/ToolFailureLessons.d.ts +39 -0
- package/dist/src/memory/ToolFailureLessons.js +167 -0
- package/dist/src/memory/index.d.ts +12 -0
- package/dist/src/memory/index.js +11 -0
- package/dist/src/memory/providers/NoOpMemoryProvider.d.ts +13 -0
- package/dist/src/memory/providers/NoOpMemoryProvider.js +15 -0
- package/dist/src/memory/providers/graphiti/GraphitiClient.d.ts +27 -0
- package/dist/src/memory/providers/graphiti/GraphitiClient.js +76 -0
- package/dist/src/memory/providers/graphiti/GraphitiMapper.d.ts +6 -0
- package/dist/src/memory/providers/graphiti/GraphitiMapper.js +116 -0
- package/dist/src/memory/providers/graphiti/GraphitiMemoryProvider.d.ts +27 -0
- package/dist/src/memory/providers/graphiti/GraphitiMemoryProvider.js +137 -0
- package/dist/src/memory/providers/graphiti/GraphitiTypes.d.ts +57 -0
- package/dist/src/memory/providers/graphiti/GraphitiTypes.js +2 -0
- package/dist/src/memory/redaction.d.ts +11 -0
- package/dist/src/memory/redaction.js +58 -0
- package/dist/src/memory/repository.d.ts +11 -0
- package/dist/src/memory/repository.js +74 -0
- package/dist/src/memory/tools/memorySearchTool.d.ts +4 -0
- package/dist/src/memory/tools/memorySearchTool.js +77 -0
- package/dist/src/memory/types.d.ts +112 -0
- package/dist/src/memory/types.js +7 -0
- package/dist/src/model-metadata.d.ts +28 -0
- package/dist/src/model-metadata.js +274 -0
- package/dist/src/model-override.d.ts +60 -0
- package/dist/src/model-override.js +146 -0
- package/dist/src/model-tiers.d.ts +61 -0
- package/dist/src/model-tiers.js +109 -0
- package/dist/src/opencode-catalog.d.ts +16 -0
- package/dist/src/opencode-catalog.js +135 -0
- package/dist/src/opencode-provider.d.ts +10 -0
- package/dist/src/opencode-provider.js +525 -0
- package/dist/src/paged-transcript.d.ts +58 -0
- package/dist/src/paged-transcript.js +205 -0
- package/dist/src/palette.d.ts +61 -0
- package/dist/src/palette.js +63 -0
- package/dist/src/permissions.d.ts +36 -0
- package/dist/src/permissions.js +93 -0
- package/dist/src/powershell-pool.d.ts +26 -0
- package/dist/src/powershell-pool.js +235 -0
- package/dist/src/profile.d.ts +80 -0
- package/dist/src/profile.js +200 -0
- package/dist/src/provider-connection.d.ts +36 -0
- package/dist/src/provider-connection.js +222 -0
- package/dist/src/provider-engine.d.ts +37 -0
- package/dist/src/provider-engine.js +401 -0
- package/dist/src/provider-import.d.ts +68 -0
- package/dist/src/provider-import.js +355 -0
- package/dist/src/provider-settings.d.ts +8 -0
- package/dist/src/provider-settings.js +451 -0
- package/dist/src/providers.d.ts +219 -0
- package/dist/src/providers.js +1230 -0
- package/dist/src/pull-requests.d.ts +195 -0
- package/dist/src/pull-requests.js +514 -0
- package/dist/src/qa/api/http-runner.d.ts +3 -0
- package/dist/src/qa/api/http-runner.js +47 -0
- package/dist/src/qa/browser/PlaywrightRunner.d.ts +21 -0
- package/dist/src/qa/browser/PlaywrightRunner.js +190 -0
- package/dist/src/qa/command-policy.d.ts +28 -0
- package/dist/src/qa/command-policy.js +122 -0
- package/dist/src/qa/git/ChangeDetector.d.ts +26 -0
- package/dist/src/qa/git/ChangeDetector.js +177 -0
- package/dist/src/qa/git/DiffReviewer.d.ts +28 -0
- package/dist/src/qa/git/DiffReviewer.js +115 -0
- package/dist/src/qa/index.d.ts +11 -0
- package/dist/src/qa/index.js +19 -0
- package/dist/src/qa/orchestrator/ChangeClassifier.d.ts +14 -0
- package/dist/src/qa/orchestrator/ChangeClassifier.js +28 -0
- package/dist/src/qa/orchestrator/MergeGate.d.ts +14 -0
- package/dist/src/qa/orchestrator/MergeGate.js +40 -0
- package/dist/src/qa/orchestrator/QaOrchestrator.d.ts +79 -0
- package/dist/src/qa/orchestrator/QaOrchestrator.js +373 -0
- package/dist/src/qa/profile/ProjectInspector.d.ts +9 -0
- package/dist/src/qa/profile/ProjectInspector.js +295 -0
- package/dist/src/qa/profile/QaConfigLoader.d.ts +43 -0
- package/dist/src/qa/profile/QaConfigLoader.js +261 -0
- package/dist/src/qa/profile/QaProfile.d.ts +17 -0
- package/dist/src/qa/profile/QaProfile.js +15 -0
- package/dist/src/qa/profile/yaml.d.ts +12 -0
- package/dist/src/qa/profile/yaml.js +203 -0
- package/dist/src/qa/qa-authorize.d.ts +25 -0
- package/dist/src/qa/qa-authorize.js +82 -0
- package/dist/src/qa/runners/CommandRunner.d.ts +22 -0
- package/dist/src/qa/runners/CommandRunner.js +96 -0
- package/dist/src/qa/runners/TestRunner.d.ts +21 -0
- package/dist/src/qa/runners/TestRunner.js +66 -0
- package/dist/src/qa/runtime/ProcessManager.d.ts +53 -0
- package/dist/src/qa/runtime/ProcessManager.js +225 -0
- package/dist/src/qa/runtime/PtyManager.d.ts +57 -0
- package/dist/src/qa/runtime/PtyManager.js +338 -0
- package/dist/src/qa/runtime/RuntimeSmoke.d.ts +11 -0
- package/dist/src/qa/runtime/RuntimeSmoke.js +78 -0
- package/dist/src/qa/runtime-detect.d.ts +10 -0
- package/dist/src/qa/runtime-detect.js +72 -0
- package/dist/src/qa/security/DependencyScanner.d.ts +19 -0
- package/dist/src/qa/security/DependencyScanner.js +167 -0
- package/dist/src/qa/security/SecretScanner.d.ts +3 -0
- package/dist/src/qa/security/SecretScanner.js +55 -0
- package/dist/src/qa/tools.d.ts +3 -0
- package/dist/src/qa/tools.js +301 -0
- package/dist/src/qa/types.d.ts +134 -0
- package/dist/src/qa/types.js +3 -0
- package/dist/src/react-runtime.d.ts +53 -0
- package/dist/src/react-runtime.js +1753 -0
- package/dist/src/remote/cert.d.ts +29 -0
- package/dist/src/remote/cert.js +136 -0
- package/dist/src/remote/client.d.ts +189 -0
- package/dist/src/remote/client.js +659 -0
- package/dist/src/remote/command.d.ts +4 -0
- package/dist/src/remote/command.js +211 -0
- package/dist/src/remote/engine-pool.d.ts +230 -0
- package/dist/src/remote/engine-pool.js +1160 -0
- package/dist/src/remote/errors.d.ts +26 -0
- package/dist/src/remote/errors.js +21 -0
- package/dist/src/remote/network.d.ts +48 -0
- package/dist/src/remote/network.js +135 -0
- package/dist/src/remote/pairing.d.ts +98 -0
- package/dist/src/remote/pairing.js +306 -0
- package/dist/src/remote/roots.d.ts +29 -0
- package/dist/src/remote/roots.js +44 -0
- package/dist/src/remote/serve.d.ts +115 -0
- package/dist/src/remote/serve.js +274 -0
- package/dist/src/remote/server.d.ts +35 -0
- package/dist/src/remote/server.js +484 -0
- package/dist/src/remote/types.d.ts +86 -0
- package/dist/src/remote/types.js +11 -0
- package/dist/src/run-control.d.ts +17 -0
- package/dist/src/run-control.js +52 -0
- package/dist/src/run-progress.d.ts +226 -0
- package/dist/src/run-progress.js +724 -0
- package/dist/src/run-records.d.ts +500 -0
- package/dist/src/run-records.js +1678 -0
- package/dist/src/runtime.d.ts +418 -0
- package/dist/src/runtime.js +247 -0
- package/dist/src/sandbox-child.d.ts +1 -0
- package/dist/src/sandbox-child.js +14 -0
- package/dist/src/save-lock.d.ts +9 -0
- package/dist/src/save-lock.js +186 -0
- package/dist/src/session-monitor.d.ts +98 -0
- package/dist/src/session-monitor.js +323 -0
- package/dist/src/session-reaper.d.ts +23 -0
- package/dist/src/session-reaper.js +33 -0
- package/dist/src/session-summary.d.ts +27 -0
- package/dist/src/session-summary.js +66 -0
- package/dist/src/session-title.d.ts +18 -0
- package/dist/src/session-title.js +54 -0
- package/dist/src/sessions.d.ts +211 -0
- package/dist/src/sessions.js +620 -0
- package/dist/src/shell.d.ts +40 -0
- package/dist/src/shell.js +504 -0
- package/dist/src/side-panel.d.ts +144 -0
- package/dist/src/side-panel.js +366 -0
- package/dist/src/skill-commands.d.ts +1 -0
- package/dist/src/skill-commands.js +11 -0
- package/dist/src/skills/bundled/ai-elements/SKILL.md +155 -0
- package/dist/src/skills/bundled/ai-elements/references/agent.md +138 -0
- package/dist/src/skills/bundled/ai-elements/references/artifact.md +91 -0
- package/dist/src/skills/bundled/ai-elements/references/attachments.md +197 -0
- package/dist/src/skills/bundled/ai-elements/references/audio-player.md +141 -0
- package/dist/src/skills/bundled/ai-elements/references/canvas.md +39 -0
- package/dist/src/skills/bundled/ai-elements/references/chain-of-thought.md +88 -0
- package/dist/src/skills/bundled/ai-elements/references/checkpoint.md +171 -0
- package/dist/src/skills/bundled/ai-elements/references/code-block.md +177 -0
- package/dist/src/skills/bundled/ai-elements/references/commit.md +184 -0
- package/dist/src/skills/bundled/ai-elements/references/confirmation.md +268 -0
- package/dist/src/skills/bundled/ai-elements/references/connection.md +39 -0
- package/dist/src/skills/bundled/ai-elements/references/context.md +133 -0
- package/dist/src/skills/bundled/ai-elements/references/controls.md +37 -0
- package/dist/src/skills/bundled/ai-elements/references/conversation.md +224 -0
- package/dist/src/skills/bundled/ai-elements/references/edge.md +57 -0
- package/dist/src/skills/bundled/ai-elements/references/environment-variables.md +109 -0
- package/dist/src/skills/bundled/ai-elements/references/file-tree.md +79 -0
- package/dist/src/skills/bundled/ai-elements/references/image.md +150 -0
- package/dist/src/skills/bundled/ai-elements/references/inline-citation.md +300 -0
- package/dist/src/skills/bundled/ai-elements/references/jsx-preview.md +108 -0
- package/dist/src/skills/bundled/ai-elements/references/message.md +231 -0
- package/dist/src/skills/bundled/ai-elements/references/mic-selector.md +193 -0
- package/dist/src/skills/bundled/ai-elements/references/model-selector.md +119 -0
- package/dist/src/skills/bundled/ai-elements/references/node.md +78 -0
- package/dist/src/skills/bundled/ai-elements/references/open-in-chat.md +74 -0
- package/dist/src/skills/bundled/ai-elements/references/package-info.md +102 -0
- package/dist/src/skills/bundled/ai-elements/references/panel.md +38 -0
- package/dist/src/skills/bundled/ai-elements/references/persona.md +173 -0
- package/dist/src/skills/bundled/ai-elements/references/plan.md +86 -0
- package/dist/src/skills/bundled/ai-elements/references/prompt-input.md +572 -0
- package/dist/src/skills/bundled/ai-elements/references/queue.md +179 -0
- package/dist/src/skills/bundled/ai-elements/references/reasoning.md +226 -0
- package/dist/src/skills/bundled/ai-elements/references/sandbox.md +133 -0
- package/dist/src/skills/bundled/ai-elements/references/schema-display.md +109 -0
- package/dist/src/skills/bundled/ai-elements/references/shimmer.md +55 -0
- package/dist/src/skills/bundled/ai-elements/references/snippet.md +71 -0
- package/dist/src/skills/bundled/ai-elements/references/sources.md +200 -0
- package/dist/src/skills/bundled/ai-elements/references/speech-input.md +167 -0
- package/dist/src/skills/bundled/ai-elements/references/stack-trace.md +225 -0
- package/dist/src/skills/bundled/ai-elements/references/suggestion.md +128 -0
- package/dist/src/skills/bundled/ai-elements/references/task.md +222 -0
- package/dist/src/skills/bundled/ai-elements/references/terminal.md +110 -0
- package/dist/src/skills/bundled/ai-elements/references/test-results.md +164 -0
- package/dist/src/skills/bundled/ai-elements/references/tool.md +282 -0
- package/dist/src/skills/bundled/ai-elements/references/toolbar.md +37 -0
- package/dist/src/skills/bundled/ai-elements/references/transcription.md +127 -0
- package/dist/src/skills/bundled/ai-elements/references/voice-selector.md +248 -0
- package/dist/src/skills/bundled/ai-elements/references/web-preview.md +204 -0
- package/dist/src/skills/bundled/ai-elements/scripts/agent.tsx +67 -0
- package/dist/src/skills/bundled/ai-elements/scripts/artifact.tsx +117 -0
- package/dist/src/skills/bundled/ai-elements/scripts/attachments-inline.tsx +123 -0
- package/dist/src/skills/bundled/ai-elements/scripts/attachments-list.tsx +94 -0
- package/dist/src/skills/bundled/ai-elements/scripts/attachments.tsx +84 -0
- package/dist/src/skills/bundled/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/dist/src/skills/bundled/ai-elements/scripts/audio-player.tsx +74 -0
- package/dist/src/skills/bundled/ai-elements/scripts/chain-of-thought.tsx +80 -0
- package/dist/src/skills/bundled/ai-elements/scripts/checkpoint.tsx +96 -0
- package/dist/src/skills/bundled/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/dist/src/skills/bundled/ai-elements/scripts/code-block.tsx +120 -0
- package/dist/src/skills/bundled/ai-elements/scripts/commit.tsx +94 -0
- package/dist/src/skills/bundled/ai-elements/scripts/confirmation-accepted.tsx +41 -0
- package/dist/src/skills/bundled/ai-elements/scripts/confirmation-rejected.tsx +41 -0
- package/dist/src/skills/bundled/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/dist/src/skills/bundled/ai-elements/scripts/confirmation.tsx +59 -0
- package/dist/src/skills/bundled/ai-elements/scripts/context.tsx +45 -0
- package/dist/src/skills/bundled/ai-elements/scripts/conversation.tsx +182 -0
- package/dist/src/skills/bundled/ai-elements/scripts/environment-variables.tsx +61 -0
- package/dist/src/skills/bundled/ai-elements/scripts/file-tree-basic.tsx +20 -0
- package/dist/src/skills/bundled/ai-elements/scripts/file-tree-expanded.tsx +23 -0
- package/dist/src/skills/bundled/ai-elements/scripts/file-tree-selection.tsx +26 -0
- package/dist/src/skills/bundled/ai-elements/scripts/file-tree.tsx +44 -0
- package/dist/src/skills/bundled/ai-elements/scripts/image.tsx +20 -0
- package/dist/src/skills/bundled/ai-elements/scripts/inline-citation.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/jsx-preview.tsx +105 -0
- package/dist/src/skills/bundled/ai-elements/scripts/message.tsx +330 -0
- package/dist/src/skills/bundled/ai-elements/scripts/mic-selector.tsx +52 -0
- package/dist/src/skills/bundled/ai-elements/scripts/model-selector.tsx +368 -0
- package/dist/src/skills/bundled/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/dist/src/skills/bundled/ai-elements/scripts/package-info.tsx +52 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-command.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-glint.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-halo.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-mana.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-obsidian.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/persona-opal.tsx +101 -0
- package/dist/src/skills/bundled/ai-elements/scripts/plan.tsx +69 -0
- package/dist/src/skills/bundled/ai-elements/scripts/prompt-input-cursor.tsx +462 -0
- package/dist/src/skills/bundled/ai-elements/scripts/prompt-input-tooltip.tsx +46 -0
- package/dist/src/skills/bundled/ai-elements/scripts/prompt-input.tsx +254 -0
- package/dist/src/skills/bundled/ai-elements/scripts/queue-prompt-input.tsx +372 -0
- package/dist/src/skills/bundled/ai-elements/scripts/queue.tsx +281 -0
- package/dist/src/skills/bundled/ai-elements/scripts/reasoning.tsx +73 -0
- package/dist/src/skills/bundled/ai-elements/scripts/sandbox.tsx +171 -0
- package/dist/src/skills/bundled/ai-elements/scripts/schema-display-basic.tsx +13 -0
- package/dist/src/skills/bundled/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/dist/src/skills/bundled/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/dist/src/skills/bundled/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/dist/src/skills/bundled/ai-elements/scripts/schema-display.tsx +110 -0
- package/dist/src/skills/bundled/ai-elements/scripts/shimmer-duration.tsx +35 -0
- package/dist/src/skills/bundled/ai-elements/scripts/shimmer-elements.tsx +45 -0
- package/dist/src/skills/bundled/ai-elements/scripts/shimmer.tsx +17 -0
- package/dist/src/skills/bundled/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/dist/src/skills/bundled/ai-elements/scripts/snippet.tsx +25 -0
- package/dist/src/skills/bundled/ai-elements/scripts/sources-custom.tsx +40 -0
- package/dist/src/skills/bundled/ai-elements/scripts/sources.tsx +33 -0
- package/dist/src/skills/bundled/ai-elements/scripts/speech-input.tsx +85 -0
- package/dist/src/skills/bundled/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/dist/src/skills/bundled/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/dist/src/skills/bundled/ai-elements/scripts/stack-trace.tsx +60 -0
- package/dist/src/skills/bundled/ai-elements/scripts/suggestion-input.tsx +142 -0
- package/dist/src/skills/bundled/ai-elements/scripts/suggestion.tsx +34 -0
- package/dist/src/skills/bundled/ai-elements/scripts/task.tsx +59 -0
- package/dist/src/skills/bundled/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/dist/src/skills/bundled/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/dist/src/skills/bundled/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/dist/src/skills/bundled/ai-elements/scripts/terminal.tsx +83 -0
- package/dist/src/skills/bundled/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/dist/src/skills/bundled/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/dist/src/skills/bundled/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/dist/src/skills/bundled/ai-elements/scripts/test-results.tsx +84 -0
- package/dist/src/skills/bundled/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/dist/src/skills/bundled/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/dist/src/skills/bundled/ai-elements/scripts/tool-output-available.tsx +81 -0
- package/dist/src/skills/bundled/ai-elements/scripts/tool-output-error.tsx +50 -0
- package/dist/src/skills/bundled/ai-elements/scripts/tool.tsx +210 -0
- package/dist/src/skills/bundled/ai-elements/scripts/transcription.tsx +289 -0
- package/dist/src/skills/bundled/ai-elements/scripts/voice-selector.tsx +233 -0
- package/dist/src/skills/bundled/ai-elements/scripts/web-preview.tsx +105 -0
- package/dist/src/skills/bundled/control-browser/SKILL.md +21 -0
- package/dist/src/skills/bundled/dynamic-workflows/SKILL.md +1520 -0
- package/dist/src/skills/bundled/dynamic-workflows/examples.md +801 -0
- package/dist/src/skills/bundled/dynamic-workflows/patterns.md +460 -0
- package/dist/src/skills/bundled/provenance.json +684 -0
- package/dist/src/skills/bundled/web-gui-tester/SKILL.md +159 -0
- package/dist/src/skills/project-skills.d.ts +11 -0
- package/dist/src/skills/project-skills.js +132 -0
- package/dist/src/skills/runtime-skills.d.ts +10 -0
- package/dist/src/skills/runtime-skills.js +237 -0
- package/dist/src/subagent-run.d.ts +278 -0
- package/dist/src/subagent-run.js +930 -0
- package/dist/src/telemetry/aggregate.d.ts +80 -0
- package/dist/src/telemetry/aggregate.js +217 -0
- package/dist/src/telemetry/capture-core.d.ts +190 -0
- package/dist/src/telemetry/capture-core.js +374 -0
- package/dist/src/telemetry/capture.d.ts +5 -0
- package/dist/src/telemetry/capture.js +16 -0
- package/dist/src/telemetry/classify.d.ts +102 -0
- package/dist/src/telemetry/classify.js +252 -0
- package/dist/src/telemetry/decision-capture.d.ts +13 -0
- package/dist/src/telemetry/decision-capture.js +40 -0
- package/dist/src/telemetry/emitter.d.ts +77 -0
- package/dist/src/telemetry/emitter.js +279 -0
- package/dist/src/telemetry/gate.d.ts +48 -0
- package/dist/src/telemetry/gate.js +55 -0
- package/dist/src/telemetry/identity.d.ts +19 -0
- package/dist/src/telemetry/identity.js +109 -0
- package/dist/src/telemetry/outbox.d.ts +91 -0
- package/dist/src/telemetry/outbox.js +356 -0
- package/dist/src/telemetry/schema.d.ts +184 -0
- package/dist/src/telemetry/schema.js +492 -0
- package/dist/src/telemetry/state.d.ts +90 -0
- package/dist/src/telemetry/state.js +195 -0
- package/dist/src/telemetry/surface.d.ts +76 -0
- package/dist/src/telemetry/surface.js +116 -0
- package/dist/src/telemetry/uploader.d.ts +29 -0
- package/dist/src/telemetry/uploader.js +151 -0
- package/dist/src/telemetry/uploads.d.ts +13 -0
- package/dist/src/telemetry/uploads.js +19 -0
- package/dist/src/telemetry/version.d.ts +5 -0
- package/dist/src/telemetry/version.js +25 -0
- package/dist/src/telemetry/workspace.d.ts +14 -0
- package/dist/src/telemetry/workspace.js +93 -0
- package/dist/src/terminal-ui.d.ts +744 -0
- package/dist/src/terminal-ui.js +3012 -0
- package/dist/src/text.d.ts +2 -0
- package/dist/src/text.js +8 -0
- package/dist/src/timers.d.ts +189 -0
- package/dist/src/timers.js +244 -0
- package/dist/src/todos.d.ts +12 -0
- package/dist/src/todos.js +33 -0
- package/dist/src/token-rate.d.ts +119 -0
- package/dist/src/token-rate.js +287 -0
- package/dist/src/tool-activity.d.ts +20 -0
- package/dist/src/tool-activity.js +76 -0
- package/dist/src/tool-call-clock.d.ts +32 -0
- package/dist/src/tool-call-clock.js +157 -0
- package/dist/src/tool-catalog.d.ts +40 -0
- package/dist/src/tool-catalog.js +100 -0
- package/dist/src/tool-dependencies.d.ts +23 -0
- package/dist/src/tool-dependencies.js +36 -0
- package/dist/src/tool-diff-stats.d.ts +24 -0
- package/dist/src/tool-diff-stats.js +122 -0
- package/dist/src/tool-errors.d.ts +12 -0
- package/dist/src/tool-errors.js +13 -0
- package/dist/src/tool-failure-tracker.d.ts +17 -0
- package/dist/src/tool-failure-tracker.js +71 -0
- package/dist/src/tool-names.d.ts +16 -0
- package/dist/src/tool-names.js +75 -0
- package/dist/src/tool-result-filter.d.ts +65 -0
- package/dist/src/tool-result-filter.js +447 -0
- package/dist/src/tool-schema-compatibility.d.ts +2 -0
- package/dist/src/tool-schema-compatibility.js +42 -0
- package/dist/src/tools.d.ts +3 -0
- package/dist/src/tools.js +663 -0
- package/dist/src/trajectory.d.ts +34 -0
- package/dist/src/trajectory.js +426 -0
- package/dist/src/transcript.d.ts +45 -0
- package/dist/src/transcript.js +228 -0
- package/dist/src/types.d.ts +248 -0
- package/dist/src/types.js +1 -0
- package/dist/src/update.d.ts +48 -0
- package/dist/src/update.js +614 -0
- package/dist/src/usage-analytics.d.ts +48 -0
- package/dist/src/usage-analytics.js +663 -0
- package/dist/src/widgets.d.ts +45 -0
- package/dist/src/widgets.js +71 -0
- package/dist/src/workspace-facts.d.ts +35 -0
- package/dist/src/workspace-facts.js +85 -0
- package/dist/src/workspace-git-metadata.d.ts +6 -0
- package/dist/src/workspace-git-metadata.js +114 -0
- package/dist/src/workspace-instructions.d.ts +7 -0
- package/dist/src/workspace-instructions.js +46 -0
- package/dist/vendor/engine/LICENSE.upstream +21 -0
- package/dist/vendor/engine/provenance.json +17923 -0
- package/dist/vendor/engine/runtime/agent/agent-loop.d.ts +23 -0
- package/dist/vendor/engine/runtime/agent/agent-loop.js +601 -0
- package/dist/vendor/engine/runtime/agent/agent.d.ts +130 -0
- package/dist/vendor/engine/runtime/agent/agent.js +430 -0
- package/dist/vendor/engine/runtime/agent/harness/agent-harness.d.ts +715 -0
- package/dist/vendor/engine/runtime/agent/harness/agent-harness.js +5 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/branch-summarization.d.ts +67 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/branch-summarization.js +175 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/compaction.d.ts +125 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/compaction.js +559 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/utils.d.ts +24 -0
- package/dist/vendor/engine/runtime/agent/harness/compaction/utils.js +119 -0
- package/dist/vendor/engine/runtime/agent/harness/config.d.ts +8 -0
- package/dist/vendor/engine/runtime/agent/harness/config.js +34 -0
- package/dist/vendor/engine/runtime/agent/harness/context.d.ts +8 -0
- package/dist/vendor/engine/runtime/agent/harness/context.js +12 -0
- package/dist/vendor/engine/runtime/agent/harness/events.d.ts +24 -0
- package/dist/vendor/engine/runtime/agent/harness/events.js +249 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/assistant.d.ts +41 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/assistant.js +81 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/effect-gate.d.ts +21 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/effect-gate.js +48 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/tools.d.ts +66 -0
- package/dist/vendor/engine/runtime/agent/harness/execution/tools.js +118 -0
- package/dist/vendor/engine/runtime/agent/harness/hooks.d.ts +37 -0
- package/dist/vendor/engine/runtime/agent/harness/hooks.js +405 -0
- package/dist/vendor/engine/runtime/agent/harness/messages.d.ts +50 -0
- package/dist/vendor/engine/runtime/agent/harness/messages.js +102 -0
- package/dist/vendor/engine/runtime/agent/harness/prompt-templates.d.ts +48 -0
- package/dist/vendor/engine/runtime/agent/harness/prompt-templates.js +224 -0
- package/dist/vendor/engine/runtime/agent/harness/result.d.ts +132 -0
- package/dist/vendor/engine/runtime/agent/harness/result.js +80 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/boundary.d.ts +27 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/boundary.js +172 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/checkpoint.d.ts +7 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/checkpoint.js +132 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/deferred.d.ts +14 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/deferred.js +178 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/generation.d.ts +7 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/generation.js +204 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/reconcile.d.ts +4 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/reconcile.js +139 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/recovery.d.ts +7 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/recovery.js +84 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/response.d.ts +22 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/response.js +393 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/retry.d.ts +3 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/retry.js +33 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/structural.d.ts +31 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/structural.js +928 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/terminal.d.ts +6 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/terminal.js +48 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/tool-placement.d.ts +13 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/tool-placement.js +218 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/tools.d.ts +5 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive/tools.js +448 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive.d.ts +5 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/drive.js +92 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/harness.d.ts +58 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/harness.js +310 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/lane.d.ts +117 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/lane.js +1574 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/progress.d.ts +14 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/progress.js +65 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/reducer.d.ts +4 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/reducer.js +239 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/restore.d.ts +23 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/restore.js +116 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/transcript.d.ts +20 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/transcript.js +71 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/types.d.ts +104 -0
- package/dist/vendor/engine/runtime/agent/harness/runtime/types.js +60 -0
- package/dist/vendor/engine/runtime/agent/harness/session/commit.d.ts +52 -0
- package/dist/vendor/engine/runtime/agent/harness/session/commit.js +56 -0
- package/dist/vendor/engine/runtime/agent/harness/session/context.d.ts +9 -0
- package/dist/vendor/engine/runtime/agent/harness/session/context.js +48 -0
- package/dist/vendor/engine/runtime/agent/harness/session/fork-policy.d.ts +20 -0
- package/dist/vendor/engine/runtime/agent/harness/session/fork-policy.js +54 -0
- package/dist/vendor/engine/runtime/agent/harness/session/fork.d.ts +15 -0
- package/dist/vendor/engine/runtime/agent/harness/session/fork.js +78 -0
- package/dist/vendor/engine/runtime/agent/harness/session/in-memory-storage-state.d.ts +38 -0
- package/dist/vendor/engine/runtime/agent/harness/session/in-memory-storage-state.js +275 -0
- package/dist/vendor/engine/runtime/agent/harness/session/index.d.ts +10 -0
- package/dist/vendor/engine/runtime/agent/harness/session/index.js +8 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/codec.d.ts +20 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/codec.js +44 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/fork.d.ts +37 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/fork.js +263 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/index.d.ts +3 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/index.js +3 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/io.d.ts +13 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/io.js +85 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/legacy-v3.d.ts +43 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/legacy-v3.js +461 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/repo.d.ts +34 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/repo.js +300 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/storage.d.ts +40 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/storage.js +199 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/types.d.ts +38 -0
- package/dist/vendor/engine/runtime/agent/harness/session/jsonl/types.js +2 -0
- package/dist/vendor/engine/runtime/agent/harness/session/memory.d.ts +47 -0
- package/dist/vendor/engine/runtime/agent/harness/session/memory.js +368 -0
- package/dist/vendor/engine/runtime/agent/harness/session/mutation-line.d.ts +7 -0
- package/dist/vendor/engine/runtime/agent/harness/session/mutation-line.js +20 -0
- package/dist/vendor/engine/runtime/agent/harness/session/session.d.ts +81 -0
- package/dist/vendor/engine/runtime/agent/harness/session/session.js +360 -0
- package/dist/vendor/engine/runtime/agent/harness/session/types.d.ts +511 -0
- package/dist/vendor/engine/runtime/agent/harness/session/types.js +8 -0
- package/dist/vendor/engine/runtime/agent/harness/session/values.d.ts +94 -0
- package/dist/vendor/engine/runtime/agent/harness/session/values.js +80 -0
- package/dist/vendor/engine/runtime/agent/harness/skills.d.ts +45 -0
- package/dist/vendor/engine/runtime/agent/harness/skills.js +325 -0
- package/dist/vendor/engine/runtime/agent/harness/system-prompt.d.ts +2 -0
- package/dist/vendor/engine/runtime/agent/harness/system-prompt.js +29 -0
- package/dist/vendor/engine/runtime/agent/harness/telemetry.d.ts +1241 -0
- package/dist/vendor/engine/runtime/agent/harness/telemetry.js +526 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/bash.d.ts +26 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/bash.js +104 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/edit-diff.d.ts +88 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/edit-diff.js +385 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/edit.d.ts +18 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/edit.js +107 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/file-mutation-queue.d.ts +4 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/file-mutation-queue.js +45 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/image.d.ts +2 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/image.js +105 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/index.d.ts +5 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/index.js +4 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/path-utils.d.ts +4 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/path-utils.js +25 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/read.d.ts +34 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/read.js +107 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/tool-context.d.ts +5 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/tool-context.js +1 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/write.d.ts +10 -0
- package/dist/vendor/engine/runtime/agent/harness/tools/write.js +30 -0
- package/dist/vendor/engine/runtime/agent/harness/types.d.ts +304 -0
- package/dist/vendor/engine/runtime/agent/harness/types.js +74 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/adaptive-publisher.d.ts +23 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/adaptive-publisher.js +78 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/output-capture.d.ts +30 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/output-capture.js +216 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/shell-output.d.ts +28 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/shell-output.js +70 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/truncate.d.ts +70 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/truncate.js +295 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/usage.d.ts +3 -0
- package/dist/vendor/engine/runtime/agent/harness/utils/usage.js +32 -0
- package/dist/vendor/engine/runtime/agent/index.d.ts +27 -0
- package/dist/vendor/engine/runtime/agent/index.js +25 -0
- package/dist/vendor/engine/runtime/agent/proxy.d.ts +71 -0
- package/dist/vendor/engine/runtime/agent/proxy.js +309 -0
- package/dist/vendor/engine/runtime/agent/search/index.d.ts +28 -0
- package/dist/vendor/engine/runtime/agent/search/index.js +1 -0
- package/dist/vendor/engine/runtime/agent/stream-fn.d.ts +9 -0
- package/dist/vendor/engine/runtime/agent/stream-fn.js +16 -0
- package/dist/vendor/engine/runtime/agent/types.d.ts +431 -0
- package/dist/vendor/engine/runtime/agent/types.js +1 -0
- package/dist/vendor/engine/runtime/ai/api/anthropic-messages.d.ts +70 -0
- package/dist/vendor/engine/runtime/ai/api/anthropic-messages.js +1204 -0
- package/dist/vendor/engine/runtime/ai/api/anthropic-messages.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/anthropic-messages.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/azure-openai-responses.d.ts +16 -0
- package/dist/vendor/engine/runtime/ai/api/azure-openai-responses.js +260 -0
- package/dist/vendor/engine/runtime/ai/api/azure-openai-responses.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/azure-openai-responses.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/bedrock-converse-stream.d.ts +37 -0
- package/dist/vendor/engine/runtime/ai/api/bedrock-converse-stream.js +1091 -0
- package/dist/vendor/engine/runtime/ai/api/bedrock-converse-stream.lazy.d.ts +9 -0
- package/dist/vendor/engine/runtime/ai/api/bedrock-converse-stream.lazy.js +21 -0
- package/dist/vendor/engine/runtime/ai/api/constrained-sampling.d.ts +19 -0
- package/dist/vendor/engine/runtime/ai/api/constrained-sampling.js +221 -0
- package/dist/vendor/engine/runtime/ai/api/github-copilot-headers.d.ts +7 -0
- package/dist/vendor/engine/runtime/ai/api/github-copilot-headers.js +28 -0
- package/dist/vendor/engine/runtime/ai/api/google-generative-ai.d.ts +12 -0
- package/dist/vendor/engine/runtime/ai/api/google-generative-ai.js +368 -0
- package/dist/vendor/engine/runtime/ai/api/google-generative-ai.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/google-generative-ai.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/google-shared.d.ts +92 -0
- package/dist/vendor/engine/runtime/ai/api/google-shared.js +450 -0
- package/dist/vendor/engine/runtime/ai/api/google-vertex.d.ts +14 -0
- package/dist/vendor/engine/runtime/ai/api/google-vertex.js +429 -0
- package/dist/vendor/engine/runtime/ai/api/google-vertex.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/google-vertex.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/lazy.d.ts +24 -0
- package/dist/vendor/engine/runtime/ai/api/lazy.js +69 -0
- package/dist/vendor/engine/runtime/ai/api/mistral-conversations.d.ts +24 -0
- package/dist/vendor/engine/runtime/ai/api/mistral-conversations.js +747 -0
- package/dist/vendor/engine/runtime/ai/api/mistral-conversations.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/mistral-conversations.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-codex-responses.d.ts +30 -0
- package/dist/vendor/engine/runtime/ai/api/openai-codex-responses.js +1302 -0
- package/dist/vendor/engine/runtime/ai/api/openai-codex-responses.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-codex-responses.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-completions.d.ts +25 -0
- package/dist/vendor/engine/runtime/ai/api/openai-completions.js +1339 -0
- package/dist/vendor/engine/runtime/ai/api/openai-completions.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-completions.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-prompt-cache.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-prompt-cache.js +9 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses-shared.d.ts +27 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses-shared.js +688 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses.d.ts +13 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses.js +292 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openai-responses.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/openrouter-images.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openrouter-images.js +131 -0
- package/dist/vendor/engine/runtime/ai/api/openrouter-images.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/openrouter-images.lazy.js +3 -0
- package/dist/vendor/engine/runtime/ai/api/pi-messages.d.ts +98 -0
- package/dist/vendor/engine/runtime/ai/api/pi-messages.js +312 -0
- package/dist/vendor/engine/runtime/ai/api/pi-messages.lazy.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/api/pi-messages.lazy.js +2 -0
- package/dist/vendor/engine/runtime/ai/api/simple-options.d.ts +14 -0
- package/dist/vendor/engine/runtime/ai/api/simple-options.js +65 -0
- package/dist/vendor/engine/runtime/ai/api/transform-messages.d.ts +7 -0
- package/dist/vendor/engine/runtime/ai/api/transform-messages.js +200 -0
- package/dist/vendor/engine/runtime/ai/auth/context.d.ts +6 -0
- package/dist/vendor/engine/runtime/ai/auth/context.js +33 -0
- package/dist/vendor/engine/runtime/ai/auth/credential-store.d.ts +16 -0
- package/dist/vendor/engine/runtime/ai/auth/credential-store.js +50 -0
- package/dist/vendor/engine/runtime/ai/auth/helpers.d.ts +21 -0
- package/dist/vendor/engine/runtime/ai/auth/helpers.js +52 -0
- package/dist/vendor/engine/runtime/ai/auth/oauth/load.d.ts +28 -0
- package/dist/vendor/engine/runtime/ai/auth/oauth/load.js +55 -0
- package/dist/vendor/engine/runtime/ai/auth/resolve.d.ts +26 -0
- package/dist/vendor/engine/runtime/ai/auth/resolve.js +131 -0
- package/dist/vendor/engine/runtime/ai/auth/types.d.ts +230 -0
- package/dist/vendor/engine/runtime/ai/auth/types.js +1 -0
- package/dist/vendor/engine/runtime/ai/compat/extension-oauth-types.d.ts +38 -0
- package/dist/vendor/engine/runtime/ai/compat/extension-oauth-types.js +1 -0
- package/dist/vendor/engine/runtime/ai/compat.d.ts +66 -0
- package/dist/vendor/engine/runtime/ai/compat.js +201 -0
- package/dist/vendor/engine/runtime/ai/env-api-keys.d.ts +20 -0
- package/dist/vendor/engine/runtime/ai/env-api-keys.js +148 -0
- package/dist/vendor/engine/runtime/ai/image-models.d.ts +9 -0
- package/dist/vendor/engine/runtime/ai/image-models.generated.d.ts +814 -0
- package/dist/vendor/engine/runtime/ai/image-models.generated.js +816 -0
- package/dist/vendor/engine/runtime/ai/image-models.js +22 -0
- package/dist/vendor/engine/runtime/ai/images-api-registry.d.ts +13 -0
- package/dist/vendor/engine/runtime/ai/images-api-registry.js +21 -0
- package/dist/vendor/engine/runtime/ai/images-models.d.ts +94 -0
- package/dist/vendor/engine/runtime/ai/images-models.js +142 -0
- package/dist/vendor/engine/runtime/ai/images.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/images.js +13 -0
- package/dist/vendor/engine/runtime/ai/index.d.ts +36 -0
- package/dist/vendor/engine/runtime/ai/index.js +23 -0
- package/dist/vendor/engine/runtime/ai/legacy-api-aliases.d.ts +41 -0
- package/dist/vendor/engine/runtime/ai/legacy-api-aliases.js +48 -0
- package/dist/vendor/engine/runtime/ai/model-catalog.d.ts +16 -0
- package/dist/vendor/engine/runtime/ai/model-catalog.js +3 -0
- package/dist/vendor/engine/runtime/ai/models-store.d.ts +28 -0
- package/dist/vendor/engine/runtime/ai/models-store.js +16 -0
- package/dist/vendor/engine/runtime/ai/models.d.ts +201 -0
- package/dist/vendor/engine/runtime/ai/models.generated.d.ts +84 -0
- package/dist/vendor/engine/runtime/ai/models.generated.js +86 -0
- package/dist/vendor/engine/runtime/ai/models.js +593 -0
- package/dist/vendor/engine/runtime/ai/oauth.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/oauth.js +1 -0
- package/dist/vendor/engine/runtime/ai/providers/all.d.ts +27 -0
- package/dist/vendor/engine/runtime/ai/providers/all.js +132 -0
- package/dist/vendor/engine/runtime/ai/providers/amazon-bedrock.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/amazon-bedrock.js +92 -0
- package/dist/vendor/engine/runtime/ai/providers/amazon-bedrock.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/amazon-bedrock.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/ant-ling.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/ant-ling.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/ant-ling.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/ant-ling.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/anthropic.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/anthropic.js +55 -0
- package/dist/vendor/engine/runtime/ai/providers/anthropic.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/anthropic.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/azure-openai-responses.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/azure-openai-responses.js +13 -0
- package/dist/vendor/engine/runtime/ai/providers/azure-openai-responses.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/azure-openai-responses.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/baseten.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/baseten.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/baseten.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/baseten.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/cerebras.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/cerebras.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/cerebras.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/cerebras.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-ai-gateway.d.ts +4 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-ai-gateway.js +24 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-ai-gateway.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-ai-gateway.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-auth.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-auth.js +85 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-stream.d.ts +7 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-stream.js +20 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-workers-ai.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-workers-ai.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-workers-ai.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/cloudflare-workers-ai.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/data/.manifest.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/amazon-bedrock.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/ant-ling.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/anthropic.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/azure-openai-responses.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/baseten.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/cerebras.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/cloudflare-ai-gateway.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/cloudflare-workers-ai.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/deepseek.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/fireworks.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/github-copilot.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/google-vertex.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/google.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/groq.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/huggingface.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/kimi-coding.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/meta.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/minimax-cn.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/minimax.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/mistral.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/moonshotai-cn.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/moonshotai.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/nvidia.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/openai-codex.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/openai.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/opencode-go.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/opencode.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/openrouter.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/qwen-token-plan-cn.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/qwen-token-plan-individual.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/qwen-token-plan.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/radius.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/together.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/vercel-ai-gateway.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/xai.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/xiaomi-token-plan-ams.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/xiaomi-token-plan-cn.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/xiaomi-token-plan-sgp.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/xiaomi.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/zai-coding-cn.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/data/zai.json +1 -0
- package/dist/vendor/engine/runtime/ai/providers/deepseek.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/deepseek.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/deepseek.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/deepseek.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/faux.d.ts +102 -0
- package/dist/vendor/engine/runtime/ai/providers/faux.js +488 -0
- package/dist/vendor/engine/runtime/ai/providers/fireworks.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/fireworks.js +18 -0
- package/dist/vendor/engine/runtime/ai/providers/fireworks.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/fireworks.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/github-copilot.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/github-copilot.js +34 -0
- package/dist/vendor/engine/runtime/ai/providers/github-copilot.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/github-copilot.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/google-vertex.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/google-vertex.js +93 -0
- package/dist/vendor/engine/runtime/ai/providers/google-vertex.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/google-vertex.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/google.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/google.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/google.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/google.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/groq.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/groq.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/groq.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/groq.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/huggingface.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/huggingface.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/huggingface.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/huggingface.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/images/register-builtins.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/images/register-builtins.js +33 -0
- package/dist/vendor/engine/runtime/ai/providers/kimi-coding.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/kimi-coding.js +23 -0
- package/dist/vendor/engine/runtime/ai/providers/kimi-coding.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/kimi-coding.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/meta.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/meta.js +23 -0
- package/dist/vendor/engine/runtime/ai/providers/meta.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/meta.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax-cn.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax-cn.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax-cn.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax-cn.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/minimax.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/mistral.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/mistral.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/mistral.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/mistral.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai-cn.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai-cn.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai-cn.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai-cn.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/moonshotai.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/nvidia.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/nvidia.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/nvidia.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/nvidia.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/openai-codex.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/openai-codex.js +21 -0
- package/dist/vendor/engine/runtime/ai/providers/openai-codex.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/openai-codex.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/openai.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/openai.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/openai.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/openai.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-go.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-go.js +20 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-go.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-go.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-headers.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode-headers.js +21 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode.js +22 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/opencode.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter-images.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter-images.js +21 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter.js +26 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/openrouter.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-cn.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-cn.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-cn.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-cn.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-individual.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-individual.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-individual.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan-individual.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/qwen-token-plan.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/radius-config.d.ts +25 -0
- package/dist/vendor/engine/runtime/ai/providers/radius-config.js +62 -0
- package/dist/vendor/engine/runtime/ai/providers/radius.d.ts +8 -0
- package/dist/vendor/engine/runtime/ai/providers/radius.js +77 -0
- package/dist/vendor/engine/runtime/ai/providers/radius.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/radius.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/together.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/together.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/together.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/together.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/vercel-ai-gateway.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/vercel-ai-gateway.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/vercel-ai-gateway.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/vercel-ai-gateway.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/xai.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/xai.js +23 -0
- package/dist/vendor/engine/runtime/ai/providers/xai.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/xai.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-ams.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-ams.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-ams.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-ams.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-cn.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-cn.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-cn.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-cn.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-sgp.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-sgp.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-sgp.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi-token-plan-sgp.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/xiaomi.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/zai-coding-cn.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/zai-coding-cn.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/zai-coding-cn.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/zai-coding-cn.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/providers/zai.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/providers/zai.js +14 -0
- package/dist/vendor/engine/runtime/ai/providers/zai.models.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/providers/zai.models.js +5 -0
- package/dist/vendor/engine/runtime/ai/session-resources.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/session-resources.js +21 -0
- package/dist/vendor/engine/runtime/ai/types.d.ts +835 -0
- package/dist/vendor/engine/runtime/ai/types.js +1 -0
- package/dist/vendor/engine/runtime/ai/utils/abort-signals.d.ts +5 -0
- package/dist/vendor/engine/runtime/ai/utils/abort-signals.js +33 -0
- package/dist/vendor/engine/runtime/ai/utils/abort.d.ts +7 -0
- package/dist/vendor/engine/runtime/ai/utils/abort.js +48 -0
- package/dist/vendor/engine/runtime/ai/utils/assistant-message-frame.d.ts +76 -0
- package/dist/vendor/engine/runtime/ai/utils/assistant-message-frame.js +424 -0
- package/dist/vendor/engine/runtime/ai/utils/diagnostics.d.ts +19 -0
- package/dist/vendor/engine/runtime/ai/utils/diagnostics.js +24 -0
- package/dist/vendor/engine/runtime/ai/utils/error-body.d.ts +24 -0
- package/dist/vendor/engine/runtime/ai/utils/error-body.js +132 -0
- package/dist/vendor/engine/runtime/ai/utils/estimate.d.ts +16 -0
- package/dist/vendor/engine/runtime/ai/utils/estimate.js +94 -0
- package/dist/vendor/engine/runtime/ai/utils/event-stream.d.ts +20 -0
- package/dist/vendor/engine/runtime/ai/utils/event-stream.js +98 -0
- package/dist/vendor/engine/runtime/ai/utils/hash.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/utils/hash.js +13 -0
- package/dist/vendor/engine/runtime/ai/utils/headers.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/utils/headers.js +17 -0
- package/dist/vendor/engine/runtime/ai/utils/json-parse.d.ts +15 -0
- package/dist/vendor/engine/runtime/ai/utils/json-parse.js +112 -0
- package/dist/vendor/engine/runtime/ai/utils/node-http-proxy.d.ts +3 -0
- package/dist/vendor/engine/runtime/ai/utils/node-http-proxy.js +132 -0
- package/dist/vendor/engine/runtime/ai/utils/overflow.d.ts +68 -0
- package/dist/vendor/engine/runtime/ai/utils/overflow.js +177 -0
- package/dist/vendor/engine/runtime/ai/utils/pi-user-agent.d.ts +1 -0
- package/dist/vendor/engine/runtime/ai/utils/pi-user-agent.js +11 -0
- package/dist/vendor/engine/runtime/ai/utils/provider-env.d.ts +6 -0
- package/dist/vendor/engine/runtime/ai/utils/provider-env.js +43 -0
- package/dist/vendor/engine/runtime/ai/utils/provider-retry.d.ts +15 -0
- package/dist/vendor/engine/runtime/ai/utils/provider-retry.js +93 -0
- package/dist/vendor/engine/runtime/ai/utils/retry.d.ts +57 -0
- package/dist/vendor/engine/runtime/ai/utils/retry.js +182 -0
- package/dist/vendor/engine/runtime/ai/utils/sanitize-unicode.d.ts +21 -0
- package/dist/vendor/engine/runtime/ai/utils/sanitize-unicode.js +25 -0
- package/dist/vendor/engine/runtime/ai/utils/text.d.ts +13 -0
- package/dist/vendor/engine/runtime/ai/utils/text.js +35 -0
- package/dist/vendor/engine/runtime/ai/utils/transcript.d.ts +83 -0
- package/dist/vendor/engine/runtime/ai/utils/transcript.js +203 -0
- package/dist/vendor/engine/runtime/ai/utils/typebox-helpers.d.ts +16 -0
- package/dist/vendor/engine/runtime/ai/utils/typebox-helpers.js +20 -0
- package/dist/vendor/engine/runtime/ai/utils/uuid.d.ts +2 -0
- package/dist/vendor/engine/runtime/ai/utils/uuid.js +41 -0
- package/dist/vendor/engine/runtime/ai/utils/validation.d.ts +17 -0
- package/dist/vendor/engine/runtime/ai/utils/validation.js +308 -0
- package/dist/vendor/engine/runtime/chord/api.d.ts +14 -0
- package/dist/vendor/engine/runtime/chord/api.js +71 -0
- package/dist/vendor/engine/runtime/chord/context/index.d.ts +23 -0
- package/dist/vendor/engine/runtime/chord/context/index.js +96 -0
- package/dist/vendor/engine/runtime/chord/delta/index.d.ts +118 -0
- package/dist/vendor/engine/runtime/chord/delta/index.js +1903 -0
- package/dist/vendor/engine/runtime/chord/facets/host.d.ts +11 -0
- package/dist/vendor/engine/runtime/chord/facets/host.js +762 -0
- package/dist/vendor/engine/runtime/chord/facets/loader.d.ts +2 -0
- package/dist/vendor/engine/runtime/chord/facets/loader.js +4 -0
- package/dist/vendor/engine/runtime/chord/index.d.ts +10 -0
- package/dist/vendor/engine/runtime/chord/index.js +9 -0
- package/dist/vendor/engine/runtime/chord/json.d.ts +3 -0
- package/dist/vendor/engine/runtime/chord/json.js +56 -0
- package/dist/vendor/engine/runtime/chord/services/consumer.d.ts +10 -0
- package/dist/vendor/engine/runtime/chord/services/consumer.js +536 -0
- package/dist/vendor/engine/runtime/chord/services/errors.d.ts +7 -0
- package/dist/vendor/engine/runtime/chord/services/errors.js +21 -0
- package/dist/vendor/engine/runtime/chord/services/handle.d.ts +14 -0
- package/dist/vendor/engine/runtime/chord/services/handle.js +100 -0
- package/dist/vendor/engine/runtime/chord/services/instances.d.ts +24 -0
- package/dist/vendor/engine/runtime/chord/services/instances.js +136 -0
- package/dist/vendor/engine/runtime/chord/services/loopback.d.ts +4 -0
- package/dist/vendor/engine/runtime/chord/services/loopback.js +14 -0
- package/dist/vendor/engine/runtime/chord/services/provider.d.ts +36 -0
- package/dist/vendor/engine/runtime/chord/services/provider.js +471 -0
- package/dist/vendor/engine/runtime/chord/services/state-codec.d.ts +14 -0
- package/dist/vendor/engine/runtime/chord/services/state-codec.js +114 -0
- package/dist/vendor/engine/runtime/chord/services/state-internals.d.ts +10 -0
- package/dist/vendor/engine/runtime/chord/services/state-internals.js +9 -0
- package/dist/vendor/engine/runtime/chord/services/state.d.ts +22 -0
- package/dist/vendor/engine/runtime/chord/services/state.js +123 -0
- package/dist/vendor/engine/runtime/chord/services/wire.d.ts +59 -0
- package/dist/vendor/engine/runtime/chord/services/wire.js +172 -0
- package/dist/vendor/engine/runtime/chord/types.d.ts +202 -0
- package/dist/vendor/engine/runtime/chord/types.js +1 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/args.d.ts +60 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/args.js +439 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/auth-check.d.ts +18 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/auth-check.js +49 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/auth-command.d.ts +23 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/auth-command.js +102 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/config-selector.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/config-selector.js +31 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/credential-print.d.ts +12 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/credential-print.js +75 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/file-processor.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/file-processor.js +70 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/initial-message.d.ts +17 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/initial-message.js +21 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/list-models.d.ts +8 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/list-models.js +97 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/project-trust.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/project-trust.js +47 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/session-picker.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/session-picker.js +35 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/startup-ui.d.ts +19 -0
- package/dist/vendor/engine/runtime/coding-agent/cli/startup-ui.js +184 -0
- package/dist/vendor/engine/runtime/coding-agent/config.d.ts +97 -0
- package/dist/vendor/engine/runtime/coding-agent/config.js +463 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session-runtime.d.ts +118 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session-runtime.js +316 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session-services.d.ts +85 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session-services.js +133 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session.d.ts +771 -0
- package/dist/vendor/engine/runtime/coding-agent/core/agent-session.js +2990 -0
- package/dist/vendor/engine/runtime/coding-agent/core/auth-guidance.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/core/auth-guidance.js +20 -0
- package/dist/vendor/engine/runtime/coding-agent/core/auth-storage.d.ts +71 -0
- package/dist/vendor/engine/runtime/coding-agent/core/auth-storage.js +425 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bash-executor.d.ts +31 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bash-executor.js +110 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bug-report-upload.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bug-report-upload.js +21 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bug-report.d.ts +175 -0
- package/dist/vendor/engine/runtime/coding-agent/core/bug-report.js +291 -0
- package/dist/vendor/engine/runtime/coding-agent/core/cache-stats.d.ts +48 -0
- package/dist/vendor/engine/runtime/coding-agent/core/cache-stats.js +111 -0
- package/dist/vendor/engine/runtime/coding-agent/core/cache-warmer.d.ts +102 -0
- package/dist/vendor/engine/runtime/coding-agent/core/cache-warmer.js +355 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/branch-summarization.d.ts +97 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/branch-summarization.js +250 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/compaction.d.ts +142 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/compaction.js +666 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/index.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/index.js +6 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/utils.d.ts +37 -0
- package/dist/vendor/engine/runtime/coding-agent/core/compaction/utils.js +141 -0
- package/dist/vendor/engine/runtime/coding-agent/core/crash-log.d.ts +26 -0
- package/dist/vendor/engine/runtime/coding-agent/core/crash-log.js +138 -0
- package/dist/vendor/engine/runtime/coding-agent/core/defaults.d.ts +3 -0
- package/dist/vendor/engine/runtime/coding-agent/core/defaults.js +10 -0
- package/dist/vendor/engine/runtime/coding-agent/core/diagnostics.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/core/diagnostics.js +1 -0
- package/dist/vendor/engine/runtime/coding-agent/core/event-bus.d.ts +8 -0
- package/dist/vendor/engine/runtime/coding-agent/core/event-bus.js +24 -0
- package/dist/vendor/engine/runtime/coding-agent/core/exec.d.ts +28 -0
- package/dist/vendor/engine/runtime/coding-agent/core/exec.js +74 -0
- package/dist/vendor/engine/runtime/coding-agent/core/experimental.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/core/experimental.js +3 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/ansi-to-html.d.ts +21 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/ansi-to-html.js +248 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/index.d.ts +36 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/index.js +225 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/template.css +1066 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/template.html +55 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/template.js +1864 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/tool-renderer.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/tool-renderer.js +107 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/vendor/highlight.min.js +1213 -0
- package/dist/vendor/engine/runtime/coding-agent/core/export-html/vendor/marked.min.js +78 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/index.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/index.js +8 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/jiti-loader.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/jiti-loader.js +3 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/jiti-static-loader.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/jiti-static-loader.js +3 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/loader.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/loader.js +633 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/runner.d.ts +180 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/runner.js +1028 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/types.d.ts +1362 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/types.js +47 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/virtual-modules.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/virtual-modules.js +37 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/wrapper.d.ts +19 -0
- package/dist/vendor/engine/runtime/coding-agent/core/extensions/wrapper.js +21 -0
- package/dist/vendor/engine/runtime/coding-agent/core/footer-data-provider.d.ts +63 -0
- package/dist/vendor/engine/runtime/coding-agent/core/footer-data-provider.js +337 -0
- package/dist/vendor/engine/runtime/coding-agent/core/http-dispatcher.d.ts +21 -0
- package/dist/vendor/engine/runtime/coding-agent/core/http-dispatcher.js +97 -0
- package/dist/vendor/engine/runtime/coding-agent/core/keybindings.d.ts +427 -0
- package/dist/vendor/engine/runtime/coding-agent/core/keybindings.js +320 -0
- package/dist/vendor/engine/runtime/coding-agent/core/messages.d.ts +76 -0
- package/dist/vendor/engine/runtime/coding-agent/core/messages.js +123 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-config.d.ts +723 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-config.js +281 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-registry.d.ts +48 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-registry.js +114 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-resolver.d.ts +123 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-resolver.js +589 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-runtime.d.ts +100 -0
- package/dist/vendor/engine/runtime/coding-agent/core/model-runtime.js +603 -0
- package/dist/vendor/engine/runtime/coding-agent/core/models-store.d.ts +21 -0
- package/dist/vendor/engine/runtime/coding-agent/core/models-store.js +114 -0
- package/dist/vendor/engine/runtime/coding-agent/core/output-guard.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/core/output-guard.js +88 -0
- package/dist/vendor/engine/runtime/coding-agent/core/package-manager.d.ts +212 -0
- package/dist/vendor/engine/runtime/coding-agent/core/package-manager.js +2176 -0
- package/dist/vendor/engine/runtime/coding-agent/core/pi-manifest.d.ts +7 -0
- package/dist/vendor/engine/runtime/coding-agent/core/pi-manifest.js +25 -0
- package/dist/vendor/engine/runtime/coding-agent/core/project-trust.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/core/project-trust.js +58 -0
- package/dist/vendor/engine/runtime/coding-agent/core/prompt-templates.d.ts +53 -0
- package/dist/vendor/engine/runtime/coding-agent/core/prompt-templates.js +235 -0
- package/dist/vendor/engine/runtime/coding-agent/core/provider-attribution.d.ts +3 -0
- package/dist/vendor/engine/runtime/coding-agent/core/provider-attribution.js +71 -0
- package/dist/vendor/engine/runtime/coding-agent/core/provider-composer.d.ts +59 -0
- package/dist/vendor/engine/runtime/coding-agent/core/provider-composer.js +422 -0
- package/dist/vendor/engine/runtime/coding-agent/core/radius.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/core/radius.js +7 -0
- package/dist/vendor/engine/runtime/coding-agent/core/remote-catalog-provider.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/core/remote-catalog-provider.js +121 -0
- package/dist/vendor/engine/runtime/coding-agent/core/resolve-config-value.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/core/resolve-config-value.js +246 -0
- package/dist/vendor/engine/runtime/coding-agent/core/resource-loader.d.ts +220 -0
- package/dist/vendor/engine/runtime/coding-agent/core/resource-loader.js +874 -0
- package/dist/vendor/engine/runtime/coding-agent/core/runtime-credentials.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/core/runtime-credentials.js +38 -0
- package/dist/vendor/engine/runtime/coding-agent/core/sdk.d.ts +107 -0
- package/dist/vendor/engine/runtime/coding-agent/core/sdk.js +296 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-cwd.d.ts +18 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-cwd.js +37 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-export.d.ts +7 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-export.js +32 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-manager.d.ts +379 -0
- package/dist/vendor/engine/runtime/coding-agent/core/session-manager.js +1432 -0
- package/dist/vendor/engine/runtime/coding-agent/core/settings-diagnostics.d.ts +8 -0
- package/dist/vendor/engine/runtime/coding-agent/core/settings-diagnostics.js +20 -0
- package/dist/vendor/engine/runtime/coding-agent/core/settings-manager.d.ts +346 -0
- package/dist/vendor/engine/runtime/coding-agent/core/settings-manager.js +1032 -0
- package/dist/vendor/engine/runtime/coding-agent/core/skills.d.ts +59 -0
- package/dist/vendor/engine/runtime/coding-agent/core/skills.js +406 -0
- package/dist/vendor/engine/runtime/coding-agent/core/slash-commands.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/core/slash-commands.js +27 -0
- package/dist/vendor/engine/runtime/coding-agent/core/source-info.d.ts +17 -0
- package/dist/vendor/engine/runtime/coding-agent/core/source-info.js +18 -0
- package/dist/vendor/engine/runtime/coding-agent/core/system-prompt.d.ts +70 -0
- package/dist/vendor/engine/runtime/coding-agent/core/system-prompt.js +146 -0
- package/dist/vendor/engine/runtime/coding-agent/core/telemetry.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/core/telemetry.js +8 -0
- package/dist/vendor/engine/runtime/coding-agent/core/timings.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/timings.js +40 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/bash.d.ts +89 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/bash.js +303 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/edit-diff.d.ts +100 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/edit-diff.js +420 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/edit.d.ts +43 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/edit.js +146 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/file-mutation-queue.d.ts +5 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/file-mutation-queue.js +51 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/find.d.ts +41 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/find.js +250 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/grep.d.ts +40 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/grep.js +251 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/index.d.ts +42 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/index.js +128 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/ls.d.ts +40 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/ls.js +125 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/output-accumulator.d.ts +54 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/output-accumulator.js +189 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/path-utils.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/path-utils.js +98 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/powershell.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/powershell.js +38 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/read.d.ts +41 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/read.js +168 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/render-utils.d.ts +23 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/render-utils.js +64 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/bash.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/bash.js +137 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/edit.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/edit.js +166 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/find.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/find.js +63 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/grep.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/grep.js +68 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/index.d.ts +27 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/index.js +46 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/ls.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/ls.js +57 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/read.d.ts +10 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/read.js +128 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/write.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/renderers/write.js +152 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/tool-definition-wrapper.d.ts +13 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/tool-definition-wrapper.js +35 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/truncate.d.ts +69 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/truncate.js +214 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/write.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/core/tools/write.js +60 -0
- package/dist/vendor/engine/runtime/coding-agent/core/trust-manager.d.ts +35 -0
- package/dist/vendor/engine/runtime/coding-agent/core/trust-manager.js +202 -0
- package/dist/vendor/engine/runtime/coding-agent/core/usage-totals.d.ts +18 -0
- package/dist/vendor/engine/runtime/coding-agent/core/usage-totals.js +55 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/index.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/index.js +2 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/client.d.ts +68 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/client.js +312 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/huggingface.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/huggingface.js +140 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/index.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/index.js +218 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/provider.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/provider.js +160 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/ui.d.ts +41 -0
- package/dist/vendor/engine/runtime/coding-agent/extensions/llama/ui.js +415 -0
- package/dist/vendor/engine/runtime/coding-agent/index.d.ts +36 -0
- package/dist/vendor/engine/runtime/coding-agent/index.js +47 -0
- package/dist/vendor/engine/runtime/coding-agent/main.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/main.js +808 -0
- package/dist/vendor/engine/runtime/coding-agent/migrations.d.ts +32 -0
- package/dist/vendor/engine/runtime/coding-agent/migrations.js +281 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/index.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/index.js +7 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/bug-report.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/bug-report.js +209 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/chat-viewport.d.ts +19 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/chat-viewport.js +27 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/armin.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/armin.js +332 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/assistant-message.d.ts +25 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/assistant-message.js +157 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/bash-execution.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/bash-execution.js +174 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/bordered-loader.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/bordered-loader.js +53 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/branch-summary-message.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/branch-summary-message.js +50 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/compaction-summary-message.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/compaction-summary-message.js +51 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/config-selector.d.ts +101 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/config-selector.js +760 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/countdown-timer.d.ts +13 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/countdown-timer.js +32 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-editor.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-editor.js +114 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-entry.d.ts +18 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-entry.js +51 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-message.d.ts +21 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/custom-message.js +86 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/daxnuts.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/daxnuts.js +139 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/diff.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/diff.js +132 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/dynamic-border.d.ts +14 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/dynamic-border.js +20 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/earendil-announcement.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/earendil-announcement.js +39 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-editor.d.ts +23 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-editor.js +102 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-input.d.ts +24 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-input.js +66 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-selector.d.ts +26 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/extension-selector.js +86 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/first-time-setup.d.ts +24 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/first-time-setup.js +102 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/footer.d.ts +31 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/footer.js +224 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/index.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/index.js +34 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/keybinding-hints.d.ts +12 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/keybinding-hints.js +35 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/login-dialog.d.ts +51 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/login-dialog.js +187 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/markdown-transform.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/markdown-transform.js +18 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/mermaid.d.ts +10 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/mermaid.js +74 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/model-selector.d.ts +59 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/model-selector.js +360 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/oauth-selector.d.ts +32 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/oauth-selector.js +162 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/scoped-models-selector.d.ts +45 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/scoped-models-selector.js +325 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/session-selector-search.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/session-selector-search.js +154 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/session-selector.d.ts +94 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/session-selector.js +892 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/settings-selector.d.ts +93 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/settings-selector.js +719 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/settings-submenu.d.ts +71 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/settings-submenu.js +164 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/show-images-selector.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/show-images-selector.js +38 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/skill-invocation-message.d.ts +16 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/skill-invocation-message.js +53 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/status-indicator.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/status-indicator.js +66 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/theme-selector.d.ts +10 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/theme-selector.js +49 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/thinking-selector.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/thinking-selector.js +108 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/tool-execution.d.ts +79 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/tool-execution.js +336 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/tree-selector.d.ts +93 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/tree-selector.js +1246 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/trust-selector.d.ts +22 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/trust-selector.js +90 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/user-message-selector.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/user-message-selector.js +113 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/user-message.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/user-message.js +48 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/visual-truncate.d.ts +23 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/components/visual-truncate.js +32 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/external-editor.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/external-editor.js +37 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/interactive-mode.d.ts +467 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/interactive-mode.js +5720 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/model-catalog-refresh.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/model-catalog-refresh.js +33 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/model-search.d.ts +11 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/model-search.js +14 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/session-share.d.ts +17 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/session-share.js +187 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/dark.json +91 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/light.json +90 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme-controller.d.ts +40 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme-controller.js +129 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme-json.d.ts +83 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme-json.js +129 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme-schema.json +356 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme.d.ts +130 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/theme/theme.js +990 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/tui-renderer.d.ts +20 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/interactive/tui-renderer.js +65 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/json-event.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/json-event.js +28 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/print-mode.d.ts +27 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/print-mode.js +141 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/jsonl.d.ts +16 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/jsonl.js +48 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-client.d.ts +253 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-client.js +494 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-mode.d.ts +19 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-mode.js +656 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-types.d.ts +468 -0
- package/dist/vendor/engine/runtime/coding-agent/modes/rpc/rpc-types.js +7 -0
- package/dist/vendor/engine/runtime/coding-agent/package-manager-cli.d.ts +8 -0
- package/dist/vendor/engine/runtime/coding-agent/package-manager-cli.js +960 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/abort.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/abort.js +47 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/ansi.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/ansi.js +51 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/changelog.d.ts +21 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/changelog.js +164 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/child-process.d.ts +17 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/child-process.js +105 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard-command.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard-command.js +44 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard-image.d.ts +10 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard-image.js +216 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard.d.ts +3 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/clipboard.js +150 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/exif-orientation.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/exif-orientation.js +156 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/frontmatter.d.ts +7 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/frontmatter.js +26 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/fs-watch.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/fs-watch.js +24 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/git.d.ts +25 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/git.js +194 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/html.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/html.js +39 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-convert.d.ts +9 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-convert.js +44 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-process.d.ts +17 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-process.js +82 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize-core.d.ts +29 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize-core.js +123 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize-worker.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize-worker.js +30 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize.d.ts +15 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/image-resize.js +96 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/json.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/json.js +6 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/management-http.d.ts +24 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/management-http.js +53 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/mime.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/mime.js +109 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/open-browser.d.ts +8 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/open-browser.js +21 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/paths.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/paths.js +113 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/photon.d.ts +20 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/photon.js +120 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/pi-user-agent.d.ts +1 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/pi-user-agent.js +4 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/shell.d.ts +33 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/shell.js +215 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/sleep.d.ts +4 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/sleep.js +16 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/syntax-highlight.d.ts +12 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/syntax-highlight.js +176 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/text.d.ts +7 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/text.js +8 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/tool-result-images.d.ts +20 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/tool-result-images.js +47 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/tools-manager.d.ts +12 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/tools-manager.js +308 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/version-check.d.ts +18 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/version-check.js +78 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/windows-self-update.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/windows-self-update.js +76 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/wsl.d.ts +2 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/wsl.js +14 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/zip.d.ts +6 -0
- package/dist/vendor/engine/runtime/coding-agent/utils/zip.js +59 -0
- package/dist/vendor/engine/runtime/package.json +9 -0
- package/dist/vendor/engine/runtime/telemetry/index.d.ts +193 -0
- package/dist/vendor/engine/runtime/telemetry/index.js +17 -0
- package/dist/vendor/engine/runtime/telemetry/memory.d.ts +25 -0
- package/dist/vendor/engine/runtime/telemetry/memory.js +153 -0
- package/dist/vendor/engine/runtime/telemetry/noop.d.ts +3 -0
- package/dist/vendor/engine/runtime/telemetry/noop.js +17 -0
- package/dist/vendor/engine/runtime/tui/alt-screen-search.d.ts +45 -0
- package/dist/vendor/engine/runtime/tui/alt-screen-search.js +281 -0
- package/dist/vendor/engine/runtime/tui/autocomplete.d.ts +56 -0
- package/dist/vendor/engine/runtime/tui/autocomplete.js +671 -0
- package/dist/vendor/engine/runtime/tui/components/alt-screen-flash.d.ts +12 -0
- package/dist/vendor/engine/runtime/tui/components/alt-screen-flash.js +36 -0
- package/dist/vendor/engine/runtime/tui/components/box.d.ts +23 -0
- package/dist/vendor/engine/runtime/tui/components/box.js +132 -0
- package/dist/vendor/engine/runtime/tui/components/cancellable-loader.d.ts +21 -0
- package/dist/vendor/engine/runtime/tui/components/cancellable-loader.js +34 -0
- package/dist/vendor/engine/runtime/tui/components/editor.d.ts +259 -0
- package/dist/vendor/engine/runtime/tui/components/editor.js +2041 -0
- package/dist/vendor/engine/runtime/tui/components/h-stack.d.ts +6 -0
- package/dist/vendor/engine/runtime/tui/components/h-stack.js +42 -0
- package/dist/vendor/engine/runtime/tui/components/image.d.ts +27 -0
- package/dist/vendor/engine/runtime/tui/components/image.js +89 -0
- package/dist/vendor/engine/runtime/tui/components/input.d.ts +47 -0
- package/dist/vendor/engine/runtime/tui/components/input.js +416 -0
- package/dist/vendor/engine/runtime/tui/components/loader.d.ts +32 -0
- package/dist/vendor/engine/runtime/tui/components/loader.js +75 -0
- package/dist/vendor/engine/runtime/tui/components/markdown.d.ts +102 -0
- package/dist/vendor/engine/runtime/tui/components/markdown.js +810 -0
- package/dist/vendor/engine/runtime/tui/components/mouse-region.d.ts +11 -0
- package/dist/vendor/engine/runtime/tui/components/mouse-region.js +20 -0
- package/dist/vendor/engine/runtime/tui/components/scroll-view.d.ts +58 -0
- package/dist/vendor/engine/runtime/tui/components/scroll-view.js +194 -0
- package/dist/vendor/engine/runtime/tui/components/select-list.d.ts +52 -0
- package/dist/vendor/engine/runtime/tui/components/select-list.js +205 -0
- package/dist/vendor/engine/runtime/tui/components/settings-list.d.ts +59 -0
- package/dist/vendor/engine/runtime/tui/components/settings-list.js +251 -0
- package/dist/vendor/engine/runtime/tui/components/spacer.d.ts +11 -0
- package/dist/vendor/engine/runtime/tui/components/spacer.js +22 -0
- package/dist/vendor/engine/runtime/tui/components/stack.d.ts +31 -0
- package/dist/vendor/engine/runtime/tui/components/stack.js +110 -0
- package/dist/vendor/engine/runtime/tui/components/text.d.ts +18 -0
- package/dist/vendor/engine/runtime/tui/components/text.js +89 -0
- package/dist/vendor/engine/runtime/tui/components/truncated-text.d.ts +12 -0
- package/dist/vendor/engine/runtime/tui/components/truncated-text.js +50 -0
- package/dist/vendor/engine/runtime/tui/components/v-stack.d.ts +7 -0
- package/dist/vendor/engine/runtime/tui/components/v-stack.js +25 -0
- package/dist/vendor/engine/runtime/tui/editor-component.d.ts +38 -0
- package/dist/vendor/engine/runtime/tui/editor-component.js +1 -0
- package/dist/vendor/engine/runtime/tui/fuzzy.d.ts +15 -0
- package/dist/vendor/engine/runtime/tui/fuzzy.js +110 -0
- package/dist/vendor/engine/runtime/tui/index.d.ts +32 -0
- package/dist/vendor/engine/runtime/tui/index.js +44 -0
- package/dist/vendor/engine/runtime/tui/keybindings.d.ts +272 -0
- package/dist/vendor/engine/runtime/tui/keybindings.js +232 -0
- package/dist/vendor/engine/runtime/tui/keys.d.ts +183 -0
- package/dist/vendor/engine/runtime/tui/keys.js +1173 -0
- package/dist/vendor/engine/runtime/tui/kill-ring.d.ts +27 -0
- package/dist/vendor/engine/runtime/tui/kill-ring.js +43 -0
- package/dist/vendor/engine/runtime/tui/latex.d.ts +9 -0
- package/dist/vendor/engine/runtime/tui/latex.js +1377 -0
- package/dist/vendor/engine/runtime/tui/layout-node.d.ts +39 -0
- package/dist/vendor/engine/runtime/tui/layout-node.js +5 -0
- package/dist/vendor/engine/runtime/tui/layout.d.ts +41 -0
- package/dist/vendor/engine/runtime/tui/layout.js +343 -0
- package/dist/vendor/engine/runtime/tui/native-modifiers.d.ts +3 -0
- package/dist/vendor/engine/runtime/tui/native-modifiers.js +12 -0
- package/dist/vendor/engine/runtime/tui/native-module-path.d.ts +6 -0
- package/dist/vendor/engine/runtime/tui/native-module-path.js +18 -0
- package/dist/vendor/engine/runtime/tui/native-platform.d.ts +17 -0
- package/dist/vendor/engine/runtime/tui/native-platform.js +41 -0
- package/dist/vendor/engine/runtime/tui/stdin-buffer.d.ts +55 -0
- package/dist/vendor/engine/runtime/tui/stdin-buffer.js +365 -0
- package/dist/vendor/engine/runtime/tui/terminal-colors.d.ts +9 -0
- package/dist/vendor/engine/runtime/tui/terminal-colors.js +58 -0
- package/dist/vendor/engine/runtime/tui/terminal-image.d.ts +117 -0
- package/dist/vendor/engine/runtime/tui/terminal-image.js +549 -0
- package/dist/vendor/engine/runtime/tui/terminal.d.ts +122 -0
- package/dist/vendor/engine/runtime/tui/terminal.js +441 -0
- package/dist/vendor/engine/runtime/tui/tui-alt-screen.d.ts +159 -0
- package/dist/vendor/engine/runtime/tui/tui-alt-screen.js +1507 -0
- package/dist/vendor/engine/runtime/tui/tui-main-screen.d.ts +38 -0
- package/dist/vendor/engine/runtime/tui/tui-main-screen.js +593 -0
- package/dist/vendor/engine/runtime/tui/tui.d.ts +385 -0
- package/dist/vendor/engine/runtime/tui/tui.js +1054 -0
- package/dist/vendor/engine/runtime/tui/undo-stack.d.ts +16 -0
- package/dist/vendor/engine/runtime/tui/undo-stack.js +24 -0
- package/dist/vendor/engine/runtime/tui/utils.d.ts +100 -0
- package/dist/vendor/engine/runtime/tui/utils.js +1203 -0
- package/dist/vendor/engine/runtime/tui/word-navigation.d.ts +24 -0
- package/dist/vendor/engine/runtime/tui/word-navigation.js +95 -0
- package/dist/vendor/zcode/LICENSE.upstream +202 -0
- package/dist/vendor/zcode/provenance.json +141 -0
- package/dist/vendor/zcode/source/agent/turn-machine.d.ts +56 -0
- package/dist/vendor/zcode/source/agent/turn-machine.js +214 -0
- package/dist/vendor/zcode/source/agent/turn-state.d.ts +118 -0
- package/dist/vendor/zcode/source/agent/turn-state.js +93 -0
- package/dist/vendor/zcode/source/compact/manual.d.ts +11 -0
- package/dist/vendor/zcode/source/compact/manual.js +38 -0
- package/dist/vendor/zcode/source/compact/microcompact.d.ts +47 -0
- package/dist/vendor/zcode/source/compact/microcompact.js +194 -0
- package/dist/vendor/zcode/source/compact/policy.d.ts +59 -0
- package/dist/vendor/zcode/source/compact/policy.js +89 -0
- package/dist/vendor/zcode/source/compact/selection.d.ts +6 -0
- package/dist/vendor/zcode/source/compact/selection.js +12 -0
- package/dist/vendor/zcode/source/contracts.d.ts +52 -0
- package/dist/vendor/zcode/source/contracts.js +9 -0
- package/dist/vendor/zcode/source/runtime/goal-completion-verification.d.ts +17 -0
- package/dist/vendor/zcode/source/runtime/goal-completion-verification.js +138 -0
- package/dist/vendor/zcode/source/runtime/turn-loop.d.ts +3 -0
- package/dist/vendor/zcode/source/runtime/turn-loop.js +21 -0
- package/dist/vendor/zcode/source/runtime/turn-model-step.d.ts +54 -0
- package/dist/vendor/zcode/source/runtime/turn-model-step.js +97 -0
- package/dist/vendor/zcode/source/runtime/turn-output-token-continuation.d.ts +8 -0
- package/dist/vendor/zcode/source/runtime/turn-output-token-continuation.js +15 -0
- package/dist/vendor/zcode/source/runtime/turn-stop.d.ts +6 -0
- package/dist/vendor/zcode/source/runtime/turn-stop.js +18 -0
- package/dist/vendor/zcode/source/tool/executor/validation.d.ts +6 -0
- package/dist/vendor/zcode/source/tool/executor/validation.js +76 -0
- package/dist/vendor/zcode/source/tool/input-normalization.d.ts +16 -0
- package/dist/vendor/zcode/source/tool/input-normalization.js +62 -0
- package/dist/vendor/zcode/source/tool/input-validation-model-content.d.ts +4 -0
- package/dist/vendor/zcode/source/tool/input-validation-model-content.js +263 -0
- package/dist/vendor/zcode/source/tool/json-schema.d.ts +9 -0
- package/dist/vendor/zcode/source/tool/json-schema.js +230 -0
- package/dist/vendor/zcode/source/tool/scheduler.d.ts +43 -0
- package/dist/vendor/zcode/source/tool/scheduler.js +167 -0
- package/dist/vendor/zcode/source/tool/tool-input-validation-issues.d.ts +76 -0
- package/dist/vendor/zcode/source/tool/tool-input-validation-issues.js +148 -0
- package/dist/vendor/zcode/source/tool/validation-contracts.d.ts +27 -0
- package/dist/vendor/zcode/source/tool/validation-contracts.js +8 -0
- package/docs/README.md +36 -0
- package/docs/agents/README.md +62 -0
- package/docs/agents/install-for-agents.md +64 -0
- package/docs/agents/mcp-server.md +187 -0
- package/docs/agents/subagent-mode.md +146 -0
- package/docs/concepts/README.md +47 -0
- package/docs/concepts/jev-actionable-routing.md +113 -0
- package/docs/concepts/jev-decision-thresholds.md +412 -0
- package/docs/concepts/jev-efficiency.md +216 -0
- package/docs/concepts/jev-eval-2026-11-01.md +78 -0
- package/docs/concepts/limits.md +43 -0
- package/docs/concepts/memory.md +30 -0
- package/docs/concepts/security.md +40 -0
- package/docs/concepts/workspace-instructions.md +28 -0
- package/docs/getting-started/README.md +74 -0
- package/docs/getting-started/accounts.md +67 -0
- package/docs/getting-started/configure-providers.md +103 -0
- package/docs/guides/README.md +12 -0
- package/docs/guides/browser.md +15 -0
- package/docs/guides/desktop-app.md +325 -0
- package/docs/guides/extensions.md +100 -0
- package/docs/guides/graph-builder.md +93 -0
- package/docs/guides/headless.md +45 -0
- package/docs/guides/tui.md +75 -0
- package/docs/guides/update.md +47 -0
- package/docs/guides/windows-code-signing.md +316 -0
- package/docs/llms.txt +45 -0
- package/docs/reference/README.md +7 -0
- package/docs/reference/cli.md +70 -0
- package/docs/reference/config.md +85 -0
- package/docs/reference/slash-commands.md +54 -0
- package/docs/superpowers/plans/2026-11-01-claude-console-sign-in.md +111 -0
- package/docs/superpowers/plans/2026-11-01-jev-node-opt-in.md +910 -0
- package/docs/superpowers/plans/2026-11-02-workflow-pane.md +398 -0
- package/docs/superpowers/specs/2026-10-31-work-line-summary-design.md +50 -0
- package/docs/superpowers/specs/2026-11-01-claude-console-sign-in-design.md +176 -0
- package/docs/superpowers/specs/2026-11-01-jev-node-opt-in-design.md +164 -0
- package/docs/superpowers/specs/2026-11-01-pr-section-design.md +104 -0
- package/docs/superpowers/specs/2026-11-02-workflow-pane-design.md +130 -0
- package/licenses/GEIST-OFL-1.1.txt +92 -0
- package/licenses/ZCODE-APACHE-2.0.txt +202 -0
- package/package.json +118 -6
- package/scripts/jev-efficiency-eval.mjs +187 -0
- package/scripts/jev-efficiency-live.mjs +193 -0
- package/scripts/zcode-engine-replay.mjs +223 -0
- package/tests/agent-centric-mcp-test-plan.md +208 -0
- package/tests/analytics-settings-test-plan.md +165 -0
- package/tests/browser-cli-smoke.mjs +276 -0
- package/tests/browser-test-plan.md +280 -0
- package/tests/chat-side-panel-test-plan.md +309 -0
- package/tests/decision-engine-test-plan.md +163 -0
- package/tests/default-active-jev-test-plan.md +85 -0
- package/tests/graphiti-test-plan.md +359 -0
- package/tests/harness-extensions-test-plan.md +110 -0
- package/tests/jev-all-decisions-test-plan.md +156 -0
- package/tests/jev-efficiency/criteria.json +158 -0
- package/tests/jev-efficiency/workloads.mjs +242 -0
- package/tests/jev-efficiency-test-plan.md +198 -0
- package/tests/mock-graphiti.mjs +106 -0
- package/tests/permissions-sandbox-probe.mjs +74 -0
- package/tests/permissions-test-plan.md +190 -0
- package/tests/product-telemetry-test-plan.md +536 -0
- package/tests/thinking-stream-preview-test-plan.md +136 -0
- package/tests/zcode-react-engine-test-plan.md +396 -0
|
@@ -0,0 +1,1160 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { createInterface } from 'node:readline';
|
|
3
|
+
import { loadConfig } from '../config.js';
|
|
4
|
+
import { reconcileInterruptedRuns } from '../run-records.js';
|
|
5
|
+
import { configuredSurface, reportInterruptedRuns } from '../telemetry/surface.js';
|
|
6
|
+
import { authorizedRoots } from './roots.js';
|
|
7
|
+
/**
|
|
8
|
+
* The engine relay: the host side of full-owner remote access.
|
|
9
|
+
*
|
|
10
|
+
* A paired window is a full client of this machine's engine surface, so someone has to stand between
|
|
11
|
+
* the pairing listener and the engine pool the product describes (ADR 0017): a browsing engine that
|
|
12
|
+
* answers sessions, run records, workspace reads and terminals, plus one child engine per concurrent
|
|
13
|
+
* task. That coordinator is this module, and it lives in the process that owns the listener — the
|
|
14
|
+
* desktop's primary engine, or a standalone `andorra remote serve`. It spawns its own children with
|
|
15
|
+
* the same `app-server --stdio` wire every other client speaks, so a headless host and a desktop host
|
|
16
|
+
* serve the identical surface.
|
|
17
|
+
*
|
|
18
|
+
* Nothing here decides authority: the endpoints in `server.ts` admit a request only for a full-grant
|
|
19
|
+
* device over TLS, and this module assumes that check has run. Revocation is still enforced live — a
|
|
20
|
+
* poller re-reads the device table and cuts a revoked device's event stream and terminals, because a
|
|
21
|
+
* long-lived stream is exactly the resource a per-request authentication check cannot see.
|
|
22
|
+
*
|
|
23
|
+
* Client-lifetime resources are namespaced per connection: terminal ids are prefixed with the
|
|
24
|
+
* connection that opened them, their output is delivered only to that connection, and a closeAll from
|
|
25
|
+
* one connection sweeps only its own shells. Run ownership is host-wide (the runs belong to this
|
|
26
|
+
* machine), so run and prompt routing is by runId and engine id across all children.
|
|
27
|
+
*/
|
|
28
|
+
/** The engine a paired client addresses for everything that is not one task's run. */
|
|
29
|
+
export const REMOTE_PRIMARY_ENGINE = 'remote-primary';
|
|
30
|
+
/**
|
|
31
|
+
* The capability that says this relay understands a capability requirement.
|
|
32
|
+
*
|
|
33
|
+
* It lives here, with the implementation that honours it, and not in the app-server's shared
|
|
34
|
+
* capability list: the server loads that list lazily, so a build whose files were replaced under
|
|
35
|
+
* a running relay would advertise a capability the relay in memory does not have — and a client
|
|
36
|
+
* that trusted it would send a requirement the old relay forwards to a child that ignores it.
|
|
37
|
+
*/
|
|
38
|
+
export const RELAY_CAPABILITY_REQUIREMENT = 'remote.engine.relay.capability';
|
|
39
|
+
const TASK_PREFIX = 'remote-task-';
|
|
40
|
+
/** How many task engines the relay will run at once, besides the browsing engine. */
|
|
41
|
+
const MAX_RELAY_ENGINES = 9;
|
|
42
|
+
/** How many of a child's newest stderr lines are kept, for the message when it dies. */
|
|
43
|
+
const CHILD_STDERR_LINES = 50;
|
|
44
|
+
/** A child that never completes its handshake is not an engine; the start fails after this. */
|
|
45
|
+
const CHILD_READY_TIMEOUT_MS = 60_000;
|
|
46
|
+
/** How long a graceful child stop may take before the kill backstop fires. */
|
|
47
|
+
const CHILD_STOP_GRACE_MS = 20_000;
|
|
48
|
+
/**
|
|
49
|
+
* The wall-clock a relayed request gives the child, over what the viewer asked for.
|
|
50
|
+
*
|
|
51
|
+
* The viewer's own client times out at exactly the deadline it sent; this slack is what keeps the
|
|
52
|
+
* relay from racing that timer, so the failure the desktop reports is its own timeout with its own
|
|
53
|
+
* pending-entry cleanup, not a second, earlier one from under the link.
|
|
54
|
+
*/
|
|
55
|
+
const CHILD_DEADLINE_SLACK_MS = 5_000;
|
|
56
|
+
const MAX_CHILD_DEADLINE_MS = 300_000;
|
|
57
|
+
/**
|
|
58
|
+
* The ceiling for methods whose own work is allowed to be slow. The browser installer is bounded by
|
|
59
|
+
* its own twenty-minute timer and the viewer grants it 21 minutes; the short ceiling would cut that
|
|
60
|
+
* budget off under the link and fail a call the peer was still completing.
|
|
61
|
+
*/
|
|
62
|
+
const LONG_DEADLINE_METHODS = new Set(['browser.runtime.install']);
|
|
63
|
+
const MAX_LONG_CHILD_DEADLINE_MS = 1_260_000;
|
|
64
|
+
/** How often a live connection's device is re-checked against the configuration. */
|
|
65
|
+
const REVOCATION_POLL_MS = 5_000;
|
|
66
|
+
/**
|
|
67
|
+
* How long a connection may exist with no event stream before the relay retires it.
|
|
68
|
+
*
|
|
69
|
+
* `remote.engine.connect` answers before its SSE GET lands, and a viewer can unload in between: a
|
|
70
|
+
* connection created only by requests would otherwise keep its terminals and never be swept, since
|
|
71
|
+
* the response-close callback that ends it exists only on the stream. The same TTL now also bounds
|
|
72
|
+
* a retryable stream loss: the shells survive the seconds a reconnect takes, and only an abandoned
|
|
73
|
+
* connection reaches the poller's sweep.
|
|
74
|
+
*/
|
|
75
|
+
const SINKLESS_CONNECTION_TTL_MS = 30_000;
|
|
76
|
+
/**
|
|
77
|
+
* How long a run's completion is kept for a reconnecting viewer.
|
|
78
|
+
*
|
|
79
|
+
* A run that finished while its viewer's stream was down is not active any more — replaying its
|
|
80
|
+
* start would show it working forever — so the completion itself is what the replacement stream
|
|
81
|
+
* receives, for as long as a viewer that saw the start could still be reconnecting.
|
|
82
|
+
*/
|
|
83
|
+
const FINISHED_RUN_TTL_MS = 5 * 60_000;
|
|
84
|
+
/** How many recent completions are kept, per the TTL above. */
|
|
85
|
+
const FINISHED_RUNS_REMEMBERED = 8;
|
|
86
|
+
/**
|
|
87
|
+
* What a relayed response may weigh. The viewer's transport caps at 2 MiB by default; the methods a
|
|
88
|
+
* local window displays in megabytes — a journal tail, a diff — get the larger bound the product
|
|
89
|
+
* contract asks for, and anything past its bound is an error the window can name.
|
|
90
|
+
*/
|
|
91
|
+
const MAX_RESPONSE_BYTES = 2 * 1024 * 1024;
|
|
92
|
+
const MAX_LARGE_RESPONSE_BYTES = 12 * 1024 * 1024;
|
|
93
|
+
const LARGE_RESPONSE_METHODS = new Set(['runs.get', 'workspace.diff', 'workspace.git', 'sessions.trajectory', 'browser.view.selection', 'attachments.read']);
|
|
94
|
+
/** Methods a paired client may ask the browsing engine (and only the browsing engine). */
|
|
95
|
+
const PRIMARY_METHODS = new Set([
|
|
96
|
+
'sessions.list', 'sessions.get', 'sessions.create', 'sessions.rename', 'sessions.setArchived', 'sessions.delete',
|
|
97
|
+
'sessions.trajectory',
|
|
98
|
+
'runs.list', 'runs.get', 'timers.list',
|
|
99
|
+
'workspace.tree', 'workspace.read', 'workspace.git', 'workspace.branches', 'workspace.checkout', 'workspace.diff',
|
|
100
|
+
'graphs.list', 'graphs.get', 'graphs.select',
|
|
101
|
+
// The attachment chips of a browsed session name files spooled on the machine that owns the
|
|
102
|
+
// session, so the preview asks that machine's engine for the bytes.
|
|
103
|
+
'attachments.read',
|
|
104
|
+
'config.get', 'projects.list', 'projects.add', 'projects.remove',
|
|
105
|
+
// Composer suggestions read the paired machine's installed skills; management stays local.
|
|
106
|
+
'extensions.list',
|
|
107
|
+
// The session browser panel lives on the machine that owns the session, so a
|
|
108
|
+
// paired window's pane asks that machine's browsing engine for both the
|
|
109
|
+
// runtime and the pages. Without these entries a full-grant link refuses
|
|
110
|
+
// every panel call as unknown-method.
|
|
111
|
+
'browser.runtime.status', 'browser.runtime.install',
|
|
112
|
+
'browser.view.status', 'browser.view.open', 'browser.view.navigate', 'browser.view.go', 'browser.view.activate',
|
|
113
|
+
'browser.view.closeTab', 'browser.view.stream', 'browser.view.input', 'browser.view.selection',
|
|
114
|
+
'browser.view.release', 'browser.view.cursor',
|
|
115
|
+
// The agent's panel tool on a task engine relays through the viewer: the
|
|
116
|
+
// operation runs on the browsing engine, and a run cancellation travels back
|
|
117
|
+
// so a stopped call cannot act on the shared browser afterwards.
|
|
118
|
+
'browser.panel.op', 'browser.panel.cancel',
|
|
119
|
+
]);
|
|
120
|
+
/** Methods that start a run, on an engine of the pool's choosing. */
|
|
121
|
+
const RUN_START_METHODS = new Set(['run.start', 'run.resume']);
|
|
122
|
+
/** Methods that answer for one run, addressed to the child that owns it. */
|
|
123
|
+
const RUN_TARGET_METHODS = new Set(['run.setModel', 'run.cancel', 'run.steer', 'run.approve', 'run.answer', 'browser.panel.result']);
|
|
124
|
+
/** Methods handled by the namespacing layer rather than forwarded verbatim. */
|
|
125
|
+
const TERMINAL_METHODS = new Set(['terminal.open', 'terminal.write', 'terminal.resize', 'terminal.close', 'terminal.closeAll']);
|
|
126
|
+
const ALLOWED_METHODS = new Set([...PRIMARY_METHODS, ...RUN_START_METHODS, ...RUN_TARGET_METHODS, ...TERMINAL_METHODS]);
|
|
127
|
+
/** A session-mutating call goes to the engine whose run owns the session's record. */
|
|
128
|
+
const SESSION_MUTATION_METHODS = new Set(['sessions.rename', 'sessions.setArchived', 'sessions.delete']);
|
|
129
|
+
/** Calls whose effect must land inside the caller's own deadline, not past it. */
|
|
130
|
+
const MUTATING_METHODS = new Set([
|
|
131
|
+
...RUN_START_METHODS, ...RUN_TARGET_METHODS, ...SESSION_MUTATION_METHODS,
|
|
132
|
+
'terminal.open', 'terminal.write', 'terminal.close', 'terminal.closeAll', 'workspace.checkout', 'projects.add', 'projects.remove',
|
|
133
|
+
// Panel calls act on the peer's browser immediately; an install outlives the
|
|
134
|
+
// relay's default child deadline, so it keeps the caller's own budget.
|
|
135
|
+
'browser.runtime.install', 'browser.view.open', 'browser.view.navigate', 'browser.view.go', 'browser.view.activate',
|
|
136
|
+
'browser.view.closeTab', 'browser.view.stream', 'browser.view.input',
|
|
137
|
+
'browser.panel.op', 'browser.panel.cancel',
|
|
138
|
+
]);
|
|
139
|
+
/** A child's failure, with the wire code it answered with — `engine-busy` decides pool selection. */
|
|
140
|
+
class ChildError extends Error {
|
|
141
|
+
code;
|
|
142
|
+
constructor(code, message) {
|
|
143
|
+
super(message);
|
|
144
|
+
this.code = code;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* The only refusal type the relay raises on its own. A code from the engine's vocabulary survives
|
|
149
|
+
* the trip (the desktop branches on `engine-busy`, `nothing-to-continue`); an unrecognized peer
|
|
150
|
+
* string is never rethrown as a code.
|
|
151
|
+
*/
|
|
152
|
+
class RelayRefusal extends Error {
|
|
153
|
+
code;
|
|
154
|
+
constructor(code, message) {
|
|
155
|
+
super(message);
|
|
156
|
+
this.code = code;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
const KNOWN_CODES = new Set(['invalid-request', 'unknown-method', 'invalid-params', 'busy', 'engine-busy', 'not-found',
|
|
160
|
+
'login-required', 'auth', 'storage', 'network', 'cancelled', 'internal', 'remote', 'nothing-to-continue']);
|
|
161
|
+
function relayError(error) {
|
|
162
|
+
if (error instanceof RelayRefusal || error instanceof ChildError) {
|
|
163
|
+
return { code: KNOWN_CODES.has(error.code) ? error.code : 'remote', message: error.message };
|
|
164
|
+
}
|
|
165
|
+
return { code: 'remote', message: error instanceof Error ? error.message : String(error) };
|
|
166
|
+
}
|
|
167
|
+
/** One spawned `app-server`, speaking the newline JSON wire. */
|
|
168
|
+
class ChildEngine {
|
|
169
|
+
id;
|
|
170
|
+
onEvent;
|
|
171
|
+
onExit;
|
|
172
|
+
child;
|
|
173
|
+
nextId = 1;
|
|
174
|
+
pending = new Map();
|
|
175
|
+
ready;
|
|
176
|
+
resolveReady;
|
|
177
|
+
rejectReady;
|
|
178
|
+
stopped = false;
|
|
179
|
+
/** Whether a run owns this child; learned from its own run lifecycle events. */
|
|
180
|
+
busy = false;
|
|
181
|
+
/** The capabilities the child advertised in its handshake. */
|
|
182
|
+
advertised = [];
|
|
183
|
+
/** The child's newest stderr lines: an engine that dies should say what it last said. */
|
|
184
|
+
stderrTail = [];
|
|
185
|
+
constructor(id, command, home, onEvent, onExit) {
|
|
186
|
+
this.id = id;
|
|
187
|
+
this.onEvent = onEvent;
|
|
188
|
+
this.onExit = onExit;
|
|
189
|
+
this.child = spawn(command[0], command.slice(1), {
|
|
190
|
+
windowsHide: true,
|
|
191
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
192
|
+
// The relayed child cannot see the window that drives it, so it is told which surface it is.
|
|
193
|
+
env: { ...process.env, ANDORRACODE_HOME: home, ANDORRA_SURFACE: 'remote' },
|
|
194
|
+
});
|
|
195
|
+
this.ready = new Promise((resolve, reject) => {
|
|
196
|
+
this.resolveReady = resolve;
|
|
197
|
+
this.rejectReady = reject;
|
|
198
|
+
setTimeout(() => reject(new Error(`Engine ${id} did not report ready`)), CHILD_READY_TIMEOUT_MS).unref?.();
|
|
199
|
+
});
|
|
200
|
+
this.child.on('error', error => this.fail(new Error(`Engine ${id} could not start: ${error.message}`)));
|
|
201
|
+
this.child.on('exit', () => {
|
|
202
|
+
const last = this.stderrTail[this.stderrTail.length - 1];
|
|
203
|
+
this.fail(new Error(`Engine ${id} exited.${last !== undefined ? ` Last output: ${last.slice(0, 300)}` : ''}`));
|
|
204
|
+
});
|
|
205
|
+
// A child's stderr must be drained even though nothing forwards it yet: an unread pipe fills,
|
|
206
|
+
// and a task that writes enough diagnostics would then block on its own logging and hang.
|
|
207
|
+
if (this.child.stderr) {
|
|
208
|
+
createInterface({ input: this.child.stderr }).on('line', line => {
|
|
209
|
+
if (!line.trim())
|
|
210
|
+
return;
|
|
211
|
+
this.stderrTail.push(line);
|
|
212
|
+
if (this.stderrTail.length > CHILD_STDERR_LINES)
|
|
213
|
+
this.stderrTail.shift();
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
const stdout = this.child.stdout;
|
|
217
|
+
const stdin = this.child.stdin;
|
|
218
|
+
if (!stdout || !stdin) {
|
|
219
|
+
this.fail(new Error(`Engine ${id} started without a usable pipe.`));
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
// A write that fails asynchronously — EPIPE after the child died between the liveness check and
|
|
223
|
+
// the write — is emitted as an 'error' event on stdin, not thrown; unhandled it would terminate
|
|
224
|
+
// the whole relay process instead of failing this engine.
|
|
225
|
+
stdin.on('error', error => this.fail(new Error(`Engine ${id} lost its input: ${error.message}`)));
|
|
226
|
+
createInterface({ input: stdout }).on('line', line => {
|
|
227
|
+
if (!line.trim())
|
|
228
|
+
return;
|
|
229
|
+
let parsed;
|
|
230
|
+
try {
|
|
231
|
+
parsed = JSON.parse(line);
|
|
232
|
+
}
|
|
233
|
+
catch {
|
|
234
|
+
return;
|
|
235
|
+
}
|
|
236
|
+
if (typeof parsed.event === 'string') {
|
|
237
|
+
if (parsed.event === 'ready') {
|
|
238
|
+
// The handshake is what says what this child can do, and the pool routes by it: a child
|
|
239
|
+
// that predates a feature answers the request and silently ignores the parameter.
|
|
240
|
+
const capabilities = parsed.data?.capabilities;
|
|
241
|
+
this.advertised = Array.isArray(capabilities) ? capabilities.filter((entry) => typeof entry === 'string') : [];
|
|
242
|
+
this.resolveReady?.();
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
this.onEvent(this.id, parsed.event, (parsed.data ?? {}));
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
248
|
+
if (typeof parsed.id !== 'number')
|
|
249
|
+
return;
|
|
250
|
+
const entry = this.pending.get(parsed.id);
|
|
251
|
+
if (!entry)
|
|
252
|
+
return;
|
|
253
|
+
this.pending.delete(parsed.id);
|
|
254
|
+
clearTimeout(entry.timer);
|
|
255
|
+
const failure = parsed.error;
|
|
256
|
+
if (failure && typeof failure.message === 'string')
|
|
257
|
+
entry.reject(new ChildError(typeof failure.code === 'string' ? failure.code : 'internal', failure.message));
|
|
258
|
+
else
|
|
259
|
+
entry.resolve(parsed.result ?? null);
|
|
260
|
+
});
|
|
261
|
+
}
|
|
262
|
+
fail(error) {
|
|
263
|
+
for (const [, entry] of [...this.pending]) {
|
|
264
|
+
clearTimeout(entry.timer);
|
|
265
|
+
entry.reject(error);
|
|
266
|
+
}
|
|
267
|
+
this.pending.clear();
|
|
268
|
+
this.rejectReady?.(error);
|
|
269
|
+
if (this.stopped)
|
|
270
|
+
return;
|
|
271
|
+
this.stopped = true;
|
|
272
|
+
this.child.kill();
|
|
273
|
+
this.onExit(this.id);
|
|
274
|
+
}
|
|
275
|
+
/** Whether this child advertised a capability in its handshake. */
|
|
276
|
+
supports(capability) {
|
|
277
|
+
return this.advertised.includes(capability);
|
|
278
|
+
}
|
|
279
|
+
request(method, params, timeoutMs) {
|
|
280
|
+
const stdin = this.child.stdin;
|
|
281
|
+
if (this.stopped || !stdin || stdin.destroyed)
|
|
282
|
+
return Promise.reject(new ChildError('closed', `Engine ${this.id} is not running.`));
|
|
283
|
+
const id = this.nextId++;
|
|
284
|
+
return new Promise((resolve, reject) => {
|
|
285
|
+
const timer = setTimeout(() => {
|
|
286
|
+
this.pending.delete(id);
|
|
287
|
+
reject(new ChildError('timeout', `${method} on engine ${this.id} did not answer in time.`));
|
|
288
|
+
}, timeoutMs);
|
|
289
|
+
timer.unref?.();
|
|
290
|
+
this.pending.set(id, { resolve, reject, timer });
|
|
291
|
+
try {
|
|
292
|
+
stdin.write(`${JSON.stringify({ id, method, params })}\n`, error => {
|
|
293
|
+
// The same failure surfacing on the write's own callback: the request cannot be answered,
|
|
294
|
+
// so it is rejected now rather than left to its deadline.
|
|
295
|
+
if (!error)
|
|
296
|
+
return;
|
|
297
|
+
const entry = this.pending.get(id);
|
|
298
|
+
if (!entry)
|
|
299
|
+
return;
|
|
300
|
+
this.pending.delete(id);
|
|
301
|
+
clearTimeout(entry.timer);
|
|
302
|
+
entry.reject(new ChildError('closed', `Engine ${this.id} is not running.`));
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
this.pending.delete(id);
|
|
307
|
+
clearTimeout(timer);
|
|
308
|
+
reject(error instanceof Error ? error : new Error(String(error)));
|
|
309
|
+
}
|
|
310
|
+
});
|
|
311
|
+
}
|
|
312
|
+
/** Close stdin (the engine's graceful shutdown signal) with a kill backstop. */
|
|
313
|
+
stop() {
|
|
314
|
+
if (this.stopped)
|
|
315
|
+
return Promise.resolve();
|
|
316
|
+
this.stopped = true;
|
|
317
|
+
return new Promise(resolve => {
|
|
318
|
+
const settled = () => { clearTimeout(killTimer); resolve(); };
|
|
319
|
+
const killTimer = setTimeout(() => { this.child.kill(); settled(); }, CHILD_STOP_GRACE_MS);
|
|
320
|
+
killTimer.unref?.();
|
|
321
|
+
this.child.once('exit', settled);
|
|
322
|
+
const stdin = this.child.stdin;
|
|
323
|
+
if (!stdin || stdin.destroyed) {
|
|
324
|
+
this.child.kill();
|
|
325
|
+
settled();
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
stdin.on('error', () => undefined);
|
|
329
|
+
stdin.end(() => undefined);
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
/** How this process spawns another engine of its own CLI. */
|
|
334
|
+
export function relayEngineCommand() {
|
|
335
|
+
const override = process.env.ANDORRA_REMOTE_ENGINE_COMMAND;
|
|
336
|
+
if (override) {
|
|
337
|
+
try {
|
|
338
|
+
const parsed = JSON.parse(override);
|
|
339
|
+
if (Array.isArray(parsed) && parsed.length)
|
|
340
|
+
return parsed.map(String);
|
|
341
|
+
}
|
|
342
|
+
catch { /* A single path is the plain spelling of the override. */ }
|
|
343
|
+
return [override];
|
|
344
|
+
}
|
|
345
|
+
// This process is the CLI (`node …/cli.js app-server|remote …`), so its own entry is the engine
|
|
346
|
+
// entry: the relay's children are the same `app-server --stdio` wire the desktop's shell spawns.
|
|
347
|
+
const entry = process.argv[1];
|
|
348
|
+
if (!entry)
|
|
349
|
+
throw new RelayRefusal('remote', 'The engine relay cannot locate its own CLI entry.');
|
|
350
|
+
return [process.execPath, entry, 'app-server', '--stdio'];
|
|
351
|
+
}
|
|
352
|
+
const REMOTE_PROJECT_PREFIX = 'rw:';
|
|
353
|
+
function isRemoteProjectSpelling(value) {
|
|
354
|
+
return value.startsWith(REMOTE_PROJECT_PREFIX);
|
|
355
|
+
}
|
|
356
|
+
/** The root id part of an `rw:` spelling: everything after the viewer workspace segment. */
|
|
357
|
+
function rootPartOf(value) {
|
|
358
|
+
const rest = value.slice(REMOTE_PROJECT_PREFIX.length);
|
|
359
|
+
const colon = rest.indexOf(':');
|
|
360
|
+
if (colon < 0)
|
|
361
|
+
return undefined;
|
|
362
|
+
return rest.slice(colon + 1);
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* The coordinator. One instance per listener, created by the server alongside it.
|
|
366
|
+
*/
|
|
367
|
+
export class RemoteEngineRelay {
|
|
368
|
+
directory;
|
|
369
|
+
children = new Map();
|
|
370
|
+
/**
|
|
371
|
+
* The children this relay is stopping, so no start takes one that is on its way out.
|
|
372
|
+
*
|
|
373
|
+
* It belongs to the relay: two relays in one process allocate the same child ids, and one
|
|
374
|
+
* relay's reservation would hide another's idle child.
|
|
375
|
+
*/
|
|
376
|
+
retiringChildren = new Set();
|
|
377
|
+
taskSeq = 0;
|
|
378
|
+
connections = new Map();
|
|
379
|
+
/** Real (child-side) terminal id → the connection that opened it. */
|
|
380
|
+
terminalOwner = new Map();
|
|
381
|
+
/** Session id → the connections whose panels are watching it (a stream they share). */
|
|
382
|
+
browserViewers = new Map();
|
|
383
|
+
/** runId / sessionId → the child that owns it, learned from run lifecycle events. */
|
|
384
|
+
runEngine = new Map();
|
|
385
|
+
sessionEngine = new Map();
|
|
386
|
+
/** The `run.started` payload of each live run, keyed by its child — replayed to new connections. */
|
|
387
|
+
activeRuns = new Map();
|
|
388
|
+
/** The completions that landed with no stream attached, kept briefly for the reconnect replay. */
|
|
389
|
+
finishedRuns = new Map();
|
|
390
|
+
/** Translations by viewer workspace id, each cached briefly (a rebuild realpath-walks the roots). */
|
|
391
|
+
translations = new Map();
|
|
392
|
+
revocationTimer;
|
|
393
|
+
/** Event delivery is queued: a stream's frames must land in the order the children emitted them. */
|
|
394
|
+
delivery = Promise.resolve();
|
|
395
|
+
closed = false;
|
|
396
|
+
constructor(directory) {
|
|
397
|
+
this.directory = directory;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* One relayed request. Throws nothing: every failure is the answer's `error`, because the caller is
|
|
401
|
+
* an HTTP handler whose status code cannot say what went wrong inside the engine pool.
|
|
402
|
+
*/
|
|
403
|
+
async request(deviceId, body) {
|
|
404
|
+
try {
|
|
405
|
+
const { method, params } = this.validate(body);
|
|
406
|
+
const result = await this.dispatch(deviceId, body, method, params);
|
|
407
|
+
const translation = await this.translation(body.viewerWorkspaceId);
|
|
408
|
+
const rewritten = OPAQUE_RESPONSE_METHODS.has(method) ? (result ?? null) : translation.rewrite(result ?? null);
|
|
409
|
+
const serialized = JSON.stringify(rewritten) ?? 'null';
|
|
410
|
+
const cap = LARGE_RESPONSE_METHODS.has(method) ? MAX_LARGE_RESPONSE_BYTES : MAX_RESPONSE_BYTES;
|
|
411
|
+
if (Buffer.byteLength(serialized) > cap) {
|
|
412
|
+
return { error: { code: 'remote', message: `${method} answered larger than the remote link allows (${Math.round(cap / 1024 / 1024)} MiB).` } };
|
|
413
|
+
}
|
|
414
|
+
return { result: rewritten };
|
|
415
|
+
}
|
|
416
|
+
catch (error) {
|
|
417
|
+
return { error: relayError(error) };
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
validate(body) {
|
|
421
|
+
if (!body.connectionId || typeof body.connectionId !== 'string')
|
|
422
|
+
throw new RelayRefusal('invalid-params', 'connectionId is required.');
|
|
423
|
+
if (!body.engine || typeof body.engine !== 'string')
|
|
424
|
+
throw new RelayRefusal('invalid-params', 'engine is required.');
|
|
425
|
+
if (!body.method || typeof body.method !== 'string' || !ALLOWED_METHODS.has(body.method)) {
|
|
426
|
+
throw new RelayRefusal('unknown-method', 'That method is not part of the remote engine surface.');
|
|
427
|
+
}
|
|
428
|
+
const params = body.params === undefined ? {} : body.params;
|
|
429
|
+
if (!params || typeof params !== 'object' || Array.isArray(params))
|
|
430
|
+
throw new RelayRefusal('invalid-params', 'params must be an object.');
|
|
431
|
+
return { method: body.method, params };
|
|
432
|
+
}
|
|
433
|
+
childDeadline(body) {
|
|
434
|
+
const asked = typeof body.deadlineMs === 'number' && body.deadlineMs > 0 ? body.deadlineMs : 120_000;
|
|
435
|
+
const ceiling = LONG_DEADLINE_METHODS.has(body.method) ? MAX_LONG_CHILD_DEADLINE_MS : MAX_CHILD_DEADLINE_MS;
|
|
436
|
+
const bounded = Math.min(Math.max(asked, 5_000), ceiling);
|
|
437
|
+
// A mutation runs inside the caller's own budget: the viewer's client fails the call at the
|
|
438
|
+
// deadline it sent, and a start, prompt answer, session change, or shell open that committed
|
|
439
|
+
// after that would surprise a user who already retried or moved on. Reads keep the small slack
|
|
440
|
+
// that lets the engine decide its own timeout rather than racing the viewer's.
|
|
441
|
+
if (MUTATING_METHODS.has(body.method))
|
|
442
|
+
return bounded;
|
|
443
|
+
return bounded + CHILD_DEADLINE_SLACK_MS;
|
|
444
|
+
}
|
|
445
|
+
async dispatch(deviceId, body, method, params) {
|
|
446
|
+
const connection = this.connection(deviceId, body.connectionId, body.viewerWorkspaceId);
|
|
447
|
+
const deadline = this.childDeadline(body);
|
|
448
|
+
if (TERMINAL_METHODS.has(method))
|
|
449
|
+
return this.terminalRequest(connection, method, params, deadline);
|
|
450
|
+
if (RUN_START_METHODS.has(method))
|
|
451
|
+
return this.startRequest(body, method, params, deadline);
|
|
452
|
+
if (RUN_TARGET_METHODS.has(method))
|
|
453
|
+
return this.runTargetRequest(body, method, params, deadline);
|
|
454
|
+
// A run owns its session's record while it executes, so a mutation belongs to the engine running
|
|
455
|
+
// it — the same refusal-and-perform rule a local window's routing follows.
|
|
456
|
+
if (SESSION_MUTATION_METHODS.has(method) && typeof params.id === 'string') {
|
|
457
|
+
const owner = this.sessionEngine.get(params.id);
|
|
458
|
+
if (owner)
|
|
459
|
+
return (await this.engine(owner)).request(method, params, deadline);
|
|
460
|
+
}
|
|
461
|
+
const target = body.engine === '' ? REMOTE_PRIMARY_ENGINE : body.engine;
|
|
462
|
+
if (target !== REMOTE_PRIMARY_ENGINE && !this.children.has(target)) {
|
|
463
|
+
throw new RelayRefusal('not-found', `No engine ${target} is serving this machine's remote surface.`);
|
|
464
|
+
}
|
|
465
|
+
// A session's panel stream is one switch on the hosting engine, so several paired viewers
|
|
466
|
+
// watching the same session share it: it is turned off only when the last of them leaves, and
|
|
467
|
+
// the other viewers' panes keep receiving frames until then.
|
|
468
|
+
if (method === 'browser.view.stream' && typeof params.sessionId === 'string') {
|
|
469
|
+
const sessionId = params.sessionId;
|
|
470
|
+
if (params.enabled === false) {
|
|
471
|
+
const viewers = this.browserViewers.get(sessionId);
|
|
472
|
+
viewers?.delete(connection.id);
|
|
473
|
+
connection.browserStreams.delete(sessionId);
|
|
474
|
+
if ((viewers?.size ?? 0) > 0)
|
|
475
|
+
return { ok: true };
|
|
476
|
+
this.browserViewers.delete(sessionId);
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
const viewers = this.browserViewers.get(sessionId) ?? new Set();
|
|
480
|
+
viewers.add(connection.id);
|
|
481
|
+
this.browserViewers.set(sessionId, viewers);
|
|
482
|
+
connection.browserStreams.add(sessionId);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
const engine = await this.engine(target);
|
|
486
|
+
const answer = await engine.request(method, await this.translateParams(body.viewerWorkspaceId, params), deadline);
|
|
487
|
+
// The session listing echoes each requested spelling back; the viewer files its groups by its
|
|
488
|
+
// own, so the echo is restored here rather than left in this machine's terms.
|
|
489
|
+
if (method === 'sessions.list' && Array.isArray(params.workspaces)) {
|
|
490
|
+
return this.restoreRequestedEcho(answer, params.workspaces, body.viewerWorkspaceId);
|
|
491
|
+
}
|
|
492
|
+
// A trajectory page names the log it is showing, and that name is a path on this machine: the
|
|
493
|
+
// viewer's own home is not this one, and it cannot use the name anyway. It is left out rather
|
|
494
|
+
// than sent, so the host's layout is not handed to a paired client.
|
|
495
|
+
if (method === 'sessions.trajectory' && answer !== null && typeof answer === 'object' && !Array.isArray(answer)) {
|
|
496
|
+
const { path: _hostPath, ...page } = answer;
|
|
497
|
+
return page;
|
|
498
|
+
}
|
|
499
|
+
return answer;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* run.start / run.resume: pick a free task engine, spawning one when every child is busy.
|
|
503
|
+
*
|
|
504
|
+
* The browsing engine never takes a run (ADR 0017), the busy refusal is the engine's own, and the
|
|
505
|
+
* answer names the engine that took the run so the viewer can address its prompts directly.
|
|
506
|
+
*/
|
|
507
|
+
async startRequest(body, method, params, deadline) {
|
|
508
|
+
// The capability the answering child must advertise, asked for by the viewer: the browsing
|
|
509
|
+
// engine's handshake says what the machine can do, not what every task engine on it can, and a
|
|
510
|
+
// child that predates a feature answers the request and ignores the parameter. The requirement
|
|
511
|
+
// travels with the request so the pool picks a child that honours it — and it is stripped here,
|
|
512
|
+
// because it is the pool's own routing rule and not the engine's parameter.
|
|
513
|
+
const { requireCapability, ...rest } = params;
|
|
514
|
+
const required = typeof requireCapability === 'string' && requireCapability.length > 0 ? requireCapability : undefined;
|
|
515
|
+
const translated = await this.translateParams(body.viewerWorkspaceId, rest);
|
|
516
|
+
// A resume may address the engine that owns the session's scheduled wake (the desktop learned
|
|
517
|
+
// the id from the wake's own events): routing it by pool selection could wake the session in a
|
|
518
|
+
// second process while the first still holds the timer, and the two would overwrite each
|
|
519
|
+
// other's persisted turns. The addressed engine decides; its own busy refusal is the answer.
|
|
520
|
+
if (body.engine !== '' && body.engine !== REMOTE_PRIMARY_ENGINE) {
|
|
521
|
+
const addressed = this.children.get(body.engine);
|
|
522
|
+
if (addressed !== undefined) {
|
|
523
|
+
// A child this relay is stopping is on its way out: a request addressed to it would be
|
|
524
|
+
// accepted and then lose the engine under it.
|
|
525
|
+
if (this.retiringChildren.has(addressed.id)) {
|
|
526
|
+
throw new RelayRefusal('busy', 'That engine is being stopped; try again.');
|
|
527
|
+
}
|
|
528
|
+
// The addressed engine owns the session's wake, so it is the one that has to answer. A child
|
|
529
|
+
// that cannot honour the requirement is refused rather than rerouted: another engine would
|
|
530
|
+
// wake the session in a second process.
|
|
531
|
+
if (required !== undefined && !addressed.supports(required)) {
|
|
532
|
+
throw new RelayRefusal('invalid-params', `The engine that would answer does not support ${required}.`);
|
|
533
|
+
}
|
|
534
|
+
const result = await addressed.request(method, translated, deadline);
|
|
535
|
+
return { ...result, engine: addressed.id };
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
// A child that does not advertise the capability is not asked at all: it would answer and
|
|
539
|
+
// ignore the parameter, which is exactly the silence the requirement exists to prevent. An idle
|
|
540
|
+
// one is retired rather than merely skipped: the pool's cap counts every child, and a pool full
|
|
541
|
+
// of children that cannot answer would refuse the run as busy while nothing was running.
|
|
542
|
+
const incompatible = [];
|
|
543
|
+
for (const [id, engine] of [...this.children]) {
|
|
544
|
+
if (id === REMOTE_PRIMARY_ENGINE)
|
|
545
|
+
continue;
|
|
546
|
+
if (required !== undefined && !engine.supports(required)) {
|
|
547
|
+
// A child another request is already retiring is not a candidate: two scans would pick the
|
|
548
|
+
// same one, and only one slot would be freed.
|
|
549
|
+
if (!engine.busy && !this.retiringChildren.has(id))
|
|
550
|
+
incompatible.push(engine);
|
|
551
|
+
continue;
|
|
552
|
+
}
|
|
553
|
+
// A child this relay is stopping is on its way out: a start must not take it.
|
|
554
|
+
if (this.retiringChildren.has(id))
|
|
555
|
+
continue;
|
|
556
|
+
try {
|
|
557
|
+
const result = await engine.request(method, translated, deadline);
|
|
558
|
+
return { ...result, engine: id };
|
|
559
|
+
}
|
|
560
|
+
catch (error) {
|
|
561
|
+
if (error instanceof ChildError && (error.code === 'engine-busy' || error.code === 'busy'))
|
|
562
|
+
continue;
|
|
563
|
+
throw error;
|
|
564
|
+
}
|
|
565
|
+
}
|
|
566
|
+
// A child that finished its run but still owns a self-wake timer is not idle in the sense that
|
|
567
|
+
// matters: stopping it would destroy the pending wake, which is the session's own work. The
|
|
568
|
+
// scan looks for a child that can be stopped — one may hold a wake while the next cannot.
|
|
569
|
+
for (const child of incompatible) {
|
|
570
|
+
// Reserved before the first check, and only if another request has not claimed this child
|
|
571
|
+
// already: two claims would retire one child and free one slot, and the second request
|
|
572
|
+
// would be refused as busy while another incompatible idle child remained.
|
|
573
|
+
if (this.retiringChildren.has(child.id))
|
|
574
|
+
continue;
|
|
575
|
+
this.retiringChildren.add(child.id);
|
|
576
|
+
try {
|
|
577
|
+
if (await this.childHoldsWake(child))
|
|
578
|
+
continue;
|
|
579
|
+
// The child's own answer is the authority on whether it is free: the busy flag is set when
|
|
580
|
+
// a run starts, which is after the child has accepted the request, so a child that is still
|
|
581
|
+
// preparing one looks idle here and must not be stopped under it.
|
|
582
|
+
if (!await this.childIsIdle(child))
|
|
583
|
+
continue;
|
|
584
|
+
await this.retireChild(child.id);
|
|
585
|
+
break;
|
|
586
|
+
}
|
|
587
|
+
finally {
|
|
588
|
+
this.retiringChildren.delete(child.id);
|
|
589
|
+
}
|
|
590
|
+
}
|
|
591
|
+
const spawned = await this.spawnChild(`${TASK_PREFIX}${++this.taskSeq}`);
|
|
592
|
+
try {
|
|
593
|
+
// A fresh child comes from the machine's current install, so it advertises what the browsing
|
|
594
|
+
// engine advertised; a machine whose install cannot honour the requirement says so instead.
|
|
595
|
+
if (required !== undefined && !spawned.supports(required)) {
|
|
596
|
+
throw new RelayRefusal('invalid-params', `This machine's engine does not support ${required}.`);
|
|
597
|
+
}
|
|
598
|
+
const result = await spawned.request(method, translated, deadline);
|
|
599
|
+
return { ...result, engine: spawned.id };
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
// A child that took no run is an idle process the pool does not need; retiring it keeps a
|
|
603
|
+
// refused start from spending a slot. A child whose run began keeps the slot — its events are
|
|
604
|
+
// still owed to the streams.
|
|
605
|
+
if (!spawned.busy && !this.engineOwnsRun(spawned.id))
|
|
606
|
+
await this.retireChild(spawned.id);
|
|
607
|
+
throw error;
|
|
608
|
+
}
|
|
609
|
+
}
|
|
610
|
+
/**
|
|
611
|
+
* run.cancel / run.approve / run.answer: a prompt belongs to the child that raised it.
|
|
612
|
+
*
|
|
613
|
+
* The viewer addresses these by the engine id it learned from `run.started`, which is authoritative
|
|
614
|
+
* here as well; a cancel names its run id, and the ownership map answers that on its own.
|
|
615
|
+
*/
|
|
616
|
+
async runTargetRequest(body, method, params, deadline) {
|
|
617
|
+
let owner;
|
|
618
|
+
if (typeof params.runId === 'string')
|
|
619
|
+
owner = this.runEngine.get(params.runId);
|
|
620
|
+
if (owner === undefined && body.engine !== '' && body.engine !== REMOTE_PRIMARY_ENGINE && this.children.has(body.engine))
|
|
621
|
+
owner = body.engine;
|
|
622
|
+
if (owner === undefined && typeof params.runId === 'string') {
|
|
623
|
+
throw new RelayRefusal('not-found', 'That run is not executing on this machine.');
|
|
624
|
+
}
|
|
625
|
+
if (owner === undefined) {
|
|
626
|
+
throw new RelayRefusal('not-found', 'That interaction is not waiting on this machine.');
|
|
627
|
+
}
|
|
628
|
+
return (await this.engine(owner)).request(method, params, deadline);
|
|
629
|
+
}
|
|
630
|
+
/**
|
|
631
|
+
* Terminal calls: ids are prefixed with the connection, output goes only to that connection, and a
|
|
632
|
+
* closeAll sweeps only the shells that connection opened. The browsing engine hosts the PTYs — a
|
|
633
|
+
* shell outlives any one task and belongs to no run.
|
|
634
|
+
*/
|
|
635
|
+
async terminalRequest(connection, method, params, deadline) {
|
|
636
|
+
const primary = await this.engine(REMOTE_PRIMARY_ENGINE);
|
|
637
|
+
const real = (prefixed) => {
|
|
638
|
+
return typeof prefixed === 'string' ? connection.terminals.get(prefixed) : undefined;
|
|
639
|
+
};
|
|
640
|
+
if (method === 'terminal.open') {
|
|
641
|
+
const result = await primary.request('terminal.open', await this.translateParams(connection.viewerWorkspaceId, params), deadline);
|
|
642
|
+
const id = result?.terminal?.id;
|
|
643
|
+
if (typeof id !== 'string')
|
|
644
|
+
throw new RelayRefusal('remote', 'The engine opened a terminal without an id.');
|
|
645
|
+
const prefixed = `${connection.id}:${id}`;
|
|
646
|
+
connection.terminals.set(prefixed, id);
|
|
647
|
+
this.terminalOwner.set(id, connection.id);
|
|
648
|
+
return { terminal: { ...result.terminal, id: prefixed } };
|
|
649
|
+
}
|
|
650
|
+
if (method === 'terminal.write' || method === 'terminal.resize' || method === 'terminal.close') {
|
|
651
|
+
const id = real(params.id);
|
|
652
|
+
if (id === undefined)
|
|
653
|
+
throw new RelayRefusal('not-found', 'That terminal was not opened on this connection.');
|
|
654
|
+
// `cwd` on these calls is the VIEWER's routing hint (which machine owns the shell); the
|
|
655
|
+
// engine's own write/resize/close take no folder, so it is not forwarded.
|
|
656
|
+
const { cwd: _routing, ...forwarded } = params;
|
|
657
|
+
const answer = await primary.request(method, { ...forwarded, id }, deadline);
|
|
658
|
+
if (method === 'terminal.close') {
|
|
659
|
+
connection.terminals.delete(params.id);
|
|
660
|
+
this.terminalOwner.delete(id);
|
|
661
|
+
}
|
|
662
|
+
return answer;
|
|
663
|
+
}
|
|
664
|
+
// terminal.closeAll: only the shells this connection opened — the desktop's own closeAll from a
|
|
665
|
+
// reattach is the one call that cannot name ids, and here it stays scoped to the issuer.
|
|
666
|
+
const opened = [...connection.terminals.entries()];
|
|
667
|
+
connection.terminals.clear();
|
|
668
|
+
for (const [, id] of opened)
|
|
669
|
+
this.terminalOwner.delete(id);
|
|
670
|
+
let closed = 0;
|
|
671
|
+
for (const [, id] of opened) {
|
|
672
|
+
try {
|
|
673
|
+
await primary.request('terminal.close', { id }, 5_000);
|
|
674
|
+
closed += 1;
|
|
675
|
+
}
|
|
676
|
+
catch { /* A dead shell is closed. */ }
|
|
677
|
+
}
|
|
678
|
+
return { closed };
|
|
679
|
+
}
|
|
680
|
+
/**
|
|
681
|
+
* Translate the viewer's project spellings inside request params. Only the fields that NAME a
|
|
682
|
+
* workspace folder carry one, so the walk is over those fields, not the whole payload — a task
|
|
683
|
+
* prompt may legitimately contain the literal text "rw:".
|
|
684
|
+
*/
|
|
685
|
+
async translateParams(viewerWorkspaceId, params) {
|
|
686
|
+
const workspaces = Array.isArray(params.workspaces) ? params.workspaces : undefined;
|
|
687
|
+
const needs = (typeof params.workspace === 'string' && isRemoteProjectSpelling(params.workspace))
|
|
688
|
+
|| (typeof params.cwd === 'string' && isRemoteProjectSpelling(params.cwd))
|
|
689
|
+
|| (workspaces !== undefined && workspaces.some(value => typeof value === 'string' && isRemoteProjectSpelling(value)));
|
|
690
|
+
if (!needs)
|
|
691
|
+
return params;
|
|
692
|
+
const translation = await this.translation(viewerWorkspaceId);
|
|
693
|
+
const next = { ...params };
|
|
694
|
+
if (typeof next.workspace === 'string' && isRemoteProjectSpelling(next.workspace))
|
|
695
|
+
next.workspace = translation.toHost(next.workspace);
|
|
696
|
+
if (typeof next.cwd === 'string' && isRemoteProjectSpelling(next.cwd))
|
|
697
|
+
next.cwd = translation.toHost(next.cwd);
|
|
698
|
+
if (workspaces !== undefined) {
|
|
699
|
+
// A listing tolerates one untranslatable spelling: a hashed pick (a folder chosen inside a
|
|
700
|
+
// root) has no host path, but refusing the WHOLE listing for it would blank every registered
|
|
701
|
+
// row beside it. It passes through verbatim; the host answers that group empty.
|
|
702
|
+
next.workspaces = workspaces.map(value => {
|
|
703
|
+
if (typeof value !== 'string' || !isRemoteProjectSpelling(value))
|
|
704
|
+
return value;
|
|
705
|
+
try {
|
|
706
|
+
return translation.toHost(value);
|
|
707
|
+
}
|
|
708
|
+
catch {
|
|
709
|
+
return value;
|
|
710
|
+
}
|
|
711
|
+
});
|
|
712
|
+
}
|
|
713
|
+
return next;
|
|
714
|
+
}
|
|
715
|
+
/** Put each listing group back under the spelling the viewer asked with. */
|
|
716
|
+
async restoreRequestedEcho(answer, original, viewerWorkspaceId) {
|
|
717
|
+
const groups = answer?.groups;
|
|
718
|
+
if (!Array.isArray(groups))
|
|
719
|
+
return answer;
|
|
720
|
+
const translation = await this.translation(viewerWorkspaceId);
|
|
721
|
+
groups.forEach((group, index) => {
|
|
722
|
+
const asked = original[index];
|
|
723
|
+
if (typeof asked === 'string' && isRemoteProjectSpelling(asked))
|
|
724
|
+
group.requested = asked;
|
|
725
|
+
else if (typeof group.requested === 'string')
|
|
726
|
+
group.requested = translation.toViewer(group.requested);
|
|
727
|
+
});
|
|
728
|
+
return answer;
|
|
729
|
+
}
|
|
730
|
+
/** The connection record, created on first sight. */
|
|
731
|
+
connection(deviceId, connectionId, viewerWorkspaceId) {
|
|
732
|
+
let found = this.connections.get(connectionId);
|
|
733
|
+
if (!found) {
|
|
734
|
+
found = { id: connectionId, deviceId, terminals: new Map(), browserStreams: new Set(), sinks: new Set(), cuts: new Set(), sinklessSince: Date.now() };
|
|
735
|
+
this.connections.set(connectionId, found);
|
|
736
|
+
this.startRevocationPoll();
|
|
737
|
+
}
|
|
738
|
+
found.deviceId = deviceId;
|
|
739
|
+
if (viewerWorkspaceId !== undefined)
|
|
740
|
+
found.viewerWorkspaceId = viewerWorkspaceId;
|
|
741
|
+
return found;
|
|
742
|
+
}
|
|
743
|
+
/**
|
|
744
|
+
* End one connection outright: its streams are closed (not merely starved), its terminals swept.
|
|
745
|
+
*
|
|
746
|
+
* Revocation and shutdown both go through here, so a connection never survives either — the
|
|
747
|
+
* viewer observes the stream end and the host keeps no orphaned shells or half-dead sockets.
|
|
748
|
+
*/
|
|
749
|
+
sever(connection) {
|
|
750
|
+
for (const cut of [...connection.cuts]) {
|
|
751
|
+
try {
|
|
752
|
+
cut();
|
|
753
|
+
}
|
|
754
|
+
catch { /* The response is already gone. */ }
|
|
755
|
+
}
|
|
756
|
+
connection.sinks.clear();
|
|
757
|
+
connection.cuts.clear();
|
|
758
|
+
for (const [, real] of connection.terminals) {
|
|
759
|
+
this.terminalOwner.delete(real);
|
|
760
|
+
void this.engine(REMOTE_PRIMARY_ENGINE).then(primary => primary.request('terminal.close', { id: real }, 5_000)).catch(() => undefined);
|
|
761
|
+
}
|
|
762
|
+
connection.terminals.clear();
|
|
763
|
+
// Turning the stream off hands the browser back to the idle reaper, which
|
|
764
|
+
// closes it a while later; the viewer that owned it is gone either way — but
|
|
765
|
+
// only when no other connection is still watching that session's panel.
|
|
766
|
+
for (const sessionId of connection.browserStreams) {
|
|
767
|
+
const viewers = this.browserViewers.get(sessionId);
|
|
768
|
+
viewers?.delete(connection.id);
|
|
769
|
+
if ((viewers?.size ?? 0) > 0)
|
|
770
|
+
continue;
|
|
771
|
+
this.browserViewers.delete(sessionId);
|
|
772
|
+
void this.engine(REMOTE_PRIMARY_ENGINE)
|
|
773
|
+
.then(primary => primary.request('browser.view.stream', { sessionId, enabled: false }, 5_000))
|
|
774
|
+
.catch(() => undefined);
|
|
775
|
+
}
|
|
776
|
+
connection.browserStreams.clear();
|
|
777
|
+
this.connections.delete(connection.id);
|
|
778
|
+
}
|
|
779
|
+
/**
|
|
780
|
+
* Register one connection's event stream. The returned stop function ends delivery; the server
|
|
781
|
+
* calls it when the HTTP response closes, and it sweeps that connection's terminals with it — a
|
|
782
|
+
* window that is gone cannot name its shells any more, and the host's slots are not a graveyard.
|
|
783
|
+
*/
|
|
784
|
+
events(deviceId, connectionId, viewerWorkspaceId, sink, cut) {
|
|
785
|
+
const connection = this.connection(deviceId, connectionId, viewerWorkspaceId);
|
|
786
|
+
connection.sinks.add(sink);
|
|
787
|
+
connection.cuts.add(cut);
|
|
788
|
+
connection.sinklessSince = 0;
|
|
789
|
+
// A window that reconnects while work is still live has never seen what happened since its last
|
|
790
|
+
// stream ended: the active run's `run.started`, the completions that landed in the gap, and the
|
|
791
|
+
// timers an idle engine still holds. These are delivered TO THIS SINK alone — the other, healthy
|
|
792
|
+
// viewers already saw them, and replaying start frames at them would reset live tracking.
|
|
793
|
+
this.replayTo(connection, viewerWorkspaceId, sink);
|
|
794
|
+
return () => {
|
|
795
|
+
connection.sinks.delete(sink);
|
|
796
|
+
connection.cuts.delete(cut);
|
|
797
|
+
if (connection.sinks.size > 0)
|
|
798
|
+
return;
|
|
799
|
+
// A stream that closed may be a retryable one (a network blip, backpressure): its viewer
|
|
800
|
+
// reconnects with the same connection id within seconds. The shells stay — they are the
|
|
801
|
+
// connection's until either an explicit stream returns (sinklessSince resets) or the poller's
|
|
802
|
+
// abandonment TTL ends the connection for good.
|
|
803
|
+
connection.sinklessSince = Date.now();
|
|
804
|
+
};
|
|
805
|
+
}
|
|
806
|
+
/**
|
|
807
|
+
* Deliver the reconnect snapshot to one stream, in emission order with everything else.
|
|
808
|
+
*
|
|
809
|
+
* Active runs first (the replacement client must register them), then the completions that landed
|
|
810
|
+
* while no stream was attached (so a run that finished in a reconnect gap is not shown as working
|
|
811
|
+
* forever), then each idle engine's outstanding timers (so a scheduled wake is adopted by the new
|
|
812
|
+
* client rather than firing unseen).
|
|
813
|
+
*/
|
|
814
|
+
replayTo(connection, viewerWorkspaceId, sink) {
|
|
815
|
+
void (async () => {
|
|
816
|
+
const now = Date.now();
|
|
817
|
+
for (const [engineId, record] of [...this.finishedRuns]) {
|
|
818
|
+
if (now - record.at > FINISHED_RUN_TTL_MS) {
|
|
819
|
+
this.finishedRuns.delete(engineId);
|
|
820
|
+
continue;
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
const translation = await this.translation(viewerWorkspaceId);
|
|
824
|
+
for (const [engineId, data] of this.activeRuns) {
|
|
825
|
+
this.enqueueTo(sink, translation, engineId, 'run.started', data);
|
|
826
|
+
}
|
|
827
|
+
for (const [engineId, record] of this.finishedRuns) {
|
|
828
|
+
this.enqueueTo(sink, translation, engineId, record.event, record.data);
|
|
829
|
+
}
|
|
830
|
+
for (const [engineId, child] of this.children) {
|
|
831
|
+
if (engineId === REMOTE_PRIMARY_ENGINE)
|
|
832
|
+
continue;
|
|
833
|
+
let listed;
|
|
834
|
+
try {
|
|
835
|
+
listed = await child.request('timers.list', {}, 5_000);
|
|
836
|
+
}
|
|
837
|
+
catch {
|
|
838
|
+
continue;
|
|
839
|
+
}
|
|
840
|
+
for (const entry of listed.sessions ?? []) {
|
|
841
|
+
if (typeof entry.sessionId !== 'string')
|
|
842
|
+
continue;
|
|
843
|
+
this.enqueueTo(sink, translation, engineId, 'timers.updated', { sessionId: entry.sessionId, timers: entry.timers ?? [] });
|
|
844
|
+
}
|
|
845
|
+
}
|
|
846
|
+
})().catch(() => undefined);
|
|
847
|
+
}
|
|
848
|
+
/** One queued frame for one sink: the reconnect replay shares the queue, not the broadcast. */
|
|
849
|
+
enqueueTo(sink, translation, engineId, event, data) {
|
|
850
|
+
this.delivery = this.delivery.then(() => {
|
|
851
|
+
if (this.closed)
|
|
852
|
+
return;
|
|
853
|
+
try {
|
|
854
|
+
sink({ engine: engineId, event, data: translation.rewrite(data) });
|
|
855
|
+
}
|
|
856
|
+
catch { /* The stream's own handler closes it. */ }
|
|
857
|
+
}).catch(() => undefined);
|
|
858
|
+
}
|
|
859
|
+
/**
|
|
860
|
+
* One child event, in emission order.
|
|
861
|
+
*
|
|
862
|
+
* The queue is the ordering guarantee a stream needs — `run.started` must reach the viewer before
|
|
863
|
+
* the run's first events whatever the translation cache is doing between them.
|
|
864
|
+
*/
|
|
865
|
+
enqueue(engineId, event, data) {
|
|
866
|
+
this.delivery = this.delivery.then(() => this.deliverEvent(engineId, event, data)).catch(() => undefined);
|
|
867
|
+
}
|
|
868
|
+
async deliverEvent(engineId, event, data) {
|
|
869
|
+
if (this.closed)
|
|
870
|
+
return;
|
|
871
|
+
const runId = typeof data.runId === 'string' ? data.runId : undefined;
|
|
872
|
+
if (event === 'run.started') {
|
|
873
|
+
if (engineId !== REMOTE_PRIMARY_ENGINE) {
|
|
874
|
+
const child = this.children.get(engineId);
|
|
875
|
+
if (child)
|
|
876
|
+
child.busy = true;
|
|
877
|
+
}
|
|
878
|
+
if (runId !== undefined)
|
|
879
|
+
this.runEngine.set(runId, engineId);
|
|
880
|
+
if (typeof data.sessionId === 'string')
|
|
881
|
+
this.sessionEngine.set(data.sessionId, engineId);
|
|
882
|
+
// A task engine runs one task at a time: this frame is the run a reconnecting window adopts.
|
|
883
|
+
if (engineId !== REMOTE_PRIMARY_ENGINE)
|
|
884
|
+
this.activeRuns.set(engineId, data);
|
|
885
|
+
}
|
|
886
|
+
if (event === 'run.completed' || event === 'run.failed') {
|
|
887
|
+
if (runId !== undefined)
|
|
888
|
+
this.runEngine.delete(runId);
|
|
889
|
+
if (typeof data.sessionId === 'string' && this.sessionEngine.get(data.sessionId) === engineId)
|
|
890
|
+
this.sessionEngine.delete(data.sessionId);
|
|
891
|
+
const child = this.children.get(engineId);
|
|
892
|
+
if (child && engineId !== REMOTE_PRIMARY_ENGINE)
|
|
893
|
+
child.busy = false;
|
|
894
|
+
if (engineId !== REMOTE_PRIMARY_ENGINE) {
|
|
895
|
+
this.activeRuns.delete(engineId);
|
|
896
|
+
// A viewer whose stream is down saw the start but will miss this: the completion is kept
|
|
897
|
+
// for the reconnect replay, so the run does not stay on screen as working forever.
|
|
898
|
+
this.finishedRuns.set(engineId, { event, data, at: Date.now() });
|
|
899
|
+
if (this.finishedRuns.size > FINISHED_RUNS_REMEMBERED) {
|
|
900
|
+
const oldest = this.finishedRuns.keys().next().value;
|
|
901
|
+
if (oldest !== undefined)
|
|
902
|
+
this.finishedRuns.delete(oldest);
|
|
903
|
+
}
|
|
904
|
+
}
|
|
905
|
+
}
|
|
906
|
+
if ((event === 'terminal.data' || event === 'terminal.exit') && typeof data.id === 'string') {
|
|
907
|
+
// Terminal output belongs to the connection that opened the shell; every other stream — and
|
|
908
|
+
// every other device — never sees it.
|
|
909
|
+
const ownerId = this.terminalOwner.get(data.id);
|
|
910
|
+
if (ownerId === undefined)
|
|
911
|
+
return;
|
|
912
|
+
const connection = this.connections.get(ownerId);
|
|
913
|
+
if (!connection)
|
|
914
|
+
return;
|
|
915
|
+
const translation = await this.translation(connection.viewerWorkspaceId);
|
|
916
|
+
const frame = { engine: engineId, event, data: translation.rewrite({ ...data, id: `${ownerId}:${data.id}` }) };
|
|
917
|
+
for (const sink of [...connection.sinks]) {
|
|
918
|
+
try {
|
|
919
|
+
sink(frame);
|
|
920
|
+
}
|
|
921
|
+
catch { /* The stream's own handler closes it. */ }
|
|
922
|
+
}
|
|
923
|
+
return;
|
|
924
|
+
}
|
|
925
|
+
for (const connection of [...this.connections.values()]) {
|
|
926
|
+
if (connection.sinks.size === 0)
|
|
927
|
+
continue;
|
|
928
|
+
const translation = await this.translation(connection.viewerWorkspaceId);
|
|
929
|
+
const frame = { engine: engineId, event, data: this.rewriteEventData(translation, event, data) };
|
|
930
|
+
for (const sink of [...connection.sinks]) {
|
|
931
|
+
try {
|
|
932
|
+
sink(frame);
|
|
933
|
+
}
|
|
934
|
+
catch { /* The stream's own handler closes it. */ }
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
}
|
|
938
|
+
/**
|
|
939
|
+
* One event's data for one viewer, with its project paths translated.
|
|
940
|
+
*
|
|
941
|
+
* A panel operation's arguments are the browser's own input, not paths: a `fill` value that
|
|
942
|
+
* happens to equal a shared root is a form value the page must receive verbatim, and rewriting it
|
|
943
|
+
* into the viewer's project id would type that id into the page instead. Only the routing fields
|
|
944
|
+
* around them are translated.
|
|
945
|
+
*/
|
|
946
|
+
rewriteEventData(translation, event, data) {
|
|
947
|
+
if (event !== 'browser.panel.request' || data.arguments === undefined)
|
|
948
|
+
return translation.rewrite(data);
|
|
949
|
+
const { arguments: verbatim, ...rest } = data;
|
|
950
|
+
return { ...translation.rewrite(rest), arguments: verbatim };
|
|
951
|
+
}
|
|
952
|
+
onChildExit(engineId) {
|
|
953
|
+
// A child that dies mid-run leaves the persisted session claiming the run is still live (the
|
|
954
|
+
// reconciliation a healthy engine performs at startup never runs for it): mark it interrupted
|
|
955
|
+
// here, so listings and reloads do not show a working task that no process is driving.
|
|
956
|
+
const interrupted = this.activeRuns.get(engineId);
|
|
957
|
+
if (interrupted !== undefined && typeof interrupted.runId === 'string') {
|
|
958
|
+
// The child queued a start for this run, so the reconciliation owes the matching finish;
|
|
959
|
+
// dropping the returned records would leave that start unmatched, because a replacement
|
|
960
|
+
// app-server skips records no longer marked running.
|
|
961
|
+
void reconcileInterruptedRuns(this.directory, new Set([interrupted.runId]), { includePending: true })
|
|
962
|
+
.then(recovered => reportInterruptedRuns({ home: this.directory, surface: configuredSurface('remote') }, recovered.interrupted))
|
|
963
|
+
.catch(() => undefined);
|
|
964
|
+
}
|
|
965
|
+
this.children.delete(engineId);
|
|
966
|
+
this.activeRuns.delete(engineId);
|
|
967
|
+
for (const [runId, owner] of [...this.runEngine])
|
|
968
|
+
if (owner === engineId)
|
|
969
|
+
this.runEngine.delete(runId);
|
|
970
|
+
for (const [sessionId, owner] of [...this.sessionEngine])
|
|
971
|
+
if (owner === engineId)
|
|
972
|
+
this.sessionEngine.delete(sessionId);
|
|
973
|
+
// The viewer learns the engine is gone as an event, so its remote client for it can be retired
|
|
974
|
+
// the way a dead process's client is.
|
|
975
|
+
this.enqueue(engineId, 'engine.exited', { engine: engineId });
|
|
976
|
+
}
|
|
977
|
+
engineOwnsRun(engineId) {
|
|
978
|
+
for (const owner of this.runEngine.values())
|
|
979
|
+
if (owner === engineId)
|
|
980
|
+
return true;
|
|
981
|
+
return false;
|
|
982
|
+
}
|
|
983
|
+
async engine(id) {
|
|
984
|
+
const existing = this.children.get(id);
|
|
985
|
+
if (existing)
|
|
986
|
+
return existing;
|
|
987
|
+
if (id !== REMOTE_PRIMARY_ENGINE)
|
|
988
|
+
throw new RelayRefusal('not-found', `No engine ${id} is serving this machine's remote surface.`);
|
|
989
|
+
return this.spawnChild(REMOTE_PRIMARY_ENGINE);
|
|
990
|
+
}
|
|
991
|
+
async spawnChild(id) {
|
|
992
|
+
const existing = this.children.get(id);
|
|
993
|
+
if (existing)
|
|
994
|
+
return existing;
|
|
995
|
+
if (this.closed)
|
|
996
|
+
throw new RelayRefusal('remote', 'The remote engine relay is shutting down.');
|
|
997
|
+
// The cap counts task engines, and the browsing engine is exempt from it — its slot is the one
|
|
998
|
+
// the cap exists to protect, so nine busy tasks never leave the primary surface (sessions,
|
|
999
|
+
// workspace reads, terminals) unspawnable.
|
|
1000
|
+
if (id !== REMOTE_PRIMARY_ENGINE) {
|
|
1001
|
+
const taskEngines = [...this.children.keys()].filter(childId => childId !== REMOTE_PRIMARY_ENGINE).length;
|
|
1002
|
+
if (taskEngines >= MAX_RELAY_ENGINES) {
|
|
1003
|
+
throw new RelayRefusal('busy', 'This machine is already running the most concurrent remote tasks it allows. Wait for one to finish.');
|
|
1004
|
+
}
|
|
1005
|
+
}
|
|
1006
|
+
const created = new ChildEngine(id, relayEngineCommand(), this.directory, (engineId, event, data) => this.enqueue(engineId, event, data), engineId => this.onChildExit(engineId));
|
|
1007
|
+
this.children.set(id, created);
|
|
1008
|
+
try {
|
|
1009
|
+
await created.ready;
|
|
1010
|
+
}
|
|
1011
|
+
catch (error) {
|
|
1012
|
+
this.children.delete(id);
|
|
1013
|
+
await created.stop().catch(() => undefined);
|
|
1014
|
+
throw new RelayRefusal('remote', `Starting engine ${id} failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
1015
|
+
}
|
|
1016
|
+
return created;
|
|
1017
|
+
}
|
|
1018
|
+
/**
|
|
1019
|
+
* Whether a child still owns a scheduled wake.
|
|
1020
|
+
*
|
|
1021
|
+
* A child that cannot answer is treated as holding one: stopping it could destroy a wake that
|
|
1022
|
+
* is still owed, and a refused start is a visible failure while a lost wake is not.
|
|
1023
|
+
*/
|
|
1024
|
+
/**
|
|
1025
|
+
* Whether a child is free of a run.
|
|
1026
|
+
*
|
|
1027
|
+
* A child that cannot answer is not known to be free, and stopping one that is preparing a run
|
|
1028
|
+
* would abort the task it accepted.
|
|
1029
|
+
*/
|
|
1030
|
+
async childIsIdle(child) {
|
|
1031
|
+
try {
|
|
1032
|
+
const info = await child.request('host.info', {}, 5_000);
|
|
1033
|
+
return info?.running !== true;
|
|
1034
|
+
}
|
|
1035
|
+
catch {
|
|
1036
|
+
return false;
|
|
1037
|
+
}
|
|
1038
|
+
}
|
|
1039
|
+
async childHoldsWake(child) {
|
|
1040
|
+
try {
|
|
1041
|
+
const listed = await child.request('timers.list', {}, 5_000);
|
|
1042
|
+
return (listed?.sessions ?? []).some(entry => Array.isArray(entry.timers) && entry.timers.length > 0);
|
|
1043
|
+
}
|
|
1044
|
+
catch {
|
|
1045
|
+
return true;
|
|
1046
|
+
}
|
|
1047
|
+
}
|
|
1048
|
+
async retireChild(id) {
|
|
1049
|
+
const child = this.children.get(id);
|
|
1050
|
+
if (!child)
|
|
1051
|
+
return;
|
|
1052
|
+
this.children.delete(id);
|
|
1053
|
+
await child.stop().catch(() => undefined);
|
|
1054
|
+
}
|
|
1055
|
+
/**
|
|
1056
|
+
* The bidirectional project-spelling translation for one viewer.
|
|
1057
|
+
*
|
|
1058
|
+
* Cached briefly per viewer workspace id: building it realpath-walks every authorized root, and a
|
|
1059
|
+
* sessions listing or an event burst would otherwise pay that per call. The cache never outlives a
|
|
1060
|
+
* pairing change by long — five seconds — so a newly registered project is executable almost
|
|
1061
|
+
* immediately.
|
|
1062
|
+
*/
|
|
1063
|
+
async translation(viewerWorkspaceId) {
|
|
1064
|
+
const cached = this.translations.get(viewerWorkspaceId);
|
|
1065
|
+
const now = Date.now();
|
|
1066
|
+
if (cached && now - cached.at < 5_000)
|
|
1067
|
+
return cached.translation;
|
|
1068
|
+
const config = await loadConfig(this.directory);
|
|
1069
|
+
const roots = await authorizedRoots(config);
|
|
1070
|
+
const toHostMap = new Map();
|
|
1071
|
+
const toViewerMap = new Map();
|
|
1072
|
+
for (const root of roots) {
|
|
1073
|
+
const spelling = viewerWorkspaceId !== undefined ? `${REMOTE_PROJECT_PREFIX}${viewerWorkspaceId}:${root.id}` : `${REMOTE_PROJECT_PREFIX}:${root.id}`;
|
|
1074
|
+
toHostMap.set(spelling, root.path);
|
|
1075
|
+
if (!toViewerMap.has(root.path))
|
|
1076
|
+
toViewerMap.set(root.path, spelling);
|
|
1077
|
+
}
|
|
1078
|
+
const translation = {
|
|
1079
|
+
toHost: value => {
|
|
1080
|
+
if (!isRemoteProjectSpelling(value))
|
|
1081
|
+
return value;
|
|
1082
|
+
const mapped = toHostMap.get(value);
|
|
1083
|
+
if (mapped !== undefined)
|
|
1084
|
+
return mapped;
|
|
1085
|
+
// A folder picked inside a root was hashed with a relative path only the viewer knows, so no
|
|
1086
|
+
// host-side table can reverse it. Refusing with the fix is the answer that can be acted on.
|
|
1087
|
+
throw new RelayRefusal('not-found', 'That folder was picked inside a shared root. Register the folder itself on this machine (Add on the rail, or a project on this host) to run tasks in it.');
|
|
1088
|
+
},
|
|
1089
|
+
toViewer: value => toViewerMap.get(value) ?? value,
|
|
1090
|
+
rewrite: value => rewritePaths(value, toViewerMap),
|
|
1091
|
+
};
|
|
1092
|
+
this.translations.set(viewerWorkspaceId, { at: now, translation });
|
|
1093
|
+
return translation;
|
|
1094
|
+
}
|
|
1095
|
+
/**
|
|
1096
|
+
* Cut every live stream and terminal of devices that no longer hold full authority.
|
|
1097
|
+
*
|
|
1098
|
+
* Per-request authentication already refuses a revoked device's next call; this poller is for the
|
|
1099
|
+
* resource a request never re-checks — the open event stream, and the shells its connection owns.
|
|
1100
|
+
*/
|
|
1101
|
+
startRevocationPoll() {
|
|
1102
|
+
if (this.revocationTimer !== undefined)
|
|
1103
|
+
return;
|
|
1104
|
+
const sweep = () => {
|
|
1105
|
+
void (async () => {
|
|
1106
|
+
const config = await loadConfig(this.directory);
|
|
1107
|
+
const valid = new Set((config.remote?.hosting?.devices ?? []).filter(device => device.grant === 'full').map(device => device.id));
|
|
1108
|
+
for (const [, connection] of [...this.connections]) {
|
|
1109
|
+
if (valid.has(connection.deviceId)) {
|
|
1110
|
+
// A connection made by requests whose stream never arrived (the viewer unloaded between
|
|
1111
|
+
// `remote.engine.connect` and its SSE GET) has no response-close callback to end it:
|
|
1112
|
+
// the poller retires it, sweeping the terminals it opened.
|
|
1113
|
+
if (connection.sinks.size === 0 && connection.sinklessSince !== 0 && Date.now() - connection.sinklessSince > SINKLESS_CONNECTION_TTL_MS) {
|
|
1114
|
+
this.sever(connection);
|
|
1115
|
+
}
|
|
1116
|
+
continue;
|
|
1117
|
+
}
|
|
1118
|
+
this.sever(connection);
|
|
1119
|
+
}
|
|
1120
|
+
})().catch(() => undefined);
|
|
1121
|
+
};
|
|
1122
|
+
this.revocationTimer = setInterval(sweep, REVOCATION_POLL_MS);
|
|
1123
|
+
this.revocationTimer.unref?.();
|
|
1124
|
+
}
|
|
1125
|
+
/** Stop the pool: every child gets the graceful close, and no stream outlives the listener. */
|
|
1126
|
+
async close() {
|
|
1127
|
+
if (this.closed)
|
|
1128
|
+
return;
|
|
1129
|
+
this.closed = true;
|
|
1130
|
+
if (this.revocationTimer !== undefined)
|
|
1131
|
+
clearInterval(this.revocationTimer);
|
|
1132
|
+
for (const connection of [...this.connections.values()])
|
|
1133
|
+
this.sever(connection);
|
|
1134
|
+
const children = [...this.children.values()];
|
|
1135
|
+
this.children.clear();
|
|
1136
|
+
await Promise.all(children.map(child => child.stop().catch(() => undefined)));
|
|
1137
|
+
}
|
|
1138
|
+
}
|
|
1139
|
+
/** Rewrite every known host path inside an arbitrary payload, structurally. */
|
|
1140
|
+
function rewritePaths(value, paths) {
|
|
1141
|
+
if (typeof value === 'string')
|
|
1142
|
+
return paths.get(value) ?? value;
|
|
1143
|
+
if (Array.isArray(value))
|
|
1144
|
+
return value.map(entry => rewritePaths(entry, paths));
|
|
1145
|
+
if (value && typeof value === 'object') {
|
|
1146
|
+
const out = {};
|
|
1147
|
+
for (const [key, entry] of Object.entries(value))
|
|
1148
|
+
out[key] = rewritePaths(entry, paths);
|
|
1149
|
+
return out;
|
|
1150
|
+
}
|
|
1151
|
+
return value;
|
|
1152
|
+
}
|
|
1153
|
+
/**
|
|
1154
|
+
* Answers that are the page's own data, not file-system answers. A selection that happens to read
|
|
1155
|
+
* exactly like one of the host's shared-root paths is the user's text — rewriting it would put an
|
|
1156
|
+
* `rw:` project identifier on the viewer's clipboard and, for a cut, delete the original from the
|
|
1157
|
+
* page with only the identifier surviving.
|
|
1158
|
+
*/
|
|
1159
|
+
const OPAQUE_RESPONSE_METHODS = new Set(['browser.view.selection', 'browser.view.cursor']);
|
|
1160
|
+
export { REMOTE_PROJECT_PREFIX, isRemoteProjectSpelling, rootPartOf };
|