github-router 0.3.314 → 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 (110) hide show
  1. package/dist/{aic-ledger-Cx_Ubon3.js → aic-ledger-BS47yb_C.js} +66 -6
  2. package/dist/aic-ledger-BS47yb_C.js.map +1 -0
  3. package/dist/{attribution-settings-Btc5EZTj.js → attribution-settings-jcsSeVur.js} +120 -21
  4. package/dist/attribution-settings-jcsSeVur.js.map +1 -0
  5. package/dist/{auth-O_UG1ABO.js → auth-JfxL9q7z.js} +4 -4
  6. package/dist/{auth-O_UG1ABO.js.map → auth-JfxL9q7z.js.map} +1 -1
  7. package/dist/browser-ext/manifest.json +1 -1
  8. package/dist/{check-usage-dicJOWML.js → check-usage-DXUEQzt_.js} +4 -4
  9. package/dist/{check-usage-dicJOWML.js.map → check-usage-DXUEQzt_.js.map} +1 -1
  10. package/dist/{claude-D0vuAqTV.js → claude-CJ4Nd2_3.js} +116 -45
  11. package/dist/claude-CJ4Nd2_3.js.map +1 -0
  12. package/dist/{codex-BNm9D0iJ.js → codex-CwuLqNZF.js} +6 -6
  13. package/dist/codex-CwuLqNZF.js.map +1 -0
  14. package/dist/copilot-discount-IbXR5A28.js +220 -0
  15. package/dist/copilot-discount-IbXR5A28.js.map +1 -0
  16. package/dist/{debug-2PgImRnr.js → debug-CA7pg8V9.js} +2 -2
  17. package/dist/{debug-2PgImRnr.js.map → debug-CA7pg8V9.js.map} +1 -1
  18. package/dist/engine-DwrxceOS.js +2 -0
  19. package/dist/{exec-y8C_MU8A.js → exec-COUT4QsS.js} +2 -2
  20. package/dist/{exec-y8C_MU8A.js.map → exec-COUT4QsS.js.map} +1 -1
  21. package/dist/{gate-discovery-CO2njGBB.js → gate-discovery-z04ywOzB.js} +6 -6
  22. package/dist/{gate-discovery-CO2njGBB.js.map → gate-discovery-z04ywOzB.js.map} +1 -1
  23. package/dist/{get-copilot-usage-Cjy8TiFf.js → get-copilot-usage-BMD_cJNT.js} +3 -3
  24. package/dist/{get-copilot-usage-Cjy8TiFf.js.map → get-copilot-usage-BMD_cJNT.js.map} +1 -1
  25. package/dist/hooks.mjs +490 -28
  26. package/dist/hooks.sha256 +1 -1
  27. package/dist/internal-aic-status-BN0xRLSF.js +432 -0
  28. package/dist/internal-aic-status-BN0xRLSF.js.map +1 -0
  29. package/dist/{internal-artifact-open-CxeIfsW_.js → internal-artifact-open-B3stUu74.js} +2 -2
  30. package/dist/{internal-artifact-open-CxeIfsW_.js.map → internal-artifact-open-B3stUu74.js.map} +1 -1
  31. package/dist/{internal-fast-dispatch-guard-D8YNlnuQ.js → internal-fast-dispatch-guard-2QjUlhqO.js} +1 -1
  32. package/dist/{internal-fast-dispatch-guard-19xQEouu.js → internal-fast-dispatch-guard-CAwYj_Yz.js} +2 -2
  33. package/dist/{internal-fast-dispatch-guard-19xQEouu.js.map → internal-fast-dispatch-guard-CAwYj_Yz.js.map} +1 -1
  34. package/dist/{internal-first-mate-guard-BuweUgjb.js → internal-first-mate-guard-B0rbLb0L.js} +3 -3
  35. package/dist/{internal-first-mate-guard-BuweUgjb.js.map → internal-first-mate-guard-B0rbLb0L.js.map} +1 -1
  36. package/dist/{internal-first-mate-guard-Nf1H0mCK.js → internal-first-mate-guard-VgnHBp0s.js} +1 -1
  37. package/dist/{internal-max-dispatch-guard-DZ7KLWxP.js → internal-max-dispatch-guard-BNqQ2wMc.js} +3 -3
  38. package/dist/{internal-max-dispatch-guard-DZ7KLWxP.js.map → internal-max-dispatch-guard-BNqQ2wMc.js.map} +1 -1
  39. package/dist/{internal-max-dispatch-guard-_Pp4LltM.js → internal-max-dispatch-guard-Bz7a2Ntf.js} +1 -1
  40. package/dist/{internal-plan-review-DLduDz41.js → internal-plan-review-QUvNZmMR.js} +3 -3
  41. package/dist/{internal-plan-review-DLduDz41.js.map → internal-plan-review-QUvNZmMR.js.map} +1 -1
  42. package/dist/{internal-prompt-submit-DG94f8E-.js → internal-prompt-submit-fj5ccft_.js} +5 -5
  43. package/dist/{internal-prompt-submit-DG94f8E-.js.map → internal-prompt-submit-fj5ccft_.js.map} +1 -1
  44. package/dist/{internal-session-bind-D6Hpl-84.js → internal-session-bind-0Hmak8PR.js} +2 -2
  45. package/dist/{internal-session-bind-D6Hpl-84.js.map → internal-session-bind-0Hmak8PR.js.map} +1 -1
  46. package/dist/{internal-stop-hook-D56b6iVj.js → internal-stop-hook-UN1JHtjj.js} +6 -6
  47. package/dist/{internal-stop-hook-D56b6iVj.js.map → internal-stop-hook-UN1JHtjj.js.map} +1 -1
  48. package/dist/{internal-stop-review-DlKzZgFm.js → internal-stop-review-8v2llYDB.js} +2 -2
  49. package/dist/{internal-stop-review-DlKzZgFm.js.map → internal-stop-review-8v2llYDB.js.map} +1 -1
  50. package/dist/{internal-worker-guard-D7sfByyo.js → internal-worker-guard-BI4Pl0Ew.js} +2 -2
  51. package/dist/{internal-worker-guard-D7sfByyo.js.map → internal-worker-guard-BI4Pl0Ew.js.map} +1 -1
  52. package/dist/{internal-workspace-header-CU5OjLCB.js → internal-workspace-header-kg9FoNXK.js} +2 -2
  53. package/dist/{internal-workspace-header-CU5OjLCB.js.map → internal-workspace-header-kg9FoNXK.js.map} +1 -1
  54. package/dist/lifecycle-BpqAyaAj.js +2 -0
  55. package/dist/lifecycle-CL2WiyeQ.js +2 -0
  56. package/dist/{lifecycle-CtRA3Y7p.js → lifecycle-Cx1wVrLb.js} +3 -3
  57. package/dist/{lifecycle-CtRA3Y7p.js.map → lifecycle-Cx1wVrLb.js.map} +1 -1
  58. package/dist/{lifecycle-BCnarXJV.js → lifecycle-IwotwedG.js} +2 -2
  59. package/dist/{lifecycle-BCnarXJV.js.map → lifecycle-IwotwedG.js.map} +1 -1
  60. package/dist/main.js +20 -20
  61. package/dist/{max-profile-contract-BcrMlrmo.js → max-profile-contract-Bl7I_EOC.js} +2 -2
  62. package/dist/{max-profile-contract-BcrMlrmo.js.map → max-profile-contract-Bl7I_EOC.js.map} +1 -1
  63. package/dist/{mcp-workspace-header-B60WSR1Y.js → mcp-workspace-header-BYgWioLH.js} +2 -2
  64. package/dist/{mcp-workspace-header-B60WSR1Y.js.map → mcp-workspace-header-BYgWioLH.js.map} +1 -1
  65. package/dist/{models-COuMOfM6.js → models-CVzyU5mJ.js} +3 -3
  66. package/dist/{models-COuMOfM6.js.map → models-CVzyU5mJ.js.map} +1 -1
  67. package/dist/{orchestration-DjLA-lxB.js → orchestration-Dc3mO0G3.js} +3 -3
  68. package/dist/{orchestration-DjLA-lxB.js.map → orchestration-Dc3mO0G3.js.map} +1 -1
  69. package/dist/paths-BXXCVFvA.js +2 -0
  70. package/dist/{paths-De1Qh9Q9.js → paths-CMxlQEfQ.js} +3 -3
  71. package/dist/{paths-De1Qh9Q9.js.map → paths-CMxlQEfQ.js.map} +1 -1
  72. package/dist/{peer-mcp-personas-0_XU6nm9.js → peer-mcp-personas-CQ-0Piyr.js} +175 -54
  73. package/dist/peer-mcp-personas-CQ-0Piyr.js.map +1 -0
  74. package/dist/{plan-review-hook-vL6BYmA8.js → plan-review-hook-BIMwWkh6.js} +4 -4
  75. package/dist/{plan-review-hook-vL6BYmA8.js.map → plan-review-hook-BIMwWkh6.js.map} +1 -1
  76. package/dist/{prompt-submit-hook-DfqufWC1.js → prompt-submit-hook-BcFpjHXg.js} +3 -3
  77. package/dist/{prompt-submit-hook-DfqufWC1.js.map → prompt-submit-hook-BcFpjHXg.js.map} +1 -1
  78. package/dist/{provision-DuCnZJj_.js → provision-_R7ZMygj.js} +5 -5
  79. package/dist/{provision-DuCnZJj_.js.map → provision-_R7ZMygj.js.map} +1 -1
  80. package/dist/{self-invocation-B84JCHps.js → self-invocation-cRl4RqfW.js} +2 -2
  81. package/dist/{self-invocation-B84JCHps.js.map → self-invocation-cRl4RqfW.js.map} +1 -1
  82. package/dist/{serve-DXFVR6A0.js → serve-DU66K5kv.js} +14 -14
  83. package/dist/{serve-DXFVR6A0.js.map → serve-DU66K5kv.js.map} +1 -1
  84. package/dist/{server-setup-CP8nGop3.js → server-setup-iLG8LrfL.js} +168 -30
  85. package/dist/server-setup-iLG8LrfL.js.map +1 -0
  86. package/dist/{start-BHEjESCB.js → start-DQTcm0o_.js} +3 -3
  87. package/dist/{start-BHEjESCB.js.map → start-DQTcm0o_.js.map} +1 -1
  88. package/dist/{state-B8adscCv.js → state-BlMpEFAt.js} +2 -1
  89. package/dist/{state-B8adscCv.js.map → state-BlMpEFAt.js.map} +1 -1
  90. package/dist/{stop-gate-hook-BEU8qQrC.js → stop-gate-hook-BUCxa5Kc.js} +4 -4
  91. package/dist/{stop-gate-hook-BEU8qQrC.js.map → stop-gate-hook-BUCxa5Kc.js.map} +1 -1
  92. package/dist/{stop-gate-policy-qzqXfRxE.js → stop-gate-policy--bpyxxXU.js} +3 -3
  93. package/dist/{stop-gate-policy-qzqXfRxE.js.map → stop-gate-policy--bpyxxXU.js.map} +1 -1
  94. package/dist/{token-CCg-Ov5q.js → token-C1gthnbV.js} +3 -3
  95. package/dist/{token-CCg-Ov5q.js.map → token-C1gthnbV.js.map} +1 -1
  96. package/dist/{worker-dispatch-CH-NN5FW.js → worker-dispatch-DMIdrlsF.js} +2 -2
  97. package/dist/{worker-dispatch-CH-NN5FW.js.map → worker-dispatch-DMIdrlsF.js.map} +1 -1
  98. package/package.json +1 -1
  99. package/dist/aic-ledger-Cx_Ubon3.js.map +0 -1
  100. package/dist/attribution-settings-Btc5EZTj.js.map +0 -1
  101. package/dist/claude-D0vuAqTV.js.map +0 -1
  102. package/dist/codex-BNm9D0iJ.js.map +0 -1
  103. package/dist/engine-DsVZuCrD.js +0 -2
  104. package/dist/internal-aic-status-C_swX3_7.js +0 -95
  105. package/dist/internal-aic-status-C_swX3_7.js.map +0 -1
  106. package/dist/lifecycle-B0USSJvd.js +0 -2
  107. package/dist/lifecycle-CQFjaQc0.js +0 -2
  108. package/dist/paths-DyX6SEnd.js +0 -2
  109. package/dist/peer-mcp-personas-0_XU6nm9.js.map +0 -1
  110. package/dist/server-setup-CP8nGop3.js.map +0 -1
