@cjhyy/code-shell-core 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -23
- package/dist/agent/agent-definition-registry.d.ts +2 -2
- package/dist/agent/agent-definition-registry.js +47 -10
- package/dist/agent/agent-definition.d.ts +5 -0
- package/dist/agent/agent-definition.js +14 -0
- package/dist/automation/index.d.ts +7 -4
- package/dist/automation/index.js +4 -2
- package/dist/automation/runner.js +3 -1
- package/dist/automation/scheduler.d.ts +57 -1
- package/dist/automation/scheduler.js +123 -23
- package/dist/automation/store.d.ts +6 -2
- package/dist/automation/store.js +7 -3
- package/dist/capabilities/index.d.ts +109 -0
- package/dist/capabilities/index.js +80 -0
- package/dist/capability-control/disabled-lists.d.ts +2 -1
- package/dist/capability-control/disabled-lists.js +3 -5
- package/dist/capability-control/overlay.d.ts +14 -1
- package/dist/capability-control/overlay.js +40 -0
- package/dist/capability-control/service.js +6 -4
- package/dist/cli/agent-server-stdio.d.ts +1 -1
- package/dist/cli/agent-server-stdio.js +66 -6
- package/dist/cli/agent-server-tcp.js +7 -3
- package/dist/context/compaction.d.ts +39 -3
- package/dist/context/compaction.js +151 -39
- package/dist/context/manager.d.ts +17 -1
- package/dist/context/manager.js +36 -1
- package/dist/credentials/access.d.ts +3 -1
- package/dist/credentials/access.js +24 -3
- package/dist/credentials/index.d.ts +1 -1
- package/dist/credentials/index.js +1 -1
- package/dist/credentials/oauth.d.ts +4 -1
- package/dist/credentials/oauth.js +14 -0
- package/dist/credentials/store.d.ts +15 -1
- package/dist/credentials/store.js +17 -4
- package/dist/credentials/types.d.ts +24 -0
- package/dist/credentials/use-credential-tool.js +15 -1
- package/dist/engine/auxiliary-pipeline.d.ts +40 -0
- package/dist/engine/auxiliary-pipeline.js +181 -0
- package/dist/{settings → engine}/disk-defaults.d.ts +2 -2
- package/dist/{settings → engine}/disk-defaults.js +5 -2
- package/dist/engine/dynamic-tool-defs.d.ts +4 -0
- package/dist/engine/dynamic-tool-defs.js +4 -0
- package/dist/engine/engine.d.ts +254 -195
- package/dist/engine/engine.js +1812 -2041
- package/dist/engine/file-history-hook.d.ts +11 -0
- package/dist/engine/file-history-hook.js +31 -0
- package/dist/engine/goal-judge-context.d.ts +9 -0
- package/dist/engine/goal-judge-context.js +234 -0
- package/dist/engine/injected-context-cache.d.ts +6 -0
- package/dist/engine/injected-context-cache.js +13 -0
- package/dist/engine/input-attachments.d.ts +1 -1
- package/dist/engine/model-facade.d.ts +3 -3
- package/dist/engine/model-facade.js +15 -14
- package/dist/engine/permission-controller.d.ts +55 -0
- package/dist/engine/permission-controller.js +148 -0
- package/dist/engine/prompt-cache-diagnostics.d.ts +58 -0
- package/dist/engine/prompt-cache-diagnostics.js +178 -0
- package/dist/engine/run-accounting.d.ts +41 -0
- package/dist/engine/run-accounting.js +126 -0
- package/dist/engine/run-context.d.ts +44 -0
- package/dist/engine/run-context.js +88 -0
- package/dist/engine/run-environment.d.ts +30 -0
- package/dist/engine/run-environment.js +77 -0
- package/dist/engine/run-finalize.d.ts +58 -0
- package/dist/engine/run-finalize.js +245 -0
- package/dist/engine/run-goal.d.ts +58 -0
- package/dist/engine/run-goal.js +188 -0
- package/dist/engine/run-image-input.d.ts +1 -1
- package/dist/engine/run-image-input.js +5 -3
- package/dist/engine/run-session-open.d.ts +41 -0
- package/dist/engine/run-session-open.js +186 -0
- package/dist/engine/run-setup.d.ts +42 -0
- package/dist/engine/run-setup.js +58 -0
- package/dist/engine/run-tooling.d.ts +125 -0
- package/dist/engine/run-tooling.js +283 -0
- package/dist/engine/run-types.d.ts +139 -0
- package/dist/engine/run-types.js +12 -0
- package/dist/engine/run-workspace.d.ts +50 -0
- package/dist/engine/run-workspace.js +114 -0
- package/dist/engine/steer-queue.d.ts +1 -1
- package/dist/engine/subagent-spawner.d.ts +32 -0
- package/dist/engine/subagent-spawner.js +287 -0
- package/dist/engine/tool-summary.d.ts +2 -2
- package/dist/engine/tool-summary.js +2 -2
- package/dist/engine/turn-loop.d.ts +49 -10
- package/dist/engine/turn-loop.js +370 -104
- package/dist/engine/types.d.ts +30 -3
- package/dist/engine/types.js +1 -1
- package/dist/{engine/goal.d.ts → goal/lifecycle.d.ts} +76 -4
- package/dist/goal/lifecycle.js +482 -0
- package/dist/hooks/events.d.ts +24 -10
- package/dist/hooks/goal-stop-hook.d.ts +17 -28
- package/dist/hooks/goal-stop-hook.js +110 -465
- package/dist/hooks/registry.js +1 -1
- package/dist/index.d.ts +48 -108
- package/dist/index.extension.d.ts +51 -0
- package/dist/index.extension.js +39 -0
- package/dist/index.internal.d.ts +86 -0
- package/dist/index.internal.js +92 -0
- package/dist/index.js +34 -123
- package/dist/links/cli.d.ts +48 -0
- package/dist/links/cli.js +617 -0
- package/dist/links/http.d.ts +40 -0
- package/dist/links/http.js +166 -0
- package/dist/links/index.d.ts +4 -0
- package/dist/links/index.js +3 -0
- package/dist/links/link-action-tool.d.ts +5 -0
- package/dist/links/link-action-tool.js +241 -0
- package/dist/links/providers.d.ts +8 -0
- package/dist/links/providers.js +665 -0
- package/dist/links/types.d.ts +44 -0
- package/dist/llm/client-base.d.ts +7 -0
- package/dist/llm/client-base.js +60 -0
- package/dist/llm/model-pool.d.ts +1 -1
- package/dist/llm/model-pool.js +1 -1
- package/dist/llm/providers/anthropic.d.ts +1 -0
- package/dist/llm/providers/anthropic.js +9 -0
- package/dist/llm/providers/openai.d.ts +1 -0
- package/dist/llm/providers/openai.js +17 -0
- package/dist/model-catalog/index.js +15 -2
- package/dist/model-catalog/resolve.d.ts +13 -1
- package/dist/model-catalog/resolve.js +37 -2
- package/dist/model-catalog/types.d.ts +74 -48
- package/dist/model-catalog/types.js +16 -5
- package/dist/model-catalog/upsert.d.ts +3 -1
- package/dist/model-catalog/upsert.js +9 -0
- package/dist/onboarding.d.ts +0 -1
- package/dist/onboarding.js +1 -22
- package/dist/panel-apps/bindings.d.ts +24 -0
- package/dist/panel-apps/bindings.js +69 -0
- package/dist/panel-apps/github-archive.d.ts +21 -0
- package/dist/panel-apps/github-archive.js +98 -0
- package/dist/panel-apps/index.d.ts +4 -0
- package/dist/panel-apps/index.js +4 -0
- package/dist/panel-apps/installer.d.ts +68 -0
- package/dist/panel-apps/installer.js +622 -0
- package/dist/panel-apps/manifest.d.ts +364 -0
- package/dist/panel-apps/manifest.js +189 -0
- package/dist/panel-apps/paths.d.ts +13 -0
- package/dist/panel-apps/paths.js +38 -0
- package/dist/panel-apps/registry.d.ts +51 -0
- package/dist/panel-apps/registry.js +99 -0
- package/dist/panel-apps/runtime.d.ts +80 -0
- package/dist/panel-apps/runtime.js +154 -0
- package/dist/plugins/gitOps.js +8 -1
- package/dist/plugins/installedPlugins.d.ts +2 -1
- package/dist/plugins/installedPlugins.js +146 -8
- package/dist/plugins/installer/codex/convertAgents.d.ts +4 -1
- package/dist/plugins/installer/codex/convertAgents.js +62 -8
- package/dist/plugins/installer/codex/convertCommands.d.ts +5 -5
- package/dist/plugins/installer/codex/convertCommands.js +35 -12
- package/dist/plugins/installer/codex/convertHooks.d.ts +10 -0
- package/dist/plugins/installer/codex/convertHooks.js +82 -0
- package/dist/plugins/installer/codex/convertSkills.js +41 -6
- package/dist/plugins/installer/install.d.ts +7 -1
- package/dist/plugins/installer/install.js +21 -87
- package/dist/plugins/installer/installFromArchive.d.ts +26 -4
- package/dist/plugins/installer/installFromArchive.js +44 -27
- package/dist/plugins/installer/installFromNpm.d.ts +31 -0
- package/dist/plugins/installer/installFromNpm.js +273 -0
- package/dist/plugins/installer/loadPluginAgents.js +17 -4
- package/dist/plugins/installer/loadPluginMcp.d.ts +14 -0
- package/dist/plugins/installer/loadPluginMcp.js +245 -35
- package/dist/plugins/installer/normalizeManifest.d.ts +13 -0
- package/dist/plugins/installer/normalizeManifest.js +306 -0
- package/dist/plugins/installer/npmTar.d.ts +13 -0
- package/dist/plugins/installer/npmTar.js +321 -0
- package/dist/plugins/installer/parseSource.d.ts +11 -0
- package/dist/plugins/installer/parseSource.js +48 -0
- package/dist/plugins/installer/preview.d.ts +101 -0
- package/dist/plugins/installer/preview.js +336 -0
- package/dist/plugins/installer/projectPluginSource.d.ts +14 -0
- package/dist/plugins/installer/projectPluginSource.js +140 -0
- package/dist/plugins/installer/types.d.ts +775 -0
- package/dist/plugins/installer/types.js +100 -0
- package/dist/plugins/installer/unzip.d.ts +11 -0
- package/dist/plugins/installer/unzip.js +123 -9
- package/dist/plugins/installer/update.d.ts +2 -2
- package/dist/plugins/installer/update.js +43 -4
- package/dist/plugins/loadPluginHooks.d.ts +19 -2
- package/dist/plugins/loadPluginHooks.js +97 -86
- package/dist/plugins/pluginAutomationTemplates.d.ts +18 -0
- package/dist/plugins/pluginAutomationTemplates.js +50 -0
- package/dist/plugins/pluginCatalog.d.ts +45 -0
- package/dist/plugins/pluginCatalog.js +87 -0
- package/dist/plugins/pluginCommandHook.d.ts +6 -0
- package/dist/plugins/pluginCommandHook.js +25 -8
- package/dist/plugins/pluginCommandsLoader.d.ts +19 -0
- package/dist/plugins/pluginCommandsLoader.js +181 -7
- package/dist/plugins/pluginContent.d.ts +10 -1
- package/dist/plugins/pluginContent.js +87 -30
- package/dist/plugins/pluginHookApproval.d.ts +30 -0
- package/dist/plugins/pluginHookApproval.js +160 -0
- package/dist/plugins/pluginHookIntegrity.d.ts +69 -0
- package/dist/plugins/pluginHookIntegrity.js +361 -0
- package/dist/plugins/pluginInstaller.js +71 -12
- package/dist/plugins/pluginMcpApproval.d.ts +19 -0
- package/dist/plugins/pluginMcpApproval.js +110 -0
- package/dist/plugins/pluginMcpIntegrity.d.ts +21 -0
- package/dist/plugins/pluginMcpIntegrity.js +74 -0
- package/dist/plugins/types.d.ts +30 -0
- package/dist/plugins/varRewrite.d.ts +9 -5
- package/dist/plugins/varRewrite.js +26 -17
- package/dist/preset/index.d.ts +11 -8
- package/dist/preset/index.js +62 -203
- package/dist/product/define.js +9 -3
- package/dist/product/types.d.ts +0 -2
- package/dist/profile/activation.d.ts +36 -0
- package/dist/profile/activation.js +57 -0
- package/dist/profile/catalog-store.d.ts +77 -0
- package/dist/profile/catalog-store.js +346 -0
- package/dist/profile/catalog.d.ts +54 -0
- package/dist/profile/catalog.js +152 -0
- package/dist/profile/index.d.ts +7 -0
- package/dist/profile/index.js +7 -0
- package/dist/profile/requirements.d.ts +76 -0
- package/dist/profile/requirements.js +117 -0
- package/dist/profile/resolve.d.ts +11 -0
- package/dist/profile/resolve.js +41 -0
- package/dist/profile/store.d.ts +17 -0
- package/dist/profile/store.js +167 -0
- package/dist/profile/types.d.ts +321 -0
- package/dist/profile/types.js +104 -0
- package/dist/prompt/composer.d.ts +46 -7
- package/dist/prompt/composer.js +78 -48
- package/dist/prompt/instruction-scanner.d.ts +6 -5
- package/dist/prompt/instruction-scanner.js +8 -23
- package/dist/prompt/section-loader.d.ts +2 -2
- package/dist/prompt/section-loader.js +7 -4
- package/dist/prompt/sections/browser.md +10 -9
- package/dist/prompt/sections/harness-base.md +9 -0
- package/dist/protocol/chat-session-manager.d.ts +64 -1
- package/dist/protocol/chat-session-manager.js +104 -0
- package/dist/protocol/chat-session.d.ts +61 -10
- package/dist/protocol/chat-session.js +135 -25
- package/dist/protocol/client.d.ts +33 -3
- package/dist/protocol/client.js +96 -5
- package/dist/protocol/index.d.ts +2 -2
- package/dist/protocol/index.js +2 -2
- package/dist/protocol/mobile-remote-types.d.ts +406 -0
- package/dist/protocol/mobile-remote-types.js +1 -0
- package/dist/protocol/server.d.ts +127 -3
- package/dist/protocol/server.js +1309 -182
- package/dist/protocol/types.d.ts +152 -34
- package/dist/protocol/types.js +16 -0
- package/dist/run/ArtifactTracker.d.ts +6 -1
- package/dist/run/ArtifactTracker.js +29 -21
- package/dist/run/EngineRunner.d.ts +2 -0
- package/dist/run/EngineRunner.js +1 -0
- package/dist/run/RunManager.d.ts +26 -0
- package/dist/run/RunManager.js +82 -11
- package/dist/run/factory.d.ts +3 -0
- package/dist/run/factory.js +2 -0
- package/dist/runtime/safe-spawn.d.ts +6 -0
- package/dist/runtime/safe-spawn.js +8 -13
- package/dist/services/auto-dream.d.ts +13 -1
- package/dist/services/auto-dream.js +56 -8
- package/dist/services/dream-consolidation.js +10 -1
- package/dist/services/memory-orchestrator.js +6 -2
- package/dist/services/oauth.js +4 -1
- package/dist/services/session-memory.d.ts +4 -4
- package/dist/services/session-memory.js +13 -10
- package/dist/session/memory.d.ts +26 -7
- package/dist/session/memory.js +79 -21
- package/dist/session/session-manager.d.ts +182 -28
- package/dist/session/session-manager.js +910 -130
- package/dist/session/session-message.d.ts +22 -0
- package/dist/session/session-message.js +1 -0
- package/dist/session/transcript.d.ts +46 -5
- package/dist/session/transcript.js +159 -3
- package/dist/settings/feature-flags.d.ts +40 -0
- package/dist/settings/feature-flags.js +40 -0
- package/dist/settings/manager.d.ts +39 -1
- package/dist/settings/manager.js +102 -41
- package/dist/settings/migrate-config.js +4 -2
- package/dist/settings/schema.d.ts +511 -177
- package/dist/settings/schema.js +98 -25
- package/dist/skills/scanner.d.ts +6 -2
- package/dist/skills/scanner.js +160 -9
- package/dist/sources/adapter.d.ts +14 -0
- package/dist/sources/adapter.js +7 -0
- package/dist/sources/adapters/local-files.d.ts +10 -0
- package/dist/sources/adapters/local-files.js +127 -0
- package/dist/sources/adapters/mcp-resource.d.ts +17 -0
- package/dist/sources/adapters/mcp-resource.js +41 -0
- package/dist/sources/adapters/mock.d.ts +3 -0
- package/dist/sources/adapters/mock.js +29 -0
- package/dist/sources/binding.d.ts +6 -0
- package/dist/sources/binding.js +24 -0
- package/dist/sources/catalog.d.ts +6 -0
- package/dist/sources/catalog.js +64 -0
- package/dist/sources/context-summary.d.ts +8 -0
- package/dist/sources/context-summary.js +13 -0
- package/dist/sources/credential-status.d.ts +2 -0
- package/dist/sources/credential-status.js +13 -0
- package/dist/sources/index.d.ts +10 -0
- package/dist/sources/index.js +10 -0
- package/dist/sources/resolve.d.ts +28 -0
- package/dist/sources/resolve.js +47 -0
- package/dist/sources/truncate-utf8.d.ts +7 -0
- package/dist/sources/truncate-utf8.js +18 -0
- package/dist/sources/types.d.ts +71 -0
- package/dist/sources/types.js +26 -0
- package/dist/testing/fetch-stub.d.ts +32 -0
- package/dist/testing/fetch-stub.js +24 -0
- package/dist/themes/image.d.ts +18 -0
- package/dist/themes/image.js +117 -0
- package/dist/themes/index.d.ts +4 -0
- package/dist/themes/index.js +4 -0
- package/dist/themes/installer.d.ts +50 -0
- package/dist/themes/installer.js +290 -0
- package/dist/themes/manifest.d.ts +102 -0
- package/dist/themes/manifest.js +86 -0
- package/dist/themes/paths.d.ts +14 -0
- package/dist/themes/paths.js +33 -0
- package/dist/tool-system/browser-bridge.d.ts +53 -11
- package/dist/tool-system/browser-bridge.js +8 -9
- package/dist/tool-system/builtin/agent-heartbeat.d.ts +2 -2
- package/dist/tool-system/builtin/agent-heartbeat.js +20 -6
- package/dist/tool-system/builtin/agent-notifications.d.ts +127 -72
- package/dist/tool-system/builtin/agent-notifications.js +291 -101
- package/dist/tool-system/builtin/agent-output-file.js +1 -3
- package/dist/tool-system/builtin/agent-progress.d.ts +6 -0
- package/dist/tool-system/builtin/agent-progress.js +83 -0
- package/dist/tool-system/builtin/agent-registry.d.ts +38 -2
- package/dist/tool-system/builtin/agent-registry.js +178 -9
- package/dist/tool-system/builtin/agent-transcript-translator.js +1 -1
- package/dist/tool-system/builtin/agent.d.ts +2 -0
- package/dist/tool-system/builtin/agent.js +274 -33
- package/dist/tool-system/builtin/background-jobs.d.ts +55 -2
- package/dist/tool-system/builtin/background-jobs.js +96 -4
- package/dist/tool-system/builtin/background-work.d.ts +6 -0
- package/dist/tool-system/builtin/background-work.js +8 -1
- package/dist/tool-system/builtin/bash.js +5 -2
- package/dist/tool-system/builtin/browser-tools.d.ts +6 -3
- package/dist/tool-system/builtin/browser-tools.js +89 -23
- package/dist/tool-system/builtin/edit-model-catalog.d.ts +6 -0
- package/dist/tool-system/builtin/edit-model-catalog.js +172 -12
- package/dist/tool-system/builtin/edit.js +2 -6
- package/dist/tool-system/builtin/file-cache.d.ts +2 -0
- package/dist/tool-system/builtin/file-cache.js +4 -0
- package/dist/tool-system/builtin/generate-image.js +17 -10
- package/dist/tool-system/builtin/generate-video.js +26 -7
- package/dist/tool-system/builtin/grep.js +2 -2
- package/dist/tool-system/builtin/image-uploader.js +7 -1
- package/dist/tool-system/builtin/index.d.ts +32 -7
- package/dist/tool-system/builtin/index.js +237 -167
- package/dist/tool-system/builtin/memory.d.ts +6 -0
- package/dist/tool-system/builtin/memory.js +36 -15
- package/dist/tool-system/builtin/panel.d.ts +9 -0
- package/dist/tool-system/builtin/panel.js +314 -0
- package/dist/tool-system/builtin/read.js +5 -1
- package/dist/tool-system/builtin/send-message-to-session.d.ts +6 -0
- package/dist/tool-system/builtin/send-message-to-session.js +67 -0
- package/dist/tool-system/builtin/sources.d.ts +8 -0
- package/dist/tool-system/builtin/sources.js +137 -0
- package/dist/tool-system/builtin/tool-search.js +7 -2
- package/dist/tool-system/builtin/update-automation-memory.js +2 -0
- package/dist/tool-system/builtin/web-fetch.js +17 -13
- package/dist/tool-system/builtin/web-search.js +1 -3
- package/dist/tool-system/capability-module.d.ts +93 -0
- package/dist/tool-system/capability-module.js +53 -0
- package/dist/tool-system/context.d.ts +77 -19
- package/dist/tool-system/executor.js +75 -50
- package/dist/tool-system/external-tool-exposure.d.ts +60 -0
- package/dist/tool-system/external-tool-exposure.js +304 -0
- package/dist/tool-system/mcp-manager.d.ts +11 -1
- package/dist/tool-system/mcp-manager.js +19 -4
- package/dist/tool-system/mcp-tool-policy.d.ts +9 -0
- package/dist/tool-system/mcp-tool-policy.js +34 -0
- package/dist/tool-system/panel-bridge.d.ts +53 -0
- package/dist/tool-system/panel-bridge.js +1 -0
- package/dist/tool-system/permission.d.ts +26 -0
- package/dist/tool-system/permission.js +46 -0
- package/dist/tool-system/registry.d.ts +12 -1
- package/dist/tool-system/registry.js +31 -7
- package/dist/tool-system/sandbox/index.js +3 -8
- package/dist/tool-system/sandbox/seatbelt.js +2 -6
- package/dist/tool-system/session-tool-host.d.ts +139 -0
- package/dist/tool-system/session-tool-host.js +167 -0
- package/dist/tool-system/testing/tool-registry-harness.d.ts +31 -0
- package/dist/tool-system/testing/tool-registry-harness.js +51 -0
- package/dist/tool-system/validation.d.ts +14 -7
- package/dist/tool-system/validation.js +701 -7
- package/dist/types.d.ts +186 -20
- package/dist/{cc-orchestrator → utils}/cwd-normalize.d.ts +1 -0
- package/dist/{cc-orchestrator → utils}/cwd-normalize.js +1 -0
- package/dist/utils/file-mutex.d.ts +65 -0
- package/dist/utils/file-mutex.js +145 -0
- package/dist/utils/json.d.ts +2 -4
- package/dist/utils/json.js +2 -4
- package/dist/utils/lockfile.d.ts +30 -1
- package/dist/utils/lockfile.js +2 -2
- package/dist/utils/secret-scrubber.d.ts +8 -0
- package/dist/utils/secret-scrubber.js +227 -0
- package/dist/utils/toolDisplay.js +1 -1
- package/package.json +20 -5
- package/THIRD_PARTY_NOTICES.md +0 -206
- package/dist/arena/arena.d.ts +0 -45
- package/dist/arena/arena.js +0 -362
- package/dist/arena/context/context-tools.d.ts +0 -16
- package/dist/arena/context/context-tools.js +0 -272
- package/dist/arena/context/within-root.d.ts +0 -7
- package/dist/arena/context/within-root.js +0 -15
- package/dist/arena/detect-mode.d.ts +0 -20
- package/dist/arena/detect-mode.js +0 -78
- package/dist/arena/digest-builder.d.ts +0 -25
- package/dist/arena/digest-builder.js +0 -120
- package/dist/arena/index.d.ts +0 -29
- package/dist/arena/index.js +0 -29
- package/dist/arena/iterate/convergence.d.ts +0 -25
- package/dist/arena/iterate/convergence.js +0 -103
- package/dist/arena/iterate/formats/index.d.ts +0 -22
- package/dist/arena/iterate/formats/index.js +0 -283
- package/dist/arena/iterate/index.d.ts +0 -11
- package/dist/arena/iterate/index.js +0 -9
- package/dist/arena/iterate/iterative-arena.d.ts +0 -23
- package/dist/arena/iterate/iterative-arena.js +0 -237
- package/dist/arena/iterate/parse.d.ts +0 -42
- package/dist/arena/iterate/parse.js +0 -123
- package/dist/arena/iterate/phases/argue.d.ts +0 -22
- package/dist/arena/iterate/phases/argue.js +0 -165
- package/dist/arena/iterate/phases/revise.d.ts +0 -16
- package/dist/arena/iterate/phases/revise.js +0 -62
- package/dist/arena/iterate/phases/tournament.d.ts +0 -34
- package/dist/arena/iterate/phases/tournament.js +0 -113
- package/dist/arena/iterate/tools/web-tools.d.ts +0 -13
- package/dist/arena/iterate/tools/web-tools.js +0 -54
- package/dist/arena/iterate/types.d.ts +0 -152
- package/dist/arena/iterate/types.js +0 -8
- package/dist/arena/ledger.d.ts +0 -47
- package/dist/arena/ledger.js +0 -159
- package/dist/arena/lenses/architecture.d.ts +0 -5
- package/dist/arena/lenses/architecture.js +0 -22
- package/dist/arena/lenses/engineering.d.ts +0 -5
- package/dist/arena/lenses/engineering.js +0 -22
- package/dist/arena/lenses/general.d.ts +0 -5
- package/dist/arena/lenses/general.js +0 -20
- package/dist/arena/lenses/index.d.ts +0 -16
- package/dist/arena/lenses/index.js +0 -47
- package/dist/arena/lenses/product.d.ts +0 -5
- package/dist/arena/lenses/product.js +0 -22
- package/dist/arena/model-presets.d.ts +0 -23
- package/dist/arena/model-presets.js +0 -44
- package/dist/arena/phases/adjudication.d.ts +0 -25
- package/dist/arena/phases/adjudication.js +0 -142
- package/dist/arena/phases/build-consensus.d.ts +0 -30
- package/dist/arena/phases/build-consensus.js +0 -85
- package/dist/arena/phases/claim-registry.d.ts +0 -26
- package/dist/arena/phases/claim-registry.js +0 -60
- package/dist/arena/phases/cross-review.d.ts +0 -47
- package/dist/arena/phases/cross-review.js +0 -224
- package/dist/arena/phases/debate-rounds.d.ts +0 -28
- package/dist/arena/phases/debate-rounds.js +0 -161
- package/dist/arena/phases/participant-research.d.ts +0 -39
- package/dist/arena/phases/participant-research.js +0 -316
- package/dist/arena/phases/planning-detail-expansion.d.ts +0 -39
- package/dist/arena/phases/planning-detail-expansion.js +0 -120
- package/dist/arena/planner.d.ts +0 -28
- package/dist/arena/planner.js +0 -312
- package/dist/arena/providers/docs.d.ts +0 -7
- package/dist/arena/providers/docs.js +0 -111
- package/dist/arena/providers/git.d.ts +0 -8
- package/dist/arena/providers/git.js +0 -174
- package/dist/arena/providers/index.d.ts +0 -32
- package/dist/arena/providers/index.js +0 -132
- package/dist/arena/providers/none.d.ts +0 -7
- package/dist/arena/providers/none.js +0 -11
- package/dist/arena/providers/repo.d.ts +0 -7
- package/dist/arena/providers/repo.js +0 -258
- package/dist/arena/render/session.d.ts +0 -17
- package/dist/arena/render/session.js +0 -190
- package/dist/arena/render/terminal.d.ts +0 -34
- package/dist/arena/render/terminal.js +0 -286
- package/dist/arena/strategies/discussion.d.ts +0 -25
- package/dist/arena/strategies/discussion.js +0 -143
- package/dist/arena/strategies/index.d.ts +0 -15
- package/dist/arena/strategies/index.js +0 -28
- package/dist/arena/strategies/language-wrapper.d.ts +0 -17
- package/dist/arena/strategies/language-wrapper.js +0 -102
- package/dist/arena/strategies/lens-wrapper.d.ts +0 -16
- package/dist/arena/strategies/lens-wrapper.js +0 -236
- package/dist/arena/strategies/planning.d.ts +0 -30
- package/dist/arena/strategies/planning.js +0 -225
- package/dist/arena/strategies/review.d.ts +0 -26
- package/dist/arena/strategies/review.js +0 -168
- package/dist/arena/strategies/utils.d.ts +0 -36
- package/dist/arena/strategies/utils.js +0 -603
- package/dist/arena/tools/selector.d.ts +0 -17
- package/dist/arena/tools/selector.js +0 -61
- package/dist/arena/transitions.d.ts +0 -53
- package/dist/arena/transitions.js +0 -97
- package/dist/arena/types.d.ts +0 -518
- package/dist/arena/types.js +0 -27
- package/dist/cc-orchestrator/agent-adapter.d.ts +0 -54
- package/dist/cc-orchestrator/agent-adapter.js +0 -143
- package/dist/cc-orchestrator/cc-capability.d.ts +0 -19
- package/dist/cc-orchestrator/cc-capability.js +0 -53
- package/dist/cc-orchestrator/codex-session-discovery.d.ts +0 -24
- package/dist/cc-orchestrator/codex-session-discovery.js +0 -191
- package/dist/cc-orchestrator/codex-session-history.d.ts +0 -38
- package/dist/cc-orchestrator/codex-session-history.js +0 -247
- package/dist/cc-orchestrator/external-agent-bindings.d.ts +0 -27
- package/dist/cc-orchestrator/external-agent-bindings.js +0 -150
- package/dist/cc-orchestrator/external-agent-changes.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-changes.js +0 -231
- package/dist/cc-orchestrator/external-agent-driver.d.ts +0 -19
- package/dist/cc-orchestrator/external-agent-driver.js +0 -284
- package/dist/cc-orchestrator/external-agent-session-store.d.ts +0 -23
- package/dist/cc-orchestrator/external-agent-session-store.js +0 -146
- package/dist/cc-orchestrator/index.d.ts +0 -8
- package/dist/cc-orchestrator/index.js +0 -8
- package/dist/cc-orchestrator/relevance-judge.d.ts +0 -15
- package/dist/cc-orchestrator/relevance-judge.js +0 -29
- package/dist/cc-orchestrator/session-discovery.d.ts +0 -46
- package/dist/cc-orchestrator/session-discovery.js +0 -125
- package/dist/cc-orchestrator/session-history.d.ts +0 -54
- package/dist/cc-orchestrator/session-history.js +0 -150
- package/dist/cron/cron-runtime.d.ts +0 -2
- package/dist/cron/cron-runtime.js +0 -2
- package/dist/cron/cron-store.d.ts +0 -2
- package/dist/cron/cron-store.js +0 -2
- package/dist/cron/scheduler.d.ts +0 -7
- package/dist/cron/scheduler.js +0 -7
- package/dist/engine/goal.js +0 -206
- package/dist/external-agents/config.d.ts +0 -2
- package/dist/external-agents/config.js +0 -15
- package/dist/external-agents/types.d.ts +0 -31
- package/dist/git/parse-log.d.ts +0 -13
- package/dist/git/parse-log.js +0 -21
- package/dist/git/utils.d.ts +0 -49
- package/dist/git/utils.js +0 -161
- package/dist/git/worktree/crud.d.ts +0 -72
- package/dist/git/worktree/crud.js +0 -235
- package/dist/git/worktree/diff.d.ts +0 -14
- package/dist/git/worktree/diff.js +0 -82
- package/dist/git/worktree/git-exec.d.ts +0 -7
- package/dist/git/worktree/git-exec.js +0 -87
- package/dist/git/worktree/index.d.ts +0 -5
- package/dist/git/worktree/index.js +0 -5
- package/dist/git/worktree/query.d.ts +0 -43
- package/dist/git/worktree/query.js +0 -128
- package/dist/git/worktree/slug.d.ts +0 -11
- package/dist/git/worktree/slug.js +0 -58
- package/dist/git/worktree.d.ts +0 -1
- package/dist/git/worktree.js +0 -5
- package/dist/lsp/client.d.ts +0 -41
- package/dist/lsp/client.js +0 -186
- package/dist/lsp/manager.d.ts +0 -40
- package/dist/lsp/manager.js +0 -155
- package/dist/lsp/root-path.d.ts +0 -9
- package/dist/lsp/root-path.js +0 -12
- package/dist/lsp/servers.d.ts +0 -16
- package/dist/lsp/servers.js +0 -60
- package/dist/prompt/sections/coding.md +0 -35
- package/dist/quota/credentials.d.ts +0 -3
- package/dist/quota/credentials.js +0 -80
- package/dist/quota/index.d.ts +0 -36
- package/dist/quota/index.js +0 -155
- package/dist/quota/types.d.ts +0 -48
- package/dist/quota/types.js +0 -13
- package/dist/review/review-prompt.d.ts +0 -28
- package/dist/review/review-prompt.js +0 -81
- package/dist/state.d.ts +0 -160
- package/dist/state.js +0 -267
- package/dist/tool-system/builtin/apply-patch/applier.d.ts +0 -26
- package/dist/tool-system/builtin/apply-patch/applier.js +0 -308
- package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +0 -10
- package/dist/tool-system/builtin/apply-patch/backup-targets.js +0 -30
- package/dist/tool-system/builtin/apply-patch/index.d.ts +0 -20
- package/dist/tool-system/builtin/apply-patch/index.js +0 -105
- package/dist/tool-system/builtin/apply-patch/parser.d.ts +0 -17
- package/dist/tool-system/builtin/apply-patch/parser.js +0 -212
- package/dist/tool-system/builtin/apply-patch/seek-sequence.d.ts +0 -18
- package/dist/tool-system/builtin/apply-patch/seek-sequence.js +0 -123
- package/dist/tool-system/builtin/apply-patch/types.d.ts +0 -49
- package/dist/tool-system/builtin/apply-patch/types.js +0 -13
- package/dist/tool-system/builtin/arena.d.ts +0 -31
- package/dist/tool-system/builtin/arena.js +0 -416
- package/dist/tool-system/builtin/brief.d.ts +0 -6
- package/dist/tool-system/builtin/brief.js +0 -41
- package/dist/tool-system/builtin/check-quota.d.ts +0 -15
- package/dist/tool-system/builtin/check-quota.js +0 -34
- package/dist/tool-system/builtin/drive-claude-code.d.ts +0 -51
- package/dist/tool-system/builtin/drive-claude-code.js +0 -698
- package/dist/tool-system/builtin/lsp.d.ts +0 -7
- package/dist/tool-system/builtin/lsp.js +0 -144
- package/dist/tool-system/builtin/notebook-edit.d.ts +0 -7
- package/dist/tool-system/builtin/notebook-edit.js +0 -127
- package/dist/tool-system/builtin/worktree.d.ts +0 -11
- package/dist/tool-system/builtin/worktree.js +0 -363
- /package/dist/{external-agents → links}/types.js +0 -0
- /package/dist/{engine/session-usage.d.ts → session/usage.d.ts} +0 -0
- /package/dist/{engine/session-usage.js → session/usage.js} +0 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { ToolExecutor } from "./executor.js";
|
|
2
|
+
import { PermissionClassifier } from "./permission.js";
|
|
3
|
+
import { HookRegistry } from "../hooks/registry.js";
|
|
4
|
+
import { buildToolVisibility } from "../engine/run-tooling.js";
|
|
5
|
+
import { composePermissionRules } from "../engine/permission-controller.js";
|
|
6
|
+
const FORBIDDEN_MODES = new Set(["bypassPermissions", "dontAsk"]);
|
|
7
|
+
/**
|
|
8
|
+
* Whole-string match for an exposure pattern.
|
|
9
|
+
*
|
|
10
|
+
* Patterns are ANCHORED here rather than trusting the author to write `^…$`.
|
|
11
|
+
* An unanchored `action: "list"` would also admit `"invoke_list"` — a silent
|
|
12
|
+
* widening of a rule whose entire purpose is to narrow. Anchoring in one place
|
|
13
|
+
* makes the safe reading the only reading; an author who deliberately writes
|
|
14
|
+
* `^(list|open)$` gets the same result either way.
|
|
15
|
+
*/
|
|
16
|
+
function matchesWholeValue(source, value) {
|
|
17
|
+
let re;
|
|
18
|
+
try {
|
|
19
|
+
re = new RegExp(`^(?:${source})$`, "u");
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// A malformed pattern must not silently permit everything.
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
return re.test(value);
|
|
26
|
+
}
|
|
27
|
+
function argsMatch(patterns, input) {
|
|
28
|
+
if (!patterns)
|
|
29
|
+
return true;
|
|
30
|
+
for (const [key, source] of Object.entries(patterns)) {
|
|
31
|
+
// Read own properties only: a model-supplied JSON body cannot smuggle a
|
|
32
|
+
// match through the prototype chain.
|
|
33
|
+
const value = Object.prototype.hasOwnProperty.call(input, key) ? input[key] : undefined;
|
|
34
|
+
// Only primitives are comparable. Objects/arrays are rejected rather than
|
|
35
|
+
// stringified — `String(["list"])` is `"list"`, which would let an array
|
|
36
|
+
// satisfy a scalar pattern.
|
|
37
|
+
if (typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean") {
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
if (!matchesWholeValue(source, String(value)))
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
export function createSessionToolHost(options) {
|
|
46
|
+
if (FORBIDDEN_MODES.has(options.permissionMode)) {
|
|
47
|
+
throw new Error(`SessionToolHost refuses permission mode '${options.permissionMode}': it short-circuits ` +
|
|
48
|
+
`PermissionClassifier, so CodeShell tool authorization would not actually run. ` +
|
|
49
|
+
`An external runtime's own permission mode is separate and unaffected.`);
|
|
50
|
+
}
|
|
51
|
+
const { registry, exposure } = options;
|
|
52
|
+
const hooks = options.hooks ?? new HookRegistry();
|
|
53
|
+
// Composed HERE, by the same function the Native Engine uses, so the two paths
|
|
54
|
+
// cannot drift. In particular this is what pulls in the user's own
|
|
55
|
+
// `settings.permissions.rules` — a deny the user wrote must bind an external
|
|
56
|
+
// runtime exactly as it binds the Native Engine.
|
|
57
|
+
const permission = new PermissionClassifier(composePermissionRules({
|
|
58
|
+
mode: options.permissionMode,
|
|
59
|
+
cwd: options.cwd,
|
|
60
|
+
presetRules: options.presetRules,
|
|
61
|
+
projectTrusted: options.projectTrusted,
|
|
62
|
+
...(options.settingsScope ? { settingsScope: options.settingsScope } : {}),
|
|
63
|
+
}), options.permissionMode, options.approvalBackend);
|
|
64
|
+
// Every in-flight call is chained to this, so dispose() can actually stop work
|
|
65
|
+
// that is mid-execution or parked on an approval prompt (§13.4).
|
|
66
|
+
const lifetime = new AbortController();
|
|
67
|
+
const sessionSignal = options.signal
|
|
68
|
+
? AbortSignal.any([options.signal, lifetime.signal])
|
|
69
|
+
: lifetime.signal;
|
|
70
|
+
const toolCtx = {
|
|
71
|
+
cwd: options.cwd,
|
|
72
|
+
toolRegistry: registry,
|
|
73
|
+
// The COMBINED signal, not just the caller's: a tool that cooperates with
|
|
74
|
+
// ctx.signal must observe session disposal too.
|
|
75
|
+
signal: sessionSignal,
|
|
76
|
+
// Caller-supplied host seams (panels, browser, askUser, …) come FIRST so the
|
|
77
|
+
// security-relevant fields below always win. Spreading them last would let a
|
|
78
|
+
// caller — or a careless refactor — set `toolVisibility: undefined` (which
|
|
79
|
+
// makes ToolExecutor skip its availability guard entirely), widen
|
|
80
|
+
// `allowedToolNames`, or re-introduce a permission mode the throw above
|
|
81
|
+
// just rejected.
|
|
82
|
+
...options.contextOverrides,
|
|
83
|
+
sessionId: options.businessSessionId,
|
|
84
|
+
planMode: options.planMode,
|
|
85
|
+
permissionMode: options.permissionMode,
|
|
86
|
+
toolVisibility: buildToolVisibility(options.visibility),
|
|
87
|
+
// Belt and braces with the exposure check in execute(): the executor
|
|
88
|
+
// enforces this too, so a future refactor that loses one still fails closed.
|
|
89
|
+
allowedToolNames: new Set(exposure.toolNames),
|
|
90
|
+
};
|
|
91
|
+
const executor = new ToolExecutor(registry, permission, hooks);
|
|
92
|
+
executor.setContext(toolCtx);
|
|
93
|
+
executor.setSignal(sessionSignal);
|
|
94
|
+
let disposed = false;
|
|
95
|
+
const failClosed = (id, name, error) => ({
|
|
96
|
+
id,
|
|
97
|
+
toolName: name,
|
|
98
|
+
error,
|
|
99
|
+
isError: true,
|
|
100
|
+
});
|
|
101
|
+
return {
|
|
102
|
+
businessSessionId: options.businessSessionId,
|
|
103
|
+
toolContext: toolCtx,
|
|
104
|
+
listTools() {
|
|
105
|
+
if (disposed)
|
|
106
|
+
return [];
|
|
107
|
+
return registry
|
|
108
|
+
.getToolDefinitions()
|
|
109
|
+
.filter((definition) => exposure.toolNames.has(definition.name));
|
|
110
|
+
},
|
|
111
|
+
async execute(call, callSignal) {
|
|
112
|
+
if (disposed) {
|
|
113
|
+
return failClosed(call.id, call.name, "This tool session has been closed.");
|
|
114
|
+
}
|
|
115
|
+
if (!exposure.toolNames.has(call.name)) {
|
|
116
|
+
// Fail closed on a KNOWN-but-unexposed name too. Not listing a tool is a
|
|
117
|
+
// boundary, not a hint to the model.
|
|
118
|
+
return failClosed(call.id, call.name, `Tool ${call.name} is not exposed to this session. Do NOT retry this tool call.`);
|
|
119
|
+
}
|
|
120
|
+
const input = call.input && typeof call.input === "object" && !Array.isArray(call.input)
|
|
121
|
+
? call.input
|
|
122
|
+
: {};
|
|
123
|
+
if (!argsMatch(exposure.argsPatterns?.get(call.name), input)) {
|
|
124
|
+
return failClosed(call.id, call.name, `Tool ${call.name} was called with arguments outside the scope exposed to this ` +
|
|
125
|
+
`session. Do NOT retry this tool call with the same arguments.`);
|
|
126
|
+
}
|
|
127
|
+
// `sessionSignal` folds in the session lifetime and the caller-supplied
|
|
128
|
+
// signal; `callSignal` is the optional per-call one (an MCP cancellation).
|
|
129
|
+
if (sessionSignal.aborted || callSignal?.aborted) {
|
|
130
|
+
return failClosed(call.id, call.name, `Tool aborted before execution: ${call.name}`);
|
|
131
|
+
}
|
|
132
|
+
// Forward the per-call signal rather than only checking it at entry: an MCP
|
|
133
|
+
// cancellation arriving mid-flight has to actually stop the work.
|
|
134
|
+
//
|
|
135
|
+
// A `ToolExecutor` holds exactly one signal, and swapping it per call would
|
|
136
|
+
// race with concurrent calls carrying different signals. So a call that
|
|
137
|
+
// brings its own signal gets its own executor — cheap (it is a thin wrapper
|
|
138
|
+
// over the shared registry/permission/hooks) and free of shared mutable
|
|
139
|
+
// state. Calls without one use the shared executor unchanged.
|
|
140
|
+
if (!callSignal) {
|
|
141
|
+
// The one authorized path. Everything above only NARROWS what may reach it.
|
|
142
|
+
return await executor.executeSingle({
|
|
143
|
+
id: call.id,
|
|
144
|
+
toolName: call.name,
|
|
145
|
+
args: input,
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
const scoped = new ToolExecutor(registry, permission, hooks);
|
|
149
|
+
scoped.setContext(toolCtx);
|
|
150
|
+
scoped.setSignal(AbortSignal.any([sessionSignal, callSignal]));
|
|
151
|
+
return await scoped.executeSingle({
|
|
152
|
+
id: call.id,
|
|
153
|
+
toolName: call.name,
|
|
154
|
+
args: input,
|
|
155
|
+
});
|
|
156
|
+
},
|
|
157
|
+
async dispose() {
|
|
158
|
+
// Order matters (§13.4): stop accepting new calls, THEN abort in-flight
|
|
159
|
+
// ones. Marking disposed without aborting would let a call that is already
|
|
160
|
+
// running — or parked on an approval prompt — continue and complete after
|
|
161
|
+
// the session is gone.
|
|
162
|
+
disposed = true;
|
|
163
|
+
lifetime.abort();
|
|
164
|
+
executor.setContext(undefined);
|
|
165
|
+
},
|
|
166
|
+
};
|
|
167
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { BuiltinTool } from "../builtin/index.js";
|
|
2
|
+
import type { ToolContext } from "../context.js";
|
|
3
|
+
import { ToolRegistry } from "../registry.js";
|
|
4
|
+
import type { ToolResult } from "../../types.js";
|
|
5
|
+
export interface FakeToolContextOptions {
|
|
6
|
+
cwd?: string;
|
|
7
|
+
sessionId?: string;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
/** Shallow overrides for tool-family-specific host bridges. */
|
|
10
|
+
overrides?: Partial<ToolContext>;
|
|
11
|
+
}
|
|
12
|
+
export interface ToolRegistryHarnessOptions extends FakeToolContextOptions {
|
|
13
|
+
builtinTools?: readonly string[];
|
|
14
|
+
toolCatalog?: readonly BuiltinTool[];
|
|
15
|
+
registry?: ToolRegistry;
|
|
16
|
+
timeoutMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export interface ToolRegistryHarness {
|
|
19
|
+
registry: ToolRegistry;
|
|
20
|
+
context: ToolContext;
|
|
21
|
+
execute(name: string, args?: Record<string, unknown>): Promise<ToolResult>;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Shared fake ToolContext for builtin integration tests. It intentionally
|
|
25
|
+
* supplies only stable harness defaults; tests opt into browser/workspace/MCP/
|
|
26
|
+
* sub-agent behavior through `overrides`, so missing host seams fail visibly.
|
|
27
|
+
*/
|
|
28
|
+
export declare function createFakeToolContext(registry: ToolRegistry, options?: FakeToolContextOptions): ToolContext;
|
|
29
|
+
/** Build a real ToolRegistry and execute through its timeout/signal/result
|
|
30
|
+
* protocol while keeping host dependencies deterministic and injectable. */
|
|
31
|
+
export declare function createToolRegistryHarness(options?: ToolRegistryHarnessOptions): ToolRegistryHarness;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { resolve } from "node:path";
|
|
2
|
+
import { ToolRegistry } from "../registry.js";
|
|
3
|
+
/**
|
|
4
|
+
* Shared fake ToolContext for builtin integration tests. It intentionally
|
|
5
|
+
* supplies only stable harness defaults; tests opt into browser/workspace/MCP/
|
|
6
|
+
* sub-agent behavior through `overrides`, so missing host seams fail visibly.
|
|
7
|
+
*/
|
|
8
|
+
export function createFakeToolContext(registry, options = {}) {
|
|
9
|
+
const cwd = resolve(options.cwd ?? process.cwd());
|
|
10
|
+
const context = {
|
|
11
|
+
cwd,
|
|
12
|
+
setCwd(next) {
|
|
13
|
+
context.cwd = resolve(next);
|
|
14
|
+
},
|
|
15
|
+
llmConfig: {},
|
|
16
|
+
toolRegistry: registry,
|
|
17
|
+
planMode: false,
|
|
18
|
+
sessionId: options.sessionId ?? "tool-harness-session",
|
|
19
|
+
signal: options.signal,
|
|
20
|
+
allowBackgroundShells: false,
|
|
21
|
+
toolVisibility: { hasGoal: true },
|
|
22
|
+
engine: {
|
|
23
|
+
getPlanMode: () => context.planMode,
|
|
24
|
+
setPlanMode: (enabled) => {
|
|
25
|
+
context.planMode = enabled;
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
askUser: async () => "harness-answer",
|
|
29
|
+
...options.overrides,
|
|
30
|
+
};
|
|
31
|
+
return context;
|
|
32
|
+
}
|
|
33
|
+
/** Build a real ToolRegistry and execute through its timeout/signal/result
|
|
34
|
+
* protocol while keeping host dependencies deterministic and injectable. */
|
|
35
|
+
export function createToolRegistryHarness(options = {}) {
|
|
36
|
+
const registryOptions = {
|
|
37
|
+
...(options.builtinTools ? { builtinTools: options.builtinTools } : {}),
|
|
38
|
+
...(options.toolCatalog ? { toolCatalog: options.toolCatalog } : {}),
|
|
39
|
+
};
|
|
40
|
+
const registry = options.registry ?? new ToolRegistry(registryOptions);
|
|
41
|
+
const context = createFakeToolContext(registry, options);
|
|
42
|
+
return {
|
|
43
|
+
registry,
|
|
44
|
+
context,
|
|
45
|
+
execute: async (name, args = {}) => await registry.executeTool(name, args, {
|
|
46
|
+
ctx: context,
|
|
47
|
+
signal: options.signal,
|
|
48
|
+
timeoutMs: options.timeoutMs ?? 5_000,
|
|
49
|
+
}),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Compatibility validator used by existing built-ins and third-party MCP
|
|
3
|
+
* schemas. It checks `required` presence and top-level primitive types only;
|
|
4
|
+
* changing that permissive contract would be a broad compatibility break.
|
|
3
5
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* nested shapes, and formats are intentionally NOT validated — this is a
|
|
7
|
-
* cheap pre-flight guard, not a substitute for the provider's own schema
|
|
8
|
-
* enforcement. (Was previously labelled "Zod-based" and imported `z`, but
|
|
9
|
-
* never used zod — corrected to avoid misleading readers.)
|
|
6
|
+
* Reviewed Panel App schemas use the fail-closed recursive validator exported
|
|
7
|
+
* later in this module (`validateToolArgsStrict`).
|
|
10
8
|
*/
|
|
11
9
|
/**
|
|
12
10
|
* Validate tool args against the tool's inputSchema.
|
|
13
11
|
* Returns null if valid, error string if invalid.
|
|
14
12
|
*/
|
|
15
13
|
export declare function validateToolArgs(toolName: string, args: Record<string, unknown>, schema: Record<string, unknown>): string | null;
|
|
14
|
+
/**
|
|
15
|
+
* Fail-closed recursive validation for reviewed Panel App Agent tools.
|
|
16
|
+
*
|
|
17
|
+
* This deliberately lives beside the lightweight validator instead of
|
|
18
|
+
* changing its permissive compatibility contract for existing built-ins and
|
|
19
|
+
* third-party MCP schemas.
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateToolInputSchemaStrict(schema: Record<string, unknown>): string | null;
|
|
22
|
+
export declare function validateToolArgsStrict(toolName: string, args: Record<string, unknown>, schema: Record<string, unknown>): string | null;
|