github-router 0.3.322 → 0.3.323

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 (104) hide show
  1. package/dist/{aic-ledger-BW3zMiCx.js → aic-ledger-DRU89gJg.js} +2 -2
  2. package/dist/{aic-ledger-BW3zMiCx.js.map → aic-ledger-DRU89gJg.js.map} +1 -1
  3. package/dist/{attribution-settings-z-U2L7ab.js → attribution-settings-CX-kIrT8.js} +292 -101
  4. package/dist/attribution-settings-CX-kIrT8.js.map +1 -0
  5. package/dist/{auth-Iun7ftd8.js → auth-DSLN1arH.js} +3 -3
  6. package/dist/{auth-Iun7ftd8.js.map → auth-DSLN1arH.js.map} +1 -1
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/{check-usage-1c-0z3iy.js → check-usage-B_12ALvf.js} +4 -4
  9. package/dist/{check-usage-1c-0z3iy.js.map → check-usage-B_12ALvf.js.map} +1 -1
  10. package/dist/{claude-DtWf7DEw.js → claude-Cq1xGzbI.js} +61 -49
  11. package/dist/claude-Cq1xGzbI.js.map +1 -0
  12. package/dist/{codex-CDtFT-Qp.js → codex-INt1hc_5.js} +5 -5
  13. package/dist/{codex-CDtFT-Qp.js.map → codex-INt1hc_5.js.map} +1 -1
  14. package/dist/{copilot-discount-I6BrT7QE.js → copilot-discount-D8t7Q3Tp.js} +2 -2
  15. package/dist/{copilot-discount-I6BrT7QE.js.map → copilot-discount-D8t7Q3Tp.js.map} +1 -1
  16. package/dist/{debug-CDyXUPcC.js → debug-D8iD6G4O.js} +2 -2
  17. package/dist/{debug-CDyXUPcC.js.map → debug-D8iD6G4O.js.map} +1 -1
  18. package/dist/engine-4uuaURb0.js +2 -0
  19. package/dist/{fast-profile-contract-_DhIWank.js → fast-profile-contract-DmsyQQrw.js} +6 -11
  20. package/dist/fast-profile-contract-DmsyQQrw.js.map +1 -0
  21. package/dist/{gate-discovery-j_hQ1IPc.js → gate-discovery-Z0QyjqM7.js} +5 -5
  22. package/dist/{gate-discovery-j_hQ1IPc.js.map → gate-discovery-Z0QyjqM7.js.map} +1 -1
  23. package/dist/{get-copilot-usage-BWCAzmSc.js → get-copilot-usage-Bs-FEPMf.js} +2 -2
  24. package/dist/{get-copilot-usage-BWCAzmSc.js.map → get-copilot-usage-Bs-FEPMf.js.map} +1 -1
  25. package/dist/hooks.mjs +6 -12
  26. package/dist/hooks.sha256 +1 -1
  27. package/dist/{internal-aic-status-CKXxxb30.js → internal-aic-status-BaUKlisM.js} +3 -3
  28. package/dist/{internal-aic-status-CKXxxb30.js.map → internal-aic-status-BaUKlisM.js.map} +1 -1
  29. package/dist/{internal-artifact-open-CA1trJ15.js → internal-artifact-open-U-Ht7R-O.js} +2 -2
  30. package/dist/{internal-artifact-open-CA1trJ15.js.map → internal-artifact-open-U-Ht7R-O.js.map} +1 -1
  31. package/dist/{internal-fast-dispatch-guard-CZ4BZuAG.js → internal-fast-dispatch-guard-Dnjoj0pV.js} +4 -5
  32. package/dist/internal-fast-dispatch-guard-Dnjoj0pV.js.map +1 -0
  33. package/dist/{internal-fast-dispatch-guard-D5kozMpo.js → internal-fast-dispatch-guard-uztSu0c8.js} +1 -1
  34. package/dist/{internal-first-mate-guard-B_or0eN3.js → internal-first-mate-guard-Dvd1vZ4l.js} +1 -1
  35. package/dist/{internal-first-mate-guard-CiFH6X1H.js → internal-first-mate-guard-mvfZal_M.js} +3 -3
  36. package/dist/{internal-first-mate-guard-CiFH6X1H.js.map → internal-first-mate-guard-mvfZal_M.js.map} +1 -1
  37. package/dist/{internal-max-dispatch-guard-BGOHRYRt.js → internal-max-dispatch-guard-CxG_c3cc.js} +1 -1
  38. package/dist/{internal-max-dispatch-guard-CnBZxo5l.js → internal-max-dispatch-guard-Sp_rCYk_.js} +2 -2
  39. package/dist/{internal-max-dispatch-guard-CnBZxo5l.js.map → internal-max-dispatch-guard-Sp_rCYk_.js.map} +1 -1
  40. package/dist/{internal-plan-review-C73snnD8.js → internal-plan-review-Co01iHOW.js} +3 -3
  41. package/dist/{internal-plan-review-C73snnD8.js.map → internal-plan-review-Co01iHOW.js.map} +1 -1
  42. package/dist/{internal-prompt-submit-dov4UvBo.js → internal-prompt-submit-dflz0bqH.js} +4 -4
  43. package/dist/{internal-prompt-submit-dov4UvBo.js.map → internal-prompt-submit-dflz0bqH.js.map} +1 -1
  44. package/dist/{internal-session-bind-C3hrb9rP.js → internal-session-bind-BVQy7Vd4.js} +2 -2
  45. package/dist/{internal-session-bind-C3hrb9rP.js.map → internal-session-bind-BVQy7Vd4.js.map} +1 -1
  46. package/dist/{internal-stop-hook-BGTPRCtO.js → internal-stop-hook-DihBVzn2.js} +5 -5
  47. package/dist/{internal-stop-hook-BGTPRCtO.js.map → internal-stop-hook-DihBVzn2.js.map} +1 -1
  48. package/dist/{internal-stop-review-MBVYtrYS.js → internal-stop-review-CrnG4IJo.js} +2 -2
  49. package/dist/{internal-stop-review-MBVYtrYS.js.map → internal-stop-review-CrnG4IJo.js.map} +1 -1
  50. package/dist/{internal-worker-guard-dxGawAY3.js → internal-worker-guard-BSoS4wzV.js} +2 -2
  51. package/dist/{internal-worker-guard-dxGawAY3.js.map → internal-worker-guard-BSoS4wzV.js.map} +1 -1
  52. package/dist/{internal-workspace-header-_aEXOz5q.js → internal-workspace-header-booLOzwD.js} +2 -2
  53. package/dist/{internal-workspace-header-_aEXOz5q.js.map → internal-workspace-header-booLOzwD.js.map} +1 -1
  54. package/dist/{lifecycle-CJB2BwSJ.js → lifecycle-BYPEqFdV.js} +2 -2
  55. package/dist/{lifecycle-CJB2BwSJ.js.map → lifecycle-BYPEqFdV.js.map} +1 -1
  56. package/dist/{lifecycle-_BE0SnNs.js → lifecycle-C1LDvDD6.js} +2 -2
  57. package/dist/{lifecycle-_BE0SnNs.js.map → lifecycle-C1LDvDD6.js.map} +1 -1
  58. package/dist/lifecycle-Cz99P30h.js +2 -0
  59. package/dist/lifecycle-DqTFEJpS.js +2 -0
  60. package/dist/main.js +20 -20
  61. package/dist/{mcp-workspace-header-mXRLE8kg.js → mcp-workspace-header-BIW0SRgs.js} +2 -2
  62. package/dist/{mcp-workspace-header-mXRLE8kg.js.map → mcp-workspace-header-BIW0SRgs.js.map} +1 -1
  63. package/dist/{models-CSFIVxAH.js → models-B9tdaM6B.js} +3 -3
  64. package/dist/{models-CSFIVxAH.js.map → models-B9tdaM6B.js.map} +1 -1
  65. package/dist/{orchestration-B8kypXcZ.js → orchestration-DvsdorFq.js} +2 -2
  66. package/dist/{orchestration-B8kypXcZ.js.map → orchestration-DvsdorFq.js.map} +1 -1
  67. package/dist/{paths-CHBAj_t9.js → paths-BnZwolac.js} +4 -4
  68. package/dist/{paths-CHBAj_t9.js.map → paths-BnZwolac.js.map} +1 -1
  69. package/dist/paths-BzM6uxmd.js +2 -0
  70. package/dist/{peer-mcp-personas-Gb0LfII0.js → peer-mcp-personas-DcAErb_d.js} +201 -66
  71. package/dist/peer-mcp-personas-DcAErb_d.js.map +1 -0
  72. package/dist/{plan-review-hook-BMmw7wxR.js → plan-review-hook-BlsGnG02.js} +3 -3
  73. package/dist/{plan-review-hook-BMmw7wxR.js.map → plan-review-hook-BlsGnG02.js.map} +1 -1
  74. package/dist/{prompt-submit-hook-CGgT5m4Q.js → prompt-submit-hook-BJFLzCaT.js} +3 -3
  75. package/dist/{prompt-submit-hook-CGgT5m4Q.js.map → prompt-submit-hook-BJFLzCaT.js.map} +1 -1
  76. package/dist/{provision-DagZEkdZ.js → provision-B-a5KUCL.js} +4 -4
  77. package/dist/{provision-DagZEkdZ.js.map → provision-B-a5KUCL.js.map} +1 -1
  78. package/dist/{self-invocation-DahN1gw9.js → self-invocation-opSXHEs0.js} +2 -2
  79. package/dist/{self-invocation-DahN1gw9.js.map → self-invocation-opSXHEs0.js.map} +1 -1
  80. package/dist/{serve-DOMsmIk-.js → serve-TiUhvpVp.js} +12 -12
  81. package/dist/{serve-DOMsmIk-.js.map → serve-TiUhvpVp.js.map} +1 -1
  82. package/dist/{server-setup-DQVRJluz.js → server-setup-CgbHmupe.js} +186 -49
  83. package/dist/server-setup-CgbHmupe.js.map +1 -0
  84. package/dist/{start-CqSFR_s8.js → start-DNzOFabp.js} +3 -3
  85. package/dist/{start-CqSFR_s8.js.map → start-DNzOFabp.js.map} +1 -1
  86. package/dist/{stop-gate-hook-D7N759TG.js → stop-gate-hook-DvNM8zFf.js} +3 -3
  87. package/dist/{stop-gate-hook-D7N759TG.js.map → stop-gate-hook-DvNM8zFf.js.map} +1 -1
  88. package/dist/{stop-gate-policy-C0gt04R0.js → stop-gate-policy-C5pXbY59.js} +2 -2
  89. package/dist/{stop-gate-policy-C0gt04R0.js.map → stop-gate-policy-C5pXbY59.js.map} +1 -1
  90. package/dist/{token-86uk6y4P.js → token-Css-ARGL.js} +2 -2
  91. package/dist/{token-86uk6y4P.js.map → token-Css-ARGL.js.map} +1 -1
  92. package/dist/{worker-dispatch-B-OA7tvU.js → worker-dispatch-DwS99DXz.js} +2 -2
  93. package/dist/{worker-dispatch-B-OA7tvU.js.map → worker-dispatch-DwS99DXz.js.map} +1 -1
  94. package/package.json +1 -1
  95. package/dist/attribution-settings-z-U2L7ab.js.map +0 -1
  96. package/dist/claude-DtWf7DEw.js.map +0 -1
  97. package/dist/engine-DA5laGIh.js +0 -2
  98. package/dist/fast-profile-contract-_DhIWank.js.map +0 -1
  99. package/dist/internal-fast-dispatch-guard-CZ4BZuAG.js.map +0 -1
  100. package/dist/lifecycle-D0KsoSqz.js +0 -2
  101. package/dist/lifecycle-DimEguJO.js +0 -2
  102. package/dist/paths-eHoOwFzZ.js +0 -2
  103. package/dist/peer-mcp-personas-Gb0LfII0.js.map +0 -1
  104. package/dist/server-setup-DQVRJluz.js.map +0 -1
