fix(sdk): send exec approval resolve id (#95144) · openclaw/openclaw@c2e26db
vincentkoc
·
2026-06-20
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -907,7 +907,7 @@ export class ApprovalsNamespace {
|
907 | 907 | } |
908 | 908 | |
909 | 909 | async respond(approvalId: string, decision: Record<string, unknown>): Promise<unknown> { |
910 | | -return await this.client.request("exec.approval.resolve", { approvalId, ...decision }); |
| 910 | +return await this.client.request("exec.approval.resolve", { ...decision, id: approvalId }); |
911 | 911 | } |
912 | 912 | } |
913 | 913 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -332,6 +332,7 @@ async function createFakeGateway(port = 0): Promise<FakeGateway> {
|
332 | 332 | } |
333 | 333 | |
334 | 334 | if (frame.method === "exec.approval.resolve") { |
| 335 | +expect(frame.params).toMatchObject({ id: "approval-1", decision: "allow-once" }); |
335 | 336 | reply({ ok: true, params: frame.params as JsonObject | undefined }); |
336 | 337 | return; |
337 | 338 | } |
@@ -508,7 +509,7 @@ describe("OpenClaw SDK websocket e2e", () => {
|
508 | 509 | const approvals = expectJsonObject(await oc.approvals.list()); |
509 | 510 | expect(approvals.approvals).toEqual([]); |
510 | 511 | const approvalResult = expectJsonObject( |
511 | | -await oc.approvals.respond("approval-1", { decision: "approve" }), |
| 512 | +await oc.approvals.respond("approval-1", { decision: "allow-once" }), |
512 | 513 | ); |
513 | 514 | expect(approvalResult.ok).toBe(true); |
514 | 515 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -697,6 +697,32 @@ describe("OpenClaw SDK", () => {
|
697 | 697 | expect(transport.calls).toEqual([]); |
698 | 698 | }); |
699 | 699 | |
| 700 | +it("calls exec approval Gateway RPCs with protocol params", async () => { |
| 701 | +const transport = new FakeTransport({ |
| 702 | +"exec.approval.list": { approvals: [] }, |
| 703 | +"exec.approval.resolve": { ok: true }, |
| 704 | +}); |
| 705 | +const oc = new OpenClaw({ transport }); |
| 706 | + |
| 707 | +await expect(oc.approvals.list()).resolves.toEqual({ approvals: [] }); |
| 708 | +await expect( |
| 709 | +oc.approvals.respond("approval-123", { id: "stale-approval", decision: "allow-once" }), |
| 710 | +).resolves.toEqual({ ok: true }); |
| 711 | + |
| 712 | +expect(transport.calls).toEqual([ |
| 713 | +{ |
| 714 | +method: "exec.approval.list", |
| 715 | +options: undefined, |
| 716 | +params: undefined, |
| 717 | +}, |
| 718 | +{ |
| 719 | +method: "exec.approval.resolve", |
| 720 | +options: undefined, |
| 721 | +params: { id: "approval-123", decision: "allow-once" }, |
| 722 | +}, |
| 723 | +]); |
| 724 | +}); |
| 725 | + |
700 | 726 | it("does not request after close races event pump startup", async () => { |
701 | 727 | const transport = new ClosingEventPumpTransport({ |
702 | 728 | "agents.list": { agents: [] }, |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。