Use pluginConfig directly for Dirigent runtime config

This commit is contained in:
2026-04-01 19:33:00 +00:00
parent 0a76dae376
commit 0a99abc7e3
9 changed files with 59 additions and 151 deletions

View File

@@ -7,7 +7,6 @@ type ToolDeps = {
api: OpenClawPluginApi;
baseConfig: DirigentConfig;
pickDefined: (obj: Record<string, unknown>) => Record<string, unknown>;
getLivePluginConfig: (api: OpenClawPluginApi, fallback: DirigentConfig) => DirigentConfig;
};
function parseAccountToken(api: OpenClawPluginApi, accountId?: string): { accountId: string; token: string } | null {
@@ -47,10 +46,10 @@ function roleOrMemberType(v: unknown): number {
}
export function registerDirigentTools(deps: ToolDeps): void {
const { api, baseConfig, pickDefined, getLivePluginConfig } = deps;
const { api, baseConfig, pickDefined } = deps;
async function executeDiscordAction(action: DiscordControlAction, params: Record<string, unknown>) {
const live = getLivePluginConfig(api, baseConfig as DirigentConfig) as DirigentConfig & {
const live = baseConfig as DirigentConfig & {
enableDiscordControlTool?: boolean;
discordControlAccountId?: string;
};
@@ -128,14 +127,16 @@ export function registerDirigentTools(deps: ToolDeps): void {
}
api.registerTool({
name: "discord_channel_create",
description: "Create a private Discord channel with specific user/role permissions.",
parameters: {
name: "dirigent_discord_control",
description: "Create/update Discord private channels using the configured Discord bot token",
inputSchema: {
type: "object",
additionalProperties: false,
properties: {
action: { type: "string", enum: ["channel-private-create", "channel-private-update"] },
accountId: { type: "string" },
guildId: { type: "string" },
channelId: { type: "string" },
name: { type: "string" },
type: { type: "number" },
parentId: { type: "string" },
@@ -146,34 +147,14 @@ export function registerDirigentTools(deps: ToolDeps): void {
allowedRoleIds: { type: "array", items: { type: "string" } },
allowMask: { type: "string" },
denyEveryoneMask: { type: "string" },
},
required: [],
},
async execute(_id: string, params: Record<string, unknown>) {
return executeDiscordAction("channel-private-create", params);
},
}, { optional: false });
api.registerTool({
name: "discord_channel_update",
description: "Update permissions on an existing private Discord channel.",
parameters: {
type: "object",
additionalProperties: false,
properties: {
accountId: { type: "string" },
channelId: { type: "string" },
mode: { type: "string", enum: ["merge", "replace"] },
addUserIds: { type: "array", items: { type: "string" } },
addRoleIds: { type: "array", items: { type: "string" } },
removeTargetIds: { type: "array", items: { type: "string" } },
allowMask: { type: "string" },
denyMask: { type: "string" },
},
required: [],
required: ["action"],
},
async execute(_id: string, params: Record<string, unknown>) {
return executeDiscordAction("channel-private-update", params);
},
}, { optional: false });
handler: async (params) => executeDiscordAction(params.action as DiscordControlAction, params as Record<string, unknown>),
});
}