claude-use 11.47.0 → 11.49.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.
@@ -279,6 +279,7 @@ declare const LaunchSchema: z.ZodObject<{
279
279
  delay: z.ZodOptional<z.ZodString>;
280
280
  pause: z.ZodOptional<z.ZodBoolean>;
281
281
  explain: z.ZodOptional<z.ZodBoolean>;
282
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
282
283
  }, z.core.$strict>;
283
284
  type LaunchFlags = z.infer<typeof LaunchSchema>;
284
285
  /**
@@ -960,6 +961,7 @@ declare const ConfigProfileSchema: z.ZodObject<{
960
961
  delay: z.ZodOptional<z.ZodString>;
961
962
  pause: z.ZodOptional<z.ZodBoolean>;
962
963
  explain: z.ZodOptional<z.ZodBoolean>;
964
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
963
965
  }, z.core.$strict>>;
964
966
  models: z.ZodOptional<z.ZodObject<{
965
967
  virtual: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodObject<{
@@ -1261,6 +1263,7 @@ declare const DirectoryRuleSchema: z.ZodObject<{
1261
1263
  delay: z.ZodOptional<z.ZodString>;
1262
1264
  pause: z.ZodOptional<z.ZodBoolean>;
1263
1265
  explain: z.ZodOptional<z.ZodBoolean>;
1266
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
1264
1267
  }, z.core.$strict>>;
1265
1268
  path: z.ZodString;
1266
1269
  configProfile: z.ZodOptional<z.ZodString>;
@@ -1489,6 +1492,7 @@ declare const DirectoryRulesSchema: z.ZodObject<{
1489
1492
  delay: z.ZodOptional<z.ZodString>;
1490
1493
  pause: z.ZodOptional<z.ZodBoolean>;
1491
1494
  explain: z.ZodOptional<z.ZodBoolean>;
1495
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
1492
1496
  }, z.core.$strict>>;
1493
1497
  path: z.ZodString;
1494
1498
  configProfile: z.ZodOptional<z.ZodString>;
@@ -1718,6 +1722,7 @@ declare const PortableConfigSchema: z.ZodObject<{
1718
1722
  delay: z.ZodOptional<z.ZodString>;
1719
1723
  pause: z.ZodOptional<z.ZodBoolean>;
1720
1724
  explain: z.ZodOptional<z.ZodBoolean>;
1725
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
1721
1726
  }, z.core.$strict>>;
1722
1727
  configProfile: z.ZodOptional<z.ZodString>;
1723
1728
  identity: z.ZodOptional<z.ZodString>;
@@ -1926,6 +1931,7 @@ declare const GlobalConfigSchema: z.ZodObject<{
1926
1931
  delay: z.ZodOptional<z.ZodString>;
1927
1932
  pause: z.ZodOptional<z.ZodBoolean>;
1928
1933
  explain: z.ZodOptional<z.ZodBoolean>;
1934
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
1929
1935
  }, z.core.$strict>>;
1930
1936
  headroom: z.ZodOptional<z.ZodObject<{
1931
1937
  source: z.ZodOptional<z.ZodString>;
@@ -2275,6 +2281,8 @@ interface LayoutPaths {
2275
2281
  readonly frontdoorSessionsDir: string;
2276
2282
  /** Directory holding one `<supervisor-pid>.json` per live front door, recording that door's own direct port: every door still serving sessions forwards its headroom traffic back to its own direct origin, so headroom must admit each of them, not only the one `state.json` names. */
2277
2283
  readonly frontdoorDirectRecordsDir: string;
2284
+ /** Directory holding one empty marker file per front door that has released its addresses and is finishing the connections it carried, named by its supervisor pid. */
2285
+ readonly frontdoorDrainingDir: string;
2278
2286
  /**
2279
2287
  * Directory holding one `<cse-session-id>.json` Remote Control client credential per observed session, mode 0700 with 0600 files: the OAuth-kind bearer and protocol headers the door replays as the session's attached client, persisted so a door generation that starts after a session's create can still attach. The same secret the identity's own store holds, at the same owner-only protection.
2280
2288
  */
