@cjhyy/code-shell-core 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -23
- package/dist/agent/agent-definition-registry.d.ts +2 -2
- package/dist/agent/agent-definition-registry.js +47 -10
- package/dist/agent/agent-definition.d.ts +5 -0
- package/dist/agent/agent-definition.js +14 -0
- package/dist/automation/index.d.ts +7 -4
- package/dist/automation/index.js +4 -2
- package/dist/automation/runner.js +3 -1
- package/dist/automation/scheduler.d.ts +57 -1
- package/dist/automation/scheduler.js +123 -23
- package/dist/automation/store.d.ts +6 -2
- package/dist/automation/store.js +7 -3
- package/dist/capabilities/index.d.ts +109 -0
- package/dist/capabilities/index.js +80 -0
- package/dist/capability-control/disabled-lists.d.ts +2 -1
- package/dist/capability-control/disabled-lists.js +3 -5
- package/dist/capability-control/overlay.d.ts +14 -1
- package/dist/capability-control/overlay.js +40 -0
- package/dist/capability-control/service.js +6 -4
- package/dist/cli/agent-server-stdio.d.ts +1 -1
- package/dist/cli/agent-server-stdio.js +66 -6
- package/dist/cli/agent-server-tcp.js +7 -3
- package/dist/context/compaction.d.ts +39 -3
- package/dist/context/compaction.js +151 -39
- package/dist/context/manager.d.ts +17 -1
- package/dist/context/manager.js +36 -1
- package/dist/credentials/access.d.ts +3 -1
- package/dist/credentials/access.js +24 -3
- package/dist/credentials/index.d.ts +1 -1
- package/dist/credentials/index.js +1 -1
- package/dist/credentials/oauth.d.ts +4 -1
- package/dist/credentials/oauth.js +14 -0
- package/dist/credentials/store.d.ts +15 -1
- package/dist/credentials/store.js +17 -4
- package/dist/credentials/types.d.ts +24 -0
- package/dist/credentials/use-credential-tool.js +15 -1
- package/dist/engine/auxiliary-pipeline.d.ts +40 -0
- package/dist/engine/auxiliary-pipeline.js +181 -0
- package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
- package/dist/{settings → engine}/disk-defaults.js +5 -2
- package/dist/engine/dynamic-tool-defs.d.ts +4 -0
- package/dist/engine/dynamic-tool-defs.js +4 -0
- package/dist/engine/engine.d.ts +254 -195
- package/dist/engine/engine.js +1812 -2041
- package/dist/engine/file-history-hook.d.ts +11 -0
- package/dist/engine/file-history-hook.js +31 -0
- package/dist/engine/goal-judge-context.d.ts +9 -0
- package/dist/engine/goal-judge-context.js +234 -0
- package/dist/engine/injected-context-cache.d.ts +6 -0
- package/dist/engine/injected-context-cache.js +13 -0
- package/dist/engine/input-attachments.d.ts +1 -1
- package/dist/engine/model-facade.d.ts +3 -3
- package/dist/engine/model-facade.js +15 -14
- package/dist/engine/permission-controller.d.ts +55 -0
- package/dist/engine/permission-controller.js +148 -0
- package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
- package/dist/engine/prompt-cache-diagnostics.js +178 -0
- package/dist/engine/run-accounting.d.ts +41 -0
- package/dist/engine/run-accounting.js +126 -0
- package/dist/engine/run-context.d.ts +44 -0
- package/dist/engine/run-context.js +88 -0
- package/dist/engine/run-environment.d.ts +30 -0
- package/dist/engine/run-environment.js +77 -0
- package/dist/engine/run-finalize.d.ts +58 -0
- package/dist/engine/run-finalize.js +245 -0
- package/dist/engine/run-goal.d.ts +58 -0
- package/dist/engine/run-goal.js +188 -0
- package/dist/engine/run-image-input.d.ts +1 -1
- package/dist/engine/run-image-input.js +5 -3
- package/dist/engine/run-session-open.d.ts +41 -0
- package/dist/engine/run-session-open.js +186 -0
- package/dist/engine/run-setup.d.ts +42 -0
- package/dist/engine/run-setup.js +58 -0
- package/dist/engine/run-tooling.d.ts +125 -0
- package/dist/engine/run-tooling.js +283 -0
- package/dist/engine/run-types.d.ts +139 -0
- package/dist/engine/run-types.js +12 -0
- package/dist/engine/run-workspace.d.ts +50 -0
- package/dist/engine/run-workspace.js +114 -0
- package/dist/engine/steer-queue.d.ts +1 -1
- package/dist/engine/subagent-spawner.d.ts +32 -0
- package/dist/engine/subagent-spawner.js +287 -0
- package/dist/engine/tool-summary.d.ts +2 -2
- package/dist/engine/tool-summary.js +2 -2
- package/dist/engine/turn-loop.d.ts +49 -10
- package/dist/engine/turn-loop.js +370 -104
- package/dist/engine/types.d.ts +30 -3
- package/dist/engine/types.js +1 -1
- package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
- package/dist/goal/lifecycle.js +482 -0
- package/dist/hooks/events.d.ts +24 -10
- package/dist/hooks/goal-stop-hook.d.ts +17 -28
- package/dist/hooks/goal-stop-hook.js +110 -465
- package/dist/hooks/registry.js +1 -1
- package/dist/index.d.ts +48 -108
- package/dist/index.extension.d.ts +51 -0
- package/dist/index.extension.js +39 -0
- package/dist/index.internal.d.ts +86 -0
- package/dist/index.internal.js +92 -0
- package/dist/index.js +34 -123
- package/dist/links/cli.d.ts +48 -0
- package/dist/links/cli.js +617 -0
- package/dist/links/http.d.ts +40 -0
- package/dist/links/http.js +166 -0
- package/dist/links/index.d.ts +4 -0
- package/dist/links/index.js +3 -0
- package/dist/links/link-action-tool.d.ts +5 -0
- package/dist/links/link-action-tool.js +241 -0
- package/dist/links/providers.d.ts +8 -0
- package/dist/links/providers.js +665 -0
- package/dist/links/types.d.ts +44 -0
- package/dist/llm/client-base.d.ts +7 -0
- package/dist/llm/client-base.js +60 -0
- package/dist/llm/model-pool.d.ts +1 -1
- package/dist/llm/model-pool.js +1 -1
- package/dist/llm/providers/anthropic.d.ts +1 -0
- package/dist/llm/providers/anthropic.js +9 -0
- package/dist/llm/providers/openai.d.ts +1 -0
- package/dist/llm/providers/openai.js +17 -0
- package/dist/model-catalog/index.js +15 -2
- package/dist/model-catalog/resolve.d.ts +13 -1
- package/dist/model-catalog/resolve.js +37 -2
- package/dist/model-catalog/types.d.ts +74 -48
- package/dist/model-catalog/types.js +16 -5
- package/dist/model-catalog/upsert.d.ts +3 -1
- package/dist/model-catalog/upsert.js +9 -0
- package/dist/onboarding.d.ts +0 -1
- package/dist/onboarding.js +1 -22
- package/dist/panel-apps/bindings.d.ts +24 -0
- package/dist/panel-apps/bindings.js +69 -0
- package/dist/panel-apps/github-archive.d.ts +21 -0
- package/dist/panel-apps/github-archive.js +98 -0
- package/dist/panel-apps/index.d.ts +4 -0
- package/dist/panel-apps/index.js +4 -0
- package/dist/panel-apps/installer.d.ts +68 -0
- package/dist/panel-apps/installer.js +622 -0
- package/dist/panel-apps/manifest.d.ts +364 -0
- package/dist/panel-apps/manifest.js +189 -0
- package/dist/panel-apps/paths.d.ts +13 -0
- package/dist/panel-apps/paths.js +38 -0
- package/dist/panel-apps/registry.d.ts +51 -0
- package/dist/panel-apps/registry.js +99 -0
- package/dist/panel-apps/runtime.d.ts +80 -0
- package/dist/panel-apps/runtime.js +154 -0
- package/dist/plugins/gitOps.js +8 -1
- package/dist/plugins/installedPlugins.d.ts +2 -1
- package/dist/plugins/installedPlugins.js +146 -8
- package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
- package/dist/plugins/installer/codex/convertAgents.js +62 -8
- package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
- package/dist/plugins/installer/codex/convertCommands.js +35 -12
- package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
- package/dist/plugins/installer/codex/convertHooks.js +82 -0
- package/dist/plugins/installer/codex/convertSkills.js +41 -6
- package/dist/plugins/installer/install.d.ts +7 -1
- package/dist/plugins/installer/install.js +21 -87
- package/dist/plugins/installer/installFromArchive.d.ts +26 -4
- package/dist/plugins/installer/installFromArchive.js +44 -27
- package/dist/plugins/installer/installFromNpm.d.ts +31 -0
- package/dist/plugins/installer/installFromNpm.js +273 -0
- package/dist/plugins/installer/loadPluginAgents.js +17 -4
- package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
- package/dist/plugins/installer/loadPluginMcp.js +245 -35
- package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
- package/dist/plugins/installer/normalizeManifest.js +306 -0
- package/dist/plugins/installer/npmTar.d.ts +13 -0
- package/dist/plugins/installer/npmTar.js +321 -0
- package/dist/plugins/installer/parseSource.d.ts +11 -0
- package/dist/plugins/installer/parseSource.js +48 -0
- package/dist/plugins/installer/preview.d.ts +101 -0
- package/dist/plugins/installer/preview.js +336 -0
- package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
- package/dist/plugins/installer/projectPluginSource.js +140 -0
- package/dist/plugins/installer/types.d.ts +775 -0
- package/dist/plugins/installer/types.js +100 -0
- package/dist/plugins/installer/unzip.d.ts +11 -0
- package/dist/plugins/installer/unzip.js +123 -9
- package/dist/plugins/installer/update.d.ts +2 -2
- package/dist/plugins/installer/update.js +43 -4
- package/dist/plugins/loadPluginHooks.d.ts +19 -2
- package/dist/plugins/loadPluginHooks.js +97 -86
- package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
- package/dist/plugins/pluginAutomationTemplates.js +50 -0
- package/dist/plugins/pluginCatalog.d.ts +45 -0
- package/dist/plugins/pluginCatalog.js +87 -0
- package/dist/plugins/pluginCommandHook.d.ts +6 -0
- package/dist/plugins/pluginCommandHook.js +25 -8
- package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
- package/dist/plugins/pluginCommandsLoader.js +181 -7
- package/dist/plugins/pluginContent.d.ts +10 -1
- package/dist/plugins/pluginContent.js +87 -30
- package/dist/plugins/pluginHookApproval.d.ts +30 -0
- package/dist/plugins/pluginHookApproval.js +160 -0
- package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
- package/dist/plugins/pluginHookIntegrity.js +361 -0
- package/dist/plugins/pluginInstaller.js +71 -12
- package/dist/plugins/pluginMcpApproval.d.ts +19 -0
- package/dist/plugins/pluginMcpApproval.js +110 -0
- package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
- package/dist/plugins/pluginMcpIntegrity.js +74 -0
- package/dist/plugins/types.d.ts +30 -0
- package/dist/plugins/varRewrite.d.ts +9 -5
- package/dist/plugins/varRewrite.js +26 -17
- package/dist/preset/index.d.ts +11 -8
- package/dist/preset/index.js +62 -203
- package/dist/product/define.js +9 -3
- package/dist/product/types.d.ts +0 -2
- package/dist/profile/activation.d.ts +36 -0
- package/dist/profile/activation.js +57 -0
- package/dist/profile/catalog-store.d.ts +77 -0
- package/dist/profile/catalog-store.js +346 -0
- package/dist/profile/catalog.d.ts +54 -0
- package/dist/profile/catalog.js +152 -0
- package/dist/profile/index.d.ts +7 -0
- package/dist/profile/index.js +7 -0
- package/dist/profile/requirements.d.ts +76 -0
- package/dist/profile/requirements.js +117 -0
- package/dist/profile/resolve.d.ts +11 -0
- package/dist/profile/resolve.js +41 -0
- package/dist/profile/store.d.ts +17 -0
- package/dist/profile/store.js +167 -0
- package/dist/profile/types.d.ts +321 -0
- package/dist/profile/types.js +104 -0
- package/dist/prompt/composer.d.ts +46 -7
- package/dist/prompt/composer.js +78 -48
- package/dist/prompt/instruction-scanner.d.ts +6 -5
- package/dist/prompt/instruction-scanner.js +8 -23
- package/dist/prompt/section-loader.d.ts +2 -2
- package/dist/prompt/section-loader.js +7 -4
- package/dist/prompt/sections/browser.md +10 -9
- package/dist/prompt/sections/harness-base.md +9 -0
- package/dist/protocol/chat-session-manager.d.ts +64 -1
- package/dist/protocol/chat-session-manager.js +104 -0
- package/dist/protocol/chat-session.d.ts +61 -10
- package/dist/protocol/chat-session.js +135 -25
- package/dist/protocol/client.d.ts +33 -3
- package/dist/protocol/client.js +96 -5
- package/dist/protocol/index.d.ts +2 -2
- package/dist/protocol/index.js +2 -2
- package/dist/protocol/mobile-remote-types.d.ts +406 -0
- package/dist/protocol/mobile-remote-types.js +1 -0
- package/dist/protocol/server.d.ts +127 -3
- package/dist/protocol/server.js +1309 -182
- package/dist/protocol/types.d.ts +152 -34
- package/dist/protocol/types.js +16 -0
- package/dist/run/ArtifactTracker.d.ts +6 -1
- package/dist/run/ArtifactTracker.js +29 -21
- package/dist/run/EngineRunner.d.ts +2 -0
- package/dist/run/EngineRunner.js +1 -0
- package/dist/run/RunManager.d.ts +26 -0
- package/dist/run/RunManager.js +82 -11
- package/dist/run/factory.d.ts +3 -0
- package/dist/run/factory.js +2 -0
- package/dist/runtime/safe-spawn.d.ts +6 -0
- package/dist/runtime/safe-spawn.js +8 -13
- package/dist/services/auto-dream.d.ts +13 -1
- package/dist/services/auto-dream.js +56 -8
- package/dist/services/dream-consolidation.js +10 -1
- package/dist/services/memory-orchestrator.js +6 -2
- package/dist/services/oauth.js +4 -1
- package/dist/services/session-memory.d.ts +4 -4
- package/dist/services/session-memory.js +13 -10
- package/dist/session/memory.d.ts +26 -7
- package/dist/session/memory.js +79 -21
- package/dist/session/session-manager.d.ts +182 -28
- package/dist/session/session-manager.js +910 -130
- package/dist/session/session-message.d.ts +22 -0
- package/dist/session/session-message.js +1 -0
- package/dist/session/transcript.d.ts +46 -5
- package/dist/session/transcript.js +159 -3
- package/dist/settings/feature-flags.d.ts +40 -0
- package/dist/settings/feature-flags.js +40 -0
- package/dist/settings/manager.d.ts +39 -1
- package/dist/settings/manager.js +102 -41
- package/dist/settings/migrate-config.js +4 -2
- package/dist/settings/schema.d.ts +511 -177
- package/dist/settings/schema.js +98 -25
- package/dist/skills/scanner.d.ts +6 -2
- package/dist/skills/scanner.js +160 -9
- package/dist/sources/adapter.d.ts +14 -0
- package/dist/sources/adapter.js +7 -0
- package/dist/sources/adapters/local-files.d.ts +10 -0
- package/dist/sources/adapters/local-files.js +127 -0
- package/dist/sources/adapters/mcp-resource.d.ts +17 -0
- package/dist/sources/adapters/mcp-resource.js +41 -0
- package/dist/sources/adapters/mock.d.ts +3 -0
- package/dist/sources/adapters/mock.js +29 -0
- package/dist/sources/binding.d.ts +6 -0
- package/dist/sources/binding.js +24 -0
- package/dist/sources/catalog.d.ts +6 -0
- package/dist/sources/catalog.js +64 -0
- package/dist/sources/context-summary.d.ts +8 -0
- package/dist/sources/context-summary.js +13 -0
- package/dist/sources/credential-status.d.ts +2 -0
- package/dist/sources/credential-status.js +13 -0
- package/dist/sources/index.d.ts +10 -0
- package/dist/sources/index.js +10 -0
- package/dist/sources/resolve.d.ts +28 -0
- package/dist/sources/resolve.js +47 -0
- package/dist/sources/truncate-utf8.d.ts +7 -0
- package/dist/sources/truncate-utf8.js +18 -0
- package/dist/sources/types.d.ts +71 -0
- package/dist/sources/types.js +26 -0
- package/dist/testing/fetch-stub.d.ts +32 -0
- package/dist/testing/fetch-stub.js +24 -0
- package/dist/themes/image.d.ts +18 -0
- package/dist/themes/image.js +117 -0
- package/dist/themes/index.d.ts +4 -0
- package/dist/themes/index.js +4 -0
- package/dist/themes/installer.d.ts +50 -0
- package/dist/themes/installer.js +290 -0
- package/dist/themes/manifest.d.ts +102 -0
- package/dist/themes/manifest.js +86 -0
- package/dist/themes/paths.d.ts +14 -0
- package/dist/themes/paths.js +33 -0
- package/dist/tool-system/browser-bridge.d.ts +53 -11
- package/dist/tool-system/browser-bridge.js +8 -9
- package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
- package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
- package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
- package/dist/tool-system/builtin/agent-notifications.js +291 -101
- package/dist/tool-system/builtin/agent-output-file.js +1 -3
- package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
- package/dist/tool-system/builtin/agent-progress.js +83 -0
- package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
- package/dist/tool-system/builtin/agent-registry.js +178 -9
- package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
- package/dist/tool-system/builtin/agent.d.ts +2 -0
- package/dist/tool-system/builtin/agent.js +274 -33
- package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
- package/dist/tool-system/builtin/background-jobs.js +96 -4
- package/dist/tool-system/builtin/background-work.d.ts +6 -0
- package/dist/tool-system/builtin/background-work.js +8 -1
- package/dist/tool-system/builtin/bash.js +5 -2
- package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
- package/dist/tool-system/builtin/browser-tools.js +89 -23
- package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
- package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
- package/dist/tool-system/builtin/edit.js +2 -6
- package/dist/tool-system/builtin/file-cache.d.ts +2 -0
- package/dist/tool-system/builtin/file-cache.js +4 -0
- package/dist/tool-system/builtin/generate-image.js +17 -10
- package/dist/tool-system/builtin/generate-video.js +26 -7
- package/dist/tool-system/builtin/grep.js +2 -2
- package/dist/tool-system/builtin/image-uploader.js +7 -1
- package/dist/tool-system/builtin/index.d.ts +32 -7
- package/dist/tool-system/builtin/index.js +237 -167
- package/dist/tool-system/builtin/memory.d.ts +6 -0
- package/dist/tool-system/builtin/memory.js +36 -15
- package/dist/tool-system/builtin/panel.d.ts +9 -0
- package/dist/tool-system/builtin/panel.js +314 -0
- package/dist/tool-system/builtin/read.js +5 -1
- package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
- package/dist/tool-system/builtin/send-message-to-session.js +67 -0
- package/dist/tool-system/builtin/sources.d.ts +8 -0
- package/dist/tool-system/builtin/sources.js +137 -0
- package/dist/tool-system/builtin/tool-search.js +7 -2
- package/dist/tool-system/builtin/update-automation-memory.js +2 -0
- package/dist/tool-system/builtin/web-fetch.js +17 -13
- package/dist/tool-system/builtin/web-search.js +1 -3
- package/dist/tool-system/capability-module.d.ts +93 -0
- package/dist/tool-system/capability-module.js +53 -0
- package/dist/tool-system/context.d.ts +77 -19
- package/dist/tool-system/executor.js +75 -50
- package/dist/tool-system/external-tool-exposure.d.ts +60 -0
- package/dist/tool-system/external-tool-exposure.js +304 -0
- package/dist/tool-system/mcp-manager.d.ts +11 -1
- package/dist/tool-system/mcp-manager.js +19 -4
- package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
- package/dist/tool-system/mcp-tool-policy.js +34 -0
- package/dist/tool-system/panel-bridge.d.ts +53 -0
- package/dist/tool-system/panel-bridge.js +1 -0
- package/dist/tool-system/permission.d.ts +26 -0
- package/dist/tool-system/permission.js +46 -0
- package/dist/tool-system/registry.d.ts +12 -1
- package/dist/tool-system/registry.js +31 -7
- package/dist/tool-system/sandbox/index.js +3 -8
- package/dist/tool-system/sandbox/seatbelt.js +2 -6
- package/dist/tool-system/session-tool-host.d.ts +139 -0
- package/dist/tool-system/session-tool-host.js +167 -0
- package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
- package/dist/tool-system/testing/tool-registry-harness.js +51 -0
- package/dist/tool-system/validation.d.ts +14 -7
- package/dist/tool-system/validation.js +701 -7
- package/dist/types.d.ts +186 -20
- package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
- package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
- package/dist/utils/file-mutex.d.ts +65 -0
- package/dist/utils/file-mutex.js +145 -0
- package/dist/utils/json.d.ts +2 -4
- package/dist/utils/json.js +2 -4
- package/dist/utils/lockfile.d.ts +30 -1
- package/dist/utils/lockfile.js +2 -2
- package/dist/utils/secret-scrubber.d.ts +8 -0
- package/dist/utils/secret-scrubber.js +227 -0
- package/dist/utils/toolDisplay.js +1 -1
- package/package.json +20 -5
- package/THIRD_PARTY_NOTICES.md +0 -206
- package/dist/arena/arena.d.ts +0 -45
- package/dist/arena/arena.js +0 -362
- package/dist/arena/context/context-tools.d.ts +0 -16
- package/dist/arena/context/context-tools.js +0 -272
- package/dist/arena/context/within-root.d.ts +0 -7
- package/dist/arena/context/within-root.js +0 -15
- package/dist/arena/detect-mode.d.ts +0 -20
- package/dist/arena/detect-mode.js +0 -78
- package/dist/arena/digest-builder.d.ts +0 -25
- package/dist/arena/digest-builder.js +0 -120
- package/dist/arena/index.d.ts +0 -29
- package/dist/arena/index.js +0 -29
- package/dist/arena/iterate/convergence.d.ts +0 -25
- package/dist/arena/iterate/convergence.js +0 -103
- package/dist/arena/iterate/formats/index.d.ts +0 -22
- package/dist/arena/iterate/formats/index.js +0 -283
- package/dist/arena/iterate/index.d.ts +0 -11
- package/dist/arena/iterate/index.js +0 -9
- package/dist/arena/iterate/iterative-arena.d.ts +0 -23
- package/dist/arena/iterate/iterative-arena.js +0 -237
- package/dist/arena/iterate/parse.d.ts +0 -42
- package/dist/arena/iterate/parse.js +0 -123
- package/dist/arena/iterate/phases/argue.d.ts +0 -22
- package/dist/arena/iterate/phases/argue.js +0 -165
- package/dist/arena/iterate/phases/revise.d.ts +0 -16
- package/dist/arena/iterate/phases/revise.js +0 -62
- package/dist/arena/iterate/phases/tournament.d.ts +0 -34
- package/dist/arena/iterate/phases/tournament.js +0 -113
- package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
- package/dist/arena/iterate/tools/web-tools.js +0 -54
- package/dist/arena/iterate/types.d.ts +0 -152
- package/dist/arena/iterate/types.js +0 -8
- package/dist/arena/ledger.d.ts +0 -47
- package/dist/arena/ledger.js +0 -159
- package/dist/arena/lenses/architecture.d.ts +0 -5
- package/dist/arena/lenses/architecture.js +0 -22
- package/dist/arena/lenses/engineering.d.ts +0 -5
- package/dist/arena/lenses/engineering.js +0 -22
- package/dist/arena/lenses/general.d.ts +0 -5
- package/dist/arena/lenses/general.js +0 -20
- package/dist/arena/lenses/index.d.ts +0 -16
- package/dist/arena/lenses/index.js +0 -47
- package/dist/arena/lenses/product.d.ts +0 -5
- package/dist/arena/lenses/product.js +0 -22
- package/dist/arena/model-presets.d.ts +0 -23
- package/dist/arena/model-presets.js +0 -44
- package/dist/arena/phases/adjudication.d.ts +0 -25
- package/dist/arena/phases/adjudication.js +0 -142
- package/dist/arena/phases/build-consensus.d.ts +0 -30
- package/dist/arena/phases/build-consensus.js +0 -85
- package/dist/arena/phases/claim-registry.d.ts +0 -26
- package/dist/arena/phases/claim-registry.js +0 -60
- package/dist/arena/phases/cross-review.d.ts +0 -47
- package/dist/arena/phases/cross-review.js +0 -224
- package/dist/arena/phases/debate-rounds.d.ts +0 -28
- package/dist/arena/phases/debate-rounds.js +0 -161
- package/dist/arena/phases/participant-research.d.ts +0 -39
- package/dist/arena/phases/participant-research.js +0 -316
- package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
- package/dist/arena/phases/planning-detail-expansion.js +0 -120
- package/dist/arena/planner.d.ts +0 -28
- package/dist/arena/planner.js +0 -312
- package/dist/arena/providers/docs.d.ts +0 -7
- package/dist/arena/providers/docs.js +0 -111
- package/dist/arena/providers/git.d.ts +0 -8
- package/dist/arena/providers/git.js +0 -174
- package/dist/arena/providers/index.d.ts +0 -32
- package/dist/arena/providers/index.js +0 -132
- package/dist/arena/providers/none.d.ts +0 -7
- package/dist/arena/providers/none.js +0 -11
- package/dist/arena/providers/repo.d.ts +0 -7
- package/dist/arena/providers/repo.js +0 -258
- package/dist/arena/render/session.d.ts +0 -17
- package/dist/arena/render/session.js +0 -190
- package/dist/arena/render/terminal.d.ts +0 -34
- package/dist/arena/render/terminal.js +0 -286
- package/dist/arena/strategies/discussion.d.ts +0 -25
- package/dist/arena/strategies/discussion.js +0 -143
- package/dist/arena/strategies/index.d.ts +0 -15
- package/dist/arena/strategies/index.js +0 -28
- package/dist/arena/strategies/language-wrapper.d.ts +0 -17
- package/dist/arena/strategies/language-wrapper.js +0 -102
- package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
- package/dist/arena/strategies/lens-wrapper.js +0 -236
- package/dist/arena/strategies/planning.d.ts +0 -30
- package/dist/arena/strategies/planning.js +0 -225
- package/dist/arena/strategies/review.d.ts +0 -26
- package/dist/arena/strategies/review.js +0 -168
- package/dist/arena/strategies/utils.d.ts +0 -36
- package/dist/arena/strategies/utils.js +0 -603
- package/dist/arena/tools/selector.d.ts +0 -17
- package/dist/arena/tools/selector.js +0 -61
- package/dist/arena/transitions.d.ts +0 -53
- package/dist/arena/transitions.js +0 -97
- package/dist/arena/types.d.ts +0 -518
- package/dist/arena/types.js +0 -27
- package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
- package/dist/cc-orchestrator/agent-adapter.js +0 -143
- package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
- package/dist/cc-orchestrator/cc-capability.js +0 -53
- package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
- package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
- package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
- package/dist/cc-orchestrator/codex-session-history.js +0 -247
- package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
- package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
- package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-changes.js +0 -231
- package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-driver.js +0 -284
- package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
- package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
- package/dist/cc-orchestrator/index.d.ts +0 -8
- package/dist/cc-orchestrator/index.js +0 -8
- package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
- package/dist/cc-orchestrator/relevance-judge.js +0 -29
- package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
- package/dist/cc-orchestrator/session-discovery.js +0 -125
- package/dist/cc-orchestrator/session-history.d.ts +0 -54
- package/dist/cc-orchestrator/session-history.js +0 -150
- package/dist/cron/cron-runtime.d.ts +0 -2
- package/dist/cron/cron-runtime.js +0 -2
- package/dist/cron/cron-store.d.ts +0 -2
- package/dist/cron/cron-store.js +0 -2
- package/dist/cron/scheduler.d.ts +0 -7
- package/dist/cron/scheduler.js +0 -7
- package/dist/engine/goal.js +0 -206
- package/dist/external-agents/config.d.ts +0 -2
- package/dist/external-agents/config.js +0 -15
- package/dist/external-agents/types.d.ts +0 -31
- package/dist/git/parse-log.d.ts +0 -13
- package/dist/git/parse-log.js +0 -21
- package/dist/git/utils.d.ts +0 -49
- package/dist/git/utils.js +0 -161
- package/dist/git/worktree/crud.d.ts +0 -72
- package/dist/git/worktree/crud.js +0 -235
- package/dist/git/worktree/diff.d.ts +0 -14
- package/dist/git/worktree/diff.js +0 -82
- package/dist/git/worktree/git-exec.d.ts +0 -7
- package/dist/git/worktree/git-exec.js +0 -87
- package/dist/git/worktree/index.d.ts +0 -5
- package/dist/git/worktree/index.js +0 -5
- package/dist/git/worktree/query.d.ts +0 -43
- package/dist/git/worktree/query.js +0 -128
- package/dist/git/worktree/slug.d.ts +0 -11
- package/dist/git/worktree/slug.js +0 -58
- package/dist/git/worktree.d.ts +0 -1
- package/dist/git/worktree.js +0 -5
- package/dist/lsp/client.d.ts +0 -41
- package/dist/lsp/client.js +0 -186
- package/dist/lsp/manager.d.ts +0 -40
- package/dist/lsp/manager.js +0 -155
- package/dist/lsp/root-path.d.ts +0 -9
- package/dist/lsp/root-path.js +0 -12
- package/dist/lsp/servers.d.ts +0 -16
- package/dist/lsp/servers.js +0 -60
- package/dist/prompt/sections/coding.md +0 -35
- package/dist/quota/credentials.d.ts +0 -3
- package/dist/quota/credentials.js +0 -80
- package/dist/quota/index.d.ts +0 -36
- package/dist/quota/index.js +0 -155
- package/dist/quota/types.d.ts +0 -48
- package/dist/quota/types.js +0 -13
- package/dist/review/review-prompt.d.ts +0 -28
- package/dist/review/review-prompt.js +0 -81
- package/dist/state.d.ts +0 -160
- package/dist/state.js +0 -267
- package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
- package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
- package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
- package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
- package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
- package/dist/tool-system/builtin/apply-patch/index.js +0 -105
- package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
- package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
- package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
- package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
- package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
- package/dist/tool-system/builtin/apply-patch/types.js +0 -13
- package/dist/tool-system/builtin/arena.d.ts +0 -31
- package/dist/tool-system/builtin/arena.js +0 -416
- package/dist/tool-system/builtin/brief.d.ts +0 -6
- package/dist/tool-system/builtin/brief.js +0 -41
- package/dist/tool-system/builtin/check-quota.d.ts +0 -15
- package/dist/tool-system/builtin/check-quota.js +0 -34
- package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
- package/dist/tool-system/builtin/drive-claude-code.js +0 -698
- package/dist/tool-system/builtin/lsp.d.ts +0 -7
- package/dist/tool-system/builtin/lsp.js +0 -144
- package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
- package/dist/tool-system/builtin/notebook-edit.js +0 -127
- package/dist/tool-system/builtin/worktree.d.ts +0 -11
- package/dist/tool-system/builtin/worktree.js +0 -363
- /package/dist/{external-agents → links}/types.js +0 -0
- /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
- /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
import { ToolExecutor } from "../tool-system/executor.js";
|
|
2
|
+
import { InvestigationGuard } from "../tool-system/investigation-guard.js";
|
|
3
|
+
import { TaskGuard } from "../tool-system/task-guard.js";
|
|
4
|
+
import { PermissionClassifier, InteractiveApprovalBackend } from "../tool-system/permission.js";
|
|
5
|
+
import { MCPManager } from "../tool-system/mcp-manager.js";
|
|
6
|
+
import { buildMcpToolPolicies, isRegisteredMcpToolAllowed, } from "../tool-system/mcp-tool-policy.js";
|
|
7
|
+
import { PLAN_MODE_ALLOWED_TOOLS } from "../tool-system/plan-mode-allowlist.js";
|
|
8
|
+
import { isFeatureEnabled } from "../settings/feature-flags.js";
|
|
9
|
+
import { applyDynamicToolDef } from "./dynamic-tool-defs.js";
|
|
10
|
+
/** engine.ts L1485-1522 —— ToolContext 组装(spawner、agentDefinitions、base 由调用方传入)。 */
|
|
11
|
+
export function buildRunToolContext(args) {
|
|
12
|
+
const { options, profile, profileParams } = args;
|
|
13
|
+
let pendingRunYield;
|
|
14
|
+
// sessionId is filled in after the session bundle is resolved below
|
|
15
|
+
// (the session may be cold-started or resumed). Until then this is
|
|
16
|
+
// intentionally shaped as a mutable local; we treat it as immutable
|
|
17
|
+
// after the assignment.
|
|
18
|
+
const toolCtx = {
|
|
19
|
+
...args.base,
|
|
20
|
+
approvalRouter: options?.approvalRouter ?? args.configApprovalRouter,
|
|
21
|
+
permissionMode: args.runPermissionMode,
|
|
22
|
+
planMode: args.runPlanMode,
|
|
23
|
+
subAgentSpawner: args.subAgentSpawner,
|
|
24
|
+
agentDefinitions: args.agentDefinitions,
|
|
25
|
+
// Stamp the resolved network policy onto the backend the tools see so
|
|
26
|
+
// Bash can surface "网络 deny" on its result. Shallow-copy (don't mutate
|
|
27
|
+
// the cached backend) — `wrap`/`hintForBlockedOutput` are plain function
|
|
28
|
+
// properties and survive the spread. Off keeps network undefined.
|
|
29
|
+
sandbox: args.sandbox,
|
|
30
|
+
cwd: args.cwd,
|
|
31
|
+
shellEnv: args.shellEnv,
|
|
32
|
+
// TodoWrite reads this to push task_update events independently
|
|
33
|
+
// of its return value, so the UI's pinned task panel refreshes
|
|
34
|
+
// immediately rather than after the LLM next surfaces the
|
|
35
|
+
// snapshot. wrappedOnStream snoops the same channel to keep
|
|
36
|
+
// latestTodos current for TaskGuard.
|
|
37
|
+
streamCallback: options?.onStream,
|
|
38
|
+
setCwd(nextCwd) {
|
|
39
|
+
toolCtx.cwd = nextCwd;
|
|
40
|
+
},
|
|
41
|
+
runYield: {
|
|
42
|
+
request(reason) {
|
|
43
|
+
pendingRunYield ??= reason;
|
|
44
|
+
},
|
|
45
|
+
peek() {
|
|
46
|
+
return pendingRunYield;
|
|
47
|
+
},
|
|
48
|
+
consume() {
|
|
49
|
+
const reason = pendingRunYield;
|
|
50
|
+
pendingRunYield = undefined;
|
|
51
|
+
return reason;
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
};
|
|
55
|
+
if (profile?.allowedToolNames) {
|
|
56
|
+
toolCtx.allowedToolNames = profile.allowedToolNames;
|
|
57
|
+
}
|
|
58
|
+
if (profile?.createRunServices) {
|
|
59
|
+
toolCtx.runScopedServices = profile.createRunServices({
|
|
60
|
+
profileParams,
|
|
61
|
+
reportResult: (key, value) => {
|
|
62
|
+
args.reportResult(key, value);
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
return toolCtx;
|
|
67
|
+
}
|
|
68
|
+
/** engine.ts L1876-1933 —— 权限分类器 + 审批监听 + ToolExecutor + guards。 */
|
|
69
|
+
export function buildRunPermissionPipeline(args) {
|
|
70
|
+
const mode = args.mode;
|
|
71
|
+
const { rules: defaultRules, backend: approvalBackend } = args.permissionController.build(mode, args.cwd, args.approvalRouter);
|
|
72
|
+
const permission = new PermissionClassifier(defaultRules, mode, approvalBackend);
|
|
73
|
+
permission.setApprovalStateListener((waiting, toolName) => {
|
|
74
|
+
args.onApprovalPhase(waiting, toolName);
|
|
75
|
+
});
|
|
76
|
+
// Surface approval waits on the notification hook (fire-and-forget, like
|
|
77
|
+
// background-agent terminal states) so plugins / settings hooks can ping
|
|
78
|
+
// the user while a decision is pending.
|
|
79
|
+
permission.setApprovalEventListener((event) => {
|
|
80
|
+
args.emitNotificationHook({
|
|
81
|
+
kind: event.phase === "requested" ? "approval_requested" : "approval_resolved",
|
|
82
|
+
toolName: event.toolName,
|
|
83
|
+
riskLevel: event.riskLevel,
|
|
84
|
+
...(event.approved !== undefined ? { approved: event.approved } : {}),
|
|
85
|
+
...(event.sessionId ? { sessionId: event.sessionId } : {}),
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
args.permissionController.attach(permission, args.approvalRouter);
|
|
89
|
+
// If the backend is the interactive one, wire it for project-scope
|
|
90
|
+
// persistence: it needs cwd to find settings.local.json, and a callback
|
|
91
|
+
// to apply newly-saved rules to the live classifier so subsequent calls
|
|
92
|
+
// in this same session don't re-prompt. Headless/auto backends skip
|
|
93
|
+
// this — they don't prompt, so there are no project rules to persist.
|
|
94
|
+
if (approvalBackend instanceof InteractiveApprovalBackend) {
|
|
95
|
+
approvalBackend.setSessionContext(args.sessionId, {
|
|
96
|
+
cwd: args.cwd,
|
|
97
|
+
onProjectRules: (rules) => {
|
|
98
|
+
// Prepend the *full* accumulated list of session-saved project rules
|
|
99
|
+
// so user approvals win over defaults and earlier approvals aren't
|
|
100
|
+
// dropped when later ones come in.
|
|
101
|
+
permission.reconfigure(mode, approvalBackend, [...rules, ...defaultRules]);
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
const toolExecutor = new ToolExecutor(args.toolRegistry, permission, args.hooks);
|
|
106
|
+
const investigationGuard = new InvestigationGuard();
|
|
107
|
+
if (args.readOnlySession) {
|
|
108
|
+
investigationGuard.setPolicy("read-only-review");
|
|
109
|
+
}
|
|
110
|
+
else if (args.headless) {
|
|
111
|
+
investigationGuard.setSoftMode(true);
|
|
112
|
+
}
|
|
113
|
+
toolExecutor.setInvestigationGuard(investigationGuard);
|
|
114
|
+
toolExecutor.setTaskGuard(new TaskGuard(() => args.getLatestTodos()));
|
|
115
|
+
// Wire abort signal for cascading cancellation + per-Engine ToolContext
|
|
116
|
+
toolExecutor.setSignal(args.signal);
|
|
117
|
+
toolExecutor.setContext(args.toolCtx);
|
|
118
|
+
return { permission, toolExecutor };
|
|
119
|
+
}
|
|
120
|
+
/** engine.ts L1986-2003 —— MCP 连接(Runtime 池优先,回退 per-Engine)。 */
|
|
121
|
+
export async function connectRunMcp(args) {
|
|
122
|
+
// Connect MCP servers (if configured and not already connected).
|
|
123
|
+
// B1: prefer the Runtime-owned MCPManager so all sessions in a
|
|
124
|
+
// worker share one set of connections. Falling back to a
|
|
125
|
+
// per-Engine instance keeps the null-runtime path (tests, ad-hoc
|
|
126
|
+
// scripts) working.
|
|
127
|
+
const mcpServers = args.mcpServers;
|
|
128
|
+
const mcpDisabled = args.mcpDisabled;
|
|
129
|
+
if (!mcpDisabled && Object.keys(mcpServers).length > 0 && !args.getManager()) {
|
|
130
|
+
if (args.runtimePool) {
|
|
131
|
+
args.setManager(args.runtimePool);
|
|
132
|
+
}
|
|
133
|
+
else {
|
|
134
|
+
args.setManager(new MCPManager(args.toolRegistry));
|
|
135
|
+
}
|
|
136
|
+
await args.getManager().connectAll(mcpServers, args.engineForConnect, (event) => {
|
|
137
|
+
// Fire-and-forget onto the notification hook: hosts/plugins learn
|
|
138
|
+
// about MCP availability changes without polling the pool.
|
|
139
|
+
args.emitNotificationHook({
|
|
140
|
+
kind: event.type,
|
|
141
|
+
server: event.server,
|
|
142
|
+
...(event.error ? { error: event.error } : {}),
|
|
143
|
+
});
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Build the availability-guard context for a tool surface.
|
|
149
|
+
*
|
|
150
|
+
* Extracted from {@link assembleRunToolDefs} so it is callable on its own. It
|
|
151
|
+
* matters that this has exactly one implementation: the executor SKIPS its
|
|
152
|
+
* visibility gate when `toolCtx.toolVisibility` is absent, so a caller that
|
|
153
|
+
* forgets to populate it doesn't just under-expose tools — it makes host-gated
|
|
154
|
+
* tools callable in contexts their guards were written to exclude.
|
|
155
|
+
*
|
|
156
|
+
* Optional keys are omitted rather than set to `undefined`: guards use
|
|
157
|
+
* `!== true` / `?? 0` style checks, and an empty `sessionMessageTargets` must not
|
|
158
|
+
* read as "the host authorized targets".
|
|
159
|
+
*/
|
|
160
|
+
export function buildToolVisibility(inputs) {
|
|
161
|
+
return {
|
|
162
|
+
cwd: inputs.cwd,
|
|
163
|
+
hasGoal: inputs.hasGoal,
|
|
164
|
+
...(inputs.sessionId ? { sessionId: inputs.sessionId } : {}),
|
|
165
|
+
...(inputs.settingsScope ? { settingsScope: inputs.settingsScope } : {}),
|
|
166
|
+
...(inputs.host !== undefined ? { host: inputs.host } : {}),
|
|
167
|
+
...(inputs.isSubAgent !== undefined ? { isSubAgent: inputs.isSubAgent } : {}),
|
|
168
|
+
...(inputs.behaviorProfile !== undefined ? { behaviorProfile: inputs.behaviorProfile } : {}),
|
|
169
|
+
...(inputs.sessionMessageTargets?.length
|
|
170
|
+
? { sessionMessageTargets: inputs.sessionMessageTargets }
|
|
171
|
+
: {}),
|
|
172
|
+
...(inputs.profileMeta ? { profileMeta: inputs.profileMeta } : {}),
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
/** engine.ts L2023-2145 —— builtin override / MCP 可见性 / feature flags / 动态 defs / plan-mode 过滤。
|
|
176
|
+
* 注意:本函数按原逻辑就地 mutate toolCtx(toolVisibility/disabledBuiltins/
|
|
177
|
+
* allowedMcpServers/mcpToolPolicies)。 */
|
|
178
|
+
export function assembleRunToolDefs(args) {
|
|
179
|
+
const { toolCtx } = args;
|
|
180
|
+
const guardCwd = args.guardCwd;
|
|
181
|
+
const toolVisibility = buildToolVisibility({
|
|
182
|
+
cwd: guardCwd,
|
|
183
|
+
hasGoal: args.hasRunnableGoal,
|
|
184
|
+
sessionId: toolCtx.sessionId,
|
|
185
|
+
settingsScope: args.settingsScope,
|
|
186
|
+
host: args.builtinToolHost,
|
|
187
|
+
isSubAgent: args.isSubAgent,
|
|
188
|
+
behaviorProfile: args.behaviorProfileId,
|
|
189
|
+
sessionMessageTargets: toolCtx.sessionMessages?.targets,
|
|
190
|
+
profileMeta: args.profileMeta,
|
|
191
|
+
});
|
|
192
|
+
toolCtx.toolVisibility = toolVisibility;
|
|
193
|
+
// #7: per-turn project builtin override. The toolRegistry's builtin tool
|
|
194
|
+
// SET is ctor-frozen (and may be shared via runtime), so a mid-session
|
|
195
|
+
// project override of a builtin can't rebuild the registry. But the tool
|
|
196
|
+
// LIST handed to the LLM is assembled fresh every turn, so we apply the
|
|
197
|
+
// override here: a builtin marked `off` for this cwd is HIDDEN from the
|
|
198
|
+
// turn's tool list (matching how skills/plugins/agents `off` apply
|
|
199
|
+
// mid-session via readDisabledLists). `on`/`inherit` keep whatever the
|
|
200
|
+
// registry already has — we can't re-add a tool the frozen registry omits,
|
|
201
|
+
// but `on` for a tool already present is a no-op (it stays). This makes a
|
|
202
|
+
// builtin toggle take effect on the NEXT message, like other capability
|
|
203
|
+
// kinds, without touching the registry.
|
|
204
|
+
const builtinOverride = args.builtinOverride;
|
|
205
|
+
// Turn `off` from a prompt-visibility filter into a real execution gate:
|
|
206
|
+
// collect the builtin tool names the override marks `off` and hand them to
|
|
207
|
+
// the executor (via the shared toolCtx the executor already holds a
|
|
208
|
+
// reference to, set at setContext above) so it rejects a call to a hidden
|
|
209
|
+
// builtin instead of running it from the still-populated registry.
|
|
210
|
+
if (builtinOverride) {
|
|
211
|
+
const registryNames = new Set(args.toolRegistry.getToolDefinitions().map((t) => t.name));
|
|
212
|
+
const disabledBuiltins = new Set(Object.keys(builtinOverride).filter((name) => builtinOverride[name] === "off" && registryNames.has(name)));
|
|
213
|
+
toolCtx.disabledBuiltins = disabledBuiltins;
|
|
214
|
+
}
|
|
215
|
+
// MCP tool exposure is per-SESSION even though the pool/registry are
|
|
216
|
+
// worker-shared (B1): a server connected by another project's session
|
|
217
|
+
// registers its tools into the SHARED registry, and without this filter
|
|
218
|
+
// they leaked into every session (e.g. chrome-devtools tools showing up
|
|
219
|
+
// in a project that never enabled the plugin). Keep an MCP tool only when
|
|
220
|
+
// its server is in THIS session's merged config.mcpServers — which
|
|
221
|
+
// already folds the project's capabilityOverrides. Gated on the config
|
|
222
|
+
// being present: engines without one (sub-agents, bare tests) have no
|
|
223
|
+
// MCP tools in their private registries anyway.
|
|
224
|
+
const allowedMcpServers = new Set(args.mcpDisabled
|
|
225
|
+
? []
|
|
226
|
+
: Object.entries(args.mcpServers)
|
|
227
|
+
.filter(([, c]) => c.enabled !== false)
|
|
228
|
+
.map(([n]) => n));
|
|
229
|
+
toolCtx.allowedMcpServers = allowedMcpServers;
|
|
230
|
+
const mcpToolPolicies = buildMcpToolPolicies(args.mcpServers);
|
|
231
|
+
toolCtx.mcpToolPolicies = mcpToolPolicies;
|
|
232
|
+
const mcpVisible = (toolName) => {
|
|
233
|
+
const reg = args.toolRegistry.getTool(toolName);
|
|
234
|
+
return (reg?.source !== "mcp" ||
|
|
235
|
+
(allowedMcpServers.has(reg?.serverName ?? "") &&
|
|
236
|
+
isRegisteredMcpToolAllowed({
|
|
237
|
+
source: "mcp",
|
|
238
|
+
serverName: reg?.serverName,
|
|
239
|
+
mcpToolName: reg?.mcpToolName,
|
|
240
|
+
}, mcpToolPolicies)));
|
|
241
|
+
};
|
|
242
|
+
// Feature-flag visibility: a builtin mapped in TOOL_FEATURE_FLAGS is
|
|
243
|
+
// hidden when its flag resolves to false (default-on flags only hide when
|
|
244
|
+
// explicitly disabled, so zero regression out of the box). Read once per
|
|
245
|
+
// turn so flipping a flag in settings takes effect on the NEXT message,
|
|
246
|
+
// like the other capability kinds.
|
|
247
|
+
const featureFlags = args.featureFlags;
|
|
248
|
+
const allToolDefs = args
|
|
249
|
+
.applyBuiltinOverrideVisibility(args.toolRegistry.getToolDefinitions(), builtinOverride)
|
|
250
|
+
.filter((t) => mcpVisible(t.name))
|
|
251
|
+
.filter((t) => {
|
|
252
|
+
const guard = args.toolGuards.get(t.name);
|
|
253
|
+
return guard ? guard(toolVisibility) : true;
|
|
254
|
+
})
|
|
255
|
+
.filter((t) => {
|
|
256
|
+
const flag = args.toolFeatureFlags.get(t.name);
|
|
257
|
+
return flag ? isFeatureEnabled(featureFlags, flag) : true;
|
|
258
|
+
})
|
|
259
|
+
// Dynamic per-engine bits the static defs can't carry: the Agent tool's
|
|
260
|
+
// agent_type enum + listing, and the image/video provider names. See
|
|
261
|
+
// applyDynamicToolDef — forwarding only the Agent description (dropping
|
|
262
|
+
// its rebuilt inputSchema) used to strip the agent_type enum, so the
|
|
263
|
+
// model omitted agent_type and configured roles never applied.
|
|
264
|
+
// A builtin's own exposure.rewriteDefinition (run-scoped rewrites like
|
|
265
|
+
// DelegateWork's closed workspace enum) applies first.
|
|
266
|
+
.map((t) => {
|
|
267
|
+
const rewrite = args.toolRewriters.get(t.name);
|
|
268
|
+
return applyDynamicToolDef(rewrite ? rewrite(t, toolVisibility) : t, toolCtx.agentDefinitions, guardCwd);
|
|
269
|
+
});
|
|
270
|
+
// In plan mode, only expose read-only/planning tools so the model won't
|
|
271
|
+
// attempt writes. Shared with executor.ts's execution gate via
|
|
272
|
+
// PLAN_MODE_ALLOWED_TOOLS so what the model SEES and what the executor
|
|
273
|
+
// RUNS can't drift apart. (Bash is in the set; the executor additionally
|
|
274
|
+
// gates Bash to read-only commands at call time.)
|
|
275
|
+
const profileAllowedToolNames = args.profileAllowedToolNames;
|
|
276
|
+
const profileToolDefs = profileAllowedToolNames
|
|
277
|
+
? allToolDefs.filter((tool) => profileAllowedToolNames.has(tool.name))
|
|
278
|
+
: allToolDefs;
|
|
279
|
+
const toolDefs = args.runPlanMode
|
|
280
|
+
? profileToolDefs.filter((t) => PLAN_MODE_ALLOWED_TOOLS.has(t.name))
|
|
281
|
+
: profileToolDefs;
|
|
282
|
+
return toolDefs;
|
|
283
|
+
}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
import type { SessionKind, StreamCallback, TokenUsage } from "../types.js";
|
|
2
|
+
import type { InputAttachmentMeta } from "../types.js";
|
|
3
|
+
import type { ApprovalRouter } from "../tool-system/permission.js";
|
|
4
|
+
import type { GoalConfig } from "../goal/lifecycle.js";
|
|
5
|
+
import type { EngineConfig, EngineResult } from "./types.js";
|
|
6
|
+
import type { LiveChildState } from "../tool-system/builtin/agent-registry.js";
|
|
7
|
+
import type { LegacyPetWorkspaceOption } from "../types.js";
|
|
8
|
+
import type { SessionMessageTarget } from "../session/session-message.js";
|
|
9
|
+
/**
|
|
10
|
+
* Open string id naming a registered {@link RunBehaviorProfile}. The literal
|
|
11
|
+
* "quickChatRestricted" (and, transitionally, "pet") remain valid values —
|
|
12
|
+
* the type is a string so hosts can register their own profiles.
|
|
13
|
+
*/
|
|
14
|
+
export type RunBehaviorMode = string;
|
|
15
|
+
/**
|
|
16
|
+
* A named, domain-agnostic per-run behavior profile. Engine resolves at most
|
|
17
|
+
* one active profile per run (by behaviorMode or session kind) and applies
|
|
18
|
+
* its constraints generically — core carries no knowledge of what the
|
|
19
|
+
* profile is for. Product domains (e.g. the desktop Pet manager) define
|
|
20
|
+
* profile instances and register them via EngineConfig.behaviorProfiles or
|
|
21
|
+
* ExtensionModule.behaviorProfiles.
|
|
22
|
+
*/
|
|
23
|
+
export interface RunBehaviorProfile {
|
|
24
|
+
id: string;
|
|
25
|
+
/** Appended to the system prompt after config.appendSystemPrompt. */
|
|
26
|
+
systemPromptAppend?: string;
|
|
27
|
+
/** Hard tool allowlist for the run (model visibility + execution gate). */
|
|
28
|
+
allowedToolNames?: ReadonlySet<string>;
|
|
29
|
+
/** When set, the run's permission mode is locked to this value. */
|
|
30
|
+
forcePermissionMode?: NonNullable<EngineConfig["permissionMode"]>;
|
|
31
|
+
/** When true, per-run planMode requests are ignored. */
|
|
32
|
+
disablePlanMode?: boolean;
|
|
33
|
+
/** When true, MCP servers are neither connected nor exposed for the run. */
|
|
34
|
+
disableMcp?: boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Wrapper tag for host-provided runtime context injected at the system
|
|
37
|
+
* prompt tail (e.g. "pet-world"). Injection happens only when both this tag
|
|
38
|
+
* and profileParams.runtimeContext (a string) are present.
|
|
39
|
+
*/
|
|
40
|
+
runtimeContextTag?: string;
|
|
41
|
+
/** Heading line above the runtime-context block. */
|
|
42
|
+
runtimeContextHeading?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Per-run services injected into ToolContext.runScopedServices for tools
|
|
45
|
+
* that share the profile's domain conventions. reportResult(key, value)
|
|
46
|
+
* surfaces structured run output under EngineResult.extensions[profile.id].
|
|
47
|
+
*/
|
|
48
|
+
createRunServices?: (opts: {
|
|
49
|
+
profileParams: Readonly<Record<string, unknown>>;
|
|
50
|
+
reportResult: (key: string, value: unknown) => void;
|
|
51
|
+
}) => Record<string, unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* Per-run metadata exposed to builtin availability guards / definition
|
|
54
|
+
* rewriters via ToolVisibilityContext.profileMeta.
|
|
55
|
+
*/
|
|
56
|
+
buildVisibilityMeta?: (profileParams: Readonly<Record<string, unknown>>) => Record<string, unknown> | undefined;
|
|
57
|
+
/** Auto-activate this profile for these persisted session kinds. */
|
|
58
|
+
activateForSessionKinds?: readonly string[];
|
|
59
|
+
}
|
|
60
|
+
export declare const QUICK_CHAT_RESTRICTED_SYSTEM_PROMPT = "# Side Conversation Boundary\n\nThis is a side conversation, not the main-thread task execution environment.\n- Treat all content before this boundary as reference history only. Do not proactively continue any earlier plan, task, or modification.\n- Default to answering the user's question directly. Use lightweight read-only exploration only when needed.\n- Do not modify files, git state, configuration, or permissions unless the user explicitly asks after this boundary (for example, \"Allow you to modify files, please help me...\" or \"Please directly edit...\"). When explicitly requested, use the normally available tools subject to the current permission and approval mode.\n- Sub-agents are disabled for this side conversation. Do not create or invoke sub-agents.";
|
|
61
|
+
/** The side-conversation restriction expressed as a generic behavior profile. */
|
|
62
|
+
export declare const QUICK_CHAT_RESTRICTED_PROFILE: RunBehaviorProfile;
|
|
63
|
+
export interface EngineRunOptions {
|
|
64
|
+
cwd?: string;
|
|
65
|
+
onStream?: StreamCallback;
|
|
66
|
+
signal?: AbortSignal;
|
|
67
|
+
sessionId?: string;
|
|
68
|
+
/** User-facing text persisted beside the full model-facing task. */
|
|
69
|
+
displayText?: string;
|
|
70
|
+
permissionMode?: NonNullable<EngineConfig["permissionMode"]>;
|
|
71
|
+
planMode?: boolean;
|
|
72
|
+
approvalRouter?: ApprovalRouter;
|
|
73
|
+
goal?: string | GoalConfig;
|
|
74
|
+
injected?: boolean;
|
|
75
|
+
clientMessageId?: string;
|
|
76
|
+
attachments?: InputAttachmentMeta[];
|
|
77
|
+
/** Named per-run behavior profile supplied by interactive product surfaces. */
|
|
78
|
+
behaviorMode?: RunBehaviorMode;
|
|
79
|
+
/**
|
|
80
|
+
* Generic per-run parameters consumed by the active behavior profile
|
|
81
|
+
* (createRunServices / buildVisibilityMeta / runtime-context injection).
|
|
82
|
+
* Never persisted; never part of `task`.
|
|
83
|
+
*/
|
|
84
|
+
profileParams?: Record<string, unknown>;
|
|
85
|
+
/** Digital human bound to this Work Session; persisted on first use. */
|
|
86
|
+
workspaceProfile?: string;
|
|
87
|
+
/**
|
|
88
|
+
* Standing brief for this Session, injected as a system section every turn and
|
|
89
|
+
* persisted on first use (see SessionState.sessionBrief).
|
|
90
|
+
*/
|
|
91
|
+
sessionBrief?: string;
|
|
92
|
+
/**
|
|
93
|
+
* Host-authorized Sessions in the same project that this run may message.
|
|
94
|
+
* The Engine validates the closed set against the source workspace
|
|
95
|
+
* before exposing it to the model.
|
|
96
|
+
*/
|
|
97
|
+
sessionMessageTargets?: readonly SessionMessageTarget[];
|
|
98
|
+
/**
|
|
99
|
+
* @deprecated Compat alias for `profileParams.runtimeContext` — bounded host
|
|
100
|
+
* Pet world JSON; model-visible for this run, never persisted.
|
|
101
|
+
*/
|
|
102
|
+
petRuntimeContext?: string;
|
|
103
|
+
/**
|
|
104
|
+
* @deprecated Compat alias for `profileParams.workspaces` — closed Workspace
|
|
105
|
+
* choices available to DelegateWork for this Pet turn.
|
|
106
|
+
*/
|
|
107
|
+
petWorkspaces?: readonly LegacyPetWorkspaceOption[];
|
|
108
|
+
/** Durable classification requested only when creating a new session. */
|
|
109
|
+
kind?: SessionKind;
|
|
110
|
+
/** Trusted metadata for an interrupt redrive initiated by agent direction. */
|
|
111
|
+
agentDirection?: {
|
|
112
|
+
envelopeIds: string[];
|
|
113
|
+
correlationIds: string[];
|
|
114
|
+
};
|
|
115
|
+
/** Trusted child writer generation used to fence mailbox drains. */
|
|
116
|
+
runtimeGeneration?: number;
|
|
117
|
+
/** Trusted runtime-only progress events; never model/tool input. */
|
|
118
|
+
onAgentProgress?: (event: AgentRuntimeProgressEvent) => void;
|
|
119
|
+
}
|
|
120
|
+
export type AgentRuntimeProgressEvent = {
|
|
121
|
+
type: "phase";
|
|
122
|
+
phase: "starting" | "model" | "tool" | "waiting-permission" | "compacting" | "finalizing";
|
|
123
|
+
toolName?: string;
|
|
124
|
+
} | {
|
|
125
|
+
type: "usage";
|
|
126
|
+
usage: TokenUsage;
|
|
127
|
+
};
|
|
128
|
+
export interface ChildEngineRuntime {
|
|
129
|
+
run(task: string, options?: EngineRunOptions): Promise<EngineResult>;
|
|
130
|
+
setAgentControlStateListener(listener: ((state: LiveChildState) => void) | undefined): void;
|
|
131
|
+
setAgentDirectionsDeliveredListener?(listener: ((envelopeIds: string[]) => void) | undefined): void;
|
|
132
|
+
}
|
|
133
|
+
export interface ChildEngineRunner {
|
|
134
|
+
createChild?(config: EngineConfig): ChildEngineRuntime;
|
|
135
|
+
runChild(config: EngineConfig, task: string, options: Pick<EngineRunOptions, "signal" | "onStream" | "sessionId">): Promise<Pick<EngineResult, "text" | "sessionId" | "usage">>;
|
|
136
|
+
}
|
|
137
|
+
export interface RunScopedDisposer {
|
|
138
|
+
dispose(): void | Promise<void>;
|
|
139
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export const QUICK_CHAT_RESTRICTED_SYSTEM_PROMPT = `# Side Conversation Boundary
|
|
2
|
+
|
|
3
|
+
This is a side conversation, not the main-thread task execution environment.
|
|
4
|
+
- Treat all content before this boundary as reference history only. Do not proactively continue any earlier plan, task, or modification.
|
|
5
|
+
- Default to answering the user's question directly. Use lightweight read-only exploration only when needed.
|
|
6
|
+
- Do not modify files, git state, configuration, or permissions unless the user explicitly asks after this boundary (for example, "Allow you to modify files, please help me..." or "Please directly edit..."). When explicitly requested, use the normally available tools subject to the current permission and approval mode.
|
|
7
|
+
- Sub-agents are disabled for this side conversation. Do not create or invoke sub-agents.`;
|
|
8
|
+
/** The side-conversation restriction expressed as a generic behavior profile. */
|
|
9
|
+
export const QUICK_CHAT_RESTRICTED_PROFILE = {
|
|
10
|
+
id: "quickChatRestricted",
|
|
11
|
+
systemPromptAppend: QUICK_CHAT_RESTRICTED_SYSTEM_PROMPT,
|
|
12
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Run-workspace resolution — the pre-session phase of Engine.runExclusive:
|
|
3
|
+
* pins session kind, resolves the switchable work-Session profile binding,
|
|
4
|
+
* behavior profile / permission mode / plan mode, workspace resume (with its
|
|
5
|
+
* two early-return shapes), and the effective cwd. Pure of Engine — everything
|
|
6
|
+
* arrives via the args object (run-setup.ts / run-image-input.ts style).
|
|
7
|
+
*/
|
|
8
|
+
import type { SessionKind } from "../types.js";
|
|
9
|
+
import type { SessionManager } from "../session/session-manager.js";
|
|
10
|
+
import type { SettingsManager } from "../settings/manager.js";
|
|
11
|
+
import type { EngineConfig, EngineResult } from "./types.js";
|
|
12
|
+
import type { EngineRunOptions, RunBehaviorProfile } from "./run-types.js";
|
|
13
|
+
import { type RunProfileState } from "./run-setup.js";
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the working directory for a run. Precedence for legacy sessions:
|
|
16
|
+
* options.cwd > resumed session's state.cwd > config.cwd > process.cwd()
|
|
17
|
+
* (Moved verbatim from engine.ts; engine.ts re-exports it for compatibility.)
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveRunCwd(args: {
|
|
20
|
+
optionCwd?: string;
|
|
21
|
+
sessionCwd?: string;
|
|
22
|
+
configCwd?: string;
|
|
23
|
+
processCwd: string;
|
|
24
|
+
}): string;
|
|
25
|
+
export interface RunWorkspaceResolution {
|
|
26
|
+
sessionKind: SessionKind;
|
|
27
|
+
sessionWorkspaceProfile: string | undefined;
|
|
28
|
+
profile: RunBehaviorProfile | undefined;
|
|
29
|
+
profileParams: Readonly<Record<string, unknown>>;
|
|
30
|
+
runPermissionMode: NonNullable<EngineConfig["permissionMode"]>;
|
|
31
|
+
runPlanMode: boolean;
|
|
32
|
+
cwd: string;
|
|
33
|
+
profileState: RunProfileState;
|
|
34
|
+
}
|
|
35
|
+
export type ResolveRunWorkspaceResult = {
|
|
36
|
+
ok: true;
|
|
37
|
+
resolution: RunWorkspaceResolution;
|
|
38
|
+
} | {
|
|
39
|
+
ok: false;
|
|
40
|
+
result: EngineResult;
|
|
41
|
+
};
|
|
42
|
+
export declare function resolveRunWorkspace(args: {
|
|
43
|
+
options: EngineRunOptions | undefined;
|
|
44
|
+
sessionManager: Pick<SessionManager, "exists" | "readSessionKind" | "readSessionWorkspaceProfile" | "resolveSessionWorkspaceForResume" | "readSessionMainRoot">;
|
|
45
|
+
resolveBehaviorProfile: (sessionKind: string, behaviorMode: string | undefined) => RunBehaviorProfile | undefined;
|
|
46
|
+
configPermissionMode: EngineConfig["permissionMode"];
|
|
47
|
+
configCwd: string | undefined;
|
|
48
|
+
settings: SettingsManager;
|
|
49
|
+
processCwd: string;
|
|
50
|
+
}): Promise<ResolveRunWorkspaceResult>;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { resolveRunProfileState } from "./run-setup.js";
|
|
2
|
+
/**
|
|
3
|
+
* Resolve the working directory for a run. Precedence for legacy sessions:
|
|
4
|
+
* options.cwd > resumed session's state.cwd > config.cwd > process.cwd()
|
|
5
|
+
* (Moved verbatim from engine.ts; engine.ts re-exports it for compatibility.)
|
|
6
|
+
*/
|
|
7
|
+
export function resolveRunCwd(args) {
|
|
8
|
+
return args.optionCwd ?? args.sessionCwd ?? args.configCwd ?? args.processCwd;
|
|
9
|
+
}
|
|
10
|
+
export async function resolveRunWorkspace(args) {
|
|
11
|
+
const { options } = args;
|
|
12
|
+
const persistedSessionKind = options?.sessionId && args.sessionManager.exists(options.sessionId)
|
|
13
|
+
? args.sessionManager.readSessionKind(options.sessionId)
|
|
14
|
+
: undefined;
|
|
15
|
+
if (persistedSessionKind !== undefined &&
|
|
16
|
+
options?.kind !== undefined &&
|
|
17
|
+
persistedSessionKind !== options.kind) {
|
|
18
|
+
throw new Error(`session kind mismatch: persisted ${persistedSessionKind}, requested ${options.kind}`);
|
|
19
|
+
}
|
|
20
|
+
const sessionKind = persistedSessionKind ?? options?.kind ?? "work";
|
|
21
|
+
const persistedWorkspaceProfile = options?.sessionId && args.sessionManager.exists(options.sessionId)
|
|
22
|
+
? args.sessionManager.readSessionWorkspaceProfile(options.sessionId)
|
|
23
|
+
: undefined;
|
|
24
|
+
const sessionWorkspaceProfile = options?.workspaceProfile ?? persistedWorkspaceProfile;
|
|
25
|
+
if (sessionKind !== "work" && sessionWorkspaceProfile) {
|
|
26
|
+
throw new Error(`session kind ${sessionKind} cannot bind a workspace profile`);
|
|
27
|
+
}
|
|
28
|
+
const profile = args.resolveBehaviorProfile(sessionKind, options?.behaviorMode);
|
|
29
|
+
// Normalize per-run profile parameters. The legacy pet-named run options
|
|
30
|
+
// fold into the generic bag (runtimeContext / workspaces) so existing
|
|
31
|
+
// hosts keep working; an explicit profileParams entry wins on key clash.
|
|
32
|
+
const profileParams = {
|
|
33
|
+
...(options?.petRuntimeContext !== undefined
|
|
34
|
+
? { runtimeContext: options.petRuntimeContext }
|
|
35
|
+
: {}),
|
|
36
|
+
...(options?.petWorkspaces !== undefined ? { workspaces: options.petWorkspaces } : {}),
|
|
37
|
+
...(options?.profileParams ?? {}),
|
|
38
|
+
};
|
|
39
|
+
const planModeDisabled = profile?.disablePlanMode === true;
|
|
40
|
+
let runPermissionMode = profile?.forcePermissionMode ??
|
|
41
|
+
options?.permissionMode ??
|
|
42
|
+
args.configPermissionMode ??
|
|
43
|
+
"acceptEdits";
|
|
44
|
+
if (!planModeDisabled && options?.planMode === true) {
|
|
45
|
+
runPermissionMode = "plan";
|
|
46
|
+
}
|
|
47
|
+
else if (!planModeDisabled && options?.planMode === false && runPermissionMode === "plan") {
|
|
48
|
+
runPermissionMode = "acceptEdits";
|
|
49
|
+
}
|
|
50
|
+
const runPlanMode = runPermissionMode === "plan";
|
|
51
|
+
const workspaceResume = options?.sessionId && args.sessionManager.exists(options.sessionId)
|
|
52
|
+
? await args.sessionManager.resolveSessionWorkspaceForResume(options.sessionId)
|
|
53
|
+
: undefined;
|
|
54
|
+
if (workspaceResume && !workspaceResume.ok) {
|
|
55
|
+
return {
|
|
56
|
+
ok: false,
|
|
57
|
+
result: {
|
|
58
|
+
text: `ERROR: ${workspaceResume.message}`,
|
|
59
|
+
reason: "completed",
|
|
60
|
+
sessionId: options.sessionId,
|
|
61
|
+
turnCount: 0,
|
|
62
|
+
usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
63
|
+
},
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (workspaceResume?.ok &&
|
|
67
|
+
workspaceResume.reason === "worktree_missing_branch_gone" &&
|
|
68
|
+
workspaceResume.message) {
|
|
69
|
+
return {
|
|
70
|
+
ok: false,
|
|
71
|
+
result: {
|
|
72
|
+
text: workspaceResume.message,
|
|
73
|
+
reason: "completed",
|
|
74
|
+
sessionId: options.sessionId,
|
|
75
|
+
turnCount: 0,
|
|
76
|
+
usage: { promptTokens: 0, completionTokens: 0, totalTokens: 0 },
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// Existing P1 sessions resolve cwd from SessionWorkspace, even if the host
|
|
81
|
+
// passes a stale cwd. Legacy sessions without workspace keep the historical
|
|
82
|
+
// explicit-cwd precedence for backward compatibility.
|
|
83
|
+
const workspaceCwd = workspaceResume?.ok && workspaceResume.reason !== "legacy" ? workspaceResume.cwd : undefined;
|
|
84
|
+
const sessionCwd = workspaceCwd === undefined && options?.cwd === undefined && options?.sessionId
|
|
85
|
+
? workspaceResume?.ok
|
|
86
|
+
? workspaceResume.cwd
|
|
87
|
+
: args.sessionManager.readSessionMainRoot(options.sessionId)
|
|
88
|
+
: undefined;
|
|
89
|
+
const cwd = workspaceCwd ??
|
|
90
|
+
resolveRunCwd({
|
|
91
|
+
optionCwd: options?.cwd,
|
|
92
|
+
sessionCwd,
|
|
93
|
+
configCwd: args.configCwd,
|
|
94
|
+
processCwd: args.processCwd,
|
|
95
|
+
});
|
|
96
|
+
const profileState = resolveRunProfileState({
|
|
97
|
+
sessionWorkspaceProfile,
|
|
98
|
+
cwd,
|
|
99
|
+
settings: args.settings,
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
ok: true,
|
|
103
|
+
resolution: {
|
|
104
|
+
sessionKind,
|
|
105
|
+
sessionWorkspaceProfile,
|
|
106
|
+
profile,
|
|
107
|
+
profileParams,
|
|
108
|
+
runPermissionMode,
|
|
109
|
+
runPlanMode,
|
|
110
|
+
cwd,
|
|
111
|
+
profileState,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* it. Pure + side-effect-free so it unit-tests without the Engine/TurnLoop
|
|
7
7
|
* harness (same rationale as the renderer's queuedInput.ts).
|
|
8
8
|
*/
|
|
9
|
-
import type { InputAttachmentMeta } from "../
|
|
9
|
+
import type { InputAttachmentMeta } from "../types.js";
|
|
10
10
|
export interface SteerItem {
|
|
11
11
|
id: string;
|
|
12
12
|
text: string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { LLMConfig, StreamCallback } from "../types.js";
|
|
2
|
+
import type { AgentPresetName } from "../preset/index.js";
|
|
3
|
+
import type { ModelPool } from "../llm/model-pool.js";
|
|
4
|
+
import type { SubAgentSpawner } from "../tool-system/context.js";
|
|
5
|
+
import type { EngineConfig } from "./types.js";
|
|
6
|
+
import type { ChildEngineRunner } from "./run-types.js";
|
|
7
|
+
import { type SandboxConfig, type SandboxMode } from "../tool-system/sandbox/index.js";
|
|
8
|
+
import type { MCPServerConfig } from "../types.js";
|
|
9
|
+
export declare const NESTED_AGENT_TOOLS: string[];
|
|
10
|
+
export declare function resolveChildLlm(modelKey: string | undefined, pool: ModelPool | undefined, parentLlm: LLMConfig): LLMConfig;
|
|
11
|
+
export declare function resolveChildToolScope(allowlist: string[] | undefined, parentDisabled: string[] | undefined, parentEnabled: string[] | undefined): {
|
|
12
|
+
enabled?: string[];
|
|
13
|
+
disabled: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function resolveChildSandbox(mode: SandboxMode | undefined, parent: SandboxConfig): SandboxConfig;
|
|
16
|
+
export declare function resolveChildMcpServers(allowlist: string[] | undefined, parent: Record<string, MCPServerConfig> | undefined): Record<string, MCPServerConfig> | undefined;
|
|
17
|
+
export declare function wrapChildStream(destination: StreamCallback | undefined, agentId: string): StreamCallback | undefined;
|
|
18
|
+
export interface CreateSubAgentSpawnerDeps {
|
|
19
|
+
parentConfig: EngineConfig;
|
|
20
|
+
/** Fully resolved sandbox for this parent run, including settings layers. */
|
|
21
|
+
parentSandbox: SandboxConfig;
|
|
22
|
+
presetName: AgentPresetName;
|
|
23
|
+
cwd: string;
|
|
24
|
+
permissionMode: NonNullable<EngineConfig["permissionMode"]>;
|
|
25
|
+
modelPool?: ModelPool;
|
|
26
|
+
appendParentSubagent: (agentId: string, description: string) => void;
|
|
27
|
+
sessionExists: (sessionId: string) => boolean;
|
|
28
|
+
getSessionParentId?: (sessionId: string) => string | null | undefined;
|
|
29
|
+
childRunner: ChildEngineRunner;
|
|
30
|
+
parentStream?: StreamCallback;
|
|
31
|
+
}
|
|
32
|
+
export declare function createSubAgentSpawner(deps: CreateSubAgentSpawnerDeps): SubAgentSpawner;
|