@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
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BrowserBridge — driver-agnostic contract between the browser tools (core)
|
|
3
|
-
* and whatever drives the actual browser (renderer
|
|
3
|
+
* and whatever drives the actual browser (a renderer webview, hidden main-
|
|
4
|
+
* process BrowserWindow, or external provider via CDP).
|
|
4
5
|
*
|
|
5
6
|
* Spec: docs/superpowers/specs/2026-06-16-browser-automation-mvp.md
|
|
6
7
|
*
|
|
7
|
-
* The core tools only know this interface.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* touching the tools. Undefined on ToolContext → headless / no panel → tools
|
|
13
|
-
* degrade with a clear error.
|
|
8
|
+
* The core tools only know this interface. Desktop can implement it with a
|
|
9
|
+
* Playwright-owned context, Electron `webContents.debugger`, or an authorized
|
|
10
|
+
* Chrome-extension CDP transport. Keeping it driver-agnostic lets those targets
|
|
11
|
+
* swap without touching the tools. Undefined on ToolContext means the current
|
|
12
|
+
* host did not provide browser automation, so tools degrade with a clear error.
|
|
14
13
|
*/
|
|
15
14
|
/** One interactive element from the page's accessibility tree. */
|
|
16
15
|
export interface BrowserElement {
|
|
17
|
-
/** Per-snapshot reference id (
|
|
16
|
+
/** Per-snapshot reference id (for example s3:e1); the host maps it back to a
|
|
18
17
|
* backendDOMNodeId for the action tools. Reassigned each snapshot. */
|
|
19
18
|
ref: string;
|
|
20
19
|
/** ARIA role (button, link, textbox, checkbox, combobox, …). */
|
|
@@ -29,26 +28,69 @@ export interface BrowserElement {
|
|
|
29
28
|
export interface BrowserSnapshot {
|
|
30
29
|
url: string;
|
|
31
30
|
title?: string;
|
|
31
|
+
/** Main-frame document identity. Changes on every cross-document navigation. */
|
|
32
|
+
documentId?: string;
|
|
33
|
+
/** Identity of this exact observation; refs belong only to this snapshot. */
|
|
34
|
+
snapshotId?: string;
|
|
32
35
|
elements: BrowserElement[];
|
|
36
|
+
/** Operational/policy failure. Unlike needsHuman, this must not trigger takeover. */
|
|
37
|
+
detail?: string;
|
|
33
38
|
/** Set when the page needs the user to act (login wall / 2FA) — agent should
|
|
34
39
|
* hand control back to the user rather than retry. */
|
|
35
40
|
needsHuman?: string;
|
|
36
41
|
}
|
|
42
|
+
export type BrowserResultCode = "OK" | "STALE_SNAPSHOT" | "STALE_CURSOR" | "NO_PROGRESS" | "NAVIGATION" | "BLOCKED" | "NEEDS_HUMAN" | "FAILED";
|
|
43
|
+
export interface BrowserScrollState {
|
|
44
|
+
x: number;
|
|
45
|
+
y: number;
|
|
46
|
+
maxX: number;
|
|
47
|
+
maxY: number;
|
|
48
|
+
viewportWidth: number;
|
|
49
|
+
viewportHeight: number;
|
|
50
|
+
atTop: boolean;
|
|
51
|
+
atEnd: boolean;
|
|
52
|
+
}
|
|
37
53
|
export interface BrowserResult {
|
|
38
54
|
ok: boolean;
|
|
55
|
+
/** Stable machine-readable outcome; detail remains for the model/user. */
|
|
56
|
+
code?: BrowserResultCode;
|
|
57
|
+
/** Whether repeating the same operation without a new observation can help. */
|
|
58
|
+
retryable?: boolean;
|
|
39
59
|
/** Human-readable detail (error reason, or short success note). */
|
|
40
60
|
detail?: string;
|
|
41
61
|
/** True when a ref no longer resolves (DOM changed) → agent should re-snapshot. */
|
|
42
62
|
staleRef?: boolean;
|
|
63
|
+
documentId?: string;
|
|
64
|
+
documentChanged?: boolean;
|
|
65
|
+
/** Present for scroll-like actions so callers can prove forward progress. */
|
|
66
|
+
scroll?: BrowserScrollState;
|
|
67
|
+
contentChanged?: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface BrowserReadOptions {
|
|
70
|
+
/** Opaque continuation returned by the previous read call. */
|
|
71
|
+
cursor?: string;
|
|
72
|
+
/** Requested chunk size; the driver clamps it to a safe maximum. */
|
|
73
|
+
maxChars?: number;
|
|
43
74
|
}
|
|
44
75
|
/** Result of reading the page's main textual content (扒内容). */
|
|
45
76
|
export interface BrowserContent {
|
|
46
77
|
ok: boolean;
|
|
47
78
|
url: string;
|
|
48
79
|
title?: string;
|
|
80
|
+
code?: BrowserResultCode;
|
|
81
|
+
documentId?: string;
|
|
49
82
|
/** Extracted readable text (main content, scripts/styles/nav stripped). */
|
|
50
83
|
text: string;
|
|
51
|
-
/**
|
|
84
|
+
/** Cursor represented by this response (the first page uses an implicit start). */
|
|
85
|
+
cursor?: string;
|
|
86
|
+
/** Opaque cursor for the next chunk. Absent when done. */
|
|
87
|
+
nextCursor?: string;
|
|
88
|
+
/** True when the complete normalized document text has been consumed. */
|
|
89
|
+
done?: boolean;
|
|
90
|
+
/** Stable hash of the normalized full text for progress/deduplication. */
|
|
91
|
+
contentHash?: string;
|
|
92
|
+
scroll?: BrowserScrollState;
|
|
93
|
+
/** Compatibility alias for !done. */
|
|
52
94
|
truncated?: boolean;
|
|
53
95
|
detail?: string;
|
|
54
96
|
}
|
|
@@ -109,7 +151,7 @@ export interface BrowserBridge {
|
|
|
109
151
|
navigate(url: string): Promise<BrowserResult>;
|
|
110
152
|
scroll(dir: "up" | "down", amount?: number): Promise<BrowserResult>;
|
|
111
153
|
/** Read the page's main readable text content (for summarizing / extraction). */
|
|
112
|
-
readContent(): Promise<BrowserContent>;
|
|
154
|
+
readContent(options?: BrowserReadOptions): Promise<BrowserContent>;
|
|
113
155
|
/** Extract the page's hyperlink + image URLs (href/src the a11y tree omits). */
|
|
114
156
|
extractLinks(): Promise<BrowserExtract>;
|
|
115
157
|
/** Wait until the page finishes loading (or a timeout). */
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* BrowserBridge — driver-agnostic contract between the browser tools (core)
|
|
3
|
-
* and whatever drives the actual browser (renderer
|
|
3
|
+
* and whatever drives the actual browser (a renderer webview, hidden main-
|
|
4
|
+
* process BrowserWindow, or external provider via CDP).
|
|
4
5
|
*
|
|
5
6
|
* Spec: docs/superpowers/specs/2026-06-16-browser-automation-mvp.md
|
|
6
7
|
*
|
|
7
|
-
* The core tools only know this interface.
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* touching the tools. Undefined on ToolContext → headless / no panel → tools
|
|
13
|
-
* degrade with a clear error.
|
|
8
|
+
* The core tools only know this interface. Desktop can implement it with a
|
|
9
|
+
* Playwright-owned context, Electron `webContents.debugger`, or an authorized
|
|
10
|
+
* Chrome-extension CDP transport. Keeping it driver-agnostic lets those targets
|
|
11
|
+
* swap without touching the tools. Undefined on ToolContext means the current
|
|
12
|
+
* host did not provide browser automation, so tools degrade with a clear error.
|
|
14
13
|
*/
|
|
15
14
|
/** Roles we surface as actionable/meaningful to the agent. */
|
|
16
15
|
const INTERACTIVE_ROLES = new Set([
|
|
@@ -69,7 +68,7 @@ export function flattenAxTree(nodes) {
|
|
|
69
68
|
if (node.backendDOMNodeId === undefined)
|
|
70
69
|
continue;
|
|
71
70
|
const sensitive = propValue(node, "protected") === true || // ARIA "protected" → password-like
|
|
72
|
-
role === "textbox" && /password|密码/i.test(name);
|
|
71
|
+
(role === "textbox" && /password|密码/i.test(name));
|
|
73
72
|
counter += 1;
|
|
74
73
|
const ref = `e${counter}`;
|
|
75
74
|
refToBackendId[ref] = node.backendDOMNodeId;
|
|
@@ -21,13 +21,13 @@ export declare const DEFAULT_HEARTBEAT_INTERVAL_MS = 30000;
|
|
|
21
21
|
export interface AgentHeartbeatConfig {
|
|
22
22
|
intervalMs?: number;
|
|
23
23
|
/** Sink for each heartbeat event (server forwards to the client). */
|
|
24
|
-
publish
|
|
24
|
+
publish?: (sessionId: string, event: StreamEvent) => void;
|
|
25
25
|
/** Injectable clock for tests. */
|
|
26
26
|
now?: () => number;
|
|
27
27
|
}
|
|
28
28
|
export declare class AgentHeartbeatPinger {
|
|
29
29
|
private readonly intervalMs;
|
|
30
|
-
private readonly publish
|
|
30
|
+
private readonly publish?;
|
|
31
31
|
private readonly now;
|
|
32
32
|
private timer;
|
|
33
33
|
constructor(config: AgentHeartbeatConfig);
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
* Heartbeat.ts / chat-session-manager sweeper pattern.
|
|
17
17
|
*/
|
|
18
18
|
import { asyncAgentRegistry } from "./agent-registry.js";
|
|
19
|
-
import {
|
|
19
|
+
import { notificationQueue } from "./agent-notifications.js";
|
|
20
|
+
import { initialAgentProgress } from "./agent-progress.js";
|
|
20
21
|
/** Default 30s — user-chosen. Stale threshold downstream is 3× (90s). */
|
|
21
22
|
export const DEFAULT_HEARTBEAT_INTERVAL_MS = 30_000;
|
|
22
23
|
export class AgentHeartbeatPinger {
|
|
@@ -56,20 +57,35 @@ export class AgentHeartbeatPinger {
|
|
|
56
57
|
return;
|
|
57
58
|
}
|
|
58
59
|
const bySession = new Map();
|
|
60
|
+
const ts = this.now();
|
|
59
61
|
for (const e of running) {
|
|
60
62
|
// Background agents always carry their spawning sessionId; skip any
|
|
61
63
|
// legacy/ad-hoc entry without one (can't address a heartbeat to nobody).
|
|
62
64
|
if (!e.sessionId)
|
|
63
65
|
continue;
|
|
66
|
+
if (!this.publish) {
|
|
67
|
+
notificationQueue.enqueue({
|
|
68
|
+
kind: "progress",
|
|
69
|
+
from: {
|
|
70
|
+
sessionId: e.childSessionId ?? e.agentId,
|
|
71
|
+
agentId: e.agentId,
|
|
72
|
+
authority: "agent",
|
|
73
|
+
},
|
|
74
|
+
to: { sessionId: e.sessionId, authority: "agent" },
|
|
75
|
+
delivery: "observe-only",
|
|
76
|
+
runtimeGeneration: e.runtimeGeneration,
|
|
77
|
+
payload: e.progress ?? initialAgentProgress(ts),
|
|
78
|
+
});
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
64
81
|
const list = bySession.get(e.sessionId);
|
|
65
82
|
if (list)
|
|
66
83
|
list.push(e.agentId);
|
|
67
84
|
else
|
|
68
85
|
bySession.set(e.sessionId, [e.agentId]);
|
|
69
86
|
}
|
|
70
|
-
const ts = this.now();
|
|
71
87
|
for (const [sessionId, agentIds] of bySession) {
|
|
72
|
-
this.publish(sessionId, { type: "agent_heartbeat", agentIds, ts });
|
|
88
|
+
this.publish?.(sessionId, { type: "agent_heartbeat", agentIds, ts });
|
|
73
89
|
}
|
|
74
90
|
}
|
|
75
91
|
}
|
|
@@ -79,9 +95,7 @@ export class AgentHeartbeatPinger {
|
|
|
79
95
|
* event to the client). `ensureRunning()` is called when an agent backgrounds;
|
|
80
96
|
* the pinger self-stops once no agent is running, so a fresh handoff re-arms it.
|
|
81
97
|
*/
|
|
82
|
-
export const agentHeartbeatPinger = new AgentHeartbeatPinger({
|
|
83
|
-
publish: (sessionId, event) => agentNotificationBus.publish(sessionId, event),
|
|
84
|
-
});
|
|
98
|
+
export const agentHeartbeatPinger = new AgentHeartbeatPinger({});
|
|
85
99
|
/** Start the shared pinger if not already ticking (idempotent). Call when an
|
|
86
100
|
* agent enters the background. */
|
|
87
101
|
export function ensureAgentHeartbeat() {
|
|
@@ -1,54 +1,120 @@
|
|
|
1
1
|
import type { BackgroundAgentCompletedEvent, StreamEvent } from "../../types.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
2
|
+
export type NotificationAuthority = "user" | "agent" | "system" | "policy";
|
|
3
|
+
export interface NotificationEndpoint {
|
|
4
|
+
sessionId: string;
|
|
5
|
+
agentId?: string;
|
|
6
|
+
authority: NotificationAuthority;
|
|
7
|
+
}
|
|
8
|
+
export type DirectionDelivery = "next-safe-point" | "interrupt-and-redrive";
|
|
9
|
+
export type ProgressDelivery = "observe-only";
|
|
10
|
+
export type ResultDelivery = "idle-drain";
|
|
11
|
+
export type AgentProgressPhase = "starting" | "model" | "tool" | "waiting-permission" | "compacting" | "finalizing";
|
|
12
|
+
export interface AgentProgressTokens {
|
|
13
|
+
prompt: number;
|
|
14
|
+
completion: number;
|
|
15
|
+
total: number;
|
|
16
|
+
}
|
|
17
|
+
export interface AgentProgressLastTool {
|
|
18
|
+
name: string;
|
|
19
|
+
state: "running" | "completed" | "failed" | "aborted";
|
|
20
|
+
startedAt?: number;
|
|
21
|
+
finishedAt?: number;
|
|
22
|
+
}
|
|
23
|
+
export interface DirectionPayload {
|
|
24
|
+
prompt: string;
|
|
25
|
+
origin: "agent_send_input";
|
|
26
|
+
}
|
|
27
|
+
export interface ProgressPayload {
|
|
28
|
+
phase: AgentProgressPhase;
|
|
29
|
+
lastTool?: AgentProgressLastTool;
|
|
30
|
+
tokens: AgentProgressTokens;
|
|
31
|
+
summary: string;
|
|
32
|
+
observedAt: number;
|
|
33
|
+
}
|
|
34
|
+
export interface ResultPayload {
|
|
35
|
+
workId: string;
|
|
36
|
+
name?: string;
|
|
37
|
+
description: string;
|
|
38
|
+
status: "completed" | "failed" | "cancelled";
|
|
39
|
+
workKind: "agent" | "shell" | "video" | "cc";
|
|
40
|
+
finalText?: string;
|
|
41
|
+
error?: string;
|
|
42
|
+
command?: string;
|
|
43
|
+
ccSessionId?: string;
|
|
44
|
+
changedFiles?: string[];
|
|
45
|
+
cwd?: string;
|
|
46
|
+
originClientMessageId?: string;
|
|
47
|
+
finishedAt: number;
|
|
48
|
+
}
|
|
49
|
+
interface NotificationEnvelopeBase<K extends "direction" | "progress" | "result", D extends DirectionDelivery | ProgressDelivery | ResultDelivery, P> {
|
|
50
|
+
schemaVersion: 1;
|
|
51
|
+
id: string;
|
|
52
|
+
kind: K;
|
|
53
|
+
from: NotificationEndpoint;
|
|
54
|
+
to: NotificationEndpoint;
|
|
55
|
+
teamId?: string;
|
|
56
|
+
correlationId?: string;
|
|
57
|
+
/** Fences process-local agent runtime generations; trusted producers only. */
|
|
58
|
+
runtimeGeneration?: number;
|
|
59
|
+
sequence: number;
|
|
60
|
+
delivery: D;
|
|
61
|
+
createdAt: number;
|
|
62
|
+
payload: P;
|
|
63
|
+
/** Deprecated read-only aliases kept for one compatibility window. */
|
|
64
|
+
readonly agentId?: string;
|
|
65
|
+
readonly name?: string;
|
|
66
|
+
readonly description?: string;
|
|
67
|
+
readonly status?: "completed" | "failed" | "cancelled";
|
|
68
|
+
readonly workKind?: "agent" | "shell" | "video" | "cc";
|
|
69
|
+
readonly command?: string;
|
|
70
|
+
readonly finalText?: string;
|
|
71
|
+
readonly ccSessionId?: string;
|
|
72
|
+
readonly error?: string;
|
|
73
|
+
readonly changedFiles?: string[];
|
|
74
|
+
readonly cwd?: string;
|
|
75
|
+
readonly originClientMessageId?: string;
|
|
76
|
+
readonly enqueuedAt?: number;
|
|
77
|
+
}
|
|
78
|
+
export type DirectionEnvelope = NotificationEnvelopeBase<"direction", DirectionDelivery, DirectionPayload>;
|
|
79
|
+
export type ProgressEnvelope = NotificationEnvelopeBase<"progress", ProgressDelivery, ProgressPayload>;
|
|
80
|
+
export type ResultEnvelope = NotificationEnvelopeBase<"result", ResultDelivery, ResultPayload> & {
|
|
81
|
+
readonly agentId: string;
|
|
82
|
+
readonly description: string;
|
|
83
|
+
readonly status: "completed" | "failed" | "cancelled";
|
|
84
|
+
readonly enqueuedAt: number;
|
|
85
|
+
};
|
|
86
|
+
export type NotificationEnvelope = DirectionEnvelope | ProgressEnvelope | ResultEnvelope;
|
|
87
|
+
export type DirectionEnvelopeDraft = Omit<DirectionEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
|
|
88
|
+
export type ProgressEnvelopeDraft = Omit<ProgressEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
|
|
89
|
+
export type ResultEnvelopeDraft = Omit<ResultEnvelope, "schemaVersion" | "id" | "sequence" | "createdAt" | "agentId" | "name" | "description" | "status" | "workKind" | "command" | "finalText" | "ccSessionId" | "error" | "changedFiles" | "cwd" | "originClientMessageId" | "enqueuedAt">;
|
|
90
|
+
export type NotificationEnvelopeDraft = DirectionEnvelopeDraft | ProgressEnvelopeDraft | ResultEnvelopeDraft;
|
|
91
|
+
export type DirectionRejectReason = "invalid-request" | "target-not-found" | "target-not-running" | "target-not-ready" | "not-direct-parent" | "cross-session" | "team-not-supported" | "runtime-generation-mismatch" | "intake-closed";
|
|
92
|
+
export type DirectionAck = {
|
|
93
|
+
status: "queued" | "delivered" | "interrupted";
|
|
94
|
+
envelopeId: string;
|
|
95
|
+
sequence: number;
|
|
96
|
+
correlationId?: string;
|
|
97
|
+
target: NotificationEndpoint;
|
|
98
|
+
acceptedAt: number;
|
|
99
|
+
} | {
|
|
100
|
+
status: "rejected";
|
|
101
|
+
reason: DirectionRejectReason;
|
|
102
|
+
target?: NotificationEndpoint;
|
|
103
|
+
rejectedAt: number;
|
|
104
|
+
};
|
|
105
|
+
/** Deprecated producer shape. Queue storage is always NotificationEnvelope. */
|
|
29
106
|
export type NotificationItem = {
|
|
30
107
|
agentId: string;
|
|
31
108
|
name?: string;
|
|
32
109
|
description: string;
|
|
33
110
|
status: "completed" | "failed" | "cancelled";
|
|
34
|
-
/** What kind of background work this was (lets UIs localize the toast). */
|
|
35
111
|
workKind?: "agent" | "shell" | "video" | "cc";
|
|
36
|
-
/** For workKind === "shell": the command that ran. */
|
|
37
112
|
command?: string;
|
|
38
|
-
/** Final assistant text (completed only). */
|
|
39
113
|
finalText?: string;
|
|
40
|
-
/** For workKind === "cc": the external claude session id this drove, so the
|
|
41
|
-
* result is recoverable from ~/.claude/projects/.../<ccSessionId>.jsonl even
|
|
42
|
-
* if this notification is lost, and the user sees a real session id (not just
|
|
43
|
-
* an opaque background jobId). */
|
|
44
114
|
ccSessionId?: string;
|
|
45
|
-
/** Error message (failed/cancelled only). */
|
|
46
115
|
error?: string;
|
|
47
|
-
/** Files attributed to an external DriveAgent transcript. */
|
|
48
116
|
changedFiles?: string[];
|
|
49
|
-
/** DriveAgent cwd used to canonicalize path aliases in clients. */
|
|
50
117
|
cwd?: string;
|
|
51
|
-
/** Client id of the real user turn that launched this background work. */
|
|
52
118
|
originClientMessageId?: string;
|
|
53
119
|
enqueuedAt: number;
|
|
54
120
|
};
|
|
@@ -56,45 +122,34 @@ type Listener = () => void;
|
|
|
56
122
|
declare class NotificationQueue {
|
|
57
123
|
private buckets;
|
|
58
124
|
private listeners;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
125
|
+
private sequences;
|
|
126
|
+
private sequenceRoutes;
|
|
127
|
+
private readonly maxSequenceRoutes;
|
|
128
|
+
enqueue(draft: NotificationEnvelopeDraft): NotificationEnvelope | undefined;
|
|
129
|
+
enqueue(item: NotificationItem, sessionId: string): ResultEnvelope | undefined;
|
|
130
|
+
subscribe: (listener: Listener) => (() => void);
|
|
131
|
+
getSnapshot: (sessionId: string) => readonly NotificationEnvelope[];
|
|
132
|
+
drain(sessionId: string, predicate: (envelope: NotificationEnvelope) => boolean): NotificationEnvelope[];
|
|
133
|
+
/** Compatibility consumer: only terminal results, never direction/progress. */
|
|
134
|
+
drainAll(sessionId: string): ResultEnvelope[];
|
|
135
|
+
clearProgress(sessionId: string, agentId: string, runtimeGeneration?: number): boolean;
|
|
136
|
+
clearDirections(sessionId: string, runtimeGeneration: number): boolean;
|
|
68
137
|
reset(sessionId?: string): void;
|
|
69
138
|
private notify;
|
|
70
139
|
}
|
|
71
|
-
|
|
72
|
-
type
|
|
140
|
+
type EnvelopeBusHandler = (envelope: NotificationEnvelope) => void;
|
|
141
|
+
type LegacyBusHandler = (sessionId: string, event: StreamEvent) => void;
|
|
73
142
|
declare class AgentNotificationBus {
|
|
74
143
|
private handlers;
|
|
75
|
-
publish(
|
|
76
|
-
subscribe(handler:
|
|
144
|
+
publish(envelope: NotificationEnvelope): void;
|
|
145
|
+
subscribe(handler: EnvelopeBusHandler): () => void;
|
|
146
|
+
subscribe(handler: LegacyBusHandler): () => void;
|
|
77
147
|
}
|
|
78
148
|
export declare const agentNotificationBus: AgentNotificationBus;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
export declare function
|
|
85
|
-
/**
|
|
86
|
-
* Render a batch of completion notifications as the XML user-message
|
|
87
|
-
* body that the main agent's LLM will see. Format is stable — main
|
|
88
|
-
* agent prompts can rely on the `<background-agents-completed>` root
|
|
89
|
-
* tag as a signal that this turn is a system-injected notification,
|
|
90
|
-
* not a real user message.
|
|
91
|
-
*/
|
|
92
|
-
export declare function buildNotificationMessage(items: readonly NotificationItem[]): string;
|
|
93
|
-
/**
|
|
94
|
-
* One-line-per-agent human summary for the chat feed. The full result
|
|
95
|
-
* body goes to the LLM via buildNotificationMessage; the user sees only
|
|
96
|
-
* this terse marker plus an optional inline error preview, and can
|
|
97
|
-
* switch to the sub-agent's dock view if they want details.
|
|
98
|
-
*/
|
|
99
|
-
export declare function buildNotificationSummary(items: readonly NotificationItem[]): string;
|
|
149
|
+
export declare const notificationQueue: NotificationQueue;
|
|
150
|
+
export declare function buildAgentDirectionMessage(envelopes: readonly DirectionEnvelope[]): string;
|
|
151
|
+
export declare function notificationItemToStreamEvent(value: NotificationItem | ResultEnvelope): BackgroundAgentCompletedEvent;
|
|
152
|
+
export declare function notificationEnvelopeToLegacyStreamEvent(envelope: NotificationEnvelope): StreamEvent | undefined;
|
|
153
|
+
export declare function buildNotificationMessage(values: readonly (NotificationItem | ResultEnvelope)[]): string;
|
|
154
|
+
export declare function buildNotificationSummary(values: readonly (NotificationItem | ResultEnvelope)[]): string;
|
|
100
155
|
export {};
|