@@ -3188,6 +3196,8 @@ type ConnectRequestHandler = (request: IncomingMessage, response: ServerResponse
3188
3196
  /** A bound loopback listener and how to stop it. */
3189
3197
  interface ConnectListenerHandle {
3190
3198
  readonly port: number;
3199
+ /** Stops accepting and releases the port at once, leaving every connection already accepted open: a successor can bind the same port while they finish. */
3200
+ readonly stopAccepting: () => void;
3191
3201
  /** Stops accepting, ends every live connection, and resolves once the port is released. */
3192
3202
  readonly close: () => Promise<void>;
3193
3203
  }
@@ -3271,6 +3281,12 @@ interface ConnectServerHandle {
3271
3281
  readonly port: number;
3272
3282
  /** The transparent listener's port, when one was requested: what an operating-system redirect should point at. */
3273
3283
  readonly transparentPort?: number;
3284
+ /** How many authenticated connections (blind tunnels and terminated sessions together) are open now: what closing this surface, or exiting its process, drops. */
3285
+ readonly openTunnels: () => number;
3286
+ /**
3287
+ * Retires the surface without cutting off the tunnels it carries: the port is released at once so a successor can bind it, every connection that is not a blind tunnel (the terminated sessions, which carry this door's own routing state, and connections still waiting for their head) is ended, and the blind tunnels, which are byte pumps to hosts the door never looks into, keep running until they end by themselves or their launch ends. Resolves when the last has, with the surface fully closed.
3288
+ */
3289
+ readonly drain: () => Promise<void>;
3274
3290
  /** Stops the listener, drops every live tunnel and terminated session, and resolves once the port is released. */
3275
3291
  readonly close: () => Promise<void>;
3276
3292
  }
@@ -4186,7 +4202,7 @@ interface RcStreamHubDeps {
4186
4202
  interface RcStreamHub {
4187
4203
  /** Reconciles the attachments against the tracker: attaches a stream to every tracked session whose OAuth credential is known, and drops an attachment whose session has expired or lost its credential. Idempotent, synchronous and total (never throws): the door calls it after every observed Remote Control exchange, so an attachment follows the session it belongs to without any polling of its own. */
4188
4204
  readonly reconcile: () => void;
4189
- /** Stops every attachment and frees their dials. */
4205
+ /** Stops every attachment and frees their dials. The hub then refuses to attach again: a later `reconcile` is a no-op, so an exchange that settles after the close cannot start a stream. */
4190
4206
  readonly close: () => void;
4191
4207
  }
4192
4208
  /** Creates the attachment hub. One per door process; everything it holds dies with it. */
@@ -5825,6 +5841,8 @@ interface RunDoctorParams {
5825
5841
  readonly supervisors: FrontDoorSupervisorListing;
5826
5842
  /** The launches registered with the front door whose launcher is still running, each naming the door it was sent to: what tells a superseded door still serving its launches from one serving nothing. */
5827
5843
  readonly liveSessions: readonly FrontDoorSessionSummary[];
5844
+ /** The supervisors that released their addresses and are finishing the connections they carried: running by design, not duplicates. Omit when the platform cannot say. */
5845
+ readonly draining?: readonly number[];
5828
5846
  /** What probing the serving door's listeners found: empty when no door serves or the platform cannot say. Omit to skip the listener checks. */
5829
5847
  readonly listeners?: readonly FrontDoorListenerReading[];
5830
5848
  };
@@ -6450,6 +6468,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
6450
6468
  delay: zod.ZodOptional<zod.ZodString>;
6451
6469
  pause: zod.ZodOptional<zod.ZodBoolean>;
6452
6470
  explain: zod.ZodOptional<zod.ZodBoolean>;
6471
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
6453
6472
  }, zod_v4_core.$strict>>;
6454
6473
  }, zod_v4_core.$strict>;
6455
6474
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
@@ -6469,6 +6488,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
6469
6488
  delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
