refactor: share provider catalog projection · openclaw/openclaw@2fef80a
vincentkoc
·
2026-05-29
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | import type { UnifiedModelCatalogEntry } from "../model-catalog/types.js"; |
2 | 2 | import { createProviderApiKeyAuthMethod } from "../plugins/provider-api-key-auth.js"; |
| 3 | +import { projectProviderCatalogResultToUnifiedTextRows } from "../plugins/provider-catalog-unified-text.js"; |
3 | 4 | import type { |
4 | 5 | ProviderPlugin, |
5 | 6 | ProviderCatalogContext, |
@@ -109,33 +110,6 @@ function resolveEnvVars(params: {
|
109 | 110 | return combined.length > 0 ? uniqueStrings(combined) : undefined; |
110 | 111 | } |
111 | 112 | |
112 | | -function projectProviderCatalogResultToUnifiedTextRows(params: { |
113 | | -providerId: string; |
114 | | -result: ProviderCatalogResult; |
115 | | -source: UnifiedModelCatalogEntry["source"]; |
116 | | -}): UnifiedModelCatalogEntry[] { |
117 | | -if (!params.result) { |
118 | | -return []; |
119 | | -} |
120 | | -const providers = |
121 | | -"provider" in params.result |
122 | | - ? { [params.providerId]: params.result.provider } |
123 | | - : params.result.providers; |
124 | | -const rows: UnifiedModelCatalogEntry[] = []; |
125 | | -for (const [providerId, providerConfig] of Object.entries(providers)) { |
126 | | -for (const model of providerConfig.models ?? []) { |
127 | | -rows.push({ |
128 | | -kind: "text", |
129 | | -provider: providerId, |
130 | | -model: model.id, |
131 | | - ...(model.name ? { label: model.name } : {}), |
132 | | -source: params.source, |
133 | | -}); |
134 | | -} |
135 | | -} |
136 | | -return rows; |
137 | | -} |
138 | | - |
139 | 113 | async function runUnifiedTextCatalog(params: { |
140 | 114 | providerId: string; |
141 | 115 | catalog: ProviderPluginCatalog; |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -15,9 +15,9 @@ import type {
|
15 | 15 | import { normalizeOptionalString } from "../shared/string-coerce.js"; |
16 | 16 | import { uniqueValues } from "../shared/string-normalization.js"; |
17 | 17 | import type { PluginDiagnostic } from "./manifest-types.js"; |
| 18 | +import { projectProviderCatalogResultToUnifiedTextRows } from "./provider-catalog-unified-text.js"; |
18 | 19 | import type { PluginRecord, PluginRegistry } from "./registry-types.js"; |
19 | 20 | import type { |
20 | | -ProviderCatalogResult, |
21 | 21 | ProviderPlugin, |
22 | 22 | UnifiedModelCatalogProviderContext, |
23 | 23 | UnifiedModelCatalogProviderPlugin, |
@@ -58,33 +58,6 @@ function mergeModelCatalogHooks(
|
58 | 58 | }; |
59 | 59 | } |
60 | 60 | |
61 | | -function projectProviderCatalogResultToUnifiedTextRows(params: { |
62 | | -providerId: string; |
63 | | -result: ProviderCatalogResult; |
64 | | -source: UnifiedModelCatalogEntry["source"]; |
65 | | -}): UnifiedModelCatalogEntry[] { |
66 | | -if (!params.result) { |
67 | | -return []; |
68 | | -} |
69 | | -const providers = |
70 | | -"provider" in params.result |
71 | | - ? { [params.providerId]: params.result.provider } |
72 | | - : params.result.providers; |
73 | | -const rows: UnifiedModelCatalogEntry[] = []; |
74 | | -for (const [providerId, providerConfig] of Object.entries(providers)) { |
75 | | -for (const model of providerConfig.models ?? []) { |
76 | | -rows.push({ |
77 | | -kind: "text", |
78 | | -provider: providerId, |
79 | | -model: model.id, |
80 | | - ...(model.name ? { label: model.name } : {}), |
81 | | -source: params.source, |
82 | | -}); |
83 | | -} |
84 | | -} |
85 | | -return rows; |
86 | | -} |
87 | | - |
88 | 61 | export function createModelCatalogRegistrationHandlers(params: { |
89 | 62 | registry: PluginRegistry; |
90 | 63 | pushDiagnostic: (diagnostic: PluginDiagnostic) => void; |
|
| Original file line number | Diff line number | Diff line change |
|---|
|
| 1 | +import type { UnifiedModelCatalogEntry } from "../model-catalog/types.js"; |
| 2 | +import type { ProviderCatalogResult } from "./types.js"; |
| 3 | + |
| 4 | +export function projectProviderCatalogResultToUnifiedTextRows(params: { |
| 5 | +providerId: string; |
| 6 | +result: ProviderCatalogResult; |
| 7 | +source: UnifiedModelCatalogEntry["source"]; |
| 8 | +}): UnifiedModelCatalogEntry[] { |
| 9 | +if (!params.result) { |
| 10 | +return []; |
| 11 | +} |
| 12 | +const providers = |
| 13 | +"provider" in params.result |
| 14 | + ? { [params.providerId]: params.result.provider } |
| 15 | + : params.result.providers; |
| 16 | +const rows: UnifiedModelCatalogEntry[] = []; |
| 17 | +for (const [providerId, providerConfig] of Object.entries(providers)) { |
| 18 | +for (const model of providerConfig.models ?? []) { |
| 19 | +rows.push({ |
| 20 | +kind: "text", |
| 21 | +provider: providerId, |
| 22 | +model: model.id, |
| 23 | + ...(model.name ? { label: model.name } : {}), |
| 24 | +source: params.source, |
| 25 | +}); |
| 26 | +} |
| 27 | +} |
| 28 | +return rows; |
| 29 | +} |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。