@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
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* create a configured instance (stored in settings.imageGen/videoGen.providers[]).
|
|
7
7
|
* Catalog = "能配哪些"; providers[] = "配了哪些". The two are decoupled.
|
|
8
8
|
*
|
|
9
|
-
* `adapterKind`
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* For text entries, `adapterKind` is the provider/gateway capability identity
|
|
10
|
+
* ("openai"/"openrouter"/"deepseek"/…), while `protocol` selects the wire
|
|
11
|
+
* client. For image/video it remains the concrete runtime adapter selector
|
|
12
|
+
* ("openai"/"google"/"fal"). `shape` is documentation/future only.
|
|
13
13
|
*/
|
|
14
14
|
import { z } from "zod";
|
|
15
15
|
/**
|
|
@@ -59,8 +59,8 @@ export declare const paramSpecSchema: z.ZodObject<{
|
|
|
59
59
|
}, "strip", z.ZodTypeAny, {
|
|
60
60
|
name: string;
|
|
61
61
|
control: "number" | "text" | "enum" | "toggle";
|
|
62
|
-
options?: string[] | undefined;
|
|
63
62
|
default?: string | number | boolean | undefined;
|
|
63
|
+
options?: string[] | undefined;
|
|
64
64
|
label?: string | undefined;
|
|
65
65
|
min?: number | undefined;
|
|
66
66
|
max?: number | undefined;
|
|
@@ -71,8 +71,8 @@ export declare const paramSpecSchema: z.ZodObject<{
|
|
|
71
71
|
}, {
|
|
72
72
|
name: string;
|
|
73
73
|
control: "number" | "text" | "enum" | "toggle";
|
|
74
|
-
options?: string[] | undefined;
|
|
75
74
|
default?: string | number | boolean | undefined;
|
|
75
|
+
options?: string[] | undefined;
|
|
76
76
|
label?: string | undefined;
|
|
77
77
|
min?: number | undefined;
|
|
78
78
|
max?: number | undefined;
|
|
@@ -119,8 +119,8 @@ export declare const modelPresetSchema: z.ZodObject<{
|
|
|
119
119
|
}, "strip", z.ZodTypeAny, {
|
|
120
120
|
name: string;
|
|
121
121
|
control: "number" | "text" | "enum" | "toggle";
|
|
122
|
-
options?: string[] | undefined;
|
|
123
122
|
default?: string | number | boolean | undefined;
|
|
123
|
+
options?: string[] | undefined;
|
|
124
124
|
label?: string | undefined;
|
|
125
125
|
min?: number | undefined;
|
|
126
126
|
max?: number | undefined;
|
|
@@ -131,8 +131,8 @@ export declare const modelPresetSchema: z.ZodObject<{
|
|
|
131
131
|
}, {
|
|
132
132
|
name: string;
|
|
133
133
|
control: "number" | "text" | "enum" | "toggle";
|
|
134
|
-
options?: string[] | undefined;
|
|
135
134
|
default?: string | number | boolean | undefined;
|
|
135
|
+
options?: string[] | undefined;
|
|
136
136
|
label?: string | undefined;
|
|
137
137
|
min?: number | undefined;
|
|
138
138
|
max?: number | undefined;
|
|
@@ -146,8 +146,8 @@ export declare const modelPresetSchema: z.ZodObject<{
|
|
|
146
146
|
params?: {
|
|
147
147
|
name: string;
|
|
148
148
|
control: "number" | "text" | "enum" | "toggle";
|
|
149
|
-
options?: string[] | undefined;
|
|
150
149
|
default?: string | number | boolean | undefined;
|
|
150
|
+
options?: string[] | undefined;
|
|
151
151
|
label?: string | undefined;
|
|
152
152
|
min?: number | undefined;
|
|
153
153
|
max?: number | undefined;
|
|
@@ -156,17 +156,17 @@ export declare const modelPresetSchema: z.ZodObject<{
|
|
|
156
156
|
field: string;
|
|
157
157
|
} | undefined;
|
|
158
158
|
}[] | undefined;
|
|
159
|
-
supportsVision?: boolean | undefined;
|
|
160
|
-
maxOutputTokens?: number | undefined;
|
|
161
159
|
label?: string | undefined;
|
|
162
160
|
maxContextTokens?: number | undefined;
|
|
161
|
+
maxOutputTokens?: number | undefined;
|
|
162
|
+
supportsVision?: boolean | undefined;
|
|
163
163
|
}, {
|
|
164
164
|
value: string;
|
|
165
165
|
params?: {
|
|
166
166
|
name: string;
|
|
167
167
|
control: "number" | "text" | "enum" | "toggle";
|
|
168
|
-
options?: string[] | undefined;
|
|
169
168
|
default?: string | number | boolean | undefined;
|
|
169
|
+
options?: string[] | undefined;
|
|
170
170
|
label?: string | undefined;
|
|
171
171
|
min?: number | undefined;
|
|
172
172
|
max?: number | undefined;
|
|
@@ -175,10 +175,10 @@ export declare const modelPresetSchema: z.ZodObject<{
|
|
|
175
175
|
field: string;
|
|
176
176
|
} | undefined;
|
|
177
177
|
}[] | undefined;
|
|
178
|
-
supportsVision?: boolean | undefined;
|
|
179
|
-
maxOutputTokens?: number | undefined;
|
|
180
178
|
label?: string | undefined;
|
|
181
179
|
maxContextTokens?: number | undefined;
|
|
180
|
+
maxOutputTokens?: number | undefined;
|
|
181
|
+
supportsVision?: boolean | undefined;
|
|
182
182
|
}>;
|
|
183
183
|
export type ModelPreset = z.infer<typeof modelPresetSchema>;
|
|
184
184
|
export declare const catalogEntrySchema: z.ZodObject<{
|
|
@@ -186,7 +186,11 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
186
186
|
id: z.ZodString;
|
|
187
187
|
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
188
188
|
tag: z.ZodEnum<["text", "image", "video", "audio"]>;
|
|
189
|
-
/**
|
|
189
|
+
/**
|
|
190
|
+
* Provider/gateway identity for text (distinct from `protocol`), or concrete
|
|
191
|
+
* runtime adapter for image/video. OpenRouter is `openrouter` even though its
|
|
192
|
+
* text protocol is `openai-compat`.
|
|
193
|
+
*/
|
|
190
194
|
adapterKind: z.ZodString;
|
|
191
195
|
/** LLM client protocol (text entries). */
|
|
192
196
|
protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
|
|
@@ -198,6 +202,13 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
198
202
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
199
203
|
/** Whether this provider needs an API key (ollama/local = false). */
|
|
200
204
|
needsKey: z.ZodOptional<z.ZodBoolean>;
|
|
205
|
+
/**
|
|
206
|
+
* How a user entry with the same id as a built-in provider contributes model
|
|
207
|
+
* presets. Absent/"replace" preserves the legacy full-override behavior;
|
|
208
|
+
* "merge" treats modelPresets as per-model additions/overrides keyed by
|
|
209
|
+
* `value`, so future built-in models remain visible.
|
|
210
|
+
*/
|
|
211
|
+
modelPresetsMode: z.ZodOptional<z.ZodEnum<["replace", "merge"]>>;
|
|
201
212
|
modelPresets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
202
213
|
value: z.ZodString;
|
|
203
214
|
label: z.ZodOptional<z.ZodString>;
|
|
@@ -230,8 +241,8 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
230
241
|
}, "strip", z.ZodTypeAny, {
|
|
231
242
|
name: string;
|
|
232
243
|
control: "number" | "text" | "enum" | "toggle";
|
|
233
|
-
options?: string[] | undefined;
|
|
234
244
|
default?: string | number | boolean | undefined;
|
|
245
|
+
options?: string[] | undefined;
|
|
235
246
|
label?: string | undefined;
|
|
236
247
|
min?: number | undefined;
|
|
237
248
|
max?: number | undefined;
|
|
@@ -242,8 +253,8 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
242
253
|
}, {
|
|
243
254
|
name: string;
|
|
244
255
|
control: "number" | "text" | "enum" | "toggle";
|
|
245
|
-
options?: string[] | undefined;
|
|
246
256
|
default?: string | number | boolean | undefined;
|
|
257
|
+
options?: string[] | undefined;
|
|
247
258
|
label?: string | undefined;
|
|
248
259
|
min?: number | undefined;
|
|
249
260
|
max?: number | undefined;
|
|
@@ -257,8 +268,8 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
257
268
|
params?: {
|
|
258
269
|
name: string;
|
|
259
270
|
control: "number" | "text" | "enum" | "toggle";
|
|
260
|
-
options?: string[] | undefined;
|
|
261
271
|
default?: string | number | boolean | undefined;
|
|
272
|
+
options?: string[] | undefined;
|
|
262
273
|
label?: string | undefined;
|
|
263
274
|
min?: number | undefined;
|
|
264
275
|
max?: number | undefined;
|
|
@@ -267,17 +278,17 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
267
278
|
field: string;
|
|
268
279
|
} | undefined;
|
|
269
280
|
}[] | undefined;
|
|
270
|
-
supportsVision?: boolean | undefined;
|
|
271
|
-
maxOutputTokens?: number | undefined;
|
|
272
281
|
label?: string | undefined;
|
|
273
282
|
maxContextTokens?: number | undefined;
|
|
283
|
+
maxOutputTokens?: number | undefined;
|
|
284
|
+
supportsVision?: boolean | undefined;
|
|
274
285
|
}, {
|
|
275
286
|
value: string;
|
|
276
287
|
params?: {
|
|
277
288
|
name: string;
|
|
278
289
|
control: "number" | "text" | "enum" | "toggle";
|
|
279
|
-
options?: string[] | undefined;
|
|
280
290
|
default?: string | number | boolean | undefined;
|
|
291
|
+
options?: string[] | undefined;
|
|
281
292
|
label?: string | undefined;
|
|
282
293
|
min?: number | undefined;
|
|
283
294
|
max?: number | undefined;
|
|
@@ -286,10 +297,10 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
286
297
|
field: string;
|
|
287
298
|
} | undefined;
|
|
288
299
|
}[] | undefined;
|
|
289
|
-
supportsVision?: boolean | undefined;
|
|
290
|
-
maxOutputTokens?: number | undefined;
|
|
291
300
|
label?: string | undefined;
|
|
292
301
|
maxContextTokens?: number | undefined;
|
|
302
|
+
maxOutputTokens?: number | undefined;
|
|
303
|
+
supportsVision?: boolean | undefined;
|
|
293
304
|
}>, "many">>;
|
|
294
305
|
signupUrl: z.ZodOptional<z.ZodString>;
|
|
295
306
|
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
@@ -303,22 +314,23 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
303
314
|
}, "strip", z.ZodTypeAny, {
|
|
304
315
|
id: string;
|
|
305
316
|
tag: "text" | "image" | "video" | "audio";
|
|
317
|
+
description: string;
|
|
306
318
|
adapterKind: string;
|
|
307
319
|
displayName: string;
|
|
308
|
-
description: string;
|
|
309
320
|
defaultBaseUrl: string;
|
|
310
321
|
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
311
322
|
test?: boolean | undefined;
|
|
312
323
|
defaultModel?: string | undefined;
|
|
313
324
|
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
314
325
|
needsKey?: boolean | undefined;
|
|
326
|
+
modelPresetsMode?: "replace" | "merge" | undefined;
|
|
315
327
|
modelPresets?: {
|
|
316
328
|
value: string;
|
|
317
329
|
params?: {
|
|
318
330
|
name: string;
|
|
319
331
|
control: "number" | "text" | "enum" | "toggle";
|
|
320
|
-
options?: string[] | undefined;
|
|
321
332
|
default?: string | number | boolean | undefined;
|
|
333
|
+
options?: string[] | undefined;
|
|
322
334
|
label?: string | undefined;
|
|
323
335
|
min?: number | undefined;
|
|
324
336
|
max?: number | undefined;
|
|
@@ -327,32 +339,33 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
327
339
|
field: string;
|
|
328
340
|
} | undefined;
|
|
329
341
|
}[] | undefined;
|
|
330
|
-
supportsVision?: boolean | undefined;
|
|
331
|
-
maxOutputTokens?: number | undefined;
|
|
332
342
|
label?: string | undefined;
|
|
333
343
|
maxContextTokens?: number | undefined;
|
|
344
|
+
maxOutputTokens?: number | undefined;
|
|
345
|
+
supportsVision?: boolean | undefined;
|
|
334
346
|
}[] | undefined;
|
|
335
347
|
signupUrl?: string | undefined;
|
|
336
348
|
paramsDoc?: string | undefined;
|
|
337
349
|
}, {
|
|
338
350
|
id: string;
|
|
339
351
|
tag: "text" | "image" | "video" | "audio";
|
|
352
|
+
description: string;
|
|
340
353
|
adapterKind: string;
|
|
341
354
|
displayName: string;
|
|
342
|
-
description: string;
|
|
343
355
|
defaultBaseUrl: string;
|
|
344
356
|
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
345
357
|
test?: boolean | undefined;
|
|
346
358
|
defaultModel?: string | undefined;
|
|
347
359
|
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
348
360
|
needsKey?: boolean | undefined;
|
|
361
|
+
modelPresetsMode?: "replace" | "merge" | undefined;
|
|
349
362
|
modelPresets?: {
|
|
350
363
|
value: string;
|
|
351
364
|
params?: {
|
|
352
365
|
name: string;
|
|
353
366
|
control: "number" | "text" | "enum" | "toggle";
|
|
354
|
-
options?: string[] | undefined;
|
|
355
367
|
default?: string | number | boolean | undefined;
|
|
368
|
+
options?: string[] | undefined;
|
|
356
369
|
label?: string | undefined;
|
|
357
370
|
min?: number | undefined;
|
|
358
371
|
max?: number | undefined;
|
|
@@ -361,10 +374,10 @@ export declare const catalogEntrySchema: z.ZodObject<{
|
|
|
361
374
|
field: string;
|
|
362
375
|
} | undefined;
|
|
363
376
|
}[] | undefined;
|
|
364
|
-
supportsVision?: boolean | undefined;
|
|
365
|
-
maxOutputTokens?: number | undefined;
|
|
366
377
|
label?: string | undefined;
|
|
367
378
|
maxContextTokens?: number | undefined;
|
|
379
|
+
maxOutputTokens?: number | undefined;
|
|
380
|
+
supportsVision?: boolean | undefined;
|
|
368
381
|
}[] | undefined;
|
|
369
382
|
signupUrl?: string | undefined;
|
|
370
383
|
paramsDoc?: string | undefined;
|
|
@@ -376,7 +389,11 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
376
389
|
id: z.ZodString;
|
|
377
390
|
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
378
391
|
tag: z.ZodEnum<["text", "image", "video", "audio"]>;
|
|
379
|
-
/**
|
|
392
|
+
/**
|
|
393
|
+
* Provider/gateway identity for text (distinct from `protocol`), or concrete
|
|
394
|
+
* runtime adapter for image/video. OpenRouter is `openrouter` even though its
|
|
395
|
+
* text protocol is `openai-compat`.
|
|
396
|
+
*/
|
|
380
397
|
adapterKind: z.ZodString;
|
|
381
398
|
/** LLM client protocol (text entries). */
|
|
382
399
|
protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
|
|
@@ -388,6 +405,13 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
388
405
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
389
406
|
/** Whether this provider needs an API key (ollama/local = false). */
|
|
390
407
|
needsKey: z.ZodOptional<z.ZodBoolean>;
|
|
408
|
+
/**
|
|
409
|
+
* How a user entry with the same id as a built-in provider contributes model
|
|
410
|
+
* presets. Absent/"replace" preserves the legacy full-override behavior;
|
|
411
|
+
* "merge" treats modelPresets as per-model additions/overrides keyed by
|
|
412
|
+
* `value`, so future built-in models remain visible.
|
|
413
|
+
*/
|
|
414
|
+
modelPresetsMode: z.ZodOptional<z.ZodEnum<["replace", "merge"]>>;
|
|
391
415
|
modelPresets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
392
416
|
value: z.ZodString;
|
|
393
417
|
label: z.ZodOptional<z.ZodString>;
|
|
@@ -420,8 +444,8 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
420
444
|
}, "strip", z.ZodTypeAny, {
|
|
421
445
|
name: string;
|
|
422
446
|
control: "number" | "text" | "enum" | "toggle";
|
|
423
|
-
options?: string[] | undefined;
|
|
424
447
|
default?: string | number | boolean | undefined;
|
|
448
|
+
options?: string[] | undefined;
|
|
425
449
|
label?: string | undefined;
|
|
426
450
|
min?: number | undefined;
|
|
427
451
|
max?: number | undefined;
|
|
@@ -432,8 +456,8 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
432
456
|
}, {
|
|
433
457
|
name: string;
|
|
434
458
|
control: "number" | "text" | "enum" | "toggle";
|
|
435
|
-
options?: string[] | undefined;
|
|
436
459
|
default?: string | number | boolean | undefined;
|
|
460
|
+
options?: string[] | undefined;
|
|
437
461
|
label?: string | undefined;
|
|
438
462
|
min?: number | undefined;
|
|
439
463
|
max?: number | undefined;
|
|
@@ -447,8 +471,8 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
447
471
|
params?: {
|
|
448
472
|
name: string;
|
|
449
473
|
control: "number" | "text" | "enum" | "toggle";
|
|
450
|
-
options?: string[] | undefined;
|
|
451
474
|
default?: string | number | boolean | undefined;
|
|
475
|
+
options?: string[] | undefined;
|
|
452
476
|
label?: string | undefined;
|
|
453
477
|
min?: number | undefined;
|
|
454
478
|
max?: number | undefined;
|
|
@@ -457,17 +481,17 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
457
481
|
field: string;
|
|
458
482
|
} | undefined;
|
|
459
483
|
}[] | undefined;
|
|
460
|
-
supportsVision?: boolean | undefined;
|
|
461
|
-
maxOutputTokens?: number | undefined;
|
|
462
484
|
label?: string | undefined;
|
|
463
485
|
maxContextTokens?: number | undefined;
|
|
486
|
+
maxOutputTokens?: number | undefined;
|
|
487
|
+
supportsVision?: boolean | undefined;
|
|
464
488
|
}, {
|
|
465
489
|
value: string;
|
|
466
490
|
params?: {
|
|
467
491
|
name: string;
|
|
468
492
|
control: "number" | "text" | "enum" | "toggle";
|
|
469
|
-
options?: string[] | undefined;
|
|
470
493
|
default?: string | number | boolean | undefined;
|
|
494
|
+
options?: string[] | undefined;
|
|
471
495
|
label?: string | undefined;
|
|
472
496
|
min?: number | undefined;
|
|
473
497
|
max?: number | undefined;
|
|
@@ -476,10 +500,10 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
476
500
|
field: string;
|
|
477
501
|
} | undefined;
|
|
478
502
|
}[] | undefined;
|
|
479
|
-
supportsVision?: boolean | undefined;
|
|
480
|
-
maxOutputTokens?: number | undefined;
|
|
481
503
|
label?: string | undefined;
|
|
482
504
|
maxContextTokens?: number | undefined;
|
|
505
|
+
maxOutputTokens?: number | undefined;
|
|
506
|
+
supportsVision?: boolean | undefined;
|
|
483
507
|
}>, "many">>;
|
|
484
508
|
signupUrl: z.ZodOptional<z.ZodString>;
|
|
485
509
|
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
@@ -493,22 +517,23 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
493
517
|
}, "strip", z.ZodTypeAny, {
|
|
494
518
|
id: string;
|
|
495
519
|
tag: "text" | "image" | "video" | "audio";
|
|
520
|
+
description: string;
|
|
496
521
|
adapterKind: string;
|
|
497
522
|
displayName: string;
|
|
498
|
-
description: string;
|
|
499
523
|
defaultBaseUrl: string;
|
|
500
524
|
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
501
525
|
test?: boolean | undefined;
|
|
502
526
|
defaultModel?: string | undefined;
|
|
503
527
|
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
504
528
|
needsKey?: boolean | undefined;
|
|
529
|
+
modelPresetsMode?: "replace" | "merge" | undefined;
|
|
505
530
|
modelPresets?: {
|
|
506
531
|
value: string;
|
|
507
532
|
params?: {
|
|
508
533
|
name: string;
|
|
509
534
|
control: "number" | "text" | "enum" | "toggle";
|
|
510
|
-
options?: string[] | undefined;
|
|
511
535
|
default?: string | number | boolean | undefined;
|
|
536
|
+
options?: string[] | undefined;
|
|
512
537
|
label?: string | undefined;
|
|
513
538
|
min?: number | undefined;
|
|
514
539
|
max?: number | undefined;
|
|
@@ -517,32 +542,33 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
517
542
|
field: string;
|
|
518
543
|
} | undefined;
|
|
519
544
|
}[] | undefined;
|
|
520
|
-
supportsVision?: boolean | undefined;
|
|
521
|
-
maxOutputTokens?: number | undefined;
|
|
522
545
|
label?: string | undefined;
|
|
523
546
|
maxContextTokens?: number | undefined;
|
|
547
|
+
maxOutputTokens?: number | undefined;
|
|
548
|
+
supportsVision?: boolean | undefined;
|
|
524
549
|
}[] | undefined;
|
|
525
550
|
signupUrl?: string | undefined;
|
|
526
551
|
paramsDoc?: string | undefined;
|
|
527
552
|
}, {
|
|
528
553
|
id: string;
|
|
529
554
|
tag: "text" | "image" | "video" | "audio";
|
|
555
|
+
description: string;
|
|
530
556
|
adapterKind: string;
|
|
531
557
|
displayName: string;
|
|
532
|
-
description: string;
|
|
533
558
|
defaultBaseUrl: string;
|
|
534
559
|
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
535
560
|
test?: boolean | undefined;
|
|
536
561
|
defaultModel?: string | undefined;
|
|
537
562
|
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
538
563
|
needsKey?: boolean | undefined;
|
|
564
|
+
modelPresetsMode?: "replace" | "merge" | undefined;
|
|
539
565
|
modelPresets?: {
|
|
540
566
|
value: string;
|
|
541
567
|
params?: {
|
|
542
568
|
name: string;
|
|
543
569
|
control: "number" | "text" | "enum" | "toggle";
|
|
544
|
-
options?: string[] | undefined;
|
|
545
570
|
default?: string | number | boolean | undefined;
|
|
571
|
+
options?: string[] | undefined;
|
|
546
572
|
label?: string | undefined;
|
|
547
573
|
min?: number | undefined;
|
|
548
574
|
max?: number | undefined;
|
|
@@ -551,10 +577,10 @@ export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
|
551
577
|
field: string;
|
|
552
578
|
} | undefined;
|
|
553
579
|
}[] | undefined;
|
|
554
|
-
supportsVision?: boolean | undefined;
|
|
555
|
-
maxOutputTokens?: number | undefined;
|
|
556
580
|
label?: string | undefined;
|
|
557
581
|
maxContextTokens?: number | undefined;
|
|
582
|
+
maxOutputTokens?: number | undefined;
|
|
583
|
+
supportsVision?: boolean | undefined;
|
|
558
584
|
}[] | undefined;
|
|
559
585
|
signupUrl?: string | undefined;
|
|
560
586
|
paramsDoc?: string | undefined;
|
|
@@ -6,10 +6,10 @@
|
|
|
6
6
|
* create a configured instance (stored in settings.imageGen/videoGen.providers[]).
|
|
7
7
|
* Catalog = "能配哪些"; providers[] = "配了哪些". The two are decoupled.
|
|
8
8
|
*
|
|
9
|
-
* `adapterKind`
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
9
|
+
* For text entries, `adapterKind` is the provider/gateway capability identity
|
|
10
|
+
* ("openai"/"openrouter"/"deepseek"/…), while `protocol` selects the wire
|
|
11
|
+
* client. For image/video it remains the concrete runtime adapter selector
|
|
12
|
+
* ("openai"/"google"/"fal"). `shape` is documentation/future only.
|
|
13
13
|
*/
|
|
14
14
|
import { z } from "zod";
|
|
15
15
|
/**
|
|
@@ -66,7 +66,11 @@ export const catalogEntrySchema = z.object({
|
|
|
66
66
|
id: z.string(),
|
|
67
67
|
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
68
68
|
tag: z.enum(["text", "image", "video", "audio"]),
|
|
69
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Provider/gateway identity for text (distinct from `protocol`), or concrete
|
|
71
|
+
* runtime adapter for image/video. OpenRouter is `openrouter` even though its
|
|
72
|
+
* text protocol is `openai-compat`.
|
|
73
|
+
*/
|
|
70
74
|
adapterKind: z.string(),
|
|
71
75
|
/** LLM client protocol (text entries). */
|
|
72
76
|
protocol: z.enum(["openai-compat", "anthropic-style"]).optional(),
|
|
@@ -78,6 +82,13 @@ export const catalogEntrySchema = z.object({
|
|
|
78
82
|
defaultModel: z.string().optional(),
|
|
79
83
|
/** Whether this provider needs an API key (ollama/local = false). */
|
|
80
84
|
needsKey: z.boolean().optional(),
|
|
85
|
+
/**
|
|
86
|
+
* How a user entry with the same id as a built-in provider contributes model
|
|
87
|
+
* presets. Absent/"replace" preserves the legacy full-override behavior;
|
|
88
|
+
* "merge" treats modelPresets as per-model additions/overrides keyed by
|
|
89
|
+
* `value`, so future built-in models remain visible.
|
|
90
|
+
*/
|
|
91
|
+
modelPresetsMode: z.enum(["replace", "merge"]).optional(),
|
|
81
92
|
modelPresets: z.array(modelPresetSchema).optional(),
|
|
82
93
|
signupUrl: z.string().optional(),
|
|
83
94
|
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
* wraps this with backup + zod validate + atomic write.
|
|
6
6
|
* See docs/superpowers/specs/2026-06-15-unified-model-catalog-design.md §7.
|
|
7
7
|
*/
|
|
8
|
-
import type { CatalogEntry } from "./types.js";
|
|
8
|
+
import type { CatalogEntry, ModelPreset } from "./types.js";
|
|
9
9
|
export declare function upsertCatalogEntry(existing: CatalogEntry[], entry: CatalogEntry): CatalogEntry[];
|
|
10
|
+
/** Add or replace one model preset by its provider-scoped model id. */
|
|
11
|
+
export declare function upsertModelPreset(existing: ModelPreset[], preset: ModelPreset): ModelPreset[];
|
|
@@ -6,3 +6,12 @@ export function upsertCatalogEntry(existing, entry) {
|
|
|
6
6
|
next[idx] = entry;
|
|
7
7
|
return next;
|
|
8
8
|
}
|
|
9
|
+
/** Add or replace one model preset by its provider-scoped model id. */
|
|
10
|
+
export function upsertModelPreset(existing, preset) {
|
|
11
|
+
const idx = existing.findIndex((candidate) => candidate.value === preset.value);
|
|
12
|
+
if (idx === -1)
|
|
13
|
+
return [...existing, preset];
|
|
14
|
+
const next = existing.slice();
|
|
15
|
+
next[idx] = preset;
|
|
16
|
+
return next;
|
|
17
|
+
}
|
package/dist/onboarding.d.ts
CHANGED
package/dist/onboarding.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* (see src/ui/components/OnboardingPrompt.tsx); this module only exposes
|
|
5
5
|
* pure(-ish) helpers it consumes, so there's a single input stack.
|
|
6
6
|
*/
|
|
7
|
-
import { mkdirSync, writeFileSync, readFileSync, existsSync, renameSync, rmSync
|
|
7
|
+
import { mkdirSync, writeFileSync, readFileSync, existsSync, renameSync, rmSync } from "node:fs";
|
|
8
8
|
import { join } from "node:path";
|
|
9
9
|
import { userHome } from "./settings/manager.js";
|
|
10
10
|
import { getOpenRouterModels } from "./data/openrouter-models.js";
|
|
@@ -344,24 +344,3 @@ export function appendOnboardingResult(opts) {
|
|
|
344
344
|
rmSync(tmp, { force: true });
|
|
345
345
|
}
|
|
346
346
|
}
|
|
347
|
-
// saveArenaSettings removed — replaced by saveArenaSettingsByKeys
|
|
348
|
-
export function saveArenaSettingsByKeys(keys) {
|
|
349
|
-
const dir = join(userHome(), ".code-shell");
|
|
350
|
-
const file = join(dir, "settings.json");
|
|
351
|
-
let existing = {};
|
|
352
|
-
if (existsSync(file)) {
|
|
353
|
-
try {
|
|
354
|
-
existing = JSON.parse(readFileSync(file, "utf-8"));
|
|
355
|
-
}
|
|
356
|
-
catch { }
|
|
357
|
-
}
|
|
358
|
-
const updated = {
|
|
359
|
-
...existing,
|
|
360
|
-
arena: { participants: keys },
|
|
361
|
-
};
|
|
362
|
-
writeFileSync(file, JSON.stringify(updated, null, 2) + "\n", { encoding: "utf-8", mode: 0o600 });
|
|
363
|
-
try {
|
|
364
|
-
chmodSync(file, 0o600);
|
|
365
|
-
}
|
|
366
|
-
catch { /* best-effort */ }
|
|
367
|
-
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export interface PanelAppBindingPolicy {
|
|
2
|
+
/** Panel Apps are unavailable without a concrete project. */
|
|
3
|
+
hasProject: boolean;
|
|
4
|
+
/** Apps explicitly bound by this project's settings. */
|
|
5
|
+
boundApps: ReadonlySet<string>;
|
|
6
|
+
/** User-level emergency/master disable switch. */
|
|
7
|
+
globalDisabledApps: ReadonlySet<string>;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Resolve a session/worktree cwd back to the project whose Panel App bindings
|
|
11
|
+
* it owns. Git worktrees point at `<project>/.git/worktrees/<name>` from their
|
|
12
|
+
* `.git` file; normal repositories and non-git projects use their own root.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolvePanelAppBindingProjectPath(cwd: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Resolve the one policy shared by Desktop discovery and Skill scanning.
|
|
17
|
+
*
|
|
18
|
+
* Installed Panel Apps are a global catalog, but they contribute no UI, tools,
|
|
19
|
+
* Skills, or storage to a project until that project explicitly binds them.
|
|
20
|
+
* Legacy `panelAppOverrides.on` entries count as an explicit binding so
|
|
21
|
+
* projects that already opted in do not silently lose their app.
|
|
22
|
+
*/
|
|
23
|
+
export declare function resolvePanelAppBindingPolicy(userSettings: Record<string, unknown> | undefined, projectSettings: Record<string, unknown> | undefined, hasProject: boolean): PanelAppBindingPolicy;
|
|
24
|
+
export declare function isPanelAppBound(appId: string, policy: PanelAppBindingPolicy): boolean;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { existsSync, readFileSync, statSync } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve, sep } from "node:path";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve a session/worktree cwd back to the project whose Panel App bindings
|
|
5
|
+
* it owns. Git worktrees point at `<project>/.git/worktrees/<name>` from their
|
|
6
|
+
* `.git` file; normal repositories and non-git projects use their own root.
|
|
7
|
+
*/
|
|
8
|
+
export function resolvePanelAppBindingProjectPath(cwd) {
|
|
9
|
+
if (typeof cwd !== "string" || cwd.trim().length === 0)
|
|
10
|
+
return "";
|
|
11
|
+
let current = resolve(cwd);
|
|
12
|
+
while (true) {
|
|
13
|
+
const gitEntry = join(current, ".git");
|
|
14
|
+
if (existsSync(gitEntry)) {
|
|
15
|
+
try {
|
|
16
|
+
if (statSync(gitEntry).isDirectory())
|
|
17
|
+
return current;
|
|
18
|
+
const match = /^gitdir:\s*(.+)\s*$/i.exec(readFileSync(gitEntry, "utf8"));
|
|
19
|
+
if (!match)
|
|
20
|
+
return current;
|
|
21
|
+
const gitDir = resolve(current, match[1]);
|
|
22
|
+
const marker = `${sep}.git${sep}worktrees${sep}`;
|
|
23
|
+
const markerIndex = gitDir.lastIndexOf(marker);
|
|
24
|
+
return markerIndex >= 0 ? gitDir.slice(0, markerIndex) : current;
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
return current;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const parent = dirname(current);
|
|
31
|
+
if (parent === current)
|
|
32
|
+
return resolve(cwd);
|
|
33
|
+
current = parent;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function stringSet(value) {
|
|
37
|
+
return new Set(Array.isArray(value)
|
|
38
|
+
? value.filter((candidate) => typeof candidate === "string" && candidate.length > 0)
|
|
39
|
+
: []);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the one policy shared by Desktop discovery and Skill scanning.
|
|
43
|
+
*
|
|
44
|
+
* Installed Panel Apps are a global catalog, but they contribute no UI, tools,
|
|
45
|
+
* Skills, or storage to a project until that project explicitly binds them.
|
|
46
|
+
* Legacy `panelAppOverrides.on` entries count as an explicit binding so
|
|
47
|
+
* projects that already opted in do not silently lose their app.
|
|
48
|
+
*/
|
|
49
|
+
export function resolvePanelAppBindingPolicy(userSettings, projectSettings, hasProject) {
|
|
50
|
+
const globalDisabledApps = stringSet(userSettings?.disabledPanelApps);
|
|
51
|
+
const boundApps = hasProject ? stringSet(projectSettings?.panelAppBindings) : new Set();
|
|
52
|
+
const legacyOverrides = projectSettings?.panelAppOverrides &&
|
|
53
|
+
typeof projectSettings.panelAppOverrides === "object" &&
|
|
54
|
+
!Array.isArray(projectSettings.panelAppOverrides)
|
|
55
|
+
? projectSettings.panelAppOverrides
|
|
56
|
+
: {};
|
|
57
|
+
if (hasProject) {
|
|
58
|
+
for (const [id, value] of Object.entries(legacyOverrides)) {
|
|
59
|
+
if (value === "on")
|
|
60
|
+
boundApps.add(id);
|
|
61
|
+
else if (value === "off")
|
|
62
|
+
boundApps.delete(id);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { hasProject, boundApps, globalDisabledApps };
|
|
66
|
+
}
|
|
67
|
+
export function isPanelAppBound(appId, policy) {
|
|
68
|
+
return policy.hasProject && policy.boundApps.has(appId) && !policy.globalDisabledApps.has(appId);
|
|
69
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 只描述这里真正用到的能力:「用一个 URL 和 init 调用它,拿回 Response」。
|
|
3
|
+
*
|
|
4
|
+
* 刻意不写成 `typeof globalThis.fetch`。那是**完整**的运行时 fetch,包含
|
|
5
|
+
* 实现自带的挂载属性——Bun 1.3 加了 `fetch.preconnect` 之后,每个只提供函数
|
|
6
|
+
* 的测试 stub 都不再满足这个类型(`Property 'preconnect' is missing`),
|
|
7
|
+
* 尽管本文件从头到尾只调用它。绑定到实际契约上,让运行时给 fetch 加静态属性
|
|
8
|
+
* 不再变成下游的类型破坏。
|
|
9
|
+
*/
|
|
10
|
+
export type PanelAppArchiveFetch = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
11
|
+
export interface GitHubPanelAppArchiveSource {
|
|
12
|
+
url: string;
|
|
13
|
+
ref?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Download one atomic GitHub source snapshot with bounded memory and disk use.
|
|
17
|
+
* Codeload avoids the smart-Git checkout path that can strand git-remote-https
|
|
18
|
+
* helpers on poor networks. The caller selectively extracts the requested
|
|
19
|
+
* Panel App subdirectory afterward.
|
|
20
|
+
*/
|
|
21
|
+
export declare function downloadGitHubPanelAppArchive(source: GitHubPanelAppArchiveSource, targetPath: string, fetchImpl?: PanelAppArchiveFetch): Promise<void>;
|