@@ -1,13 +1,13 @@
1
- import { $ as UNKNOWN_EFFORT_ANCHOR, An as CHEAP_PROFILE_MODELS, B as resolveAdvisorEffort, Cn as upstreamMaxConnections, D as toolbeltEnabled, Dn as withOneMSuffix, En as oneMContextDisabled, F as ADVISOR_TOOL_INSTRUCTIONS, Fn as withInstallLock, Ft as createMessages, G as repairRejectedThinkingHistory, Gt as createResponses, H as formatThinkingRepairDecline, Ht as assembleResponsesPayload, I as FAST_ADVISOR_TOOL_INSTRUCTIONS, It as getTextTokenCount, J as isControllerClosedError, Jt as readResponseBodyCapped, K as buildAnthropicErrorEvent, Kt as createChatCompletions, L as buildAdvisorStream, Lt as getTokenCount, N as searchWeb, Nt as shimDefaultsToXhigh, On as withOneMSuffixForLead, P as ADVISOR_INTERNAL_TOOL_NAME, Pn as CHEAP_PROFILE_SUBAGENT_CONTEXT_TOKENS, Pt as countTokens, Q as EFFORT_ORDER, R as injectAdvisorTool, Rt as getTokenizerFromModel, Sn as upstreamAllowH2, Tn as catalogAdvertises1M, U as rememberThinkingHistoryRepair, Ut as warnOnTokenPriceDrift, V as resolveAdvisorModel, W as repairKnownThinkingHistory, Wt as resolveMcpToolTimeoutMs, X as readIteratorWithTimeout, Xt as normalizeOpenAIUsage, Y as logStreamError, Yt as parseJsonOrDiagnose, Z as relayAnthropicStream, _n as UPSTREAM_INACTIVITY_TIMEOUT_MS, dn as BUDGET_SMALL_FAST_SLUG, et as bucketEffort, gn as UPSTREAM_FETCH_TIMEOUT_MS, i as assertMcpToolSurfaceConsistent, in as provisionTreeSitterAssets, it as agentToolsEnabled, jn as CHEAP_PROFILE_NATIVE_AGENT_NAMES, kn as CHEAP_PROFILE_ADVISOR_CLIENT_MODEL, ln as toolbeltPathOverride, nt as handleMcpDelete, q as buildOpenAIErrorEvent, qt as MAX_RESPONSE_BODY_BYTES, rt as handleMcpPost, tt as clampEffort, vn as generateRandomPort, wn as classifyMessagesRoute, yn as isBudgetClaudeLead, z as isAdvisorRequested, zt as findLaunchBySecret } from "./peer-mcp-personas-0_XU6nm9.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-CQ-0Piyr.js";
2
2
  import { t as getPackageVersion } from "./version-C8x2hQrZ.js";
