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.
- package/dist/{aic-ledger-Cx_Ubon3.js → aic-ledger-BS47yb_C.js} +66 -6
- package/dist/aic-ledger-BS47yb_C.js.map +1 -0
- package/dist/{attribution-settings-Btc5EZTj.js → attribution-settings-jcsSeVur.js} +120 -21
- package/dist/attribution-settings-jcsSeVur.js.map +1 -0
- package/dist/{auth-O_UG1ABO.js → auth-JfxL9q7z.js} +4 -4
- package/dist/{auth-O_UG1ABO.js.map → auth-JfxL9q7z.js.map} +1 -1
- package/dist/browser-ext/manifest.json +1 -1
- package/dist/{check-usage-dicJOWML.js → check-usage-DXUEQzt_.js} +4 -4
- package/dist/{check-usage-dicJOWML.js.map → check-usage-DXUEQzt_.js.map} +1 -1
- package/dist/{claude-D0vuAqTV.js → claude-CJ4Nd2_3.js} +116 -45
- package/dist/claude-CJ4Nd2_3.js.map +1 -0
- package/dist/{codex-BNm9D0iJ.js → codex-CwuLqNZF.js} +6 -6
- package/dist/codex-CwuLqNZF.js.map +1 -0
- package/dist/copilot-discount-IbXR5A28.js +220 -0
- package/dist/copilot-discount-IbXR5A28.js.map +1 -0
- package/dist/{debug-2PgImRnr.js → debug-CA7pg8V9.js} +2 -2
- package/dist/{debug-2PgImRnr.js.map → debug-CA7pg8V9.js.map} +1 -1
- package/dist/engine-DwrxceOS.js +2 -0
- package/dist/{exec-y8C_MU8A.js → exec-COUT4QsS.js} +2 -2
- package/dist/{exec-y8C_MU8A.js.map → exec-COUT4QsS.js.map} +1 -1
- package/dist/{gate-discovery-CO2njGBB.js → gate-discovery-z04ywOzB.js} +6 -6
- package/dist/{gate-discovery-CO2njGBB.js.map → gate-discovery-z04ywOzB.js.map} +1 -1
- package/dist/{get-copilot-usage-Cjy8TiFf.js → get-copilot-usage-BMD_cJNT.js} +3 -3
- package/dist/{get-copilot-usage-Cjy8TiFf.js.map → get-copilot-usage-BMD_cJNT.js.map} +1 -1
- package/dist/hooks.mjs +490 -28
- package/dist/hooks.sha256 +1 -1
- package/dist/internal-aic-status-BN0xRLSF.js +432 -0
- package/dist/internal-aic-status-BN0xRLSF.js.map +1 -0
- package/dist/{internal-artifact-open-CxeIfsW_.js → internal-artifact-open-B3stUu74.js} +2 -2
- package/dist/{internal-artifact-open-CxeIfsW_.js.map → internal-artifact-open-B3stUu74.js.map} +1 -1
- package/dist/{internal-fast-dispatch-guard-D8YNlnuQ.js → internal-fast-dispatch-guard-2QjUlhqO.js} +1 -1
- package/dist/{internal-fast-dispatch-guard-19xQEouu.js → internal-fast-dispatch-guard-CAwYj_Yz.js} +2 -2
- package/dist/{internal-fast-dispatch-guard-19xQEouu.js.map → internal-fast-dispatch-guard-CAwYj_Yz.js.map} +1 -1
- package/dist/{internal-first-mate-guard-BuweUgjb.js → internal-first-mate-guard-B0rbLb0L.js} +3 -3
- package/dist/{internal-first-mate-guard-BuweUgjb.js.map → internal-first-mate-guard-B0rbLb0L.js.map} +1 -1
- package/dist/{internal-first-mate-guard-Nf1H0mCK.js → internal-first-mate-guard-VgnHBp0s.js} +1 -1
- package/dist/{internal-max-dispatch-guard-DZ7KLWxP.js → internal-max-dispatch-guard-BNqQ2wMc.js} +3 -3
- package/dist/{internal-max-dispatch-guard-DZ7KLWxP.js.map → internal-max-dispatch-guard-BNqQ2wMc.js.map} +1 -1
- package/dist/{internal-max-dispatch-guard-_Pp4LltM.js → internal-max-dispatch-guard-Bz7a2Ntf.js} +1 -1
- package/dist/{internal-plan-review-DLduDz41.js → internal-plan-review-QUvNZmMR.js} +3 -3
- package/dist/{internal-plan-review-DLduDz41.js.map → internal-plan-review-QUvNZmMR.js.map} +1 -1
- package/dist/{internal-prompt-submit-DG94f8E-.js → internal-prompt-submit-fj5ccft_.js} +5 -5
- package/dist/{internal-prompt-submit-DG94f8E-.js.map → internal-prompt-submit-fj5ccft_.js.map} +1 -1
- package/dist/{internal-session-bind-D6Hpl-84.js → internal-session-bind-0Hmak8PR.js} +2 -2
- package/dist/{internal-session-bind-D6Hpl-84.js.map → internal-session-bind-0Hmak8PR.js.map} +1 -1
- package/dist/{internal-stop-hook-D56b6iVj.js → internal-stop-hook-UN1JHtjj.js} +6 -6
- package/dist/{internal-stop-hook-D56b6iVj.js.map → internal-stop-hook-UN1JHtjj.js.map} +1 -1
- package/dist/{internal-stop-review-DlKzZgFm.js → internal-stop-review-8v2llYDB.js} +2 -2
- package/dist/{internal-stop-review-DlKzZgFm.js.map → internal-stop-review-8v2llYDB.js.map} +1 -1
- package/dist/{internal-worker-guard-D7sfByyo.js → internal-worker-guard-BI4Pl0Ew.js} +2 -2
- package/dist/{internal-worker-guard-D7sfByyo.js.map → internal-worker-guard-BI4Pl0Ew.js.map} +1 -1
- package/dist/{internal-workspace-header-CU5OjLCB.js → internal-workspace-header-kg9FoNXK.js} +2 -2
- package/dist/{internal-workspace-header-CU5OjLCB.js.map → internal-workspace-header-kg9FoNXK.js.map} +1 -1
- package/dist/lifecycle-BpqAyaAj.js +2 -0
- package/dist/lifecycle-CL2WiyeQ.js +2 -0
- package/dist/{lifecycle-CtRA3Y7p.js → lifecycle-Cx1wVrLb.js} +3 -3
- package/dist/{lifecycle-CtRA3Y7p.js.map → lifecycle-Cx1wVrLb.js.map} +1 -1
- package/dist/{lifecycle-BCnarXJV.js → lifecycle-IwotwedG.js} +2 -2
- package/dist/{lifecycle-BCnarXJV.js.map → lifecycle-IwotwedG.js.map} +1 -1
- package/dist/main.js +20 -20
- package/dist/{max-profile-contract-BcrMlrmo.js → max-profile-contract-Bl7I_EOC.js} +2 -2
- package/dist/{max-profile-contract-BcrMlrmo.js.map → max-profile-contract-Bl7I_EOC.js.map} +1 -1
- package/dist/{mcp-workspace-header-B60WSR1Y.js → mcp-workspace-header-BYgWioLH.js} +2 -2
- package/dist/{mcp-workspace-header-B60WSR1Y.js.map → mcp-workspace-header-BYgWioLH.js.map} +1 -1
- package/dist/{models-COuMOfM6.js → models-CVzyU5mJ.js} +3 -3
- package/dist/{models-COuMOfM6.js.map → models-CVzyU5mJ.js.map} +1 -1
- package/dist/{orchestration-DjLA-lxB.js → orchestration-Dc3mO0G3.js} +3 -3
- package/dist/{orchestration-DjLA-lxB.js.map → orchestration-Dc3mO0G3.js.map} +1 -1
- package/dist/paths-BXXCVFvA.js +2 -0
- package/dist/{paths-De1Qh9Q9.js → paths-CMxlQEfQ.js} +3 -3
- package/dist/{paths-De1Qh9Q9.js.map → paths-CMxlQEfQ.js.map} +1 -1
- package/dist/{peer-mcp-personas-0_XU6nm9.js → peer-mcp-personas-CQ-0Piyr.js} +175 -54
- package/dist/peer-mcp-personas-CQ-0Piyr.js.map +1 -0
- package/dist/{plan-review-hook-vL6BYmA8.js → plan-review-hook-BIMwWkh6.js} +4 -4
- package/dist/{plan-review-hook-vL6BYmA8.js.map → plan-review-hook-BIMwWkh6.js.map} +1 -1
- package/dist/{prompt-submit-hook-DfqufWC1.js → prompt-submit-hook-BcFpjHXg.js} +3 -3
- package/dist/{prompt-submit-hook-DfqufWC1.js.map → prompt-submit-hook-BcFpjHXg.js.map} +1 -1
- package/dist/{provision-DuCnZJj_.js → provision-_R7ZMygj.js} +5 -5
- package/dist/{provision-DuCnZJj_.js.map → provision-_R7ZMygj.js.map} +1 -1
- package/dist/{self-invocation-B84JCHps.js → self-invocation-cRl4RqfW.js} +2 -2
- package/dist/{self-invocation-B84JCHps.js.map → self-invocation-cRl4RqfW.js.map} +1 -1
- package/dist/{serve-DXFVR6A0.js → serve-DU66K5kv.js} +14 -14
- package/dist/{serve-DXFVR6A0.js.map → serve-DU66K5kv.js.map} +1 -1
- package/dist/{server-setup-CP8nGop3.js → server-setup-iLG8LrfL.js} +168 -30
- package/dist/server-setup-iLG8LrfL.js.map +1 -0
- package/dist/{start-BHEjESCB.js → start-DQTcm0o_.js} +3 -3
- package/dist/{start-BHEjESCB.js.map → start-DQTcm0o_.js.map} +1 -1
- package/dist/{state-B8adscCv.js → state-BlMpEFAt.js} +2 -1
- package/dist/{state-B8adscCv.js.map → state-BlMpEFAt.js.map} +1 -1
- package/dist/{stop-gate-hook-BEU8qQrC.js → stop-gate-hook-BUCxa5Kc.js} +4 -4
- package/dist/{stop-gate-hook-BEU8qQrC.js.map → stop-gate-hook-BUCxa5Kc.js.map} +1 -1
- package/dist/{stop-gate-policy-qzqXfRxE.js → stop-gate-policy--bpyxxXU.js} +3 -3
- package/dist/{stop-gate-policy-qzqXfRxE.js.map → stop-gate-policy--bpyxxXU.js.map} +1 -1
- package/dist/{token-CCg-Ov5q.js → token-C1gthnbV.js} +3 -3
- package/dist/{token-CCg-Ov5q.js.map → token-C1gthnbV.js.map} +1 -1
- package/dist/{worker-dispatch-CH-NN5FW.js → worker-dispatch-DMIdrlsF.js} +2 -2
- package/dist/{worker-dispatch-CH-NN5FW.js.map → worker-dispatch-DMIdrlsF.js.map} +1 -1
- package/package.json +1 -1
- package/dist/aic-ledger-Cx_Ubon3.js.map +0 -1
- package/dist/attribution-settings-Btc5EZTj.js.map +0 -1
- package/dist/claude-D0vuAqTV.js.map +0 -1
- package/dist/codex-BNm9D0iJ.js.map +0 -1
- package/dist/engine-DsVZuCrD.js +0 -2
- package/dist/internal-aic-status-C_swX3_7.js +0 -95
- package/dist/internal-aic-status-C_swX3_7.js.map +0 -1
- package/dist/lifecycle-B0USSJvd.js +0 -2
- package/dist/lifecycle-CQFjaQc0.js +0 -2
- package/dist/paths-DyX6SEnd.js +0 -2
- package/dist/peer-mcp-personas-0_XU6nm9.js.map +0 -1
- package/dist/server-setup-CP8nGop3.js.map +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { $ as
|
|
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-
|
|
4
|
-
import { t as state } from "./state-
|
|
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-
|
|
6
|
-
import { t as getCopilotUsage } from "./get-copilot-usage-
|
|
7
|
-
import {
|
|
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-
|
|
10
|
-
import {
|
|
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.
|
|
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
|
|
5167
|
-
* into private profile semantics. The cheap family
|
|
5168
|
-
* mapping (same model-to-effort rows, just
|
|
5169
|
-
* wiring layer), so this preprocess is shared.
|
|
5170
|
-
* fast reviews on Sonnet 5/xhigh while cheap
|
|
5171
|
-
*
|
|
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
|
|
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
|
|
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 {
|
|
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-
|
|
7665
|
+
//# sourceMappingURL=server-setup-iLG8LrfL.js.map
|