




















@@ -90,6 +90,7 @@ const GATEWAY_LIVE_SETUP_TIMEOUT_MS = Math.max(
9090toInt(process.env.OPENCLAW_LIVE_GATEWAY_SETUP_TIMEOUT_MS, 60_000),
9191);
9292const GATEWAY_LIVE_MODEL_TIMEOUT_MS = resolveGatewayLiveModelTimeoutMs();
93+const GATEWAY_LIVE_SESSION_CONTROL_TIMEOUT_MS = resolveGatewayLiveSessionControlTimeoutMs();
9394const GATEWAY_LIVE_TRANSCRIPT_TIMEOUT_MS = resolveGatewayLiveTranscriptTimeoutMs();
9495const GATEWAY_LIVE_AGENT_RUN_TIMEOUT_MS = resolveGatewayLiveAgentRunTimeoutMs();
9596const GATEWAY_LIVE_AGENT_WAIT_TIMEOUT_MS = resolveGatewayLiveAgentWaitTimeoutMs();
@@ -251,6 +252,13 @@ function resolveGatewayLiveModelTimeoutMs(
251252return Math.max(stepTimeoutMs, requested);
252253}
253254255+function resolveGatewayLiveSessionControlTimeoutMs(
256+stepTimeoutMs = GATEWAY_LIVE_PROBE_TIMEOUT_MS,
257+modelTimeoutMs = GATEWAY_LIVE_MODEL_TIMEOUT_MS,
258+): number {
259+return Math.max(stepTimeoutMs, Math.min(modelTimeoutMs, 180_000));
260+}
261+254262function resolveGatewayLiveTranscriptTimeoutMs(
255263stepTimeoutMs = GATEWAY_LIVE_PROBE_TIMEOUT_MS,
256264modelTimeoutMs = GATEWAY_LIVE_MODEL_TIMEOUT_MS,
@@ -406,6 +414,18 @@ async function withGatewayLiveProbeTimeout<T>(operation: Promise<T>, context: st
406414});
407415}
408416417+async function withGatewayLiveSessionControlTimeout<T>(
418+operation: Promise<T>,
419+context: string,
420+): Promise<T> {
421+return await withGatewayLiveTimeout({
422+ operation,
423+timeoutMs: GATEWAY_LIVE_SESSION_CONTROL_TIMEOUT_MS,
424+timeoutLabel: "probe",
425+ context,
426+});
427+}
428+409429async function withGatewayLiveModelTimeout<T>(operation: Promise<T>, context: string): Promise<T> {
410430return await withGatewayLiveTimeout({
411431 operation,
@@ -742,6 +762,16 @@ describe("resolveGatewayLiveTranscriptTimeoutMs", () => {
742762});
743763});
744764765+describe("resolveGatewayLiveSessionControlTimeoutMs", () => {
766+it("allows slow gateway session-control calls without using the full model budget", () => {
767+expect(resolveGatewayLiveSessionControlTimeoutMs(90_000, 300_000)).toBe(180_000);
768+});
769+770+it("keeps explicit longer probe budgets intact", () => {
771+expect(resolveGatewayLiveSessionControlTimeoutMs(240_000, 300_000)).toBe(240_000);
772+});
773+});
774+745775describe("resolveGatewayLiveAgentRunTimeoutMs", () => {
746776it("leaves terminal-observation grace inside the model timeout", () => {
747777expect(resolveGatewayLiveAgentRunTimeoutMs(180_000)).toBe(150_000);
@@ -2594,13 +2624,13 @@ async function runGatewayModelSuite(params: GatewayModelSuiteParams) {
25942624// Ensure session exists + override model for this run.
25952625// Reset between models: avoids cross-provider transcript incompatibilities
25962626// (notably OpenAI Responses requiring reasoning replay for function_call items).
2597-await withGatewayLiveProbeTimeout(
2627+await withGatewayLiveSessionControlTimeout(
25982628client.request("sessions.reset", {
25992629key: sessionKey,
26002630}),
26012631`${progressLabel}: sessions-reset`,
26022632);
2603-await withGatewayLiveProbeTimeout(
2633+await withGatewayLiveSessionControlTimeout(
26042634client.request("sessions.patch", {
26052635key: sessionKey,
26062636model: modelKey,
@@ -3517,14 +3547,14 @@ describeLive("gateway live (dev agent, profile keys)", () => {
35173547try {
35183548const sessionKey = `agent:${agentId}:live-zai-fallback`;
351935493520-await withGatewayLiveProbeTimeout(
3550+await withGatewayLiveSessionControlTimeout(
35213551client.request("sessions.patch", {
35223552key: sessionKey,
35233553model: "anthropic/claude-opus-4-6",
35243554}),
35253555"zai-fallback: sessions-patch-anthropic",
35263556);
3527-await withGatewayLiveProbeTimeout(
3557+await withGatewayLiveSessionControlTimeout(
35283558client.request("sessions.reset", {
35293559key: sessionKey,
35303560}),
@@ -3552,7 +3582,7 @@ describeLive("gateway live (dev agent, profile keys)", () => {
35523582throw new Error(`anthropic tool probe missing nonce: ${toolText}`);
35533583}
355435843555-await withGatewayLiveProbeTimeout(
3585+await withGatewayLiveSessionControlTimeout(
35563586client.request("sessions.patch", {
35573587key: sessionKey,
35583588model: "zai/glm-5.1",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。