claude-use 11.29.0 → 11.30.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/README.md +2 -1
- package/dist/cli.cjs +53 -14
- package/dist/index.cjs +47 -9
- package/dist/index.mjs +47 -9
- package/dist/types/index.d.ts +26 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -98,7 +98,7 @@ agent-shim profile set <name> [--category <category>=<bool>]... [--entry <catego
|
|
|
98
98
|
agent-shim profile set <name> [--extends <profile>]... [--no-extends] [--description <text> | --no-description] [--json]
|
|
99
99
|
agent-shim profile set <name> [--[no-]launch-skip-permissions] [--[no-]launch-remote-control] [--[no-]launch-headroom] [--[no-]launch-track-usage]
|
|
100
100
|
agent-shim profile set <name> [--launch-claude-version <version> | --no-launch-claude-version] [--json] [--json]
|
|
101
|
-
agent-shim profile set <name> [--launch-delay <duration> | --no-launch-delay] [--[no-]launch-pause] [--json]
|
|
101
|
+
agent-shim profile set <name> [--launch-delay <duration> | --no-launch-delay] [--[no-]launch-pause] [--[no-]launch-explain] [--json]
|
|
102
102
|
agent-shim profile set <name> [--launch-provider <provider> | --no-launch-provider] [--json]
|
|
103
103
|
agent-shim profile list [--json]
|
|
104
104
|
agent-shim profile show <name> [--json]
|
|
@@ -183,6 +183,7 @@ agent-shim run [@<identity>] [launch flags] [claude arguments]
|
|
|
183
183
|
# --[no-]skip-permissions --[no-]remote-control --[no-]headroom --[no-]track-usage --[no-]wait
|
|
184
184
|
# --claude-version <version> run exactly this installed Claude Code version
|
|
185
185
|
# --delay <duration> wait this long after the launcher's own output before starting claude; --[no-]pause waits for a key press instead
|
|
186
|
+
# --[no-]explain with @pool:<name>, list every member the pick ranked and why, not only the one picked
|
|
186
187
|
# --native run the real claude with nothing from agent-shim applied; cannot be combined with the flags above
|
|
187
188
|
claude @<identity> ... # the same, once `agent-shim shim enable` has run
|
|
188
189
|
```
|
package/dist/cli.cjs
CHANGED
|
@@ -27031,7 +27031,9 @@ var init_schema = __esm({
|
|
|
27031
27031
|
/** How long the launcher waits after its own output before it starts claude, so that output can be read before Claude Code takes over the terminal (`5s`, `500ms`). Applies only when a terminal is watching. */
|
|
27032
27032
|
delay: external_exports.string().regex(DURATION_RE, "must be a duration such as 5s or 500ms").optional(),
|
|
27033
27033
|
/** Whether the launcher waits for a key press after its own output before it starts claude. Takes the place of `delay` when both are set. Applies only when a terminal is watching. */
|
|
27034
|
-
pause: external_exports.boolean().optional()
|
|
27034
|
+
pause: external_exports.boolean().optional(),
|
|
27035
|
+
/** Whether the launcher's report, for a launch that picks from a pool, lists every member the pick ranked with why each stands where it does, and not only the member it picked. */
|
|
27036
|
+
explain: external_exports.boolean().optional()
|
|
27035
27037
|
});
|
|
27036
27038
|
CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
|
|
27037
27039
|
PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
|
|
@@ -32571,6 +32573,9 @@ function flattenLayers(layers, options) {
|
|
|
32571
32573
|
if (layer.launch.pause !== void 0) {
|
|
32572
32574
|
launch.pause = layer.launch.pause;
|
|
32573
32575
|
}
|
|
32576
|
+
if (layer.launch.explain !== void 0) {
|
|
32577
|
+
launch.explain = layer.launch.explain;
|
|
32578
|
+
}
|
|
32574
32579
|
}
|
|
32575
32580
|
if (layer.entries === void 0) {
|
|
32576
32581
|
continue;
|
|
@@ -34318,7 +34323,7 @@ var init_package = __esm({
|
|
|
34318
34323
|
"package.json"() {
|
|
34319
34324
|
package_default = {
|
|
34320
34325
|
name: "claude-use",
|
|
34321
|
-
version: "11.
|
|
34326
|
+
version: "11.30.0",
|
|
34322
34327
|
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.",
|
|
34323
34328
|
license: "MIT",
|
|
34324
34329
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -63125,7 +63130,8 @@ var init_argv = __esm({
|
|
|
63125
63130
|
{ flag: "--skip-permissions", key: "skipPermissions" },
|
|
63126
63131
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
63127
63132
|
{ flag: "--wait", key: "wait" },
|
|
63128
|
-
{ flag: "--pause", key: "pause" }
|
|
63133
|
+
{ flag: "--pause", key: "pause" },
|
|
63134
|
+
{ flag: "--explain", key: "explain" }
|
|
63129
63135
|
];
|
|
63130
63136
|
LAUNCHER_FLAG_NAMES = [
|
|
63131
63137
|
...VALUED_FLAGS,
|
|
@@ -63314,6 +63320,7 @@ function resolveLaunchFlags(params) {
|
|
|
63314
63320
|
headroom: params.flags?.headroom ?? parseEnvBool("AGENT_SHIM_HEADROOM", params.env.AGENT_SHIM_HEADROOM) ?? params.cascade?.headroom ?? false,
|
|
63315
63321
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
63316
63322
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
63323
|
+
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
63317
63324
|
delayMs: resolveDelayMs(params)
|
|
63318
63325
|
};
|
|
63319
63326
|
}
|
|
@@ -63687,6 +63694,18 @@ var init_hold = __esm({
|
|
|
63687
63694
|
}
|
|
63688
63695
|
});
|
|
63689
63696
|
|
|
63697
|
+
// src/usage/candidateText.ts
|
|
63698
|
+
function candidateHeading(candidate) {
|
|
63699
|
+
const score = candidate.score === void 0 ? "" : ` score ${candidate.score.toFixed(2)}${candidate.scoreWindow === "fiveHour" ? " by 5h reset" : " by 7d reset"}`;
|
|
63700
|
+
const dry = candidate.feasible ? "" : " (5h would run dry)";
|
|
63701
|
+
return `[${candidate.class}${score}]${dry}`;
|
|
63702
|
+
}
|
|
63703
|
+
var init_candidateText = __esm({
|
|
63704
|
+
"src/usage/candidateText.ts"() {
|
|
63705
|
+
"use strict";
|
|
63706
|
+
}
|
|
63707
|
+
});
|
|
63708
|
+
|
|
63690
63709
|
// src/launcher/launchReport.ts
|
|
63691
63710
|
function poolDetail(pool) {
|
|
63692
63711
|
const [reason] = pool.reasons;
|
|
@@ -63695,6 +63714,12 @@ function poolDetail(pool) {
|
|
|
63695
63714
|
}
|
|
63696
63715
|
return reason === void 0 ? {} : { detail: reason };
|
|
63697
63716
|
}
|
|
63717
|
+
function rankingNotes(ranking, picked) {
|
|
63718
|
+
return ranking.flatMap((candidate, index) => [
|
|
63719
|
+
`${String(index + 1)}. ${candidate.identity} ${candidateHeading(candidate)}${candidate.identity === picked ? " (picked)" : ""}`,
|
|
63720
|
+
` ${candidate.reasons.join("; ")}`
|
|
63721
|
+
]);
|
|
63722
|
+
}
|
|
63698
63723
|
function decisionRows(facts) {
|
|
63699
63724
|
return [
|
|
63700
63725
|
{ label: "identity", value: facts.identity ?? "(none)", detail: facts.identitySource },
|
|
@@ -63702,7 +63727,8 @@ function decisionRows(facts) {
|
|
|
63702
63727
|
{
|
|
63703
63728
|
label: "pool",
|
|
63704
63729
|
value: facts.pool.name,
|
|
63705
|
-
...poolDetail(facts.pool)
|
|
63730
|
+
...poolDetail(facts.pool),
|
|
63731
|
+
...facts.ranking === void 0 ? {} : { notes: rankingNotes(facts.ranking, facts.identity) }
|
|
63706
63732
|
}
|
|
63707
63733
|
],
|
|
63708
63734
|
...facts.profile === void 0 ? [] : [{ label: "profile", value: facts.profile.name, detail: facts.profile.source }],
|
|
@@ -63737,6 +63763,7 @@ function noteRow(text2) {
|
|
|
63737
63763
|
var init_launchReport = __esm({
|
|
63738
63764
|
"src/launcher/launchReport.ts"() {
|
|
63739
63765
|
"use strict";
|
|
63766
|
+
init_candidateText();
|
|
63740
63767
|
}
|
|
63741
63768
|
});
|
|
63742
63769
|
|
|
@@ -64991,6 +65018,7 @@ function resolvePoolLaunch(params) {
|
|
|
64991
65018
|
identity: pick2.identity,
|
|
64992
65019
|
explanation: `pool ${poolName}: ${move}${pick2.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
|
|
64993
65020
|
reasons: pick2.reasons,
|
|
65021
|
+
candidates: graph.ranking.candidates,
|
|
64994
65022
|
...movedOff === void 0 ? {} : { movedOff }
|
|
64995
65023
|
};
|
|
64996
65024
|
}
|
|
@@ -65165,7 +65193,8 @@ function pickFromPool(decided, params, parsedArgv, readOnly) {
|
|
|
65165
65193
|
}
|
|
65166
65194
|
return {
|
|
65167
65195
|
identityDecision: { ...decided, name: resolution.identity },
|
|
65168
|
-
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
|
|
65196
|
+
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } },
|
|
65197
|
+
poolRanking: resolution.candidates
|
|
65169
65198
|
};
|
|
65170
65199
|
}
|
|
65171
65200
|
function decideLaunch(params, readOnly) {
|
|
@@ -65192,7 +65221,7 @@ function decideLaunch(params, readOnly) {
|
|
|
65192
65221
|
return trimmed === "" ? void 0 : trimmed;
|
|
65193
65222
|
}
|
|
65194
65223
|
});
|
|
65195
|
-
const { identityDecision, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
65224
|
+
const { identityDecision, poolPick, poolRanking } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
65196
65225
|
const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
|
|
65197
65226
|
const farm = farmIdentity === void 0 ? void 0 : params.farm;
|
|
65198
65227
|
if (!readOnly && farm !== void 0 && farmIdentity !== void 0) {
|
|
@@ -65328,6 +65357,7 @@ function decideLaunch(params, readOnly) {
|
|
|
65328
65357
|
...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom },
|
|
65329
65358
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
65330
65359
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
65360
|
+
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
65331
65361
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
65332
65362
|
}
|
|
65333
65363
|
});
|
|
@@ -65364,6 +65394,7 @@ function decideLaunch(params, readOnly) {
|
|
|
65364
65394
|
parsedArgv,
|
|
65365
65395
|
identityDecision,
|
|
65366
65396
|
poolPick,
|
|
65397
|
+
poolRanking,
|
|
65367
65398
|
notes,
|
|
65368
65399
|
configDirEscapeHatch: configDirEscapeHatchApplies,
|
|
65369
65400
|
farmIdentity,
|
|
@@ -65384,12 +65415,13 @@ function prepareLaunch(params) {
|
|
|
65384
65415
|
const { paths, proc, log } = params;
|
|
65385
65416
|
const { env } = proc;
|
|
65386
65417
|
const decided = decideLaunch(params, false);
|
|
65387
|
-
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
65418
|
+
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, poolRanking, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
65388
65419
|
const rows = [
|
|
65389
65420
|
...decisionRows({
|
|
65390
65421
|
identity: identityDecision.name,
|
|
65391
65422
|
identitySource: identityDecision.source,
|
|
65392
65423
|
pool: poolPick,
|
|
65424
|
+
ranking: resolvedFlags.explain ? poolRanking : void 0,
|
|
65393
65425
|
profile: configProfileDecision.name === void 0 ? void 0 : { name: configProfileDecision.name, source: configProfileDecision.source },
|
|
65394
65426
|
provider: resolvedProvider === void 0 ? void 0 : { name: resolvedProvider.name, credential: `${resolvedProvider.credential.target} from ${describeSource(resolvedProvider.credential.source)}` },
|
|
65395
65427
|
identityCredential: identityCredential === void 0 ? void 0 : `${identityCredential.target} from ${describeSource(identityCredential.source)}`
|
|
@@ -111520,6 +111552,9 @@ function applyProfileChange(paths, name, change) {
|
|
|
111520
111552
|
if (change.launchPause !== void 0) {
|
|
111521
111553
|
launchPatch.pause = change.launchPause;
|
|
111522
111554
|
}
|
|
111555
|
+
if (change.launchExplain !== void 0) {
|
|
111556
|
+
launchPatch.explain = change.launchExplain;
|
|
111557
|
+
}
|
|
111523
111558
|
if (Object.keys(launchPatch).length > 0) {
|
|
111524
111559
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
111525
111560
|
touched = true;
|
|
@@ -112806,7 +112841,7 @@ function registerProfileCommand(program2, deps) {
|
|
|
112806
112841
|
withExamples(
|
|
112807
112842
|
profile.command("set <name>").description(
|
|
112808
112843
|
"Update a configuration profile's categories, entries, extends list, description or launch settings. With no options on a terminal, walks through its categories."
|
|
112809
|
-
).option("--category <category=bool>", "Share (true) or hide (false) a whole category (repeatable).", collectBoolPair).option("--entry <path=bool>", "Share (true) or hide (false) one <category>/<path> entry (repeatable).", collectBoolPair).option("--extends <profile>", "Replace the extends list with these profiles (repeatable, in order).", collectRepeated).option("--no-extends", "Clear the extends list.").option("--description <text>", "Replace the description.").option("--no-description", "Clear the description.").option("--launch-skip-permissions", "Launches under this profile skip permission prompts.").option("--no-launch-skip-permissions", "Launches under this profile keep permission prompts.").option("--launch-remote-control", "Launches under this profile enable Remote Control.").option("--no-launch-remote-control", "Launches under this profile leave Remote Control off.").option("--launch-headroom", "Launches under this profile route through headroom.").option("--no-launch-headroom", "Launches under this profile route direct.").option("--launch-track-usage", "Launches under this profile route through the front door so their requests and quota are recorded, with no headroom needed.").option("--no-launch-track-usage", "Launches under this profile are not recorded unless a provider or headroom routes them anyway.").option("--launch-provider <provider>", "Launches under this profile route through this provider.").option("--no-launch-provider", "Clear this profile's provider selection.").option("--launch-claude-version <version>", "Launches under this profile run exactly this installed Claude Code version (such as 2.1.220); a version that is not installed fails the launch.").option("--no-launch-claude-version", "Clear this profile's Claude Code version pin.").option("--launch-delay <duration>", "Launches under this profile wait this long (such as 5s) after the launcher's own output before starting claude, so the output can be read.", parseDurationLiteral).option("--no-launch-delay", "Clear this profile's launch delay.").option("--launch-pause", "Launches under this profile wait for a key press after the launcher's own output before starting claude.").option("--no-launch-pause", "Launches under this profile start claude without waiting for a key press.").option("--json", "Print the result as JSON.").action(async (name, allOptions) => {
|
|
112844
|
+
).option("--category <category=bool>", "Share (true) or hide (false) a whole category (repeatable).", collectBoolPair).option("--entry <path=bool>", "Share (true) or hide (false) one <category>/<path> entry (repeatable).", collectBoolPair).option("--extends <profile>", "Replace the extends list with these profiles (repeatable, in order).", collectRepeated).option("--no-extends", "Clear the extends list.").option("--description <text>", "Replace the description.").option("--no-description", "Clear the description.").option("--launch-skip-permissions", "Launches under this profile skip permission prompts.").option("--no-launch-skip-permissions", "Launches under this profile keep permission prompts.").option("--launch-remote-control", "Launches under this profile enable Remote Control.").option("--no-launch-remote-control", "Launches under this profile leave Remote Control off.").option("--launch-headroom", "Launches under this profile route through headroom.").option("--no-launch-headroom", "Launches under this profile route direct.").option("--launch-track-usage", "Launches under this profile route through the front door so their requests and quota are recorded, with no headroom needed.").option("--no-launch-track-usage", "Launches under this profile are not recorded unless a provider or headroom routes them anyway.").option("--launch-provider <provider>", "Launches under this profile route through this provider.").option("--no-launch-provider", "Clear this profile's provider selection.").option("--launch-claude-version <version>", "Launches under this profile run exactly this installed Claude Code version (such as 2.1.220); a version that is not installed fails the launch.").option("--no-launch-claude-version", "Clear this profile's Claude Code version pin.").option("--launch-delay <duration>", "Launches under this profile wait this long (such as 5s) after the launcher's own output before starting claude, so the output can be read.", parseDurationLiteral).option("--no-launch-delay", "Clear this profile's launch delay.").option("--launch-pause", "Launches under this profile wait for a key press after the launcher's own output before starting claude.").option("--no-launch-pause", "Launches under this profile start claude without waiting for a key press.").option("--launch-explain", "Launches under this profile that pick from a pool list every member the pick ranked and why, in the launcher's report.").option("--no-launch-explain", "Launches under this profile name only the member a pool pick chose.").option("--json", "Print the result as JSON.").action(async (name, allOptions) => {
|
|
112810
112845
|
const { json: json2, ...options } = allOptions;
|
|
112811
112846
|
requireProfileExists(paths, name);
|
|
112812
112847
|
if (Object.entries(allOptions).every(([key, value2]) => key === "json" || value2 === void 0)) {
|
|
@@ -127708,7 +127743,8 @@ var ConfigProfileSetInputSchema = external_exports.strictObject({
|
|
|
127708
127743
|
provider: external_exports.union([external_exports.string().min(1), external_exports.literal(false)]).optional(),
|
|
127709
127744
|
claudeVersion: external_exports.union([external_exports.string().min(1), external_exports.literal(false)]).optional(),
|
|
127710
127745
|
delay: external_exports.union([external_exports.string().regex(DURATION_RE), external_exports.literal(false)]).optional(),
|
|
127711
|
-
pause: external_exports.boolean().optional()
|
|
127746
|
+
pause: external_exports.boolean().optional(),
|
|
127747
|
+
explain: external_exports.boolean().optional()
|
|
127712
127748
|
}).optional()
|
|
127713
127749
|
});
|
|
127714
127750
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -127920,7 +127956,8 @@ function createConfigApiRouter(deps) {
|
|
|
127920
127956
|
...launch?.provider === void 0 ? {} : { launchProvider: launch.provider },
|
|
127921
127957
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
127922
127958
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
127923
|
-
...launch?.pause === void 0 ? {} : { launchPause: launch.pause }
|
|
127959
|
+
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
127960
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
127924
127961
|
});
|
|
127925
127962
|
return { action: "updated", kind: "profile", name: input2.name, value: profileValue(input2.name, paths) };
|
|
127926
127963
|
})
|
|
@@ -128221,6 +128258,7 @@ var LaunchFlagsSchema = external_exports.strictObject({
|
|
|
128221
128258
|
headroom: external_exports.boolean(),
|
|
128222
128259
|
trackUsage: external_exports.boolean(),
|
|
128223
128260
|
pause: external_exports.boolean(),
|
|
128261
|
+
explain: external_exports.boolean(),
|
|
128224
128262
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
128225
128263
|
delayMs: external_exports.number()
|
|
128226
128264
|
});
|
|
@@ -146123,13 +146161,12 @@ init_cliError();
|
|
|
146123
146161
|
init_schema();
|
|
146124
146162
|
init_schema();
|
|
146125
146163
|
init_realPorts();
|
|
146164
|
+
init_candidateText();
|
|
146126
146165
|
init_preflight();
|
|
146127
146166
|
function formatPoolPick(report, nowMs) {
|
|
146128
146167
|
const head = report.pick === void 0 ? `Pool ${report.pool}: every member is refused right now${report.earliestReturn === void 0 ? "" : `; ${report.earliestReturn.identity} returns at ${report.earliestReturn.at} (in ${formatAge(Date.parse(report.earliestReturn.at) - nowMs)})`}` : `Pool ${report.pool}: a launch from ${report.directory} would run as ${report.pick}`;
|
|
146129
146168
|
const rows = report.candidates.map((candidate, index) => {
|
|
146130
|
-
|
|
146131
|
-
const dry = candidate.feasible ? "" : " (5h would run dry)";
|
|
146132
|
-
return ` ${String(index + 1)}. ${candidate.identity} [${candidate.class}${score}]${dry}
|
|
146169
|
+
return ` ${String(index + 1)}. ${candidate.identity} ${candidateHeading(candidate)}
|
|
146133
146170
|
${candidate.reasons.join("; ")}`;
|
|
146134
146171
|
});
|
|
146135
146172
|
return [head, ...rows, ...report.missing.map((name) => ` (skipped: ${name} is not an identity)`), ...report.stickyProblem === void 0 ? [] : [`Note: ${report.stickyProblem}; the last-pick record was ignored.`]];
|
|
@@ -147029,11 +147066,12 @@ Launching:
|
|
|
147029
147066
|
--[no-]wait with @pool:<name>, sleep until the earliest member returns when all are refused
|
|
147030
147067
|
--delay <duration> wait this long (5s, 500ms) after the launcher's own output before starting claude
|
|
147031
147068
|
--[no-]pause wait for a key press after the launcher's own output before starting claude
|
|
147069
|
+
--[no-]explain with @pool:<name>, list every member the pick ranked and why, not only the one picked
|
|
147032
147070
|
--native run the real claude with nothing from agent-shim applied (no other launch flag allowed)
|
|
147033
147071
|
|
|
147034
147072
|
Environment:
|
|
147035
147073
|
AGENT_SHIM_IDENTITY, AGENT_SHIM_CONFIG_PROFILE, AGENT_SHIM_SKIP_PERMISSIONS,
|
|
147036
|
-
AGENT_SHIM_REMOTE_CONTROL, AGENT_SHIM_HEADROOM, AGENT_SHIM_TRACK_USAGE, AGENT_SHIM_DELAY, AGENT_SHIM_PAUSE, AGENT_SHIM_ALLOW_AMBIENT_CREDENTIAL,
|
|
147074
|
+
AGENT_SHIM_REMOTE_CONTROL, AGENT_SHIM_HEADROOM, AGENT_SHIM_TRACK_USAGE, AGENT_SHIM_DELAY, AGENT_SHIM_PAUSE, AGENT_SHIM_EXPLAIN, AGENT_SHIM_ALLOW_AMBIENT_CREDENTIAL,
|
|
147037
147075
|
AGENT_SHIM_CATEGORY_OVERRIDE, AGENT_SHIM_ENTRY_OVERRIDE, AGENT_SHIM_HOME,
|
|
147038
147076
|
AGENT_SHIM_DEBUG (print stack traces), NO_COLOR. Booleans are true, false, 1 or 0.
|
|
147039
147077
|
|
|
@@ -147755,6 +147793,7 @@ function otherLaunchFlags(parsed) {
|
|
|
147755
147793
|
...parsed.claudeVersion === void 0 ? [] : ["--claude-version"],
|
|
147756
147794
|
...parsed.delay === void 0 ? [] : ["--delay"],
|
|
147757
147795
|
...parsed.pause === void 0 ? [] : ["--[no-]pause"],
|
|
147796
|
+
...parsed.explain === void 0 ? [] : ["--[no-]explain"],
|
|
147758
147797
|
...parsed.headroom === void 0 ? [] : ["--[no-]headroom"],
|
|
147759
147798
|
...parsed.trackUsage === void 0 ? [] : ["--[no-]track-usage"],
|
|
147760
147799
|
...parsed.skipPermissions === void 0 ? [] : ["--[no-]skip-permissions"],
|
package/dist/index.cjs
CHANGED
|
@@ -289,7 +289,9 @@ var init_schema = __esm({
|
|
|
289
289
|
/** How long the launcher waits after its own output before it starts claude, so that output can be read before Claude Code takes over the terminal (`5s`, `500ms`). Applies only when a terminal is watching. */
|
|
290
290
|
delay: import_zod.z.string().regex(DURATION_RE, "must be a duration such as 5s or 500ms").optional(),
|
|
291
291
|
/** Whether the launcher waits for a key press after its own output before it starts claude. Takes the place of `delay` when both are set. Applies only when a terminal is watching. */
|
|
292
|
-
pause: import_zod.z.boolean().optional()
|
|
292
|
+
pause: import_zod.z.boolean().optional(),
|
|
293
|
+
/** Whether the launcher's report, for a launch that picks from a pool, lists every member the pick ranked with why each stands where it does, and not only the member it picked. */
|
|
294
|
+
explain: import_zod.z.boolean().optional()
|
|
293
295
|
});
|
|
294
296
|
CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
|
|
295
297
|
PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
|
|
@@ -1398,6 +1400,9 @@ function flattenLayers(layers, options) {
|
|
|
1398
1400
|
if (layer.launch.pause !== void 0) {
|
|
1399
1401
|
launch.pause = layer.launch.pause;
|
|
1400
1402
|
}
|
|
1403
|
+
if (layer.launch.explain !== void 0) {
|
|
1404
|
+
launch.explain = layer.launch.explain;
|
|
1405
|
+
}
|
|
1401
1406
|
}
|
|
1402
1407
|
if (layer.entries === void 0) {
|
|
1403
1408
|
continue;
|
|
@@ -2978,7 +2983,7 @@ var init_package = __esm({
|
|
|
2978
2983
|
"package.json"() {
|
|
2979
2984
|
package_default = {
|
|
2980
2985
|
name: "claude-use",
|
|
2981
|
-
version: "11.
|
|
2986
|
+
version: "11.30.0",
|
|
2982
2987
|
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.",
|
|
2983
2988
|
license: "MIT",
|
|
2984
2989
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -7578,7 +7583,8 @@ var init_argv = __esm({
|
|
|
7578
7583
|
{ flag: "--skip-permissions", key: "skipPermissions" },
|
|
7579
7584
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
7580
7585
|
{ flag: "--wait", key: "wait" },
|
|
7581
|
-
{ flag: "--pause", key: "pause" }
|
|
7586
|
+
{ flag: "--pause", key: "pause" },
|
|
7587
|
+
{ flag: "--explain", key: "explain" }
|
|
7582
7588
|
];
|
|
7583
7589
|
LAUNCHER_FLAG_NAMES = [
|
|
7584
7590
|
...VALUED_FLAGS,
|
|
@@ -7767,6 +7773,7 @@ function resolveLaunchFlags(params) {
|
|
|
7767
7773
|
headroom: params.flags?.headroom ?? parseEnvBool("AGENT_SHIM_HEADROOM", params.env.AGENT_SHIM_HEADROOM) ?? params.cascade?.headroom ?? false,
|
|
7768
7774
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
7769
7775
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
7776
|
+
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
7770
7777
|
delayMs: resolveDelayMs(params)
|
|
7771
7778
|
};
|
|
7772
7779
|
}
|
|
@@ -8106,6 +8113,18 @@ var init_hold = __esm({
|
|
|
8106
8113
|
}
|
|
8107
8114
|
});
|
|
8108
8115
|
|
|
8116
|
+
// src/usage/candidateText.ts
|
|
8117
|
+
function candidateHeading(candidate) {
|
|
8118
|
+
const score = candidate.score === void 0 ? "" : ` score ${candidate.score.toFixed(2)}${candidate.scoreWindow === "fiveHour" ? " by 5h reset" : " by 7d reset"}`;
|
|
8119
|
+
const dry = candidate.feasible ? "" : " (5h would run dry)";
|
|
8120
|
+
return `[${candidate.class}${score}]${dry}`;
|
|
8121
|
+
}
|
|
8122
|
+
var init_candidateText = __esm({
|
|
8123
|
+
"src/usage/candidateText.ts"() {
|
|
8124
|
+
"use strict";
|
|
8125
|
+
}
|
|
8126
|
+
});
|
|
8127
|
+
|
|
8109
8128
|
// src/launcher/launchReport.ts
|
|
8110
8129
|
function poolDetail(pool) {
|
|
8111
8130
|
const [reason] = pool.reasons;
|
|
@@ -8114,6 +8133,12 @@ function poolDetail(pool) {
|
|
|
8114
8133
|
}
|
|
8115
8134
|
return reason === void 0 ? {} : { detail: reason };
|
|
8116
8135
|
}
|
|
8136
|
+
function rankingNotes(ranking, picked) {
|
|
8137
|
+
return ranking.flatMap((candidate, index) => [
|
|
8138
|
+
`${String(index + 1)}. ${candidate.identity} ${candidateHeading(candidate)}${candidate.identity === picked ? " (picked)" : ""}`,
|
|
8139
|
+
` ${candidate.reasons.join("; ")}`
|
|
8140
|
+
]);
|
|
8141
|
+
}
|
|
8117
8142
|
function decisionRows(facts) {
|
|
8118
8143
|
return [
|
|
8119
8144
|
{ label: "identity", value: facts.identity ?? "(none)", detail: facts.identitySource },
|
|
@@ -8121,7 +8146,8 @@ function decisionRows(facts) {
|
|
|
8121
8146
|
{
|
|
8122
8147
|
label: "pool",
|
|
8123
8148
|
value: facts.pool.name,
|
|
8124
|
-
...poolDetail(facts.pool)
|
|
8149
|
+
...poolDetail(facts.pool),
|
|
8150
|
+
...facts.ranking === void 0 ? {} : { notes: rankingNotes(facts.ranking, facts.identity) }
|
|
8125
8151
|
}
|
|
8126
8152
|
],
|
|
8127
8153
|
...facts.profile === void 0 ? [] : [{ label: "profile", value: facts.profile.name, detail: facts.profile.source }],
|
|
@@ -8156,6 +8182,7 @@ function noteRow(text) {
|
|
|
8156
8182
|
var init_launchReport = __esm({
|
|
8157
8183
|
"src/launcher/launchReport.ts"() {
|
|
8158
8184
|
"use strict";
|
|
8185
|
+
init_candidateText();
|
|
8159
8186
|
}
|
|
8160
8187
|
});
|
|
8161
8188
|
|
|
@@ -8541,6 +8568,7 @@ function resolvePoolLaunch(params) {
|
|
|
8541
8568
|
identity: pick.identity,
|
|
8542
8569
|
explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
|
|
8543
8570
|
reasons: pick.reasons,
|
|
8571
|
+
candidates: graph.ranking.candidates,
|
|
8544
8572
|
...movedOff === void 0 ? {} : { movedOff }
|
|
8545
8573
|
};
|
|
8546
8574
|
}
|
|
@@ -8715,7 +8743,8 @@ function pickFromPool(decided, params, parsedArgv, readOnly) {
|
|
|
8715
8743
|
}
|
|
8716
8744
|
return {
|
|
8717
8745
|
identityDecision: { ...decided, name: resolution.identity },
|
|
8718
|
-
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
|
|
8746
|
+
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } },
|
|
8747
|
+
poolRanking: resolution.candidates
|
|
8719
8748
|
};
|
|
8720
8749
|
}
|
|
8721
8750
|
function decideLaunch(params, readOnly) {
|
|
@@ -8742,7 +8771,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8742
8771
|
return trimmed === "" ? void 0 : trimmed;
|
|
8743
8772
|
}
|
|
8744
8773
|
});
|
|
8745
|
-
const { identityDecision, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
8774
|
+
const { identityDecision, poolPick, poolRanking } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
8746
8775
|
const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
|
|
8747
8776
|
const farm = farmIdentity === void 0 ? void 0 : params.farm;
|
|
8748
8777
|
if (!readOnly && farm !== void 0 && farmIdentity !== void 0) {
|
|
@@ -8878,6 +8907,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8878
8907
|
...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom },
|
|
8879
8908
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
8880
8909
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
8910
|
+
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
8881
8911
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
8882
8912
|
}
|
|
8883
8913
|
});
|
|
@@ -8914,6 +8944,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8914
8944
|
parsedArgv,
|
|
8915
8945
|
identityDecision,
|
|
8916
8946
|
poolPick,
|
|
8947
|
+
poolRanking,
|
|
8917
8948
|
notes,
|
|
8918
8949
|
configDirEscapeHatch: configDirEscapeHatchApplies,
|
|
8919
8950
|
farmIdentity,
|
|
@@ -8934,12 +8965,13 @@ function prepareLaunch(params) {
|
|
|
8934
8965
|
const { paths, proc, log } = params;
|
|
8935
8966
|
const { env } = proc;
|
|
8936
8967
|
const decided = decideLaunch(params, false);
|
|
8937
|
-
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
8968
|
+
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, poolRanking, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
8938
8969
|
const rows = [
|
|
8939
8970
|
...decisionRows({
|
|
8940
8971
|
identity: identityDecision.name,
|
|
8941
8972
|
identitySource: identityDecision.source,
|
|
8942
8973
|
pool: poolPick,
|
|
8974
|
+
ranking: resolvedFlags.explain ? poolRanking : void 0,
|
|
8943
8975
|
profile: configProfileDecision.name === void 0 ? void 0 : { name: configProfileDecision.name, source: configProfileDecision.source },
|
|
8944
8976
|
provider: resolvedProvider === void 0 ? void 0 : { name: resolvedProvider.name, credential: `${resolvedProvider.credential.target} from ${describeSource(resolvedProvider.credential.source)}` },
|
|
8945
8977
|
identityCredential: identityCredential === void 0 ? void 0 : `${identityCredential.target} from ${describeSource(identityCredential.source)}`
|
|
@@ -13949,6 +13981,9 @@ function applyProfileChange(paths, name, change) {
|
|
|
13949
13981
|
if (change.launchPause !== void 0) {
|
|
13950
13982
|
launchPatch.pause = change.launchPause;
|
|
13951
13983
|
}
|
|
13984
|
+
if (change.launchExplain !== void 0) {
|
|
13985
|
+
launchPatch.explain = change.launchExplain;
|
|
13986
|
+
}
|
|
13952
13987
|
if (Object.keys(launchPatch).length > 0) {
|
|
13953
13988
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
13954
13989
|
touched = true;
|
|
@@ -16166,7 +16201,8 @@ var ConfigProfileSetInputSchema = import_zod24.z.strictObject({
|
|
|
16166
16201
|
provider: import_zod24.z.union([import_zod24.z.string().min(1), import_zod24.z.literal(false)]).optional(),
|
|
16167
16202
|
claudeVersion: import_zod24.z.union([import_zod24.z.string().min(1), import_zod24.z.literal(false)]).optional(),
|
|
16168
16203
|
delay: import_zod24.z.union([import_zod24.z.string().regex(DURATION_RE), import_zod24.z.literal(false)]).optional(),
|
|
16169
|
-
pause: import_zod24.z.boolean().optional()
|
|
16204
|
+
pause: import_zod24.z.boolean().optional(),
|
|
16205
|
+
explain: import_zod24.z.boolean().optional()
|
|
16170
16206
|
}).optional()
|
|
16171
16207
|
});
|
|
16172
16208
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -16378,7 +16414,8 @@ function createConfigApiRouter(deps) {
|
|
|
16378
16414
|
...launch?.provider === void 0 ? {} : { launchProvider: launch.provider },
|
|
16379
16415
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
16380
16416
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
16381
|
-
...launch?.pause === void 0 ? {} : { launchPause: launch.pause }
|
|
16417
|
+
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
16418
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
16382
16419
|
});
|
|
16383
16420
|
return { action: "updated", kind: "profile", name: input.name, value: profileValue(input.name, paths) };
|
|
16384
16421
|
})
|
|
@@ -16688,6 +16725,7 @@ var LaunchFlagsSchema = import_zod26.z.strictObject({
|
|
|
16688
16725
|
headroom: import_zod26.z.boolean(),
|
|
16689
16726
|
trackUsage: import_zod26.z.boolean(),
|
|
16690
16727
|
pause: import_zod26.z.boolean(),
|
|
16728
|
+
explain: import_zod26.z.boolean(),
|
|
16691
16729
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
16692
16730
|
delayMs: import_zod26.z.number()
|
|
16693
16731
|
});
|
package/dist/index.mjs
CHANGED
|
@@ -267,7 +267,9 @@ var init_schema = __esm({
|
|
|
267
267
|
/** How long the launcher waits after its own output before it starts claude, so that output can be read before Claude Code takes over the terminal (`5s`, `500ms`). Applies only when a terminal is watching. */
|
|
268
268
|
delay: z.string().regex(DURATION_RE, "must be a duration such as 5s or 500ms").optional(),
|
|
269
269
|
/** Whether the launcher waits for a key press after its own output before it starts claude. Takes the place of `delay` when both are set. Applies only when a terminal is watching. */
|
|
270
|
-
pause: z.boolean().optional()
|
|
270
|
+
pause: z.boolean().optional(),
|
|
271
|
+
/** Whether the launcher's report, for a launch that picks from a pool, lists every member the pick ranked with why each stands where it does, and not only the member it picked. */
|
|
272
|
+
explain: z.boolean().optional()
|
|
271
273
|
});
|
|
272
274
|
CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
|
|
273
275
|
PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
|
|
@@ -1376,6 +1378,9 @@ function flattenLayers(layers, options) {
|
|
|
1376
1378
|
if (layer.launch.pause !== void 0) {
|
|
1377
1379
|
launch.pause = layer.launch.pause;
|
|
1378
1380
|
}
|
|
1381
|
+
if (layer.launch.explain !== void 0) {
|
|
1382
|
+
launch.explain = layer.launch.explain;
|
|
1383
|
+
}
|
|
1379
1384
|
}
|
|
1380
1385
|
if (layer.entries === void 0) {
|
|
1381
1386
|
continue;
|
|
@@ -2954,7 +2959,7 @@ var init_package = __esm({
|
|
|
2954
2959
|
"package.json"() {
|
|
2955
2960
|
package_default = {
|
|
2956
2961
|
name: "claude-use",
|
|
2957
|
-
version: "11.
|
|
2962
|
+
version: "11.30.0",
|
|
2958
2963
|
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.",
|
|
2959
2964
|
license: "MIT",
|
|
2960
2965
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -7551,7 +7556,8 @@ var init_argv = __esm({
|
|
|
7551
7556
|
{ flag: "--skip-permissions", key: "skipPermissions" },
|
|
7552
7557
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
7553
7558
|
{ flag: "--wait", key: "wait" },
|
|
7554
|
-
{ flag: "--pause", key: "pause" }
|
|
7559
|
+
{ flag: "--pause", key: "pause" },
|
|
7560
|
+
{ flag: "--explain", key: "explain" }
|
|
7555
7561
|
];
|
|
7556
7562
|
LAUNCHER_FLAG_NAMES = [
|
|
7557
7563
|
...VALUED_FLAGS,
|
|
@@ -7741,6 +7747,7 @@ function resolveLaunchFlags(params) {
|
|
|
7741
7747
|
headroom: params.flags?.headroom ?? parseEnvBool("AGENT_SHIM_HEADROOM", params.env.AGENT_SHIM_HEADROOM) ?? params.cascade?.headroom ?? false,
|
|
7742
7748
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
7743
7749
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
7750
|
+
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
7744
7751
|
delayMs: resolveDelayMs(params)
|
|
7745
7752
|
};
|
|
7746
7753
|
}
|
|
@@ -8078,6 +8085,18 @@ var init_hold = __esm({
|
|
|
8078
8085
|
}
|
|
8079
8086
|
});
|
|
8080
8087
|
|
|
8088
|
+
// src/usage/candidateText.ts
|
|
8089
|
+
function candidateHeading(candidate) {
|
|
8090
|
+
const score = candidate.score === void 0 ? "" : ` score ${candidate.score.toFixed(2)}${candidate.scoreWindow === "fiveHour" ? " by 5h reset" : " by 7d reset"}`;
|
|
8091
|
+
const dry = candidate.feasible ? "" : " (5h would run dry)";
|
|
8092
|
+
return `[${candidate.class}${score}]${dry}`;
|
|
8093
|
+
}
|
|
8094
|
+
var init_candidateText = __esm({
|
|
8095
|
+
"src/usage/candidateText.ts"() {
|
|
8096
|
+
"use strict";
|
|
8097
|
+
}
|
|
8098
|
+
});
|
|
8099
|
+
|
|
8081
8100
|
// src/launcher/launchReport.ts
|
|
8082
8101
|
function poolDetail(pool) {
|
|
8083
8102
|
const [reason] = pool.reasons;
|
|
@@ -8086,6 +8105,12 @@ function poolDetail(pool) {
|
|
|
8086
8105
|
}
|
|
8087
8106
|
return reason === void 0 ? {} : { detail: reason };
|
|
8088
8107
|
}
|
|
8108
|
+
function rankingNotes(ranking, picked) {
|
|
8109
|
+
return ranking.flatMap((candidate, index) => [
|
|
8110
|
+
`${String(index + 1)}. ${candidate.identity} ${candidateHeading(candidate)}${candidate.identity === picked ? " (picked)" : ""}`,
|
|
8111
|
+
` ${candidate.reasons.join("; ")}`
|
|
8112
|
+
]);
|
|
8113
|
+
}
|
|
8089
8114
|
function decisionRows(facts) {
|
|
8090
8115
|
return [
|
|
8091
8116
|
{ label: "identity", value: facts.identity ?? "(none)", detail: facts.identitySource },
|
|
@@ -8093,7 +8118,8 @@ function decisionRows(facts) {
|
|
|
8093
8118
|
{
|
|
8094
8119
|
label: "pool",
|
|
8095
8120
|
value: facts.pool.name,
|
|
8096
|
-
...poolDetail(facts.pool)
|
|
8121
|
+
...poolDetail(facts.pool),
|
|
8122
|
+
...facts.ranking === void 0 ? {} : { notes: rankingNotes(facts.ranking, facts.identity) }
|
|
8097
8123
|
}
|
|
8098
8124
|
],
|
|
8099
8125
|
...facts.profile === void 0 ? [] : [{ label: "profile", value: facts.profile.name, detail: facts.profile.source }],
|
|
@@ -8128,6 +8154,7 @@ function noteRow(text) {
|
|
|
8128
8154
|
var init_launchReport = __esm({
|
|
8129
8155
|
"src/launcher/launchReport.ts"() {
|
|
8130
8156
|
"use strict";
|
|
8157
|
+
init_candidateText();
|
|
8131
8158
|
}
|
|
8132
8159
|
});
|
|
8133
8160
|
|
|
@@ -8513,6 +8540,7 @@ function resolvePoolLaunch(params) {
|
|
|
8513
8540
|
identity: pick.identity,
|
|
8514
8541
|
explanation: `pool ${poolName}: ${move}${pick.reasons.slice(0, REASONS_LOGGED).join("; ")}`,
|
|
8515
8542
|
reasons: pick.reasons,
|
|
8543
|
+
candidates: graph.ranking.candidates,
|
|
8516
8544
|
...movedOff === void 0 ? {} : { movedOff }
|
|
8517
8545
|
};
|
|
8518
8546
|
}
|
|
@@ -8689,7 +8717,8 @@ function pickFromPool(decided, params, parsedArgv, readOnly) {
|
|
|
8689
8717
|
}
|
|
8690
8718
|
return {
|
|
8691
8719
|
identityDecision: { ...decided, name: resolution.identity },
|
|
8692
|
-
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } }
|
|
8720
|
+
poolPick: { name: decided.pool, reasons: resolution.reasons, ...resolution.movedOff === void 0 ? {} : { movedOff: resolution.movedOff } },
|
|
8721
|
+
poolRanking: resolution.candidates
|
|
8693
8722
|
};
|
|
8694
8723
|
}
|
|
8695
8724
|
function decideLaunch(params, readOnly) {
|
|
@@ -8716,7 +8745,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8716
8745
|
return trimmed === "" ? void 0 : trimmed;
|
|
8717
8746
|
}
|
|
8718
8747
|
});
|
|
8719
|
-
const { identityDecision, poolPick } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
8748
|
+
const { identityDecision, poolPick, poolRanking } = pickFromPool(decidedIdentity, params, parsedArgv, readOnly);
|
|
8720
8749
|
const farmIdentity = configDirEscapeHatchApplies ? void 0 : identityDecision.name;
|
|
8721
8750
|
const farm = farmIdentity === void 0 ? void 0 : params.farm;
|
|
8722
8751
|
if (!readOnly && farm !== void 0 && farmIdentity !== void 0) {
|
|
@@ -8852,6 +8881,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8852
8881
|
...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom },
|
|
8853
8882
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
8854
8883
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
8884
|
+
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
8855
8885
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
8856
8886
|
}
|
|
8857
8887
|
});
|
|
@@ -8888,6 +8918,7 @@ function decideLaunch(params, readOnly) {
|
|
|
8888
8918
|
parsedArgv,
|
|
8889
8919
|
identityDecision,
|
|
8890
8920
|
poolPick,
|
|
8921
|
+
poolRanking,
|
|
8891
8922
|
notes,
|
|
8892
8923
|
configDirEscapeHatch: configDirEscapeHatchApplies,
|
|
8893
8924
|
farmIdentity,
|
|
@@ -8908,12 +8939,13 @@ function prepareLaunch(params) {
|
|
|
8908
8939
|
const { paths, proc, log } = params;
|
|
8909
8940
|
const { env } = proc;
|
|
8910
8941
|
const decided = decideLaunch(params, false);
|
|
8911
|
-
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
8942
|
+
const { identityDecision, configProfileDecision, resolvedProvider, identityCredential, poolPick, poolRanking, notes, flags: resolvedFlags, args: finalArgv, configDirEscapeHatch: configDirEscapeHatchApplies, decision } = decided;
|
|
8912
8943
|
const rows = [
|
|
8913
8944
|
...decisionRows({
|
|
8914
8945
|
identity: identityDecision.name,
|
|
8915
8946
|
identitySource: identityDecision.source,
|
|
8916
8947
|
pool: poolPick,
|
|
8948
|
+
ranking: resolvedFlags.explain ? poolRanking : void 0,
|
|
8917
8949
|
profile: configProfileDecision.name === void 0 ? void 0 : { name: configProfileDecision.name, source: configProfileDecision.source },
|
|
8918
8950
|
provider: resolvedProvider === void 0 ? void 0 : { name: resolvedProvider.name, credential: `${resolvedProvider.credential.target} from ${describeSource(resolvedProvider.credential.source)}` },
|
|
8919
8951
|
identityCredential: identityCredential === void 0 ? void 0 : `${identityCredential.target} from ${describeSource(identityCredential.source)}`
|
|
@@ -13536,6 +13568,9 @@ function applyProfileChange(paths, name, change) {
|
|
|
13536
13568
|
if (change.launchPause !== void 0) {
|
|
13537
13569
|
launchPatch.pause = change.launchPause;
|
|
13538
13570
|
}
|
|
13571
|
+
if (change.launchExplain !== void 0) {
|
|
13572
|
+
launchPatch.explain = change.launchExplain;
|
|
13573
|
+
}
|
|
13539
13574
|
if (Object.keys(launchPatch).length > 0) {
|
|
13540
13575
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
13541
13576
|
touched = true;
|
|
@@ -15753,7 +15788,8 @@ var ConfigProfileSetInputSchema = z24.strictObject({
|
|
|
15753
15788
|
provider: z24.union([z24.string().min(1), z24.literal(false)]).optional(),
|
|
15754
15789
|
claudeVersion: z24.union([z24.string().min(1), z24.literal(false)]).optional(),
|
|
15755
15790
|
delay: z24.union([z24.string().regex(DURATION_RE), z24.literal(false)]).optional(),
|
|
15756
|
-
pause: z24.boolean().optional()
|
|
15791
|
+
pause: z24.boolean().optional(),
|
|
15792
|
+
explain: z24.boolean().optional()
|
|
15757
15793
|
}).optional()
|
|
15758
15794
|
});
|
|
15759
15795
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -15965,7 +16001,8 @@ function createConfigApiRouter(deps) {
|
|
|
15965
16001
|
...launch?.provider === void 0 ? {} : { launchProvider: launch.provider },
|
|
15966
16002
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
15967
16003
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
15968
|
-
...launch?.pause === void 0 ? {} : { launchPause: launch.pause }
|
|
16004
|
+
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
16005
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
15969
16006
|
});
|
|
15970
16007
|
return { action: "updated", kind: "profile", name: input.name, value: profileValue(input.name, paths) };
|
|
15971
16008
|
})
|
|
@@ -16275,6 +16312,7 @@ var LaunchFlagsSchema = z26.strictObject({
|
|
|
16275
16312
|
headroom: z26.boolean(),
|
|
16276
16313
|
trackUsage: z26.boolean(),
|
|
16277
16314
|
pause: z26.boolean(),
|
|
16315
|
+
explain: z26.boolean(),
|
|
16278
16316
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
16279
16317
|
delayMs: z26.number()
|
|
16280
16318
|
});
|
package/dist/types/index.d.ts
CHANGED
|
@@ -278,6 +278,7 @@ declare const LaunchSchema: z.ZodObject<{
|
|
|
278
278
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
279
279
|
delay: z.ZodOptional<z.ZodString>;
|
|
280
280
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
281
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
281
282
|
}, z.core.$strict>;
|
|
282
283
|
type LaunchFlags = z.infer<typeof LaunchSchema>;
|
|
283
284
|
/**
|
|
@@ -861,6 +862,7 @@ declare const ConfigProfileSchema: z.ZodObject<{
|
|
|
861
862
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
862
863
|
delay: z.ZodOptional<z.ZodString>;
|
|
863
864
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
865
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
864
866
|
}, z.core.$strict>>;
|
|
865
867
|
}, z.core.$strict>;
|
|
866
868
|
type ConfigProfile = z.infer<typeof ConfigProfileSchema>;
|
|
@@ -1069,6 +1071,7 @@ declare const DirectoryRuleSchema: z.ZodObject<{
|
|
|
1069
1071
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1070
1072
|
delay: z.ZodOptional<z.ZodString>;
|
|
1071
1073
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1074
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1072
1075
|
}, z.core.$strict>>;
|
|
1073
1076
|
path: z.ZodString;
|
|
1074
1077
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
@@ -1250,6 +1253,7 @@ declare const DirectoryRulesSchema: z.ZodObject<{
|
|
|
1250
1253
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1251
1254
|
delay: z.ZodOptional<z.ZodString>;
|
|
1252
1255
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1256
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1253
1257
|
}, z.core.$strict>>;
|
|
1254
1258
|
path: z.ZodString;
|
|
1255
1259
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
@@ -1432,6 +1436,7 @@ declare const PortableConfigSchema: z.ZodObject<{
|
|
|
1432
1436
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1433
1437
|
delay: z.ZodOptional<z.ZodString>;
|
|
1434
1438
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1439
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1435
1440
|
}, z.core.$strict>>;
|
|
1436
1441
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
1437
1442
|
identity: z.ZodOptional<z.ZodString>;
|
|
@@ -1638,6 +1643,7 @@ declare const GlobalConfigSchema: z.ZodObject<{
|
|
|
1638
1643
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1639
1644
|
delay: z.ZodOptional<z.ZodString>;
|
|
1640
1645
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1646
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1641
1647
|
}, z.core.$strict>>;
|
|
1642
1648
|
headroom: z.ZodOptional<z.ZodObject<{
|
|
1643
1649
|
source: z.ZodOptional<z.ZodString>;
|
|
@@ -5990,6 +5996,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
5990
5996
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
5991
5997
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
5992
5998
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
5999
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
5993
6000
|
}, zod_v4_core.$strict>>;
|
|
5994
6001
|
}, zod_v4_core.$strict>;
|
|
5995
6002
|
}, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
@@ -6008,6 +6015,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6008
6015
|
claudeVersion: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
6009
6016
|
delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
6010
6017
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6018
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6011
6019
|
}, zod_v4_core.$strict>>;
|
|
6012
6020
|
}, zod_v4_core.$strict>, zod.ZodObject<{
|
|
6013
6021
|
action: zod.ZodLiteral<"updated">;
|
|
@@ -6113,6 +6121,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6113
6121
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
6114
6122
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
6115
6123
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6124
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6116
6125
|
}, zod_v4_core.$strict>>;
|
|
6117
6126
|
}, zod_v4_core.$strict>;
|
|
6118
6127
|
}, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
@@ -6715,6 +6724,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6715
6724
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
6716
6725
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
6717
6726
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6727
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6718
6728
|
}, zod_v4_core.$strict>>;
|
|
6719
6729
|
path: zod.ZodString;
|
|
6720
6730
|
configProfile: zod.ZodOptional<zod.ZodString>;
|
|
@@ -6901,6 +6911,7 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6901
6911
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
6902
6912
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
6903
6913
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6914
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6904
6915
|
}, zod_v4_core.$strict>>;
|
|
6905
6916
|
path: zod.ZodString;
|
|
6906
6917
|
configProfile: zod.ZodOptional<zod.ZodString>;
|
|
@@ -7232,6 +7243,8 @@ interface ResolvedLaunchFlags {
|
|
|
7232
7243
|
readonly trackUsage: boolean;
|
|
7233
7244
|
/** Whether the launcher waits for a key press after its own output before it starts claude. */
|
|
7234
7245
|
readonly pause: boolean;
|
|
7246
|
+
/** Whether the launch's report lists every pool member the pick ranked and why, and not only the one picked. */
|
|
7247
|
+
readonly explain: boolean;
|
|
7235
7248
|
/** How long the launcher waits after its own output before it starts claude, in milliseconds; zero for no wait. */
|
|
7236
7249
|
readonly delayMs: number;
|
|
7237
7250
|
}
|
|
@@ -7524,6 +7537,7 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
|
|
|
7524
7537
|
headroom: zod.ZodBoolean;
|
|
7525
7538
|
trackUsage: zod.ZodBoolean;
|
|
7526
7539
|
pause: zod.ZodBoolean;
|
|
7540
|
+
explain: zod.ZodBoolean;
|
|
7527
7541
|
delayMs: zod.ZodNumber;
|
|
7528
7542
|
}, zod_v4_core.$strict>;
|
|
7529
7543
|
claudeVersion: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -8642,6 +8656,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
8642
8656
|
headroom: zod.ZodBoolean;
|
|
8643
8657
|
trackUsage: zod.ZodBoolean;
|
|
8644
8658
|
pause: zod.ZodBoolean;
|
|
8659
|
+
explain: zod.ZodBoolean;
|
|
8645
8660
|
delayMs: zod.ZodNumber;
|
|
8646
8661
|
}, zod_v4_core.$strict>;
|
|
8647
8662
|
claudeVersion: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -9012,6 +9027,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9012
9027
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9013
9028
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9014
9029
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9030
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9015
9031
|
}, zod_v4_core.$strict>>;
|
|
9016
9032
|
}, zod_v4_core.$strict>;
|
|
9017
9033
|
}, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
@@ -9030,6 +9046,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9030
9046
|
claudeVersion: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
9031
9047
|
delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
9032
9048
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9049
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9033
9050
|
}, zod_v4_core.$strict>>;
|
|
9034
9051
|
}, zod_v4_core.$strict>, zod.ZodObject<{
|
|
9035
9052
|
action: zod.ZodLiteral<"updated">;
|
|
@@ -9135,6 +9152,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9135
9152
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9136
9153
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9137
9154
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9155
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9138
9156
|
}, zod_v4_core.$strict>>;
|
|
9139
9157
|
}, zod_v4_core.$strict>;
|
|
9140
9158
|
}, zod_v4_core.$strict>, MergedErrorMap<$ErrorMap, TErrorMap>>;
|
|
@@ -9737,6 +9755,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9737
9755
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9738
9756
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9739
9757
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9758
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9740
9759
|
}, zod_v4_core.$strict>>;
|
|
9741
9760
|
path: zod.ZodString;
|
|
9742
9761
|
configProfile: zod.ZodOptional<zod.ZodString>;
|
|
@@ -9923,6 +9942,7 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9923
9942
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9924
9943
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9925
9944
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9945
|
+
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9926
9946
|
}, zod_v4_core.$strict>>;
|
|
9927
9947
|
path: zod.ZodString;
|
|
9928
9948
|
configProfile: zod.ZodOptional<zod.ZodString>;
|
|
@@ -11149,6 +11169,7 @@ declare const ConfigProfileAddOutputSchema: z.ZodObject<{
|
|
|
11149
11169
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
11150
11170
|
delay: z.ZodOptional<z.ZodString>;
|
|
11151
11171
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
11172
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
11152
11173
|
}, z.core.$strict>>;
|
|
11153
11174
|
}, z.core.$strict>;
|
|
11154
11175
|
}, z.core.$strict>;
|
|
@@ -11168,6 +11189,7 @@ declare const ConfigProfileSetInputSchema: z.ZodObject<{
|
|
|
11168
11189
|
claudeVersion: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
11169
11190
|
delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
11170
11191
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
11192
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
11171
11193
|
}, z.core.$strict>>;
|
|
11172
11194
|
}, z.core.$strict>;
|
|
11173
11195
|
declare const ConfigProfileSetOutputSchema: z.ZodObject<{
|
|
@@ -11274,6 +11296,7 @@ declare const ConfigProfileSetOutputSchema: z.ZodObject<{
|
|
|
11274
11296
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
11275
11297
|
delay: z.ZodOptional<z.ZodString>;
|
|
11276
11298
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
11299
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
11277
11300
|
}, z.core.$strict>>;
|
|
11278
11301
|
}, z.core.$strict>;
|
|
11279
11302
|
}, z.core.$strict>;
|
|
@@ -11878,6 +11901,7 @@ declare const ConfigRuleAddOutputSchema: z.ZodObject<{
|
|
|
11878
11901
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
11879
11902
|
delay: z.ZodOptional<z.ZodString>;
|
|
11880
11903
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
11904
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
11881
11905
|
}, z.core.$strict>>;
|
|
11882
11906
|
path: z.ZodString;
|
|
11883
11907
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
@@ -12066,6 +12090,7 @@ declare const ConfigRuleSetOutputSchema: z.ZodObject<{
|
|
|
12066
12090
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
12067
12091
|
delay: z.ZodOptional<z.ZodString>;
|
|
12068
12092
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
12093
|
+
explain: z.ZodOptional<z.ZodBoolean>;
|
|
12069
12094
|
}, z.core.$strict>>;
|
|
12070
12095
|
path: z.ZodString;
|
|
12071
12096
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
@@ -12553,6 +12578,7 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
|
|
|
12553
12578
|
headroom: z.ZodBoolean;
|
|
12554
12579
|
trackUsage: z.ZodBoolean;
|
|
12555
12580
|
pause: z.ZodBoolean;
|
|
12581
|
+
explain: z.ZodBoolean;
|
|
12556
12582
|
delayMs: z.ZodNumber;
|
|
12557
12583
|
}, z.core.$strict>;
|
|
12558
12584
|
claudeVersion: z.ZodOptional<z.ZodObject<{
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-use",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.30.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>",
|