@@ -1,6 +1,6 @@
1
- import { i as ensurePaths, t as PATHS } from "./paths-CHBAj_t9.js";
1
+ import { i as ensurePaths, t as PATHS } from "./paths-BnZwolac.js";
2
2
  import { t as state } from "./state-BlMpEFAt.js";
3
- import { r as setupGitHubToken } from "./token-86uk6y4P.js";
3
+ import { r as setupGitHubToken } from "./token-Css-ARGL.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-Iun7ftd8.js.map
45
+ //# sourceMappingURL=auth-DSLN1arH.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth-Iun7ftd8.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-DSLN1arH.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.322",
5
+ "version": "0.3.323",
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
- import { i as ensurePaths } from "./paths-CHBAj_t9.js";
2
- import { r as setupGitHubToken } from "./token-86uk6y4P.js";
3
- import { t as getCopilotUsage } from "./get-copilot-usage-BWCAzmSc.js";
1
+ import { i as ensurePaths } from "./paths-BnZwolac.js";
2
+ import { r as setupGitHubToken } from "./token-Css-ARGL.js";
3
+ import { t as getCopilotUsage } from "./get-copilot-usage-Bs-FEPMf.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-1c-0z3iy.js.map
43
+ //# sourceMappingURL=check-usage-B_12ALvf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"check-usage-1c-0z3iy.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-B_12ALvf.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,27 +1,27 @@
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-Gb0LfII0.js";
2
- import { d as writeArtifactCredsToMirror, o as purgeNonRouterAgentsFromMirror, r as ensureClaudeConfigMirror, s as removeOwnClaudeConfigMirror, t as PATHS } from "./paths-CHBAj_t9.js";
1
+ import { At as implementerFastModel, Ct as fastOracleModel, D as toolbeltEnabled, Dn as pickClaudeDefault, Dt as fleetToolsEnabled, E as buildToolbeltAwareness, En as isBudgetClaudeLead, Et as fastScoutModel, Ft as scoutModel, Gn as CHEAPEST_PROFILE_NATIVE_MODELS, It as scribeModel, Kt as registerLaunch, Lt as standInToolEnabled, Mt as resolveGeminiReviewModel, Nt as reviewerFastModel, On as resolveLeadSlugArg, Ot as geminiAvailable, Pt as reviewerModel, Rt as workerToolsEnabled, St as fastGeneralPurposeModel, T as availableToolCommands, Tt as fastReviewerModel, Vn as CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL, Zn as CHEAP_PROFILE_NATIVE_MODELS, _t as cheapestAdvisorModel, an as colbertDegradedWarning, at as agentToolsEnabled, bt as fastAdvisorModel, ct as balancedOracleModel, dt as browseAgentEnabled, ft as browserCompoundToolsEnabled, gt as cheapReviewerModel, ht as cheapOracleModel, jt as nativeSubagentModel, kt as generalPurposeFastModel, lt as balancedReviewerModel, mn as shouldUseInsecureTls, mt as cheapAdvisorModel, o as buildPeerAwarenessSnippet, on as provisionAndIndexColbert, ot as artifactToolsEnabled, pt as browserToolsEnabled, qn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL, qt as unregisterLaunch, r as agentNamesForToolAllowlist, rn as provisionBrowserAssets, s as buildPeerAwarenessSummary, sn as semanticSearchOptedIn, st as balancedAdvisorModel, un as warmTreeSitterPool, ut as brainstormModel, vt as cheapestOracleModel, wt as fastPlanModel, xt as fastAstraModel, yn as DEFAULT_CLAUDE_MODEL_FALLBACKS, yt as cheapestReviewerModel, zn as BALANCED_PROFILE_NATIVE_MODELS } from "./peer-mcp-personas-DcAErb_d.js";
2
+ import { d as writeArtifactCredsToMirror, o as purgeNonRouterAgentsFromMirror, r as ensureClaudeConfigMirror, s as removeOwnClaudeConfigMirror, t as PATHS } from "./paths-BnZwolac.js";
3
3
  import { t as state } from "./state-BlMpEFAt.js";
