claude-use 11.17.0 → 11.18.0
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/cli.cjs +48 -81
- package/dist/index.cjs +6 -4
- package/dist/index.mjs +6 -4
- package/dist/types/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -27012,10 +27012,10 @@ var init_schema = __esm({
|
|
|
27012
27012
|
ANTIGRAVITY_DEFAULT_MODE = "cloud";
|
|
27013
27013
|
ANTIGRAVITY_DEFAULT_MODEL = "gemini-3.8-flash-high";
|
|
27014
27014
|
ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
|
|
27015
|
-
fable: ["
|
|
27015
|
+
fable: ["gemini-4-argon-high", "claude-opus-5-5-high", "gemini-3.8-flash-high"],
|
|
27016
27016
|
opus: ["claude-opus-5-5-high", "gemini-4-argon-high", "gemini-3.8-flash-high"],
|
|
27017
27017
|
sonnet: ["claude-sonnet-5-5-medium", "gemini-4-argon-medium", "gemini-3.8-flash-medium"],
|
|
27018
|
-
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "
|
|
27018
|
+
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "claude-sonnet-5-5-low"]
|
|
27019
27019
|
});
|
|
27020
27020
|
ANTIGRAVITY_DEFAULT_EFFORT = "low";
|
|
27021
27021
|
AntigravityModelTargetSchema = external_exports.union([external_exports.string().min(1), external_exports.array(external_exports.string().min(1)).min(1)]);
|
|
@@ -27026,6 +27026,8 @@ var init_schema = __esm({
|
|
|
27026
27026
|
defaultModel: external_exports.string().min(1).optional(),
|
|
27027
27027
|
/** Model name mapping. A key naming a tier (`fable`, `opus`, `sonnet`, `haiku`) overrides that tier's shipped model and is matched by substring of the requested name in `ANTIGRAVITY_TIERS` order; any other key is an alias, matched against the whole requested name case-insensitively, so `/model <alias>` selects its backend model. An alias outranks every other rule, including the pass-through of backend names. A value is one model or an ordered list of candidates: the request goes to the first whose quota windows are not spent, and when every candidate is spent, to the one whose binding window lifts soonest. */
|
|
27028
27028
|
models: external_exports.record(external_exports.string().min(1), AntigravityModelTargetSchema).optional(),
|
|
27029
|
+
/** When every candidate of the tier a request names has no quota left, serve it from the next tier down, and onward through the lower tiers, instead of failing with the quota limit. Applies to a name that selects a tier (`/model fable`), not to an alias or a backend model name. Defaults to false. */
|
|
27030
|
+
degradeDownTiers: external_exports.boolean().optional(),
|
|
27029
27031
|
/** The reasoning effort used when the request's own effort is not one the backend accepts. */
|
|
27030
27032
|
effort: external_exports.enum(ANTIGRAVITY_EFFORTS).optional(),
|
|
27031
27033
|
/** Cloud-specific settings (for `mode: "cloud"`). */
|
|
@@ -34089,7 +34091,7 @@ var init_package = __esm({
|
|
|
34089
34091
|
"package.json"() {
|
|
34090
34092
|
package_default = {
|
|
34091
34093
|
name: "claude-use",
|
|
34092
|
-
version: "11.
|
|
34094
|
+
version: "11.18.0",
|
|
34093
34095
|
description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
|
|
34094
34096
|
license: "MIT",
|
|
34095
34097
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -35768,7 +35770,7 @@ function isEmptyCodexConfig(config2) {
|
|
|
35768
35770
|
return config2 === void 0 || config2.defaultModel === void 0 && config2.effort === void 0 && config2.login === void 0 && (config2.models === void 0 || Object.keys(config2.models).length === 0);
|
|
35769
35771
|
}
|
|
35770
35772
|
function isEmptyAntigravityConfig(config2) {
|
|
35771
|
-
return config2 === void 0 || config2.mode === void 0 && config2.defaultModel === void 0 && config2.effort === void 0 && config2.cloud === void 0 && config2.local === void 0 && (config2.models === void 0 || Object.keys(config2.models).length === 0);
|
|
35773
|
+
return config2 === void 0 || config2.mode === void 0 && config2.defaultModel === void 0 && config2.effort === void 0 && config2.degradeDownTiers === void 0 && config2.cloud === void 0 && config2.local === void 0 && (config2.models === void 0 || Object.keys(config2.models).length === 0);
|
|
35772
35774
|
}
|
|
35773
35775
|
function addProvider(paths, name, input2) {
|
|
35774
35776
|
if (providerExists(paths, name)) {
|
|
@@ -128059,6 +128061,7 @@ function resolveAntigravityConfig(config2) {
|
|
|
128059
128061
|
defaultModel: config2?.defaultModel ?? ANTIGRAVITY_DEFAULT_MODEL,
|
|
128060
128062
|
models: { fable: tierModel("fable"), opus: tierModel("opus"), sonnet: tierModel("sonnet"), haiku: tierModel("haiku") },
|
|
128061
128063
|
aliases,
|
|
128064
|
+
degradeDownTiers: config2?.degradeDownTiers ?? false,
|
|
128062
128065
|
effort: config2?.effort ?? ANTIGRAVITY_DEFAULT_EFFORT,
|
|
128063
128066
|
cloud: {
|
|
128064
128067
|
endpoint: config2?.cloud?.endpoint,
|
|
@@ -128077,18 +128080,25 @@ var BACKEND_CLAUDE_NAME = /^claude-.+-(?:low|medium|high|thinking)$/;
|
|
|
128077
128080
|
function isBackendModelName(name) {
|
|
128078
128081
|
return BACKEND_FAMILY_PREFIXES.some((prefix) => name.startsWith(prefix)) || BACKEND_CLAUDE_NAME.test(name);
|
|
128079
128082
|
}
|
|
128080
|
-
function
|
|
128083
|
+
function resolveName(requested, config2) {
|
|
128081
128084
|
const stripped = requested.toLowerCase().endsWith(CONTEXT_MARKER_1M) ? requested.slice(0, -CONTEXT_MARKER_1M.length) : requested;
|
|
128082
128085
|
const lower = stripped.toLowerCase();
|
|
128083
128086
|
const alias = config2.aliases.get(lower);
|
|
128084
128087
|
if (alias !== void 0) {
|
|
128085
|
-
return alias;
|
|
128088
|
+
return { candidates: alias, tier: void 0 };
|
|
128086
128089
|
}
|
|
128087
128090
|
if (isBackendModelName(stripped)) {
|
|
128088
|
-
return [stripped];
|
|
128091
|
+
return { candidates: [stripped], tier: void 0 };
|
|
128089
128092
|
}
|
|
128090
128093
|
const tier = ANTIGRAVITY_TIERS.find((candidate) => lower.includes(candidate));
|
|
128091
|
-
return tier === void 0 ? [config2.defaultModel] : config2.models[tier];
|
|
128094
|
+
return tier === void 0 ? { candidates: [config2.defaultModel], tier: void 0 } : { candidates: config2.models[tier], tier };
|
|
128095
|
+
}
|
|
128096
|
+
function candidateStages(requested, config2) {
|
|
128097
|
+
const { candidates, tier } = resolveName(requested, config2);
|
|
128098
|
+
if (!config2.degradeDownTiers || tier === void 0) {
|
|
128099
|
+
return [candidates];
|
|
128100
|
+
}
|
|
128101
|
+
return ANTIGRAVITY_TIERS.slice(ANTIGRAVITY_TIERS.indexOf(tier)).map((name) => config2.models[name]);
|
|
128092
128102
|
}
|
|
128093
128103
|
function chooseCandidate(candidates, routing) {
|
|
128094
128104
|
const first = candidates[0];
|
|
@@ -128254,79 +128264,15 @@ function messagesToGeminiContents(messages, names, toolIdToName) {
|
|
|
128254
128264
|
return contents;
|
|
128255
128265
|
}
|
|
128256
128266
|
var EMPTY_SCHEMA = { type: "object", properties: {} };
|
|
128257
|
-
var GEMINI_SCHEMA_KEYS = /* @__PURE__ */ new Set(["type", "format", "description", "nullable", "enum", "anyOf", "items", "properties", "required", "minimum", "maximum", "minItems", "maxItems"]);
|
|
128258
|
-
function describeSchemaValue(node2) {
|
|
128259
|
-
if (!isRecord9(node2)) {
|
|
128260
|
-
return "any value";
|
|
128261
|
-
}
|
|
128262
|
-
const type2 = node2.type;
|
|
128263
|
-
const name = typeof type2 === "string" ? type2 : Array.isArray(type2) && typeof type2[0] === "string" ? type2[0] : "value";
|
|
128264
|
-
if (name === "array") {
|
|
128265
|
-
return `a list of ${describeSchemaValue(node2.items)}`;
|
|
128266
|
-
}
|
|
128267
|
-
return name === "object" ? "an object" : `a ${name}`;
|
|
128268
|
-
}
|
|
128269
|
-
function toGeminiSchema(node2) {
|
|
128270
|
-
if (!isRecord9(node2)) {
|
|
128271
|
-
return node2;
|
|
128272
|
-
}
|
|
128273
|
-
const out = {};
|
|
128274
|
-
const notes = [];
|
|
128275
|
-
let nullable2 = false;
|
|
128276
|
-
for (const [key, value2] of Object.entries(node2)) {
|
|
128277
|
-
if (key === "type" && Array.isArray(value2)) {
|
|
128278
|
-
const named = value2.filter((entry) => entry !== "null");
|
|
128279
|
-
if (named.length > 0 && typeof named[0] === "string") {
|
|
128280
|
-
out.type = named[0];
|
|
128281
|
-
}
|
|
128282
|
-
nullable2 = value2.includes("null");
|
|
128283
|
-
continue;
|
|
128284
|
-
}
|
|
128285
|
-
if (!GEMINI_SCHEMA_KEYS.has(key)) {
|
|
128286
|
-
if (key === "additionalProperties" && value2 !== false) {
|
|
128287
|
-
notes.push(`Each value is ${describeSchemaValue(value2)}.`);
|
|
128288
|
-
} else if (key === "propertyNames" && isRecord9(value2) && typeof value2.pattern === "string") {
|
|
128289
|
-
notes.push(`Keys match ${value2.pattern}.`);
|
|
128290
|
-
}
|
|
128291
|
-
continue;
|
|
128292
|
-
}
|
|
128293
|
-
out[key] = value2;
|
|
128294
|
-
}
|
|
128295
|
-
if (out.type === "null") {
|
|
128296
|
-
delete out.type;
|
|
128297
|
-
}
|
|
128298
|
-
if (nullable2 && out.type !== void 0) {
|
|
128299
|
-
out.nullable = true;
|
|
128300
|
-
}
|
|
128301
|
-
if (notes.length > 0) {
|
|
128302
|
-
const description = typeof out.description === "string" ? out.description : "";
|
|
128303
|
-
out.description = `${description}${description === "" ? "" : " "}${notes.join(" ")}`;
|
|
128304
|
-
}
|
|
128305
|
-
if ("properties" in out && isRecord9(out.properties)) {
|
|
128306
|
-
out.properties = Object.fromEntries(Object.entries(out.properties).map(([name, child]) => [name, toGeminiSchema(child)]));
|
|
128307
|
-
}
|
|
128308
|
-
if ("items" in out) {
|
|
128309
|
-
out.items = toGeminiSchema(out.items);
|
|
128310
|
-
} else if (out.type === "array") {
|
|
128311
|
-
out.items = {};
|
|
128312
|
-
}
|
|
128313
|
-
if (Array.isArray(out.anyOf)) {
|
|
128314
|
-
out.anyOf = out.anyOf.map(toGeminiSchema);
|
|
128315
|
-
}
|
|
128316
|
-
return out;
|
|
128317
|
-
}
|
|
128318
128267
|
function mapTools2(tools, names) {
|
|
128319
128268
|
if (tools === void 0 || tools.length === 0) {
|
|
128320
128269
|
return void 0;
|
|
128321
128270
|
}
|
|
128322
|
-
const declarations = tools.map((tool) => {
|
|
128323
|
-
|
|
128324
|
-
|
|
128325
|
-
|
|
128326
|
-
|
|
128327
|
-
parameters: isRecord9(converted) ? converted : EMPTY_SCHEMA
|
|
128328
|
-
};
|
|
128329
|
-
});
|
|
128271
|
+
const declarations = tools.map((tool) => ({
|
|
128272
|
+
name: shortToolName2(tool.name, names),
|
|
128273
|
+
description: tool.description,
|
|
128274
|
+
parametersJsonSchema: tool.input_schema ?? EMPTY_SCHEMA
|
|
128275
|
+
}));
|
|
128330
128276
|
return [{ functionDeclarations: declarations }];
|
|
128331
128277
|
}
|
|
128332
128278
|
var EFFORT_SUFFIXES = /* @__PURE__ */ new Set(["low", "medium", "high"]);
|
|
@@ -128354,10 +128300,29 @@ function completeEffortSuffix(model, request7, config2) {
|
|
|
128354
128300
|
const suffixed = `${model}-${effortSuffixOf(level)}`;
|
|
128355
128301
|
return configured.some((entry) => entry === suffixed || splitEffortSuffix(entry)?.base === model) ? suffixed : model;
|
|
128356
128302
|
}
|
|
128303
|
+
function chooseAcrossStages(stages, routing) {
|
|
128304
|
+
const own2 = stages[0];
|
|
128305
|
+
if (own2 === void 0) {
|
|
128306
|
+
throw new Error("A request resolves to at least one candidate list");
|
|
128307
|
+
}
|
|
128308
|
+
if (routing === void 0) {
|
|
128309
|
+
return chooseCandidate(own2, void 0);
|
|
128310
|
+
}
|
|
128311
|
+
for (const [index, stage] of stages.entries()) {
|
|
128312
|
+
const picked = chooseCandidate(stage, index === 0 ? routing : { quota: routing.quota, nowMs: routing.nowMs });
|
|
128313
|
+
if (antigravityQuotaExhaustion(routing.quota, picked, routing.nowMs) === void 0) {
|
|
128314
|
+
return picked;
|
|
128315
|
+
}
|
|
128316
|
+
}
|
|
128317
|
+
return chooseCandidate(own2, routing);
|
|
128318
|
+
}
|
|
128357
128319
|
function translateRequest2(request7, config2, routing) {
|
|
128358
128320
|
const toolNames = /* @__PURE__ */ new Map();
|
|
128359
128321
|
const toolIdToName = /* @__PURE__ */ new Map();
|
|
128360
|
-
const model =
|
|
128322
|
+
const model = chooseAcrossStages(
|
|
128323
|
+
candidateStages(request7.model ?? "", config2).map((stage) => stage.map((candidate) => completeEffortSuffix(candidate, request7, config2))),
|
|
128324
|
+
routing
|
|
128325
|
+
);
|
|
128361
128326
|
const thinkingBudget = mapEffort2(request7, config2);
|
|
128362
128327
|
const systemInstruction = systemToInstruction(request7.system);
|
|
128363
128328
|
const contents = messagesToGeminiContents(request7.messages, toolNames, toolIdToName);
|
|
@@ -145128,7 +145093,7 @@ function toProviderView(name, provider) {
|
|
|
145128
145093
|
};
|
|
145129
145094
|
}
|
|
145130
145095
|
function antigravityConfigFromOptions(options) {
|
|
145131
|
-
if (options.antigravityMode === void 0 && options.antigravityDefaultModel === void 0 && options.antigravityModel === void 0 && options.antigravityEffort === void 0 && options.antigravityEndpoint === void 0 && options.antigravityProjectId === void 0 && options.antigravityLocation === void 0 && options.antigravityCommand === void 0 && options.antigravitySocket === void 0) {
|
|
145096
|
+
if (options.antigravityMode === void 0 && options.antigravityDefaultModel === void 0 && options.antigravityModel === void 0 && options.antigravityEffort === void 0 && options.antigravityDegradeDownTiers === void 0 && options.antigravityEndpoint === void 0 && options.antigravityProjectId === void 0 && options.antigravityLocation === void 0 && options.antigravityCommand === void 0 && options.antigravitySocket === void 0) {
|
|
145132
145097
|
return void 0;
|
|
145133
145098
|
}
|
|
145134
145099
|
const cloud = options.antigravityEndpoint !== void 0 || options.antigravityProjectId !== void 0 || options.antigravityLocation !== void 0 ? {
|
|
@@ -145145,6 +145110,7 @@ function antigravityConfigFromOptions(options) {
|
|
|
145145
145110
|
...options.antigravityDefaultModel === void 0 ? {} : { defaultModel: options.antigravityDefaultModel },
|
|
145146
145111
|
...options.antigravityModel === void 0 ? {} : { models: Object.fromEntries(Object.entries(options.antigravityModel).map(([name, target]) => [name, target.includes(",") ? target.split(",") : target])) },
|
|
145147
145112
|
...options.antigravityEffort === void 0 ? {} : { effort: options.antigravityEffort },
|
|
145113
|
+
...options.antigravityDegradeDownTiers === void 0 ? {} : { degradeDownTiers: options.antigravityDegradeDownTiers },
|
|
145148
145114
|
...cloud === void 0 ? {} : { cloud },
|
|
145149
145115
|
...local === void 0 ? {} : { local }
|
|
145150
145116
|
};
|
|
@@ -145185,7 +145151,7 @@ function registerProviderCommand(program2, deps) {
|
|
|
145185
145151
|
new Option("--credential-target <target>", "Where the token goes: bearer sets ANTHROPIC_AUTH_TOKEN (default), apiKey sets ANTHROPIC_API_KEY.").choices(
|
|
145186
145152
|
PROVIDER_CREDENTIAL_TARGETS
|
|
145187
145153
|
)
|
|
145188
|
-
).option("--env <KEY=VALUE>", "Extra environment entry for the child (repeatable).", collectStringPair).option("--codex-default-model <model>", "Codex providers: the codex model a request maps to when no tier matches.").option("--codex-model <tier=model>", "Codex providers: the codex model one tier (fable, opus, sonnet or haiku) maps to (repeatable).", collectStringPair).addOption(new Option("--codex-effort <effort>", "Codex providers: the reasoning effort when a request asks for none the backend accepts.").choices(CODEX_EFFORTS)).addOption(new Option("--codex-login <login>", "Codex providers: which login the upstream call uses, the Codex CLI's own login or a Sign in with ChatGPT grant from `agent-shim codex login`.").choices(CODEX_LOGINS)).addOption(new Option("--antigravity-mode <mode>", "Antigravity providers: cloud (direct Gemini/Vertex) or local (ACP daemon).").choices(ANTIGRAVITY_MODES)).option("--antigravity-default-model <model>", "Antigravity providers: the model a request maps to when no tier matches.").option("--antigravity-model <tier=model>", "Antigravity providers: the model a tier (fable, opus, sonnet or haiku, matched by substring) or an alias (any other name, matched whole, selectable with /model) maps to; a comma-separated list routes by available quota, first unspent first (repeatable).", collectStringPair).addOption(new Option("--antigravity-effort <effort>", "Antigravity providers: reasoning effort.").choices(ANTIGRAVITY_EFFORTS)).option("--antigravity-endpoint <url>", "Antigravity cloud providers: custom API endpoint URL.").option("--antigravity-project-id <id>", "Antigravity cloud providers: Google Cloud project ID (for Vertex AI).").option("--antigravity-location <loc>", "Antigravity cloud providers: Google Cloud location (for Vertex AI).").option("--antigravity-command <cmd...>", "Antigravity local providers: command to spawn ACP server.", collectRepeated).option("--antigravity-socket <path>", "Antigravity local providers: path to existing Unix domain socket.").option("--json", "Print the result as JSON.").action((name, options) => {
|
|
145154
|
+
).option("--env <KEY=VALUE>", "Extra environment entry for the child (repeatable).", collectStringPair).option("--codex-default-model <model>", "Codex providers: the codex model a request maps to when no tier matches.").option("--codex-model <tier=model>", "Codex providers: the codex model one tier (fable, opus, sonnet or haiku) maps to (repeatable).", collectStringPair).addOption(new Option("--codex-effort <effort>", "Codex providers: the reasoning effort when a request asks for none the backend accepts.").choices(CODEX_EFFORTS)).addOption(new Option("--codex-login <login>", "Codex providers: which login the upstream call uses, the Codex CLI's own login or a Sign in with ChatGPT grant from `agent-shim codex login`.").choices(CODEX_LOGINS)).addOption(new Option("--antigravity-mode <mode>", "Antigravity providers: cloud (direct Gemini/Vertex) or local (ACP daemon).").choices(ANTIGRAVITY_MODES)).option("--antigravity-default-model <model>", "Antigravity providers: the model a request maps to when no tier matches.").option("--antigravity-model <tier=model>", "Antigravity providers: the model a tier (fable, opus, sonnet or haiku, matched by substring) or an alias (any other name, matched whole, selectable with /model) maps to; a comma-separated list routes by available quota, first unspent first (repeatable).", collectStringPair).addOption(new Option("--antigravity-effort <effort>", "Antigravity providers: reasoning effort.").choices(ANTIGRAVITY_EFFORTS)).option("--antigravity-degrade-down-tiers", "Antigravity providers: when every candidate of a tier has no quota left, serve the request from the tiers below it instead of failing.").option("--no-antigravity-degrade-down-tiers", "Antigravity providers: fail with the quota limit when a tier has no quota left (the default).").option("--antigravity-endpoint <url>", "Antigravity cloud providers: custom API endpoint URL.").option("--antigravity-project-id <id>", "Antigravity cloud providers: Google Cloud project ID (for Vertex AI).").option("--antigravity-location <loc>", "Antigravity cloud providers: Google Cloud location (for Vertex AI).").option("--antigravity-command <cmd...>", "Antigravity local providers: command to spawn ACP server.", collectRepeated).option("--antigravity-socket <path>", "Antigravity local providers: path to existing Unix domain socket.").option("--json", "Print the result as JSON.").action((name, options) => {
|
|
145189
145155
|
const codex = codexConfigFromOptions(options);
|
|
145190
145156
|
const antigravity = antigravityConfigFromOptions(options);
|
|
145191
145157
|
const created = addProvider(paths, name, {
|
|
@@ -145221,7 +145187,7 @@ function registerProviderCommand(program2, deps) {
|
|
|
145221
145187
|
new Option("--credential-target <target>", "Where the token goes: bearer sets ANTHROPIC_AUTH_TOKEN, apiKey sets ANTHROPIC_API_KEY.").choices(
|
|
145222
145188
|
PROVIDER_CREDENTIAL_TARGETS
|
|
145223
145189
|
)
|
|
145224
|
-
).option("--env <KEY=VALUE>", "Add or replace an environment entry for the child (repeatable).", collectStringPair).option("--unset-env <KEY>", "Remove an environment entry (repeatable).", collectRepeated).option("--codex-default-model <model>", "Codex providers: replace the model a request maps to when no tier matches.").option("--codex-model <tier=model>", "Codex providers: set the codex model one tier maps to (repeatable; other tiers are kept).", collectStringPair).addOption(new Option("--codex-effort <effort>", "Codex providers: replace the default reasoning effort.").choices(CODEX_EFFORTS)).addOption(new Option("--codex-login <login>", "Codex providers: replace which login the upstream call uses.").choices(CODEX_LOGINS)).addOption(new Option("--antigravity-mode <mode>", "Antigravity providers: cloud (direct Gemini/Vertex) or local (ACP daemon).").choices(ANTIGRAVITY_MODES)).option("--antigravity-default-model <model>", "Antigravity providers: the model a request maps to when no tier matches.").option("--antigravity-model <tier=model>", "Antigravity providers: set the model one tier maps to (repeatable; other tiers are kept).", collectStringPair).addOption(new Option("--antigravity-effort <effort>", "Antigravity providers: reasoning effort.").choices(ANTIGRAVITY_EFFORTS)).option("--antigravity-endpoint <url>", "Antigravity cloud providers: custom API endpoint URL.").option("--antigravity-project-id <id>", "Antigravity cloud providers: Google Cloud project ID (for Vertex AI).").option("--antigravity-location <loc>", "Antigravity cloud providers: Google Cloud location (for Vertex AI).").option("--antigravity-command <cmd...>", "Antigravity local providers: command to spawn ACP server.", collectRepeated).option("--antigravity-socket <path>", "Antigravity local providers: path to existing Unix domain socket.");
|
|
145190
|
+
).option("--env <KEY=VALUE>", "Add or replace an environment entry for the child (repeatable).", collectStringPair).option("--unset-env <KEY>", "Remove an environment entry (repeatable).", collectRepeated).option("--codex-default-model <model>", "Codex providers: replace the model a request maps to when no tier matches.").option("--codex-model <tier=model>", "Codex providers: set the codex model one tier maps to (repeatable; other tiers are kept).", collectStringPair).addOption(new Option("--codex-effort <effort>", "Codex providers: replace the default reasoning effort.").choices(CODEX_EFFORTS)).addOption(new Option("--codex-login <login>", "Codex providers: replace which login the upstream call uses.").choices(CODEX_LOGINS)).addOption(new Option("--antigravity-mode <mode>", "Antigravity providers: cloud (direct Gemini/Vertex) or local (ACP daemon).").choices(ANTIGRAVITY_MODES)).option("--antigravity-default-model <model>", "Antigravity providers: the model a request maps to when no tier matches.").option("--antigravity-model <tier=model>", "Antigravity providers: set the model one tier maps to (repeatable; other tiers are kept).", collectStringPair).addOption(new Option("--antigravity-effort <effort>", "Antigravity providers: reasoning effort.").choices(ANTIGRAVITY_EFFORTS)).option("--antigravity-degrade-down-tiers", "Antigravity providers: when every candidate of a tier has no quota left, serve the request from the tiers below it instead of failing.").option("--no-antigravity-degrade-down-tiers", "Antigravity providers: fail with the quota limit when a tier has no quota left (the default).").option("--antigravity-endpoint <url>", "Antigravity cloud providers: custom API endpoint URL.").option("--antigravity-project-id <id>", "Antigravity cloud providers: Google Cloud project ID (for Vertex AI).").option("--antigravity-location <loc>", "Antigravity cloud providers: Google Cloud location (for Vertex AI).").option("--antigravity-command <cmd...>", "Antigravity local providers: command to spawn ACP server.", collectRepeated).option("--antigravity-socket <path>", "Antigravity local providers: path to existing Unix domain socket.");
|
|
145225
145191
|
addCredentialCacheOptions(providerSet);
|
|
145226
145192
|
withExamples(
|
|
145227
145193
|
providerSet.option("--json", "Print the result as JSON.").action((name, allOptions) => {
|
|
@@ -145301,6 +145267,7 @@ function registerProviderCommand(program2, deps) {
|
|
|
145301
145267
|
console.log(`Antigravity aliases: ${[...config2.aliases].map(([alias, model]) => `${alias}=${model.join(" > ")}`).join(", ")}`);
|
|
145302
145268
|
}
|
|
145303
145269
|
console.log(`Antigravity effort: ${config2.effort}`);
|
|
145270
|
+
console.log(`Antigravity degrade down tiers: ${config2.degradeDownTiers ? "on" : "off"}`);
|
|
145304
145271
|
console.log(`Endpoint: ${describeProviderEndpoint(found)}`);
|
|
145305
145272
|
} else {
|
|
145306
145273
|
console.log(`Base URL: ${found.baseUrl}`);
|
package/dist/index.cjs
CHANGED
|
@@ -346,10 +346,10 @@ var init_schema = __esm({
|
|
|
346
346
|
ANTIGRAVITY_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
347
347
|
ANTIGRAVITY_DEFAULT_MODE = "cloud";
|
|
348
348
|
ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
|
|
349
|
-
fable: ["
|
|
349
|
+
fable: ["gemini-4-argon-high", "claude-opus-5-5-high", "gemini-3.8-flash-high"],
|
|
350
350
|
opus: ["claude-opus-5-5-high", "gemini-4-argon-high", "gemini-3.8-flash-high"],
|
|
351
351
|
sonnet: ["claude-sonnet-5-5-medium", "gemini-4-argon-medium", "gemini-3.8-flash-medium"],
|
|
352
|
-
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "
|
|
352
|
+
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "claude-sonnet-5-5-low"]
|
|
353
353
|
});
|
|
354
354
|
AntigravityModelTargetSchema = import_zod.z.union([import_zod.z.string().min(1), import_zod.z.array(import_zod.z.string().min(1)).min(1)]);
|
|
355
355
|
AntigravityProviderConfigSchema = import_zod.z.strictObject({
|
|
@@ -359,6 +359,8 @@ var init_schema = __esm({
|
|
|
359
359
|
defaultModel: import_zod.z.string().min(1).optional(),
|
|
360
360
|
/** Model name mapping. A key naming a tier (`fable`, `opus`, `sonnet`, `haiku`) overrides that tier's shipped model and is matched by substring of the requested name in `ANTIGRAVITY_TIERS` order; any other key is an alias, matched against the whole requested name case-insensitively, so `/model <alias>` selects its backend model. An alias outranks every other rule, including the pass-through of backend names. A value is one model or an ordered list of candidates: the request goes to the first whose quota windows are not spent, and when every candidate is spent, to the one whose binding window lifts soonest. */
|
|
361
361
|
models: import_zod.z.record(import_zod.z.string().min(1), AntigravityModelTargetSchema).optional(),
|
|
362
|
+
/** When every candidate of the tier a request names has no quota left, serve it from the next tier down, and onward through the lower tiers, instead of failing with the quota limit. Applies to a name that selects a tier (`/model fable`), not to an alias or a backend model name. Defaults to false. */
|
|
363
|
+
degradeDownTiers: import_zod.z.boolean().optional(),
|
|
362
364
|
/** The reasoning effort used when the request's own effort is not one the backend accepts. */
|
|
363
365
|
effort: import_zod.z.enum(ANTIGRAVITY_EFFORTS).optional(),
|
|
364
366
|
/** Cloud-specific settings (for `mode: "cloud"`). */
|
|
@@ -2837,7 +2839,7 @@ var init_package = __esm({
|
|
|
2837
2839
|
"package.json"() {
|
|
2838
2840
|
package_default = {
|
|
2839
2841
|
name: "claude-use",
|
|
2840
|
-
version: "11.
|
|
2842
|
+
version: "11.18.0",
|
|
2841
2843
|
description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
|
|
2842
2844
|
license: "MIT",
|
|
2843
2845
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6431,7 +6433,7 @@ function isEmptyCodexConfig(config) {
|
|
|
6431
6433
|
return config === void 0 || config.defaultModel === void 0 && config.effort === void 0 && config.login === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6432
6434
|
}
|
|
6433
6435
|
function isEmptyAntigravityConfig(config) {
|
|
6434
|
-
return config === void 0 || config.mode === void 0 && config.defaultModel === void 0 && config.effort === void 0 && config.cloud === void 0 && config.local === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6436
|
+
return config === void 0 || config.mode === void 0 && config.defaultModel === void 0 && config.effort === void 0 && config.degradeDownTiers === void 0 && config.cloud === void 0 && config.local === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6435
6437
|
}
|
|
6436
6438
|
function addProvider(paths, name, input) {
|
|
6437
6439
|
if (providerExists(paths, name)) {
|
package/dist/index.mjs
CHANGED
|
@@ -324,10 +324,10 @@ var init_schema = __esm({
|
|
|
324
324
|
ANTIGRAVITY_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
325
325
|
ANTIGRAVITY_DEFAULT_MODE = "cloud";
|
|
326
326
|
ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
|
|
327
|
-
fable: ["
|
|
327
|
+
fable: ["gemini-4-argon-high", "claude-opus-5-5-high", "gemini-3.8-flash-high"],
|
|
328
328
|
opus: ["claude-opus-5-5-high", "gemini-4-argon-high", "gemini-3.8-flash-high"],
|
|
329
329
|
sonnet: ["claude-sonnet-5-5-medium", "gemini-4-argon-medium", "gemini-3.8-flash-medium"],
|
|
330
|
-
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "
|
|
330
|
+
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "claude-sonnet-5-5-low"]
|
|
331
331
|
});
|
|
332
332
|
AntigravityModelTargetSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]);
|
|
333
333
|
AntigravityProviderConfigSchema = z.strictObject({
|
|
@@ -337,6 +337,8 @@ var init_schema = __esm({
|
|
|
337
337
|
defaultModel: z.string().min(1).optional(),
|
|
338
338
|
/** Model name mapping. A key naming a tier (`fable`, `opus`, `sonnet`, `haiku`) overrides that tier's shipped model and is matched by substring of the requested name in `ANTIGRAVITY_TIERS` order; any other key is an alias, matched against the whole requested name case-insensitively, so `/model <alias>` selects its backend model. An alias outranks every other rule, including the pass-through of backend names. A value is one model or an ordered list of candidates: the request goes to the first whose quota windows are not spent, and when every candidate is spent, to the one whose binding window lifts soonest. */
|
|
339
339
|
models: z.record(z.string().min(1), AntigravityModelTargetSchema).optional(),
|
|
340
|
+
/** When every candidate of the tier a request names has no quota left, serve it from the next tier down, and onward through the lower tiers, instead of failing with the quota limit. Applies to a name that selects a tier (`/model fable`), not to an alias or a backend model name. Defaults to false. */
|
|
341
|
+
degradeDownTiers: z.boolean().optional(),
|
|
340
342
|
/** The reasoning effort used when the request's own effort is not one the backend accepts. */
|
|
341
343
|
effort: z.enum(ANTIGRAVITY_EFFORTS).optional(),
|
|
342
344
|
/** Cloud-specific settings (for `mode: "cloud"`). */
|
|
@@ -2813,7 +2815,7 @@ var init_package = __esm({
|
|
|
2813
2815
|
"package.json"() {
|
|
2814
2816
|
package_default = {
|
|
2815
2817
|
name: "claude-use",
|
|
2816
|
-
version: "11.
|
|
2818
|
+
version: "11.18.0",
|
|
2817
2819
|
description: "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
|
|
2818
2820
|
license: "MIT",
|
|
2819
2821
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6406,7 +6408,7 @@ function isEmptyCodexConfig(config) {
|
|
|
6406
6408
|
return config === void 0 || config.defaultModel === void 0 && config.effort === void 0 && config.login === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6407
6409
|
}
|
|
6408
6410
|
function isEmptyAntigravityConfig(config) {
|
|
6409
|
-
return config === void 0 || config.mode === void 0 && config.defaultModel === void 0 && config.effort === void 0 && config.cloud === void 0 && config.local === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6411
|
+
return config === void 0 || config.mode === void 0 && config.defaultModel === void 0 && config.effort === void 0 && config.degradeDownTiers === void 0 && config.cloud === void 0 && config.local === void 0 && (config.models === void 0 || Object.keys(config.models).length === 0);
|
|
6410
6412
|
}
|
|
6411
6413
|
function addProvider(paths, name, input) {
|
|
6412
6414
|
if (providerExists(paths, name)) {
|
package/dist/types/index.d.ts
CHANGED
|
@@ -391,6 +391,7 @@ declare const AntigravityProviderConfigSchema: z.ZodObject<{
|
|
|
391
391
|
}>>;
|
|
392
392
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
393
393
|
models: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
394
|
+
degradeDownTiers: z.ZodOptional<z.ZodBoolean>;
|
|
394
395
|
effort: z.ZodOptional<z.ZodEnum<{
|
|
395
396
|
none: "none";
|
|
396
397
|
max: "max";
|
|
@@ -657,6 +658,7 @@ declare const ProviderSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
657
658
|
}>>;
|
|
658
659
|
defaultModel: z.ZodOptional<z.ZodString>;
|
|
659
660
|
models: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>>;
|
|
661
|
+
degradeDownTiers: z.ZodOptional<z.ZodBoolean>;
|
|
660
662
|
effort: z.ZodOptional<z.ZodEnum<{
|
|
661
663
|
none: "none";
|
|
662
664
|
max: "max";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-use",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.18.0",
|
|
4
4
|
"description": "A profile manager and launcher for Claude Code that lets one person run multiple logins from one machine while controlling what gets shared between them.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Joseph Mearman <joseph@mearman.co.uk>",
|