agent-shim 11.8.1 → 11.8.2

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
@@ -34007,7 +34007,7 @@ var init_package = __esm({
34007
34007
  "package.json"() {
34008
34008
  package_default = {
34009
34009
  name: "agent-shim",
34010
- version: "11.8.1",
34010
+ version: "11.8.2",
34011
34011
  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.",
34012
34012
  license: "MIT",
34013
34013
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -114184,6 +114184,13 @@ function watchedInstallEntry(resolvedOwnExecutablePath, siblingExists) {
114184
114184
  const sibling = import_node_path44.default.join(parsed.dir, `agent-shim${parsed.ext}`);
114185
114185
  return siblingExists(sibling) ? sibling : resolvedOwnExecutablePath;
114186
114186
  }
114187
+ var AWAIT_PID_POLL_MS = 50;
114188
+ async function awaitPidExit(pid, boundMs, ports) {
114189
+ const deadline = ports.now() + boundMs;
114190
+ while (ports.isRunning(pid) && ports.now() < deadline) {
114191
+ await ports.sleep(AWAIT_PID_POLL_MS);
114192
+ }
114193
+ }
114187
114194
  var FRONTDOOR_SUPERVISOR_STILL_RUNNING = -1;
114188
114195
  var FRONTDOOR_POLL_MS = 1e3;
114189
114196
  var MS_PER_MINUTE3 = 6e4;
@@ -131081,15 +131088,20 @@ function createRcStreamHub(deps) {
131081
131088
 
131082
131089
  // src/frontdoor/watchdog.ts
131083
131090
  var import_node_worker_threads2 = require("node:worker_threads");
131091
+ init_schema();
131084
131092
  init_ensure2();
131085
131093
  init_probe();
131086
131094
  var DOOR_STALL_BOUND_MS = 2 * FRONTDOOR_PROBE_ATTEMPTS * PROBE_TIMEOUT_MS;
131095
+ var MS_PER_MINUTE4 = 6e4;
131096
+ var DOOR_RESPAWN_MIN_SERVING_MS = FRONTDOOR_DEFAULT_IDLE_SHUTDOWN_MINUTES * MS_PER_MINUTE4;
131097
+ var DOOR_AWAIT_PID_ENV = "AGENT_SHIM_FRONTDOOR_AWAIT_PID";
131087
131098
  var CHECKS_PER_PROBE_DEADLINE = 2;
131088
131099
  var DOOR_WATCHDOG_CHECK_MS = PROBE_TIMEOUT_MS / CHECKS_PER_PROBE_DEADLINE;
131089
131100
  var WATCHDOG_SOURCE = `
131090
131101
  const { workerData, parentPort } = require("node:worker_threads");
131091
131102
  const fs = require("node:fs");
131092
- const { shared, boundMs, checkEveryMs, stateFile, ownPid, action } = workerData;
131103
+ const { shared, boundMs, checkEveryMs, stateFile, ownPid, action, logFile, respawn, respawnAfterServingMs, awaitPidEnv } = workerData;
131104
+ const startedAt = Date.now();
131093
131105
  const counter = new Int32Array(shared);
131094
131106
  let lastValue = Atomics.load(counter, 0);
131095
131107
  let lastChangeAt = Date.now();
@@ -131106,6 +131118,31 @@ const record = (message) => {
131106
131118
  // The state file is a courtesy to whoever looks next; the process still has to end.
131107
131119
  }
131108
131120
  };
131121
+ const log = (line) => {
131122
+ if (logFile === undefined) return;
131123
+ try {
131124
+ fs.appendFileSync(logFile, new Date().toISOString() + " frontdoor " + String(ownPid) + ": " + line + "\\n");
131125
+ } catch (error) {
131126
+ // Nowhere left to report a failed log write to; the process still has to end.
131127
+ }
131128
+ };
131129
+ const spawnReplacement = () => {
131130
+ if (respawn === undefined || logFile === undefined) return;
131131
+ const servedMs = Date.now() - startedAt;
131132
+ if (servedMs < respawnAfterServingMs) {
131133
+ log("the door served for " + String(servedMs) + "ms before stalling, less than the " + String(respawnAfterServingMs) + "ms it must have served to be replaced; leaving the next launch to start one");
131134
+ return;
131135
+ }
131136
+ try {
131137
+ const out = fs.openSync(logFile, "a");
131138
+ const child = require("node:child_process").spawn(respawn.command, respawn.args, { detached: true, stdio: ["ignore", out, out], env: Object.assign({}, respawn.env, { [awaitPidEnv]: String(ownPid) }) });
131139
+ child.unref();
131140
+ fs.closeSync(out);
131141
+ log("started replacement door " + String(child.pid) + ", which binds once this process is gone");
131142
+ } catch (error) {
131143
+ log("could not start a replacement door: " + (error instanceof Error ? error.message : String(error)));
131144
+ }
131145
+ };
131109
131146
  const timer = setInterval(() => {
131110
131147
  if (stopped) return;
131111
131148
  const now = Date.now();
@@ -131120,6 +131157,8 @@ const timer = setInterval(() => {
131120
131157
  if (now - lastChangeAt >= boundMs) {
131121
131158
  const message = "the front door's event loop did not run for " + String(now - lastChangeAt) + "ms; its watchdog ended the process so the next launch starts a fresh door on the same ports";
131122
131159
  record(message);
131160
+ log(message);
131161
+ spawnReplacement();
131123
131162
  stopped = true;
131124
131163
  clearInterval(timer);
131125
131164
  if (action === "kill-process") {
@@ -131142,7 +131181,7 @@ function startThreadWatchdog(params) {
131142
131181
  const counter = new Int32Array(shared);
131143
131182
  const worker = new import_node_worker_threads2.Worker(WATCHDOG_SOURCE, {
131144
131183
  eval: true,
131145
- workerData: { shared, boundMs: params.boundMs, checkEveryMs: params.checkEveryMs, stateFile: params.stateFile, ownPid: params.ownPid, action: params.action }
131184
+ workerData: { shared, boundMs: params.boundMs, checkEveryMs: params.checkEveryMs, stateFile: params.stateFile, ownPid: params.ownPid, action: params.action, logFile: params.logFile, respawn: params.respawn, respawnAfterServingMs: params.respawnAfterServingMs, awaitPidEnv: DOOR_AWAIT_PID_ENV }
131146
131185
  });
131147
131186
  worker.unref();
131148
131187
  worker.on("message", (message) => {
@@ -131270,6 +131309,13 @@ function createRealQuotaRefresher(params) {
131270
131309
 
131271
131310
  // src/frontdoor/commands.ts
131272
131311
  init_store2();
131312
+ function respawnInvocation(paths) {
131313
+ const env = {};
131314
+ for (const [name, value2] of Object.entries({ ...process.env, AGENT_SHIM_HOME: paths.root })) {
131315
+ env[name] = value2;
131316
+ }
131317
+ return { ...selfInvocation(["__frontdoor-supervisor"]), env };
131318
+ }
131273
131319
  function appendLog(paths, line) {
131274
131320
  import_node_fs19.default.mkdirSync(paths.logsDir, { recursive: true });
131275
131321
  import_node_fs19.default.appendFileSync(paths.frontdoorLogPath, `${(/* @__PURE__ */ new Date()).toISOString()} ${line}
@@ -131663,7 +131709,16 @@ function realFrontDoorSupervisorPorts(paths) {
131663
131709
  return { port: handle.port, close: handle.close };
131664
131710
  },
131665
131711
  closeRcStreamHub: rcHub.close,
131666
- startWatchdog: () => startThreadWatchdog({ stateFile: paths.frontdoorStateFile, ownPid: process.pid, boundMs: DOOR_STALL_BOUND_MS, checkEveryMs: DOOR_WATCHDOG_CHECK_MS, action: "kill-process" }),
131712
+ startWatchdog: () => startThreadWatchdog({
131713
+ stateFile: paths.frontdoorStateFile,
131714
+ ownPid: process.pid,
131715
+ boundMs: DOOR_STALL_BOUND_MS,
131716
+ checkEveryMs: DOOR_WATCHDOG_CHECK_MS,
131717
+ action: "kill-process",
131718
+ logFile: paths.frontdoorLogPath,
131719
+ respawn: respawnInvocation(paths),
131720
+ respawnAfterServingMs: DOOR_RESPAWN_MIN_SERVING_MS
131721
+ }),
131667
131722
  // The launch lifecycle publisher over the same backbone the typed API serves: the tick's registry facts go in here, and the door's own register, prune and end moments come out as source-tagged events.
131668
131723
  observeLaunchRegistry: createLaunchEventPublisher(doorEvents, () => Date.now()).observe,
131669
131724
  doorHealth,
@@ -131708,14 +131763,24 @@ function registerFrontDoorCommand(program2, deps) {
131708
131763
  registerRcCommand(frontdoor, paths);
131709
131764
  program2.command("__frontdoor-supervisor", { hidden: true }).description("Internal: serve the front-door routing listeners. Started by the launcher; never run by hand.").allowUnknownOption().action(async () => {
131710
131765
  const idleShutdownMinutes = readGlobalConfig(paths)?.frontdoor?.idleShutdownMinutes ?? FRONTDOOR_DEFAULT_IDLE_SHUTDOWN_MINUTES;
131711
- process.on("SIGTERM", () => {
131712
- deps.exit(0);
131713
- });
131714
- process.on("SIGINT", () => {
131715
- deps.exit(0);
131716
- });
131766
+ const supervisorPorts = realFrontDoorSupervisorPorts(paths);
131767
+ const ownPid = process.pid;
131768
+ process.on("exit", (code) => {
131769
+ supervisorPorts.log(`frontdoor ${String(ownPid)}: exiting with code ${String(code)}`);
131770
+ });
131771
+ for (const signal of ["SIGTERM", "SIGINT"]) {
131772
+ process.on(signal, () => {
131773
+ supervisorPorts.log(`frontdoor ${String(ownPid)}: received ${signal}; exiting`);
131774
+ deps.exit(0);
131775
+ });
131776
+ }
131777
+ const awaited = Number(process.env[DOOR_AWAIT_PID_ENV]);
131778
+ Reflect.deleteProperty(process.env, DOOR_AWAIT_PID_ENV);
131779
+ if (Number.isInteger(awaited) && awaited > 0) {
131780
+ await awaitPidExit(awaited, DOOR_STALL_BOUND_MS, supervisorPorts);
131781
+ }
131717
131782
  declareThisProcessTheFrontDoor();
131718
- deps.exit(await runFrontDoorSupervisor(idleShutdownMinutes, realFrontDoorSupervisorPorts(paths)));
131783
+ deps.exit(await runFrontDoorSupervisor(idleShutdownMinutes, supervisorPorts));
131719
131784
  });
131720
131785
  }
131721
131786
 
package/dist/index.cjs CHANGED
@@ -2787,7 +2787,7 @@ var init_package = __esm({
2787
2787
  "package.json"() {
2788
2788
  package_default = {
2789
2789
  name: "agent-shim",
2790
- version: "11.8.1",
2790
+ version: "11.8.2",
2791
2791
  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.",
2792
2792
  license: "MIT",
2793
2793
  author: "Joseph Mearman <joseph@mearman.co.uk>",
package/dist/index.mjs CHANGED
@@ -2763,7 +2763,7 @@ var init_package = __esm({
2763
2763
  "package.json"() {
2764
2764
  package_default = {
2765
2765
  name: "agent-shim",
2766
- version: "11.8.1",
2766
+ version: "11.8.2",
2767
2767
  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.",
2768
2768
  license: "MIT",
2769
2769
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -1332,8 +1332,8 @@ declare const HeadroomGlobalConfigSchema: z.ZodObject<{
1332
1332
  targetRatio: z.ZodOptional<z.ZodNumber>;
1333
1333
  ccr: z.ZodOptional<z.ZodEnum<{
1334
1334
  default: "default";
1335
- lossless: "lossless";
1336
1335
  none: "none";
1336
+ lossless: "lossless";
1337
1337
  }>>;
1338
1338
  rolloutChannel: z.ZodOptional<z.ZodEnum<{
1339
1339
  beta: "beta";
@@ -1460,8 +1460,8 @@ declare const GlobalConfigSchema: z.ZodObject<{
1460
1460
  targetRatio: z.ZodOptional<z.ZodNumber>;
1461
1461
  ccr: z.ZodOptional<z.ZodEnum<{
1462
1462
  default: "default";
1463
- lossless: "lossless";
1464
1463
  none: "none";
1464
+ lossless: "lossless";
1465
1465
  }>>;
1466
1466
  rolloutChannel: z.ZodOptional<z.ZodEnum<{
1467
1467
  beta: "beta";
@@ -4163,12 +4163,12 @@ declare const CheckReportJsonSchema: z.ZodObject<{
4163
4163
  identity: z.ZodObject<{
4164
4164
  name: z.ZodNullable<z.ZodString>;
4165
4165
  source: z.ZodEnum<{
4166
- env: "env";
4167
- none: "none";
4168
4166
  "config-dir-escape-hatch": "config-dir-escape-hatch";
4169
4167
  argv: "argv";
4168
+ env: "env";
4170
4169
  "directory-pin": "directory-pin";
4171
4170
  "active-identity-file": "active-identity-file";
4171
+ none: "none";
4172
4172
  }>;
4173
4173
  }, z.core.$strict>;
4174
4174
  pool: z.ZodOptional<z.ZodObject<{
@@ -4246,11 +4246,11 @@ declare const CheckReportJsonSchema: z.ZodObject<{
4246
4246
  "category-default": "category-default";
4247
4247
  }>;
4248
4248
  category: z.ZodNullable<z.ZodEnum<{
4249
+ secret: "secret";
4249
4250
  runtime: "runtime";
4250
4251
  history: "history";
4251
4252
  knowledge: "knowledge";
4252
4253
  settings: "settings";
4253
- secret: "secret";
4254
4254
  }>>;
4255
4255
  rule: z.ZodOptional<z.ZodObject<{
4256
4256
  key: z.ZodString;
@@ -6964,9 +6964,9 @@ declare function createLifecycleApiRouter(deps: LifecycleApiDeps): {
6964
6964
  current: zod.ZodString;
6965
6965
  latest: zod.ZodString;
6966
6966
  action: zod.ZodEnum<{
6967
- updated: "updated";
6968
6967
  current: "current";
6969
6968
  available: "available";
6969
+ updated: "updated";
6970
6970
  }>;
6971
6971
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
6972
6972
  };
@@ -7213,12 +7213,12 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
7213
7213
  decision: zod.ZodObject<{
7214
7214
  identity: zod.ZodOptional<zod.ZodString>;
7215
7215
  identitySource: zod.ZodEnum<{
7216
- env: "env";
7217
- none: "none";
7218
7216
  "config-dir-escape-hatch": "config-dir-escape-hatch";
7219
7217
  argv: "argv";
7218
+ env: "env";
7220
7219
  "directory-pin": "directory-pin";
7221
7220
  "active-identity-file": "active-identity-file";
7221
+ none: "none";
7222
7222
  }>;
7223
7223
  pool: zod.ZodOptional<zod.ZodObject<{
7224
7224
  name: zod.ZodString;
@@ -7813,12 +7813,12 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
7813
7813
  identity: zod.ZodObject<{
7814
7814
  name: zod.ZodNullable<zod.ZodString>;
7815
7815
  source: zod.ZodEnum<{
7816
- env: "env";
7817
- none: "none";
7818
7816
  "config-dir-escape-hatch": "config-dir-escape-hatch";
7819
7817
  argv: "argv";
7818
+ env: "env";
7820
7819
  "directory-pin": "directory-pin";
7821
7820
  "active-identity-file": "active-identity-file";
7821
+ none: "none";
7822
7822
  }>;
7823
7823
  }, zod_v4_core.$strict>;
7824
7824
  pool: zod.ZodOptional<zod.ZodObject<{
@@ -7896,11 +7896,11 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
7896
7896
  "category-default": "category-default";
7897
7897
  }>;
7898
7898
  category: zod.ZodNullable<zod.ZodEnum<{
7899
+ secret: "secret";
7899
7900
  runtime: "runtime";
7900
7901
  history: "history";
7901
7902
  knowledge: "knowledge";
7902
7903
  settings: "settings";
7903
- secret: "secret";
7904
7904
  }>>;
7905
7905
  rule: zod.ZodOptional<zod.ZodObject<{
7906
7906
  key: zod.ZodString;
@@ -8119,11 +8119,10 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
8119
8119
  "global-config": "global-config";
8120
8120
  "config-profile": "config-profile";
8121
8121
  identity: "identity";
8122
- keychain: "keychain";
8123
8122
  provider: "provider";
8124
- headroom: "headroom";
8125
8123
  frontdoor: "frontdoor";
8126
8124
  pool: "pool";
8125
+ keychain: "keychain";
8127
8126
  "ambient-credential": "ambient-credential";
8128
8127
  "binary-discovery": "binary-discovery";
8129
8128
  "claude-shim": "claude-shim";
@@ -8133,6 +8132,7 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
8133
8132
  "directory-rules": "directory-rules";
8134
8133
  "categories-local": "categories-local";
8135
8134
  "active-identity": "active-identity";
8135
+ headroom: "headroom";
8136
8136
  }>;
8137
8137
  subject: zod.ZodOptional<zod.ZodString>;
8138
8138
  severity: zod.ZodEnum<{
@@ -8325,12 +8325,12 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
8325
8325
  decision: zod.ZodObject<{
8326
8326
  identity: zod.ZodOptional<zod.ZodString>;
8327
8327
  identitySource: zod.ZodEnum<{
8328
- env: "env";
8329
- none: "none";
8330
8328
  "config-dir-escape-hatch": "config-dir-escape-hatch";
8331
8329
  argv: "argv";
8330
+ env: "env";
8332
8331
  "directory-pin": "directory-pin";
8333
8332
  "active-identity-file": "active-identity-file";
8333
+ none: "none";
8334
8334
  }>;
8335
8335
  pool: zod.ZodOptional<zod.ZodObject<{
8336
8336
  name: zod.ZodString;
@@ -9706,9 +9706,9 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9706
9706
  current: zod.ZodString;
9707
9707
  latest: zod.ZodString;
9708
9708
  action: zod.ZodEnum<{
9709
- updated: "updated";
9710
9709
  current: "current";
9711
9710
  available: "available";
9711
+ updated: "updated";
9712
9712
  }>;
9713
9713
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
9714
9714
  };
@@ -9907,12 +9907,12 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9907
9907
  identity: zod.ZodObject<{
9908
9908
  name: zod.ZodNullable<zod.ZodString>;
9909
9909
  source: zod.ZodEnum<{
9910
- env: "env";
9911
- none: "none";
9912
9910
  "config-dir-escape-hatch": "config-dir-escape-hatch";
9913
9911
  argv: "argv";
9912
+ env: "env";
9914
9913
  "directory-pin": "directory-pin";
9915
9914
  "active-identity-file": "active-identity-file";
9915
+ none: "none";
9916
9916
  }>;
9917
9917
  }, zod_v4_core.$strict>;
9918
9918
  pool: zod.ZodOptional<zod.ZodObject<{
@@ -9990,11 +9990,11 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9990
9990
  "category-default": "category-default";
9991
9991
  }>;
9992
9992
  category: zod.ZodNullable<zod.ZodEnum<{
9993
+ secret: "secret";
9993
9994
  runtime: "runtime";
9994
9995
  history: "history";
9995
9996
  knowledge: "knowledge";
9996
9997
  settings: "settings";
9997
- secret: "secret";
9998
9998
  }>>;
9999
9999
  rule: zod.ZodOptional<zod.ZodObject<{
10000
10000
  key: zod.ZodString;
@@ -10213,11 +10213,10 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
10213
10213
  "global-config": "global-config";
10214
10214
  "config-profile": "config-profile";
10215
10215
  identity: "identity";
10216
- keychain: "keychain";
10217
10216
  provider: "provider";
10218
- headroom: "headroom";
10219
10217
  frontdoor: "frontdoor";
10220
10218
  pool: "pool";
10219
+ keychain: "keychain";
10221
10220
  "ambient-credential": "ambient-credential";
10222
10221
  "binary-discovery": "binary-discovery";
10223
10222
  "claude-shim": "claude-shim";
@@ -10227,6 +10226,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
10227
10226
  "directory-rules": "directory-rules";
10228
10227
  "categories-local": "categories-local";
10229
10228
  "active-identity": "active-identity";
10229
+ headroom: "headroom";
10230
10230
  }>;
10231
10231
  subject: zod.ZodOptional<zod.ZodString>;
10232
10232
  severity: zod.ZodEnum<{
@@ -12059,11 +12059,10 @@ declare const DoctorFindingSchema: z.ZodObject<{
12059
12059
  "global-config": "global-config";
12060
12060
  "config-profile": "config-profile";
12061
12061
  identity: "identity";
12062
- keychain: "keychain";
12063
12062
  provider: "provider";
12064
- headroom: "headroom";
12065
12063
  frontdoor: "frontdoor";
12066
12064
  pool: "pool";
12065
+ keychain: "keychain";
12067
12066
  "ambient-credential": "ambient-credential";
12068
12067
  "binary-discovery": "binary-discovery";
12069
12068
  "claude-shim": "claude-shim";
@@ -12073,6 +12072,7 @@ declare const DoctorFindingSchema: z.ZodObject<{
12073
12072
  "directory-rules": "directory-rules";
12074
12073
  "categories-local": "categories-local";
12075
12074
  "active-identity": "active-identity";
12075
+ headroom: "headroom";
12076
12076
  }>;
12077
12077
  subject: z.ZodOptional<z.ZodString>;
12078
12078
  severity: z.ZodEnum<{
@@ -12090,11 +12090,10 @@ declare const DoctorRunOutputSchema: z.ZodObject<{
12090
12090
  "global-config": "global-config";
12091
12091
  "config-profile": "config-profile";
12092
12092
  identity: "identity";
12093
- keychain: "keychain";
12094
12093
  provider: "provider";
12095
- headroom: "headroom";
12096
12094
  frontdoor: "frontdoor";
12097
12095
  pool: "pool";
12096
+ keychain: "keychain";
12098
12097
  "ambient-credential": "ambient-credential";
12099
12098
  "binary-discovery": "binary-discovery";
12100
12099
  "claude-shim": "claude-shim";
@@ -12104,6 +12103,7 @@ declare const DoctorRunOutputSchema: z.ZodObject<{
12104
12103
  "directory-rules": "directory-rules";
12105
12104
  "categories-local": "categories-local";
12106
12105
  "active-identity": "active-identity";
12106
+ headroom: "headroom";
12107
12107
  }>;
12108
12108
  subject: z.ZodOptional<z.ZodString>;
12109
12109
  severity: z.ZodEnum<{
@@ -12124,9 +12124,9 @@ declare const UpdateCheckOutputSchema: z.ZodObject<{
12124
12124
  current: z.ZodString;
12125
12125
  latest: z.ZodString;
12126
12126
  action: z.ZodEnum<{
12127
- updated: "updated";
12128
12127
  current: "current";
12129
12128
  available: "available";
12129
+ updated: "updated";
12130
12130
  }>;
12131
12131
  }, z.core.$strict>;
12132
12132
  /** The Sign in with ChatGPT login's state as `codex status` reports it: no sign-in yet, signed in (with who, whether the plan scope was granted, and when the access token lapses), or a file that cannot be read. */
@@ -12176,12 +12176,12 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
12176
12176
  decision: z.ZodObject<{
12177
12177
  identity: z.ZodOptional<z.ZodString>;
12178
12178
  identitySource: z.ZodEnum<{
12179
- env: "env";
12180
- none: "none";
12181
12179
  "config-dir-escape-hatch": "config-dir-escape-hatch";
12182
12180
  argv: "argv";
12181
+ env: "env";
12183
12182
  "directory-pin": "directory-pin";
12184
12183
  "active-identity-file": "active-identity-file";
12184
+ none: "none";
12185
12185
  }>;
12186
12186
  pool: z.ZodOptional<z.ZodObject<{
12187
12187
  name: z.ZodString;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-shim",
3
- "version": "11.8.1",
3
+ "version": "11.8.2",
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>",