github-router 0.3.316 → 0.3.318

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 (99) hide show
  1. package/dist/{aic-ledger-BS47yb_C.js → aic-ledger-DY03LbBM.js} +2 -2
  2. package/dist/{aic-ledger-BS47yb_C.js.map → aic-ledger-DY03LbBM.js.map} +1 -1
  3. package/dist/{attribution-settings-jcsSeVur.js → attribution-settings-CyyOsjPF.js} +39 -28
  4. package/dist/attribution-settings-CyyOsjPF.js.map +1 -0
  5. package/dist/{auth-JfxL9q7z.js → auth-Iun7ftd8.js} +3 -3
  6. package/dist/{auth-JfxL9q7z.js.map → auth-Iun7ftd8.js.map} +1 -1
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/{check-usage-DXUEQzt_.js → check-usage-1c-0z3iy.js} +4 -4
  9. package/dist/{check-usage-DXUEQzt_.js.map → check-usage-1c-0z3iy.js.map} +1 -1
  10. package/dist/{claude-CJ4Nd2_3.js → claude-UhOOquJW.js} +92 -28
  11. package/dist/claude-UhOOquJW.js.map +1 -0
  12. package/dist/{codex-CwuLqNZF.js → codex-CyuVJFDZ.js} +5 -5
  13. package/dist/{codex-CwuLqNZF.js.map → codex-CyuVJFDZ.js.map} +1 -1
  14. package/dist/{copilot-discount-IbXR5A28.js → copilot-discount-C3jx9Q-o.js} +2 -2
  15. package/dist/{copilot-discount-IbXR5A28.js.map → copilot-discount-C3jx9Q-o.js.map} +1 -1
  16. package/dist/{debug-CA7pg8V9.js → debug-CDyXUPcC.js} +2 -2
  17. package/dist/{debug-CA7pg8V9.js.map → debug-CDyXUPcC.js.map} +1 -1
  18. package/dist/engine-D5GNXylB.js +2 -0
  19. package/dist/{gate-discovery-z04ywOzB.js → gate-discovery-B17pvgE0.js} +5 -5
  20. package/dist/{gate-discovery-z04ywOzB.js.map → gate-discovery-B17pvgE0.js.map} +1 -1
  21. package/dist/{get-copilot-usage-BMD_cJNT.js → get-copilot-usage-BWCAzmSc.js} +2 -2
  22. package/dist/{get-copilot-usage-BMD_cJNT.js.map → get-copilot-usage-BWCAzmSc.js.map} +1 -1
  23. package/dist/hooks.mjs +124 -117
  24. package/dist/hooks.sha256 +1 -1
  25. package/dist/{internal-aic-status-BN0xRLSF.js → internal-aic-status-BiblmImt.js} +13 -6
  26. package/dist/{internal-aic-status-BN0xRLSF.js.map → internal-aic-status-BiblmImt.js.map} +1 -1
  27. package/dist/{internal-artifact-open-B3stUu74.js → internal-artifact-open-CA1trJ15.js} +2 -2
  28. package/dist/{internal-artifact-open-B3stUu74.js.map → internal-artifact-open-CA1trJ15.js.map} +1 -1
  29. package/dist/{internal-fast-dispatch-guard-CAwYj_Yz.js → internal-fast-dispatch-guard-CZ4BZuAG.js} +2 -2
  30. package/dist/{internal-fast-dispatch-guard-CAwYj_Yz.js.map → internal-fast-dispatch-guard-CZ4BZuAG.js.map} +1 -1
  31. package/dist/{internal-fast-dispatch-guard-2QjUlhqO.js → internal-fast-dispatch-guard-D5kozMpo.js} +1 -1
  32. package/dist/{internal-first-mate-guard-VgnHBp0s.js → internal-first-mate-guard-B_or0eN3.js} +1 -1
  33. package/dist/{internal-first-mate-guard-B0rbLb0L.js → internal-first-mate-guard-CiFH6X1H.js} +3 -3
  34. package/dist/{internal-first-mate-guard-B0rbLb0L.js.map → internal-first-mate-guard-CiFH6X1H.js.map} +1 -1
  35. package/dist/{internal-max-dispatch-guard-Bz7a2Ntf.js → internal-max-dispatch-guard-BGOHRYRt.js} +1 -1
  36. package/dist/{internal-max-dispatch-guard-BNqQ2wMc.js → internal-max-dispatch-guard-CnBZxo5l.js} +2 -2
  37. package/dist/{internal-max-dispatch-guard-BNqQ2wMc.js.map → internal-max-dispatch-guard-CnBZxo5l.js.map} +1 -1
  38. package/dist/{internal-plan-review-QUvNZmMR.js → internal-plan-review-C73snnD8.js} +3 -3
  39. package/dist/{internal-plan-review-QUvNZmMR.js.map → internal-plan-review-C73snnD8.js.map} +1 -1
  40. package/dist/{internal-prompt-submit-fj5ccft_.js → internal-prompt-submit-dov4UvBo.js} +4 -4
  41. package/dist/{internal-prompt-submit-fj5ccft_.js.map → internal-prompt-submit-dov4UvBo.js.map} +1 -1
  42. package/dist/{internal-session-bind-0Hmak8PR.js → internal-session-bind-C3hrb9rP.js} +2 -2
  43. package/dist/{internal-session-bind-0Hmak8PR.js.map → internal-session-bind-C3hrb9rP.js.map} +1 -1
  44. package/dist/{internal-stop-hook-UN1JHtjj.js → internal-stop-hook-DZ6CCP4C.js} +5 -5
  45. package/dist/{internal-stop-hook-UN1JHtjj.js.map → internal-stop-hook-DZ6CCP4C.js.map} +1 -1
  46. package/dist/{internal-stop-review-8v2llYDB.js → internal-stop-review-MBVYtrYS.js} +2 -2
  47. package/dist/{internal-stop-review-8v2llYDB.js.map → internal-stop-review-MBVYtrYS.js.map} +1 -1
  48. package/dist/{internal-worker-guard-BI4Pl0Ew.js → internal-worker-guard-dxGawAY3.js} +2 -2
  49. package/dist/{internal-worker-guard-BI4Pl0Ew.js.map → internal-worker-guard-dxGawAY3.js.map} +1 -1
  50. package/dist/{internal-workspace-header-kg9FoNXK.js → internal-workspace-header-_aEXOz5q.js} +2 -2
  51. package/dist/{internal-workspace-header-kg9FoNXK.js.map → internal-workspace-header-_aEXOz5q.js.map} +1 -1
  52. package/dist/{lifecycle-IwotwedG.js → lifecycle-CJB2BwSJ.js} +2 -2
  53. package/dist/{lifecycle-IwotwedG.js.map → lifecycle-CJB2BwSJ.js.map} +1 -1
  54. package/dist/lifecycle-D0KsoSqz.js +2 -0
  55. package/dist/lifecycle-DimEguJO.js +2 -0
  56. package/dist/{lifecycle-Cx1wVrLb.js → lifecycle-_BE0SnNs.js} +2 -2
  57. package/dist/{lifecycle-Cx1wVrLb.js.map → lifecycle-_BE0SnNs.js.map} +1 -1
  58. package/dist/main.js +20 -20
  59. package/dist/{mcp-workspace-header-BYgWioLH.js → mcp-workspace-header-mXRLE8kg.js} +2 -2
  60. package/dist/{mcp-workspace-header-BYgWioLH.js.map → mcp-workspace-header-mXRLE8kg.js.map} +1 -1
  61. package/dist/{models-CVzyU5mJ.js → models-CSFIVxAH.js} +3 -3
  62. package/dist/{models-CVzyU5mJ.js.map → models-CSFIVxAH.js.map} +1 -1
  63. package/dist/{orchestration-Dc3mO0G3.js → orchestration-B8kypXcZ.js} +2 -2
  64. package/dist/{orchestration-Dc3mO0G3.js.map → orchestration-B8kypXcZ.js.map} +1 -1
  65. package/dist/{paths-CMxlQEfQ.js → paths-CHBAj_t9.js} +36 -4
  66. package/dist/{paths-CMxlQEfQ.js.map → paths-CHBAj_t9.js.map} +1 -1
  67. package/dist/paths-eHoOwFzZ.js +2 -0
  68. package/dist/{peer-mcp-personas-CQ-0Piyr.js → peer-mcp-personas-CRMVuMVF.js} +37 -18
  69. package/dist/{peer-mcp-personas-CQ-0Piyr.js.map → peer-mcp-personas-CRMVuMVF.js.map} +1 -1
  70. package/dist/{plan-review-hook-BIMwWkh6.js → plan-review-hook-BMmw7wxR.js} +3 -3
  71. package/dist/{plan-review-hook-BIMwWkh6.js.map → plan-review-hook-BMmw7wxR.js.map} +1 -1
  72. package/dist/{prompt-submit-hook-BcFpjHXg.js → prompt-submit-hook-CGgT5m4Q.js} +3 -3
  73. package/dist/{prompt-submit-hook-BcFpjHXg.js.map → prompt-submit-hook-CGgT5m4Q.js.map} +1 -1
  74. package/dist/{provision-_R7ZMygj.js → provision-Bn8-NDp7.js} +4 -4
  75. package/dist/{provision-_R7ZMygj.js.map → provision-Bn8-NDp7.js.map} +1 -1
  76. package/dist/{self-invocation-cRl4RqfW.js → self-invocation-DahN1gw9.js} +2 -2
  77. package/dist/{self-invocation-cRl4RqfW.js.map → self-invocation-DahN1gw9.js.map} +1 -1
  78. package/dist/{serve-DU66K5kv.js → serve-B1yhiPls.js} +12 -12
  79. package/dist/{serve-DU66K5kv.js.map → serve-B1yhiPls.js.map} +1 -1
  80. package/dist/{server-setup-iLG8LrfL.js → server-setup-BOJCIEQi.js} +177 -49
  81. package/dist/server-setup-BOJCIEQi.js.map +1 -0
  82. package/dist/{start-DQTcm0o_.js → start-DxGJKVd_.js} +3 -3
  83. package/dist/{start-DQTcm0o_.js.map → start-DxGJKVd_.js.map} +1 -1
  84. package/dist/{stop-gate-hook-BUCxa5Kc.js → stop-gate-hook-D7N759TG.js} +72 -4
  85. package/dist/{stop-gate-hook-BUCxa5Kc.js.map → stop-gate-hook-D7N759TG.js.map} +1 -1
  86. package/dist/{stop-gate-policy--bpyxxXU.js → stop-gate-policy-C0gt04R0.js} +2 -2
  87. package/dist/{stop-gate-policy--bpyxxXU.js.map → stop-gate-policy-C0gt04R0.js.map} +1 -1
  88. package/dist/{token-C1gthnbV.js → token-86uk6y4P.js} +2 -2
  89. package/dist/{token-C1gthnbV.js.map → token-86uk6y4P.js.map} +1 -1
  90. package/dist/{worker-dispatch-DMIdrlsF.js → worker-dispatch-B-OA7tvU.js} +2 -2
  91. package/dist/{worker-dispatch-DMIdrlsF.js.map → worker-dispatch-B-OA7tvU.js.map} +1 -1
  92. package/package.json +1 -1
  93. package/dist/attribution-settings-jcsSeVur.js.map +0 -1
  94. package/dist/claude-CJ4Nd2_3.js.map +0 -1
  95. package/dist/engine-DwrxceOS.js +0 -2
  96. package/dist/lifecycle-BpqAyaAj.js +0 -2
  97. package/dist/lifecycle-CL2WiyeQ.js +0 -2
  98. package/dist/paths-BXXCVFvA.js +0 -2
  99. package/dist/server-setup-iLG8LrfL.js.map +0 -1
