agent-shim 8.39.0 → 8.40.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 CHANGED
@@ -63708,7 +63708,7 @@ function registerIdentityCommand(program2, deps) {
63708
63708
  // package.json
63709
63709
  var package_default = {
63710
63710
  name: "agent-shim",
63711
- version: "8.39.0",
63711
+ version: "8.40.0",
63712
63712
  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.",
63713
63713
  license: "MIT",
63714
63714
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -65215,12 +65215,7 @@ function rankNamedPool(input2, poolName, stack, sticky) {
65215
65215
  }
65216
65216
  continue;
65217
65217
  }
65218
- if (input2.pools[nestedName] === void 0) {
65219
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" names a pool that is not defined.`);
65220
- }
65221
- if (childStack.includes(nestedName)) {
65222
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
65223
- }
65218
+ assertNestable(input2.pools, poolName, poolMemberIdentity(entry), nestedName, childStack);
65224
65219
  const nested = nestedMember(input2, nestedName, childStack, sticky);
65225
65220
  members2.push(typeof entry === "string" ? nested.member : { ...nested.member, policy: entry.when });
65226
65221
  missing.push(...nested.missing);
@@ -65234,6 +65229,14 @@ function rankNamedPool(input2, poolName, stack, sticky) {
65234
65229
  });
65235
65230
  return { ranking, missing };
65236
65231
  }
65232
+ function assertNestable(pools, poolName, member, nestedName, childStack) {
65233
+ if (pools[nestedName] === void 0) {
65234
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" names a pool that is not defined.`);
65235
+ }
65236
+ if (childStack.includes(nestedName)) {
65237
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
65238
+ }
65239
+ }
65237
65240
  function nestedMember(input2, nestedName, childStack, sticky) {
65238
65241
  const nested = rankNamedPool(input2, nestedName, childStack, sticky);
65239
65242
  const pick2 = nested.ranking.pick;
@@ -93736,7 +93739,13 @@ function resolvePoolLaunch(params) {
93736
93739
  if (pick2 !== void 0) {
93737
93740
  recordStickyPick(params.usageFs, params.paths.usagePicksFile, params.cwd, pick2.identity, nowMs);
93738
93741
  const move = movedOff === void 0 ? "" : `moved off ${movedOff.identity} (${movedOff.reason}); `;
93739
- return { ok: true, identity: pick2.identity, explanation: `pool ${poolName}: ${move}${pick2.reasons.slice(0, REASONS_LOGGED).join("; ")}` };
93742
+ return {
93743
+ ok: true,
93744
+ identity: pick2.identity,
93745
+ explanation: `pool ${poolName}: ${move}${pick2.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
93746
+ reasons: pick2.reasons,
93747
+ ...movedOff === void 0 ? {} : { movedOff }
93748
+ };
93740
93749
  }
93741
93750
  if (earliestReturn === void 0) {
93742
93751
  return { ok: false, message: `agent-shim: no member of pool "${poolName}" can be picked.` };
@@ -94082,7 +94091,11 @@ function pickFromPool(decided, params, parsedArgv) {
94082
94091
  log.error(resolution.message);
94083
94092
  return proc.exit(1);
94084
94093
  }
94085
- return { identityDecision: { ...decided, name: resolution.identity }, poolExplanation: resolution.explanation };
94094
+ return {
94095
+ identityDecision: { ...decided, name: resolution.identity },
94096
+ poolExplanation: resolution.explanation,
94097
+ poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
94098
+ };
94086
94099
  }
94087
94100
  function prepareLaunch(params) {
94088
94101
  const { paths, fs: fs20, proc, log } = params;
@@ -94108,7 +94121,7 @@ function prepareLaunch(params) {
94108
94121
  return trimmed === "" ? void 0 : trimmed;
94109
94122
  }
94110
94123
  });
94111
- const { identityDecision, poolExplanation } = pickFromPool(decidedIdentity, params, parsedArgv);
94124
+ const { identityDecision, poolExplanation, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv);
94112
94125
  const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
94113
94126
  const farm = farmIdentity === void 0 ? void 0 : params.farm;
94114
94127
  if (farm !== void 0 && farmIdentity !== void 0) {
@@ -94322,7 +94335,18 @@ function prepareLaunch(params) {
94322
94335
  registered();
94323
94336
  }
94324
94337
  };
94325
- return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted };
94338
+ const configDir = finalEnv.CLAUDE_CONFIG_DIR;
94339
+ const decision = {
94340
+ identitySource: identityDecision.source,
94341
+ configDirEscapeHatch: identityDecision.configDirEscapeHatch,
94342
+ configProfileSource: configProfileDecision.source,
94343
+ ...identityDecision.name === void 0 ? {} : { identity: identityDecision.name },
94344
+ ...poolPick === void 0 ? {} : { pool: poolPick },
94345
+ ...configDir === void 0 || configDir === "" ? {} : { configDir },
94346
+ ...configProfileDecision.name === void 0 ? {} : { configProfile: configProfileDecision.name },
94347
+ ...resolvedProvider === void 0 ? {} : { provider: resolvedProvider.name }
94348
+ };
94349
+ return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted, decision };
94326
94350
  }
94327
94351
  function runLauncher(params) {
94328
94352
  const plan = prepareLaunch(params);
package/dist/index.cjs CHANGED
@@ -238,6 +238,7 @@ __export(index_exports, {
238
238
  parseConnectTarget: () => parseConnectTarget,
239
239
  parseRcStreamEnvelope: () => parseRcStreamEnvelope,
240
240
  planOf: () => planOf,
241
+ poolIdentities: () => poolIdentities,
241
242
  prepareClaudeLaunch: () => prepareClaudeLaunch,
242
243
  prepareLaunch: () => prepareLaunch,
243
244
  profileExists: () => profileExists,
@@ -5426,7 +5427,7 @@ var import_undici = require("undici");
5426
5427
  // package.json
5427
5428
  var package_default = {
5428
5429
  name: "agent-shim",
5429
- version: "8.39.0",
5430
+ version: "8.40.0",
5430
5431
  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.",
5431
5432
  license: "MIT",
5432
5433
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -6971,12 +6972,7 @@ function rankNamedPool(input, poolName, stack, sticky) {
6971
6972
  }
6972
6973
  continue;
6973
6974
  }
6974
- if (input.pools[nestedName] === void 0) {
6975
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" names a pool that is not defined.`);
6976
- }
6977
- if (childStack.includes(nestedName)) {
6978
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
6979
- }
6975
+ assertNestable(input.pools, poolName, poolMemberIdentity(entry), nestedName, childStack);
6980
6976
  const nested = nestedMember(input, nestedName, childStack, sticky);
6981
6977
  members.push(typeof entry === "string" ? nested.member : { ...nested.member, policy: entry.when });
6982
6978
  missing.push(...nested.missing);
@@ -6990,6 +6986,14 @@ function rankNamedPool(input, poolName, stack, sticky) {
6990
6986
  });
6991
6987
  return { ranking, missing };
6992
6988
  }