6470
6489
  pause: zod.ZodOptional<zod.ZodBoolean>;
6471
6490
  explain: zod.ZodOptional<zod.ZodBoolean>;
6491
+ proxyBypass: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodArray<zod.ZodString>, zod.ZodLiteral<false>]>>;
6472
6492
  }, zod_v4_core.$strict>>;
6473
6493
  }, zod_v4_core.$strict>, zod.ZodObject<{
6474
6494
  action: zod.ZodLiteral<"updated">;
@@ -6621,6 +6641,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
6621
6641
  delay: zod.ZodOptional<zod.ZodString>;
6622
6642
  pause: zod.ZodOptional<zod.ZodBoolean>;
6623
6643
  explain: zod.ZodOptional<zod.ZodBoolean>;
6644
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
6624
6645
  }, zod_v4_core.$strict>>;
6625
6646
  }, zod_v4_core.$strict>;
6626
6647
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
@@ -7273,6 +7294,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
7273
7294
  delay: zod.ZodOptional<zod.ZodString>;
7274
7295
  pause: zod.ZodOptional<zod.ZodBoolean>;
7275
7296
  explain: zod.ZodOptional<zod.ZodBoolean>;
7297
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
7276
7298
  }, zod_v4_core.$strict>>;
7277
7299
  path: zod.ZodString;
7278
7300
  configProfile: zod.ZodOptional<zod.ZodString>;
@@ -7506,6 +7528,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
7506
7528
  delay: zod.ZodOptional<zod.ZodString>;
7507
7529
  pause: zod.ZodOptional<zod.ZodBoolean>;
7508
7530
  explain: zod.ZodOptional<zod.ZodBoolean>;
7531
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
7509
7532
  }, zod_v4_core.$strict>>;
7510
7533
  path: zod.ZodString;
7511
7534
  configProfile: zod.ZodOptional<zod.ZodString>;
@@ -7839,9 +7862,10 @@ interface ResolvedLaunchFlags {
7839
7862
  readonly pause: boolean;
7840
7863
  /** Whether the launch's report lists every pool member the pick ranked and why, and not only the one picked. */
7841
7864
  readonly explain: boolean;
7842
- /** Whether a provider session routes provider-qualified model names through the models block to the provider that serves them. */
7843
7865
  /** How long the launcher waits after its own output before it starts claude, in milliseconds; zero for no wait. */
7844
7866
  readonly delayMs: number;
7867
+ /** Hosts kept off the front door by adding them to the child's `NO_PROXY`, checked and without duplicates. */
7868
+ readonly proxyBypass: readonly string[];
7845
7869
  }
7846
7870
 
7847
7871
  /** How a supervised launch names its conversation to claude: `start` begins one under the launch's id, `resume` continues the one with that id, `as-given` leaves the caller's own `--resume <id>` as written. */
@@ -8045,7 +8069,7 @@ interface LaunchResolution {
8045
8069
  readonly name: string;
8046
8070
  readonly summary: CredentialSummary;
8047
8071
  };
8048
- /** Which daemons the launch would route through, and whether it routes provider-qualified model names through the models block. */
8072
+ /** Which daemons the launch would route through. */
8049
8073
  readonly routing: {
8050
8074
  readonly frontDoor: boolean;
8051
8075
  readonly headroom: boolean;
@@ -8136,6 +8160,7 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
8136
8160
  pause: zod.ZodBoolean;
8137
8161
  explain: zod.ZodBoolean;
8138
8162
  delayMs: zod.ZodNumber;
8163
+ proxyBypass: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
8139
8164
  }, zod_v4_core.$strict>;