@@ -1,13 +1,13 @@
1
- import { $ as EFFORT_ORDER, $t as parseJsonOrDiagnose, An as oneMContextDisabled, B as resolveAdvisorEffort, Bn as CHEAP_PROFILE_MODELS, Bt as getTextTokenCount, Cn as isBudgetClaudeLead, D as toolbeltEnabled, Dn as upstreamMaxConnections, En as upstreamAllowH2, F as ADVISOR_TOOL_INSTRUCTIONS, Fn as CHEAPEST_PROFILE_NATIVE_AGENT_NAMES, G as repairKnownThinkingHistory, Gn as withInstallLock, H as resolveCheapestAdvisorModel, Ht as getTokenizerFromModel, I as FAST_ADVISOR_TOOL_INSTRUCTIONS, J as buildOpenAIErrorEvent, Jt as resolveMcpToolTimeoutMs, K as repairRejectedThinkingHistory, Kt as assembleResponsesPayload, L as buildAdvisorStream, Lt as shimDefaultsToXhigh, Mn as withOneMSuffixForLead, N as searchWeb, Nn as CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL, On as classifyMessagesRoute, P as ADVISOR_INTERNAL_TOOL_NAME, Pn as CHEAPEST_PROFILE_MODELS, Q as relayAnthropicStream, Qt as readResponseBodyCapped, R as injectAdvisorTool, Rn as CHEAPEST_PROFILE_SUBAGENT_CONTEXT_TOKENS, Rt as countTokens, Sn as generateRandomPort, U as formatThinkingRepairDecline, Ut as findLaunchBySecret, V as resolveAdvisorModel, Vn as CHEAP_PROFILE_NATIVE_AGENT_NAMES, Vt as getTokenCount, W as rememberThinkingHistoryRepair, Wn as CHEAP_PROFILE_SUBAGENT_CONTEXT_TOKENS, X as logStreamError, Xt as createChatCompletions, Y as isControllerClosedError, Yt as createResponses, Z as readIteratorWithTimeout, Zt as MAX_RESPONSE_BODY_BYTES, at as agentToolsEnabled, bn as UPSTREAM_FETCH_TIMEOUT_MS, cn as provisionTreeSitterAssets, en as normalizeOpenAIUsage, et as UNKNOWN_EFFORT_ANCHOR, hn as BUDGET_SMALL_FAST_SLUG, i as assertMcpToolSurfaceConsistent, it as handleMcpPost, jn as withOneMSuffix, kn as catalogAdvertises1M, nt as clampEffort, pn as toolbeltPathOverride, q as buildAnthropicErrorEvent, qt as warnOnTokenPriceDrift, rt as handleMcpDelete, tt as bucketEffort, xn as UPSTREAM_INACTIVITY_TIMEOUT_MS, z as isAdvisorRequested, zn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL, zt as createMessages } from "./peer-mcp-personas-CQ-0Piyr.js";
1
+ import { $ as EFFORT_ORDER, $t as parseJsonOrDiagnose, An as oneMContextDisabled, B as resolveAdvisorEffort, Bn as CHEAP_PROFILE_MODELS, Bt as getTextTokenCount, Cn as isBudgetClaudeLead, D as toolbeltEnabled, Dn as upstreamMaxConnections, En as upstreamAllowH2, F as ADVISOR_TOOL_INSTRUCTIONS, Fn as CHEAPEST_PROFILE_NATIVE_AGENT_NAMES, G as repairKnownThinkingHistory, Gn as withInstallLock, H as resolveCheapestAdvisorModel, Ht as getTokenizerFromModel, I as FAST_ADVISOR_TOOL_INSTRUCTIONS, J as buildOpenAIErrorEvent, Jt as resolveMcpToolTimeoutMs, K as repairRejectedThinkingHistory, Kt as assembleResponsesPayload, L as buildAdvisorStream, Lt as shimDefaultsToXhigh, Mn as withOneMSuffixForLead, N as searchWeb, Nn as CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL, On as classifyMessagesRoute, P as ADVISOR_INTERNAL_TOOL_NAME, Pn as CHEAPEST_PROFILE_MODELS, Q as relayAnthropicStream, Qt as readResponseBodyCapped, R as injectAdvisorTool, Rn as CHEAPEST_PROFILE_SUBAGENT_CONTEXT_TOKENS, Rt as countTokens, Sn as generateRandomPort, U as formatThinkingRepairDecline, Ut as findLaunchBySecret, V as resolveAdvisorModel, Vn as CHEAP_PROFILE_NATIVE_AGENT_NAMES, Vt as getTokenCount, W as rememberThinkingHistoryRepair, Wn as CHEAP_PROFILE_SUBAGENT_CONTEXT_TOKENS, X as logStreamError, Xt as createChatCompletions, Y as isControllerClosedError, Yt as createResponses, Z as readIteratorWithTimeout, Zt as MAX_RESPONSE_BODY_BYTES, at as agentToolsEnabled, bn as UPSTREAM_FETCH_TIMEOUT_MS, cn as provisionTreeSitterAssets, en as normalizeOpenAIUsage, et as UNKNOWN_EFFORT_ANCHOR, hn as BUDGET_SMALL_FAST_SLUG, i as assertMcpToolSurfaceConsistent, it as handleMcpPost, jn as withOneMSuffix, kn as catalogAdvertises1M, nt as clampEffort, pn as toolbeltPathOverride, q as buildAnthropicErrorEvent, qt as warnOnTokenPriceDrift, rt as handleMcpDelete, tt as bucketEffort, xn as UPSTREAM_INACTIVITY_TIMEOUT_MS, z as isAdvisorRequested, zn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL, zt as createMessages } from "./peer-mcp-personas-CRMVuMVF.js";
2
2
  import { t as getPackageVersion } from "./version-C8x2hQrZ.js";
