claude-use 11.27.0 → 11.28.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
@@ -263,7 +263,11 @@ var init_schema = __esm({
263
263
  headroom: z.boolean().optional(),
264
264
  trackUsage: z.boolean().optional(),
265
265
  /** The exact Claude Code version to run, as it is named in Claude Code's versions directory (`2.1.220`). A pin that is not installed fails the launch; it never falls back to the highest version. */
266
- claudeVersion: z.string().regex(NUMERIC_DOTTED_VERSION_RE, "must be an exact dotted-numeric Claude Code version such as 2.1.220").optional()
266
+ claudeVersion: z.string().regex(NUMERIC_DOTTED_VERSION_RE, "must be an exact dotted-numeric Claude Code version such as 2.1.220").optional(),
267
+ /** How long the launcher waits after its own output before it starts claude, so that output can be read before Claude Code takes over the terminal (`5s`, `500ms`). Applies only when a terminal is watching. */
268
+ delay: z.string().regex(DURATION_RE, "must be a duration such as 5s or 500ms").optional(),
269
+ /** Whether the launcher waits for a key press after its own output before it starts claude. Takes the place of `delay` when both are set. Applies only when a terminal is watching. */
270
+ pause: z.boolean().optional()
267
271
  });
268
272
  CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
269
273
  PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
@@ -1366,6 +1370,12 @@ function flattenLayers(layers, options) {
1366
1370
  if (layer.launch.claudeVersion !== void 0) {
1367
1371
  launch.claudeVersion = layer.launch.claudeVersion;
1368
1372
  }
1373
+ if (layer.launch.delay !== void 0) {
1374
+ launch.delay = layer.launch.delay;
1375
+ }
1376
+ if (layer.launch.pause !== void 0) {
1377
+ launch.pause = layer.launch.pause;
1378
+ }
1369
1379
  }
