github-router 0.3.211 → 0.3.212

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3627,7 +3627,7 @@ var import_websocket_server = /* @__PURE__ */ __toESM(require_websocket_server()
3627
3627
  * `src/lib/paths.ts`, which has no win32 branch). On Windows the
3628
3628
  * writer and reader never met, so the install-check returned
3629
3629
  * `bridge_not_running` even with a healthy bridge. Centralized here so
3630
- * the regression test in `tests/browser-bridge-discovery-path.test.ts`
3630
+ * the regression test in `tests/isolated/browser-bridge-discovery-path.test.ts`
3631
3631
  * can pin the round-trip.
3632
3632
  *
3633
3633
  * Mirrors `PATHS.APP_DIR` from `src/lib/paths.ts` (XDG-style on every
@@ -2,7 +2,7 @@
2
2
  "manifest_version": 3,
3
3
  "name": "github-router browser bridge",
4
4
  "short_name": "gh-router-browser",
5
- "version": "0.3.211",
5
+ "version": "0.3.212",
6
6
  "description": "Bridge between Claude (via github-router /mcp) and the browser. Implements tab control, navigation, clicks, form fill, downloads, screenshots, devtools eval. Blocks navigation to chrome://settings.",
7
7
  "key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqJElxuBlonBS3TVW9FJN0mGTtShB3L1hoaYf6k39SOr1ogGYmF90EjRxy1i21k9wQQjPf26bcBu/9X67KrQjQV0uB38CaNukgiSeoLjfptN811u+PJHx6BP+jx3Qa6/3VenNPxHC8WEU0GXql8QSjIHEyCwKb6fMASXOK94JyB5Ywov2x8mt/+9ncqBBBMVzf6r5Sagy4PL1XnryLsuADD/vOEkPet8wXgH/Oj7v5tTsQQZ7U1JT51PoDs2BFnXc5v3TkVgZwd32k3ONh+nkDw1Hof+4zwUGOyJE6eMrlYzRlKM4Qxdf9JpavQvqfieAbTRWcyKeclnHeoIfE7cDBQIDAQAB",
8
8
  "background": {
@@ -1,4 +1,4 @@
1
- import { B as runWorkerAgent, F as EXPLORE_DEFAULT_MODEL, I as IMPLEMENT_DEFAULT_MODEL, L as PLAN_DEFAULT_MODEL, N as BROWSE_DEFAULT_MODEL, P as DEFAULT_MODEL, R as REVIEW_DEFAULT_MODEL, V as withNoOutputRetry, z as appendPlanReminder } from "./peer-mcp-personas-CxpFD-rW.js";
1
+ import { B as runWorkerAgent, F as EXPLORE_DEFAULT_MODEL, I as IMPLEMENT_DEFAULT_MODEL, L as PLAN_DEFAULT_MODEL, N as BROWSE_DEFAULT_MODEL, P as DEFAULT_MODEL, R as REVIEW_DEFAULT_MODEL, V as withNoOutputRetry, z as appendPlanReminder } from "./peer-mcp-personas-C1RegCRs.js";
2
2
  import "./paths-BO22pMUb.js";
3
3
  import "./lifecycle-D-1CYr1Y.js";
4
4
  import "./lifecycle-bPdiXjYB.js";
package/dist/main.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { $ as buildAdvisorStream, $t as getPackageVersion, A as trustRepo, At as readResponseBodyCapped, Bt as ArtifactClient, C as fileLastPromptStore, Ct as getTokenCount, D as repoRoot, Dt as createResponses, E as repoFingerprint, Et as pickEndpoint, Ft as extractTarGzMember, G as toolbeltEnabled, Gt as DEFAULT_CLAUDE_MODEL_FALLBACKS, H as buildEnv, Ht as buildWorkspaceHeaderJson, It as extractZipMember, J as TOOLBELT_TOOLS, Jt as DEFAULT_PORT, K as toolbeltSkipSet, Kt as DEFAULT_CODEX_MODEL, Lt as CONDENSED_OPERATING_SEQUENCE, M as resolveSealedGate, Mt as provisionBrowserAssets, Nt as hasSupportedBrowserInstalled, O as stopGateEnabledForRepo, Ot as createChatCompletions, Pt as provisionAndIndexColbert, Q as ADVISOR_TOOL_INSTRUCTIONS, Qt as pickClaudeDefault, Rt as DEFINITION_OF_GREATNESS, S as fileFindingsStore, Sn as state, St as createMessages, T as isSubagentContext, Tt as resolveMcpToolTimeoutMs, U as availableToolCommands, Ut as collapsePathKeys, Vt as buildWorkspaceHeaderHelperCommand, W as buildToolbeltAwareness, Wt as toolbeltPathOverride, X as searchWeb, Xt as UPSTREAM_INACTIVITY_TIMEOUT_MS, Y as assetFor, Yt as UPSTREAM_FETCH_TIMEOUT_MS, Z as ADVISOR_INTERNAL_TOOL_NAME, Zt as generateRandomPort, _ as stopGateDisabled, _n as forwardError, _t as nativeSubagentModel, a as buildPeerAwarenessSnippet, an as cacheCopilotVersion, at as logStreamError, b as stopReviewEnabled, bn as copilotHeaders, bt as shimDefaultsToXhigh, c as personasFor, cn as filterBetaHeader, ct as handleMcpDelete, d as buildStopHookCommand, dn as resolveModel, dt as artifactToolsEnabled, en as withInstallLock, et as injectAdvisorTool, f as captureLaunchBaseline, fn as sleep$1, ft as browseAgentEnabled, g as launchBaselineKey, gn as HTTPError, gt as geminiAvailable, h as injectStopHookIntoSettingsFile, hn as fetchWithTransientRetry, ht as fleetToolsEnabled, i as buildAgentPrompt, in as tryRefreshAndRetry, it as isControllerClosedError, j as liveExec, jt as parseJsonOrDiagnose, k as stopReviewStateDir, kt as MAX_RESPONSE_BODY_BYTES, l as buildArtifactOpenHookCommand, ln as isNullish, lt as handleMcpPost, m as fileBlockBudget, mn as getGitHubUser, mt as browserToolsEnabled, n as MCP_GROUPS, nn as setupGitHubAgentToken, nt as buildAnthropicErrorEvent, o as buildPeerAwarenessSummary, on as cacheModels, ot as readIteratorWithTimeout, p as decideStopHook, pn as getModels, pt as browserCompoundToolsEnabled, q as vscodeRipgrepPath, qt as DEFAULT_CODEX_MODEL_FALLBACKS, r as assertMcpToolSurfaceConsistent, rn as setupGitHubToken, rt as buildOpenAIErrorEvent, s as enumerateInjectedMcpToolNames, sn as cacheVSCodeVersion, st as relayAnthropicStream, t as GROUP_META, tn as setupCopilotToken, tt as isAdvisorRequested, u as buildSessionBindHookCommand, un as resolveCodexModel, ut as agentToolsEnabled, v as stopGateId, vn as GITHUB_API_BASE_URL, vt as standInToolEnabled, w as fileReviewDebounce, wt as assembleResponsesPayload, x as fileBaselineStore, xn as githubHeaders, xt as countTokens, y as stopGatePlanMode, yn as copilotBaseUrl, yt as workerToolsEnabled, zt as shouldUseInsecureTls } from "./peer-mcp-personas-CxpFD-rW.js";
2
+ import { $ as buildAdvisorStream, $t as getPackageVersion, A as trustRepo, At as readResponseBodyCapped, Bt as ArtifactClient, C as fileLastPromptStore, Ct as getTokenCount, D as repoRoot, Dt as createResponses, E as repoFingerprint, Et as pickEndpoint, Ft as extractTarGzMember, G as toolbeltEnabled, Gt as DEFAULT_CLAUDE_MODEL_FALLBACKS, H as buildEnv, Ht as buildWorkspaceHeaderJson, It as extractZipMember, J as TOOLBELT_TOOLS, Jt as DEFAULT_PORT, K as toolbeltSkipSet, Kt as DEFAULT_CODEX_MODEL, Lt as CONDENSED_OPERATING_SEQUENCE, M as resolveSealedGate, Mt as provisionBrowserAssets, Nt as hasSupportedBrowserInstalled, O as stopGateEnabledForRepo, Ot as createChatCompletions, Pt as provisionAndIndexColbert, Q as ADVISOR_TOOL_INSTRUCTIONS, Qt as pickClaudeDefault, Rt as DEFINITION_OF_GREATNESS, S as fileFindingsStore, Sn as state, St as createMessages, T as isSubagentContext, Tt as resolveMcpToolTimeoutMs, U as availableToolCommands, Ut as collapsePathKeys, Vt as buildWorkspaceHeaderHelperCommand, W as buildToolbeltAwareness, Wt as toolbeltPathOverride, X as searchWeb, Xt as UPSTREAM_INACTIVITY_TIMEOUT_MS, Y as assetFor, Yt as UPSTREAM_FETCH_TIMEOUT_MS, Z as ADVISOR_INTERNAL_TOOL_NAME, Zt as generateRandomPort, _ as stopGateDisabled, _n as forwardError, _t as nativeSubagentModel, a as buildPeerAwarenessSnippet, an as cacheCopilotVersion, at as logStreamError, b as stopReviewEnabled, bn as copilotHeaders, bt as shimDefaultsToXhigh, c as personasFor, cn as filterBetaHeader, ct as handleMcpDelete, d as buildStopHookCommand, dn as resolveModel, dt as artifactToolsEnabled, en as withInstallLock, et as injectAdvisorTool, f as captureLaunchBaseline, fn as sleep$1, ft as browseAgentEnabled, g as launchBaselineKey, gn as HTTPError, gt as geminiAvailable, h as injectStopHookIntoSettingsFile, hn as fetchWithTransientRetry, ht as fleetToolsEnabled, i as buildAgentPrompt, in as tryRefreshAndRetry, it as isControllerClosedError, j as liveExec, jt as parseJsonOrDiagnose, k as stopReviewStateDir, kt as MAX_RESPONSE_BODY_BYTES, l as buildArtifactOpenHookCommand, ln as isNullish, lt as handleMcpPost, m as fileBlockBudget, mn as getGitHubUser, mt as browserToolsEnabled, n as MCP_GROUPS, nn as setupGitHubAgentToken, nt as buildAnthropicErrorEvent, o as buildPeerAwarenessSummary, on as cacheModels, ot as readIteratorWithTimeout, p as decideStopHook, pn as getModels, pt as browserCompoundToolsEnabled, q as vscodeRipgrepPath, qt as DEFAULT_CODEX_MODEL_FALLBACKS, r as assertMcpToolSurfaceConsistent, rn as setupGitHubToken, rt as buildOpenAIErrorEvent, s as enumerateInjectedMcpToolNames, sn as cacheVSCodeVersion, st as relayAnthropicStream, t as GROUP_META, tn as setupCopilotToken, tt as isAdvisorRequested, u as buildSessionBindHookCommand, un as resolveCodexModel, ut as agentToolsEnabled, v as stopGateId, vn as GITHUB_API_BASE_URL, vt as standInToolEnabled, w as fileReviewDebounce, wt as assembleResponsesPayload, x as fileBaselineStore, xn as githubHeaders, xt as countTokens, y as stopGatePlanMode, yn as copilotBaseUrl, yt as workerToolsEnabled, zt as shouldUseInsecureTls } from "./peer-mcp-personas-C1RegCRs.js";
3
3
  import { a as isUnderClaudeConfigMirror, d as writeRuntimeFileSecure, i as ensurePaths, o as removeOwnClaudeConfigMirror, r as ensureClaudeConfigMirror, t as PATHS, u as writeArtifactCredsToMirror } from "./paths-BO22pMUb.js";
4
4
  import { c as killManagedTree, d as runCommandCapture, f as runCommandVoid, l as parseBoolEnv, s as killChildProcessTree, u as resolveExecutable } from "./lifecycle-D-1CYr1Y.js";
5
5
  import { a as sweepRegistry } from "./lifecycle-bPdiXjYB.js";
@@ -12,8 +12,8 @@ import * as nodePath$1 from "node:path";
12
12
  import nodePath from "node:path";
13
13
  import process$1 from "node:process";
14
14
  import { execFileSync, spawn } from "node:child_process";
15
- import * as fs$2 from "node:fs";
16
- import fs$1, { existsSync, mkdirSync, promises, readFileSync, realpathSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
15
+ import * as fs$1 from "node:fs";
16
+ import fsSync, { existsSync, mkdirSync, promises, readFileSync, realpathSync, renameSync, unlinkSync, writeFileSync } from "node:fs";
17
17
  import { Agent, ProxyAgent, setGlobalDispatcher } from "undici";
18
18
  import { Writable } from "node:stream";
19
19
  import { clearTimeout as clearTimeout$1, setTimeout as setTimeout$1 } from "node:timers";
@@ -1709,13 +1709,13 @@ function makeDedupeKey(logObj) {
1709
1709
  function rotateAtStartup(filePath) {
1710
1710
  let size;
1711
1711
  try {
1712
- size = fs$1.statSync(filePath).size;
1712
+ size = fsSync.statSync(filePath).size;
1713
1713
  } catch {
1714
1714
  return;
1715
1715
  }
1716
1716
  if (size <= MAX_LOG_BYTES) return;
1717
1717
  try {
1718
- fs$1.renameSync(filePath, filePath + ".1");
1718
+ fsSync.renameSync(filePath, filePath + ".1");
1719
1719
  } catch {}
1720
1720
  }
1721
1721
  var FileLogReporter = class FileLogReporter {
@@ -1731,7 +1731,7 @@ var FileLogReporter = class FileLogReporter {
1731
1731
  ensureFd() {
1732
1732
  if (this.fd !== void 0) return this.fd;
1733
1733
  try {
1734
- this.fd = fs$1.openSync(this.filePath, "a", 384);
1734
+ this.fd = fsSync.openSync(this.filePath, "a", 384);
1735
1735
  } catch {
1736
1736
  this.fd = void 0;
1737
1737
  }
@@ -1740,7 +1740,7 @@ var FileLogReporter = class FileLogReporter {
1740
1740
  closeFd() {
1741
1741
  if (this.fd === void 0) return;
1742
1742
  try {
1743
- fs$1.closeSync(this.fd);
1743
+ fsSync.closeSync(this.fd);
1744
1744
  } catch {}
1745
1745
  this.fd = void 0;
1746
1746
  }
@@ -1756,14 +1756,14 @@ var FileLogReporter = class FileLogReporter {
1756
1756
  rotateIfNeeded() {
1757
1757
  let size;
1758
1758
  try {
1759
- size = this.fd !== void 0 ? fs$1.fstatSync(this.fd).size : fs$1.statSync(this.filePath).size;
1759
+ size = this.fd !== void 0 ? fsSync.fstatSync(this.fd).size : fsSync.statSync(this.filePath).size;
1760
1760
  } catch {
1761
1761
  return;
1762
1762
  }
1763
1763
  if (size <= MAX_LOG_BYTES) return;
1764
1764
  this.closeFd();
1765
1765
  try {
1766
- fs$1.renameSync(this.filePath, this.filePath + ".1");
1766
+ fsSync.renameSync(this.filePath, this.filePath + ".1");
1767
1767
  } catch {}
1768
1768
  }
1769
1769
  /**
@@ -1790,7 +1790,7 @@ var FileLogReporter = class FileLogReporter {
1790
1790
  const fd = this.ensureFd();
1791
1791
  if (fd === void 0) return;
1792
1792
  try {
1793
- fs$1.writeSync(fd, line);
1793
+ fsSync.writeSync(fd, line);
1794
1794
  } catch {
1795
1795
  this.closeFd();
1796
1796
  }
@@ -2894,7 +2894,7 @@ async function discoverGateCommands(cwd, opts) {
2894
2894
  if (files.length === 0) return null;
2895
2895
  let result;
2896
2896
  try {
2897
- const { runWorkerAgent } = await import("./engine-DFuchRoh.js");
2897
+ const { runWorkerAgent } = await import("./engine-A3oKQtu-.js");
2898
2898
  result = await runWorkerAgent({
2899
2899
  mode: "explore",
2900
2900
  workspace: root,
@@ -5222,7 +5222,7 @@ function initProxyFromEnv() {
5222
5222
  //#endregion
5223
5223
  //#region package.json
5224
5224
  var name = "github-router";
5225
- var version$1 = "0.3.211";
5225
+ var version$1 = "0.3.212";
5226
5226
 
5227
5227
  //#endregion
5228
5228
  //#region src/lib/approval.ts
@@ -8660,7 +8660,7 @@ function seedGatewayModelCache(serverUrl, models$1, configDir = PATHS.CLAUDE_CON
8660
8660
  const target = nodePath$1.join(cacheDir, "gateway-models.json");
8661
8661
  const tmp = nodePath$1.join(cacheDir, `gateway-models.json.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`);
8662
8662
  try {
8663
- fs$2.mkdirSync(cacheDir, { recursive: true });
8663
+ fs$1.mkdirSync(cacheDir, { recursive: true });
8664
8664
  const payload = {
8665
8665
  baseUrl: serverUrl,
8666
8666
  fetchedAt: Date.now(),
@@ -8669,12 +8669,12 @@ function seedGatewayModelCache(serverUrl, models$1, configDir = PATHS.CLAUDE_CON
8669
8669
  display_name: m.display_name
8670
8670
  }))
8671
8671
  };
8672
- fs$2.writeFileSync(tmp, JSON.stringify(payload), "utf-8");
8673
- fs$2.renameSync(tmp, target);
8672
+ fs$1.writeFileSync(tmp, JSON.stringify(payload), "utf-8");
8673
+ fs$1.renameSync(tmp, target);
8674
8674
  return true;
8675
8675
  } catch {
8676
8676
  try {
8677
- fs$2.rmSync(tmp, { force: true });
8677
+ fs$1.rmSync(tmp, { force: true });
8678
8678
  } catch {}
8679
8679
  return false;
8680
8680
  }
@@ -8689,7 +8689,7 @@ function seedGatewayModelCache(serverUrl, models$1, configDir = PATHS.CLAUDE_CON
8689
8689
  */
8690
8690
  function clearGatewayModelCache(configDir = PATHS.CLAUDE_CONFIG_DIR) {
8691
8691
  try {
8692
- fs$2.rmSync(nodePath$1.join(configDir, "cache", "gateway-models.json"), { force: true });
8692
+ fs$1.rmSync(nodePath$1.join(configDir, "cache", "gateway-models.json"), { force: true });
8693
8693
  } catch {}
8694
8694
  }
8695
8695
  /**
@@ -10580,7 +10580,7 @@ function spawnCloudCli(opts) {
10580
10580
  const logPath = process.env.GH_ROUTER_CLOUDCLI_LOG;
10581
10581
  let stdio = "ignore";
10582
10582
  if (logPath) try {
10583
- const fd = fs$1.openSync(logPath, "a");
10583
+ const fd = fsSync.openSync(logPath, "a");
10584
10584
  stdio = [
10585
10585
  "ignore",
10586
10586
  fd,