8140
8165
  claudeVersion: zod.ZodOptional<zod.ZodObject<{
8141
8166
  version: zod.ZodString;
@@ -8423,6 +8448,8 @@ interface FrontDoorSessionStatus extends FrontDoorSessionSummary {
8423
8448
  interface FrontDoorStatus {
8424
8449
  readonly state: FrontDoorState;
8425
8450
  readonly supervisorAlive: boolean;
8451
+ /** The pids of earlier doors that released their addresses and are finishing the connections they carried, found from the marker each writes when it begins to drain: running, but not the serving door. */
8452
+ readonly draining: readonly number[];
8426
8453
  readonly sessions: readonly FrontDoorSessionStatus[];
8427
8454
  /** The headroom daemon's socket as the door's hop reads and authenticates it live: undefined when no socket is recorded, a refusal when the recorded one fails the owner-only check. */
8428
8455
  readonly headroomSocket: HeadroomSocketTarget | undefined;
@@ -8678,6 +8705,7 @@ declare function createControlApiRouter(deps: ControlApiDeps): {
8678
8705
  lastError: zod.ZodOptional<zod.ZodString>;
8679
8706
  }, zod_v4_core.$strict>;
8680
8707
  supervisorAlive: zod.ZodBoolean;
8708
+ draining: zod.ZodReadonly<zod.ZodArray<zod.ZodNumber>>;
8681
8709
  sessions: zod.ZodReadonly<zod.ZodArray<zod.ZodObject<{
8682
8710
  pid: zod.ZodInt;
8683
8711
  startedAt: zod.ZodNumber;
@@ -9113,6 +9141,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9113
9141
  lastError: zod.ZodOptional<zod.ZodString>;
9114
9142
  }, zod_v4_core.$strict>;
9115
9143
  supervisorAlive: zod.ZodBoolean;
9144
+ draining: zod.ZodReadonly<zod.ZodArray<zod.ZodNumber>>;
9116
9145
  sessions: zod.ZodReadonly<zod.ZodArray<zod.ZodObject<{
9117
9146
  pid: zod.ZodInt;
9118
9147
  startedAt: zod.ZodNumber;
@@ -9256,6 +9285,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9256
9285
  pause: zod.ZodBoolean;
9257
9286
  explain: zod.ZodBoolean;
9258
9287
  delayMs: zod.ZodNumber;
9288
+ proxyBypass: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
9259
9289
  }, zod_v4_core.$strict>;
9260
9290
  claudeVersion: zod.ZodOptional<zod.ZodObject<{
9261
9291
  version: zod.ZodString;
@@ -9672,6 +9702,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9672
9702
  delay: zod.ZodOptional<zod.ZodString>;
9673
9703
  pause: zod.ZodOptional<zod.ZodBoolean>;
9674
9704
  explain: zod.ZodOptional<zod.ZodBoolean>;
9705
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
9675
9706
  }, zod_v4_core.$strict>>;
9676
9707
  }, zod_v4_core.$strict>;
9677
9708
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
@@ -9691,6 +9722,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9691
9722
  delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
9692
9723
  pause: zod.ZodOptional<zod.ZodBoolean>;
9693
9724
  explain: zod.ZodOptional<zod.ZodBoolean>;
9725
+ proxyBypass: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodArray<zod.ZodString>, zod.ZodLiteral<false>]>>;
9694
9726
  }, zod_v4_core.$strict>>;
9695
9727
  }, zod_v4_core.$strict>, zod.ZodObject<{
9696
9728
  action: zod.ZodLiteral<"updated">;
@@ -9843,6 +9875,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
9843
9875
  delay: zod.ZodOptional<zod.ZodString>;
9844
9876
  pause: zod.ZodOptional<zod.ZodBoolean>;
9845
9877
  explain: zod.ZodOptional<zod.ZodBoolean>;
9878
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
9846
9879
  }, zod_v4_core.$strict>>;
9847
9880
  }, zod_v4_core.$strict>;
9848
9881
  }, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
@@ -10495,6 +10528,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
10495
10528
  delay: zod.ZodOptional<zod.ZodString>;
10496
10529
  pause: zod.ZodOptional<zod.ZodBoolean>;
10497
10530
  explain: zod.ZodOptional<zod.ZodBoolean>;
10531
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
10498
10532
  }, zod_v4_core.$strict>>;
10499
10533
  path: zod.ZodString;
10500
10534
  configProfile: zod.ZodOptional<zod.ZodString>;