4
- import { d as resolveModel } from "./token-86uk6y4P.js";
4
+ import { d as resolveModel } from "./token-Css-ARGL.js";
5
5
  import { i as parseBoolEnv } from "./exec-COUT4QsS.js";
6
- import { A as validateCheapProfilePrerequisites, C as formatCheap1mPrerequisiteFailure, D as profileDescriptor, E as formatFastPrerequisiteFailure, F as checkClaudeVersion, I as updateClaude, M as validateFastProfilePrerequisites, N as validateMaxProfileLaunch, O as resolveLaunchProfile, P as runSelfUpdate, T as formatCheapestPrerequisiteFailure, a as sharedServerArgs, c as stopKeepAwake, d as enableFileLogging, i as setupAndServe, j as validateCheapestProfilePrerequisites, k as validateCheap1mProfilePrerequisites, l as injectModelPickerSettingsFile, o as LAUNCH_SECRET_HEADER, r as parseSharedArgs, s as startKeepAwake, t as getClaudeCodeEnvVars, u as listModelsForEndpoint, w as formatCheapPrerequisiteFailure } from "./server-setup-DQVRJluz.js";
7
- import { t as FAST_PROFILE_ADVISOR_CLIENT_MODEL } from "./fast-profile-contract-_DhIWank.js";
6
+ import { A as profileDescriptor, B as updateClaude, D as formatCheapPrerequisiteFailure, E as formatCheap1mPrerequisiteFailure, F as validateCheapestProfilePrerequisites, I as validateFastProfilePrerequisites, L as validateMaxProfileLaunch, M as validateBalancedProfilePrerequisites, N as validateCheap1mProfilePrerequisites, O as formatCheapestPrerequisiteFailure, P as validateCheapProfilePrerequisites, R as runSelfUpdate, T as formatBalancedPrerequisiteFailure, a as sharedServerArgs, c as stopKeepAwake, d as enableFileLogging, i as setupAndServe, j as resolveLaunchProfile, k as formatFastPrerequisiteFailure, l as injectModelPickerSettingsFile, o as LAUNCH_SECRET_HEADER, r as parseSharedArgs, s as startKeepAwake, t as getClaudeCodeEnvVars, u as listModelsForEndpoint, z as checkClaudeVersion } from "./server-setup-CgbHmupe.js";
7
+ import { t as FAST_PROFILE_ADVISOR_CLIENT_MODEL } from "./fast-profile-contract-DmsyQQrw.js";
8
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
- import { n as hookLauncherDegradedWarning, r as resolveSelfInvocation, t as buildSelfCommand } from "./self-invocation-DahN1gw9.js";
10
- import { i as launchChild, r as getCodexVersion, t as provisionToolbelt } from "./provision-DagZEkdZ.js";
11
- import { d as sweepStaleAicLedgerFiles, n as aicSnapshot, o as formatAicExitSummary, t as aicLedgerPath, u as removeAicLedgerFile } from "./aic-ledger-BW3zMiCx.js";
12
- import { d as stopGateId, i as captureLaunchBaseline, l as purgeNonRouterHooksForPinnedProfile, n as buildSessionBindHookCommand, r as buildStopHookCommand, s as injectStopHookIntoSettingsFile, t as buildArtifactOpenHookCommand, u as stopGateDisabled } from "./stop-gate-hook-D7N759TG.js";
13
- import { t as liveExec } from "./orchestration-B8kypXcZ.js";
14
- import { c as repoRoot, d as trustRepo, l as stopGateEnabledForRepo, s as repoFingerprint, t as fileBaselineStore } from "./stop-gate-policy-C0gt04R0.js";
15
- import { l as guardToolMatcher, n as activeDispatchModes, r as buildWorkerGuardHookCommand } from "./worker-dispatch-B-OA7tvU.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-z-U2L7ab.js";
9
+ import { n as hookLauncherDegradedWarning, r as resolveSelfInvocation, t as buildSelfCommand } from "./self-invocation-opSXHEs0.js";
10
+ import { i as launchChild, r as getCodexVersion, t as provisionToolbelt } from "./provision-B-a5KUCL.js";
11
+ import { d as sweepStaleAicLedgerFiles, n as aicSnapshot, o as formatAicExitSummary, t as aicLedgerPath, u as removeAicLedgerFile } from "./aic-ledger-DRU89gJg.js";
12
+ import { d as stopGateId, i as captureLaunchBaseline, l as purgeNonRouterHooksForPinnedProfile, n as buildSessionBindHookCommand, r as buildStopHookCommand, s as injectStopHookIntoSettingsFile, t as buildArtifactOpenHookCommand, u as stopGateDisabled } from "./stop-gate-hook-DvNM8zFf.js";
13
+ import { t as liveExec } from "./orchestration-DvsdorFq.js";
14
+ import { c as repoRoot, d as trustRepo, l as stopGateEnabledForRepo, s as repoFingerprint, t as fileBaselineStore } from "./stop-gate-policy-C5pXbY59.js";
15
+ import { l as guardToolMatcher, n as activeDispatchModes, r as buildWorkerGuardHookCommand } from "./worker-dispatch-DwS99DXz.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-CX-kIrT8.js";
17
17
  import { r as hookMcpRuntimeFromEnv } from "./hook-mcp-client-DBvm9608.js";