3
- import { i as ensurePaths, t as PATHS } from "./paths-De1Qh9Q9.js";
4
- import { t as state } from "./state-B8adscCv.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-CCg-Ov5q.js";
6
- import { t as getCopilotUsage } from "./get-copilot-usage-Cjy8TiFf.js";
7
- import { a as resolveExecutable, n as killManagedTree, o as runCommandCapture, r as parseBoolEnv, s as runCommandVoid } from "./exec-y8C_MU8A.js";
3
+ import { i as ensurePaths, t as PATHS } from "./paths-CMxlQEfQ.js";
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";
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
- 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-BcrMlrmo.js";
10
- import { d as formatAic, f as nanoAiuToCredits, r as extractAndRecordAic, s as recordAic, u as extractCopilotUsage } from "./aic-ledger-Cx_Ubon3.js";
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";
11
11
  import consola from "consola";
12
12
  import fs, { existsSync } from "node:fs";
13
13
  import path from "node:path";
@@ -421,6 +421,25 @@ const CHEAP_PROFILE = Object.freeze({
421
421
  hasCoordinator: false
422
422
  });
423
423
  /**
424
+ * The `-m cheapest` roster: the exact cheap surface and groups, but Luna-led
425
+ * (`gpt-5.6-luna`/max at the 200K default window), a Gemini/high Advisor, a
426
+ * Sol/high Oracle, and a Gemini/high reviewer. Oracle-only peer set, no
427
+ * `astra`. Hard-denies match fast's: core workers, `orchestrate`, `decide`,
428
+ * `fleet`, and `first-mate`.
429
+ */
430
+ const CHEAPEST_PROFILE = Object.freeze({
431
+ id: "cheapest",
432
+ nativeRoster: new Set(CHEAPEST_PROFILE_NATIVE_AGENT_NAMES),
433
+ personaAllowlist: /* @__PURE__ */ new Set(["oracle"]),
434
+ allowedGroups: /* @__PURE__ */ new Set([
435
+ "peers",
436
+ "search",
437
+ "workers",
438
+ "browser"
439
+ ]),
440
+ hasCoordinator: false
441
+ });
442
+ /**
424
443
  * The `-m max` profile: Sol/Luna-led, browse-only workers, and explicit
425
444
  * cross-lab peer names. The descriptor is a hard projection for bound launch
426
445
  * requests; unbound/BYO traffic remains standard because it has no registry
@@ -455,6 +474,7 @@ function profileDescriptor(id) {
455
474
  if (id === "max") return MAX_PROFILE;
456
475
  if (id === "cheap1m") return CHEAP1M_PROFILE;
457
476
  if (id === "cheap") return CHEAP_PROFILE;
477
+ if (id === "cheapest") return CHEAPEST_PROFILE;
458
478
  return STANDARD_PROFILE;
459
479
  }
460
480
  /**
@@ -474,6 +494,7 @@ function resolveLaunchProfile(modelArg) {
474
494
  if (arg === "max") return "max";
475
495
  if (arg === "cheap1m") return "cheap1m";
476
496
  if (arg === "cheap") return "cheap";
497
+ if (arg === "cheapest") return "cheapest";
477
498
  return "standard";
478
499
  }
479
500
  function validateMaxProfileLaunch(catalog) {
@@ -786,6 +807,53 @@ function formatCheap1mPrerequisiteFailure(missing) {
786
807
  function formatCheapPrerequisiteFailure(missing) {
787
808
  return "github-router claude -m cheap requires the following live-catalog capabilities, which this account's catalog does not fully provide:\n" + missing.map((m) => ` - ${m}`).join("\n") + "\n\nFalling back or silently dropping an agent is not supported for the cheap profile's exact roster. Run plain `github-router claude` instead.";
788
809
  }
810
+ /** The subagent window floor: every cheapest role runs at the 200K default. */
811
+ const CHEAPEST_SUBAGENT_MIN_CONTEXT_TOKENS = CHEAPEST_PROFILE_SUBAGENT_CONTEXT_TOKENS;
812
+ /**
813
+ * Validate the live Copilot catalog for `-m cheapest`: Luna lead at the 200K
814
+ * default window, Luna Explore/Plan/GP/implementer roles, Gemini reviewer and
815
+ * Advisor, and a Sol Oracle — all at the 200K default with their fixed
816
+ * efforts and supported endpoints.
817
+ */
818
+ function validateCheapestProfilePrerequisites(catalog) {
819
+ const missing = [];
820
+ const luna = findModel(catalog, CHEAPEST_PROFILE_MODELS.lead);
821
+ if (!luna) missing.push(`${CHEAPEST_PROFILE_MODELS.lead}: absent from the live catalog`);
822
+ else {
823
+ if (!hasToolCalls(luna)) missing.push(`${CHEAPEST_PROFILE_MODELS.lead}: does not advertise tool_calls`);
824
+ if (!hasContextAtLeast(luna, CHEAPEST_SUBAGENT_MIN_CONTEXT_TOKENS)) missing.push(`${CHEAPEST_PROFILE_MODELS.lead}: advertised context window is below the 200K subagent floor`);
825
+ if (!supportsEffort(luna, "high") || !supportsEffort(luna, "max") || !supportsEffort(luna, "xhigh")) missing.push(`${CHEAPEST_PROFILE_MODELS.lead}: does not advertise "high", "max", and "xhigh" reasoning effort`);
826
+ if (!supportsEndpoint(luna, "responses")) missing.push(`${CHEAPEST_PROFILE_MODELS.lead}: does not advertise a supported Responses endpoint`);
827
+ }
828
+ const sol = findModel(catalog, CHEAPEST_PROFILE_MODELS.plan);
829
+ if (!sol) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: absent from the live catalog`);
830
+ else {
831
+ if (!hasToolCalls(sol)) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: does not advertise tool_calls`);
832
+ if (!hasContextAtLeast(sol, CHEAPEST_SUBAGENT_MIN_CONTEXT_TOKENS)) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: advertised context window is below the 200K subagent floor`);
833
+ if (!supportsEffort(sol, "high")) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: does not advertise a "high" reasoning effort`);
834
+ if (!supportsEndpoint(sol, "responses")) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: does not advertise a supported Responses endpoint`);
835
+ if (!hasUsablePromptMetadata(sol)) missing.push(`${CHEAPEST_PROFILE_MODELS.plan}: no usable max_prompt_tokens metadata (Oracle brief)`);
836
+ }
837
+ const gemini = findModel(catalog, CHEAPEST_PROFILE_MODELS.reviewer);
838
+ if (!gemini) missing.push(`${CHEAPEST_PROFILE_MODELS.reviewer}: absent from the live catalog`);
839
+ else {
840
+ if (!hasToolCalls(gemini)) missing.push(`${CHEAPEST_PROFILE_MODELS.reviewer}: does not advertise tool_calls`);
841
+ if (!hasContextAtLeast(gemini, CHEAPEST_SUBAGENT_MIN_CONTEXT_TOKENS)) missing.push(`${CHEAPEST_PROFILE_MODELS.reviewer}: advertised context window is below the 200K subagent floor`);
842
+ if (!supportsEffort(gemini, "high")) missing.push(`${CHEAPEST_PROFILE_MODELS.reviewer}: does not advertise a "high" reasoning effort`);
843
+ if (!supportsEndpoint(gemini, "chat")) missing.push(`${CHEAPEST_PROFILE_MODELS.reviewer}: does not advertise a supported chat-completions endpoint`);
844
+ }
845
+ return {
846
+ ok: missing.length === 0,
847
+ missing
848
+ };
849
+ }
850
+ /**
851
+ * Format `validateCheapestProfilePrerequisites`'s failure list into the
852
+ * launch error message.
853
+ */
854
+ function formatCheapestPrerequisiteFailure(missing) {
855
+ return "github-router claude -m cheapest requires the following live-catalog capabilities, which this account's catalog does not fully provide:\n" + missing.map((m) => ` - ${m}`).join("\n") + "\n\nFalling back or silently dropping an agent is not supported for the cheapest profile's exact roster. Run plain `github-router claude` instead.";
856
+ }
789
857
  //#endregion
790
858
  //#region src/lib/file-log-reporter.ts
791
859
  const MAX_LOG_BYTES = 1048576;
@@ -1150,6 +1218,26 @@ const CHEAP_PICKER_MODELS = Object.freeze([
1150
1218
  neverOneM: true
1151
1219
  }
1152
1220
  ]);
1221
+ const CHEAPEST_PICKER_MODELS = Object.freeze([
1222
+ {
1223
+ id: "gpt-5.6-sol",
1224
+ label: "GPT-5.6 Sol",
1225
+ behavesAs: "claude-opus-5",
1226
+ neverOneM: true
1227
+ },
1228
+ {
1229
+ id: "gpt-5.6-luna",
1230
+ label: "GPT-5.6 Luna",
1231
+ behavesAs: "claude-opus-5",
1232
+ neverOneM: true
1233
+ },
1234
+ {
1235
+ id: "gemini-3.8-flash",
1236
+ label: "Gemini 3.8 Flash",
1237
+ behavesAs: "claude-sonnet-5",
1238
+ neverOneM: true
1239
+ }
1240
+ ]);
1153
1241
  /**
1154
1242
  * Return the ordered, profile-specific `/model` rows supported by the live
1155
1243
  * Copilot catalog. Fast intentionally shares Standard's four-row inventory;
@@ -1167,7 +1255,7 @@ function selectableModelsInCatalog(profile) {
1167
1255
  const catalog = state.models?.data;
1168
1256
  if (!catalog || catalog.length === 0) return [];
1169
1257
  const present = new Set(catalog.map((entry) => entry.id));
1170
- return (profile === "max" ? MAX_PICKER_MODELS : profile === "cheap" || profile === "cheap1m" ? CHEAP_PICKER_MODELS : STANDARD_PICKER_MODELS).filter((entry) => present.has(entry.id)).map((entry) => ({
1258
+ return (profile === "max" ? MAX_PICKER_MODELS : profile === "cheap" || profile === "cheap1m" ? CHEAP_PICKER_MODELS : profile === "cheapest" ? CHEAPEST_PICKER_MODELS : STANDARD_PICKER_MODELS).filter((entry) => present.has(entry.id)).map((entry) => ({
1171
1259
  model: entry.neverOneM ? entry.id : withOneMSuffix(entry.id),
1172
1260
  label: entry.label,
1173
1261
  behavesAs: entry.behavesAs
@@ -2108,7 +2196,7 @@ function collectToolFieldKeys(body) {
2108
2196
  //#endregion
2109
2197
  //#region package.json
2110
2198
  var name = "github-router";
2111
- var version = "0.3.314";
2199
+ var version = "0.3.316";
2112
2200
  //#endregion
2113
2201
  //#region src/lib/approval.ts
2114
2202
  const awaitApproval = async () => {
@@ -5159,16 +5247,17 @@ function preprocessMaxRequest(rawBody, launch, subagentRequest = false) {
5159
5247
  Object.freeze([MAX_LUNA_HIGH_ALIAS_ID, MAX_LUNA_MAX_ALIAS_ID]);
5160
5248
  //#endregion
5161
5249
  //#region src/lib/fast-request-preprocess.ts
5162
- const cheapFamily = (profileId) => profileId === "cheap" || profileId === "cheap1m";
5250
+ const cheapFamily = (profileId) => profileId === "cheap" || profileId === "cheap1m" || profileId === "cheapest";
5163
5251
  /**
5164
5252
  * Apply authenticated fast/cheap-profile model and effort policy before
5165
5253
  * ordinary model resolution. Synthetic aliases are refused outside an
5166
- * authenticated fast or cheap launch, so raw/BYO traffic cannot opt itself
5167
- * into private profile semantics. The cheap family shares fast's effort
5168
- * mapping (same model-to-effort rows, just bare subagent slugs at the
5169
- * wiring layer), so this preprocess is shared. Note the reviewer differs:
5170
- * fast reviews on Sonnet 5/xhigh while cheap reviews on Luna/max — both
5171
- * rows exist here, so each profile's reviewer resolves to its fixed effort.
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.
5258
+ * Note the reviewer differs: fast reviews on Sonnet 5/xhigh while cheap
5259
+ * reviews on Luna/max and cheapest reviews on Gemini/high all rows exist
5260
+ * here, so each profile's reviewer resolves to its fixed effort.
5172
5261
  */
5173
5262
  function preprocessFastRequest(rawBody, launch, subagentRequest = false) {
5174
5263
  if (launch?.profileId === "max") return preprocessMaxRequest(rawBody, launch, subagentRequest);
@@ -5539,6 +5628,23 @@ function fastAdvisorMetadataMismatch(rawBody) {
5539
5628
  if (stripTrailingOneMSuffix(model).base !== FAST_PROFILE_ADVISOR_MODEL) return `the native Advisor tool requested ${JSON.stringify(model)} instead of ${JSON.stringify(FAST_PROFILE_ADVISOR_MODEL)}`;
5540
5629
  }
5541
5630
  }
5631
+ function cheapestAdvisorMetadataMismatch(rawBody) {
5632
+ let body;
5633
+ try {
5634
+ body = JSON.parse(rawBody);
5635
+ } catch {
5636
+ return;
5637
+ }
5638
+ if (!Array.isArray(body.tools) || body.tools.length === 0) return void 0;
5639
+ for (const tool of body.tools) {
5640
+ if (!tool || typeof tool !== "object") continue;
5641
+ const type = tool.type;
5642
+ if (typeof type !== "string" || !type.startsWith("advisor_")) continue;
5643
+ const model = tool.model;
5644
+ if (typeof model !== "string") return "the native Advisor tool omitted its fixed model";
5645
+ if (stripTrailingOneMSuffix(model).base !== CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL) return `the native Advisor tool requested ${JSON.stringify(model)} instead of ${JSON.stringify(CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL)}`;
5646
+ }
5647
+ }
5542
5648
  function stripAdvisorTool(rawBody) {
5543
5649
  let body;
5544
5650
  try {
@@ -5674,18 +5780,22 @@ async function handleCompletion(c) {
5674
5780
  const fastProfileRequest = identity.launch?.profileId === "fast";
5675
5781
  const maxProfileRequest = identity.launch?.profileId === "max";
5676
5782
  const cheapProfileRequest = identity.launch?.profileId === "cheap" || identity.launch?.profileId === "cheap1m";
5783
+ const cheapestProfileRequest = identity.launch?.profileId === "cheapest";
5677
5784
  const subagentRequest = Boolean(c.req.header("x-claude-code-agent-id"));
5678
5785
  const fastSubagentRequest = fastProfileRequest && subagentRequest;
5679
5786
  const maxSubagentRequest = maxProfileRequest && subagentRequest;
5680
5787
  const cheapSubagentRequest = cheapProfileRequest && subagentRequest;
5788
+ const cheapestSubagentRequest = cheapestProfileRequest && subagentRequest;
5681
5789
  const fastLeadAdvisor = fastProfileRequest && !fastSubagentRequest;
5682
5790
  const maxLeadAdvisor = maxProfileRequest && !maxSubagentRequest;
5683
5791
  const cheapLeadAdvisor = cheapProfileRequest && !cheapSubagentRequest;
5684
- const advisorEnabled = advisorRequested && !fastSubagentRequest && !maxSubagentRequest && !cheapSubagentRequest;
5792
+ const cheapestLeadAdvisor = cheapestProfileRequest && !cheapestSubagentRequest;
5793
+ const advisorEnabled = advisorRequested && !fastSubagentRequest && !maxSubagentRequest && !cheapSubagentRequest && !cheapestSubagentRequest;
5685
5794
  const fastAdvisorEnabled = fastLeadAdvisor && advisorRequested && hasNonEmptyTools(rawBody);
5686
5795
  const maxAdvisorEnabled = maxLeadAdvisor && advisorRequested && hasNonEmptyTools(rawBody);
5687
5796
  const cheapAdvisorEnabled = cheapLeadAdvisor && advisorRequested && hasNonEmptyTools(rawBody);
5688
- const advisorBehaviorEnabled = fastLeadAdvisor ? fastAdvisorEnabled : cheapLeadAdvisor ? cheapAdvisorEnabled : maxLeadAdvisor ? maxAdvisorEnabled : advisorEnabled;
5797
+ const cheapestAdvisorEnabled = cheapestLeadAdvisor && advisorRequested && hasNonEmptyTools(rawBody);
5798
+ const advisorBehaviorEnabled = fastLeadAdvisor ? fastAdvisorEnabled : cheapLeadAdvisor ? cheapAdvisorEnabled : cheapestLeadAdvisor ? cheapestAdvisorEnabled : maxLeadAdvisor ? maxAdvisorEnabled : advisorEnabled;
5689
5799
  let fastAdvisorChoice;
5690
5800
  let maxAdvisorChoice;
5691
5801
  if (maxAdvisorEnabled) {
@@ -5746,10 +5856,31 @@ async function handleCompletion(c) {
5746
5856
  }, 503);
5747
5857
  }
5748
5858
  }
5859
+ if (cheapestAdvisorEnabled) {
5860
+ const mismatch = cheapestAdvisorMetadataMismatch(rawBody);
5861
+ if (mismatch) return c.json({
5862
+ type: "error",
5863
+ error: {
5864
+ type: "invalid_request_error",
5865
+ message: `Cheapest Advisor model mismatch: ${mismatch}. Run \`/advisor ${CHEAPEST_PROFILE_ADVISOR_CLIENT_MODEL}\` to restore the fixed cheapest profile, or relaunch with \`github-router claude -m cheapest\`.`
5866
+ }
5867
+ }, 400);
5868
+ try {
5869
+ fastAdvisorChoice = resolveCheapestAdvisorModel();
5870
+ } catch (error) {
5871
+ return c.json({
5872
+ type: "error",
5873
+ error: {
5874
+ type: "api_error",
5875
+ message: error instanceof Error ? error.message : String(error)
5876
+ }
5877
+ }, 503);
5878
+ }
5879
+ }
5749
5880
  const fastPreprocess = preprocessFastRequest(rawBody, identity.launch, subagentRequest);