@@ -10728,6 +10762,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
10728
10762
  delay: zod.ZodOptional<zod.ZodString>;
10729
10763
  pause: zod.ZodOptional<zod.ZodBoolean>;
10730
10764
  explain: zod.ZodOptional<zod.ZodBoolean>;
10765
+ proxyBypass: zod.ZodOptional<zod.ZodArray<zod.ZodString>>;
10731
10766
  }, zod_v4_core.$strict>>;
10732
10767
  path: zod.ZodString;
10733
10768
  configProfile: zod.ZodOptional<zod.ZodString>;
@@ -12002,6 +12037,7 @@ declare const ConfigProfileAddOutputSchema: z.ZodObject<{
12002
12037
  delay: z.ZodOptional<z.ZodString>;
12003
12038
  pause: z.ZodOptional<z.ZodBoolean>;
12004
12039
  explain: z.ZodOptional<z.ZodBoolean>;
12040
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
12005
12041
  }, z.core.$strict>>;
12006
12042
  }, z.core.$strict>;
12007
12043
  }, z.core.$strict>;
@@ -12022,6 +12058,7 @@ declare const ConfigProfileSetInputSchema: z.ZodObject<{
12022
12058
  delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
12023
12059
  pause: z.ZodOptional<z.ZodBoolean>;
12024
12060
  explain: z.ZodOptional<z.ZodBoolean>;
12061
+ proxyBypass: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodString>, z.ZodLiteral<false>]>>;
12025
12062
  }, z.core.$strict>>;
12026
12063
  }, z.core.$strict>;
12027
12064
  declare const ConfigProfileSetOutputSchema: z.ZodObject<{
@@ -12175,6 +12212,7 @@ declare const ConfigProfileSetOutputSchema: z.ZodObject<{
12175
12212
  delay: z.ZodOptional<z.ZodString>;
12176
12213
  pause: z.ZodOptional<z.ZodBoolean>;
12177
12214
  explain: z.ZodOptional<z.ZodBoolean>;
12215
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
12178
12216
  }, z.core.$strict>>;
12179
12217
  }, z.core.$strict>;
12180
12218
  }, z.core.$strict>;
@@ -12829,6 +12867,7 @@ declare const ConfigRuleAddOutputSchema: z.ZodObject<{
12829
12867
  delay: z.ZodOptional<z.ZodString>;
12830
12868
  pause: z.ZodOptional<z.ZodBoolean>;
12831
12869
  explain: z.ZodOptional<z.ZodBoolean>;
12870
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
12832
12871
  }, z.core.$strict>>;
12833
12872
  path: z.ZodString;
12834
12873
  configProfile: z.ZodOptional<z.ZodString>;
@@ -13064,6 +13103,7 @@ declare const ConfigRuleSetOutputSchema: z.ZodObject<{
13064
13103
  delay: z.ZodOptional<z.ZodString>;
13065
13104
  pause: z.ZodOptional<z.ZodBoolean>;
13066
13105
  explain: z.ZodOptional<z.ZodBoolean>;
13106
+ proxyBypass: z.ZodOptional<z.ZodArray<z.ZodString>>;
13067
13107
  }, z.core.$strict>>;
13068
13108
  path: z.ZodString;
13069
13109
  configProfile: z.ZodOptional<z.ZodString>;
@@ -13368,6 +13408,7 @@ declare const FrontDoorStatusOutputSchema: z.ZodObject<{
13368
13408
  lastError: z.ZodOptional<z.ZodString>;
13369
13409
  }, z.core.$strict>;
13370
13410
  supervisorAlive: z.ZodBoolean;
13411
+ draining: z.ZodReadonly<z.ZodArray<z.ZodNumber>>;
13371
13412
  sessions: z.ZodReadonly<z.ZodArray<z.ZodObject<{
13372
13413
  pid: z.ZodInt;
13373
13414
  startedAt: z.ZodNumber;
@@ -13555,6 +13596,7 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
13555
13596
  pause: z.ZodBoolean;
13556
13597
  explain: z.ZodBoolean;
13557
13598
  delayMs: z.ZodNumber;
13599
+ proxyBypass: z.ZodReadonly<z.ZodArray<z.ZodString>>;
13558
13600
  }, z.core.$strict>;
