github-router 0.3.255 → 0.3.256
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.
- package/dist/{attribution-settings-CegtE0TY.js → attribution-settings-jqkXfeVr.js} +3 -3
- package/dist/{attribution-settings-CegtE0TY.js.map → attribution-settings-jqkXfeVr.js.map} +1 -1
- package/dist/browser-ext/background.js +406 -30
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/{claude-BiZxoNWq.js → claude-Cpy7b9gd.js} +6 -6
- package/dist/{claude-BiZxoNWq.js.map → claude-Cpy7b9gd.js.map} +1 -1
- package/dist/{codex-ST21X3WF.js → codex-BJK_QVsI.js} +4 -4
- package/dist/{codex-ST21X3WF.js.map → codex-BJK_QVsI.js.map} +1 -1
- package/dist/engine-DXn5XmFp.js +2 -0
- package/dist/{gate-discovery-CepmbZnc.js → gate-discovery-Bm1nxHSU.js} +2 -2
- package/dist/{gate-discovery-CepmbZnc.js.map → gate-discovery-Bm1nxHSU.js.map} +1 -1
- package/dist/{internal-stop-hook-CNPGJm63.js → internal-stop-hook-BaBkqJyg.js} +2 -2
- package/dist/{internal-stop-hook-CNPGJm63.js.map → internal-stop-hook-BaBkqJyg.js.map} +1 -1
- package/dist/main.js +5 -5
- package/dist/{peer-mcp-personas-BDet588n.js → peer-mcp-personas-BPl6_V2A.js} +126 -54
- package/dist/{peer-mcp-personas-BDet588n.js.map → peer-mcp-personas-BPl6_V2A.js.map} +1 -1
- package/dist/{provision-DSkPa5hY.js → provision-DueN4M8G.js} +2 -2
- package/dist/{provision-DSkPa5hY.js.map → provision-DueN4M8G.js.map} +1 -1
- package/dist/{serve-sa_7c-yD.js → serve-GN-flJmF.js} +5 -5
- package/dist/{serve-sa_7c-yD.js.map → serve-GN-flJmF.js.map} +1 -1
- package/dist/{server-setup-DcO9qvN3.js → server-setup-BJL-X7w6.js} +3 -3
- package/dist/{server-setup-DcO9qvN3.js.map → server-setup-BJL-X7w6.js.map} +1 -1
- package/dist/{start-siGxuZhO.js → start-CE0k-weK.js} +3 -3
- package/dist/{start-siGxuZhO.js.map → start-CE0k-weK.js.map} +1 -1
- package/package.json +1 -1
- package/dist/engine-DNCX0Hfd.js +0 -2
|
@@ -16556,13 +16556,27 @@ async function runUnifiedCodeSearch(input, signal) {
|
|
|
16556
16556
|
//#endregion
|
|
16557
16557
|
//#region src/lib/browser-mcp/browser-detect.ts
|
|
16558
16558
|
let cached;
|
|
16559
|
-
function
|
|
16560
|
-
|
|
16561
|
-
|
|
16559
|
+
function probeWindowsRegistry(subkey) {
|
|
16560
|
+
try {
|
|
16561
|
+
execFileSync("reg.exe", [
|
|
16562
|
+
"query",
|
|
16563
|
+
`HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\${subkey}`,
|
|
16564
|
+
"/ve"
|
|
16565
|
+
], {
|
|
16566
|
+
windowsHide: true,
|
|
16567
|
+
timeout: 3e3,
|
|
16568
|
+
stdio: [
|
|
16569
|
+
"ignore",
|
|
16570
|
+
"pipe",
|
|
16571
|
+
"ignore"
|
|
16572
|
+
]
|
|
16573
|
+
});
|
|
16574
|
+
return true;
|
|
16575
|
+
} catch {
|
|
16562
16576
|
try {
|
|
16563
16577
|
execFileSync("reg.exe", [
|
|
16564
16578
|
"query",
|
|
16565
|
-
`
|
|
16579
|
+
`HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\${subkey}`,
|
|
16566
16580
|
"/ve"
|
|
16567
16581
|
], {
|
|
16568
16582
|
windowsHide: true,
|
|
@@ -16575,43 +16589,27 @@ function probeWindows() {
|
|
|
16575
16589
|
});
|
|
16576
16590
|
return true;
|
|
16577
16591
|
} catch {
|
|
16578
|
-
|
|
16579
|
-
execFileSync("reg.exe", [
|
|
16580
|
-
"query",
|
|
16581
|
-
`HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\App Paths\\${subkey}`,
|
|
16582
|
-
"/ve"
|
|
16583
|
-
], {
|
|
16584
|
-
windowsHide: true,
|
|
16585
|
-
timeout: 3e3,
|
|
16586
|
-
stdio: [
|
|
16587
|
-
"ignore",
|
|
16588
|
-
"pipe",
|
|
16589
|
-
"ignore"
|
|
16590
|
-
]
|
|
16591
|
-
});
|
|
16592
|
-
return true;
|
|
16593
|
-
} catch {
|
|
16594
|
-
return false;
|
|
16595
|
-
}
|
|
16592
|
+
return false;
|
|
16596
16593
|
}
|
|
16597
|
-
};
|
|
16598
|
-
if (probe("chrome.exe")) found.push("chrome");
|
|
16599
|
-
if (probe("msedge.exe")) found.push("edge");
|
|
16600
|
-
if (!found.includes("chrome")) {
|
|
16601
|
-
const localApp = process$1.env.LOCALAPPDATA;
|
|
16602
|
-
const pf = process$1.env["PROGRAMFILES"];
|
|
16603
|
-
const pf86 = process$1.env["PROGRAMFILES(X86)"];
|
|
16604
|
-
if ([
|
|
16605
|
-
localApp ? path.join(localApp, "Google", "Chrome", "Application", "chrome.exe") : void 0,
|
|
16606
|
-
pf ? path.join(pf, "Google", "Chrome", "Application", "chrome.exe") : void 0,
|
|
16607
|
-
pf86 ? path.join(pf86, "Google", "Chrome", "Application", "chrome.exe") : void 0
|
|
16608
|
-
].filter((p) => typeof p === "string").some(existsSync)) found.push("chrome");
|
|
16609
|
-
}
|
|
16610
|
-
if (!found.includes("edge")) {
|
|
16611
|
-
const pf86 = process$1.env["PROGRAMFILES(X86)"];
|
|
16612
|
-
const pf = process$1.env["PROGRAMFILES"];
|
|
16613
|
-
if ([pf86 ? path.join(pf86, "Microsoft", "Edge", "Application", "msedge.exe") : void 0, pf ? path.join(pf, "Microsoft", "Edge", "Application", "msedge.exe") : void 0].filter((p) => typeof p === "string").some(existsSync)) found.push("edge");
|
|
16614
16594
|
}
|
|
16595
|
+
}
|
|
16596
|
+
/** Well-known install locations. Per-user installs land in LocalAppData; system installs in Program Files. */
|
|
16597
|
+
function windowsLiteralPaths(browser) {
|
|
16598
|
+
const localApp = process$1.env.LOCALAPPDATA;
|
|
16599
|
+
const pf = process$1.env["PROGRAMFILES"];
|
|
16600
|
+
const pf86 = process$1.env["PROGRAMFILES(X86)"];
|
|
16601
|
+
return (browser === "chrome" ? [
|
|
16602
|
+
localApp ? path.join(localApp, "Google", "Chrome", "Application", "chrome.exe") : void 0,
|
|
16603
|
+
pf ? path.join(pf, "Google", "Chrome", "Application", "chrome.exe") : void 0,
|
|
16604
|
+
pf86 ? path.join(pf86, "Google", "Chrome", "Application", "chrome.exe") : void 0
|
|
16605
|
+
] : [pf86 ? path.join(pf86, "Microsoft", "Edge", "Application", "msedge.exe") : void 0, pf ? path.join(pf, "Microsoft", "Edge", "Application", "msedge.exe") : void 0]).filter((p) => typeof p === "string");
|
|
16606
|
+
}
|
|
16607
|
+
function probeWindows() {
|
|
16608
|
+
const found = [];
|
|
16609
|
+
if (windowsLiteralPaths("chrome").some(existsSync)) found.push("chrome");
|
|
16610
|
+
if (windowsLiteralPaths("edge").some(existsSync)) found.push("edge");
|
|
16611
|
+
if (!found.includes("chrome") && probeWindowsRegistry("chrome.exe")) found.push("chrome");
|
|
16612
|
+
if (!found.includes("edge") && probeWindowsRegistry("msedge.exe")) found.push("edge");
|
|
16615
16613
|
return found;
|
|
16616
16614
|
}
|
|
16617
16615
|
function probeMacOS() {
|
|
@@ -17184,6 +17182,13 @@ function loadExpectedExtensionVersion() {
|
|
|
17184
17182
|
*/
|
|
17185
17183
|
const DEV_VERSION_SENTINEL = "0.0.0";
|
|
17186
17184
|
/**
|
|
17185
|
+
* Stand-in for `version_mismatch.loaded` when the loaded extension is
|
|
17186
|
+
* too old to report a version at all (it predates the `__hello__`
|
|
17187
|
+
* handshake). Kept human-readable because it is rendered verbatim into
|
|
17188
|
+
* the model-facing instructions.
|
|
17189
|
+
*/
|
|
17190
|
+
const UNKNOWN_LOADED_VERSION = "unknown (extension reported no version)";
|
|
17191
|
+
/**
|
|
17187
17192
|
* Track which `(extensionId, expectedVersion)` pairs we've already
|
|
17188
17193
|
* tried to auto-reload in this process. Prevents an infinite reload
|
|
17189
17194
|
* loop if the on-disk version somehow stays ahead of what the browser
|
|
@@ -17192,6 +17197,15 @@ const DEV_VERSION_SENTINEL = "0.0.0";
|
|
|
17192
17197
|
*/
|
|
17193
17198
|
const attemptedReloads = /* @__PURE__ */ new Set();
|
|
17194
17199
|
/**
|
|
17200
|
+
* `auto_installed` for the `extension_outdated` payloads below.
|
|
17201
|
+
*
|
|
17202
|
+
* Reaching those branches means the bridge is running and the extension is
|
|
17203
|
+
* connected, so the native-messaging manifest is provably already correct —
|
|
17204
|
+
* nothing was installed, and claiming otherwise would point the reader at a
|
|
17205
|
+
* step that is not the remedy. The remedy is reloading the extension.
|
|
17206
|
+
*/
|
|
17207
|
+
const NOTHING_AUTO_INSTALLED = Object.freeze([]);
|
|
17208
|
+
/**
|
|
17195
17209
|
* Send POST /reload to the bridge — triggers __reload__ control frame
|
|
17196
17210
|
* over native messaging, which the extension's handler dispatches into
|
|
17197
17211
|
* chrome.runtime.reload(). After this returns, the OLD bridge process
|
|
@@ -17236,7 +17250,10 @@ function buildInstallRequired(reason, autoInstalled, versionMismatch) {
|
|
|
17236
17250
|
const instructions = (() => {
|
|
17237
17251
|
if (reason === "no_supported_browser") return "No Chrome or Edge installation was detected on this host. Install one and restart the github-router proxy.";
|
|
17238
17252
|
if (reason === "bridge_bundle_missing") return "The bridge bundle is missing. Run `bun run build` from the github-router checkout to produce dist/browser-bridge/index.js, then retry.";
|
|
17239
|
-
if (reason === "extension_outdated" && versionMismatch)
|
|
17253
|
+
if (reason === "extension_outdated" && versionMismatch) {
|
|
17254
|
+
if (versionMismatch.loaded === UNKNOWN_LOADED_VERSION) return `Your loaded github-router browser extension did not report a version, so the proxy cannot confirm it is up to date and auto-reload could not fix it (the github-router package shipped version ${versionMismatch.expected}). This usually means the loaded extension predates the auto-reload support and has been silently running stale. Open chrome://extensions (or edge://extensions), find the github-router extension card, and click the reload arrow; if the card is missing, click "Load unpacked" and select the load_unpacked_dir above. If it still reports no version afterwards, restart the github-router proxy so the native bridge is refreshed too.`;
|
|
17255
|
+
return `Your loaded github-router browser extension is version ${versionMismatch.loaded} but the github-router package shipped version ${versionMismatch.expected}. Auto-reload was attempted and did not converge — Chrome likely disabled the extension because the new manifest declares new permissions. Open chrome://extensions (or edge://extensions), find the github-router extension card, click "Enable" if it's disabled, then click the reload arrow. Retry this tool call afterwards.`;
|
|
17256
|
+
}
|
|
17240
17257
|
return "Open chrome://extensions (or edge://extensions), enable Developer Mode, click 'Load unpacked', and select the load_unpacked_dir above. Then retry this tool call. If you just updated the github-router package, an extension already loaded may need to be reloaded — click the reload arrow on its card.";
|
|
17241
17258
|
})();
|
|
17242
17259
|
return {
|
|
@@ -17253,6 +17270,31 @@ function buildInstallRequired(reason, autoInstalled, versionMismatch) {
|
|
|
17253
17270
|
};
|
|
17254
17271
|
}
|
|
17255
17272
|
/**
|
|
17273
|
+
* Is the loaded extension out of date with respect to the shipped one?
|
|
17274
|
+
*
|
|
17275
|
+
* `loaded === undefined` means the extension reported no version. The
|
|
17276
|
+
* bridge has echoed `extension_loaded_version` since the very release
|
|
17277
|
+
* that added the `__hello__` handshake, so on any bridge new enough to
|
|
17278
|
+
* run this code, a CONNECTED extension that reports no version is one
|
|
17279
|
+
* that predates the handshake — the most stale state there is. Treating
|
|
17280
|
+
* that absence as "not checkable" failed open permanently for exactly
|
|
17281
|
+
* the extensions this check exists to catch: one months out of date kept
|
|
17282
|
+
* serving requests while silently ignoring newer arguments, and nothing
|
|
17283
|
+
* ever said so. Absence is a staleness signal.
|
|
17284
|
+
*
|
|
17285
|
+
* The dev sentinel is exempt on both sides: a source checkout loads at
|
|
17286
|
+
* "0.0.0" and is expected to diverge.
|
|
17287
|
+
*
|
|
17288
|
+
* Exported for tests — this predicate is the whole invariant, and it had
|
|
17289
|
+
* no coverage when it silently regressed.
|
|
17290
|
+
*/
|
|
17291
|
+
function isExtensionStale(expected, loaded) {
|
|
17292
|
+
if (typeof expected !== "string" || expected === DEV_VERSION_SENTINEL) return false;
|
|
17293
|
+
if (typeof loaded !== "string") return true;
|
|
17294
|
+
if (loaded === DEV_VERSION_SENTINEL) return false;
|
|
17295
|
+
return loaded !== expected;
|
|
17296
|
+
}
|
|
17297
|
+
/**
|
|
17256
17298
|
* Full pre-flight. Returns either `{install_required: false, port,
|
|
17257
17299
|
* token, pid}` (bridge ready, extension connected) or an
|
|
17258
17300
|
* `install_required` payload the dispatcher hands directly to the
|
|
@@ -17317,28 +17359,30 @@ async function _ensureBridgeReadyImpl() {
|
|
|
17317
17359
|
const browsers = detectSupportedBrowsers();
|
|
17318
17360
|
if (browsers.length === 0) return buildInstallRequired("no_supported_browser", []);
|
|
17319
17361
|
if (!bridgeBundleExists()) return buildInstallRequired("bridge_bundle_missing", []);
|
|
17320
|
-
const
|
|
17362
|
+
const installNow = () => installNativeHostForAll(browsers).map((r) => `nmh_manifest_${r.browser}`);
|
|
17321
17363
|
const discovery = readBridgeDiscovery();
|
|
17322
|
-
if (!discovery) return buildInstallRequired("bridge_not_running",
|
|
17364
|
+
if (!discovery) return buildInstallRequired("bridge_not_running", installNow());
|
|
17323
17365
|
const health = await probeHealth(discovery.port, discovery.token);
|
|
17324
|
-
if (!health || !health.ok) return buildInstallRequired("bridge_not_running",
|
|
17325
|
-
if (!health.extension_connected) return buildInstallRequired("extension_not_loaded",
|
|
17366
|
+
if (!health || !health.ok) return buildInstallRequired("bridge_not_running", installNow());
|
|
17367
|
+
if (!health.extension_connected) return buildInstallRequired("extension_not_loaded", installNow());
|
|
17326
17368
|
const expectedVersion = loadExpectedExtensionVersion();
|
|
17327
17369
|
const loadedVersion = health.extension_loaded_version;
|
|
17328
|
-
|
|
17370
|
+
const loadedUnknown = typeof loadedVersion !== "string";
|
|
17371
|
+
if (typeof expectedVersion === "string" && isExtensionStale(expectedVersion, loadedVersion)) {
|
|
17372
|
+
const loadedLabel = loadedUnknown ? UNKNOWN_LOADED_VERSION : loadedVersion;
|
|
17329
17373
|
const reloadKey = `${loadStableExtensionId()}::${expectedVersion}`;
|
|
17330
|
-
if (attemptedReloads.has(reloadKey)) return buildInstallRequired("extension_outdated",
|
|
17331
|
-
loaded:
|
|
17374
|
+
if (attemptedReloads.has(reloadKey)) return buildInstallRequired("extension_outdated", NOTHING_AUTO_INSTALLED, {
|
|
17375
|
+
loaded: loadedLabel,
|
|
17332
17376
|
expected: expectedVersion
|
|
17333
17377
|
});
|
|
17334
17378
|
attemptedReloads.add(reloadKey);
|
|
17335
|
-
if (!await postReload(discovery.port, discovery.token)) return buildInstallRequired("extension_outdated",
|
|
17336
|
-
loaded:
|
|
17379
|
+
if (!await postReload(discovery.port, discovery.token)) return buildInstallRequired("extension_outdated", NOTHING_AUTO_INSTALLED, {
|
|
17380
|
+
loaded: loadedLabel,
|
|
17337
17381
|
expected: expectedVersion
|
|
17338
17382
|
});
|
|
17339
17383
|
const newDiscovery = await pollUntilExtensionVersion(expectedVersion, 3e3, 150);
|
|
17340
|
-
if (!newDiscovery) return buildInstallRequired("extension_outdated",
|
|
17341
|
-
loaded:
|
|
17384
|
+
if (!newDiscovery) return buildInstallRequired("extension_outdated", NOTHING_AUTO_INSTALLED, {
|
|
17385
|
+
loaded: loadedLabel,
|
|
17342
17386
|
expected: expectedVersion
|
|
17343
17387
|
});
|
|
17344
17388
|
return {
|
|
@@ -17855,6 +17899,30 @@ async function browserPreflight(tool, args) {
|
|
|
17855
17899
|
if (ready.install_required) return { envelope: installRequiredToolResult(ready) };
|
|
17856
17900
|
return { envelope: void 0 };
|
|
17857
17901
|
}
|
|
17902
|
+
const WINDOW_POLICIES = [
|
|
17903
|
+
"deny",
|
|
17904
|
+
"restore",
|
|
17905
|
+
"foreground"
|
|
17906
|
+
];
|
|
17907
|
+
const DEFAULT_WINDOW_POLICY = "foreground";
|
|
17908
|
+
/**
|
|
17909
|
+
* Resolve the window-remediation policy for pixel capture.
|
|
17910
|
+
*
|
|
17911
|
+
* `captureVisibleTab` cannot produce a frame for a window the browser
|
|
17912
|
+
* is not painting, so capturing against a minimized window requires
|
|
17913
|
+
* making it paintable first. Whether the proxy is allowed to touch the
|
|
17914
|
+
* user's window state is the user's call, not the model's — so it comes
|
|
17915
|
+
* from the environment and is injected here, rather than being an
|
|
17916
|
+
* argument the model chooses. Note this is a usability control, not a
|
|
17917
|
+
* security boundary: the default is the permissive setting, so a model
|
|
17918
|
+
* that simply omits the argument already gets the most intrusive
|
|
17919
|
+
* behavior. The lever that actually restrains the proxy is setting this
|
|
17920
|
+
* env var to `deny`.
|
|
17921
|
+
*/
|
|
17922
|
+
function resolveWindowPolicy() {
|
|
17923
|
+
const raw = process.env.GH_ROUTER_BROWSER_WINDOW_POLICY?.trim().toLowerCase();
|
|
17924
|
+
return WINDOW_POLICIES.includes(raw ?? "") ? raw : DEFAULT_WINDOW_POLICY;
|
|
17925
|
+
}
|
|
17858
17926
|
/**
|
|
17859
17927
|
* Real dispatcher for any browser_* tool. Used by the entries in
|
|
17860
17928
|
* src/lib/browser-mcp/index.ts. Returns the standard MCP tool-result
|
|
@@ -17869,10 +17937,14 @@ async function dispatchBrowserTool(tool, args, signal, opts = {}) {
|
|
|
17869
17937
|
const { defaultMs, maxMs } = pickTimeout(tool);
|
|
17870
17938
|
const callerTimeout = typeof opts.timeoutMs === "number" && opts.timeoutMs > 0 ? Math.min(opts.timeoutMs, maxMs) : defaultMs;
|
|
17871
17939
|
try {
|
|
17940
|
+
const callArgs = tool === "browser_screenshot" ? {
|
|
17941
|
+
...args,
|
|
17942
|
+
windowPolicy: resolveWindowPolicy()
|
|
17943
|
+
} : args;
|
|
17872
17944
|
const resp = await bridgeCall({
|
|
17873
17945
|
port: ready.port,
|
|
17874
17946
|
token: ready.token
|
|
17875
|
-
}, tool,
|
|
17947
|
+
}, tool, callArgs, callerTimeout, signal);
|
|
17876
17948
|
if (resp.ok) {
|
|
17877
17949
|
logAudit$1({
|
|
17878
17950
|
tool,
|
|
@@ -19883,7 +19955,7 @@ const BROWSER_TOOLS = Object.freeze([
|
|
|
19883
19955
|
},
|
|
19884
19956
|
{
|
|
19885
19957
|
toolNameHttp: "browser_screenshot",
|
|
19886
|
-
description: "Captures a screenshot of the visible area of a tab and returns it as an image you can actually look at, plus a small text envelope of capture metadata. It takes a tab id, an optional format (PNG default, JPEG for smaller bytes), and an optional JPEG quality. The tab must be active in its window, so this tool auto-activates the tab if needed and that changes which tab is focused. If a capture is rejected for exceeding a model's image-size limit, the most reliable lever is a smaller browser window; PNG is usually SMALLER than JPEG for ordinary UI and text pages, so switching format is not a dependable way to shrink one. JPEG plus a low quality helps mainly for photographic or dense-colour content. Use screenshot for visual layout, canvas, SVG, maps, or image-only regions; prefer browser_observe when page text and actionable state are enough.",
|
|
19958
|
+
description: "Captures a screenshot of the visible area of a tab and returns it as an image you can actually look at, plus a small text envelope of capture metadata. It takes a tab id, an optional format (PNG default, JPEG for smaller bytes), and an optional JPEG quality. The tab must be active in its window, so this tool auto-activates the tab if needed and that changes which tab is focused. The browser does not paint a minimized window, so a capture needs one that is on screen: by default the tool un-minimizes and raises the target window, which takes focus (the operator can set GH_ROUTER_BROWSER_WINDOW_POLICY=restore to un-minimize without taking focus, or =deny to leave window state untouched and fail instead). If a capture still cannot produce a frame it fails fast with a named code rather than hanging. WINDOW_MINIMIZED and CAPTURE_STALLED mean the window is not visible (minimized, fully covered, on another virtual desktop, or a locked session) and will keep failing until that changes, so make the window visible instead of retrying; TARGET_CHANGED and QUEUE_BUSY mean another tab switch or capture got in the way and a plain retry is the right response. If a capture is rejected for exceeding a model's image-size limit, the most reliable lever is a smaller browser window; PNG is usually SMALLER than JPEG for ordinary UI and text pages, so switching format is not a dependable way to shrink one. JPEG plus a low quality helps mainly for photographic or dense-colour content. Use screenshot for visual layout, canvas, SVG, maps, or image-only regions; prefer browser_observe when page text and actionable state are enough.",
|
|
19887
19959
|
inputSchema: {
|
|
19888
19960
|
type: "object",
|
|
19889
19961
|
required: ["tabId"],
|
|
@@ -33694,4 +33766,4 @@ function enumerateInjectedMcpToolNames(groupKeys, opts = {}) {
|
|
|
33694
33766
|
//#endregion
|
|
33695
33767
|
export { scoutModel as $, ADVISOR_INTERNAL_TOOL_NAME as A, UPSTREAM_FETCH_TIMEOUT_MS as At, relayAnthropicStream as B, buildToolbeltAwareness as C, shouldUseInsecureTls as Ct, TOOLBELT_TOOLS$1 as D, DEFAULT_CODEX_MODEL as Dt, vscodeRipgrepPath as E, DEFAULT_CLAUDE_MODEL_FALLBACKS as Et, buildAnthropicErrorEvent as F, brainstormModel as G, handleMcpPost as H, buildOpenAIErrorEvent as I, browserToolsEnabled as J, browseAgentEnabled as K, isControllerClosedError as L, buildAdvisorStream as M, generateRandomPort as Mt, injectAdvisorTool as N, pickClaudeDefault as Nt, assetFor as O, DEFAULT_CODEX_MODEL_FALLBACKS as Ot, isAdvisorRequested as P, withInstallLock as Pt, reviewerModel as Q, logStreamError as R, availableToolCommands as S, DEFINITION_OF_GREATNESS as St, toolbeltSkipSet as T, toolbeltPathOverride as Tt, agentToolsEnabled as U, handleMcpDelete as V, artifactToolsEnabled as W, geminiAvailable as X, fleetToolsEnabled as Y, nativeSubagentModel as Z, appendPlanReminder as _, provisionAndIndexColbert as _t, buildPeerAwarenessSnippet as a, createMessages as at, runWorkerAgent as b, warmTreeSitterPool as bt, personasFor as c, resolveMcpToolTimeoutMs as ct, EXPLORE_DEFAULT_MODEL as d, createChatCompletions as dt, scribeModel as et, EXPLORE_DEFAULT_THINKING as f, MAX_RESPONSE_BODY_BYTES as ft, TEST_DEFAULT_MODEL as g, hasSupportedBrowserInstalled as gt, REVIEW_DEFAULT_MODEL as h, provisionBrowserAssets as ht, buildAgentPrompt as i, countTokens as it, ADVISOR_TOOL_INSTRUCTIONS as j, UPSTREAM_INACTIVITY_TIMEOUT_MS as jt, searchWeb as k, DEFAULT_PORT as kt, BROWSE_DEFAULT_MODEL as l, pickEndpoint as lt, PLAN_DEFAULT_MODEL as m, parseJsonOrDiagnose as mt, MCP_GROUPS as n, workerToolsEnabled as nt, buildPeerAwarenessSummary as o, getTokenCount as ot, IMPLEMENT_DEFAULT_MODEL as p, readResponseBodyCapped as pt, browserCompoundToolsEnabled as q, assertMcpToolSurfaceConsistent as r, shimDefaultsToXhigh as rt, enumerateInjectedMcpToolNames as s, assembleResponsesPayload as st, GROUP_META as t, standInToolEnabled as tt, DEFAULT_MODEL as u, createResponses as ut, resolveModeDefaults as v, extractTarGzMember as vt, toolbeltEnabled as w, collapsePathKeys as wt, buildEnv as x, CONDENSED_OPERATING_SEQUENCE as xt, resolveWorkerRunOpts as y, extractZipMember as yt, readIteratorWithTimeout as z };
|
|
33696
33768
|
|
|
33697
|
-
//# sourceMappingURL=peer-mcp-personas-
|
|
33769
|
+
//# sourceMappingURL=peer-mcp-personas-BPl6_V2A.js.map
|