claude-use 11.62.2 → 11.62.3
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 +71 -33
- package/dist/index.cjs +1 -2
- package/dist/index.mjs +1 -2
- package/dist/types/index.d.ts +24 -26
- package/package.json +1 -1
package/dist/cli.cjs
CHANGED
|
@@ -36471,7 +36471,6 @@ async function serveFrontDoor(idleShutdownMinutes, ports, options) {
|
|
|
36471
36471
|
return 0;
|
|
36472
36472
|
};
|
|
36473
36473
|
for (; ; ) {
|
|
36474
|
-
watchdog?.beat();
|
|
36475
36474
|
if (ports.retire?.aborted === true) {
|
|
36476
36475
|
return await retireByDrain();
|
|
36477
36476
|
}
|
|
@@ -37032,7 +37031,7 @@ var init_package = __esm({
|
|
|
37032
37031
|
"package.json"() {
|
|
37033
37032
|
package_default = {
|
|
37034
37033
|
name: "claude-use",
|
|
37035
|
-
version: "11.62.
|
|
37034
|
+
version: "11.62.3",
|
|
37036
37035
|
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.",
|
|
37037
37036
|
license: "MIT",
|
|
37038
37037
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -136861,12 +136860,19 @@ const { workerData, parentPort } = require("node:worker_threads");
|
|
|
136861
136860
|
const fs = require("node:fs");
|
|
136862
136861
|
const os = require("node:os");
|
|
136863
136862
|
const inspector = require("node:inspector");
|
|
136864
|
-
const { shared, boundMs, checkEveryMs, pauseWaitMs, stateFile, ownPid, action, logFile, respawn, respawnGeneration, respawnMaxGeneration, cooldownStepMs, cooldownCapMs, startLockFile, awaitPidEnv, respawnGenerationEnv, delayEnv, nativeSample } = workerData;
|
|
136863
|
+
const { shared, boundMs, checkEveryMs, pauseWaitMs, stateFile, ownPid, action, logFile, respawn, respawnGeneration, respawnMaxGeneration, cooldownStepMs, cooldownCapMs, startLockFile, awaitPidEnv, respawnGenerationEnv, delayEnv, nativeSample, machineLoad } = workerData;
|
|
136865
136864
|
const counter = new Int32Array(shared);
|
|
136866
136865
|
let lastValue = Atomics.load(counter, 0);
|
|
136867
136866
|
let lastChangeAt = Date.now();
|
|
136868
136867
|
let lastCheckAt = Date.now();
|
|
136868
|
+
// The processor time the machine's load left the main thread since the counter last moved: what the bound is judged against.
|
|
136869
|
+
let scheduledMs = 0;
|
|
136870
|
+
// Set once a silence has outlasted the bound in wall time while the counted time has not, so the wait is logged once and its end is logged too.
|
|
136871
|
+
let waitingOutStarvation = false;
|
|
136869
136872
|
let stopped = false;
|
|
136873
|
+
const readLoad = () => machineLoad === undefined ? { loadAverage: os.loadavg()[0], cpus: os.cpus().length } : machineLoad;
|
|
136874
|
+
const processorShare = (reading) => reading.loadAverage <= reading.cpus ? 1 : reading.cpus / reading.loadAverage;
|
|
136875
|
+
const describeLoad = (reading) => reading.loadAverage.toFixed(1) + " across " + String(reading.cpus) + " cpus";
|
|
136870
136876
|
const record = (message) => {
|
|
136871
136877
|
try {
|
|
136872
136878
|
const existing = JSON.parse(fs.readFileSync(stateFile, "utf8"));
|
|
@@ -136886,6 +136892,7 @@ const log = (line) => {
|
|
|
136886
136892
|
// Nowhere left to report a failed log write to; the process still has to end.
|
|
136887
136893
|
}
|
|
136888
136894
|
};
|
|
136895
|
+
const MS_PER_SECOND = 1000;
|
|
136889
136896
|
// Enough of the stack to read the caller chain from the timer or socket callback down to the call that held the loop.
|
|
136890
136897
|
const STACK_FRAMES_LOGGED = 12;
|
|
136891
136898
|
// Asks the main thread where it is, through the inspector: a pause request interrupts JavaScript that is running (a loop, or a synchronous call that can be interrupted), so the top frames name what held the loop. A main thread that cannot be paused within the wait is not at such a point (it is idle in the event loop, which means it was not scheduled, or blocked inside a native call), and the answer says so rather than guessing. \`resume\` lets a thread that is not about to be killed run on again.
|
|
@@ -136981,22 +136988,37 @@ const spawnReplacement = () => {
|
|
|
136981
136988
|
log("could not start a replacement door: " + (error instanceof Error ? error.message : String(error)));
|
|
136982
136989
|
}
|
|
136983
136990
|
};
|
|
136984
|
-
// Captures where a main thread that could not be paused is held natively, with the platform's own sampler, so a stall the inspector cannot name still leaves a stack to read. The wait is
|
|
136991
|
+
// Captures where a main thread that could not be paused is held natively, with the platform's own sampler, so a stall the inspector cannot name still leaves a stack to read. The wait is the sampling time plus the sampler's start-up and symbolication, stretched by the processor share the machine's load leaves it, and the capture never delays the process ending beyond that. The sampler writes its report only once it has finished, so one ended at the deadline, or one that failed, leaves no file, and the log says which rather than naming a file that is not there.
|
|
136985
136992
|
const takeNativeSample = () => new Promise((resolve) => {
|
|
136986
136993
|
if (nativeSample === undefined) { resolve(); return; }
|
|
136987
136994
|
try {
|
|
136988
136995
|
fs.mkdirSync(nativeSample.directory, { recursive: true });
|
|
136989
136996
|
const file = require("node:path").join(nativeSample.directory, String(ownPid) + ".txt");
|
|
136990
136997
|
const args = nativeSample.args.map((arg) => arg.replace("{pid}", String(ownPid)).replace("{seconds}", String(nativeSample.seconds)).replace("{file}", file));
|
|
136991
|
-
const child = require("node:child_process").spawn(nativeSample.command, args, { stdio: "ignore" });
|
|
136992
|
-
|
|
136993
|
-
child.
|
|
136994
|
-
child.
|
|
136998
|
+
const child = require("node:child_process").spawn(nativeSample.command, args, { stdio: ["ignore", "ignore", "pipe"] });
|
|
136999
|
+
let stderr = "";
|
|
137000
|
+
child.stderr.setEncoding("utf8");
|
|
137001
|
+
child.stderr.on("data", (chunk) => { stderr += chunk; });
|
|
137002
|
+
let settled = false;
|
|
137003
|
+
const settle = (line) => {
|
|
137004
|
+
if (settled) return;
|
|
137005
|
+
settled = true;
|
|
136995
137006
|
clearTimeout(giveUp);
|
|
136996
|
-
log(
|
|
137007
|
+
log(line);
|
|
137008
|
+
resolve();
|
|
137009
|
+
};
|
|
137010
|
+
const deadlineMs = Math.ceil((nativeSample.seconds * MS_PER_SECOND + nativeSample.overheadMs) / processorShare(readLoad()));
|
|
137011
|
+
const giveUp = setTimeout(() => { child.kill(); settle("the native sampler did not finish within " + String(deadlineMs) + "ms, so no native stack was written"); }, deadlineMs);
|
|
137012
|
+
child.once("error", (error) => { settle("could not sample the main thread natively: " + error.message); });
|
|
137013
|
+
child.once("close", (code, signal) => {
|
|
137014
|
+
if (code !== 0 || !fs.existsSync(file)) {
|
|
137015
|
+
const detail = stderr.trim();
|
|
137016
|
+
settle("the native sampler " + (signal === null ? "exited with status " + String(code) : "was ended by " + signal) + " and wrote no native stack" + (detail === "" ? "" : ": " + detail));
|
|
137017
|
+
return;
|
|
137018
|
+
}
|
|
136997
137019
|
const kept = fs.readdirSync(nativeSample.directory).filter((name) => name.endsWith(".txt")).map((name) => ({ name, at: fs.statSync(require("node:path").join(nativeSample.directory, name)).mtimeMs })).sort((a, b) => b.at - a.at);
|
|
136998
137020
|
for (const old of kept.slice(nativeSample.keep)) fs.rmSync(require("node:path").join(nativeSample.directory, old.name), { force: true });
|
|
136999
|
-
|
|
137021
|
+
settle("native stack of the blocked main thread written to " + file);
|
|
137000
137022
|
});
|
|
137001
137023
|
} catch (error) {
|
|
137002
137024
|
log("could not sample the main thread natively: " + (error instanceof Error ? error.message : String(error)));
|
|
@@ -137010,29 +137032,40 @@ const timer = setInterval(() => {
|
|
|
137010
137032
|
lastCheckAt = now;
|
|
137011
137033
|
const value = Atomics.load(counter, 0);
|
|
137012
137034
|
if (value !== lastValue || sinceLastCheck > checkEveryMs * 2) {
|
|
137035
|
+
if (waitingOutStarvation && value !== lastValue) log("the front door's event loop ran again after " + String(now - lastChangeAt) + "ms; the machine's load had starved it, so the watchdog kept the door");
|
|
137036
|
+
waitingOutStarvation = false;
|
|
137013
137037
|
lastValue = value;
|
|
137014
137038
|
lastChangeAt = now;
|
|
137039
|
+
scheduledMs = 0;
|
|
137015
137040
|
return;
|
|
137016
137041
|
}
|
|
137017
|
-
|
|
137018
|
-
|
|
137019
|
-
|
|
137020
|
-
|
|
137021
|
-
|
|
137022
|
-
|
|
137023
|
-
|
|
137024
|
-
|
|
137025
|
-
|
|
137026
|
-
describeMainThread(pauseWaitMs, action !== "kill-process").then(async (where) => {
|
|
137027
|
-
log(where);
|
|
137028
|
-
if (where.startsWith("the main thread could not be paused")) await takeNativeSample();
|
|
137029
|
-
if (action === "kill-process") {
|
|
137030
|
-
process.kill(ownPid, "SIGKILL");
|
|
137031
|
-
} else {
|
|
137032
|
-
parentPort.postMessage({ stalled: true, message });
|
|
137033
|
-
}
|
|
137034
|
-
});
|
|
137042
|
+
const reading = readLoad();
|
|
137043
|
+
scheduledMs += sinceLastCheck * processorShare(reading);
|
|
137044
|
+
const silentMs = now - lastChangeAt;
|
|
137045
|
+
if (scheduledMs < boundMs) {
|
|
137046
|
+
if (silentMs >= boundMs && !waitingOutStarvation) {
|
|
137047
|
+
waitingOutStarvation = true;
|
|
137048
|
+
log("the front door's event loop has not run for " + String(silentMs) + "ms, but the machine's load (" + describeLoad(reading) + ") left it only " + String(Math.round(scheduledMs)) + "ms of processor time, so the watchdog waits until it has had " + String(boundMs) + "ms rather than replacing a door the machine did not schedule");
|
|
137049
|
+
}
|
|
137050
|
+
return;
|
|
137035
137051
|
}
|
|
137052
|
+
const message = "the front door's event loop did not run for " + String(silentMs) + "ms, " + String(Math.round(scheduledMs)) + "ms of it with a processor to run on; its watchdog ended the process so the next launch starts a fresh door on the same ports";
|
|
137053
|
+
stopped = true;
|
|
137054
|
+
clearInterval(timer);
|
|
137055
|
+
record(message);
|
|
137056
|
+
log(message);
|
|
137057
|
+
const [oneMinute, fiveMinutes, fifteenMinutes] = os.loadavg();
|
|
137058
|
+
log("machine load at the stall: " + oneMinute.toFixed(1) + " (1m), " + fiveMinutes.toFixed(1) + " (5m), " + fifteenMinutes.toFixed(1) + " (15m) across " + String(os.cpus().length) + " cpus");
|
|
137059
|
+
spawnReplacement();
|
|
137060
|
+
describeMainThread(pauseWaitMs, action !== "kill-process").then(async (where) => {
|
|
137061
|
+
log(where);
|
|
137062
|
+
if (where.startsWith("the main thread could not be paused")) await takeNativeSample();
|
|
137063
|
+
if (action === "kill-process") {
|
|
137064
|
+
process.kill(ownPid, "SIGKILL");
|
|
137065
|
+
} else {
|
|
137066
|
+
parentPort.postMessage({ stalled: true, message });
|
|
137067
|
+
}
|
|
137068
|
+
});
|
|
137036
137069
|
}, checkEveryMs);
|
|
137037
137070
|
parentPort.on("message", (message) => {
|
|
137038
137071
|
if (message === "stop") {
|
|
@@ -137047,9 +137080,13 @@ function startThreadWatchdog(params) {
|
|
|
137047
137080
|
const counter = new Int32Array(shared);
|
|
137048
137081
|
const worker = new import_node_worker_threads2.Worker(WATCHDOG_SOURCE, {
|
|
137049
137082
|
eval: true,
|
|
137050
|
-
workerData: { shared, boundMs: params.boundMs, checkEveryMs: params.checkEveryMs, pauseWaitMs: params.pauseWaitMs, stateFile: params.stateFile, ownPid: params.ownPid, action: params.action, logFile: params.logFile, respawn: params.respawn, respawnGeneration: params.respawnGeneration, respawnMaxGeneration: params.respawnMaxGeneration, cooldownStepMs: params.cooldownStepMs, cooldownCapMs: params.cooldownCapMs, startLockFile: params.startLockFile, awaitPidEnv: DOOR_AWAIT_PID_ENV, respawnGenerationEnv: DOOR_RESPAWN_GENERATION_ENV, delayEnv: DOOR_RESPAWN_DELAY_ENV, nativeSample: params.nativeSample }
|
|
137083
|
+
workerData: { shared, boundMs: params.boundMs, checkEveryMs: params.checkEveryMs, pauseWaitMs: params.pauseWaitMs, stateFile: params.stateFile, ownPid: params.ownPid, action: params.action, logFile: params.logFile, respawn: params.respawn, respawnGeneration: params.respawnGeneration, respawnMaxGeneration: params.respawnMaxGeneration, cooldownStepMs: params.cooldownStepMs, cooldownCapMs: params.cooldownCapMs, startLockFile: params.startLockFile, awaitPidEnv: DOOR_AWAIT_PID_ENV, respawnGenerationEnv: DOOR_RESPAWN_GENERATION_ENV, delayEnv: DOOR_RESPAWN_DELAY_ENV, nativeSample: params.nativeSample, machineLoad: params.machineLoad }
|
|
137051
137084
|
});
|
|
137052
137085
|
worker.unref();
|
|
137086
|
+
const beat = setInterval(() => {
|
|
137087
|
+
Atomics.add(counter, 0, 1);
|
|
137088
|
+
}, params.checkEveryMs);
|
|
137089
|
+
beat.unref();
|
|
137053
137090
|
worker.on("message", (message) => {
|
|
137054
137091
|
if (typeof message === "object" && message !== null && "message" in message && typeof message.message === "string") {
|
|
137055
137092
|
params.onReport?.(message.message);
|
|
@@ -137057,20 +137094,21 @@ function startThreadWatchdog(params) {
|
|
|
137057
137094
|
});
|
|
137058
137095
|
let stopped = false;
|
|
137059
137096
|
return {
|
|
137060
|
-
beat: () => {
|
|
137061
|
-
Atomics.add(counter, 0, 1);
|
|
137062
|
-
},
|
|
137063
137097
|
stop: () => {
|
|
137064
137098
|
if (stopped) {
|
|
137065
137099
|
return;
|
|
137066
137100
|
}
|
|
137067
137101
|
stopped = true;
|
|
137102
|
+
clearInterval(beat);
|
|
137068
137103
|
worker.postMessage("stop");
|
|
137069
137104
|
void worker.terminate();
|
|
137070
137105
|
}
|
|
137071
137106
|
};
|
|
137072
137107
|
}
|
|
137073
137108
|
|
|
137109
|
+
// src/frontdoor/commands.ts
|
|
137110
|
+
init_probe();
|
|
137111
|
+
|
|
137074
137112
|
// src/frontdoor/status.ts
|
|
137075
137113
|
init_socket();
|
|
137076
137114
|
init_state2();
|
|
@@ -137656,7 +137694,7 @@ function realFrontDoorSupervisorPorts(paths, respawnGeneration, retire, trackTun
|
|
|
137656
137694
|
cooldownStepMs: DOOR_STALL_BOUND_MS,
|
|
137657
137695
|
cooldownCapMs: DOOR_RESPAWN_COOLDOWN_CAP_MS,
|
|
137658
137696
|
startLockFile: paths.frontdoorLockFile,
|
|
137659
|
-
...process.platform === "darwin" ? { nativeSample: { command: MACOS_SAMPLER, args: ["{pid}", "{seconds}", "-file", "{file}"], directory: import_node_path52.default.join(import_node_path52.default.dirname(paths.frontdoorLogPath), "stall-samples"), seconds: Math.max(1, Math.ceil(DOOR_WATCHDOG_CHECK_MS / MS_PER_SECOND16)), keep: DOOR_RESPAWN_MAX_GENERATIONS + 1 } } : {}
|
|
137697
|
+
...process.platform === "darwin" ? { nativeSample: { command: MACOS_SAMPLER, args: ["{pid}", "{seconds}", "-file", "{file}"], directory: import_node_path52.default.join(import_node_path52.default.dirname(paths.frontdoorLogPath), "stall-samples"), seconds: Math.max(1, Math.ceil(DOOR_WATCHDOG_CHECK_MS / MS_PER_SECOND16)), overheadMs: PROBE_TIMEOUT_MS, keep: DOOR_RESPAWN_MAX_GENERATIONS + 1 } } : {}
|
|
137660
137698
|
}),
|
|
137661
137699
|
// 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.
|
|
137662
137700
|
observeLaunchRegistry: createLaunchEventPublisher(doorEvents, () => Date.now()).observe,
|
package/dist/index.cjs
CHANGED
|
@@ -4135,7 +4135,6 @@ async function serveFrontDoor(idleShutdownMinutes, ports, options) {
|
|
|
4135
4135
|
return 0;
|
|
4136
4136
|
};
|
|
4137
4137
|
for (; ; ) {
|
|
4138
|
-
watchdog?.beat();
|
|
4139
4138
|
if (ports.retire?.aborted === true) {
|
|
4140
4139
|
return await retireByDrain();
|
|
4141
4140
|
}
|
|
@@ -4652,7 +4651,7 @@ var init_package = __esm({
|
|
|
4652
4651
|
"package.json"() {
|
|
4653
4652
|
package_default = {
|
|
4654
4653
|
name: "claude-use",
|
|
4655
|
-
version: "11.62.
|
|
4654
|
+
version: "11.62.3",
|
|
4656
4655
|
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.",
|
|
4657
4656
|
license: "MIT",
|
|
4658
4657
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
package/dist/index.mjs
CHANGED
|
@@ -4112,7 +4112,6 @@ async function serveFrontDoor(idleShutdownMinutes, ports, options) {
|
|
|
4112
4112
|
return 0;
|
|
4113
4113
|
};
|
|
4114
4114
|
for (; ; ) {
|
|
4115
|
-
watchdog?.beat();
|
|
4116
4115
|
if (ports.retire?.aborted === true) {
|
|
4117
4116
|
return await retireByDrain();
|
|
4118
4117
|
}
|
|
@@ -4628,7 +4627,7 @@ var init_package = __esm({
|
|
|
4628
4627
|
"package.json"() {
|
|
4629
4628
|
package_default = {
|
|
4630
4629
|
name: "claude-use",
|
|
4631
|
-
version: "11.62.
|
|
4630
|
+
version: "11.62.3",
|
|
4632
4631
|
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.",
|
|
4633
4632
|
license: "MIT",
|
|
4634
4633
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
package/dist/types/index.d.ts
CHANGED
|
@@ -389,8 +389,8 @@ declare const LaunchSchema: z.ZodObject<{
|
|
|
389
389
|
effort: z.ZodOptional<z.ZodObject<{
|
|
390
390
|
format: z.ZodOptional<z.ZodEnum<{
|
|
391
391
|
symbol: "symbol";
|
|
392
|
-
full: "full";
|
|
393
392
|
text: "text";
|
|
393
|
+
full: "full";
|
|
394
394
|
}>>;
|
|
395
395
|
}, z.core.$strict>>;
|
|
396
396
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -1520,8 +1520,8 @@ declare const ConfigProfileSchema: z.ZodObject<{
|
|
|
1520
1520
|
effort: z.ZodOptional<z.ZodObject<{
|
|
1521
1521
|
format: z.ZodOptional<z.ZodEnum<{
|
|
1522
1522
|
symbol: "symbol";
|
|
1523
|
-
full: "full";
|
|
1524
1523
|
text: "text";
|
|
1524
|
+
full: "full";
|
|
1525
1525
|
}>>;
|
|
1526
1526
|
}, z.core.$strict>>;
|
|
1527
1527
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -2271,8 +2271,8 @@ declare const DirectoryRuleSchema: z.ZodObject<{
|
|
|
2271
2271
|
effort: z.ZodOptional<z.ZodObject<{
|
|
2272
2272
|
format: z.ZodOptional<z.ZodEnum<{
|
|
2273
2273
|
symbol: "symbol";
|
|
2274
|
-
full: "full";
|
|
2275
2274
|
text: "text";
|
|
2275
|
+
full: "full";
|
|
2276
2276
|
}>>;
|
|
2277
2277
|
}, z.core.$strict>>;
|
|
2278
2278
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -2949,8 +2949,8 @@ declare const DirectoryRulesSchema: z.ZodObject<{
|
|
|
2949
2949
|
effort: z.ZodOptional<z.ZodObject<{
|
|
2950
2950
|
format: z.ZodOptional<z.ZodEnum<{
|
|
2951
2951
|
symbol: "symbol";
|
|
2952
|
-
full: "full";
|
|
2953
2952
|
text: "text";
|
|
2953
|
+
full: "full";
|
|
2954
2954
|
}>>;
|
|
2955
2955
|
}, z.core.$strict>>;
|
|
2956
2956
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -3627,8 +3627,8 @@ declare const PortableConfigSchema: z.ZodObject<{
|
|
|
3627
3627
|
effort: z.ZodOptional<z.ZodObject<{
|
|
3628
3628
|
format: z.ZodOptional<z.ZodEnum<{
|
|
3629
3629
|
symbol: "symbol";
|
|
3630
|
-
full: "full";
|
|
3631
3630
|
text: "text";
|
|
3631
|
+
full: "full";
|
|
3632
3632
|
}>>;
|
|
3633
3633
|
}, z.core.$strict>>;
|
|
3634
3634
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -4286,8 +4286,8 @@ declare const GlobalConfigSchema: z.ZodObject<{
|
|
|
4286
4286
|
effort: z.ZodOptional<z.ZodObject<{
|
|
4287
4287
|
format: z.ZodOptional<z.ZodEnum<{
|
|
4288
4288
|
symbol: "symbol";
|
|
4289
|
-
full: "full";
|
|
4290
4289
|
text: "text";
|
|
4290
|
+
full: "full";
|
|
4291
4291
|
}>>;
|
|
4292
4292
|
}, z.core.$strict>>;
|
|
4293
4293
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -9275,8 +9275,8 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
9275
9275
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
9276
9276
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
9277
9277
|
symbol: "symbol";
|
|
9278
|
-
full: "full";
|
|
9279
9278
|
text: "text";
|
|
9279
|
+
full: "full";
|
|
9280
9280
|
}>>;
|
|
9281
9281
|
}, zod_v4_core.$strict>>;
|
|
9282
9282
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -9901,8 +9901,8 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
9901
9901
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
9902
9902
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
9903
9903
|
symbol: "symbol";
|
|
9904
|
-
full: "full";
|
|
9905
9904
|
text: "text";
|
|
9905
|
+
full: "full";
|
|
9906
9906
|
}>>;
|
|
9907
9907
|
}, zod_v4_core.$strict>>;
|
|
9908
9908
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -11003,8 +11003,8 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
11003
11003
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
11004
11004
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
11005
11005
|
symbol: "symbol";
|
|
11006
|
-
full: "full";
|
|
11007
11006
|
text: "text";
|
|
11007
|
+
full: "full";
|
|
11008
11008
|
}>>;
|
|
11009
11009
|
}, zod_v4_core.$strict>>;
|
|
11010
11010
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -11686,8 +11686,8 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
11686
11686
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
11687
11687
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
11688
11688
|
symbol: "symbol";
|
|
11689
|
-
full: "full";
|
|
11690
11689
|
text: "text";
|
|
11690
|
+
full: "full";
|
|
11691
11691
|
}>>;
|
|
11692
11692
|
}, zod_v4_core.$strict>>;
|
|
11693
11693
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -12458,8 +12458,8 @@ declare const StatuslineSchema: z.ZodObject<{
|
|
|
12458
12458
|
effort: z.ZodOptional<z.ZodObject<{
|
|
12459
12459
|
format: z.ZodOptional<z.ZodEnum<{
|
|
12460
12460
|
symbol: "symbol";
|
|
12461
|
-
full: "full";
|
|
12462
12461
|
text: "text";
|
|
12462
|
+
full: "full";
|
|
12463
12463
|
}>>;
|
|
12464
12464
|
}, z.core.$strict>>;
|
|
12465
12465
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -13221,8 +13221,8 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
|
|
|
13221
13221
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
13222
13222
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
13223
13223
|
symbol: "symbol";
|
|
13224
|
-
full: "full";
|
|
13225
13224
|
text: "text";
|
|
13225
|
+
full: "full";
|
|
13226
13226
|
}>>;
|
|
13227
13227
|
}, zod_v4_core.$strict>>;
|
|
13228
13228
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -14795,8 +14795,8 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
14795
14795
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
14796
14796
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
14797
14797
|
symbol: "symbol";
|
|
14798
|
-
full: "full";
|
|
14799
14798
|
text: "text";
|
|
14799
|
+
full: "full";
|
|
14800
14800
|
}>>;
|
|
14801
14801
|
}, zod_v4_core.$strict>>;
|
|
14802
14802
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -15661,8 +15661,8 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
15661
15661
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
15662
15662
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
15663
15663
|
symbol: "symbol";
|
|
15664
|
-
full: "full";
|
|
15665
15664
|
text: "text";
|
|
15665
|
+
full: "full";
|
|
15666
15666
|
}>>;
|
|
15667
15667
|
}, zod_v4_core.$strict>>;
|
|
15668
15668
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -16287,8 +16287,8 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
16287
16287
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
16288
16288
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
16289
16289
|
symbol: "symbol";
|
|
16290
|
-
full: "full";
|
|
16291
16290
|
text: "text";
|
|
16291
|
+
full: "full";
|
|
16292
16292
|
}>>;
|
|
16293
16293
|
}, zod_v4_core.$strict>>;
|
|
16294
16294
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -17389,8 +17389,8 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
17389
17389
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
17390
17390
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
17391
17391
|
symbol: "symbol";
|
|
17392
|
-
full: "full";
|
|
17393
17392
|
text: "text";
|
|
17393
|
+
full: "full";
|
|
17394
17394
|
}>>;
|
|
17395
17395
|
}, zod_v4_core.$strict>>;
|
|
17396
17396
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -18072,8 +18072,8 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
18072
18072
|
effort: zod.ZodOptional<zod.ZodObject<{
|
|
18073
18073
|
format: zod.ZodOptional<zod.ZodEnum<{
|
|
18074
18074
|
symbol: "symbol";
|
|
18075
|
-
full: "full";
|
|
18076
18075
|
text: "text";
|
|
18076
|
+
full: "full";
|
|
18077
18077
|
}>>;
|
|
18078
18078
|
}, zod_v4_core.$strict>>;
|
|
18079
18079
|
advisor: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -19796,8 +19796,8 @@ declare const ConfigProfileAddOutputSchema: z.ZodObject<{
|
|
|
19796
19796
|
effort: z.ZodOptional<z.ZodObject<{
|
|
19797
19797
|
format: z.ZodOptional<z.ZodEnum<{
|
|
19798
19798
|
symbol: "symbol";
|
|
19799
|
-
full: "full";
|
|
19800
19799
|
text: "text";
|
|
19800
|
+
full: "full";
|
|
19801
19801
|
}>>;
|
|
19802
19802
|
}, z.core.$strict>>;
|
|
19803
19803
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -20424,8 +20424,8 @@ declare const ConfigProfileSetOutputSchema: z.ZodObject<{
|
|
|
20424
20424
|
effort: z.ZodOptional<z.ZodObject<{
|
|
20425
20425
|
format: z.ZodOptional<z.ZodEnum<{
|
|
20426
20426
|
symbol: "symbol";
|
|
20427
|
-
full: "full";
|
|
20428
20427
|
text: "text";
|
|
20428
|
+
full: "full";
|
|
20429
20429
|
}>>;
|
|
20430
20430
|
}, z.core.$strict>>;
|
|
20431
20431
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -21528,8 +21528,8 @@ declare const ConfigRuleAddOutputSchema: z.ZodObject<{
|
|
|
21528
21528
|
effort: z.ZodOptional<z.ZodObject<{
|
|
21529
21529
|
format: z.ZodOptional<z.ZodEnum<{
|
|
21530
21530
|
symbol: "symbol";
|
|
21531
|
-
full: "full";
|
|
21532
21531
|
text: "text";
|
|
21532
|
+
full: "full";
|
|
21533
21533
|
}>>;
|
|
21534
21534
|
}, z.core.$strict>>;
|
|
21535
21535
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -22213,8 +22213,8 @@ declare const ConfigRuleSetOutputSchema: z.ZodObject<{
|
|
|
22213
22213
|
effort: z.ZodOptional<z.ZodObject<{
|
|
22214
22214
|
format: z.ZodOptional<z.ZodEnum<{
|
|
22215
22215
|
symbol: "symbol";
|
|
22216
|
-
full: "full";
|
|
22217
22216
|
text: "text";
|
|
22217
|
+
full: "full";
|
|
22218
22218
|
}>>;
|
|
22219
22219
|
}, z.core.$strict>>;
|
|
22220
22220
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -23155,8 +23155,8 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
|
|
|
23155
23155
|
effort: z.ZodOptional<z.ZodObject<{
|
|
23156
23156
|
format: z.ZodOptional<z.ZodEnum<{
|
|
23157
23157
|
symbol: "symbol";
|
|
23158
|
-
full: "full";
|
|
23159
23158
|
text: "text";
|
|
23159
|
+
full: "full";
|
|
23160
23160
|
}>>;
|
|
23161
23161
|
}, z.core.$strict>>;
|
|
23162
23162
|
advisor: z.ZodOptional<z.ZodObject<{
|
|
@@ -23869,10 +23869,8 @@ declare function ensureFrontDoor(params: {
|
|
|
23869
23869
|
readonly token: string;
|
|
23870
23870
|
};
|
|
23871
23871
|
|
|
23872
|
-
/** What the supervisor holds: a beat
|
|
23872
|
+
/** What the supervisor holds: a stop for when it begins to retire. The beat that tells the watchdog the main event loop ran comes from the watchdog's own timer on that loop (see `startThreadWatchdog`), not from the supervisor's tick, so nothing a tick awaits (a `ps` run a loaded machine is slow to finish) is taken for a loop that did not run. */
|
|
23873
23873
|
interface DoorWatchdog {
|
|
23874
|
-
/** Records that the main event loop ran. Called from the supervisor's tick, which only runs while the loop serves. */
|
|
23875
|
-
readonly beat: () => void;
|
|
23876
23874
|
/** Ends the watchdog before the door begins an orderly retirement, so a slow close is never taken for a stall. Idempotent. */
|
|
23877
23875
|
readonly stop: () => void;
|
|
23878
23876
|
}
|
|
@@ -23929,7 +23927,7 @@ interface FrontDoorSupervisorPorts {
|
|
|
23929
23927
|
*/
|
|
23930
23928
|
readonly closeRcStreamHub: () => void;
|
|
23931
23929
|
/**
|
|
23932
|
-
* 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.
|
|
23930
|
+
* 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. It beats from its own timer on the main loop rather than from the tick, so a tick waiting on a slow `ps` is never taken for a loop that stopped, and the supervisor 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.
|
|
23933
23931
|
*/
|
|
23934
23932
|
readonly startWatchdog?: () => DoorWatchdog;
|
|
23935
23933
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-use",
|
|
3
|
-
"version": "11.62.
|
|
3
|
+
"version": "11.62.3",
|
|
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>",
|