


























@@ -64,7 +64,10 @@ import {
6464type CodexPluginConfig,
6565} from "./config.js";
6666import { projectContextEngineAssemblyForCodex } from "./context-engine-projection.js";
67-import { applyCodexDynamicToolProfile } from "./dynamic-tool-profile.js";
67+import {
68+applyCodexDynamicToolProfile,
69+normalizeCodexDynamicToolName,
70+} from "./dynamic-tool-profile.js";
6871import { createCodexDynamicToolBridge, type CodexDynamicToolBridge } from "./dynamic-tools.js";
6972import { handleCodexAppServerElicitationRequest } from "./elicitation-bridge.js";
7073import { CodexAppServerEventProjector } from "./event-projector.js";
@@ -1678,10 +1681,7 @@ async function buildDynamicTools(input: DynamicToolBuildParams) {
16781681 modelHasVision,
16791682hasInboundImages: (params.images?.length ?? 0) > 0,
16801683});
1681-const filteredTools =
1682-params.toolsAllow && params.toolsAllow.length > 0
1683- ? visionFilteredTools.filter((tool) => params.toolsAllow?.includes(tool.name))
1684- : visionFilteredTools;
1684+const filteredTools = filterCodexDynamicToolsForAllowlist(visionFilteredTools, params.toolsAllow);
16851685return normalizeAgentRuntimeTools({
16861686runtimePlan: params.runtimePlan,
16871687tools: filteredTools,
@@ -1695,6 +1695,19 @@ async function buildDynamicTools(input: DynamicToolBuildParams) {
16951695});
16961696}
169716971698+function filterCodexDynamicToolsForAllowlist<T extends { name: string }>(
1699+tools: T[],
1700+toolsAllow?: string[],
1701+): T[] {
1702+if (!toolsAllow || toolsAllow.length === 0) {
1703+return tools;
1704+}
1705+const allowSet = new Set(
1706+toolsAllow.map((name) => normalizeCodexDynamicToolName(name)).filter(Boolean),
1707+);
1708+return tools.filter((tool) => allowSet.has(normalizeCodexDynamicToolName(tool.name)));
1709+}
1710+16981711function shouldForceMessageTool(params: EmbeddedRunAttemptParams): boolean {
16991712return params.sourceReplyDeliveryMode === "message_tool_only";
17001713}
@@ -2117,6 +2130,7 @@ export const __testing = {
21172130 buildCodexNativeHookRelayId,
21182131 applyCodexDynamicToolProfile,
21192132 buildDynamicTools,
2133+ filterCodexDynamicToolsForAllowlist,
21202134 filterToolsForVisionInputs,
21212135 handleDynamicToolCallWithTimeout,
21222136 resolveOpenClawCodingToolsSessionKeys,
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。