6989
+ function assertNestable(pools, poolName, member, nestedName, childStack) {
6990
+ if (pools[nestedName] === void 0) {
6991
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" names a pool that is not defined.`);
6992
+ }
6993
+ if (childStack.includes(nestedName)) {
6994
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
6995
+ }
6996
+ }
6993
6997
  function nestedMember(input, nestedName, childStack, sticky) {
6994
6998
  const nested = rankNamedPool(input, nestedName, childStack, sticky);
6995
6999
  const pick = nested.ranking.pick;
@@ -7007,6 +7011,27 @@ function nestedMember(input, nestedName, childStack, sticky) {
7007
7011
  missing: nested.missing
7008
7012
  };
7009
7013
  }
7014
+ function poolIdentities(pools, poolName) {
7015
+ const found = /* @__PURE__ */ new Set();
7016
+ collectPoolIdentities(pools, poolName, [], found);
7017
+ return [...found];
7018
+ }
7019
+ function collectPoolIdentities(pools, poolName, stack, found) {
7020
+ const pool = pools[poolName];
7021
+ if (pool === void 0) {
7022
+ throw new PoolGraphError(`No pool named "${poolName}". Run \`agent-shim pool add ${poolName} --identity <name>...\` first.`);
7023
+ }
7024
+ const childStack = [...stack, poolName];
7025
+ for (const entry of pool.identities) {
7026
+ const nestedName = poolNameOf(poolMemberIdentity(entry));
7027
+ if (nestedName === void 0) {
7028
+ found.add(poolMemberIdentity(entry));
7029
+ continue;
7030
+ }
7031
+ assertNestable(pools, poolName, poolMemberIdentity(entry), nestedName, childStack);
7032
+ collectPoolIdentities(pools, nestedName, childStack, found);
7033
+ }
7034
+ }
7010
7035
  function readPicksFile(fs12, file) {
7011
7036
  const empty = { schemaVersion: SCHEMA_VERSION, picks: {} };
7012
7037
  const raw = fs12.readFileUtf8(file);
@@ -13095,7 +13120,13 @@ function resolvePoolLaunch(params) {
13095
13120
  if (pick !== void 0) {
13096
13121
  recordStickyPick(params.usageFs, params.paths.usagePicksFile, params.cwd, pick.identity, nowMs);
13097
13122
  const move = movedOff === void 0 ? "" : `moved off ${movedOff.identity} (${movedOff.reason}); `;
13098
- return { ok: true, identity: pick.identity, explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}` };
13123
+ return {
13124
+ ok: true,
13125
+ identity: pick.identity,
13126
+ explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
13127
+ reasons: pick.reasons,
13128
+ ...movedOff === void 0 ? {} : { movedOff }
13129
+ };
13099
13130
  }
13100
13131
  if (earliestReturn === void 0) {
13101
13132
  return { ok: false, message: `agent-shim: no member of pool "${poolName}" can be picked.` };
@@ -13253,7 +13284,11 @@ function pickFromPool(decided, params, parsedArgv) {
13253
13284
  log.error(resolution.message);
13254
13285
  return proc.exit(1);
13255
13286
  }
13256
- return { identityDecision: { ...decided, name: resolution.identity }, poolExplanation: resolution.explanation };
13287
+ return {
13288
+ identityDecision: { ...decided, name: resolution.identity },
13289
+ poolExplanation: resolution.explanation,
13290
+ poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
13291
+ };
13257
13292
  }
13258
13293
  function prepareLaunch(params) {
13259
13294
  const { paths, fs: fs12, proc, log } = params;
@@ -13279,7 +13314,7 @@ function prepareLaunch(params) {
13279
13314
  return trimmed === "" ? void 0 : trimmed;
13280
13315
  }
13281
13316
  });
13282
- const { identityDecision, poolExplanation } = pickFromPool(decidedIdentity, params, parsedArgv);
13317
+ const { identityDecision, poolExplanation, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv);
13283
13318
  const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
13284
13319
  const farm = farmIdentity === void 0 ? void 0 : params.farm;
13285
13320
  if (farm !== void 0 && farmIdentity !== void 0) {
@@ -13493,7 +13528,18 @@ function prepareLaunch(params) {
13493
13528
  registered();
13494
13529
  }
13495
13530
  };
13496
- return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted };
13531
+ const configDir = finalEnv.CLAUDE_CONFIG_DIR;
13532
+ const decision = {
13533
+ identitySource: identityDecision.source,
13534
+ configDirEscapeHatch: identityDecision.configDirEscapeHatch,
13535
+ configProfileSource: configProfileDecision.source,
13536
+ ...identityDecision.name === void 0 ? {} : { identity: identityDecision.name },
13537
+ ...poolPick === void 0 ? {} : { pool: poolPick },
13538
+ ...configDir === void 0 || configDir === "" ? {} : { configDir },
13539
+ ...configProfileDecision.name === void 0 ? {} : { configProfile: configProfileDecision.name },
13540
+ ...resolvedProvider === void 0 ? {} : { provider: resolvedProvider.name }
13541
+ };
13542
+ return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted, decision };
13497
13543
  }
13498
13544
  function runLauncher(params) {
13499
13545
  const plan = prepareLaunch(params);
@@ -13967,6 +14013,7 @@ function prepareClaudeLaunch(options) {
13967
14013
  parseConnectTarget,
13968
14014
  parseRcStreamEnvelope,
13969
14015
  planOf,
14016
+ poolIdentities,
13970
14017
  prepareClaudeLaunch,
13971
14018
  prepareLaunch,
13972
14019
  profileExists,
package/dist/index.mjs CHANGED
@@ -5113,7 +5113,7 @@ import { Agent as Agent3, fetch as undiciFetch } from "undici";
5113
5113
  // package.json
5114
5114
  var package_default = {
5115
5115
  name: "agent-shim",
5116
- version: "8.39.0",
5116
+ version: "8.40.0",
5117
5117
  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.",
5118
5118
  license: "MIT",
5119
5119
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -6658,12 +6658,7 @@ function rankNamedPool(input, poolName, stack, sticky) {
6658
6658
  }
6659
6659
  continue;
6660
6660
  }
6661
- if (input.pools[nestedName] === void 0) {
6662
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" names a pool that is not defined.`);
6663
- }
6664
- if (childStack.includes(nestedName)) {
6665
- throw new PoolGraphError(`Pool "${poolName}" member "${poolMemberIdentity(entry)}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
6666
- }
6661
+ assertNestable(input.pools, poolName, poolMemberIdentity(entry), nestedName, childStack);
6667
6662
  const nested = nestedMember(input, nestedName, childStack, sticky);
6668
6663
  members.push(typeof entry === "string" ? nested.member : { ...nested.member, policy: entry.when });
6669
6664
  missing.push(...nested.missing);
@@ -6677,6 +6672,14 @@ function rankNamedPool(input, poolName, stack, sticky) {
6677
6672
  });
6678
6673
  return { ranking, missing };
6679
6674
  }
6675
+ function assertNestable(pools, poolName, member, nestedName, childStack) {
6676
+ if (pools[nestedName] === void 0) {
6677
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" names a pool that is not defined.`);
6678
+ }
6679
+ if (childStack.includes(nestedName)) {
6680
+ throw new PoolGraphError(`Pool "${poolName}" member "${member}" closes a cycle: ${[...childStack.slice(childStack.indexOf(nestedName)), nestedName].join(" -> ")}. A pool cannot nest itself, directly or through another pool.`);
6681
+ }
6682
+ }
6680
6683
  function nestedMember(input, nestedName, childStack, sticky) {
6681
6684
  const nested = rankNamedPool(input, nestedName, childStack, sticky);
6682
6685
  const pick = nested.ranking.pick;
@@ -6694,6 +6697,27 @@ function nestedMember(input, nestedName, childStack, sticky) {
6694
6697
  missing: nested.missing
6695
6698
  };
6696
6699
  }
