@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
package/dist/types.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Core type definitions for the code-shell orchestration framework.
|
|
3
3
|
*/
|
|
4
|
-
import type { GoalConfig, GoalTerminal } from "./
|
|
4
|
+
import type { GoalConfig, GoalLifecycleV1, GoalTerminal } from "./goal/lifecycle.js";
|
|
5
5
|
export interface ContentBlock {
|
|
6
6
|
type: "text" | "tool_use" | "tool_result" | "image" | "reasoning";
|
|
7
7
|
text?: string;
|
|
@@ -33,16 +33,22 @@ export interface ToolDefinition {
|
|
|
33
33
|
name: string;
|
|
34
34
|
description: string;
|
|
35
35
|
inputSchema: Record<string, unknown>;
|
|
36
|
+
/** Omit this tool's result body from retained Goal-judge evidence. */
|
|
37
|
+
sensitiveResult?: boolean;
|
|
36
38
|
}
|
|
37
39
|
export interface ToolCall {
|
|
38
40
|
id: string;
|
|
39
41
|
toolName: string;
|
|
40
42
|
serverName?: string;
|
|
41
43
|
args: Record<string, unknown>;
|
|
44
|
+
/** Host-projected UI visibility. Does not affect execution or transcript retention. */
|
|
45
|
+
uiVisibility?: "hidden" | "milestones" | "full";
|
|
42
46
|
}
|
|
43
47
|
export interface ToolResult {
|
|
44
48
|
id: string;
|
|
45
49
|
toolName: string;
|
|
50
|
+
/** Host-projected UI visibility. Does not affect the model-facing result. */
|
|
51
|
+
uiVisibility?: "hidden" | "milestones" | "full";
|
|
46
52
|
/**
|
|
47
53
|
* Sensitive tool results keep `result` as the model-facing value for the
|
|
48
54
|
* current model round only. Persisted/displayed/streamed observers must use
|
|
@@ -86,25 +92,27 @@ export type ToolPathPolicyOperation = "read" | "write" | {
|
|
|
86
92
|
/** Fallback when the argument is absent or does not match either list. */
|
|
87
93
|
default: "read" | "write";
|
|
88
94
|
};
|
|
89
|
-
export
|
|
95
|
+
export interface ToolPathPolicy {
|
|
90
96
|
kind: "arg";
|
|
91
97
|
/** Argument containing a file or directory path. */
|
|
92
98
|
arg: string;
|
|
93
99
|
operation: ToolPathPolicyOperation;
|
|
94
100
|
/** Use ctx.cwd when the argument is omitted. Useful for Glob/Grep roots. */
|
|
95
101
|
defaultToCwd?: boolean;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}
|
|
102
|
+
}
|
|
103
|
+
/** Capability-owned resolver for compound inputs that reference multiple paths. */
|
|
104
|
+
export interface ToolPathResolver {
|
|
105
|
+
operation: "read" | "write";
|
|
106
|
+
resolve(args: Record<string, unknown>, cwd: string): readonly string[];
|
|
107
|
+
}
|
|
102
108
|
export interface RegisteredTool {
|
|
103
109
|
name: string;
|
|
104
110
|
description: string;
|
|
105
111
|
inputSchema: Record<string, unknown>;
|
|
106
112
|
source: ToolSource;
|
|
107
113
|
serverName?: string;
|
|
114
|
+
/** Original, unprefixed MCP tool name used by per-server allow/deny policy. */
|
|
115
|
+
mcpToolName?: string;
|
|
108
116
|
/**
|
|
109
117
|
* Declarative UI/metadata hint for hosts, docs, and capability listings.
|
|
110
118
|
* It is not an execution-policy input: PermissionClassifier does not read
|
|
@@ -114,6 +122,10 @@ export interface RegisteredTool {
|
|
|
114
122
|
permissionDefault: PermissionDecision;
|
|
115
123
|
isConcurrencySafe?: boolean;
|
|
116
124
|
isReadOnly?: boolean;
|
|
125
|
+
/** Used when file targets cannot be described as one direct schema argument. */
|
|
126
|
+
pathResolver?: ToolPathResolver;
|
|
127
|
+
/** Declaratively marks result bodies as sensitive for retained Goal evidence. */
|
|
128
|
+
sensitiveResult?: boolean;
|
|
117
129
|
/**
|
|
118
130
|
* Declarative file-path safety metadata. ToolExecutor enforces this before
|
|
119
131
|
* dispatching the tool, so file access cannot depend on each tool handler
|
|
@@ -133,7 +145,7 @@ export interface RegisteredTool {
|
|
|
133
145
|
*/
|
|
134
146
|
timeoutMs?: number;
|
|
135
147
|
}
|
|
136
|
-
export type TranscriptEventType = "message" | "tool_use" | "tool_result" | "summary" | "content_replace" | "file_history" | "plan_operation" | "session_meta" | "subagent" | "external_file_changes" | "turn_boundary" | "goal_progress" | "turn_stopped" | "error";
|
|
148
|
+
export type TranscriptEventType = "message" | "tool_use" | "tool_result" | "summary" | "context_transfer" | "content_replace" | "file_history" | "plan_operation" | "session_meta" | "subagent" | "external_file_changes" | "turn_boundary" | "run_result" | "goal_progress" | "turn_stopped" | "error";
|
|
137
149
|
export interface TranscriptEvent {
|
|
138
150
|
id: string;
|
|
139
151
|
type: TranscriptEventType;
|
|
@@ -150,10 +162,23 @@ export interface TranscriptEvent {
|
|
|
150
162
|
* error (`"model_error"`, `"prompt_too_long"`, ...).
|
|
151
163
|
*/
|
|
152
164
|
export type SessionStatus = "active" | "paused" | TerminalReason;
|
|
153
|
-
/**
|
|
154
|
-
|
|
155
|
-
|
|
165
|
+
/** Known first-party session origins. Hosts may contribute stable names of their own. */
|
|
166
|
+
export type BuiltinSessionOrigin = "desktop" | "tui" | "automation" | "subagent";
|
|
167
|
+
/**
|
|
168
|
+
* Which host/context created a session. This is intentionally open: core
|
|
169
|
+
* persists the provenance label but product hosts decide how to group/filter
|
|
170
|
+
* it, so extension packages never need to add a literal back into core.
|
|
171
|
+
*/
|
|
172
|
+
export type SessionOrigin = BuiltinSessionOrigin | (string & {});
|
|
173
|
+
/**
|
|
174
|
+
* Persisted session kind. "work" is the core default; extensions may own
|
|
175
|
+
* additional kinds (e.g. the pet extension's "pet") — the open string form
|
|
176
|
+
* keeps literal inference/autocomplete for "work" while allowing extension
|
|
177
|
+
* kinds without a core enum change.
|
|
178
|
+
*/
|
|
179
|
+
export type SessionKind = "work" | (string & {});
|
|
156
180
|
export interface SessionWorkspace {
|
|
181
|
+
/** Current execution root used when this session resumes. */
|
|
157
182
|
root: string;
|
|
158
183
|
kind: "main" | "worktree";
|
|
159
184
|
worktree?: {
|
|
@@ -171,10 +196,40 @@ export interface ContextUsageAnchor {
|
|
|
171
196
|
provider?: string;
|
|
172
197
|
model?: string;
|
|
173
198
|
}
|
|
199
|
+
/** Provenance for a user-visible session fork. Optional on legacy sessions. */
|
|
200
|
+
export interface SessionForkLineage {
|
|
201
|
+
sessionId: string;
|
|
202
|
+
mode: "full" | "summary";
|
|
203
|
+
fromEventId?: string;
|
|
204
|
+
throughEventId?: string;
|
|
205
|
+
sourceEventCount: number;
|
|
206
|
+
createdAt: number;
|
|
207
|
+
}
|
|
174
208
|
export interface SessionState {
|
|
175
209
|
sessionId: string;
|
|
210
|
+
/** Durable local classification. Missing on legacy state and normalized to `work`. */
|
|
211
|
+
kind?: SessionKind;
|
|
212
|
+
/** Durable per-session digital-human binding. It overrides the Workspace default profile. */
|
|
213
|
+
workspaceProfile?: string;
|
|
214
|
+
/**
|
|
215
|
+
* Standing brief for this Session, injected as system context on every run.
|
|
216
|
+
*
|
|
217
|
+
* Set when a team is summoned: the member's role, its teammates' Session ids
|
|
218
|
+
* and the lead's playbook. It used to be pre-filled into the composer instead,
|
|
219
|
+
* which read as if the *user* had typed a specification — and one stray edit or
|
|
220
|
+
* Enter lost it. This is configuration for the agent, so it belongs in the
|
|
221
|
+
* prompt, not the input box.
|
|
222
|
+
*/
|
|
223
|
+
sessionBrief?: string;
|
|
224
|
+
/**
|
|
225
|
+
* Monotonic whole-state revision used by SessionManager.saveState as a CAS
|
|
226
|
+
* token. Absent only on legacy state files; the first successful save
|
|
227
|
+
* upgrades them. Detached writers with an older revision are rejected.
|
|
228
|
+
*/
|
|
229
|
+
stateRevision?: number;
|
|
230
|
+
/** Legacy persisted main-project root. Kept byte-compatible in state.json. */
|
|
176
231
|
cwd: string;
|
|
177
|
-
/** Current
|
|
232
|
+
/** Current main/worktree execution pointer. Absent only on legacy state.json files. */
|
|
178
233
|
workspace?: SessionWorkspace;
|
|
179
234
|
startedAt: number;
|
|
180
235
|
model: string;
|
|
@@ -190,6 +245,11 @@ export interface SessionState {
|
|
|
190
245
|
* before the next provider response.
|
|
191
246
|
*/
|
|
192
247
|
contextUsageAnchor?: ContextUsageAnchor;
|
|
248
|
+
/**
|
|
249
|
+
* Exceptional boundary for the most recently persisted completed run.
|
|
250
|
+
* Absent means `status === "completed"` is an ordinary final answer.
|
|
251
|
+
*/
|
|
252
|
+
lastCompletionKind?: TurnCompletionKind;
|
|
193
253
|
/**
|
|
194
254
|
* Monotonic prompt-cache counters for the whole session. These only increase
|
|
195
255
|
* from session start and are separate from the resettable tokenUsage window.
|
|
@@ -207,6 +267,20 @@ export interface SessionState {
|
|
|
207
267
|
* the last user message changed. Absent on legacy sessions → treated as 0.
|
|
208
268
|
*/
|
|
209
269
|
turnSeq?: number;
|
|
270
|
+
/**
|
|
271
|
+
* Inclusive transcript cursor for the last naturally completed conversation
|
|
272
|
+
* turn. It advances only when Engine.run finishes with reason="completed",
|
|
273
|
+
* so a side fork can exclude a newer user message already persisted by an
|
|
274
|
+
* in-flight run. Absent on legacy sessions and before the first completion.
|
|
275
|
+
*/
|
|
276
|
+
completedThroughEventId?: string;
|
|
277
|
+
/**
|
|
278
|
+
* Presence distinguishes sessions written by the completed-snapshot cursor
|
|
279
|
+
* implementation from legacy sessions. Version 1 with no cursor means the
|
|
280
|
+
* latest completion could not establish a durable snapshot (for example a
|
|
281
|
+
* transcript flush failure) and must fail closed instead of using the tail.
|
|
282
|
+
*/
|
|
283
|
+
completedSnapshotVersion?: 1;
|
|
210
284
|
invokedSkills: string[];
|
|
211
285
|
/**
|
|
212
286
|
* Owning parent session for a sub-agent run; `null` explicitly marks a
|
|
@@ -215,6 +289,20 @@ export interface SessionState {
|
|
|
215
289
|
* "key present && null" to tell a new top-level session apart from legacy.
|
|
216
290
|
*/
|
|
217
291
|
parentSessionId?: string | null;
|
|
292
|
+
/**
|
|
293
|
+
* Durable archival timestamp (ms). Absent = not archived. Generic session
|
|
294
|
+
* lifecycle marker: list surfaces filter it out by default. Set/cleared via
|
|
295
|
+
* SessionManager.setSessionArchived.
|
|
296
|
+
*/
|
|
297
|
+
archivedAt?: number;
|
|
298
|
+
/** User-fork lineage; deliberately separate from sub-agent ownership. */
|
|
299
|
+
forkedFrom?: SessionForkLineage;
|
|
300
|
+
/**
|
|
301
|
+
* Temporary child sessions are persisted only while their owning surface is
|
|
302
|
+
* alive. Ordinary resume/session pickers must omit them. Absent on legacy
|
|
303
|
+
* sessions; desktop also recognizes its historical `qchat-*` namespace.
|
|
304
|
+
*/
|
|
305
|
+
ephemeral?: boolean;
|
|
218
306
|
/**
|
|
219
307
|
* Which host/context created this session. Desktop disk-rebuild shows only
|
|
220
308
|
* `desktop` + `automation`. Absent on legacy sessions.
|
|
@@ -232,7 +320,10 @@ export interface SessionState {
|
|
|
232
320
|
title?: string;
|
|
233
321
|
/** Persisted cost tracking state (survives process restart). */
|
|
234
322
|
costState?: Record<string, unknown>;
|
|
323
|
+
/** Canonical persisted and runtime Goal state. */
|
|
324
|
+
goalLifecycle?: GoalLifecycleV1;
|
|
235
325
|
/**
|
|
326
|
+
* Legacy persisted input only. Runtime hydration removes this field and new writers omit it.
|
|
236
327
|
* Active persistent goal (CC `/goal` style). Set once, it survives across
|
|
237
328
|
* messages AND manual interrupts until the judge says it's met or the user
|
|
238
329
|
* clears it. Absent → no active goal. When a run supplies a new goal it
|
|
@@ -243,11 +334,14 @@ export interface SessionState {
|
|
|
243
334
|
*/
|
|
244
335
|
activeGoal?: GoalConfig;
|
|
245
336
|
/**
|
|
246
|
-
*
|
|
247
|
-
*
|
|
337
|
+
* Legacy persisted input only. Runtime hydration removes this field and new writers omit it.
|
|
338
|
+
* Latest terminal goal instance (legacy/single-marker view). Kept alongside
|
|
339
|
+
* the bounded goalTerminals identity set for backward-compatible readers.
|
|
248
340
|
* Optional for backward compatibility with pre-tombstone state.json files.
|
|
249
341
|
*/
|
|
250
342
|
goalTerminal?: GoalTerminal;
|
|
343
|
+
/** Legacy persisted terminal history input; runtime hydration removes it. */
|
|
344
|
+
goalTerminals?: GoalTerminal[];
|
|
251
345
|
}
|
|
252
346
|
export interface TokenUsage {
|
|
253
347
|
promptTokens: number;
|
|
@@ -341,12 +435,23 @@ export interface TaskInfo {
|
|
|
341
435
|
}
|
|
342
436
|
export type PromptTokenSource = "provider_usage" | "anchor_delta" | "anchor_rescale" | "calibrated_estimate" | "heuristic_estimate" | "session_cumulative";
|
|
343
437
|
export type PromptTokenConfidence = "high" | "medium" | "low";
|
|
438
|
+
/**
|
|
439
|
+
* Why a syntactically completed engine run did not finish its logical task.
|
|
440
|
+
* Absent means the model reached an ordinary final response. Consumers that
|
|
441
|
+
* manage durable work can use this to avoid treating an async handoff or a
|
|
442
|
+
* Goal-control boundary as objective completion.
|
|
443
|
+
*/
|
|
444
|
+
export type TurnCompletionKind = "background_wait" | "goal_control_stop" | "limit_stop";
|
|
344
445
|
export type StreamEvent = {
|
|
345
446
|
type: "session_started";
|
|
346
447
|
sessionId: string;
|
|
347
448
|
promptTokens: number;
|
|
348
449
|
promptTokensSource?: PromptTokenSource;
|
|
349
450
|
promptTokensConfidence?: PromptTokenConfidence;
|
|
451
|
+
} | {
|
|
452
|
+
type: "session_user_message";
|
|
453
|
+
text: string;
|
|
454
|
+
clientMessageId?: string;
|
|
350
455
|
} | {
|
|
351
456
|
type: "session_title";
|
|
352
457
|
sessionId: string;
|
|
@@ -386,9 +491,14 @@ export type StreamEvent = {
|
|
|
386
491
|
} | {
|
|
387
492
|
type: "turn_complete";
|
|
388
493
|
reason: TerminalReason;
|
|
494
|
+
completionKind?: TurnCompletionKind;
|
|
389
495
|
agentId?: string;
|
|
390
496
|
} | {
|
|
391
497
|
type: "goal_progress";
|
|
498
|
+
/** Concrete goal instance; absent only on legacy replayed events. */
|
|
499
|
+
goalId?: string;
|
|
500
|
+
/** Edit/pause/resume revision for stale-event fencing. */
|
|
501
|
+
revision?: number;
|
|
392
502
|
status: "not_met" | "met" | "exhausted" | "approaching_limit";
|
|
393
503
|
round: number;
|
|
394
504
|
gaps?: string;
|
|
@@ -401,10 +511,21 @@ export type StreamEvent = {
|
|
|
401
511
|
agentId?: string;
|
|
402
512
|
} | {
|
|
403
513
|
type: "goal_set";
|
|
514
|
+
goalId?: string;
|
|
515
|
+
revision?: number;
|
|
404
516
|
objective: string;
|
|
405
517
|
replaced: boolean;
|
|
518
|
+
paused?: boolean;
|
|
519
|
+
} | {
|
|
520
|
+
type: "goal_updated";
|
|
521
|
+
goalId?: string;
|
|
522
|
+
revision?: number;
|
|
523
|
+
objective: string;
|
|
524
|
+
paused: boolean;
|
|
406
525
|
} | {
|
|
407
526
|
type: "goal_cleared";
|
|
527
|
+
goalId?: string;
|
|
528
|
+
revision?: number;
|
|
408
529
|
} | {
|
|
409
530
|
type: "error";
|
|
410
531
|
error: string;
|
|
@@ -421,7 +542,7 @@ export type StreamEvent = {
|
|
|
421
542
|
type: "memory_recalled";
|
|
422
543
|
name: string;
|
|
423
544
|
scope: "user" | "dream";
|
|
424
|
-
location: "global" | "project";
|
|
545
|
+
location: "global" | "project" | "profile";
|
|
425
546
|
agentId?: string;
|
|
426
547
|
} | {
|
|
427
548
|
type: "thinking_delta";
|
|
@@ -458,10 +579,19 @@ export type StreamEvent = {
|
|
|
458
579
|
agentId?: string;
|
|
459
580
|
} | {
|
|
460
581
|
type: "context_compact";
|
|
461
|
-
strategy: "micro" | "summary" | "window" | "snip" | "emergency" | "compacted";
|
|
582
|
+
strategy: "micro" | "summary" | "window" | "snip" | "emergency" | "compacted" | "range";
|
|
462
583
|
before: number;
|
|
463
584
|
after: number;
|
|
464
585
|
agentId?: string;
|
|
586
|
+
} | {
|
|
587
|
+
/** Persisted summary-only history transferred into a newly forked session. */
|
|
588
|
+
type: "context_transfer";
|
|
589
|
+
summary: string;
|
|
590
|
+
sourceSessionId: string;
|
|
591
|
+
fromEventId: string;
|
|
592
|
+
toEventId: string;
|
|
593
|
+
sourceEventCount: number;
|
|
594
|
+
estimatedTokens: number;
|
|
465
595
|
} | {
|
|
466
596
|
type: "usage_update";
|
|
467
597
|
promptTokens: number;
|
|
@@ -680,16 +810,28 @@ export interface MCPServerConfig {
|
|
|
680
810
|
* UI toggle can flip it back on. See connectAll().
|
|
681
811
|
*/
|
|
682
812
|
enabled?: boolean;
|
|
813
|
+
/**
|
|
814
|
+
* Exact MCP tool-name allowlist. Undefined exposes every discovered tool;
|
|
815
|
+
* an empty list exposes none. `disabledTools` is applied afterwards.
|
|
816
|
+
*/
|
|
817
|
+
allowedTools?: string[];
|
|
818
|
+
/** Exact MCP tool-name denylist, applied after `allowedTools`. */
|
|
819
|
+
disabledTools?: string[];
|
|
683
820
|
}
|
|
684
821
|
/**
|
|
685
822
|
* User-supplied supplement for a PLUGIN-provided MCP server, keyed by the
|
|
686
823
|
* server's `<plugin>:<server>` name. Stored globally under
|
|
687
824
|
* `settings.mcpServerOverrides` and layered onto the plugin's config at merge
|
|
688
|
-
* time (see mergePluginMcpServers). Only
|
|
689
|
-
* command/args/url/transport stay
|
|
690
|
-
* update is never shadowed by a stale
|
|
825
|
+
* time (see mergePluginMcpServers). Only user-controlled server/tool policy
|
|
826
|
+
* and env/credential fields are allowed — command/args/url/transport stay
|
|
827
|
+
* owned by the plugin manifest so an update is never shadowed by a stale copy.
|
|
691
828
|
*/
|
|
692
829
|
export interface MCPServerOverride {
|
|
830
|
+
/** Per-server user policy. Allows one server to be disabled without disabling its owner plugin. */
|
|
831
|
+
enabled?: boolean;
|
|
832
|
+
/** User policy layered over the plugin server's reviewed connection identity. */
|
|
833
|
+
allowedTools?: string[];
|
|
834
|
+
disabledTools?: string[];
|
|
693
835
|
env?: Record<string, string>;
|
|
694
836
|
envVars?: string[];
|
|
695
837
|
/** (HTTP) id of a stored token/link/oauth credential used as Bearer auth. */
|
|
@@ -761,3 +903,42 @@ export interface Settings {
|
|
|
761
903
|
*/
|
|
762
904
|
hooks?: SettingsHookConfig[];
|
|
763
905
|
}
|
|
906
|
+
export type InputAttachmentKind = "image" | "file" | "directory";
|
|
907
|
+
export type InputAttachmentOrigin = "paste" | "os-drop" | "file-panel" | "picker" | "mention" | "generated" | "mobile" | "im-gateway" | "tool";
|
|
908
|
+
export interface InputAttachmentMeta {
|
|
909
|
+
id: string;
|
|
910
|
+
sessionId: string;
|
|
911
|
+
kind: InputAttachmentKind;
|
|
912
|
+
origin: InputAttachmentOrigin;
|
|
913
|
+
path: string;
|
|
914
|
+
absPath: string;
|
|
915
|
+
relPath?: string;
|
|
916
|
+
mime?: string;
|
|
917
|
+
size: number;
|
|
918
|
+
sha256: string;
|
|
919
|
+
originalName?: string;
|
|
920
|
+
createdAt: number;
|
|
921
|
+
sourcePath?: string;
|
|
922
|
+
width?: number;
|
|
923
|
+
height?: number;
|
|
924
|
+
vision?: {
|
|
925
|
+
include: boolean;
|
|
926
|
+
mediaPath?: string;
|
|
927
|
+
detail?: "low" | "standard" | "high";
|
|
928
|
+
};
|
|
929
|
+
directory?: {
|
|
930
|
+
treePath?: string;
|
|
931
|
+
truncated?: boolean;
|
|
932
|
+
entryCount?: number;
|
|
933
|
+
};
|
|
934
|
+
}
|
|
935
|
+
export interface LegacyPetWorkspaceOption {
|
|
936
|
+
id: string;
|
|
937
|
+
name: string;
|
|
938
|
+
description?: string;
|
|
939
|
+
}
|
|
940
|
+
export interface LegacyPetWorkDelegation {
|
|
941
|
+
workspaceId: string;
|
|
942
|
+
objective: string;
|
|
943
|
+
reusableSessionId?: string;
|
|
944
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-process read-modify-write for a single JSON file.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
* ---------------
|
|
6
|
+
* Several subsystems independently implemented "load → change → save" against a
|
|
7
|
+
* shared file with NO cross-process lock. Atomic tmp+rename protects against a
|
|
8
|
+
* torn file, but not against lost updates: two processes both read revision N,
|
|
9
|
+
* both write N+1, and one change vanishes. Measured on this repo: 48 concurrent
|
|
10
|
+
* writers each setting a distinct settings key left only 17 keys; 48 concurrent
|
|
11
|
+
* AutoDream increments recorded 1–2.
|
|
12
|
+
*
|
|
13
|
+
* CronStore already had the correct shape (directory lock + reload-inside-lock +
|
|
14
|
+
* unique tmp + rename). This module extracts exactly that so every writer shares
|
|
15
|
+
* one implementation instead of re-deriving it — and so the retry/stale tuning
|
|
16
|
+
* lives in one place.
|
|
17
|
+
*
|
|
18
|
+
* The lock is taken on the file's DIRECTORY (proper-lockfile creates
|
|
19
|
+
* `<dir>.lock`), matching CronStore. Locking the directory rather than the file
|
|
20
|
+
* means a writer that creates the file for the first time is still serialized.
|
|
21
|
+
*/
|
|
22
|
+
/**
|
|
23
|
+
* Acquire the directory lock guarding `file`. Returns the release function.
|
|
24
|
+
*
|
|
25
|
+
* Retries for LOCK_WAIT_MS because contention here is normal (several hosts can
|
|
26
|
+
* write the same file), then throws — a caller must never silently proceed
|
|
27
|
+
* unlocked, since that is precisely the lost-update bug.
|
|
28
|
+
*/
|
|
29
|
+
export declare function acquireFileLock(file: string): () => void;
|
|
30
|
+
/**
|
|
31
|
+
* Lock one specific path rather than its whole directory.
|
|
32
|
+
*
|
|
33
|
+
* Use when several independent resources live side by side and must NOT
|
|
34
|
+
* serialize against each other — e.g. per-repo clone dirs, where locking the
|
|
35
|
+
* shared parent would make unrelated installs queue behind one another (and
|
|
36
|
+
* would deadlock against any directory-scoped lock taken inside).
|
|
37
|
+
*
|
|
38
|
+
* `target` must already exist; proper-lockfile creates a sibling `<target>.lock`.
|
|
39
|
+
* `timeoutMs` can exceed the default when the critical section legitimately
|
|
40
|
+
* takes a while (network clone + directory swap).
|
|
41
|
+
*/
|
|
42
|
+
export declare function acquireLockOnPath(target: string, timeoutMs?: number): () => void;
|
|
43
|
+
/** Stage to a unique temp file, then rename — never a partially written target. */
|
|
44
|
+
export declare function writeFileAtomic(file: string, contents: string, mode?: number): void;
|
|
45
|
+
/**
|
|
46
|
+
* Run `mutation` against the file's CURRENT on-disk content while holding the
|
|
47
|
+
* lock, then persist whatever it returns.
|
|
48
|
+
*
|
|
49
|
+
* The reload happens INSIDE the lock, which is the entire point: a caller that
|
|
50
|
+
* read the file earlier (before contending for the lock) would otherwise write
|
|
51
|
+
* back a stale snapshot and drop a concurrent writer's change.
|
|
52
|
+
*
|
|
53
|
+
* `parse` receives `undefined` when the file is missing or unreadable, so each
|
|
54
|
+
* caller decides what "empty" means. Returning `undefined` from `mutation`
|
|
55
|
+
* skips the write entirely (no-op mutations should not rewrite the file).
|
|
56
|
+
*/
|
|
57
|
+
export declare function mutateJsonFile<T, R = void>(file: string, options: {
|
|
58
|
+
parse: (raw: string | undefined) => T;
|
|
59
|
+
serialize: (value: T) => string;
|
|
60
|
+
mutation: (current: T) => {
|
|
61
|
+
value?: T;
|
|
62
|
+
result?: R;
|
|
63
|
+
};
|
|
64
|
+
mode?: number;
|
|
65
|
+
}): R | undefined;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cross-process read-modify-write for a single JSON file.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS
|
|
5
|
+
* ---------------
|
|
6
|
+
* Several subsystems independently implemented "load → change → save" against a
|
|
7
|
+
* shared file with NO cross-process lock. Atomic tmp+rename protects against a
|
|
8
|
+
* torn file, but not against lost updates: two processes both read revision N,
|
|
9
|
+
* both write N+1, and one change vanishes. Measured on this repo: 48 concurrent
|
|
10
|
+
* writers each setting a distinct settings key left only 17 keys; 48 concurrent
|
|
11
|
+
* AutoDream increments recorded 1–2.
|
|
12
|
+
*
|
|
13
|
+
* CronStore already had the correct shape (directory lock + reload-inside-lock +
|
|
14
|
+
* unique tmp + rename). This module extracts exactly that so every writer shares
|
|
15
|
+
* one implementation instead of re-deriving it — and so the retry/stale tuning
|
|
16
|
+
* lives in one place.
|
|
17
|
+
*
|
|
18
|
+
* The lock is taken on the file's DIRECTORY (proper-lockfile creates
|
|
19
|
+
* `<dir>.lock`), matching CronStore. Locking the directory rather than the file
|
|
20
|
+
* means a writer that creates the file for the first time is still serialized.
|
|
21
|
+
*/
|
|
22
|
+
import { existsSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
23
|
+
import { dirname } from "node:path";
|
|
24
|
+
import { randomUUID } from "node:crypto";
|
|
25
|
+
import { lockSync } from "./lockfile.js";
|
|
26
|
+
/**
|
|
27
|
+
* How long to keep retrying the lock before giving up.
|
|
28
|
+
*
|
|
29
|
+
* Sized for real contention, not the happy path. Every holder does a bounded
|
|
30
|
+
* amount of work (re-read, merge, atomic rename), but with N writers the last
|
|
31
|
+
* one in line waits for all N-1 ahead of it. Measured here: 48 concurrent
|
|
32
|
+
* processes saving memories against one index blew through a 2s budget and up to
|
|
33
|
+
* 46 of them died with ELOCKED. 30s leaves generous headroom while still
|
|
34
|
+
* failing loudly if a holder is genuinely wedged.
|
|
35
|
+
*/
|
|
36
|
+
const LOCK_WAIT_MS = 30_000;
|
|
37
|
+
/** A lock older than this is treated as abandoned by a crashed holder. */
|
|
38
|
+
const LOCK_STALE_MS = 10_000;
|
|
39
|
+
/** Backoff bounds for the retry loop (see acquireLockOn). */
|
|
40
|
+
const LOCK_RETRY_MIN_MS = 5;
|
|
41
|
+
const LOCK_RETRY_MAX_MS = 50;
|
|
42
|
+
// Atomics.wait only ever reads slot 0, which stays 0, so one shared buffer is
|
|
43
|
+
// safe and avoids allocating per retry.
|
|
44
|
+
const SLEEP_SIGNAL = new Int32Array(new SharedArrayBuffer(4));
|
|
45
|
+
function sleepSync(ms) {
|
|
46
|
+
Atomics.wait(SLEEP_SIGNAL, 0, 0, ms);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Acquire the directory lock guarding `file`. Returns the release function.
|
|
50
|
+
*
|
|
51
|
+
* Retries for LOCK_WAIT_MS because contention here is normal (several hosts can
|
|
52
|
+
* write the same file), then throws — a caller must never silently proceed
|
|
53
|
+
* unlocked, since that is precisely the lost-update bug.
|
|
54
|
+
*/
|
|
55
|
+
export function acquireFileLock(file) {
|
|
56
|
+
const dir = dirname(file);
|
|
57
|
+
if (!existsSync(dir))
|
|
58
|
+
mkdirSync(dir, { recursive: true });
|
|
59
|
+
return acquireLockOn(dir, LOCK_WAIT_MS);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Lock one specific path rather than its whole directory.
|
|
63
|
+
*
|
|
64
|
+
* Use when several independent resources live side by side and must NOT
|
|
65
|
+
* serialize against each other — e.g. per-repo clone dirs, where locking the
|
|
66
|
+
* shared parent would make unrelated installs queue behind one another (and
|
|
67
|
+
* would deadlock against any directory-scoped lock taken inside).
|
|
68
|
+
*
|
|
69
|
+
* `target` must already exist; proper-lockfile creates a sibling `<target>.lock`.
|
|
70
|
+
* `timeoutMs` can exceed the default when the critical section legitimately
|
|
71
|
+
* takes a while (network clone + directory swap).
|
|
72
|
+
*/
|
|
73
|
+
export function acquireLockOnPath(target, timeoutMs = LOCK_WAIT_MS) {
|
|
74
|
+
return acquireLockOn(target, timeoutMs);
|
|
75
|
+
}
|
|
76
|
+
function acquireLockOn(target, timeoutMs) {
|
|
77
|
+
const deadline = Date.now() + timeoutMs;
|
|
78
|
+
let lastError;
|
|
79
|
+
let attempt = 0;
|
|
80
|
+
for (;;) {
|
|
81
|
+
try {
|
|
82
|
+
return lockSync(target, { stale: LOCK_STALE_MS, retries: 0 });
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
lastError = err;
|
|
86
|
+
if (Date.now() > deadline)
|
|
87
|
+
throw lastError;
|
|
88
|
+
// Randomized backoff. A fixed delay makes every waiter wake at the same
|
|
89
|
+
// instant and collide again, so under real contention (dozens of writers)
|
|
90
|
+
// the same unlucky processes kept losing and eventually timed out.
|
|
91
|
+
// Jitter spreads the retries out; the cap keeps latency low when only a
|
|
92
|
+
// couple of writers are competing.
|
|
93
|
+
const ceiling = Math.min(LOCK_RETRY_MIN_MS * 2 ** attempt, LOCK_RETRY_MAX_MS);
|
|
94
|
+
attempt += 1;
|
|
95
|
+
sleepSync(LOCK_RETRY_MIN_MS + Math.floor(Math.random() * ceiling));
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/** Stage to a unique temp file, then rename — never a partially written target. */
|
|
100
|
+
export function writeFileAtomic(file, contents, mode) {
|
|
101
|
+
mkdirSync(dirname(file), { recursive: true });
|
|
102
|
+
// Unique per writer: a shared `.tmp` name lets two writers clobber each
|
|
103
|
+
// other's staging file even while both hold different locks.
|
|
104
|
+
const tmp = `${file}.${process.pid}.${randomUUID()}.tmp`;
|
|
105
|
+
try {
|
|
106
|
+
writeFileSync(tmp, contents, mode === undefined ? "utf-8" : { encoding: "utf-8", mode });
|
|
107
|
+
renameSync(tmp, file);
|
|
108
|
+
}
|
|
109
|
+
finally {
|
|
110
|
+
rmSync(tmp, { force: true });
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Run `mutation` against the file's CURRENT on-disk content while holding the
|
|
115
|
+
* lock, then persist whatever it returns.
|
|
116
|
+
*
|
|
117
|
+
* The reload happens INSIDE the lock, which is the entire point: a caller that
|
|
118
|
+
* read the file earlier (before contending for the lock) would otherwise write
|
|
119
|
+
* back a stale snapshot and drop a concurrent writer's change.
|
|
120
|
+
*
|
|
121
|
+
* `parse` receives `undefined` when the file is missing or unreadable, so each
|
|
122
|
+
* caller decides what "empty" means. Returning `undefined` from `mutation`
|
|
123
|
+
* skips the write entirely (no-op mutations should not rewrite the file).
|
|
124
|
+
*/
|
|
125
|
+
export function mutateJsonFile(file, options) {
|
|
126
|
+
const release = acquireFileLock(file);
|
|
127
|
+
try {
|
|
128
|
+
let raw;
|
|
129
|
+
try {
|
|
130
|
+
raw = readFileSync(file, "utf-8");
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
raw = undefined;
|
|
134
|
+
}
|
|
135
|
+
const current = options.parse(raw);
|
|
136
|
+
const { value, result } = options.mutation(current);
|
|
137
|
+
if (value !== undefined) {
|
|
138
|
+
writeFileAtomic(file, options.serialize(value), options.mode);
|
|
139
|
+
}
|
|
140
|
+
return result;
|
|
141
|
+
}
|
|
142
|
+
finally {
|
|
143
|
+
release();
|
|
144
|
+
}
|
|
145
|
+
}
|
package/dist/utils/json.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic JSON extraction from LLM text output — strip markdown fences and
|
|
3
3
|
* pull out the first balanced object/array. These are provider-agnostic and
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* without dragging in the Arena subsystem. Arena re-exports them for
|
|
7
|
-
* back-compat.
|
|
4
|
+
* live in core so any service or extension can consume them without importing
|
|
5
|
+
* a product capability package.
|
|
8
6
|
*/
|
|
9
7
|
/** Extract JSON from text that might have markdown fences or surrounding text. */
|
|
10
8
|
export declare function extractJSON(text: string): string;
|
package/dist/utils/json.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Generic JSON extraction from LLM text output — strip markdown fences and
|
|
3
3
|
* pull out the first balanced object/array. These are provider-agnostic and
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* without dragging in the Arena subsystem. Arena re-exports them for
|
|
7
|
-
* back-compat.
|
|
4
|
+
* live in core so any service or extension can consume them without importing
|
|
5
|
+
* a product capability package.
|
|
8
6
|
*/
|
|
9
7
|
/** Extract JSON from text that might have markdown fences or surrounding text. */
|
|
10
8
|
export function extractJSON(text) {
|