18
- import { i as planReviewEnabled, t as buildPlanReviewHookCommand } from "./plan-review-hook-BMmw7wxR.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-j_hQ1IPc.js";
20
- import { t as buildPromptSubmitHookCommand } from "./prompt-submit-hook-CGgT5m4Q.js";
21
- import { i as assertShapingInstalled, n as buildFirstMateGuardHookCommand, t as FIRST_MATE_GUARD_MATCHER } from "./internal-first-mate-guard-CiFH6X1H.js";
22
- import { r as FAST_DISPATCH_TOOL_MATCHER, t as buildFastDispatchGuardHookCommand } from "./internal-fast-dispatch-guard-CZ4BZuAG.js";
23
- import { i as assertMaxDispatchGuardInstalled, r as MAX_DISPATCH_TOOL_MATCHER, t as buildMaxDispatchGuardHookCommand } from "./internal-max-dispatch-guard-CnBZxo5l.js";
24
- import { n as formatDiscountedCostTable, t as discountedUsdForSnapshot } from "./copilot-discount-I6BrT7QE.js";
18
+ import { i as planReviewEnabled, t as buildPlanReviewHookCommand } from "./plan-review-hook-BlsGnG02.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-Z0QyjqM7.js";
20
+ import { t as buildPromptSubmitHookCommand } from "./prompt-submit-hook-BJFLzCaT.js";
21
+ import { i as assertShapingInstalled, n as buildFirstMateGuardHookCommand, t as FIRST_MATE_GUARD_MATCHER } from "./internal-first-mate-guard-mvfZal_M.js";
22
+ import { r as FAST_DISPATCH_TOOL_MATCHER, t as buildFastDispatchGuardHookCommand } from "./internal-fast-dispatch-guard-Dnjoj0pV.js";
23
+ import { i as assertMaxDispatchGuardInstalled, r as MAX_DISPATCH_TOOL_MATCHER, t as buildMaxDispatchGuardHookCommand } from "./internal-max-dispatch-guard-Sp_rCYk_.js";
24
+ import { n as formatDiscountedCostTable, t as discountedUsdForSnapshot } from "./copilot-discount-D8t7Q3Tp.js";
25
25
  import { defineCommand } from "citty";