13559
13601
  claudeVersion: z.ZodOptional<z.ZodObject<{
13560
13602
  version: z.ZodString;
@@ -13876,6 +13918,16 @@ declare function readRcSelfHostRecord(fs: Pick<FarmFs, "readFileUtf8">, frontdoo
13876
13918
  */
13877
13919
  declare function mintRcSelfHostCredential(deps: RcSelfHostMintDeps): RcSelfHostMintResult;
13878
13920
 
13921
+ /**
13922
+ * Why a launcher asked a running front door to exit. A closed set, so a log line can be grouped by it and a new cause has to be named here before it can be sent:
13923
+ *
13924
+ * `restart-command` is `agent-shim frontdoor restart`; `update-restart` is the restart `agent-shim update --restart-door` makes after installing a new binary; `protocol-older` is a launch finding a door that speaks an older protocol than its own; `probe-failed-restart` is a restart that found the door not answering; `probe-failed-idle` is a launch that found the door not answering while no other session was registered against it.
13925
+ */
13926
+ declare const REPLACEMENT_REASONS: readonly ["restart-command", "update-restart", "protocol-older", "probe-failed-restart", "probe-failed-idle"];
13927
+ type ReplacementReason = (typeof REPLACEMENT_REASONS)[number];
13928
+ /** The reasons a caller may ask for a deliberate replacement with, as opposed to the ones a launch finds for itself. */
13929
+ type RequestedReplacementReason = Extract<ReplacementReason, "restart-command" | "update-restart">;
13930
+
13879
13931
  /** Raised when the front door cannot be brought up in time or has recorded a fatal error: a routed launch has no other way to reach its provider, so it must fail rather than start a session that can never answer. */
13880
13932
  declare class FrontDoorStartError extends CliError {
13881
13933
  constructor(message: string);
@@ -13893,6 +13945,8 @@ interface EnsureFrontDoorPorts {
13893
13945
  readonly verifyListener: (port: number) => ListenerVerdict;
13894
13946
  /** Asks a running front-door supervisor to exit, without waiting for it to: the caller polls `isRunning`. Only ever called for a pid whose recorded listener has just authenticated as agent-shim's own, or whose process is agent-shim's front-door supervisor (`isFrontDoorSupervisor`). */
13895
13947
  readonly stopSupervisor: (pid: number) => void;
13948
+ /** Appends one line to the front door's own log. Called before every signal sent to a door, so the door's log names the cause of its own exit. */
13949
+ readonly recordReplacement: (line: string) => void;
13896
13950
  /** Ends a supervisor that did not exit when asked to, without giving it the chance to refuse: a door whose event loop is blocked never runs its signal handler. Called only for a pid `isFrontDoorSupervisor` has just confirmed, after `stopSupervisor` and a grace period. */
13897
13951
  readonly killSupervisor: (pid: number) => void;
13898
13952
  /** Whether `pid` is a live agent-shim front-door supervisor process, read from the process's own command line. This is what separates a wedged door of this tool, which a replacement must retire so the two never coexist, from an unrelated process that reuses the recorded pid, which must never be signalled. */
@@ -13907,8 +13961,8 @@ declare function ensureFrontDoor(params: {
13907
13961
  readonly paths: LayoutPaths;
13908
13962
  readonly launcherPid: number;
13909
13963
  readonly ports: EnsureFrontDoorPorts;
13910
- /** Replaces a serving door whatever its protocol, once: the restart a binary update asks for, so the new generation serves the sessions already running without waiting for the registry to empty. */
13911
- readonly replace?: boolean;
13964
+ /** Replaces a serving door whatever its protocol, once, and names why: `update-restart` is the restart a binary update asks for, so the new generation serves the sessions already running without waiting for the registry to empty, and `restart-command` is the deliberate `frontdoor restart`. */
13965
+ readonly replace?: RequestedReplacementReason;
13912
13966
  /** What this launch tells the door about itself beyond its token: the id its requests carry in their session header, and the models block it resolved when it added definitions of its own to the global one. Recorded in the launch's registry entry, so it lives and is pruned with the launch. */
13913
13967
  readonly session?: FrontDoorSessionDetails;
13914
13968
  }): {
@@ -13930,6 +13984,8 @@ interface FrontDoorListenerHandle {
13930
13984
  readonly port: number;
13931
13985
  /** Stops accepting, ends every live connection, and resolves once the port is released. */
13932
13986
  readonly close: () => Promise<void>;
13987
+ /** Releases the port at once (before the first await) and leaves the work already in progress to finish; resolves when the listener has nothing left to carry. */
13988
+ readonly drain: () => Promise<void>;
13933
13989
  }
13934
13990
  /**
13935
13991
  * The file identity of the executable this supervisor was spawned from, everything that distinguishes one installed binary from its replacement at the same path: `agent-shim update` installs by rename, so a newer release on disk is a different inode there, and the turnover check is a plain identity comparison rather than a version query (which would mean spawning a subprocess once per tick).
@@ -13967,13 +14023,19 @@ interface FrontDoorSupervisorPorts {
13967
14023
  */
13968
14024
  readonly startDirectListener: (preferredPort: number | undefined) => Promise<FrontDoorListenerHandle>;
13969
14025
  /**
13970
- * Stops the Remote Control stream hub: persists every live attachment's sequence cursor synchronously, then frees the dials. Called exactly once on every exit the supervisor owns, after every listener it started is down (a live listener could still settle an observed Remote Control exchange, and the reconcile that follows would re-attach a stream the close had just ended) and before the final state write and the process's exit.
14026
+ * Stops the Remote Control stream hub: persists every live attachment's sequence cursor synchronously, then frees the dials. Called exactly once on every exit the supervisor owns, after every listener has stopped accepting. A closing exit has every listener down by then; a drain still has responses settling, which is safe because the hub refuses to attach once it is closed (otherwise the reconcile after an observed exchange would re-attach a stream the close had just ended).
13971
14027
  */
13972
14028
  readonly closeRcStreamHub: () => void;
13973
14029
  /**
13974
14030
  * Starts the watchdog that ends this process when its main event loop stops running: it lives on its own thread, so a loop that is blocked cannot stall it. The supervisor beats it every tick and stops it before it begins to retire, so it only ever judges a door that is meant to be serving. Optional because ending the process is only right when the process is the door: the CLI's `__frontdoor-supervisor` supplies it, and a library host that runs the door inside its own process does not get its application killed by default.
13975
14031
  */
13976
14032
  readonly startWatchdog?: () => DoorWatchdog;
14033
+ /**
14034
+ * Aborted when the process is asked to exit (the CLI's `__frontdoor-supervisor` aborts it on its first SIGTERM or SIGINT). The door then retires by draining: it releases its listening addresses at once, so a successor can bind the same sticky ports, ends what holds its own routing state, and stays up only as long as the connections it still carries (blind tunnels, a response being streamed) take to end. Optional for a host that decides when the door stops by other means.
14035
+ */
14036
+ readonly retire?: AbortSignal;
14037
+ /** Stops the work the door runs on its own account rather than for a request (the usage, window, job and catalogue keepers), called once when a drain begins so the successor's are the only ones acting. Optional because a host without such work has nothing to stop. */
14038
+ readonly stopBackgroundWork?: () => void;
13977
14039
  /**
13978
14040
  * Reports one tick's session-registry facts to the door's event backbone: the sessions the tick's listing saw (taken before the prune, so a pruned launch's record is still there to name its start time) and the pids the tick's prune removed. The launch lifecycle publisher turns the diff between ticks into source-tagged events; the listing is also this loop's own idle input, so the two read one fact instead of two.
13979
14041
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-use",
3
- "version": "11.47.0",
3
+ "version": "11.49.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>",