@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,22 @@
|
|
|
1
|
+
/** A host-authorized project Session that may receive a model-sent message. */
|
|
2
|
+
export interface SessionMessageTarget {
|
|
3
|
+
sessionId: string;
|
|
4
|
+
title: string;
|
|
5
|
+
workspaceRoot: string;
|
|
6
|
+
workspaceProfile?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface RouteSessionMessageInput {
|
|
9
|
+
sourceSessionId: string;
|
|
10
|
+
target: SessionMessageTarget;
|
|
11
|
+
message: string;
|
|
12
|
+
/** Full same-project catalog so the target can send a later message onward. */
|
|
13
|
+
catalog: readonly SessionMessageTarget[];
|
|
14
|
+
}
|
|
15
|
+
export type SessionMessageRouter = (input: RouteSessionMessageInput) => Promise<void>;
|
|
16
|
+
export interface SessionMessageToolService {
|
|
17
|
+
targets: readonly SessionMessageTarget[];
|
|
18
|
+
send(input: {
|
|
19
|
+
targetSessionId: string;
|
|
20
|
+
message: string;
|
|
21
|
+
}): Promise<SessionMessageTarget>;
|
|
22
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* toMessages() derives Message[] from events for sending to LLM.
|
|
4
4
|
*/
|
|
5
5
|
import type { TranscriptEvent, TranscriptEventType, Message, ContentBlock } from "../types.js";
|
|
6
|
+
import type { EngineResult } from "../engine/types.js";
|
|
6
7
|
type TranscriptWriter = (filePath: string, data: string, encoding: "utf-8") => void;
|
|
7
8
|
type ParsedEvents = {
|
|
8
9
|
events: TranscriptEvent[];
|
|
@@ -17,6 +18,31 @@ export interface TranscriptFlushFailure {
|
|
|
17
18
|
recoverable: false;
|
|
18
19
|
filePath: string;
|
|
19
20
|
}
|
|
21
|
+
export interface ContextEventRange {
|
|
22
|
+
fromEventId: string;
|
|
23
|
+
toEventId: string;
|
|
24
|
+
}
|
|
25
|
+
export interface SelectedContextRange {
|
|
26
|
+
events: TranscriptEvent[];
|
|
27
|
+
messages: Message[];
|
|
28
|
+
sourceEventCount: number;
|
|
29
|
+
}
|
|
30
|
+
export type SummaryAppendMetadata = {
|
|
31
|
+
fromTurn: number;
|
|
32
|
+
toTurn: number;
|
|
33
|
+
eventCount: number;
|
|
34
|
+
} | {
|
|
35
|
+
trigger: "context_transfer";
|
|
36
|
+
sourceRange: {
|
|
37
|
+
sessionId: string;
|
|
38
|
+
fromEventId: string;
|
|
39
|
+
toEventId: string;
|
|
40
|
+
};
|
|
41
|
+
sourceEventCount: number;
|
|
42
|
+
estimatedTokens: number;
|
|
43
|
+
summaryVersion: number;
|
|
44
|
+
summaryHash: string;
|
|
45
|
+
};
|
|
20
46
|
export declare class Transcript {
|
|
21
47
|
private events;
|
|
22
48
|
private filePath;
|
|
@@ -41,8 +67,21 @@ export declare class Transcript {
|
|
|
41
67
|
injected?: boolean;
|
|
42
68
|
steerId?: string;
|
|
43
69
|
clientMessageId?: string;
|
|
70
|
+
displayText?: string;
|
|
71
|
+
authority?: "user" | "agent" | "system" | "policy";
|
|
72
|
+
source?: "agent-direction" | "goal-control";
|
|
73
|
+
envelopeIds?: string[];
|
|
74
|
+
correlationIds?: string[];
|
|
44
75
|
}): TranscriptEvent;
|
|
45
76
|
hasClientMessageId(clientMessageId: string): boolean;
|
|
77
|
+
/**
|
|
78
|
+
* Persist the exact response associated with one idempotent submit. The
|
|
79
|
+
* receipt stays outside toMessages(), so replay support does not change the
|
|
80
|
+
* model's conversation history.
|
|
81
|
+
*/
|
|
82
|
+
appendRunResult(clientMessageId: string, result: EngineResult): TranscriptEvent;
|
|
83
|
+
/** Return the newest valid durable response for an idempotent submit. */
|
|
84
|
+
findRunResultByClientMessageId(clientMessageId: string): EngineResult | undefined;
|
|
46
85
|
appendToolUse(toolName: string, toolCallId: string, args: Record<string, unknown>): TranscriptEvent;
|
|
47
86
|
appendToolResult(toolCallId: string, toolName: string, result?: string, error?: string, contentBlocks?: ContentBlock[]): TranscriptEvent;
|
|
48
87
|
/** Anchor for a spawned sub-agent (see TranscriptEventType "subagent").
|
|
@@ -58,11 +97,7 @@ export declare class Transcript {
|
|
|
58
97
|
* can hit more than one abort return for a single Stop).
|
|
59
98
|
*/
|
|
60
99
|
appendTurnStopped(): TranscriptEvent | undefined;
|
|
61
|
-
appendSummary(summary: string,
|
|
62
|
-
fromTurn: number;
|
|
63
|
-
toTurn: number;
|
|
64
|
-
eventCount: number;
|
|
65
|
-
}): TranscriptEvent;
|
|
100
|
+
appendSummary(summary: string, metadata: SummaryAppendMetadata): TranscriptEvent;
|
|
66
101
|
appendError(error: string, details?: Record<string, unknown>): TranscriptEvent;
|
|
67
102
|
/**
|
|
68
103
|
* Derive Message[] from transcript events for sending to the LLM.
|
|
@@ -91,6 +126,12 @@ export declare class Transcript {
|
|
|
91
126
|
role: string;
|
|
92
127
|
content: string | ContentBlock[];
|
|
93
128
|
}>;
|
|
129
|
+
/**
|
|
130
|
+
* Select one inclusive, stable event-id range and project only LLM-context
|
|
131
|
+
* events from it. Audit/UI events remain part of sourceEventCount but never
|
|
132
|
+
* enter the package prompt.
|
|
133
|
+
*/
|
|
134
|
+
static selectContextRange(events: readonly TranscriptEvent[], range: ContextEventRange): SelectedContextRange;
|
|
94
135
|
static loadFromFile(filePath: string): Transcript;
|
|
95
136
|
}
|
|
96
137
|
export {};
|
|
@@ -6,6 +6,13 @@ import { appendFileSync, readFileSync, existsSync, mkdirSync, writeFileSync } fr
|
|
|
6
6
|
import { dirname } from "node:path";
|
|
7
7
|
import { nanoid } from "nanoid";
|
|
8
8
|
import { logger } from "../logging/logger.js";
|
|
9
|
+
const CONTEXT_EVENT_TYPES = new Set([
|
|
10
|
+
"message",
|
|
11
|
+
"tool_use",
|
|
12
|
+
"tool_result",
|
|
13
|
+
"summary",
|
|
14
|
+
"context_transfer",
|
|
15
|
+
]);
|
|
9
16
|
export class Transcript {
|
|
10
17
|
events = [];
|
|
11
18
|
filePath;
|
|
@@ -64,11 +71,37 @@ export class Transcript {
|
|
|
64
71
|
...(opts?.injected ? { injected: true } : {}),
|
|
65
72
|
...(opts?.steerId ? { steerId: opts.steerId } : {}),
|
|
66
73
|
...(opts?.clientMessageId ? { clientMessageId: opts.clientMessageId } : {}),
|
|
74
|
+
...(opts?.displayText ? { displayText: opts.displayText } : {}),
|
|
75
|
+
...(opts?.authority ? { authority: opts.authority } : {}),
|
|
76
|
+
...(opts?.source ? { source: opts.source } : {}),
|
|
77
|
+
...(opts?.envelopeIds ? { envelopeIds: opts.envelopeIds } : {}),
|
|
78
|
+
...(opts?.correlationIds ? { correlationIds: opts.correlationIds } : {}),
|
|
67
79
|
});
|
|
68
80
|
}
|
|
69
81
|
hasClientMessageId(clientMessageId) {
|
|
70
82
|
return this.findMessageByClientId(clientMessageId) !== undefined;
|
|
71
83
|
}
|
|
84
|
+
/**
|
|
85
|
+
* Persist the exact response associated with one idempotent submit. The
|
|
86
|
+
* receipt stays outside toMessages(), so replay support does not change the
|
|
87
|
+
* model's conversation history.
|
|
88
|
+
*/
|
|
89
|
+
appendRunResult(clientMessageId, result) {
|
|
90
|
+
return this.append("run_result", { clientMessageId, result });
|
|
91
|
+
}
|
|
92
|
+
/** Return the newest valid durable response for an idempotent submit. */
|
|
93
|
+
findRunResultByClientMessageId(clientMessageId) {
|
|
94
|
+
for (let index = this.events.length - 1; index >= 0; index -= 1) {
|
|
95
|
+
const event = this.events[index];
|
|
96
|
+
if (event.type !== "run_result" || event.data.clientMessageId !== clientMessageId)
|
|
97
|
+
continue;
|
|
98
|
+
const result = event.data.result;
|
|
99
|
+
if (!isEngineResultReceipt(result))
|
|
100
|
+
return undefined;
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
72
105
|
appendToolUse(toolName, toolCallId, args) {
|
|
73
106
|
return this.append("tool_use", { toolName, toolCallId, args });
|
|
74
107
|
}
|
|
@@ -104,11 +137,15 @@ export class Transcript {
|
|
|
104
137
|
return undefined;
|
|
105
138
|
return this.append("turn_stopped", {});
|
|
106
139
|
}
|
|
107
|
-
appendSummary(summary,
|
|
140
|
+
appendSummary(summary, metadata) {
|
|
141
|
+
if ("trigger" in metadata) {
|
|
142
|
+
const { trigger: _trigger, ...provenance } = metadata;
|
|
143
|
+
return this.append("context_transfer", { summary, ...provenance });
|
|
144
|
+
}
|
|
108
145
|
return this.append("summary", {
|
|
109
146
|
summary,
|
|
110
147
|
trigger: "auto",
|
|
111
|
-
compactedRange,
|
|
148
|
+
compactedRange: metadata,
|
|
112
149
|
preservedSegment: {
|
|
113
150
|
headEventId: this.events[0]?.id,
|
|
114
151
|
tailEventId: this.events[this.events.length - 1]?.id,
|
|
@@ -166,7 +203,17 @@ export class Transcript {
|
|
|
166
203
|
});
|
|
167
204
|
break;
|
|
168
205
|
}
|
|
169
|
-
|
|
206
|
+
case "context_transfer": {
|
|
207
|
+
const { summary, handoffId } = event.data;
|
|
208
|
+
messages.push({
|
|
209
|
+
role: "user",
|
|
210
|
+
content: handoffId
|
|
211
|
+
? `<system-reminder>Session handoff received:\n${summary}</system-reminder>`
|
|
212
|
+
: `<system-reminder>Background context transferred from a selected conversation range:\n${summary}</system-reminder>`,
|
|
213
|
+
});
|
|
214
|
+
break;
|
|
215
|
+
}
|
|
216
|
+
// turn_boundary, run_result, session_meta, file_history, plan_operation, error
|
|
170
217
|
// are not included in LLM messages
|
|
171
218
|
}
|
|
172
219
|
}
|
|
@@ -338,10 +385,51 @@ export class Transcript {
|
|
|
338
385
|
});
|
|
339
386
|
break;
|
|
340
387
|
}
|
|
388
|
+
case "context_transfer": {
|
|
389
|
+
const { summary, handoffId } = event.data;
|
|
390
|
+
messages.push({
|
|
391
|
+
role: "user",
|
|
392
|
+
content: handoffId
|
|
393
|
+
? `<system-reminder>Session handoff received:\n${summary}</system-reminder>`
|
|
394
|
+
: `<system-reminder>Background context transferred from a selected conversation range:\n${summary}</system-reminder>`,
|
|
395
|
+
});
|
|
396
|
+
break;
|
|
397
|
+
}
|
|
341
398
|
}
|
|
342
399
|
}
|
|
343
400
|
return messages;
|
|
344
401
|
}
|
|
402
|
+
/**
|
|
403
|
+
* Select one inclusive, stable event-id range and project only LLM-context
|
|
404
|
+
* events from it. Audit/UI events remain part of sourceEventCount but never
|
|
405
|
+
* enter the package prompt.
|
|
406
|
+
*/
|
|
407
|
+
static selectContextRange(events, range) {
|
|
408
|
+
const fromMatches = events
|
|
409
|
+
.map((event, index) => (event.id === range.fromEventId ? index : -1))
|
|
410
|
+
.filter((index) => index >= 0);
|
|
411
|
+
const toMatches = events
|
|
412
|
+
.map((event, index) => (event.id === range.toEventId ? index : -1))
|
|
413
|
+
.filter((index) => index >= 0);
|
|
414
|
+
if (fromMatches.length !== 1 || toMatches.length !== 1) {
|
|
415
|
+
throw new Error("Context range endpoints must each identify exactly one source event");
|
|
416
|
+
}
|
|
417
|
+
const fromIndex = fromMatches[0];
|
|
418
|
+
const toIndex = toMatches[0];
|
|
419
|
+
if (fromIndex > toIndex)
|
|
420
|
+
throw new Error("Context range endpoints are out of order");
|
|
421
|
+
const frozen = structuredClone(events.slice(fromIndex, toIndex + 1));
|
|
422
|
+
if (frozen[0]?.type === "session_meta" || frozen.at(-1)?.type === "session_meta") {
|
|
423
|
+
throw new Error("Context range cannot use session metadata as a boundary");
|
|
424
|
+
}
|
|
425
|
+
const selected = frozen.filter((event) => CONTEXT_EVENT_TYPES.has(event.type));
|
|
426
|
+
validateSelectedToolPairs(selected);
|
|
427
|
+
return {
|
|
428
|
+
events: selected,
|
|
429
|
+
messages: Transcript.eventsToMessages(selected),
|
|
430
|
+
sourceEventCount: frozen.length,
|
|
431
|
+
};
|
|
432
|
+
}
|
|
345
433
|
static loadFromFile(filePath) {
|
|
346
434
|
const transcript = new Transcript(filePath);
|
|
347
435
|
if (!existsSync(filePath))
|
|
@@ -365,3 +453,71 @@ export class Transcript {
|
|
|
365
453
|
return transcript;
|
|
366
454
|
}
|
|
367
455
|
}
|
|
456
|
+
function isEngineResultReceipt(value) {
|
|
457
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
458
|
+
return false;
|
|
459
|
+
const result = value;
|
|
460
|
+
const usage = result.usage;
|
|
461
|
+
return (typeof result.text === "string" &&
|
|
462
|
+
typeof result.reason === "string" &&
|
|
463
|
+
typeof result.sessionId === "string" &&
|
|
464
|
+
typeof result.turnCount === "number" &&
|
|
465
|
+
Number.isSafeInteger(result.turnCount) &&
|
|
466
|
+
Boolean(usage) &&
|
|
467
|
+
typeof usage?.promptTokens === "number" &&
|
|
468
|
+
typeof usage?.completionTokens === "number" &&
|
|
469
|
+
typeof usage?.totalTokens === "number");
|
|
470
|
+
}
|
|
471
|
+
function validateSelectedToolPairs(events) {
|
|
472
|
+
const providerUses = [];
|
|
473
|
+
const metadataUses = [];
|
|
474
|
+
const results = [];
|
|
475
|
+
for (const event of events) {
|
|
476
|
+
if (event.type === "message") {
|
|
477
|
+
const content = event.data.content;
|
|
478
|
+
if (!Array.isArray(content))
|
|
479
|
+
continue;
|
|
480
|
+
for (const block of content) {
|
|
481
|
+
if (block.type === "tool_use" && typeof block.id === "string")
|
|
482
|
+
providerUses.push(block.id);
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
else if (event.type === "tool_use") {
|
|
486
|
+
if (typeof event.data.toolCallId === "string")
|
|
487
|
+
metadataUses.push(event.data.toolCallId);
|
|
488
|
+
}
|
|
489
|
+
else if (event.type === "tool_result") {
|
|
490
|
+
if (typeof event.data.toolCallId === "string")
|
|
491
|
+
results.push(event.data.toolCallId);
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
if (new Set(providerUses).size !== providerUses.length) {
|
|
495
|
+
throw new Error("Context range contains duplicate provider tool metadata");
|
|
496
|
+
}
|
|
497
|
+
if (new Set(metadataUses).size !== metadataUses.length) {
|
|
498
|
+
throw new Error("Context range contains duplicate tool metadata");
|
|
499
|
+
}
|
|
500
|
+
if (new Set(results).size !== results.length) {
|
|
501
|
+
throw new Error("Context range contains duplicate tool results");
|
|
502
|
+
}
|
|
503
|
+
if (providerUses.length !== metadataUses.length ||
|
|
504
|
+
providerUses.some((id, index) => metadataUses[index] !== id)) {
|
|
505
|
+
throw new Error("Context range has orphaned or mismatched tool metadata");
|
|
506
|
+
}
|
|
507
|
+
const pending = new Set();
|
|
508
|
+
for (const event of events) {
|
|
509
|
+
if (event.type === "tool_use") {
|
|
510
|
+
const id = event.data.toolCallId;
|
|
511
|
+
if (typeof id === "string")
|
|
512
|
+
pending.add(id);
|
|
513
|
+
}
|
|
514
|
+
else if (event.type === "tool_result") {
|
|
515
|
+
const id = event.data.toolCallId;
|
|
516
|
+
if (typeof id !== "string" || !pending.delete(id)) {
|
|
517
|
+
throw new Error("Context range contains an orphaned or out-of-order tool result");
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
if (pending.size > 0)
|
|
522
|
+
throw new Error("Context range ends with an unfinished tool round");
|
|
523
|
+
}
|
|
@@ -43,6 +43,46 @@ export declare const FEATURE_FLAGS: {
|
|
|
43
43
|
readonly default: false;
|
|
44
44
|
readonly description: "Capture full command stdout/stderr snapshots";
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* Run a session on an EXTERNAL Agent Runtime (Codex / Claude Code) instead of
|
|
48
|
+
* the native Engine.
|
|
49
|
+
*
|
|
50
|
+
* Default ON, which reverses the original §20 decision. The reasoning behind
|
|
51
|
+
* "off" was that the native path must not depend on an external binary — that
|
|
52
|
+
* still holds, and is now enforced by a better mechanism than a flag: the
|
|
53
|
+
* picker only lists a runtime whose binary is actually installed
|
|
54
|
+
* (external-runtime-availability.ts), and every non-prefixed model key still
|
|
55
|
+
* routes to the native Engine. A machine without `codex` sees exactly what it
|
|
56
|
+
* saw before.
|
|
57
|
+
*
|
|
58
|
+
* What the flag actually did in practice was hide the feature from everyone,
|
|
59
|
+
* including the people who installed Codex on purpose: the entries never
|
|
60
|
+
* appeared, with no hint that a setting was responsible. An opt-in nobody can
|
|
61
|
+
* discover is indistinguishable from a missing feature.
|
|
62
|
+
*
|
|
63
|
+
* Turning it off remains the escape hatch — it hides the entries outright.
|
|
64
|
+
*/
|
|
65
|
+
readonly external_agent_runtime: {
|
|
66
|
+
readonly default: true;
|
|
67
|
+
readonly description: "Allow a session to run on Codex or Claude Code instead of the native engine";
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Expose CodeShell Host Tools to an external runtime. Separate from the flag
|
|
71
|
+
* above so the runtime can be trialled with NO tool surface at all — §20 asks
|
|
72
|
+
* for exactly that split, because the tool bridge is the part that carries the
|
|
73
|
+
* security burden.
|
|
74
|
+
*
|
|
75
|
+
* Also default ON now, for a blunt reason: with it off the runtime has an
|
|
76
|
+
* EMPTY tool surface — no skills, no memory, no file access — which is not a
|
|
77
|
+
* usable Agent Runtime, so shipping that as the default just means the
|
|
78
|
+
* feature appears broken. Every exposed tool still executes through
|
|
79
|
+
* ToolExecutor, so the user's permission rules and the approval dialog apply
|
|
80
|
+
* exactly as they do on the native path.
|
|
81
|
+
*/
|
|
82
|
+
readonly external_host_tools: {
|
|
83
|
+
readonly default: true;
|
|
84
|
+
readonly description: "Expose allowlisted CodeShell tools to an external Agent Runtime";
|
|
85
|
+
};
|
|
46
86
|
};
|
|
47
87
|
export type FeatureFlagName = keyof typeof FEATURE_FLAGS;
|
|
48
88
|
/** The settings overlay shape: a partial map of known flags → boolean. */
|
|
@@ -28,6 +28,46 @@ export const FEATURE_FLAGS = {
|
|
|
28
28
|
undo: { default: false, description: "Per-session file undo (/undo)" },
|
|
29
29
|
/** Shell snapshot: capture full stdout/stderr of commands. */
|
|
30
30
|
shell_snapshot: { default: false, description: "Capture full command stdout/stderr snapshots" },
|
|
31
|
+
/**
|
|
32
|
+
* Run a session on an EXTERNAL Agent Runtime (Codex / Claude Code) instead of
|
|
33
|
+
* the native Engine.
|
|
34
|
+
*
|
|
35
|
+
* Default ON, which reverses the original §20 decision. The reasoning behind
|
|
36
|
+
* "off" was that the native path must not depend on an external binary — that
|
|
37
|
+
* still holds, and is now enforced by a better mechanism than a flag: the
|
|
38
|
+
* picker only lists a runtime whose binary is actually installed
|
|
39
|
+
* (external-runtime-availability.ts), and every non-prefixed model key still
|
|
40
|
+
* routes to the native Engine. A machine without `codex` sees exactly what it
|
|
41
|
+
* saw before.
|
|
42
|
+
*
|
|
43
|
+
* What the flag actually did in practice was hide the feature from everyone,
|
|
44
|
+
* including the people who installed Codex on purpose: the entries never
|
|
45
|
+
* appeared, with no hint that a setting was responsible. An opt-in nobody can
|
|
46
|
+
* discover is indistinguishable from a missing feature.
|
|
47
|
+
*
|
|
48
|
+
* Turning it off remains the escape hatch — it hides the entries outright.
|
|
49
|
+
*/
|
|
50
|
+
external_agent_runtime: {
|
|
51
|
+
default: true,
|
|
52
|
+
description: "Allow a session to run on Codex or Claude Code instead of the native engine",
|
|
53
|
+
},
|
|
54
|
+
/**
|
|
55
|
+
* Expose CodeShell Host Tools to an external runtime. Separate from the flag
|
|
56
|
+
* above so the runtime can be trialled with NO tool surface at all — §20 asks
|
|
57
|
+
* for exactly that split, because the tool bridge is the part that carries the
|
|
58
|
+
* security burden.
|
|
59
|
+
*
|
|
60
|
+
* Also default ON now, for a blunt reason: with it off the runtime has an
|
|
61
|
+
* EMPTY tool surface — no skills, no memory, no file access — which is not a
|
|
62
|
+
* usable Agent Runtime, so shipping that as the default just means the
|
|
63
|
+
* feature appears broken. Every exposed tool still executes through
|
|
64
|
+
* ToolExecutor, so the user's permission rules and the approval dialog apply
|
|
65
|
+
* exactly as they do on the native path.
|
|
66
|
+
*/
|
|
67
|
+
external_host_tools: {
|
|
68
|
+
default: true,
|
|
69
|
+
description: "Expose allowlisted CodeShell tools to an external Agent Runtime",
|
|
70
|
+
},
|
|
31
71
|
};
|
|
32
72
|
/** All known flag names, for iteration (e.g. the /features listing). */
|
|
33
73
|
export function featureFlagNames() {
|
|
@@ -71,6 +71,15 @@ export declare class SettingsManager {
|
|
|
71
71
|
* host (desktop) passes the real trust decision from its trust-store.
|
|
72
72
|
*/
|
|
73
73
|
private readonly projectTrusted;
|
|
74
|
+
/**
|
|
75
|
+
* Override the user-level config directory (the `~/.code-shell` layer:
|
|
76
|
+
* settings.managed.json / settings.json live directly inside it). When
|
|
77
|
+
* absent the manager keeps today's behavior — `join(userHome(),
|
|
78
|
+
* ".code-shell")` resolved per call so `$HOME` overrides still work.
|
|
79
|
+
* Injection point for identity-scoped server deployments (a per-user
|
|
80
|
+
* worker passes `<dataRoot>` here instead of relocating `$HOME`).
|
|
81
|
+
*/
|
|
82
|
+
private readonly userConfigDirOverride?;
|
|
74
83
|
private sources;
|
|
75
84
|
private merged;
|
|
76
85
|
constructor(cwd?: string, scope?: SettingsScope,
|
|
@@ -86,7 +95,18 @@ export declare class SettingsManager {
|
|
|
86
95
|
* Defaults to `true` so existing embedders/tests keep their behavior; the
|
|
87
96
|
* host (desktop) passes the real trust decision from its trust-store.
|
|
88
97
|
*/
|
|
89
|
-
projectTrusted?: boolean
|
|
98
|
+
projectTrusted?: boolean,
|
|
99
|
+
/**
|
|
100
|
+
* Override the user-level config directory (the `~/.code-shell` layer:
|
|
101
|
+
* settings.managed.json / settings.json live directly inside it). When
|
|
102
|
+
* absent the manager keeps today's behavior — `join(userHome(),
|
|
103
|
+
* ".code-shell")` resolved per call so `$HOME` overrides still work.
|
|
104
|
+
* Injection point for identity-scoped server deployments (a per-user
|
|
105
|
+
* worker passes `<dataRoot>` here instead of relocating `$HOME`).
|
|
106
|
+
*/
|
|
107
|
+
userConfigDirOverride?: string | undefined);
|
|
108
|
+
/** User-layer config dir: explicit override wins, else `~/.code-shell`. */
|
|
109
|
+
private userConfigDir;
|
|
90
110
|
/**
|
|
91
111
|
* Load settings from all sources.
|
|
92
112
|
*/
|
|
@@ -143,6 +163,24 @@ export declare class SettingsManager {
|
|
|
143
163
|
private projectSettingsPath;
|
|
144
164
|
private readJsonObject;
|
|
145
165
|
private atomicWriteJson;
|
|
166
|
+
/**
|
|
167
|
+
* Read-modify-write a settings file under a cross-process lock.
|
|
168
|
+
*
|
|
169
|
+
* Atomic rename alone only prevents a half-written file; it does NOT prevent a
|
|
170
|
+
* lost update. Every writer here used to read its own snapshot outside any
|
|
171
|
+
* lock, so two processes changing DIFFERENT keys still clobbered each other:
|
|
172
|
+
* 48 concurrent writers each setting a distinct key left only 17 keys on disk.
|
|
173
|
+
*
|
|
174
|
+
* Real multi-writer paths, not a theoretical concern: the desktop settings
|
|
175
|
+
* page, the Agent `Config` tool, an automation worker, the TUI and a second
|
|
176
|
+
* desktop instance all write the same files. The desktop settings service
|
|
177
|
+
* already locked correctly; this brings Core's own writers onto the same
|
|
178
|
+
* protocol so they interlock rather than race past one another.
|
|
179
|
+
*
|
|
180
|
+
* `mutate` receives the CURRENT on-disk object (re-read inside the lock) and
|
|
181
|
+
* mutates it in place; returning false skips the write.
|
|
182
|
+
*/
|
|
183
|
+
private mutateSettingsFile;
|
|
146
184
|
private loadJsonFile;
|
|
147
185
|
private deepMerge;
|
|
148
186
|
}
|