claude-use 11.5.1 → 11.5.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 +22 -2
- package/dist/index.cjs +22 -2
- package/dist/index.mjs +22 -2
- package/dist/types/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -33976,7 +33976,7 @@ var init_package = __esm({
|
|
|
33976
33976
|
"package.json"() {
|
|
33977
33977
|
package_default = {
|
|
33978
33978
|
name: "claude-use",
|
|
33979
|
-
version: "11.5.
|
|
33979
|
+
version: "11.5.2",
|
|
33980
33980
|
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.",
|
|
33981
33981
|
license: "MIT",
|
|
33982
33982
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -61821,7 +61821,13 @@ function ensureFrontDoor(params) {
|
|
|
61821
61821
|
};
|
|
61822
61822
|
const stopAndAwaitExit = (supervisorPid, failure2) => {
|
|
61823
61823
|
ports.stopSupervisor(supervisorPid);
|
|
61824
|
+
const graceEnds = ports.now() + FRONTDOOR_EXIT_GRACE_MS;
|
|
61825
|
+
let killed = false;
|
|
61824
61826
|
while (ports.isRunning(supervisorPid)) {
|
|
61827
|
+
if (!killed && ports.now() >= graceEnds) {
|
|
61828
|
+
ports.killSupervisor(supervisorPid);
|
|
61829
|
+
killed = true;
|
|
61830
|
+
}
|
|
61825
61831
|
if (ports.now() >= deadline) {
|
|
61826
61832
|
throw new FrontDoorStartError(`${failure2}. Daemon log: ${paths.frontdoorLogPath}`);
|
|
61827
61833
|
}
|
|
@@ -61833,6 +61839,11 @@ function ensureFrontDoor(params) {
|
|
|
61833
61839
|
const supervisorPid = state?.supervisorPid;
|
|
61834
61840
|
if (supervisorPid !== void 0 && !distrusted.has(supervisorPid) && ports.isRunning(supervisorPid)) {
|
|
61835
61841
|
if (state?.port !== void 0 && state.connectPort !== void 0) {
|
|
61842
|
+
if (supervisorPid === params.launcherPid && params.replace !== true && ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
61843
|
+
const token = (0, import_node_crypto10.randomUUID)();
|
|
61844
|
+
writeFrontDoorSession(ports.fs, paths.frontdoorSessionsDir, { pid: params.launcherPid, startedAt: ports.now(), token, supervisorPid });
|
|
61845
|
+
return { port: state.port, connectPort: state.connectPort, token };
|
|
61846
|
+
}
|
|
61836
61847
|
const verdict = verifyWithRetry(state.port);
|
|
61837
61848
|
if (verdict.ok && !replaced && !spawned && (params.replace === true || (state.protocol ?? 0) < FRONT_DOOR_PROTOCOL)) {
|
|
61838
61849
|
stopAndAwaitExit(
|
|
@@ -61853,6 +61864,11 @@ function ensureFrontDoor(params) {
|
|
|
61853
61864
|
}
|
|
61854
61865
|
if (ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
61855
61866
|
const stranded = liveSessionsOn(supervisorPid);
|
|
61867
|
+
if (params.replace === true && !replaced) {
|
|
61868
|
+
stopAndAwaitExit(supervisorPid, `the front door (pid ${String(supervisorPid)}) stopped answering and did not exit when asked to`);
|
|
61869
|
+
replaced = true;
|
|
61870
|
+
continue;
|
|
61871
|
+
}
|
|
61856
61872
|
if (stranded > 0) {
|
|
61857
61873
|
busyDoor = { pid: supervisorPid, sessions: stranded };
|
|
61858
61874
|
} else {
|
|
@@ -61908,7 +61924,7 @@ function restartFrontDoor(params) {
|
|
|
61908
61924
|
}
|
|
61909
61925
|
return { action: "restarted", previousPid, pid };
|
|
61910
61926
|
}
|
|
61911
|
-
var import_node_crypto10, FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FrontDoorStartError;
|
|
61927
|
+
var import_node_crypto10, FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FRONTDOOR_EXIT_GRACE_MS, FrontDoorStartError;
|
|
61912
61928
|
var init_ensure2 = __esm({
|
|
61913
61929
|
"src/frontdoor/ensure.ts"() {
|
|
61914
61930
|
"use strict";
|
|
@@ -61919,6 +61935,7 @@ var init_ensure2 = __esm({
|
|
|
61919
61935
|
FRONTDOOR_START_TIMEOUT_MS = 3e4;
|
|
61920
61936
|
FRONTDOOR_LAUNCHER_POLL_MS = 100;
|
|
61921
61937
|
FRONTDOOR_PROBE_ATTEMPTS = 3;
|
|
61938
|
+
FRONTDOOR_EXIT_GRACE_MS = 5e3;
|
|
61922
61939
|
FrontDoorStartError = class extends CliError {
|
|
61923
61940
|
constructor(message) {
|
|
61924
61941
|
super(message);
|
|
@@ -62048,6 +62065,9 @@ function realEnsurePorts(paths, spawnDaemon) {
|
|
|
62048
62065
|
stopSupervisor: (pid) => {
|
|
62049
62066
|
process.kill(pid, "SIGTERM");
|
|
62050
62067
|
},
|
|
62068
|
+
killSupervisor: (pid) => {
|
|
62069
|
+
process.kill(pid, "SIGKILL");
|
|
62070
|
+
},
|
|
62051
62071
|
// Read fresh for each probe: a replacement supervisor may have regenerated an unparseable CA, and the probe must trust exactly what the serving door's leaf chains to.
|
|
62052
62072
|
verifyListener: (port) => probeFrontDoorSync(port, import_node_fs13.default.readFileSync(paths.frontdoorCaCertFile, "utf8"))
|
|
62053
62073
|
};
|
package/dist/index.cjs
CHANGED
|
@@ -2758,7 +2758,7 @@ var init_package = __esm({
|
|
|
2758
2758
|
"package.json"() {
|
|
2759
2759
|
package_default = {
|
|
2760
2760
|
name: "claude-use",
|
|
2761
|
-
version: "11.5.
|
|
2761
|
+
version: "11.5.2",
|
|
2762
2762
|
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.",
|
|
2763
2763
|
license: "MIT",
|
|
2764
2764
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6772,7 +6772,13 @@ function ensureFrontDoor(params) {
|
|
|
6772
6772
|
};
|
|
6773
6773
|
const stopAndAwaitExit = (supervisorPid, failure) => {
|
|
6774
6774
|
ports.stopSupervisor(supervisorPid);
|
|
6775
|
+
const graceEnds = ports.now() + FRONTDOOR_EXIT_GRACE_MS;
|
|
6776
|
+
let killed = false;
|
|
6775
6777
|
while (ports.isRunning(supervisorPid)) {
|
|
6778
|
+
if (!killed && ports.now() >= graceEnds) {
|
|
6779
|
+
ports.killSupervisor(supervisorPid);
|
|
6780
|
+
killed = true;
|
|
6781
|
+
}
|
|
6776
6782
|
if (ports.now() >= deadline) {
|
|
6777
6783
|
throw new FrontDoorStartError(`${failure}. Daemon log: ${paths.frontdoorLogPath}`);
|
|
6778
6784
|
}
|
|
@@ -6784,6 +6790,11 @@ function ensureFrontDoor(params) {
|
|
|
6784
6790
|
const supervisorPid = state?.supervisorPid;
|
|
6785
6791
|
if (supervisorPid !== void 0 && !distrusted.has(supervisorPid) && ports.isRunning(supervisorPid)) {
|
|
6786
6792
|
if (state?.port !== void 0 && state.connectPort !== void 0) {
|
|
6793
|
+
if (supervisorPid === params.launcherPid && params.replace !== true && ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
6794
|
+
const token = (0, import_node_crypto9.randomUUID)();
|
|
6795
|
+
writeFrontDoorSession(ports.fs, paths.frontdoorSessionsDir, { pid: params.launcherPid, startedAt: ports.now(), token, supervisorPid });
|
|
6796
|
+
return { port: state.port, connectPort: state.connectPort, token };
|
|
6797
|
+
}
|
|
6787
6798
|
const verdict = verifyWithRetry(state.port);
|
|
6788
6799
|
if (verdict.ok && !replaced && !spawned && (params.replace === true || (state.protocol ?? 0) < FRONT_DOOR_PROTOCOL)) {
|
|
6789
6800
|
stopAndAwaitExit(
|
|
@@ -6804,6 +6815,11 @@ function ensureFrontDoor(params) {
|
|
|
6804
6815
|
}
|
|
6805
6816
|
if (ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
6806
6817
|
const stranded = liveSessionsOn(supervisorPid);
|
|
6818
|
+
if (params.replace === true && !replaced) {
|
|
6819
|
+
stopAndAwaitExit(supervisorPid, `the front door (pid ${String(supervisorPid)}) stopped answering and did not exit when asked to`);
|
|
6820
|
+
replaced = true;
|
|
6821
|
+
continue;
|
|
6822
|
+
}
|
|
6807
6823
|
if (stranded > 0) {
|
|
6808
6824
|
busyDoor = { pid: supervisorPid, sessions: stranded };
|
|
6809
6825
|
} else {
|
|
@@ -6842,7 +6858,7 @@ function ensureFrontDoor(params) {
|
|
|
6842
6858
|
ports.sleep(FRONTDOOR_LAUNCHER_POLL_MS);
|
|
6843
6859
|
}
|
|
6844
6860
|
}
|
|
6845
|
-
var import_node_crypto9, FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FrontDoorStartError;
|
|
6861
|
+
var import_node_crypto9, FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FRONTDOOR_EXIT_GRACE_MS, FrontDoorStartError;
|
|
6846
6862
|
var init_ensure2 = __esm({
|
|
6847
6863
|
"src/frontdoor/ensure.ts"() {
|
|
6848
6864
|
"use strict";
|
|
@@ -6853,6 +6869,7 @@ var init_ensure2 = __esm({
|
|
|
6853
6869
|
FRONTDOOR_START_TIMEOUT_MS = 3e4;
|
|
6854
6870
|
FRONTDOOR_LAUNCHER_POLL_MS = 100;
|
|
6855
6871
|
FRONTDOOR_PROBE_ATTEMPTS = 3;
|
|
6872
|
+
FRONTDOOR_EXIT_GRACE_MS = 5e3;
|
|
6856
6873
|
FrontDoorStartError = class extends CliError {
|
|
6857
6874
|
constructor(message) {
|
|
6858
6875
|
super(message);
|
|
@@ -8140,6 +8157,9 @@ function realEnsurePorts(paths, spawnDaemon) {
|
|
|
8140
8157
|
stopSupervisor: (pid) => {
|
|
8141
8158
|
process.kill(pid, "SIGTERM");
|
|
8142
8159
|
},
|
|
8160
|
+
killSupervisor: (pid) => {
|
|
8161
|
+
process.kill(pid, "SIGKILL");
|
|
8162
|
+
},
|
|
8143
8163
|
// Read fresh for each probe: a replacement supervisor may have regenerated an unparseable CA, and the probe must trust exactly what the serving door's leaf chains to.
|
|
8144
8164
|
verifyListener: (port) => probeFrontDoorSync(port, import_node_fs11.default.readFileSync(paths.frontdoorCaCertFile, "utf8"))
|
|
8145
8165
|
};
|
package/dist/index.mjs
CHANGED
|
@@ -2734,7 +2734,7 @@ var init_package = __esm({
|
|
|
2734
2734
|
"package.json"() {
|
|
2735
2735
|
package_default = {
|
|
2736
2736
|
name: "claude-use",
|
|
2737
|
-
version: "11.5.
|
|
2737
|
+
version: "11.5.2",
|
|
2738
2738
|
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.",
|
|
2739
2739
|
license: "MIT",
|
|
2740
2740
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6746,7 +6746,13 @@ function ensureFrontDoor(params) {
|
|
|
6746
6746
|
};
|
|
6747
6747
|
const stopAndAwaitExit = (supervisorPid, failure) => {
|
|
6748
6748
|
ports.stopSupervisor(supervisorPid);
|
|
6749
|
+
const graceEnds = ports.now() + FRONTDOOR_EXIT_GRACE_MS;
|
|
6750
|
+
let killed = false;
|
|
6749
6751
|
while (ports.isRunning(supervisorPid)) {
|
|
6752
|
+
if (!killed && ports.now() >= graceEnds) {
|
|
6753
|
+
ports.killSupervisor(supervisorPid);
|
|
6754
|
+
killed = true;
|
|
6755
|
+
}
|
|
6750
6756
|
if (ports.now() >= deadline) {
|
|
6751
6757
|
throw new FrontDoorStartError(`${failure}. Daemon log: ${paths.frontdoorLogPath}`);
|
|
6752
6758
|
}
|
|
@@ -6758,6 +6764,11 @@ function ensureFrontDoor(params) {
|
|
|
6758
6764
|
const supervisorPid = state?.supervisorPid;
|
|
6759
6765
|
if (supervisorPid !== void 0 && !distrusted.has(supervisorPid) && ports.isRunning(supervisorPid)) {
|
|
6760
6766
|
if (state?.port !== void 0 && state.connectPort !== void 0) {
|
|
6767
|
+
if (supervisorPid === params.launcherPid && params.replace !== true && ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
6768
|
+
const token = randomUUID3();
|
|
6769
|
+
writeFrontDoorSession(ports.fs, paths.frontdoorSessionsDir, { pid: params.launcherPid, startedAt: ports.now(), token, supervisorPid });
|
|
6770
|
+
return { port: state.port, connectPort: state.connectPort, token };
|
|
6771
|
+
}
|
|
6761
6772
|
const verdict = verifyWithRetry(state.port);
|
|
6762
6773
|
if (verdict.ok && !replaced && !spawned && (params.replace === true || (state.protocol ?? 0) < FRONT_DOOR_PROTOCOL)) {
|
|
6763
6774
|
stopAndAwaitExit(
|
|
@@ -6778,6 +6789,11 @@ function ensureFrontDoor(params) {
|
|
|
6778
6789
|
}
|
|
6779
6790
|
if (ports.isFrontDoorSupervisor(supervisorPid)) {
|
|
6780
6791
|
const stranded = liveSessionsOn(supervisorPid);
|
|
6792
|
+
if (params.replace === true && !replaced) {
|
|
6793
|
+
stopAndAwaitExit(supervisorPid, `the front door (pid ${String(supervisorPid)}) stopped answering and did not exit when asked to`);
|
|
6794
|
+
replaced = true;
|
|
6795
|
+
continue;
|
|
6796
|
+
}
|
|
6781
6797
|
if (stranded > 0) {
|
|
6782
6798
|
busyDoor = { pid: supervisorPid, sessions: stranded };
|
|
6783
6799
|
} else {
|
|
@@ -6816,7 +6832,7 @@ function ensureFrontDoor(params) {
|
|
|
6816
6832
|
ports.sleep(FRONTDOOR_LAUNCHER_POLL_MS);
|
|
6817
6833
|
}
|
|
6818
6834
|
}
|
|
6819
|
-
var FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FrontDoorStartError;
|
|
6835
|
+
var FRONTDOOR_START_TIMEOUT_MS, FRONTDOOR_LAUNCHER_POLL_MS, FRONTDOOR_PROBE_ATTEMPTS, FRONTDOOR_EXIT_GRACE_MS, FrontDoorStartError;
|
|
6820
6836
|
var init_ensure2 = __esm({
|
|
6821
6837
|
"src/frontdoor/ensure.ts"() {
|
|
6822
6838
|
"use strict";
|
|
@@ -6826,6 +6842,7 @@ var init_ensure2 = __esm({
|
|
|
6826
6842
|
FRONTDOOR_START_TIMEOUT_MS = 3e4;
|
|
6827
6843
|
FRONTDOOR_LAUNCHER_POLL_MS = 100;
|
|
6828
6844
|
FRONTDOOR_PROBE_ATTEMPTS = 3;
|
|
6845
|
+
FRONTDOOR_EXIT_GRACE_MS = 5e3;
|
|
6829
6846
|
FrontDoorStartError = class extends CliError {
|
|
6830
6847
|
constructor(message) {
|
|
6831
6848
|
super(message);
|
|
@@ -8112,6 +8129,9 @@ function realEnsurePorts(paths, spawnDaemon) {
|
|
|
8112
8129
|
stopSupervisor: (pid) => {
|
|
8113
8130
|
process.kill(pid, "SIGTERM");
|
|
8114
8131
|
},
|
|
8132
|
+
killSupervisor: (pid) => {
|
|
8133
|
+
process.kill(pid, "SIGKILL");
|
|
8134
|
+
},
|
|
8115
8135
|
// Read fresh for each probe: a replacement supervisor may have regenerated an unparseable CA, and the probe must trust exactly what the serving door's leaf chains to.
|
|
8116
8136
|
verifyListener: (port) => probeFrontDoorSync(port, fs11.readFileSync(paths.frontdoorCaCertFile, "utf8"))
|
|
8117
8137
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -12533,6 +12533,8 @@ interface EnsureFrontDoorPorts {
|
|
|
12533
12533
|
readonly verifyListener: (port: number) => ListenerVerdict;
|
|
12534
12534
|
/** 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`). */
|
|
12535
12535
|
readonly stopSupervisor: (pid: number) => void;
|
|
12536
|
+
/** 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. */
|
|
12537
|
+
readonly killSupervisor: (pid: number) => void;
|
|
12536
12538
|
/** 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. */
|
|
12537
12539
|
readonly isFrontDoorSupervisor: (pid: number) => boolean;
|
|
12538
12540
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-use",
|
|
3
|
-
"version": "11.5.
|
|
3
|
+
"version": "11.5.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>",
|