


























@@ -6,6 +6,7 @@ import {
66resolveLeastPrivilegeOperatorScopesForMethod,
77type OperatorScope,
88} from "../../gateway/method-scopes.js";
9+import { getOperatorApprovalRuntimeToken } from "../../gateway/operator-approval-runtime-token.js";
910import { GATEWAY_CLIENT_MODES, GATEWAY_CLIENT_NAMES } from "../../gateway/protocol/client-info.js";
1011import { formatErrorMessage } from "../../infra/errors.js";
1112import {
@@ -145,6 +146,26 @@ export function resolveGatewayOptions(opts?: GatewayCallOptions) {
145146return { url: validatedOverride?.url, token, timeoutMs };
146147}
147148149+const APPROVAL_RUNTIME_METHODS = new Set<string>([
150+"exec.approval.request",
151+"exec.approval.waitDecision",
152+"plugin.approval.request",
153+"plugin.approval.waitDecision",
154+]);
155+156+function resolveApprovalRuntimeTokenForGatewayTool(params: {
157+method: string;
158+opts: GatewayCallOptions;
159+}): string | undefined {
160+if (!APPROVAL_RUNTIME_METHODS.has(params.method)) {
161+return undefined;
162+}
163+if (trimToUndefined(params.opts.gatewayUrl) !== undefined) {
164+return undefined;
165+}
166+return getOperatorApprovalRuntimeToken();
167+}
168+148169export async function callGatewayTool<T = Record<string, unknown>>(
149170method: string,
150171opts: GatewayCallOptions,
@@ -155,6 +176,7 @@ export async function callGatewayTool<T = Record<string, unknown>>(
155176const scopes = Array.isArray(extra?.scopes)
156177 ? extra.scopes
157178 : resolveLeastPrivilegeOperatorScopesForMethod(method, params);
179+const approvalRuntimeToken = resolveApprovalRuntimeTokenForGatewayTool({ method, opts });
158180return await callGateway<T>({
159181url: gateway.url,
160182token: gateway.token,
@@ -165,6 +187,7 @@ export async function callGatewayTool<T = Record<string, unknown>>(
165187clientName: GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT,
166188clientDisplayName: "agent",
167189mode: GATEWAY_CLIENT_MODES.BACKEND,
190+ ...(approvalRuntimeToken ? { approvalRuntimeToken } : {}),
168191 scopes,
169192});
170193}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。