agent-shim 8.12.0 → 8.13.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
@@ -61710,7 +61710,7 @@ function registerIdentityCommand(program2, deps) {
61710
61710
  // package.json
61711
61711
  var package_default = {
61712
61712
  name: "agent-shim",
61713
- version: "8.12.0",
61713
+ version: "8.13.0",
61714
61714
  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.",
61715
61715
  license: "MIT",
61716
61716
  author: "Joseph Mearman <joseph@mearman.co.uk>",
package/dist/index.cjs CHANGED
@@ -203,6 +203,7 @@ __export(index_exports, {
203
203
  runCheck: () => runCheck,
204
204
  runDoctor: () => runDoctor,
205
205
  runFrontDoorSupervisor: () => runFrontDoorSupervisor,
206
+ runLauncher: () => runLauncher,
206
207
  runSupervisor: () => runSupervisor,
207
208
  servedByPipeline: () => servedByPipeline,
208
209
  setAllowAmbientCredential: () => setAllowAmbientCredential,
@@ -217,6 +218,7 @@ __export(index_exports, {
217
218
  setRcSessionModel: () => setRcSessionModel,
218
219
  setRcSessionPermissionMode: () => setRcSessionPermissionMode,
219
220
  snapshotPath: () => snapshotPath,
221
+ spawnClaude: () => spawnClaude,
220
222
  startConnectServer: () => startConnectServer,
221
223
  topLevelNames: () => topLevelNames,
222
224
  updateDirectoryRule: () => updateDirectoryRule,
@@ -10642,6 +10644,29 @@ function splitExtraFlags(value) {
10642
10644
  return trimmed.split(/\s+/);
10643
10645
  }
10644
10646
 
10647
+ // src/launcher/spawn.ts
10648
+ var import_node_os5 = __toESM(require("node:os"), 1);
10649
+ var SIGNAL_EXIT_CODE_OFFSET = 128;
10650
+ function exitCodeFor(result) {
10651
+ if (result.status !== null) {
10652
+ return result.status;
10653
+ }
10654
+ if (result.signal !== null) {
10655
+ return SIGNAL_EXIT_CODE_OFFSET + import_node_os5.default.constants.signals[result.signal];
10656
+ }
10657
+ return 1;
10658
+ }
10659
+ function spawnClaude(params) {
10660
+ const result = params.spawn.spawnSync(params.bin, params.args, { stdio: "inherit", env: params.env });
10661
+ if (result.error !== void 0) {
10662
+ throw result.error;
10663
+ }
10664
+ if (params.beforeExit !== void 0) {
10665
+ params.beforeExit();
10666
+ }
10667
+ return params.proc.exit(exitCodeFor(result));
10668
+ }
10669
+
10645
10670
  // src/launcher.ts
10646
10671
  function resolveIdentityCredential(identity, credential, env, port) {
10647
10672
  if (port === void 0) {
@@ -10918,9 +10943,17 @@ function prepareLaunch(params) {
10918
10943
  };
10919
10944
  return { bin: discovered.path, args: finalArgv, env: finalEnv, release };
10920
10945
  }
10946
+ function runLauncher(params) {
10947
+ const plan = prepareLaunch(params);
10948
+ try {
10949
+ spawnClaude({ bin: plan.bin, args: plan.args, env: plan.env, spawn: params.spawn, proc: params.proc, beforeExit: plan.release });
10950
+ } finally {
10951
+ plan.release();
10952
+ }
10953
+ }
10921
10954
 
10922
10955
  // src/launchWiring.ts
10923
- var import_node_os5 = __toESM(require("node:os"), 1);
10956
+ var import_node_os6 = __toESM(require("node:os"), 1);
10924
10957
  var import_node_crypto12 = require("node:crypto");
10925
10958
 
10926
10959
  // src/frontdoor/realFrontDoorPort.ts
@@ -11069,7 +11102,7 @@ function realFrontDoorPort(paths, spawnDaemon) {
11069
11102
 
11070
11103
  // src/launchWiring.ts
11071
11104
  function buildFarmRuntime(paths, cwd) {
11072
- const home = import_node_os5.default.homedir();
11105
+ const home = import_node_os6.default.homedir();
11073
11106
  const read = cosmiconfigReader();
11074
11107
  const classification = loadClassification(paths);
11075
11108
  const loaded = loadCascadeInput({ paths, home, cwd, read });
@@ -11330,6 +11363,7 @@ function prepareClaudeLaunch(options) {
11330
11363
  runCheck,
11331
11364
  runDoctor,
11332
11365
  runFrontDoorSupervisor,
11366
+ runLauncher,
11333
11367
  runSupervisor,
11334
11368
  servedByPipeline,
11335
11369
  setAllowAmbientCredential,
@@ -11344,6 +11378,7 @@ function prepareClaudeLaunch(options) {
11344
11378
  setRcSessionModel,
11345
11379
  setRcSessionPermissionMode,
11346
11380
  snapshotPath,
11381
+ spawnClaude,
11347
11382
  startConnectServer,
11348
11383
  topLevelNames,
11349
11384
  updateDirectoryRule,
package/dist/index.mjs CHANGED
@@ -10414,6 +10414,29 @@ function splitExtraFlags(value) {
10414
10414
  return trimmed.split(/\s+/);
10415
10415
  }
10416
10416
 
10417
+ // src/launcher/spawn.ts
10418
+ import os6 from "node:os";
10419
+ var SIGNAL_EXIT_CODE_OFFSET = 128;
10420
+ function exitCodeFor(result) {
10421
+ if (result.status !== null) {
10422
+ return result.status;
10423
+ }
10424
+ if (result.signal !== null) {
10425
+ return SIGNAL_EXIT_CODE_OFFSET + os6.constants.signals[result.signal];
10426
+ }
10427
+ return 1;
10428
+ }
10429
+ function spawnClaude(params) {
10430
+ const result = params.spawn.spawnSync(params.bin, params.args, { stdio: "inherit", env: params.env });
10431
+ if (result.error !== void 0) {
10432
+ throw result.error;
10433
+ }
10434
+ if (params.beforeExit !== void 0) {
10435
+ params.beforeExit();
10436
+ }
10437
+ return params.proc.exit(exitCodeFor(result));
10438
+ }
10439
+
10417
10440
  // src/launcher.ts
10418
10441
  function resolveIdentityCredential(identity, credential, env, port) {
10419
10442
  if (port === void 0) {
@@ -10690,9 +10713,17 @@ function prepareLaunch(params) {
10690
10713
  };
10691
10714
  return { bin: discovered.path, args: finalArgv, env: finalEnv, release };
10692
10715
  }
10716
+ function runLauncher(params) {
10717
+ const plan = prepareLaunch(params);
10718
+ try {
10719
+ spawnClaude({ bin: plan.bin, args: plan.args, env: plan.env, spawn: params.spawn, proc: params.proc, beforeExit: plan.release });
10720
+ } finally {
10721
+ plan.release();
10722
+ }
10723
+ }
10693
10724
 
10694
10725
  // src/launchWiring.ts
10695
- import os6 from "node:os";
10726
+ import os7 from "node:os";
10696
10727
  import { randomUUID as randomUUID5 } from "node:crypto";
10697
10728
 
10698
10729
  // src/frontdoor/realFrontDoorPort.ts
@@ -10841,7 +10872,7 @@ function realFrontDoorPort(paths, spawnDaemon) {
10841
10872
 
10842
10873
  // src/launchWiring.ts
10843
10874
  function buildFarmRuntime(paths, cwd) {
10844
- const home = os6.homedir();
10875
+ const home = os7.homedir();
10845
10876
  const read = cosmiconfigReader();
10846
10877
  const classification = loadClassification(paths);
10847
10878
  const loaded = loadCascadeInput({ paths, home, cwd, read });
@@ -11101,6 +11132,7 @@ export {
11101
11132
  runCheck,
11102
11133
  runDoctor,
11103
11134
  runFrontDoorSupervisor,
11135
+ runLauncher,
11104
11136
  runSupervisor,
11105
11137
  servedByPipeline,
11106
11138
  setAllowAmbientCredential,
@@ -11115,6 +11147,7 @@ export {
11115
11147
  setRcSessionModel,
11116
11148
  setRcSessionPermissionMode,
11117
11149
  snapshotPath,
11150
+ spawnClaude,
11118
11151
  startConnectServer,
11119
11152
  topLevelNames,
11120
11153
  updateDirectoryRule,
@@ -1149,6 +1149,22 @@ interface FarmFs {
1149
1149
  /** A stable content hash of one file, or undefined when it is missing or is not a regular file. Used only to recognise farm data that has already been adopted into the canonical tree. */
1150
1150
  readonly hashFile: (path: string) => string | undefined;
1151
1151
  }
1152
+ /** The outcome of one `spawnSync` call, mirroring Node's own `SpawnSyncReturns` shape narrowly to what the launcher actually reads. */
1153
+ interface SpawnResult {
1154
+ /** The child's exit code, or null when it was terminated by a signal instead of exiting normally. */
1155
+ readonly status: number | null;
1156
+ /** The signal that terminated the child, or null when it exited normally. */
1157
+ readonly signal: NodeJS.Signals | null;
1158
+ /** Set when the child process could not even be spawned (e.g. the binary does not exist). */
1159
+ readonly error?: Error;
1160
+ }
1161
+ /** Runs the real `claude` binary synchronously, injected so no test ever spawns a real process. The Node equivalent of the legacy bash tool's `exec` is `spawnSync` with `stdio: "inherit"` followed by propagating the child's own exit code — see `src/launcher/spawn.ts`. */
1162
+ interface SpawnPort {
1163
+ readonly spawnSync: (command: string, args: readonly string[], options: {
1164
+ readonly stdio: "inherit";
1165
+ readonly env: Readonly<Record<string, string | undefined>>;
1166
+ }) => SpawnResult;
1167
+ }
1152
1168
  /** The outcome of one synchronous external-command run (distinct from `SpawnPort`, which is specifically for replacing this process with the real `claude` binary — `RunPort` is for auxiliary commands like `git rev-parse` for branch detection, or `security find-generic-password` for the macOS Keychain diagnostic in `check.ts`, whose output this process needs to keep running and read). */
1153
1169
  interface RunResult {
1154
1170
  readonly status: number | null;
@@ -3886,6 +3902,10 @@ interface PrepareLaunchParams {
3886
3902
  /** True when the user was asked on a terminal whether to create the selected configuration profile and chose to launch without it. Without that explicit choice, a selected profile with no file is refused rather than silently skipped. */
3887
3903
  readonly allowMissingConfigProfile?: boolean;
3888
3904
  }
3905
+ /** Inputs to `runLauncher`: a launch's inputs plus the port that spawns the child. */
3906
+ interface RunLauncherParams extends PrepareLaunchParams {
3907
+ readonly spawn: SpawnPort;
3908
+ }
3889
3909
  /**
3890
3910
  * 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.
3891
3911
  */
@@ -3906,6 +3926,32 @@ interface LaunchPlan {
3906
3926
  * The farm resync is skipped when `CLAUDE_CONFIG_DIR` was already set (the escape hatch means the user has named a configuration directory explicitly, and agent-shim manages neither its contents nor its lifetime) and when no identity resolved at all (a bare launch against plain `~/.claude`, matching the legacy tool's own behaviour). In both cases there is no agent-shim-managed farm for a resync to act on.
3907
3927
  */
3908
3928
  declare function prepareLaunch(params: PrepareLaunchParams): LaunchPlan;
3929
+ /**
3930
+ * Runs one `claude` launch: `prepareLaunch`, then the child under `params.spawn`, whose exit code becomes this process's.
3931
+ *
3932
+ * The session registrations are released twice by design: `beforeExit` covers the real success path (where `process.exit` never unwinds a `finally`), and the `finally` below covers a thrown spawn error, where it does.
3933
+ */
3934
+ declare function runLauncher(params: RunLauncherParams): void;
3935
+
3936
+ /** Inputs to `spawnClaude`. */
3937
+ interface SpawnClaudeParams {
3938
+ /** Full path to the real `claude` binary to run, as discovered by `src/versionDiscovery.ts`. */
3939
+ readonly bin: string;
3940
+ readonly args: readonly string[];
3941
+ readonly env: Readonly<Record<string, string | undefined>>;
3942
+ readonly spawn: SpawnPort;
3943
+ readonly proc: ProcPort;
3944
+ /**
3945
+ * Runs immediately before the child's exit code propagates. The real `process.exit` never unwinds a `finally` block, so a caller with cleanup to do on the success path (releasing a headroom session registration, say) cannot rely on one; it passes the cleanup here instead.
3946
+ */
3947
+ readonly beforeExit?: () => void;
3948
+ }
3949
+ /**
3950
+ * Runs the real `claude` binary and propagates its exit code faithfully, the Node equivalent of the legacy bash tool's `exec` (process replacement): `spawnSync(bin, args, { stdio: "inherit" })` followed by `process.exit(status)`.
3951
+ *
3952
+ * Throws when the child could not even be spawned (e.g. `bin` does not exist) rather than silently exiting — a spawn failure is a real problem, not a clean exit code to propagate.
3953
+ */
3954
+ declare function spawnClaude(params: SpawnClaudeParams): never;
3909
3955
 
3910
3956
  /** Raised by `prepareClaudeLaunch` when the launch is refused: no identity, a missing profile, an ambient credential, an unresolvable credential and the like. `message` is what the launcher logged; `exitCode` is the status the command line would have exited with. */
3911
3957
  declare class LaunchRefusedError extends CliError {
@@ -3932,5 +3978,5 @@ interface PrepareClaudeLaunchOptions {
3932
3978
  */
3933
3979
  declare function prepareClaudeLaunch(options: PrepareClaudeLaunchOptions): LaunchPlan;
3934
3980
 
3935
- export { AMBIENT_CREDENTIAL_VARS, CONNECT_INTERCEPT_HOST, CONNECT_INTERCEPT_HOSTS, CONNECT_LIMITS, CONTROL_PATH_PREFIX, CategoryClassificationOverlaySchema, CategoryClassificationSchema, CategoryMapSchema, CliError, ConfigProfileSchema, CredentialCacheSchema, CredentialSchema, CredentialSourceSchema, DirectoryRuleAlreadyExistsError, DirectoryRuleMissingTargetError, DirectoryRuleNotFoundError, DirectoryRuleSchema, DirectoryRulesSchema, EXIT_FAILURE, EXIT_USAGE, EntryValueSchema, FARM_MANIFEST_FILENAME, FrontDoorStartError, GlobalConfigSchema, HeadroomStartError, IdentityAlreadyExistsError, IdentityNotFoundError, IdentitySchema, InvalidCategoryNameError, InvalidIdentityNameError, InvalidProviderNameError, LaunchRefusedError, LegacyProviderFileError, PROMPT_CACHE_TTL_MS, PlanClassSchema, PoolNameSchema, PoolNotFoundError, PoolPickReportSchema, PoolSchema, PortableConfigSchema, ProfileAlreadyExistsError, ProfileNotFoundError, ProviderAlreadyExistsError, ProviderKindMismatchError, ProviderNotFoundError, ProviderSchema, RC_IDLE_EXPIRY_MS, RC_ORPC_PATH_PREFIX, RC_PENDING_DEADLINE_MS, RC_PERMISSION_MODES, 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, ROUTED_PATH_PREFIX, RcPermissionModeSchema, RcStreamEnvelopeSchema, RcStreamEventSchema, UsageError, UsageSnapshotError, UsageSnapshotSchema, WhenSchema, addDirectoryRule, addIdentity, addPool, addProvider, answerRcControlRequest, buildEntryFacts, buildLayoutPaths, buildRcControlResponsePayload, buildRcEventWriteBody, buildRcInterruptPayload, buildRcSetModelPayload, buildRcSetPermissionModePayload, buildRcUserMessagePayload, carryOver, checkReportHasWarnings, checkReportToJson, collectCheckReport, collectDoctorReport, collectPoolPick, createLeafCache, createProfile, createRcApiNodeHandler, createRcApiRouter, createRcControlHandler, createRcCredentialStore, createRcEventFanout, createRcSelfHostSurface, createRcSessionTracker, createRcStreamHub, createSseParser, describeProviderEndpoint, detectAmbientCredential, effectiveWindow, ensureCa, ensureFrontDoor, ensureHeadroom, evaluateAmbientCredentialGuard, evaluateWhen, formatAmbientCredentialGuardMessage, formatCheckReport, formatDoctorReport, forwardableHeaders, frontDoorRcApiClient, frontDoorRcControl, generateCa, identityExists, injectRcUserMessage, interruptRcSession, isIdentityDirectoryName, isInterceptedHost, isRcPermissionMode, lateRcEventDial, lateRcStreamDial, listDirectoryRules, listIdentities, listProfiles, listProviders, listUsageSnapshots, matchBranch, mintLeaf, mintRcSelfHostCredential, observingRoutedRoute, parseConnectTarget, parseRcStreamEnvelope, planOf, prepareClaudeLaunch, prepareLaunch, profileExists, providerExists, rankPool, rcEventWriteResultFromAnswer, rcObserverAsPassthrough, rcSelfHostFromEnv, readActiveIdentity, readDirectoryRules, readFarmManifest, readGlobalConfig, readIdentity, readPools, readProfile, readProvider, readRcSelfHostRecord, readUsageSnapshot, realConnectCertStore, realConnectEffects, realRcControlTransport, realRcEventDial, realRcStreamDial, recoverFarm, recoveryDiagnostics, removeDirectoryRule, removeIdentity, removePool, removeProfile, removeProvider, requirePool, resolveAgentShimHome, resolveClaudeHome, resolveDecisions, resolveLayoutPaths, resolveSupervisorConfig, resyncFarm, runCheck, runDoctor, runFrontDoorSupervisor, runSupervisor, servedByPipeline, setAllowAmbientCredential, setDefaultConfigProfile, setGlobalDefaultProfile, setIdentityCredential, setPool, setProfileCategories, setProfileEntries, setProfileLaunchFlags, setProfileMetadata, setRcSessionModel, setRcSessionPermissionMode, snapshotPath, startConnectServer, topLevelNames, updateDirectoryRule, updateProvider, useIdentity, writeDirectoryRules };
3936
- export type { AddDirectoryRuleOptions, AddProviderInput, AmbientCredentialDetection, AmbientCredentialGuardResult, AmbientCredentialVar, BuildEntryFactsParams, CaMaterial, Candidate, CarryOverParams, CarryOverResult, CategoryMap, CheckReport, CollectCheckReportParams, CollectDoctorReportParams, CompiledRule, ConditionContext, ConfigProfile, ConnectCertStore, ConnectEffects, ConnectLimits, ConnectLocalSurface, ConnectServerConfig, ConnectServerHandle, ConnectTarget, Credential, CredentialSource, Decision, Diagnostic, DirectoryRule, DirectoryRules, DoctorReport, EffectiveWindow, EliminatedRule, EnsureFrontDoorPorts, EnsureHeadroomPorts, EntryFact, EntryFacts, EntryValue, EvaluateAmbientCredentialGuardParams, FlattenedCascade, FrontDoorRcControl, FrontDoorSupervisorPorts, GlobalConfig, HeadroomSupervisorConfig, Identity, IdentityCredentialChange, IdentityListEntry, IdentityListing, InjectedCredential, LaunchPlan, Layer, LayerId, LayoutPaths, LeafCert, PlanClass, Pool, PoolMember, PoolPickReport, PoolRanking, PortableConfig, PrepareClaudeLaunchOptions, PrepareLaunchParams, ProfileListEntry, Provider, ProviderListEntry, RankPoolInput, RcAnswerDecision, RcAnswerDeps, RcApiClient, RcApiDeps, RcApiRouter, RcControlAnswer, RcControlHandlerDeps, RcControlRequestDeps, RcControlTransport, RcCredentialStore, RcDialAnswer, RcDialTarget, RcEventDial, RcEventFanout, RcEventWriteResult, RcExchangeObserver, RcInjectDeps, RcObservedCredential, RcObservedRequest, RcPendingRequestSummary, RcPermissionMode, RcPresenceAnswer, RcSelfHostCredentialRecord, RcSelfHostDeps, RcSelfHostMintResult, RcSelfHostSurface, RcSessionStatus, RcSessionSummary, RcSessionTracker, RcSessionTrackerDeps, RcStreamAnswer, RcStreamDial, RcStreamEnvelope, RcStreamEvent, RcStreamHub, RcStreamHubDeps, RcWorkerFact, RcWriteHeaders, RecoverFarmParams, RecoveryResult, ResolveDecisionsInput, ResolvedState, ResyncFarmParams, ResyncFarmResult, RunCheckParams, RunDoctorParams, RunFrontDoorSupervisorOptions, RunSupervisorOptions, SseParsedEvent, StickyPick, SupervisorPorts, UnreadableIdentityListEntry, UpdateDirectoryRuleOptions, UpdateProviderInput, UsageReadFs, UsageSnapshot, WhenCondition, WhenEvaluation };
3981
+ export { AMBIENT_CREDENTIAL_VARS, CONNECT_INTERCEPT_HOST, CONNECT_INTERCEPT_HOSTS, CONNECT_LIMITS, CONTROL_PATH_PREFIX, CategoryClassificationOverlaySchema, CategoryClassificationSchema, CategoryMapSchema, CliError, ConfigProfileSchema, CredentialCacheSchema, CredentialSchema, CredentialSourceSchema, DirectoryRuleAlreadyExistsError, DirectoryRuleMissingTargetError, DirectoryRuleNotFoundError, DirectoryRuleSchema, DirectoryRulesSchema, EXIT_FAILURE, EXIT_USAGE, EntryValueSchema, FARM_MANIFEST_FILENAME, FrontDoorStartError, GlobalConfigSchema, HeadroomStartError, IdentityAlreadyExistsError, IdentityNotFoundError, IdentitySchema, InvalidCategoryNameError, InvalidIdentityNameError, InvalidProviderNameError, LaunchRefusedError, LegacyProviderFileError, PROMPT_CACHE_TTL_MS, PlanClassSchema, PoolNameSchema, PoolNotFoundError, PoolPickReportSchema, PoolSchema, PortableConfigSchema, ProfileAlreadyExistsError, ProfileNotFoundError, ProviderAlreadyExistsError, ProviderKindMismatchError, ProviderNotFoundError, ProviderSchema, RC_IDLE_EXPIRY_MS, RC_ORPC_PATH_PREFIX, RC_PENDING_DEADLINE_MS, RC_PERMISSION_MODES, 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, ROUTED_PATH_PREFIX, RcPermissionModeSchema, RcStreamEnvelopeSchema, RcStreamEventSchema, UsageError, UsageSnapshotError, UsageSnapshotSchema, WhenSchema, addDirectoryRule, addIdentity, addPool, addProvider, answerRcControlRequest, buildEntryFacts, buildLayoutPaths, buildRcControlResponsePayload, buildRcEventWriteBody, buildRcInterruptPayload, buildRcSetModelPayload, buildRcSetPermissionModePayload, buildRcUserMessagePayload, carryOver, checkReportHasWarnings, checkReportToJson, collectCheckReport, collectDoctorReport, collectPoolPick, createLeafCache, createProfile, createRcApiNodeHandler, createRcApiRouter, createRcControlHandler, createRcCredentialStore, createRcEventFanout, createRcSelfHostSurface, createRcSessionTracker, createRcStreamHub, createSseParser, describeProviderEndpoint, detectAmbientCredential, effectiveWindow, ensureCa, ensureFrontDoor, ensureHeadroom, evaluateAmbientCredentialGuard, evaluateWhen, formatAmbientCredentialGuardMessage, formatCheckReport, formatDoctorReport, forwardableHeaders, frontDoorRcApiClient, frontDoorRcControl, generateCa, identityExists, injectRcUserMessage, interruptRcSession, isIdentityDirectoryName, isInterceptedHost, isRcPermissionMode, lateRcEventDial, lateRcStreamDial, listDirectoryRules, listIdentities, listProfiles, listProviders, listUsageSnapshots, matchBranch, mintLeaf, mintRcSelfHostCredential, observingRoutedRoute, parseConnectTarget, parseRcStreamEnvelope, planOf, prepareClaudeLaunch, prepareLaunch, profileExists, providerExists, rankPool, rcEventWriteResultFromAnswer, rcObserverAsPassthrough, rcSelfHostFromEnv, readActiveIdentity, readDirectoryRules, readFarmManifest, readGlobalConfig, readIdentity, readPools, readProfile, readProvider, readRcSelfHostRecord, readUsageSnapshot, realConnectCertStore, realConnectEffects, realRcControlTransport, realRcEventDial, realRcStreamDial, recoverFarm, recoveryDiagnostics, removeDirectoryRule, removeIdentity, removePool, removeProfile, removeProvider, requirePool, resolveAgentShimHome, resolveClaudeHome, resolveDecisions, resolveLayoutPaths, resolveSupervisorConfig, resyncFarm, runCheck, runDoctor, runFrontDoorSupervisor, runLauncher, runSupervisor, servedByPipeline, setAllowAmbientCredential, setDefaultConfigProfile, setGlobalDefaultProfile, setIdentityCredential, setPool, setProfileCategories, setProfileEntries, setProfileLaunchFlags, setProfileMetadata, setRcSessionModel, setRcSessionPermissionMode, snapshotPath, spawnClaude, startConnectServer, topLevelNames, updateDirectoryRule, updateProvider, useIdentity, writeDirectoryRules };
3982
+ export type { AddDirectoryRuleOptions, AddProviderInput, AmbientCredentialDetection, AmbientCredentialGuardResult, AmbientCredentialVar, BuildEntryFactsParams, CaMaterial, Candidate, CarryOverParams, CarryOverResult, CategoryMap, CheckReport, CollectCheckReportParams, CollectDoctorReportParams, CompiledRule, ConditionContext, ConfigProfile, ConnectCertStore, ConnectEffects, ConnectLimits, ConnectLocalSurface, ConnectServerConfig, ConnectServerHandle, ConnectTarget, Credential, CredentialSource, Decision, Diagnostic, DirectoryRule, DirectoryRules, DoctorReport, EffectiveWindow, EliminatedRule, EnsureFrontDoorPorts, EnsureHeadroomPorts, EntryFact, EntryFacts, EntryValue, EvaluateAmbientCredentialGuardParams, FlattenedCascade, FrontDoorRcControl, FrontDoorSupervisorPorts, GlobalConfig, HeadroomSupervisorConfig, Identity, IdentityCredentialChange, IdentityListEntry, IdentityListing, InjectedCredential, LaunchPlan, Layer, LayerId, LayoutPaths, LeafCert, PlanClass, Pool, PoolMember, PoolPickReport, PoolRanking, PortableConfig, PrepareClaudeLaunchOptions, PrepareLaunchParams, ProfileListEntry, Provider, ProviderListEntry, RankPoolInput, RcAnswerDecision, RcAnswerDeps, RcApiClient, RcApiDeps, RcApiRouter, RcControlAnswer, RcControlHandlerDeps, RcControlRequestDeps, RcControlTransport, RcCredentialStore, RcDialAnswer, RcDialTarget, RcEventDial, RcEventFanout, RcEventWriteResult, RcExchangeObserver, RcInjectDeps, RcObservedCredential, RcObservedRequest, RcPendingRequestSummary, RcPermissionMode, RcPresenceAnswer, RcSelfHostCredentialRecord, RcSelfHostDeps, RcSelfHostMintResult, RcSelfHostSurface, RcSessionStatus, RcSessionSummary, RcSessionTracker, RcSessionTrackerDeps, RcStreamAnswer, RcStreamDial, RcStreamEnvelope, RcStreamEvent, RcStreamHub, RcStreamHubDeps, RcWorkerFact, RcWriteHeaders, RecoverFarmParams, RecoveryResult, ResolveDecisionsInput, ResolvedState, ResyncFarmParams, ResyncFarmResult, RunCheckParams, RunDoctorParams, RunFrontDoorSupervisorOptions, RunLauncherParams, RunSupervisorOptions, SpawnClaudeParams, SseParsedEvent, StickyPick, SupervisorPorts, UnreadableIdentityListEntry, UpdateDirectoryRuleOptions, UpdateProviderInput, UsageReadFs, UsageSnapshot, WhenCondition, WhenEvaluation };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agent-shim",
3
- "version": "8.12.0",
3
+ "version": "8.13.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>",