6700
+ function poolIdentities(pools, poolName) {
6701
+ const found = /* @__PURE__ */ new Set();
6702
+ collectPoolIdentities(pools, poolName, [], found);
6703
+ return [...found];
6704
+ }
6705
+ function collectPoolIdentities(pools, poolName, stack, found) {
6706
+ const pool = pools[poolName];
6707
+ if (pool === void 0) {
6708
+ throw new PoolGraphError(`No pool named "${poolName}". Run \`agent-shim pool add ${poolName} --identity <name>...\` first.`);
6709
+ }
6710
+ const childStack = [...stack, poolName];
6711
+ for (const entry of pool.identities) {
6712
+ const nestedName = poolNameOf(poolMemberIdentity(entry));
6713
+ if (nestedName === void 0) {
6714
+ found.add(poolMemberIdentity(entry));
6715
+ continue;
6716
+ }
6717
+ assertNestable(pools, poolName, poolMemberIdentity(entry), nestedName, childStack);
6718
+ collectPoolIdentities(pools, nestedName, childStack, found);
6719
+ }
6720
+ }
6697
6721
  function readPicksFile(fs12, file) {
6698
6722
  const empty = { schemaVersion: SCHEMA_VERSION, picks: {} };
6699
6723
  const raw = fs12.readFileUtf8(file);
@@ -12782,7 +12806,13 @@ function resolvePoolLaunch(params) {
12782
12806
  if (pick !== void 0) {
12783
12807
  recordStickyPick(params.usageFs, params.paths.usagePicksFile, params.cwd, pick.identity, nowMs);
12784
12808
  const move = movedOff === void 0 ? "" : `moved off ${movedOff.identity} (${movedOff.reason}); `;
12785
- return { ok: true, identity: pick.identity, explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}` };
12809
+ return {
12810
+ ok: true,
12811
+ identity: pick.identity,
12812
+ explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
12813
+ reasons: pick.reasons,
12814
+ ...movedOff === void 0 ? {} : { movedOff }
12815
+ };
12786
12816
  }
12787
12817
  if (earliestReturn === void 0) {
12788
12818
  return { ok: false, message: `agent-shim: no member of pool "${poolName}" can be picked.` };
@@ -12940,7 +12970,11 @@ function pickFromPool(decided, params, parsedArgv) {
12940
12970
  log.error(resolution.message);
12941
12971
  return proc.exit(1);
12942
12972
  }
12943
- return { identityDecision: { ...decided, name: resolution.identity }, poolExplanation: resolution.explanation };
12973
+ return {
12974
+ identityDecision: { ...decided, name: resolution.identity },
12975
+ poolExplanation: resolution.explanation,
12976
+ poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
12977
+ };
12944
12978
  }
12945
12979
  function prepareLaunch(params) {
12946
12980
  const { paths, fs: fs12, proc, log } = params;
@@ -12966,7 +13000,7 @@ function prepareLaunch(params) {
12966
13000
  return trimmed === "" ? void 0 : trimmed;
12967
13001
  }
12968
13002
  });
12969
- const { identityDecision, poolExplanation } = pickFromPool(decidedIdentity, params, parsedArgv);
13003
+ const { identityDecision, poolExplanation, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv);
12970
13004
  const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
12971
13005
  const farm = farmIdentity === void 0 ? void 0 : params.farm;
12972
13006
  if (farm !== void 0 && farmIdentity !== void 0) {
@@ -13180,7 +13214,18 @@ function prepareLaunch(params) {
13180
13214
  registered();
13181
13215
  }
13182
13216
  };
13183
- return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted };
13217
+ const configDir = finalEnv.CLAUDE_CONFIG_DIR;
13218
+ const decision = {
13219
+ identitySource: identityDecision.source,
13220
+ configDirEscapeHatch: identityDecision.configDirEscapeHatch,
13221
+ configProfileSource: configProfileDecision.source,
13222
+ ...identityDecision.name === void 0 ? {} : { identity: identityDecision.name },
13223
+ ...poolPick === void 0 ? {} : { pool: poolPick },
13224
+ ...configDir === void 0 || configDir === "" ? {} : { configDir },
13225
+ ...configProfileDecision.name === void 0 ? {} : { configProfile: configProfileDecision.name },
13226
+ ...resolvedProvider === void 0 ? {} : { provider: resolvedProvider.name }
13227
+ };
13228
+ return { bin: discovered.path, args: finalArgv, env: finalEnv, release, markChildStarted: updateCheck.markChildStarted, decision };
13184
13229
  }
13185
13230
  function runLauncher(params) {
13186
13231
  const plan = prepareLaunch(params);
@@ -13653,6 +13698,7 @@ export {
13653
13698
  parseConnectTarget,
13654
13699
  parseRcStreamEnvelope,
13655
13700
  planOf,
13701
+ poolIdentities,
13656
13702
  prepareClaudeLaunch,
13657
13703
  prepareLaunch,
13658
13704
  profileExists,
@@ -7067,6 +7067,13 @@ interface PoolRanking {
7067
7067
  */
7068
7068
  declare function rankPool(input: RankPoolInput): PoolRanking;
7069
7069
 
7070
+ /**
7071
+ * The concrete identities the pool named `poolName` can launch as, in member order with a nested `pool:<name>` entry replaced by the identities of that pool at the entry's position, each identity once. It reads no usage and no identity file, so it lists every identity the pool graph names, whether or not it exists or is eligible: ranking is `rankPoolGraph`'s job.
7072
+ *
7073
+ * Throws `PoolGraphError` when the pool, or a pool it nests, is not defined, or when the graph reaches a pool it is already inside.
7074
+ */
7075
+ declare function poolIdentities(pools: Readonly<Record<string, Pool>>, poolName: string): readonly string[];
7076
+
7070
7077
  /**
7071
7078
  * Ranks a pool exactly as a launch from `directory` would right now, without recording a pick. Shares `rankPoolGraph` with the launcher, so what this prints is what a launch does.
7072
7079
  */
@@ -7634,6 +7641,39 @@ interface PrepareLaunchParams {
7634
7641
  interface RunLauncherParams extends PrepareLaunchParams {
7635
7642
  readonly spawn: SpawnPort;
7636
7643
  }
7644
+ /** The pick a pool made for a launch: the pool, why the ranking chose the member it did, and, for a resumed conversation, the member it left. */
7645
+ interface LaunchPoolDecision {
7646
+ /** The pool the launch selected with `pool:<name>`. */
7647
+ readonly name: string;
7648
+ /** Every reason the ranking gave for the chosen member, in the ranking's order. */
7649
+ readonly reasons: readonly string[];
7650
+ /** The member a resumed conversation left, and why the ranking could not keep it. */
7651
+ readonly movedOff?: {
7652
+ readonly identity: string;
7653
+ readonly reason: string;
7654
+ };
7655
+ }
7656
+ /**
7657
+ * What a launch resolved to, and where each decision came from. Everything here is a name or a path, never a credential.
7658
+ */
7659
+ interface LaunchDecision {
7660
+ /** The identity the launch runs as. Absent when the escape hatch applied or nothing resolved one. */
7661
+ readonly identity?: string;
7662
+ /** Which precedence rule selected the identity (or the pool the identity was picked from). */
7663
+ readonly identitySource: IdentityDecisionSource;
7664
+ /** The pool pick behind `identity`, when the launch selected a pool. */
7665
+ readonly pool?: LaunchPoolDecision;
7666
+ /** True when `CLAUDE_CONFIG_DIR` was already set, so no identity was resolved and no farm was managed. */
7667
+ readonly configDirEscapeHatch: boolean;
7668
+ /** The configuration directory the child runs with: the identity's own, or the one the caller named. Absent when none is set. */
7669
+ readonly configDir?: string;
7670
+ /** The configuration profile that applied, when one did. */
7671
+ readonly configProfile?: string;
7672
+ /** Which precedence rule selected the configuration profile. */
7673
+ readonly configProfileSource: ConfigProfileDecisionSource;
7674
+ /** The provider the launch routes through, when it selected one. */
7675
+ readonly provider?: string;
7676
+ }
7637
7677
  /**
7638
7678
  * What one launch resolved to, once every effect its child depends on is in place (the identity's farm resynced, the front door and headroom up and this launch registered with them): the real binary, its arguments and its environment.
7639
7679
  */
@@ -7643,6 +7683,8 @@ interface LaunchPlan {
7643
7683
  readonly env: Readonly<Record<string, string | undefined>>;
7644
7684
  /** Releases the daemon session registrations this launch holds. Call it when the child has exited; it is safe to call more than once. */
7645
7685
  readonly release: () => void;
7686
+ /** What the launch resolved to, as data: the facts the launcher's decision line reports. */
7687
+ readonly decision: LaunchDecision;
7646
7688
  /** Marks the moment this plan's child is spawned: the launch-time update check suppresses its notify line from then on, since a line printed after the child took over the terminal would land mid-session. Call it immediately before spawning; it is safe to call more than once. */
7647
7689
  readonly markChildStarted: () => void;
7648
7690
  }
@@ -7717,5 +7759,5 @@ declare const OWN_CLI_FILE_NAME = "cli.cjs";
7717
7759
  */
7718
7760
  declare function agentShimCliPath(distDir?: string | undefined): string;
7719
7761
 
7720
- export { AMBIENT_CREDENTIAL_VARS, CHECK_CREDENTIAL_APPLIES, CONNECT_INTERCEPT_HOST, CONNECT_INTERCEPT_HOSTS, CONNECT_LIMITS, CONTROL_PATH_PREFIX, CategoryClassificationOverlaySchema, CategoryClassificationSchema, CategoryMapSchema, CheckReportJsonSchema, CheckRunInputSchema, CliError, ConfigProfileSchema, CredentialCacheSchema, CredentialSchema, CredentialSourceSchema, DOOR_EVENT_BUFFER_EVENTS, DOOR_EVENT_SOURCE_RC, DOOR_HEALTH_EVENT_SOURCE, DirectoryRuleAlreadyExistsError, DirectoryRuleMissingTargetError, DirectoryRuleNotFoundError, DirectoryRuleSchema, DirectoryRulesSchema, DoctorFindingSchema, DoctorRunOutputSchema, DoorEventSchema, DoorEventSourceQuerySchema, DoorHealthEventSchema, EXIT_FAILURE, EXIT_USAGE, EffectiveWindowSchema, EntryValueSchema, FARM_MANIFEST_FILENAME, FrontDoorSessionStatusSchema, FrontDoorSessionsOutputSchema, FrontDoorStartError, FrontDoorStateSchema, FrontDoorStatusOutputSchema, GlobalConfigSchema, HeadroomSocketTargetSchema, HeadroomStartError, IdentityAlreadyExistsError, IdentityNotFoundError, IdentitySchema, InvalidCategoryNameError, InvalidIdentityNameError, InvalidProviderNameError, LAUNCH_EVENT_SOURCE, LaunchLifecycleEventSchema, LaunchRefusedError, LegacyProviderFileError, OWN_CLI_FILE_NAME, PROMPT_CACHE_TTL_MS, PlanClassSchema, PoolNameSchema, PoolNotFoundError, PoolPickReportSchema, PoolSchema, PortableConfigSchema, ProfileAlreadyExistsError, ProfileNotFoundError, ProviderAlreadyExistsError, ProviderKindMismatchError, ProviderNotFoundError, ProviderSchema, QUOTA_EXPIRING_EVENT_SOURCE, QuotaExpiringEventSchema, RC_CONTEXT_USAGE_DETAILS, RC_IDLE_EXPIRY_MS, RC_ORPC_PATH_PREFIX, RC_PENDING_DEADLINE_MS, RC_PERMISSION_MODES, RC_READ_FILE_ENCODINGS, RC_REQUEST_PARSE_CAP_BYTES, RC_SELF_HOST_ENV, RC_SELF_HOST_KEEPALIVE_MS, RC_SELF_HOST_RECORD_DIR, RC_SELF_HOST_RECORD_FILE, RC_SELF_HOST_RETENTION_MS, RC_SELF_HOST_SCOPE_LIST, RC_SELF_HOST_WORKER_JWT_TTL_SECONDS, RC_SESSIONS_PATH_PREFIX, RC_STREAM_BACKOFF_MS, RC_WEB_FETCH_ALLOW_PRIVATE_ENV, RC_WEB_FETCH_DEADLINE_MS, RC_WEB_FETCH_MAX_BYTES, RC_WEB_FETCH_MAX_REDIRECTS, ROUTED_PATH_PREFIX, RcLiveRateLimitSchema, RcPermissionModeSchema, RcRateLimitInfoSchema, RcRateLimitWindowSchema, RcStreamEnvelopeSchema, RcStreamEventSchema, USAGE_EVENT_SOURCE, UsageError, UsageListOutputSchema, UsageLiveOutputSchema, UsageSnapshotError, UsageSnapshotSchema, UsageWindowsInputSchema, UsageWindowsOutputSchema, WhenSchema, addDirectoryRule, addIdentity, addPool, addProvider, agentShimCliPath, answerRcControlRequest, authenticateRcSessionMcpServer, buildEntryFacts, buildLayoutPaths, buildRcControlRequestPayload, buildRcControlResponsePayload, buildRcEndSessionPayload, buildRcEventWriteBody, buildRcFileSuggestionsPayload, buildRcGetContextUsagePayload, buildRcGetUsagePayload, buildRcInterruptPayload, buildRcKeepAlivePayload, buildRcMarkReadBody, buildRcMcpAuthenticatePayload, buildRcMcpOAuthCallbackUrlPayload, buildRcMcpReconnectPayload, buildRcMcpStatusPayload, buildRcReadFilePayload, buildRcSetModelPayload, buildRcSetPermissionModePayload, buildRcUserMessagePayload, carryOver, checkReportHasWarnings, checkReportToJson, collectCheckReport, collectDoctorReport, collectFrontDoorStatus, collectPoolPick, createControlApiRouter, createDoorApiNodeHandler, createDoorApiRouter, createDoorEventHub, createDoorHealthPublisher, createEventsApiRouter, createLaunchEventPublisher, createLeafCache, createProfile, createQuotaExpiringPublisher, createRcApiNodeHandler, createRcApiRouter, createRcControlHandler, createRcCredentialStore, createRcEventFanout, createRcLiveUsage, createRcSelfHostSurface, createRcSessionTracker, createRcStreamHub, createSseParser, describeProviderEndpoint, detectAmbientCredential, doorApiAuth, doorApiNodeHandlerOf, effectiveWindow, endRcSession, ensureCa, ensureFrontDoor, ensureHeadroom, evaluateAmbientCredentialGuard, evaluateWhen, fetchThroughWebProxy, formatAmbientCredentialGuardMessage, formatCheckReport, formatDoctorReport, formatFrontDoorStatus, forwardableHeaders, frontDoorApiClient, frontDoorApiLink, frontDoorRcApiClient, frontDoorRcControl, generateCa, getRcSessionContextUsage, getRcSessionMcpStatus, getRcSessionUsage, headroomSocketTarget, identityExists, injectRcUserMessage, interruptRcSession, isIdentityDirectoryName, isInterceptedHost, isPrivateAddress, isRcContextUsageDetail, isRcPermissionMode, isRcReadFileEncoding, lateRcEventDial, lateRcStreamDial, listDirectoryRules, listIdentities, listProfiles, listProviders, listUsageSnapshots, matchBranch, mintLeaf, mintRcSelfHostCredential, observingRoutedRoute, parseConnectTarget, parseRcStreamEnvelope, planOf, prepareClaudeLaunch, prepareLaunch, profileExists, providerExists, rankPool, rcEventWriteResultFromAnswer, rcFanoutOnDoorHub, rcObserverAsPassthrough, rcRateLimitInfoOf, rcSelfHostFromEnv, rcWebFetchAllowsPrivateFromEnv, readActiveIdentity, readDirectoryRules, readFarmManifest, readGlobalConfig, readIdentity, readPools, readProfile, readProvider, readRcSelfHostRecord, readRcSessionFile, readUsageSnapshot, realConnectCertStore, realConnectEffects, realRcControlTransport, realRcEventDial, realRcStreamDial, realRcWebFetch, reconnectRcSessionMcpServer, recoverFarm, recoveryDiagnostics, removeDirectoryRule, removeIdentity, removePool, removeProfile, removeProvider, requirePool, resolveAgentShimHome, resolveClaudeHome, resolveDecisions, resolveLayoutPaths, resolveSupervisorConfig, resyncFarm, runCheck, runDoctor, runFrontDoorSupervisor, runLauncher, runSupervisor, sendRcKeepAlive, servedByPipeline, setAllowAmbientCredential, setDefaultConfigProfile, setGlobalDefaultProfile, setIdentityCredential, setPool, setProfileCategories, setProfileEntries, setProfileLaunchFlags, setProfileMetadata, setRcSessionModel, setRcSessionPermissionMode, snapshotPath, spawnClaude, startConnectServer, submitRcSessionMcpOAuthCallbackUrl, suggestRcSessionFiles, teleportRcSession, topLevelNames, updateDirectoryRule, updateProvider, useIdentity, writeDirectoryRules };
7721
- export type { AddDirectoryRuleOptions, AddProviderInput, AmbientCredentialDetection, AmbientCredentialGuardResult, AmbientCredentialVar, BuildEntryFactsParams, CaMaterial, Candidate, CarryOverParams, CarryOverResult, CategoryMap, CheckReport, CheckReportJson, CollectCheckReportParams, CollectDoctorReportParams, CompiledRule, ConditionContext, ConfigProfile, ConnectCertStore, ConnectEffects, ConnectLimits, ConnectLocalSurface, ConnectServerConfig, ConnectServerHandle, ConnectTarget, ControlApiClient, ControlApiDeps, ControlApiRouter, Credential, CredentialSource, Decision, Diagnostic, DirectoryRule, DirectoryRules, DoctorReport, DoorApiClient, DoorApiContext, DoorApiDeps, DoorApiRouter, DoorEvent, DoorEventHub, DoorEventPublisher, DoorEventStream, DoorEventsApiDeps, DoorHealthEvent, DoorHealthPublisher, EffectiveWindow, EliminatedRule, EnsureFrontDoorPorts, EnsureHeadroomPorts, EntryFact, EntryFacts, EntryValue, EvaluateAmbientCredentialGuardParams, FlattenedCascade, FrontDoorRcControl, FrontDoorSessionStatus, FrontDoorStatus, FrontDoorSupervisorPorts, GlobalConfig, HeadroomSupervisorConfig, Identity, IdentityCredentialChange, IdentityListEntry, IdentityListing, InjectedCredential, LaunchEventPublisher, LaunchLifecycleEvent, LaunchPlan, Layer, LayerId, LayoutPaths, LeafCert, NestedContribution, PlanClass, Pool, PoolMember, PoolPickReport, PoolRanking, PortableConfig, PrepareClaudeLaunchOptions, PrepareLaunchParams, ProfileListEntry, Provider, ProviderListEntry, QuotaExpiringEvent, QuotaExpiringPublisher, RankPoolInput, RcAnswerDecision, RcAnswerDeps, RcApiClient, RcApiDeps, RcApiRouter, RcContextUsageDetail, RcControlAnswer, RcControlHandlerDeps, RcControlRequestDeps, RcControlTransport, RcCredentialStore, RcDialAnswer, RcDialTarget, RcEventDial, RcEventFanout, RcEventWriteResult, RcExchangeObserver, RcInjectDeps, RcLiveRateLimit, RcLiveUsage, RcLiveUsageDeps, RcObservedCredential, RcObservedRequest, RcPendingRequestSummary, RcPermissionMode, RcPresenceAnswer, RcRateLimitInfo, RcRateLimitWindow, RcReadFileEncoding, RcReadFileOptions, RcSelfHostCredentialRecord, RcSelfHostDeps, RcSelfHostMintResult, RcSelfHostSurface, RcSessionStatus, RcSessionSummary, RcSessionTracker, RcSessionTrackerDeps, RcStreamAnswer, RcStreamDial, RcStreamEnvelope, RcStreamEvent, RcStreamHub, RcStreamHubDeps, RcWebFetchDeps, RcWebFetchHop, RcWebFetchOutcome, RcWebFetcher, RcWorkerFact, RcWriteHeaders, RecoverFarmParams, RecoveryResult, ResolveDecisionsInput, ResolvedState, ResyncFarmParams, ResyncFarmResult, RunCheckParams, RunDoctorParams, RunFrontDoorSupervisorOptions, RunLauncherParams, RunSupervisorOptions, SpawnClaudeParams, SseParsedEvent, StickyPick, SupervisorPorts, UnreadableIdentityListEntry, UpdateDirectoryRuleOptions, UpdateProviderInput, UsageChangeEvent, UsageReadFs, UsageSnapshot, WhenCondition, WhenEvaluation };
7762
+ export { AMBIENT_CREDENTIAL_VARS, CHECK_CREDENTIAL_APPLIES, CONNECT_INTERCEPT_HOST, CONNECT_INTERCEPT_HOSTS, CONNECT_LIMITS, CONTROL_PATH_PREFIX, CategoryClassificationOverlaySchema, CategoryClassificationSchema, CategoryMapSchema, CheckReportJsonSchema, CheckRunInputSchema, CliError, ConfigProfileSchema, CredentialCacheSchema, CredentialSchema, CredentialSourceSchema, DOOR_EVENT_BUFFER_EVENTS, DOOR_EVENT_SOURCE_RC, DOOR_HEALTH_EVENT_SOURCE, DirectoryRuleAlreadyExistsError, DirectoryRuleMissingTargetError, DirectoryRuleNotFoundError, DirectoryRuleSchema, DirectoryRulesSchema, DoctorFindingSchema, DoctorRunOutputSchema, DoorEventSchema, DoorEventSourceQuerySchema, DoorHealthEventSchema, EXIT_FAILURE, EXIT_USAGE, EffectiveWindowSchema, EntryValueSchema, FARM_MANIFEST_FILENAME, FrontDoorSessionStatusSchema, FrontDoorSessionsOutputSchema, FrontDoorStartError, FrontDoorStateSchema, FrontDoorStatusOutputSchema, GlobalConfigSchema, HeadroomSocketTargetSchema, HeadroomStartError, IdentityAlreadyExistsError, IdentityNotFoundError, IdentitySchema, InvalidCategoryNameError, InvalidIdentityNameError, InvalidProviderNameError, LAUNCH_EVENT_SOURCE, LaunchLifecycleEventSchema, LaunchRefusedError, LegacyProviderFileError, OWN_CLI_FILE_NAME, PROMPT_CACHE_TTL_MS, PlanClassSchema, PoolNameSchema, PoolNotFoundError, PoolPickReportSchema, PoolSchema, PortableConfigSchema, ProfileAlreadyExistsError, ProfileNotFoundError, ProviderAlreadyExistsError, ProviderKindMismatchError, ProviderNotFoundError, ProviderSchema, QUOTA_EXPIRING_EVENT_SOURCE, QuotaExpiringEventSchema, RC_CONTEXT_USAGE_DETAILS, RC_IDLE_EXPIRY_MS, RC_ORPC_PATH_PREFIX, RC_PENDING_DEADLINE_MS, RC_PERMISSION_MODES, RC_READ_FILE_ENCODINGS, RC_REQUEST_PARSE_CAP_BYTES, RC_SELF_HOST_ENV, RC_SELF_HOST_KEEPALIVE_MS, RC_SELF_HOST_RECORD_DIR, RC_SELF_HOST_RECORD_FILE, RC_SELF_HOST_RETENTION_MS, RC_SELF_HOST_SCOPE_LIST, RC_SELF_HOST_WORKER_JWT_TTL_SECONDS, RC_SESSIONS_PATH_PREFIX, RC_STREAM_BACKOFF_MS, RC_WEB_FETCH_ALLOW_PRIVATE_ENV, RC_WEB_FETCH_DEADLINE_MS, RC_WEB_FETCH_MAX_BYTES, RC_WEB_FETCH_MAX_REDIRECTS, ROUTED_PATH_PREFIX, RcLiveRateLimitSchema, RcPermissionModeSchema, RcRateLimitInfoSchema, RcRateLimitWindowSchema, RcStreamEnvelopeSchema, RcStreamEventSchema, USAGE_EVENT_SOURCE, UsageError, UsageListOutputSchema, UsageLiveOutputSchema, UsageSnapshotError, UsageSnapshotSchema, UsageWindowsInputSchema, UsageWindowsOutputSchema, WhenSchema, addDirectoryRule, addIdentity, addPool, addProvider, agentShimCliPath, answerRcControlRequest, authenticateRcSessionMcpServer, buildEntryFacts, buildLayoutPaths, buildRcControlRequestPayload, buildRcControlResponsePayload, buildRcEndSessionPayload, buildRcEventWriteBody, buildRcFileSuggestionsPayload, buildRcGetContextUsagePayload, buildRcGetUsagePayload, buildRcInterruptPayload, buildRcKeepAlivePayload, buildRcMarkReadBody, buildRcMcpAuthenticatePayload, buildRcMcpOAuthCallbackUrlPayload, buildRcMcpReconnectPayload, buildRcMcpStatusPayload, buildRcReadFilePayload, buildRcSetModelPayload, buildRcSetPermissionModePayload, buildRcUserMessagePayload, carryOver, checkReportHasWarnings, checkReportToJson, collectCheckReport, collectDoctorReport, collectFrontDoorStatus, collectPoolPick, createControlApiRouter, createDoorApiNodeHandler, createDoorApiRouter, createDoorEventHub, createDoorHealthPublisher, createEventsApiRouter, createLaunchEventPublisher, createLeafCache, createProfile, createQuotaExpiringPublisher, createRcApiNodeHandler, createRcApiRouter, createRcControlHandler, createRcCredentialStore, createRcEventFanout, createRcLiveUsage, createRcSelfHostSurface, createRcSessionTracker, createRcStreamHub, createSseParser, describeProviderEndpoint, detectAmbientCredential, doorApiAuth, doorApiNodeHandlerOf, effectiveWindow, endRcSession, ensureCa, ensureFrontDoor, ensureHeadroom, evaluateAmbientCredentialGuard, evaluateWhen, fetchThroughWebProxy, formatAmbientCredentialGuardMessage, formatCheckReport, formatDoctorReport, formatFrontDoorStatus, forwardableHeaders, frontDoorApiClient, frontDoorApiLink, frontDoorRcApiClient, frontDoorRcControl, generateCa, getRcSessionContextUsage, getRcSessionMcpStatus, getRcSessionUsage, headroomSocketTarget, identityExists, injectRcUserMessage, interruptRcSession, isIdentityDirectoryName, isInterceptedHost, isPrivateAddress, isRcContextUsageDetail, isRcPermissionMode, isRcReadFileEncoding, lateRcEventDial, lateRcStreamDial, listDirectoryRules, listIdentities, listProfiles, listProviders, listUsageSnapshots, matchBranch, mintLeaf, mintRcSelfHostCredential, observingRoutedRoute, parseConnectTarget, parseRcStreamEnvelope, planOf, poolIdentities, prepareClaudeLaunch, prepareLaunch, profileExists, providerExists, rankPool, rcEventWriteResultFromAnswer, rcFanoutOnDoorHub, rcObserverAsPassthrough, rcRateLimitInfoOf, rcSelfHostFromEnv, rcWebFetchAllowsPrivateFromEnv, readActiveIdentity, readDirectoryRules, readFarmManifest, readGlobalConfig, readIdentity, readPools, readProfile, readProvider, readRcSelfHostRecord, readRcSessionFile, readUsageSnapshot, realConnectCertStore, realConnectEffects, realRcControlTransport, realRcEventDial, realRcStreamDial, realRcWebFetch, reconnectRcSessionMcpServer, recoverFarm, recoveryDiagnostics, removeDirectoryRule, removeIdentity, removePool, removeProfile, removeProvider, requirePool, resolveAgentShimHome, resolveClaudeHome, resolveDecisions, resolveLayoutPaths, resolveSupervisorConfig, resyncFarm, runCheck, runDoctor, runFrontDoorSupervisor, runLauncher, runSupervisor, sendRcKeepAlive, servedByPipeline, setAllowAmbientCredential, setDefaultConfigProfile, setGlobalDefaultProfile, setIdentityCredential, setPool, setProfileCategories, setProfileEntries, setProfileLaunchFlags, setProfileMetadata, setRcSessionModel, setRcSessionPermissionMode, snapshotPath, spawnClaude, startConnectServer, submitRcSessionMcpOAuthCallbackUrl, suggestRcSessionFiles, teleportRcSession, topLevelNames, updateDirectoryRule, updateProvider, useIdentity, writeDirectoryRules };
7763
+ export type { AddDirectoryRuleOptions, AddProviderInput, AmbientCredentialDetection, AmbientCredentialGuardResult, AmbientCredentialVar, BuildEntryFactsParams, CaMaterial, Candidate, CarryOverParams, CarryOverResult, CategoryMap, CheckReport, CheckReportJson, CollectCheckReportParams, CollectDoctorReportParams, CompiledRule, ConditionContext, ConfigProfile, ConnectCertStore, ConnectEffects, ConnectLimits, ConnectLocalSurface, ConnectServerConfig, ConnectServerHandle, ConnectTarget, ControlApiClient, ControlApiDeps, ControlApiRouter, Credential, CredentialSource, Decision, Diagnostic, DirectoryRule, DirectoryRules, DoctorReport, DoorApiClient, DoorApiContext, DoorApiDeps, DoorApiRouter, DoorEvent, DoorEventHub, DoorEventPublisher, DoorEventStream, DoorEventsApiDeps, DoorHealthEvent, DoorHealthPublisher, EffectiveWindow, EliminatedRule, EnsureFrontDoorPorts, EnsureHeadroomPorts, EntryFact, EntryFacts, EntryValue, EvaluateAmbientCredentialGuardParams, FlattenedCascade, FrontDoorRcControl, FrontDoorSessionStatus, FrontDoorStatus, FrontDoorSupervisorPorts, GlobalConfig, HeadroomSupervisorConfig, Identity, IdentityCredentialChange, IdentityListEntry, IdentityListing, InjectedCredential, LaunchDecision, LaunchEventPublisher, LaunchLifecycleEvent, LaunchPlan, LaunchPoolDecision, Layer, LayerId, LayoutPaths, LeafCert, NestedContribution, PlanClass, Pool, PoolMember, PoolPickReport, PoolRanking, PortableConfig, PrepareClaudeLaunchOptions, PrepareLaunchParams, ProfileListEntry, Provider, ProviderListEntry, QuotaExpiringEvent, QuotaExpiringPublisher, RankPoolInput, RcAnswerDecision, RcAnswerDeps, RcApiClient, RcApiDeps, RcApiRouter, RcContextUsageDetail, RcControlAnswer, RcControlHandlerDeps, RcControlRequestDeps, RcControlTransport, RcCredentialStore, RcDialAnswer, RcDialTarget, RcEventDial, RcEventFanout, RcEventWriteResult, RcExchangeObserver, RcInjectDeps, RcLiveRateLimit, RcLiveUsage, RcLiveUsageDeps, RcObservedCredential, RcObservedRequest, RcPendingRequestSummary, RcPermissionMode, RcPresenceAnswer, RcRateLimitInfo, RcRateLimitWindow, RcReadFileEncoding, RcReadFileOptions, RcSelfHostCredentialRecord, RcSelfHostDeps, RcSelfHostMintResult, RcSelfHostSurface, RcSessionStatus, RcSessionSummary, RcSessionTracker, RcSessionTrackerDeps, RcStreamAnswer, RcStreamDial, RcStreamEnvelope, RcStreamEvent, RcStreamHub, RcStreamHubDeps, RcWebFetchDeps, RcWebFetchHop, RcWebFetchOutcome, RcWebFetcher, RcWorkerFact, RcWriteHeaders, RecoverFarmParams, RecoveryResult, ResolveDecisionsInput, ResolvedState, ResyncFarmParams, ResyncFarmResult, RunCheckParams, RunDoctorParams, RunFrontDoorSupervisorOptions, RunLauncherParams, RunSupervisorOptions, SpawnClaudeParams, SseParsedEvent, StickyPick, SupervisorPorts, UnreadableIdentityListEntry, UpdateDirectoryRuleOptions, UpdateProviderInput, UsageChangeEvent, UsageReadFs, UsageSnapshot, WhenCondition, WhenEvaluation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-shim",
3
- "version": "8.39.0",
3
+ "version": "8.40.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>",