1370
1380
  if (layer.entries === void 0) {
1371
1381
  continue;
@@ -2940,7 +2950,7 @@ var init_package = __esm({
2940
2950
  "package.json"() {
2941
2951
  package_default = {
2942
2952
  name: "claude-use",
2943
- version: "11.27.0",
2953
+ version: "11.28.0",
2944
2954
  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.",
2945
2955
  license: "MIT",
2946
2956
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -4383,7 +4393,7 @@ function realResolveClaudeBinary(isOwnBinary) {
4383
4393
  function realInstalledClaudeVersions() {
4384
4394
  return installedVersions(listVersionsDir(defaultVersionsDir()));
4385
4395
  }
4386
- var realFsPort, OWNER_ONLY_DIR_MODE, OWNER_ONLY_FILE_MODE, PERMISSION_BITS, realFarmFs, INT32_BYTE_LENGTH, PS_TIMEOUT_MS, realRunPort, MACOS_GUI_SESSION_MANAGER, realCredentialPort, SOCKET_PERMISSION_BITS, realHeadroomSocketTrust, realSpawnPort, realProcPort, realLogPort, EXECUTE_BITS_MASK, WINDOWS_DEFAULT_PATHEXT;
4396
+ var realFsPort, OWNER_ONLY_DIR_MODE, OWNER_ONLY_FILE_MODE, PERMISSION_BITS, realFarmFs, INT32_BYTE_LENGTH, KEY_POLL_MS, CTRL_C_BYTE, realHoldPort, PS_TIMEOUT_MS, realRunPort, MACOS_GUI_SESSION_MANAGER, realCredentialPort, SOCKET_PERMISSION_BITS, realHeadroomSocketTrust, realSpawnPort, realProcPort, realLogPort, EXECUTE_BITS_MASK, WINDOWS_DEFAULT_PATHEXT;
4387
4397
  var init_realPorts = __esm({
4388
4398
  "src/realPorts.ts"() {
4389
4399
  "use strict";
@@ -4526,6 +4536,31 @@ var init_realPorts = __esm({
4526
4536
  }
4527
4537
  };
4528
4538
  INT32_BYTE_LENGTH = 4;
4539
+ KEY_POLL_MS = 25;
4540
+ CTRL_C_BYTE = 3;
4541
+ realHoldPort = {
4542
+ attended: () => process.stdin.isTTY && process.stdout.isTTY,
4543
+ sleep: realSleepSync,
4544
+ waitForKey: () => {
4545
+ process.stdin.setRawMode(true);
4546
+ try {
4547
+ const buffer = Buffer.alloc(1);
4548
+ for (; ; ) {
4549
+ try {
4550
+ const read = fs3.readSync(process.stdin.fd, buffer, 0, buffer.length, null);
4551
+ return read > 0 && buffer[0] === CTRL_C_BYTE ? "interrupt" : "key";
4552
+ } catch (error) {
4553
+ if (!(error instanceof Error && "code" in error && error.code === "EAGAIN")) {
4554
+ throw error;
4555
+ }
4556
+ realSleepSync(KEY_POLL_MS);
4557
+ }
4558
+ }
4559
+ } finally {
4560
+ process.stdin.setRawMode(false);
4561
+ }
4562
+ }
4563
+ };
4529
4564
  PS_TIMEOUT_MS = 2e3;
4530
4565
  realRunPort = {
4531
4566
  run(command, args) {
@@ -7364,6 +7399,7 @@ function parseLauncherArgv(argv) {
7364
7399
  let configProfile;
7365
7400
  let provider;
7366
7401
  let claudeVersion;
7402
+ let delay;
7367
7403
  const booleans = {};
7368
7404
  const categoryFlags = [];
7369
7405
  const shareFlags = [];
@@ -7421,6 +7457,9 @@ function parseLauncherArgv(argv) {
7421
7457
  case "--claude-version":
7422
7458
  claudeVersion = value;
7423
7459
  break;
7460
+ case "--delay":
7461
+ delay = value;
7462
+ break;
7424
7463
  case "--category":
7425
7464
  categoryFlags.push(value);
7426
7465
  break;
@@ -7443,6 +7482,7 @@ function parseLauncherArgv(argv) {
7443
7482
  ...configProfile === void 0 ? {} : { configProfile },
7444
7483
  ...provider === void 0 ? {} : { provider },
7445
7484
  ...claudeVersion === void 0 ? {} : { claudeVersion },
7485
+ ...delay === void 0 ? {} : { delay },
7446
7486
  ...native ? { native: true } : {},
7447
7487
  ...booleans,
7448
7488
  categoryFlags,
@@ -7466,13 +7506,14 @@ var init_argv = __esm({
7466
7506
  positional;
7467
7507
  flag;
7468
7508
  };
7469
- VALUED_FLAGS = ["--identity", "--config-profile", "--provider", "--claude-version", "--category", "--share", "--hide"];
7509
+ VALUED_FLAGS = ["--identity", "--config-profile", "--provider", "--claude-version", "--delay", "--category", "--share", "--hide"];
7470
7510
  BOOLEAN_FLAGS = [
7471
7511
  { flag: "--headroom", key: "headroom" },
7472
7512
  { flag: "--track-usage", key: "trackUsage" },
7473
7513
  { flag: "--skip-permissions", key: "skipPermissions" },
7474
7514
  { flag: "--remote-control", key: "remoteControl" },
7475
- { flag: "--wait", key: "wait" }
7515
+ { flag: "--wait", key: "wait" },
7516
+ { flag: "--pause", key: "pause" }
7476
7517
  ];
7477
7518
  LAUNCHER_FLAG_NAMES = [
7478
7519
  ...VALUED_FLAGS,
@@ -7660,9 +7701,23 @@ function resolveLaunchFlags(params) {
7660
7701
  skipPermissions: params.flags?.skipPermissions ?? parseEnvBool("AGENT_SHIM_SKIP_PERMISSIONS", params.env.AGENT_SHIM_SKIP_PERMISSIONS) ?? params.cascade?.skipPermissions ?? false,
7661
7702
  remoteControl: params.flags?.remoteControl ?? parseEnvBool("AGENT_SHIM_REMOTE_CONTROL", params.env.AGENT_SHIM_REMOTE_CONTROL) ?? params.cascade?.remoteControl ?? false,
7662
7703
  headroom: params.flags?.headroom ?? parseEnvBool("AGENT_SHIM_HEADROOM", params.env.AGENT_SHIM_HEADROOM) ?? params.cascade?.headroom ?? false,
7663
- trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true
7704
+ trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
7705
+ pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
7706
+ delayMs: resolveDelayMs(params)
7664
7707
  };
7665
7708
  }
7709
+ function resolveDelayMs(params) {
7710
+ const fromEnv = params.env.AGENT_SHIM_DELAY === "" ? void 0 : params.env.AGENT_SHIM_DELAY;
7711
+ const [literal, source] = params.flags?.delay !== void 0 ? [params.flags.delay, "--delay"] : fromEnv !== void 0 ? [fromEnv, "AGENT_SHIM_DELAY"] : [params.cascade?.delay, "launch.delay"];
7712
+ if (literal === void 0) {
7713
+ return 0;
7714
+ }
7715
+ try {
7716
+ return parseDuration(literal);
7717
+ } catch (error) {
7718
+ throw new UsageError(`${source}: ${error instanceof Error ? error.message : String(error)}`);
7719
+ }
7720
+ }
7666
7721
  function buildFlagArgs(flags) {
7667
7722
  const args = [];
7668
7723
  if (flags.skipPermissions) {
@@ -7734,6 +7789,8 @@ var init_flags = __esm({
7734
7789
  "src/launcher/flags.ts"() {
7735
7790
  "use strict";
7736
7791
  init_envBool();
7792
+ init_cliError();
7793
+ init_conditions();
7737
7794
  init_credential();
7738
7795
  init_headers();
7739
7796
  init_capability();
@@ -7953,6 +8010,31 @@ var init_diagnostics = __esm({
7953
8010
  }
7954
8011
  });
7955
8012
 
8013
+ // src/launcher/hold.ts
8014
+ function describeDelay(ms) {
8015
+ return ms % MS_PER_SECOND7 === 0 ? `${String(ms / MS_PER_SECOND7)}s` : `${String(ms)}ms`;
8016
+ }
8017
+ function holdBeforeLaunch(hold, port, log) {
8018
+ if (port === void 0 || !port.attended() || !hold.pause && hold.delayMs <= 0) {
8019
+ return "go";
8020
+ }
8021
+ if (hold.pause) {
8022
+ log.info("agent-shim: paused before launch; press any key to start, or Ctrl-C to cancel");
8023
+ return port.waitForKey() === "interrupt" ? "cancelled" : "go";
8024
+ }
8025
+ log.info(`agent-shim: starting in ${describeDelay(hold.delayMs)}`);
8026
+ port.sleep(hold.delayMs);
8027
+ return "go";
8028
+ }
8029
+ var LAUNCH_CANCELLED_EXIT, MS_PER_SECOND7;
8030
+ var init_hold = __esm({
8031
+ "src/launcher/hold.ts"() {
8032
+ "use strict";
8033
+ LAUNCH_CANCELLED_EXIT = 130;
8034
+ MS_PER_SECOND7 = 1e3;
8035
+ }
8036
+ });
8037
+
7956
8038
  // src/antigravity/cloudUpstream.ts
7957
8039
  var init_cloudUpstream = __esm({
7958
8040
  "src/antigravity/cloudUpstream.ts"() {
@@ -8136,20 +8218,20 @@ function filterCatalogue(models, catalogue) {
8136
8218
  const excluded = catalogue.exclude === void 0 ? void 0 : picomatch4(catalogue.exclude, { dot: true });
8137
8219
  return models.filter((model) => included?.(model.id) !== false && excluded?.(model.id) !== true);
8138
8220
  }
8139
- var DEFAULT_CANDIDATE_URLS, MS_PER_SECOND7, SECONDS_PER_HOUR2, HOURS_PER_DAY5, MS_PER_HOUR5, HOURS_BETWEEN_RETRIES, CATALOGUE_MAX_AGE_MS, CATALOGUE_RETRY_MS, CATALOGUE_REQUEST_SECONDS, CATALOGUE_REQUEST_TIMEOUT_MS, CATALOGUE_REFRESH_TIMEOUT_MS, CatalogueModelSchema, CatalogueCacheSchema;
8221
+ var DEFAULT_CANDIDATE_URLS, MS_PER_SECOND8, SECONDS_PER_HOUR2, HOURS_PER_DAY5, MS_PER_HOUR5, HOURS_BETWEEN_RETRIES, CATALOGUE_MAX_AGE_MS, CATALOGUE_RETRY_MS, CATALOGUE_REQUEST_SECONDS, CATALOGUE_REQUEST_TIMEOUT_MS, CATALOGUE_REFRESH_TIMEOUT_MS, CatalogueModelSchema, CatalogueCacheSchema;
8140
8222
  var init_providerCatalogue = __esm({
8141
8223
  "src/providerCatalogue.ts"() {
8142
8224
  "use strict";
8143
8225
  DEFAULT_CANDIDATE_URLS = 2;
8144
- MS_PER_SECOND7 = 1e3;
8226
+ MS_PER_SECOND8 = 1e3;
8145
8227
  SECONDS_PER_HOUR2 = 3600;
8146
8228
  HOURS_PER_DAY5 = 24;
8147
- MS_PER_HOUR5 = SECONDS_PER_HOUR2 * MS_PER_SECOND7;
8229
+ MS_PER_HOUR5 = SECONDS_PER_HOUR2 * MS_PER_SECOND8;
8148
8230
  HOURS_BETWEEN_RETRIES = 1;
8149
8231
  CATALOGUE_MAX_AGE_MS = HOURS_PER_DAY5 * MS_PER_HOUR5;
8150
8232
  CATALOGUE_RETRY_MS = HOURS_BETWEEN_RETRIES * MS_PER_HOUR5;
8151
8233
  CATALOGUE_REQUEST_SECONDS = 10;
8152
- CATALOGUE_REQUEST_TIMEOUT_MS = CATALOGUE_REQUEST_SECONDS * MS_PER_SECOND7;
8234
+ CATALOGUE_REQUEST_TIMEOUT_MS = CATALOGUE_REQUEST_SECONDS * MS_PER_SECOND8;
8153
8235
  CATALOGUE_REFRESH_TIMEOUT_MS = DEFAULT_CANDIDATE_URLS * CATALOGUE_REQUEST_TIMEOUT_MS;
8154
8236
  CatalogueModelSchema = z30.strictObject({ id: z30.string().min(1), name: z30.string().min(1).optional() });
8155
8237
  CatalogueCacheSchema = z30.strictObject({ fetchedAt: z30.number(), url: z30.string().min(1), models: z30.array(CatalogueModelSchema) });
@@ -8673,7 +8755,9 @@ function decideLaunch(params, readOnly) {
8673
8755
  ...parsedArgv.skipPermissions === void 0 ? {} : { skipPermissions: parsedArgv.skipPermissions },
8674
8756
  ...parsedArgv.remoteControl === void 0 ? {} : { remoteControl: parsedArgv.remoteControl },
8675
8757
  ...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom },
8676
- ...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage }
8758
+ ...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
8759
+ ...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
8760
+ ...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
8677
8761
  }
8678
8762
  });
8679
8763
  const loginlessProvider = requestedFlags.remoteControl && selectedProvider !== void 0 && farmIdentity !== void 0 && params.hasStoredLogin?.(farmIdentity) === false ? { identity: farmIdentity, provider: selectedProvider.name } : void 0;
@@ -8818,7 +8902,8 @@ function prepareLaunch(params) {
8818
8902
  registered();
8819
8903
  }
8820
8904
  };
8821
- return { bin: decided.bin, args: finalArgv, env: finalEnv, sessionId, release, markChildStarted: updateCheck.markChildStarted, decision };
8905
+ const hold = () => holdBeforeLaunch({ delayMs: resolvedFlags.delayMs, pause: resolvedFlags.pause }, params.hold, log);
8906
+ return { bin: decided.bin, args: finalArgv, env: finalEnv, sessionId, release, markChildStarted: updateCheck.markChildStarted, hold, decision };
8822
8907
  }
8823
8908
  function resolveLaunch(params) {
8824
8909
  const decided = decideLaunch(params, true);
@@ -8851,6 +8936,9 @@ function resolveLaunch(params) {
8851
8936
  }
8852
8937
  function runLaunchPlan(plan, spawn3) {
8853
8938
  try {
8939
+ if (plan.hold() === "cancelled") {
8940
+ return LAUNCH_CANCELLED_EXIT;
8941
+ }
8854
8942
  plan.markChildStarted();
8855
8943
  const result = spawn3.spawnSync(plan.bin, plan.args, { stdio: "inherit", env: plan.env });
8856
8944
  if (result.error !== void 0) {
@@ -8878,6 +8966,7 @@ var init_launcher = __esm({
8878
8966
  init_extraFlags();
8879
8967
  init_claudeSession();
8880
8968
  init_diagnostics();
8969
+ init_hold();
8881
8970
  init_modelPicker();
8882
8971
  init_providerCatalogue();
8883
8972
  init_pool();
@@ -9086,6 +9175,7 @@ function realPrepareLaunchParams(paths, options) {
9086
9175
  headroom: realHeadroomPort(paths, { spawnDaemon: options.spawnDaemon, cwd: farm.runtime.cwd }),
9087
9176
  frontdoor: realFrontDoorPort(paths, options.spawnDaemon),
9088
9177
  credentials: { ...realCredentialPort, cache: realCredentialCacheEnv(paths) },
9178
+ hold: realHoldPort,
9089
9179
  hasStoredLogin: (identity) => identitySignIn(realFarmFs, { platform: process.platform, run: realRunPort }, { farmRoot: path42.join(paths.identitiesDir, identity), hasCredentialBlock: false }).state !== "signed-out",
9090
9180
  ...farm.directoryIdentity === void 0 ? {} : { directoryPinnedIdentity: farm.directoryIdentity },
9091
9181
  ...farm.directoryConfigProfile === void 0 ? {} : { directoryRuleConfigProfile: farm.directoryConfigProfile },
@@ -9362,13 +9452,13 @@ var init_identityClaude = __esm({
9362
9452
 
9363
9453
  // src/usage/providerQuota.ts
9364
9454
  import { z as z31 } from "zod";
9365
- var MS_PER_SECOND8, SECONDS_PER_HOUR3, HOURS_PER_DAY6, 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;
9455
+ var MS_PER_SECOND9, SECONDS_PER_HOUR3, HOURS_PER_DAY6, 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;
9366
9456
  var init_providerQuota = __esm({
9367
9457
  "src/usage/providerQuota.ts"() {
9368
9458
  "use strict";
9369
9459
  init_cloudUpstream();
9370
9460
  init_schema2();
9371
- MS_PER_SECOND8 = 1e3;
9461
+ MS_PER_SECOND9 = 1e3;
9372
9462
  SECONDS_PER_HOUR3 = 3600;
9373
9463
  HOURS_PER_DAY6 = 24;
9374
9464
  DAYS_PER_MONTH = 30;
@@ -9377,8 +9467,8 @@ var init_providerQuota = __esm({
9377
9467
  ZAI_UNIT_HOURS = 3;
9378
9468
  ZAI_UNIT_MONTHS = 5;
9379
9469
  ZAI_UNIT_MS = /* @__PURE__ */ new Map([
9380
- [ZAI_UNIT_HOURS, SECONDS_PER_HOUR3 * MS_PER_SECOND8],
9381
- [ZAI_UNIT_MONTHS, DAYS_PER_MONTH * HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND8]
9470
+ [ZAI_UNIT_HOURS, SECONDS_PER_HOUR3 * MS_PER_SECOND9],
9471
+ [ZAI_UNIT_MONTHS, DAYS_PER_MONTH * HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND9]
9382
9472
  ]);
9383
9473
  ZaiLimitSchema = z31.object({
9384
9474
  type: z31.string(),
@@ -9398,7 +9488,7 @@ var init_providerQuota = __esm({
9398
9488
  OPENROUTER_HOST = "openrouter.ai";
9399
9489
  OPENROUTER_KEY_URL = `https://${OPENROUTER_HOST}/api/v1/key`;
9400
9490
  OPENROUTER_CREDITS_URL = `https://${OPENROUTER_HOST}/api/v1/credits`;
9401
- MS_PER_DAY3 = HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND8;
9491
+ MS_PER_DAY3 = HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND9;
9402
9492
  OpenRouterKeySchema = z31.object({
9403
9493
  data: z31.object({
9404
9494
  limit: z31.number().nonnegative().nullable(),
@@ -9414,8 +9504,8 @@ var init_providerQuota = __esm({
9414
9504
  ANTIGRAVITY_USER_URL = `https://${ANTIGRAVITY_HOST}/v1internal:loadCodeAssist`;
9415
9505
  FIVE_HOURS2 = 5;
9416
9506
  DAYS_PER_WEEK2 = 7;
9417
- FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR3 * MS_PER_SECOND8;
9418
- WEEK_MS = DAYS_PER_WEEK2 * HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND8;
9507
+ FIVE_HOURS_MS = FIVE_HOURS2 * SECONDS_PER_HOUR3 * MS_PER_SECOND9;
9508
+ WEEK_MS = DAYS_PER_WEEK2 * HOURS_PER_DAY6 * SECONDS_PER_HOUR3 * MS_PER_SECOND9;
9419
9509
  AntigravityBucketSchema = z31.object({
9420
9510
  bucketId: z31.string(),
9421
9511
  remainingFraction: z31.number().optional(),
@@ -13334,6 +13424,12 @@ function applyProfileChange(paths, name, change) {
13334
13424
  if (change.launchClaudeVersion !== void 0) {
13335
13425
  launchPatch.claudeVersion = change.launchClaudeVersion === false ? void 0 : change.launchClaudeVersion;
13336
13426
  }
13427
+ if (change.launchDelay !== void 0) {
13428
+ launchPatch.delay = change.launchDelay === false ? void 0 : change.launchDelay;
13429
+ }
13430
+ if (change.launchPause !== void 0) {
13431
+ launchPatch.pause = change.launchPause;
13432
+ }
13337
13433
  if (Object.keys(launchPatch).length > 0) {
13338
13434
  setProfileLaunchFlags(paths, name, launchPatch);
13339
13435
  touched = true;
@@ -15549,7 +15645,9 @@ var ConfigProfileSetInputSchema = z24.strictObject({
15549
15645
  headroom: z24.boolean().optional(),
15550
15646
  trackUsage: z24.boolean().optional(),
15551
15647
  provider: z24.union([z24.string().min(1), z24.literal(false)]).optional(),
15552
- claudeVersion: z24.union([z24.string().min(1), z24.literal(false)]).optional()
15648
+ claudeVersion: z24.union([z24.string().min(1), z24.literal(false)]).optional(),
15649
+ delay: z24.union([z24.string().regex(DURATION_RE), z24.literal(false)]).optional(),
15650
+ pause: z24.boolean().optional()
15553
15651
  }).optional()
15554
15652
  });
15555
15653
  var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
@@ -15759,7 +15857,9 @@ function createConfigApiRouter(deps) {
15759
15857
  ...launch?.headroom === void 0 ? {} : { launchHeadroom: launch.headroom },
15760
15858
  ...launch?.trackUsage === void 0 ? {} : { launchTrackUsage: launch.trackUsage },
15761
15859
  ...launch?.provider === void 0 ? {} : { launchProvider: launch.provider },
15762
- ...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion }
15860
+ ...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
15861
+ ...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
15862
+ ...launch?.pause === void 0 ? {} : { launchPause: launch.pause }
15763
15863
  });
15764
15864
  return { action: "updated", kind: "profile", name: input.name, value: profileValue(input.name, paths) };
15765
15865
  })
@@ -16067,7 +16167,10 @@ var LaunchFlagsSchema = z26.strictObject({
16067
16167
  skipPermissions: z26.boolean(),
16068
16168
  remoteControl: z26.boolean(),
16069
16169
  headroom: z26.boolean(),
16070
- trackUsage: z26.boolean()
16170
+ trackUsage: z26.boolean(),
16171
+ pause: z26.boolean(),
16172
+ /** How long the launch waits after its own output before it starts claude, in milliseconds. */
16173
+ delayMs: z26.number()
16071
16174
  });
16072
16175
  var LaunchResolveOutputSchema = z26.strictObject({
16073
16176
  decision: LaunchDecisionSchema,