fix(gateway): make bare reset commands fast · openclaw/openclaw@2c6a3f6
steipete
·
2026-05-31
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -297,6 +297,28 @@ describe("agentCliCommand", () => {
|
297 | 297 | }); |
298 | 298 | }); |
299 | 299 | |
| 300 | +it.each(["/new", "/RESET", "/reset check status"] as const)( |
| 301 | +"uses backend admin authority for %s gateway commands", |
| 302 | +async (message) => { |
| 303 | +await withTempStore(async () => { |
| 304 | +mockGatewaySuccessReply(); |
| 305 | + |
| 306 | +await agentCliCommand({ message, sessionKey: "agent:main:main" }, runtime); |
| 307 | + |
| 308 | +expect(callGateway).toHaveBeenCalledTimes(1); |
| 309 | +const request = requireRecord( |
| 310 | +requireFirstCallArg(callGateway, "gateway"), |
| 311 | +"gateway request", |
| 312 | +); |
| 313 | +expect(request.clientName).toBe("gateway-client"); |
| 314 | +expect(request.mode).toBe("backend"); |
| 315 | +expect(request.scopes).toEqual(["operator.admin"]); |
| 316 | +const params = requireRecord(request.params, "gateway request params"); |
| 317 | +expect(params.message).toBe(message); |
| 318 | +}); |
| 319 | +}, |
| 320 | +); |
| 321 | + |
300 | 322 | it("uses an explicit session key as the gateway session selector", async () => { |
301 | 323 | await withTempStore(async () => { |
302 | 324 | mockGatewaySuccessReply(); |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -214,6 +214,10 @@ function isControlCommandThatMustNotFallback(opts: Pick<AgentCliOpts, "message">
|
214 | 214 | return normalized === "/compact" || normalized.startsWith("/compact "); |
215 | 215 | } |
216 | 216 | |
| 217 | +function isSessionResetCommand(message: string): boolean { |
| 218 | +return /^\/(?:new|reset)(?:\s|$)/i.test(message.trim()); |
| 219 | +} |
| 220 | + |
217 | 221 | function isGatewayAgentEmbeddedFallbackError(err: unknown): boolean { |
218 | 222 | return isGatewayTransportError(err); |
219 | 223 | } |
@@ -625,7 +629,8 @@ async function agentViaGatewayCommand(
|
625 | 629 | const idempotencyKey = normalizeOptionalString(opts.runId) || randomIdempotencyKey(); |
626 | 630 | const modelOverride = normalizeOptionalString(opts.model); |
627 | 631 | const hasModelOverride = Boolean(modelOverride); |
628 | | -const gatewayIdentity: AgentGatewayCallIdentity = hasModelOverride |
| 632 | +const needsAdminGatewayIdentity = hasModelOverride || isSessionResetCommand(body); |
| 633 | +const gatewayIdentity: AgentGatewayCallIdentity = needsAdminGatewayIdentity |
629 | 634 | ? { |
630 | 635 | clientName: GATEWAY_CLIENT_NAMES.GATEWAY_CLIENT, |
631 | 636 | mode: GATEWAY_CLIENT_MODES.BACKEND, |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。