@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,32 @@
|
|
|
1
|
+
import type { LLMConfig, StreamCallback } from "../types.js";
|
|
2
|
+
import type { AgentPresetName } from "../preset/index.js";
|
|
3
|
+
import type { ModelPool } from "../llm/model-pool.js";
|
|
4
|
+
import type { SubAgentSpawner } from "../tool-system/context.js";
|
|
5
|
+
import type { EngineConfig } from "./types.js";
|
|
6
|
+
import type { ChildEngineRunner } from "./run-types.js";
|
|
7
|
+
import { type SandboxConfig, type SandboxMode } from "../tool-system/sandbox/index.js";
|
|
8
|
+
import type { MCPServerConfig } from "../types.js";
|
|
9
|
+
export declare const NESTED_AGENT_TOOLS: string[];
|
|
10
|
+
export declare function resolveChildLlm(modelKey: string | undefined, pool: ModelPool | undefined, parentLlm: LLMConfig): LLMConfig;
|
|
11
|
+
export declare function resolveChildToolScope(allowlist: string[] | undefined, parentDisabled: string[] | undefined, parentEnabled: string[] | undefined): {
|
|
12
|
+
enabled?: string[];
|
|
13
|
+
disabled: string[];
|
|
14
|
+
};
|
|
15
|
+
export declare function resolveChildSandbox(mode: SandboxMode | undefined, parent: SandboxConfig): SandboxConfig;
|
|
16
|
+
export declare function resolveChildMcpServers(allowlist: string[] | undefined, parent: Record<string, MCPServerConfig> | undefined): Record<string, MCPServerConfig> | undefined;
|
|
17
|
+
export declare function wrapChildStream(destination: StreamCallback | undefined, agentId: string): StreamCallback | undefined;
|
|
18
|
+
export interface CreateSubAgentSpawnerDeps {
|
|
19
|
+
parentConfig: EngineConfig;
|
|
20
|
+
/** Fully resolved sandbox for this parent run, including settings layers. */
|
|
21
|
+
parentSandbox: SandboxConfig;
|
|
22
|
+
presetName: AgentPresetName;
|
|
23
|
+
cwd: string;
|
|
24
|
+
permissionMode: NonNullable<EngineConfig["permissionMode"]>;
|
|
25
|
+
modelPool?: ModelPool;
|
|
26
|
+
appendParentSubagent: (agentId: string, description: string) => void;
|
|
27
|
+
sessionExists: (sessionId: string) => boolean;
|
|
28
|
+
getSessionParentId?: (sessionId: string) => string | null | undefined;
|
|
29
|
+
childRunner: ChildEngineRunner;
|
|
30
|
+
parentStream?: StreamCallback;
|
|
31
|
+
}
|
|
32
|
+
export declare function createSubAgentSpawner(deps: CreateSubAgentSpawnerDeps): SubAgentSpawner;
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import { buildAgentDirectionMessage, notificationQueue, } from "../tool-system/builtin/agent-notifications.js";
|
|
2
|
+
import { nanoid } from "nanoid";
|
|
3
|
+
import { defaultSandboxConfig, } from "../tool-system/sandbox/index.js";
|
|
4
|
+
export const NESTED_AGENT_TOOLS = ["Agent", "AgentStatus", "AgentCancel", "AgentSendInput"];
|
|
5
|
+
export function resolveChildLlm(modelKey, pool, parentLlm) {
|
|
6
|
+
if (modelKey && pool?.has(modelKey)) {
|
|
7
|
+
const resolved = pool.resolveLLMConfig(modelKey);
|
|
8
|
+
if (resolved)
|
|
9
|
+
return resolved;
|
|
10
|
+
}
|
|
11
|
+
return parentLlm;
|
|
12
|
+
}
|
|
13
|
+
export function resolveChildToolScope(allowlist, parentDisabled, parentEnabled) {
|
|
14
|
+
if (allowlist) {
|
|
15
|
+
return {
|
|
16
|
+
enabled: allowlist.filter((tool) => !NESTED_AGENT_TOOLS.includes(tool)),
|
|
17
|
+
disabled: [...NESTED_AGENT_TOOLS],
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
enabled: parentEnabled?.filter((tool) => !NESTED_AGENT_TOOLS.includes(tool)),
|
|
22
|
+
disabled: Array.from(new Set([...(parentDisabled ?? []), ...NESTED_AGENT_TOOLS])),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function resolveChildSandbox(mode, parent) {
|
|
26
|
+
if (mode === undefined)
|
|
27
|
+
return parent;
|
|
28
|
+
// Role definitions are project/plugin-authored capability constraints, not
|
|
29
|
+
// an authority to weaken the user's effective run sandbox. Explicit native
|
|
30
|
+
// backends are already fail-closed; keep them unchanged. `auto` may resolve
|
|
31
|
+
// to an isolated backend, so it likewise cannot be downgraded to off/auto.
|
|
32
|
+
if (parent.mode === "seatbelt" || parent.mode === "bwrap")
|
|
33
|
+
return parent;
|
|
34
|
+
if (parent.mode === "auto" && (mode === "off" || mode === "auto"))
|
|
35
|
+
return parent;
|
|
36
|
+
return { ...defaultSandboxConfig(mode), ...parent, mode };
|
|
37
|
+
}
|
|
38
|
+
export function resolveChildMcpServers(allowlist, parent) {
|
|
39
|
+
if (allowlist === undefined)
|
|
40
|
+
return parent;
|
|
41
|
+
const allowed = new Set(allowlist);
|
|
42
|
+
return Object.fromEntries(Object.entries(parent ?? {}).filter(([name]) => allowed.has(name)));
|
|
43
|
+
}
|
|
44
|
+
export function wrapChildStream(destination, agentId) {
|
|
45
|
+
if (!destination)
|
|
46
|
+
return undefined;
|
|
47
|
+
return (event) => {
|
|
48
|
+
if (event.type === "usage_update" ||
|
|
49
|
+
event.type === "session_started" ||
|
|
50
|
+
event.type === "context_compact") {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
destination({ ...event, agentId });
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
function wrapChildRuntimeStream(destination, agentId, onProgressEvent) {
|
|
57
|
+
const uiStream = wrapChildStream(destination, agentId);
|
|
58
|
+
if (!uiStream && !onProgressEvent)
|
|
59
|
+
return undefined;
|
|
60
|
+
return (event) => {
|
|
61
|
+
onProgressEvent?.(event);
|
|
62
|
+
return uiStream?.(event);
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
class ChildRunSupervisor {
|
|
66
|
+
runtime;
|
|
67
|
+
childSessionId;
|
|
68
|
+
runtimeGeneration;
|
|
69
|
+
state = "starting";
|
|
70
|
+
activeController;
|
|
71
|
+
interruptPending = false;
|
|
72
|
+
running = false;
|
|
73
|
+
intakeClosed = false;
|
|
74
|
+
pendingDelivered = new Map();
|
|
75
|
+
closeIntake;
|
|
76
|
+
constructor(runtime, childSessionId, runtimeGeneration) {
|
|
77
|
+
this.runtime = runtime;
|
|
78
|
+
this.childSessionId = childSessionId;
|
|
79
|
+
this.runtimeGeneration = runtimeGeneration;
|
|
80
|
+
runtime.setAgentControlStateListener((state) => {
|
|
81
|
+
this.state = state;
|
|
82
|
+
});
|
|
83
|
+
runtime.setAgentDirectionsDeliveredListener?.((envelopeIds) => {
|
|
84
|
+
for (const id of envelopeIds) {
|
|
85
|
+
const pending = this.pendingDelivered.get(id);
|
|
86
|
+
if (!pending)
|
|
87
|
+
continue;
|
|
88
|
+
this.pendingDelivered.delete(id);
|
|
89
|
+
pending.resolve({ status: "delivered", ...pending.receipt });
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
setCloseIntake(closeIntake) {
|
|
94
|
+
this.closeIntake = closeIntake;
|
|
95
|
+
}
|
|
96
|
+
getState() {
|
|
97
|
+
return this.state;
|
|
98
|
+
}
|
|
99
|
+
routeDirection(draft) {
|
|
100
|
+
if (!this.running ||
|
|
101
|
+
this.intakeClosed ||
|
|
102
|
+
this.state === "closing" ||
|
|
103
|
+
this.state === "terminal") {
|
|
104
|
+
return { status: "rejected", reason: "intake-closed", rejectedAt: Date.now() };
|
|
105
|
+
}
|
|
106
|
+
const envelope = notificationQueue.enqueue(draft);
|
|
107
|
+
if (!envelope || envelope.kind !== "direction") {
|
|
108
|
+
return { status: "rejected", reason: "invalid-request", rejectedAt: Date.now() };
|
|
109
|
+
}
|
|
110
|
+
const receipt = {
|
|
111
|
+
envelopeId: envelope.id,
|
|
112
|
+
sequence: envelope.sequence,
|
|
113
|
+
correlationId: envelope.correlationId,
|
|
114
|
+
target: envelope.to,
|
|
115
|
+
acceptedAt: envelope.createdAt,
|
|
116
|
+
};
|
|
117
|
+
if (this.state === "safe-point") {
|
|
118
|
+
return new Promise((resolve) => {
|
|
119
|
+
this.pendingDelivered.set(envelope.id, { receipt, resolve });
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
if (draft.delivery === "interrupt-and-redrive" &&
|
|
123
|
+
!this.interruptPending &&
|
|
124
|
+
this.activeController &&
|
|
125
|
+
!this.activeController.signal.aborted) {
|
|
126
|
+
this.interruptPending = true;
|
|
127
|
+
this.state = "interrupting";
|
|
128
|
+
this.activeController.abort();
|
|
129
|
+
return { status: "interrupted", ...receipt };
|
|
130
|
+
}
|
|
131
|
+
return { status: "queued", ...receipt };
|
|
132
|
+
}
|
|
133
|
+
closeDirectionIntake() {
|
|
134
|
+
if (this.intakeClosed)
|
|
135
|
+
return;
|
|
136
|
+
this.intakeClosed = true;
|
|
137
|
+
this.state = "closing";
|
|
138
|
+
this.closeIntake?.();
|
|
139
|
+
}
|
|
140
|
+
drainDirections() {
|
|
141
|
+
return notificationQueue.drain(this.childSessionId, (envelope) => envelope.kind === "direction" && envelope.runtimeGeneration === this.runtimeGeneration);
|
|
142
|
+
}
|
|
143
|
+
async run(task, options) {
|
|
144
|
+
this.running = true;
|
|
145
|
+
let nextTask = task;
|
|
146
|
+
let agentDirection;
|
|
147
|
+
try {
|
|
148
|
+
for (;;) {
|
|
149
|
+
const controller = new AbortController();
|
|
150
|
+
this.activeController = controller;
|
|
151
|
+
const lifecycleSignal = options.signal;
|
|
152
|
+
const cascadeAbort = () => controller.abort();
|
|
153
|
+
if (lifecycleSignal?.aborted)
|
|
154
|
+
cascadeAbort();
|
|
155
|
+
else
|
|
156
|
+
lifecycleSignal?.addEventListener("abort", cascadeAbort, { once: true });
|
|
157
|
+
this.state = agentDirection ? "redriving" : "starting";
|
|
158
|
+
let result;
|
|
159
|
+
try {
|
|
160
|
+
result = await this.runtime.run(nextTask, {
|
|
161
|
+
...options,
|
|
162
|
+
signal: controller.signal,
|
|
163
|
+
runtimeGeneration: this.runtimeGeneration,
|
|
164
|
+
...(agentDirection ? { injected: true, agentDirection } : {}),
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
finally {
|
|
168
|
+
lifecycleSignal?.removeEventListener("abort", cascadeAbort);
|
|
169
|
+
this.activeController = undefined;
|
|
170
|
+
}
|
|
171
|
+
if (lifecycleSignal?.aborted) {
|
|
172
|
+
this.closeDirectionIntake();
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
// Engine.run has fully settled here, including all accepted tool results.
|
|
176
|
+
// For a normal completion, atomically close registry intake first. A
|
|
177
|
+
// sender that won before this boundary is now in the fenced queue and
|
|
178
|
+
// must be consumed/redriven; a sender after it is rejected.
|
|
179
|
+
if (!this.interruptPending)
|
|
180
|
+
this.closeDirectionIntake();
|
|
181
|
+
const directions = this.drainDirections();
|
|
182
|
+
this.interruptPending = false;
|
|
183
|
+
if (directions.length === 0) {
|
|
184
|
+
return result;
|
|
185
|
+
}
|
|
186
|
+
directions.sort((left, right) => left.sequence - right.sequence);
|
|
187
|
+
nextTask = buildAgentDirectionMessage(directions);
|
|
188
|
+
agentDirection = {
|
|
189
|
+
envelopeIds: directions.map((item) => item.id),
|
|
190
|
+
correlationIds: directions
|
|
191
|
+
.map((item) => item.correlationId)
|
|
192
|
+
.filter((value) => value !== undefined),
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
finally {
|
|
197
|
+
this.closeDirectionIntake();
|
|
198
|
+
this.running = false;
|
|
199
|
+
this.state = "terminal";
|
|
200
|
+
for (const { receipt, resolve } of this.pendingDelivered.values()) {
|
|
201
|
+
resolve({ status: "queued", ...receipt });
|
|
202
|
+
}
|
|
203
|
+
this.pendingDelivered.clear();
|
|
204
|
+
this.runtime.setAgentControlStateListener(undefined);
|
|
205
|
+
this.runtime.setAgentDirectionsDeliveredListener?.(undefined);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
export function createSubAgentSpawner(deps) {
|
|
210
|
+
return {
|
|
211
|
+
parentStream: deps.parentStream,
|
|
212
|
+
describe: () => ({
|
|
213
|
+
cwd: deps.cwd,
|
|
214
|
+
preset: deps.presetName,
|
|
215
|
+
permissionMode: deps.permissionMode,
|
|
216
|
+
}),
|
|
217
|
+
sessionExists: deps.sessionExists,
|
|
218
|
+
getSessionParentId: deps.getSessionParentId,
|
|
219
|
+
spawn: async (request) => {
|
|
220
|
+
if (!request.resumeSessionId) {
|
|
221
|
+
try {
|
|
222
|
+
deps.appendParentSubagent(request.agentId, request.description);
|
|
223
|
+
}
|
|
224
|
+
catch {
|
|
225
|
+
// Parent anchors are best-effort and must never block a child run.
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
const scope = resolveChildToolScope(request.toolAllowlist, deps.parentConfig.disabledBuiltinTools, deps.parentConfig.enabledBuiltinTools);
|
|
229
|
+
const childConfig = {
|
|
230
|
+
llm: resolveChildLlm(request.model, deps.modelPool, deps.parentConfig.llm),
|
|
231
|
+
clientDefaults: {
|
|
232
|
+
...(deps.parentConfig.clientDefaults ?? {}),
|
|
233
|
+
retryMaxAttempts: 2,
|
|
234
|
+
},
|
|
235
|
+
cwd: deps.cwd,
|
|
236
|
+
permissionMode: deps.permissionMode,
|
|
237
|
+
preset: deps.presetName,
|
|
238
|
+
enabledBuiltinTools: scope.enabled,
|
|
239
|
+
disabledBuiltinTools: scope.disabled,
|
|
240
|
+
capabilities: deps.parentConfig.capabilities,
|
|
241
|
+
extensionModules: deps.parentConfig.extensionModules,
|
|
242
|
+
builtinToolHost: deps.parentConfig.builtinToolHost,
|
|
243
|
+
customSystemPrompt: deps.parentConfig.customSystemPrompt,
|
|
244
|
+
appendSystemPrompt: [deps.parentConfig.appendSystemPrompt, request.appendSystemPrompt]
|
|
245
|
+
.filter(Boolean)
|
|
246
|
+
.join("\n\n") || undefined,
|
|
247
|
+
responseLanguage: deps.parentConfig.responseLanguage,
|
|
248
|
+
userProfile: deps.parentConfig.userProfile,
|
|
249
|
+
instructions: deps.parentConfig.instructions,
|
|
250
|
+
maxTurns: request.maxTurns,
|
|
251
|
+
maxContextTokens: deps.parentConfig.maxContextTokens ?? 200_000,
|
|
252
|
+
sessionStorageDir: deps.parentConfig.sessionStorageDir,
|
|
253
|
+
headless: deps.parentConfig.headless,
|
|
254
|
+
readOnlySession: request.readOnlySession,
|
|
255
|
+
skillAllowlist: request.skillAllowlist,
|
|
256
|
+
sandbox: resolveChildSandbox(request.sandboxMode, deps.parentSandbox),
|
|
257
|
+
mcpServers: resolveChildMcpServers(request.mcpAllowlist, deps.parentConfig.mcpServers),
|
|
258
|
+
settingsScope: deps.parentConfig.settingsScope ?? "project",
|
|
259
|
+
isSubAgent: true,
|
|
260
|
+
};
|
|
261
|
+
const destination = request.streamOverride ?? deps.parentStream;
|
|
262
|
+
const childSessionId = request.resumeSessionId ?? request.agentId;
|
|
263
|
+
if (deps.childRunner.createChild && request.runtimeGeneration !== undefined) {
|
|
264
|
+
const runtime = deps.childRunner.createChild(childConfig);
|
|
265
|
+
const supervisor = new ChildRunSupervisor(runtime, childSessionId, request.runtimeGeneration);
|
|
266
|
+
const ownerToken = nanoid();
|
|
267
|
+
const bound = request.bindLiveControl?.(supervisor, ownerToken);
|
|
268
|
+
supervisor.setCloseIntake(() => request.closeLiveControl?.(supervisor, bound && bound !== true ? bound : undefined));
|
|
269
|
+
if (bound === false) {
|
|
270
|
+
throw new Error(`child session ${childSessionId} already has a live transcript writer`);
|
|
271
|
+
}
|
|
272
|
+
return await supervisor.run(request.prompt, {
|
|
273
|
+
signal: request.signal,
|
|
274
|
+
onStream: wrapChildRuntimeStream(destination, request.agentId, request.onProgressEvent),
|
|
275
|
+
sessionId: childSessionId,
|
|
276
|
+
onAgentProgress: request.onAgentProgress,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
const result = await deps.childRunner.runChild(childConfig, request.prompt, {
|
|
280
|
+
signal: request.signal,
|
|
281
|
+
onStream: wrapChildRuntimeStream(destination, request.agentId, request.onProgressEvent),
|
|
282
|
+
sessionId: childSessionId,
|
|
283
|
+
});
|
|
284
|
+
return result;
|
|
285
|
+
},
|
|
286
|
+
};
|
|
287
|
+
}
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
* Returns a short commit-subject-style string like "Read 3 files, fixed NPE in auth.ts"
|
|
6
6
|
*/
|
|
7
7
|
import type { ToolCall, ToolResult } from "../types.js";
|
|
8
|
-
export type SummarizeFn = (systemPrompt: string, userMessage: string) => Promise<string>;
|
|
8
|
+
export type SummarizeFn = (systemPrompt: string, userMessage: string, signal?: AbortSignal) => Promise<string>;
|
|
9
9
|
/**
|
|
10
10
|
* Generate a 1-line summary of completed tool executions.
|
|
11
11
|
* Returns null on failure (non-critical).
|
|
12
12
|
*/
|
|
13
|
-
export declare function generateToolUseSummary(toolCalls: ToolCall[], results: ToolResult[], summarize: SummarizeFn): Promise<string | null>;
|
|
13
|
+
export declare function generateToolUseSummary(toolCalls: ToolCall[], results: ToolResult[], summarize: SummarizeFn, signal?: AbortSignal): Promise<string | null>;
|
|
@@ -13,7 +13,7 @@ const SUMMARY_SYSTEM_PROMPT = "Generate a very brief (under 40 chars) summary of
|
|
|
13
13
|
* Generate a 1-line summary of completed tool executions.
|
|
14
14
|
* Returns null on failure (non-critical).
|
|
15
15
|
*/
|
|
16
|
-
export async function generateToolUseSummary(toolCalls, results, summarize) {
|
|
16
|
+
export async function generateToolUseSummary(toolCalls, results, summarize, signal) {
|
|
17
17
|
if (toolCalls.length === 0)
|
|
18
18
|
return null;
|
|
19
19
|
try {
|
|
@@ -25,7 +25,7 @@ export async function generateToolUseSummary(toolCalls, results, summarize) {
|
|
|
25
25
|
const output = (result?.result ?? result?.error ?? "").slice(0, 300);
|
|
26
26
|
parts.push(`Tool: ${tc.toolName}(${input}) → ${output}`);
|
|
27
27
|
}
|
|
28
|
-
const summary = await summarize(SUMMARY_SYSTEM_PROMPT, parts.join("\n"));
|
|
28
|
+
const summary = await summarize(SUMMARY_SYSTEM_PROMPT, parts.join("\n"), signal);
|
|
29
29
|
return summary?.trim() || null;
|
|
30
30
|
}
|
|
31
31
|
catch (err) {
|
|
@@ -4,16 +4,19 @@
|
|
|
4
4
|
* Following Claude Code's po_() pattern:
|
|
5
5
|
* pre_check → model_call → post_check → tool_exec → context_mgmt → hook_notify → next turn
|
|
6
6
|
*/
|
|
7
|
-
import type { Message, StreamCallback, TerminalReason, ContentBlock, ToolResult, TokenUsage, ContextUsageAnchor } from "../types.js";
|
|
7
|
+
import type { Message, StreamCallback, TerminalReason, ContentBlock, ToolResult, TokenUsage, ContextUsageAnchor, TurnCompletionKind } from "../types.js";
|
|
8
8
|
import type { SteerItem } from "./steer-queue.js";
|
|
9
|
+
import type { DirectionEnvelope } from "../tool-system/builtin/agent-notifications.js";
|
|
10
|
+
import type { LiveChildState } from "../tool-system/builtin/agent-registry.js";
|
|
9
11
|
import { ModelFacade } from "./model-facade.js";
|
|
10
12
|
import { ToolExecutor } from "../tool-system/executor.js";
|
|
11
13
|
import { ContextManager } from "../context/manager.js";
|
|
12
14
|
import { HookRegistry } from "../hooks/registry.js";
|
|
13
|
-
import {
|
|
15
|
+
import type { GoalJudgeRuntimeContext } from "../hooks/goal-stop-hook.js";
|
|
16
|
+
import type { PromptCacheDiagnosticSample } from "./prompt-cache-diagnostics.js";
|
|
14
17
|
import { Transcript } from "../session/transcript.js";
|
|
15
|
-
import { type CumulativeUsageCounters } from "
|
|
16
|
-
import { type GoalConfig, type GoalExtension, type GoalTerminationReason } from "
|
|
18
|
+
import { type CumulativeUsageCounters } from "../session/usage.js";
|
|
19
|
+
import { type GoalConfig, type GoalExtension, type GoalTerminationReason } from "../goal/lifecycle.js";
|
|
17
20
|
export interface TurnLoopConfig {
|
|
18
21
|
maxTurns: number;
|
|
19
22
|
maxToolCallsPerTurn: number;
|
|
@@ -94,11 +97,13 @@ export interface TurnLoopDeps {
|
|
|
94
97
|
* Returns the updated counters so usage_update can carry both metric scopes.
|
|
95
98
|
*/
|
|
96
99
|
recordCumulativeUsage?: (usage: TokenUsage) => CumulativeUsageCounters;
|
|
100
|
+
/** Child-only billed usage delta for structured progress accounting. */
|
|
101
|
+
onAgentUsage?: (usage: TokenUsage) => void;
|
|
97
102
|
/**
|
|
98
103
|
* Lightweight per-session prompt-cache diagnostic, owned by Engine because it
|
|
99
104
|
* needs memory across TurnLoop instances.
|
|
100
105
|
*/
|
|
101
|
-
recordCacheReadDiagnostics?: (
|
|
106
|
+
recordCacheReadDiagnostics?: (sample: PromptCacheDiagnosticSample) => void;
|
|
102
107
|
/** Persist the latest context-estimation anchor derived from provider usage. */
|
|
103
108
|
recordContextUsageAnchor?: (anchor: ContextUsageAnchor) => void;
|
|
104
109
|
/**
|
|
@@ -110,6 +115,12 @@ export interface TurnLoopDeps {
|
|
|
110
115
|
* tests (turn loop tolerates undefined).
|
|
111
116
|
*/
|
|
112
117
|
consumeSteer?: (source?: "normal_step" | "finalize_backfill") => SteerItem[];
|
|
118
|
+
/** Child-only mailbox drain; separate from user steering for provenance/consent. */
|
|
119
|
+
consumeAgentDirections?: () => DirectionEnvelope[];
|
|
120
|
+
/** Exposes semantic model/tool boundaries to the bound live child supervisor. */
|
|
121
|
+
onAgentControlState?: (state: LiveChildState) => void;
|
|
122
|
+
/** Confirms that specific envelopes reached messages + persisted provenance. */
|
|
123
|
+
onAgentDirectionsDelivered?: (envelopeIds: string[]) => void;
|
|
113
124
|
/** Restore steer items whose model-facing content could not be prepared. */
|
|
114
125
|
restoreSteer?: (items: SteerItem[]) => void;
|
|
115
126
|
/** Build model-facing content for a queued steer item, including attachments. */
|
|
@@ -125,19 +136,24 @@ export interface TurnLoopDeps {
|
|
|
125
136
|
/** Make tools launched after an injected steer attribute side effects to that steer. */
|
|
126
137
|
setOriginClientMessageId?: (clientMessageId: string | undefined) => void;
|
|
127
138
|
/**
|
|
128
|
-
*
|
|
129
|
-
* in-flight goal-stop hook, so
|
|
130
|
-
* current run AND
|
|
139
|
+
* Terminally clear this session's persisted goalLifecycle and drop
|
|
140
|
+
* the in-flight goal-stop hook, so complete_goal/cancel_goal both stop the
|
|
141
|
+
* current run AND prevent the goal from re-inheriting on the next bare send.
|
|
131
142
|
* Wired by Engine (delegates to Engine.clearGoal for the running session);
|
|
132
143
|
* absent in standalone tests (turn loop tolerates undefined — the local
|
|
133
144
|
* goalTracker short-circuit still stops the run).
|
|
134
145
|
*/
|
|
135
|
-
|
|
146
|
+
/** Return false when the durable transition failed; the loop must keep driving. */
|
|
147
|
+
clearPersistedGoal?: (reason: "completed" | "cancelled") => boolean | void;
|
|
136
148
|
/**
|
|
137
149
|
* Private Goal-judge evidence seam. Engine stores this snapshot in the
|
|
138
150
|
* built-in judge closure; it is never added to the public on_stop context.
|
|
139
151
|
*/
|
|
140
|
-
|
|
152
|
+
publishGoalJudgeContext?: (context: GoalJudgeRuntimeContext) => void;
|
|
153
|
+
/** Inspect a trusted tool's pending run yield without clearing it. */
|
|
154
|
+
peekToolRunYield?: () => import("../tool-system/context.js").ToolRunYieldReason | undefined;
|
|
155
|
+
/** Consume a trusted tool's request to yield until an async notification. */
|
|
156
|
+
consumeToolRunYield?: () => import("../tool-system/context.js").ToolRunYieldReason | undefined;
|
|
141
157
|
}
|
|
142
158
|
export interface TurnLoopResult {
|
|
143
159
|
text: string;
|
|
@@ -145,6 +161,10 @@ export interface TurnLoopResult {
|
|
|
145
161
|
messages: Message[];
|
|
146
162
|
/** Goal-specific forced terminal outcome; public TerminalReason stays stable. */
|
|
147
163
|
goalTermination?: GoalTerminationReason;
|
|
164
|
+
/** Stop-block round captured before the loop resets its per-approach counter. */
|
|
165
|
+
goalTerminationRound?: number;
|
|
166
|
+
/** Exceptional completed-run boundary; absent means an ordinary final answer. */
|
|
167
|
+
completionKind?: TurnCompletionKind;
|
|
148
168
|
}
|
|
149
169
|
/**
|
|
150
170
|
* 把一个 ToolResult 映射成发给 LLM 的 tool_result ContentBlock。
|
|
@@ -172,6 +192,10 @@ export declare class TurnLoop {
|
|
|
172
192
|
private readonly sensitiveToolResultRedactions;
|
|
173
193
|
private readonly pendingImageMessages;
|
|
174
194
|
private readonly volatileContextMessages;
|
|
195
|
+
/** Last outer-loop turn for which the model returned a complete response. */
|
|
196
|
+
private lastCompletedModelTurn;
|
|
197
|
+
/** Last model turn whose transcript/persistence boundary was finalized. */
|
|
198
|
+
private lastFinalizedTurn;
|
|
175
199
|
/**
|
|
176
200
|
* Consecutive on_stop blocks (Goal mode kept the agent going). Reset to 0
|
|
177
201
|
* on any unblocked completion. When it reaches config.maxStopBlocks the
|
|
@@ -191,6 +215,24 @@ export declare class TurnLoop {
|
|
|
191
215
|
* being re-emitted every turn while still within the approach threshold.
|
|
192
216
|
*/
|
|
193
217
|
private approachAnnounced;
|
|
218
|
+
/** Latest coalesced Goal edit/resume reminder, consumed at a safe point. */
|
|
219
|
+
private pendingGoalControlMessage;
|
|
220
|
+
/** Pause/delete requested while a Goal run is in flight. The current
|
|
221
|
+
* model/tool step is allowed to settle, then the loop stops before starting
|
|
222
|
+
* another model request. */
|
|
223
|
+
private goalControlStopRequested;
|
|
224
|
+
/** Auxiliary tool-summary calls started by this loop and revoked by Goal pause/delete. */
|
|
225
|
+
private readonly activeToolSummaryControllers;
|
|
226
|
+
/**
|
|
227
|
+
* Apply a user goal edit/pause/resume to the live loop. Passing undefined
|
|
228
|
+
* pauses goal-driving at the next step boundary; a goal value resumes it.
|
|
229
|
+
* Usage accumulated before an edit is retained, while a pause/resume starts
|
|
230
|
+
* a fresh run-scoped budget window (matching a later persisted resume).
|
|
231
|
+
*/
|
|
232
|
+
updateGoal(goal: GoalConfig | undefined, controlMessage?: string, limits?: {
|
|
233
|
+
maxTurns?: number;
|
|
234
|
+
maxStopBlocks?: number;
|
|
235
|
+
}): void;
|
|
194
236
|
/**
|
|
195
237
|
* Extend the in-flight run's limits (TODO 3.1 — 运行中续轮/加预算). Mutates
|
|
196
238
|
* the maxTurns ceiling, the maxStopBlocks cap, and/or the live goal budgets;
|
|
@@ -204,6 +246,13 @@ export declare class TurnLoop {
|
|
|
204
246
|
timeBudgetMs?: number;
|
|
205
247
|
maxStopBlocks: number;
|
|
206
248
|
};
|
|
249
|
+
/**
|
|
250
|
+
* Private Goal-judge accounting seam. Judge calls bypass ModelFacade, so the
|
|
251
|
+
* Engine forwards their provider usage here while the run-scoped tracker is
|
|
252
|
+
* live. The returned reason lets the hook suppress verdict side effects when
|
|
253
|
+
* this very request crossed a hard token/time budget.
|
|
254
|
+
*/
|
|
255
|
+
recordGoalJudgeUsage(usage: TokenUsage | undefined): Extract<GoalTerminationReason, "token_budget_exhausted" | "time_budget_exhausted"> | undefined;
|
|
207
256
|
/**
|
|
208
257
|
* Goal mode only: if the run is nearing EITHER stop ceiling (maxTurns or
|
|
209
258
|
* maxStopBlocks) and we haven't announced it yet, emit one approaching_limit
|
|
@@ -229,6 +278,13 @@ export declare class TurnLoop {
|
|
|
229
278
|
* for one Stop still writes a single marker.
|
|
230
279
|
*/
|
|
231
280
|
private markStopped;
|
|
281
|
+
/**
|
|
282
|
+
* Close one completed model turn exactly once. The transcript boundary must
|
|
283
|
+
* be durable before the Engine flushes usage, heartbeat, and turnCount via
|
|
284
|
+
* onTurnBoundary, so crash recovery never folds two assistant responses into
|
|
285
|
+
* the same transcript turn or observes state ahead of the transcript.
|
|
286
|
+
*/
|
|
287
|
+
private finalizeModelTurn;
|
|
232
288
|
private prepareMessagesForModel;
|
|
233
289
|
private stripVolatileContextMessages;
|
|
234
290
|
private appendVolatileContextMessages;
|
|
@@ -259,6 +315,7 @@ export declare class TurnLoop {
|
|
|
259
315
|
private callModelWithFallback;
|
|
260
316
|
get currentTurn(): number;
|
|
261
317
|
private consumeQueuedSteer;
|
|
318
|
+
private consumeQueuedAgentDirections;
|
|
262
319
|
/**
|
|
263
320
|
* Generate synthetic error tool_results for any dangling tool_use blocks
|
|
264
321
|
* that never received results (e.g. because the API call failed).
|