Files
openclaw/src/plugins/loader-records.test.ts
Bob ae4806ed9a feat(plugins): add embedding provider contract (#84947)
Summary:
- Merged feat(plugins): add embedding provider contract after ClawSweeper review.

Automerge notes:
- PR branch already contained follow-up commit before automerge: chore(plugins): refresh embedding provider sdk baseline
- PR branch already contained follow-up commit before automerge: docs(plugins): document embedding provider contract
- PR branch already contained follow-up commit before automerge: fix(plugins): restore embedding providers after snapshot loads
- PR branch already contained follow-up commit before automerge: fix(plugins): resolve embedding providers from manifests
- PR branch already contained follow-up commit before automerge: fix(plugin-sdk): keep embedding provider registry mutators internal
- PR branch already contained follow-up commit before automerge: chore(plugin-sdk): refresh embedding provider API baseline

Validation:
- ClawSweeper review passed for head 41ebd66ab4.
- Required merge gates passed before the squash merge.

Prepared head SHA: 41ebd66ab4
Review: https://github.com/openclaw/openclaw/pull/84947#issuecomment-4514762026

Co-authored-by: Bob <dutifulbob@gmail.com>
Co-authored-by: Mariano Belinky <mbelinky@gmail.com>
Co-authored-by: clawsweeper[bot] <274271284+clawsweeper[bot]@users.noreply.github.com>
Approved-by: osolmaz
Co-authored-by: osolmaz <2453968+osolmaz@users.noreply.github.com>
2026-05-22 03:36:51 +00:00

73 lines
3.1 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createPluginRecord } from "./loader-records.js";
describe("plugin loader records", () => {
it("preserves manifest-declared channel ids before runtime registration", () => {
const record = createPluginRecord({
id: "kitchen-sink",
name: "Kitchen Sink",
source: "/tmp/kitchen-sink/index.js",
origin: "global",
enabled: true,
channelIds: ["kitchen-sink-channel"],
configSchema: false,
});
expect(record.channelIds).toEqual(["kitchen-sink-channel"]);
});
it("preserves manifest-declared provider ids before runtime registration", () => {
const record = createPluginRecord({
id: "kitchen-sink",
name: "Kitchen Sink",
source: "/tmp/kitchen-sink/index.js",
origin: "global",
enabled: true,
providerIds: ["kitchen-sink-provider"],
configSchema: false,
});
expect(record.providerIds).toEqual(["kitchen-sink-provider"]);
});
it("preserves manifest-declared capability provider ids before runtime registration", () => {
const record = createPluginRecord({
id: "kitchen-sink",
name: "Kitchen Sink",
source: "/tmp/kitchen-sink/index.js",
origin: "global",
enabled: true,
contracts: {
embeddingProviders: ["kitchen-sink-embedding-provider"],
speechProviders: ["kitchen-sink-speech-provider"],
realtimeTranscriptionProviders: ["kitchen-sink-transcription-provider"],
realtimeVoiceProviders: ["kitchen-sink-voice-provider"],
mediaUnderstandingProviders: ["kitchen-sink-media-provider"],
imageGenerationProviders: ["kitchen-sink-image-provider"],
videoGenerationProviders: ["kitchen-sink-video-provider"],
musicGenerationProviders: ["kitchen-sink-music-provider"],
webFetchProviders: ["kitchen-sink-web-fetch-provider"],
webSearchProviders: ["kitchen-sink-web-search-provider"],
migrationProviders: ["kitchen-sink-migration-provider"],
memoryEmbeddingProviders: ["kitchen-sink-memory-provider"],
},
configSchema: false,
});
expect(record.embeddingProviderIds).toEqual(["kitchen-sink-embedding-provider"]);
expect(record.speechProviderIds).toEqual(["kitchen-sink-speech-provider"]);
expect(record.realtimeTranscriptionProviderIds).toEqual([
"kitchen-sink-transcription-provider",
]);
expect(record.realtimeVoiceProviderIds).toEqual(["kitchen-sink-voice-provider"]);
expect(record.mediaUnderstandingProviderIds).toEqual(["kitchen-sink-media-provider"]);
expect(record.imageGenerationProviderIds).toEqual(["kitchen-sink-image-provider"]);
expect(record.videoGenerationProviderIds).toEqual(["kitchen-sink-video-provider"]);
expect(record.musicGenerationProviderIds).toEqual(["kitchen-sink-music-provider"]);
expect(record.webFetchProviderIds).toEqual(["kitchen-sink-web-fetch-provider"]);
expect(record.webSearchProviderIds).toEqual(["kitchen-sink-web-search-provider"]);
expect(record.migrationProviderIds).toEqual(["kitchen-sink-migration-provider"]);
expect(record.memoryEmbeddingProviderIds).toEqual(["kitchen-sink-memory-provider"]);
});
});