From cdb4998ea4f53f0b5543c7665174190abe642382 Mon Sep 17 00:00:00 2001 From: Diego Rodrigues de Sa e Souza <8016841+diegosouzapw@users.noreply.github.com> Date: Tue, 14 Jul 2026 21:14:04 -0300 Subject: [PATCH] fix(dashboard): agent bridge dns toggle uses POST, not PUT (#7157) (#7197) The dns toggle button called fetch(..., { method: "PUT" }) but src/app/api/tools/agent-bridge/agents/[id]/dns/route.ts only exports POST, so Next.js auto-returned 405 on every Start/Stop DNS click. Fixes the frontend caller to match the documented POST contract (docs/frameworks/AGENTBRIDGE.md:490) already covered by tests/unit/agent-bridge-dns-route-validation.test.ts. Adds a regression test asserting the fetch call uses method: POST. --- .../fixes/7157-agent-bridge-dns-405.md | 1 + .../agent-bridge/AgentBridgePageClient.tsx | 2 +- ...gent-bridge-dns-toggle-method-7157.test.ts | 24 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 changelog.d/fixes/7157-agent-bridge-dns-405.md create mode 100644 tests/unit/agent-bridge-dns-toggle-method-7157.test.ts diff --git a/changelog.d/fixes/7157-agent-bridge-dns-405.md b/changelog.d/fixes/7157-agent-bridge-dns-405.md new file mode 100644 index 0000000000..98a887ce2a --- /dev/null +++ b/changelog.d/fixes/7157-agent-bridge-dns-405.md @@ -0,0 +1 @@ +- fix(dashboard): Agent Bridge DNS toggle now sends POST (was PUT), fixing HTTP 405 on Start/Stop DNS (#7157) diff --git a/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx b/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx index e1a583ea69..99f520478a 100644 --- a/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx +++ b/src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx @@ -147,7 +147,7 @@ export default function AgentBridgePageClient({ setActionError(null); try { const res = await fetch(`/api/tools/agent-bridge/agents/${agentId}/dns`, { - method: "PUT", + method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ enabled }), }); diff --git a/tests/unit/agent-bridge-dns-toggle-method-7157.test.ts b/tests/unit/agent-bridge-dns-toggle-method-7157.test.ts new file mode 100644 index 0000000000..53a7c4311a --- /dev/null +++ b/tests/unit/agent-bridge-dns-toggle-method-7157.test.ts @@ -0,0 +1,24 @@ +import test from "node:test"; +import assert from "node:assert/strict"; +import { readFileSync } from "node:fs"; +import { fileURLToPath } from "node:url"; +import path from "node:path"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const clientPath = path.resolve( + __dirname, + "../../src/app/(dashboard)/dashboard/tools/agent-bridge/AgentBridgePageClient.tsx" +); +const source = readFileSync(clientPath, "utf8"); + +test("#7157: dns toggle fetch call uses method POST (route.ts only exports POST)", () => { + const dnsCallMatch = source.match( + /\/api\/tools\/agent-bridge\/agents\/\$\{agentId\}\/dns`,\s*\{\s*method:\s*"([A-Z]+)"/ + ); + assert.ok(dnsCallMatch, "expected to find the dns fetch call in AgentBridgePageClient.tsx"); + assert.equal( + dnsCallMatch?.[1], + "POST", + "dns fetch call must use method: 'POST' to match the route.ts export (issue #7157)" + ); +});