github-router 0.3.175 → 0.3.176
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/README.md +5 -5
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/{engine-cUomEg92.js → engine-BWoDQ-3C.js} +1 -1
- package/dist/main.js +22 -21
- package/dist/main.js.map +1 -1
- package/dist/{peer-mcp-personas-BCGYWok0.js → peer-mcp-personas-BKkdfOyK.js} +78 -52
- package/dist/peer-mcp-personas-BKkdfOyK.js.map +1 -0
- package/package.json +1 -1
- package/dist/peer-mcp-personas-BCGYWok0.js.map +0 -1
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ Each persona is exposed both as a Claude Code subagent (callable via the `Task`
|
|
|
83
83
|
|
|
84
84
|
| Subagent | Model | Endpoint | Effort tiers (default) |
|
|
85
85
|
|---|---|---|---|
|
|
86
|
-
| `codex-critic` | gpt-5.
|
|
86
|
+
| `codex-critic` | gpt-5.6-sol | `/v1/responses` | low \| medium \| high \| xhigh (xhigh) |
|
|
87
87
|
| `codex-reviewer` | gpt-5.3-codex | `/v1/responses` | low \| medium \| high \| xhigh (xhigh) |
|
|
88
88
|
| `gemini-reviewer` | gemini-3.1-pro-preview | `/v1/chat/completions` | low \| medium \| high (high) |
|
|
89
89
|
| `opus-critic` | claude-opus-4-6 | `/v1/messages` | low \| medium \| high (high) |
|
|
@@ -116,7 +116,7 @@ The fastest path is the `codex` subcommand — it boots the proxy on a random po
|
|
|
116
116
|
npx github-router@latest codex
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
-
Defaults to `gpt-5.
|
|
119
|
+
Defaults to `gpt-5.6-sol`; falls back to `gpt-5.5` → `gpt-5.4` → `gpt-5.3-codex` → `gpt-5.2-codex` if your Copilot tier doesn't expose 5.6-sol yet. Override with `-m`:
|
|
120
120
|
|
|
121
121
|
```sh
|
|
122
122
|
npx github-router@latest codex -m gpt-5.3-codex
|
|
@@ -129,7 +129,7 @@ npx github-router@latest start --codex # interactive launch-command generator
|
|
|
129
129
|
# — or set env vars yourself —
|
|
130
130
|
export OPENAI_BASE_URL="http://localhost:8787/v1"
|
|
131
131
|
export OPENAI_API_KEY="dummy"
|
|
132
|
-
codex --full-auto -m gpt-5.
|
|
132
|
+
codex --full-auto -m gpt-5.6-sol
|
|
133
133
|
```
|
|
134
134
|
|
|
135
135
|
---
|
|
@@ -168,7 +168,7 @@ Anthropic endpoints are only available under `/v1/messages`.
|
|
|
168
168
|
| Model | /chat/completions | /responses | /v1/messages |
|
|
169
169
|
|---|---|---|---|
|
|
170
170
|
| gpt-4.1, gpt-4o | Yes | Yes | No |
|
|
171
|
-
| gpt-5.5, gpt-5.4 | No | Yes | No |
|
|
171
|
+
| gpt-5.6-sol, gpt-5.5, gpt-5.4 | No | Yes | No |
|
|
172
172
|
| gpt-5.3-codex, gpt-5.2-codex | No | Yes | No |
|
|
173
173
|
| claude-opus-4.8 (1M context as the single base slug) | Yes | No | Yes |
|
|
174
174
|
| claude-opus-4.7-1m-internal (enterprise), claude-opus-4.7 | Yes | No | Yes |
|
|
@@ -237,7 +237,7 @@ github-router debug Print diagnostic info
|
|
|
237
237
|
The `claude` and `codex` subcommands accept all the shared flags below plus `-m`/`--model` to override the default model. Default models live in `src/lib/port.ts`:
|
|
238
238
|
|
|
239
239
|
- `claude` → `claude-opus-4-8` (Anthropic dashed slug for UI compatibility; the proxy translates to Copilot's `claude-opus-4.8` — the single base slug already advertises 1M context via `max_context_window_tokens`, so no `-1m` sibling exists). Major.minor fallback chain: `claude-opus-4-7` → `claude-opus-4-6` → `claude-opus-4-5`.
|
|
240
|
-
- `codex` → `gpt-5.5` → `gpt-5.4` → `gpt-5.3-codex` → `gpt-5.2-codex`
|
|
240
|
+
- `codex` → `gpt-5.6-sol` → `gpt-5.5` → `gpt-5.4` → `gpt-5.3-codex` → `gpt-5.2-codex`
|
|
241
241
|
|
|
242
242
|
Fallback chains fire only on the implicit-default path; explicit `-m`/`--model` is always respected as-is.
|
|
243
243
|
|
|
@@ -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.
|
|
5
|
+
"version": "0.3.176",
|
|
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 withNoOutputRetry, F as IMPLEMENT_DEFAULT_MODEL, I as PLAN_DEFAULT_MODEL, L as REVIEW_DEFAULT_MODEL, M as BROWSE_DEFAULT_MODEL, N as DEFAULT_MODEL, P as EXPLORE_DEFAULT_MODEL, R as appendPlanReminder, z as runWorkerAgent } from "./peer-mcp-personas-
|
|
1
|
+
import { B as withNoOutputRetry, F as IMPLEMENT_DEFAULT_MODEL, I as PLAN_DEFAULT_MODEL, L as REVIEW_DEFAULT_MODEL, M as BROWSE_DEFAULT_MODEL, N as DEFAULT_MODEL, P as EXPLORE_DEFAULT_MODEL, R as appendPlanReminder, z as runWorkerAgent } from "./peer-mcp-personas-BKkdfOyK.js";
|
|
2
2
|
import "./paths-CTlT1nTo.js";
|
|
3
3
|
import "./lifecycle-ChPBRt6K.js";
|
|
4
4
|
import "./lifecycle-BUXxiltc.js";
|
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { $ as isAdvisorRequested, $t as cacheModels, A as liveExec, At as hasSupportedBrowserInstalled, Bt as DEFAULT_CODEX_MODEL_FALLBACKS, C as fileReviewDebounce, Ct as pickEndpoint, D as stopGateEnabledForRepo, Dt as readResponseBodyCapped, E as repoRoot, Et as MAX_RESPONSE_BODY_BYTES, Ft as ArtifactClient, G as vscodeRipgrepPath, Gt as pickClaudeDefault, H as buildToolbeltAwareness, Ht as UPSTREAM_FETCH_TIMEOUT_MS, It as collapsePathKeys, J as searchWeb, Jt as setupCopilotToken, K as TOOLBELT_TOOLS, Kt as getPackageVersion, Lt as toolbeltPathOverride, Mt as extractTarGzMember, Nt as extractZipMember, O as stopReviewStateDir, Ot as parseJsonOrDiagnose, Pt as shouldUseInsecureTls, Q as injectAdvisorTool, Qt as cacheCopilotVersion, Rt as DEFAULT_CLAUDE_MODEL_FALLBACKS, S as fileLastPromptStore, St as resolveMcpToolTimeoutMs, T as repoFingerprint, Tt as createChatCompletions, U as toolbeltEnabled, Ut as UPSTREAM_INACTIVITY_TIMEOUT_MS, V as availableToolCommands, Vt as DEFAULT_PORT, W as toolbeltSkipSet, Wt as generateRandomPort, X as ADVISOR_TOOL_INSTRUCTIONS, Xt as setupGitHubToken, Y as ADVISOR_INTERNAL_TOOL_NAME, Yt as setupGitHubAgentToken, Z as buildAdvisorStream, Zt as tryRefreshAndRetry, _ as stopGateId, _t as workerToolsEnabled, a as buildPeerAwarenessSnippet, an as sleep, at as relayAnthropicStream, b as fileBaselineStore, bt as getTokenCount, c as buildArtifactOpenHookCommand, cn as HTTPError, ct as agentToolsEnabled, d as captureLaunchBaseline, dn as copilotBaseUrl, dt as browserCompoundToolsEnabled, en as cacheVSCodeVersion, et as buildAnthropicErrorEvent, f as decideStopHook, fn as copilotHeaders, ft as browserToolsEnabled, g as stopGateDisabled, gt as standInToolEnabled, h as launchBaselineKey, ht as implementerSubagentModel, i as buildAgentPrompt, in as resolveModel, it as readIteratorWithTimeout, j as resolveSealedGate, jt as provisionAndIndexColbert, k as trustRepo, kt as provisionBrowserAssets, l as buildSessionBindHookCommand, ln as forwardError, lt as artifactToolsEnabled, m as injectStopHookIntoSettingsFile, mn as state, mt as geminiAvailable, n as MCP_GROUPS, nn as isNullish, nt as isControllerClosedError, o as buildPeerAwarenessSummary, on as getModels, ot as handleMcpDelete, p as fileBlockBudget, pn as githubHeaders, pt as fleetToolsEnabled, q as assetFor, qt as withInstallLock, r as assertMcpToolSurfaceConsistent, rn as resolveCodexModel, rt as logStreamError, s as personasFor, sn as fetchWithTransientRetry, st as handleMcpPost, t as GROUP_META, tn as filterBetaHeader, tt as buildOpenAIErrorEvent, u as buildStopHookCommand, un as GITHUB_API_BASE_URL, ut as browseAgentEnabled, v as stopGatePlanMode, vt as countTokens, w as isSubagentContext, wt as createResponses, x as fileFindingsStore, xt as assembleResponsesPayload, y as stopReviewEnabled, yt as createMessages, zt as DEFAULT_CODEX_MODEL } from "./peer-mcp-personas-
|
|
2
|
+
import { $ as isAdvisorRequested, $t as cacheModels, A as liveExec, At as hasSupportedBrowserInstalled, Bt as DEFAULT_CODEX_MODEL_FALLBACKS, C as fileReviewDebounce, Ct as pickEndpoint, D as stopGateEnabledForRepo, Dt as readResponseBodyCapped, E as repoRoot, Et as MAX_RESPONSE_BODY_BYTES, Ft as ArtifactClient, G as vscodeRipgrepPath, Gt as pickClaudeDefault, H as buildToolbeltAwareness, Ht as UPSTREAM_FETCH_TIMEOUT_MS, It as collapsePathKeys, J as searchWeb, Jt as setupCopilotToken, K as TOOLBELT_TOOLS, Kt as getPackageVersion, Lt as toolbeltPathOverride, Mt as extractTarGzMember, Nt as extractZipMember, O as stopReviewStateDir, Ot as parseJsonOrDiagnose, Pt as shouldUseInsecureTls, Q as injectAdvisorTool, Qt as cacheCopilotVersion, Rt as DEFAULT_CLAUDE_MODEL_FALLBACKS, S as fileLastPromptStore, St as resolveMcpToolTimeoutMs, T as repoFingerprint, Tt as createChatCompletions, U as toolbeltEnabled, Ut as UPSTREAM_INACTIVITY_TIMEOUT_MS, V as availableToolCommands, Vt as DEFAULT_PORT, W as toolbeltSkipSet, Wt as generateRandomPort, X as ADVISOR_TOOL_INSTRUCTIONS, Xt as setupGitHubToken, Y as ADVISOR_INTERNAL_TOOL_NAME, Yt as setupGitHubAgentToken, Z as buildAdvisorStream, Zt as tryRefreshAndRetry, _ as stopGateId, _t as workerToolsEnabled, a as buildPeerAwarenessSnippet, an as sleep, at as relayAnthropicStream, b as fileBaselineStore, bt as getTokenCount, c as buildArtifactOpenHookCommand, cn as HTTPError, ct as agentToolsEnabled, d as captureLaunchBaseline, dn as copilotBaseUrl, dt as browserCompoundToolsEnabled, en as cacheVSCodeVersion, et as buildAnthropicErrorEvent, f as decideStopHook, fn as copilotHeaders, ft as browserToolsEnabled, g as stopGateDisabled, gt as standInToolEnabled, h as launchBaselineKey, ht as implementerSubagentModel, i as buildAgentPrompt, in as resolveModel, it as readIteratorWithTimeout, j as resolveSealedGate, jt as provisionAndIndexColbert, k as trustRepo, kt as provisionBrowserAssets, l as buildSessionBindHookCommand, ln as forwardError, lt as artifactToolsEnabled, m as injectStopHookIntoSettingsFile, mn as state, mt as geminiAvailable, n as MCP_GROUPS, nn as isNullish, nt as isControllerClosedError, o as buildPeerAwarenessSummary, on as getModels, ot as handleMcpDelete, p as fileBlockBudget, pn as githubHeaders, pt as fleetToolsEnabled, q as assetFor, qt as withInstallLock, r as assertMcpToolSurfaceConsistent, rn as resolveCodexModel, rt as logStreamError, s as personasFor, sn as fetchWithTransientRetry, st as handleMcpPost, t as GROUP_META, tn as filterBetaHeader, tt as buildOpenAIErrorEvent, u as buildStopHookCommand, un as GITHUB_API_BASE_URL, ut as browseAgentEnabled, v as stopGatePlanMode, vt as countTokens, w as isSubagentContext, wt as createResponses, x as fileFindingsStore, xt as assembleResponsesPayload, y as stopReviewEnabled, yt as createMessages, zt as DEFAULT_CODEX_MODEL } from "./peer-mcp-personas-BKkdfOyK.js";
|
|
3
3
|
import { a as removeOwnClaudeConfigMirror, i as isUnderClaudeConfigMirror, l as writeArtifactCredsToMirror, n as ensureClaudeConfigMirror, r as ensurePaths, t as PATHS, u as writeRuntimeFileSecure } from "./paths-CTlT1nTo.js";
|
|
4
4
|
import { c as killManagedTree, d as runCommandCapture, f as runCommandVoid, l as parseBoolEnv, s as killChildProcessTree, u as resolveExecutable } from "./lifecycle-ChPBRt6K.js";
|
|
5
5
|
import { a as sweepRegistry } from "./lifecycle-BUXxiltc.js";
|
|
@@ -1137,16 +1137,16 @@ function buildCoordinatorAgent(opts) {
|
|
|
1137
1137
|
"",
|
|
1138
1138
|
"The lead's brief will include an artifact (plan, design, diff, or code) and a goal (e.g. 'review before exit-plan', 'review the commit I just made', 'cross-check codex-critic's verdict'). Pick the right peers for the artifact type:",
|
|
1139
1139
|
"",
|
|
1140
|
-
"- **Plan / design / architecture choice** → fan out to `codex-critic` (gpt-5.
|
|
1140
|
+
"- **Plan / design / architecture choice** → fan out to `codex-critic` (gpt-5.6-sol, strongest reasoning, cross-lab)" + (opts.geminiAvailable ? " AND `gemini-critic` (third-lab triangulation, strong on formal reasoning) in parallel" : "") + ". codex-reviewer is the wrong tool for plans (it's a code-specialist, not an architecture critic).",
|
|
1141
1141
|
"- **Concrete diff or single file** → fan out to `codex-reviewer` (gpt-5.3-codex, line-level code specialist, fastest at ~16s)" + (opts.geminiAvailable ? " AND `gemini-reviewer` (gemini-3.1-pro, second-lab line-level review)" : "") + (opts.geminiAvailable ? " AND `gemini-critic` for cross-lab triangulation" : "") + ". For very small changes (<20 lines), one `codex-reviewer` call is enough.",
|
|
1142
|
-
"- **Large artifact** → the only peers that take a large artifact WHOLE are `codex-critic` (gpt-5.
|
|
1142
|
+
"- **Large artifact** → the only peers that take a large artifact WHOLE are `codex-critic` (gpt-5.6-sol, ≈1M-token input window) and `opus-critic` (Opus-4.7-1M, ≈936K-token input on enterprise catalogs; ≈168K otherwise). Route the full artifact to those for cross-lab coverage. `codex-reviewer` (≈272K) and `gemini-critic` (≈136K) have small windows — see Decomposition below: never summarize or downsize the request to squeeze a large artifact into a small-window peer.",
|
|
1143
1143
|
"- **Formal reasoning, proofs, or invariants** → prefer `gemini-critic`" + (opts.geminiAvailable ? " (gemini-3.1-pro, strong on math and formally-stated properties)" : " (NOT REGISTERED in this session — gemini-3.x not in catalog)") + ".",
|
|
1144
1144
|
"- **Tie-breaker after codex-critic has weighed in** → call `gemini-critic`" + (opts.geminiAvailable ? "" : " (NOT REGISTERED in this session)") + " or `opus-critic` with the artifact AND codex-critic's verdict for cross-check.",
|
|
1145
1145
|
"- **Fast sanity check** → `opus-critic` (~22s, same lab as lead but fresh context — catches confabulation and motivated reasoning).",
|
|
1146
1146
|
"",
|
|
1147
1147
|
"## Decomposition for large artifacts",
|
|
1148
1148
|
"",
|
|
1149
|
-
"Route by the peer's real PROMPT WINDOW (input tokens): `codex-critic` gpt-5.
|
|
1149
|
+
"Route by the peer's real PROMPT WINDOW (input tokens): `codex-critic` gpt-5.6-sol ≈1M · `opus-critic` Opus-4.7-1M ≈936K (enterprise catalogs; ≈168K otherwise) · `codex-reviewer` gpt-5.3-codex ≈272K · `gemini-critic` gemini-3.1-pro ≈136K. The proxy REJECTS (with an actionable message) any single call whose brief exceeds the target peer's window — it will NOT silently truncate, because dropping lines from a review artifact is worse than a clear error. So: send the full artifact only to peers whose window fits it (large artifacts → `codex-critic` and/or `opus-critic`). When a peer's window is too small (commonly `gemini-critic` at ≈136K, or `codex-reviewer` at ≈272K), do NOT summarize or downsize the request to include it — either skip that peer, or split the artifact into 2-4 logical batches BY CONCERN (not by raw size — semantic batches give better per-batch reviews) that each fit, and call in parallel. Use the big-window peers for the whole and reserve a small-window peer like gemini for the concerns it can actually hold. The proxy's MCP cap allows up to 8 in-flight calls. Aggregate findings yourself before reporting back. (Separately, on the JSON transport a per-effort `predictedTooLong` byte cap still guards the ~60s tools/call timeout for non-SSE clients; Claude Code uses SSE, which streams with heartbeats and isn't subject to that cap.)",
|
|
1150
1150
|
"",
|
|
1151
1151
|
"## Aggregation contract",
|
|
1152
1152
|
"",
|
|
@@ -1206,7 +1206,7 @@ function buildPeerAgentDefinitions(opts) {
|
|
|
1206
1206
|
geminiAvailable: opts.geminiAvailable
|
|
1207
1207
|
});
|
|
1208
1208
|
if (opts.implementerModel && opts.implementerModel.length > 0) out.implementer = {
|
|
1209
|
-
description:
|
|
1209
|
+
description: `Bounded implementation subagent running ${opts.implementerModel} (strong non-Claude coder, high reasoning). Use for well-scoped coding tasks — edits, small features, fixes — you want implemented in an integrated subagent. Model is overridable at spawn.`,
|
|
1210
1210
|
prompt: "You are a bounded implementation subagent for well-scoped coding tasks. Implement the requested change surgically, matching the surrounding code style and minimizing unrelated churn. Use the dedicated Edit/Write/Read tools for file changes and Grep/Glob for search; reserve Bash for running builds, tests, and git — do not shell out (sed/awk/python/here-docs) to read or edit files. Verify with the project's build or tests where applicable. Do the work yourself — do not spawn further subagents. Report exactly what changed and any risks.",
|
|
1211
1211
|
model: opts.implementerModel
|
|
1212
1212
|
};
|
|
@@ -1787,7 +1787,7 @@ async function callMcpTool(opts) {
|
|
|
1787
1787
|
};
|
|
1788
1788
|
}
|
|
1789
1789
|
/**
|
|
1790
|
-
* One non-streaming gpt-5.
|
|
1790
|
+
* One non-streaming gpt-5.6-sol (or any model id) inference via `/v1/responses`.
|
|
1791
1791
|
* Returns the assistant text (possibly empty). Throws on transport/HTTP/parse
|
|
1792
1792
|
* failure. `effort` maps to the Responses `reasoning.effort` knob.
|
|
1793
1793
|
*/
|
|
@@ -2556,7 +2556,7 @@ async function discoverGateCommands(cwd, opts) {
|
|
|
2556
2556
|
if (files.length === 0) return null;
|
|
2557
2557
|
let result;
|
|
2558
2558
|
try {
|
|
2559
|
-
const { runWorkerAgent } = await import("./engine-
|
|
2559
|
+
const { runWorkerAgent } = await import("./engine-BWoDQ-3C.js");
|
|
2560
2560
|
result = await runWorkerAgent({
|
|
2561
2561
|
mode: "explore",
|
|
2562
2562
|
workspace: root,
|
|
@@ -2622,14 +2622,14 @@ function decidePromptSubmit(input) {
|
|
|
2622
2622
|
* concluding. Mirrors the v1 advisory tone: additive, never blocking.
|
|
2623
2623
|
*/
|
|
2624
2624
|
const PROMPT_SEARCH_TIP = "TIP (advisory): when this task needs code context, search lexical + semantic in parallel — one `mcp__search__code` call with mode:\"lexical\" and one with mode:\"semantic\", issued in the same turn — before concluding.";
|
|
2625
|
-
/** System prompt for the single gpt-5.
|
|
2625
|
+
/** System prompt for the single gpt-5.6-sol scope/goal inference. Steers a SHORT,
|
|
2626
2626
|
* user-derived (not invented) advisory note grounded in the search results. */
|
|
2627
2627
|
const PROMPT_SCOPE_SYSTEM = "You are a scoping assistant for a coding agent about to act on a user's request. You are given the user's request and the results of a lexical + semantic code search over the relevant repository. Produce a SHORT advisory note (<= 120 words), plain text only:\n1. SCOPE: one line — is this trivial, focused (one area), or large/cross-cutting — grounded in what the search surfaced (reference the most relevant file(s) by name).\n2. GOAL: restate the user's OWN ask as a single measurable objective, in THEIR terms. Do NOT invent new requirements or acceptance criteria beyond what they asked.\n3. Only if the task is large/cross-cutting, add a final line: \"Consider /gh-research first to saturate understanding, then /gh-orchestrate to compose a floor-raising workflow.\" Omit it for a focused or trivial task.\nThis is advisory — the agent decides whether to follow it. Be concrete and concise; no preamble.";
|
|
2628
2628
|
/** Max chars of each search-result blob fed into the scope inference. */
|
|
2629
2629
|
const SEARCH_CONTEXT_CAP = 6 * 1024;
|
|
2630
2630
|
/** Wrap the prior-turn review findings in an explicitly NON-AUTHORITATIVE frame. */
|
|
2631
2631
|
function framePendingFindings(findings) {
|
|
2632
|
-
return "ADVISORY — independent review of your PREVIOUS change (NON-AUTHORITATIVE): an independent gpt-5.
|
|
2632
|
+
return "ADVISORY — independent review of your PREVIOUS change (NON-AUTHORITATIVE): an independent gpt-5.6-sol reviewer flagged the following. Evaluate each on its merits — fix the real ones, and ignore any wrong one with a one-line reason. You are NOT obligated to act on these.\n" + findings.trim();
|
|
2633
2633
|
}
|
|
2634
2634
|
function joinSections(sections) {
|
|
2635
2635
|
return sections.map((s) => s.trim()).filter((s) => s.length > 0).join("\n\n");
|
|
@@ -2643,7 +2643,7 @@ function joinSections(sections) {
|
|
|
2643
2643
|
* - subagent/teammate -> empty (top-level only, like v1).
|
|
2644
2644
|
* - findings -> always surfaced (+ cleared) regardless of triviality.
|
|
2645
2645
|
* - trivial prompt -> findings only (no search tip, no model call).
|
|
2646
|
-
* - substantive prompt -> static search tip + parallel lexical+semantic search -> ONE gpt-5.
|
|
2646
|
+
* - substantive prompt -> static search tip + parallel lexical+semantic search -> ONE gpt-5.6-sol call
|
|
2647
2647
|
* -> grounded scope/goal note. Fail-open to PROMPT_STEER_GOAL.
|
|
2648
2648
|
* - steerEnabled=false -> findings only (no goal/tip).
|
|
2649
2649
|
*/
|
|
@@ -4716,7 +4716,7 @@ function initProxyFromEnv() {
|
|
|
4716
4716
|
//#endregion
|
|
4717
4717
|
//#region package.json
|
|
4718
4718
|
var name = "github-router";
|
|
4719
|
-
var version$1 = "0.3.
|
|
4719
|
+
var version$1 = "0.3.176";
|
|
4720
4720
|
|
|
4721
4721
|
//#endregion
|
|
4722
4722
|
//#region src/lib/approval.ts
|
|
@@ -8062,6 +8062,10 @@ function parseSharedArgs(args) {
|
|
|
8062
8062
|
* 1M/400k window, never overflows). See `seedGatewayModelCache`.
|
|
8063
8063
|
*/
|
|
8064
8064
|
const NATIVE_NON_CLAUDE_MODELS = [
|
|
8065
|
+
{
|
|
8066
|
+
id: "gpt-5.6-sol",
|
|
8067
|
+
displayName: "GPT-5.6 Sol"
|
|
8068
|
+
},
|
|
8065
8069
|
{
|
|
8066
8070
|
id: "gpt-5.5",
|
|
8067
8071
|
displayName: "GPT-5.5"
|
|
@@ -8784,13 +8788,10 @@ const codex = defineCommand({
|
|
|
8784
8788
|
if (codexModel !== requestedModel) consola.info(`Model "${requestedModel}" resolved to "${codexModel}"`);
|
|
8785
8789
|
if (usingDefault && state.models) {
|
|
8786
8790
|
const inCache = (id) => state.models?.data.some((m) => m.id === id) ?? false;
|
|
8787
|
-
|
|
8788
|
-
|
|
8789
|
-
if (
|
|
8790
|
-
|
|
8791
|
-
codexModel = resolved;
|
|
8792
|
-
break;
|
|
8793
|
-
}
|
|
8791
|
+
const firstPresent = [DEFAULT_CODEX_MODEL, ...DEFAULT_CODEX_MODEL_FALLBACKS].map((id) => resolveModel(id)).find((id) => inCache(id));
|
|
8792
|
+
if (firstPresent) {
|
|
8793
|
+
if (firstPresent !== codexModel) consola.info(`Default model "${DEFAULT_CODEX_MODEL}" not in your Copilot model list; falling back to "${firstPresent}".`);
|
|
8794
|
+
codexModel = firstPresent;
|
|
8794
8795
|
}
|
|
8795
8796
|
}
|
|
8796
8797
|
const modelEntry = state.models?.data.find((m) => m.id === codexModel);
|
|
@@ -8955,7 +8956,7 @@ const internalPromptSubmit = defineCommand({
|
|
|
8955
8956
|
},
|
|
8956
8957
|
infer: (system, user, signal) => callInference({
|
|
8957
8958
|
serverUrl: runtime.serverUrl,
|
|
8958
|
-
model: "gpt-5.
|
|
8959
|
+
model: "gpt-5.6-sol",
|
|
8959
8960
|
instructions: system,
|
|
8960
8961
|
input: user,
|
|
8961
8962
|
effort: "low",
|
|
@@ -9688,7 +9689,7 @@ THE DIFF:
|
|
|
9688
9689
|
const internalStopReview = defineCommand({
|
|
9689
9690
|
meta: {
|
|
9690
9691
|
name: "internal-stop-review",
|
|
9691
|
-
description: "Internal: the detached, advisory background reviewer. Reads a JSON payload on stdin, runs a read-only gpt-5.
|
|
9692
|
+
description: "Internal: the detached, advisory background reviewer. Reads a JSON payload on stdin, runs a read-only gpt-5.6-sol review of the working tree against the user's ask, and writes advisory findings for the next prompt to surface. Never blocks anything."
|
|
9692
9693
|
},
|
|
9693
9694
|
async run() {
|
|
9694
9695
|
try {
|
|
@@ -9717,7 +9718,7 @@ const internalStopReview = defineCommand({
|
|
|
9717
9718
|
transcriptPath: typeof payload.transcript_path === "string" ? payload.transcript_path : ""
|
|
9718
9719
|
}),
|
|
9719
9720
|
workspace: cwd,
|
|
9720
|
-
model: "gpt-5.
|
|
9721
|
+
model: "gpt-5.6-sol",
|
|
9721
9722
|
thinking: "high"
|
|
9722
9723
|
},
|
|
9723
9724
|
timeoutMs: REVIEW_TIMEOUT_MS
|