@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
package/README.md
CHANGED
|
@@ -17,10 +17,7 @@ Requires Node ≥ 20.10 and an ESM-capable runtime.
|
|
|
17
17
|
## Quickstart
|
|
18
18
|
|
|
19
19
|
```ts
|
|
20
|
-
import {
|
|
21
|
-
Engine,
|
|
22
|
-
HeadlessApprovalBackend,
|
|
23
|
-
} from "@cjhyy/code-shell-core";
|
|
20
|
+
import { Engine, HeadlessApprovalBackend } from "@cjhyy/code-shell-core";
|
|
24
21
|
|
|
25
22
|
const engine = new Engine({
|
|
26
23
|
llm: {
|
|
@@ -37,9 +34,7 @@ const engine = new Engine({
|
|
|
37
34
|
headless: true,
|
|
38
35
|
});
|
|
39
36
|
|
|
40
|
-
const result = await engine.run(
|
|
41
|
-
"list files in this directory and summarise their purpose",
|
|
42
|
-
);
|
|
37
|
+
const result = await engine.run("list files in this directory and summarise their purpose");
|
|
43
38
|
|
|
44
39
|
console.log(result.text);
|
|
45
40
|
console.log("turns:", result.turnCount, "reason:", result.reason);
|
|
@@ -60,7 +55,9 @@ Restrict the tool set:
|
|
|
60
55
|
|
|
61
56
|
```ts
|
|
62
57
|
new Engine({
|
|
63
|
-
llm: {
|
|
58
|
+
llm: {
|
|
59
|
+
/* … */
|
|
60
|
+
},
|
|
64
61
|
// Whitelist — only these built-in tools are registered.
|
|
65
62
|
enabledBuiltinTools: ["Read", "Glob", "Grep", "WebFetch"],
|
|
66
63
|
// Or blacklist — registers every built-in except these.
|
|
@@ -93,11 +90,7 @@ Direct `new Engine(...)` still works for advanced cases — but the
|
|
|
93
90
|
protocol-mediated path is what we test, document, and avoid breaking.
|
|
94
91
|
|
|
95
92
|
```ts
|
|
96
|
-
import {
|
|
97
|
-
createServer,
|
|
98
|
-
createClient,
|
|
99
|
-
createInProcessTransport,
|
|
100
|
-
} from "@cjhyy/code-shell-core";
|
|
93
|
+
import { createServer, createClient, createInProcessTransport } from "@cjhyy/code-shell-core";
|
|
101
94
|
|
|
102
95
|
const [serverT, clientT] = createInProcessTransport();
|
|
103
96
|
const handle = createServer({
|
|
@@ -123,6 +116,16 @@ For an out-of-process worker, swap `createInProcessTransport()` for a
|
|
|
123
116
|
`StdioTransport` pair. The factory accepts any `Transport`, so a future
|
|
124
117
|
`IpcAdapter` will compose without changing the call shape.
|
|
125
118
|
|
|
119
|
+
Browser UI hosts that only need the trusted Panel App lifecycle coordinator should
|
|
120
|
+
use the audited browser-safe subpath:
|
|
121
|
+
|
|
122
|
+
```ts
|
|
123
|
+
import { PanelAppLifecycleRuntime } from "@cjhyy/code-shell-core/browser/panel-app-runtime";
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
This entry contains no Engine, filesystem, process or Electron dependency.
|
|
127
|
+
The non-browser alias is `@cjhyy/code-shell-core/panel-app-runtime`.
|
|
128
|
+
|
|
126
129
|
`StreamEvent` includes `background_agent_completed` (B2.2) so embedders
|
|
127
130
|
that don't poll `notificationQueue` still observe sub-agent finish/fail
|
|
128
131
|
results. `client.onBackgroundAgentCompleted((sessionId, event) => …)` is
|
|
@@ -133,16 +136,16 @@ the typed entry point; events also flow through the catch-all
|
|
|
133
136
|
|
|
134
137
|
These exports are covered by the stability promise:
|
|
135
138
|
|
|
136
|
-
| Area
|
|
137
|
-
|
|
|
138
|
-
| Factories
|
|
139
|
-
| Server/client
|
|
140
|
-
| Engine
|
|
141
|
-
| Protocol types | `Methods`, `ErrorCodes`, `RpcMessage`, `RunResult`, `StreamEvent`, `StreamCallback`, `BackgroundAgentCompletedEvent`
|
|
142
|
-
| LLM
|
|
143
|
-
| Tool authoring | `ToolDefinition`, `ToolCall`, `ToolResult`, `RegisteredTool`, `BUILTIN_TOOLS`, `HookContext`, `HookResult`
|
|
144
|
-
| Permissions
|
|
145
|
-
| Errors
|
|
139
|
+
| Area | Stable exports |
|
|
140
|
+
| -------------- | ------------------------------------------------------------------------------------------------------------------------------- |
|
|
141
|
+
| Factories | `createServer`, `createClient`, `createInProcessTransport`, `StdioTransport` |
|
|
142
|
+
| Server/client | `AgentServer`, `AgentClient` (direct use is supported but `createServer/Client` preferred) |
|
|
143
|
+
| Engine | `Engine`, `EngineConfig`, `EngineRuntime`, `ChatSessionManager` |
|
|
144
|
+
| Protocol types | `Methods`, `ErrorCodes`, `RpcMessage`, `RunResult`, `StreamEvent`, `StreamCallback`, `BackgroundAgentCompletedEvent` |
|
|
145
|
+
| LLM | `LLMConfig`, `LLMResponse`, `ModelPool`, `createLLMClient`, `registerProvider` |
|
|
146
|
+
| Tool authoring | `ToolDefinition`, `ToolCall`, `ToolResult`, `RegisteredTool`, `BUILTIN_TOOLS`, `HookContext`, `HookResult` |
|
|
147
|
+
| Permissions | `PermissionClassifier`, `HeadlessApprovalBackend`, `AutoApprovalBackend`, `ApprovalBackend`, `PermissionMode`, `PermissionRule` |
|
|
148
|
+
| Errors | `FrameworkError` + subclasses (`LLMError`, `ToolError`, `PermissionDeniedError`, …) |
|
|
146
149
|
|
|
147
150
|
### Treat as internal
|
|
148
151
|
|
|
@@ -153,11 +156,21 @@ experimental/internal unless explicitly documented otherwise, and may
|
|
|
153
156
|
change between minor versions without notice. Plan to migrate via the
|
|
154
157
|
protocol surface instead of deep-importing.
|
|
155
158
|
|
|
159
|
+
In 0.8 the plugin installer / marketplace / onboarding / self-updater exports
|
|
160
|
+
(`installPluginFromPath`, `installPlugin`, `addMarketplace`, `resolveApiKey`,
|
|
161
|
+
`checkForUpdate`, …) moved off this root entry to
|
|
162
|
+
`@cjhyy/code-shell-core/internal` — they are host-assembly surfaces for the
|
|
163
|
+
in-repo TUI/desktop apps, not part of the embeddable agent SDK.
|
|
164
|
+
|
|
156
165
|
## Stability
|
|
157
166
|
|
|
158
167
|
Pre-1.0 — APIs may change between minor versions. The "stable surface"
|
|
159
168
|
table above is the contract; everything else is mobile.
|
|
160
169
|
|
|
170
|
+
**Breaking in 0.8:** host-assembly exports (installer/marketplace/onboarding/
|
|
171
|
+
updater) left the root entry; import them from
|
|
172
|
+
`@cjhyy/code-shell-core/internal` if you must (no stability promise there).
|
|
173
|
+
|
|
161
174
|
See [CHANGELOG.md](https://github.com/cjhyy/codeshell/blob/main/CHANGELOG.md) in the monorepo.
|
|
162
175
|
|
|
163
176
|
## License
|
|
@@ -7,8 +7,8 @@ export interface AgentSourceDir {
|
|
|
7
7
|
pluginName?: string;
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
|
-
* Loads reusable sub-agent role definitions from one or more
|
|
11
|
-
*
|
|
10
|
+
* Loads reusable sub-agent role definitions recursively from one or more
|
|
11
|
+
* directories. Malformed `.md` files are skipped with a
|
|
12
12
|
* warning rather than failing the whole load — one bad role file must
|
|
13
13
|
* not break the agent system.
|
|
14
14
|
*
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { readdirSync, readFileSync,
|
|
2
|
-
import { join } from "node:path";
|
|
1
|
+
import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from "node:fs";
|
|
2
|
+
import { isAbsolute, join, relative, sep } from "node:path";
|
|
3
3
|
import { parseAgentDefinition } from "./agent-definition.js";
|
|
4
4
|
/**
|
|
5
|
-
* Loads reusable sub-agent role definitions from one or more
|
|
6
|
-
*
|
|
5
|
+
* Loads reusable sub-agent role definitions recursively from one or more
|
|
6
|
+
* directories. Malformed `.md` files are skipped with a
|
|
7
7
|
* warning rather than failing the whole load — one bad role file must
|
|
8
8
|
* not break the agent system.
|
|
9
9
|
*
|
|
@@ -27,14 +27,14 @@ export class AgentDefinitionRegistry {
|
|
|
27
27
|
for (const { dir, source, pluginName } of dirs) {
|
|
28
28
|
if (!existsSync(dir) || !statSync(dir).isDirectory())
|
|
29
29
|
continue;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
const pluginRoot = source === "plugin" ? safeRealpath(dir) : null;
|
|
31
|
+
if (source === "plugin" && !pluginRoot)
|
|
32
|
+
continue;
|
|
33
|
+
for (const { full, sourceName } of collectAgentMarkdownFiles(dir, pluginRoot)) {
|
|
34
34
|
try {
|
|
35
35
|
if (!statSync(full).isFile())
|
|
36
36
|
continue;
|
|
37
|
-
const def = parseAgentDefinition(readFileSync(full, "utf8"),
|
|
37
|
+
const def = parseAgentDefinition(readFileSync(full, "utf8"), sourceName);
|
|
38
38
|
def.source = source;
|
|
39
39
|
if (pluginName)
|
|
40
40
|
def.pluginName = pluginName;
|
|
@@ -54,7 +54,7 @@ export class AgentDefinitionRegistry {
|
|
|
54
54
|
reg.defs.set(def.name, def);
|
|
55
55
|
}
|
|
56
56
|
catch (err) {
|
|
57
|
-
reg.warnings.push(`${
|
|
57
|
+
reg.warnings.push(`${sourceName}: ${err.message}`);
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
60
|
}
|
|
@@ -74,3 +74,40 @@ export class AgentDefinitionRegistry {
|
|
|
74
74
|
return [...this.defs.values()];
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
|
+
function safeRealpath(path) {
|
|
78
|
+
try {
|
|
79
|
+
return realpathSync(path);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function resolveContainedPluginAgent(root, candidate) {
|
|
86
|
+
const target = safeRealpath(candidate);
|
|
87
|
+
if (!target)
|
|
88
|
+
return null;
|
|
89
|
+
const rel = relative(root, target);
|
|
90
|
+
if (rel === ".." || rel.startsWith(`..${sep}`) || isAbsolute(rel))
|
|
91
|
+
return null;
|
|
92
|
+
return target;
|
|
93
|
+
}
|
|
94
|
+
function collectAgentMarkdownFiles(root, pluginRoot) {
|
|
95
|
+
const files = [];
|
|
96
|
+
const walk = (dir) => {
|
|
97
|
+
for (const entry of readdirSync(dir, { withFileTypes: true }).sort((a, b) => a.name.localeCompare(b.name))) {
|
|
98
|
+
const candidate = join(dir, entry.name);
|
|
99
|
+
if (entry.isDirectory()) {
|
|
100
|
+
walk(candidate);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (!entry.name.endsWith(".md"))
|
|
104
|
+
continue;
|
|
105
|
+
const full = pluginRoot === null ? candidate : resolveContainedPluginAgent(pluginRoot, candidate);
|
|
106
|
+
if (!full)
|
|
107
|
+
continue;
|
|
108
|
+
files.push({ full, sourceName: relative(root, candidate) });
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
walk(root);
|
|
112
|
+
return files;
|
|
113
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { SandboxMode } from "../tool-system/sandbox/index.js";
|
|
1
2
|
/** A reusable sub-agent role, loaded from a Markdown file. */
|
|
2
3
|
export interface AgentDefinition {
|
|
3
4
|
/** Unique role key, e.g. "researcher". Matched against Agent({ agent_type }). */
|
|
@@ -17,6 +18,10 @@ export interface AgentDefinition {
|
|
|
17
18
|
* system prompt and the only ones it may invoke. Empty array → no skills.
|
|
18
19
|
*/
|
|
19
20
|
skills?: string[];
|
|
21
|
+
/** Optional OS shell sandbox mode. Undefined → inherit the parent sandbox. */
|
|
22
|
+
sandbox?: SandboxMode;
|
|
23
|
+
/** Optional MCP server allowlist. Undefined → inherit all; [] → no MCP. */
|
|
24
|
+
mcp?: string[];
|
|
20
25
|
/** Markdown body — becomes the child Engine's appendSystemPrompt. */
|
|
21
26
|
systemPrompt: string;
|
|
22
27
|
/** Where this def was loaded from. Runtime-only; never serialized. */
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { parse as parseYaml, stringify as stringifyYaml } from "yaml";
|
|
2
|
+
const SANDBOX_MODES = new Set(["off", "auto", "seatbelt", "bwrap"]);
|
|
3
|
+
function normalizeSandboxMode(value) {
|
|
4
|
+
return typeof value === "string" && SANDBOX_MODES.has(value) ? value : undefined;
|
|
5
|
+
}
|
|
2
6
|
/**
|
|
3
7
|
* Normalize a frontmatter `tools:` / `skills:` value into a string[].
|
|
4
8
|
* Accepts both a YAML list (`[a, b]`) and a comma/whitespace-separated
|
|
@@ -56,6 +60,12 @@ export function parseAgentDefinition(raw, sourceName) {
|
|
|
56
60
|
const skills = normalizeNameList(fm.skills);
|
|
57
61
|
if (skills !== undefined)
|
|
58
62
|
def.skills = skills;
|
|
63
|
+
const sandbox = normalizeSandboxMode(fm.sandbox);
|
|
64
|
+
if (sandbox !== undefined)
|
|
65
|
+
def.sandbox = sandbox;
|
|
66
|
+
const mcp = normalizeNameList(fm.mcp);
|
|
67
|
+
if (mcp !== undefined)
|
|
68
|
+
def.mcp = mcp;
|
|
59
69
|
return def;
|
|
60
70
|
}
|
|
61
71
|
/**
|
|
@@ -78,6 +88,10 @@ export function serializeAgentDefinition(def) {
|
|
|
78
88
|
fm.tools = def.tools;
|
|
79
89
|
if (def.skills !== undefined)
|
|
80
90
|
fm.skills = def.skills;
|
|
91
|
+
if (def.sandbox !== undefined)
|
|
92
|
+
fm.sandbox = def.sandbox;
|
|
93
|
+
if (def.mcp !== undefined)
|
|
94
|
+
fm.mcp = def.mcp;
|
|
81
95
|
const yaml = stringifyYaml(fm).trimEnd();
|
|
82
96
|
return `---\n${yaml}\n---\n${def.systemPrompt}\n`;
|
|
83
97
|
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* no GUI/TTY assumptions, so the same code runs in any host
|
|
7
7
|
* (docs/automation-plan-2026-05-31.md, D1).
|
|
8
8
|
*/
|
|
9
|
-
import { CronScheduler } from "./scheduler.js";
|
|
9
|
+
import { CronScheduler, type CronJobLifecycleEvent } from "./scheduler.js";
|
|
10
10
|
import { type CronRunner, type RunSubmitter } from "./runner.js";
|
|
11
11
|
import type { CronStore } from "./store.js";
|
|
12
12
|
export interface StartAutomationDeps {
|
|
@@ -20,6 +20,8 @@ export interface StartAutomationDeps {
|
|
|
20
20
|
*/
|
|
21
21
|
runner?: CronRunner;
|
|
22
22
|
runManager?: RunSubmitter;
|
|
23
|
+
/** Installed before persisted jobs are restored and their timers are armed. */
|
|
24
|
+
onJobEvent?: (event: CronJobLifecycleEvent) => void;
|
|
23
25
|
}
|
|
24
26
|
export interface AutomationHandle {
|
|
25
27
|
scheduler: CronScheduler;
|
|
@@ -32,10 +34,11 @@ export interface AutomationHandle {
|
|
|
32
34
|
* `runManager` when both are supplied (it gives run history).
|
|
33
35
|
*/
|
|
34
36
|
export declare function startAutomation(deps: StartAutomationDeps): AutomationHandle;
|
|
35
|
-
export { CronScheduler, cronScheduler, type CronJob } from "./scheduler.js";
|
|
37
|
+
export { CronScheduler, cronScheduler, type CronExecutionOutcome, type CronJob, type CronJobLifecycleEvent, } from "./scheduler.js";
|
|
36
38
|
export { CronStore, defaultCronStorePath } from "./store.js";
|
|
37
39
|
export { bindCronToEngine, bindCronToRunManager, type CronRunner, type CronRunRequest, type CronRunResult, type RunSubmitter, } from "./runner.js";
|
|
38
40
|
export { isCronExpression, parseCronExpression, nextCronTime, type ParsedCron, } from "./cron-expr.js";
|
|
39
|
-
export
|
|
40
|
-
export {
|
|
41
|
+
export { validateSchedule } from "./scheduler.js";
|
|
42
|
+
export type { CronPermissionLevel, CronTemplateSource, CreateJobOptions, UpdateJobPatch, } from "./scheduler.js";
|
|
43
|
+
export { resolveWritePolicy, wrapUntrustedInput, type WritePolicy } from "./write-policy.js";
|
|
41
44
|
export { runWriteJobInWorktree, type WriteJobGitOps, type RunWriteJobInput, type RunWriteJobResult, } from "./write-run.js";
|
package/dist/automation/index.js
CHANGED
|
@@ -24,6 +24,7 @@ export function startAutomation(deps) {
|
|
|
24
24
|
else {
|
|
25
25
|
throw new Error("startAutomation requires either a runner or a runManager");
|
|
26
26
|
}
|
|
27
|
+
scheduler.setJobEventListener(deps.onJobEvent);
|
|
27
28
|
scheduler.loadJobs();
|
|
28
29
|
return {
|
|
29
30
|
scheduler,
|
|
@@ -31,9 +32,10 @@ export function startAutomation(deps) {
|
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
34
|
// Re-export the building blocks so hosts import everything from one place.
|
|
34
|
-
export { CronScheduler, cronScheduler } from "./scheduler.js";
|
|
35
|
+
export { CronScheduler, cronScheduler, } from "./scheduler.js";
|
|
35
36
|
export { CronStore, defaultCronStorePath } from "./store.js";
|
|
36
37
|
export { bindCronToEngine, bindCronToRunManager, } from "./runner.js";
|
|
37
38
|
export { isCronExpression, parseCronExpression, nextCronTime, } from "./cron-expr.js";
|
|
38
|
-
export {
|
|
39
|
+
export { validateSchedule } from "./scheduler.js";
|
|
40
|
+
export { resolveWritePolicy, wrapUntrustedInput } from "./write-policy.js";
|
|
39
41
|
export { runWriteJobInWorktree, } from "./write-run.js";
|
|
@@ -58,10 +58,12 @@ export function bindCronToEngine(scheduler, runner) {
|
|
|
58
58
|
// was deleted) auto-disables the job so it stops silently retrying.
|
|
59
59
|
if (result?.stop) {
|
|
60
60
|
scheduler.disableWithReason(job.id, result.stop.reason);
|
|
61
|
+
return { stoppedReason: result.stop.reason };
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
catch (err) {
|
|
64
|
-
|
|
65
|
+
if (!signal.aborted)
|
|
66
|
+
logCronFailure(job, err);
|
|
65
67
|
throw err; // let the scheduler's catch record stats + keep ticking
|
|
66
68
|
}
|
|
67
69
|
});
|
|
@@ -13,6 +13,13 @@ import type { CronStore } from "./store.js";
|
|
|
13
13
|
export declare function isCronMisfire(scheduledFor: number, now: number): boolean;
|
|
14
14
|
/** Permission tier a scheduled job runs under (Phase 5 enforces write tiers). */
|
|
15
15
|
export type CronPermissionLevel = "read-only" | "workspace-write" | "full";
|
|
16
|
+
/** Non-executable provenance for a job explicitly created from a plugin template. */
|
|
17
|
+
export interface CronTemplateSource {
|
|
18
|
+
installKey: string;
|
|
19
|
+
templateId: string;
|
|
20
|
+
revision: string;
|
|
21
|
+
pluginVersion?: string;
|
|
22
|
+
}
|
|
16
23
|
export interface CronJob {
|
|
17
24
|
id: string;
|
|
18
25
|
name: string;
|
|
@@ -44,6 +51,27 @@ export interface CronJob {
|
|
|
44
51
|
* target whose session no longer exists. Surfaced in the UI so a silently
|
|
45
52
|
* stopped job is explainable; cleared when the job is re-enabled. */
|
|
46
53
|
disabledReason?: string;
|
|
54
|
+
/**
|
|
55
|
+
* Immutable provenance copied when a user instantiates a plugin template.
|
|
56
|
+
* The job remains standalone if the plugin is later updated or uninstalled.
|
|
57
|
+
*/
|
|
58
|
+
templateSource?: CronTemplateSource;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Job execution lifecycle event (see CronScheduler.setJobEventListener).
|
|
62
|
+
* job_error carries the message `fire()` would otherwise swallow.
|
|
63
|
+
*/
|
|
64
|
+
export interface CronJobLifecycleEvent {
|
|
65
|
+
type: "job_start" | "job_end" | "job_stopped" | "job_cancelled" | "job_error";
|
|
66
|
+
job: CronJob;
|
|
67
|
+
durationMs?: number;
|
|
68
|
+
reason?: string;
|
|
69
|
+
error?: string;
|
|
70
|
+
}
|
|
71
|
+
/** Optional semantic outcome returned by an executor after a non-throwing run. */
|
|
72
|
+
export interface CronExecutionOutcome {
|
|
73
|
+
/** The run permanently disabled itself and should not be reported as success. */
|
|
74
|
+
stoppedReason?: string;
|
|
47
75
|
}
|
|
48
76
|
/** Optional metadata accepted by create(). */
|
|
49
77
|
export interface CreateJobOptions {
|
|
@@ -52,6 +80,7 @@ export interface CreateJobOptions {
|
|
|
52
80
|
permissionLevel?: CronPermissionLevel;
|
|
53
81
|
once?: boolean;
|
|
54
82
|
resumeSessionId?: string;
|
|
83
|
+
templateSource?: CronTemplateSource;
|
|
55
84
|
}
|
|
56
85
|
/** Fields editable via update(). Any omitted field is left unchanged. */
|
|
57
86
|
export interface UpdateJobPatch {
|
|
@@ -79,6 +108,7 @@ export declare class CronScheduler {
|
|
|
79
108
|
private runningControllers;
|
|
80
109
|
private nextId;
|
|
81
110
|
private onExecute?;
|
|
111
|
+
private onJobEvent?;
|
|
82
112
|
/** Optional persistence backend. When set, every create/delete/pause/resume
|
|
83
113
|
* writes the full job set to disk so jobs survive a restart. */
|
|
84
114
|
private store?;
|
|
@@ -96,7 +126,16 @@ export declare class CronScheduler {
|
|
|
96
126
|
/** Attach (or replace) the persistence backend. Used to give the shared
|
|
97
127
|
* singleton a store at runtime startup without changing its identity. */
|
|
98
128
|
setStore(store: CronStore): void;
|
|
99
|
-
setExecutor(fn: (job: CronJob, signal: AbortSignal) => Promise<void>): void;
|
|
129
|
+
setExecutor(fn: (job: CronJob, signal: AbortSignal) => Promise<void | CronExecutionOutcome>): void;
|
|
130
|
+
/**
|
|
131
|
+
* Observe job execution lifecycle
|
|
132
|
+
* (job_start → job_end | job_stopped | job_cancelled | job_error). Hosts
|
|
133
|
+
* wire this to their notification surface so scheduled runs — especially
|
|
134
|
+
* failures, which `fire()` otherwise swallows — are no longer silent.
|
|
135
|
+
* Listener errors are swallowed; observation never affects scheduling.
|
|
136
|
+
*/
|
|
137
|
+
setJobEventListener(listener: ((event: CronJobLifecycleEvent) => void) | undefined): void;
|
|
138
|
+
private emitJobEvent;
|
|
100
139
|
/**
|
|
101
140
|
* Abort the in-flight run of `jobId`, if any. Aborts the AbortSignal handed
|
|
102
141
|
* to the executor (which Engine.run cooperates with — it resolves with
|
|
@@ -175,6 +214,21 @@ export declare class CronScheduler {
|
|
|
175
214
|
* calling arm() repeatedly.
|
|
176
215
|
*/
|
|
177
216
|
private arm;
|
|
217
|
+
/**
|
|
218
|
+
* Wait until an ABSOLUTE instant, in `setTimeout`-safe chunks.
|
|
219
|
+
*
|
|
220
|
+
* Node/Electron timers take a 32-bit signed delay: anything above
|
|
221
|
+
* 2,147,483,647ms (~24.8 days) does NOT wait longer — it emits
|
|
222
|
+
* `TimeoutOverflowWarning` and is coerced to **1ms**. A `30d` interval or a
|
|
223
|
+
* monthly cron therefore fired almost immediately and then kept re-firing,
|
|
224
|
+
* because the next absolute target was still out of range.
|
|
225
|
+
*
|
|
226
|
+
* So never hand a raw long delay to setTimeout. Sleep at most
|
|
227
|
+
* MAX_TIMER_DELAY_MS at a time and re-check the clock; only run `onDue` once
|
|
228
|
+
* the real instant has arrived. Chunked waiting also self-corrects for clock
|
|
229
|
+
* drift and sleep/wake, since each hop recomputes from `Date.now()`.
|
|
230
|
+
*/
|
|
231
|
+
private armAt;
|
|
178
232
|
private armInterval;
|
|
179
233
|
private nextIntervalRunAfter;
|
|
180
234
|
private armCron;
|
|
@@ -188,6 +242,8 @@ export declare class CronScheduler {
|
|
|
188
242
|
*/
|
|
189
243
|
private fire;
|
|
190
244
|
}
|
|
245
|
+
/** Validate a schedule string (interval or cron expr) without scheduling. Throws on invalid. */
|
|
246
|
+
export declare function validateSchedule(schedule: string, timezone?: string): void;
|
|
191
247
|
/**
|
|
192
248
|
* Parse a schedule string into milliseconds.
|
|
193
249
|
* Supports: "30s", "5m", "1h", "1d", or raw (all-digit) milliseconds.
|