3
- import { i as ensurePaths, t as PATHS } from "./paths-CMxlQEfQ.js";
3
+ import { i as ensurePaths, t as PATHS } from "./paths-CHBAj_t9.js";
4
4
  import { t as state } from "./state-BlMpEFAt.js";
5
- import { T as copilotHeaders, _ as forwardError, a as cacheCopilotVersion, c as filterBetaHeader, d as resolveModel, f as sleep, g as HTTPError, i as tryRefreshAndRetry, l as isNullish, n as setupGitHubAgentToken, o as cacheModels, r as setupGitHubToken, s as cacheVSCodeVersion, t as setupCopilotToken, w as copilotBaseUrl, y as fetchWithTransientRetry } from "./token-C1gthnbV.js";
6
- import { t as getCopilotUsage } from "./get-copilot-usage-BMD_cJNT.js";
5
+ import { T as copilotHeaders, _ as forwardError, a as cacheCopilotVersion, c as filterBetaHeader, d as resolveModel, f as sleep, g as HTTPError, i as tryRefreshAndRetry, l as isNullish, n as setupGitHubAgentToken, o as cacheModels, r as setupGitHubToken, s as cacheVSCodeVersion, t as setupCopilotToken, w as copilotBaseUrl, y as fetchWithTransientRetry } from "./token-86uk6y4P.js";
6
+ import { t as getCopilotUsage } from "./get-copilot-usage-BWCAzmSc.js";
7
7
  import { c as runCommandVoid, i as parseBoolEnv, o as resolveExecutable, r as killManagedTree, s as runCommandCapture } from "./exec-COUT4QsS.js";
