mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-03 21:31:26 +00:00
refactor: move bundled plugin policy into manifests
This commit is contained in:
@@ -90,3 +90,28 @@ export const BUNDLED_WEB_SEARCH_PROVIDER_PLUGIN_IDS = Object.fromEntries(
|
||||
entry.webSearchProviderIds.map((providerId) => [providerId, entry.pluginId] as const),
|
||||
).toSorted(([left], [right]) => left.localeCompare(right)),
|
||||
) as Readonly<Record<string, string>>;
|
||||
|
||||
export const BUNDLED_PROVIDER_PLUGIN_ID_ALIASES = Object.fromEntries(
|
||||
BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS.flatMap((entry) =>
|
||||
entry.providerIds
|
||||
.filter((providerId) => providerId !== entry.pluginId)
|
||||
.map((providerId) => [providerId, entry.pluginId] as const),
|
||||
).toSorted(([left], [right]) => left.localeCompare(right)),
|
||||
) as Readonly<Record<string, string>>;
|
||||
|
||||
export const BUNDLED_LEGACY_PLUGIN_ID_ALIASES = Object.fromEntries(
|
||||
BUNDLED_PLUGIN_METADATA.flatMap(({ manifest }) =>
|
||||
(manifest.legacyPluginIds ?? []).map(
|
||||
(legacyPluginId) => [legacyPluginId, manifest.id] as const,
|
||||
),
|
||||
).toSorted(([left], [right]) => left.localeCompare(right)),
|
||||
) as Readonly<Record<string, string>>;
|
||||
|
||||
export const BUNDLED_AUTO_ENABLE_PROVIDER_PLUGIN_IDS = Object.fromEntries(
|
||||
BUNDLED_PLUGIN_METADATA.flatMap(({ manifest }) =>
|
||||
(manifest.autoEnableWhenConfiguredProviders ?? []).map((providerId) => [
|
||||
providerId,
|
||||
manifest.id,
|
||||
]),
|
||||
).toSorted(([left], [right]) => left.localeCompare(right)),
|
||||
) as Readonly<Record<string, string>>;
|
||||
|
||||
@@ -8,6 +8,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/acpx",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw ACP runtime backend via acpx",
|
||||
@@ -149,6 +151,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["amazon-bedrock"],
|
||||
},
|
||||
},
|
||||
@@ -159,6 +162,12 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"cli-backend.js",
|
||||
"cli-migration.js",
|
||||
"cli-shared.js",
|
||||
"media-understanding-provider.js",
|
||||
],
|
||||
packageName: "@openclaw/anthropic-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Anthropic provider plugin",
|
||||
@@ -172,6 +181,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["anthropic"],
|
||||
cliBackends: ["claude-cli"],
|
||||
providerAuthEnvVars: {
|
||||
@@ -228,6 +238,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/bluebubbles",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw BlueBubbles channel plugin",
|
||||
@@ -777,6 +789,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/brave-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Brave plugin",
|
||||
@@ -831,6 +844,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["browser-runtime-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/browser-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw browser tool plugin",
|
||||
@@ -854,6 +869,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
packageName: "@openclaw/byteplus-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw BytePlus provider plugin",
|
||||
@@ -867,6 +883,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["byteplus", "byteplus-plan"],
|
||||
providerAuthEnvVars: {
|
||||
byteplus: ["BYTEPLUS_API_KEY"],
|
||||
@@ -895,6 +912,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/chutes-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Chutes.ai provider plugin",
|
||||
@@ -948,6 +966,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js"],
|
||||
packageName: "@openclaw/cloudflare-ai-gateway-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Cloudflare AI Gateway provider plugin",
|
||||
@@ -961,6 +980,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["cloudflare-ai-gateway"],
|
||||
providerAuthEnvVars: {
|
||||
"cloudflare-ai-gateway": ["CLOUDFLARE_AI_GATEWAY_API_KEY"],
|
||||
@@ -990,6 +1010,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/copilot-proxy",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Copilot Proxy provider plugin",
|
||||
@@ -1003,6 +1025,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
autoEnableWhenConfiguredProviders: ["copilot-proxy"],
|
||||
providers: ["copilot-proxy"],
|
||||
providerAuthChoices: [
|
||||
{
|
||||
@@ -1025,6 +1049,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["audio.js", "media-understanding-provider.js"],
|
||||
packageName: "@openclaw/deepgram-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Deepgram media-understanding provider",
|
||||
@@ -1050,6 +1075,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/deepseek-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw DeepSeek provider plugin",
|
||||
@@ -1063,6 +1089,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["deepseek"],
|
||||
providerAuthEnvVars: {
|
||||
deepseek: ["DEEPSEEK_API_KEY"],
|
||||
@@ -1091,6 +1118,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js"],
|
||||
packageName: "@openclaw/diagnostics-otel",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw diagnostics OpenTelemetry exporter",
|
||||
@@ -1113,6 +1141,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js"],
|
||||
packageName: "@openclaw/diffs",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw diff viewer plugin",
|
||||
@@ -1313,6 +1342,15 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"action-runtime-api.js",
|
||||
"api.js",
|
||||
"channel-config-api.js",
|
||||
"runtime-api.js",
|
||||
"session-key-api.js",
|
||||
"timeouts.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/discord",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Discord channel plugin",
|
||||
@@ -3977,6 +4015,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/duckduckgo-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw DuckDuckGo plugin",
|
||||
@@ -4026,6 +4065,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["speech-provider.js", "tts.js"],
|
||||
packageName: "@openclaw/elevenlabs-speech",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw ElevenLabs speech plugin",
|
||||
@@ -4051,6 +4091,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/exa-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Exa plugin",
|
||||
@@ -4097,6 +4138,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["image-generation-provider.js", "onboard.js"],
|
||||
packageName: "@openclaw/fal-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw fal provider plugin",
|
||||
@@ -4110,6 +4152,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["fal"],
|
||||
providerAuthEnvVars: {
|
||||
fal: ["FAL_KEY"],
|
||||
@@ -4146,6 +4189,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js", "setup-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/feishu",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Feishu/Lark channel plugin (community maintained by @m1heng)",
|
||||
@@ -5301,6 +5346,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/firecrawl-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Firecrawl plugin",
|
||||
@@ -5355,6 +5401,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["login.js", "models-defaults.js", "models.js", "token.js", "usage.js"],
|
||||
packageName: "@openclaw/github-copilot-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw GitHub Copilot provider plugin",
|
||||
@@ -5368,6 +5415,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["github-copilot"],
|
||||
providerAuthEnvVars: {
|
||||
"github-copilot": ["COPILOT_GITHUB_TOKEN", "GH_TOKEN", "GITHUB_TOKEN"],
|
||||
@@ -5393,6 +5441,24 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"cli-backend.js",
|
||||
"gemini-cli-provider.js",
|
||||
"image-generation-provider.js",
|
||||
"media-understanding-provider.js",
|
||||
"oauth.credentials.js",
|
||||
"oauth.flow.js",
|
||||
"oauth.http.js",
|
||||
"oauth.js",
|
||||
"oauth.project.js",
|
||||
"oauth.runtime.js",
|
||||
"oauth.shared.js",
|
||||
"oauth.token.js",
|
||||
"provider-models.js",
|
||||
"runtime-api.js",
|
||||
"web-search-provider.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/google-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Google plugin",
|
||||
@@ -5419,6 +5485,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
},
|
||||
},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
autoEnableWhenConfiguredProviders: ["google-gemini-cli"],
|
||||
providers: ["google", "google-gemini-cli"],
|
||||
cliBackends: ["google-gemini-cli"],
|
||||
providerAuthEnvVars: {
|
||||
@@ -5479,6 +5547,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/googlechat",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Google Chat channel plugin",
|
||||
@@ -6298,6 +6368,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["media-understanding-provider.js"],
|
||||
packageName: "@openclaw/groq-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Groq media-understanding provider",
|
||||
@@ -6323,6 +6394,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/huggingface-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Hugging Face provider plugin",
|
||||
@@ -6336,6 +6408,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["huggingface"],
|
||||
providerAuthEnvVars: {
|
||||
huggingface: ["HUGGINGFACE_HUB_TOKEN", "HF_TOKEN"],
|
||||
@@ -6369,6 +6442,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/imessage",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw iMessage channel plugin",
|
||||
@@ -6992,6 +7067,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js"],
|
||||
packageName: "@openclaw/irc",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw IRC channel plugin",
|
||||
@@ -7653,6 +7729,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js", "shared.js"],
|
||||
packageName: "@openclaw/kilocode-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Kilo Gateway provider plugin",
|
||||
@@ -7666,6 +7743,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["kilocode"],
|
||||
providerAuthEnvVars: {
|
||||
kilocode: ["KILOCODE_API_KEY"],
|
||||
@@ -7695,6 +7773,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/kimi-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Kimi provider plugin",
|
||||
@@ -7708,6 +7787,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["kimi", "kimi-coding"],
|
||||
providerAuthEnvVars: {
|
||||
kimi: ["KIMI_API_KEY", "KIMICODE_API_KEY"],
|
||||
@@ -7741,6 +7821,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js", "setup-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/line",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw LINE channel plugin",
|
||||
@@ -8017,6 +8099,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/litellm-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw LiteLLM provider plugin",
|
||||
@@ -8030,6 +8113,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["litellm"],
|
||||
providerAuthEnvVars: {
|
||||
litellm: ["LITELLM_API_KEY"],
|
||||
@@ -8059,6 +8143,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js"],
|
||||
packageName: "@openclaw/llm-task",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw JSON-only LLM task plugin",
|
||||
@@ -8106,6 +8191,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/lobster",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
|
||||
@@ -8134,6 +8221,14 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"helper-api.js",
|
||||
"legacy-crypto-inspector.js",
|
||||
"runtime-api.js",
|
||||
"thread-bindings-runtime.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["helper-api.js", "runtime-api.js", "thread-bindings-runtime.js"],
|
||||
packageName: "@openclaw/matrix",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Matrix channel plugin",
|
||||
@@ -8631,6 +8726,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/mattermost",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Mattermost channel plugin",
|
||||
@@ -9246,6 +9343,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/memory-core",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw core memory search plugin",
|
||||
@@ -9269,6 +9368,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "config.js", "lancedb-runtime.js"],
|
||||
packageName: "@openclaw/memory-lancedb",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw LanceDB-backed long-term memory plugin with auto-recall/capture",
|
||||
@@ -9377,6 +9477,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["speech-provider.js", "tts.js"],
|
||||
packageName: "@openclaw/microsoft-speech",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Microsoft speech plugin",
|
||||
@@ -9402,6 +9503,15 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"auth.js",
|
||||
"cli.js",
|
||||
"onboard.js",
|
||||
"provider.js",
|
||||
"runtime.js",
|
||||
"shared-runtime.js",
|
||||
"shared.js",
|
||||
],
|
||||
packageName: "@openclaw/microsoft-foundry",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Microsoft Foundry provider plugin",
|
||||
@@ -9451,6 +9561,15 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"image-generation-provider.js",
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
"oauth.js",
|
||||
"oauth.runtime.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
],
|
||||
packageName: "@openclaw/minimax-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw MiniMax provider and OAuth plugin",
|
||||
@@ -9464,6 +9583,9 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
legacyPluginIds: ["minimax-portal-auth"],
|
||||
autoEnableWhenConfiguredProviders: ["minimax-portal"],
|
||||
providers: ["minimax", "minimax-portal"],
|
||||
providerAuthEnvVars: {
|
||||
minimax: ["MINIMAX_API_KEY"],
|
||||
@@ -9484,6 +9606,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
provider: "minimax",
|
||||
method: "api-global",
|
||||
choiceId: "minimax-global-api",
|
||||
deprecatedChoiceIds: ["minimax", "minimax-api", "minimax-cloud", "minimax-api-lightning"],
|
||||
choiceLabel: "MiniMax API key (Global)",
|
||||
choiceHint: "Global endpoint - api.minimax.io",
|
||||
groupId: "minimax",
|
||||
@@ -9508,6 +9631,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
provider: "minimax",
|
||||
method: "api-cn",
|
||||
choiceId: "minimax-cn-api",
|
||||
deprecatedChoiceIds: ["minimax-api-key-cn"],
|
||||
choiceLabel: "MiniMax API key (CN)",
|
||||
choiceHint: "CN endpoint - api.minimaxi.com",
|
||||
groupId: "minimax",
|
||||
@@ -9532,6 +9656,12 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
],
|
||||
packageName: "@openclaw/mistral-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Mistral provider plugin",
|
||||
@@ -9545,6 +9675,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["mistral"],
|
||||
providerAuthEnvVars: {
|
||||
mistral: ["MISTRAL_API_KEY"],
|
||||
@@ -9576,6 +9707,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["model-definitions.js", "onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/modelstudio-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Model Studio provider plugin",
|
||||
@@ -9589,6 +9721,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["modelstudio"],
|
||||
providerAuthEnvVars: {
|
||||
modelstudio: ["MODELSTUDIO_API_KEY"],
|
||||
@@ -9660,6 +9793,12 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"media-understanding-provider.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
"web-search-provider.js",
|
||||
],
|
||||
packageName: "@openclaw/moonshot-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Moonshot provider plugin",
|
||||
@@ -9689,6 +9828,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
},
|
||||
},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["moonshot"],
|
||||
providerAuthEnvVars: {
|
||||
moonshot: ["MOONSHOT_API_KEY"],
|
||||
@@ -9753,6 +9893,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/msteams",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Microsoft Teams channel plugin",
|
||||
@@ -10236,6 +10378,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/nextcloud-talk",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Nextcloud Talk channel plugin",
|
||||
@@ -10957,6 +11101,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js", "setup-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/nostr",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Nostr channel plugin for NIP-04 encrypted DMs",
|
||||
@@ -11091,6 +11237,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
packageName: "@openclaw/nvidia-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw NVIDIA provider plugin",
|
||||
@@ -11104,6 +11251,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["nvidia"],
|
||||
providerAuthEnvVars: {
|
||||
nvidia: ["NVIDIA_API_KEY"],
|
||||
@@ -11117,6 +11265,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/ollama-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Ollama provider plugin",
|
||||
@@ -11130,6 +11280,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["ollama"],
|
||||
providerAuthEnvVars: {
|
||||
ollama: ["OLLAMA_API_KEY"],
|
||||
@@ -11155,6 +11306,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/open-prose",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenProse VM skill pack plugin (slash command + telemetry).",
|
||||
@@ -11180,6 +11333,19 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"cli-backend.js",
|
||||
"image-generation-provider.js",
|
||||
"media-understanding-provider.js",
|
||||
"openai-codex-auth-identity.js",
|
||||
"openai-codex-catalog.js",
|
||||
"openai-codex-provider.js",
|
||||
"openai-codex-provider.runtime.js",
|
||||
"openai-provider.js",
|
||||
"shared.js",
|
||||
"speech-provider.js",
|
||||
"tts.js",
|
||||
],
|
||||
packageName: "@openclaw/openai-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw OpenAI provider plugins",
|
||||
@@ -11193,6 +11359,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["openai", "openai-codex"],
|
||||
cliBackends: ["codex-cli"],
|
||||
providerAuthEnvVars: {
|
||||
@@ -11237,6 +11404,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js"],
|
||||
packageName: "@openclaw/opencode-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw OpenCode Zen provider plugin",
|
||||
@@ -11250,6 +11418,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["opencode"],
|
||||
providerAuthEnvVars: {
|
||||
opencode: ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"],
|
||||
@@ -11278,6 +11447,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js"],
|
||||
packageName: "@openclaw/opencode-go-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw OpenCode Go provider plugin",
|
||||
@@ -11291,6 +11461,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["opencode-go"],
|
||||
providerAuthEnvVars: {
|
||||
"opencode-go": ["OPENCODE_API_KEY", "OPENCODE_ZEN_API_KEY"],
|
||||
@@ -11319,6 +11490,11 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"media-understanding-provider.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
],
|
||||
packageName: "@openclaw/openrouter-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw OpenRouter provider plugin",
|
||||
@@ -11332,6 +11508,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["openrouter"],
|
||||
providerAuthEnvVars: {
|
||||
openrouter: ["OPENROUTER_API_KEY"],
|
||||
@@ -11493,6 +11670,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/perplexity-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Perplexity plugin",
|
||||
@@ -11553,6 +11731,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/qianfan-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Qianfan provider plugin",
|
||||
@@ -11566,6 +11745,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["qianfan"],
|
||||
providerAuthEnvVars: {
|
||||
qianfan: ["QIANFAN_API_KEY"],
|
||||
@@ -11607,6 +11787,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["sglang"],
|
||||
providerAuthEnvVars: {
|
||||
sglang: ["SGLANG_API_KEY"],
|
||||
@@ -11636,6 +11817,13 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"api.js",
|
||||
"channel-config-api.js",
|
||||
"reaction-runtime-api.js",
|
||||
"runtime-api.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/signal",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Signal channel plugin",
|
||||
@@ -12330,6 +12518,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "channel-config-api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/slack",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Slack channel plugin",
|
||||
@@ -14075,6 +14265,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["setup-api.js"],
|
||||
packageName: "@openclaw/synology-chat",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "Synology Chat channel plugin for OpenClaw",
|
||||
@@ -14133,6 +14324,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/synthetic-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Synthetic provider plugin",
|
||||
@@ -14146,6 +14338,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["synthetic"],
|
||||
providerAuthEnvVars: {
|
||||
synthetic: ["SYNTHETIC_API_KEY"],
|
||||
@@ -14174,6 +14367,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["web-search-provider.js"],
|
||||
packageName: "@openclaw/tavily-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Tavily plugin",
|
||||
@@ -14233,6 +14427,14 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"allow-from.js",
|
||||
"api.js",
|
||||
"channel-config-api.js",
|
||||
"runtime-api.js",
|
||||
"update-offset-runtime-api.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/telegram",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Telegram channel plugin",
|
||||
@@ -16314,6 +16516,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js", "setup-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/tlon",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Tlon/Urbit channel plugin",
|
||||
@@ -16520,6 +16724,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/together-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Together provider plugin",
|
||||
@@ -16533,6 +16738,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["together"],
|
||||
providerAuthEnvVars: {
|
||||
together: ["TOGETHER_API_KEY"],
|
||||
@@ -16561,6 +16767,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/twitch",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Twitch channel plugin",
|
||||
@@ -16793,6 +17001,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/venice-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Venice provider plugin",
|
||||
@@ -16806,6 +17015,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["venice"],
|
||||
providerAuthEnvVars: {
|
||||
venice: ["VENICE_API_KEY"],
|
||||
@@ -16834,6 +17044,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/vercel-ai-gateway-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Vercel AI Gateway provider plugin",
|
||||
@@ -16847,6 +17058,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["vercel-ai-gateway"],
|
||||
providerAuthEnvVars: {
|
||||
"vercel-ai-gateway": ["AI_GATEWAY_API_KEY"],
|
||||
@@ -16888,6 +17100,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["vllm"],
|
||||
providerAuthEnvVars: {
|
||||
vllm: ["VLLM_API_KEY"],
|
||||
@@ -16913,6 +17126,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js", "runtime-entry.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/voice-call",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw voice-call plugin",
|
||||
@@ -17540,6 +17755,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["provider-catalog.js"],
|
||||
packageName: "@openclaw/volcengine-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Volcengine provider plugin",
|
||||
@@ -17553,6 +17769,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["volcengine", "volcengine-plan"],
|
||||
providerAuthEnvVars: {
|
||||
volcengine: ["VOLCANO_ENGINE_API_KEY"],
|
||||
@@ -17585,6 +17802,17 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"action-runtime-api.js",
|
||||
"action-runtime.runtime.js",
|
||||
"api.js",
|
||||
"auth-presence.js",
|
||||
"channel-config-api.js",
|
||||
"light-runtime-api.js",
|
||||
"login-qr-api.js",
|
||||
"runtime-api.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["light-runtime-api.js", "runtime-api.js"],
|
||||
packageName: "@openclaw/whatsapp",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw WhatsApp channel plugin",
|
||||
@@ -18183,6 +18411,14 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"model-definitions.js",
|
||||
"onboard.js",
|
||||
"provider-catalog.js",
|
||||
"provider-models.js",
|
||||
"stream.js",
|
||||
"web-search.js",
|
||||
],
|
||||
packageName: "@openclaw/xai-plugin",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw xAI plugin",
|
||||
@@ -18212,6 +18448,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
},
|
||||
},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["xai"],
|
||||
providerAuthEnvVars: {
|
||||
xai: ["XAI_API_KEY"],
|
||||
@@ -18258,6 +18495,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["onboard.js", "provider-catalog.js"],
|
||||
packageName: "@openclaw/xiaomi-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Xiaomi provider plugin",
|
||||
@@ -18271,6 +18509,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["xiaomi"],
|
||||
providerAuthEnvVars: {
|
||||
xiaomi: ["XIAOMI_API_KEY"],
|
||||
@@ -18299,6 +18538,14 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./index.ts",
|
||||
built: "index.js",
|
||||
},
|
||||
publicSurfaceArtifacts: [
|
||||
"detect.js",
|
||||
"media-understanding-provider.js",
|
||||
"model-definitions.js",
|
||||
"onboard.js",
|
||||
"runtime-api.js",
|
||||
],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/zai-provider",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Z.AI provider plugin",
|
||||
@@ -18312,6 +18559,7 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
additionalProperties: false,
|
||||
properties: {},
|
||||
},
|
||||
enabledByDefault: true,
|
||||
providers: ["zai"],
|
||||
providerAuthEnvVars: {
|
||||
zai: ["ZAI_API_KEY", "Z_AI_API_KEY"],
|
||||
@@ -18403,6 +18651,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/zalo",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Zalo channel plugin",
|
||||
@@ -18874,6 +19124,8 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
|
||||
source: "./setup-entry.ts",
|
||||
built: "setup-entry.js",
|
||||
},
|
||||
publicSurfaceArtifacts: ["api.js", "runtime-api.js"],
|
||||
runtimeSidecarArtifacts: ["runtime-api.js"],
|
||||
packageName: "@openclaw/zalouser",
|
||||
packageVersion: "2026.3.26",
|
||||
packageDescription: "OpenClaw Zalo Personal Account plugin via native zca-js integration",
|
||||
|
||||
@@ -35,6 +35,11 @@ describe("bundled plugin metadata", () => {
|
||||
const discord = BUNDLED_PLUGIN_METADATA.find((entry) => entry.dirName === "discord");
|
||||
expect(discord?.source).toEqual({ source: "./index.ts", built: "index.js" });
|
||||
expect(discord?.setupSource).toEqual({ source: "./setup-entry.ts", built: "setup-entry.js" });
|
||||
expect(discord?.publicSurfaceArtifacts).toContain("api.js");
|
||||
expect(discord?.publicSurfaceArtifacts).toContain("runtime-api.js");
|
||||
expect(discord?.publicSurfaceArtifacts).toContain("session-key-api.js");
|
||||
expect(discord?.publicSurfaceArtifacts).not.toContain("test-api.js");
|
||||
expect(discord?.runtimeSidecarArtifacts).toContain("runtime-api.js");
|
||||
expect(discord?.manifest.id).toBe("discord");
|
||||
expect(discord?.manifest.channelConfigs?.discord).toEqual(
|
||||
expect.objectContaining({
|
||||
@@ -43,6 +48,16 @@ describe("bundled plugin metadata", () => {
|
||||
);
|
||||
});
|
||||
|
||||
it("excludes test-only public surface artifacts", () => {
|
||||
for (const entry of BUNDLED_PLUGIN_METADATA) {
|
||||
for (const artifact of entry.publicSurfaceArtifacts ?? []) {
|
||||
expect(artifact).not.toMatch(/^test-/);
|
||||
expect(artifact).not.toContain(".test-");
|
||||
expect(artifact).not.toMatch(/\.test\.js$/);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("prefers built generated paths when present and falls back to source paths", () => {
|
||||
const tempRoot = createGeneratedPluginTempRoot("openclaw-bundled-plugin-metadata-");
|
||||
|
||||
@@ -183,4 +198,47 @@ describe("bundled plugin metadata", () => {
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
it("captures top-level public surface artifacts without duplicating the primary entrypoints", async () => {
|
||||
const tempRoot = createGeneratedPluginTempRoot("openclaw-bundled-plugin-public-artifacts-");
|
||||
|
||||
writeJson(path.join(tempRoot, "extensions", "alpha", "package.json"), {
|
||||
name: "@openclaw/alpha",
|
||||
version: "0.0.1",
|
||||
openclaw: {
|
||||
extensions: ["./index.ts"],
|
||||
setupEntry: "./setup-entry.ts",
|
||||
},
|
||||
});
|
||||
writeJson(path.join(tempRoot, "extensions", "alpha", "openclaw.plugin.json"), {
|
||||
id: "alpha",
|
||||
configSchema: { type: "object" },
|
||||
});
|
||||
fs.writeFileSync(
|
||||
path.join(tempRoot, "extensions", "alpha", "index.ts"),
|
||||
"export {};\n",
|
||||
"utf8",
|
||||
);
|
||||
fs.writeFileSync(
|
||||
path.join(tempRoot, "extensions", "alpha", "setup-entry.ts"),
|
||||
"export {};\n",
|
||||
"utf8",
|
||||
);
|
||||
fs.writeFileSync(path.join(tempRoot, "extensions", "alpha", "api.ts"), "export {};\n", "utf8");
|
||||
fs.writeFileSync(
|
||||
path.join(tempRoot, "extensions", "alpha", "runtime-api.ts"),
|
||||
"export {};\n",
|
||||
"utf8",
|
||||
);
|
||||
|
||||
const entries = await collectBundledPluginMetadata({ repoRoot: tempRoot });
|
||||
const firstEntry = entries[0] as
|
||||
| {
|
||||
publicSurfaceArtifacts?: string[];
|
||||
runtimeSidecarArtifacts?: string[];
|
||||
}
|
||||
| undefined;
|
||||
expect(firstEntry?.publicSurfaceArtifacts).toEqual(["api.js", "runtime-api.js"]);
|
||||
expect(firstEntry?.runtimeSidecarArtifacts).toEqual(["runtime-api.js"]);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -13,6 +13,8 @@ export type GeneratedBundledPluginMetadata = {
|
||||
idHint: string;
|
||||
source: GeneratedBundledPluginPathPair;
|
||||
setupSource?: GeneratedBundledPluginPathPair;
|
||||
publicSurfaceArtifacts?: readonly string[];
|
||||
runtimeSidecarArtifacts?: readonly string[];
|
||||
packageName?: string;
|
||||
packageVersion?: string;
|
||||
packageDescription?: string;
|
||||
|
||||
@@ -132,21 +132,25 @@ describe("normalizePluginsConfig", () => {
|
||||
|
||||
it("normalizes legacy plugin ids to their merged bundled plugin id", () => {
|
||||
const result = normalizePluginsConfig({
|
||||
allow: ["openai-codex", "minimax-portal-auth"],
|
||||
deny: ["openai-codex", "minimax-portal-auth"],
|
||||
allow: ["openai-codex", "google-gemini-cli", "minimax-portal-auth"],
|
||||
deny: ["openai-codex", "google-gemini-cli", "minimax-portal-auth"],
|
||||
entries: {
|
||||
"openai-codex": {
|
||||
enabled: true,
|
||||
},
|
||||
"google-gemini-cli": {
|
||||
enabled: true,
|
||||
},
|
||||
"minimax-portal-auth": {
|
||||
enabled: false,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
expect(result.allow).toEqual(["openai", "minimax"]);
|
||||
expect(result.deny).toEqual(["openai", "minimax"]);
|
||||
expect(result.allow).toEqual(["openai", "google", "minimax"]);
|
||||
expect(result.deny).toEqual(["openai", "google", "minimax"]);
|
||||
expect(result.entries.openai?.enabled).toBe(true);
|
||||
expect(result.entries.google?.enabled).toBe(true);
|
||||
expect(result.entries.minimax?.enabled).toBe(false);
|
||||
});
|
||||
});
|
||||
@@ -189,6 +193,16 @@ describe("resolveEffectiveEnableState", () => {
|
||||
});
|
||||
|
||||
describe("resolveEnableState", () => {
|
||||
it("enables bundled plugins only when manifest metadata marks them enabled by default", () => {
|
||||
expect(resolveEnableState("openai", "bundled", normalizePluginsConfig({}))).toEqual({
|
||||
enabled: false,
|
||||
reason: "bundled (disabled by default)",
|
||||
});
|
||||
expect(resolveEnableState("openai", "bundled", normalizePluginsConfig({}), true)).toEqual({
|
||||
enabled: true,
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps the selected memory slot plugin enabled even when omitted from plugins.allow", () => {
|
||||
const state = resolveEnableState(
|
||||
"memory-core",
|
||||
@@ -266,8 +280,8 @@ describe("resolveEnableState", () => {
|
||||
});
|
||||
});
|
||||
|
||||
it("keeps bundled provider plugins enabled when they are bundled-default providers", () => {
|
||||
const state = resolveEnableState("google", "bundled", normalizePluginsConfig({}));
|
||||
it("keeps bundled plugins enabled when manifest metadata marks them enabled by default", () => {
|
||||
const state = resolveEnableState("google", "bundled", normalizePluginsConfig({}), true);
|
||||
expect(state).toEqual({ enabled: true });
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import { normalizeChatChannelId } from "../channels/registry.js";
|
||||
import type { OpenClawConfig } from "../config/config.js";
|
||||
import {
|
||||
BUNDLED_LEGACY_PLUGIN_ID_ALIASES,
|
||||
BUNDLED_PROVIDER_PLUGIN_ID_ALIASES,
|
||||
} from "./bundled-capability-metadata.js";
|
||||
import type { PluginRecord } from "./registry.js";
|
||||
import { defaultSlotIdForKey } from "./slots.js";
|
||||
|
||||
@@ -28,52 +32,13 @@ export type NormalizedPluginsConfig = {
|
||||
>;
|
||||
};
|
||||
|
||||
export const BUNDLED_ENABLED_BY_DEFAULT = new Set<string>([
|
||||
"amazon-bedrock",
|
||||
"anthropic",
|
||||
"byteplus",
|
||||
"cloudflare-ai-gateway",
|
||||
"deepseek",
|
||||
"device-pair",
|
||||
"github-copilot",
|
||||
"google",
|
||||
"huggingface",
|
||||
"kilocode",
|
||||
"kimi",
|
||||
"minimax",
|
||||
"mistral",
|
||||
"modelstudio",
|
||||
"moonshot",
|
||||
"nvidia",
|
||||
"ollama",
|
||||
"openai",
|
||||
"opencode",
|
||||
"opencode-go",
|
||||
"openrouter",
|
||||
"phone-control",
|
||||
"qianfan",
|
||||
"sglang",
|
||||
"synthetic",
|
||||
"talk-voice",
|
||||
"together",
|
||||
"venice",
|
||||
"vercel-ai-gateway",
|
||||
"vllm",
|
||||
"volcengine",
|
||||
"xai",
|
||||
"xiaomi",
|
||||
"zai",
|
||||
]);
|
||||
|
||||
const PLUGIN_ID_ALIASES: Readonly<Record<string, string>> = {
|
||||
"openai-codex": "openai",
|
||||
"kimi-coding": "kimi",
|
||||
"minimax-portal-auth": "minimax",
|
||||
};
|
||||
|
||||
export function normalizePluginId(id: string): string {
|
||||
const trimmed = id.trim();
|
||||
return PLUGIN_ID_ALIASES[trimmed] ?? trimmed;
|
||||
return (
|
||||
BUNDLED_LEGACY_PLUGIN_ID_ALIASES[trimmed] ??
|
||||
BUNDLED_PROVIDER_PLUGIN_ID_ALIASES[trimmed] ??
|
||||
trimmed
|
||||
);
|
||||
}
|
||||
|
||||
const normalizeList = (value: unknown): string[] => {
|
||||
@@ -299,7 +264,7 @@ export function resolveEnableState(
|
||||
if (entry?.enabled === true) {
|
||||
return { enabled: true };
|
||||
}
|
||||
if (origin === "bundled" && (enabledByDefault ?? BUNDLED_ENABLED_BY_DEFAULT.has(id))) {
|
||||
if (origin === "bundled" && enabledByDefault === true) {
|
||||
return { enabled: true };
|
||||
}
|
||||
if (origin === "bundled") {
|
||||
|
||||
@@ -45,6 +45,7 @@ export type PluginManifestRecord = {
|
||||
description?: string;
|
||||
version?: string;
|
||||
enabledByDefault?: boolean;
|
||||
autoEnableWhenConfiguredProviders?: string[];
|
||||
format?: PluginFormat;
|
||||
bundleFormat?: PluginBundleFormat;
|
||||
bundleCapabilities?: string[];
|
||||
@@ -220,6 +221,7 @@ function buildRecord(params: {
|
||||
normalizeManifestLabel(params.manifest.description) ?? params.candidate.packageDescription,
|
||||
version: normalizeManifestLabel(params.manifest.version) ?? params.candidate.packageVersion,
|
||||
enabledByDefault: params.manifest.enabledByDefault === true ? true : undefined,
|
||||
autoEnableWhenConfiguredProviders: params.manifest.autoEnableWhenConfiguredProviders,
|
||||
format: params.candidate.format ?? "openclaw",
|
||||
bundleFormat: params.candidate.bundleFormat,
|
||||
kind: params.manifest.kind,
|
||||
|
||||
@@ -20,6 +20,10 @@ export type PluginManifest = {
|
||||
id: string;
|
||||
configSchema: Record<string, unknown>;
|
||||
enabledByDefault?: boolean;
|
||||
/** Legacy plugin ids that should normalize to this plugin id. */
|
||||
legacyPluginIds?: string[];
|
||||
/** Provider ids that should auto-enable this plugin when referenced in auth/config/models. */
|
||||
autoEnableWhenConfiguredProviders?: string[];
|
||||
kind?: PluginKind;
|
||||
channels?: string[];
|
||||
providers?: string[];
|
||||
@@ -63,6 +67,8 @@ export type PluginManifestProviderAuthChoice = {
|
||||
/** Optional user-facing choice label/hint for grouped onboarding UI. */
|
||||
choiceLabel?: string;
|
||||
choiceHint?: string;
|
||||
/** Legacy choice ids that should point users at this replacement choice. */
|
||||
deprecatedChoiceIds?: string[];
|
||||
/** Optional grouping metadata for auth-choice pickers. */
|
||||
groupId?: string;
|
||||
groupLabel?: string;
|
||||
@@ -151,6 +157,7 @@ function normalizeProviderAuthChoices(
|
||||
}
|
||||
const choiceLabel = typeof entry.choiceLabel === "string" ? entry.choiceLabel.trim() : "";
|
||||
const choiceHint = typeof entry.choiceHint === "string" ? entry.choiceHint.trim() : "";
|
||||
const deprecatedChoiceIds = normalizeStringList(entry.deprecatedChoiceIds);
|
||||
const groupId = typeof entry.groupId === "string" ? entry.groupId.trim() : "";
|
||||
const groupLabel = typeof entry.groupLabel === "string" ? entry.groupLabel.trim() : "";
|
||||
const groupHint = typeof entry.groupHint === "string" ? entry.groupHint.trim() : "";
|
||||
@@ -169,6 +176,7 @@ function normalizeProviderAuthChoices(
|
||||
choiceId,
|
||||
...(choiceLabel ? { choiceLabel } : {}),
|
||||
...(choiceHint ? { choiceHint } : {}),
|
||||
...(deprecatedChoiceIds.length > 0 ? { deprecatedChoiceIds } : {}),
|
||||
...(groupId ? { groupId } : {}),
|
||||
...(groupLabel ? { groupLabel } : {}),
|
||||
...(groupHint ? { groupHint } : {}),
|
||||
@@ -276,6 +284,10 @@ export function loadPluginManifest(
|
||||
|
||||
const kind = typeof raw.kind === "string" ? (raw.kind as PluginKind) : undefined;
|
||||
const enabledByDefault = raw.enabledByDefault === true;
|
||||
const legacyPluginIds = normalizeStringList(raw.legacyPluginIds);
|
||||
const autoEnableWhenConfiguredProviders = normalizeStringList(
|
||||
raw.autoEnableWhenConfiguredProviders,
|
||||
);
|
||||
const name = typeof raw.name === "string" ? raw.name.trim() : undefined;
|
||||
const description = typeof raw.description === "string" ? raw.description.trim() : undefined;
|
||||
const version = typeof raw.version === "string" ? raw.version.trim() : undefined;
|
||||
@@ -299,6 +311,10 @@ export function loadPluginManifest(
|
||||
id,
|
||||
configSchema,
|
||||
...(enabledByDefault ? { enabledByDefault } : {}),
|
||||
...(legacyPluginIds.length > 0 ? { legacyPluginIds } : {}),
|
||||
...(autoEnableWhenConfiguredProviders.length > 0
|
||||
? { autoEnableWhenConfiguredProviders }
|
||||
: {}),
|
||||
kind,
|
||||
channels,
|
||||
providers,
|
||||
|
||||
@@ -7,6 +7,7 @@ vi.mock("./manifest-registry.js", () => ({
|
||||
}));
|
||||
|
||||
import {
|
||||
resolveManifestDeprecatedProviderAuthChoice,
|
||||
resolveManifestProviderAuthChoice,
|
||||
resolveManifestProviderAuthChoices,
|
||||
resolveManifestProviderOnboardAuthFlags,
|
||||
@@ -91,4 +92,30 @@ describe("provider auth choice manifest helpers", () => {
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it("resolves deprecated auth-choice aliases through manifest metadata", () => {
|
||||
loadPluginManifestRegistry.mockReturnValue({
|
||||
plugins: [
|
||||
{
|
||||
id: "minimax",
|
||||
providerAuthChoices: [
|
||||
{
|
||||
provider: "minimax",
|
||||
method: "api-global",
|
||||
choiceId: "minimax-global-api",
|
||||
deprecatedChoiceIds: ["minimax", "minimax-api"],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
expect(resolveManifestDeprecatedProviderAuthChoice("minimax")?.choiceId).toBe(
|
||||
"minimax-global-api",
|
||||
);
|
||||
expect(resolveManifestDeprecatedProviderAuthChoice("minimax-api")?.choiceId).toBe(
|
||||
"minimax-global-api",
|
||||
);
|
||||
expect(resolveManifestDeprecatedProviderAuthChoice("openai")).toBeUndefined();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -9,6 +9,7 @@ export type ProviderAuthChoiceMetadata = {
|
||||
choiceId: string;
|
||||
choiceLabel: string;
|
||||
choiceHint?: string;
|
||||
deprecatedChoiceIds?: string[];
|
||||
groupId?: string;
|
||||
groupLabel?: string;
|
||||
groupHint?: string;
|
||||
@@ -46,6 +47,7 @@ export function resolveManifestProviderAuthChoices(params?: {
|
||||
choiceId: choice.choiceId,
|
||||
choiceLabel: choice.choiceLabel ?? choice.choiceId,
|
||||
...(choice.choiceHint ? { choiceHint: choice.choiceHint } : {}),
|
||||
...(choice.deprecatedChoiceIds ? { deprecatedChoiceIds: choice.deprecatedChoiceIds } : {}),
|
||||
...(choice.groupId ? { groupId: choice.groupId } : {}),
|
||||
...(choice.groupLabel ? { groupLabel: choice.groupLabel } : {}),
|
||||
...(choice.groupHint ? { groupHint: choice.groupHint } : {}),
|
||||
@@ -94,6 +96,23 @@ export function resolveManifestProviderApiKeyChoice(params: {
|
||||
});
|
||||
}
|
||||
|
||||
export function resolveManifestDeprecatedProviderAuthChoice(
|
||||
choiceId: string,
|
||||
params?: {
|
||||
config?: OpenClawConfig;
|
||||
workspaceDir?: string;
|
||||
env?: NodeJS.ProcessEnv;
|
||||
},
|
||||
): ProviderAuthChoiceMetadata | undefined {
|
||||
const normalized = choiceId.trim();
|
||||
if (!normalized) {
|
||||
return undefined;
|
||||
}
|
||||
return resolveManifestProviderAuthChoices(params).find((choice) =>
|
||||
choice.deprecatedChoiceIds?.includes(normalized),
|
||||
);
|
||||
}
|
||||
|
||||
export function resolveManifestProviderOnboardAuthFlags(params?: {
|
||||
config?: OpenClawConfig;
|
||||
workspaceDir?: string;
|
||||
|
||||
@@ -1052,6 +1052,15 @@ export type WebSearchProviderPlugin = {
|
||||
id: WebSearchProviderId;
|
||||
label: string;
|
||||
hint: string;
|
||||
/**
|
||||
* Interactive onboarding surfaces where this search provider should appear
|
||||
* when OpenClaw has no config-aware runtime context yet.
|
||||
*
|
||||
* Unlike provider auth, search setup historically exposed only a curated
|
||||
* quickstart subset. Keep this plugin-owned so core does not hardcode the
|
||||
* default bundled provider list.
|
||||
*/
|
||||
onboardingScopes?: Array<"text-inference">;
|
||||
requiresCredential?: boolean;
|
||||
credentialLabel?: string;
|
||||
envVars: string[];
|
||||
|
||||
Reference in New Issue
Block a user