





















@@ -4,37 +4,14 @@ import { normalizeLowercaseStringOrEmpty } from "@openclaw/normalization-core/st
44import { loadBundledCapabilityRuntimeRegistry } from "../bundled-capability-runtime.js";
55import { discoverOpenClawPlugins } from "../discovery.js";
66import { loadPluginManifestRegistry } from "../manifest-registry.js";
7-import { resolveManifestContractPluginIds } from "../plugin-registry.js";
87import { resolveBundledExplicitProviderContractsFromPublicArtifacts } from "../provider-contract-public-artifacts.js";
9-import type {
10-ImageGenerationProviderPlugin,
11-MediaUnderstandingProviderPlugin,
12-TranscriptSourceProvider,
13-MusicGenerationProviderPlugin,
14-ProviderPlugin,
15-RealtimeTranscriptionProviderPlugin,
16-RealtimeVoiceProviderPlugin,
17-SpeechProviderPlugin,
18-VideoGenerationProviderPlugin,
19-WebFetchProviderPlugin,
20-WebSearchProviderPlugin,
21-} from "../types.js";
8+import type { ProviderPlugin, WebFetchProviderPlugin, WebSearchProviderPlugin } from "../types.js";
229import { resolveBundledExplicitWebSearchProvidersFromPublicArtifacts } from "../web-provider-public-artifacts.explicit.js";
2310import {
2411BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS,
2512type BundledPluginContractSnapshot,
2613} from "./inventory/bundled-capability-metadata.js";
2714import { uniqueStrings } from "./shared.js";
28-import {
29-loadVitestImageGenerationProviderContractRegistry,
30-loadVitestMediaUnderstandingProviderContractRegistry,
31-loadVitestTranscriptsSourceProviderContractRegistry,
32-loadVitestMusicGenerationProviderContractRegistry,
33-loadVitestRealtimeTranscriptionProviderContractRegistry,
34-loadVitestRealtimeVoiceProviderContractRegistry,
35-loadVitestSpeechProviderContractRegistry,
36-loadVitestVideoGenerationProviderContractRegistry,
37-} from "./speech-vitest-registry.js";
38153916type BundledCapabilityRuntimeRegistry = ReturnType<typeof loadBundledCapabilityRuntimeRegistry>;
4017type CapabilityContractEntry<T> = {
@@ -49,38 +26,9 @@ type WebSearchProviderContractEntry = CapabilityContractEntry<WebSearchProviderP
4926type WebFetchProviderContractEntry = CapabilityContractEntry<WebFetchProviderPlugin> & {
5027credentialValue: unknown;
5128};
52-type SpeechProviderContractEntry = CapabilityContractEntry<SpeechProviderPlugin>;
53-type RealtimeTranscriptionProviderContractEntry =
54-CapabilityContractEntry<RealtimeTranscriptionProviderPlugin>;
55-type RealtimeVoiceProviderContractEntry = CapabilityContractEntry<RealtimeVoiceProviderPlugin>;
56-type MediaUnderstandingProviderContractEntry =
57-CapabilityContractEntry<MediaUnderstandingProviderPlugin>;
58-type TranscriptsSourceProviderContractEntry = CapabilityContractEntry<TranscriptSourceProvider>;
59-type ImageGenerationProviderContractEntry = CapabilityContractEntry<ImageGenerationProviderPlugin>;
60-type VideoGenerationProviderContractEntry = CapabilityContractEntry<VideoGenerationProviderPlugin>;
61-type MusicGenerationProviderContractEntry = CapabilityContractEntry<MusicGenerationProviderPlugin>;
62296330type PluginRegistrationContractEntry = BundledPluginContractSnapshot;
643165-type ManifestContractKey =
66-| "embeddingProviders"
67-| "speechProviders"
68-| "realtimeTranscriptionProviders"
69-| "realtimeVoiceProviders"
70-| "mediaUnderstandingProviders"
71-| "transcriptSourceProviders"
72-| "documentExtractors"
73-| "imageGenerationProviders"
74-| "videoGenerationProviders"
75-| "musicGenerationProviders"
76-| "webContentExtractors"
77-| "webFetchProviders"
78-| "webSearchProviders"
79-| "migrationProviders"
80-| "tools";
81-82-type ManifestRegistryContractKey = "webFetchProviders" | "webSearchProviders";
83-8432function normalizeProviderEnvVars(
8533providerEnvVars: Record<string, string[]> | undefined,
8634): Record<string, string[]> {
@@ -201,55 +149,6 @@ function resolveBundledProviderContractPluginIds(): string[] {
201149).toSorted((left, right) => left.localeCompare(right));
202150}
203151204-function resolveBundledManifestContractPluginIds(contract: ManifestRegistryContractKey): string[] {
205-return resolveManifestContractPluginIds({
206- contract,
207-origin: "bundled",
208-});
209-}
210-211-function resolveBundledManifestPluginIdsForContract(contract: ManifestContractKey): string[] {
212-return uniqueStrings(
213-resolveBundledManifestContracts()
214-.filter((entry) => {
215-switch (contract) {
216-case "embeddingProviders":
217-return entry.embeddingProviderIds.length > 0;
218-case "speechProviders":
219-return entry.speechProviderIds.length > 0;
220-case "realtimeTranscriptionProviders":
221-return entry.realtimeTranscriptionProviderIds.length > 0;
222-case "realtimeVoiceProviders":
223-return entry.realtimeVoiceProviderIds.length > 0;
224-case "mediaUnderstandingProviders":
225-return entry.mediaUnderstandingProviderIds.length > 0;
226-case "transcriptSourceProviders":
227-return entry.transcriptSourceProviderIds.length > 0;
228-case "documentExtractors":
229-return entry.documentExtractorIds.length > 0;
230-case "imageGenerationProviders":
231-return entry.imageGenerationProviderIds.length > 0;
232-case "videoGenerationProviders":
233-return entry.videoGenerationProviderIds.length > 0;
234-case "musicGenerationProviders":
235-return entry.musicGenerationProviderIds.length > 0;
236-case "webContentExtractors":
237-return entry.webContentExtractorIds.length > 0;
238-case "webFetchProviders":
239-return entry.webFetchProviderIds.length > 0;
240-case "webSearchProviders":
241-return entry.webSearchProviderIds.length > 0;
242-case "migrationProviders":
243-return entry.migrationProviderIds.length > 0;
244-case "tools":
245-return entry.toolNames.length > 0;
246-}
247-throw new Error("Unsupported manifest contract key");
248-})
249-.map((entry) => entry.pluginId),
250-).toSorted((left, right) => left.localeCompare(right));
251-}
252-253152export let providerContractLoadError: Error | undefined;
254153255154function formatBundledCapabilityPluginLoadError(params: {
@@ -360,45 +259,6 @@ function loadProviderContractEntriesForPluginId(pluginId: string): ProviderContr
360259}
361260}
362261363-function loadProviderContractRegistry(): ProviderContractEntry[] {
364-try {
365-providerContractLoadError = undefined;
366-const pluginIds = resolveBundledProviderContractPluginIds();
367-const publicArtifactEntries = pluginIds.flatMap(
368-(pluginId) =>
369-resolveBundledExplicitProviderContractsFromPublicArtifacts({
370-onlyPluginIds: [pluginId],
371-}) ?? [],
372-);
373-const coveredPluginIds = new Set(publicArtifactEntries.map((entry) => entry.pluginId));
374-const remainingPluginIds = resolveBundledProviderContractPluginIds().filter(
375-(pluginId) => !coveredPluginIds.has(pluginId),
376-);
377-const runtimeEntries =
378-remainingPluginIds.length > 0
379- ? loadBundledCapabilityRuntimeRegistry({
380-pluginIds: remainingPluginIds,
381-pluginSdkResolution: "dist",
382-}).providers.map((entry) => ({
383-pluginId: entry.pluginId,
384-provider: entry.provider,
385-}))
386- : [];
387-return [...publicArtifactEntries, ...runtimeEntries];
388-} catch (error) {
389-providerContractLoadError = error instanceof Error ? error : new Error(String(error));
390-return [];
391-}
392-}
393-394-function loadUniqueProviderContractProviders(): ProviderPlugin[] {
395-return [
396- ...new Map(
397-loadProviderContractRegistry().map((entry) => [entry.provider.id, entry.provider]),
398-).values(),
399-];
400-}
401-402262function loadProviderContractPluginIds(): string[] {
403263return [...resolveBundledProviderContractPluginIds()];
404264}
@@ -436,18 +296,6 @@ function resolveWebFetchCredentialValue(provider: WebFetchProviderPlugin): unkno
436296 : "sk-test";
437297}
438298439-function loadWebFetchProviderContractRegistry(): WebFetchProviderContractEntry[] {
440-const registry = loadBundledCapabilityRuntimeRegistry({
441-pluginIds: resolveBundledManifestContractPluginIds("webFetchProviders"),
442-pluginSdkResolution: "dist",
443-});
444-return registry.webFetchProviders.map((entry) => ({
445-pluginId: entry.pluginId,
446-provider: entry.provider,
447-credentialValue: resolveWebFetchCredentialValue(entry.provider),
448-}));
449-}
450-451299export function resolveWebFetchProviderContractEntriesForPluginId(
452300pluginId: string,
453301): WebFetchProviderContractEntry[] {
@@ -466,37 +314,6 @@ export function resolveWebFetchProviderContractEntriesForPluginId(
466314});
467315}
468316469-function loadWebSearchProviderContractRegistry(): WebSearchProviderContractEntry[] {
470-const pluginIds = resolveBundledManifestContractPluginIds("webSearchProviders");
471-const publicArtifactEntries = pluginIds.flatMap((pluginId) =>
472-(
473-resolveBundledExplicitWebSearchProvidersFromPublicArtifacts({
474-onlyPluginIds: [pluginId],
475-}) ?? []
476-).map((provider) => ({
477-pluginId: provider.pluginId,
478- provider,
479-credentialValue: resolveWebSearchCredentialValue(provider),
480-})),
481-);
482-const coveredPluginIds = new Set(publicArtifactEntries.map((entry) => entry.pluginId));
483-const remainingPluginIds = resolveBundledManifestContractPluginIds("webSearchProviders").filter(
484-(pluginId) => !coveredPluginIds.has(pluginId),
485-);
486-const runtimeEntries =
487-remainingPluginIds.length > 0
488- ? loadBundledCapabilityRuntimeRegistry({
489-pluginIds: remainingPluginIds,
490-pluginSdkResolution: "dist",
491-}).webSearchProviders.map((entry) => ({
492-pluginId: entry.pluginId,
493-provider: entry.provider,
494-credentialValue: resolveWebSearchCredentialValue(entry.provider),
495-}))
496- : [];
497-return [...publicArtifactEntries, ...runtimeEntries];
498-}
499-500317export function resolveWebSearchProviderContractEntriesForPluginId(
501318pluginId: string,
502319): WebSearchProviderContractEntry[] {
@@ -526,102 +343,6 @@ export function resolveWebSearchProviderContractEntriesForPluginId(
526343});
527344}
528345529-function loadSpeechProviderContractRegistry(): SpeechProviderContractEntry[] {
530-return process.env.VITEST
531- ? loadVitestSpeechProviderContractRegistry()
532- : loadBundledCapabilityRuntimeRegistry({
533-pluginIds: resolveBundledManifestPluginIdsForContract("speechProviders"),
534-pluginSdkResolution: "dist",
535-}).speechProviders.map((entry) => ({
536-pluginId: entry.pluginId,
537-provider: entry.provider,
538-}));
539-}
540-541-function loadRealtimeVoiceProviderContractRegistry(): RealtimeVoiceProviderContractEntry[] {
542-return process.env.VITEST
543- ? loadVitestRealtimeVoiceProviderContractRegistry()
544- : loadBundledCapabilityRuntimeRegistry({
545-pluginIds: resolveBundledManifestPluginIdsForContract("realtimeVoiceProviders"),
546-pluginSdkResolution: "dist",
547-}).realtimeVoiceProviders.map((entry) => ({
548-pluginId: entry.pluginId,
549-provider: entry.provider,
550-}));
551-}
552-553-function loadRealtimeTranscriptionProviderContractRegistry(): RealtimeTranscriptionProviderContractEntry[] {
554-return process.env.VITEST
555- ? loadVitestRealtimeTranscriptionProviderContractRegistry()
556- : loadBundledCapabilityRuntimeRegistry({
557-pluginIds: resolveBundledManifestPluginIdsForContract("realtimeTranscriptionProviders"),
558-pluginSdkResolution: "dist",
559-}).realtimeTranscriptionProviders.map((entry) => ({
560-pluginId: entry.pluginId,
561-provider: entry.provider,
562-}));
563-}
564-565-function loadMediaUnderstandingProviderContractRegistry(): MediaUnderstandingProviderContractEntry[] {
566-return process.env.VITEST
567- ? loadVitestMediaUnderstandingProviderContractRegistry()
568- : loadBundledCapabilityRuntimeRegistry({
569-pluginIds: resolveBundledManifestPluginIdsForContract("mediaUnderstandingProviders"),
570-pluginSdkResolution: "dist",
571-}).mediaUnderstandingProviders.map((entry) => ({
572-pluginId: entry.pluginId,
573-provider: entry.provider,
574-}));
575-}
576-577-function loadTranscriptsSourceProviderContractRegistry(): TranscriptsSourceProviderContractEntry[] {
578-return process.env.VITEST
579- ? loadVitestTranscriptsSourceProviderContractRegistry()
580- : loadBundledCapabilityRuntimeRegistry({
581-pluginIds: resolveBundledManifestPluginIdsForContract("transcriptSourceProviders"),
582-pluginSdkResolution: "dist",
583-}).transcriptSourceProviders.map((entry) => ({
584-pluginId: entry.pluginId,
585-provider: entry.provider,
586-}));
587-}
588-589-function loadImageGenerationProviderContractRegistry(): ImageGenerationProviderContractEntry[] {
590-return process.env.VITEST
591- ? loadVitestImageGenerationProviderContractRegistry()
592- : loadBundledCapabilityRuntimeRegistry({
593-pluginIds: resolveBundledManifestPluginIdsForContract("imageGenerationProviders"),
594-pluginSdkResolution: "dist",
595-}).imageGenerationProviders.map((entry) => ({
596-pluginId: entry.pluginId,
597-provider: entry.provider,
598-}));
599-}
600-601-function loadVideoGenerationProviderContractRegistry(): VideoGenerationProviderContractEntry[] {
602-return process.env.VITEST
603- ? loadVitestVideoGenerationProviderContractRegistry()
604- : loadBundledCapabilityRuntimeRegistry({
605-pluginIds: resolveBundledManifestPluginIdsForContract("videoGenerationProviders"),
606-pluginSdkResolution: "dist",
607-}).videoGenerationProviders.map((entry) => ({
608-pluginId: entry.pluginId,
609-provider: entry.provider,
610-}));
611-}
612-613-function loadMusicGenerationProviderContractRegistry(): MusicGenerationProviderContractEntry[] {
614-return process.env.VITEST
615- ? loadVitestMusicGenerationProviderContractRegistry()
616- : loadBundledCapabilityRuntimeRegistry({
617-pluginIds: resolveBundledManifestPluginIdsForContract("musicGenerationProviders"),
618-pluginSdkResolution: "dist",
619-}).musicGenerationProviders.map((entry) => ({
620-pluginId: entry.pluginId,
621-provider: entry.provider,
622-}));
623-}
624-625346function createLazyArrayView<T>(load: () => T[]): T[] {
626347return new Proxy([] as T[], {
627348get(_target, prop) {
@@ -654,19 +375,6 @@ function createLazyArrayView<T>(load: () => T[]): T[] {
654375});
655376}
656377657-export const providerContractRegistry: ProviderContractEntry[] = createLazyArrayView(
658-loadProviderContractRegistry,
659-);
660-export const uniqueProviderContractProviders: ProviderPlugin[] = createLazyArrayView(
661-loadUniqueProviderContractProviders,
662-);
663-export const providerContractPluginIds: string[] = createLazyArrayView(
664-loadProviderContractPluginIds,
665-);
666-export const providerContractCompatPluginIds: string[] = createLazyArrayView(
667-loadProviderContractCompatPluginIds,
668-);
669-670378export function requireProviderContractProvider(providerId: string): ProviderPlugin {
671379const pluginIds = resolveBundledProviderContractPluginIdsByProviderId().get(providerId) ?? [];
672380const entries = loadProviderContractEntriesForPluginIds(pluginIds);
@@ -732,27 +440,12 @@ export function resolveProviderContractProvidersForPluginIds(
732440];
733441}
734442735-export const webSearchProviderContractRegistry: WebSearchProviderContractEntry[] =
736-createLazyArrayView(loadWebSearchProviderContractRegistry);
737-export const webFetchProviderContractRegistry: WebFetchProviderContractEntry[] =
738-createLazyArrayView(loadWebFetchProviderContractRegistry);
739-export const speechProviderContractRegistry: SpeechProviderContractEntry[] = createLazyArrayView(
740-loadSpeechProviderContractRegistry,
443+export const providerContractPluginIds: string[] = createLazyArrayView(
444+loadProviderContractPluginIds,
445+);
446+export const providerContractCompatPluginIds: string[] = createLazyArrayView(
447+loadProviderContractCompatPluginIds,
741448);
742-export const realtimeTranscriptionProviderContractRegistry: RealtimeTranscriptionProviderContractEntry[] =
743-createLazyArrayView(loadRealtimeTranscriptionProviderContractRegistry);
744-export const realtimeVoiceProviderContractRegistry: RealtimeVoiceProviderContractEntry[] =
745-createLazyArrayView(loadRealtimeVoiceProviderContractRegistry);
746-export const mediaUnderstandingProviderContractRegistry: MediaUnderstandingProviderContractEntry[] =
747-createLazyArrayView(loadMediaUnderstandingProviderContractRegistry);
748-export const transcriptsSourceProviderContractRegistry: TranscriptsSourceProviderContractEntry[] =
749-createLazyArrayView(loadTranscriptsSourceProviderContractRegistry);
750-export const imageGenerationProviderContractRegistry: ImageGenerationProviderContractEntry[] =
751-createLazyArrayView(loadImageGenerationProviderContractRegistry);
752-export const videoGenerationProviderContractRegistry: VideoGenerationProviderContractEntry[] =
753-createLazyArrayView(loadVideoGenerationProviderContractRegistry);
754-export const musicGenerationProviderContractRegistry: MusicGenerationProviderContractEntry[] =
755-createLazyArrayView(loadMusicGenerationProviderContractRegistry);
756449757450function loadPluginRegistrationContractRegistry(): PluginRegistrationContractEntry[] {
758451return resolveBundledManifestContracts();
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。