@cjhyy/code-shell-core 0.7.0 → 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 +20 -5
- package/dist/context/compaction.d.ts +39 -3
- package/dist/context/compaction.js +151 -39
- package/dist/context/manager.d.ts +20 -4
- package/dist/context/manager.js +42 -7
- package/dist/context/token-counter.js +5 -3
- package/dist/context/tool-result-storage.d.ts +6 -0
- package/dist/context/tool-result-storage.js +25 -4
- package/dist/credentials/access.d.ts +13 -2
- package/dist/credentials/access.js +99 -4
- package/dist/credentials/index.d.ts +3 -2
- package/dist/credentials/index.js +2 -1
- package/dist/credentials/oauth.d.ts +9 -1
- package/dist/credentials/oauth.js +80 -1
- package/dist/credentials/store.d.ts +16 -2
- package/dist/credentials/store.js +33 -11
- package/dist/credentials/types.d.ts +62 -1
- package/dist/credentials/types.js +16 -1
- 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 +272 -184
- package/dist/engine/engine.js +1869 -1864
- 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/session-title.d.ts +2 -1
- package/dist/engine/session-title.js +4 -1
- 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 +67 -10
- package/dist/engine/turn-loop.js +538 -97
- package/dist/engine/types.d.ts +35 -4
- package/dist/engine/types.js +1 -1
- package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +80 -6
- package/dist/goal/lifecycle.js +482 -0
- package/dist/hooks/events.d.ts +26 -9
- package/dist/hooks/events.js +0 -3
- package/dist/hooks/goal-stop-hook.d.ts +28 -29
- package/dist/hooks/goal-stop-hook.js +344 -144
- package/dist/hooks/registry.js +4 -1
- package/dist/hooks/shell-runner.d.ts +12 -1
- package/dist/hooks/shell-runner.js +160 -9
- package/dist/index.d.ts +51 -110
- 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 +37 -125
- 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 +72 -10
- 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/llm/types.d.ts +12 -5
- 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 +10 -4
- package/dist/plugins/pluginCommandHook.js +133 -18
- 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 +77 -3
- package/dist/protocol/chat-session-manager.js +194 -18
- package/dist/protocol/chat-session.d.ts +72 -9
- package/dist/protocol/chat-session.js +151 -16
- package/dist/protocol/client.d.ts +37 -4
- package/dist/protocol/client.js +118 -6
- 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 +152 -14
- package/dist/protocol/server.js +1574 -229
- package/dist/protocol/types.d.ts +182 -32
- package/dist/protocol/types.js +18 -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.d.ts +3 -0
- package/dist/services/dream-consolidation.js +14 -2
- package/dist/services/index.d.ts +1 -1
- package/dist/services/index.js +1 -1
- package/dist/services/memory-orchestrator.js +6 -2
- package/dist/services/oauth.d.ts +34 -10
- package/dist/services/oauth.js +236 -98
- 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 +208 -25
- package/dist/session/session-manager.js +1232 -116
- package/dist/session/session-message.d.ts +22 -0
- package/dist/session/session-message.js +1 -0
- package/dist/session/transcript.d.ts +76 -6
- package/dist/session/transcript.js +278 -7
- 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 +279 -34
- package/dist/tool-system/builtin/background-jobs.d.ts +63 -7
- package/dist/tool-system/builtin/background-jobs.js +111 -15
- package/dist/tool-system/builtin/background-work.d.ts +12 -1
- package/dist/tool-system/builtin/background-work.js +12 -1
- package/dist/tool-system/builtin/bash.d.ts +3 -5
- package/dist/tool-system/builtin/bash.js +14 -6
- package/dist/tool-system/builtin/browser-tools.d.ts +8 -5
- 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.d.ts +2 -1
- package/dist/tool-system/builtin/edit.js +14 -10
- 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.d.ts +4 -0
- package/dist/tool-system/builtin/generate-video.js +164 -28
- package/dist/tool-system/builtin/glob.d.ts +2 -1
- package/dist/tool-system/builtin/glob.js +28 -3
- package/dist/tool-system/builtin/grep.d.ts +1 -0
- package/dist/tool-system/builtin/grep.js +82 -17
- package/dist/tool-system/builtin/image-uploader.js +7 -1
- package/dist/tool-system/builtin/index.d.ts +57 -18
- package/dist/tool-system/builtin/index.js +280 -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/video-providers.d.ts +12 -15
- package/dist/tool-system/builtin/video-providers.js +1 -0
- package/dist/tool-system/builtin/view-image.d.ts +2 -2
- package/dist/tool-system/builtin/web-fetch.js +60 -15
- package/dist/tool-system/builtin/web-search.js +1 -3
- package/dist/tool-system/builtin/write.d.ts +2 -1
- package/dist/tool-system/builtin/write.js +14 -4
- 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 +94 -24
- package/dist/tool-system/executor.js +99 -58
- 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 +17 -1
- package/dist/tool-system/mcp-manager.js +72 -7
- 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/path-policy.d.ts +19 -0
- package/dist/tool-system/path-policy.js +62 -1
- package/dist/tool-system/permission.d.ts +69 -3
- package/dist/tool-system/permission.js +429 -30
- package/dist/tool-system/registry.d.ts +15 -3
- package/dist/tool-system/registry.js +82 -40
- 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 +201 -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 -43
- package/dist/arena/arena.js +0 -333
- 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 -24
- package/dist/arena/phases/adjudication.js +0 -141
- package/dist/arena/phases/build-consensus.d.ts +0 -29
- package/dist/arena/phases/build-consensus.js +0 -83
- 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 -45
- package/dist/arena/phases/cross-review.js +0 -218
- package/dist/arena/phases/debate-rounds.d.ts +0 -27
- package/dist/arena/phases/debate-rounds.js +0 -159
- package/dist/arena/phases/participant-research.d.ts +0 -38
- package/dist/arena/phases/participant-research.js +0 -314
- package/dist/arena/phases/planning-detail-expansion.d.ts +0 -38
- package/dist/arena/phases/planning-detail-expansion.js +0 -119
- package/dist/arena/planner.d.ts +0 -27
- package/dist/arena/planner.js +0 -311
- 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 -514
- 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 -69
- package/dist/git/worktree/crud.js +0 -206
- 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 -51
- 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 -42
- package/dist/git/worktree/query.js +0 -121
- 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 -415
- 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 -345
- /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,74 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { lstatSync, readFileSync } from "node:fs";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const DIGEST_DOMAIN = "codeshell-plugin-mcp-v1";
|
|
5
|
+
const ABSENT_MCP = "<absent>";
|
|
6
|
+
const UNSAFE_MCP = "<unsafe>";
|
|
7
|
+
const MAX_PLUGIN_MCP_CONFIG_BYTES = 1024 * 1024;
|
|
8
|
+
function effectiveMcpBytes(installPath) {
|
|
9
|
+
for (const fileName of ["mcp-servers.json", ".mcp.json"]) {
|
|
10
|
+
const path = join(installPath, fileName);
|
|
11
|
+
let info;
|
|
12
|
+
try {
|
|
13
|
+
info = lstatSync(path);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
// mcp-servers.json wins when present; otherwise try the CC fallback.
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
if (info.isSymbolicLink() || !info.isFile() || info.size > MAX_PLUGIN_MCP_CONFIG_BYTES) {
|
|
20
|
+
return `${UNSAFE_MCP}:${fileName}`;
|
|
21
|
+
}
|
|
22
|
+
try {
|
|
23
|
+
return Buffer.concat([Buffer.from(`${fileName}\0`), readFileSync(path)]);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
return `${UNSAFE_MCP}:${fileName}`;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return ABSENT_MCP;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Digest the exact effective declaration selected by the runtime. The file
|
|
33
|
+
* name is part of the digest so switching between native and CC shapes cannot
|
|
34
|
+
* inherit approval accidentally.
|
|
35
|
+
*/
|
|
36
|
+
export function pluginMcpDigest(installPath) {
|
|
37
|
+
return createHash("sha256")
|
|
38
|
+
.update(DIGEST_DOMAIN)
|
|
39
|
+
.update("\0")
|
|
40
|
+
.update(effectiveMcpBytes(installPath))
|
|
41
|
+
.digest("hex");
|
|
42
|
+
}
|
|
43
|
+
export function verifyPluginMcpIntegrity(entry) {
|
|
44
|
+
if (!entry.mcpDigest)
|
|
45
|
+
return "legacy";
|
|
46
|
+
return pluginMcpDigest(entry.installPath) === entry.mcpDigest ? "verified" : "changed";
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Compute trust for one install. The caller supplies whether the declaration
|
|
50
|
+
* currently normalizes to at least one runnable MCP server, keeping the trust
|
|
51
|
+
* layer coupled to the runtime's strict schema rather than a second parser.
|
|
52
|
+
*/
|
|
53
|
+
export function pluginMcpApprovalState(entry, hasMcpServers) {
|
|
54
|
+
const integrity = verifyPluginMcpIntegrity(entry);
|
|
55
|
+
if (integrity === "changed")
|
|
56
|
+
return "changed";
|
|
57
|
+
if (!hasMcpServers)
|
|
58
|
+
return "none";
|
|
59
|
+
if (integrity === "legacy")
|
|
60
|
+
return "legacy";
|
|
61
|
+
return entry.approvedMcpDigest === entry.mcpDigest ? "approved" : "pending";
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Fields written at install/update. Installs with runnable MCP servers start
|
|
65
|
+
* pending; an explicitly approved identical digest survives an update.
|
|
66
|
+
*/
|
|
67
|
+
export function pluginMcpInstallRecord(installPath, hasMcpServers, previousEntries = []) {
|
|
68
|
+
const mcpDigest = pluginMcpDigest(installPath);
|
|
69
|
+
const previouslyApproved = previousEntries.some((entry) => entry.mcpDigest === mcpDigest && entry.approvedMcpDigest === entry.mcpDigest);
|
|
70
|
+
return {
|
|
71
|
+
mcpDigest,
|
|
72
|
+
...(!hasMcpServers || previouslyApproved ? { approvedMcpDigest: mcpDigest } : {}),
|
|
73
|
+
};
|
|
74
|
+
}
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -71,6 +71,36 @@ export interface PluginInstallEntry {
|
|
|
71
71
|
installedAt: string;
|
|
72
72
|
lastUpdated: string;
|
|
73
73
|
gitCommitSha?: string;
|
|
74
|
+
/** CodeShell extension: digest of hooks/hooks.json captured at install/update. */
|
|
75
|
+
hookDigest?: string;
|
|
76
|
+
/**
|
|
77
|
+
* CodeShell extension: the hook digest the user explicitly approved.
|
|
78
|
+
* Missing means executable hooks are pending approval. Hook-free installs
|
|
79
|
+
* auto-approve their absent-hooks digest so they never show a prompt.
|
|
80
|
+
*/
|
|
81
|
+
approvedHookDigest?: string;
|
|
82
|
+
/**
|
|
83
|
+
* Bounded display snapshot of the last explicitly approved hook definition.
|
|
84
|
+
* It is non-executable review metadata used to show per-command update diffs.
|
|
85
|
+
*/
|
|
86
|
+
approvedHookSnapshot?: StoredPluginHookReview[];
|
|
87
|
+
/** CodeShell extension: digest of the effective plugin MCP declaration. */
|
|
88
|
+
mcpDigest?: string;
|
|
89
|
+
/**
|
|
90
|
+
* CodeShell extension: the MCP digest the user explicitly approved.
|
|
91
|
+
* Missing means plugin-provided external processes / remote connections are
|
|
92
|
+
* pending approval. Installs without any valid MCP servers auto-approve.
|
|
93
|
+
*/
|
|
94
|
+
approvedMcpDigest?: string;
|
|
95
|
+
}
|
|
96
|
+
export interface StoredPluginHookReview {
|
|
97
|
+
rawEvent: string;
|
|
98
|
+
matcher?: string;
|
|
99
|
+
command: string;
|
|
100
|
+
commandDigest: string;
|
|
101
|
+
commandTruncated?: boolean;
|
|
102
|
+
async?: boolean;
|
|
103
|
+
timeoutMs?: number;
|
|
74
104
|
}
|
|
75
105
|
export interface InstalledPluginsV2 {
|
|
76
106
|
version: 2;
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
* Plugin variable rewriter.
|
|
3
3
|
*
|
|
4
4
|
* After a plugin is materialized into the cache dir, walk its files and
|
|
5
|
-
* rewrite
|
|
5
|
+
* rewrite Claude-specific plugin environment variables to CodeShell-native
|
|
6
|
+
* names:
|
|
7
|
+
*
|
|
8
|
+
* - `CLAUDE_PLUGIN_ROOT` → `CODESHELL_PLUGIN_ROOT`
|
|
9
|
+
* - `CLAUDE_PLUGIN_DATA` → `CODESHELL_PLUGIN_DATA`
|
|
6
10
|
*
|
|
7
11
|
* Why: plugins authored against Claude Code's protocol embed
|
|
8
12
|
* `${CLAUDE_PLUGIN_ROOT}` in their hooks.json command strings and inside
|
|
@@ -32,11 +36,11 @@ export interface RewriteSummary {
|
|
|
32
36
|
rewrittenPaths: string[];
|
|
33
37
|
}
|
|
34
38
|
/**
|
|
35
|
-
* Rewrite
|
|
36
|
-
*
|
|
39
|
+
* Rewrite Claude-specific plugin environment variables under `installPath`,
|
|
40
|
+
* then drop a breadcrumb file at the root.
|
|
37
41
|
*
|
|
38
42
|
* Idempotent: re-running on an already-rewritten tree is a no-op for the
|
|
39
|
-
* rewrite
|
|
40
|
-
*
|
|
43
|
+
* rewrite but refreshes the breadcrumb's timestamp so the user can see when
|
|
44
|
+
* the most recent install/update ran.
|
|
41
45
|
*/
|
|
42
46
|
export declare function rewritePluginVars(installPath: string): RewriteSummary;
|
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
* Plugin variable rewriter.
|
|
3
3
|
*
|
|
4
4
|
* After a plugin is materialized into the cache dir, walk its files and
|
|
5
|
-
* rewrite
|
|
5
|
+
* rewrite Claude-specific plugin environment variables to CodeShell-native
|
|
6
|
+
* names:
|
|
7
|
+
*
|
|
8
|
+
* - `CLAUDE_PLUGIN_ROOT` → `CODESHELL_PLUGIN_ROOT`
|
|
9
|
+
* - `CLAUDE_PLUGIN_DATA` → `CODESHELL_PLUGIN_DATA`
|
|
6
10
|
*
|
|
7
11
|
* Why: plugins authored against Claude Code's protocol embed
|
|
8
12
|
* `${CLAUDE_PLUGIN_ROOT}` in their hooks.json command strings and inside
|
|
@@ -28,8 +32,10 @@
|
|
|
28
32
|
*/
|
|
29
33
|
import { readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
30
34
|
import { join } from "node:path";
|
|
31
|
-
const
|
|
32
|
-
|
|
35
|
+
const REWRITES = [
|
|
36
|
+
["CLAUDE_PLUGIN_ROOT", "CODESHELL_PLUGIN_ROOT"],
|
|
37
|
+
["CLAUDE_PLUGIN_DATA", "CODESHELL_PLUGIN_DATA"],
|
|
38
|
+
];
|
|
33
39
|
const SCAN_BYTES = 8192;
|
|
34
40
|
function isLikelyBinary(buf) {
|
|
35
41
|
const len = Math.min(buf.length, SCAN_BYTES);
|
|
@@ -72,9 +78,12 @@ function walkAndRewrite(dir, summary) {
|
|
|
72
78
|
if (isLikelyBinary(raw))
|
|
73
79
|
continue;
|
|
74
80
|
const text = raw.toString("utf8");
|
|
75
|
-
|
|
81
|
+
let rewritten = text;
|
|
82
|
+
for (const [from, to] of REWRITES) {
|
|
83
|
+
rewritten = rewritten.split(from).join(to);
|
|
84
|
+
}
|
|
85
|
+
if (rewritten === text)
|
|
76
86
|
continue;
|
|
77
|
-
const rewritten = text.split(FROM).join(TO);
|
|
78
87
|
try {
|
|
79
88
|
writeFileSync(full, rewritten, "utf8");
|
|
80
89
|
summary.filesRewritten += 1;
|
|
@@ -87,12 +96,12 @@ function walkAndRewrite(dir, summary) {
|
|
|
87
96
|
}
|
|
88
97
|
}
|
|
89
98
|
/**
|
|
90
|
-
* Rewrite
|
|
91
|
-
*
|
|
99
|
+
* Rewrite Claude-specific plugin environment variables under `installPath`,
|
|
100
|
+
* then drop a breadcrumb file at the root.
|
|
92
101
|
*
|
|
93
102
|
* Idempotent: re-running on an already-rewritten tree is a no-op for the
|
|
94
|
-
* rewrite
|
|
95
|
-
*
|
|
103
|
+
* rewrite but refreshes the breadcrumb's timestamp so the user can see when
|
|
104
|
+
* the most recent install/update ran.
|
|
96
105
|
*/
|
|
97
106
|
export function rewritePluginVars(installPath) {
|
|
98
107
|
const summary = {
|
|
@@ -100,23 +109,23 @@ export function rewritePluginVars(installPath) {
|
|
|
100
109
|
filesRewritten: 0,
|
|
101
110
|
rewrittenPaths: [],
|
|
102
111
|
};
|
|
103
|
-
let exists = false;
|
|
104
112
|
try {
|
|
105
|
-
|
|
113
|
+
if (!statSync(installPath).isDirectory())
|
|
114
|
+
return summary;
|
|
106
115
|
}
|
|
107
116
|
catch {
|
|
108
|
-
exists = false;
|
|
109
|
-
}
|
|
110
|
-
if (!exists)
|
|
111
117
|
return summary;
|
|
118
|
+
}
|
|
112
119
|
walkAndRewrite(installPath, summary);
|
|
113
120
|
const breadcrumb = {
|
|
114
121
|
rewrittenAt: new Date().toISOString(),
|
|
115
|
-
|
|
116
|
-
|
|
122
|
+
// Keep the original fields for older tooling that reads this breadcrumb.
|
|
123
|
+
from: REWRITES[0][0],
|
|
124
|
+
to: REWRITES[0][1],
|
|
125
|
+
rewrites: REWRITES.map(([from, to]) => ({ from, to })),
|
|
117
126
|
filesScanned: summary.filesScanned,
|
|
118
127
|
filesRewritten: summary.filesRewritten,
|
|
119
|
-
note: "codeshell rewrote plugin
|
|
128
|
+
note: "codeshell rewrote Claude-specific plugin environment placeholders to codeshell-native names at install time. " +
|
|
120
129
|
"Upstream plugin sources are unchanged; only this local copy was modified.",
|
|
121
130
|
};
|
|
122
131
|
try {
|
package/dist/preset/index.d.ts
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* src/prompt/sections/*.md — each preset declares which sections to include.
|
|
9
9
|
*/
|
|
10
10
|
import type { PermissionRule } from "../types.js";
|
|
11
|
-
|
|
11
|
+
import { type BuiltinTool } from "../tool-system/builtin/index.js";
|
|
12
|
+
import type { CapabilityModule } from "../capabilities/index.js";
|
|
13
|
+
export declare const AGENT_PRESET_NAMES: readonly ["harness-min", "general"];
|
|
12
14
|
/** Built-in preset names. Custom presets use arbitrary strings via registerPreset(). */
|
|
13
15
|
export type BuiltinPresetName = (typeof AGENT_PRESET_NAMES)[number];
|
|
14
16
|
/** Any preset name — built-in or custom-registered. */
|
|
@@ -19,13 +21,12 @@ export interface AgentPreset {
|
|
|
19
21
|
description: string;
|
|
20
22
|
/** Ordered list of prompt section filenames (without .md). */
|
|
21
23
|
promptSections: readonly string[];
|
|
22
|
-
/** Whether to inject git status into system context. */
|
|
23
|
-
injectGitStatus: boolean;
|
|
24
24
|
builtinTools: string[];
|
|
25
25
|
defaultPermissionRules: PermissionRule[];
|
|
26
26
|
}
|
|
27
|
-
export declare const BUILTIN_AGENT_PRESETS: Record<
|
|
27
|
+
export declare const BUILTIN_AGENT_PRESETS: Record<BuiltinPresetName, AgentPreset>;
|
|
28
28
|
export declare const DEFAULT_AGENT_PRESET: AgentPresetName;
|
|
29
|
+
/** @deprecated Product hosts should install a capability with `defaultPreset`. */
|
|
29
30
|
export declare const DEFAULT_CLI_PRESET: AgentPresetName;
|
|
30
31
|
/**
|
|
31
32
|
* Register a custom agent preset.
|
|
@@ -39,7 +40,6 @@ export declare const DEFAULT_CLI_PRESET: AgentPresetName;
|
|
|
39
40
|
* label: "Data Pipeline Orchestrator",
|
|
40
41
|
* description: "Manages ETL workflows and data quality checks.",
|
|
41
42
|
* promptSections: ["base", "orchestration"],
|
|
42
|
-
* injectGitStatus: false,
|
|
43
43
|
* builtinTools: ["Read", "Write", "Bash", "Glob", "Grep", "Agent"],
|
|
44
44
|
* defaultPermissionRules: [{ tool: "Read", decision: "allow" }],
|
|
45
45
|
* });
|
|
@@ -47,11 +47,13 @@ export declare const DEFAULT_CLI_PRESET: AgentPresetName;
|
|
|
47
47
|
*/
|
|
48
48
|
export declare function registerPreset(preset: AgentPreset): void;
|
|
49
49
|
/** List all available preset names (built-in + custom). */
|
|
50
|
-
export declare function listPresetNames(): string[];
|
|
51
|
-
export declare function resolveAgentPreset(name?: string): AgentPreset;
|
|
50
|
+
export declare function listPresetNames(capabilities?: readonly CapabilityModule[]): string[];
|
|
51
|
+
export declare function resolveAgentPreset(name?: string, capabilities?: readonly CapabilityModule[]): AgentPreset;
|
|
52
52
|
export interface BuildPresetSystemPromptOptions {
|
|
53
53
|
activeToolNames?: readonly string[];
|
|
54
54
|
platform?: NodeJS.Platform;
|
|
55
|
+
promptSections?: Readonly<Record<string, string>>;
|
|
56
|
+
toolCatalog?: readonly BuiltinTool[];
|
|
55
57
|
}
|
|
56
58
|
/**
|
|
57
59
|
* Build the full system prompt for a preset by loading and joining its sections.
|
|
@@ -65,7 +67,8 @@ export interface BuildPresetSystemPromptOptions {
|
|
|
65
67
|
export declare function buildPresetSystemPrompt(preset: AgentPreset, optionsOrActiveToolNames?: BuildPresetSystemPromptOptions | readonly string[]): string;
|
|
66
68
|
export declare function resolveBuiltinToolNames(options?: {
|
|
67
69
|
preset?: string;
|
|
68
|
-
host?:
|
|
70
|
+
host?: string;
|
|
69
71
|
enabledBuiltinTools?: string[];
|
|
70
72
|
disabledBuiltinTools?: string[];
|
|
73
|
+
capabilities?: readonly CapabilityModule[];
|
|
71
74
|
}): string[];
|
package/dist/preset/index.js
CHANGED
|
@@ -8,192 +8,32 @@
|
|
|
8
8
|
* src/prompt/sections/*.md — each preset declares which sections to include.
|
|
9
9
|
*/
|
|
10
10
|
import { loadSections } from "../prompt/section-loader.js";
|
|
11
|
-
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
const GENERAL_BUILTIN_TOOLS = [
|
|
16
|
-
"Read",
|
|
17
|
-
"Write",
|
|
18
|
-
"Edit",
|
|
19
|
-
"ApplyPatch",
|
|
20
|
-
"Glob",
|
|
21
|
-
"Grep",
|
|
22
|
-
"Bash",
|
|
23
|
-
// Bash(run_in_background=true) companions — without these in the preset
|
|
24
|
-
// whitelist, the registry skips them (registerBuiltins filters BUILTIN_TOOLS
|
|
25
|
-
// by the selected set), so a model that correctly calls BashOutput after
|
|
26
|
-
// launching a background shell hits "Tool not found" and the turn dies.
|
|
27
|
-
"BashOutput",
|
|
28
|
-
"KillShell",
|
|
29
|
-
"ListShells",
|
|
30
|
-
// Browser automation (drive the in-app webview) — 3 semantic tools. Same
|
|
31
|
-
// whitelist requirement as the BashOutput trio above: registerBuiltins filters
|
|
32
|
-
// BUILTIN_TOOLS by the preset set, so without these the model calling
|
|
33
|
-
// browser_observe/etc. hits "Tool not found". They self-degrade to a clear
|
|
34
|
-
// error when no browser panel is wired (headless), so listing is safe.
|
|
35
|
-
"browser_observe",
|
|
36
|
-
"browser_act",
|
|
37
|
-
"browser_navigate",
|
|
38
|
-
"WebSearch",
|
|
39
|
-
"WebFetch",
|
|
40
|
-
"GenerateImage",
|
|
41
|
-
"GenerateVideo",
|
|
42
|
-
// Load a workspace image (by path) or an earlier history image (by number)
|
|
43
|
-
// into context so a vision model can SEE it. Same whitelist requirement as
|
|
44
|
-
// the rest: registered in BUILTIN_TOOLS but filtered out by registerBuiltins
|
|
45
|
-
// unless the preset names it — so it was registered-but-invisible before.
|
|
46
|
-
// Self-degrades to a text placeholder on non-vision models and gates format/
|
|
47
|
-
// size, so listing it unconditionally is safe.
|
|
48
|
-
"view_image",
|
|
49
|
-
"AskUserQuestion",
|
|
50
|
-
"Agent",
|
|
51
|
-
// AgentStatus removed: background agents now write to ~/.code-shell/agents/
|
|
52
|
-
// <id>.txt — the parent agent can Read/Bash tail that file for live progress.
|
|
53
|
-
// The implementation is still in the registry for SDK consumers if needed.
|
|
54
|
-
"AgentCancel",
|
|
55
|
-
"EnterPlanMode",
|
|
56
|
-
"ExitPlanMode",
|
|
57
|
-
"ToolSearch",
|
|
58
|
-
"TodoWrite",
|
|
59
|
-
sleepToolDef.name,
|
|
60
|
-
"Config",
|
|
61
|
-
"CronCreate",
|
|
62
|
-
"CronDelete",
|
|
63
|
-
cronListToolDef.name,
|
|
64
|
-
// cc-orchestrator:驱动外部 claude CLI 跑一轮。同 BashOutput/UseCredential/
|
|
65
|
-
// EditModelCatalog 的 whitelist 要求:已在 BUILTIN_TOOLS 注册,但 registerBuiltins
|
|
66
|
-
// 按 preset 集过滤 → 名单里没有它,agent 就没有「指挥 Claude Code」的工具,只能幻觉
|
|
67
|
-
// RemoteTrigger / 兜底 Bash `claude -p`(用户实测「为什么驱动 cc 没作为工具」)。
|
|
68
|
-
// 定时/循环驱动统一走 CronCreate(到点跑一轮引擎,prompt 里调 DriveAgent);
|
|
69
|
-
// 无人值守审批由 DriveAgent 自身 bypass 解决,不需要定时层专门的 CC 调度工具。
|
|
70
|
-
// DriveAgent 是通用驱动(cli: claude|codex);DriveClaudeCode 保留为 cli:claude 的
|
|
71
|
-
// 别名(老 prompt/记忆兼容)。两个都要在白名单里,否则 registerBuiltins 滤掉。
|
|
72
|
-
"DriveAgent",
|
|
73
|
-
"DriveAgentJobs",
|
|
74
|
-
"DriveClaudeCode",
|
|
75
|
-
// 编排时读 CC/Codex 剩余额度做规划(开几个/等重置/换 provider)。
|
|
76
|
-
"CheckQuota",
|
|
77
|
-
"Skill",
|
|
78
|
-
"AddMarketplace",
|
|
79
|
-
"MCPTool",
|
|
80
|
-
"ListMcpResources",
|
|
81
|
-
"ReadMcpResource",
|
|
82
|
-
"REPL",
|
|
83
|
-
"PowerShell",
|
|
84
|
-
// Persistent cross-session memory. Including these in the default preset is
|
|
85
|
-
// what lets the LLM list/read/save/delete memories during a normal session,
|
|
86
|
-
// AND what makes the end-of-session auto-dream consolidation work — its
|
|
87
|
-
// tool-call loop pulls these from the registry, so without them every dream
|
|
88
|
-
// run bailed with "missing memory tools". Save/Delete in the user scope have
|
|
89
|
-
// no explicit allow rule, so the default-mode classifier fallback asks;
|
|
90
|
-
// dream-scope writes go through freely.
|
|
91
|
-
"MemoryList",
|
|
92
|
-
"MemoryRead",
|
|
93
|
-
"MemorySave",
|
|
94
|
-
"MemoryDelete",
|
|
95
|
-
// AI 取用已存凭证(cookie/token/link)给 yt-dlp/curl 等。必须在 preset 白名单里
|
|
96
|
-
// 否则 registerBuiltins 滤掉它 → 即使存了凭证、注册了工具,AI 列表里也没有
|
|
97
|
-
// UseCredential(用户实测「找不到这个工具」的真因)。它带 isUseCredentialAvailable
|
|
98
|
-
// guard:cwd 凭证库为空时仍自动隐藏,所以无条件列入是安全的(空库不会冒出来)。
|
|
99
|
-
"UseCredential",
|
|
100
|
-
// 同理:把 cookie 凭证注入内置浏览器(恢复登录态后用 browser_* 工具)。带
|
|
101
|
-
// isInjectCredentialAvailable guard(无 cookie 凭证时自动隐藏),无条件列入安全。
|
|
102
|
-
"InjectCredential",
|
|
103
|
-
// AI 增/改模型 catalog(写 ~/.code-shell/model-catalog.user.json)。同 BashOutput/
|
|
104
|
-
// UseCredential 一样的 whitelist 要求:registerBuiltins 按 preset 集过滤 BUILTIN_TOOLS,
|
|
105
|
-
// 名单里没有它 → 即使工具已注册,AI 列表里也没有 → 用户实测「找不到这个工具」。
|
|
106
|
-
// 列入只是让 AI 看得到;执行期没有显式 allow rule,默认 classifier fallback 会审批。
|
|
107
|
-
"EditModelCatalog",
|
|
108
|
-
// Goal-mode control tools. Same whitelist requirement as the rest:
|
|
109
|
-
// registerBuiltins filters BUILTIN_TOOLS by the preset set, so a goal tool
|
|
110
|
-
// absent here is registered-but-invisible — the model never sees it and can
|
|
111
|
-
// neither self-declare completion (complete_goal) nor honor a user's request
|
|
112
|
-
// to abandon the goal (cancel_goal), stranding a persistent goal that only a
|
|
113
|
-
// manual disk edit could clear. cancel_goal is the "strong intent" escape
|
|
114
|
-
// hatch (requires confirm+reason); the turn-loop enforces the guard.
|
|
115
|
-
"complete_goal",
|
|
116
|
-
"cancel_goal",
|
|
117
|
-
];
|
|
118
|
-
const TERMINAL_CODING_EXTRA_TOOLS = [
|
|
119
|
-
"EnterWorktree",
|
|
120
|
-
"ExitWorktree",
|
|
121
|
-
"NotebookEdit",
|
|
122
|
-
"LSP",
|
|
123
|
-
"Brief",
|
|
124
|
-
"Arena",
|
|
125
|
-
];
|
|
126
|
-
// ─── Permission rules ────────────────────────────────────────────
|
|
127
|
-
const GENERAL_PERMISSION_RULES = [
|
|
128
|
-
{ tool: "Read", decision: "allow" },
|
|
129
|
-
{ tool: "Glob", decision: "allow" },
|
|
130
|
-
{ tool: "Grep", decision: "allow" },
|
|
131
|
-
{ tool: "WebSearch", decision: "allow" },
|
|
132
|
-
{ tool: "WebFetch", decision: "allow" },
|
|
133
|
-
{ tool: "AskUserQuestion", decision: "allow" },
|
|
134
|
-
{ tool: "Agent", decision: "allow" },
|
|
135
|
-
{ tool: "AgentStatus", decision: "allow" },
|
|
136
|
-
{ tool: "AgentCancel", decision: "allow" },
|
|
137
|
-
{ tool: "EnterPlanMode", decision: "allow" },
|
|
138
|
-
{ tool: "ExitPlanMode", decision: "allow" },
|
|
139
|
-
{ tool: "ToolSearch", decision: "allow" },
|
|
140
|
-
{ tool: "TodoWrite", decision: "allow" },
|
|
141
|
-
{ tool: sleepToolDef.name, decision: "allow" },
|
|
142
|
-
{ tool: cronListToolDef.name, decision: "allow" },
|
|
143
|
-
{ tool: "CheckQuota", decision: "allow" },
|
|
144
|
-
{ tool: "Skill", decision: "allow" },
|
|
145
|
-
// ListMcpResources only enumerates resource names (and the executor filters
|
|
146
|
-
// the list to this session's enabled servers). ReadMcpResource pulls actual
|
|
147
|
-
// content and is intentionally NOT auto-allowed here — with no explicit rule,
|
|
148
|
-
// default-mode classifier fallback asks the user. The tool's
|
|
149
|
-
// permissionDefault is only UI/metadata, not classifier input.
|
|
150
|
-
{ tool: "ListMcpResources", decision: "allow" },
|
|
151
|
-
// Reading memory is always safe; writes (MemorySave/MemoryDelete) stay gated
|
|
152
|
-
// by explicit rules below plus default-mode ask fallback.
|
|
153
|
-
{ tool: "MemoryList", decision: "allow" },
|
|
154
|
-
{ tool: "MemoryRead", decision: "allow" },
|
|
155
|
-
// Browser automation (3 semantic tools). Rules are first-match-wins, ordered
|
|
156
|
-
// by specificity — so the action-gating rule for browser_act MUST come first:
|
|
157
|
-
// click/type/select mutate the page/form → "ask"; all other actions (hover/
|
|
158
|
-
// scroll/wait/press_key/list_tabs/switch_tab) fall through to the default
|
|
159
|
-
// allow rule below. observe (read-only) and navigate auto-allow.
|
|
160
|
-
// (Main-side sensitive-action + domain-whitelist enforcement also applies.)
|
|
161
|
-
{
|
|
162
|
-
tool: "browser_act",
|
|
163
|
-
argsPattern: { action: "^(click|type|select)$" },
|
|
164
|
-
decision: "ask",
|
|
165
|
-
reason: "browser_act click/type/select mutate the page",
|
|
166
|
-
},
|
|
167
|
-
{ tool: "browser_observe", decision: "allow" },
|
|
168
|
-
{ tool: "browser_navigate", decision: "allow" },
|
|
169
|
-
];
|
|
11
|
+
import { deriveBuiltinPresetExposure, deriveToolGatedPromptSections, } from "../tool-system/builtin/index.js";
|
|
12
|
+
export const AGENT_PRESET_NAMES = ["harness-min", "general"];
|
|
13
|
+
const HARNESS_MIN_EXPOSURE = deriveBuiltinPresetExposure("harness-min");
|
|
14
|
+
const GENERAL_EXPOSURE = deriveBuiltinPresetExposure("general");
|
|
170
15
|
// ─── Preset definitions ──────────────────────────────────────────
|
|
171
16
|
export const BUILTIN_AGENT_PRESETS = {
|
|
17
|
+
"harness-min": {
|
|
18
|
+
name: "harness-min",
|
|
19
|
+
label: "Minimal Agent Harness",
|
|
20
|
+
description: "Domain-neutral orchestration with the minimal reusable tool surface.",
|
|
21
|
+
promptSections: ["harness-base", "orchestration", "tone"],
|
|
22
|
+
builtinTools: HARNESS_MIN_EXPOSURE.builtinTools,
|
|
23
|
+
defaultPermissionRules: HARNESS_MIN_EXPOSURE.defaultPermissionRules,
|
|
24
|
+
},
|
|
172
25
|
general: {
|
|
173
26
|
name: "general",
|
|
174
27
|
label: "General Orchestrator",
|
|
175
28
|
description: "Domain-agnostic orchestration for research, operations, automation, and long-running tasks.",
|
|
176
29
|
promptSections: ["base", "orchestration", "browser", "tone"],
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
defaultPermissionRules: GENERAL_PERMISSION_RULES,
|
|
180
|
-
},
|
|
181
|
-
"terminal-coding": {
|
|
182
|
-
name: "terminal-coding",
|
|
183
|
-
label: "Terminal Coding Assistant",
|
|
184
|
-
description: "General orchestration plus coding-focused guidance and code-navigation tools.",
|
|
185
|
-
promptSections: ["base", "orchestration", "coding", "browser", "tone"],
|
|
186
|
-
injectGitStatus: true,
|
|
187
|
-
builtinTools: [...GENERAL_BUILTIN_TOOLS, ...TERMINAL_CODING_EXTRA_TOOLS],
|
|
188
|
-
defaultPermissionRules: [
|
|
189
|
-
...GENERAL_PERMISSION_RULES,
|
|
190
|
-
{ tool: "LSP", decision: "allow" },
|
|
191
|
-
{ tool: "Brief", decision: "allow" },
|
|
192
|
-
],
|
|
30
|
+
builtinTools: GENERAL_EXPOSURE.builtinTools,
|
|
31
|
+
defaultPermissionRules: GENERAL_EXPOSURE.defaultPermissionRules,
|
|
193
32
|
},
|
|
194
33
|
};
|
|
195
|
-
export const DEFAULT_AGENT_PRESET = "
|
|
196
|
-
|
|
34
|
+
export const DEFAULT_AGENT_PRESET = "harness-min";
|
|
35
|
+
/** @deprecated Product hosts should install a capability with `defaultPreset`. */
|
|
36
|
+
export const DEFAULT_CLI_PRESET = DEFAULT_AGENT_PRESET;
|
|
197
37
|
/** Registry of custom presets registered by external consumers. */
|
|
198
38
|
const _customPresets = new Map();
|
|
199
39
|
/**
|
|
@@ -208,7 +48,6 @@ const _customPresets = new Map();
|
|
|
208
48
|
* label: "Data Pipeline Orchestrator",
|
|
209
49
|
* description: "Manages ETL workflows and data quality checks.",
|
|
210
50
|
* promptSections: ["base", "orchestration"],
|
|
211
|
-
* injectGitStatus: false,
|
|
212
51
|
* builtinTools: ["Read", "Write", "Bash", "Glob", "Grep", "Agent"],
|
|
213
52
|
* defaultPermissionRules: [{ tool: "Read", decision: "allow" }],
|
|
214
53
|
* });
|
|
@@ -218,32 +57,46 @@ export function registerPreset(preset) {
|
|
|
218
57
|
_customPresets.set(preset.name, preset);
|
|
219
58
|
}
|
|
220
59
|
/** List all available preset names (built-in + custom). */
|
|
221
|
-
export function listPresetNames() {
|
|
222
|
-
return [
|
|
60
|
+
export function listPresetNames(capabilities = []) {
|
|
61
|
+
return [
|
|
62
|
+
...new Set([
|
|
63
|
+
...AGENT_PRESET_NAMES,
|
|
64
|
+
..._customPresets.keys(),
|
|
65
|
+
...capabilities.flatMap((capability) => (capability.presets ?? []).map((preset) => preset.name)),
|
|
66
|
+
]),
|
|
67
|
+
];
|
|
223
68
|
}
|
|
224
|
-
export function resolveAgentPreset(name) {
|
|
225
|
-
|
|
226
|
-
|
|
69
|
+
export function resolveAgentPreset(name, capabilities = []) {
|
|
70
|
+
let resolvedName = name;
|
|
71
|
+
if (!resolvedName) {
|
|
72
|
+
const defaults = [
|
|
73
|
+
...new Set(capabilities
|
|
74
|
+
.map((capability) => capability.defaultPreset)
|
|
75
|
+
.filter((preset) => Boolean(preset))),
|
|
76
|
+
];
|
|
77
|
+
if (defaults.length > 1) {
|
|
78
|
+
throw new Error(`Capabilities contributed conflicting default presets: ${defaults.join(", ")}`);
|
|
79
|
+
}
|
|
80
|
+
resolvedName = defaults[0] ?? DEFAULT_AGENT_PRESET;
|
|
81
|
+
}
|
|
82
|
+
const contributed = capabilities
|
|
83
|
+
.flatMap((capability) => [...(capability.presets ?? [])])
|
|
84
|
+
.find((preset) => preset.name === resolvedName);
|
|
85
|
+
if (contributed)
|
|
86
|
+
return contributed;
|
|
227
87
|
// Check built-in first
|
|
228
|
-
const builtin = BUILTIN_AGENT_PRESETS[
|
|
88
|
+
const builtin = BUILTIN_AGENT_PRESETS[resolvedName];
|
|
229
89
|
if (builtin)
|
|
230
90
|
return builtin;
|
|
231
91
|
// Check custom presets
|
|
232
|
-
const custom = _customPresets.get(
|
|
92
|
+
const custom = _customPresets.get(resolvedName);
|
|
233
93
|
if (custom)
|
|
234
94
|
return custom;
|
|
235
|
-
const allowed = listPresetNames().join(", ");
|
|
236
|
-
throw new Error(`Unknown agent preset "${
|
|
95
|
+
const allowed = listPresetNames(capabilities).join(", ");
|
|
96
|
+
throw new Error(`Unknown agent preset "${resolvedName}". Available presets: ${allowed}`);
|
|
237
97
|
}
|
|
238
|
-
/**
|
|
239
|
-
|
|
240
|
-
* so the model isn't told how to use tools it can't see. Keep in sync with the
|
|
241
|
-
* browser tools registered in builtin/index.ts. */
|
|
242
|
-
const BROWSER_SECTION_TOOLS = ["browser_observe", "browser_act", "browser_navigate"];
|
|
243
|
-
/** Prompt sections whose inclusion is gated by an active tool being present. */
|
|
244
|
-
const TOOL_GATED_SECTIONS = {
|
|
245
|
-
browser: BROWSER_SECTION_TOOLS,
|
|
246
|
-
};
|
|
98
|
+
/** Prompt-section capability links are contributed by builtin exposure metadata. */
|
|
99
|
+
const TOOL_GATED_SECTIONS = deriveToolGatedPromptSections();
|
|
247
100
|
function isActiveToolNamesList(value) {
|
|
248
101
|
return Array.isArray(value);
|
|
249
102
|
}
|
|
@@ -275,24 +128,30 @@ export function buildPresetSystemPrompt(preset, optionsOrActiveToolNames) {
|
|
|
275
128
|
if (activeToolNames) {
|
|
276
129
|
const active = new Set(activeToolNames);
|
|
277
130
|
sections = sections.filter((s) => {
|
|
278
|
-
const gate =
|
|
131
|
+
const gate = options.toolCatalog
|
|
132
|
+
? deriveToolGatedPromptSections(options.toolCatalog)[s]
|
|
133
|
+
: TOOL_GATED_SECTIONS[s];
|
|
279
134
|
return !gate || gate.some((t) => active.has(t));
|
|
280
135
|
});
|
|
281
136
|
}
|
|
282
|
-
return [
|
|
137
|
+
return [
|
|
138
|
+
loadSections(sections, options.promptSections),
|
|
139
|
+
platformShellGuidance(options.platform ?? process.platform),
|
|
140
|
+
]
|
|
283
141
|
.filter(Boolean)
|
|
284
142
|
.join("\n\n");
|
|
285
143
|
}
|
|
286
144
|
export function resolveBuiltinToolNames(options) {
|
|
287
|
-
const preset = resolveAgentPreset(options?.preset);
|
|
145
|
+
const preset = resolveAgentPreset(options?.preset, options?.capabilities);
|
|
288
146
|
const names = new Set(preset.builtinTools);
|
|
289
147
|
for (const name of options?.enabledBuiltinTools ?? []) {
|
|
290
148
|
names.add(name);
|
|
291
149
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
150
|
+
for (const capability of options?.capabilities ?? []) {
|
|
151
|
+
capability.adjustToolSelection?.(names, {
|
|
152
|
+
preset: preset.name,
|
|
153
|
+
host: options?.host,
|
|
154
|
+
});
|
|
296
155
|
}
|
|
297
156
|
for (const name of options?.disabledBuiltinTools ?? []) {
|
|
298
157
|
names.delete(name);
|
package/dist/product/define.js
CHANGED
|
@@ -46,8 +46,15 @@ export function defineProduct(definition, runtime) {
|
|
|
46
46
|
const presetName = presetDef.name;
|
|
47
47
|
// Determine builtin tools: start from a base set, apply adapter overrides
|
|
48
48
|
const baseTools = [
|
|
49
|
-
"Read",
|
|
50
|
-
"
|
|
49
|
+
"Read",
|
|
50
|
+
"Write",
|
|
51
|
+
"Edit",
|
|
52
|
+
"Glob",
|
|
53
|
+
"Grep",
|
|
54
|
+
"Bash",
|
|
55
|
+
"AskUserQuestion",
|
|
56
|
+
"Agent",
|
|
57
|
+
"ToolSearch",
|
|
51
58
|
"TodoWrite",
|
|
52
59
|
];
|
|
53
60
|
const enabledSet = new Set([...baseTools, ...(adapter?.enableTools ?? [])]);
|
|
@@ -71,7 +78,6 @@ export function defineProduct(definition, runtime) {
|
|
|
71
78
|
label: presetDef.label,
|
|
72
79
|
description: presetDef.description,
|
|
73
80
|
promptSections: presetDef.sections ?? ["base", "orchestration"],
|
|
74
|
-
injectGitStatus: presetDef.injectGitStatus ?? false,
|
|
75
81
|
builtinTools: [...enabledSet],
|
|
76
82
|
defaultPermissionRules: permissionRules,
|
|
77
83
|
};
|
package/dist/product/types.d.ts
CHANGED
|
@@ -39,8 +39,6 @@ export interface ProductPreset {
|
|
|
39
39
|
customPrompt?: string;
|
|
40
40
|
/** Additional text appended after the main system prompt. */
|
|
41
41
|
appendPrompt?: string;
|
|
42
|
-
/** Whether to inject git status into system context. Default: false */
|
|
43
|
-
injectGitStatus?: boolean;
|
|
44
42
|
}
|
|
45
43
|
export interface CustomTool {
|
|
46
44
|
/** Tool definition (name, description, inputSchema). */
|