@cjhyy/code-shell-core 0.5.0-rc.2 → 0.6.0-rc.1
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 +13 -10
- package/dist/agent/agent-definition-registry.d.ts +3 -0
- package/dist/agent/agent-definition-registry.js +3 -1
- package/dist/agent/agent-definition.d.ts +15 -0
- package/dist/agent/agent-definition.js +27 -3
- package/dist/arena/context/context-tools.js +47 -4
- package/dist/arena/ledger.js +9 -1
- package/dist/arena/strategies/utils.d.ts +1 -4
- package/dist/arena/strategies/utils.js +7 -84
- package/dist/automation/cron-expr.d.ts +10 -0
- package/dist/automation/cron-expr.js +23 -5
- package/dist/automation/runner.d.ts +21 -4
- package/dist/automation/runner.js +48 -12
- package/dist/automation/scheduler.d.ts +38 -0
- package/dist/automation/scheduler.js +89 -12
- package/dist/automation/store.js +5 -2
- package/dist/capability-control/disabled-lists.d.ts +25 -0
- package/dist/capability-control/disabled-lists.js +57 -0
- package/dist/capability-control/overlay.d.ts +15 -0
- package/dist/capability-control/overlay.js +27 -0
- package/dist/cc-orchestrator/agent-adapter.d.ts +50 -0
- package/dist/cc-orchestrator/agent-adapter.js +133 -0
- package/dist/cc-orchestrator/cc-capability.d.ts +19 -0
- package/dist/cc-orchestrator/cc-capability.js +53 -0
- package/dist/cc-orchestrator/codex-session-discovery.d.ts +24 -0
- package/dist/cc-orchestrator/codex-session-discovery.js +191 -0
- package/dist/cc-orchestrator/codex-session-history.d.ts +25 -0
- package/dist/cc-orchestrator/codex-session-history.js +187 -0
- package/dist/cc-orchestrator/external-agent-changes.d.ts +19 -0
- package/dist/cc-orchestrator/external-agent-changes.js +214 -0
- package/dist/cc-orchestrator/external-agent-driver.d.ts +18 -0
- package/dist/cc-orchestrator/external-agent-driver.js +69 -0
- package/dist/cc-orchestrator/index.d.ts +8 -0
- package/dist/cc-orchestrator/index.js +8 -0
- package/dist/cc-orchestrator/relevance-judge.d.ts +15 -0
- package/dist/cc-orchestrator/relevance-judge.js +29 -0
- package/dist/cc-orchestrator/session-discovery.d.ts +46 -0
- package/dist/cc-orchestrator/session-discovery.js +125 -0
- package/dist/cc-orchestrator/session-history.d.ts +19 -0
- package/dist/cc-orchestrator/session-history.js +67 -0
- package/dist/cli/agent-server-stdio.d.ts +15 -1
- package/dist/cli/agent-server-stdio.js +115 -17
- package/dist/cli/agent-server-tcp.js +40 -26
- package/dist/context/compaction.d.ts +56 -0
- package/dist/context/compaction.js +186 -0
- package/dist/context/manager.js +25 -4
- package/dist/cost-tracker.js +5 -61
- package/dist/credentials/cipher.d.ts +49 -0
- package/dist/credentials/cipher.js +45 -0
- package/dist/credentials/cookie-jar.d.ts +24 -0
- package/dist/credentials/cookie-jar.js +40 -0
- package/dist/credentials/index.d.ts +7 -0
- package/dist/credentials/index.js +5 -0
- package/dist/credentials/inject-credential-tool.d.ts +20 -0
- package/dist/credentials/inject-credential-tool.js +130 -0
- package/dist/credentials/store.d.ts +72 -0
- package/dist/credentials/store.js +184 -0
- package/dist/credentials/types.d.ts +56 -0
- package/dist/credentials/use-credential-tool.d.ts +29 -0
- package/dist/credentials/use-credential-tool.js +205 -0
- package/dist/credentials/use-gate.d.ts +56 -0
- package/dist/credentials/use-gate.js +52 -0
- package/dist/data/model-metadata.d.ts +77 -0
- package/dist/data/model-metadata.js +56 -0
- package/dist/data/model-metadata.json +216 -0
- package/dist/data/openrouter-models.d.ts +18 -7
- package/dist/data/openrouter-models.js +35 -8
- package/dist/engine/aux-key.d.ts +10 -0
- package/dist/engine/aux-key.js +11 -0
- package/dist/engine/dynamic-tool-defs.d.ts +19 -0
- package/dist/engine/dynamic-tool-defs.js +36 -0
- package/dist/engine/engine.d.ts +267 -138
- package/dist/engine/engine.js +957 -191
- package/dist/engine/friendly-error.d.ts +18 -0
- package/dist/engine/friendly-error.js +63 -0
- package/dist/engine/goal.d.ts +145 -0
- package/dist/engine/goal.js +144 -0
- package/dist/engine/image-policy.d.ts +13 -0
- package/dist/engine/image-policy.js +24 -0
- package/dist/engine/model-connections-pool.d.ts +17 -0
- package/dist/engine/model-connections-pool.js +66 -0
- package/dist/engine/model-facade.d.ts +10 -0
- package/dist/engine/model-facade.js +25 -0
- package/dist/engine/patch-orphaned-tools.js +3 -0
- package/dist/engine/resolve-llm-config.d.ts +16 -0
- package/dist/engine/resolve-llm-config.js +44 -0
- package/dist/engine/runtime.js +2 -1
- package/dist/engine/sandbox-cache-key.d.ts +10 -0
- package/dist/engine/sandbox-cache-key.js +9 -0
- package/dist/engine/sandbox-config.d.ts +31 -0
- package/dist/engine/sandbox-config.js +38 -0
- package/dist/engine/session-usage.d.ts +19 -0
- package/dist/engine/session-usage.js +25 -0
- package/dist/engine/steer-queue.d.ts +32 -0
- package/dist/engine/steer-queue.js +26 -0
- package/dist/engine/streaming-tool-queue.d.ts +12 -0
- package/dist/engine/streaming-tool-queue.js +50 -10
- package/dist/engine/turn-loop.d.ts +67 -3
- package/dist/engine/turn-loop.js +292 -41
- package/dist/engine/types.d.ts +175 -0
- package/dist/engine/types.js +13 -0
- package/dist/external-agents/config.d.ts +2 -0
- package/dist/external-agents/config.js +15 -0
- package/dist/external-agents/types.d.ts +31 -0
- package/dist/external-agents/types.js +1 -0
- package/dist/git/utils.js +11 -6
- package/dist/git/worktree.d.ts +48 -0
- package/dist/git/worktree.js +86 -10
- package/dist/hooks/goal-stop-hook.d.ts +28 -0
- package/dist/hooks/goal-stop-hook.js +186 -9
- package/dist/hooks/registry.d.ts +8 -0
- package/dist/hooks/registry.js +19 -0
- package/dist/hooks/shell-runner.js +10 -21
- package/dist/index.d.ts +49 -6
- package/dist/index.js +60 -4
- package/dist/llm/capabilities/param-specs.d.ts +14 -0
- package/dist/llm/capabilities/param-specs.js +62 -0
- package/dist/llm/capabilities/rules.js +4 -0
- package/dist/llm/capabilities/types.d.ts +10 -0
- package/dist/llm/client-base.d.ts +28 -1
- package/dist/llm/client-base.js +119 -13
- package/dist/llm/model-cache.js +4 -2
- package/dist/llm/model-pool.d.ts +14 -0
- package/dist/llm/model-pool.js +13 -0
- package/dist/llm/provider-auth.d.ts +41 -0
- package/dist/llm/provider-auth.js +76 -0
- package/dist/llm/provider-catalog.d.ts +4 -0
- package/dist/llm/providers/anthropic.js +64 -14
- package/dist/llm/providers/openai.d.ts +36 -0
- package/dist/llm/providers/openai.js +257 -51
- package/dist/llm/reasoning-setting.d.ts +3 -3
- package/dist/llm/reasoning-setting.js +9 -1
- package/dist/llm/stream-watchdog.js +5 -1
- package/dist/llm/token-counter.js +9 -2
- package/dist/llm/types.d.ts +4 -0
- package/dist/logging/sanitize-messages.js +22 -0
- package/dist/lsp/manager.d.ts +1 -1
- package/dist/lsp/manager.js +40 -10
- package/dist/model-catalog/builtin.d.ts +12 -0
- package/dist/model-catalog/builtin.js +407 -0
- package/dist/model-catalog/gen-connections.d.ts +20 -0
- package/dist/model-catalog/gen-connections.js +28 -0
- package/dist/model-catalog/index.d.ts +41 -0
- package/dist/model-catalog/index.js +90 -0
- package/dist/model-catalog/params.d.ts +20 -0
- package/dist/model-catalog/params.js +45 -0
- package/dist/model-catalog/resolve.d.ts +48 -0
- package/dist/model-catalog/resolve.js +33 -0
- package/dist/model-catalog/save-entry.d.ts +32 -0
- package/dist/model-catalog/save-entry.js +104 -0
- package/dist/model-catalog/types.d.ts +561 -0
- package/dist/model-catalog/types.js +93 -0
- package/dist/model-catalog/upsert.d.ts +9 -0
- package/dist/model-catalog/upsert.js +8 -0
- package/dist/onboarding.d.ts +12 -82
- package/dist/onboarding.js +61 -326
- package/dist/plugins/gitOps.d.ts +19 -0
- package/dist/plugins/gitOps.js +73 -4
- package/dist/plugins/installer/checkUpdate.d.ts +16 -0
- package/dist/plugins/installer/checkUpdate.js +32 -0
- package/dist/plugins/installer/codex/convertCommands.d.ts +19 -0
- package/dist/plugins/installer/codex/convertCommands.js +46 -0
- package/dist/plugins/installer/codex/convertMcp.d.ts +5 -2
- package/dist/plugins/installer/codex/convertMcp.js +45 -5
- package/dist/plugins/installer/install.js +25 -1
- package/dist/plugins/installer/installFromArchive.d.ts +43 -0
- package/dist/plugins/installer/installFromArchive.js +134 -0
- package/dist/plugins/installer/installFromSource.js +8 -2
- package/dist/plugins/installer/loadPluginAgents.js +6 -2
- package/dist/plugins/installer/loadPluginMcp.d.ts +9 -2
- package/dist/plugins/installer/loadPluginMcp.js +35 -2
- package/dist/plugins/installer/pruneDisabled.d.ts +24 -0
- package/dist/plugins/installer/pruneDisabled.js +73 -0
- package/dist/plugins/installer/types.d.ts +5 -2
- package/dist/plugins/installer/types.js +1 -0
- package/dist/plugins/installer/uninstall.js +4 -0
- package/dist/plugins/installer/unzip.d.ts +14 -0
- package/dist/plugins/installer/unzip.js +82 -0
- package/dist/plugins/installer/update.d.ts +14 -0
- package/dist/plugins/installer/update.js +53 -21
- package/dist/plugins/loadPluginHooks.d.ts +47 -1
- package/dist/plugins/loadPluginHooks.js +73 -1
- package/dist/plugins/marketplaceManager.d.ts +7 -0
- package/dist/plugins/marketplaceManager.js +20 -0
- package/dist/plugins/pluginCommandHook.js +4 -18
- package/dist/plugins/pluginContent.d.ts +30 -0
- package/dist/plugins/pluginContent.js +83 -0
- package/dist/plugins/pluginInstaller.d.ts +13 -0
- package/dist/plugins/pluginInstaller.js +42 -8
- package/dist/plugins/schemas.js +1 -0
- package/dist/plugins/types.d.ts +6 -0
- package/dist/preset/index.d.ts +7 -1
- package/dist/preset/index.js +96 -6
- package/dist/product/types.d.ts +1 -1
- package/dist/prompt/composer.d.ts +27 -0
- package/dist/prompt/composer.js +67 -21
- package/dist/prompt/instruction-scanner.js +5 -3
- package/dist/prompt/section-loader.js +1 -0
- package/dist/prompt/sections/base.md +1 -0
- package/dist/prompt/sections/browser.md +10 -0
- package/dist/prompt/sections/coding.md +4 -0
- package/dist/protocol/chat-session-manager.d.ts +8 -2
- package/dist/protocol/chat-session-manager.js +36 -0
- package/dist/protocol/chat-session.d.ts +65 -0
- package/dist/protocol/chat-session.js +94 -2
- package/dist/protocol/client.d.ts +27 -0
- package/dist/protocol/client.js +38 -0
- package/dist/protocol/server.d.ts +112 -0
- package/dist/protocol/server.js +586 -16
- package/dist/protocol/transport.js +3 -2
- package/dist/protocol/types.d.ts +46 -0
- package/dist/protocol/types.js +16 -0
- package/dist/quota/credentials.d.ts +3 -0
- package/dist/quota/credentials.js +80 -0
- package/dist/quota/index.d.ts +36 -0
- package/dist/quota/index.js +155 -0
- package/dist/quota/types.d.ts +48 -0
- package/dist/quota/types.js +13 -0
- package/dist/review/review-prompt.d.ts +28 -0
- package/dist/review/review-prompt.js +81 -0
- package/dist/run/FileRunStore.js +8 -3
- package/dist/run/RunApprovalBackend.js +25 -5
- package/dist/run/RunManager.d.ts +12 -0
- package/dist/run/RunManager.js +35 -0
- package/dist/run/factory.d.ts +1 -1
- package/dist/runtime/background-shell.d.ts +139 -0
- package/dist/runtime/background-shell.js +495 -0
- package/dist/runtime/output-clean.d.ts +24 -0
- package/dist/runtime/output-clean.js +41 -0
- package/dist/runtime/ring-file.d.ts +64 -0
- package/dist/runtime/ring-file.js +174 -0
- package/dist/runtime/safe-spawn.js +15 -34
- package/dist/runtime/spawn-common.d.ts +148 -0
- package/dist/runtime/spawn-common.js +303 -0
- package/dist/runtime/truncate-output.d.ts +22 -0
- package/dist/runtime/truncate-output.js +49 -0
- package/dist/runtime/utf8-cut.d.ts +11 -0
- package/dist/runtime/utf8-cut.js +23 -0
- package/dist/services/auto-dream.d.ts +4 -0
- package/dist/services/auto-dream.js +26 -26
- package/dist/services/diagnostics.d.ts +1 -2
- package/dist/services/diagnostics.js +12 -7
- package/dist/services/extract-memories.d.ts +14 -1
- package/dist/services/extract-memories.js +45 -6
- package/dist/services/memory-orchestrator.d.ts +21 -0
- package/dist/services/memory-orchestrator.js +125 -50
- package/dist/services/session-memory.js +24 -12
- package/dist/session/file-history.d.ts +124 -1
- package/dist/session/file-history.js +222 -6
- package/dist/session/memory.d.ts +116 -2
- package/dist/session/memory.js +250 -28
- package/dist/session/session-manager.d.ts +40 -0
- package/dist/session/session-manager.js +113 -3
- package/dist/session/simple-diff.d.ts +23 -0
- package/dist/session/simple-diff.js +84 -0
- package/dist/session/transcript.d.ts +25 -1
- package/dist/session/transcript.js +35 -2
- package/dist/session/undo-target.d.ts +67 -0
- package/dist/session/undo-target.js +144 -0
- package/dist/settings/disk-defaults.d.ts +9 -2
- package/dist/settings/disk-defaults.js +11 -2
- package/dist/settings/feature-flags.d.ts +64 -0
- package/dist/settings/feature-flags.js +61 -0
- package/dist/settings/manager.d.ts +68 -1
- package/dist/settings/manager.js +266 -29
- package/dist/settings/migrate-config.d.ts +45 -0
- package/dist/settings/migrate-config.js +125 -0
- package/dist/settings/schema-export.d.ts +25 -0
- package/dist/settings/schema-export.js +38 -0
- package/dist/settings/schema.d.ts +1186 -771
- package/dist/settings/schema.js +268 -97
- package/dist/skills/scanner.d.ts +9 -0
- package/dist/skills/scanner.js +30 -2
- package/dist/stt/resolve-transcribe.d.ts +31 -0
- package/dist/stt/resolve-transcribe.js +108 -0
- package/dist/stt/transcribe.d.ts +51 -0
- package/dist/stt/transcribe.js +65 -0
- package/dist/tool-system/browser-bridge.d.ts +226 -0
- package/dist/tool-system/browser-bridge.js +163 -0
- package/dist/tool-system/builtin/agent-heartbeat.d.ts +49 -0
- package/dist/tool-system/builtin/agent-heartbeat.js +89 -0
- package/dist/tool-system/builtin/agent-notifications.d.ts +12 -3
- package/dist/tool-system/builtin/agent-notifications.js +9 -3
- package/dist/tool-system/builtin/agent-output-file.d.ts +38 -0
- package/dist/tool-system/builtin/agent-output-file.js +72 -0
- package/dist/tool-system/builtin/agent-registry.d.ts +12 -0
- package/dist/tool-system/builtin/agent-registry.js +8 -0
- package/dist/tool-system/builtin/agent.d.ts +21 -1
- package/dist/tool-system/builtin/agent.js +489 -42
- package/dist/tool-system/builtin/apply-patch/applier.js +66 -8
- package/dist/tool-system/builtin/apply-patch/backup-targets.d.ts +10 -0
- package/dist/tool-system/builtin/apply-patch/backup-targets.js +30 -0
- package/dist/tool-system/builtin/apply-patch/index.js +0 -15
- package/dist/tool-system/builtin/background-jobs.d.ts +76 -0
- package/dist/tool-system/builtin/background-jobs.js +124 -0
- package/dist/tool-system/builtin/background-shell-tools.d.ts +20 -0
- package/dist/tool-system/builtin/background-shell-tools.js +108 -0
- package/dist/tool-system/builtin/background-work.d.ts +67 -0
- package/dist/tool-system/builtin/background-work.js +86 -0
- package/dist/tool-system/builtin/bash-output-style.d.ts +32 -0
- package/dist/tool-system/builtin/bash-output-style.js +40 -0
- package/dist/tool-system/builtin/bash.d.ts +5 -2
- package/dist/tool-system/builtin/bash.js +98 -62
- package/dist/tool-system/builtin/browser-tools.d.ts +33 -0
- package/dist/tool-system/builtin/browser-tools.js +312 -0
- package/dist/tool-system/builtin/cancel-goal.d.ts +31 -0
- package/dist/tool-system/builtin/cancel-goal.js +64 -0
- package/dist/tool-system/builtin/check-quota.d.ts +15 -0
- package/dist/tool-system/builtin/check-quota.js +34 -0
- package/dist/tool-system/builtin/config.js +7 -0
- package/dist/tool-system/builtin/cron.d.ts +7 -0
- package/dist/tool-system/builtin/cron.js +55 -3
- package/dist/tool-system/builtin/drive-claude-code.d.ts +30 -0
- package/dist/tool-system/builtin/drive-claude-code.js +157 -0
- package/dist/tool-system/builtin/edit-model-catalog.d.ts +3 -0
- package/dist/tool-system/builtin/edit-model-catalog.js +94 -0
- package/dist/tool-system/builtin/edit.js +20 -16
- package/dist/tool-system/builtin/eol.d.ts +29 -0
- package/dist/tool-system/builtin/eol.js +37 -0
- package/dist/tool-system/builtin/file-cache.d.ts +6 -0
- package/dist/tool-system/builtin/file-cache.js +8 -0
- package/dist/tool-system/builtin/generate-image.d.ts +35 -0
- package/dist/tool-system/builtin/generate-image.js +278 -50
- package/dist/tool-system/builtin/generate-video.d.ts +55 -0
- package/dist/tool-system/builtin/generate-video.js +361 -0
- package/dist/tool-system/builtin/glob.js +0 -7
- package/dist/tool-system/builtin/grep.js +6 -8
- package/dist/tool-system/builtin/image-providers.d.ts +86 -0
- package/dist/tool-system/builtin/image-providers.js +190 -0
- package/dist/tool-system/builtin/image-uploader.d.ts +33 -0
- package/dist/tool-system/builtin/image-uploader.js +74 -0
- package/dist/tool-system/builtin/index.d.ts +7 -1
- package/dist/tool-system/builtin/index.js +249 -25
- package/dist/tool-system/builtin/mcp-tools.js +23 -3
- package/dist/tool-system/builtin/memory.js +45 -7
- package/dist/tool-system/builtin/notebook-edit.js +0 -7
- package/dist/tool-system/builtin/powershell.js +4 -1
- package/dist/tool-system/builtin/read.js +10 -10
- package/dist/tool-system/builtin/repl.js +4 -1
- package/dist/tool-system/builtin/skill.js +9 -0
- package/dist/tool-system/builtin/sleep.js +3 -2
- package/dist/tool-system/builtin/tool-search.js +25 -7
- package/dist/tool-system/builtin/video-providers.d.ts +154 -0
- package/dist/tool-system/builtin/video-providers.js +235 -0
- package/dist/tool-system/builtin/web-fetch.js +12 -2
- package/dist/tool-system/builtin/web-search.js +21 -7
- package/dist/tool-system/builtin/worktree.d.ts +2 -1
- package/dist/tool-system/builtin/worktree.js +31 -4
- package/dist/tool-system/builtin/write.js +0 -6
- package/dist/tool-system/context.d.ts +154 -6
- package/dist/tool-system/executor.d.ts +3 -1
- package/dist/tool-system/executor.js +172 -88
- package/dist/tool-system/investigation-guard.js +1 -1
- package/dist/tool-system/mcp-manager.d.ts +42 -4
- package/dist/tool-system/mcp-manager.js +186 -20
- package/dist/tool-system/path-policy.d.ts +5 -0
- package/dist/tool-system/path-policy.js +307 -8
- package/dist/tool-system/permission.d.ts +36 -1
- package/dist/tool-system/permission.js +281 -69
- package/dist/tool-system/plan-mode-allowlist.d.ts +13 -2
- package/dist/tool-system/plan-mode-allowlist.js +24 -2
- package/dist/tool-system/registry.d.ts +1 -0
- package/dist/tool-system/registry.js +16 -2
- package/dist/tool-system/sandbox/index.d.ts +8 -0
- package/dist/tool-system/sandbox/index.js +7 -2
- package/dist/tool-system/validate-tool-metadata.d.ts +36 -0
- package/dist/tool-system/validate-tool-metadata.js +63 -0
- package/dist/types.d.ts +217 -6
- package/dist/updater.js +20 -9
- package/dist/utils/envUtils.d.ts +0 -9
- package/dist/utils/envUtils.js +3 -28
- package/dist/utils/exec.d.ts +40 -0
- package/dist/utils/exec.js +144 -0
- package/dist/utils/json.d.ts +12 -0
- package/dist/utils/json.js +92 -0
- package/dist/utils/theme.d.ts +1 -1
- package/dist/utils/theme.js +1 -1
- package/dist/utils/toolDisplay.js +0 -1
- package/package.json +13 -7
- package/dist/agent/coordinator.d.ts +0 -49
- package/dist/agent/coordinator.js +0 -77
- package/dist/settings/manager.test.js +0 -73
- package/dist/tool-system/builtin/remote-trigger.d.ts +0 -6
- package/dist/tool-system/builtin/remote-trigger.js +0 -54
- package/dist/tool-system/builtin/send-message.d.ts +0 -6
- package/dist/tool-system/builtin/send-message.js +0 -47
- /package/dist/{settings/manager.test.d.ts → credentials/types.js} +0 -0
|
@@ -0,0 +1,561 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model接入 Catalog — declarative provider templates (design doc:
|
|
3
|
+
* docs/superpowers/specs/2026-06-11-model-catalog-design.md).
|
|
4
|
+
*
|
|
5
|
+
* A {@link CatalogEntry} is a *template* the user can pick in the 连接 page to
|
|
6
|
+
* create a configured instance (stored in settings.imageGen/videoGen.providers[]).
|
|
7
|
+
* Catalog = "能配哪些"; providers[] = "配了哪些". The two are decoupled.
|
|
8
|
+
*
|
|
9
|
+
* `adapterKind` reuses the existing adapter selectors ("openai"/"google"/"fal")
|
|
10
|
+
* — the runtime getImageProvider/getVideoProvider switches and adapter classes
|
|
11
|
+
* are unchanged; the catalog only declares which template points at which
|
|
12
|
+
* already-wired adapter. `shape` is documentation/future only.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
/**
|
|
16
|
+
* How the param maps onto the outgoing request body. `field` is the request
|
|
17
|
+
* field this param lands on — same param name can land differently per
|
|
18
|
+
* adapter (reasoning → `reasoning_effort` on OpenAI vs
|
|
19
|
+
* `thinking.budget_tokens` on Anthropic), so the divergence lives in data, not
|
|
20
|
+
* in `if (kind === ...)` branches in the engine. Minimal v1: field only.
|
|
21
|
+
*/
|
|
22
|
+
export declare const wireSpecSchema: z.ZodObject<{
|
|
23
|
+
field: z.ZodString;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
field: string;
|
|
26
|
+
}, {
|
|
27
|
+
field: string;
|
|
28
|
+
}>;
|
|
29
|
+
/**
|
|
30
|
+
* One **generic** declarative param — no special-casing per param. reasoning
|
|
31
|
+
* is not its own variant: it's `control: "enum"` (OpenAI effort levels) or
|
|
32
|
+
* `control: "number"` (Anthropic token budget), decided by the entry's data.
|
|
33
|
+
* The connection page renders by `switch(control)`; `doc` is woven into the
|
|
34
|
+
* tool description so the agent knows what a configured model accepts.
|
|
35
|
+
* See docs/superpowers/specs/2026-06-15-unified-model-catalog-design.md §3.2.
|
|
36
|
+
*/
|
|
37
|
+
export declare const paramSpecSchema: z.ZodObject<{
|
|
38
|
+
/** Logical name, e.g. "reasoning" / "size" / "quality" / "temperature". */
|
|
39
|
+
name: z.ZodString;
|
|
40
|
+
/** UI control label (falls back to `name`). */
|
|
41
|
+
label: z.ZodOptional<z.ZodString>;
|
|
42
|
+
control: z.ZodEnum<["enum", "number", "toggle", "text"]>;
|
|
43
|
+
/** control=enum allowed values, e.g. ["low","medium","high","xhigh"]. */
|
|
44
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
45
|
+
/** control=number bounds. */
|
|
46
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
47
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
48
|
+
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
49
|
+
/** Natural-language usage note → injected into the tool description. */
|
|
50
|
+
doc: z.ZodOptional<z.ZodString>;
|
|
51
|
+
/** How this param lands on the request body. */
|
|
52
|
+
wire: z.ZodOptional<z.ZodObject<{
|
|
53
|
+
field: z.ZodString;
|
|
54
|
+
}, "strip", z.ZodTypeAny, {
|
|
55
|
+
field: string;
|
|
56
|
+
}, {
|
|
57
|
+
field: string;
|
|
58
|
+
}>>;
|
|
59
|
+
}, "strip", z.ZodTypeAny, {
|
|
60
|
+
name: string;
|
|
61
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
62
|
+
options?: string[] | undefined;
|
|
63
|
+
default?: string | number | boolean | undefined;
|
|
64
|
+
label?: string | undefined;
|
|
65
|
+
min?: number | undefined;
|
|
66
|
+
max?: number | undefined;
|
|
67
|
+
doc?: string | undefined;
|
|
68
|
+
wire?: {
|
|
69
|
+
field: string;
|
|
70
|
+
} | undefined;
|
|
71
|
+
}, {
|
|
72
|
+
name: string;
|
|
73
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
74
|
+
options?: string[] | undefined;
|
|
75
|
+
default?: string | number | boolean | undefined;
|
|
76
|
+
label?: string | undefined;
|
|
77
|
+
min?: number | undefined;
|
|
78
|
+
max?: number | undefined;
|
|
79
|
+
doc?: string | undefined;
|
|
80
|
+
wire?: {
|
|
81
|
+
field: string;
|
|
82
|
+
} | undefined;
|
|
83
|
+
}>;
|
|
84
|
+
export type ParamSpec = z.infer<typeof paramSpecSchema>;
|
|
85
|
+
/**
|
|
86
|
+
* A known model under an entry, carrying its own param schema
|
|
87
|
+
* (per-entry-per-model — the same modelId via OpenRouter vs the official API
|
|
88
|
+
* can expose different params, since gateways normalize differently).
|
|
89
|
+
*/
|
|
90
|
+
export declare const modelPresetSchema: z.ZodObject<{
|
|
91
|
+
value: z.ZodString;
|
|
92
|
+
label: z.ZodOptional<z.ZodString>;
|
|
93
|
+
maxContextTokens: z.ZodOptional<z.ZodNumber>;
|
|
94
|
+
maxOutputTokens: z.ZodOptional<z.ZodNumber>;
|
|
95
|
+
supportsVision: z.ZodOptional<z.ZodBoolean>;
|
|
96
|
+
/** Params this model supports; absent → no adjustable knobs. */
|
|
97
|
+
params: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
98
|
+
/** Logical name, e.g. "reasoning" / "size" / "quality" / "temperature". */
|
|
99
|
+
name: z.ZodString;
|
|
100
|
+
/** UI control label (falls back to `name`). */
|
|
101
|
+
label: z.ZodOptional<z.ZodString>;
|
|
102
|
+
control: z.ZodEnum<["enum", "number", "toggle", "text"]>;
|
|
103
|
+
/** control=enum allowed values, e.g. ["low","medium","high","xhigh"]. */
|
|
104
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
105
|
+
/** control=number bounds. */
|
|
106
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
107
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
108
|
+
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
109
|
+
/** Natural-language usage note → injected into the tool description. */
|
|
110
|
+
doc: z.ZodOptional<z.ZodString>;
|
|
111
|
+
/** How this param lands on the request body. */
|
|
112
|
+
wire: z.ZodOptional<z.ZodObject<{
|
|
113
|
+
field: z.ZodString;
|
|
114
|
+
}, "strip", z.ZodTypeAny, {
|
|
115
|
+
field: string;
|
|
116
|
+
}, {
|
|
117
|
+
field: string;
|
|
118
|
+
}>>;
|
|
119
|
+
}, "strip", z.ZodTypeAny, {
|
|
120
|
+
name: string;
|
|
121
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
122
|
+
options?: string[] | undefined;
|
|
123
|
+
default?: string | number | boolean | undefined;
|
|
124
|
+
label?: string | undefined;
|
|
125
|
+
min?: number | undefined;
|
|
126
|
+
max?: number | undefined;
|
|
127
|
+
doc?: string | undefined;
|
|
128
|
+
wire?: {
|
|
129
|
+
field: string;
|
|
130
|
+
} | undefined;
|
|
131
|
+
}, {
|
|
132
|
+
name: string;
|
|
133
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
134
|
+
options?: string[] | undefined;
|
|
135
|
+
default?: string | number | boolean | undefined;
|
|
136
|
+
label?: string | undefined;
|
|
137
|
+
min?: number | undefined;
|
|
138
|
+
max?: number | undefined;
|
|
139
|
+
doc?: string | undefined;
|
|
140
|
+
wire?: {
|
|
141
|
+
field: string;
|
|
142
|
+
} | undefined;
|
|
143
|
+
}>, "many">>;
|
|
144
|
+
}, "strip", z.ZodTypeAny, {
|
|
145
|
+
value: string;
|
|
146
|
+
params?: {
|
|
147
|
+
name: string;
|
|
148
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
149
|
+
options?: string[] | undefined;
|
|
150
|
+
default?: string | number | boolean | undefined;
|
|
151
|
+
label?: string | undefined;
|
|
152
|
+
min?: number | undefined;
|
|
153
|
+
max?: number | undefined;
|
|
154
|
+
doc?: string | undefined;
|
|
155
|
+
wire?: {
|
|
156
|
+
field: string;
|
|
157
|
+
} | undefined;
|
|
158
|
+
}[] | undefined;
|
|
159
|
+
supportsVision?: boolean | undefined;
|
|
160
|
+
maxOutputTokens?: number | undefined;
|
|
161
|
+
label?: string | undefined;
|
|
162
|
+
maxContextTokens?: number | undefined;
|
|
163
|
+
}, {
|
|
164
|
+
value: string;
|
|
165
|
+
params?: {
|
|
166
|
+
name: string;
|
|
167
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
168
|
+
options?: string[] | undefined;
|
|
169
|
+
default?: string | number | boolean | undefined;
|
|
170
|
+
label?: string | undefined;
|
|
171
|
+
min?: number | undefined;
|
|
172
|
+
max?: number | undefined;
|
|
173
|
+
doc?: string | undefined;
|
|
174
|
+
wire?: {
|
|
175
|
+
field: string;
|
|
176
|
+
} | undefined;
|
|
177
|
+
}[] | undefined;
|
|
178
|
+
supportsVision?: boolean | undefined;
|
|
179
|
+
maxOutputTokens?: number | undefined;
|
|
180
|
+
label?: string | undefined;
|
|
181
|
+
maxContextTokens?: number | undefined;
|
|
182
|
+
}>;
|
|
183
|
+
export type ModelPreset = z.infer<typeof modelPresetSchema>;
|
|
184
|
+
export declare const catalogEntrySchema: z.ZodObject<{
|
|
185
|
+
/** Template id, e.g. "openai" / "openai-images" / "fal-video". */
|
|
186
|
+
id: z.ZodString;
|
|
187
|
+
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
188
|
+
tag: z.ZodEnum<["text", "image", "video", "audio"]>;
|
|
189
|
+
/** Runtime adapter selector — reuses existing "openai" | "anthropic" | "google" | "fal". */
|
|
190
|
+
adapterKind: z.ZodString;
|
|
191
|
+
/** LLM client protocol (text entries). */
|
|
192
|
+
protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
|
|
193
|
+
/** HTTP shape — documentation/future only; runtime dispatches on adapterKind. */
|
|
194
|
+
shape: z.ZodOptional<z.ZodEnum<["generic-sync", "fal-queue"]>>;
|
|
195
|
+
displayName: z.ZodString;
|
|
196
|
+
description: z.ZodString;
|
|
197
|
+
defaultBaseUrl: z.ZodString;
|
|
198
|
+
defaultModel: z.ZodOptional<z.ZodString>;
|
|
199
|
+
/** Whether this provider needs an API key (ollama/local = false). */
|
|
200
|
+
needsKey: z.ZodOptional<z.ZodBoolean>;
|
|
201
|
+
modelPresets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
202
|
+
value: z.ZodString;
|
|
203
|
+
label: z.ZodOptional<z.ZodString>;
|
|
204
|
+
maxContextTokens: z.ZodOptional<z.ZodNumber>;
|
|
205
|
+
maxOutputTokens: z.ZodOptional<z.ZodNumber>;
|
|
206
|
+
supportsVision: z.ZodOptional<z.ZodBoolean>;
|
|
207
|
+
/** Params this model supports; absent → no adjustable knobs. */
|
|
208
|
+
params: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
209
|
+
/** Logical name, e.g. "reasoning" / "size" / "quality" / "temperature". */
|
|
210
|
+
name: z.ZodString;
|
|
211
|
+
/** UI control label (falls back to `name`). */
|
|
212
|
+
label: z.ZodOptional<z.ZodString>;
|
|
213
|
+
control: z.ZodEnum<["enum", "number", "toggle", "text"]>;
|
|
214
|
+
/** control=enum allowed values, e.g. ["low","medium","high","xhigh"]. */
|
|
215
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
216
|
+
/** control=number bounds. */
|
|
217
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
218
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
219
|
+
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
220
|
+
/** Natural-language usage note → injected into the tool description. */
|
|
221
|
+
doc: z.ZodOptional<z.ZodString>;
|
|
222
|
+
/** How this param lands on the request body. */
|
|
223
|
+
wire: z.ZodOptional<z.ZodObject<{
|
|
224
|
+
field: z.ZodString;
|
|
225
|
+
}, "strip", z.ZodTypeAny, {
|
|
226
|
+
field: string;
|
|
227
|
+
}, {
|
|
228
|
+
field: string;
|
|
229
|
+
}>>;
|
|
230
|
+
}, "strip", z.ZodTypeAny, {
|
|
231
|
+
name: string;
|
|
232
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
233
|
+
options?: string[] | undefined;
|
|
234
|
+
default?: string | number | boolean | undefined;
|
|
235
|
+
label?: string | undefined;
|
|
236
|
+
min?: number | undefined;
|
|
237
|
+
max?: number | undefined;
|
|
238
|
+
doc?: string | undefined;
|
|
239
|
+
wire?: {
|
|
240
|
+
field: string;
|
|
241
|
+
} | undefined;
|
|
242
|
+
}, {
|
|
243
|
+
name: string;
|
|
244
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
245
|
+
options?: string[] | undefined;
|
|
246
|
+
default?: string | number | boolean | undefined;
|
|
247
|
+
label?: string | undefined;
|
|
248
|
+
min?: number | undefined;
|
|
249
|
+
max?: number | undefined;
|
|
250
|
+
doc?: string | undefined;
|
|
251
|
+
wire?: {
|
|
252
|
+
field: string;
|
|
253
|
+
} | undefined;
|
|
254
|
+
}>, "many">>;
|
|
255
|
+
}, "strip", z.ZodTypeAny, {
|
|
256
|
+
value: string;
|
|
257
|
+
params?: {
|
|
258
|
+
name: string;
|
|
259
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
260
|
+
options?: string[] | undefined;
|
|
261
|
+
default?: string | number | boolean | undefined;
|
|
262
|
+
label?: string | undefined;
|
|
263
|
+
min?: number | undefined;
|
|
264
|
+
max?: number | undefined;
|
|
265
|
+
doc?: string | undefined;
|
|
266
|
+
wire?: {
|
|
267
|
+
field: string;
|
|
268
|
+
} | undefined;
|
|
269
|
+
}[] | undefined;
|
|
270
|
+
supportsVision?: boolean | undefined;
|
|
271
|
+
maxOutputTokens?: number | undefined;
|
|
272
|
+
label?: string | undefined;
|
|
273
|
+
maxContextTokens?: number | undefined;
|
|
274
|
+
}, {
|
|
275
|
+
value: string;
|
|
276
|
+
params?: {
|
|
277
|
+
name: string;
|
|
278
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
279
|
+
options?: string[] | undefined;
|
|
280
|
+
default?: string | number | boolean | undefined;
|
|
281
|
+
label?: string | undefined;
|
|
282
|
+
min?: number | undefined;
|
|
283
|
+
max?: number | undefined;
|
|
284
|
+
doc?: string | undefined;
|
|
285
|
+
wire?: {
|
|
286
|
+
field: string;
|
|
287
|
+
} | undefined;
|
|
288
|
+
}[] | undefined;
|
|
289
|
+
supportsVision?: boolean | undefined;
|
|
290
|
+
maxOutputTokens?: number | undefined;
|
|
291
|
+
label?: string | undefined;
|
|
292
|
+
maxContextTokens?: number | undefined;
|
|
293
|
+
}>, "many">>;
|
|
294
|
+
signupUrl: z.ZodOptional<z.ZodString>;
|
|
295
|
+
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
296
|
+
test: z.ZodOptional<z.ZodBoolean>;
|
|
297
|
+
/**
|
|
298
|
+
* Natural-language note on the params/usage this entry supports — surfaced to
|
|
299
|
+
* the agent via the dynamic GenerateImage/GenerateVideo tool description so it
|
|
300
|
+
* knows what a configured model accepts (different models differ).
|
|
301
|
+
*/
|
|
302
|
+
paramsDoc: z.ZodOptional<z.ZodString>;
|
|
303
|
+
}, "strip", z.ZodTypeAny, {
|
|
304
|
+
id: string;
|
|
305
|
+
tag: "text" | "image" | "video" | "audio";
|
|
306
|
+
adapterKind: string;
|
|
307
|
+
displayName: string;
|
|
308
|
+
description: string;
|
|
309
|
+
defaultBaseUrl: string;
|
|
310
|
+
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
311
|
+
test?: boolean | undefined;
|
|
312
|
+
defaultModel?: string | undefined;
|
|
313
|
+
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
314
|
+
needsKey?: boolean | undefined;
|
|
315
|
+
modelPresets?: {
|
|
316
|
+
value: string;
|
|
317
|
+
params?: {
|
|
318
|
+
name: string;
|
|
319
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
320
|
+
options?: string[] | undefined;
|
|
321
|
+
default?: string | number | boolean | undefined;
|
|
322
|
+
label?: string | undefined;
|
|
323
|
+
min?: number | undefined;
|
|
324
|
+
max?: number | undefined;
|
|
325
|
+
doc?: string | undefined;
|
|
326
|
+
wire?: {
|
|
327
|
+
field: string;
|
|
328
|
+
} | undefined;
|
|
329
|
+
}[] | undefined;
|
|
330
|
+
supportsVision?: boolean | undefined;
|
|
331
|
+
maxOutputTokens?: number | undefined;
|
|
332
|
+
label?: string | undefined;
|
|
333
|
+
maxContextTokens?: number | undefined;
|
|
334
|
+
}[] | undefined;
|
|
335
|
+
signupUrl?: string | undefined;
|
|
336
|
+
paramsDoc?: string | undefined;
|
|
337
|
+
}, {
|
|
338
|
+
id: string;
|
|
339
|
+
tag: "text" | "image" | "video" | "audio";
|
|
340
|
+
adapterKind: string;
|
|
341
|
+
displayName: string;
|
|
342
|
+
description: string;
|
|
343
|
+
defaultBaseUrl: string;
|
|
344
|
+
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
345
|
+
test?: boolean | undefined;
|
|
346
|
+
defaultModel?: string | undefined;
|
|
347
|
+
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
348
|
+
needsKey?: boolean | undefined;
|
|
349
|
+
modelPresets?: {
|
|
350
|
+
value: string;
|
|
351
|
+
params?: {
|
|
352
|
+
name: string;
|
|
353
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
354
|
+
options?: string[] | undefined;
|
|
355
|
+
default?: string | number | boolean | undefined;
|
|
356
|
+
label?: string | undefined;
|
|
357
|
+
min?: number | undefined;
|
|
358
|
+
max?: number | undefined;
|
|
359
|
+
doc?: string | undefined;
|
|
360
|
+
wire?: {
|
|
361
|
+
field: string;
|
|
362
|
+
} | undefined;
|
|
363
|
+
}[] | undefined;
|
|
364
|
+
supportsVision?: boolean | undefined;
|
|
365
|
+
maxOutputTokens?: number | undefined;
|
|
366
|
+
label?: string | undefined;
|
|
367
|
+
maxContextTokens?: number | undefined;
|
|
368
|
+
}[] | undefined;
|
|
369
|
+
signupUrl?: string | undefined;
|
|
370
|
+
paramsDoc?: string | undefined;
|
|
371
|
+
}>;
|
|
372
|
+
export type CatalogEntry = z.infer<typeof catalogEntrySchema>;
|
|
373
|
+
/** A user-catalog file is just an array of entries (zod-validated on load). */
|
|
374
|
+
export declare const userCatalogFileSchema: z.ZodArray<z.ZodObject<{
|
|
375
|
+
/** Template id, e.g. "openai" / "openai-images" / "fal-video". */
|
|
376
|
+
id: z.ZodString;
|
|
377
|
+
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
378
|
+
tag: z.ZodEnum<["text", "image", "video", "audio"]>;
|
|
379
|
+
/** Runtime adapter selector — reuses existing "openai" | "anthropic" | "google" | "fal". */
|
|
380
|
+
adapterKind: z.ZodString;
|
|
381
|
+
/** LLM client protocol (text entries). */
|
|
382
|
+
protocol: z.ZodOptional<z.ZodEnum<["openai-compat", "anthropic-style"]>>;
|
|
383
|
+
/** HTTP shape — documentation/future only; runtime dispatches on adapterKind. */
|
|
384
|
+
shape: z.ZodOptional<z.ZodEnum<["generic-sync", "fal-queue"]>>;
|
|
385
|
+
displayName: z.ZodString;
|
|
386
|
+
description: z.ZodString;
|
|
387
|
+
defaultBaseUrl: z.ZodString;
|
|
388
|
+
defaultModel: z.ZodOptional<z.ZodString>;
|
|
389
|
+
/** Whether this provider needs an API key (ollama/local = false). */
|
|
390
|
+
needsKey: z.ZodOptional<z.ZodBoolean>;
|
|
391
|
+
modelPresets: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
392
|
+
value: z.ZodString;
|
|
393
|
+
label: z.ZodOptional<z.ZodString>;
|
|
394
|
+
maxContextTokens: z.ZodOptional<z.ZodNumber>;
|
|
395
|
+
maxOutputTokens: z.ZodOptional<z.ZodNumber>;
|
|
396
|
+
supportsVision: z.ZodOptional<z.ZodBoolean>;
|
|
397
|
+
/** Params this model supports; absent → no adjustable knobs. */
|
|
398
|
+
params: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
399
|
+
/** Logical name, e.g. "reasoning" / "size" / "quality" / "temperature". */
|
|
400
|
+
name: z.ZodString;
|
|
401
|
+
/** UI control label (falls back to `name`). */
|
|
402
|
+
label: z.ZodOptional<z.ZodString>;
|
|
403
|
+
control: z.ZodEnum<["enum", "number", "toggle", "text"]>;
|
|
404
|
+
/** control=enum allowed values, e.g. ["low","medium","high","xhigh"]. */
|
|
405
|
+
options: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
406
|
+
/** control=number bounds. */
|
|
407
|
+
min: z.ZodOptional<z.ZodNumber>;
|
|
408
|
+
max: z.ZodOptional<z.ZodNumber>;
|
|
409
|
+
default: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
|
|
410
|
+
/** Natural-language usage note → injected into the tool description. */
|
|
411
|
+
doc: z.ZodOptional<z.ZodString>;
|
|
412
|
+
/** How this param lands on the request body. */
|
|
413
|
+
wire: z.ZodOptional<z.ZodObject<{
|
|
414
|
+
field: z.ZodString;
|
|
415
|
+
}, "strip", z.ZodTypeAny, {
|
|
416
|
+
field: string;
|
|
417
|
+
}, {
|
|
418
|
+
field: string;
|
|
419
|
+
}>>;
|
|
420
|
+
}, "strip", z.ZodTypeAny, {
|
|
421
|
+
name: string;
|
|
422
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
423
|
+
options?: string[] | undefined;
|
|
424
|
+
default?: string | number | boolean | undefined;
|
|
425
|
+
label?: string | undefined;
|
|
426
|
+
min?: number | undefined;
|
|
427
|
+
max?: number | undefined;
|
|
428
|
+
doc?: string | undefined;
|
|
429
|
+
wire?: {
|
|
430
|
+
field: string;
|
|
431
|
+
} | undefined;
|
|
432
|
+
}, {
|
|
433
|
+
name: string;
|
|
434
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
435
|
+
options?: string[] | undefined;
|
|
436
|
+
default?: string | number | boolean | undefined;
|
|
437
|
+
label?: string | undefined;
|
|
438
|
+
min?: number | undefined;
|
|
439
|
+
max?: number | undefined;
|
|
440
|
+
doc?: string | undefined;
|
|
441
|
+
wire?: {
|
|
442
|
+
field: string;
|
|
443
|
+
} | undefined;
|
|
444
|
+
}>, "many">>;
|
|
445
|
+
}, "strip", z.ZodTypeAny, {
|
|
446
|
+
value: string;
|
|
447
|
+
params?: {
|
|
448
|
+
name: string;
|
|
449
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
450
|
+
options?: string[] | undefined;
|
|
451
|
+
default?: string | number | boolean | undefined;
|
|
452
|
+
label?: string | undefined;
|
|
453
|
+
min?: number | undefined;
|
|
454
|
+
max?: number | undefined;
|
|
455
|
+
doc?: string | undefined;
|
|
456
|
+
wire?: {
|
|
457
|
+
field: string;
|
|
458
|
+
} | undefined;
|
|
459
|
+
}[] | undefined;
|
|
460
|
+
supportsVision?: boolean | undefined;
|
|
461
|
+
maxOutputTokens?: number | undefined;
|
|
462
|
+
label?: string | undefined;
|
|
463
|
+
maxContextTokens?: number | undefined;
|
|
464
|
+
}, {
|
|
465
|
+
value: string;
|
|
466
|
+
params?: {
|
|
467
|
+
name: string;
|
|
468
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
469
|
+
options?: string[] | undefined;
|
|
470
|
+
default?: string | number | boolean | undefined;
|
|
471
|
+
label?: string | undefined;
|
|
472
|
+
min?: number | undefined;
|
|
473
|
+
max?: number | undefined;
|
|
474
|
+
doc?: string | undefined;
|
|
475
|
+
wire?: {
|
|
476
|
+
field: string;
|
|
477
|
+
} | undefined;
|
|
478
|
+
}[] | undefined;
|
|
479
|
+
supportsVision?: boolean | undefined;
|
|
480
|
+
maxOutputTokens?: number | undefined;
|
|
481
|
+
label?: string | undefined;
|
|
482
|
+
maxContextTokens?: number | undefined;
|
|
483
|
+
}>, "many">>;
|
|
484
|
+
signupUrl: z.ZodOptional<z.ZodString>;
|
|
485
|
+
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
486
|
+
test: z.ZodOptional<z.ZodBoolean>;
|
|
487
|
+
/**
|
|
488
|
+
* Natural-language note on the params/usage this entry supports — surfaced to
|
|
489
|
+
* the agent via the dynamic GenerateImage/GenerateVideo tool description so it
|
|
490
|
+
* knows what a configured model accepts (different models differ).
|
|
491
|
+
*/
|
|
492
|
+
paramsDoc: z.ZodOptional<z.ZodString>;
|
|
493
|
+
}, "strip", z.ZodTypeAny, {
|
|
494
|
+
id: string;
|
|
495
|
+
tag: "text" | "image" | "video" | "audio";
|
|
496
|
+
adapterKind: string;
|
|
497
|
+
displayName: string;
|
|
498
|
+
description: string;
|
|
499
|
+
defaultBaseUrl: string;
|
|
500
|
+
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
501
|
+
test?: boolean | undefined;
|
|
502
|
+
defaultModel?: string | undefined;
|
|
503
|
+
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
504
|
+
needsKey?: boolean | undefined;
|
|
505
|
+
modelPresets?: {
|
|
506
|
+
value: string;
|
|
507
|
+
params?: {
|
|
508
|
+
name: string;
|
|
509
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
510
|
+
options?: string[] | undefined;
|
|
511
|
+
default?: string | number | boolean | undefined;
|
|
512
|
+
label?: string | undefined;
|
|
513
|
+
min?: number | undefined;
|
|
514
|
+
max?: number | undefined;
|
|
515
|
+
doc?: string | undefined;
|
|
516
|
+
wire?: {
|
|
517
|
+
field: string;
|
|
518
|
+
} | undefined;
|
|
519
|
+
}[] | undefined;
|
|
520
|
+
supportsVision?: boolean | undefined;
|
|
521
|
+
maxOutputTokens?: number | undefined;
|
|
522
|
+
label?: string | undefined;
|
|
523
|
+
maxContextTokens?: number | undefined;
|
|
524
|
+
}[] | undefined;
|
|
525
|
+
signupUrl?: string | undefined;
|
|
526
|
+
paramsDoc?: string | undefined;
|
|
527
|
+
}, {
|
|
528
|
+
id: string;
|
|
529
|
+
tag: "text" | "image" | "video" | "audio";
|
|
530
|
+
adapterKind: string;
|
|
531
|
+
displayName: string;
|
|
532
|
+
description: string;
|
|
533
|
+
defaultBaseUrl: string;
|
|
534
|
+
shape?: "generic-sync" | "fal-queue" | undefined;
|
|
535
|
+
test?: boolean | undefined;
|
|
536
|
+
defaultModel?: string | undefined;
|
|
537
|
+
protocol?: "openai-compat" | "anthropic-style" | undefined;
|
|
538
|
+
needsKey?: boolean | undefined;
|
|
539
|
+
modelPresets?: {
|
|
540
|
+
value: string;
|
|
541
|
+
params?: {
|
|
542
|
+
name: string;
|
|
543
|
+
control: "number" | "text" | "enum" | "toggle";
|
|
544
|
+
options?: string[] | undefined;
|
|
545
|
+
default?: string | number | boolean | undefined;
|
|
546
|
+
label?: string | undefined;
|
|
547
|
+
min?: number | undefined;
|
|
548
|
+
max?: number | undefined;
|
|
549
|
+
doc?: string | undefined;
|
|
550
|
+
wire?: {
|
|
551
|
+
field: string;
|
|
552
|
+
} | undefined;
|
|
553
|
+
}[] | undefined;
|
|
554
|
+
supportsVision?: boolean | undefined;
|
|
555
|
+
maxOutputTokens?: number | undefined;
|
|
556
|
+
label?: string | undefined;
|
|
557
|
+
maxContextTokens?: number | undefined;
|
|
558
|
+
}[] | undefined;
|
|
559
|
+
signupUrl?: string | undefined;
|
|
560
|
+
paramsDoc?: string | undefined;
|
|
561
|
+
}>, "many">;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model接入 Catalog — declarative provider templates (design doc:
|
|
3
|
+
* docs/superpowers/specs/2026-06-11-model-catalog-design.md).
|
|
4
|
+
*
|
|
5
|
+
* A {@link CatalogEntry} is a *template* the user can pick in the 连接 page to
|
|
6
|
+
* create a configured instance (stored in settings.imageGen/videoGen.providers[]).
|
|
7
|
+
* Catalog = "能配哪些"; providers[] = "配了哪些". The two are decoupled.
|
|
8
|
+
*
|
|
9
|
+
* `adapterKind` reuses the existing adapter selectors ("openai"/"google"/"fal")
|
|
10
|
+
* — the runtime getImageProvider/getVideoProvider switches and adapter classes
|
|
11
|
+
* are unchanged; the catalog only declares which template points at which
|
|
12
|
+
* already-wired adapter. `shape` is documentation/future only.
|
|
13
|
+
*/
|
|
14
|
+
import { z } from "zod";
|
|
15
|
+
/**
|
|
16
|
+
* How the param maps onto the outgoing request body. `field` is the request
|
|
17
|
+
* field this param lands on — same param name can land differently per
|
|
18
|
+
* adapter (reasoning → `reasoning_effort` on OpenAI vs
|
|
19
|
+
* `thinking.budget_tokens` on Anthropic), so the divergence lives in data, not
|
|
20
|
+
* in `if (kind === ...)` branches in the engine. Minimal v1: field only.
|
|
21
|
+
*/
|
|
22
|
+
export const wireSpecSchema = z.object({
|
|
23
|
+
field: z.string(),
|
|
24
|
+
});
|
|
25
|
+
/**
|
|
26
|
+
* One **generic** declarative param — no special-casing per param. reasoning
|
|
27
|
+
* is not its own variant: it's `control: "enum"` (OpenAI effort levels) or
|
|
28
|
+
* `control: "number"` (Anthropic token budget), decided by the entry's data.
|
|
29
|
+
* The connection page renders by `switch(control)`; `doc` is woven into the
|
|
30
|
+
* tool description so the agent knows what a configured model accepts.
|
|
31
|
+
* See docs/superpowers/specs/2026-06-15-unified-model-catalog-design.md §3.2.
|
|
32
|
+
*/
|
|
33
|
+
export const paramSpecSchema = z.object({
|
|
34
|
+
/** Logical name, e.g. "reasoning" / "size" / "quality" / "temperature". */
|
|
35
|
+
name: z.string(),
|
|
36
|
+
/** UI control label (falls back to `name`). */
|
|
37
|
+
label: z.string().optional(),
|
|
38
|
+
control: z.enum(["enum", "number", "toggle", "text"]),
|
|
39
|
+
/** control=enum allowed values, e.g. ["low","medium","high","xhigh"]. */
|
|
40
|
+
options: z.array(z.string()).optional(),
|
|
41
|
+
/** control=number bounds. */
|
|
42
|
+
min: z.number().optional(),
|
|
43
|
+
max: z.number().optional(),
|
|
44
|
+
default: z.union([z.string(), z.number(), z.boolean()]).optional(),
|
|
45
|
+
/** Natural-language usage note → injected into the tool description. */
|
|
46
|
+
doc: z.string().optional(),
|
|
47
|
+
/** How this param lands on the request body. */
|
|
48
|
+
wire: wireSpecSchema.optional(),
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* A known model under an entry, carrying its own param schema
|
|
52
|
+
* (per-entry-per-model — the same modelId via OpenRouter vs the official API
|
|
53
|
+
* can expose different params, since gateways normalize differently).
|
|
54
|
+
*/
|
|
55
|
+
export const modelPresetSchema = z.object({
|
|
56
|
+
value: z.string(),
|
|
57
|
+
label: z.string().optional(),
|
|
58
|
+
maxContextTokens: z.number().optional(),
|
|
59
|
+
maxOutputTokens: z.number().optional(),
|
|
60
|
+
supportsVision: z.boolean().optional(),
|
|
61
|
+
/** Params this model supports; absent → no adjustable knobs. */
|
|
62
|
+
params: z.array(paramSpecSchema).optional(),
|
|
63
|
+
});
|
|
64
|
+
export const catalogEntrySchema = z.object({
|
|
65
|
+
/** Template id, e.g. "openai" / "openai-images" / "fal-video". */
|
|
66
|
+
id: z.string(),
|
|
67
|
+
/** Which 连接 page group this lands in. (audio = speech-to-text / voice input.) */
|
|
68
|
+
tag: z.enum(["text", "image", "video", "audio"]),
|
|
69
|
+
/** Runtime adapter selector — reuses existing "openai" | "anthropic" | "google" | "fal". */
|
|
70
|
+
adapterKind: z.string(),
|
|
71
|
+
/** LLM client protocol (text entries). */
|
|
72
|
+
protocol: z.enum(["openai-compat", "anthropic-style"]).optional(),
|
|
73
|
+
/** HTTP shape — documentation/future only; runtime dispatches on adapterKind. */
|
|
74
|
+
shape: z.enum(["generic-sync", "fal-queue"]).optional(),
|
|
75
|
+
displayName: z.string(),
|
|
76
|
+
description: z.string(),
|
|
77
|
+
defaultBaseUrl: z.string(),
|
|
78
|
+
defaultModel: z.string().optional(),
|
|
79
|
+
/** Whether this provider needs an API key (ollama/local = false). */
|
|
80
|
+
needsKey: z.boolean().optional(),
|
|
81
|
+
modelPresets: z.array(modelPresetSchema).optional(),
|
|
82
|
+
signupUrl: z.string().optional(),
|
|
83
|
+
/** Whether the 连接 card offers a "测试" button (image=true, video=false). */
|
|
84
|
+
test: z.boolean().optional(),
|
|
85
|
+
/**
|
|
86
|
+
* Natural-language note on the params/usage this entry supports — surfaced to
|
|
87
|
+
* the agent via the dynamic GenerateImage/GenerateVideo tool description so it
|
|
88
|
+
* knows what a configured model accepts (different models differ).
|
|
89
|
+
*/
|
|
90
|
+
paramsDoc: z.string().optional(),
|
|
91
|
+
});
|
|
92
|
+
/** A user-catalog file is just an array of entries (zod-validated on load). */
|
|
93
|
+
export const userCatalogFileSchema = z.array(catalogEntrySchema);
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* upsertCatalogEntry — add-or-update a CatalogEntry in the user catalog array,
|
|
3
|
+
* keyed by `id`. Pure: returns a new array, input untouched. Existing id →
|
|
4
|
+
* replaced in place (order preserved); new id → appended. The catalog edit tool
|
|
5
|
+
* wraps this with backup + zod validate + atomic write.
|
|
6
|
+
* See docs/superpowers/specs/2026-06-15-unified-model-catalog-design.md §7.
|
|
7
|
+
*/
|
|
8
|
+
import type { CatalogEntry } from "./types.js";
|
|
9
|
+
export declare function upsertCatalogEntry(existing: CatalogEntry[], entry: CatalogEntry): CatalogEntry[];
|