@andorra-labs/code 0.0.0-stage → 0.1.5
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 +58 -0
- package/dist/src/update.js +571 -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 +55 -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 +82 -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 +354 -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 +68 -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,1189 @@
|
|
|
1
|
+
import { createServer } from 'node:http';
|
|
2
|
+
import lockfile from 'proper-lockfile';
|
|
3
|
+
import { randomBytes, randomUUID } from 'node:crypto';
|
|
4
|
+
import { execFile } from 'node:child_process';
|
|
5
|
+
import { readFile, readdir, mkdir, stat, realpath } from 'node:fs/promises';
|
|
6
|
+
import { createReadStream } from 'node:fs';
|
|
7
|
+
import { createInterface } from 'node:readline';
|
|
8
|
+
import { join, resolve } from 'node:path';
|
|
9
|
+
import { configDirectory, loadConfig } from './config.js';
|
|
10
|
+
import { SessionWriteFence, SessionStore, sessionName, writeSessionSnapshot, removeSessionSnapshot, savedSessionFields, carryRailOwnedFields, primaryDigest, projectIdentity, validSavedSession } from './sessions.js';
|
|
11
|
+
import { acquireSessionMutationLock, SessionMutationLockHeldError, sessionHasOpenRun } from './run-records.js';
|
|
12
|
+
import { createBrowserBridge, validBrowserSession, browserAuthorized, browserBody, browserReply, discoverBrowserSessions, assertBrowserSessionUnowned } from './browser-bridge.js';
|
|
13
|
+
import { readSessionTrajectory } from './app-server/workspace.js';
|
|
14
|
+
import { runBrowserTask } from './browser-runner.js';
|
|
15
|
+
import { configuredSurface, reportSessionStarted } from './telemetry/surface.js';
|
|
16
|
+
import { currentGraphSubject } from './graph-selection.js';
|
|
17
|
+
import { createSessionTrajectory } from './trajectory.js';
|
|
18
|
+
import { boundBrowserActivity } from './browser-activity.js';
|
|
19
|
+
/**
|
|
20
|
+
* A required save found this session's mutation lock held by another writer, so its round did not happen.
|
|
21
|
+
*
|
|
22
|
+
* The message is what the surface shows; the type is what lets the one caller that owes a completed turn
|
|
23
|
+
* retry it, instead of treating contention and a broken filesystem as the same answer.
|
|
24
|
+
*/
|
|
25
|
+
export class SessionSaveContendedError extends Error {
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The rail's filing and name pin, applied to a copy of the record before it is written.
|
|
29
|
+
*
|
|
30
|
+
* Both copies this save writes have to say the same thing about those fields. Hydrate decides what a
|
|
31
|
+
* run that died mid-prompt was doing by comparing the primary's digest against the archive's, and a
|
|
32
|
+
* primary carrying `archived` while its archive does not makes those digests differ for as long as
|
|
33
|
+
* the filing stands — the exact difference `independentlyUpdated` reads as "another writer moved on",
|
|
34
|
+
* which restores a session whose engine was killed as idle and drops the recoverable prompt. Same rule
|
|
35
|
+
* as the CLI's save, shared through `carryRailOwnedFields`; the one exemption is the acceptance save,
|
|
36
|
+
* which clears the flag in both copies because work the user just started belongs on the working rail.
|
|
37
|
+
*/
|
|
38
|
+
function withRailFields(target, predecessor, carryFiling) {
|
|
39
|
+
carryRailOwnedFields(target, predecessor);
|
|
40
|
+
if (!carryFiling) {
|
|
41
|
+
delete target.archived;
|
|
42
|
+
delete target.autoArchived;
|
|
43
|
+
}
|
|
44
|
+
return target;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The status a browser-written turn must carry into the saved record.
|
|
48
|
+
*
|
|
49
|
+
* A turn's status is read off its completion, and a completion with no status IS a normal completion —
|
|
50
|
+
* that is the engine's contract, and it is what lets a finished task still read as finished after a
|
|
51
|
+
* reload. The browser surface ends a turn from a result that can say `cancelled`, `exhausted`,
|
|
52
|
+
* `needs_clarification` or `infrastructure_error`, and from catches that know only that the attempt did
|
|
53
|
+
* not finish. Saving those turns status-less would hand the rail a green completed mark for work that
|
|
54
|
+
* failed or was interrupted, so every terminal write here stamps what actually happened.
|
|
55
|
+
*/
|
|
56
|
+
function terminalCompletion(completion, status) {
|
|
57
|
+
return completion.status === undefined ? { ...completion, status } : completion;
|
|
58
|
+
}
|
|
59
|
+
async function readSnapshot(path) {
|
|
60
|
+
try {
|
|
61
|
+
return await readFile(path, 'utf8');
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error.code === 'ENOENT')
|
|
65
|
+
return undefined;
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export async function startBrowserServer(options = {}) {
|
|
70
|
+
const directory = options.directory ?? configDirectory();
|
|
71
|
+
const store = new SessionStore(directory);
|
|
72
|
+
const token = randomBytes(32).toString('hex');
|
|
73
|
+
let origin = '';
|
|
74
|
+
let closing = false;
|
|
75
|
+
const sanitizer = await createSessionTrajectory({ directory: join(directory, 'browser-trajectories') });
|
|
76
|
+
const refreshSecrets = async () => {
|
|
77
|
+
const config = await loadConfig(directory);
|
|
78
|
+
const secrets = config.providers.flatMap(provider => [provider.apiKey || '', provider.apiKeyEnv ? process.env[provider.apiKeyEnv] || '' : '']);
|
|
79
|
+
sanitizer.addSecrets(secrets);
|
|
80
|
+
return secrets;
|
|
81
|
+
};
|
|
82
|
+
await refreshSecrets();
|
|
83
|
+
const publicState = (state) => {
|
|
84
|
+
boundBrowserActivity(state.events);
|
|
85
|
+
// Keep routing UUIDs and validated timestamp/status metadata canonical;
|
|
86
|
+
// redacting them would break discovery or control of the public projection.
|
|
87
|
+
return { ...sanitizer.sanitize(state), id: state.id, parentId: state.parentId, updatedAt: state.updatedAt, status: state.status };
|
|
88
|
+
};
|
|
89
|
+
const bridges = new Map();
|
|
90
|
+
const writes = new SessionWriteFence();
|
|
91
|
+
const leases = new Map();
|
|
92
|
+
const lostOwnership = new Set();
|
|
93
|
+
const failedRollbacks = new Set();
|
|
94
|
+
const ownershipAcquisitions = new Set();
|
|
95
|
+
const acquisitionSignals = new Set();
|
|
96
|
+
const forwardedRequests = new Set();
|
|
97
|
+
const acquireOwner = async (state, fresh = false) => {
|
|
98
|
+
const cancellation = new AbortController();
|
|
99
|
+
acquisitionSignals.add(cancellation);
|
|
100
|
+
try {
|
|
101
|
+
return await acquireOwnerInner(state, fresh, cancellation.signal);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
acquisitionSignals.delete(cancellation);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
const acquireOwnerInner = async (state, fresh, cancellation) => {
|
|
108
|
+
if (closing)
|
|
109
|
+
throw new Error('Application is shutting down');
|
|
110
|
+
if (bridges.has(state.id))
|
|
111
|
+
return;
|
|
112
|
+
// A freshly generated id cannot already be held by another descriptor;
|
|
113
|
+
// an unrelated bridge outage must not block creating a new session.
|
|
114
|
+
if (!fresh)
|
|
115
|
+
await assertBrowserSessionUnowned(directory, state.id);
|
|
116
|
+
const folder = join(directory, 'browser-owners');
|
|
117
|
+
await mkdir(folder, { recursive: true, mode: 0o700 });
|
|
118
|
+
const path = join(folder, state.id);
|
|
119
|
+
let release;
|
|
120
|
+
try {
|
|
121
|
+
release = await lockfile.lock(path, { realpath: false, stale: 10000, update: 2000, onCompromised: () => {
|
|
122
|
+
lostOwnership.add(state.id);
|
|
123
|
+
running.get(state.id)?.abort.abort(new Error('Session ownership was lost'));
|
|
124
|
+
const bridge = bridges.get(state.id);
|
|
125
|
+
bridges.delete(state.id);
|
|
126
|
+
owned.delete(state.id);
|
|
127
|
+
// The lost-ownership guard fences future writes, but submitted OS
|
|
128
|
+
// replacements cannot be cancelled. Keep discovery fail-closed until
|
|
129
|
+
// those settle, just as normal shutdown does, while closing the listener.
|
|
130
|
+
void bridge?.close(writes.replacements.size ? writes.settled() : undefined).catch(() => { });
|
|
131
|
+
} });
|
|
132
|
+
}
|
|
133
|
+
catch {
|
|
134
|
+
throw new Error('Session is owned by another application. Refresh to reconnect. After a crash, wait 10 seconds before retrying.');
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
if (closing)
|
|
138
|
+
throw new Error('Application is shutting down');
|
|
139
|
+
const bridge = await createBrowserBridge(directory, () => publicState(state), {
|
|
140
|
+
prompt: text => execute(state, text),
|
|
141
|
+
steer: text => { const job = running.get(state.id); if (!job || !state.live)
|
|
142
|
+
throw new Error('Session is idle'); if (job.abort.signal.aborted)
|
|
143
|
+
throw new Error('Session is cancelling'); job.steering.push(text); },
|
|
144
|
+
cancel: () => cancel(state),
|
|
145
|
+
answer: answer => { const job = running.get(state.id); if (!job?.answer)
|
|
146
|
+
throw new Error('Question is no longer pending'); job.answer(answer); },
|
|
147
|
+
}, cancellation);
|
|
148
|
+
if (closing) {
|
|
149
|
+
await bridge.close();
|
|
150
|
+
throw new Error('Application is shutting down');
|
|
151
|
+
}
|
|
152
|
+
leases.set(path, release);
|
|
153
|
+
bridges.set(state.id, bridge);
|
|
154
|
+
owned.set(state.id, state);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
await release();
|
|
158
|
+
leases.delete(path);
|
|
159
|
+
throw error;
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
const ensureOwner = (state, fresh = false) => {
|
|
163
|
+
const acquisition = acquireOwner(state, fresh);
|
|
164
|
+
ownershipAcquisitions.add(acquisition);
|
|
165
|
+
void acquisition.finally(() => ownershipAcquisitions.delete(acquisition)).catch(() => { });
|
|
166
|
+
return acquisition;
|
|
167
|
+
};
|
|
168
|
+
const owned = new Map();
|
|
169
|
+
const running = new Map();
|
|
170
|
+
const cancel = (state) => {
|
|
171
|
+
const job = running.get(state.id);
|
|
172
|
+
if (!job || !state.live)
|
|
173
|
+
throw new Error('Session is idle or disconnected');
|
|
174
|
+
if (job.abort.signal.aborted)
|
|
175
|
+
throw new Error('Session is cancelling');
|
|
176
|
+
state.status = 'cancelling';
|
|
177
|
+
state.pending = undefined;
|
|
178
|
+
state.updatedAt = new Date().toISOString();
|
|
179
|
+
job.steering.length = 0;
|
|
180
|
+
job.abort.abort(new Error('Cancelled by user'));
|
|
181
|
+
checkpoint(state);
|
|
182
|
+
};
|
|
183
|
+
const folder = join(directory, 'browser-history');
|
|
184
|
+
await mkdir(folder, { recursive: true, mode: 0o700 });
|
|
185
|
+
const listRecords = async () => {
|
|
186
|
+
const records = await store.list();
|
|
187
|
+
const primaryIds = new Set(records.map(record => record.id));
|
|
188
|
+
for (const name of await readdir(folder)) {
|
|
189
|
+
if (!/^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}\.json$/i.test(name) || primaryIds.has(name.slice(0, -5)))
|
|
190
|
+
continue;
|
|
191
|
+
try {
|
|
192
|
+
// Recover an archive-only first CLI save, but never replace an existing
|
|
193
|
+
// primary (including a damaged one) with potentially stale context.
|
|
194
|
+
if (await readSnapshot(join(directory, 'sessions', name)) !== undefined)
|
|
195
|
+
continue;
|
|
196
|
+
const saved = JSON.parse(await readFile(join(folder, name), 'utf8'));
|
|
197
|
+
if (!validBrowserSession(saved) || name !== `${saved.id}.json`)
|
|
198
|
+
continue;
|
|
199
|
+
records.push(savedSessionFields(saved));
|
|
200
|
+
}
|
|
201
|
+
catch { /* One damaged archive must not hide other retained sessions. */ }
|
|
202
|
+
}
|
|
203
|
+
return records;
|
|
204
|
+
};
|
|
205
|
+
let settings = { maxAgeDays: 30, theme: 'system' };
|
|
206
|
+
const refreshSettings = async () => {
|
|
207
|
+
try {
|
|
208
|
+
const saved = JSON.parse(await readFile(join(directory, 'browser-settings.json'), 'utf8'));
|
|
209
|
+
if (Number.isInteger(saved.maxAgeDays) && saved.maxAgeDays >= 0 && saved.maxAgeDays <= 36500)
|
|
210
|
+
settings = { maxAgeDays: saved.maxAgeDays, theme: ['system', 'light', 'dark'].includes(saved.theme) ? saved.theme : 'system' };
|
|
211
|
+
}
|
|
212
|
+
catch { /* retain defaults or last valid setting */ }
|
|
213
|
+
};
|
|
214
|
+
await refreshSettings();
|
|
215
|
+
const saves = new Map();
|
|
216
|
+
const saveGenerations = new Map();
|
|
217
|
+
const invalidateSaves = (id) => {
|
|
218
|
+
saveGenerations.set(id, (saveGenerations.get(id) ?? 0) + 1);
|
|
219
|
+
clearTimeout(checkpoints.get(id));
|
|
220
|
+
checkpoints.delete(id);
|
|
221
|
+
};
|
|
222
|
+
const dirtyCompleted = new Set();
|
|
223
|
+
const checkpoints = new Map();
|
|
224
|
+
const assertOwnership = (id) => { if (lostOwnership.has(id))
|
|
225
|
+
throw new Error('Session ownership was lost. Reopen this application before retrying.'); };
|
|
226
|
+
// `carryFiling` is false only for the save that accepts a prompt: that one deliberately files
|
|
227
|
+
// the session onto the working rail. Every other save carries the record's own filing instead.
|
|
228
|
+
const save = (state, required = false, carryFiling = true) => {
|
|
229
|
+
clearTimeout(checkpoints.get(state.id));
|
|
230
|
+
checkpoints.delete(state.id);
|
|
231
|
+
if (lostOwnership.has(state.id))
|
|
232
|
+
return required ? Promise.reject(new Error('Session ownership was lost. Reopen this application before retrying.')) : Promise.resolve();
|
|
233
|
+
// Public path redaction must not change where a retained session executes.
|
|
234
|
+
// Activity/history remain sanitized in both durable records.
|
|
235
|
+
const snapshot = { ...publicState({ ...state, pending: undefined, live: undefined }), workspace: state.workspace, updatedAt: state.updatedAt };
|
|
236
|
+
const content = JSON.stringify(snapshot);
|
|
237
|
+
const generation = saveGenerations.get(state.id) ?? 0;
|
|
238
|
+
const pending = (saves.get(state.id) ?? Promise.resolve()).catch(() => { }).then(async () => {
|
|
239
|
+
if (generation !== (saveGenerations.get(state.id) ?? 0)) {
|
|
240
|
+
if (required)
|
|
241
|
+
throw new Error('Session save was invalidated');
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
if (!required && lostOwnership.has(state.id))
|
|
245
|
+
return;
|
|
246
|
+
const assertCanWrite = writes.guard(() => {
|
|
247
|
+
assertOwnership(state.id);
|
|
248
|
+
if (generation !== (saveGenerations.get(state.id) ?? 0))
|
|
249
|
+
throw new Error('Session save was invalidated');
|
|
250
|
+
});
|
|
251
|
+
assertCanWrite();
|
|
252
|
+
// The primary record's filing and name pin are the rail's changes, not this surface's
|
|
253
|
+
// state: the desktop renames or archives through its own process, while this cached state
|
|
254
|
+
// can predate that write. Take the same per-session mutation lock every rail rename,
|
|
255
|
+
// archive, and delete takes, and read the record under it, so a change that landed while
|
|
256
|
+
// this save queued is carried forward instead of overwritten: while the rail says the user
|
|
257
|
+
// chose the name, that name and its pin survive this save (auto-titling is for unnamed
|
|
258
|
+
// sessions only); while this session is not live, the record's own filing decides — a task
|
|
259
|
+
// filed away on the desktop during an idle window of this surface stays filed away, and one
|
|
260
|
+
// let back out does not silently return. A filing made while this surface's own run is live
|
|
261
|
+
// is carried too: the desktop's guard answers from open-run claims, which a browser task does
|
|
262
|
+
// not write, so filing a running browser session is a legitimate change from there — and a
|
|
263
|
+
// cached state that predates it must not undo it. The exempt save is the acceptance save
|
|
264
|
+
// below, which passes `carryFiling = false` because work the user started belongs on the
|
|
265
|
+
// working rail.
|
|
266
|
+
let releaseRailLock;
|
|
267
|
+
try {
|
|
268
|
+
releaseRailLock = await acquireSessionMutationLock(directory, state.id);
|
|
269
|
+
}
|
|
270
|
+
catch (error) {
|
|
271
|
+
if (error instanceof SessionMutationLockHeldError) {
|
|
272
|
+
if (required)
|
|
273
|
+
throw new SessionSaveContendedError('That session is being changed in another window. Wait a moment, then try again.');
|
|
274
|
+
return; // A best-effort checkpoint skipping one round is safe; a stale overwrite is not.
|
|
275
|
+
}
|
|
276
|
+
throw error;
|
|
277
|
+
}
|
|
278
|
+
try {
|
|
279
|
+
assertCanWrite();
|
|
280
|
+
// Record the exact predecessor, not a timestamp: primary-only CLI resets
|
|
281
|
+
// must win even when they share the archive's millisecond timestamp.
|
|
282
|
+
const previous = await readSnapshot(join(directory, 'sessions', `${state.id}.json`));
|
|
283
|
+
const predecessor = previous === undefined ? undefined : JSON.parse(previous);
|
|
284
|
+
const cached = JSON.parse(content);
|
|
285
|
+
const archive = withRailFields({ ...cached, previousPrimaryDigest: predecessor === undefined ? undefined : primaryDigest(predecessor) }, predecessor, carryFiling);
|
|
286
|
+
await writeSessionSnapshot(join(folder, `${state.id}.json`), JSON.stringify(archive), assertCanWrite);
|
|
287
|
+
assertCanWrite();
|
|
288
|
+
// Both copies from one rule, so the two records a crash leaves behind agree on what the rail
|
|
289
|
+
// decided and hydrate reads one answer rather than a contradiction between them.
|
|
290
|
+
await store.save(withRailFields(savedSessionFields(cached), predecessor, carryFiling), assertCanWrite);
|
|
291
|
+
assertCanWrite();
|
|
292
|
+
if (saves.get(state.id) === pending)
|
|
293
|
+
dirtyCompleted.delete(state.id);
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
await releaseRailLock?.().catch(() => { });
|
|
297
|
+
}
|
|
298
|
+
}).catch(error => {
|
|
299
|
+
// Invalidate before exposing a rejected required write to successors in
|
|
300
|
+
// the queue: their snapshots may still contain this rejected prompt.
|
|
301
|
+
if (required && generation === (saveGenerations.get(state.id) ?? 0))
|
|
302
|
+
invalidateSaves(state.id);
|
|
303
|
+
throw error;
|
|
304
|
+
});
|
|
305
|
+
saves.set(state.id, pending);
|
|
306
|
+
void pending.finally(() => { if (saves.get(state.id) === pending)
|
|
307
|
+
saves.delete(state.id); }).catch(() => { });
|
|
308
|
+
return pending;
|
|
309
|
+
};
|
|
310
|
+
/**
|
|
311
|
+
* Persist the state a finished run left behind.
|
|
312
|
+
*
|
|
313
|
+
* A completed turn is not a checkpoint. The best-effort save skips its round while another writer holds
|
|
314
|
+
* this session's mutation lock, and a promise that resolves having written nothing tells finalization
|
|
315
|
+
* nothing: the run reports done while the durable record still says the prompt is running, and an exit
|
|
316
|
+
* before the next save loses the turn the user just watched finish. So this asks for the required save,
|
|
317
|
+
* which reports the contention instead of swallowing it, and gives the other writer's release a bounded
|
|
318
|
+
* chance. A write that fails for any other reason still rejects, because the finalizer's reporting of it
|
|
319
|
+
* — the notice on the session and the error it logs — is the answer the user gets today and must keep
|
|
320
|
+
* getting. Only contention is sat on, and only briefly.
|
|
321
|
+
*/
|
|
322
|
+
const persistCompleted = (completed) => {
|
|
323
|
+
const settle = async (budgetMs) => {
|
|
324
|
+
const deadline = Date.now() + budgetMs;
|
|
325
|
+
let retried = false;
|
|
326
|
+
for (;;) {
|
|
327
|
+
try {
|
|
328
|
+
await save(completed, true);
|
|
329
|
+
return true;
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
// A newer save owns this state now, so that path owes the durability, not this one. Losing
|
|
333
|
+
// ownership means the tab is gone, and retrying a save the close drain will not want is noise.
|
|
334
|
+
if (error instanceof Error && error.message === 'Session save was invalidated')
|
|
335
|
+
return false;
|
|
336
|
+
if (lostOwnership.has(completed.id))
|
|
337
|
+
return false;
|
|
338
|
+
// A write that really failed has nothing to wait out. It gets the single immediate retry the
|
|
339
|
+
// finalizer has always made, and then rejects so the finalizer can report it.
|
|
340
|
+
if (!(error instanceof SessionSaveContendedError)) {
|
|
341
|
+
if (retried)
|
|
342
|
+
throw error;
|
|
343
|
+
retried = true;
|
|
344
|
+
continue;
|
|
345
|
+
}
|
|
346
|
+
if (Date.now() >= deadline)
|
|
347
|
+
return false;
|
|
348
|
+
await new Promise(done => setTimeout(done, 250));
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
};
|
|
352
|
+
// Two seconds of patience covers the case that actually happens — a peer finishing its own write —
|
|
353
|
+
// and lands the turn before the run reports out. Past that the retry goes detached: a finished run
|
|
354
|
+
// must not look hung because persistence is contended, and a turn that never lands stays dirty for
|
|
355
|
+
// the close-time drain, which is the point the old skip failed.
|
|
356
|
+
// The detached pass has no listener left to tell: the run is already reported done. The state stays
|
|
357
|
+
// dirty, so the close-time drain is what answers for it if this never lands.
|
|
358
|
+
return settle(2_000).then(landed => { if (!landed)
|
|
359
|
+
void settle(60_000).catch(() => { }); });
|
|
360
|
+
};
|
|
361
|
+
// Append-only trajectory recording remains on the event path. Coalesce the
|
|
362
|
+
// expensive full archive checkpoints, then flush all state at run completion.
|
|
363
|
+
const checkpoint = (state) => {
|
|
364
|
+
if (checkpoints.has(state.id) || lostOwnership.has(state.id))
|
|
365
|
+
return;
|
|
366
|
+
checkpoints.set(state.id, setTimeout(() => {
|
|
367
|
+
void save(state).catch(error => console.error('Browser history checkpoint failed:', sanitizer.sanitize(error instanceof Error ? error.message : String(error))));
|
|
368
|
+
}, 1000));
|
|
369
|
+
};
|
|
370
|
+
/**
|
|
371
|
+
* Rename, file away, or delete a saved session: the desktop rail's own changes, made from this surface.
|
|
372
|
+
*
|
|
373
|
+
* The rules are the app server's (`renameSession`, `setSessionArchived`, `deleteSession`): the primary
|
|
374
|
+
* record is changed under the per-session mutation lock, and a session with a run in flight anywhere is
|
|
375
|
+
* refused, because that run saves the record it captured and would undo the change — or, for a delete,
|
|
376
|
+
* recreate the session. A session another process holds live (a terminal, another browser workspace) is
|
|
377
|
+
* refused too: that owner's state would keep showing, and re-saving, what it had. This surface's own
|
|
378
|
+
* idle state is updated alongside the record, because hydrate answers from it; its later saves carry
|
|
379
|
+
* the name pin and the filing forward from the record (`withRailFields`).
|
|
380
|
+
*
|
|
381
|
+
* Two fences hold for the whole change. In this process, `managing` keeps a prompt from being accepted
|
|
382
|
+
* until the change is done (`execute` checks it in the same step that marks the session running), so a
|
|
383
|
+
* delete cannot be followed by an acceptance save that recreates the session. Across processes, a
|
|
384
|
+
* session this application does not own has its ownership lease taken for the duration — the lease
|
|
385
|
+
* another browser workspace must hold to prompt it — and a live owner that cannot be reached refuses
|
|
386
|
+
* the change rather than being taken for absent.
|
|
387
|
+
*/
|
|
388
|
+
const managing = new Set();
|
|
389
|
+
const manageSession = async (id, change, body, live) => {
|
|
390
|
+
const name = change === 'rename' && typeof body.name === 'string' ? body.name.trim() : '';
|
|
391
|
+
if (change === 'rename' && (!name || name.length > 200))
|
|
392
|
+
throw new Error('Enter a name up to 200 characters');
|
|
393
|
+
if (change === 'archive' && typeof body.archived !== 'boolean')
|
|
394
|
+
throw new Error('archived must be true or false');
|
|
395
|
+
const verb = change === 'archive' ? (body.archived ? 'archive' : 'unarchive') : change;
|
|
396
|
+
const assertIdle = () => { if (running.has(id))
|
|
397
|
+
throw new Error(`That session is running. Stop the run or wait for it to finish, then ${verb} it.`); };
|
|
398
|
+
assertIdle();
|
|
399
|
+
if (managing.has(id))
|
|
400
|
+
throw new Error('That session is already being changed. Wait a moment, then try again.');
|
|
401
|
+
managing.add(id);
|
|
402
|
+
let releaseLease;
|
|
403
|
+
try {
|
|
404
|
+
const otherOwner = new Error(`That session is open in a terminal or another browser workspace. Close it there, then ${verb} it.`);
|
|
405
|
+
if (!bridges.has(id)) {
|
|
406
|
+
if (live.some(endpoint => endpoint.state.id === id))
|
|
407
|
+
throw otherOwner;
|
|
408
|
+
const owners = join(directory, 'browser-owners');
|
|
409
|
+
await mkdir(owners, { recursive: true, mode: 0o700 });
|
|
410
|
+
try {
|
|
411
|
+
releaseLease = await lockfile.lock(join(owners, id), { realpath: false, stale: 10000, update: 2000, onCompromised: () => { } });
|
|
412
|
+
}
|
|
413
|
+
catch {
|
|
414
|
+
throw otherOwner;
|
|
415
|
+
}
|
|
416
|
+
try {
|
|
417
|
+
await assertBrowserSessionUnowned(directory, id);
|
|
418
|
+
}
|
|
419
|
+
catch (error) {
|
|
420
|
+
throw error instanceof Error && error.message.startsWith('Session is owned') ? otherOwner : error;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
await changeSession(id, change, body, name, verb, assertIdle);
|
|
424
|
+
}
|
|
425
|
+
finally {
|
|
426
|
+
await releaseLease?.().catch(() => { });
|
|
427
|
+
managing.delete(id);
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
const changeSession = async (id, change, body, name, verb, assertIdle) => {
|
|
431
|
+
if (await sessionHasOpenRun(directory, id))
|
|
432
|
+
throw new Error(`That session is running in another window. Cancel the run or wait for it to finish, then ${verb} it.`);
|
|
433
|
+
if (change === 'delete') {
|
|
434
|
+
// A queued checkpoint would write the record back after the removal. Invalidated, it settles without
|
|
435
|
+
// writing; it is awaited before the lock is taken, because the save itself takes that lock.
|
|
436
|
+
invalidateSaves(id);
|
|
437
|
+
await saves.get(id)?.catch(() => { });
|
|
438
|
+
}
|
|
439
|
+
let release;
|
|
440
|
+
try {
|
|
441
|
+
release = await acquireSessionMutationLock(directory, id);
|
|
442
|
+
}
|
|
443
|
+
catch (error) {
|
|
444
|
+
if (error instanceof SessionMutationLockHeldError)
|
|
445
|
+
throw new Error('That session is being changed in another window. Wait a moment, then try again.');
|
|
446
|
+
throw error;
|
|
447
|
+
}
|
|
448
|
+
try {
|
|
449
|
+
// A prompt accepted while the lock was being taken owns the session now, and so does a desktop or
|
|
450
|
+
// terminal run that published its claim while this request waited: preparing a run holds this same
|
|
451
|
+
// lock until its claim is written, so the answer read here is the one that counts.
|
|
452
|
+
assertIdle();
|
|
453
|
+
if (await sessionHasOpenRun(directory, id))
|
|
454
|
+
throw new Error(`That session is running in another window. Cancel the run or wait for it to finish, then ${verb} it.`);
|
|
455
|
+
const primaryPath = join(directory, 'sessions', `${id}.json`);
|
|
456
|
+
const raw = await readSnapshot(primaryPath);
|
|
457
|
+
// A session whose first save reached only this surface's archive has no primary yet.
|
|
458
|
+
const archiveOnly = raw === undefined ? (await listRecords()).find(record => record.id === id) : undefined;
|
|
459
|
+
if (raw === undefined && archiveOnly === undefined)
|
|
460
|
+
throw new Error('Session not found');
|
|
461
|
+
if (change === 'delete') {
|
|
462
|
+
// The record goes first, then this surface's copy: a failure in between leaves a session that is
|
|
463
|
+
// still listed and can be deleted again, never an archive that resurrects a deleted record.
|
|
464
|
+
await removeSessionSnapshot(primaryPath);
|
|
465
|
+
await removeSessionSnapshot(join(folder, `${id}.json`));
|
|
466
|
+
dirtyCompleted.delete(id);
|
|
467
|
+
const bridge = bridges.get(id);
|
|
468
|
+
bridges.delete(id);
|
|
469
|
+
owned.delete(id);
|
|
470
|
+
const ownerPath = join(directory, 'browser-owners', id);
|
|
471
|
+
const releaseLease = leases.get(ownerPath);
|
|
472
|
+
leases.delete(ownerPath);
|
|
473
|
+
try {
|
|
474
|
+
await bridge?.close();
|
|
475
|
+
}
|
|
476
|
+
finally {
|
|
477
|
+
await releaseLease?.();
|
|
478
|
+
}
|
|
479
|
+
return;
|
|
480
|
+
}
|
|
481
|
+
let record = archiveOnly;
|
|
482
|
+
if (raw !== undefined) {
|
|
483
|
+
try {
|
|
484
|
+
record = JSON.parse(raw);
|
|
485
|
+
}
|
|
486
|
+
catch {
|
|
487
|
+
record = undefined;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (!validSavedSession(record) || record.id !== id)
|
|
491
|
+
throw new Error('That session record is damaged. Delete it, or repair the file in your sessions folder.');
|
|
492
|
+
const now = new Date().toISOString();
|
|
493
|
+
// `renamed` pins the name against the automatic titling a first prompt applies; a rename is news,
|
|
494
|
+
// so it moves the session up the list, while filing is organization and leaves the order alone.
|
|
495
|
+
const apply = (target) => change === 'rename'
|
|
496
|
+
? { ...target, name, renamed: true, updatedAt: now }
|
|
497
|
+
: { ...target, archived: body.archived };
|
|
498
|
+
// This surface's copy is what hydrate recovers a crashed run from: the prompt that was running and
|
|
499
|
+
// the turn it owes. Hydrate trusts it while it agrees with the record (or is the newer of the two),
|
|
500
|
+
// and reads a record that changed alone as another writer moving on — idle, with that turn dropped.
|
|
501
|
+
// So while the copy is current, the change goes into it first, naming the record it was made over,
|
|
502
|
+
// and the record is then written from it: a crash between the two writes leaves the copy as the
|
|
503
|
+
// newer one, and after both they agree again. A copy another writer already superseded stays as it
|
|
504
|
+
// is, and only the record changes, as the desktop's rename does.
|
|
505
|
+
let copy;
|
|
506
|
+
try {
|
|
507
|
+
const { previousPrimaryDigest, ...saved } = JSON.parse(await readFile(join(folder, `${id}.json`), 'utf8'));
|
|
508
|
+
if (validBrowserSession(saved) && saved.id === id)
|
|
509
|
+
copy = { ...saved, previousPrimaryDigest };
|
|
510
|
+
}
|
|
511
|
+
catch { /* No copy, or an unreadable one: the record alone is the session. */ }
|
|
512
|
+
const recordDigest = raw === undefined ? undefined : primaryDigest(record);
|
|
513
|
+
const copyCurrent = copy !== undefined && (recordDigest === undefined || copy.previousPrimaryDigest === recordDigest || primaryDigest(copy) === recordDigest);
|
|
514
|
+
let updated;
|
|
515
|
+
if (copy !== undefined && copyCurrent) {
|
|
516
|
+
const content = apply(copy);
|
|
517
|
+
delete content.previousPrimaryDigest;
|
|
518
|
+
await writeSessionSnapshot(join(folder, `${id}.json`), JSON.stringify({ ...content, previousPrimaryDigest: recordDigest }));
|
|
519
|
+
updated = savedSessionFields(content);
|
|
520
|
+
}
|
|
521
|
+
else
|
|
522
|
+
updated = apply(record);
|
|
523
|
+
await store.save(savedSessionFields(updated));
|
|
524
|
+
const state = owned.get(id);
|
|
525
|
+
if (state && change === 'rename') {
|
|
526
|
+
state.name = name;
|
|
527
|
+
state.renamed = true;
|
|
528
|
+
state.updatedAt = updated.updatedAt;
|
|
529
|
+
}
|
|
530
|
+
else if (state)
|
|
531
|
+
state.archived = updated.archived;
|
|
532
|
+
}
|
|
533
|
+
finally {
|
|
534
|
+
await release().catch(() => { });
|
|
535
|
+
}
|
|
536
|
+
};
|
|
537
|
+
/**
|
|
538
|
+
* The trajectory logs a session has, newest first: the runtime events this surface records for its
|
|
539
|
+
* runs; the engine's log under the session's id, where the desktop and this surface's runner record
|
|
540
|
+
* model calls; and, for a session the terminal created or continued, the terminal's own log, which
|
|
541
|
+
* the record names by `trajectoryId`.
|
|
542
|
+
*/
|
|
543
|
+
const trajectoryLogs = async (id, live) => {
|
|
544
|
+
const record = owned.get(id) ?? (await listRecords()).find(item => item.id === id) ?? live.find(endpoint => endpoint.state.id === id)?.state;
|
|
545
|
+
if (!record)
|
|
546
|
+
return undefined;
|
|
547
|
+
const terminalId = typeof record.trajectoryId === 'string' && record.trajectoryId !== id && /^[A-Za-z0-9_-]{1,64}$/.test(record.trajectoryId) ? record.trajectoryId : undefined;
|
|
548
|
+
const candidates = [
|
|
549
|
+
{ source: 'browser', folder: 'browser-trajectories', id },
|
|
550
|
+
{ source: 'engine', folder: 'trajectories', id },
|
|
551
|
+
...(terminalId === undefined ? [] : [{ source: 'terminal', folder: 'trajectories', id: terminalId }]),
|
|
552
|
+
];
|
|
553
|
+
const found = await Promise.all(candidates.map(async (log) => {
|
|
554
|
+
const path = join(directory, log.folder, `${log.id}.jsonl`);
|
|
555
|
+
try {
|
|
556
|
+
const info = await stat(path);
|
|
557
|
+
return info.isFile() ? { ...log, path, modified: info.mtimeMs } : undefined;
|
|
558
|
+
}
|
|
559
|
+
catch {
|
|
560
|
+
return undefined;
|
|
561
|
+
}
|
|
562
|
+
}));
|
|
563
|
+
return found.filter(log => log !== undefined).sort((a, b) => b.modified - a.modified);
|
|
564
|
+
};
|
|
565
|
+
const hydrate = async (session) => {
|
|
566
|
+
if (owned.has(session.id))
|
|
567
|
+
return owned.get(session.id);
|
|
568
|
+
session = savedSessionFields(session);
|
|
569
|
+
let state = { ...session, status: 'idle', events: [] };
|
|
570
|
+
try {
|
|
571
|
+
const { previousPrimaryDigest, ...saved } = JSON.parse(await readFile(join(folder, `${session.id}.json`), 'utf8'));
|
|
572
|
+
if (validBrowserSession(saved) && saved.id === session.id) {
|
|
573
|
+
const digest = primaryDigest(session);
|
|
574
|
+
const independentlyUpdated = previousPrimaryDigest !== undefined && previousPrimaryDigest !== digest && primaryDigest(saved) !== digest;
|
|
575
|
+
// A matching predecessor proves the archive committed before the
|
|
576
|
+
// primary write. Any independently updated primary stays authoritative.
|
|
577
|
+
if (previousPrimaryDigest === digest)
|
|
578
|
+
session = savedSessionFields(saved);
|
|
579
|
+
const interrupted = ['running', 'awaiting-input', 'cancelling'].includes(saved.status);
|
|
580
|
+
// A stale archive's running status must not outlive a newer primary:
|
|
581
|
+
// a CLI that completed and exited stays idle, not disconnected.
|
|
582
|
+
state = { ...saved, ...session, status: independentlyUpdated ? 'idle' : interrupted ? 'disconnected' : saved.status, pending: undefined, prompt: undefined, live: false };
|
|
583
|
+
if (interrupted && saved.prompt && !independentlyUpdated) {
|
|
584
|
+
// The status is what a recovered attempt reads as. A turn that carries only a summary is a turn that
|
|
585
|
+
// finished, and the rail would put a green mark on work this very record says was cut off.
|
|
586
|
+
const turn = { task: saved.prompt, completion: { summary: 'Run interrupted when its owner disconnected. Inspect partial workspace changes before retrying.', tests: [], status: 'interrupted' } };
|
|
587
|
+
// CLI acceptance already saves a synthetic pending turn. Only the
|
|
588
|
+
// trailing pending attempt counts: earlier identical tasks are valid.
|
|
589
|
+
const hasPending = (history) => {
|
|
590
|
+
const last = history.at(-1);
|
|
591
|
+
return last !== undefined && last.task === saved.prompt && !last.runId && last.completion.tests.length === 0 &&
|
|
592
|
+
[turn.completion.summary, 'This attempt was interrupted or is still running. Verify the workspace before continuing.'].includes(last.completion.summary);
|
|
593
|
+
};
|
|
594
|
+
if (!hasPending(state.history))
|
|
595
|
+
state.history = [...state.history, turn];
|
|
596
|
+
if (state.contextHistory !== undefined && !hasPending(state.contextHistory))
|
|
597
|
+
state.contextHistory = [...state.contextHistory, turn].slice(-6);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
catch { /* historic CLI record */ }
|
|
602
|
+
return state;
|
|
603
|
+
};
|
|
604
|
+
const execute = async (state, text) => {
|
|
605
|
+
// A completed result is already visible while its storage flush finishes.
|
|
606
|
+
// Queue a continuation behind that flush without accepting late controls.
|
|
607
|
+
const previousJob = running.get(state.id);
|
|
608
|
+
if (previousJob && !state.live)
|
|
609
|
+
await previousJob.done;
|
|
610
|
+
if (closing)
|
|
611
|
+
throw new Error('Application is shutting down');
|
|
612
|
+
if (lostOwnership.has(state.id))
|
|
613
|
+
throw new Error('Session ownership was lost. Reopen this application before retrying.');
|
|
614
|
+
if (failedRollbacks.has(state.id))
|
|
615
|
+
throw new Error('Session storage rollback failed. Repair local session storage and inspect its history before reopening this application.');
|
|
616
|
+
if (running.has(state.id))
|
|
617
|
+
throw new Error('Session already running');
|
|
618
|
+
if (managing.has(state.id))
|
|
619
|
+
throw new Error('That session is being changed. Try again in a moment.');
|
|
620
|
+
const before = structuredClone(state);
|
|
621
|
+
// A name the user set by hand is pinned: titling from the first prompt is for unnamed sessions only.
|
|
622
|
+
// The pin and the chosen name live on the primary record, and this state may have been hydrated
|
|
623
|
+
// before they were written — a rail rename while this application held the session idle. The
|
|
624
|
+
// record is therefore re-read here, where titling would otherwise overwrite the chosen name and
|
|
625
|
+
// the required save below would drop the pin with it.
|
|
626
|
+
let pinned;
|
|
627
|
+
if (!state.history.length) {
|
|
628
|
+
try {
|
|
629
|
+
const raw = await readSnapshot(join(directory, 'sessions', `${state.id}.json`));
|
|
630
|
+
const primary = raw === undefined ? undefined : JSON.parse(raw);
|
|
631
|
+
if (primary !== undefined && primary.id === state.id && primary.renamed === true && typeof primary.name === 'string')
|
|
632
|
+
pinned = primary.name;
|
|
633
|
+
}
|
|
634
|
+
catch { /* An unreadable record cannot claim the name was chosen; this state's own pin still governs. */ }
|
|
635
|
+
}
|
|
636
|
+
// Asked again after the read, in the same synchronous step that marks the session running below: a
|
|
637
|
+
// rename, filing or delete that began meanwhile owns the session until it finishes.
|
|
638
|
+
if (running.has(state.id))
|
|
639
|
+
throw new Error('Session already running');
|
|
640
|
+
if (managing.has(state.id))
|
|
641
|
+
throw new Error('That session is being changed. Try again in a moment.');
|
|
642
|
+
if (!state.history.length) {
|
|
643
|
+
if (pinned !== undefined) {
|
|
644
|
+
state.name = pinned;
|
|
645
|
+
state.renamed = true;
|
|
646
|
+
}
|
|
647
|
+
if (state.renamed !== true)
|
|
648
|
+
state.name = sessionName(text);
|
|
649
|
+
}
|
|
650
|
+
// Work this surface starts comes onto the working rail, the same rule the app server applies
|
|
651
|
+
// to a resume and to a due wake: live work never hides inside the archived subsection, whose
|
|
652
|
+
// rows carry no running or pending mark. Clearing here is what makes that intent deliberate
|
|
653
|
+
// rather than a by-product of whether this state was hydrated before or after the desktop
|
|
654
|
+
// filed the record away.
|
|
655
|
+
delete state.archived;
|
|
656
|
+
delete state.autoArchived;
|
|
657
|
+
const abort = new AbortController();
|
|
658
|
+
const job = { abort, detached: false, steering: [], done: Promise.resolve(), answer: undefined };
|
|
659
|
+
state.status = 'running';
|
|
660
|
+
state.todos = [];
|
|
661
|
+
state.prompt = text;
|
|
662
|
+
state.updatedAt = new Date().toISOString();
|
|
663
|
+
state.live = true;
|
|
664
|
+
owned.set(state.id, state);
|
|
665
|
+
running.set(state.id, job);
|
|
666
|
+
// A successful submission must already have a recoverable prompt on disk.
|
|
667
|
+
let acceptanceSucceeded = false;
|
|
668
|
+
const accepted = (async () => {
|
|
669
|
+
const archivePath = join(folder, `${state.id}.json`);
|
|
670
|
+
const primaryPath = join(directory, 'sessions', `${state.id}.json`);
|
|
671
|
+
let snapshots = [];
|
|
672
|
+
try {
|
|
673
|
+
await saves.get(state.id);
|
|
674
|
+
snapshots = await Promise.all([archivePath, primaryPath].map(async (path) => [path, await readSnapshot(path)]));
|
|
675
|
+
// The one save that files the session onto the working rail: `execute` cleared the flag
|
|
676
|
+
// above because the user started this work here.
|
|
677
|
+
await save(state, true, false);
|
|
678
|
+
assertOwnership(state.id);
|
|
679
|
+
acceptanceSucceeded = true;
|
|
680
|
+
}
|
|
681
|
+
catch (error) {
|
|
682
|
+
invalidateSaves(state.id);
|
|
683
|
+
for (const key of Object.keys(state))
|
|
684
|
+
delete state[key];
|
|
685
|
+
Object.assign(state, before);
|
|
686
|
+
// Drain even already-submitted replacements before rollback. Guarded
|
|
687
|
+
// queued snapshots cannot publish after the restored predecessor.
|
|
688
|
+
await saves.get(state.id)?.catch(() => { });
|
|
689
|
+
// Another owner may already have published newer history. A rejected
|
|
690
|
+
// acceptance must never restore snapshots after losing its lease.
|
|
691
|
+
if (lostOwnership.has(state.id)) {
|
|
692
|
+
running.delete(state.id);
|
|
693
|
+
throw error;
|
|
694
|
+
}
|
|
695
|
+
try {
|
|
696
|
+
for (const [path, content] of snapshots.reverse()) {
|
|
697
|
+
if (await readSnapshot(path) === content)
|
|
698
|
+
continue;
|
|
699
|
+
assertOwnership(state.id);
|
|
700
|
+
if (content === undefined)
|
|
701
|
+
await removeSessionSnapshot(path, writes.guard(() => assertOwnership(state.id)));
|
|
702
|
+
else
|
|
703
|
+
await writeSessionSnapshot(path, content, writes.guard(() => assertOwnership(state.id)));
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
catch (rollbackError) {
|
|
707
|
+
if (lostOwnership.has(state.id))
|
|
708
|
+
throw error;
|
|
709
|
+
// Never leave the rejected prompt recoverable from a partial archive.
|
|
710
|
+
// If even removal fails, report the durability uncertainty and refuse
|
|
711
|
+
// further runs in this process instead of treating a retry as safe.
|
|
712
|
+
failedRollbacks.add(state.id);
|
|
713
|
+
let removed = true;
|
|
714
|
+
await removeSessionSnapshot(archivePath, writes.guard(() => assertOwnership(state.id))).catch(() => { removed = false; });
|
|
715
|
+
console.error('Browser prompt rollback failed:', sanitizer.sanitize(rollbackError instanceof Error ? rollbackError.message : String(rollbackError)));
|
|
716
|
+
throw new Error(`Prompt rejected; session storage rollback failed${removed ? '' : ' and its partial archive could not be removed'}. Repair local storage and inspect session history before reopening this application.`);
|
|
717
|
+
}
|
|
718
|
+
finally {
|
|
719
|
+
running.delete(state.id);
|
|
720
|
+
}
|
|
721
|
+
throw error;
|
|
722
|
+
}
|
|
723
|
+
})();
|
|
724
|
+
job.done = (async () => {
|
|
725
|
+
await accepted;
|
|
726
|
+
if (job.detached)
|
|
727
|
+
return;
|
|
728
|
+
const trajectory = await createSessionTrajectory({ sessionId: state.id, directory: join(directory, 'browser-trajectories') });
|
|
729
|
+
trajectory.addSecrets(await refreshSecrets());
|
|
730
|
+
if (job.detached)
|
|
731
|
+
return;
|
|
732
|
+
let currentRunId;
|
|
733
|
+
const event = async (event) => {
|
|
734
|
+
if (job.detached)
|
|
735
|
+
return;
|
|
736
|
+
if (typeof event.data.runId === 'string')
|
|
737
|
+
currentRunId = event.data.runId;
|
|
738
|
+
if (/reasoning|thinking\.delta/.test(event.type))
|
|
739
|
+
return;
|
|
740
|
+
const sanitized = trajectory.sanitize(event);
|
|
741
|
+
state.events.push(sanitized);
|
|
742
|
+
boundBrowserActivity(state.events);
|
|
743
|
+
if (event.type === 'graph.todos.updated')
|
|
744
|
+
state.todos = sanitized.data.todos;
|
|
745
|
+
await trajectory.recordEvent(event);
|
|
746
|
+
state.updatedAt = new Date().toISOString();
|
|
747
|
+
checkpoint(state);
|
|
748
|
+
};
|
|
749
|
+
let questionQueue = Promise.resolve();
|
|
750
|
+
const ask = (kind, question, signal, choices) => {
|
|
751
|
+
const answer = questionQueue.then(() => new Promise((resolve, reject) => {
|
|
752
|
+
abort.signal.throwIfAborted();
|
|
753
|
+
signal.throwIfAborted();
|
|
754
|
+
const pending = { id: randomUUID(), kind, question, choices };
|
|
755
|
+
state.pending = pending;
|
|
756
|
+
state.status = 'awaiting-input';
|
|
757
|
+
const cleanup = () => { signal.removeEventListener('abort', cancelled); if (state.pending?.id === pending.id)
|
|
758
|
+
state.pending = undefined; job.answer = undefined; state.status = abort.signal.aborted ? 'cancelling' : 'running'; };
|
|
759
|
+
const cancelled = () => { cleanup(); reject(signal.reason); };
|
|
760
|
+
job.answer = answer => { cleanup(); resolve(answer); };
|
|
761
|
+
signal.addEventListener('abort', cancelled, { once: true });
|
|
762
|
+
}));
|
|
763
|
+
questionQueue = answer.catch(() => { });
|
|
764
|
+
return answer;
|
|
765
|
+
};
|
|
766
|
+
try {
|
|
767
|
+
const runTask = options.runTask ?? ((runSession, runTask, runControl) => runBrowserTask(runSession, runTask, runControl, { directory }));
|
|
768
|
+
const result = await runTask(state, text, { signal: abort.signal, steering: () => job.steering.splice(0), event, ask });
|
|
769
|
+
if (job.detached)
|
|
770
|
+
return;
|
|
771
|
+
state.status = result.status;
|
|
772
|
+
state.provider = result.provider;
|
|
773
|
+
state.model = result.model;
|
|
774
|
+
// A result that did not succeed must arrive carrying its status: the record's reader cannot tell a
|
|
775
|
+
// status-less completion from a finished one, and this surface is the only witness to what happened.
|
|
776
|
+
const terminalRecord = result.completion ?? { summary: result.status === 'cancelled' ? 'Cancelled. Inspect partial workspace changes before retrying.' : `Run ${result.status}: ${result.reason ?? ''}`, tests: [] };
|
|
777
|
+
state.history.push({ task: text, runId: result.id, completion: result.status === 'succeeded' ? terminalRecord : terminalCompletion(terminalRecord, result.status) });
|
|
778
|
+
for (const key of ['inputTokens', 'outputTokens', 'requests'])
|
|
779
|
+
state.usage[key] += result.usage[key];
|
|
780
|
+
// Sparse: providers that report no cache counts keep the persisted shape unchanged.
|
|
781
|
+
const cacheRead = (state.usage.cacheRead ?? 0) + (result.usage.cacheRead ?? 0);
|
|
782
|
+
if (cacheRead > 0)
|
|
783
|
+
state.usage.cacheRead = cacheRead;
|
|
784
|
+
const cacheWrite = (state.usage.cacheWrite ?? 0) + (result.usage.cacheWrite ?? 0);
|
|
785
|
+
if (cacheWrite > 0)
|
|
786
|
+
state.usage.cacheWrite = cacheWrite;
|
|
787
|
+
// The run's final widget values are the session's newest, exactly as the CLI's and the
|
|
788
|
+
// app-server's finalizers treat them: assigning the result's (possibly absent) set both
|
|
789
|
+
// carries updates and clears values a previous graph left behind, so the record this
|
|
790
|
+
// browser saves never shows stale sections beside this run's plan.
|
|
791
|
+
state.widgets = result.widgets;
|
|
792
|
+
}
|
|
793
|
+
catch (error) {
|
|
794
|
+
if (job.detached)
|
|
795
|
+
return;
|
|
796
|
+
state.status = abort.signal.aborted ? 'cancelled' : 'error';
|
|
797
|
+
state.history.push({ task: text, runId: currentRunId, completion: terminalCompletion({ summary: abort.signal.aborted ? 'Cancelled. Inspect partial workspace changes before retrying.' : String(trajectory.sanitize(error instanceof Error ? error.message : String(error))), tests: [] }, abort.signal.aborted ? 'cancelled' : 'infrastructure_error') });
|
|
798
|
+
}
|
|
799
|
+
finally {
|
|
800
|
+
if (!job.detached) {
|
|
801
|
+
state.contextHistory = state.contextHistory === undefined ? state.history.slice(-6) : [...state.contextHistory, state.history[state.history.length - 1]].slice(-6);
|
|
802
|
+
state.prompt = undefined;
|
|
803
|
+
state.pending = undefined;
|
|
804
|
+
state.live = false;
|
|
805
|
+
state.updatedAt = new Date().toISOString();
|
|
806
|
+
dirtyCompleted.add(state.id);
|
|
807
|
+
// Finalization failures must not rewrite the completed run as an
|
|
808
|
+
// initialization failure or append a second turn for the same prompt.
|
|
809
|
+
const finalized = await Promise.allSettled([persistCompleted(state), trajectory.flush()]);
|
|
810
|
+
for (const outcome of finalized)
|
|
811
|
+
if (outcome.status === 'rejected') {
|
|
812
|
+
const message = `Session finalization failed: ${String(trajectory.sanitize(outcome.reason instanceof Error ? outcome.reason.message : String(outcome.reason)))}`;
|
|
813
|
+
state.events.push({ type: 'browser.notice', time: new Date().toISOString(), data: { message } });
|
|
814
|
+
boundBrowserActivity(state.events);
|
|
815
|
+
dirtyCompleted.add(state.id);
|
|
816
|
+
console.error(message);
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
})().catch(async (error) => { if (!acceptanceSucceeded || job.detached)
|
|
821
|
+
return; state.status = 'error'; state.pending = undefined; state.prompt = undefined; state.live = false; state.history.push({ task: text, completion: terminalCompletion({ summary: 'Session initialization failed. Check provider configuration and local session storage, then retry.', tests: [] }, 'infrastructure_error') }); state.contextHistory = state.contextHistory === undefined ? state.history.slice(-6) : [...state.contextHistory, state.history[state.history.length - 1]].slice(-6); dirtyCompleted.add(state.id); await save(state).catch(() => { }); console.error('Browser session initialization failed:', error instanceof Error ? error.message : String(error)); }).finally(() => { if (running.get(state.id) === job)
|
|
822
|
+
running.delete(state.id); });
|
|
823
|
+
return accepted;
|
|
824
|
+
};
|
|
825
|
+
const server = createServer(async (req, res) => {
|
|
826
|
+
try {
|
|
827
|
+
const path = new URL(req.url || '/', origin).pathname;
|
|
828
|
+
if (!req.headers.host || req.headers.host !== new URL(origin).host || req.headers.origin && req.headers.origin !== origin) {
|
|
829
|
+
browserReply(res, 403, { error: 'Invalid origin' });
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
const assets = { '/': ['index.html', 'text/html'], '/app.js': ['app.js', 'text/javascript'], '/style.css': ['style.css', 'text/css'], '/andorra-logo.png': ['andorra-logo.png', 'image/png'] };
|
|
833
|
+
if (req.method === 'GET' && assets[path]) {
|
|
834
|
+
const [file, type] = assets[path];
|
|
835
|
+
const content = await readFile(new URL(`./browser-ui/${file}`, import.meta.url));
|
|
836
|
+
res.writeHead(200, { 'Content-Type': type.startsWith('text/') || type === 'text/javascript' ? `${type}; charset=utf-8` : type, 'Cache-Control': 'no-store', 'Content-Security-Policy': "default-src 'self'; script-src 'self'; style-src 'self'; connect-src 'self'; frame-ancestors 'none'; base-uri 'none'", 'X-Content-Type-Options': 'nosniff' });
|
|
837
|
+
res.end(content);
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
840
|
+
if (!browserAuthorized(req, token, origin)) {
|
|
841
|
+
browserReply(res, 401, { error: 'Reopen using /browser.' });
|
|
842
|
+
return;
|
|
843
|
+
}
|
|
844
|
+
await refreshSecrets();
|
|
845
|
+
const live = await discoverBrowserSessions(directory);
|
|
846
|
+
if (req.method === 'GET' && path === '/api/state') {
|
|
847
|
+
await refreshSettings();
|
|
848
|
+
const records = await listRecords();
|
|
849
|
+
const states = await Promise.all(records.map(hydrate));
|
|
850
|
+
const merged = new Map(states.map(state => [state.id, state]));
|
|
851
|
+
for (const state of owned.values())
|
|
852
|
+
merged.set(state.id, state);
|
|
853
|
+
for (const endpoint of live)
|
|
854
|
+
merged.set(endpoint.state.id, endpoint.state);
|
|
855
|
+
const cutoff = Date.now() - settings.maxAgeDays * 86400000;
|
|
856
|
+
const sessions = [...merged.values()].filter(state => state.live || !settings.maxAgeDays || Date.parse(state.updatedAt) >= cutoff).sort((a, b) => Date.parse(b.updatedAt) - Date.parse(a.updatedAt));
|
|
857
|
+
browserReply(res, 200, { sessions: sessions.map(publicState), settings });
|
|
858
|
+
return;
|
|
859
|
+
}
|
|
860
|
+
const trajectoryRoute = /^\/api\/sessions\/([a-f0-9-]{36})\/trajectory(\/download)?$/.exec(path);
|
|
861
|
+
if (req.method === 'GET' && trajectoryRoute) {
|
|
862
|
+
const [, id, download] = trajectoryRoute;
|
|
863
|
+
const logs = await trajectoryLogs(id, live);
|
|
864
|
+
if (!logs) {
|
|
865
|
+
browserReply(res, 404, { error: 'Session not found' });
|
|
866
|
+
return;
|
|
867
|
+
}
|
|
868
|
+
const query = new URL(req.url || '/', origin).searchParams;
|
|
869
|
+
const log = logs.find(item => item.source === query.get('source')) ?? logs[0];
|
|
870
|
+
if (download) {
|
|
871
|
+
if (!log) {
|
|
872
|
+
browserReply(res, 404, { error: 'This session has no trajectory yet' });
|
|
873
|
+
return;
|
|
874
|
+
}
|
|
875
|
+
// Record by record through the sanitizer, as every other answer here goes: a key added to the
|
|
876
|
+
// configuration after a record was written is still kept out of what leaves this server. The
|
|
877
|
+
// record is parsed first, because the sanitizer replaces a whole JSON text above its size limit
|
|
878
|
+
// with a plain-text marker — which would turn the large records the panel sends people here for
|
|
879
|
+
// into lines that are not JSON. A line that is not JSON (a torn tail) is redacted as text.
|
|
880
|
+
const downloadLine = (line) => {
|
|
881
|
+
let record;
|
|
882
|
+
try {
|
|
883
|
+
record = JSON.parse(line);
|
|
884
|
+
}
|
|
885
|
+
catch {
|
|
886
|
+
return String(sanitizer.sanitize(line));
|
|
887
|
+
}
|
|
888
|
+
return JSON.stringify(sanitizer.sanitize(record));
|
|
889
|
+
};
|
|
890
|
+
res.writeHead(200, { 'Content-Type': 'application/x-ndjson; charset=utf-8', 'Content-Disposition': `attachment; filename="${id}-${log.source}.jsonl"`, 'Cache-Control': 'no-store', 'X-Content-Type-Options': 'nosniff' });
|
|
891
|
+
const input = createReadStream(log.path);
|
|
892
|
+
const lines = createInterface({ input, crlfDelay: Infinity });
|
|
893
|
+
// A client that goes away while the response is backed up never drains it, so the wait also ends
|
|
894
|
+
// when the response closes, and the file is released either way.
|
|
895
|
+
const closed = new Promise(done => res.once('close', done));
|
|
896
|
+
// The headers are out, so a read that fails part way can only cut the download short.
|
|
897
|
+
try {
|
|
898
|
+
for await (const line of lines) {
|
|
899
|
+
if (res.destroyed)
|
|
900
|
+
break;
|
|
901
|
+
if (!res.write(`${downloadLine(line)}\n`))
|
|
902
|
+
await Promise.race([new Promise(done => res.once('drain', done)), closed]);
|
|
903
|
+
}
|
|
904
|
+
if (!res.destroyed)
|
|
905
|
+
res.end();
|
|
906
|
+
}
|
|
907
|
+
catch {
|
|
908
|
+
res.destroy();
|
|
909
|
+
}
|
|
910
|
+
finally {
|
|
911
|
+
lines.close();
|
|
912
|
+
input.destroy();
|
|
913
|
+
}
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
916
|
+
const page = log === undefined ? undefined : await readSessionTrajectory(directory, log.id, Number(query.get('offset') ?? 0), undefined, log.folder);
|
|
917
|
+
browserReply(res, 200, { sources: logs.map(item => item.source), source: log?.source, page: page && { ...page, path: undefined, records: sanitizer.sanitize(page.records) } });
|
|
918
|
+
return;
|
|
919
|
+
}
|
|
920
|
+
if (req.method !== 'POST') {
|
|
921
|
+
browserReply(res, 404, { error: 'Not found' });
|
|
922
|
+
return;
|
|
923
|
+
}
|
|
924
|
+
if (closing) {
|
|
925
|
+
browserReply(res, 503, { error: 'Application is shutting down' });
|
|
926
|
+
return;
|
|
927
|
+
}
|
|
928
|
+
const body = await browserBody(req);
|
|
929
|
+
if (path === '/api/settings') {
|
|
930
|
+
if (!Number.isInteger(body.maxAgeDays) || Number(body.maxAgeDays) < 0 || Number(body.maxAgeDays) > 36500)
|
|
931
|
+
throw new Error('Days must be an integer from 0 to 36500 (0 shows all history)');
|
|
932
|
+
if (body.theme !== undefined && !['system', 'light', 'dark'].includes(String(body.theme)))
|
|
933
|
+
throw new Error('Theme must be system, light or dark');
|
|
934
|
+
const candidate = { maxAgeDays: Number(body.maxAgeDays), theme: body.theme === undefined ? settings.theme : String(body.theme) };
|
|
935
|
+
// Settings are global to the shared configuration directory: serialize
|
|
936
|
+
// the replacement in process and across applications so a stalled write
|
|
937
|
+
// cannot resume after a newer one was already acknowledged.
|
|
938
|
+
await writes.run(async () => {
|
|
939
|
+
const release = await lockfile.lock(join(directory, 'browser-settings.lock'), { realpath: false, stale: 10000, update: 2000, onCompromised: () => { } });
|
|
940
|
+
try {
|
|
941
|
+
await writeSessionSnapshot(join(directory, 'browser-settings.json'), JSON.stringify(candidate));
|
|
942
|
+
}
|
|
943
|
+
finally {
|
|
944
|
+
await release().catch(() => { });
|
|
945
|
+
}
|
|
946
|
+
});
|
|
947
|
+
settings = candidate;
|
|
948
|
+
browserReply(res, 200, settings);
|
|
949
|
+
return;
|
|
950
|
+
}
|
|
951
|
+
if (path === '/api/sessions') {
|
|
952
|
+
let projectPath = body.workspace;
|
|
953
|
+
if (body.projectSessionId !== undefined) {
|
|
954
|
+
if (typeof body.projectSessionId !== 'string')
|
|
955
|
+
throw new Error('Invalid project session');
|
|
956
|
+
// Display paths may be redacted. Resolve the selected project from
|
|
957
|
+
// canonical owned/persisted metadata, then an unsaved live CLI session.
|
|
958
|
+
const source = owned.get(body.projectSessionId)
|
|
959
|
+
?? (await listRecords()).find(record => record.id === body.projectSessionId)
|
|
960
|
+
?? live.find(endpoint => endpoint.state.id === body.projectSessionId)?.state;
|
|
961
|
+
if (!source)
|
|
962
|
+
throw new Error('Project session no longer exists. Refresh and retry.');
|
|
963
|
+
projectPath = source.workspace;
|
|
964
|
+
}
|
|
965
|
+
if (typeof projectPath !== 'string' || !projectPath.trim())
|
|
966
|
+
throw new Error('Choose a project folder');
|
|
967
|
+
const workspace = await realpath(resolve(projectPath));
|
|
968
|
+
if (!(await stat(workspace)).isDirectory())
|
|
969
|
+
throw new Error('Project must be an existing folder');
|
|
970
|
+
const state = { version: 1, id: randomUUID(), name: 'New coding session', workspace, projectId: projectIdentity(workspace), updatedAt: new Date().toISOString(), history: [], contextHistory: [], usage: { requests: 0, inputTokens: 0, outputTokens: 0 }, status: 'idle', events: [] };
|
|
971
|
+
await ensureOwner(state, true);
|
|
972
|
+
try {
|
|
973
|
+
await save(state, true);
|
|
974
|
+
// This handler is the browser surface's one conversation-creation point: the run path
|
|
975
|
+
// only ever reopens a session this stored, so without this the browser's sessions are
|
|
976
|
+
// missing from the conversation counts entirely.
|
|
977
|
+
// Awaited: the creation handler is not latency-critical, and a queued start that lands
|
|
978
|
+
// after the response would race a caller closing the engine on the same home.
|
|
979
|
+
await currentGraphSubject().catch(() => undefined).then(subject => reportSessionStarted({ home: directory, surface: configuredSurface('desktop'), workspace, ...(subject === undefined ? {} : { subject }) })).catch(() => { });
|
|
980
|
+
}
|
|
981
|
+
catch (error) {
|
|
982
|
+
const bridge = bridges.get(state.id);
|
|
983
|
+
bridges.delete(state.id);
|
|
984
|
+
owned.delete(state.id);
|
|
985
|
+
const ownerPath = join(directory, 'browser-owners', state.id);
|
|
986
|
+
const release = leases.get(ownerPath);
|
|
987
|
+
leases.delete(ownerPath);
|
|
988
|
+
// This fresh ID was never acknowledged; discard its partial archive.
|
|
989
|
+
// Submit deletion independently of bridge cleanup and retain the lease
|
|
990
|
+
// until both settle, even if close fails or shutdown starts meanwhile.
|
|
991
|
+
const removal = lostOwnership.has(state.id) ? Promise.resolve() : Promise.allSettled([
|
|
992
|
+
removeSessionSnapshot(join(folder, `${state.id}.json`), writes.guard(() => assertOwnership(state.id))),
|
|
993
|
+
// The required save can commit the primary and still reject after;
|
|
994
|
+
// this fresh id was never acknowledged, so discard that record too.
|
|
995
|
+
removeSessionSnapshot(join(directory, 'sessions', `${state.id}.json`), writes.guard(() => assertOwnership(state.id))),
|
|
996
|
+
]).then(results => { const failure = results.find(result => result.status === 'rejected'); if (failure)
|
|
997
|
+
throw failure.reason; });
|
|
998
|
+
try {
|
|
999
|
+
const cleanup = await Promise.allSettled([bridge?.close(), removal]);
|
|
1000
|
+
const failure = cleanup.find(result => result.status === 'rejected');
|
|
1001
|
+
if (failure?.status === 'rejected')
|
|
1002
|
+
throw failure.reason;
|
|
1003
|
+
}
|
|
1004
|
+
finally {
|
|
1005
|
+
await release?.();
|
|
1006
|
+
}
|
|
1007
|
+
throw error;
|
|
1008
|
+
}
|
|
1009
|
+
browserReply(res, 201, publicState(state));
|
|
1010
|
+
return;
|
|
1011
|
+
}
|
|
1012
|
+
const manage = /^\/api\/sessions\/([a-f0-9-]{36})\/(rename|archive|delete)$/.exec(path);
|
|
1013
|
+
if (manage) {
|
|
1014
|
+
await manageSession(manage[1], manage[2], body, live);
|
|
1015
|
+
browserReply(res, 200, { ok: true });
|
|
1016
|
+
return;
|
|
1017
|
+
}
|
|
1018
|
+
const match = /^\/api\/sessions\/([a-f0-9-]{36})\/(prompt|steer|cancel|answer)$/.exec(path);
|
|
1019
|
+
if (!match) {
|
|
1020
|
+
browserReply(res, 404, { error: 'Not found' });
|
|
1021
|
+
return;
|
|
1022
|
+
}
|
|
1023
|
+
const [, id, action] = match;
|
|
1024
|
+
const endpoint = live.find(item => item.state.id === id);
|
|
1025
|
+
if (endpoint) {
|
|
1026
|
+
// Acceptance has no deadline: the owner may already be persisting it.
|
|
1027
|
+
// Shutdown only disconnects transport; it cannot reject or undo a run.
|
|
1028
|
+
if (closing) {
|
|
1029
|
+
res.destroy();
|
|
1030
|
+
return;
|
|
1031
|
+
}
|
|
1032
|
+
const forwarding = new AbortController();
|
|
1033
|
+
forwardedRequests.add(forwarding);
|
|
1034
|
+
try {
|
|
1035
|
+
const signal = action === 'prompt' ? forwarding.signal : AbortSignal.any([forwarding.signal, AbortSignal.timeout(5000)]);
|
|
1036
|
+
const upstream = await fetch(`${endpoint.origin}/${action}`, { method: 'POST', headers: { authorization: `Bearer ${endpoint.token}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ ...body, sessionId: id }), signal });
|
|
1037
|
+
browserReply(res, upstream.status, await upstream.json());
|
|
1038
|
+
}
|
|
1039
|
+
catch (error) {
|
|
1040
|
+
// A dropped transport after submission leaves the outcome unknown:
|
|
1041
|
+
// the owner may have durably accepted the prompt and be running it.
|
|
1042
|
+
// Destroy instead of returning a definite retryable rejection.
|
|
1043
|
+
if (forwarding.signal.aborted || action === 'prompt') {
|
|
1044
|
+
res.destroy();
|
|
1045
|
+
return;
|
|
1046
|
+
}
|
|
1047
|
+
throw error;
|
|
1048
|
+
}
|
|
1049
|
+
finally {
|
|
1050
|
+
forwardedRequests.delete(forwarding);
|
|
1051
|
+
}
|
|
1052
|
+
return;
|
|
1053
|
+
}
|
|
1054
|
+
const record = (await listRecords()).find(item => item.id === id);
|
|
1055
|
+
if (!record) {
|
|
1056
|
+
browserReply(res, 404, { error: 'Session not found' });
|
|
1057
|
+
return;
|
|
1058
|
+
}
|
|
1059
|
+
const state = await hydrate(record);
|
|
1060
|
+
const job = running.get(id);
|
|
1061
|
+
if (action === 'prompt' || action === 'steer') {
|
|
1062
|
+
if (typeof body.text !== 'string' || !body.text.trim() || body.text.length > 100000)
|
|
1063
|
+
throw new Error('Enter a prompt up to 100000 characters');
|
|
1064
|
+
if (action === 'prompt') {
|
|
1065
|
+
await ensureOwner(state);
|
|
1066
|
+
await execute(state, body.text);
|
|
1067
|
+
}
|
|
1068
|
+
else {
|
|
1069
|
+
if (!job || !state.live)
|
|
1070
|
+
throw new Error('Session is idle or disconnected');
|
|
1071
|
+
if (job.abort.signal.aborted)
|
|
1072
|
+
throw new Error('Session is cancelling');
|
|
1073
|
+
job.steering.push(body.text);
|
|
1074
|
+
}
|
|
1075
|
+
}
|
|
1076
|
+
else if (action === 'cancel') {
|
|
1077
|
+
cancel(state);
|
|
1078
|
+
}
|
|
1079
|
+
else {
|
|
1080
|
+
if (!job?.answer || !state.pending || body.id !== state.pending.id || typeof body.answer !== 'string')
|
|
1081
|
+
throw new Error('Question is no longer pending');
|
|
1082
|
+
if (state.pending.choices && !state.pending.choices.some(choice => choice.id === body.answer))
|
|
1083
|
+
throw new Error('Choose a listed answer');
|
|
1084
|
+
job.answer(body.answer);
|
|
1085
|
+
}
|
|
1086
|
+
browserReply(res, 200, { ok: true });
|
|
1087
|
+
}
|
|
1088
|
+
catch (error) {
|
|
1089
|
+
browserReply(res, 400, { error: error instanceof Error ? error.message : String(error) });
|
|
1090
|
+
}
|
|
1091
|
+
});
|
|
1092
|
+
await new Promise((resolve, reject) => { server.once('error', reject); server.listen(0, '127.0.0.1', resolve); });
|
|
1093
|
+
origin = `http://127.0.0.1:${server.address().port}`;
|
|
1094
|
+
return { origin, token, url: `${origin}/#token=${token}`, async close() {
|
|
1095
|
+
closing = true;
|
|
1096
|
+
for (const forwarding of forwardedRequests)
|
|
1097
|
+
forwarding.abort();
|
|
1098
|
+
// A provisional bridge stuck in descriptor publication must lose its
|
|
1099
|
+
// listener now; its acquisition promise is left to the stalled storage.
|
|
1100
|
+
for (const cancellation of acquisitionSignals)
|
|
1101
|
+
cancellation.abort();
|
|
1102
|
+
// An acquisition already waiting on discovery, a lock or bridge setup must
|
|
1103
|
+
// get a bounded grace period. Late arrivals observe closing and dispose of
|
|
1104
|
+
// their own bridge and lease; unpublished leases stay with that cleanup.
|
|
1105
|
+
let acquisitionTimer;
|
|
1106
|
+
try {
|
|
1107
|
+
await Promise.race([
|
|
1108
|
+
Promise.allSettled([...ownershipAcquisitions]),
|
|
1109
|
+
new Promise(resolve => { acquisitionTimer = setTimeout(resolve, 2000); }),
|
|
1110
|
+
]);
|
|
1111
|
+
}
|
|
1112
|
+
finally {
|
|
1113
|
+
clearTimeout(acquisitionTimer);
|
|
1114
|
+
}
|
|
1115
|
+
for (const job of running.values())
|
|
1116
|
+
job.abort.abort();
|
|
1117
|
+
// Providers/tools may ignore abort. Give cooperative runs time to persist
|
|
1118
|
+
// their result, then fence late callbacks before releasing their ownership.
|
|
1119
|
+
let drainTimer;
|
|
1120
|
+
try {
|
|
1121
|
+
await Promise.race([
|
|
1122
|
+
Promise.allSettled([...running.values()].map(job => job.done)),
|
|
1123
|
+
new Promise(resolve => { drainTimer = setTimeout(resolve, 2000); }),
|
|
1124
|
+
]);
|
|
1125
|
+
}
|
|
1126
|
+
finally {
|
|
1127
|
+
clearTimeout(drainTimer);
|
|
1128
|
+
}
|
|
1129
|
+
const interruptedSaves = [];
|
|
1130
|
+
for (const [id, job] of running) {
|
|
1131
|
+
job.detached = true;
|
|
1132
|
+
// Keep the accepted prompt recoverable as an interrupted run. Save the
|
|
1133
|
+
// latest observed events before fencing all later writes from this owner.
|
|
1134
|
+
const state = owned.get(id);
|
|
1135
|
+
if (state)
|
|
1136
|
+
interruptedSaves.push(save(state));
|
|
1137
|
+
clearTimeout(checkpoints.get(id));
|
|
1138
|
+
checkpoints.delete(id);
|
|
1139
|
+
}
|
|
1140
|
+
// Completed jobs leave running even when both final writes fail. Retry
|
|
1141
|
+
// their retained state while ownership and the bounded flush still apply.
|
|
1142
|
+
for (const id of dirtyCompleted) {
|
|
1143
|
+
const state = owned.get(id);
|
|
1144
|
+
if (state && !running.has(id) && !failedRollbacks.has(id))
|
|
1145
|
+
interruptedSaves.push(save(state));
|
|
1146
|
+
}
|
|
1147
|
+
// A checkpoint can itself be stuck in storage. Bound the entire flush,
|
|
1148
|
+
// then fence queued saves and atomic replacements before releasing leases.
|
|
1149
|
+
try {
|
|
1150
|
+
await Promise.race([
|
|
1151
|
+
Promise.allSettled([...saves.values(), ...interruptedSaves]),
|
|
1152
|
+
new Promise(resolve => { drainTimer = setTimeout(resolve, 2000); }),
|
|
1153
|
+
]);
|
|
1154
|
+
}
|
|
1155
|
+
finally {
|
|
1156
|
+
clearTimeout(drainTimer);
|
|
1157
|
+
}
|
|
1158
|
+
writes.close();
|
|
1159
|
+
for (const id of owned.keys()) {
|
|
1160
|
+
lostOwnership.add(id);
|
|
1161
|
+
clearTimeout(checkpoints.get(id));
|
|
1162
|
+
checkpoints.delete(id);
|
|
1163
|
+
}
|
|
1164
|
+
// Submitted OS replacements cannot be cancelled: retain discovery and
|
|
1165
|
+
// lease heartbeats until they settle, but close every HTTP listener now.
|
|
1166
|
+
const replacementDrain = writes.replacements.size ? writes.settled() : undefined;
|
|
1167
|
+
const bridgeResults = await Promise.allSettled([...bridges.values()].map(bridge => bridge.close(replacementDrain)));
|
|
1168
|
+
const releaseLeases = () => Promise.all([...leases.values()].map(release => release().catch(() => { })));
|
|
1169
|
+
if (replacementDrain)
|
|
1170
|
+
void replacementDrain.then(releaseLeases).catch(() => { });
|
|
1171
|
+
else
|
|
1172
|
+
await releaseLeases();
|
|
1173
|
+
try {
|
|
1174
|
+
await sanitizer.flush();
|
|
1175
|
+
}
|
|
1176
|
+
finally {
|
|
1177
|
+
server.closeAllConnections();
|
|
1178
|
+
await new Promise(resolve => server.close(() => resolve()));
|
|
1179
|
+
}
|
|
1180
|
+
const failure = bridgeResults.find(result => result.status === 'rejected');
|
|
1181
|
+
if (failure?.status === 'rejected')
|
|
1182
|
+
throw failure.reason;
|
|
1183
|
+
} };
|
|
1184
|
+
}
|
|
1185
|
+
export function openBrowserUrl(url) {
|
|
1186
|
+
const command = process.platform === 'win32' ? 'rundll32.exe' : process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
1187
|
+
execFile(command, process.platform === 'win32' ? ['url.dll,FileProtocolHandler', url] : [url], { windowsHide: true, timeout: 10000 }, error => { if (error)
|
|
1188
|
+
process.stderr.write(`Open ${url} in your browser.\n`); });
|
|
1189
|
+
}
|