mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 15:30:39 +00:00
fix(feishu): remove hook registration, fix docx getClient call
This commit is contained in:
@@ -6,7 +6,6 @@ import { registerFeishuDocTools } from "./src/docx.js";
|
||||
import { registerFeishuDriveTools } from "./src/drive.js";
|
||||
import { registerFeishuPermTools } from "./src/perm.js";
|
||||
import { setFeishuRuntime } from "./src/runtime.js";
|
||||
import { resolveFeishuAccountForToolContext } from "./src/tool-context.js";
|
||||
import { registerFeishuWikiTools } from "./src/wiki.js";
|
||||
|
||||
export { monitorFeishuProvider } from "./src/monitor.js";
|
||||
@@ -54,12 +53,6 @@ const plugin = {
|
||||
setFeishuRuntime(api.runtime);
|
||||
api.registerChannel({ plugin: feishuPlugin });
|
||||
|
||||
// Ensure Feishu tool registration uses the calling agent's account / outbound identity.
|
||||
api.registerHook(["before_tool_call"], resolveFeishuAccountForToolContext, {
|
||||
name: "feishu:resolve-account",
|
||||
description: "Resolve Feishu accountId for Feishu tools based on the calling agent",
|
||||
});
|
||||
|
||||
registerFeishuDocTools(api);
|
||||
registerFeishuWikiTools(api);
|
||||
registerFeishuDriveTools(api);
|
||||
|
||||
@@ -524,7 +524,7 @@ export function registerFeishuDocTools(api: OpenClawPluginApi) {
|
||||
parameters: Type.Object({}),
|
||||
async execute() {
|
||||
try {
|
||||
const result = await listAppScopes(getClient({ action: "read", doc_token: "" } as any));
|
||||
const result = await listAppScopes(getClient({ action: "create", title: "" } as any));
|
||||
return json(result);
|
||||
} catch (err) {
|
||||
return json({ error: err instanceof Error ? err.message : String(err) });
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
import { DEFAULT_ACCOUNT_ID, normalizeAccountId } from "openclaw/plugin-sdk/account-id";
|
||||
|
||||
/**
|
||||
* If the calling agent has an account id, copy it into tool params as accountId
|
||||
* (unless the caller already provided one).
|
||||
*
|
||||
* This allows Feishu tools that are registered at startup (and therefore can't
|
||||
* capture a per-agent client) to select the right Feishu account at execution
|
||||
* time.
|
||||
*/
|
||||
export const resolveFeishuAccountForToolContext = async (ctx: {
|
||||
toolName: string;
|
||||
params: Record<string, unknown>;
|
||||
agentId?: string;
|
||||
sessionKey?: string;
|
||||
}) => {
|
||||
const toolName = ctx.toolName;
|
||||
if (typeof toolName !== "string" || !toolName.startsWith("feishu_")) {
|
||||
return { blocked: false, params: ctx.params };
|
||||
}
|
||||
|
||||
// If caller already specified an accountId, keep it.
|
||||
const existing = (ctx.params as Record<string, unknown> | undefined)?.accountId;
|
||||
if (typeof existing === "string" && existing.trim()) {
|
||||
return { blocked: false, params: ctx.params };
|
||||
}
|
||||
|
||||
// NOTE: Plugin hook context does not currently expose agentAccountId.
|
||||
// We still keep a safe fallback: inject default accountId unless caller already provided one.
|
||||
return {
|
||||
blocked: false,
|
||||
params: { ...(ctx.params ?? {}), accountId: DEFAULT_ACCOUNT_ID },
|
||||
};
|
||||
};
|
||||
Reference in New Issue
Block a user