8
8
  import { c as FAST_PROFILE_MODELS, l as FAST_PROFILE_NATIVE_AGENT_NAMES, r as FAST_PROFILE_ADVISOR_MODEL } from "./fast-profile-contract-_DhIWank.js";
9
9
  import { A as normalizeTrailingOneMSuffix, a as MAX_PROFILE_NATIVE_AGENT_NAMES, d as maxAdvisorPinIsValid, h as maxOpusModel, i as MAX_PROFILE_MODELS, j as stripTrailingOneMSuffix, k as fastEndpointForModel, l as maxAdvisorEffortForModel, n as MAX_PROFILE_ALLOWED_LEAD_MODEL_IDS, t as MAX_PROFILE_ADVISOR_INSTRUCTIONS, u as maxAdvisorModelFromPin, y as validateMaxProfilePrerequisites } from "./max-profile-contract-Bl7I_EOC.js";
10
- import { c as recordAic, d as extractCopilotUsage, f as formatAic, i as extractAndRecordAic, p as nanoAiuToCredits } from "./aic-ledger-BS47yb_C.js";
10
+ import { c as recordAic, d as extractCopilotUsage, f as formatAic, i as extractAndRecordAic, p as nanoAiuToCredits } from "./aic-ledger-DY03LbBM.js";
11
11
  import consola from "consola";
12
12
  import fs, { existsSync } from "node:fs";
13
13
  import path from "node:path";
@@ -515,6 +515,34 @@ const LUNA_SCOUT_ALIAS_ID = "gh-router-luna-scout-high";
515
515
  * with an explicit stale-alias error instead of silently changing semantics. */
516
516
  const LUNA_IMPLEMENTER_ALIAS_ID = "gh-router-luna-implementer-max";
517
517
  const FAST_CRITIC_ALIAS_ID = "gh-router-fast-critic-medium";
518
+ /**
519
+ * Cheap-family subagent aliases (`-m cheap`/`-m cheap1m`). Router-owned,
520
+ * non-catalog identities: Claude Code resolves a bare REAL model id against
521
+ * the live catalog and upgrades Task subagents to `[1m]` accounting when the
522
+ * entry advertises >=1M, defeating the cheap family's whole 200K cost lever.
523
+ * An alias matches no catalog entry, so the client holds the 200K default and
524
+ * the proxy canonicalizes to the real id upstream with the alias's fixed
525
+ * effort. `absentEffortDefault` mirrors `CHEAP_PROFILE_NATIVE_EFFORTS` per
526
+ * role (a drift test pins this). Emitted BARE (no `[1m]`) by
527
+ * `buildCheapProfileAgentDefinitions`.
528
+ */
529
+ const CHEAP_EXPLORE_ALIAS_ID = "gh-router-cheap-explore-high";
530
+ const CHEAP_PLAN_ALIAS_ID = "gh-router-cheap-plan-high";
531
+ const CHEAP_GENERAL_PURPOSE_ALIAS_ID = "gh-router-cheap-general-purpose-max";
532
+ const CHEAP_IMPLEMENTER_ALIAS_ID = "gh-router-cheap-implementer-high";
533
+ const CHEAP_REVIEWER_ALIAS_ID = "gh-router-cheap-reviewer-max";
534
+ /**
535
+ * Cheapest-profile subagent aliases (`-m cheapest`). Same non-catalog
536
+ * mechanism as the cheap aliases above, with the cheapest roster's own
537
+ * identities and efforts (`CHEAPEST_PROFILE_NATIVE_MODELS` /
538
+ * `CHEAPEST_PROFILE_NATIVE_EFFORTS`, pinned by a drift test). Emitted BARE by
539
+ * `buildCheapestProfileAgentDefinitions`.
540
+ */
541
+ const CHEAPEST_EXPLORE_ALIAS_ID = "gh-router-cheapest-explore-high";
542
+ const CHEAPEST_PLAN_ALIAS_ID = "gh-router-cheapest-plan-high";
543
+ const CHEAPEST_GENERAL_PURPOSE_ALIAS_ID = "gh-router-cheapest-general-purpose-xhigh";
544
+ const CHEAPEST_IMPLEMENTER_ALIAS_ID = "gh-router-cheapest-implementer-max";
545
+ const CHEAPEST_REVIEWER_ALIAS_ID = "gh-router-cheapest-reviewer-high";
518
546
  const LUNA_SONNET_ALIAS_ID = "gh-router-luna-sonnet-xhigh";
