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
|
@@ -1072,13 +1072,15 @@ function pickClaudeDefault(opusFamily = DEFAULT_OPUS_FAMILY) {
|
|
|
1072
1072
|
return bareSlug;
|
|
1073
1073
|
}
|
|
1074
1074
|
/**
|
|
1075
|
-
* Default model for `github-router codex`. `gpt-5.
|
|
1076
|
-
* `/responses` model; the fallback chain
|
|
1077
|
-
*
|
|
1078
|
-
* "best available `/responses` model"
|
|
1075
|
+
* Default model for `github-router codex`. `gpt-5.6-sol` is the flagship
|
|
1076
|
+
* `/responses` model; the fallback chain (led by `gpt-5.5`) handles older
|
|
1077
|
+
* Copilot tiers or a rollout-lag window where sol hasn't appeared yet.
|
|
1078
|
+
* `resolveCodexModel` provides a final "best available `/responses` model"
|
|
1079
|
+
* safety net beyond this list.
|
|
1079
1080
|
*/
|
|
1080
|
-
const DEFAULT_CODEX_MODEL = "gpt-5.
|
|
1081
|
+
const DEFAULT_CODEX_MODEL = "gpt-5.6-sol";
|
|
1081
1082
|
const DEFAULT_CODEX_MODEL_FALLBACKS = [
|
|
1083
|
+
"gpt-5.5",
|
|
1082
1084
|
"gpt-5.4",
|
|
1083
1085
|
"gpt-5.3-codex",
|
|
1084
1086
|
"gpt-5.2-codex"
|
|
@@ -6079,10 +6081,12 @@ const T0_MODEL_CHAIN = [
|
|
|
6079
6081
|
const T1_MODEL_CHAIN = [
|
|
6080
6082
|
"gpt-5.4-mini",
|
|
6081
6083
|
"gpt-5-mini",
|
|
6084
|
+
"gpt-5.6-sol",
|
|
6082
6085
|
"gpt-5.5",
|
|
6083
6086
|
"gemini-3.1-pro-preview"
|
|
6084
6087
|
];
|
|
6085
6088
|
const T2_MODEL_CHAIN = [
|
|
6089
|
+
"gpt-5.6-sol",
|
|
6086
6090
|
"gpt-5.5",
|
|
6087
6091
|
"claude-opus-4.8",
|
|
6088
6092
|
"gemini-3.1-pro-preview"
|
|
@@ -6984,7 +6988,7 @@ async function observeUnit(unit) {
|
|
|
6984
6988
|
* present — an explicitly-chosen model that Copilot can't serve THROWS rather
|
|
6985
6989
|
* than being silently swapped for a fallback (a silent class-switch could send
|
|
6986
6990
|
* the task to a weaker/wrong model the operator never asked for).
|
|
6987
|
-
* - `chosen` unset: default to {@link DEFAULT_CODEX_MODEL} (gpt-5.
|
|
6991
|
+
* - `chosen` unset: default to {@link DEFAULT_CODEX_MODEL} (gpt-5.6-sol), walking
|
|
6988
6992
|
* {@link DEFAULT_CODEX_MODEL_FALLBACKS} only when a catalog says the preferred
|
|
6989
6993
|
* default is absent (older Copilot tiers).
|
|
6990
6994
|
*
|
|
@@ -9324,7 +9328,7 @@ function buildRoleAgent(role) {
|
|
|
9324
9328
|
"Verification commands and outcomes",
|
|
9325
9329
|
"Risks and follow-ups"
|
|
9326
9330
|
],
|
|
9327
|
-
model: "gpt-5.
|
|
9331
|
+
model: "gpt-5.6-sol"
|
|
9328
9332
|
},
|
|
9329
9333
|
reviewer: {
|
|
9330
9334
|
description: "Adversarial code reviewer for concrete diffs; reports real findings with severity and file:line.",
|
|
@@ -9404,7 +9408,7 @@ function buildRoleAgent(role) {
|
|
|
9404
9408
|
"Commands run and outcomes",
|
|
9405
9409
|
"Failures that require implementation work"
|
|
9406
9410
|
],
|
|
9407
|
-
model: "gpt-5.
|
|
9411
|
+
model: "gpt-5.6-sol"
|
|
9408
9412
|
}
|
|
9409
9413
|
}[role];
|
|
9410
9414
|
const modelLine = spec.model === void 0 ? "" : `model: ${spec.model}\n`;
|
|
@@ -10469,7 +10473,7 @@ function createFirstMateTools(depsOverride = {}) {
|
|
|
10469
10473
|
acceptance_criteria: stringProp("User-blessed acceptance criteria for the mission."),
|
|
10470
10474
|
priority: numberProp("Optional numeric priority; higher values are handled by controller policy."),
|
|
10471
10475
|
house_rules: stringProp("Optional repository or operator constraints."),
|
|
10472
|
-
default_model: stringProp("Model the GitHub cloud coding agent uses for this mission's tasks; defaults to gpt-5.
|
|
10476
|
+
default_model: stringProp("Model the GitHub cloud coding agent uses for this mission's tasks; defaults to gpt-5.6-sol."),
|
|
10473
10477
|
plan_gate: enumProp(["hard", "soft"], "Plan-review gate. hard (default) requires the flow's review before build and re-plans on a rejecting review; soft auto-advances a passing plan review to build without human approval but escalates a rejecting review to a human."),
|
|
10474
10478
|
ci_required: boolProp("When true, refuse merge approval if the repository reports no CI for the PR head.")
|
|
10475
10479
|
}, [
|
|
@@ -23494,7 +23498,8 @@ async function countTokens(body, extraHeaders, callerSignal, retryTransient = fa
|
|
|
23494
23498
|
*
|
|
23495
23499
|
* Returns true iff Copilot's live catalog (`state.models?.data`) contains
|
|
23496
23500
|
* ALL THREE peer models the consensus protocol needs:
|
|
23497
|
-
* - `gpt-5.5`
|
|
23501
|
+
* - an OpenAI frontier model (`gpt-5.6-sol`, else `gpt-5.5` — see
|
|
23502
|
+
* `resolveOpenAiFrontier`)
|
|
23498
23503
|
* - `claude-opus-4-7` (opus_critic's model)
|
|
23499
23504
|
* - any `gemini-3.X.*pro` (gemini_critic's model family — matches the
|
|
23500
23505
|
* same regex `geminiAvailable()` uses, so the gate stays in sync if
|
|
@@ -23515,22 +23520,42 @@ function geminiAvailable(source = state) {
|
|
|
23515
23520
|
if (!models) return false;
|
|
23516
23521
|
return models.some((m) => /^gemini-3\..*pro/i.test(m.id));
|
|
23517
23522
|
}
|
|
23523
|
+
/**
|
|
23524
|
+
* OpenAI frontier reasoning models in preference order. `gpt-5.6-sol` is the
|
|
23525
|
+
* current default; `gpt-5.5` is retained as a fallback. Both share the same
|
|
23526
|
+
* `pro_plus/business/enterprise/max` restriction tier, so the fallback only
|
|
23527
|
+
* matters during a rollout-lag window where the newer slug hasn't yet appeared
|
|
23528
|
+
* in the account's catalog.
|
|
23529
|
+
*/
|
|
23530
|
+
const OPENAI_FRONTIER_MODELS = ["gpt-5.6-sol", "gpt-5.5"];
|
|
23531
|
+
/**
|
|
23532
|
+
* First available OpenAI frontier model in the live catalog (prefer
|
|
23533
|
+
* `gpt-5.6-sol`, fall back to `gpt-5.5`). Returns undefined when neither is
|
|
23534
|
+
* present. With `requireToolCalls`, only returns a model whose catalog entry
|
|
23535
|
+
* advertises `tool_calls`.
|
|
23536
|
+
*/
|
|
23537
|
+
function resolveOpenAiFrontier(opts) {
|
|
23538
|
+
const models = state.models?.data;
|
|
23539
|
+
if (!models) return void 0;
|
|
23540
|
+
for (const id of OPENAI_FRONTIER_MODELS) {
|
|
23541
|
+
const found = models.find((m) => m.id === id);
|
|
23542
|
+
if (!found) continue;
|
|
23543
|
+
if (opts?.requireToolCalls && found.capabilities?.supports?.tool_calls !== true) continue;
|
|
23544
|
+
return id;
|
|
23545
|
+
}
|
|
23546
|
+
}
|
|
23518
23547
|
function standInToolEnabled() {
|
|
23519
23548
|
const models = state.models?.data;
|
|
23520
23549
|
if (!models) return false;
|
|
23521
|
-
const
|
|
23550
|
+
const hasOpenAi = resolveOpenAiFrontier() != null;
|
|
23522
23551
|
const hasOpus = models.some((m) => m.id === "claude-opus-4-7" || m.id === "claude-opus-4.7");
|
|
23523
23552
|
const hasGeminiPro = geminiAvailable();
|
|
23524
|
-
return
|
|
23553
|
+
return hasOpenAi && hasOpus && hasGeminiPro;
|
|
23525
23554
|
}
|
|
23526
|
-
|
|
23527
|
-
|
|
23555
|
+
/** Return the native implementer subagent model iff it is live with tool calls.
|
|
23556
|
+
* Prefers `gpt-5.6-sol`, falls back to `gpt-5.5`. */
|
|
23528
23557
|
function implementerSubagentModel() {
|
|
23529
|
-
|
|
23530
|
-
if (!models) return void 0;
|
|
23531
|
-
const found = models.find((m) => m.id === IMPLEMENTER_SUBAGENT_MODEL);
|
|
23532
|
-
if (!found) return void 0;
|
|
23533
|
-
return found.capabilities?.supports?.tool_calls === true ? IMPLEMENTER_SUBAGENT_MODEL : void 0;
|
|
23558
|
+
return resolveOpenAiFrontier({ requireToolCalls: true });
|
|
23534
23559
|
}
|
|
23535
23560
|
/**
|
|
23536
23561
|
* Gate for the worker tools (`explore`, `review`, `implement`).
|
|
@@ -23542,7 +23567,7 @@ function implementerSubagentModel() {
|
|
|
23542
23567
|
* true`. The worker loop is function-calling; a model that can't
|
|
23543
23568
|
* emit tool_calls is unusable, so dormant-register (omit from
|
|
23544
23569
|
* `tools/list`) keeps the surface honest. (The implement default
|
|
23545
|
-
* `gpt-5.
|
|
23570
|
+
* `gpt-5.6-sol` is NOT gated here — if it's absent, implement calls
|
|
23546
23571
|
* surface a clean resolve error rather than disabling all worker
|
|
23547
23572
|
* tools, since explore/review still work.)
|
|
23548
23573
|
* 2. The operator hasn't set `GH_ROUTER_DISABLE_WORKER_TOOLS=1`
|
|
@@ -23801,7 +23826,7 @@ function checkAuth(c) {
|
|
|
23801
23826
|
/**
|
|
23802
23827
|
* The 1M-context Opus 4.6 variant (`claude-opus-4.6-1m`, `max_prompt_tokens`
|
|
23803
23828
|
* 936K). opus_critic prefers it so it can take large artifacts in one shot
|
|
23804
|
-
* (the whole point of pairing it with gpt-5.
|
|
23829
|
+
* (the whole point of pairing it with gpt-5.6-sol as the big-window peers);
|
|
23805
23830
|
* falls back to the 200K `claude-opus-4-6` when the catalog doesn't carry
|
|
23806
23831
|
* a 1M 4.6 slug. The regex is version-anchored to 4.6 AND requires a
|
|
23807
23832
|
* `-1m` suffix boundary (not a permissive `.*1m`), so it does NOT
|
|
@@ -24011,7 +24036,7 @@ async function predictedWindowOverflow(persona, prompt, context) {
|
|
|
24011
24036
|
}
|
|
24012
24037
|
if (tokens <= budget) return void 0;
|
|
24013
24038
|
const opusHint = OPUS_1M_RE.test(id) ? "" : " / `opus_critic` (Opus-4.7 1M ≈ 936K tokens, when the enterprise catalog carries it)";
|
|
24014
|
-
return `pre-flight rejected: this ${persona.toolNameHttp} brief is ≈${tokens} tokens, over the ${budget}-token budget for ${persona.model} (its ${maxPromptTokens}-token prompt window minus a ${PEER_PROMPT_TOKEN_RESERVE}-token framing reserve). Do NOT summarize or truncate the artifact to fit. Route the full artifact to a larger-window peer — \`codex_critic\` (gpt-5.
|
|
24039
|
+
return `pre-flight rejected: this ${persona.toolNameHttp} brief is ≈${tokens} tokens, over the ${budget}-token budget for ${persona.model} (its ${maxPromptTokens}-token prompt window minus a ${PEER_PROMPT_TOKEN_RESERVE}-token framing reserve). Do NOT summarize or truncate the artifact to fit. Route the full artifact to a larger-window peer — \`codex_critic\` (gpt-5.6-sol ≈ 1M tokens)${opusHint} — or split it into focused sub-calls BY CONCERN and call them in parallel, then aggregate.`;
|
|
24015
24040
|
}
|
|
24016
24041
|
/**
|
|
24017
24042
|
* JSON-path pre-flight predictedTooLong gate. Returns a JSON-RPC result
|
|
@@ -24070,7 +24095,7 @@ function jsonPathPreflightCap(body, scope) {
|
|
|
24070
24095
|
* the `stand_in` orchestrator in `src/lib/stand-in.ts` — can reuse the
|
|
24071
24096
|
* same per-endpoint request shaping without re-implementing it. The
|
|
24072
24097
|
* stand_in tool needs to drive its own per-round system prompts across
|
|
24073
|
-
* three concrete models (gpt-5.
|
|
24098
|
+
* three concrete models (gpt-5.6-sol, claude-opus-4-7, gemini-3.1-pro-preview),
|
|
24074
24099
|
* each on a different endpoint; doing that with a `PersonaSpec` would
|
|
24075
24100
|
* require either inventing throwaway personas per round or duplicating
|
|
24076
24101
|
* the dispatch switch.
|
|
@@ -24761,13 +24786,13 @@ const ADVISOR_CLIENT_TOOL_NAME = "advisor";
|
|
|
24761
24786
|
* times per session per cc-backup ADVISOR_TOOL_INSTRUCTIONS. */
|
|
24762
24787
|
const ADVISOR_MAX_TURNS = 16;
|
|
24763
24788
|
/** Default advisor model + reasoning effort. Per gemini-critic + user
|
|
24764
|
-
* direction: hardcode to a cross-lab model (gpt-5.
|
|
24789
|
+
* direction: hardcode to a cross-lab model (gpt-5.6-sol — Copilot's
|
|
24765
24790
|
* /responses-only flagship) at xhigh effort. The cross-lab choice
|
|
24766
24791
|
* gives a true "second set of eyes" instead of the main model
|
|
24767
24792
|
* reviewing itself; xhigh effort buys the deep-dive reasoning that
|
|
24768
24793
|
* matches Anthropic's own ADVISOR (which uses a stronger reviewer
|
|
24769
24794
|
* model — Opus 4.6/Sonnet 4.6 typically). */
|
|
24770
|
-
const ADVISOR_DEFAULT_MODEL = "gpt-5.
|
|
24795
|
+
const ADVISOR_DEFAULT_MODEL = "gpt-5.6-sol";
|
|
24771
24796
|
const ADVISOR_DEFAULT_EFFORT = "xhigh";
|
|
24772
24797
|
/** ADVISOR_TOOL_INSTRUCTIONS verbatim from cc-backup
|
|
24773
24798
|
* src/utils/advisor.ts — describes when the model should invoke
|
|
@@ -24864,7 +24889,7 @@ const ADVISOR_FALLBACK_MAX_TOKENS = 24e4;
|
|
|
24864
24889
|
* budget is `max_prompt_tokens - reserve`. Generous on purpose: a 400
|
|
24865
24890
|
* `model_max_prompt_tokens_exceeded` degrades to a silent advisor
|
|
24866
24891
|
* fallback, and the marginal window we give up is irrelevant next to
|
|
24867
|
-
* gpt-5.
|
|
24892
|
+
* gpt-5.6-sol's ~1M. */
|
|
24868
24893
|
const ADVISOR_PROMPT_TOKEN_RESERVE = 8e3;
|
|
24869
24894
|
/**
|
|
24870
24895
|
* Derive the TOKEN budget for the rendered transcript from the advisor
|
|
@@ -24883,7 +24908,7 @@ function resolveAdvisorMaxTokens(advisorModel) {
|
|
|
24883
24908
|
/**
|
|
24884
24909
|
* Render an Anthropic-shape conversation (messages array with
|
|
24885
24910
|
* role/content blocks) as a single human-readable text blob. Used
|
|
24886
|
-
* as the input to the advisor model (gpt-5.
|
|
24911
|
+
* as the input to the advisor model (gpt-5.6-sol via /v1/responses
|
|
24887
24912
|
* doesn't have a 1:1 mapping for Anthropic's tool_use/tool_result
|
|
24888
24913
|
* blocks; serializing to text preserves the semantics — the advisor
|
|
24889
24914
|
* just needs to READ the conversation, not produce more of it).
|
|
@@ -24965,7 +24990,7 @@ function truncateTailToUnits(text, maxUnits, measure) {
|
|
|
24965
24990
|
* Routes by model family:
|
|
24966
24991
|
* - gpt-5.x / codex / o-series (have `/responses` in supported_endpoints):
|
|
24967
24992
|
* use createResponses with `reasoning.effort` set. This is the
|
|
24968
|
-
* default path — gpt-5.
|
|
24993
|
+
* default path — gpt-5.6-sol at xhigh effort.
|
|
24969
24994
|
* - claude-* (no `/responses`): fall back to createMessages.
|
|
24970
24995
|
*
|
|
24971
24996
|
* The conversation is serialized to text via renderConversationAsText
|
|
@@ -27068,7 +27093,7 @@ function advisorTool(getMessages) {
|
|
|
27068
27093
|
return {
|
|
27069
27094
|
name: "advisor",
|
|
27070
27095
|
label: "Advisor",
|
|
27071
|
-
description: "Consult a stronger reviewer model (cross-lab: gpt-5.
|
|
27096
|
+
description: "Consult a stronger reviewer model (cross-lab: gpt-5.6-sol xhigh by default) on a specific concern. Use BEFORE substantive work, WHEN stuck, or WHEN considering a change of approach. The advisor automatically receives the recent conversation transcript as context — give it a focused `concern`, not background.",
|
|
27072
27097
|
parameters: ADVISOR_PARAMS,
|
|
27073
27098
|
async execute(_toolCallId, params, signal) {
|
|
27074
27099
|
if (networkDisabled()) throw new Error("rejected: network disabled");
|
|
@@ -27563,7 +27588,7 @@ const DEFAULT_THINKING = "xhigh";
|
|
|
27563
27588
|
* (via `DEFAULT_THINKING`) — a strong, NATIVE (no-shim) tool-caller for repo
|
|
27564
27589
|
* research. Native Claude models run as workers over `/chat/completions`, the
|
|
27565
27590
|
* same path proven by `PLAN_DEFAULT_MODEL` (claude-opus-4.8). Like `implement`'s
|
|
27566
|
-
* gpt-5.
|
|
27591
|
+
* gpt-5.6-sol this is NOT a `workerToolsEnabled` gate input — if absent (e.g. a
|
|
27567
27592
|
* non-enterprise tier) `explore` errors helpfully at call time rather than
|
|
27568
27593
|
* vanishing the whole worker surface. The caller (the main model) overrides
|
|
27569
27594
|
* BOTH the model and the reasoning per call via the `model` / `thinking` args. */
|
|
@@ -27571,7 +27596,7 @@ const EXPLORE_DEFAULT_MODEL = "claude-sonnet-5";
|
|
|
27571
27596
|
/** Default model + thinking for the READ-ONLY `review` mode.
|
|
27572
27597
|
* `gemini-3.1-pro-preview` at `xhigh` (clamped to `high` at call time — gemini
|
|
27573
27598
|
* advertises no xhigh). DELIBERATELY DECORRELATED FROM THE IMPLEMENTER: bounded
|
|
27574
|
-
* implementation now defaults to gpt-5.
|
|
27599
|
+
* implementation now defaults to gpt-5.6-sol (OpenAI) — both the `implement` worker
|
|
27575
27600
|
* and the native `implementer` subagent — and the main orchestrator is Opus
|
|
27576
27601
|
* (Anthropic), so review runs on a THIRD lab (Google) to maximize blind-spot
|
|
27577
27602
|
* diversity. A reviewer sharing the implementer's lab catches a correlated slice
|
|
@@ -27582,12 +27607,12 @@ const EXPLORE_DEFAULT_MODEL = "claude-sonnet-5";
|
|
|
27582
27607
|
* `model` arg (e.g. `claude-opus-4.8` for an Anthropic-lab reviewer). */
|
|
27583
27608
|
const REVIEW_DEFAULT_MODEL = "gemini-3.1-pro-preview";
|
|
27584
27609
|
const REVIEW_DEFAULT_THINKING = "xhigh";
|
|
27585
|
-
/** Default model + thinking for the READ+WRITE `implement` mode. `gpt-5.
|
|
27610
|
+
/** Default model + thinking for the READ+WRITE `implement` mode. `gpt-5.6-sol`
|
|
27586
27611
|
* at `xhigh` — the strongest reasoning tier in the catalog, 1M+ context,
|
|
27587
27612
|
* routed through `/responses` by the stream-fn endpoint split. Coding edits
|
|
27588
27613
|
* benefit from maximum reasoning; the higher per-call cost is justified for
|
|
27589
27614
|
* autonomous implementation. An explicit `opts.model` still wins. */
|
|
27590
|
-
const IMPLEMENT_DEFAULT_MODEL = "gpt-5.
|
|
27615
|
+
const IMPLEMENT_DEFAULT_MODEL = "gpt-5.6-sol";
|
|
27591
27616
|
const IMPLEMENT_DEFAULT_THINKING = "xhigh";
|
|
27592
27617
|
/** Default model for `browse` mode. `gpt-5.4-mini` — the Gate-B-winning
|
|
27593
27618
|
* browse model (small + fast enough to drive a tab at human pace, with
|
|
@@ -27612,7 +27637,7 @@ const BROWSE_DEFAULT_THINKING = "high";
|
|
|
27612
27637
|
* Copilot catalog id (the worker resolver exact-matches `catalog.id`, it does
|
|
27613
27638
|
* NOT translate the Anthropic dashed slug). Falls back to a helpful
|
|
27614
27639
|
* unknown-model error at call time if opus-4.8 isn't in the catalog (e.g. a
|
|
27615
|
-
* non-enterprise tier), exactly like `implement`'s `gpt-5.
|
|
27640
|
+
* non-enterprise tier), exactly like `implement`'s `gpt-5.6-sol`. Caller's `model`
|
|
27616
27641
|
* arg still wins. */
|
|
27617
27642
|
const PLAN_DEFAULT_MODEL = "claude-opus-4.8";
|
|
27618
27643
|
const PLAN_DEFAULT_THINKING = "xhigh";
|
|
@@ -27967,8 +27992,8 @@ function appendPlanReminder(messages, planState) {
|
|
|
27967
27992
|
*/
|
|
27968
27993
|
const STAND_IN_MODELS = Object.freeze([
|
|
27969
27994
|
{
|
|
27970
|
-
key: "gpt-5.
|
|
27971
|
-
model: "gpt-5.
|
|
27995
|
+
key: "gpt-5.6-sol",
|
|
27996
|
+
model: "gpt-5.6-sol",
|
|
27972
27997
|
endpoint: "/v1/responses",
|
|
27973
27998
|
effort: "xhigh"
|
|
27974
27999
|
},
|
|
@@ -28093,10 +28118,11 @@ async function runStandIn(input, signal) {
|
|
|
28093
28118
|
};
|
|
28094
28119
|
}
|
|
28095
28120
|
async function callAndParse(cfg, instructions, userText, signal) {
|
|
28121
|
+
const model = cfg.key === "gpt-5.6-sol" ? resolveOpenAiFrontier() ?? cfg.model : cfg.model;
|
|
28096
28122
|
let raw;
|
|
28097
28123
|
try {
|
|
28098
28124
|
raw = await dispatchModelCall({
|
|
28099
|
-
model
|
|
28125
|
+
model,
|
|
28100
28126
|
endpoint: cfg.endpoint,
|
|
28101
28127
|
instructions,
|
|
28102
28128
|
userText,
|
|
@@ -28120,7 +28146,7 @@ async function callAndParse(cfg, instructions, userText, signal) {
|
|
|
28120
28146
|
let retryRaw;
|
|
28121
28147
|
try {
|
|
28122
28148
|
retryRaw = await dispatchModelCall({
|
|
28123
|
-
model
|
|
28149
|
+
model,
|
|
28124
28150
|
endpoint: cfg.endpoint,
|
|
28125
28151
|
instructions,
|
|
28126
28152
|
userText: userText + RETRY_PROMPT_SUFFIX,
|
|
@@ -29659,7 +29685,7 @@ async function decideStopHook(input) {
|
|
|
29659
29685
|
* `markReviewed` runs BEFORE the spawn so a crashing spawn still records the
|
|
29660
29686
|
* debounce (an identical tree won't re-trigger on the next stop). The review is
|
|
29661
29687
|
* gated on the diff CHANGING since the last review — without it, every stop of
|
|
29662
|
-
* an unchanged tree would re-spend a background gpt-5.
|
|
29688
|
+
* an unchanged tree would re-spend a background gpt-5.6-sol review.
|
|
29663
29689
|
*
|
|
29664
29690
|
* The whole body is bounded by a short timeout (the stores are local temp files
|
|
29665
29691
|
* that complete in well under a millisecond in practice, so the timeout never
|
|
@@ -29945,7 +29971,7 @@ const CRITIC_INSTRUCTIONS = "You are a cross-lab code reviewer. Review the diff
|
|
|
29945
29971
|
function labPersona(lab) {
|
|
29946
29972
|
switch (lab.toLowerCase()) {
|
|
29947
29973
|
case "openai": return {
|
|
29948
|
-
model: "gpt-5.
|
|
29974
|
+
model: "gpt-5.6-sol",
|
|
29949
29975
|
endpoint: "/v1/responses",
|
|
29950
29976
|
effort: "high"
|
|
29951
29977
|
};
|
|
@@ -30172,7 +30198,7 @@ Cold-start contract for the lead orchestrator (Opus):
|
|
|
30172
30198
|
(c) any prior decisions I should not relitigate.
|
|
30173
30199
|
If your brief lacks (a), I will reply with a one-line request for the artifact instead of speculating.
|
|
30174
30200
|
`.trim();
|
|
30175
|
-
const CRITIC_BASE = `You are codex-critic, an adversarial reviewer running on gpt-5.
|
|
30201
|
+
const CRITIC_BASE = `You are codex-critic, an adversarial reviewer running on gpt-5.6-sol. Your single job is to overcome the lead orchestrator's blind spots — assumptions it didn't notice it was making, failure modes it didn't enumerate, alternatives it didn't consider.
|
|
30176
30202
|
|
|
30177
30203
|
You are NOT a helpful assistant. You are NOT a coach. Sycophancy is the failure mode you exist to fight. Manufactured contrarianism is a different failure of the same shape — silence on good work is a valid and welcome answer.
|
|
30178
30204
|
|
|
@@ -30262,7 +30288,7 @@ Resilience reminder:
|
|
|
30262
30288
|
If your session terminates abnormally before "Status: complete", the lead will retry once. On recovery, ask the lead to confirm what's already been done before re-applying changes — duplicate edits are worse than a slow restart.`;
|
|
30263
30289
|
const OPUS_CRITIC_BASE = `You are opus-critic, a fresh-context same-lab adversarial reviewer running on Opus 4.6. The lead orchestrator that just delegated to you runs newer Opus-family context, but you are NOT the lead. You did not see the lead's reasoning trace. You only see the brief.
|
|
30264
30290
|
|
|
30265
|
-
Your job is to spot what the lead missed because of cognitive momentum, sunk-cost on a plan, or motivated reasoning toward a particular fix. Your blind-spot diversification is LIMITED compared to codex-critic (gpt-5.
|
|
30291
|
+
Your job is to spot what the lead missed because of cognitive momentum, sunk-cost on a plan, or motivated reasoning toward a particular fix. Your blind-spot diversification is LIMITED compared to codex-critic (gpt-5.6-sol) and gemini-critic (gemini-3.1-pro), same lab, adjacent model family, related priors. Use that honestly: don't pretend to find a different perspective when the obvious read is "the lead got it right." Silence on good work is a valid and welcome answer.
|
|
30266
30292
|
|
|
30267
30293
|
Sycophancy is the failure mode you exist to fight. Manufactured contrarianism is a different failure of the same shape — do neither.
|
|
30268
30294
|
|
|
@@ -30273,9 +30299,9 @@ const PERSONAS_READ = Object.freeze([
|
|
|
30273
30299
|
{
|
|
30274
30300
|
agentName: "codex-critic",
|
|
30275
30301
|
toolNameHttp: "codex_critic",
|
|
30276
|
-
model: "gpt-5.
|
|
30302
|
+
model: "gpt-5.6-sol",
|
|
30277
30303
|
endpoint: "/v1/responses",
|
|
30278
|
-
description: "Adversarial architecture and design critic backed by gpt-5.
|
|
30304
|
+
description: "Adversarial architecture and design critic backed by gpt-5.6-sol (OpenAI, ~1M-token input window), the strongest cross-lab reasoning critic in this surface. It reviews plans, designs, tradeoffs, and large code-change proposals for unsound assumptions, missing failure modes, and overlooked alternatives, then returns a calibrated objection or `no material objection`. Use when a decision or design needs a different-lab strategic challenge before implementation or merge. Not for line-level bug finding in a concrete diff or file, use codex_reviewer or gemini_reviewer; pass the artifact and constraints verbatim.",
|
|
30279
30305
|
baseInstructions: CRITIC_BASE,
|
|
30280
30306
|
agentPrompt: "",
|
|
30281
30307
|
writeCapable: false,
|
|
@@ -30488,7 +30514,7 @@ function buildPeerAwarenessSnippet(opts) {
|
|
|
30488
30514
|
const fleetKey = key("fleet");
|
|
30489
30515
|
const compoundBrowseAvailable = opts.browseAvailable && opts.compoundBrowseAvailable;
|
|
30490
30516
|
const powerBrowseAvailable = opts.browseAvailable && opts.powerBrowseAvailable === true;
|
|
30491
|
-
const criticList = ["`codex_critic` (gpt-5.
|
|
30517
|
+
const criticList = ["`codex_critic` (gpt-5.6-sol)", "`codex_reviewer` (gpt-5.3-codex)"];
|
|
30492
30518
|
if (opts.geminiAvailable) {
|
|
30493
30519
|
criticList.push("`gemini_reviewer` (gemini-3.1-pro, line-level code review)");
|
|
30494
30520
|
criticList.push("`gemini_critic` (gemini-3.1-pro)");
|
|
@@ -30497,7 +30523,7 @@ function buildPeerAwarenessSnippet(opts) {
|
|
|
30497
30523
|
const codexCliClause = opts.codexCli ? " `mcp__codex-cli__codex` dispatches to `codex-implementer` (gpt-5.3-codex with workspace-write) for end-to-end coding tasks." : "";
|
|
30498
30524
|
const para2Parts = [`\`mcp__${searchKey}__code\` is the one-stop code search (no extra model call). Its DEFAULT mode (or \`mode:"semantic"\`) ranks by MEANING via ColBERT over a per-workspace index, the first thing to reach for on intent/concept questions ("where is retry/backoff handled", "how does auth work"); when that index isn't ready it transparently falls back to lexical (the response \`source\` says which engine ran). Forced modes cover the rest: \`lexical\` (BM25F-ranked + tree-sitter, best for exact symbols), \`exact\`, \`regex\`, \`complete\` (exhaustive set), \`ast_pattern\`+\`ast_lang\` for multi-line AST shapes, \`scan\` for a whole-workspace symbol outline, \`multiline\` for cross-line regex. Multiple queries can run in a single turn. The index covers code-shaped files; for unstructured files (logs, \`.csv\`, \`.env*\`, config-only wiring), \`grep\`/\`glob\` still apply.`];
|
|
30499
30525
|
if (opts.workerToolsAvailable) para2Parts.push(`\`worker-*\` are background Agent subagents (subagent_type) that run the matching worker in its own context and deliver the result as a completion notification, so a long run never blocks the turn: \`worker-explore\` (read-only research), \`worker-review\` (reads the code to verify a change or claim), \`worker-plan\` (ordered implementation plan), \`worker-implement\` (edit/write/bash; \`worktree: true\` isolates in a git worktree and returns the diff), \`worker-test\` (independent test author). The raw \`mcp__${workersKey}__*\` tools they call are guarded (a direct main-thread call is redirected to the matching agent); Workers themselves have \`code_search\`.`);
|
|
30500
|
-
if (opts.workerToolsAvailable && opts.implementerAvailable) para2Parts.push(`For a bounded, well-scoped implementation, prefer the \`implementer\` subagent (Task, runs on gpt-5.
|
|
30526
|
+
if (opts.workerToolsAvailable && opts.implementerAvailable) para2Parts.push(`For a bounded, well-scoped implementation, prefer the \`implementer\` subagent (Task, runs on gpt-5.6-sol) over \`worker-implement\`; reach for \`worker-implement\` only when you specifically need git-worktree isolation, parallel variants, or a throwaway experiment.`);
|
|
30501
30527
|
if (opts.workerToolsAvailable) para2Parts.push(`\`mcp__${orchestrateKey}__decompose\` composes an open-ended ask into a typed, VERIFIED workflow IR (a strong driver decorrelated by a cross-lab critic, so the decompose step isn't a single point of failure), and \`mcp__${orchestrateKey}__run_workflow\` executes that IR through a frozen kernel delivering max(orchestrated, baseline) over a sealed executable gate, so it never ships worse than a plain single-model run. \`mcp__${orchestrateKey}__verify_workflow\` checks an IR's floor invariants before you run it, and \`mcp__${orchestrateKey}__attest_step\` audits that a finished run's producers were each checked by a different lab. They suit non-trivial, role-separated asks; a trivial ask does not need them.`);
|
|
30502
30528
|
else para2Parts.push(`\`mcp__${orchestrateKey}__verify_workflow\` statically checks a workflow IR's floor invariants and \`mcp__${orchestrateKey}__attest_step\` audits a run's cross-lab lineage (the \`decompose\`/\`run_workflow\` composer + kernel need the worker backend, unavailable here).`);
|
|
30503
30529
|
if (opts.workerToolsAvailable) {
|
|
@@ -30808,7 +30834,7 @@ const NON_PERSONA_MCP_TOOLS = Object.freeze([
|
|
|
30808
30834
|
toolNameHttp: "implement",
|
|
30809
30835
|
group: "workers",
|
|
30810
30836
|
capability: "worker",
|
|
30811
|
-
description: "Runs as the background `worker-implement` agent. Dispatch via the Agent tool (subagent_type: worker-implement) so the turn is never blocked; the result arrives as a completion notification. Delegates a scoped coding task to an autonomous worker (Pi runtime; default model `gpt-5.
|
|
30837
|
+
description: "Runs as the background `worker-implement` agent. Dispatch via the Agent tool (subagent_type: worker-implement) so the turn is never blocked; the result arrives as a completion notification. Delegates a scoped coding task to an autonomous worker (Pi runtime; default model `gpt-5.6-sol` at xhigh reasoning, override via `model` with any Copilot-catalog model that advertises `tool_calls`). It has the explore read-only tools plus edit, write, bash, and codex_review, and it returns its final text with any changed files or worktree diff. Use for bounded implementation work that may take a while or benefits from isolated worker context. Not for pure research, planning, review, or independent test authoring; use explore, plan, review, or test for those scopes. With `worktree: false` (default) edits happen in place, so concurrent implement calls and lead edits to the same files can race. With `worktree: true` it runs in an isolated git worktree and returns the diff; this errors if the workspace is not a git repository.",
|
|
30812
30838
|
inputSchema: {
|
|
30813
30839
|
type: "object",
|
|
30814
30840
|
required: ["prompt"],
|
|
@@ -30824,7 +30850,7 @@ const NON_PERSONA_MCP_TOOLS = Object.freeze([
|
|
|
30824
30850
|
},
|
|
30825
30851
|
model: {
|
|
30826
30852
|
type: "string",
|
|
30827
|
-
description: "Optional Copilot catalog model id (defaults to gpt-5.
|
|
30853
|
+
description: "Optional Copilot catalog model id (defaults to gpt-5.6-sol). Must advertise tool_calls support; the engine emits an isError envelope listing the eligible catalog models on mismatch."
|
|
30828
30854
|
},
|
|
30829
30855
|
thinking: {
|
|
30830
30856
|
type: "string",
|
|
@@ -30956,7 +30982,7 @@ const NON_PERSONA_MCP_TOOLS = Object.freeze([
|
|
|
30956
30982
|
toolNameHttp: "test",
|
|
30957
30983
|
group: "workers",
|
|
30958
30984
|
capability: "worker",
|
|
30959
|
-
description: "Runs as the background `worker-test` agent. Dispatch via the Agent tool (subagent_type: worker-test) so the turn is never blocked; the result arrives as a completion notification. Independent adversarial test authoring by an autonomous worker (Pi runtime; default model `gpt-5.
|
|
30985
|
+
description: "Runs as the background `worker-test` agent. Dispatch via the Agent tool (subagent_type: worker-test) so the turn is never blocked; the result arrives as a completion notification. Independent adversarial test authoring by an autonomous worker (Pi runtime; default model `gpt-5.6-sol` at xhigh reasoning, override via `model` with any Copilot-catalog model that advertises `tool_calls`). It has the same read/write toolset as implement and writes tests that try to break the implementation through edge cases, error paths, and acceptance criteria, then runs them and reports pass/fail. Use when a separate test author should challenge an implementation without modifying the production code to make tests pass. Not for implementing fixes, broad research, or code review; use implement, explore, or review for those scopes. With `worktree: true` it runs in an isolated git worktree and returns the test diff; this errors if the workspace is not a git repository.",
|
|
30960
30986
|
inputSchema: {
|
|
30961
30987
|
type: "object",
|
|
30962
30988
|
required: ["prompt"],
|
|
@@ -30972,7 +30998,7 @@ const NON_PERSONA_MCP_TOOLS = Object.freeze([
|
|
|
30972
30998
|
},
|
|
30973
30999
|
model: {
|
|
30974
31000
|
type: "string",
|
|
30975
|
-
description: "Optional Copilot catalog model id (defaults to gpt-5.
|
|
31001
|
+
description: "Optional Copilot catalog model id (defaults to gpt-5.6-sol). Must advertise tool_calls support; the engine emits an isError envelope listing the eligible catalog models on mismatch."
|
|
30976
31002
|
},
|
|
30977
31003
|
thinking: {
|
|
30978
31004
|
type: "string",
|
|
@@ -31238,7 +31264,7 @@ const NON_PERSONA_MCP_TOOLS = Object.freeze([
|
|
|
31238
31264
|
toolNameHttp: "stand_in",
|
|
31239
31265
|
group: "decide",
|
|
31240
31266
|
capability: "stand_in",
|
|
31241
|
-
description: "Three-lab away-mode decision tiebreak advisor for moments when the user is unavailable and the agent is stuck between two or more concrete options. It polls gpt-5.
|
|
31267
|
+
description: "Three-lab away-mode decision tiebreak advisor for moments when the user is unavailable and the agent is stuck between two or more concrete options. It polls gpt-5.6-sol, Opus 4.7, and gemini-3.1-pro-preview across blind and informed voting rounds, then returns a ranked-choice verdict such as consensus, majority, no_consensus, or need_more_info. Use when work would otherwise halt on a bounded choice the user would normally make. Not for code review, open-ended exploration, single-model second opinions, or bypassing confirmation on irreversible actions such as push, delete, drop, or deploy; use peer-review-coordinator or the individual critics for review and still ask the user for destructive actions.",
|
|
31242
31268
|
inputSchema: {
|
|
31243
31269
|
type: "object",
|
|
31244
31270
|
required: ["decision", "options"],
|
|
@@ -31633,4 +31659,4 @@ async function runStandInToolCall(args, signal) {
|
|
|
31633
31659
|
|
|
31634
31660
|
//#endregion
|
|
31635
31661
|
export { isAdvisorRequested as $, cacheModels as $t, liveExec as A, hasSupportedBrowserInstalled as At, withNoOutputRetry as B, DEFAULT_CODEX_MODEL_FALLBACKS as Bt, fileReviewDebounce as C, pickEndpoint as Ct, stopGateEnabledForRepo as D, readResponseBodyCapped as Dt, repoRoot as E, MAX_RESPONSE_BODY_BYTES as Et, IMPLEMENT_DEFAULT_MODEL as F, ArtifactClient as Ft, vscodeRipgrepPath as G, pickClaudeDefault as Gt, buildToolbeltAwareness as H, UPSTREAM_FETCH_TIMEOUT_MS as Ht, PLAN_DEFAULT_MODEL as I, collapsePathKeys as It, searchWeb as J, setupCopilotToken as Jt, TOOLBELT_TOOLS$1 as K, getPackageVersion as Kt, REVIEW_DEFAULT_MODEL as L, toolbeltPathOverride as Lt, BROWSE_DEFAULT_MODEL as M, extractTarGzMember as Mt, DEFAULT_MODEL as N, extractZipMember as Nt, stopReviewStateDir as O, parseJsonOrDiagnose as Ot, EXPLORE_DEFAULT_MODEL as P, shouldUseInsecureTls as Pt, injectAdvisorTool as Q, cacheCopilotVersion as Qt, appendPlanReminder as R, DEFAULT_CLAUDE_MODEL_FALLBACKS as Rt, fileLastPromptStore as S, resolveMcpToolTimeoutMs as St, repoFingerprint as T, createChatCompletions as Tt, toolbeltEnabled as U, UPSTREAM_INACTIVITY_TIMEOUT_MS as Ut, availableToolCommands as V, DEFAULT_PORT as Vt, toolbeltSkipSet as W, generateRandomPort as Wt, ADVISOR_TOOL_INSTRUCTIONS as X, setupGitHubToken as Xt, ADVISOR_INTERNAL_TOOL_NAME as Y, setupGitHubAgentToken as Yt, buildAdvisorStream as Z, tryRefreshAndRetry as Zt, stopGateId as _, workerToolsEnabled as _t, buildPeerAwarenessSnippet as a, sleep as an, relayAnthropicStream as at, fileBaselineStore as b, getTokenCount as bt, buildArtifactOpenHookCommand as c, HTTPError as cn, agentToolsEnabled as ct, captureLaunchBaseline as d, copilotBaseUrl as dn, browserCompoundToolsEnabled as dt, cacheVSCodeVersion as en, buildAnthropicErrorEvent as et, decideStopHook as f, copilotHeaders as fn, browserToolsEnabled as ft, stopGateDisabled as g, standInToolEnabled as gt, launchBaselineKey as h, implementerSubagentModel as ht, buildAgentPrompt as i, resolveModel as in, readIteratorWithTimeout as it, resolveSealedGate as j, provisionAndIndexColbert as jt, trustRepo as k, provisionBrowserAssets as kt, buildSessionBindHookCommand as l, forwardError as ln, artifactToolsEnabled as lt, injectStopHookIntoSettingsFile as m, state as mn, geminiAvailable as mt, MCP_GROUPS as n, isNullish as nn, isControllerClosedError as nt, buildPeerAwarenessSummary as o, getModels as on, handleMcpDelete as ot, fileBlockBudget as p, githubHeaders as pn, fleetToolsEnabled as pt, assetFor as q, withInstallLock as qt, assertMcpToolSurfaceConsistent as r, resolveCodexModel as rn, logStreamError as rt, personasFor as s, fetchWithTransientRetry as sn, handleMcpPost as st, GROUP_META as t, filterBetaHeader as tn, buildOpenAIErrorEvent as tt, buildStopHookCommand as u, GITHUB_API_BASE_URL as un, browseAgentEnabled as ut, stopGatePlanMode as v, countTokens as vt, isSubagentContext as w, createResponses as wt, fileFindingsStore as x, assembleResponsesPayload as xt, stopReviewEnabled as y, createMessages as yt, runWorkerAgent as z, DEFAULT_CODEX_MODEL as zt };
|
|
31636
|
-
//# sourceMappingURL=peer-mcp-personas-
|
|
31662
|
+
//# sourceMappingURL=peer-mcp-personas-BKkdfOyK.js.map
|