github-router 0.3.315 → 0.3.316

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.
Files changed (49) hide show
  1. package/dist/{attribution-settings-DXmmyuEE.js → attribution-settings-jcsSeVur.js} +116 -17
  2. package/dist/attribution-settings-jcsSeVur.js.map +1 -0
  3. package/dist/{auth-D8t41c5D.js → auth-JfxL9q7z.js} +3 -3
  4. package/dist/{auth-D8t41c5D.js.map → auth-JfxL9q7z.js.map} +1 -1
  5. package/dist/browser-ext/manifest.json +1 -1
  6. package/dist/{check-usage-BpBKOjGZ.js → check-usage-DXUEQzt_.js} +3 -3
  7. package/dist/{check-usage-BpBKOjGZ.js.map → check-usage-DXUEQzt_.js.map} +1 -1
  8. package/dist/{claude-Cmmu3-cL.js → claude-CJ4Nd2_3.js} +94 -29
  9. package/dist/claude-CJ4Nd2_3.js.map +1 -0
  10. package/dist/{codex-DqTKKoEx.js → codex-CwuLqNZF.js} +6 -6
  11. package/dist/codex-CwuLqNZF.js.map +1 -0
  12. package/dist/engine-DwrxceOS.js +2 -0
  13. package/dist/{gate-discovery-CPk6Z8yc.js → gate-discovery-z04ywOzB.js} +2 -2
  14. package/dist/{gate-discovery-CPk6Z8yc.js.map → gate-discovery-z04ywOzB.js.map} +1 -1
  15. package/dist/{get-copilot-usage-FSQE8szQ.js → get-copilot-usage-BMD_cJNT.js} +3 -3
  16. package/dist/{get-copilot-usage-FSQE8szQ.js.map → get-copilot-usage-BMD_cJNT.js.map} +1 -1
  17. package/dist/hooks.mjs +1 -0
  18. package/dist/hooks.sha256 +1 -1
  19. package/dist/{internal-max-dispatch-guard-l1NGYHtF.js → internal-max-dispatch-guard-BNqQ2wMc.js} +2 -2
  20. package/dist/{internal-max-dispatch-guard-l1NGYHtF.js.map → internal-max-dispatch-guard-BNqQ2wMc.js.map} +1 -1
  21. package/dist/{internal-max-dispatch-guard-BzKsY9ze.js → internal-max-dispatch-guard-Bz7a2Ntf.js} +1 -1
  22. package/dist/{internal-stop-hook-BKiKYeda.js → internal-stop-hook-UN1JHtjj.js} +2 -2
  23. package/dist/{internal-stop-hook-BKiKYeda.js.map → internal-stop-hook-UN1JHtjj.js.map} +1 -1
  24. package/dist/main.js +9 -9
  25. package/dist/{max-profile-contract-BcrMlrmo.js → max-profile-contract-Bl7I_EOC.js} +2 -2
  26. package/dist/{max-profile-contract-BcrMlrmo.js.map → max-profile-contract-Bl7I_EOC.js.map} +1 -1
  27. package/dist/{models-DgLeb-Dv.js → models-CVzyU5mJ.js} +2 -2
  28. package/dist/{models-DgLeb-Dv.js.map → models-CVzyU5mJ.js.map} +1 -1
  29. package/dist/{peer-mcp-personas-CYWJSxPK.js → peer-mcp-personas-CQ-0Piyr.js} +166 -45
  30. package/dist/peer-mcp-personas-CQ-0Piyr.js.map +1 -0
  31. package/dist/{provision-AwSjt-vR.js → provision-_R7ZMygj.js} +2 -2
  32. package/dist/{provision-AwSjt-vR.js.map → provision-_R7ZMygj.js.map} +1 -1
  33. package/dist/{serve-BG2O6Slz.js → serve-DU66K5kv.js} +7 -7
  34. package/dist/{serve-BG2O6Slz.js.map → serve-DU66K5kv.js.map} +1 -1
  35. package/dist/{server-setup-D7ABbEs1.js → server-setup-iLG8LrfL.js} +165 -27
  36. package/dist/server-setup-iLG8LrfL.js.map +1 -0
  37. package/dist/{start-Dpwpnq99.js → start-DQTcm0o_.js} +3 -3
  38. package/dist/{start-Dpwpnq99.js.map → start-DQTcm0o_.js.map} +1 -1
  39. package/dist/{state-B8adscCv.js → state-BlMpEFAt.js} +2 -1
  40. package/dist/{state-B8adscCv.js.map → state-BlMpEFAt.js.map} +1 -1
  41. package/dist/{token-ClzS23Y2.js → token-C1gthnbV.js} +2 -2
  42. package/dist/{token-ClzS23Y2.js.map → token-C1gthnbV.js.map} +1 -1
  43. package/package.json +1 -1
  44. package/dist/attribution-settings-DXmmyuEE.js.map +0 -1
  45. package/dist/claude-Cmmu3-cL.js.map +0 -1
  46. package/dist/codex-DqTKKoEx.js.map +0 -1
  47. package/dist/engine-b9XaKLp0.js +0 -2
  48. package/dist/peer-mcp-personas-CYWJSxPK.js.map +0 -1
  49. package/dist/server-setup-D7ABbEs1.js.map +0 -1
@@ -1,6 +1,6 @@
1
1
  import { i as ensurePaths, t as PATHS } from "./paths-CMxlQEfQ.js";
2
- import { t as state } from "./state-B8adscCv.js";
3
- import { r as setupGitHubToken } from "./token-ClzS23Y2.js";
2
+ import { t as state } from "./state-BlMpEFAt.js";
3
+ import { r as setupGitHubToken } from "./token-C1gthnbV.js";
4
4
  import { defineCommand } from "citty";
5
5
  import consola from "consola";
6
6
  //#region src/auth.ts
