import type { AgentToolResultMiddleware, AgentToolResultMiddlewareOptions, AgentToolResultMiddlewareRuntime, } from "./agent-tool-result-middleware-types.js"; import { getActivePluginRegistry } from "./runtime.js"; export const AGENT_TOOL_RESULT_MIDDLEWARE_RUNTIMES = [ "pi", "codex", ] as const satisfies AgentToolResultMiddlewareRuntime[]; const AGENT_TOOL_RESULT_MIDDLEWARE_RUNTIME_SET = new Set( AGENT_TOOL_RESULT_MIDDLEWARE_RUNTIMES, ); function normalizeAgentToolResultMiddlewareRuntime( runtime: string, ): AgentToolResultMiddlewareRuntime | undefined { const normalized = runtime.trim().toLowerCase(); if (normalized === "codex-app-server") { return "codex"; } return AGENT_TOOL_RESULT_MIDDLEWARE_RUNTIME_SET.has(normalized) ? (normalized as AgentToolResultMiddlewareRuntime) : undefined; } export function normalizeAgentToolResultMiddlewareRuntimes( options?: AgentToolResultMiddlewareOptions, ): AgentToolResultMiddlewareRuntime[] { const requested = options?.runtimes ?? options?.harnesses; if (!requested || requested.length === 0) { return [...AGENT_TOOL_RESULT_MIDDLEWARE_RUNTIMES]; } const normalized: AgentToolResultMiddlewareRuntime[] = []; for (const runtime of requested) { const value = normalizeAgentToolResultMiddlewareRuntime(runtime); if (!value) { continue; } if (!normalized.includes(value)) { normalized.push(value); } } return normalized; } /** @deprecated Use normalizeAgentToolResultMiddlewareRuntimes. */ export const normalizeAgentToolResultMiddlewareHarnesses = normalizeAgentToolResultMiddlewareRuntimes; export function normalizeAgentToolResultMiddlewareRuntimeIds( runtimes: readonly string[] | undefined, ): AgentToolResultMiddlewareRuntime[] { const normalized: AgentToolResultMiddlewareRuntime[] = []; for (const runtime of runtimes ?? []) { const value = normalizeAgentToolResultMiddlewareRuntime(runtime); if (value && !normalized.includes(value)) { normalized.push(value); } } return normalized; } export function listAgentToolResultMiddlewares( runtime: AgentToolResultMiddlewareRuntime, ): AgentToolResultMiddleware[] { return ( getActivePluginRegistry() ?.agentToolResultMiddlewares?.filter((entry) => entry.runtimes.includes(runtime)) .map((entry) => entry.handler) ?? [] ); }