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/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.23.0",
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
- const conversation = supervised.conversation === "as-given" ? passthrough : withConversation(passthrough, supervised.conversation, supervised.sessionId);
7773
- if (supervised.settings === void 0) {
7774
- return conversation;
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
- const end = conversation.indexOf(TERMINATOR2);
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 z29 } from "zod";
8898
- var MS_PER_SECOND7, SECONDS_PER_HOUR, HOURS_PER_DAY4, 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_WEEK, FIVE_HOURS_MS, WEEK_MS, AntigravityBucketSchema, AntigravitySummarySchema, GoogleTokenInfoSchema, AntigravityUserSchema;
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
- SECONDS_PER_HOUR = 3600;
8906
- HOURS_PER_DAY4 = 24;
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, SECONDS_PER_HOUR * MS_PER_SECOND7],
8914
- [ZAI_UNIT_MONTHS, DAYS_PER_MONTH * HOURS_PER_DAY4 * SECONDS_PER_HOUR * MS_PER_SECOND7]
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 = z29.object({
8917
- type: z29.string(),
8918
- unit: z29.number().int(),
8919
- number: z29.number().int().positive(),
8920
- percentage: z29.number().nonnegative(),
8921
- nextResetTime: z29.number().positive().optional(),
8922
- usage: z29.number().nonnegative().optional(),
8923
- currentValue: z29.number().nonnegative().optional(),
8924
- remaining: z29.number().nonnegative().optional()
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 = z29.object({
8927
- success: z29.boolean(),
8928
- msg: z29.string().optional(),
8929
- data: z29.object({ level: z29.string().optional(), limits: z29.array(ZaiLimitSchema) })
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 = HOURS_PER_DAY4 * SECONDS_PER_HOUR * MS_PER_SECOND7;
8935
- OpenRouterKeySchema = z29.object({
8936
- data: z29.object({
8937
- limit: z29.number().nonnegative().nullable(),
8938
- limit_remaining: z29.number().nullable(),
8939
- limit_reset: z29.string().nullable(),
8940
- is_free_tier: z29.boolean().optional(),
8941
- free_model_daily_requests: z29.object({ used: z29.number().nonnegative(), limit: z29.number().nonnegative(), remaining: z29.number() }).optional()
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 = z29.object({ data: z29.object({ total_credits: z29.number().nonnegative(), total_usage: z29.number().nonnegative() }) });
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
- DAYS_PER_WEEK = 7;
8950
- FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR * MS_PER_SECOND7;
8951
- WEEK_MS = DAYS_PER_WEEK * HOURS_PER_DAY4 * SECONDS_PER_HOUR * MS_PER_SECOND7;
8952
- AntigravityBucketSchema = z29.object({
8953
- bucketId: z29.string(),
8954
- remainingFraction: z29.number().optional(),
8955
- resetTime: z29.string().optional()
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 = z29.object({ groups: z29.array(z29.object({ buckets: z29.array(AntigravityBucketSchema) })) });
8958
- GoogleTokenInfoSchema = z29.object({
8959
- email: z29.string().optional(),
8960
- sub: z29.string().optional()
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 = z29.object({
9246
+ AntigravityUserSchema = z30.object({
8963
9247
  /** The code-assist tier context, which defaults to the free tier for every account. */
8964
- currentTier: z29.object({ name: z29.string().optional(), id: z29.string().optional() }).optional(),
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: z29.object({ name: z29.string().optional(), id: z29.string().optional() }).optional()
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, rowOf2) {
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(rowOf2), ...last === void 0 ? {} : { next_cursor: idOf(last) } };
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;