519
547
  /**
520
548
  * Router-owned alias id for the fast profile's Haiku-tier row
@@ -583,6 +611,56 @@ const MODEL_ALIAS_TABLE = /* @__PURE__ */ new Map([
583
611
  aliasId: LUNA_HAIKU_ALIAS_ID,
584
612
  realModel: LUNA_REAL_MODEL_ID,
585
613
  absentEffortDefault: "high"
614
+ }],
615
+ [CHEAP_EXPLORE_ALIAS_ID, {
616
+ aliasId: CHEAP_EXPLORE_ALIAS_ID,
617
+ realModel: CHEAP_PROFILE_MODELS.explore,
618
+ absentEffortDefault: "high"
619
+ }],
620
+ [CHEAP_PLAN_ALIAS_ID, {
621
+ aliasId: CHEAP_PLAN_ALIAS_ID,
622
+ realModel: CHEAP_PROFILE_MODELS.plan,
623
+ absentEffortDefault: "high"
624
+ }],
625
+ [CHEAP_GENERAL_PURPOSE_ALIAS_ID, {
626
+ aliasId: CHEAP_GENERAL_PURPOSE_ALIAS_ID,
627
+ realModel: CHEAP_PROFILE_MODELS["general-purpose"],
628
+ absentEffortDefault: "max"
629
+ }],
630
+ [CHEAP_IMPLEMENTER_ALIAS_ID, {
631
+ aliasId: CHEAP_IMPLEMENTER_ALIAS_ID,
632
+ realModel: CHEAP_PROFILE_MODELS.implementer,
633
+ absentEffortDefault: "high"
634
+ }],
635
+ [CHEAP_REVIEWER_ALIAS_ID, {
636
+ aliasId: CHEAP_REVIEWER_ALIAS_ID,
637
+ realModel: CHEAP_PROFILE_MODELS.reviewer,
638
+ absentEffortDefault: "max"
639
+ }],
640
+ [CHEAPEST_EXPLORE_ALIAS_ID, {
641
+ aliasId: CHEAPEST_EXPLORE_ALIAS_ID,
642
+ realModel: CHEAPEST_PROFILE_MODELS.explore,
643
+ absentEffortDefault: "high"
644
+ }],
645
+ [CHEAPEST_PLAN_ALIAS_ID, {
646
+ aliasId: CHEAPEST_PLAN_ALIAS_ID,
647
+ realModel: CHEAPEST_PROFILE_MODELS.plan,
648
+ absentEffortDefault: "high"
649
+ }],
650
+ [CHEAPEST_GENERAL_PURPOSE_ALIAS_ID, {
651
+ aliasId: CHEAPEST_GENERAL_PURPOSE_ALIAS_ID,
652
+ realModel: CHEAPEST_PROFILE_MODELS["general-purpose"],
653
+ absentEffortDefault: "xhigh"
654
+ }],
655
+ [CHEAPEST_IMPLEMENTER_ALIAS_ID, {
656
+ aliasId: CHEAPEST_IMPLEMENTER_ALIAS_ID,
657
+ realModel: CHEAPEST_PROFILE_MODELS.implementer,
658
+ absentEffortDefault: "max"
659
+ }],
660
+ [CHEAPEST_REVIEWER_ALIAS_ID, {
661
+ aliasId: CHEAPEST_REVIEWER_ALIAS_ID,
662
+ realModel: CHEAPEST_PROFILE_MODELS.reviewer,
663
+ absentEffortDefault: "high"
586
664
  }]
587
665
  ]);
588
666
  /**
@@ -1284,6 +1362,17 @@ async function renameSettingsWithRetry(temp, target) {
1284
1362
  await fs$1.rm(temp, { force: true }).catch(() => {});
1285
1363
  throw lastError;
1286
1364
  }
1365
+ /**
1366
+ * Profiles whose sessions run router-provided surfaces only. On these
1367
+ * launches a user-curated `modelPicker` in the (per-launch, disposable)
1368
+ * mirror is overwritten with the router rows rather than preserved: the
1369
+ * mirror is a snapshot copy, so the operator's real settings are never
1370
+ * touched, but a stale standard `[1m]` picker must not survive into a
1371
+ * 200K session's `/model` UI.
1372
+ */
1373
+ function routerWinsPicker(profile) {
1374
+ return profile === "fast" || profile === "cheap" || profile === "cheap1m" || profile === "cheapest";
1375
+ }
1287
1376
  function modelIdsFromExistingPicker(value) {
1288
1377
  if (!value || typeof value !== "object" || Array.isArray(value)) return [];
1289
1378
  const options = value.options;
@@ -1308,11 +1397,16 @@ async function injectModelPickerSettingsFile(settingsPath, profile) {
1308
1397
  if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) throw new Error(`settings.json at ${settingsPath} is not a JSON object; refusing to overwrite`);
1309
1398
  existing = parsed;
1310
1399
  }
1311
- if ("modelPicker" in existing) return {
1312
- written: false,
1313
- reason: "user-set",
1314
- models: modelIdsFromExistingPicker(existing.modelPicker)
1315
- };
1400
+ let overwroteUserPicker = false;
1401
+ if ("modelPicker" in existing) {
1402
+ if (!routerWinsPicker(profile)) return {
1403
+ written: false,
1404
+ reason: "user-set",
1405
+ models: modelIdsFromExistingPicker(existing.modelPicker)
1406
+ };
1407
+ overwroteUserPicker = true;
1408
+ delete existing.modelPicker;
1409
+ }
1316
1410
  if (options.length === 0) return {
1317
1411
  written: false,
1318
1412
  reason: "no-models",
@@ -1337,6 +1431,7 @@ async function injectModelPickerSettingsFile(settingsPath, profile) {
1337
1431
  }
1338
1432
  return {
1339
1433
  written: true,
1434
+ ...overwroteUserPicker ? { reason: "router-overwrite" } : {},
1340
1435
  models: options.map((option) => option.model)
1341
1436
  };
1342
1437
  }
