mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-04 05:42:02 +00:00
53 lines
1.9 KiB
TypeScript
53 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { capturePluginRegistration } from "./captured-registration.js";
|
|
import type { AnyAgentTool } from "./types.js";
|
|
|
|
describe("captured plugin registration", () => {
|
|
it("keeps a complete plugin API surface available while capturing supported capabilities", () => {
|
|
const capturedTool = {
|
|
name: "captured-tool",
|
|
description: "Captured tool",
|
|
parameters: {},
|
|
execute: async () => ({ content: [], details: {} }),
|
|
} as unknown as AnyAgentTool;
|
|
const captured = capturePluginRegistration({
|
|
register(api) {
|
|
api.registerTool(capturedTool);
|
|
api.registerProvider({
|
|
id: "captured-provider",
|
|
label: "Captured Provider",
|
|
auth: [],
|
|
});
|
|
api.registerChannel({
|
|
plugin: {
|
|
id: "captured-channel",
|
|
meta: {
|
|
id: "captured-channel",
|
|
label: "Captured Channel",
|
|
selectionLabel: "Captured Channel",
|
|
docsPath: "/channels/captured-channel",
|
|
blurb: "captured channel",
|
|
},
|
|
capabilities: { chatTypes: ["direct"] },
|
|
config: {
|
|
listAccountIds: () => [],
|
|
resolveAccount: () => ({ accountId: "default" }),
|
|
},
|
|
outbound: { deliveryMode: "direct" },
|
|
},
|
|
});
|
|
api.registerHook("message_received", () => {});
|
|
api.registerCommand({
|
|
name: "captured-command",
|
|
description: "Captured command",
|
|
handler: async () => ({ text: "ok" }),
|
|
});
|
|
},
|
|
});
|
|
|
|
expect(captured.tools.map((tool) => tool.name)).toEqual(["captured-tool"]);
|
|
expect(captured.providers.map((provider) => provider.id)).toEqual(["captured-provider"]);
|
|
expect(captured.api.registerMemoryEmbeddingProvider).toBeTypeOf("function");
|
|
});
|
|
});
|