claude-use 11.23.0 → 11.24.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 +18267 -18107
- package/dist/index.cjs +343 -59
- package/dist/index.mjs +343 -59
- package/dist/types/index.d.ts +30 -30
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -223,7 +223,7 @@ function isTimeZone(name) {
|
|
|
223
223
|
return false;
|
|
224
224
|
}
|
|
225
225
|
}
|
|
226
|
-
var CATEGORY_NAMES, OVERRIDABLE_CATEGORIES, CategoryMapSchema, DURATION_RE, DurationSchema, WhenConditionObjectSchema, WhenSchema, EntryValueSchema, ENTRY_KEY_RE, EntriesSchema, LaunchSchema, CREDENTIAL_TARGETS, PROVIDER_CREDENTIAL_TARGETS, CREDENTIAL_TARGET_VARS, ArgvSchema, CommandSourceOptions, EnvCredentialSourceSchema, FileCredentialSourceSchema, CommandCredentialSourceSchema, OpCredentialSourceSchema, KeychainCredentialSourceSchema, LiteralCredentialSourceSchema, CredentialSourceSchema, RemoteCredentialSourceSchema, CREDENTIAL_CACHE_STORES, CredentialCacheSchema, CredentialSchema, ProviderCredentialSchema, RESERVED_PROVIDER_ENV_KEYS, ProviderEnvSchema, PROVIDER_KINDS, ANTIGRAVITY_MODES, ANTIGRAVITY_EFFORTS, ANTIGRAVITY_DEFAULT_MODE, ANTIGRAVITY_DEFAULT_TIER_MODELS, AntigravityModelTargetSchema, AntigravityProviderConfigSchema, CODEX_EFFORTS, CODEX_LOGINS, CODEX_DEFAULT_TIER_MODELS, CodexProviderConfigSchema, ProviderRouteSchema, HttpProviderSchema, CodexProviderSchema, AntigravityProviderSchema, ProviderSchema, ConfigProfileSchema, POOL_SELECTOR_PREFIX, POOL_NAME_PATTERN, IDENTITY_NAME_PATTERN, PoolNameSchema, SELECTOR_RE, IdentitySelectorSchema, PoolMemberSchema, POOL_PREFERENCES, PoolPreferenceSchema, WHOLE_PERCENT_MAX, CompactAtUtilisationSchema, PoolSchema, WEEKDAYS, AnchorSchema, JOB_WINDOWS, JobTriggerSchema, JobTargetSchema, JobSchema, DirectoryRuleSchema, DirectoryRulesSchema, PortableConfigSchema, HEADROOM_MODES, HEADROOM_CCR_MODES, HEADROOM_ROLLOUT_CHANNELS, INTERCEPT_CHANNELS, READ_MATURATION_CHANNELS, HeadroomGlobalConfigObjectSchema, HeadroomGlobalConfigSchema, HEADROOM_DEFAULT_SOURCE, HEADROOM_DEFAULT_IDLE_SHUTDOWN_MINUTES, FrontDoorGlobalConfigSchema, UPDATE_MODES, UpdateGlobalConfigSchema, GlobalConfigSchema, IdentitySchema, CategoryClassificationSchema, CategoryClassificationOverlaySchema, SHIPPED_CATEGORY_DEFAULTS;
|
|
226
|
+
var CATEGORY_NAMES, OVERRIDABLE_CATEGORIES, CategoryMapSchema, DURATION_RE, DurationSchema, WhenConditionObjectSchema, WhenSchema, EntryValueSchema, ENTRY_KEY_RE, EntriesSchema, LaunchSchema, CREDENTIAL_TARGETS, PROVIDER_CREDENTIAL_TARGETS, CREDENTIAL_TARGET_VARS, ArgvSchema, CommandSourceOptions, EnvCredentialSourceSchema, FileCredentialSourceSchema, CommandCredentialSourceSchema, OpCredentialSourceSchema, KeychainCredentialSourceSchema, LiteralCredentialSourceSchema, CredentialSourceSchema, RemoteCredentialSourceSchema, CREDENTIAL_CACHE_STORES, CredentialCacheSchema, CredentialSchema, ProviderCredentialSchema, RESERVED_PROVIDER_ENV_KEYS, ProviderEnvSchema, PROVIDER_KINDS, ANTIGRAVITY_MODES, ANTIGRAVITY_TIERS, ANTIGRAVITY_EFFORTS, ANTIGRAVITY_DEFAULT_MODE, ANTIGRAVITY_DEFAULT_MODEL, ANTIGRAVITY_DEFAULT_TIER_MODELS, ANTIGRAVITY_DEFAULT_EFFORT, AntigravityModelTargetSchema, AntigravityProviderConfigSchema, CODEX_TIERS, CODEX_EFFORTS, CODEX_LOGINS, CODEX_DEFAULT_LOGIN, CODEX_DEFAULT_MODEL, CODEX_DEFAULT_TIER_MODELS, CODEX_DEFAULT_EFFORT, CodexProviderConfigSchema, ProviderRouteSchema, HttpProviderSchema, CodexProviderSchema, AntigravityProviderSchema, ProviderSchema, ConfigProfileSchema, POOL_SELECTOR_PREFIX, POOL_NAME_PATTERN, IDENTITY_NAME_PATTERN, PoolNameSchema, SELECTOR_RE, IdentitySelectorSchema, PoolMemberSchema, POOL_PREFERENCES, PoolPreferenceSchema, WHOLE_PERCENT_MAX, CompactAtUtilisationSchema, PoolSchema, WEEKDAYS, AnchorSchema, JOB_WINDOWS, JobTriggerSchema, JobTargetSchema, JobSchema, DirectoryRuleSchema, DirectoryRulesSchema, PortableConfigSchema, HEADROOM_MODES, HEADROOM_CCR_MODES, HEADROOM_ROLLOUT_CHANNELS, INTERCEPT_CHANNELS, READ_MATURATION_CHANNELS, HeadroomGlobalConfigObjectSchema, HeadroomGlobalConfigSchema, HEADROOM_DEFAULT_SOURCE, HEADROOM_DEFAULT_IDLE_SHUTDOWN_MINUTES, FrontDoorGlobalConfigSchema, UPDATE_MODES, UpdateGlobalConfigSchema, GlobalConfigSchema, IdentitySchema, CategoryClassificationSchema, CategoryClassificationOverlaySchema, SHIPPED_CATEGORY_DEFAULTS;
|
|
227
227
|
var init_schema = __esm({
|
|
228
228
|
"src/config/schema.ts"() {
|
|
229
229
|
"use strict";
|
|
@@ -321,14 +321,17 @@ var init_schema = __esm({
|
|
|
321
321
|
});
|
|
322
322
|
PROVIDER_KINDS = ["http", "codex", "antigravity"];
|
|
323
323
|
ANTIGRAVITY_MODES = ["cloud", "local"];
|
|
324
|
+
ANTIGRAVITY_TIERS = ["fable", "opus", "sonnet", "haiku"];
|
|
324
325
|
ANTIGRAVITY_EFFORTS = ["none", "low", "medium", "high", "xhigh", "max"];
|
|
325
326
|
ANTIGRAVITY_DEFAULT_MODE = "cloud";
|
|
327
|
+
ANTIGRAVITY_DEFAULT_MODEL = "gemini-3.8-flash-high";
|
|
326
328
|
ANTIGRAVITY_DEFAULT_TIER_MODELS = Object.freeze({
|
|
327
329
|
fable: ["gemini-4-argon-high", "claude-opus-5-5-high", "gemini-3.8-flash-high"],
|
|
328
330
|
opus: ["claude-opus-5-5-high", "gemini-4-argon-high", "gemini-3.8-flash-high"],
|
|
329
331
|
sonnet: ["claude-sonnet-5-5-medium", "gemini-4-argon-medium", "gemini-3.8-flash-medium"],
|
|
330
332
|
haiku: ["gemini-3.8-flash-low", "gemini-4-argon-low", "claude-sonnet-5-5-low"]
|
|
331
333
|
});
|
|
334
|
+
ANTIGRAVITY_DEFAULT_EFFORT = "low";
|
|
332
335
|
AntigravityModelTargetSchema = z.union([z.string().min(1), z.array(z.string().min(1)).min(1)]);
|
|
333
336
|
AntigravityProviderConfigSchema = z.strictObject({
|
|
334
337
|
/** Operational mode: direct cloud endpoint or local ACP daemon. Defaults to `cloud`. */
|
|
@@ -358,14 +361,18 @@ var init_schema = __esm({
|
|
|
358
361
|
socketPath: z.string().min(1).optional()
|
|
359
362
|
}).optional()
|
|
360
363
|
});
|
|
364
|
+
CODEX_TIERS = ["fable", "opus", "sonnet", "haiku"];
|
|
361
365
|
CODEX_EFFORTS = ["none", "low", "medium", "high"];
|
|
362
366
|
CODEX_LOGINS = ["codex-cli", "chatgpt-sign-in"];
|
|
367
|
+
CODEX_DEFAULT_LOGIN = "codex-cli";
|
|
368
|
+
CODEX_DEFAULT_MODEL = "gpt-5.6-sol";
|
|
363
369
|
CODEX_DEFAULT_TIER_MODELS = Object.freeze({
|
|
364
370
|
fable: "gpt-5.6-sol",
|
|
365
371
|
opus: "gpt-5.6-sol",
|
|
366
372
|
sonnet: "gpt-5.6-terra",
|
|
367
373
|
haiku: "gpt-5.6-luna"
|
|
368
374
|
});
|
|
375
|
+
CODEX_DEFAULT_EFFORT = "low";
|
|
369
376
|
CodexProviderConfigSchema = z.strictObject({
|
|
370
377
|
/** The codex model a request maps to when no tier matches its model name. */
|
|
371
378
|
defaultModel: z.string().min(1).optional(),
|
|
@@ -2904,7 +2911,7 @@ var init_package = __esm({
|
|
|
2904
2911
|
"package.json"() {
|
|
2905
2912
|
package_default = {
|
|
2906
2913
|
name: "claude-use",
|
|
2907
|
-
version: "11.
|
|
2914
|
+
version: "11.24.0",
|
|
2908
2915
|
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.",
|
|
2909
2916
|
license: "MIT",
|
|
2910
2917
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -7768,13 +7775,43 @@ function withConversation(passthrough, conversation, id) {
|
|
|
7768
7775
|
}
|
|
7769
7776
|
return [...kept, conversation === "start" ? "--session-id" : "--resume", id, ...tail];
|
|
7770
7777
|
}
|
|
7778
|
+
function hasSettingsArgument(passthrough) {
|
|
7779
|
+
const end = passthrough.indexOf(TERMINATOR2);
|
|
7780
|
+
return (end === -1 ? passthrough : passthrough.slice(0, end)).some((token) => token === "--settings" || token.startsWith("--settings="));
|
|
7781
|
+
}
|
|
7771
7782
|
function withSupervision(passthrough, supervised) {
|
|
7772
|
-
|
|
7773
|
-
|
|
7774
|
-
|
|
7783
|
+
return supervised.conversation === "as-given" ? passthrough : withConversation(passthrough, supervised.conversation, supervised.sessionId);
|
|
7784
|
+
}
|
|
7785
|
+
function withLauncherSettings(passthrough, settings) {
|
|
7786
|
+
if (settings === void 0) {
|
|
7787
|
+
return passthrough;
|
|
7788
|
+
}
|
|
7789
|
+
const end = passthrough.indexOf(TERMINATOR2);
|
|
7790
|
+
return end === -1 ? [...passthrough, "--settings", settings] : [...passthrough.slice(0, end), "--settings", settings, ...passthrough.slice(end)];
|
|
7791
|
+
}
|
|
7792
|
+
function isRecord15(value) {
|
|
7793
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7794
|
+
}
|
|
7795
|
+
function mergeSettings(parts) {
|
|
7796
|
+
const merged = {};
|
|
7797
|
+
let any = false;
|
|
7798
|
+
for (const part of parts) {
|
|
7799
|
+
if (part === void 0) {
|
|
7800
|
+
continue;
|
|
7801
|
+
}
|
|
7802
|
+
const parsed = JSON.parse(part);
|
|
7803
|
+
if (!isRecord15(parsed)) {
|
|
7804
|
+
throw new Error("a launch's settings part is not a JSON object");
|
|
7805
|
+
}
|
|
7806
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
7807
|
+
if (key in merged) {
|
|
7808
|
+
throw new Error(`two launch settings parts both set "${key}"`);
|
|
7809
|
+
}
|
|
7810
|
+
merged[key] = value;
|
|
7811
|
+
}
|
|
7812
|
+
any = true;
|
|
7775
7813
|
}
|
|
7776
|
-
|
|
7777
|
-
return end === -1 ? [...conversation, "--settings", supervised.settings] : [...conversation.slice(0, end), "--settings", supervised.settings, ...conversation.slice(end)];
|
|
7814
|
+
return any ? JSON.stringify(merged) : void 0;
|
|
7778
7815
|
}
|
|
7779
7816
|
var TERMINATOR2, VALUED_CONVERSATION_FLAGS, CONTINUE_FLAGS;
|
|
7780
7817
|
var init_claudeSession = __esm({
|
|
@@ -7787,6 +7824,253 @@ var init_claudeSession = __esm({
|
|
|
7787
7824
|
}
|
|
7788
7825
|
});
|
|
7789
7826
|
|
|
7827
|
+
// src/antigravity/cloudUpstream.ts
|
|
7828
|
+
var init_cloudUpstream = __esm({
|
|
7829
|
+
"src/antigravity/cloudUpstream.ts"() {
|
|
7830
|
+
"use strict";
|
|
7831
|
+
}
|
|
7832
|
+
});
|
|
7833
|
+
|
|
7834
|
+
// src/antigravity/quota.ts
|
|
7835
|
+
var SECONDS_PER_HOUR, HOURS_PER_FIVE_HOUR_WINDOW, DAYS_PER_WEEK, HOURS_PER_DAY4, FIVE_HOUR_PERIOD_SECONDS, WEEK_PERIOD_SECONDS;
|
|
7836
|
+
var init_quota = __esm({
|
|
7837
|
+
"src/antigravity/quota.ts"() {
|
|
7838
|
+
"use strict";
|
|
7839
|
+
init_cloudUpstream();
|
|
7840
|
+
SECONDS_PER_HOUR = 3600;
|
|
7841
|
+
HOURS_PER_FIVE_HOUR_WINDOW = 5;
|
|
7842
|
+
DAYS_PER_WEEK = 7;
|
|
7843
|
+
HOURS_PER_DAY4 = 24;
|
|
7844
|
+
FIVE_HOUR_PERIOD_SECONDS = HOURS_PER_FIVE_HOUR_WINDOW * SECONDS_PER_HOUR;
|
|
7845
|
+
WEEK_PERIOD_SECONDS = DAYS_PER_WEEK * HOURS_PER_DAY4 * SECONDS_PER_HOUR;
|
|
7846
|
+
}
|
|
7847
|
+
});
|
|
7848
|
+
|
|
7849
|
+
// src/antigravity/signatures.ts
|
|
7850
|
+
var init_signatures = __esm({
|
|
7851
|
+
"src/antigravity/signatures.ts"() {
|
|
7852
|
+
"use strict";
|
|
7853
|
+
}
|
|
7854
|
+
});
|
|
7855
|
+
|
|
7856
|
+
// src/codex/anthropic.ts
|
|
7857
|
+
import { z as z29 } from "zod";
|
|
7858
|
+
var TextBlockSchema, Base64ImageSourceSchema, UrlImageSourceSchema, ImageBlockSchema, ToolUseBlockSchema, ToolResultContentBlockSchema, ToolResultBlockSchema, OtherBlockSchema, ContentBlockSchema, MessageSchema, ToolSchema, ToolChoiceSchema, SystemSchema, MessagesRequestSchema, CountTokensRequestSchema;
|
|
7859
|
+
var init_anthropic = __esm({
|
|
7860
|
+
"src/codex/anthropic.ts"() {
|
|
7861
|
+
"use strict";
|
|
7862
|
+
TextBlockSchema = z29.looseObject({ type: z29.literal("text"), text: z29.string() });
|
|
7863
|
+
Base64ImageSourceSchema = z29.looseObject({ type: z29.literal("base64"), media_type: z29.string().min(1), data: z29.string() });
|
|
7864
|
+
UrlImageSourceSchema = z29.looseObject({ type: z29.literal("url"), url: z29.string().min(1) });
|
|
7865
|
+
ImageBlockSchema = z29.looseObject({
|
|
7866
|
+
type: z29.literal("image"),
|
|
7867
|
+
source: z29.union([Base64ImageSourceSchema, UrlImageSourceSchema])
|
|
7868
|
+
});
|
|
7869
|
+
ToolUseBlockSchema = z29.looseObject({
|
|
7870
|
+
type: z29.literal("tool_use"),
|
|
7871
|
+
id: z29.string().min(1),
|
|
7872
|
+
name: z29.string().min(1),
|
|
7873
|
+
input: z29.unknown()
|
|
7874
|
+
});
|
|
7875
|
+
ToolResultContentBlockSchema = z29.union([TextBlockSchema, z29.looseObject({ type: z29.string() })]);
|
|
7876
|
+
ToolResultBlockSchema = z29.looseObject({
|
|
7877
|
+
type: z29.literal("tool_result"),
|
|
7878
|
+
tool_use_id: z29.string().min(1),
|
|
7879
|
+
content: z29.union([z29.string(), z29.array(ToolResultContentBlockSchema)]).optional()
|
|
7880
|
+
});
|
|
7881
|
+
OtherBlockSchema = z29.looseObject({ type: z29.string() });
|
|
7882
|
+
ContentBlockSchema = z29.union([TextBlockSchema, ImageBlockSchema, ToolUseBlockSchema, ToolResultBlockSchema, OtherBlockSchema]);
|
|
7883
|
+
MessageSchema = z29.looseObject({
|
|
7884
|
+
role: z29.enum(["user", "assistant", "system"]),
|
|
7885
|
+
content: z29.union([z29.string(), z29.array(ContentBlockSchema)])
|
|
7886
|
+
});
|
|
7887
|
+
ToolSchema = z29.looseObject({
|
|
7888
|
+
name: z29.string().min(1),
|
|
7889
|
+
description: z29.string().optional(),
|
|
7890
|
+
input_schema: z29.record(z29.string(), z29.unknown()).optional()
|
|
7891
|
+
});
|
|
7892
|
+
ToolChoiceSchema = z29.union([
|
|
7893
|
+
z29.looseObject({ type: z29.enum(["auto", "none", "any"]) }),
|
|
7894
|
+
z29.looseObject({ type: z29.literal("tool"), name: z29.string().min(1) })
|
|
7895
|
+
]);
|
|
7896
|
+
SystemSchema = z29.union([z29.string(), z29.array(z29.union([TextBlockSchema, OtherBlockSchema]))]);
|
|
7897
|
+
MessagesRequestSchema = z29.looseObject({
|
|
7898
|
+
model: z29.string().optional(),
|
|
7899
|
+
system: SystemSchema.optional(),
|
|
7900
|
+
messages: z29.array(MessageSchema),
|
|
7901
|
+
tools: z29.array(ToolSchema).optional(),
|
|
7902
|
+
tool_choice: ToolChoiceSchema.optional(),
|
|
7903
|
+
stream: z29.boolean().optional(),
|
|
7904
|
+
/** `user_id` is stable for one Claude Code session and differs between sessions, which is what makes it the right key for both the backend's prompt cache and its session header. */
|
|
7905
|
+
metadata: z29.looseObject({ user_id: z29.string().optional() }).optional(),
|
|
7906
|
+
/** Claude Code's effort setting. Any string is accepted; the translator honours only the levels the backend understands. */
|
|
7907
|
+
output_config: z29.looseObject({ effort: z29.string().optional() }).optional()
|
|
7908
|
+
});
|
|
7909
|
+
CountTokensRequestSchema = z29.looseObject({
|
|
7910
|
+
system: z29.unknown().optional(),
|
|
7911
|
+
messages: z29.unknown().optional(),
|
|
7912
|
+
tools: z29.unknown().optional()
|
|
7913
|
+
});
|
|
7914
|
+
}
|
|
7915
|
+
});
|
|
7916
|
+
|
|
7917
|
+
// src/antigravity/translate.ts
|
|
7918
|
+
function candidatesOf(target) {
|
|
7919
|
+
return typeof target === "string" ? [target] : target;
|
|
7920
|
+
}
|
|
7921
|
+
function isAntigravityTier(key) {
|
|
7922
|
+
return ANTIGRAVITY_TIERS.some((tier) => tier === key);
|
|
7923
|
+
}
|
|
7924
|
+
function resolveAntigravityConfig(config) {
|
|
7925
|
+
const overrides = config?.models ?? {};
|
|
7926
|
+
const aliases = /* @__PURE__ */ new Map();
|
|
7927
|
+
for (const [key, target] of Object.entries(overrides)) {
|
|
7928
|
+
if (!isAntigravityTier(key)) {
|
|
7929
|
+
aliases.set(key.toLowerCase(), candidatesOf(target));
|
|
7930
|
+
}
|
|
7931
|
+
}
|
|
7932
|
+
const tierModel = (tier) => {
|
|
7933
|
+
const target = overrides[tier];
|
|
7934
|
+
return target === void 0 ? ANTIGRAVITY_DEFAULT_TIER_MODELS[tier] : candidatesOf(target);
|
|
7935
|
+
};
|
|
7936
|
+
return {
|
|
7937
|
+
mode: config?.mode ?? ANTIGRAVITY_DEFAULT_MODE,
|
|
7938
|
+
defaultModel: config?.defaultModel ?? ANTIGRAVITY_DEFAULT_MODEL,
|
|
7939
|
+
models: { fable: tierModel("fable"), opus: tierModel("opus"), sonnet: tierModel("sonnet"), haiku: tierModel("haiku") },
|
|
7940
|
+
aliases,
|
|
7941
|
+
degradeDownTiers: config?.degradeDownTiers ?? false,
|
|
7942
|
+
effort: config?.effort ?? ANTIGRAVITY_DEFAULT_EFFORT,
|
|
7943
|
+
cloud: {
|
|
7944
|
+
endpoint: config?.cloud?.endpoint,
|
|
7945
|
+
projectId: config?.cloud?.projectId,
|
|
7946
|
+
location: config?.cloud?.location
|
|
7947
|
+
},
|
|
7948
|
+
local: {
|
|
7949
|
+
command: config?.local?.command,
|
|
7950
|
+
socketPath: config?.local?.socketPath
|
|
7951
|
+
}
|
|
7952
|
+
};
|
|
7953
|
+
}
|
|
7954
|
+
var init_translate = __esm({
|
|
7955
|
+
"src/antigravity/translate.ts"() {
|
|
7956
|
+
"use strict";
|
|
7957
|
+
init_quota();
|
|
7958
|
+
init_signatures();
|
|
7959
|
+
init_schema();
|
|
7960
|
+
init_anthropic();
|
|
7961
|
+
}
|
|
7962
|
+
});
|
|
7963
|
+
|
|
7964
|
+
// src/codex/translate.ts
|
|
7965
|
+
function resolveCodexConfig(config) {
|
|
7966
|
+
const overrides = config?.models;
|
|
7967
|
+
return {
|
|
7968
|
+
defaultModel: config?.defaultModel ?? CODEX_DEFAULT_MODEL,
|
|
7969
|
+
models: {
|
|
7970
|
+
fable: overrides?.fable ?? CODEX_DEFAULT_TIER_MODELS.fable,
|
|
7971
|
+
opus: overrides?.opus ?? CODEX_DEFAULT_TIER_MODELS.opus,
|
|
7972
|
+
sonnet: overrides?.sonnet ?? CODEX_DEFAULT_TIER_MODELS.sonnet,
|
|
7973
|
+
haiku: overrides?.haiku ?? CODEX_DEFAULT_TIER_MODELS.haiku
|
|
7974
|
+
},
|
|
7975
|
+
effort: config?.effort ?? CODEX_DEFAULT_EFFORT,
|
|
7976
|
+
login: config?.login ?? CODEX_DEFAULT_LOGIN
|
|
7977
|
+
};
|
|
7978
|
+
}
|
|
7979
|
+
var init_translate2 = __esm({
|
|
7980
|
+
"src/codex/translate.ts"() {
|
|
7981
|
+
"use strict";
|
|
7982
|
+
init_schema();
|
|
7983
|
+
init_anthropic();
|
|
7984
|
+
}
|
|
7985
|
+
});
|
|
7986
|
+
|
|
7987
|
+
// src/launcher/modelPicker.ts
|
|
7988
|
+
function joined(parts) {
|
|
7989
|
+
const last = parts[parts.length - 1];
|
|
7990
|
+
return last === void 0 || parts.length === 1 ? last ?? "" : `${parts.slice(0, -1).join(", ")} and ${last}`;
|
|
7991
|
+
}
|
|
7992
|
+
function rowOf2(model, reaches) {
|
|
7993
|
+
const lead = reaches.find((reach) => reach.standing === "first") ?? reaches[0];
|
|
7994
|
+
if (lead === void 0) {
|
|
7995
|
+
throw new Error(`model ${model} is reached by no tier`);
|
|
7996
|
+
}
|
|
7997
|
+
const firsts = reaches.filter((reach) => reach.standing === "first").map((reach) => reach.tier);
|
|
7998
|
+
const fallbacks = reaches.filter((reach) => reach.standing === "fallback").map((reach) => reach.tier);
|
|
7999
|
+
const serves = firsts.length === 0 ? [] : [`Serves the ${joined(firsts)} tier${firsts.length === 1 ? "" : "s"}`];
|
|
8000
|
+
const falls = fallbacks.length === 0 ? [] : [`${serves.length === 0 ? "Fallback" : "fallback"} for ${joined(fallbacks)}`];
|
|
8001
|
+
return { model, label: model, description: [...serves, ...falls].join("; "), behavesAs: TIER_BEHAVES_AS[lead.tier] };
|
|
8002
|
+
}
|
|
8003
|
+
function rowsOfTable(table) {
|
|
8004
|
+
const reachesByModel = /* @__PURE__ */ new Map();
|
|
8005
|
+
for (const [tier, candidates] of table) {
|
|
8006
|
+
candidates.forEach((model, index) => {
|
|
8007
|
+
const reaches = reachesByModel.get(model) ?? [];
|
|
8008
|
+
if (!reaches.some((reach) => reach.tier === tier)) {
|
|
8009
|
+
reaches.push({ tier, standing: index === 0 ? "first" : "fallback" });
|
|
8010
|
+
}
|
|
8011
|
+
reachesByModel.set(model, reaches);
|
|
8012
|
+
});
|
|
8013
|
+
}
|
|
8014
|
+
return [...reachesByModel].map(([model, reaches]) => rowOf2(model, reaches));
|
|
8015
|
+
}
|
|
8016
|
+
function antigravityRows(provider) {
|
|
8017
|
+
const config = resolveAntigravityConfig(provider.antigravity);
|
|
8018
|
+
const tiers = rowsOfTable(ANTIGRAVITY_TIERS.map((tier) => [tier, config.models[tier]]));
|
|
8019
|
+
const behavesAsOf = new Map(tiers.map((row) => [row.model, row.behavesAs]));
|
|
8020
|
+
const aliases = [...config.aliases].flatMap(([alias, candidates]) => {
|
|
8021
|
+
const [first] = candidates;
|
|
8022
|
+
const behavesAs = first === void 0 ? void 0 : behavesAsOf.get(first);
|
|
8023
|
+
return behavesAs === void 0 ? [] : [{ model: alias, label: alias, description: `Alias for ${candidates.join(", then ")}`, behavesAs }];
|
|
8024
|
+
});
|
|
8025
|
+
return [...tiers, ...aliases];
|
|
8026
|
+
}
|
|
8027
|
+
function codexRows(provider) {
|
|
8028
|
+
const config = resolveCodexConfig(provider.codex);
|
|
8029
|
+
return rowsOfTable(CODEX_TIERS.map((tier) => [tier, [config.models[tier]]]));
|
|
8030
|
+
}
|
|
8031
|
+
function httpRows(provider) {
|
|
8032
|
+
const env = provider.env ?? {};
|
|
8033
|
+
const table = CODEX_TIERS.flatMap((tier) => {
|
|
8034
|
+
const model = env[TIER_ENV_VARIABLES[tier]];
|
|
8035
|
+
return model === void 0 || model === "" ? [] : [[tier, [model]]];
|
|
8036
|
+
});
|
|
8037
|
+
return rowsOfTable(table);
|
|
8038
|
+
}
|
|
8039
|
+
function providerModelRows(provider) {
|
|
8040
|
+
if (provider.kind === "codex") {
|
|
8041
|
+
return codexRows(provider);
|
|
8042
|
+
}
|
|
8043
|
+
if (provider.kind === "antigravity") {
|
|
8044
|
+
return antigravityRows(provider);
|
|
8045
|
+
}
|
|
8046
|
+
return httpRows(provider);
|
|
8047
|
+
}
|
|
8048
|
+
function modelPickerSettings(provider) {
|
|
8049
|
+
const options = providerModelRows(provider);
|
|
8050
|
+
return options.length === 0 ? void 0 : JSON.stringify({ modelPicker: { options, replaceBuiltInOptions: true } });
|
|
8051
|
+
}
|
|
8052
|
+
var TIER_BEHAVES_AS, TIER_ENV_VARIABLES;
|
|
8053
|
+
var init_modelPicker = __esm({
|
|
8054
|
+
"src/launcher/modelPicker.ts"() {
|
|
8055
|
+
"use strict";
|
|
8056
|
+
init_translate();
|
|
8057
|
+
init_translate2();
|
|
8058
|
+
init_schema();
|
|
8059
|
+
TIER_BEHAVES_AS = Object.freeze({
|
|
8060
|
+
fable: "claude-fable-5-1",
|
|
8061
|
+
opus: "claude-opus-5-5",
|
|
8062
|
+
sonnet: "claude-sonnet-5-5",
|
|
8063
|
+
haiku: "claude-haiku-5-5"
|
|
8064
|
+
});
|
|
8065
|
+
TIER_ENV_VARIABLES = Object.freeze({
|
|
8066
|
+
fable: "ANTHROPIC_DEFAULT_FABLE_MODEL",
|
|
8067
|
+
opus: "ANTHROPIC_DEFAULT_OPUS_MODEL",
|
|
8068
|
+
sonnet: "ANTHROPIC_DEFAULT_SONNET_MODEL",
|
|
8069
|
+
haiku: "ANTHROPIC_DEFAULT_HAIKU_MODEL"
|
|
8070
|
+
});
|
|
8071
|
+
}
|
|
8072
|
+
});
|
|
8073
|
+
|
|
7790
8074
|
// src/launcher/pool.ts
|
|
7791
8075
|
function isResuming(passthrough) {
|
|
7792
8076
|
const end = passthrough.indexOf(TERMINATOR3);
|
|
@@ -8213,10 +8497,16 @@ function decideLaunch(params, readOnly) {
|
|
|
8213
8497
|
log.info(`agent-shim: identity ${loginlessProvider.identity} has no stored login, so Remote Control, which needs one, is off for this launch; provider ${loginlessProvider.provider} runs without it`);
|
|
8214
8498
|
}
|
|
8215
8499
|
const flags = loginlessProvider === void 0 ? requestedFlags : { ...requestedFlags, remoteControl: false };
|
|
8500
|
+
const pickerSettings = selectedProvider === void 0 ? void 0 : modelPickerSettings(selectedProvider.definition);
|
|
8501
|
+
const callerSettings = hasSettingsArgument(parsedArgv.rest);
|
|
8502
|
+
if (pickerSettings !== void 0 && callerSettings && !readOnly) {
|
|
8503
|
+
log.info("agent-shim: this launch passes its own --settings, so /model keeps Claude Code's own model names instead of listing the provider's models");
|
|
8504
|
+
}
|
|
8505
|
+
const launcherSettings = mergeSettings([params.supervised?.settings, callerSettings ? void 0 : pickerSettings]);
|
|
8216
8506
|
const args = buildArgv({
|
|
8217
8507
|
toolFlags: buildFlagArgs(flags),
|
|
8218
8508
|
extraFlags: splitExtraFlags(env.CLAUDE_EXTRA_FLAGS),
|
|
8219
|
-
passthrough: params.supervised === void 0 ? parsedArgv.rest : withSupervision(parsedArgv.rest, params.supervised)
|
|
8509
|
+
passthrough: withLauncherSettings(params.supervised === void 0 ? parsedArgv.rest : withSupervision(parsedArgv.rest, params.supervised), launcherSettings)
|
|
8220
8510
|
});
|
|
8221
8511
|
const configDir = configDirEscapeHatchApplies || identityDecision.name === void 0 ? env.CLAUDE_CONFIG_DIR : path38.join(paths.identitiesDir, identityDecision.name);
|
|
8222
8512
|
const decision = {
|
|
@@ -8406,6 +8696,7 @@ var init_launcher = __esm({
|
|
|
8406
8696
|
init_flags();
|
|
8407
8697
|
init_extraFlags();
|
|
8408
8698
|
init_claudeSession();
|
|
8699
|
+
init_modelPicker();
|
|
8409
8700
|
init_pool();
|
|
8410
8701
|
init_resumeContext();
|
|
8411
8702
|
init_lock();
|
|
@@ -8886,84 +9177,77 @@ var init_identityClaude = __esm({
|
|
|
8886
9177
|
}
|
|
8887
9178
|
});
|
|
8888
9179
|
|
|
8889
|
-
// src/antigravity/cloudUpstream.ts
|
|
8890
|
-
var init_cloudUpstream = __esm({
|
|
8891
|
-
"src/antigravity/cloudUpstream.ts"() {
|
|
8892
|
-
"use strict";
|
|
8893
|
-
}
|
|
8894
|
-
});
|
|
8895
|
-
|
|
8896
9180
|
// src/usage/providerQuota.ts
|
|
8897
|
-
import { z as
|
|
8898
|
-
var MS_PER_SECOND7,
|
|
9181
|
+
import { z as z30 } from "zod";
|
|
9182
|
+
var MS_PER_SECOND7, SECONDS_PER_HOUR2, HOURS_PER_DAY5, DAYS_PER_MONTH, ZAI_HOST, ZAI_QUOTA_URL, ZAI_UNIT_HOURS, ZAI_UNIT_MONTHS, ZAI_UNIT_MS, ZaiLimitSchema, ZaiResponseSchema, OPENROUTER_HOST, OPENROUTER_KEY_URL, OPENROUTER_CREDITS_URL, MS_PER_DAY3, OpenRouterKeySchema, OpenRouterCreditsSchema, ANTIGRAVITY_HOST, ANTIGRAVITY_QUOTA_URL, ANTIGRAVITY_USER_URL, FIVE_HOURS2, DAYS_PER_WEEK2, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, AntigravityUserSchema;
|
|
8899
9183
|
var init_providerQuota = __esm({
|
|
8900
9184
|
"src/usage/providerQuota.ts"() {
|
|
8901
9185
|
"use strict";
|
|
8902
9186
|
init_cloudUpstream();
|
|
8903
9187
|
init_schema2();
|
|
8904
9188
|
MS_PER_SECOND7 = 1e3;
|
|
8905
|
-
|
|
8906
|
-
|
|
9189
|
+
SECONDS_PER_HOUR2 = 3600;
|
|
9190
|
+
HOURS_PER_DAY5 = 24;
|
|
8907
9191
|
DAYS_PER_MONTH = 30;
|
|
8908
9192
|
ZAI_HOST = "api.z.ai";
|
|
8909
9193
|
ZAI_QUOTA_URL = `https://${ZAI_HOST}/api/monitor/usage/quota/limit`;
|
|
8910
9194
|
ZAI_UNIT_HOURS = 3;
|
|
8911
9195
|
ZAI_UNIT_MONTHS = 5;
|
|
8912
9196
|
ZAI_UNIT_MS = /* @__PURE__ */ new Map([
|
|
8913
|
-
[ZAI_UNIT_HOURS,
|
|
8914
|
-
[ZAI_UNIT_MONTHS, DAYS_PER_MONTH *
|
|
9197
|
+
[ZAI_UNIT_HOURS, SECONDS_PER_HOUR2 * MS_PER_SECOND7],
|
|
9198
|
+
[ZAI_UNIT_MONTHS, DAYS_PER_MONTH * HOURS_PER_DAY5 * SECONDS_PER_HOUR2 * MS_PER_SECOND7]
|
|
8915
9199
|
]);
|
|
8916
|
-
ZaiLimitSchema =
|
|
8917
|
-
type:
|
|
8918
|
-
unit:
|
|
8919
|
-
number:
|
|
8920
|
-
percentage:
|
|
8921
|
-
nextResetTime:
|
|
8922
|
-
usage:
|
|
8923
|
-
currentValue:
|
|
8924
|
-
remaining:
|
|
9200
|
+
ZaiLimitSchema = z30.object({
|
|
9201
|
+
type: z30.string(),
|
|
9202
|
+
unit: z30.number().int(),
|
|
9203
|
+
number: z30.number().int().positive(),
|
|
9204
|
+
percentage: z30.number().nonnegative(),
|
|
9205
|
+
nextResetTime: z30.number().positive().optional(),
|
|
9206
|
+
usage: z30.number().nonnegative().optional(),
|
|
9207
|
+
currentValue: z30.number().nonnegative().optional(),
|
|
9208
|
+
remaining: z30.number().nonnegative().optional()
|
|
8925
9209
|
});
|
|
8926
|
-
ZaiResponseSchema =
|
|
8927
|
-
success:
|
|
8928
|
-
msg:
|
|
8929
|
-
data:
|
|
9210
|
+
ZaiResponseSchema = z30.object({
|
|
9211
|
+
success: z30.boolean(),
|
|
9212
|
+
msg: z30.string().optional(),
|
|
9213
|
+
data: z30.object({ level: z30.string().optional(), limits: z30.array(ZaiLimitSchema) })
|
|
8930
9214
|
});
|
|
8931
9215
|
OPENROUTER_HOST = "openrouter.ai";
|
|
8932
9216
|
OPENROUTER_KEY_URL = `https://${OPENROUTER_HOST}/api/v1/key`;
|
|
8933
9217
|
OPENROUTER_CREDITS_URL = `https://${OPENROUTER_HOST}/api/v1/credits`;
|
|
8934
|
-
MS_PER_DAY3 =
|
|
8935
|
-
OpenRouterKeySchema =
|
|
8936
|
-
data:
|
|
8937
|
-
limit:
|
|
8938
|
-
limit_remaining:
|
|
8939
|
-
limit_reset:
|
|
8940
|
-
is_free_tier:
|
|
8941
|
-
free_model_daily_requests:
|
|
9218
|
+
MS_PER_DAY3 = HOURS_PER_DAY5 * SECONDS_PER_HOUR2 * MS_PER_SECOND7;
|
|
9219
|
+
OpenRouterKeySchema = z30.object({
|
|
9220
|
+
data: z30.object({
|
|
9221
|
+
limit: z30.number().nonnegative().nullable(),
|
|
9222
|
+
limit_remaining: z30.number().nullable(),
|
|
9223
|
+
limit_reset: z30.string().nullable(),
|
|
9224
|
+
is_free_tier: z30.boolean().optional(),
|
|
9225
|
+
free_model_daily_requests: z30.object({ used: z30.number().nonnegative(), limit: z30.number().nonnegative(), remaining: z30.number() }).optional()
|
|
8942
9226
|
})
|
|
8943
9227
|
});
|
|
8944
|
-
OpenRouterCreditsSchema =
|
|
9228
|
+
OpenRouterCreditsSchema = z30.object({ data: z30.object({ total_credits: z30.number().nonnegative(), total_usage: z30.number().nonnegative() }) });
|
|
8945
9229
|
ANTIGRAVITY_HOST = "daily-cloudcode-pa.googleapis.com";
|
|
8946
9230
|
ANTIGRAVITY_QUOTA_URL = `https://${ANTIGRAVITY_HOST}/v1internal:retrieveUserQuotaSummary`;
|
|
8947
9231
|
ANTIGRAVITY_USER_URL = `https://${ANTIGRAVITY_HOST}/v1internal:loadCodeAssist`;
|
|
8948
9232
|
FIVE_HOURS2 = 5;
|
|
8949
|
-
|
|
8950
|
-
FIVE_HOURS_MS = FIVE_HOURS2 *
|
|
8951
|
-
WEEK_MS =
|
|
8952
|
-
AntigravityBucketSchema =
|
|
8953
|
-
bucketId:
|
|
8954
|
-
remainingFraction:
|
|
8955
|
-
resetTime:
|
|
9233
|
+
DAYS_PER_WEEK2 = 7;
|
|
9234
|
+
FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR2 * MS_PER_SECOND7;
|
|
9235
|
+
WEEK_MS = DAYS_PER_WEEK2 * HOURS_PER_DAY5 * SECONDS_PER_HOUR2 * MS_PER_SECOND7;
|
|
9236
|
+
AntigravityBucketSchema = z30.object({
|
|
9237
|
+
bucketId: z30.string(),
|
|
9238
|
+
remainingFraction: z30.number().optional(),
|
|
9239
|
+
resetTime: z30.string().optional()
|
|
8956
9240
|
});
|
|
8957
|
-
AntigravitySummarySchema =
|
|
8958
|
-
GoogleTokenInfoSchema =
|
|
8959
|
-
email:
|
|
8960
|
-
sub:
|
|
9241
|
+
AntigravitySummarySchema = z30.object({ groups: z30.array(z30.object({ buckets: z30.array(AntigravityBucketSchema) })) });
|
|
9242
|
+
GoogleTokenInfoSchema = z30.object({
|
|
9243
|
+
email: z30.string().optional(),
|
|
9244
|
+
sub: z30.string().optional()
|
|
8961
9245
|
});
|
|
8962
|
-
AntigravityUserSchema =
|
|
9246
|
+
AntigravityUserSchema = z30.object({
|
|
8963
9247
|
/** The code-assist tier context, which defaults to the free tier for every account. */
|
|
8964
|
-
currentTier:
|
|
9248
|
+
currentTier: z30.object({ name: z30.string().optional(), id: z30.string().optional() }).optional(),
|
|
8965
9249
|
/** The account's paid subscription; absent when the account has none. */
|
|
8966
|
-
paidTier:
|
|
9250
|
+
paidTier: z30.object({ name: z30.string().optional(), id: z30.string().optional() }).optional()
|
|
8967
9251
|
});
|
|
8968
9252
|
}
|
|
8969
9253
|
});
|
|
@@ -16497,7 +16781,7 @@ function numberOf(record, field) {
|
|
|
16497
16781
|
}
|
|
16498
16782
|
return void 0;
|
|
16499
16783
|
}
|
|
16500
|
-
function pageOfRcChannel(url, rows, idOf,
|
|
16784
|
+
function pageOfRcChannel(url, rows, idOf, rowOf3) {
|
|
16501
16785
|
const query = new URL(url, "http://127.0.0.1").searchParams;
|
|
16502
16786
|
const anchor = query.get("after_event_id") ?? query.get("cursor");
|
|
16503
16787
|
const rawLimit = query.get("limit");
|
|
@@ -16511,7 +16795,7 @@ function pageOfRcChannel(url, rows, idOf, rowOf2) {
|
|
|
16511
16795
|
}
|
|
16512
16796
|
const page = limit === void 0 ? rows.slice(from) : rows.slice(from, from + limit);
|
|
16513
16797
|
const last = page[page.length - 1];
|
|
16514
|
-
return { data: page.map(
|
|
16798
|
+
return { data: page.map(rowOf3), ...last === void 0 ? {} : { next_cursor: idOf(last) } };
|
|
16515
16799
|
}
|
|
16516
16800
|
async function serveRcClientChannels(ctx, tail, method, maxBatchEvents) {
|
|
16517
16801
|
const { request: request4, response, host } = ctx;
|