@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,1356 @@
|
|
|
1
|
+
import { permissionMode } from './permissions.js';
|
|
2
|
+
import { DecisionManager } from './decision/DecisionManager.js';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
4
|
+
import { TodoStore } from './todos.js';
|
|
5
|
+
import { WidgetStore } from './widgets.js';
|
|
6
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
7
|
+
import { validateGraph, nodeOutcomes, maxNodeVisitsOf } from './graphs.js';
|
|
8
|
+
import { executeModifiedAgent, matchesOutput } from './agent-modifiers.js';
|
|
9
|
+
import { executeAgentNode } from './agent-execution.js';
|
|
10
|
+
import { resolveLimits, stopReasonSentence, withinToolBudget, generateWithUsage } from './runtime.js';
|
|
11
|
+
import { bindUserWaits, createRuntimeBudget } from './deadline.js';
|
|
12
|
+
import { capabilityTools } from './capabilities.js';
|
|
13
|
+
import { canonicalToolName } from './tool-names.js';
|
|
14
|
+
import { ArtifactStore } from './artifacts.js';
|
|
15
|
+
import { resolveValue, validateValue, nodeOutputSchema } from './handoffs.js';
|
|
16
|
+
import { memorySearchTool } from './memory/tools/memorySearchTool.js';
|
|
17
|
+
import { resolveEfficiency } from './efficiency.js';
|
|
18
|
+
import { collectWorkspaceFacts } from './workspace-facts.js';
|
|
19
|
+
import { MemoryManager } from './memory/MemoryManager.js';
|
|
20
|
+
import { loadConfig, resolveMemoryConfig } from './config.js';
|
|
21
|
+
import { elapsedMs, monotonicNow } from './duration.js';
|
|
22
|
+
import { dashboardAdapter } from './dashboard.js';
|
|
23
|
+
import { createRunTelemetry, mergeRunTelemetry, recordAttempt, recordTestCommand, recordToolFailure, recordToolUse } from './telemetry/capture.js';
|
|
24
|
+
import { isTestCommandLine } from './telemetry/classify.js';
|
|
25
|
+
/**
|
|
26
|
+
* Fold one node's telemetry and failure classification into the run.
|
|
27
|
+
*
|
|
28
|
+
* A graph run loses the structured provider-failure marker unless it is copied here, which would
|
|
29
|
+
* report every provider outage as `infrastructure`. The same is true of the context-overflow
|
|
30
|
+
* classification: copying it keeps an over-window input out of the provider-failure rate.
|
|
31
|
+
*/
|
|
32
|
+
function absorbTelemetry(result, outcome) {
|
|
33
|
+
if (outcome.telemetry)
|
|
34
|
+
mergeRunTelemetry(result.telemetry, outcome.telemetry);
|
|
35
|
+
if (outcome.providerRequestFailed)
|
|
36
|
+
result.providerRequestFailed = true;
|
|
37
|
+
if (outcome.providerOverflow)
|
|
38
|
+
result.providerOverflow = true;
|
|
39
|
+
}
|
|
40
|
+
const freeze = (value) => {
|
|
41
|
+
for (const child of Object.values(value))
|
|
42
|
+
if (child && typeof child === 'object')
|
|
43
|
+
freeze(child);
|
|
44
|
+
Object.freeze(value);
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Tool calls still available to one node when the run ceiling is optional.
|
|
48
|
+
* Unlimited stays undefined; subtracting from an absent ceiling would produce NaN
|
|
49
|
+
* and hand every downstream branch a meaningless budget.
|
|
50
|
+
* @param maxToolCalls - run ceiling, or undefined for unlimited.
|
|
51
|
+
* @param used - tool calls the run has already consumed.
|
|
52
|
+
* @returns the remaining allowance, or undefined for unlimited.
|
|
53
|
+
*/
|
|
54
|
+
function remainingToolBudget(maxToolCalls, used) {
|
|
55
|
+
return maxToolCalls === undefined ? undefined : maxToolCalls - used;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Split the remaining run allowance across concurrent branches.
|
|
59
|
+
* @param maxToolCalls - run ceiling, or undefined for unlimited.
|
|
60
|
+
* @param used - tool calls the run has already consumed.
|
|
61
|
+
* @param branches - number of branches sharing the remaining allowance.
|
|
62
|
+
* @returns each branch's share, or undefined when the run is unlimited.
|
|
63
|
+
*/
|
|
64
|
+
function shareToolBudget(maxToolCalls, used, branches) {
|
|
65
|
+
const remaining = remainingToolBudget(maxToolCalls, used);
|
|
66
|
+
return remaining === undefined ? undefined : Math.floor(remaining / branches);
|
|
67
|
+
}
|
|
68
|
+
const equal = isDeepStrictEqual;
|
|
69
|
+
function mergeInputs(target, incoming, nodeId) {
|
|
70
|
+
for (const [key, value] of Object.entries(incoming)) {
|
|
71
|
+
if (Object.hasOwn(target, key) && !equal(target[key], value))
|
|
72
|
+
throw new Error(`Node ${nodeId}: conflicting input "${key}" from incoming routes. Rename the mappings or use matching values.`);
|
|
73
|
+
target[key] = value;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/** Graph stages route validated completions only. Internal delegation remains inside executeAgentNode. */
|
|
77
|
+
export async function runGraph(graph, options) {
|
|
78
|
+
if (!options.memory || !options.decisionManager) {
|
|
79
|
+
const config = await loadConfig();
|
|
80
|
+
options = { ...options, decisionManager: options.decisionManager ?? new DecisionManager({ config: config.decisions, onEvent: options.onEvent }), memory: options.memory ?? await MemoryManager.create({
|
|
81
|
+
config: resolveMemoryConfig(config), workspace: options.context.workspace, onEvent: options.onEvent, getPermissions: () => permissionMode(options.context),
|
|
82
|
+
}) };
|
|
83
|
+
}
|
|
84
|
+
options.memory.setPermissionsReader(() => permissionMode(options.context));
|
|
85
|
+
const pinned = validateGraph(graph);
|
|
86
|
+
freeze(pinned);
|
|
87
|
+
const limits = resolveLimits(options.limits);
|
|
88
|
+
for (const [name, value] of Object.entries(limits)) {
|
|
89
|
+
if (value === undefined)
|
|
90
|
+
continue;
|
|
91
|
+
if (!Number.isSafeInteger(value) || value < (name === 'maxCompletionRepairs' || name === 'maxToolCalls' ? 0 : 1))
|
|
92
|
+
throw new Error(`Invalid limit: ${name}`);
|
|
93
|
+
}
|
|
94
|
+
// Only an explicit graph ceiling can tighten the run allowance; when neither is set
|
|
95
|
+
// the run is unbounded and stays undefined rather than becoming a fabricated number.
|
|
96
|
+
for (const key of ['maxToolCalls', 'wallTimeMs']) {
|
|
97
|
+
const pinnedLimit = pinned.limits?.[key];
|
|
98
|
+
if (pinnedLimit === undefined)
|
|
99
|
+
continue;
|
|
100
|
+
limits[key] = limits[key] === undefined ? pinnedLimit : Math.min(limits[key], pinnedLimit);
|
|
101
|
+
}
|
|
102
|
+
const runInput = { ...options.runInput, task: options.task };
|
|
103
|
+
const runState = structuredClone(options.runState ?? {});
|
|
104
|
+
if (pinned.inputSchema)
|
|
105
|
+
validateValue(pinned.inputSchema, runInput, 'Run inputs');
|
|
106
|
+
if (pinned.stateSchema)
|
|
107
|
+
validateValue(pinned.stateSchema, runState, 'Run state');
|
|
108
|
+
// The model identity this run would execute a node with, mirroring the runtime's own resolution
|
|
109
|
+
// (`node.provider ?? run provider`, and the model the node declares or the resolved provider's
|
|
110
|
+
// configured one). A per-provider model the runtime resolves later is unknowable here, so only
|
|
111
|
+
// the identities this build can prove are compared.
|
|
112
|
+
const nodeIdentity = (nodeId) => {
|
|
113
|
+
const node = pinned.nodes[nodeId];
|
|
114
|
+
const provider = node?.provider ?? options.provider;
|
|
115
|
+
if (node?.model !== undefined)
|
|
116
|
+
return { provider, model: node.model };
|
|
117
|
+
if (node?.provider === undefined)
|
|
118
|
+
return { provider, model: options.model };
|
|
119
|
+
try {
|
|
120
|
+
return { provider, model: options.resolveProvider?.(node.provider)?.model };
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return { provider };
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
// Only an agent node runs a model, so only its start line names one: an action or routing node
|
|
127
|
+
// has no model identity, and claiming the run's inherited one would tell a surface reading the
|
|
128
|
+
// rail that the node ran on a model it never called.
|
|
129
|
+
const startIdentity = (nodeId, routed) => routed ?? (pinned.nodes[nodeId]?.type === 'agent' ? nodeIdentity(nodeId) : {});
|
|
130
|
+
// A checkpoint's conversation is the NODE's own transcript — system prompt, tool definitions,
|
|
131
|
+
// continuation counters — and the runtime installs it as the resumed visit's history without
|
|
132
|
+
// checking who wrote it (unlike a predecessor handoff, which is gated on the same identity).
|
|
133
|
+
// Handing it to a node the graph or profile now resolves to another provider/model would give
|
|
134
|
+
// the new model instructions and counters from a different one: restart that visit fresh.
|
|
135
|
+
// `undefined` on either side of a comparison means unknowable, not different.
|
|
136
|
+
const sameIdentity = (candidate, identity) => {
|
|
137
|
+
if (!candidate)
|
|
138
|
+
return false;
|
|
139
|
+
if (candidate.provider !== undefined && candidate.provider !== identity.provider)
|
|
140
|
+
return false;
|
|
141
|
+
return candidate.model === undefined || identity.model === undefined || candidate.model === identity.model;
|
|
142
|
+
};
|
|
143
|
+
const continuableByThisRun = (nodeId, checkpoint) => {
|
|
144
|
+
if (checkpoint.provider === undefined && checkpoint.model === undefined)
|
|
145
|
+
return true;
|
|
146
|
+
const identity = nodeIdentity(nodeId);
|
|
147
|
+
// The conversation's own pair matching the configured one is the unchanged rule. Adaptive
|
|
148
|
+
// routing adds a second way: the checkpoint carries the baseline it was routed FROM, and a
|
|
149
|
+
// baseline this run still computes proves the routed pair was this configuration's own
|
|
150
|
+
// decision — so the conversation may continue on the model that actually ran. A baseline
|
|
151
|
+
// that no longer matches (the graph or provider configuration changed) keeps the old rule
|
|
152
|
+
// and the visit restarts fresh.
|
|
153
|
+
if (sameIdentity(checkpoint, identity))
|
|
154
|
+
return true;
|
|
155
|
+
return sameIdentity(checkpoint.routedFrom, identity);
|
|
156
|
+
};
|
|
157
|
+
// The pair a continuable checkpoint's conversation ran on when it is NOT the configured one:
|
|
158
|
+
// the routed pair this run's own routing decision produced. The re-entered visit is pinned to
|
|
159
|
+
// it (see the seeding below), so the transcript continues on the model that wrote it.
|
|
160
|
+
const routedContinuation = (nodeId, checkpoint) => {
|
|
161
|
+
if (checkpoint.provider === undefined || checkpoint.model === undefined)
|
|
162
|
+
return undefined;
|
|
163
|
+
const identity = nodeIdentity(nodeId);
|
|
164
|
+
if (sameIdentity(checkpoint, identity))
|
|
165
|
+
return undefined;
|
|
166
|
+
if (!sameIdentity(checkpoint.routedFrom, identity))
|
|
167
|
+
return undefined;
|
|
168
|
+
return { provider: checkpoint.provider, model: checkpoint.model };
|
|
169
|
+
};
|
|
170
|
+
if (options.resumeFrom) {
|
|
171
|
+
// The journal replay can prove the stopped attempt already ran its whole graph with nothing
|
|
172
|
+
// left to continue: an empty frontier alongside nodes or visits the journal proves (visits
|
|
173
|
+
// included, because a node removed from the edited graph keeps its visit count but can never
|
|
174
|
+
// re-enter), no completed End whose bare re-entry would finalize the attempt instead, and no
|
|
175
|
+
// checkpoint still owning a conversation to re-enter. Seeding that position would leave only
|
|
176
|
+
// the entry queue: every completed node run again, its tool effects and token spend paid a
|
|
177
|
+
// second time. That is not continuing an invocation, so the refusal lands here — before the
|
|
178
|
+
// budget timer, the user-wait binding, and telemetry open — and nothing opened needs
|
|
179
|
+
// unwinding. The follow-up the user sends carries the finished work as session context.
|
|
180
|
+
// The exemption mirrors the seeding below exactly: a checkpoint the seeding would install
|
|
181
|
+
// (its node in the graph, no recorded completion — an interrupted frontier is impossible
|
|
182
|
+
// with a pending array this code has already proven empty — and the provider/model stamp
|
|
183
|
+
// this run may continue) means the journal's empty frontier only says the node's start line
|
|
184
|
+
// never reached it: the attempt is recoverable, not finished. And an End completed on one
|
|
185
|
+
// branch cannot finalize while a join another branch owes still sits unresolved — the
|
|
186
|
+
// re-entry would throw after `run.started`, so the request is refused instead.
|
|
187
|
+
const stopped = options.resumeFrom.progress;
|
|
188
|
+
const provenWork = Object.keys(stopped.nodeResults).length > 0 || Object.values(stopped.visits).some(count => count > 0);
|
|
189
|
+
const unresolvedJoins = (stopped.waitingJoins ?? []).some(join => pinned.nodes[join.nodeId] !== undefined && !Object.hasOwn(stopped.nodeResults, join.nodeId));
|
|
190
|
+
const canFinalizeThroughEnd = !unresolvedJoins && Object.values(pinned.nodes).some(node => node.type === 'end' && stopped.nodeResults[node.id] !== undefined);
|
|
191
|
+
const recoverableCheckpoint = (options.resumeFrom.checkpoints ?? []).some(checkpoint => pinned.nodes[checkpoint.nodeId] !== undefined && !Object.hasOwn(stopped.nodeResults, checkpoint.nodeId) && continuableByThisRun(checkpoint.nodeId, checkpoint));
|
|
192
|
+
if (stopped.pending.length === 0 && provenWork && !canFinalizeThroughEnd && !recoverableCheckpoint) {
|
|
193
|
+
throw new Error('Cannot resume: the stopped attempt had already run every step its journal records, so there is nothing left to continue. Send a follow-up message instead of resuming.');
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
const budget = createRuntimeBudget(options.context.signal, limits.wallTimeMs, options.context.runControl);
|
|
197
|
+
const signal = budget.signal;
|
|
198
|
+
const confirmedClarifications = [];
|
|
199
|
+
let approvalQueue = Promise.resolve();
|
|
200
|
+
// Bind before queueing: the queue must serialize the budget-aware `approve`, or a wait
|
|
201
|
+
// that only enters the queue would still be charged to the run's clock.
|
|
202
|
+
const awaiting = bindUserWaits(options.context, budget, signal);
|
|
203
|
+
const askUser = awaiting.askUser;
|
|
204
|
+
const context = {
|
|
205
|
+
...awaiting,
|
|
206
|
+
toolState: awaiting.toolState ?? { fileReads: new Map() },
|
|
207
|
+
approve: (...args) => {
|
|
208
|
+
const pending = approvalQueue.then(() => { args[2].throwIfAborted(); return awaiting.approve(...args); });
|
|
209
|
+
approvalQueue = pending.catch(() => { });
|
|
210
|
+
return pending;
|
|
211
|
+
},
|
|
212
|
+
...(askUser ? { askUser: async (...args) => {
|
|
213
|
+
const answer = await askUser(...args);
|
|
214
|
+
if (typeof answer === 'string' && answer.trim())
|
|
215
|
+
confirmedClarifications.push({ question: args[0], answer });
|
|
216
|
+
return answer;
|
|
217
|
+
} } : {}),
|
|
218
|
+
};
|
|
219
|
+
const result = {
|
|
220
|
+
id: options.runId ?? randomUUID(), graph: pinned, provider: options.provider, model: options.model,
|
|
221
|
+
status: 'exhausted', usage: { inputTokens: 0, outputTokens: 0, requests: 0 }, toolCalls: 0, nodeResults: {},
|
|
222
|
+
limits: { ...limits }, telemetry: createRunTelemetry(),
|
|
223
|
+
};
|
|
224
|
+
const todoStore = options.todoStore ?? new TodoStore();
|
|
225
|
+
// Widgets belong to the run, not to a branch: every node and every parallel copy updates the
|
|
226
|
+
// same values, exactly as they all keep the one plan.
|
|
227
|
+
const widgetStore = options.widgetStore ?? new WidgetStore(pinned.widgets);
|
|
228
|
+
// A resumed run's plan is seeded into the store where it is read, but announced only after
|
|
229
|
+
// `graph.started`: the browser activity sink clears its checklist on that event, so publishing
|
|
230
|
+
// earlier would have the resume erase the very plan it carried.
|
|
231
|
+
let seededPlan;
|
|
232
|
+
const artifactStore = options.artifactStore ?? new ArtifactStore(result.id);
|
|
233
|
+
options.codeIntel?.beginRun(result.id);
|
|
234
|
+
const emit = async (type, data = {}) => {
|
|
235
|
+
const event = { type, time: new Date().toISOString(), data: { runId: result.id, ...(typeof data.nodeId === 'string' ? { nodeName: pinned.nodes[data.nodeId]?.name, nodeType: pinned.nodes[data.nodeId]?.type } : {}), ...data } };
|
|
236
|
+
options.commandMemory?.observe(event);
|
|
237
|
+
await options.onEvent?.(event);
|
|
238
|
+
};
|
|
239
|
+
// Skill activation is run-wide and independent of conversation reuse or provider identity.
|
|
240
|
+
// Journal replay restores it before any resumed frontier node starts.
|
|
241
|
+
const activeSkills = new Set(options.resumeFrom?.progress.activeSkills ?? []);
|
|
242
|
+
const queue = [{ nodeId: pinned.entry, generation: 0, path: [], inputs: {}, predecessors: {} }];
|
|
243
|
+
const visits = new Map();
|
|
244
|
+
const executed = new Set();
|
|
245
|
+
let nextGeneration = 0;
|
|
246
|
+
const pendingJoins = new Map();
|
|
247
|
+
let currentNode = pinned.entry;
|
|
248
|
+
let lastCompletion;
|
|
249
|
+
if (options.resumeFrom) {
|
|
250
|
+
// Rehydrate the scheduler from the journal replay of a stopped attempt. The frontier is
|
|
251
|
+
// assembled first and only installed when the journal proved something worth continuing.
|
|
252
|
+
// Every frontier entry carries the mapped inputs and predecessors its activation had —
|
|
253
|
+
// replay proves those queued but unfinished, and re-entering one with empty inputs would
|
|
254
|
+
// fail the node's own schema checks for work its predecessor already paid for. A captured
|
|
255
|
+
// checkpoint re-enters its node's conversation too (the same continuation the pause/resume
|
|
256
|
+
// control uses), one per unfinished branch. With nothing proven, nothing is seeded at all —
|
|
257
|
+
// running the task from entry is the safe restart, and an empty seeded frontier would only
|
|
258
|
+
// trip `maxNodeVisits`.
|
|
259
|
+
const { progress, checkpoints: captured } = options.resumeFrom;
|
|
260
|
+
// Draw fresh generation numbers from where the stopped attempt left them: the executed set
|
|
261
|
+
// below is seeded with the journal's generation-keyed entries, so a resumed revisit must draw
|
|
262
|
+
// a number that has never run rather than reissue one the journal already used.
|
|
263
|
+
nextGeneration = Math.max(nextGeneration, progress.generation ?? 0);
|
|
264
|
+
const resumable = [];
|
|
265
|
+
// The seeded activation of every `(generation, node)` identity the frontier carried: a cycle can
|
|
266
|
+
// hold the same node at two generations, and a checkpoint, a predecessor handoff, or a second
|
|
267
|
+
// activation of that node must address the one its own visit belongs to.
|
|
268
|
+
const byIdentity = new Map();
|
|
269
|
+
const generationsPerNode = new Map();
|
|
270
|
+
// The seeded re-entry of each node — the one unfinished visit it can have — for the legacy
|
|
271
|
+
// checkpoint shape that carries no visit stamp to look itself up by.
|
|
272
|
+
const reentryByNode = new Map();
|
|
273
|
+
const seededByNode = new Map();
|
|
274
|
+
const reentry = new Set();
|
|
275
|
+
const droppedNodes = new Set();
|
|
276
|
+
for (const activation of progress.pending) {
|
|
277
|
+
const node = pinned.nodes[activation.nodeId];
|
|
278
|
+
if (!node) {
|
|
279
|
+
// The graph was edited between the stop and this resume. The activation cannot be seeded,
|
|
280
|
+
// and a frontier that vanishes silently would restart the whole task from the entry —
|
|
281
|
+
// rerunning nodes `progress.nodeResults` already proves completed (and their tool effects
|
|
282
|
+
// with them). Refuse below when nothing else is left to continue.
|
|
283
|
+
droppedNodes.add(activation.nodeId);
|
|
284
|
+
continue;
|
|
285
|
+
}
|
|
286
|
+
if (activation.interrupted && node.type === 'action') {
|
|
287
|
+
// The stopped attempt was inside the shell command when it died: the journal cannot show
|
|
288
|
+
// how far the command got, and re-running it could duplicate effects that already fully
|
|
289
|
+
// or partially applied. An action node is the one node type whose work the replay cannot
|
|
290
|
+
// safely put back on the executable frontier, so the whole resume is refused and the
|
|
291
|
+
// workspace stays as the crash left it, for a human to inspect and re-start fresh.
|
|
292
|
+
throw new Error(`Cannot resume into the "${node.name}" action: the stopped attempt died while its shell command was running, and replaying it could repeat its effects. Check what the command already changed, then start a new run.`);
|
|
293
|
+
}
|
|
294
|
+
// The replay carried the generation and path this activation had at the stop: seeding them
|
|
295
|
+
// is what lets a resumed cycle classify its outgoing back-edge as a revisit instead of an
|
|
296
|
+
// already-executed suppression, and lets a later-generation activation avoid colliding with
|
|
297
|
+
// the generation-zero executed set.
|
|
298
|
+
// The parallel-group identity rides along: a branch-mode source that dispatched these
|
|
299
|
+
// successors before dying had them on the prefetch path sharing its tool-budget slice, and
|
|
300
|
+
// seeding them groupless would run the first branch on the FULL remaining allowance and
|
|
301
|
+
// starve the rest of the group.
|
|
302
|
+
const seeded = { nodeId: activation.nodeId, generation: activation.generation ?? 0, path: activation.path ?? [], inputs: structuredClone(activation.inputs), ...(activation.source ? { source: structuredClone(activation.source) } : {}), ...(activation.sourceGeneration === undefined ? {} : { sourceGeneration: activation.sourceGeneration }), predecessors: structuredClone(activation.predecessors),
|
|
303
|
+
...(activation.parallelGroup === undefined ? {} : { parallelGroup: activation.parallelGroup, ...(activation.concurrency === undefined ? {} : { concurrency: activation.concurrency }) }) };
|
|
304
|
+
if (activation.interrupted) {
|
|
305
|
+
reentry.add(activation.nodeId);
|
|
306
|
+
reentryByNode.set(activation.nodeId, seeded);
|
|
307
|
+
}
|
|
308
|
+
byIdentity.set(`${seeded.generation}:${seeded.nodeId}`, seeded);
|
|
309
|
+
seededByNode.set(seeded.nodeId, seeded);
|
|
310
|
+
const seen = generationsPerNode.get(seeded.nodeId) ?? new Set();
|
|
311
|
+
seen.add(seeded.generation);
|
|
312
|
+
generationsPerNode.set(seeded.nodeId, seen);
|
|
313
|
+
resumable.push(seeded);
|
|
314
|
+
}
|
|
315
|
+
// The frontier nodes the journal shows as unfinished re-entries, used below to tell a
|
|
316
|
+
// completed node apart from a node that completed an earlier visit and was interrupted during
|
|
317
|
+
// a later one.
|
|
318
|
+
const interruptedFrontier = new Set(progress.pending.filter(entry => entry.interrupted).map(entry => entry.nodeId));
|
|
319
|
+
for (const checkpoint of captured ?? []) {
|
|
320
|
+
// Parallel branches each checkpoint their own conversation, and each unfinished one gets
|
|
321
|
+
// it back. A checkpoint naming a node the current graph no longer has (the graph was
|
|
322
|
+
// edited since), or one whose node already completed, cannot re-enter anything — except a
|
|
323
|
+
// node that completed an earlier visit and was interrupted on a later one: the completion
|
|
324
|
+
// describes the earlier pass, while the checkpoint holds the unfinished revisit's own
|
|
325
|
+
// conversation, which is exactly what resume must not throw away.
|
|
326
|
+
if ((Object.hasOwn(progress.nodeResults, checkpoint.nodeId) && !interruptedFrontier.has(checkpoint.nodeId)) || !pinned.nodes[checkpoint.nodeId])
|
|
327
|
+
continue;
|
|
328
|
+
// The stamped visit is the only activation this conversation can continue, so the file is
|
|
329
|
+
// addressed by the identity it carries. A stamp naming a visit this resume did not seed
|
|
330
|
+
// belongs to a visit that already ended (or to a generation the node ran at before): attaching
|
|
331
|
+
// it to whatever activation the node happens to hold instead would continue a finished
|
|
332
|
+
// conversation as if it were the unfinished one, with counters that disagree with the graph
|
|
333
|
+
// being replayed. A file from before the stamp carries no visit identity at all, so it goes to
|
|
334
|
+
// the node's unfinished visit — the only conversation an unstamped file can belong to — and
|
|
335
|
+
// otherwise to the activation the node was seeded with.
|
|
336
|
+
const stamped = checkpoint.generation === undefined ? undefined : byIdentity.get(`${checkpoint.generation}:${checkpoint.nodeId}`);
|
|
337
|
+
if (checkpoint.generation !== undefined && stamped === undefined && generationsPerNode.has(checkpoint.nodeId))
|
|
338
|
+
continue;
|
|
339
|
+
const seeded = stamped
|
|
340
|
+
?? (checkpoint.generation === undefined ? reentryByNode.get(checkpoint.nodeId) ?? seededByNode.get(checkpoint.nodeId) : undefined)
|
|
341
|
+
?? { nodeId: checkpoint.nodeId, generation: checkpoint.generation ?? 0, path: [], inputs: {}, predecessors: {} };
|
|
342
|
+
if (!continuableByThisRun(checkpoint.nodeId, checkpoint))
|
|
343
|
+
continue;
|
|
344
|
+
// A checkpoint older than the node's newest journaled effectful tool boundary does not cover
|
|
345
|
+
// that call: the resumed visit would re-enter the conversation from before it and can issue
|
|
346
|
+
// the same mutation again (the observation the tool produced is nowhere in the conversation).
|
|
347
|
+
// Effect-free calls — reads, run-scoped metadata, an unanswered ask_user — keep no boundary,
|
|
348
|
+
// so a crash between a checkpoint and one of those re-enters safely. The same reasoning that
|
|
349
|
+
// refuses an interrupted action node refuses this re-entry — the workspace is left as the
|
|
350
|
+
// crash left it for a human to inspect.
|
|
351
|
+
const toolEvent = progress.lastEffectfulToolEvent?.[checkpoint.nodeId];
|
|
352
|
+
if (toolEvent !== undefined && Date.parse(checkpoint.savedAt) < Date.parse(toolEvent)) {
|
|
353
|
+
throw new Error(`Cannot resume the "${pinned.nodes[checkpoint.nodeId]?.name ?? checkpoint.nodeId}" node: the stopped attempt ran a tool call after the conversation this checkpoint saved, so re-entering it could repeat an effect the checkpoint does not cover. Check what the call changed, then start a new run.`);
|
|
354
|
+
}
|
|
355
|
+
// A routed checkpoint re-enters its visit on the pair that wrote the conversation, so the
|
|
356
|
+
// restored transcript continues on the model that produced it. The pair is resolved here,
|
|
357
|
+
// before anything is seeded: an unresolvable target becomes a clean refusal instead of a
|
|
358
|
+
// mid-run failure after `run.started`, and dropping the checkpoint instead would restart
|
|
359
|
+
// the node fresh and repeat the mutations the conversation's transcript already observed.
|
|
360
|
+
const routed = routedContinuation(checkpoint.nodeId, checkpoint);
|
|
361
|
+
if (routed) {
|
|
362
|
+
const routedResolved = await (options.resolveModel
|
|
363
|
+
? options.resolveModel(routed.provider, routed.model, context.signal).catch(() => undefined)
|
|
364
|
+
: routed.provider === options.provider
|
|
365
|
+
? { model: routed.model, adapter: options.adapter }
|
|
366
|
+
: options.resolveProvider?.(routed.provider));
|
|
367
|
+
if (!routedResolved) {
|
|
368
|
+
throw new Error(`Cannot resume the "${pinned.nodes[checkpoint.nodeId]?.name ?? checkpoint.nodeId}" node: its conversation ran on ${routed.provider}/${routed.model}, which this configuration no longer resolves. Restore that provider, or start a new run.`);
|
|
369
|
+
}
|
|
370
|
+
seeded.routedModel = routed;
|
|
371
|
+
}
|
|
372
|
+
seeded.continuation = { messages: checkpoint.messages, state: checkpoint.state, revision: checkpoint.revision };
|
|
373
|
+
if (!byIdentity.has(`${seeded.generation}:${seeded.nodeId}`)) {
|
|
374
|
+
// A checkpoint whose node never reached the journal (the process died before the start
|
|
375
|
+
// line appended) still owns the conversation: re-enter it ahead of the rest.
|
|
376
|
+
resumable.unshift(seeded);
|
|
377
|
+
byIdentity.set(`${seeded.generation}:${seeded.nodeId}`, seeded);
|
|
378
|
+
reentry.add(checkpoint.nodeId);
|
|
379
|
+
}
|
|
380
|
+
reentry.add(checkpoint.nodeId);
|
|
381
|
+
}
|
|
382
|
+
// Nothing left to continue although the journal proved queued work: the graph no longer carries
|
|
383
|
+
// the nodes that work named. Seeding nothing would run `queue`'s entry activation and redo
|
|
384
|
+
// every node already completed, so the resume is refused instead.
|
|
385
|
+
if (resumable.length === 0 && droppedNodes.size > 0) {
|
|
386
|
+
const missing = [...droppedNodes].map(nodeId => `"${nodeId}"`).join(', ');
|
|
387
|
+
throw new Error(`Cannot resume: the graph no longer contains the node${droppedNodes.size > 1 ? 's' : ''} ${missing} the stopped attempt still had queued. Restore the graph as it was, or start a new run.`);
|
|
388
|
+
}
|
|
389
|
+
// The live scheduler hands a routed successor the completing predecessor's model transcript
|
|
390
|
+
// (unless the predecessor asked for isolation), and a stop between the edge being journaled and
|
|
391
|
+
// the successor starting loses that handoff: the checkpoint loop above only re-attaches
|
|
392
|
+
// conversations to unfinished nodes, and a completed source's checkpoint would otherwise be
|
|
393
|
+
// discarded with it. Rebuild the handoff from the completed predecessor's durable checkpoint —
|
|
394
|
+
// its provider/model stamp is what the runtime's continue-in-place gate requires.
|
|
395
|
+
const checkpointsPerNode = new Map();
|
|
396
|
+
for (const checkpoint of captured ?? []) {
|
|
397
|
+
const list = checkpointsPerNode.get(checkpoint.nodeId) ?? [];
|
|
398
|
+
list.push(checkpoint);
|
|
399
|
+
checkpointsPerNode.set(checkpoint.nodeId, list);
|
|
400
|
+
}
|
|
401
|
+
for (const seeded of resumable) {
|
|
402
|
+
if (seeded.continuation !== undefined || seeded.conversation !== undefined)
|
|
403
|
+
continue;
|
|
404
|
+
if (pinned.nodes[seeded.nodeId]?.type !== 'agent')
|
|
405
|
+
continue;
|
|
406
|
+
for (const sourceId of Object.keys(seeded.predecessors)) {
|
|
407
|
+
const sourceNode = pinned.nodes[sourceId];
|
|
408
|
+
if (!sourceNode || sourceNode.type !== 'agent' || sourceNode.contextPolicy?.conversation === 'isolate')
|
|
409
|
+
continue;
|
|
410
|
+
// ... and only when the file still holds the conversation of the visit that routed this
|
|
411
|
+
// activation. A cyclic source can complete again after routing it — its checkpoint file is
|
|
412
|
+
// replaced per visit and now carries that later transcript — and handing the later
|
|
413
|
+
// conversation to this successor would give it context that did not exist when its edge was
|
|
414
|
+
// routed. The generation stamp is what tells the visits apart, so a file stamped for another
|
|
415
|
+
// visit hands off nothing at all: the successor keeps the completion as its input and
|
|
416
|
+
// starts its own conversation.
|
|
417
|
+
const checkpoint = (checkpointsPerNode.get(sourceId) ?? []).find(candidate => (candidate.generation ?? 0) === (seeded.sourceGeneration ?? 0));
|
|
418
|
+
if (!checkpoint || typeof checkpoint.provider !== 'string' || typeof checkpoint.model !== 'string' || checkpoint.messages.length === 0)
|
|
419
|
+
continue;
|
|
420
|
+
seeded.conversation = { provider: checkpoint.provider, model: checkpoint.model, messages: structuredClone(checkpoint.messages), ...(checkpoint.state.toolOutputArchive ? { toolOutputArchive: checkpoint.state.toolOutputArchive } : {}) };
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
for (const waitingJoin of progress.waitingJoins ?? []) {
|
|
424
|
+
// Partial arrivals of an all-mode join go back into the scheduler's waiting state, not the
|
|
425
|
+
// queue: the join must not run on the completed branches alone while the branches that never
|
|
426
|
+
// completed still have their work to do. It fires when the resumed completions bring the
|
|
427
|
+
// arrival for every remaining member edge, exactly as an uninterrupted run would.
|
|
428
|
+
if (!pinned.nodes[waitingJoin.nodeId] || Object.hasOwn(progress.nodeResults, waitingJoin.nodeId))
|
|
429
|
+
continue;
|
|
430
|
+
const targetKey = `${waitingJoin.generation}:${waitingJoin.nodeId}`;
|
|
431
|
+
const held = pendingJoins.get(targetKey) ?? new Map();
|
|
432
|
+
for (const [sourceId, member] of Object.entries(waitingJoin.members)) {
|
|
433
|
+
const edgeIndex = pinned.edges.findIndex(edge => edge.target === waitingJoin.nodeId && edge.source === sourceId
|
|
434
|
+
&& (edge.outcome ?? 'completed') === (member.completion.outcome ?? 'completed'));
|
|
435
|
+
if (edgeIndex < 0 || held.has(edgeIndex))
|
|
436
|
+
continue;
|
|
437
|
+
held.set(edgeIndex, { nodeId: waitingJoin.nodeId, generation: waitingJoin.generation, path: [...waitingJoin.path],
|
|
438
|
+
inputs: structuredClone(member.inputs), source: structuredClone(member.completion), predecessors: { [sourceId]: structuredClone(member.completion) } });
|
|
439
|
+
}
|
|
440
|
+
if (held.size > 0)
|
|
441
|
+
pendingJoins.set(targetKey, held);
|
|
442
|
+
}
|
|
443
|
+
if (resumable.length === 0) {
|
|
444
|
+
// The journal can prove a whole finished graph whose final record never landed: every
|
|
445
|
+
// node completed, End among them, and no unfired arrival left to seed. Replaying nothing
|
|
446
|
+
// would restart from the entry node and re-run every completed mutation the journal
|
|
447
|
+
// already proved done. Re-enter End alone instead: its pass performs no work, the seeded
|
|
448
|
+
// completions stand, and the scheduler finalizes on the completion that routed into End.
|
|
449
|
+
// (A proven-done frontier with NO completed End never reaches here — the refusal above
|
|
450
|
+
// rejects that shape before any of the run's resources are opened.)
|
|
451
|
+
// A graph may hold several End nodes — pick the one the journal proves completed; the
|
|
452
|
+
// first End in object order may belong to a branch that never ran.
|
|
453
|
+
const endNode = Object.values(pinned.nodes).find(node => node.type === 'end' && progress.nodeResults[node.id])
|
|
454
|
+
?? Object.values(pinned.nodes).find(node => node.type === 'end');
|
|
455
|
+
const endResult = endNode ? progress.nodeResults[endNode.id] : undefined;
|
|
456
|
+
if (endNode && endResult) {
|
|
457
|
+
for (const [nodeId, completion] of Object.entries(progress.nodeResults))
|
|
458
|
+
result.nodeResults[nodeId] = structuredClone(completion);
|
|
459
|
+
for (const [nodeId, count] of Object.entries(progress.visits))
|
|
460
|
+
visits.set(nodeId, count);
|
|
461
|
+
// End's journaled visit belongs to the stopped attempt; entering it here completes that
|
|
462
|
+
// pass, it is not a second visit.
|
|
463
|
+
visits.set(endNode.id, 0);
|
|
464
|
+
if (progress.toolCalls !== undefined)
|
|
465
|
+
result.toolCalls = progress.toolCalls;
|
|
466
|
+
for (const edge of pinned.edges) {
|
|
467
|
+
if (edge.target !== endNode.id)
|
|
468
|
+
continue;
|
|
469
|
+
const source = progress.nodeResults[edge.source];
|
|
470
|
+
if (source && (edge.outcome ?? 'completed') === (source.outcome ?? 'completed')) {
|
|
471
|
+
lastCompletion = structuredClone(source);
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
queue.length = 0;
|
|
476
|
+
queue.push({ nodeId: endNode.id, generation: 0, path: [], inputs: {}, predecessors: {} });
|
|
477
|
+
currentNode = endNode.id;
|
|
478
|
+
// The seeded plan is seeded here too, exactly as the resumable path below does, and announced
|
|
479
|
+
// once `graph.started` has passed: a client builds its checklist from the event, and this
|
|
480
|
+
// attempt has nothing else to report — but a sink that clears its checklist on the start
|
|
481
|
+
// event would swallow a plan announced before it.
|
|
482
|
+
if (progress.todos?.length) {
|
|
483
|
+
todoStore.update(progress.todos);
|
|
484
|
+
seededPlan = todoStore.snapshot();
|
|
485
|
+
}
|
|
486
|
+
if (progress.widgets)
|
|
487
|
+
widgetStore.restore(progress.widgets);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
if (resumable.length > 0) {
|
|
491
|
+
for (const [nodeId, completion] of Object.entries(progress.nodeResults)) {
|
|
492
|
+
result.nodeResults[nodeId] = structuredClone(completion);
|
|
493
|
+
}
|
|
494
|
+
// Key the executed set the way the stopped attempt keyed it — every `(generation, node)` the
|
|
495
|
+
// journal proves, not only each node's latest generation: a cycle can complete one node at two
|
|
496
|
+
// generations while older-generation work is still queued, and seeding only the later key lets
|
|
497
|
+
// the delayed earlier-generation activation run again, repeating effects the stopped attempt
|
|
498
|
+
// already paid for. A caller that carries only the per-node map (an older reader, or a test
|
|
499
|
+
// fixture) keeps its last-generation keys.
|
|
500
|
+
const executedKeys = progress.executed ?? Object.keys(progress.nodeResults).map(nodeId => `${progress.generations?.[nodeId] ?? 0}:${nodeId}`);
|
|
501
|
+
for (const key of executedKeys)
|
|
502
|
+
executed.add(key);
|
|
503
|
+
for (const [nodeId, count] of Object.entries(progress.visits))
|
|
504
|
+
visits.set(nodeId, count);
|
|
505
|
+
// The stopped attempt's tool spend carries over: a run capped at N calls had spent some (or
|
|
506
|
+
// all) of the graph-level allowance before the crash, and the resumed scheduler must budget
|
|
507
|
+
// from what is left, not hand the allowance out again.
|
|
508
|
+
if (progress.toolCalls !== undefined)
|
|
509
|
+
result.toolCalls = progress.toolCalls;
|
|
510
|
+
// Re-entry completes the stopped attempt's unfinished pass rather than costing a new visit:
|
|
511
|
+
// the node that started there already spent the visit its journal recorded, so that spend
|
|
512
|
+
// is given back or the re-entry would trip `maxNodeVisits` before it could finish.
|
|
513
|
+
for (const nodeId of reentry) {
|
|
514
|
+
const spent = visits.get(nodeId) ?? 0;
|
|
515
|
+
if (spent > 0)
|
|
516
|
+
visits.set(nodeId, spent - 1);
|
|
517
|
+
}
|
|
518
|
+
queue.length = 0;
|
|
519
|
+
queue.push(...resumable);
|
|
520
|
+
currentNode = resumable[0].nodeId;
|
|
521
|
+
// A run resumed straight into End: an uninterrupted run finalizes on the completion of the
|
|
522
|
+
// node that routed into End, but nothing runs between the seed and End's own completion to
|
|
523
|
+
// set `lastCompletion`. Seed it from the routing source the replay carried.
|
|
524
|
+
const endSeed = resumable.find(item => pinned.nodes[item.nodeId]?.type === 'end' && item.source !== undefined);
|
|
525
|
+
if (endSeed?.source)
|
|
526
|
+
lastCompletion = structuredClone(endSeed.source);
|
|
527
|
+
// The stopped attempt's plan comes back with the position it was written for, and it is
|
|
528
|
+
// announced rather than only seeded: the runtime reads the snapshot out of the todo store on
|
|
529
|
+
// its own, but every client's checklist is built from the event, and a continuation that stayed
|
|
530
|
+
// silent until the model happened to update the plan would look like the plan was lost. The
|
|
531
|
+
// announcement waits for after `graph.started` — see `seededPlan`.
|
|
532
|
+
if (progress.todos?.length) {
|
|
533
|
+
todoStore.update(progress.todos);
|
|
534
|
+
seededPlan = todoStore.snapshot();
|
|
535
|
+
}
|
|
536
|
+
if (progress.widgets)
|
|
537
|
+
widgetStore.restore(progress.widgets);
|
|
538
|
+
}
|
|
539
|
+
}
|
|
540
|
+
const liveUsage = { inputTokens: 0, outputTokens: 0, requests: 0 };
|
|
541
|
+
// Per-node token accounting, kept separate from `liveUsage` (which is run-cumulative): the
|
|
542
|
+
// timeline's node chips show each node's own input/output tokens and decode-window throughput.
|
|
543
|
+
// A node that runs twice (a cycle) accumulates across visits, which is what the chip shows.
|
|
544
|
+
const nodeUsageTotals = new Map();
|
|
545
|
+
// Cache splits stay sparse through every graph aggregation: a node or provider
|
|
546
|
+
// that reports no cache traffic never materializes explicit zeros downstream.
|
|
547
|
+
const addUsage = (target, delta) => {
|
|
548
|
+
target.inputTokens += delta.inputTokens;
|
|
549
|
+
target.outputTokens += delta.outputTokens;
|
|
550
|
+
target.requests += delta.requests;
|
|
551
|
+
const read = (target.cacheRead ?? 0) + (delta.cacheRead ?? 0);
|
|
552
|
+
if (read > 0)
|
|
553
|
+
target.cacheRead = read;
|
|
554
|
+
const write = (target.cacheWrite ?? 0) + (delta.cacheWrite ?? 0);
|
|
555
|
+
if (write > 0)
|
|
556
|
+
target.cacheWrite = write;
|
|
557
|
+
if (delta.decodeMs !== undefined)
|
|
558
|
+
target.decodeMs = (target.decodeMs ?? 0) + delta.decodeMs;
|
|
559
|
+
};
|
|
560
|
+
// The measured aggregation for the chips' aggregates only: the decode windows of a node's
|
|
561
|
+
// requests sum — the throughput divides the covered tokens by this total, so prefill and tool
|
|
562
|
+
// gaps never enter the figure — and the numerator records how many tokens those windows
|
|
563
|
+
// actually generated. Sparse like the cache splits: a request that measured no window covers
|
|
564
|
+
// nothing, and its tokens stay out of the numerator the way its time stays out of the
|
|
565
|
+
// denominator. The field never reaches the plain `Usage` of the run record — only the chips
|
|
566
|
+
// pair a numerator with a denominator, and only these two aggregates are read by the stamp.
|
|
567
|
+
const addMeasuredUsage = (target, delta) => {
|
|
568
|
+
addUsage(target, delta);
|
|
569
|
+
if (delta.decodeMs !== undefined)
|
|
570
|
+
target.measuredOutputTokens = (target.measuredOutputTokens ?? 0) + delta.outputTokens;
|
|
571
|
+
};
|
|
572
|
+
const prefetched = new Map();
|
|
573
|
+
const prefetchedStarted = new Set();
|
|
574
|
+
// Branches whose completion was already announced when their invocation returned: the queue's
|
|
575
|
+
// later pass must not announce them a second time.
|
|
576
|
+
const prefetchedCompleted = new Set();
|
|
577
|
+
const accounted = new Set();
|
|
578
|
+
const checkpoints = new Map();
|
|
579
|
+
const conversations = new WeakMap();
|
|
580
|
+
let lastAgentActivation;
|
|
581
|
+
let controlEvents = Promise.resolve();
|
|
582
|
+
const unsubscribeControl = context.runControl?.onChange(paused => {
|
|
583
|
+
controlEvents = controlEvents.then(() => emit(paused ? 'graph.paused' : 'graph.resumed', { nodeId: currentNode }));
|
|
584
|
+
void controlEvents.catch(() => { });
|
|
585
|
+
});
|
|
586
|
+
// Read-only graph work can be retried after its interrupted request settles. Never
|
|
587
|
+
// use this helper for mutations or memory persistence, which may partially apply.
|
|
588
|
+
const readWhileRunning = async (operation) => {
|
|
589
|
+
for (;;) {
|
|
590
|
+
await context.runControl?.wait(signal);
|
|
591
|
+
const operationSignal = context.runControl ? AbortSignal.any([signal, context.runControl.signal]) : signal;
|
|
592
|
+
try {
|
|
593
|
+
operationSignal.throwIfAborted();
|
|
594
|
+
const value = await operation(operationSignal);
|
|
595
|
+
if (operationSignal.aborted && !signal.aborted)
|
|
596
|
+
continue;
|
|
597
|
+
return value;
|
|
598
|
+
}
|
|
599
|
+
catch (error) {
|
|
600
|
+
if (!operationSignal.aborted || signal.aborted)
|
|
601
|
+
throw error;
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
};
|
|
605
|
+
try {
|
|
606
|
+
await options.memory?.beginRun(result.id);
|
|
607
|
+
for (const skillId of options.inheritedSkills ?? []) {
|
|
608
|
+
if (activeSkills.has(skillId))
|
|
609
|
+
continue;
|
|
610
|
+
activeSkills.add(skillId);
|
|
611
|
+
await emit('graph.skill.activated', { skillId });
|
|
612
|
+
}
|
|
613
|
+
const efficiency = resolveEfficiency(options.efficiency);
|
|
614
|
+
const providers = new Map([[options.provider, { model: options.model, adapter: options.adapter }]]);
|
|
615
|
+
for (const node of Object.values(pinned.nodes)) {
|
|
616
|
+
const references = [node.provider, node.retry?.fallback?.provider, node.subagents?.provider, ...(node.subagents?.roles ?? []).map(role => role.provider)];
|
|
617
|
+
for (const provider of references) {
|
|
618
|
+
if (!provider || providers.has(provider))
|
|
619
|
+
continue;
|
|
620
|
+
const resolved = options.resolveProvider?.(provider);
|
|
621
|
+
if (!resolved && options.resolveModel)
|
|
622
|
+
continue;
|
|
623
|
+
if (!resolved?.adapter || typeof resolved.adapter.generate !== 'function')
|
|
624
|
+
throw new Error(`Provider is not available: ${provider}`);
|
|
625
|
+
providers.set(provider, { ...resolved });
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
/**
|
|
629
|
+
* @param steerSource - the steering callback this invocation may poll, or undefined to
|
|
630
|
+
* run without steering. Steering is a single destructive queue, so handing the same
|
|
631
|
+
* callback to concurrent branches turns delivery into a race: whichever branch polls
|
|
632
|
+
* first consumes the message and the others never see it. Parallel groups therefore
|
|
633
|
+
* pass a wrapper that admits one branch at a time.
|
|
634
|
+
*
|
|
635
|
+
* Passed explicitly at every call site rather than defaulted: a default would apply
|
|
636
|
+
* when `undefined` is passed, so "no steering" would silently become "use the shared
|
|
637
|
+
* source" and every branch would race again.
|
|
638
|
+
*/
|
|
639
|
+
const invoke = async (activation, maxToolCalls, wallTimeMs, concurrencyBudget, steerSource, continuation) => {
|
|
640
|
+
const nodeId = activation.nodeId;
|
|
641
|
+
const node = pinned.nodes[nodeId];
|
|
642
|
+
// A seeded activation carries its own continuation (the re-entered node's captured
|
|
643
|
+
// conversation); the explicit argument keeps the pause/resume control path unchanged.
|
|
644
|
+
continuation = continuation ?? activation.continuation;
|
|
645
|
+
const narrow = (run, remaining) => remaining === undefined ? run : run === undefined ? remaining : Math.min(run, remaining);
|
|
646
|
+
maxToolCalls = narrow(maxToolCalls, continuation?.state.remainingToolCalls);
|
|
647
|
+
wallTimeMs = narrow(wallTimeMs, continuation?.state.remainingWallTimeMs);
|
|
648
|
+
if (wallTimeMs !== undefined && wallTimeMs <= 0)
|
|
649
|
+
return { id: result.id, graph: pinned, provider: result.provider, model: result.model, status: 'exhausted', reason: 'wallTimeMs', toolCalls: 0, usage: { inputTokens: 0, outputTokens: 0, requests: 0 } };
|
|
650
|
+
const branchTodos = new TodoStore();
|
|
651
|
+
const snapshot = todoStore.snapshot();
|
|
652
|
+
if (activation.parallelGroup && snapshot.length)
|
|
653
|
+
branchTodos.update(snapshot);
|
|
654
|
+
const visibility = node.contextPolicy?.predecessors ?? 'none';
|
|
655
|
+
const predecessorOutputs = visibility === 'none' ? undefined : structuredClone(visibility === 'all' ? result.nodeResults : activation.predecessors);
|
|
656
|
+
const runMemory = options.memory?.activeFor(result.id) ? options.memory : undefined;
|
|
657
|
+
const memoryTask = typeof activation.inputs.taskInstruction === 'string' && activation.inputs.taskInstruction.trim()
|
|
658
|
+
? activation.inputs.taskInstruction.trim() : options.task;
|
|
659
|
+
const memoryEligible = !!runMemory && runMemory.automaticRetrieval && node.agentRole !== 'orchestrator';
|
|
660
|
+
const decisionManager = options.decisionNodeOptIn && node.jevEnabled !== true
|
|
661
|
+
? new DecisionManager({ config: { mode: 'off', provider: 'none' } }) : options.decisionManager;
|
|
662
|
+
// An empty workspace has no repository history to recall: under context selection the
|
|
663
|
+
// baseline retrieval is skipped on that fact alone, and the node learns the same facts.
|
|
664
|
+
// The facts are recollected per activation: an implementation node can create the very
|
|
665
|
+
// files a later node needs to retrieve, and a run-started snapshot would keep gating that
|
|
666
|
+
// retrieval on the empty workspace the run began in.
|
|
667
|
+
const facts = efficiency.contextSelection || efficiency.catalogSelection
|
|
668
|
+
? await collectWorkspaceFacts(context.workspace, { signal: context.signal }) : undefined;
|
|
669
|
+
const retrievalGated = efficiency.contextSelection && facts?.empty === true;
|
|
670
|
+
// Disabled preflight cannot replace baseline memory retrieval.
|
|
671
|
+
const baselineMemoryRetrieval = !decisionManager?.active || options.efficiency?.jevPreflight === false;
|
|
672
|
+
if (retrievalGated && baselineMemoryRetrieval && runMemory && node.agentRole !== 'orchestrator') {
|
|
673
|
+
await emit('efficiency.context.retrieval_skipped', { nodeId, reason: 'empty_workspace', source: 'memory' });
|
|
674
|
+
}
|
|
675
|
+
const memory = baselineMemoryRetrieval && runMemory && node.agentRole !== 'orchestrator' && !retrievalGated
|
|
676
|
+
? await readWhileRunning(operationSignal => runMemory.retrieve({ task: memoryTask, nodeId, runId: result.id, signal: operationSignal }))
|
|
677
|
+
: undefined;
|
|
678
|
+
const invocationTools = runMemory ? [...options.tools, memorySearchTool(runMemory, result.id)] : options.tools;
|
|
679
|
+
const invocationTask = [options.task, memory?.block, options.commandMemory?.context()].filter(Boolean).join('\n\n');
|
|
680
|
+
const instrument = (provider, resolved) => ({
|
|
681
|
+
...resolved, adapter: dashboardAdapter(resolved.adapter, provider, event => options.onEvent?.(event), { runId: result.id, nodeId, nodeName: node.name, nodeType: node.type }),
|
|
682
|
+
});
|
|
683
|
+
let completedConversation;
|
|
684
|
+
// A routed continuation runs on the pair its conversation was written with: the visit is
|
|
685
|
+
// pinned (its routing already served it), so re-deciding could move the model out from
|
|
686
|
+
// under the restored transcript mid-visit. Routing decides again on the visit's next
|
|
687
|
+
// fresh activation, exactly as it would for any new node entry. The override rides the
|
|
688
|
+
// node, so both executor paths resolve the routed pair through their normal machinery.
|
|
689
|
+
const routedNode = activation.routedModel ? { ...node, provider: activation.routedModel.provider, model: activation.routedModel.model } : node;
|
|
690
|
+
const outcome = await (continuation && !continuation.state.copies ? executeAgentNode : executeModifiedAgent)(routedNode, {
|
|
691
|
+
...options,
|
|
692
|
+
...(activation.routedModel ? { modelPinned: true } : {}),
|
|
693
|
+
adapter: instrument(options.provider, { model: options.model, adapter: options.adapter }).adapter,
|
|
694
|
+
...(options.resolveModel ? { resolveModel: async (provider, model, signal) => instrument(provider, await options.resolveModel(provider, model, signal)) } : {}),
|
|
695
|
+
// A live replacement enters through getLiveModel rather than resolveModel. Keep the
|
|
696
|
+
// same per-node request boundaries and duration events after the switch.
|
|
697
|
+
...(options.getLiveModel ? { getLiveModel: async (id, provider, model, signal) => {
|
|
698
|
+
const live = await options.getLiveModel(id, provider, model, signal);
|
|
699
|
+
return live ? { ...instrument(live.provider, live), provider: live.provider } : undefined;
|
|
700
|
+
} } : {}),
|
|
701
|
+
task: invocationTask,
|
|
702
|
+
inheritedSkills: node.contextPolicy?.skillInheritance === 'none' ? [] : [...activeSkills],
|
|
703
|
+
instructions: node.contextPolicy?.skillInheritance === 'none' ? options.instructions
|
|
704
|
+
: [options.instructions, options.skillInvocationInstruction].filter(Boolean).join('\n\n'),
|
|
705
|
+
onSkillActivated: async (skillId) => {
|
|
706
|
+
if (activeSkills.has(skillId))
|
|
707
|
+
return;
|
|
708
|
+
activeSkills.add(skillId);
|
|
709
|
+
await emit('graph.skill.activated', { nodeId, skillId });
|
|
710
|
+
},
|
|
711
|
+
...(continuation ? { resumeMessages: continuation.messages, resumeState: continuation.state, resumeDirectionRevision: continuation.revision } : {}),
|
|
712
|
+
previousConversation: !continuation && node.contextPolicy?.conversation !== 'isolate' && node.contextPolicy?.skillInheritance !== 'none' ? activation.conversation : undefined,
|
|
713
|
+
onConversationCheckpoint: async (messages, state, conversation) => {
|
|
714
|
+
if (context.runControl)
|
|
715
|
+
checkpoints.set(nodeId, { messages, state, revision: state.directionRevision });
|
|
716
|
+
completedConversation = conversation;
|
|
717
|
+
// Published per node so the caller can persist the run's furthest conversation: unlike the
|
|
718
|
+
// in-memory `checkpoints` map, which only fills while a pause control exists, durability
|
|
719
|
+
// has to hold for every run, including one that is killed with no control ever armed. The
|
|
720
|
+
// generation stamp tells a later resume which visit this conversation belongs to. The
|
|
721
|
+
// identity stamp names the model the handed-off conversation ran on: continuing a
|
|
722
|
+
// conversation requires the same provider and model, so a resume that restores this
|
|
723
|
+
// transcript to a pending successor must know what it was built against.
|
|
724
|
+
// The write is awaited: the checkpoint is the conversation a resume re-enters the node
|
|
725
|
+
// with, so a run that advanced past a mutating tool call while its checkpoint was still
|
|
726
|
+
// queued could be killed with that conversation unwritten — and the resume would re-enter
|
|
727
|
+
// the node from its opening task and repeat the work it had already done.
|
|
728
|
+
const identity = nodeIdentity(nodeId);
|
|
729
|
+
await options.onNodeCheckpoint?.(nodeId, messages, state, {
|
|
730
|
+
generation: activation.generation,
|
|
731
|
+
...(conversation ? { provider: conversation.provider, model: conversation.model } : {}),
|
|
732
|
+
// The baseline this run had configured for the node: a resume whose recomputed
|
|
733
|
+
// baseline still matches knows the conversation's own pair (if it differs) was this
|
|
734
|
+
// configuration's routing decision, and continues the visit on it instead of
|
|
735
|
+
// restarting the node from its opening task.
|
|
736
|
+
routedFrom: { provider: identity.provider, ...(identity.model === undefined ? {} : { model: identity.model }) },
|
|
737
|
+
});
|
|
738
|
+
await options.onConversationCheckpoint?.(messages, state, conversation);
|
|
739
|
+
},
|
|
740
|
+
decisionManager,
|
|
741
|
+
...(facts ? { workspaceFacts: facts } : {}),
|
|
742
|
+
decisionPreflight: { task: memoryTask, memory: memoryEligible, memoryAvailable: !!runMemory },
|
|
743
|
+
tools: invocationTools,
|
|
744
|
+
memory: runMemory,
|
|
745
|
+
concurrencyBudget, context, artifactStore,
|
|
746
|
+
todoStore: activation.parallelGroup ? branchTodos : todoStore,
|
|
747
|
+
widgetStore,
|
|
748
|
+
...(activation.parallelGroup ? { onTodosUpdated: undefined } : {}), graph: pinned, runId: result.id, nodeId,
|
|
749
|
+
resolveProvider: id => { const resolved = providers.get(id); if (!resolved)
|
|
750
|
+
throw new Error(`Provider is not available: ${id}`); return instrument(id, resolved); },
|
|
751
|
+
mappedInputs: activation.inputs, predecessorOutputs,
|
|
752
|
+
getSteeringMessages: steerSource,
|
|
753
|
+
limits: { ...limits, maxToolCalls, wallTimeMs },
|
|
754
|
+
onUsage: (usage, origin) => {
|
|
755
|
+
addMeasuredUsage(liveUsage, usage);
|
|
756
|
+
const total = nodeUsageTotals.get(nodeId) ?? { inputTokens: 0, outputTokens: 0, requests: 0 };
|
|
757
|
+
addMeasuredUsage(total, usage);
|
|
758
|
+
nodeUsageTotals.set(nodeId, total);
|
|
759
|
+
options.onUsage?.(usage, origin);
|
|
760
|
+
},
|
|
761
|
+
onEvent: async (event) => {
|
|
762
|
+
// The agent's own events name the invocation but never the run; every graph event
|
|
763
|
+
// carries one. Seeding it here too is what lets the desktop key each node chip's
|
|
764
|
+
// figures by run, so a second task in the same session that reuses a node id
|
|
765
|
+
// cannot repaint the first task's chips with its spend.
|
|
766
|
+
event = { ...event, data: { runId: result.id, ...event.data, nodeName: node.name, nodeType: node.type } };
|
|
767
|
+
// `graphUsage` stays the run-cumulative reading it always was — the plain `Usage`,
|
|
768
|
+
// without the chips' internal measured-token pairing; `nodeUsage` is the same event's
|
|
769
|
+
// per-node figure for the chip — this activation's node so far, pairing included.
|
|
770
|
+
if (event.type === 'agent.model.completed') {
|
|
771
|
+
const { measuredOutputTokens: _chipsOnly, ...runUsage } = liveUsage;
|
|
772
|
+
event = { ...event, data: { ...event.data, graphUsage: runUsage,
|
|
773
|
+
nodeUsage: { ...(nodeUsageTotals.get(nodeId) ?? { inputTokens: 0, outputTokens: 0, requests: 0 }) } } };
|
|
774
|
+
}
|
|
775
|
+
if (activation.parallelGroup && event.type === 'graph.todos.updated')
|
|
776
|
+
event = { ...event, type: 'agent.modifier.todos.updated' };
|
|
777
|
+
options.commandMemory?.observe(event);
|
|
778
|
+
await options.onEvent?.(event);
|
|
779
|
+
},
|
|
780
|
+
});
|
|
781
|
+
if (outcome.status === 'succeeded' && completedConversation)
|
|
782
|
+
conversations.set(activation, completedConversation);
|
|
783
|
+
else
|
|
784
|
+
conversations.delete(activation);
|
|
785
|
+
return outcome;
|
|
786
|
+
};
|
|
787
|
+
await emit('graph.started', { graph: pinned });
|
|
788
|
+
// The resumed run's plan is published here, not at the seed: the browser activity sink clears its
|
|
789
|
+
// checklist on `graph.started`, so an earlier announcement would be erased by the event that
|
|
790
|
+
// announces the very run carrying it. The store already holds it, so nothing reading the store in
|
|
791
|
+
// between sees a gap — only the event stream had to wait for the reset.
|
|
792
|
+
if (seededPlan !== undefined)
|
|
793
|
+
await emit('graph.todos.updated', { todos: seededPlan });
|
|
794
|
+
// Widgets are announced on every run that defines them, resumed or not: the definitions
|
|
795
|
+
// themselves are part of what the user watches, so the panel appears with empty values the
|
|
796
|
+
// moment the run starts rather than waiting for the first update.
|
|
797
|
+
if (widgetStore.definitionsList().length)
|
|
798
|
+
await emit('graph.widgets.updated', { widgets: widgetStore.snapshot() });
|
|
799
|
+
if (options.memory) {
|
|
800
|
+
try {
|
|
801
|
+
const health = await options.memory.health(result.id);
|
|
802
|
+
await emit('memory.health', { status: health.status, ...(health.detail ? { detail: health.detail } : {}) });
|
|
803
|
+
}
|
|
804
|
+
catch (error) {
|
|
805
|
+
await emit('memory.health', { status: 'unavailable', detail: error instanceof Error ? error.message : 'memory health check failed' });
|
|
806
|
+
}
|
|
807
|
+
}
|
|
808
|
+
while (queue.length) {
|
|
809
|
+
signal.throwIfAborted();
|
|
810
|
+
await context.runControl?.wait(signal);
|
|
811
|
+
await controlEvents;
|
|
812
|
+
if (queue[0].parallelGroup && !prefetched.has(queue[0])) {
|
|
813
|
+
const group = queue.filter(item => item.parallelGroup === queue[0].parallelGroup);
|
|
814
|
+
const maxToolCalls = shareToolBudget(limits.maxToolCalls, result.toolCalls, group.length);
|
|
815
|
+
// A zero share is a valid budget: a branch that needs no tool still returns a
|
|
816
|
+
// completion, and the runtime rejects any tool call it cannot afford. Only an
|
|
817
|
+
// already-exhausted allowance stops the group.
|
|
818
|
+
const remaining = remainingToolBudget(limits.maxToolCalls, result.toolCalls);
|
|
819
|
+
if (remaining !== undefined && remaining < 0) {
|
|
820
|
+
result.reason = 'maxToolCalls';
|
|
821
|
+
break;
|
|
822
|
+
}
|
|
823
|
+
const exhausted = group.find(item => (visits.get(item.nodeId) ?? 0) + 1 > maxNodeVisitsOf(pinned));
|
|
824
|
+
if (exhausted) {
|
|
825
|
+
currentNode = exhausted.nodeId;
|
|
826
|
+
result.reason = `maxNodeVisits:${exhausted.nodeId}`;
|
|
827
|
+
break;
|
|
828
|
+
}
|
|
829
|
+
for (const item of group) {
|
|
830
|
+
currentNode = item.nodeId;
|
|
831
|
+
const node = pinned.nodes[item.nodeId];
|
|
832
|
+
const count = (visits.get(item.nodeId) ?? 0) + 1;
|
|
833
|
+
const mapped = {};
|
|
834
|
+
for (const [key, expression] of Object.entries(node.inputs ?? {}))
|
|
835
|
+
mapped[key] = resolveValue(expression, { source: item.source, run: { input: runInput, state: runState, loop: { iteration: count } } });
|
|
836
|
+
mergeInputs(item.inputs, mapped, item.nodeId);
|
|
837
|
+
if (node.inputSchema)
|
|
838
|
+
validateValue(node.inputSchema, item.inputs, `Node ${item.nodeId} inputs`);
|
|
839
|
+
}
|
|
840
|
+
// One branch at a time owns the queue, and ownership transfers as branches come and go.
|
|
841
|
+
// Pinning it to a fixed branch would starve every later branch of a serial group: with
|
|
842
|
+
// maxConcurrent 1 the first branch finishes and the next runs with steering disabled,
|
|
843
|
+
// so a steer submitted then would stay queued and could reach no one.
|
|
844
|
+
const activeBranches = [];
|
|
845
|
+
const steeringFor = (item) => {
|
|
846
|
+
const source = options.getSteeringMessages;
|
|
847
|
+
if (!source)
|
|
848
|
+
return undefined;
|
|
849
|
+
return signal => (activeBranches[0] === item ? source(signal) : Promise.resolve([]));
|
|
850
|
+
};
|
|
851
|
+
const workers = Math.min(group.length, group[0].concurrency ?? 1, pinned.limits?.maxConcurrency ?? 32);
|
|
852
|
+
const concurrencyPerBranch = Math.max(1, Math.floor((pinned.limits?.maxConcurrency ?? 32) / workers));
|
|
853
|
+
let index = 0;
|
|
854
|
+
const failures = [];
|
|
855
|
+
await Promise.all(Array.from({ length: workers }, async () => {
|
|
856
|
+
while (index < group.length && !signal.aborted && !failures.length) {
|
|
857
|
+
const item = group[index++];
|
|
858
|
+
// Registered before the first await so leadership follows the deterministic
|
|
859
|
+
// start order rather than async scheduling.
|
|
860
|
+
activeBranches.push(item);
|
|
861
|
+
try {
|
|
862
|
+
await emit('graph.node.started', { nodeId: item.nodeId, visit: (visits.get(item.nodeId) ?? 0) + 1, generation: item.generation, path: [...item.path], ...startIdentity(item.nodeId, item.routedModel) });
|
|
863
|
+
prefetchedStarted.add(item);
|
|
864
|
+
// Agent executions count their own attempts in the agent runtime; every other node
|
|
865
|
+
// type executes only here, and the ADR counts attempts across all nodes.
|
|
866
|
+
if (pinned.nodes[item.nodeId]?.type !== 'agent')
|
|
867
|
+
recordAttempt(result.telemetry, (visits.get(item.nodeId) ?? 0) > 0);
|
|
868
|
+
const outcome = await invoke(item, maxToolCalls, budget.remainingMs(), concurrencyPerBranch, steeringFor(item));
|
|
869
|
+
prefetched.set(item, outcome);
|
|
870
|
+
// A branch that finished while a sibling still runs answers for itself now. Waiting
|
|
871
|
+
// for the whole Promise.all would report its completion only when the slowest sibling
|
|
872
|
+
// returned, leaving every surface that reads liveness off this event — the TUI's
|
|
873
|
+
// active set, the desktop rail, run progress — calling a done branch working for the
|
|
874
|
+
// sibling's full duration. The queue's later pass skips the second announcement. An
|
|
875
|
+
// outcome the sequential path would reject (unknown, or missing on an agent) is left
|
|
876
|
+
// unannounced so the failure still surfaces from the same place it does today, and a
|
|
877
|
+
// completion the queue's own output-schema validation will reject is left unannounced
|
|
878
|
+
// too (checked below): the event is persisted in the journal, and a replay would read
|
|
879
|
+
// a completion that validation refuses as authoritative, letting a resumed attempt
|
|
880
|
+
// skip the invalid branch entirely. Validating here keeps the journal honest; a
|
|
881
|
+
// violation falls through to the queue pass, which raises it at its deterministic
|
|
882
|
+
// point and never announces the completion either.
|
|
883
|
+
const branch = pinned.nodes[item.nodeId];
|
|
884
|
+
if (branch?.type === 'agent' && outcome.status === 'succeeded' && outcome.completion) {
|
|
885
|
+
const completion = outcome.completion;
|
|
886
|
+
completion.outcome ??= 'completed';
|
|
887
|
+
if (nodeOutcomes({ ...branch, modifiers: undefined }).includes(completion.outcome)) {
|
|
888
|
+
let validated = true;
|
|
889
|
+
const schema = nodeOutputSchema(branch);
|
|
890
|
+
if (schema) {
|
|
891
|
+
try {
|
|
892
|
+
validateValue(schema, completion.output, `Node ${item.nodeId} output`);
|
|
893
|
+
}
|
|
894
|
+
catch {
|
|
895
|
+
validated = false;
|
|
896
|
+
}
|
|
897
|
+
}
|
|
898
|
+
if (validated) {
|
|
899
|
+
await emit('graph.node.completed', {
|
|
900
|
+
nodeId: item.nodeId,
|
|
901
|
+
completion: branch.modifiers?.condition
|
|
902
|
+
? { ...completion, outcome: matchesOutput(completion, branch.modifiers.condition) ? 'true' : 'false' }
|
|
903
|
+
: completion,
|
|
904
|
+
});
|
|
905
|
+
prefetchedCompleted.add(item);
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
910
|
+
catch (error) {
|
|
911
|
+
failures.push(error);
|
|
912
|
+
}
|
|
913
|
+
finally {
|
|
914
|
+
const at = activeBranches.indexOf(item);
|
|
915
|
+
if (at >= 0)
|
|
916
|
+
activeBranches.splice(at, 1);
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
}));
|
|
920
|
+
const failedActivation = group.find(item => { const outcome = prefetched.get(item); return outcome && outcome.status !== 'succeeded'; });
|
|
921
|
+
const failed = failedActivation && prefetched.get(failedActivation);
|
|
922
|
+
for (const item of group) {
|
|
923
|
+
const outcome = prefetched.get(item);
|
|
924
|
+
if (!outcome)
|
|
925
|
+
continue;
|
|
926
|
+
result.toolCalls += outcome.toolCalls;
|
|
927
|
+
addUsage(result.usage, outcome.usage);
|
|
928
|
+
absorbTelemetry(result, outcome);
|
|
929
|
+
accounted.add(item);
|
|
930
|
+
}
|
|
931
|
+
if (failed || failures.length || signal.aborted) {
|
|
932
|
+
if (failures.length)
|
|
933
|
+
throw failures[0];
|
|
934
|
+
signal.throwIfAborted();
|
|
935
|
+
currentNode = failedActivation.nodeId;
|
|
936
|
+
result.provider = failed.provider;
|
|
937
|
+
result.model = failed.model;
|
|
938
|
+
result.status = failed.status;
|
|
939
|
+
result.reason = failed.reason ?? failed.status;
|
|
940
|
+
// Report the failing branch's effective bounds, which a node limit can tighten.
|
|
941
|
+
if (failed.limits)
|
|
942
|
+
result.limits = failed.limits;
|
|
943
|
+
break;
|
|
944
|
+
}
|
|
945
|
+
}
|
|
946
|
+
const activation = queue.shift();
|
|
947
|
+
const nodeId = currentNode = activation.nodeId;
|
|
948
|
+
const node = pinned.nodes[nodeId];
|
|
949
|
+
const count = (visits.get(nodeId) ?? 0) + 1;
|
|
950
|
+
if (count > maxNodeVisitsOf(pinned)) {
|
|
951
|
+
result.reason = `maxNodeVisits:${nodeId}`;
|
|
952
|
+
break;
|
|
953
|
+
}
|
|
954
|
+
visits.set(nodeId, count);
|
|
955
|
+
// See the parallel path: an agent counts its own attempts, and every other node type is
|
|
956
|
+
// counted here so `attempts` reflects the run's real node executions.
|
|
957
|
+
if (node.type !== 'agent')
|
|
958
|
+
recordAttempt(result.telemetry, count > 1);
|
|
959
|
+
executed.add(`${activation.generation}:${nodeId}`);
|
|
960
|
+
// The remaining budget comes from the run's own clock, so time a node spent waiting on
|
|
961
|
+
// the user is not charged to the nodes that follow it.
|
|
962
|
+
const wallTimeMs = budget.remainingMs();
|
|
963
|
+
if (wallTimeMs !== undefined && wallTimeMs <= 0) {
|
|
964
|
+
result.reason = 'wallTimeMs';
|
|
965
|
+
break;
|
|
966
|
+
}
|
|
967
|
+
const scope = { source: activation.source, run: { input: runInput, state: runState, loop: { iteration: count } } };
|
|
968
|
+
const configuredInputs = {};
|
|
969
|
+
for (const [key, expression] of Object.entries(node.inputs ?? {}))
|
|
970
|
+
configuredInputs[key] = resolveValue(expression, scope);
|
|
971
|
+
mergeInputs(activation.inputs, configuredInputs, nodeId);
|
|
972
|
+
if (node.inputSchema)
|
|
973
|
+
validateValue(node.inputSchema, activation.inputs, `Node ${nodeId} inputs`);
|
|
974
|
+
let completion = { summary: node.name, tests: [], outcome: 'completed', output: {} };
|
|
975
|
+
// The activation's generation and trail are journalled with the start line: they exist in
|
|
976
|
+
// memory only, and a resume that re-enters this visit journals no routing for it, so a replay
|
|
977
|
+
// has nothing else to reconstruct them from. A second crash would otherwise read the re-entry
|
|
978
|
+
// as a generation-zero, ancestry-free activation — rejecting the checkpoint this visit wrote
|
|
979
|
+
// and losing the revisit its outgoing back-edge owes.
|
|
980
|
+
if (!prefetchedStarted.has(activation))
|
|
981
|
+
await emit('graph.node.started', { nodeId, visit: count, generation: activation.generation, path: [...activation.path], ...startIdentity(nodeId, activation.routedModel) });
|
|
982
|
+
if (node.type === 'agent') {
|
|
983
|
+
const maxToolCalls = remainingToolBudget(limits.maxToolCalls, result.toolCalls);
|
|
984
|
+
// Only an already-overspent allowance stops the node: a zero remainder is a valid
|
|
985
|
+
// budget, since a node that needs no tool still returns a completion.
|
|
986
|
+
if (!prefetched.has(activation) && maxToolCalls !== undefined && maxToolCalls < 0) {
|
|
987
|
+
result.reason = 'maxToolCalls';
|
|
988
|
+
break;
|
|
989
|
+
}
|
|
990
|
+
// A node outside a parallel group runs alone, so it polls the shared source directly.
|
|
991
|
+
const outcome = prefetched.get(activation) ?? await invoke(activation, maxToolCalls, wallTimeMs, pinned.limits?.maxConcurrency ?? 32, options.getSteeringMessages);
|
|
992
|
+
prefetched.delete(activation);
|
|
993
|
+
result.provider = outcome.provider;
|
|
994
|
+
result.model = outcome.model;
|
|
995
|
+
if (!accounted.has(activation)) {
|
|
996
|
+
result.toolCalls += outcome.toolCalls;
|
|
997
|
+
addUsage(result.usage, outcome.usage);
|
|
998
|
+
// A prefetched parallel outcome was merged, telemetry included, when its group settled;
|
|
999
|
+
// absorbing it again would double the run's attempts, tokens and tool counts.
|
|
1000
|
+
absorbTelemetry(result, outcome);
|
|
1001
|
+
}
|
|
1002
|
+
if (outcome.status !== 'succeeded') {
|
|
1003
|
+
// Cancellation is judged from the session signal: the run signal may be fused with
|
|
1004
|
+
// this run's own clock, and a deadline must never be reported as a cancellation.
|
|
1005
|
+
const cancelled = (options.context.userSignal ?? options.context.signal).aborted;
|
|
1006
|
+
result.status = cancelled ? 'cancelled' : budget.expired() ? 'exhausted' : outcome.status;
|
|
1007
|
+
result.reason = cancelled ? 'cancelled' : budget.expired() ? 'wallTimeMs' : outcome.reason ?? outcome.status;
|
|
1008
|
+
// Report the node's effective bounds, which a node limit can tighten.
|
|
1009
|
+
if (outcome.limits)
|
|
1010
|
+
result.limits = outcome.limits;
|
|
1011
|
+
break;
|
|
1012
|
+
}
|
|
1013
|
+
if (!outcome.completion)
|
|
1014
|
+
throw new Error(`Agent ${nodeId} returned no validated completion.`);
|
|
1015
|
+
lastAgentActivation = activation;
|
|
1016
|
+
completion = outcome.completion;
|
|
1017
|
+
completion.outcome ??= 'completed';
|
|
1018
|
+
if (!nodeOutcomes({ ...node, modifiers: undefined }).includes(completion.outcome))
|
|
1019
|
+
throw new Error(`Agent ${nodeId} returned unknown outcome "${completion.outcome}".`);
|
|
1020
|
+
if (node.modifiers?.condition)
|
|
1021
|
+
completion = { ...completion, outcome: matchesOutput(completion, node.modifiers.condition) ? 'true' : 'false' };
|
|
1022
|
+
result.completion = completion;
|
|
1023
|
+
}
|
|
1024
|
+
if (node.type === 'condition') {
|
|
1025
|
+
const source = result.nodeResults[node.condition.source];
|
|
1026
|
+
if (!source)
|
|
1027
|
+
throw new Error(`Condition ${nodeId}: source ${node.condition.source} has not completed. Route its result before the condition.`);
|
|
1028
|
+
const value = node.condition.path.split('.').filter(Boolean).reduce((value, key) => value && typeof value === 'object' && Object.hasOwn(value, key) ? value[key] : undefined, source.output ?? source);
|
|
1029
|
+
completion.outcome = equal(value, node.condition.equals) ? 'true' : 'false';
|
|
1030
|
+
}
|
|
1031
|
+
else if (node.type === 'loop') {
|
|
1032
|
+
completion.outcome = count <= node.loop.maxIterations ? 'body' : 'done';
|
|
1033
|
+
completion.output = { iteration: count };
|
|
1034
|
+
}
|
|
1035
|
+
else if (node.type === 'approval') {
|
|
1036
|
+
await emit('approval.requested', { nodeId, name: node.name });
|
|
1037
|
+
// The approval prompt is a human wait, so it gets the session signal: the run's
|
|
1038
|
+
// wall clock must not answer for the user.
|
|
1039
|
+
let approved = false;
|
|
1040
|
+
for (;;) {
|
|
1041
|
+
await context.runControl?.wait(signal);
|
|
1042
|
+
const promptSignal = context.runControl ? AbortSignal.any([context.userSignal ?? signal, context.runControl.signal]) : context.userSignal ?? signal;
|
|
1043
|
+
try {
|
|
1044
|
+
const answer = (context.runControl?.yolo ?? context.yolo) || (context.approvalMode !== 'headless' && await context.approve('graph.approval', { nodeId, name: node.name, inputs: activation.inputs }, promptSignal));
|
|
1045
|
+
if (answer === 'policy-changed')
|
|
1046
|
+
continue;
|
|
1047
|
+
approved = answer;
|
|
1048
|
+
if (promptSignal.aborted && !signal.aborted)
|
|
1049
|
+
continue;
|
|
1050
|
+
break;
|
|
1051
|
+
}
|
|
1052
|
+
catch (error) {
|
|
1053
|
+
if (!promptSignal.aborted || signal.aborted)
|
|
1054
|
+
throw error;
|
|
1055
|
+
}
|
|
1056
|
+
}
|
|
1057
|
+
signal.throwIfAborted();
|
|
1058
|
+
completion.outcome = approved ? 'approved' : 'rejected';
|
|
1059
|
+
await emit(approved ? 'approval.approved' : 'approval.denied', { nodeId, name: node.name });
|
|
1060
|
+
}
|
|
1061
|
+
else if (node.type === 'action') {
|
|
1062
|
+
// This node consumes one call below, so being already at the ceiling is a stop.
|
|
1063
|
+
if (!withinToolBudget(result.toolCalls + 1, limits.maxToolCalls)) {
|
|
1064
|
+
result.reason = 'maxToolCalls';
|
|
1065
|
+
break;
|
|
1066
|
+
}
|
|
1067
|
+
const shellName = canonicalToolName('shell');
|
|
1068
|
+
const tool = capabilityTools(node, options.tools).find(tool => canonicalToolName(tool.name) === shellName);
|
|
1069
|
+
if (!tool)
|
|
1070
|
+
throw new Error(`Action ${nodeId}: ${shellName} is unavailable under this node capability policy. Explicitly allow shell, filesystem and Git writes and the shell tool, or remove this action.`);
|
|
1071
|
+
result.toolCalls++;
|
|
1072
|
+
// The action path runs the shell outside the hardened runtime, so it records its own
|
|
1073
|
+
// capture entry: otherwise an action-only graph reports no tool call or per-tool row.
|
|
1074
|
+
if (result.telemetry)
|
|
1075
|
+
recordToolUse(result.telemetry, shellName, false);
|
|
1076
|
+
const toolCallId = randomUUID();
|
|
1077
|
+
const actionSignal = context.runControl ? AbortSignal.any([signal, context.runControl.signal]) : signal;
|
|
1078
|
+
await emit('node.tool.started', { nodeId, name: shellName, toolCallId, arguments: { command: node.action.command } });
|
|
1079
|
+
let output;
|
|
1080
|
+
let durationMs;
|
|
1081
|
+
const startedAt = monotonicNow();
|
|
1082
|
+
// The shell's approval prompt is a human wait inside `execute`, and the action node has no
|
|
1083
|
+
// hardened-runtime wrapper to subtract it: measured here the same way, so the terminal
|
|
1084
|
+
// `durationMs` — and the ToolCallClock reading it accepts — never charge the deciding.
|
|
1085
|
+
let userWaitMs = 0;
|
|
1086
|
+
let waitSince;
|
|
1087
|
+
const closeUserWait = () => {
|
|
1088
|
+
if (waitSince !== undefined) {
|
|
1089
|
+
userWaitMs += monotonicNow() - waitSince;
|
|
1090
|
+
waitSince = undefined;
|
|
1091
|
+
}
|
|
1092
|
+
return userWaitMs;
|
|
1093
|
+
};
|
|
1094
|
+
let interrupted = false;
|
|
1095
|
+
try {
|
|
1096
|
+
actionSignal.throwIfAborted();
|
|
1097
|
+
output = await tool.execute({ command: node.action.command }, { ...context, signal: actionSignal, userSignal: actionSignal, onApprovalEvent: (type, data) => {
|
|
1098
|
+
if (type === 'node.tool.approval.requested')
|
|
1099
|
+
waitSince ??= monotonicNow();
|
|
1100
|
+
else if (type === 'node.tool.approval.decided')
|
|
1101
|
+
closeUserWait();
|
|
1102
|
+
return emit(type, { ...data, nodeId, toolCallId });
|
|
1103
|
+
} });
|
|
1104
|
+
const workedMs = elapsedMs(startedAt);
|
|
1105
|
+
const waitedMs = closeUserWait();
|
|
1106
|
+
durationMs = workedMs === undefined ? undefined : Math.max(0, workedMs - waitedMs);
|
|
1107
|
+
}
|
|
1108
|
+
catch (error) {
|
|
1109
|
+
// A pause that aborts the approval mid-prompt leaves the open wait unbilled too.
|
|
1110
|
+
const workedMs = elapsedMs(startedAt);
|
|
1111
|
+
const waitedMs = closeUserWait();
|
|
1112
|
+
durationMs = workedMs === undefined ? undefined : Math.max(0, workedMs - waitedMs);
|
|
1113
|
+
await emit('node.tool.failed', { nodeId, name: shellName, toolCallId, durationMs, output: `Tool error: ${error instanceof Error ? error.message : String(error)}` });
|
|
1114
|
+
if (!actionSignal.aborted || signal.aborted) {
|
|
1115
|
+
// A real shell failure: the call was counted above, and this records the failure. A
|
|
1116
|
+
// suite that ran and failed is still test evidence, so it is recorded before the throw.
|
|
1117
|
+
if (result.telemetry) {
|
|
1118
|
+
recordToolFailure(result.telemetry, shellName);
|
|
1119
|
+
if (isTestCommandLine(node.action.command))
|
|
1120
|
+
recordTestCommand(result.telemetry);
|
|
1121
|
+
}
|
|
1122
|
+
throw error;
|
|
1123
|
+
}
|
|
1124
|
+
interrupted = true;
|
|
1125
|
+
output = `Interrupted by user; effects may be partial. Not replayed. ${error instanceof Error ? error.message : String(error)}`;
|
|
1126
|
+
completion.summary = `${node.name} was interrupted; its effects may be partial and were not replayed.`;
|
|
1127
|
+
await context.runControl?.wait(signal);
|
|
1128
|
+
}
|
|
1129
|
+
finally {
|
|
1130
|
+
options.codeIntel?.notePotentialMutation(context.workspace, '(graph action shell)');
|
|
1131
|
+
}
|
|
1132
|
+
completion.output = { result: output };
|
|
1133
|
+
// A command the user stopped did not run to completion, so it is not test evidence even if
|
|
1134
|
+
// its name looks like a test command; the same rule the hardened runtime applies.
|
|
1135
|
+
if (!interrupted && result.telemetry && isTestCommandLine(node.action.command))
|
|
1136
|
+
recordTestCommand(result.telemetry);
|
|
1137
|
+
if (!interrupted)
|
|
1138
|
+
await emit('node.tool.completed', { nodeId, name: shellName, toolCallId, durationMs, output });
|
|
1139
|
+
}
|
|
1140
|
+
else if (node.type === 'parallel' || node.type === 'join')
|
|
1141
|
+
completion.output = activation.inputs;
|
|
1142
|
+
if (nodeOutputSchema(node))
|
|
1143
|
+
validateValue(nodeOutputSchema(node), completion.output, `Node ${nodeId} output`);
|
|
1144
|
+
signal.throwIfAborted();
|
|
1145
|
+
result.nodeResults[nodeId] = completion;
|
|
1146
|
+
if (node.type !== 'end')
|
|
1147
|
+
lastCompletion = completion;
|
|
1148
|
+
// A prefetched branch already announced its completion when its invocation returned; the
|
|
1149
|
+
// queue reaching it is bookkeeping, not a second completion.
|
|
1150
|
+
if (!prefetchedCompleted.has(activation))
|
|
1151
|
+
await emit('graph.node.completed', { nodeId, completion });
|
|
1152
|
+
const next = [];
|
|
1153
|
+
for (const [edgeIndex, edge] of pinned.edges.entries()) {
|
|
1154
|
+
if (edge.source !== nodeId || (edge.outcome ?? 'completed') !== completion.outcome)
|
|
1155
|
+
continue;
|
|
1156
|
+
const target = pinned.nodes[edge.target];
|
|
1157
|
+
let path = [...activation.path, nodeId];
|
|
1158
|
+
const isRevisit = path.includes(edge.target);
|
|
1159
|
+
const generation = isRevisit ? ++nextGeneration : activation.generation;
|
|
1160
|
+
if (isRevisit)
|
|
1161
|
+
path = [];
|
|
1162
|
+
const targetKey = `${generation}:${edge.target}`;
|
|
1163
|
+
const queued = queue.find(item => item.nodeId === edge.target && item.generation === generation) ?? next.find(item => item.nodeId === edge.target && item.generation === generation);
|
|
1164
|
+
if (queued && !Object.hasOwn(queued.predecessors, nodeId))
|
|
1165
|
+
delete queued.conversation;
|
|
1166
|
+
if (executed.has(targetKey) || queued)
|
|
1167
|
+
continue;
|
|
1168
|
+
const inputs = {};
|
|
1169
|
+
for (const [key, expression] of Object.entries(edge.inputMapping ?? {}))
|
|
1170
|
+
inputs[key] = resolveValue(expression, { source: completion, run: { input: runInput, state: runState, loop: { iteration: count } } });
|
|
1171
|
+
const incoming = { ...(node.modifiers?.parallel?.mode === 'branches' ? { parallelGroup: `${nodeId}:${activation.generation}:${count}`, concurrency: node.modifiers.parallel.maxConcurrent } : {}), nodeId: edge.target, generation, path, inputs, source: completion, predecessors: { [nodeId]: completion } };
|
|
1172
|
+
if (node.type === 'agent' && target.type === 'agent' && node.contextPolicy?.conversation !== 'isolate')
|
|
1173
|
+
incoming.conversation = conversations.get(activation);
|
|
1174
|
+
if (target.type === 'join' && target.join?.mode !== 'any' && !edge.bootstrap) {
|
|
1175
|
+
const pending = pendingJoins.get(targetKey) ?? new Map();
|
|
1176
|
+
pending.set(edgeIndex, incoming);
|
|
1177
|
+
pendingJoins.set(targetKey, pending);
|
|
1178
|
+
const dependencies = pinned.edges.map((candidate, index) => candidate.target === edge.target && !candidate.bootstrap ? index : -1).filter(index => index >= 0);
|
|
1179
|
+
if (!dependencies.every(index => pending.has(index)))
|
|
1180
|
+
continue;
|
|
1181
|
+
const members = [...pending.values()];
|
|
1182
|
+
// Journal every branch's own activation, not one event for whichever branch completed
|
|
1183
|
+
// last: recovery rebuilds a queued join from the journal, and a single final event would
|
|
1184
|
+
// replay the join holding only the last branch's result — the merged inputs and
|
|
1185
|
+
// predecessors the in-memory activation carried would exist nowhere a resume can read.
|
|
1186
|
+
for (const member of members) {
|
|
1187
|
+
const memberSource = Object.keys(member.predecessors)[0];
|
|
1188
|
+
await emit('graph.edge.activated', { source: memberSource, target: edge.target, outcome: member.predecessors[memberSource].outcome });
|
|
1189
|
+
}
|
|
1190
|
+
for (const item of pending.values()) {
|
|
1191
|
+
mergeInputs(incoming.inputs, item.inputs, edge.target);
|
|
1192
|
+
Object.assign(incoming.predecessors, item.predecessors);
|
|
1193
|
+
}
|
|
1194
|
+
incoming.path = [...new Set([...pending.values()].flatMap(item => item.path))];
|
|
1195
|
+
pendingJoins.delete(targetKey);
|
|
1196
|
+
next.push(incoming);
|
|
1197
|
+
continue;
|
|
1198
|
+
}
|
|
1199
|
+
next.push(incoming);
|
|
1200
|
+
await emit('graph.edge.activated', { source: nodeId, target: edge.target, outcome: completion.outcome });
|
|
1201
|
+
}
|
|
1202
|
+
if (activation.parallelGroup) {
|
|
1203
|
+
const pendingSiblings = queue.filter(item => item.parallelGroup === activation.parallelGroup).length;
|
|
1204
|
+
queue.splice(pendingSiblings, 0, ...next);
|
|
1205
|
+
}
|
|
1206
|
+
else
|
|
1207
|
+
queue.unshift(...next);
|
|
1208
|
+
}
|
|
1209
|
+
if (!result.reason && result.status === 'exhausted') {
|
|
1210
|
+
if (pendingJoins.size)
|
|
1211
|
+
throw new Error(`Join ${[...pendingJoins.keys()].join(', ')} cannot receive all required branches. Connect routes that can complete together or change Join to any.`);
|
|
1212
|
+
signal.throwIfAborted();
|
|
1213
|
+
result.status = 'succeeded';
|
|
1214
|
+
result.completion = lastCompletion ?? result.nodeResults[currentNode];
|
|
1215
|
+
let finalizationRevision = lastAgentActivation ? checkpoints.get(lastAgentActivation.nodeId)?.revision ?? context.runControl?.revision ?? 0 : context.runControl?.revision ?? 0;
|
|
1216
|
+
for (;;) {
|
|
1217
|
+
await context.runControl?.wait(signal);
|
|
1218
|
+
await controlEvents;
|
|
1219
|
+
if (context.runControl && context.runControl.revision > finalizationRevision) {
|
|
1220
|
+
const directions = context.runControl.messagesSince(finalizationRevision);
|
|
1221
|
+
finalizationRevision = context.runControl.revision;
|
|
1222
|
+
const checkpoint = lastAgentActivation && checkpoints.get(lastAgentActivation.nodeId);
|
|
1223
|
+
if (lastAgentActivation && checkpoint) {
|
|
1224
|
+
// Routing is complete. Resume the last node's checkpointed conversation
|
|
1225
|
+
// (or each indexed copy) without replaying completed graph actions.
|
|
1226
|
+
await emit('graph.finalization.resumed', { nodeId: lastAgentActivation.nodeId });
|
|
1227
|
+
const continuation = await invoke(lastAgentActivation, remainingToolBudget(limits.maxToolCalls, result.toolCalls), budget.remainingMs(), pinned.limits?.maxConcurrency ?? 32, options.getSteeringMessages, checkpoint);
|
|
1228
|
+
result.toolCalls += continuation.toolCalls;
|
|
1229
|
+
addUsage(result.usage, continuation.usage);
|
|
1230
|
+
absorbTelemetry(result, continuation);
|
|
1231
|
+
result.provider = continuation.provider;
|
|
1232
|
+
result.model = continuation.model;
|
|
1233
|
+
if (continuation.status !== 'succeeded' || !continuation.completion) {
|
|
1234
|
+
result.status = continuation.status;
|
|
1235
|
+
result.reason = continuation.reason ?? continuation.status;
|
|
1236
|
+
break;
|
|
1237
|
+
}
|
|
1238
|
+
const condition = pinned.nodes[lastAgentActivation.nodeId].modifiers?.condition;
|
|
1239
|
+
const completion = condition
|
|
1240
|
+
? { ...continuation.completion, outcome: matchesOutput(continuation.completion, condition) ? 'true' : 'false' }
|
|
1241
|
+
: continuation.completion;
|
|
1242
|
+
result.completion = completion;
|
|
1243
|
+
result.nodeResults[lastAgentActivation.nodeId] = completion;
|
|
1244
|
+
finalizationRevision = checkpoints.get(lastAgentActivation.nodeId)?.revision ?? finalizationRevision;
|
|
1245
|
+
}
|
|
1246
|
+
else {
|
|
1247
|
+
// Fixed graphs have no model conversation that could act on new prose.
|
|
1248
|
+
// Acknowledge explicitly rather than silently discarding accepted input.
|
|
1249
|
+
await emit('agent.message', { text: `Direction received after fixed graph actions finished: ${directions.join('\n')}\nThis graph has no resumable agent; completed actions were not replayed.` });
|
|
1250
|
+
}
|
|
1251
|
+
}
|
|
1252
|
+
// Memory distillation no longer gates on token headroom: the cumulative ceiling
|
|
1253
|
+
// was removed, and distillation is bounded by its own adapter request instead.
|
|
1254
|
+
if (options.memory?.activeFor(result.id)) {
|
|
1255
|
+
const nodeOutputs = Object.fromEntries(Object.entries(result.nodeResults ?? {}).map(([id, item]) => [id, item.output]));
|
|
1256
|
+
const orchestratorOutputs = Object.entries(pinned.nodes).filter(([, node]) => node.agentRole === 'orchestrator').map(([id]) => result.nodeResults?.[id]?.output);
|
|
1257
|
+
const agentCompletions = Object.entries(result.nodeResults ?? {}).filter(([id]) => pinned.nodes[id]?.type === 'agent').map(([id, item]) => ({ id, item }));
|
|
1258
|
+
const completionSummary = agentCompletions.map(({ id, item }) => `${pinned.nodes[id].name}: ${item.summary}`).join('\n').slice(0, 8000) || result.completion?.summary;
|
|
1259
|
+
const tests = [...new Set(agentCompletions.flatMap(({ item }) => item.tests ?? []))].slice(0, 50);
|
|
1260
|
+
let distillAdapter = providers.get(result.provider)?.adapter;
|
|
1261
|
+
let distillModel = result.model;
|
|
1262
|
+
let distillProviderType = providers.get(result.provider)?.providerType;
|
|
1263
|
+
let distillBaseUrl = providers.get(result.provider)?.baseUrl;
|
|
1264
|
+
if (!distillAdapter && options.resolveModel) {
|
|
1265
|
+
try {
|
|
1266
|
+
const resolved = await readWhileRunning(operationSignal => options.resolveModel(result.provider, result.model, operationSignal));
|
|
1267
|
+
distillAdapter = resolved.adapter;
|
|
1268
|
+
distillModel = result.model || resolved.model;
|
|
1269
|
+
distillProviderType = resolved.providerType;
|
|
1270
|
+
distillBaseUrl = resolved.baseUrl;
|
|
1271
|
+
}
|
|
1272
|
+
catch (error) {
|
|
1273
|
+
if (signal.aborted)
|
|
1274
|
+
throw error;
|
|
1275
|
+
await emit('memory.error', { operation: 'distill-model-resolution', detail: error instanceof Error ? error.message : 'model resolution failed' });
|
|
1276
|
+
}
|
|
1277
|
+
}
|
|
1278
|
+
// A resumed direction invalidates the old completion before any new
|
|
1279
|
+
// persistence attempt, including pauses during model metadata resolution.
|
|
1280
|
+
if (context.runControl && context.runControl.revision > finalizationRevision)
|
|
1281
|
+
continue;
|
|
1282
|
+
// Capture the operation generation before starting graph-owned finalization.
|
|
1283
|
+
// MemoryManager may swallow abort and return partial persisted IDs, so the
|
|
1284
|
+
// checkpoint below is mandatory even when distillation resolves successfully.
|
|
1285
|
+
const distillSignal = context.runControl ? AbortSignal.any([signal, context.runControl.signal]) : signal;
|
|
1286
|
+
try {
|
|
1287
|
+
await options.memory.distillRun({
|
|
1288
|
+
task: options.task, status: result.status, outcome: result.completion?.outcome,
|
|
1289
|
+
completionSummary, tests, nodeOutputs, orchestratorOutputs, confirmedClarifications,
|
|
1290
|
+
// The distillation is a billed model request like any node's, so it goes through the
|
|
1291
|
+
// same instrumented generation path: without that it reported its tokens in the run
|
|
1292
|
+
// totals while contributing no model tuple, and a run whose only model call was the
|
|
1293
|
+
// distillation published no model at all. Its own `onUsage` is therefore not supplied
|
|
1294
|
+
// here — `generateWithUsage` is the single accounting path for this request.
|
|
1295
|
+
adapter: distillAdapter ? dashboardAdapter({
|
|
1296
|
+
generate: request => generateWithUsage({
|
|
1297
|
+
...options,
|
|
1298
|
+
telemetryIdentity: {
|
|
1299
|
+
role: 'other',
|
|
1300
|
+
...(distillProviderType === undefined ? {} : { providerType: distillProviderType }),
|
|
1301
|
+
...(distillBaseUrl === undefined ? {} : { baseUrl: distillBaseUrl }),
|
|
1302
|
+
},
|
|
1303
|
+
// `generateWithUsage` has already added this delta to `result.usage`; adding it
|
|
1304
|
+
// again here would double the run totals against the tuple and the provider.
|
|
1305
|
+
onUsage: (usage, origin) => options.onUsage?.(usage, origin),
|
|
1306
|
+
}, result, request),
|
|
1307
|
+
}, result.provider, event => options.onEvent?.(event), { runId: result.id, operation: 'memory.distillation' }) : undefined,
|
|
1308
|
+
model: distillModel, signal: distillSignal, runId: result.id,
|
|
1309
|
+
});
|
|
1310
|
+
}
|
|
1311
|
+
catch (error) {
|
|
1312
|
+
if (!distillSignal.aborted || signal.aborted)
|
|
1313
|
+
throw error;
|
|
1314
|
+
}
|
|
1315
|
+
signal.throwIfAborted();
|
|
1316
|
+
}
|
|
1317
|
+
await context.runControl?.wait(signal);
|
|
1318
|
+
await controlEvents;
|
|
1319
|
+
if (context.runControl && context.runControl.revision > finalizationRevision)
|
|
1320
|
+
continue;
|
|
1321
|
+
break;
|
|
1322
|
+
}
|
|
1323
|
+
if (result.status === 'succeeded')
|
|
1324
|
+
await emit('graph.completed', { node: currentNode, nodeId: currentNode, usage: { ...result.usage }, toolCalls: result.toolCalls });
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
catch (error) {
|
|
1328
|
+
// Cancellation is judged from the session signal; every other abort that reached the run
|
|
1329
|
+
// signal is a deadline.
|
|
1330
|
+
const cancelled = (options.context.userSignal ?? options.context.signal).aborted;
|
|
1331
|
+
const deadline = budget.expired() || signal.aborted;
|
|
1332
|
+
result.status = cancelled ? 'cancelled' : deadline ? 'exhausted' : 'infrastructure_error';
|
|
1333
|
+
result.reason = cancelled ? 'cancelled' : deadline ? 'wallTimeMs' : error instanceof Error ? error.message : 'Graph runtime failure';
|
|
1334
|
+
}
|
|
1335
|
+
// Cleanup must be unconditional: both the stop event and the Code Intelligence handoff await
|
|
1336
|
+
// sinks that can reject, and a rejection would otherwise skip disposal and leave the run's
|
|
1337
|
+
// timer retained until its original deadline.
|
|
1338
|
+
try {
|
|
1339
|
+
await options.commandMemory?.flush(options.context.userSignal ?? options.context.signal);
|
|
1340
|
+
if (result.status !== 'succeeded') {
|
|
1341
|
+
delete result.completion;
|
|
1342
|
+
// The event carries the raw code for a machine and the finished sentence for a person, so a
|
|
1343
|
+
// client that reads only the journal shows the same words as the command line.
|
|
1344
|
+
await emit('graph.stopped', { nodeId: currentNode, status: result.status, reason: result.reason, reasonText: stopReasonSentence(result.reason, result.limits), usage: { ...result.usage }, toolCalls: result.toolCalls });
|
|
1345
|
+
}
|
|
1346
|
+
result.todos = todoStore.snapshot();
|
|
1347
|
+
if (widgetStore.definitionsList().length)
|
|
1348
|
+
result.widgets = widgetStore.snapshot();
|
|
1349
|
+
await options.codeIntel?.endRun({ status: result.status, usage: result.usage, toolCalls: result.toolCalls });
|
|
1350
|
+
return result;
|
|
1351
|
+
}
|
|
1352
|
+
finally {
|
|
1353
|
+
unsubscribeControl?.();
|
|
1354
|
+
budget.dispose();
|
|
1355
|
+
}
|
|
1356
|
+
}
|