@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
|
@@ -20,7 +20,9 @@
|
|
|
20
20
|
* loops run in the main engine process, so start/finish and the engine's wait
|
|
21
21
|
* loop observe the same instance.
|
|
22
22
|
*/
|
|
23
|
-
import { normalizeCwdPath } from "../../
|
|
23
|
+
import { normalizeCwdPath } from "../../utils/cwd-normalize.js";
|
|
24
|
+
import { execFileSync } from "node:child_process";
|
|
25
|
+
import { resolveGit } from "../../utils/exec.js";
|
|
24
26
|
function isValidSessionId(sid) {
|
|
25
27
|
return typeof sid === "string" && sid.length > 0;
|
|
26
28
|
}
|
|
@@ -28,6 +30,32 @@ function isValidSessionId(sid) {
|
|
|
28
30
|
* UX limit; a human never spawns this many background jobs in one session. */
|
|
29
31
|
const MAX_TERMINAL_JOBS_PER_SESSION = 50;
|
|
30
32
|
const CANCEL_WAIT_TIMEOUT_MS = 5_000;
|
|
33
|
+
/** Resolve once at registration/query time. Git failures and non-git paths
|
|
34
|
+
* intentionally collapse to the legacy normalized-cwd identity. */
|
|
35
|
+
function resolveEffectiveWorkspaceIdentity(cwd) {
|
|
36
|
+
const normalizedCwd = normalizeCwdPath(cwd);
|
|
37
|
+
try {
|
|
38
|
+
const output = execFileSync(resolveGit(), ["rev-parse", "--path-format=absolute", "--show-toplevel", "--git-common-dir"], {
|
|
39
|
+
cwd: normalizedCwd,
|
|
40
|
+
encoding: "utf-8",
|
|
41
|
+
timeout: 5_000,
|
|
42
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
43
|
+
}).trim();
|
|
44
|
+
const [rawRoot, rawCommonDir] = output.split(/\r?\n/);
|
|
45
|
+
if (rawRoot && rawCommonDir) {
|
|
46
|
+
return {
|
|
47
|
+
root: normalizeCwdPath(rawRoot),
|
|
48
|
+
kind: "git-worktree",
|
|
49
|
+
gitCommonDir: normalizeCwdPath(rawCommonDir),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
// Non-git, missing git, deleted cwd, and timeouts all retain legacy cwd
|
|
55
|
+
// comparison semantics. Conflict detection must never break job launch.
|
|
56
|
+
}
|
|
57
|
+
return { root: normalizedCwd, kind: "cwd" };
|
|
58
|
+
}
|
|
31
59
|
function isActiveStatus(status) {
|
|
32
60
|
return status === "running" || status === "cancelling";
|
|
33
61
|
}
|
|
@@ -59,6 +87,14 @@ class BackgroundJobRegistry {
|
|
|
59
87
|
start(jobId, sessionId, description = "", options) {
|
|
60
88
|
if (!isValidSessionId(sessionId))
|
|
61
89
|
return;
|
|
90
|
+
const rawLaunchCwd = options?.launchCwd ?? options?.cwd;
|
|
91
|
+
const launchCwd = rawLaunchCwd ? normalizeCwdPath(rawLaunchCwd) : undefined;
|
|
92
|
+
const effectiveWorkspaceCwd = options?.effectiveWorkspaceCwd
|
|
93
|
+
? normalizeCwdPath(options.effectiveWorkspaceCwd)
|
|
94
|
+
: launchCwd;
|
|
95
|
+
const workspaceIdentity = effectiveWorkspaceCwd
|
|
96
|
+
? resolveEffectiveWorkspaceIdentity(effectiveWorkspaceCwd)
|
|
97
|
+
: undefined;
|
|
62
98
|
this.jobs.set(jobId, {
|
|
63
99
|
jobId,
|
|
64
100
|
sessionId,
|
|
@@ -66,9 +102,29 @@ class BackgroundJobRegistry {
|
|
|
66
102
|
description,
|
|
67
103
|
status: "running",
|
|
68
104
|
startedAt: Date.now(),
|
|
69
|
-
...(
|
|
105
|
+
...(launchCwd ? { launchCwd, cwd: launchCwd } : {}),
|
|
106
|
+
...(effectiveWorkspaceCwd ? { effectiveWorkspaceCwd } : {}),
|
|
107
|
+
...(options?.workspaceRoot ? { workspaceRoot: normalizeCwdPath(options.workspaceRoot) } : {}),
|
|
108
|
+
...(workspaceIdentity
|
|
109
|
+
? {
|
|
110
|
+
effectiveWorkspaceRoot: workspaceIdentity.root,
|
|
111
|
+
effectiveWorkspaceKind: workspaceIdentity.kind,
|
|
112
|
+
...(workspaceIdentity.gitCommonDir
|
|
113
|
+
? { gitCommonDir: workspaceIdentity.gitCommonDir }
|
|
114
|
+
: {}),
|
|
115
|
+
}
|
|
116
|
+
: {}),
|
|
70
117
|
...(options?.promptSummary ? { promptSummary: options.promptSummary } : {}),
|
|
71
118
|
...(options?.cli ? { cli: options.cli } : {}),
|
|
119
|
+
...(options?.isolation ? { isolation: options.isolation } : {}),
|
|
120
|
+
...(options?.worktreePath ? { worktreePath: normalizeCwdPath(options.worktreePath) } : {}),
|
|
121
|
+
...(options?.worktreeBranch ? { worktreeBranch: options.worktreeBranch } : {}),
|
|
122
|
+
...(options?.worktreeBaseRef ? { worktreeBaseRef: options.worktreeBaseRef } : {}),
|
|
123
|
+
...(options?.worktreeCleanup ? { worktreeCleanup: options.worktreeCleanup } : {}),
|
|
124
|
+
...(options?.worktreeBranchPrefix
|
|
125
|
+
? { worktreeBranchPrefix: options.worktreeBranchPrefix }
|
|
126
|
+
: {}),
|
|
127
|
+
...(options?.worktreePath ? { worktreeLifecycle: "running" } : {}),
|
|
72
128
|
...(options?.originClientMessageId
|
|
73
129
|
? { originClientMessageId: options.originClientMessageId }
|
|
74
130
|
: {}),
|
|
@@ -92,6 +148,9 @@ class BackgroundJobRegistry {
|
|
|
92
148
|
entry.ccSessionId = outcome.ccSessionId;
|
|
93
149
|
if (outcome?.changedFiles !== undefined)
|
|
94
150
|
entry.changedFiles = outcome.changedFiles;
|
|
151
|
+
if (outcome?.worktreeLifecycle !== undefined) {
|
|
152
|
+
entry.worktreeLifecycle = outcome.worktreeLifecycle;
|
|
153
|
+
}
|
|
95
154
|
this.evictTerminalOverCap(entry.sessionId);
|
|
96
155
|
this.notify();
|
|
97
156
|
}
|
|
@@ -108,6 +167,17 @@ class BackgroundJobRegistry {
|
|
|
108
167
|
if (artifacts.changedFiles !== undefined)
|
|
109
168
|
entry.changedFiles = artifacts.changedFiles;
|
|
110
169
|
}
|
|
170
|
+
/** Update retained DriveAgent lifecycle state after an explicit cleanup. */
|
|
171
|
+
recordWorktreeLifecycle(jobId, lifecycle, note) {
|
|
172
|
+
const entry = this.jobs.get(jobId);
|
|
173
|
+
if (!entry || !entry.worktreePath)
|
|
174
|
+
return false;
|
|
175
|
+
entry.worktreeLifecycle = lifecycle;
|
|
176
|
+
if (note)
|
|
177
|
+
entry.finalText = `${entry.finalText ? `${entry.finalText}\n\n` : ""}[worktree lifecycle] ${note}`;
|
|
178
|
+
this.notify();
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
111
181
|
async cancel(jobId, outcome) {
|
|
112
182
|
const entry = this.jobs.get(jobId);
|
|
113
183
|
if (!entry)
|
|
@@ -152,10 +222,32 @@ class BackgroundJobRegistry {
|
|
|
152
222
|
listRunningForSession(sessionId) {
|
|
153
223
|
return [...this.jobs.values()].filter((e) => e.sessionId === sessionId && isActiveStatus(e.status));
|
|
154
224
|
}
|
|
155
|
-
/** Running jobs, across all sessions,
|
|
225
|
+
/** Running jobs, across all sessions, in the same effective workspace.
|
|
226
|
+
*
|
|
227
|
+
* Git paths compare by canonical worktree root, so sibling launch directories
|
|
228
|
+
* collide while distinct linked worktrees do not. A declared
|
|
229
|
+
* effectiveWorkspaceCwd takes precedence over launchCwd. If either side could
|
|
230
|
+
* not be resolved through git, exact launch-cwd matching remains the
|
|
231
|
+
* conservative back-compatible fallback. */
|
|
156
232
|
listRunningByCwd(cwd) {
|
|
233
|
+
return this.listByWorkspaceCwd(cwd).filter((e) => isActiveStatus(e.status));
|
|
234
|
+
}
|
|
235
|
+
/** Running and retained terminal jobs in the effective workspace containing
|
|
236
|
+
* cwd. Used by DriveAgentJobs' cross-session cwd filter. */
|
|
237
|
+
listByWorkspaceCwd(cwd) {
|
|
157
238
|
const normalized = normalizeCwdPath(cwd);
|
|
158
|
-
|
|
239
|
+
const queryIdentity = resolveEffectiveWorkspaceIdentity(normalized);
|
|
240
|
+
return [...this.jobs.values()].filter((e) => {
|
|
241
|
+
if (e.effectiveWorkspaceRoot === queryIdentity.root)
|
|
242
|
+
return true;
|
|
243
|
+
if (e.effectiveWorkspaceKind === "git-worktree" && queryIdentity.kind === "git-worktree") {
|
|
244
|
+
return false;
|
|
245
|
+
}
|
|
246
|
+
// Mixed git-resolution states compare the declared effective cwd
|
|
247
|
+
// snapshot. Only entries created before that field existed fall back to
|
|
248
|
+
// the legacy launch cwd alias.
|
|
249
|
+
return (e.effectiveWorkspaceCwd ?? e.launchCwd ?? e.cwd) === normalized;
|
|
250
|
+
});
|
|
159
251
|
}
|
|
160
252
|
/** All jobs (running + retained terminal) for `sessionId`. Feeds the panel. */
|
|
161
253
|
listForSession(sessionId) {
|
|
@@ -56,6 +56,12 @@ export type BackgroundWorkEntry = WithSource<{
|
|
|
56
56
|
externalSessionId?: string;
|
|
57
57
|
cli?: ExternalCliKind;
|
|
58
58
|
cwd?: string;
|
|
59
|
+
isolation?: "current" | "worktree" | "none";
|
|
60
|
+
worktreePath?: string;
|
|
61
|
+
worktreeBranch?: string;
|
|
62
|
+
worktreeBaseRef?: string;
|
|
63
|
+
worktreeCleanup?: "auto" | "keep" | "detach" | "discard";
|
|
64
|
+
worktreeLifecycle?: "running" | "kept" | "detached" | "discarded" | "cleanup-failed";
|
|
59
65
|
}>;
|
|
60
66
|
/**
|
|
61
67
|
* Every background-work item spawned by `sessionId`, with per-kind detail, for
|
|
@@ -116,6 +116,7 @@ export function listBackgroundWorkForUI(sessionId, opts = {}) {
|
|
|
116
116
|
? backgroundJobRegistry.list()
|
|
117
117
|
: backgroundJobRegistry.listForSession(sessionId);
|
|
118
118
|
for (const j of jobs) {
|
|
119
|
+
const launchCwd = j.launchCwd ?? j.cwd;
|
|
119
120
|
entries.push({
|
|
120
121
|
kind: "job",
|
|
121
122
|
jobId: j.jobId,
|
|
@@ -128,7 +129,13 @@ export function listBackgroundWorkForUI(sessionId, opts = {}) {
|
|
|
128
129
|
...(j.kind ? { jobKind: j.kind } : {}),
|
|
129
130
|
...(j.ccSessionId ? { externalSessionId: j.ccSessionId } : {}),
|
|
130
131
|
...(j.cli === "claude" || j.cli === "codex" ? { cli: j.cli } : {}),
|
|
131
|
-
...(
|
|
132
|
+
...(launchCwd ? { cwd: launchCwd } : {}),
|
|
133
|
+
...(j.isolation ? { isolation: j.isolation } : {}),
|
|
134
|
+
...(j.worktreePath ? { worktreePath: j.worktreePath } : {}),
|
|
135
|
+
...(j.worktreeBranch ? { worktreeBranch: j.worktreeBranch } : {}),
|
|
136
|
+
...(j.worktreeBaseRef ? { worktreeBaseRef: j.worktreeBaseRef } : {}),
|
|
137
|
+
...(j.worktreeCleanup ? { worktreeCleanup: j.worktreeCleanup } : {}),
|
|
138
|
+
...(j.worktreeLifecycle ? { worktreeLifecycle: j.worktreeLifecycle } : {}),
|
|
132
139
|
sourceSession: sourceSession(sessionId, j.sessionId),
|
|
133
140
|
});
|
|
134
141
|
}
|
|
@@ -29,7 +29,7 @@ function sandboxMark(backend) {
|
|
|
29
29
|
export const bashToolDef = {
|
|
30
30
|
name: "Bash",
|
|
31
31
|
description: "Execute a shell command and return its output. " +
|
|
32
|
-
"Use for ordinary shell commands, system operations,
|
|
32
|
+
"Use for ordinary shell commands, system operations, version-control commands, " +
|
|
33
33
|
"package-manager commands, running tests, installing packages, etc. Prefer Bash " +
|
|
34
34
|
"over PowerShell unless the task needs PowerShell-specific syntax or APIs.",
|
|
35
35
|
inputSchema: {
|
|
@@ -95,7 +95,10 @@ export async function bashTool(args, ctx) {
|
|
|
95
95
|
// (§难点5: that loop only looks at asyncAgentRegistry).
|
|
96
96
|
if (args.run_in_background === true) {
|
|
97
97
|
const backgroundResult = runInBackground(command, ctx);
|
|
98
|
-
|
|
98
|
+
if (backgroundResult.startsWith("Error:"))
|
|
99
|
+
return fail(backgroundResult);
|
|
100
|
+
ctx?.runYield?.request("background_notification");
|
|
101
|
+
return mark(backgroundResult);
|
|
99
102
|
}
|
|
100
103
|
// A6: lifecycle (spawn, kill cascade, IO drain, byte cap, abort/timeout)
|
|
101
104
|
// is centralized in safeSpawnShell. We still handle Bash's user-facing
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Browser automation tools — drive
|
|
3
|
-
*
|
|
2
|
+
* Browser automation tools — drive a host-owned Browser Runtime through the
|
|
3
|
+
* BrowserBridge compatibility port. The default runtime owns a background tab
|
|
4
|
+
* in the in-app profile; user-opened tabs require an explicit claim. Collapsed
|
|
5
|
+
* into THREE semantic tools
|
|
6
|
+
* (was 9 flat tools)
|
|
4
7
|
* to keep the LLM's tool list lean:
|
|
5
8
|
*
|
|
6
9
|
* browser_observe — observe the page: snapshot (a11y elements) / read (text) /
|
|
@@ -14,7 +17,7 @@
|
|
|
14
17
|
* snapshot returns interactive elements as a compact ref-tagged list (a11y tree,
|
|
15
18
|
* token-economical, no screenshots); act references elements by the ref the
|
|
16
19
|
* latest snapshot assigned. All tools degrade with a clear error when no browser
|
|
17
|
-
* is wired. isConcurrencySafe:false —
|
|
20
|
+
* runtime is wired. isConcurrencySafe:false — one runtime tab is driven serially.
|
|
18
21
|
*
|
|
19
22
|
* Permission: browser_act is permissionDefault "allow"; the sensitive actions
|
|
20
23
|
* (click/type/select) are escalated to "ask" by a preset PermissionRule keyed on
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Browser automation tools — drive
|
|
3
|
-
*
|
|
2
|
+
* Browser automation tools — drive a host-owned Browser Runtime through the
|
|
3
|
+
* BrowserBridge compatibility port. The default runtime owns a background tab
|
|
4
|
+
* in the in-app profile; user-opened tabs require an explicit claim. Collapsed
|
|
5
|
+
* into THREE semantic tools
|
|
6
|
+
* (was 9 flat tools)
|
|
4
7
|
* to keep the LLM's tool list lean:
|
|
5
8
|
*
|
|
6
9
|
* browser_observe — observe the page: snapshot (a11y elements) / read (text) /
|
|
@@ -14,7 +17,7 @@
|
|
|
14
17
|
* snapshot returns interactive elements as a compact ref-tagged list (a11y tree,
|
|
15
18
|
* token-economical, no screenshots); act references elements by the ref the
|
|
16
19
|
* latest snapshot assigned. All tools degrade with a clear error when no browser
|
|
17
|
-
* is wired. isConcurrencySafe:false —
|
|
20
|
+
* runtime is wired. isConcurrencySafe:false — one runtime tab is driven serially.
|
|
18
21
|
*
|
|
19
22
|
* Permission: browser_act is permissionDefault "allow"; the sensitive actions
|
|
20
23
|
* (click/type/select) are escalated to "ask" by a preset PermissionRule keyed on
|
|
@@ -22,8 +25,7 @@
|
|
|
22
25
|
*/
|
|
23
26
|
import { renderElementList } from "../browser-bridge.js";
|
|
24
27
|
import { capabilitiesFor } from "../../llm/capabilities/index.js";
|
|
25
|
-
const NO_BROWSER = "Error: browser automation is not available
|
|
26
|
-
"It requires the desktop app with an open browser panel.";
|
|
28
|
+
const NO_BROWSER = "Error: browser automation runtime is not available in this host session.";
|
|
27
29
|
function bridge(ctx) {
|
|
28
30
|
return ctx?.browser;
|
|
29
31
|
}
|
|
@@ -33,13 +35,15 @@ const STALE = (ref) => `Error: ref ${ref} is no longer valid (page changed). Re-
|
|
|
33
35
|
// ════════════════════════════════════════════════════════════════════════════
|
|
34
36
|
export const browserObserveToolDef = {
|
|
35
37
|
name: "browser_observe",
|
|
36
|
-
description: "Observe the
|
|
38
|
+
description: "Observe the task-owned page in the CodeShell Browser Runtime. It shares the " +
|
|
39
|
+
"in-app browser profile but never controls a user-opened tab without an " +
|
|
40
|
+
"explicit claim. Modes:\n" +
|
|
37
41
|
"- snapshot (default): URL/title + a compact list of interactive elements, each " +
|
|
38
42
|
"tagged [ref=eN] for browser_act. ALWAYS snapshot before acting, and re-snapshot " +
|
|
39
43
|
"after navigation/page changes (refs are only valid for the latest snapshot). " +
|
|
40
44
|
"Passwords show as [sensitive] with no value.\n" +
|
|
41
|
-
"- read: the page's
|
|
42
|
-
"
|
|
45
|
+
"- read: a cursor-paged chunk of the page's normalized readable text. Continue " +
|
|
46
|
+
"with the returned nextCursor until complete; scrolling is only for lazy/infinite loading.\n" +
|
|
43
47
|
"- extract: the real URLs on the page (hyperlink hrefs, image srcs, video srcs) " +
|
|
44
48
|
"that snapshot omits — each image/video is tagged [ref=imgN/vidN] for image mode.\n" +
|
|
45
49
|
"- image: SEE the actual pixels of page images (refs from extract, e.g. img3) — for " +
|
|
@@ -60,7 +64,18 @@ export const browserObserveToolDef = {
|
|
|
60
64
|
items: { type: "string" },
|
|
61
65
|
description: "image mode: image refs (imgN/vidN from extract) to see, one or more",
|
|
62
66
|
},
|
|
63
|
-
ref: {
|
|
67
|
+
ref: {
|
|
68
|
+
type: "string",
|
|
69
|
+
description: "vision mode (optional): screenshot just this element's region",
|
|
70
|
+
},
|
|
71
|
+
cursor: {
|
|
72
|
+
type: "string",
|
|
73
|
+
description: "read mode: opaque nextCursor returned by the previous read chunk",
|
|
74
|
+
},
|
|
75
|
+
max_chars: {
|
|
76
|
+
type: "number",
|
|
77
|
+
description: "read mode: requested chunk size (clamped by the runtime)",
|
|
78
|
+
},
|
|
64
79
|
},
|
|
65
80
|
},
|
|
66
81
|
};
|
|
@@ -86,17 +101,32 @@ export async function browserObserveTool(args, ctx) {
|
|
|
86
101
|
switch (mode) {
|
|
87
102
|
case "snapshot": {
|
|
88
103
|
const snap = await b.snapshot();
|
|
104
|
+
if (snap.detail)
|
|
105
|
+
return `Error: ${snap.detail}`;
|
|
89
106
|
const header = `URL: ${snap.url}${snap.title ? `\nTitle: ${snap.title}` : ""}`;
|
|
90
107
|
const human = snap.needsHuman
|
|
91
|
-
? `\n\n⚠ ${snap.needsHuman} — please complete it in the browser
|
|
108
|
+
? `\n\n⚠ ${snap.needsHuman} — please complete it in the browser window, then continue.`
|
|
92
109
|
: "";
|
|
93
110
|
return `${header}\n\n${renderElementList(snap.elements)}${human}`;
|
|
94
111
|
}
|
|
95
112
|
case "read": {
|
|
96
|
-
const c = await b.readContent(
|
|
113
|
+
const c = await b.readContent({
|
|
114
|
+
cursor: typeof args.cursor === "string" ? args.cursor : undefined,
|
|
115
|
+
maxChars: typeof args.max_chars === "number" ? args.max_chars : undefined,
|
|
116
|
+
});
|
|
97
117
|
if (!c.ok)
|
|
98
118
|
return `Error: ${c.detail ?? "could not read page content"}`;
|
|
99
|
-
const
|
|
119
|
+
const progress = c.done
|
|
120
|
+
? "\nRead: complete"
|
|
121
|
+
: c.nextCursor
|
|
122
|
+
? `\nRead: more available\nnextCursor: ${c.nextCursor}`
|
|
123
|
+
: c.truncated
|
|
124
|
+
? "\nRead: truncated"
|
|
125
|
+
: "";
|
|
126
|
+
const scroll = c.scroll
|
|
127
|
+
? `\nScroll: ${Math.round(c.scroll.y)}/${Math.round(c.scroll.maxY)}${c.scroll.atEnd ? " (end)" : ""}`
|
|
128
|
+
: "";
|
|
129
|
+
const head = `URL: ${c.url}${c.title ? `\nTitle: ${c.title}` : ""}${progress}${scroll}`;
|
|
100
130
|
return `${head}\n\n${c.text || "(no readable text)"}`;
|
|
101
131
|
}
|
|
102
132
|
case "extract": {
|
|
@@ -109,7 +139,9 @@ export async function browserObserveTool(args, ctx) {
|
|
|
109
139
|
: "Links: (none)";
|
|
110
140
|
const images = r.images.length > 0
|
|
111
141
|
? "Images (use the ref with browser_observe(image) to SEE one):\n" +
|
|
112
|
-
r.images
|
|
142
|
+
r.images
|
|
143
|
+
.map((im) => `- [${im.ref ?? "?"}] ${im.alt ? `${im.alt} → ` : ""}${im.url}`)
|
|
144
|
+
.join("\n")
|
|
113
145
|
: "Images: (none)";
|
|
114
146
|
const videos = r.videos && r.videos.length > 0
|
|
115
147
|
? "Videos:\n" + r.videos.map((v) => `- ${v.url}`).join("\n")
|
|
@@ -139,7 +171,10 @@ export async function browserObserveTool(args, ctx) {
|
|
|
139
171
|
}
|
|
140
172
|
if (blocks.length === 0)
|
|
141
173
|
return `Error: no images loaded — ${notes.join("; ")}`;
|
|
142
|
-
return {
|
|
174
|
+
return {
|
|
175
|
+
contentBlocks: blocks,
|
|
176
|
+
result: `[loaded ${blocks.length} image(s): ${notes.join("; ")}]`,
|
|
177
|
+
};
|
|
143
178
|
}
|
|
144
179
|
case "vision": {
|
|
145
180
|
if (!modelSupportsVision(ctx)) {
|
|
@@ -161,7 +196,9 @@ export async function browserObserveTool(args, ctx) {
|
|
|
161
196
|
// ════════════════════════════════════════════════════════════════════════════
|
|
162
197
|
export const browserActToolDef = {
|
|
163
198
|
name: "browser_act",
|
|
164
|
-
description: "Act on the
|
|
199
|
+
description: "Act on the task-owned tab in the CodeShell Browser Runtime. By default it " +
|
|
200
|
+
"shares the in-app browser profile but never controls a user-opened tab " +
|
|
201
|
+
"without an explicit claim. Use refs (eN) from the latest " +
|
|
165
202
|
"browser_observe(snapshot). Actions:\n" +
|
|
166
203
|
"- click {ref}: click an element.\n" +
|
|
167
204
|
"- type {ref, text}: type text into an input (focuses first).\n" +
|
|
@@ -181,7 +218,17 @@ export const browserActToolDef = {
|
|
|
181
218
|
properties: {
|
|
182
219
|
action: {
|
|
183
220
|
type: "string",
|
|
184
|
-
enum: [
|
|
221
|
+
enum: [
|
|
222
|
+
"click",
|
|
223
|
+
"type",
|
|
224
|
+
"select",
|
|
225
|
+
"press_key",
|
|
226
|
+
"hover",
|
|
227
|
+
"scroll",
|
|
228
|
+
"wait",
|
|
229
|
+
"list_tabs",
|
|
230
|
+
"switch_tab",
|
|
231
|
+
],
|
|
185
232
|
description: "The interaction to perform",
|
|
186
233
|
},
|
|
187
234
|
ref: { type: "string", description: "Element ref (eN) — click/type/select/hover/press_key" },
|
|
@@ -191,7 +238,10 @@ export const browserActToolDef = {
|
|
|
191
238
|
direction: { type: "string", enum: ["up", "down"], description: "Scroll direction — scroll" },
|
|
192
239
|
amount: { type: "number", description: "Pixels to scroll (default one viewport) — scroll" },
|
|
193
240
|
timeout_ms: { type: "number", description: "Max wait in ms (default 10000) — wait" },
|
|
194
|
-
tabId: {
|
|
241
|
+
tabId: {
|
|
242
|
+
type: "string",
|
|
243
|
+
description: "Target tab — required for switch_tab; optional on others (switches first)",
|
|
244
|
+
},
|
|
195
245
|
},
|
|
196
246
|
required: ["action"],
|
|
197
247
|
},
|
|
@@ -215,13 +265,17 @@ export async function browserActTool(args, ctx) {
|
|
|
215
265
|
if (tabs.length === 0)
|
|
216
266
|
return "(no open browser tabs)";
|
|
217
267
|
return ("Open tabs:\n" +
|
|
218
|
-
tabs
|
|
268
|
+
tabs
|
|
269
|
+
.map((t) => `- [${t.tabId}]${t.active ? " (active)" : ""} ${t.title || "(untitled)"} — ${t.url || "(blank)"}`)
|
|
270
|
+
.join("\n"));
|
|
219
271
|
}
|
|
220
272
|
case "switch_tab": {
|
|
221
273
|
if (!tabId)
|
|
222
274
|
return "Error: tabId is required for switch_tab (see list_tabs)";
|
|
223
275
|
const r = await b.switchTab(tabId);
|
|
224
|
-
return r.ok
|
|
276
|
+
return r.ok
|
|
277
|
+
? `Switched to tab ${tabId} — re-observe to see it`
|
|
278
|
+
: `Error: ${r.detail ?? "switch failed"}`;
|
|
225
279
|
}
|
|
226
280
|
case "click": {
|
|
227
281
|
if (!ref)
|
|
@@ -273,11 +327,20 @@ export async function browserActTool(args, ctx) {
|
|
|
273
327
|
if (dir !== "up" && dir !== "down")
|
|
274
328
|
return "Error: direction must be 'up' or 'down'";
|
|
275
329
|
const r = await b.scroll(dir, args.amount);
|
|
276
|
-
|
|
330
|
+
if (!r.ok) {
|
|
331
|
+
const code = r.code ? ` [${r.code}]` : "";
|
|
332
|
+
return `Error${code}: ${r.detail ?? "scroll failed"}`;
|
|
333
|
+
}
|
|
334
|
+
const state = r.scroll
|
|
335
|
+
? ` — position ${Math.round(r.scroll.y)}/${Math.round(r.scroll.maxY)}${r.scroll.atEnd ? " (end)" : ""}`
|
|
336
|
+
: "";
|
|
337
|
+
return `Scrolled ${dir}${state}`;
|
|
277
338
|
}
|
|
278
339
|
case "wait": {
|
|
279
340
|
const r = await b.waitForLoad(args.timeout_ms);
|
|
280
|
-
return r.ok
|
|
341
|
+
return r.ok
|
|
342
|
+
? `Page ready${r.detail ? ` (${r.detail})` : ""}`
|
|
343
|
+
: `Error: ${r.detail ?? "wait failed"}`;
|
|
281
344
|
}
|
|
282
345
|
default:
|
|
283
346
|
return `Error: unknown action "${action}"`;
|
|
@@ -288,8 +351,11 @@ export async function browserActTool(args, ctx) {
|
|
|
288
351
|
// ════════════════════════════════════════════════════════════════════════════
|
|
289
352
|
export const browserNavigateToolDef = {
|
|
290
353
|
name: "browser_navigate",
|
|
291
|
-
description: "Navigate the browser
|
|
292
|
-
"
|
|
354
|
+
description: "Navigate the CodeShell browser runtime to a URL. It does not control the " +
|
|
355
|
+
"user-facing built-in browser unless the user explicitly grants a future handoff. " +
|
|
356
|
+
"Navigation stays in the background; the runtime's own window appears only when login or a " +
|
|
357
|
+
"high-consequence action needs human control. Then call browser_act(wait) + " +
|
|
358
|
+
"browser_observe to inspect the page.",
|
|
293
359
|
inputSchema: {
|
|
294
360
|
type: "object",
|
|
295
361
|
properties: { url: { type: "string", description: "Absolute URL to open" } },
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
import type { ToolDefinition } from "../../types.js";
|
|
2
|
+
/** Notifies process hosts after the user catalog has been persisted. Desktop
|
|
3
|
+
* uses this to refresh mounted settings/connection views without waiting for
|
|
4
|
+
* a parent turn_complete event (which may be absent for child/yielded runs). */
|
|
5
|
+
type ModelCatalogChangedSink = () => void;
|
|
6
|
+
export declare function setModelCatalogChangedSink(sink: ModelCatalogChangedSink | null): void;
|
|
2
7
|
export declare const editModelCatalogToolDef: ToolDefinition;
|
|
3
8
|
export declare function editModelCatalogTool(args: Record<string, unknown>): Promise<string>;
|
|
9
|
+
export {};
|