

















@@ -2,13 +2,6 @@ import type { OpenClawConfig } from "../config/types.openclaw.js";
22import { normalizePluginsConfig, resolveEffectiveEnableState } from "../plugins/config-state.js";
33import { resolveManifestProviderAuthChoices } from "../plugins/provider-auth-choices.js";
44import { resolveProviderInstallCatalogEntries } from "../plugins/provider-install-catalog.js";
5-import {
6-resolveProviderModelPickerEntries,
7-resolveProviderWizardOptions,
8-} from "../plugins/provider-wizard.js";
9-import { resolvePluginProviders } from "../plugins/providers.runtime.js";
10-import type { ProviderPlugin } from "../plugins/types.js";
11-import { normalizeOptionalString } from "../shared/string-coerce.js";
125import type { FlowContribution, FlowOption } from "./types.js";
136import { sortFlowContributionsByLabel } from "./types.js";
147@@ -29,15 +22,7 @@ export type ProviderSetupFlowContribution = FlowContribution & {
2922pluginId?: string;
3023option: ProviderSetupFlowOption;
3124onboardingScopes?: ProviderFlowScope[];
32-source: "manifest" | "runtime" | "install-catalog";
33-};
34-35-export type ProviderModelPickerFlowContribution = FlowContribution & {
36-kind: "provider";
37-surface: "model-picker";
38-providerId: string;
39-option: ProviderModelPickerFlowEntry;
40-source: "runtime";
25+source: "manifest" | "install-catalog";
4126};
42274328function includesProviderFlowScope(
@@ -47,25 +32,6 @@ function includesProviderFlowScope(
4732return scopes ? scopes.includes(scope) : scope === DEFAULT_PROVIDER_FLOW_SCOPE;
4833}
493450-function resolveProviderDocsById(params?: {
51-config?: OpenClawConfig;
52-workspaceDir?: string;
53-env?: NodeJS.ProcessEnv;
54-}): Map<string, string> {
55-return new Map(
56-resolvePluginProviders({
57-config: params?.config,
58-workspaceDir: params?.workspaceDir,
59-env: params?.env,
60-mode: "setup",
61-})
62-.filter((provider): provider is ProviderPlugin & { docsPath: string } =>
63-Boolean(normalizeOptionalString(provider.docsPath)),
64-)
65-.map((provider) => [provider.id, normalizeOptionalString(provider.docsPath)!]),
66-);
67-}
68-6935function resolveInstallCatalogProviderSetupFlowContributions(params?: {
7036config?: OpenClawConfig;
7137workspaceDir?: string;
@@ -174,100 +140,18 @@ export function resolveProviderSetupFlowContributions(params?: {
174140scope?: ProviderFlowScope;
175141}): ProviderSetupFlowContribution[] {
176142const scope = params?.scope ?? DEFAULT_PROVIDER_FLOW_SCOPE;
177-const docsByProvider = resolveProviderDocsById(params ?? {});
178143const manifestContributions = resolveManifestProviderSetupFlowContributions({
179144 ...params,
180145 scope,
181146});
182147const seenOptionValues = new Set(
183148manifestContributions.map((contribution) => contribution.option.value),
184149);
185-const runtimeContributions = resolveProviderWizardOptions(params ?? {})
186-.filter((option) => includesProviderFlowScope(option.onboardingScopes, scope))
187-.filter((option) => !seenOptionValues.has(option.value))
188-.map((option) =>
189-Object.assign(
190-{
191-id: `provider:setup:${option.value}`,
192-kind: `provider` as const,
193-surface: `setup` as const,
194-providerId: option.groupId,
195-option: {
196-value: option.value,
197-label: option.label,
198- ...(option.hint ? { hint: option.hint } : {}),
199- ...(option.assistantPriority !== undefined
200- ? { assistantPriority: option.assistantPriority }
201- : {}),
202- ...(option.assistantVisibility
203- ? { assistantVisibility: option.assistantVisibility }
204- : {}),
205-group: {
206-id: option.groupId,
207-label: option.groupLabel,
208- ...(option.groupHint ? { hint: option.groupHint } : {}),
209-},
210- ...(docsByProvider.get(option.groupId)
211- ? { docs: { path: docsByProvider.get(option.groupId)! } }
212- : {}),
213-},
214-},
215-option.onboardingScopes ? { onboardingScopes: [...option.onboardingScopes] } : {},
216-{ source: `runtime` as const },
217-),
218-);
219-for (const contribution of runtimeContributions) {
220-seenOptionValues.add(contribution.option.value);
221-}
222150const installCatalogContributions = resolveInstallCatalogProviderSetupFlowContributions({
223151 ...params,
224152 scope,
225153}).filter((contribution) => !seenOptionValues.has(contribution.option.value));
226-return sortFlowContributionsByLabel([
227- ...manifestContributions,
228- ...runtimeContributions,
229- ...installCatalogContributions,
230-]);
231-}
232-233-export function resolveProviderModelPickerFlowEntries(params?: {
234-config?: OpenClawConfig;
235-workspaceDir?: string;
236-env?: NodeJS.ProcessEnv;
237-}): ProviderModelPickerFlowEntry[] {
238-return resolveProviderModelPickerFlowContributions(params).map(
239-(contribution) => contribution.option,
240-);
241-}
242-243-export function resolveProviderModelPickerFlowContributions(params?: {
244-config?: OpenClawConfig;
245-workspaceDir?: string;
246-env?: NodeJS.ProcessEnv;
247-}): ProviderModelPickerFlowContribution[] {
248-const docsByProvider = resolveProviderDocsById(params ?? {});
249-return sortFlowContributionsByLabel(
250-resolveProviderModelPickerEntries(params ?? {}).map((entry) => {
251-const providerId = entry.value.startsWith("provider-plugin:")
252- ? entry.value.slice("provider-plugin:".length).split(":")[0]
253- : entry.value;
254-return {
255-id: `provider:model-picker:${entry.value}`,
256-kind: "provider" as const,
257-surface: "model-picker" as const,
258- providerId,
259-option: {
260-value: entry.value,
261-label: entry.label,
262- ...(entry.hint ? { hint: entry.hint } : {}),
263- ...(docsByProvider.get(providerId)
264- ? { docs: { path: docsByProvider.get(providerId)! } }
265- : {}),
266-},
267-source: "runtime" as const,
268-};
269-}),
270-);
154+return sortFlowContributionsByLabel([...manifestContributions, ...installCatalogContributions]);
271155}
272156273157export { includesProviderFlowScope };
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。