aboutsummaryrefslogtreecommitdiff
path: root/src/util/tool.ts
diff options
context:
space:
mode:
authoramankumarsingh77 <amankumarsingh7702@gmail.com>2026-07-28 19:46:57 +0530
committerAman Kumar <145339995+amankumarsingh77@users.noreply.github.com>2026-08-02 19:12:46 +0530
commitce1240fa9b3b74983cc22171469c24d0708b10ea (patch)
treebed14eb1351f6b4e1114f64638bda63906a614ff /src/util/tool.ts
parent226e814d47a5e1acd4d308619921ca1012723b88 (diff)
fix(tool): stop the socket gate rejecting every tool call on Windows
The tool gate ran access() on DAEMON_SOCKET_PATH, which on Windows is the named pipe \\.\pipe\pi-browser-daemon. Named pipes are not filesystem entries, so access() always fails there and every browser_* call returned "Browser harness not initialized" no matter how healthy the daemon was. spawn.ts already skipped the identical check for this reason; that knowledge is now one shared daemonSocketMayExist() used by both call sites, with platform and path as parameters so the branch is testable off-platform. Report: docs/superpowers/reports/2026-07-26-bug-audit.md#f1 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'src/util/tool.ts')
-rw-r--r--src/util/tool.ts7
1 files changed, 2 insertions, 5 deletions
diff --git a/src/util/tool.ts b/src/util/tool.ts
index e4bb5ba..76087bc 100644
--- a/src/util/tool.ts
+++ b/src/util/tool.ts
@@ -8,8 +8,7 @@ import type {
ToolRenderResultOptions,
} from "@mariozechner/pi-coding-agent";
import type { Component } from "@mariozechner/pi-tui";
-import { access } from "node:fs/promises";
-import { DAEMON_SOCKET_PATH } from "../daemon/protocol";
+import { daemonSocketMayExist } from "../daemon/spawn";
import type { BrowserClient } from "../client";
import type { Result } from "./result";
@@ -141,9 +140,7 @@ export const registerBrowserTool = (
// Check daemon socket exists before attempting browser control.
// If missing, the user hasn't run /browser-setup yet. Return a clear
// error so the agent knows to direct the user to initialize.
- try {
- await access(DAEMON_SOCKET_PATH);
- } catch {
+ if (!(await daemonSocketMayExist())) {
return toToolResult(
{
success: false,