5750
5881
  if (fastPreprocess.retiredAlias || fastPreprocess.rejectedAlias || fastPreprocess.rejectedModel) {
5751
5882
  const profileId = identity.launch?.profileId;
5752
- const profileLabel = profileId === "cheap" || profileId === "cheap1m" ? "cheap" : "fast";
5883
+ const profileLabel = profileId === "cheap" || profileId === "cheap1m" ? "cheap" : profileId === "cheapest" ? "cheapest" : "fast";
5753
5884
  const message = fastPreprocess.retiredAlias ? `Router-owned model alias ${JSON.stringify(fastPreprocess.retiredAlias)} belongs to a retired Fast role and is no longer valid. Relaunch or select a current Fast role.` : profileId === "max" ? maxRequestError(fastPreprocess) ?? "Invalid max request" : fastPreprocess.rejectedAlias ? `Router-owned model alias ${JSON.stringify(fastPreprocess.rejectedAlias)} is valid only for an authenticated -m ${profileLabel} launch.` : `Model ${JSON.stringify(fastPreprocess.rejectedModel)} is outside the fixed -m ${profileLabel} model set.`;
5754
5885
  return c.json({
5755
5886
  type: "error",
@@ -5796,7 +5927,7 @@ async function handleCompletion(c) {
5796
5927
  parsedBase = JSON.parse(promptWindowBody);
5797
5928
  } catch {}
5798
5929
  const wantsStream = parsedBase?.stream === true;
5799
- if ((fastAdvisorEnabled || cheapAdvisorEnabled || maxAdvisorEnabled) && wantsStream) {
5930
+ if ((fastAdvisorEnabled || cheapAdvisorEnabled || cheapestAdvisorEnabled || maxAdvisorEnabled) && wantsStream) {
5800
5931
  const initialConversation = Array.isArray(parsedBase.messages) ? parsedBase.messages : [];
5801
5932
  const parsedInitial = parseAnthropicRequest(parsedBase, modelId, selectedModel);
5802
5933
  const translatedAdvisorAborter = new AbortController();
@@ -5819,7 +5950,7 @@ async function handleCompletion(c) {
5819
5950
  effort: maxAdvisorChoice.effort,
5820
5951
  escalated: false,
5821
5952
  fastProfile: false
5822
- } : cheapAdvisorEnabled ? {
5953
+ } : cheapAdvisorEnabled || cheapestAdvisorEnabled ? {
5823
5954
  model: fastAdvisorChoice.model,
5824
5955
  effort: resolveAdvisorEffort(rawBody, fastAdvisorChoice.model, true),
5825
5956
  escalated: fastAdvisorChoice.escalated,
@@ -5839,7 +5970,7 @@ async function handleCompletion(c) {
5839
5970
  advisorEscalated: advisorChoice.escalated,
5840
5971
  advisorFastProfile: advisorChoice.fastProfile,
5841
5972
  advisorMaxProfile: maxAdvisorEnabled,
5842
- advisorCheapProfile: cheapAdvisorEnabled,
5973
+ advisorCheapProfile: cheapAdvisorEnabled || cheapestAdvisorEnabled,
5843
5974
  advisorEffort: advisorChoice.effort,
5844
5975
  externalAborter: translatedAdvisorAborter,
5845
5976
  continueTurn: makeShimContinueTurn(endpoint, {
@@ -5962,10 +6093,10 @@ async function handleCompletion(c) {
5962
6093
  requestHeaders,
5963
6094
  advisorModel: advisorChoice.model,
5964
6095
  advisorEscalated: advisorChoice.escalated,
5965
- advisorFastProfile: fastLeadAdvisor || cheapLeadAdvisor,
6096
+ advisorFastProfile: fastLeadAdvisor || cheapLeadAdvisor || cheapestLeadAdvisor,
5966
6097
  advisorMaxProfile: maxAdvisorEnabled,
5967
- advisorCheapProfile: cheapLeadAdvisor,
5968
- advisorEffort: maxAdvisorChoice ? maxAdvisorChoice.effort : resolveAdvisorEffort(rawBody, advisorChoice.model, fastLeadAdvisor || cheapLeadAdvisor),
6098
+ advisorCheapProfile: cheapLeadAdvisor || cheapestLeadAdvisor,
6099
+ advisorEffort: maxAdvisorChoice ? maxAdvisorChoice.effort : resolveAdvisorEffort(rawBody, advisorChoice.model, fastLeadAdvisor || cheapLeadAdvisor || cheapestLeadAdvisor),
5969
6100
  externalAborter: advisorAborter
5970
6101
  }), {
5971
6102
  status: response.status,
@@ -7113,6 +7244,7 @@ async function setupAndServe(options) {
7113
7244
  state.showToken = options.showToken;
7114
7245
  state.extendedBetas = options.extendedBetas;
7115
7246
  state.browseEnabled = options.browseEnabled || process.env.GH_ROUTER_ENABLE_BROWSE === "1";
7247
+ state.searchEnabled = options.searchEnabled || process.env.GH_ROUTER_ENABLE_SEMANTIC_SEARCH === "1";
7116
7248
  state.fleetEnabled = options.fleetEnabled || process.env.GH_ROUTER_ENABLE_FLEET === "1";
7117
7249
  state.agentsEnabled = options.agentsEnabled || process.env.GH_ROUTER_ENABLE_AGENTS === "1";
7118
7250
  state.powerBrowseEnabled = options.powerBrowseEnabled || process.env.GH_ROUTER_ENABLE_POWER_BROWSE === "1";
@@ -7261,6 +7393,11 @@ const sharedServerArgs = {
7261
7393
  type: "boolean",
7262
7394
  default: true,
7263
7395
  description: "Update github-router itself to the latest npm version on launch (throttled once/hour). Best-effort and non-blocking: the proxy serves immediately and a detached updater applies the new version after this process exits (it takes effect on the NEXT launch; the running process keeps its current build). Disable with --no-self-update or GH_ROUTER_NO_SELF_UPDATE=1. Skipped silently if npm/network unavailable."
7396
+ },
7397
+ search: {
7398
+ type: "boolean",
7399
+ default: false,
7400
+ description: "Enable ColBERT/colgrep semantic code search (meaning-ranked `code` tool results over a per-workspace index, with transparent lexical fallback). Off by default; the `code` tool is lexical-only unless this is set. Can also be enabled with GH_ROUTER_ENABLE_SEMANTIC_SEARCH=1. GH_ROUTER_DISABLE_SEMANTIC_SEARCH=1 hard-disables (wins over --search, for tests)."
7264
7401
  }
7265
7402
  };
7266
7403
  const allowedAccountTypes = /* @__PURE__ */ new Set([
@@ -7302,7 +7439,8 @@ function parseSharedArgs(args) {
7302
7439
  fleetEnabled: args.fleet,
7303
7440
  agentsEnabled: args.agents,
7304
7441
  powerBrowseEnabled: args["power-browse"],
7305
- humanlikeEnabled: args.humanlike
7442
+ humanlikeEnabled: args.humanlike,
7443
+ searchEnabled: args.search
7306
7444
  };
7307
7445
  }
7308
7446
  /**
@@ -7374,7 +7512,7 @@ function getClaudeCodeEnvVars(serverUrl, model, launchProfileId = "standard", pi
7374
7512
  if (process.env.MCP_TOOL_TIMEOUT === void 0) vars.MCP_TOOL_TIMEOUT = mcpToolTimeoutMs;
7375
7513
  const isFastProfile = launchProfileId === "fast";
7376
7514
  const isMaxProfile = launchProfileId === "max";
7377
- const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m";
7515
+ const isCheapProfile = launchProfileId === "cheap" || launchProfileId === "cheap1m" || launchProfileId === "cheapest";
7378
7516
  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";
7379
7517
  if (process.env.ANTHROPIC_SMALL_FAST_MODEL === void 0) vars.ANTHROPIC_SMALL_FAST_MODEL = (isFastProfile || isMaxProfile) && !isCheapProfile ? oneMSuffixForAlias(smallFastModel) : smallFastModel;
7380
7518
  const seedTierRow = (modelKey, nameKey, bareSlug) => {
@@ -7522,6 +7660,6 @@ function getCodexEnvVars(serverUrl) {
7522
7660
  return vars;
7523
7661
  }
7524
7662
  //#endregion
7525
- export { checkClaudeVersion as C, runSelfUpdate as S, resolveLaunchProfile as _, sharedServerArgs as a, validateFastProfilePrerequisites as b, stopKeepAwake as c, enableFileLogging as d, LUNA_SCOUT_ALIAS_ID as f, profileDescriptor as g, formatFastPrerequisiteFailure 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, validateCheap1mProfilePrerequisites as v, updateClaude as w, validateMaxProfileLaunch as x, validateCheapProfilePrerequisites as y };
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 };
7526
7664
 
7527
- //# sourceMappingURL=server-setup-CP8nGop3.js.map
7665
+ //# sourceMappingURL=server-setup-iLG8LrfL.js.map