26
26
  import consola from "consola";
27
27
  import path from "node:path";
@@ -348,7 +348,7 @@ const claudeArgs = {
348
348
  model: {
349
349
  alias: "m",
350
350
  type: "string",
351
- 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."
351
+ description: "Override the default model for Claude Code. Accepts a profile alias (fast, cheap, cheap1m, cheapest, balanced, 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."
352
352
  },
353
353
  "codex-mcp": {
354
354
  type: "boolean",
@@ -465,8 +465,8 @@ const claude = defineCommand({
465
465
  process$1.stderr.write(`Max profile uses its fixed HTTP MCP surface; --codex-cli is not supported in max profile.\n`);
466
466
  process$1.exit(1);
467
467
  }
468
- if ((requestedLaunchProfileId === "fast" || requestedLaunchProfileId === "max" || requestedLaunchProfileId === "cheap" || requestedLaunchProfileId === "cheap1m" || requestedLaunchProfileId === "cheapest") && !codexMcpEnabled) {
469
- 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.`;
468
+ if ((requestedLaunchProfileId === "fast" || requestedLaunchProfileId === "max" || requestedLaunchProfileId === "cheap" || requestedLaunchProfileId === "cheap1m" || requestedLaunchProfileId === "cheapest" || requestedLaunchProfileId === "balanced") && !codexMcpEnabled) {
469
+ const message = `github-router claude -m ${requestedLaunchProfileId === "fast" ? "fast" : requestedLaunchProfileId === "cheap" ? "cheap" : requestedLaunchProfileId === "cheap1m" ? "cheap1m" : requestedLaunchProfileId === "cheapest" ? "cheapest" : requestedLaunchProfileId === "balanced" ? "balanced" : "max"} requires codex MCP wiring for its native roster and dispatch ACL; remove --no-codex-mcp or choose a standard model.`;
470
470
  process$1.stderr.write(`${message}\n`);
471
471
  process$1.exit(1);
472
472
  }
@@ -558,6 +558,9 @@ const claude = defineCommand({
558
558
  } else if (launchProfileId === "cheapest") {
559
559
  const prereqCheck = validateCheapestProfilePrerequisites(state.models);
560
560
  if (!prereqCheck.ok) await fastFatal(formatCheapestPrerequisiteFailure(prereqCheck.missing));
561
+ } else if (launchProfileId === "balanced") {
562
+ const prereqCheck = validateBalancedProfilePrerequisites(state.models);
563
+ if (!prereqCheck.ok) await fastFatal(formatBalancedPrerequisiteFailure(prereqCheck.missing));
561
564
  }
562
565
  let chosenSlug = requestedSlug;
563
566
  let resolvedSlug = resolveModel(chosenSlug);
@@ -606,7 +609,7 @@ const claude = defineCommand({
606
609
  consola.warn(`Model-picker settings injection skipped: ${err instanceof Error ? err.message : String(err)}. Use an explicit -m model if the curated rows are unavailable.`);
607
610
  }
608
611
  const envVars = getClaudeCodeEnvVars(serverUrl, chosenSlug, launchProfileId, pickerModels);
609
- if (launchProfileId === "cheap" || launchProfileId === "cheapest") {
612
+ if (launchProfileId === "cheap" || launchProfileId === "cheapest" || launchProfileId === "balanced") {
610
613
  const suspectKeys = [
611
614
  "ANTHROPIC_MODEL",
612
615
  "ANTHROPIC_DEFAULT_OPUS_MODEL",
@@ -617,10 +620,10 @@ const claude = defineCommand({
617
620
  const suspectPicker = (pickerModels ?? []).filter((id) => /\[1m\]/i.test(id));
618
621
  if (suspectKeys.length > 0 || suspectPicker.length > 0) consola.warn(`Pinned-profile context leak (${launchProfileId} must be bare 200K): ` + [...suspectKeys.map((key) => `env:${key}`), ...suspectPicker.map((id) => `picker:${id}`)].join(", "));
619
622
  }
620
- if (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest") consola.info(`Pinned launch: profile=${launchProfileId} lead=${chosenSlug} pickerRows=${pickerModels?.length ?? 0}.`);
623
+ if (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced") consola.info(`Pinned launch: profile=${launchProfileId} lead=${chosenSlug} pickerRows=${pickerModels?.length ?? 0}.`);
621
624
  let extraArgs = collectChildPassthroughArgs(rawArgs, claudeArgs);
622
625
  if (launchProfileId === "fast") extraArgs = withFixedFastAdvisorArg(extraArgs, fastAdvisorClientEnabled(process$1.env));
623
- else if (launchProfileId === "cheap" || launchProfileId === "cheap1m") extraArgs = withFixedCheapAdvisorArg(extraArgs, cheapAdvisorClientEnabled(process$1.env));
626
+ else if (launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "balanced") extraArgs = withFixedCheapAdvisorArg(extraArgs, cheapAdvisorClientEnabled(process$1.env));
624
627
  else if (launchProfileId === "cheapest") extraArgs = withFixedCheapestAdvisorArg(extraArgs, cheapestAdvisorClientEnabled(process$1.env));
625
628
  if (toolbeltEnabled()) {
626
629
  provisionToolbelt().catch((err) => consola.debug("Toolbelt provisioning failed:", err));
@@ -647,7 +650,7 @@ const claude = defineCommand({
647
650
  let peerAwarenessSnippet;
648
651
  let peerAwarenessSummary;
649
652
  let operatingGroupKeys = {};
650
- let fastWiringComplete = launchProfileId !== "fast" && !(launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest");
653
+ let fastWiringComplete = launchProfileId !== "fast" && !(launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced");
651
654
  const astraAvailable = (launchProfileId === "fast" || launchProfileId === "cheap1m") && Boolean(fastAstraModel());
652
655
  const browseAgentAvailable = browseAgentEnabled();
653
656
  const directBrowserAvailable = browserToolsEnabled();
@@ -657,21 +660,23 @@ const claude = defineCommand({
657
660
  const nativeAgentModels = launchProfileId === "fast" ? {
658
661
  Explore: fastScoutModel(),
659
662
  Plan: fastPlanModel(),
660
- "general-purpose": fastGeneralPurposeModel(),
661
- implementer: fastImplementerModel(),
663
+ "General-Purpose": fastGeneralPurposeModel(),
662
664
  reviewer: fastReviewerModel()
663
665
  } : launchProfileId === "cheap" || launchProfileId === "cheap1m" ? {
664
666
  Explore: CHEAP_PROFILE_NATIVE_MODELS.Explore,
665
667
  Plan: CHEAP_PROFILE_NATIVE_MODELS.Plan,
666
- "general-purpose": CHEAP_PROFILE_NATIVE_MODELS["general-purpose"],
667
- implementer: CHEAP_PROFILE_NATIVE_MODELS.implementer,
668
+ "General-Purpose": CHEAP_PROFILE_NATIVE_MODELS["General-Purpose"],
668
669
  reviewer: cheapReviewerModel()
669
670
  } : launchProfileId === "cheapest" ? {
670
671
  Explore: CHEAPEST_PROFILE_NATIVE_MODELS.Explore,
671
672
  Plan: CHEAPEST_PROFILE_NATIVE_MODELS.Plan,
672
- "general-purpose": CHEAPEST_PROFILE_NATIVE_MODELS["general-purpose"],
673
- implementer: CHEAPEST_PROFILE_NATIVE_MODELS.implementer,
673
+ "General-Purpose": CHEAPEST_PROFILE_NATIVE_MODELS["General-Purpose"],
674
674
  reviewer: cheapestReviewerModel()
675
+ } : launchProfileId === "balanced" ? {
676
+ Explore: BALANCED_PROFILE_NATIVE_MODELS.Explore,
677
+ Plan: BALANCED_PROFILE_NATIVE_MODELS.Plan,
678
+ "General-Purpose": BALANCED_PROFILE_NATIVE_MODELS["General-Purpose"],
679
+ reviewer: balancedReviewerModel()
675
680
  } : launchProfileId === "max" ? {
676
681
  Explore: MAX_PROFILE_MODELS.luna,
677
682
  Plan: MAX_PROFILE_MODELS.sol,
@@ -690,7 +695,7 @@ const claude = defineCommand({
690
695
  "general-purpose-fast": generalPurposeFastModel()
691
696
  };
692
697
  const nativeAvailability = {
693
- scoutAvailable: (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" ? nativeAgentModels.Explore : nativeAgentModels.scout) != null,
698
+ scoutAvailable: (launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced" ? nativeAgentModels.Explore : nativeAgentModels.scout) != null,
694
699
  implementerFastAvailable: nativeAgentModels["implementer-fast"] != null,
695
700
  reviewerFastAvailable: nativeAgentModels["reviewer-fast"] != null,
696
701
  generalPurposeFastAvailable: nativeAgentModels["general-purpose-fast"] != null,
@@ -706,7 +711,7 @@ const claude = defineCommand({
706
711
  const requestedCli = args["codex-cli"] ?? false;
707
712
  const isFastProfile = launchProfileId === "fast";
708
713
  const isMaxProfile = launchProfileId === "max";
709
- const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest";
714
+ const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced";
710
715
  const isPinnedProfile = isFastProfile || isMaxProfile || isCheapProfile;
711
716
  if ((isFastProfile || isCheapProfile) && requestedCli) process$1.stderr.write("Fast/cheap profile uses its fixed HTTP MCP surface; ignoring --codex-cli.\n");
712
717
  const backend = isPinnedProfile ? "http" : resolveCodexCliBackend({
@@ -733,10 +738,11 @@ const claude = defineCommand({
733
738
  if (isMaxProfile && agentToolsEnabled()) enabledGroups.push("first-mate");
734
739
  const { keys: groupKeys, skipped: skippedGroups } = await resolveGroupKeysFromMirror(enabledGroups);
735
740
  operatingGroupKeys = groupKeys;
736
- if (isPinnedProfile && ((launchProfileId === "cheapest" ? cheapestOracleModel() : isCheapProfile ? cheapOracleModel() : fastOracleModel()) == null || (launchProfileId === "cheapest" ? cheapestAdvisorModel() : isCheapProfile ? cheapAdvisorModel() : fastAdvisorModel()) == null || nativeAgentModels.implementer == null)) {
737
- 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");
738
- if (isCheapProfile) throw new Error("cheap profile prerequisite drift: exact implementer or oracle (grok-4.6) model no longer resolves");
739
- throw new Error("fast profile prerequisite drift: exact Oracle, Advisor, or implementer model no longer resolves");
741
+ if (isPinnedProfile && ((launchProfileId === "cheapest" ? cheapestOracleModel() : launchProfileId === "balanced" ? balancedOracleModel() : isCheapProfile ? cheapOracleModel() : fastOracleModel()) == null || (launchProfileId === "cheapest" ? cheapestAdvisorModel() : launchProfileId === "balanced" ? balancedAdvisorModel() : isCheapProfile ? cheapAdvisorModel() : fastAdvisorModel()) == null || nativeAgentModels.reviewer == null)) {
742
+ if (launchProfileId === "cheapest") throw new Error("cheapest profile prerequisite drift: exact reviewer, oracle (gpt-5.6-sol), or advisor (gemini-3.8-flash) model no longer resolves");
743
+ if (launchProfileId === "balanced") throw new Error("balanced profile prerequisite drift: exact reviewer, oracle (grok-4.6), or advisor (gpt-5.6-sol) model no longer resolves");
744
+ if (isCheapProfile) throw new Error("cheap profile prerequisite drift: exact reviewer or oracle (grok-4.6) model no longer resolves");
745
+ throw new Error("fast profile prerequisite drift: exact Oracle, Advisor, or reviewer model no longer resolves");
740
746
  }
741
747
  const leadPeersNonce = (isFastProfile || launchProfileId === "cheap1m") && astraAvailable ? randomBytes(32).toString("hex") : void 0;
742
748
  const runtime = await writePeerMcpRuntimeFiles(serverUrl, {
@@ -759,26 +765,30 @@ const claude = defineCommand({
759
765
  nativeRoster: fastDescriptor.nativeRoster,
760
766
  personaAllowlist: isFastProfile || isCheapProfile ? void 0 : fastDescriptor.personaAllowlist ? agentNamesForToolAllowlist(fastDescriptor.personaAllowlist) : void 0,
761
767
  includeCoordinator: fastDescriptor.hasCoordinator,
768
+ semanticSearchAvailable: semanticSearchOptedIn(),
762
769
  ...isFastProfile ? {
763
770
  fastProfile: true,
764
771
  fastExploreModel: nativeAgentModels.Explore,
765
772
  fastPlanModel: nativeAgentModels.Plan,
766
- fastGeneralPurposeModel: nativeAgentModels["general-purpose"],
767
- fastImplementerModel: nativeAgentModels.implementer,
773
+ fastGeneralPurposeModel: nativeAgentModels["General-Purpose"],
768
774
  fastReviewerModel: nativeAgentModels.reviewer
769
775
  } : launchProfileId === "cheapest" ? {
770
776
  cheapestProfile: true,
771
777
  cheapestExploreModel: nativeAgentModels.Explore,
772
778
  cheapestPlanModel: nativeAgentModels.Plan,
773
- cheapestGeneralPurposeModel: nativeAgentModels["general-purpose"],
774
- cheapestImplementerModel: nativeAgentModels.implementer,
779
+ cheapestGeneralPurposeModel: nativeAgentModels["General-Purpose"],
775
780
  cheapestReviewerModel: nativeAgentModels.reviewer
781
+ } : launchProfileId === "balanced" ? {
782
+ balancedProfile: true,
783
+ balancedExploreModel: nativeAgentModels.Explore,
784
+ balancedPlanModel: nativeAgentModels.Plan,
785
+ balancedGeneralPurposeModel: nativeAgentModels["General-Purpose"],
786
+ balancedReviewerModel: nativeAgentModels.reviewer
776
787
  } : isCheapProfile ? {
777
788
  cheapProfile: true,
778
789
  cheapExploreModel: nativeAgentModels.Explore,
779
790
  cheapPlanModel: nativeAgentModels.Plan,
780
- cheapGeneralPurposeModel: nativeAgentModels["general-purpose"],
781
- cheapImplementerModel: nativeAgentModels.implementer,
791
+ cheapGeneralPurposeModel: nativeAgentModels["General-Purpose"],
782
792
  cheapReviewerModel: nativeAgentModels.reviewer
783
793
  } : isMaxProfile ? {
784
794
  maxProfile: true,
@@ -1089,6 +1099,7 @@ const claude = defineCommand({
1089
1099
  agentToolsAvailable: agentToolsEnabled(),
1090
1100
  artifactToolsAvailable: artifactAvailable,
1091
1101
  astraAvailable,
1102
+ semanticSearchAvailable: semanticSearchOptedIn(),
1092
1103
  ...nativeAvailability,
1093
1104
  profile: launchProfileId,
1094
1105
  groupKeys
@@ -1119,13 +1130,13 @@ const claude = defineCommand({
1119
1130
  consola.warn(`Style-directive CLAUDE.md prepend failed: ${err instanceof Error ? err.message : String(err)}`);
1120
1131
  }
1121
1132
  } catch (err) {
1122
- if (launchProfileId === "fast" || launchProfileId === "max" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest") {
1133
+ if (launchProfileId === "fast" || launchProfileId === "max" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced") {
1123
1134
  if (fastLaunchId) unregisterLaunch(fastLaunchId);
1124
1135
  await disposeFastRuntime().catch(() => {});
1125
1136
  await server.close(true).catch(() => {});
1126
1137
  await baseShutdown().catch(() => {});
1127
1138
  resetFastRuntimeOwnership();
1128
- 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)}`;
1139
+ const message = `${launchProfileId === "fast" ? "Fast" : launchProfileId === "cheap" ? "Cheap" : launchProfileId === "cheap1m" ? "Cheap1m" : launchProfileId === "cheapest" ? "Cheapest" : launchProfileId === "balanced" ? "Balanced" : "Max"} profile wiring failed; refusing to launch an unguarded session: ${err instanceof Error ? err.message : String(err)}`;
1129
1140
  consola.error(message);
1130
1141
  process$1.stderr.write(`${message}\n`);
1131
1142
  process$1.exit(1);
@@ -1145,6 +1156,7 @@ const claude = defineCommand({
1145
1156
  browserToolsAvailable: directBrowserAvailable,
1146
1157
  artifactAvailable,
1147
1158
  astraAvailable,
1159
+ semanticSearchAvailable: semanticSearchOptedIn(),
1148
1160
  groupKeys: operatingGroupKeys,
1149
1161
  peersKey: operatingGroupKeys.peers
1150
1162
  }));
@@ -1159,7 +1171,7 @@ const claude = defineCommand({
1159
1171
  }
1160
1172
  if (process$1.env.GH_ROUTER_DISABLE_AIC_STATUSLINE !== "1") try {
1161
1173
  sweepStaleAicLedgerFiles();
1162
- const injected = await injectAicStatusLineIntoSettingsFile(path.join(PATHS.CLAUDE_CONFIG_DIR, "settings.json"), buildAicStatusHookCommand(selfInvocation), launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" ? { routerWins: true } : {});
1174
+ const injected = await injectAicStatusLineIntoSettingsFile(path.join(PATHS.CLAUDE_CONFIG_DIR, "settings.json"), buildAicStatusHookCommand(selfInvocation), launchProfileId === "fast" || launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest" || launchProfileId === "balanced" ? { routerWins: true } : {});
1163
1175
  if (injected.written) {
1164
1176
  envVars[AIC_LEDGER_ENV] = aicLedgerPath();
1165
1177
  if (injected.mode === "wrapped" && injected.userCommand) envVars[AIC_USER_STATUSLINE_ENV] = injected.userCommand;
@@ -1188,4 +1200,4 @@ const claude = defineCommand({
1188
1200
  //#endregion
1189
1201
  export { claude };
1190
1202
 
1191
- //# sourceMappingURL=claude-DtWf7DEw.js.map
1203
+ //# sourceMappingURL=claude-Cq1xGzbI.js.map