@@ -2196,7 +2291,7 @@ function collectToolFieldKeys(body) {
2196
2291
  //#endregion
2197
2292
  //#region package.json
2198
2293
  var name = "github-router";
2199
- var version = "0.3.316";
2294
+ var version = "0.3.318";
2200
2295
  //#endregion
2201
2296
  //#region src/lib/approval.ts
2202
2297
  const awaitApproval = async () => {
@@ -5028,7 +5123,9 @@ async function handleNonClaudeResponses(c, opts) {
5028
5123
  return stream;
5029
5124
  }
5030
5125
  const payload = parsedToResponsesPayload(parsed);
5031
- const anthropic = responsesResponseToAnthropicMessage(await createResponses(payload, opts.model?.requestHeaders, void 0, true), opts.modelId);
5126
+ const result = await createResponses(payload, opts.model?.requestHeaders, void 0, true);
5127
+ extractAndRecordAic(opts.modelId, result);
5128
+ const anthropic = responsesResponseToAnthropicMessage(result, opts.modelId);
5032
5129
  const usage = anthropic.usage;
5033
5130
  logRequest({
5034
5131
  method: "POST",
@@ -5084,7 +5181,9 @@ async function handleNonClaudeChat(c, opts) {
5084
5181
  return stream;
5085
5182
  }
5086
5183
  const payload = parsedToChatPayload(parsed);
5087
- const anthropic = chatResponseToAnthropicMessage(await createChatCompletions(payload, opts.model?.requestHeaders, void 0, true), opts.modelId);
5184
+ const result = await createChatCompletions(payload, opts.model?.requestHeaders, void 0, true);
5185
+ extractAndRecordAic(opts.modelId, result);
5186
+ const anthropic = chatResponseToAnthropicMessage(result, opts.modelId);
5088
5187
  const usage = anthropic.usage;
5089
5188
  logRequest({
5090
5189
  method: "POST",
@@ -5248,16 +5347,37 @@ Object.freeze([MAX_LUNA_HIGH_ALIAS_ID, MAX_LUNA_MAX_ALIAS_ID]);
5248
5347
  //#endregion
5249
5348
  //#region src/lib/fast-request-preprocess.ts
5250
5349
  const cheapFamily = (profileId) => profileId === "cheap" || profileId === "cheap1m" || profileId === "cheapest";
5350
+ const pinnedProfile = (profileId) => profileId === "fast" || cheapFamily(profileId);
5351
+ /**
5352
+ * Profiles whose every selectable `/model` row must stay at Claude Code's
5353
+ * 200K DEFAULT context window (bare id, no `[1m]` accounting bracket).
5354
+ * `fast` keeps 1M on lead and subagents by design; `cheap1m` keeps 1M on
5355
+ * the lead only (its subagents are bare-by-construction).
5356
+ */
5357
+ const bareEnforcedProfile = (profileId) => profileId === "cheap" || profileId === "cheapest";
5358
+ function explicitEffortOf(value) {
5359
+ return typeof value === "string" && value.trim() !== "" ? value : void 0;
5360
+ }
5251
5361
  /**
5252
5362
  * Apply authenticated fast/cheap-profile model and effort policy before
5253
5363
  * ordinary model resolution. Synthetic aliases are refused outside an
5254
- * authenticated fast, cheap, or cheapest launch, so raw/BYO traffic cannot
5255
- * opt itself into private profile semantics. The cheap family (including
5256
- * cheapest) shares fast's effort mapping (same model-to-effort rows, just
5257
- * bare subagent slugs at the wiring layer), so this preprocess is shared.
5364
+ * authenticated pinned launch, so raw/BYO traffic cannot opt itself into
5365
+ * private profile semantics. The cheap family (including cheapest) shares
5366
+ * fast's effort mapping (same model-to-effort rows, just bare subagent
5367
+ * slugs at the wiring layer), so this preprocess is shared.
5258
5368
  * Note the reviewer differs: fast reviews on Sonnet 5/xhigh while cheap
5259
5369
  * reviews on Luna/max and cheapest reviews on Gemini/high — all rows exist
5260
5370
  * here, so each profile's reviewer resolves to its fixed effort.
5371
+ *
5372
+ * Pinned-profile isolation (fast/cheap/cheap1m/cheapest): only
5373
+ * router-provided models are accepted (anything else is `rejectedModel`).
5374
+ * Context: cheap/cheapest traffic is stripped to the bare 200K id;
5375
+ * cheap1m subagent traffic is stripped while its lead keeps 1M; fast
5376
+ * keeps 1M on both. Effort: picker changes apply to the lead session
5377
+ * only — lead requests keep an explicit `output_config.effort` when
5378
+ * present and fall back to the fixed mapping otherwise, while subagent
5379
+ * traffic (`x-claude-code-agent-id`) always receives its fixed
5380
+ * per-model effort.
5261
5381
  */
5262
5382
  function preprocessFastRequest(rawBody, launch, subagentRequest = false) {
5263
5383
  if (launch?.profileId === "max") return preprocessMaxRequest(rawBody, launch, subagentRequest);
@@ -5294,23 +5414,30 @@ function preprocessFastRequest(rawBody, launch, subagentRequest = false) {
5294
5414
  modified: false
5295
5415
  };
5296
5416
  const { base: bare } = stripTrailingOneMSuffix(originalModel);
5297
- let effort;
5417
+ const profileId = launch?.profileId;
5418
+ const stripBracket = bareEnforcedProfile(profileId) || profileId === "cheap1m" && subagentRequest;
5419
+ const leadCallerControlled = pinnedProfile(profileId) && !subagentRequest;
5420
+ let fixedEffort;
5298
5421
  if (alias) {
5299
- effort = alias.absentEffortDefault;
5422
+ fixedEffort = alias.absentEffortDefault;
5300
5423
  parsed.model = canonicalizeAliasModel(originalModel);
5301
- } else if (bare === "gpt-5.6-luna") effort = "max";
5302
- else if (bare === "gpt-5.6-sol") effort = "high";
5303
- else if (bare === "grok-4.6") effort = "medium";
5304
- else if (bare === "gemini-3.8-flash") effort = "high";
5305
- else if (bare === "claude-sonnet-5") effort = "xhigh";
5306
- else if (bare === "claude-opus-5") effort = "high";
5307
- if (!effort && !alias) return {
5424
+ } else if (bare === "gpt-5.6-luna") fixedEffort = "max";
5425
+ else if (bare === "gpt-5.6-sol") fixedEffort = "high";
5426
+ else if (bare === "grok-4.6") fixedEffort = "medium";
5427
+ else if (bare === "gemini-3.8-flash") fixedEffort = "high";
5428
+ else if (bare === "claude-sonnet-5") fixedEffort = "xhigh";
5429
+ else if (bare === "claude-opus-5") fixedEffort = "high";
5430
+ if (!fixedEffort && !alias) return {
5308
5431
  body: rawBody,
5309
5432
  originalModel,
5310
5433
  modified: false,
5311
5434
  rejectedModel: originalModel
5312
5435
  };
5436
+ if (stripBracket && typeof parsed.model === "string") parsed.model = stripTrailingOneMSuffix(parsed.model).base;
5437
+ else if (stripBracket) parsed.model = bare;
5313
5438
  const outputConfig = parsed.output_config && typeof parsed.output_config === "object" ? parsed.output_config : {};
5439
+ const explicitEffort = explicitEffortOf(outputConfig.effort);
5440
+ const effort = leadCallerControlled && explicitEffort ? explicitEffort : fixedEffort;
5314
5441
  parsed.output_config = {
5315
5442
  ...outputConfig,
5316
5443
  effort
@@ -7513,22 +7640,23 @@ function getClaudeCodeEnvVars(serverUrl, model, launchProfileId = "standard", pi
7513
7640
  const isFastProfile = launchProfileId === "fast";
7514
7641
  const isMaxProfile = launchProfileId === "max";
7515
7642
  const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest";
7643
+ const routerWinsTiers = isFastProfile || isCheapProfile;
7516
7644
  const smallFastModel = isMaxProfile ? MAX_LUNA_HIGH_ALIAS_ID : isFastProfile ? LUNA_HAIKU_ALIAS_ID : isCheapProfile ? LUNA_HAIKU_ALIAS_ID : isBudgetClaudeLead(model) && (state.models?.data?.some((m) => m.id === "claude-haiku-4.5") ?? false) ? BUDGET_SMALL_FAST_SLUG : "claude-sonnet-5";
7517
- if (process.env.ANTHROPIC_SMALL_FAST_MODEL === void 0) vars.ANTHROPIC_SMALL_FAST_MODEL = (isFastProfile || isMaxProfile) && !isCheapProfile ? oneMSuffixForAlias(smallFastModel) : smallFastModel;
7645
+ if (process.env.ANTHROPIC_SMALL_FAST_MODEL === void 0 || routerWinsTiers) vars.ANTHROPIC_SMALL_FAST_MODEL = (isFastProfile || isMaxProfile) && !isCheapProfile ? oneMSuffixForAlias(smallFastModel) : smallFastModel;
7518
7646
  const seedTierRow = (modelKey, nameKey, bareSlug) => {
7519
7647
  if (process.env[modelKey] !== void 0) return;
7520
7648
  vars[modelKey] = withOneMSuffixForLead(bareSlug);
7521
7649
  if (process.env[nameKey] === void 0) vars[nameKey] = bareSlug;
7522
7650
  };
7523
- const seedFastAliasTierRow = (modelKey, nameKey, aliasId, displayName) => {
7524
- if (process.env[modelKey] !== void 0) return;
7651
+ const seedFastAliasTierRow = (modelKey, nameKey, aliasId, displayName, force = false) => {
7652
+ if (!force && process.env[modelKey] !== void 0) return;
7525
7653
  vars[modelKey] = oneMSuffixForAlias(aliasId);
7526
- if (process.env[nameKey] === void 0) vars[nameKey] = displayName;
7654
+ if (force || process.env[nameKey] === void 0) vars[nameKey] = displayName;
7527
7655
  };
7528
- const seedCheapAliasTierRow = (modelKey, nameKey, aliasId, displayName) => {
7529
- if (process.env[modelKey] !== void 0) return;
7656
+ const seedCheapAliasTierRow = (modelKey, nameKey, aliasId, displayName, force = false) => {
7657
+ if (!force && process.env[modelKey] !== void 0) return;
7530
7658
  vars[modelKey] = aliasId;
7531
- if (process.env[nameKey] === void 0) vars[nameKey] = displayName;
7659
+ if (force || process.env[nameKey] === void 0) vars[nameKey] = displayName;
7532
7660
  };
7533
7661
  if (isMaxProfile) {
7534
7662
  const seedMaxRow = (modelKey, nameKey, id) => {
@@ -7544,26 +7672,26 @@ function getClaudeCodeEnvVars(serverUrl, model, launchProfileId = "standard", pi
7544
7672
  if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME = "GPT-5.6 Sol";
7545
7673
  }
7546
7674
  } else if (isCheapProfile) {
7547
- seedCheapAliasTierRow("ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME", LUNA_SONNET_ALIAS_ID, "GPT-5.6 Luna (xhigh)");
7548
- seedCheapAliasTierRow("ANTHROPIC_DEFAULT_HAIKU_MODEL", "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME", LUNA_HAIKU_ALIAS_ID, "GPT-5.6 Luna (high)");
7675
+ seedCheapAliasTierRow("ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME", LUNA_SONNET_ALIAS_ID, "GPT-5.6 Luna (xhigh)", routerWinsTiers);
7676
+ seedCheapAliasTierRow("ANTHROPIC_DEFAULT_HAIKU_MODEL", "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME", LUNA_HAIKU_ALIAS_ID, "GPT-5.6 Luna (high)", routerWinsTiers);
7549
7677
  const cheapAliasCapabilities = "effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking";
7550
- if (process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7551
- if (process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7552
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION === void 0) {
7678
+ if (routerWinsTiers || process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7679
+ if (routerWinsTiers || process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7680
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION === void 0) {
7553
7681
  vars.ANTHROPIC_CUSTOM_MODEL_OPTION = LUNA_DRIVER_ALIAS_ID;
7554
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME = "GPT-5.6 Luna (max)";
7555
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7682
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME = "GPT-5.6 Luna (max)";
7683
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES = cheapAliasCapabilities;
7556
7684
  }
7557
7685
  } else if (isFastProfile) {
7558
- seedFastAliasTierRow("ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME", LUNA_SONNET_ALIAS_ID, "GPT-5.6 Luna (xhigh)");
7559
- seedFastAliasTierRow("ANTHROPIC_DEFAULT_HAIKU_MODEL", "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME", LUNA_HAIKU_ALIAS_ID, "GPT-5.6 Luna (high)");
7686
+ seedFastAliasTierRow("ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME", LUNA_SONNET_ALIAS_ID, "GPT-5.6 Luna (xhigh)", routerWinsTiers);
7687
+ seedFastAliasTierRow("ANTHROPIC_DEFAULT_HAIKU_MODEL", "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME", LUNA_HAIKU_ALIAS_ID, "GPT-5.6 Luna (high)", routerWinsTiers);
7560
7688
  const fastAliasCapabilities = "effort,xhigh_effort,max_effort,thinking,adaptive_thinking,interleaved_thinking";
7561
- if (process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7562
- if (process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7563
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION === void 0) {
7689
+ if (routerWinsTiers || process.env.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_SONNET_MODEL_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7690
+ if (routerWinsTiers || process.env.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_DEFAULT_HAIKU_MODEL_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7691
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION === void 0) {
7564
7692
  vars.ANTHROPIC_CUSTOM_MODEL_OPTION = oneMSuffixForAlias(LUNA_DRIVER_ALIAS_ID);
7565
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME = "GPT-5.6 Luna (max)";
7566
- if (process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7693
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_NAME = "GPT-5.6 Luna (max)";
7694
+ if (routerWinsTiers || process.env.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES === void 0) vars.ANTHROPIC_CUSTOM_MODEL_OPTION_SUPPORTED_CAPABILITIES = fastAliasCapabilities;
7567
7695
  }
7568
7696
  } else {
7569
7697
  seedTierRow("ANTHROPIC_DEFAULT_SONNET_MODEL", "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME", "claude-sonnet-5");
@@ -7660,6 +7788,6 @@ function getCodexEnvVars(serverUrl) {
7660
7788
  return vars;
7661
7789
  }
7662
7790
  //#endregion
7663
- export { validateMaxProfileLaunch as C, updateClaude as E, validateFastProfilePrerequisites as S, checkClaudeVersion as T, profileDescriptor as _, sharedServerArgs as a, validateCheapProfilePrerequisites as b, stopKeepAwake as c, enableFileLogging as d, LUNA_SCOUT_ALIAS_ID as f, formatFastPrerequisiteFailure as g, formatCheapestPrerequisiteFailure as h, setupAndServe as i, injectModelPickerSettingsFile as l, formatCheapPrerequisiteFailure as m, getCodexEnvVars as n, LAUNCH_SECRET_HEADER as o, formatCheap1mPrerequisiteFailure as p, parseSharedArgs as r, startKeepAwake as s, getClaudeCodeEnvVars as t, listModelsForEndpoint as u, resolveLaunchProfile as v, runSelfUpdate as w, validateCheapestProfilePrerequisites as x, validateCheap1mProfilePrerequisites as y };
7791
+ export { validateCheapProfilePrerequisites as A, formatCheap1mPrerequisiteFailure as C, profileDescriptor as D, formatFastPrerequisiteFailure as E, checkClaudeVersion as F, updateClaude as I, validateFastProfilePrerequisites as M, validateMaxProfileLaunch as N, resolveLaunchProfile as O, runSelfUpdate as P, LUNA_SCOUT_ALIAS_ID as S, formatCheapestPrerequisiteFailure as T, CHEAP_EXPLORE_ALIAS_ID as _, sharedServerArgs as a, CHEAP_PLAN_ALIAS_ID as b, stopKeepAwake as c, enableFileLogging as d, CHEAPEST_EXPLORE_ALIAS_ID as f, CHEAPEST_REVIEWER_ALIAS_ID as g, CHEAPEST_PLAN_ALIAS_ID as h, setupAndServe as i, validateCheapestProfilePrerequisites as j, validateCheap1mProfilePrerequisites as k, injectModelPickerSettingsFile as l, CHEAPEST_IMPLEMENTER_ALIAS_ID as m, getCodexEnvVars as n, LAUNCH_SECRET_HEADER as o, CHEAPEST_GENERAL_PURPOSE_ALIAS_ID as p, parseSharedArgs as r, startKeepAwake as s, getClaudeCodeEnvVars as t, listModelsForEndpoint as u, CHEAP_GENERAL_PURPOSE_ALIAS_ID as v, formatCheapPrerequisiteFailure as w, CHEAP_REVIEWER_ALIAS_ID as x, CHEAP_IMPLEMENTER_ALIAS_ID as y };
7664
7792
 
7665
- //# sourceMappingURL=server-setup-iLG8LrfL.js.map
7793
+ //# sourceMappingURL=server-setup-BOJCIEQi.js.map