mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-22 15:31:07 +00:00
66 lines
2.1 KiB
TypeScript
66 lines
2.1 KiB
TypeScript
import type {
|
|
AnyAgentTool,
|
|
ImageGenerationProviderPlugin,
|
|
MediaUnderstandingProviderPlugin,
|
|
OpenClawPluginApi,
|
|
ProviderPlugin,
|
|
SpeechProviderPlugin,
|
|
WebSearchProviderPlugin,
|
|
} from "./types.js";
|
|
|
|
export type CapturedPluginRegistration = {
|
|
api: OpenClawPluginApi;
|
|
providers: ProviderPlugin[];
|
|
speechProviders: SpeechProviderPlugin[];
|
|
mediaUnderstandingProviders: MediaUnderstandingProviderPlugin[];
|
|
imageGenerationProviders: ImageGenerationProviderPlugin[];
|
|
webSearchProviders: WebSearchProviderPlugin[];
|
|
tools: AnyAgentTool[];
|
|
};
|
|
|
|
export function createCapturedPluginRegistration(): CapturedPluginRegistration {
|
|
const providers: ProviderPlugin[] = [];
|
|
const speechProviders: SpeechProviderPlugin[] = [];
|
|
const mediaUnderstandingProviders: MediaUnderstandingProviderPlugin[] = [];
|
|
const imageGenerationProviders: ImageGenerationProviderPlugin[] = [];
|
|
const webSearchProviders: WebSearchProviderPlugin[] = [];
|
|
const tools: AnyAgentTool[] = [];
|
|
|
|
return {
|
|
providers,
|
|
speechProviders,
|
|
mediaUnderstandingProviders,
|
|
imageGenerationProviders,
|
|
webSearchProviders,
|
|
tools,
|
|
api: {
|
|
registerProvider(provider: ProviderPlugin) {
|
|
providers.push(provider);
|
|
},
|
|
registerSpeechProvider(provider: SpeechProviderPlugin) {
|
|
speechProviders.push(provider);
|
|
},
|
|
registerMediaUnderstandingProvider(provider: MediaUnderstandingProviderPlugin) {
|
|
mediaUnderstandingProviders.push(provider);
|
|
},
|
|
registerImageGenerationProvider(provider: ImageGenerationProviderPlugin) {
|
|
imageGenerationProviders.push(provider);
|
|
},
|
|
registerWebSearchProvider(provider: WebSearchProviderPlugin) {
|
|
webSearchProviders.push(provider);
|
|
},
|
|
registerTool(tool: AnyAgentTool) {
|
|
tools.push(tool);
|
|
},
|
|
} as OpenClawPluginApi,
|
|
};
|
|
}
|
|
|
|
export function capturePluginRegistration(params: {
|
|
register(api: OpenClawPluginApi): void;
|
|
}): CapturedPluginRegistration {
|
|
const captured = createCapturedPluginRegistration();
|
|
params.register(captured.api);
|
|
return captured;
|
|
}
|