@@ -42,4 +42,4 @@ const auth = defineCommand({
42
42
  //#endregion
43
43
  export { auth };
44
44
 
45
- //# sourceMappingURL=auth-D8t41c5D.js.map
45
+ //# sourceMappingURL=auth-JfxL9q7z.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-D8t41c5D.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { PATHS, ensurePaths } from \"./lib/paths\"\nimport { state } from \"./lib/state\"\nimport { setupGitHubToken } from \"./lib/token\"\n\ninterface RunAuthOptions {\n verbose: boolean\n showToken: boolean\n}\n\nexport async function runAuth(options: RunAuthOptions): Promise<void> {\n if (options.verbose) {\n consola.level = 5\n consola.info(\"Verbose logging enabled\")\n }\n\n state.showToken = options.showToken\n\n await ensurePaths()\n await setupGitHubToken({ force: true })\n consola.success(\"GitHub token written to\", PATHS.GITHUB_TOKEN_PATH)\n}\n\nexport const auth = defineCommand({\n meta: {\n name: \"auth\",\n description: \"Run GitHub auth flow without running the server\",\n },\n args: {\n verbose: {\n alias: \"v\",\n type: \"boolean\",\n default: false,\n description: \"Enable verbose logging\",\n },\n \"show-token\": {\n type: \"boolean\",\n default: false,\n description: \"Show GitHub token on auth\",\n },\n },\n run({ args }) {\n return runAuth({\n verbose: args.verbose,\n showToken: args[\"show-token\"],\n })\n },\n})\n"],"mappings":";;;;;;AAcA,eAAsB,QAAQ,SAAwC;CACpE,IAAI,QAAQ,SAAS;EACnB,QAAQ,QAAQ;EAChB,QAAQ,KAAK,yBAAyB;CACxC;CAEA,MAAM,YAAY,QAAQ;CAE1B,MAAM,YAAY;CAClB,MAAM,iBAAiB,EAAE,OAAO,KAAK,CAAC;CACtC,QAAQ,QAAQ,2BAA2B,MAAM,iBAAiB;AACpE;AAEA,MAAa,OAAO,cAAc;CAChC,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;EACJ,SAAS;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,aAAa;EACf;EACA,cAAc;GACZ,MAAM;GACN,SAAS;GACT,aAAa;EACf;CACF;CACA,IAAI,EAAE,QAAQ;EACZ,OAAO,QAAQ;GACb,SAAS,KAAK;GACd,WAAW,KAAK;EAClB,CAAC;CACH;AACF,CAAC"}
1
+ {"version":3,"file":"auth-JfxL9q7z.js","names":[],"sources":["../src/auth.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { PATHS, ensurePaths } from \"./lib/paths\"\nimport { state } from \"./lib/state\"\nimport { setupGitHubToken } from \"./lib/token\"\n\ninterface RunAuthOptions {\n verbose: boolean\n showToken: boolean\n}\n\nexport async function runAuth(options: RunAuthOptions): Promise<void> {\n if (options.verbose) {\n consola.level = 5\n consola.info(\"Verbose logging enabled\")\n }\n\n state.showToken = options.showToken\n\n await ensurePaths()\n await setupGitHubToken({ force: true })\n consola.success(\"GitHub token written to\", PATHS.GITHUB_TOKEN_PATH)\n}\n\nexport const auth = defineCommand({\n meta: {\n name: \"auth\",\n description: \"Run GitHub auth flow without running the server\",\n },\n args: {\n verbose: {\n alias: \"v\",\n type: \"boolean\",\n default: false,\n description: \"Enable verbose logging\",\n },\n \"show-token\": {\n type: \"boolean\",\n default: false,\n description: \"Show GitHub token on auth\",\n },\n },\n run({ args }) {\n return runAuth({\n verbose: args.verbose,\n showToken: args[\"show-token\"],\n })\n },\n})\n"],"mappings":";;;;;;AAcA,eAAsB,QAAQ,SAAwC;CACpE,IAAI,QAAQ,SAAS;EACnB,QAAQ,QAAQ;EAChB,QAAQ,KAAK,yBAAyB;CACxC;CAEA,MAAM,YAAY,QAAQ;CAE1B,MAAM,YAAY;CAClB,MAAM,iBAAiB,EAAE,OAAO,KAAK,CAAC;CACtC,QAAQ,QAAQ,2BAA2B,MAAM,iBAAiB;AACpE;AAEA,MAAa,OAAO,cAAc;CAChC,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM;EACJ,SAAS;GACP,OAAO;GACP,MAAM;GACN,SAAS;GACT,aAAa;EACf;EACA,cAAc;GACZ,MAAM;GACN,SAAS;GACT,aAAa;EACf;CACF;CACA,IAAI,EAAE,QAAQ;EACZ,OAAO,QAAQ;GACb,SAAS,KAAK;GACd,WAAW,KAAK;EAClB,CAAC;CACH;AACF,CAAC"}
@@ -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.315",
5
+ "version": "0.3.316",
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,6 +1,6 @@
1
1
  import { i as ensurePaths } from "./paths-CMxlQEfQ.js";
2
- import { r as setupGitHubToken } from "./token-ClzS23Y2.js";
3
- import { t as getCopilotUsage } from "./get-copilot-usage-FSQE8szQ.js";
2
+ import { r as setupGitHubToken } from "./token-C1gthnbV.js";
3
+ import { t as getCopilotUsage } from "./get-copilot-usage-BMD_cJNT.js";
4
4
  import { defineCommand } from "citty";
5
5
  import consola from "consola";
6
6
  //#region src/check-usage.ts
@@ -40,4 +40,4 @@ const checkUsage = defineCommand({
40
40
  //#endregion
41
41
  export { checkUsage };
42
42
 
43
- //# sourceMappingURL=check-usage-BpBKOjGZ.js.map
43
+ //# sourceMappingURL=check-usage-DXUEQzt_.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-usage-BpBKOjGZ.js","names":[],"sources":["../src/check-usage.ts"],"sourcesContent":["import { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { ensurePaths } from \"./lib/paths\"\nimport { setupGitHubToken } from \"./lib/token\"\nimport {\n getCopilotUsage,\n type QuotaDetail,\n} from \"./services/github/get-copilot-usage\"\n\nexport const checkUsage = defineCommand({\n meta: {\n name: \"check-usage\",\n description: \"Show current GitHub Copilot usage/quota information\",\n },\n async run() {\n await ensurePaths()\n await setupGitHubToken()\n try {\n const usage = await getCopilotUsage()\n const premium = usage.quota_snapshots.premium_interactions\n const premiumTotal = premium.entitlement\n const premiumUsed = premiumTotal - premium.remaining\n const premiumPercentUsed =\n premiumTotal > 0 ? (premiumUsed / premiumTotal) * 100 : 0\n const premiumPercentRemaining = premium.percent_remaining\n\n // Helper to summarize a quota snapshot\n function summarizeQuota(name: string, snap: QuotaDetail | undefined) {\n if (!snap) return `${name}: N/A`\n const total = snap.entitlement\n const used = total - snap.remaining\n const percentUsed = total > 0 ? (used / total) * 100 : 0\n const percentRemaining = snap.percent_remaining\n return `${name}: ${used}/${total} used (${percentUsed.toFixed(1)}% used, ${percentRemaining.toFixed(1)}% remaining)`\n }\n\n const premiumLine = `Premium: ${premiumUsed}/${premiumTotal} used (${premiumPercentUsed.toFixed(1)}% used, ${premiumPercentRemaining.toFixed(1)}% remaining)`\n const chatLine = summarizeQuota(\"Chat\", usage.quota_snapshots.chat)\n const completionsLine = summarizeQuota(\n \"Completions\",\n usage.quota_snapshots.completions,\n )\n\n consola.box(\n `Copilot Usage (plan: ${usage.copilot_plan})\\n`\n + `Quota resets: ${usage.quota_reset_date}\\n`\n + `\\nQuotas:\\n`\n + ` ${premiumLine}\\n`\n + ` ${chatLine}\\n`\n + ` ${completionsLine}`,\n )\n } catch (err) {\n consola.error(\"Failed to fetch Copilot usage:\", err)\n process.exit(1)\n }\n },\n})\n"],"mappings":";;;;;;AAUA,MAAa,aAAa,cAAc;CACtC,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM,MAAM;EACV,MAAM,YAAY;EAClB,MAAM,iBAAiB;EACvB,IAAI;GACF,MAAM,QAAQ,MAAM,gBAAgB;GACpC,MAAM,UAAU,MAAM,gBAAgB;GACtC,MAAM,eAAe,QAAQ;GAC7B,MAAM,cAAc,eAAe,QAAQ;GAC3C,MAAM,qBACJ,eAAe,IAAK,cAAc,eAAgB,MAAM;GAC1D,MAAM,0BAA0B,QAAQ;GAGxC,SAAS,eAAe,MAAc,MAA+B;IACnE,IAAI,CAAC,MAAM,OAAO,GAAG,KAAK;IAC1B,MAAM,QAAQ,KAAK;IACnB,MAAM,OAAO,QAAQ,KAAK;IAC1B,MAAM,cAAc,QAAQ,IAAK,OAAO,QAAS,MAAM;IACvD,MAAM,mBAAmB,KAAK;IAC9B,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM,SAAS,YAAY,QAAQ,CAAC,EAAE,UAAU,iBAAiB,QAAQ,CAAC,EAAE;GACzG;GAEA,MAAM,cAAc,YAAY,YAAY,GAAG,aAAa,SAAS,mBAAmB,QAAQ,CAAC,EAAE,UAAU,wBAAwB,QAAQ,CAAC,EAAE;GAChJ,MAAM,WAAW,eAAe,QAAQ,MAAM,gBAAgB,IAAI;GAClE,MAAM,kBAAkB,eACtB,eACA,MAAM,gBAAgB,WACxB;GAEA,QAAQ,IACN,wBAAwB,MAAM,aAAa,mBACtB,MAAM,iBAAiB,iBAEnC,YAAY,MACZ,SAAS,MACT,iBACX;EACF,SAAS,KAAK;GACZ,QAAQ,MAAM,kCAAkC,GAAG;GACnD,QAAQ,KAAK,CAAC;EAChB;CACF;AACF,CAAC"}
1
+ {"version":3,"file":"check-usage-DXUEQzt_.js","names":[],"sources":["../src/check-usage.ts"],"sourcesContent":["import { defineCommand } from \"citty\"\nimport consola from \"consola\"\n\nimport { ensurePaths } from \"./lib/paths\"\nimport { setupGitHubToken } from \"./lib/token\"\nimport {\n getCopilotUsage,\n type QuotaDetail,\n} from \"./services/github/get-copilot-usage\"\n\nexport const checkUsage = defineCommand({\n meta: {\n name: \"check-usage\",\n description: \"Show current GitHub Copilot usage/quota information\",\n },\n async run() {\n await ensurePaths()\n await setupGitHubToken()\n try {\n const usage = await getCopilotUsage()\n const premium = usage.quota_snapshots.premium_interactions\n const premiumTotal = premium.entitlement\n const premiumUsed = premiumTotal - premium.remaining\n const premiumPercentUsed =\n premiumTotal > 0 ? (premiumUsed / premiumTotal) * 100 : 0\n const premiumPercentRemaining = premium.percent_remaining\n\n // Helper to summarize a quota snapshot\n function summarizeQuota(name: string, snap: QuotaDetail | undefined) {\n if (!snap) return `${name}: N/A`\n const total = snap.entitlement\n const used = total - snap.remaining\n const percentUsed = total > 0 ? (used / total) * 100 : 0\n const percentRemaining = snap.percent_remaining\n return `${name}: ${used}/${total} used (${percentUsed.toFixed(1)}% used, ${percentRemaining.toFixed(1)}% remaining)`\n }\n\n const premiumLine = `Premium: ${premiumUsed}/${premiumTotal} used (${premiumPercentUsed.toFixed(1)}% used, ${premiumPercentRemaining.toFixed(1)}% remaining)`\n const chatLine = summarizeQuota(\"Chat\", usage.quota_snapshots.chat)\n const completionsLine = summarizeQuota(\n \"Completions\",\n usage.quota_snapshots.completions,\n )\n\n consola.box(\n `Copilot Usage (plan: ${usage.copilot_plan})\\n`\n + `Quota resets: ${usage.quota_reset_date}\\n`\n + `\\nQuotas:\\n`\n + ` ${premiumLine}\\n`\n + ` ${chatLine}\\n`\n + ` ${completionsLine}`,\n )\n } catch (err) {\n consola.error(\"Failed to fetch Copilot usage:\", err)\n process.exit(1)\n }\n },\n})\n"],"mappings":";;;;;;AAUA,MAAa,aAAa,cAAc;CACtC,MAAM;EACJ,MAAM;EACN,aAAa;CACf;CACA,MAAM,MAAM;EACV,MAAM,YAAY;EAClB,MAAM,iBAAiB;EACvB,IAAI;GACF,MAAM,QAAQ,MAAM,gBAAgB;GACpC,MAAM,UAAU,MAAM,gBAAgB;GACtC,MAAM,eAAe,QAAQ;GAC7B,MAAM,cAAc,eAAe,QAAQ;GAC3C,MAAM,qBACJ,eAAe,IAAK,cAAc,eAAgB,MAAM;GAC1D,MAAM,0BAA0B,QAAQ;GAGxC,SAAS,eAAe,MAAc,MAA+B;IACnE,IAAI,CAAC,MAAM,OAAO,GAAG,KAAK;IAC1B,MAAM,QAAQ,KAAK;IACnB,MAAM,OAAO,QAAQ,KAAK;IAC1B,MAAM,cAAc,QAAQ,IAAK,OAAO,QAAS,MAAM;IACvD,MAAM,mBAAmB,KAAK;IAC9B,OAAO,GAAG,KAAK,IAAI,KAAK,GAAG,MAAM,SAAS,YAAY,QAAQ,CAAC,EAAE,UAAU,iBAAiB,QAAQ,CAAC,EAAE;GACzG;GAEA,MAAM,cAAc,YAAY,YAAY,GAAG,aAAa,SAAS,mBAAmB,QAAQ,CAAC,EAAE,UAAU,wBAAwB,QAAQ,CAAC,EAAE;GAChJ,MAAM,WAAW,eAAe,QAAQ,MAAM,gBAAgB,IAAI;GAClE,MAAM,kBAAkB,eACtB,eACA,MAAM,gBAAgB,WACxB;GAEA,QAAQ,IACN,wBAAwB,MAAM,aAAa,mBACtB,MAAM,iBAAiB,iBAEnC,YAAY,MACZ,SAAS,MACT,iBACX;EACF,SAAS,KAAK;GACZ,QAAQ,MAAM,kCAAkC,GAAG;GACnD,QAAQ,KAAK,CAAC;EAChB;CACF;AACF,CAAC"}
@@ -1,26 +1,26 @@
1
- import { $t as colbertDegradedWarning, At as scribeModel, Bt as registerLaunch, Ct as generalPurposeFastModel, D as toolbeltEnabled, Dt as reviewerFastModel, E as buildToolbeltAwareness, Et as resolveGeminiReviewModel, Mt as workerToolsEnabled, Nn as CHEAP_PROFILE_NATIVE_MODELS, Ot as reviewerModel, St as geminiAvailable, T as availableToolCommands, Tt as nativeSubagentModel, Vt as unregisterLaunch, Zt as provisionBrowserAssets, _t as fastOracleModel, at as artifactToolsEnabled, bn as pickClaudeDefault, bt as fastScoutModel, ct as browserCompoundToolsEnabled, dt as cheapOracleModel, en as provisionAndIndexColbert, fn as DEFAULT_CLAUDE_MODEL_FALLBACKS, ft as cheapReviewerModel, gt as fastImplementerModel, ht as fastGeneralPurposeModel, it as agentToolsEnabled, jt as standInToolEnabled, kn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL, kt as scoutModel, lt as browserToolsEnabled, mt as fastAstraModel, o as buildPeerAwarenessSnippet, ot as brainstormModel, pt as fastAdvisorModel, r as agentNamesForToolAllowlist, rn as warmTreeSitterPool, s as buildPeerAwarenessSummary, sn as shouldUseInsecureTls, st as browseAgentEnabled, ut as cheapAdvisorModel, vt as fastPlanModel, wt as implementerFastModel, xn as resolveLeadSlugArg, xt as fleetToolsEnabled, yn as isBudgetClaudeLead, yt as fastReviewerModel } from "./peer-mcp-personas-CYWJSxPK.js";
1
+ import { At as resolveGeminiReviewModel, Cn as isBudgetClaudeLead, Ct as fastReviewerModel, D as toolbeltEnabled, Dt as generalPurposeFastModel, E as buildToolbeltAwareness, Et as geminiAvailable, Ft as standInToolEnabled, Gt as unregisterLaunch, It as workerToolsEnabled, Ln as CHEAPEST_PROFILE_NATIVE_MODELS, Mt as reviewerModel, Nn as CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL, Nt as scoutModel, Ot as implementerFastModel, Pt as scribeModel, St as fastPlanModel, T as availableToolCommands, Tn as resolveLeadSlugArg, Tt as fleetToolsEnabled, Un as CHEAP_PROFILE_NATIVE_MODELS, Wt as registerLaunch, _t as fastAdvisorModel, at as agentToolsEnabled, bt as fastImplementerModel, ct as browseAgentEnabled, dn as shouldUseInsecureTls, dt as cheapAdvisorModel, ft as cheapOracleModel, gn as DEFAULT_CLAUDE_MODEL_FALLBACKS, gt as cheapestReviewerModel, ht as cheapestOracleModel, in as provisionAndIndexColbert, jt as reviewerFastModel, kt as nativeSubagentModel, lt as browserCompoundToolsEnabled, mt as cheapestAdvisorModel, o as buildPeerAwarenessSnippet, ot as artifactToolsEnabled, pt as cheapReviewerModel, r as agentNamesForToolAllowlist, rn as colbertDegradedWarning, s as buildPeerAwarenessSummary, sn as warmTreeSitterPool, st as brainstormModel, tn as provisionBrowserAssets, ut as browserToolsEnabled, vt as fastAstraModel, wn as pickClaudeDefault, wt as fastScoutModel, xt as fastOracleModel, yt as fastGeneralPurposeModel, zn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL } from "./peer-mcp-personas-CQ-0Piyr.js";
2
2
  import { o as removeOwnClaudeConfigMirror, r as ensureClaudeConfigMirror, t as PATHS, u as writeArtifactCredsToMirror } from "./paths-CMxlQEfQ.js";
3
- import { t as state } from "./state-B8adscCv.js";
4
- import { d as resolveModel } from "./token-ClzS23Y2.js";
3
+ import { t as state } from "./state-BlMpEFAt.js";
4
+ import { d as resolveModel } from "./token-C1gthnbV.js";
5
5
  import { i as parseBoolEnv } from "./exec-COUT4QsS.js";
6
- import { C as checkClaudeVersion, S as runSelfUpdate, _ as resolveLaunchProfile, a as sharedServerArgs, b as validateFastProfilePrerequisites, c as stopKeepAwake, d as enableFileLogging, g as profileDescriptor, h as formatFastPrerequisiteFailure, i as setupAndServe, l as injectModelPickerSettingsFile, m as formatCheapPrerequisiteFailure, o as LAUNCH_SECRET_HEADER, p as formatCheap1mPrerequisiteFailure, r as parseSharedArgs, s as startKeepAwake, t as getClaudeCodeEnvVars, u as listModelsForEndpoint, v as validateCheap1mProfilePrerequisites, w as updateClaude, x as validateMaxProfileLaunch, y as validateCheapProfilePrerequisites } from "./server-setup-D7ABbEs1.js";
6
+ import { C as validateMaxProfileLaunch, E as updateClaude, S as validateFastProfilePrerequisites, T as checkClaudeVersion, _ as profileDescriptor, a as sharedServerArgs, b as validateCheapProfilePrerequisites, c as stopKeepAwake, d as enableFileLogging, g as formatFastPrerequisiteFailure, h as formatCheapestPrerequisiteFailure, i as setupAndServe, l as injectModelPickerSettingsFile, m as formatCheapPrerequisiteFailure, o as LAUNCH_SECRET_HEADER, p as formatCheap1mPrerequisiteFailure, r as parseSharedArgs, s as startKeepAwake, t as getClaudeCodeEnvVars, u as listModelsForEndpoint, v as resolveLaunchProfile, w as runSelfUpdate, x as validateCheapestProfilePrerequisites, y as validateCheap1mProfilePrerequisites } from "./server-setup-iLG8LrfL.js";
7
7
  import { t as FAST_PROFILE_ADVISOR_CLIENT_MODEL } from "./fast-profile-contract-_DhIWank.js";
8
- import { _ as maxReviewerModel, c as formatMaxPrerequisiteFailure, f as maxCodexReviewerModel, h as maxOpusModel, i as MAX_PROFILE_MODELS, m as maxGrokModel, o as MAX_PROFILE_NATIVE_EFFORTS, p as maxGeminiModel, v as maxSonnetModel } from "./max-profile-contract-BcrMlrmo.js";
8
+ import { _ as maxReviewerModel, c as formatMaxPrerequisiteFailure, f as maxCodexReviewerModel, h as maxOpusModel, i as MAX_PROFILE_MODELS, m as maxGrokModel, o as MAX_PROFILE_NATIVE_EFFORTS, p as maxGeminiModel, v as maxSonnetModel } from "./max-profile-contract-Bl7I_EOC.js";
9
9
  import { n as hookLauncherDegradedWarning, r as resolveSelfInvocation, t as buildSelfCommand } from "./self-invocation-cRl4RqfW.js";
10
- import { i as launchChild, r as getCodexVersion, t as provisionToolbelt } from "./provision-AwSjt-vR.js";
10
+ import { i as launchChild, r as getCodexVersion, t as provisionToolbelt } from "./provision-_R7ZMygj.js";
11
11
  import { a as formatAicExitSummary, l as removeAicLedgerFile, n as aicSnapshot, t as aicLedgerPath, u as sweepStaleAicLedgerFiles } from "./aic-ledger-BS47yb_C.js";
12
12
  import { i as captureLaunchBaseline, l as stopGateDisabled, n as buildSessionBindHookCommand, r as buildStopHookCommand, s as injectStopHookIntoSettingsFile, t as buildArtifactOpenHookCommand, u as stopGateId } from "./stop-gate-hook-BUCxa5Kc.js";
13
13
  import { t as liveExec } from "./orchestration-Dc3mO0G3.js";
14
14
  import { c as repoRoot, d as trustRepo, l as stopGateEnabledForRepo, s as repoFingerprint, t as fileBaselineStore } from "./stop-gate-policy--bpyxxXU.js";
15
15
  import { l as guardToolMatcher, n as activeDispatchModes, r as buildWorkerGuardHookCommand } from "./worker-dispatch-DMIdrlsF.js";
16
- import { C as writePeerMcpRuntimeFiles, S as workersKeyOf, a as appendPeerAwarenessToMirroredClaudeMd, b as resolveCodexCliBackend, c as buildOperatingDefaultsDirective, d as prependStyleDirectiveToMirroredClaudeMd, f as buildArtifactReviewSkill, g as planModeAllowRules, h as injectAllowRules, i as writeInjectedSkill, l as prependArtifactPanelDirectiveToMirroredClaudeMd, o as appendToolbeltAwarenessToMirroredClaudeMd, r as injectedSkillsForLaunch, s as buildOperatingDefaultsDigest, t as injectAttributionSuppressionIntoSettingsFile, u as prependOperatingDefaultsToMirroredClaudeMd, x as resolveGroupKeysFromMirror, y as injectPeerMcpIntoMirror } from "./attribution-settings-DXmmyuEE.js";
16
+ import { C as writePeerMcpRuntimeFiles, S as workersKeyOf, a as appendPeerAwarenessToMirroredClaudeMd, b as resolveCodexCliBackend, c as buildOperatingDefaultsDirective, d as prependStyleDirectiveToMirroredClaudeMd, f as buildArtifactReviewSkill, g as planModeAllowRules, h as injectAllowRules, i as writeInjectedSkill, l as prependArtifactPanelDirectiveToMirroredClaudeMd, o as appendToolbeltAwarenessToMirroredClaudeMd, r as injectedSkillsForLaunch, s as buildOperatingDefaultsDigest, t as injectAttributionSuppressionIntoSettingsFile, u as prependOperatingDefaultsToMirroredClaudeMd, x as resolveGroupKeysFromMirror, y as injectPeerMcpIntoMirror } from "./attribution-settings-jcsSeVur.js";
17
17
  import { r as hookMcpRuntimeFromEnv } from "./hook-mcp-client-DBvm9608.js";
18
18
  import { i as planReviewEnabled, t as buildPlanReviewHookCommand } from "./plan-review-hook-BIMwWkh6.js";
19
- import { a as checksForDescriptor, i as writeDiscoveredGate, n as readDiscoveredGate, o as descriptorHash, r as sourcesHash, s as parseGateDescriptor, t as discoverGateCommands } from "./gate-discovery-CPk6Z8yc.js";
19
+ import { a as checksForDescriptor, i as writeDiscoveredGate, n as readDiscoveredGate, o as descriptorHash, r as sourcesHash, s as parseGateDescriptor, t as discoverGateCommands } from "./gate-discovery-z04ywOzB.js";
20
20
  import { t as buildPromptSubmitHookCommand } from "./prompt-submit-hook-BcFpjHXg.js";
21
21
  import { i as assertShapingInstalled, n as buildFirstMateGuardHookCommand, t as FIRST_MATE_GUARD_MATCHER } from "./internal-first-mate-guard-B0rbLb0L.js";
22
22
  import { r as FAST_DISPATCH_TOOL_MATCHER, t as buildFastDispatchGuardHookCommand } from "./internal-fast-dispatch-guard-CAwYj_Yz.js";
23
- import { i as assertMaxDispatchGuardInstalled, r as MAX_DISPATCH_TOOL_MATCHER, t as buildMaxDispatchGuardHookCommand } from "./internal-max-dispatch-guard-l1NGYHtF.js";
23
+ import { i as assertMaxDispatchGuardInstalled, r as MAX_DISPATCH_TOOL_MATCHER, t as buildMaxDispatchGuardHookCommand } from "./internal-max-dispatch-guard-BNqQ2wMc.js";
24
24
  import { n as formatDiscountedCostTable, t as discountedUsdForSnapshot } from "./copilot-discount-IbXR5A28.js";
25
25
  import { defineCommand } from "citty";
26
26
  import consola from "consola";
@@ -164,8 +164,8 @@ function createFastLaunchCleanup(deps) {
164
164
  }
165
165
  //#endregion
166
166
  //#region src/lib/fast-advisor-client.ts
167
- const ADVISOR_FLAG$1 = "--advisor";
168
- function featureEnvEnabled$1(value) {
167
+ const ADVISOR_FLAG$2 = "--advisor";
168
+ function featureEnvEnabled$2(value) {
169
169
  if (value === void 0) return true;
170
170
  return ![
171
171
  "",
@@ -178,7 +178,7 @@ function featureEnvEnabled$1(value) {
178
178
  /** Match Claude Code's hard-disable and experimental-enable opt-out semantics. */
179
179
  function fastAdvisorClientEnabled(env = process.env) {
180
180
  if (env.CLAUDE_CODE_DISABLE_ADVISOR_TOOL) return false;
181
- return featureEnvEnabled$1(env.CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL);
181
+ return featureEnvEnabled$2(env.CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL);
182
182
  }
183
183
  /**
184
184
  * Remove every caller-supplied Advisor option and insert the fixed fast value.
@@ -194,17 +194,17 @@ function withFixedFastAdvisorArg(args, enabled = fastAdvisorClientEnabled()) {
194
194
  const sanitized = [];
195
195
  for (let index = 0; index < args.length; index++) {
196
196
  const token = args[index];
197
- if (token === ADVISOR_FLAG$1) {
197
+ if (token === ADVISOR_FLAG$2) {
198
198
  const next = args[index + 1];
199
199
  if (next !== void 0 && next !== "--" && !next.startsWith("-")) index++;
200
200
  continue;
201
201
  }
202
- if (token.startsWith(`${ADVISOR_FLAG$1}=`)) continue;
202
+ if (token.startsWith(`${ADVISOR_FLAG$2}=`)) continue;
203
203
  sanitized.push(token);
204
204
  }
205
205
  if (!enabled) return sanitized;
206
206
  const separator = sanitized.indexOf("--");
207
- const fixed = [ADVISOR_FLAG$1, FAST_PROFILE_ADVISOR_CLIENT_MODEL];
207
+ const fixed = [ADVISOR_FLAG$2, FAST_PROFILE_ADVISOR_CLIENT_MODEL];
208
208
  if (separator < 0) return [...sanitized, ...fixed];
209
209
  return [
210
210
  ...sanitized.slice(0, separator),
@@ -214,8 +214,8 @@ function withFixedFastAdvisorArg(args, enabled = fastAdvisorClientEnabled()) {
214
214
  }
215
215
  //#endregion
216
216
  //#region src/lib/cheap-advisor-client.ts
217
- const ADVISOR_FLAG = "--advisor";
218
- function featureEnvEnabled(value) {
217
+ const ADVISOR_FLAG$1 = "--advisor";
218
+ function featureEnvEnabled$1(value) {
219
219
  if (value === void 0) return true;
220
220
  return ![
221
221
  "",
@@ -228,7 +228,7 @@ function featureEnvEnabled(value) {
228
228
  /** Match Claude Code's hard-disable and experimental-enable opt-out semantics. */
229
229
  function cheapAdvisorClientEnabled(env = process.env) {
230
230
  if (env.CLAUDE_CODE_DISABLE_ADVISOR_TOOL) return false;
231
- return featureEnvEnabled(env.CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL);
231
+ return featureEnvEnabled$1(env.CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL);
232
232
  }
233
233
  /**
234
234
  * Remove every caller-supplied Advisor option and insert the fixed cheap value
@@ -238,6 +238,53 @@ function cheapAdvisorClientEnabled(env = process.env) {
238
238
  * the first separator so Claude Code parses it as an option.
239
239
  */
240
240
  function withFixedCheapAdvisorArg(args, enabled = cheapAdvisorClientEnabled()) {
241
+ const sanitized = [];
242
+ for (let index = 0; index < args.length; index++) {
243
+ const token = args[index];
244
+ if (token === ADVISOR_FLAG$1) {
245
+ const next = args[index + 1];
246
+ if (next !== void 0 && next !== "--" && !next.startsWith("-")) index++;
247
+ continue;
248
+ }
249
+ if (token.startsWith(`${ADVISOR_FLAG$1}=`)) continue;
250
+ sanitized.push(token);
251
+ }
252
+ if (!enabled) return sanitized;
253
+ const separator = sanitized.indexOf("--");
254
+ const fixed = [ADVISOR_FLAG$1, CHEAP_PROFILE_ADVISOR_CLIENT_MODEL];
255
+ if (separator < 0) return [...sanitized, ...fixed];
256
+ return [
257
+ ...sanitized.slice(0, separator),
258
+ ...fixed,
259
+ ...sanitized.slice(separator)
260
+ ];
261
+ }
262
+ //#endregion
263
+ //#region src/lib/cheapest-advisor-client.ts
264
+ const ADVISOR_FLAG = "--advisor";
265
+ function featureEnvEnabled(value) {
266
+ if (value === void 0) return true;
267
+ return ![
268
+ "",
269
+ "0",
270
+ "false",
271
+ "no",
272
+ "off"
273
+ ].includes(value.trim().toLowerCase());
274
+ }
275
+ /** Match Claude Code's hard-disable and experimental-enable opt-out semantics. */
276
+ function cheapestAdvisorClientEnabled(env = process.env) {
277
+ if (env.CLAUDE_CODE_DISABLE_ADVISOR_TOOL) return false;
278
+ return featureEnvEnabled(env.CLAUDE_CODE_ENABLE_EXPERIMENTAL_ADVISOR_TOOL);
279
+ }
280
+ /**
281
+ * Remove every caller-supplied Advisor option and insert the fixed cheapest
282
+ * value (the BARE `gemini-3.8-flash` — 200K default window — see
283
+ * `CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL`). Same parser semantics as the
284
+ * cheap variant: keeps scanning after `--`, and the fixed option is inserted
285
+ * before the first separator so Claude Code parses it as an option.
286
+ */
287
+ function withFixedCheapestAdvisorArg(args, enabled = cheapestAdvisorClientEnabled()) {
241
288
  const sanitized = [];
242
289
  for (let index = 0; index < args.length; index++) {
243
290
  const token = args[index];
@@ -251,7 +298,7 @@ function withFixedCheapAdvisorArg(args, enabled = cheapAdvisorClientEnabled()) {
251
298
  }
252
299
  if (!enabled) return sanitized;
253
300
  const separator = sanitized.indexOf("--");
254
- const fixed = [ADVISOR_FLAG, CHEAP_PROFILE_ADVISOR_CLIENT_MODEL];
301
+ const fixed = [ADVISOR_FLAG, CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL];
255
302
  if (separator < 0) return [...sanitized, ...fixed];
256
303
  return [
257
304
  ...sanitized.slice(0, separator),
@@ -266,7 +313,7 @@ const claudeArgs = {
266
313
  model: {
267
314
  alias: "m",
268
315
  type: "string",
269
- description: "Override the default model for Claude Code. Accepts a profile alias (fast, cheap, cheap1m, max), a full slug (e.g. claude-opus-4-7), or an Opus family shorthand (e.g. 4.7, 4.8, 4.6) which expands to the best variant for that family — adding the [1m] suffix when a 1M-context backend is in the catalog."
316
+ description: "Override the default model for Claude Code. Accepts a profile alias (fast, cheap, cheap1m, cheapest, max), a full slug (e.g. claude-opus-4-7), or an Opus family shorthand (e.g. 4.7, 4.8, 4.6) which expands to the best variant for that family — adding the [1m] suffix when a 1M-context backend is in the catalog."
270
317
  },
271
318
  "codex-mcp": {
272
319
  type: "boolean",
@@ -383,8 +430,8 @@ const claude = defineCommand({
383
430
  process$1.stderr.write(`Max profile uses its fixed HTTP MCP surface; --codex-cli is not supported in max profile.\n`);
384
431
  process$1.exit(1);
385
432
  }
386
- if ((requestedLaunchProfileId === "fast" || requestedLaunchProfileId === "max" || requestedLaunchProfileId === "cheap" || requestedLaunchProfileId === "cheap1m") && !codexMcpEnabled) {
387
- const message = `github-router claude -m ${requestedLaunchProfileId === "fast" ? "fast" : requestedLaunchProfileId === "cheap" ? "cheap" : requestedLaunchProfileId === "cheap1m" ? "cheap1m" : "max"} requires codex MCP wiring for its native roster and dispatch ACL; remove --no-codex-mcp or choose a standard model.`;
433
+ if ((requestedLaunchProfileId === "fast" || requestedLaunchProfileId === "max" || requestedLaunchProfileId === "cheap" || requestedLaunchProfileId === "cheap1m" || requestedLaunchProfileId === "cheapest") && !codexMcpEnabled) {
434
+ const message = `github-router claude -m ${requestedLaunchProfileId === "fast" ? "fast" : requestedLaunchProfileId === "cheap" ? "cheap" : requestedLaunchProfileId === "cheap1m" ? "cheap1m" : requestedLaunchProfileId === "cheapest" ? "cheapest" : "max"} requires codex MCP wiring for its native roster and dispatch ACL; remove --no-codex-mcp or choose a standard model.`;
388
435
  process$1.stderr.write(`${message}\n`);
389
436
  process$1.exit(1);
390
437
  }
@@ -473,6 +520,9 @@ const claude = defineCommand({
473
520
  } else if (launchProfileId === "cheap" || launchProfileId === "cheap1m") {
474
521
  const prereqCheck = launchProfileId === "cheap1m" ? validateCheap1mProfilePrerequisites(state.models) : validateCheapProfilePrerequisites(state.models);
475
522
  if (!prereqCheck.ok) await fastFatal(launchProfileId === "cheap1m" ? formatCheap1mPrerequisiteFailure(prereqCheck.missing) : formatCheapPrerequisiteFailure(prereqCheck.missing));
523
+ } else if (launchProfileId === "cheapest") {
524
+ const prereqCheck = validateCheapestProfilePrerequisites(state.models);
525
+ if (!prereqCheck.ok) await fastFatal(formatCheapestPrerequisiteFailure(prereqCheck.missing));
476
526
  }
477
527
  let chosenSlug = requestedSlug;
478
528
  let resolvedSlug = resolveModel(chosenSlug);
@@ -508,6 +558,7 @@ const claude = defineCommand({
508
558
  let extraArgs = collectChildPassthroughArgs(rawArgs, claudeArgs);
509
559
  if (launchProfileId === "fast") extraArgs = withFixedFastAdvisorArg(extraArgs, fastAdvisorClientEnabled(process$1.env));
510
560
  else if (launchProfileId === "cheap" || launchProfileId === "cheap1m") extraArgs = withFixedCheapAdvisorArg(extraArgs, cheapAdvisorClientEnabled(process$1.env));
561
+ else if (launchProfileId === "cheapest") extraArgs = withFixedCheapestAdvisorArg(extraArgs, cheapestAdvisorClientEnabled(process$1.env));
511
562
  if (toolbeltEnabled()) {
512
563
  provisionToolbelt().catch((err) => consola.debug("Toolbelt provisioning failed:", err));
513
564
  const toolbeltLine = buildToolbeltAwareness(availableToolCommands());
@@ -533,7 +584,7 @@ const claude = defineCommand({
533
584
  let peerAwarenessSnippet;
534
585
  let peerAwarenessSummary;
535
586
  let operatingGroupKeys = {};
536
- let fastWiringComplete = launchProfileId !== "fast" && !(launchProfileId === "cheap" || launchProfileId === "cheap1m");
587
+ let fastWiringComplete = launchProfileId !== "fast" && !(launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest");
537
588
  const astraAvailable = (launchProfileId === "fast" || launchProfileId === "cheap1m") && Boolean(fastAstraModel());
538
589
  const browseAgentAvailable = browseAgentEnabled();
539
590
  const directBrowserAvailable = browserToolsEnabled();
@@ -552,6 +603,12 @@ const claude = defineCommand({
552
603
  "general-purpose": CHEAP_PROFILE_NATIVE_MODELS["general-purpose"],
553
604
  implementer: CHEAP_PROFILE_NATIVE_MODELS.implementer,
554
605
  reviewer: cheapReviewerModel()
606
+ } : launchProfileId === "cheapest" ? {
607
+ Explore: CHEAPEST_PROFILE_NATIVE_MODELS.Explore,
608
+ Plan: CHEAPEST_PROFILE_NATIVE_MODELS.Plan,
609
+ "general-purpose": CHEAPEST_PROFILE_NATIVE_MODELS["general-purpose"],
610
+ implementer: CHEAPEST_PROFILE_NATIVE_MODELS.implementer,
611
+ reviewer: cheapestReviewerModel()
555
612
  } : launchProfileId === "max" ? {
556
613
  Explore: MAX_PROFILE_MODELS.luna,
557
614
  Plan: MAX_PROFILE_MODELS.sol,
@@ -570,7 +627,7 @@ const claude = defineCommand({
570
627
  "general-purpose-fast": generalPurposeFastModel()
571
628
  };
572
629
  const nativeAvailability = {
573
- scoutAvailable: (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" ? nativeAgentModels.Explore : nativeAgentModels.scout) != null,
630
+ scoutAvailable: (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" ? nativeAgentModels.Explore : nativeAgentModels.scout) != null,
574
631
  implementerFastAvailable: nativeAgentModels["implementer-fast"] != null,
575
632
  reviewerFastAvailable: nativeAgentModels["reviewer-fast"] != null,
576
633
  generalPurposeFastAvailable: nativeAgentModels["general-purpose-fast"] != null,
@@ -586,7 +643,7 @@ const claude = defineCommand({
586
643
  const requestedCli = args["codex-cli"] ?? false;
587
644
  const isFastProfile = launchProfileId === "fast";
588
645
  const isMaxProfile = launchProfileId === "max";
589
- const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m";
646
+ const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest";
590
647
  const isPinnedProfile = isFastProfile || isMaxProfile || isCheapProfile;
591
648
  if ((isFastProfile || isCheapProfile) && requestedCli) process$1.stderr.write("Fast/cheap profile uses its fixed HTTP MCP surface; ignoring --codex-cli.\n");
592
649
  const backend = isPinnedProfile ? "http" : resolveCodexCliBackend({
@@ -613,7 +670,8 @@ const claude = defineCommand({
613
670
  if (isMaxProfile && agentToolsEnabled()) enabledGroups.push("first-mate");
614
671
  const { keys: groupKeys, skipped: skippedGroups } = await resolveGroupKeysFromMirror(enabledGroups);
615
672
  operatingGroupKeys = groupKeys;
616
- if (isPinnedProfile && ((isCheapProfile ? cheapOracleModel() : fastOracleModel()) == null || (isCheapProfile ? cheapAdvisorModel() : fastAdvisorModel()) == null || nativeAgentModels.implementer == null)) {
673
+ if (isPinnedProfile && ((launchProfileId === "cheapest" ? cheapestOracleModel() : isCheapProfile ? cheapOracleModel() : fastOracleModel()) == null || (launchProfileId === "cheapest" ? cheapestAdvisorModel() : isCheapProfile ? cheapAdvisorModel() : fastAdvisorModel()) == null || nativeAgentModels.implementer == null)) {
674
+ if (launchProfileId === "cheapest") throw new Error("cheapest profile prerequisite drift: exact implementer, oracle (gpt-5.6-sol), or advisor (gemini-3.8-flash) model no longer resolves");
617
675
  if (isCheapProfile) throw new Error("cheap profile prerequisite drift: exact implementer or oracle (grok-4.6) model no longer resolves");
618
676
  throw new Error("fast profile prerequisite drift: exact Oracle, Advisor, or implementer model no longer resolves");
619
677
  }
@@ -645,6 +703,13 @@ const claude = defineCommand({
645
703
  fastGeneralPurposeModel: nativeAgentModels["general-purpose"],
646
704
  fastImplementerModel: nativeAgentModels.implementer,
647
705
  fastReviewerModel: nativeAgentModels.reviewer
706
+ } : launchProfileId === "cheapest" ? {
707
+ cheapestProfile: true,
708
+ cheapestExploreModel: nativeAgentModels.Explore,
709
+ cheapestPlanModel: nativeAgentModels.Plan,
710
+ cheapestGeneralPurposeModel: nativeAgentModels["general-purpose"],
711
+ cheapestImplementerModel: nativeAgentModels.implementer,
712
+ cheapestReviewerModel: nativeAgentModels.reviewer
648
713
  } : isCheapProfile ? {
649
714
  cheapProfile: true,
650
715
  cheapExploreModel: nativeAgentModels.Explore,
@@ -991,13 +1056,13 @@ const claude = defineCommand({
991
1056
  consola.warn(`Style-directive CLAUDE.md prepend failed: ${err instanceof Error ? err.message : String(err)}`);
992
1057
  }
993
1058
  } catch (err) {
994
- if (launchProfileId === "fast" || launchProfileId === "max" || launchProfileId === "cheap" || launchProfileId === "cheap1m") {
1059
+ if (launchProfileId === "fast" || launchProfileId === "max" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest") {
995
1060
  if (fastLaunchId) unregisterLaunch(fastLaunchId);
996
1061
  await disposeFastRuntime().catch(() => {});
997
1062
  await server.close(true).catch(() => {});
998
1063
  await baseShutdown().catch(() => {});
999
1064
  resetFastRuntimeOwnership();
1000
- const message = `${launchProfileId === "fast" ? "Fast" : launchProfileId === "cheap" ? "Cheap" : launchProfileId === "cheap1m" ? "Cheap1m" : "Max"} profile wiring failed; refusing to launch an unguarded session: ${err instanceof Error ? err.message : String(err)}`;
1065
+ const message = `${launchProfileId === "fast" ? "Fast" : launchProfileId === "cheap" ? "Cheap" : launchProfileId === "cheap1m" ? "Cheap1m" : launchProfileId === "cheapest" ? "Cheapest" : "Max"} profile wiring failed; refusing to launch an unguarded session: ${err instanceof Error ? err.message : String(err)}`;
1001
1066
  consola.error(message);
1002
1067
  process$1.stderr.write(`${message}\n`);
1003
1068
  process$1.exit(1);
@@ -1059,4 +1124,4 @@ const claude = defineCommand({
1059
1124
  //#endregion
1060
1125
  export { claude };
1061
1126
 
1062
- //# sourceMappingURL=claude-Cmmu3-cL.js.map
1127
+ //# sourceMappingURL=claude-CJ4Nd2_3.js.map