mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-16 11:41:08 +00:00
102 lines
3.2 KiB
TypeScript
102 lines
3.2 KiB
TypeScript
import {
|
|
defineBundledChannelEntry,
|
|
loadBundledEntryExportSync,
|
|
} from "openclaw/plugin-sdk/channel-entry-contract";
|
|
import type { OpenClawPluginApi } from "openclaw/plugin-sdk/channel-entry-contract";
|
|
|
|
type FeishuSubagentHooksModule = typeof import("./api.js");
|
|
|
|
let feishuSubagentHooksPromise: Promise<FeishuSubagentHooksModule> | null = null;
|
|
|
|
function loadFeishuSubagentHooksModule() {
|
|
feishuSubagentHooksPromise ??= import("./api.js");
|
|
return feishuSubagentHooksPromise;
|
|
}
|
|
|
|
function registerFeishuDocTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuDocTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
function registerFeishuChatTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuChatTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
function registerFeishuWikiTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuWikiTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
function registerFeishuDriveTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuDriveTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
function registerFeishuPermTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuPermTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
function registerFeishuBitableTools(api: OpenClawPluginApi) {
|
|
const register = loadBundledEntryExportSync<(api: OpenClawPluginApi) => void>(import.meta.url, {
|
|
specifier: "./api.js",
|
|
exportName: "registerFeishuBitableTools",
|
|
});
|
|
register(api);
|
|
}
|
|
|
|
export default defineBundledChannelEntry({
|
|
id: "feishu",
|
|
name: "Feishu",
|
|
description: "Feishu/Lark channel plugin",
|
|
importMetaUrl: import.meta.url,
|
|
plugin: {
|
|
specifier: "./api.js",
|
|
exportName: "feishuPlugin",
|
|
},
|
|
secrets: {
|
|
specifier: "./src/secret-contract.js",
|
|
exportName: "channelSecrets",
|
|
},
|
|
runtime: {
|
|
specifier: "./runtime-api.js",
|
|
exportName: "setFeishuRuntime",
|
|
},
|
|
registerFull(api) {
|
|
api.on("subagent_spawning", async (event, ctx) => {
|
|
const { handleFeishuSubagentSpawning } = await loadFeishuSubagentHooksModule();
|
|
return await handleFeishuSubagentSpawning(event, ctx);
|
|
});
|
|
api.on("subagent_delivery_target", async (event) => {
|
|
const { handleFeishuSubagentDeliveryTarget } = await loadFeishuSubagentHooksModule();
|
|
return handleFeishuSubagentDeliveryTarget(event);
|
|
});
|
|
api.on("subagent_ended", async (event) => {
|
|
const { handleFeishuSubagentEnded } = await loadFeishuSubagentHooksModule();
|
|
handleFeishuSubagentEnded(event);
|
|
});
|
|
registerFeishuDocTools(api);
|
|
registerFeishuChatTools(api);
|
|
registerFeishuWikiTools(api);
|
|
registerFeishuDriveTools(api);
|
|
registerFeishuPermTools(api);
|
|
registerFeishuBitableTools(api);
|
|
},
|
|
});
|