claude-use 11.45.0 → 11.46.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 +1 -2
- package/dist/cli.cjs +29 -53
- package/dist/index.cjs +21 -41
- package/dist/index.mjs +21 -41
- package/dist/types/index.d.ts +0 -30
- 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] [--[no-]launch-explain] [--
|
|
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]
|
|
@@ -196,7 +196,6 @@ agent-shim run [@<identity>] [launch flags] [claude arguments]
|
|
|
196
196
|
# --claude-version <version> run exactly this installed Claude Code version
|
|
197
197
|
# --delay <duration> wait this long after the launcher's own output before starting claude; --[no-]pause waits for a key press instead
|
|
198
198
|
# --[no-]explain with @pool:<name>, list every member the pick ranked and why, not only the one picked
|
|
199
|
-
# --[no-]route-by-name also route bare virtual-model names through the models block (qualified names route on every session)
|
|
200
199
|
# --native run the real claude with nothing from agent-shim applied; cannot be combined with the flags above
|
|
201
200
|
claude @<identity> ... # the same, once `agent-shim shim enable` has run
|
|
202
201
|
```
|
package/dist/cli.cjs
CHANGED
|
@@ -27036,7 +27036,6 @@ var init_schema = __esm({
|
|
|
27036
27036
|
/** 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. */
|
|
27037
27037
|
pause: external_exports.boolean().optional(),
|
|
27038
27038
|
/** Whether a provider session routes provider-qualified model names (`z/glm-5.3`, `auto`) through the `models` block to the provider that serves them, instead of sending every request to the launch provider. */
|
|
27039
|
-
routeByName: external_exports.boolean().optional(),
|
|
27040
27039
|
/** 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. */
|
|
27041
27040
|
explain: external_exports.boolean().optional()
|
|
27042
27041
|
});
|
|
@@ -27606,7 +27605,7 @@ var init_state = __esm({
|
|
|
27606
27605
|
import_node_path5 = __toESM(require("node:path"), 1);
|
|
27607
27606
|
init_zod();
|
|
27608
27607
|
init_schema();
|
|
27609
|
-
FRONT_DOOR_PROTOCOL =
|
|
27608
|
+
FRONT_DOOR_PROTOCOL = 5;
|
|
27610
27609
|
FrontDoorSessionSchema = external_exports.strictObject({ pid: external_exports.number().int().positive(), startedAt: external_exports.number(), token: external_exports.string().min(1), supervisorPid: external_exports.number().int().positive().optional(), sessionId: external_exports.string().min(1).optional(), models: ModelsConfigSchema.optional() });
|
|
27611
27610
|
FrontDoorStateSchema = external_exports.strictObject({
|
|
27612
27611
|
/**
|
|
@@ -31887,9 +31886,6 @@ function applyProfileChange(paths, name, change) {
|
|
|
31887
31886
|
if (change.launchExplain !== void 0) {
|
|
31888
31887
|
launchPatch.explain = change.launchExplain;
|
|
31889
31888
|
}
|
|
31890
|
-
if (change.launchRouteByName !== void 0) {
|
|
31891
|
-
launchPatch.routeByName = change.launchRouteByName;
|
|
31892
|
-
}
|
|
31893
31889
|
if (Object.keys(launchPatch).length > 0) {
|
|
31894
31890
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
31895
31891
|
touched = true;
|
|
@@ -32859,9 +32855,6 @@ function flattenLayers(layers, options) {
|
|
|
32859
32855
|
if (layer.launch.explain !== void 0) {
|
|
32860
32856
|
launch.explain = layer.launch.explain;
|
|
32861
32857
|
}
|
|
32862
|
-
if (layer.launch.routeByName !== void 0) {
|
|
32863
|
-
launch.routeByName = layer.launch.routeByName;
|
|
32864
|
-
}
|
|
32865
32858
|
}
|
|
32866
32859
|
if (layer.models !== void 0) {
|
|
32867
32860
|
models = mergeModels(models, layer.models);
|
|
@@ -34701,7 +34694,7 @@ var init_package = __esm({
|
|
|
34701
34694
|
"package.json"() {
|
|
34702
34695
|
package_default = {
|
|
34703
34696
|
name: "claude-use",
|
|
34704
|
-
version: "11.
|
|
34697
|
+
version: "11.46.0",
|
|
34705
34698
|
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.",
|
|
34706
34699
|
license: "MIT",
|
|
34707
34700
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -34966,7 +34959,6 @@ function identifyRequest(headers) {
|
|
|
34966
34959
|
sessionId: internalHeaderValue(headers, SESSION_HEADER),
|
|
34967
34960
|
provider: internalHeaderValue(headers, PROVIDER_HEADER),
|
|
34968
34961
|
headroom: internalHeaderValue(headers, HEADROOM_FLAG_HEADER) === "1",
|
|
34969
|
-
routeByName: internalHeaderValue(headers, ROUTE_BY_NAME_HEADER) === "1",
|
|
34970
34962
|
projectId: internalHeaderValue(headers, PROJECT_ID_HEADER)
|
|
34971
34963
|
},
|
|
34972
34964
|
forwardableHeaders: forwardable
|
|
@@ -34986,7 +34978,7 @@ function parseProviderPath(path65) {
|
|
|
34986
34978
|
}
|
|
34987
34979
|
return { provider: decodeURIComponent(tail.slice(0, slash)), rest: tail.slice(slash) };
|
|
34988
34980
|
}
|
|
34989
|
-
var HEADROOM_SESSION_HEADER, INTERNAL_HEADER_NAMES, IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER,
|
|
34981
|
+
var HEADROOM_SESSION_HEADER, INTERNAL_HEADER_NAMES, IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER, PROJECT_ID_HEADER, CLIENT_SESSION_HEADER, HEADROOM_BASE_URL_HEADER, AUTH_HEADER, HOP_SECRET_HEADER, HOP_ID_HEADER, PROVIDER_PATH_PREFIX;
|
|
34990
34982
|
var init_route = __esm({
|
|
34991
34983
|
"src/frontdoor/route.ts"() {
|
|
34992
34984
|
"use strict";
|
|
@@ -34995,7 +34987,6 @@ var init_route = __esm({
|
|
|
34995
34987
|
"x-agent-shim-identity",
|
|
34996
34988
|
"x-agent-shim-session",
|
|
34997
34989
|
"x-agent-shim-headroom",
|
|
34998
|
-
"x-agent-shim-route-by-name",
|
|
34999
34990
|
"x-agent-shim-auth",
|
|
35000
34991
|
"x-agent-shim-provider",
|
|
35001
34992
|
"x-agent-shim-hop",
|
|
@@ -35008,7 +34999,6 @@ var init_route = __esm({
|
|
|
35008
34999
|
SESSION_HEADER = "x-agent-shim-session";
|
|
35009
35000
|
PROVIDER_HEADER = "x-agent-shim-provider";
|
|
35010
35001
|
HEADROOM_FLAG_HEADER = "x-agent-shim-headroom";
|
|
35011
|
-
ROUTE_BY_NAME_HEADER = "x-agent-shim-route-by-name";
|
|
35012
35002
|
PROJECT_ID_HEADER = "x-headroom-project-id";
|
|
35013
35003
|
CLIENT_SESSION_HEADER = "x-claude-code-session-id";
|
|
35014
35004
|
HEADROOM_BASE_URL_HEADER = "x-headroom-base-url";
|
|
@@ -63810,8 +63800,7 @@ var init_argv = __esm({
|
|
|
63810
63800
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
63811
63801
|
{ flag: "--wait", key: "wait" },
|
|
63812
63802
|
{ flag: "--pause", key: "pause" },
|
|
63813
|
-
{ flag: "--explain", key: "explain" }
|
|
63814
|
-
{ flag: "--route-by-name", key: "routeByName" }
|
|
63803
|
+
{ flag: "--explain", key: "explain" }
|
|
63815
63804
|
];
|
|
63816
63805
|
LAUNCHER_FLAG_NAMES = [
|
|
63817
63806
|
...VALUED_FLAGS,
|
|
@@ -64001,7 +63990,6 @@ function resolveLaunchFlags(params) {
|
|
|
64001
63990
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
64002
63991
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
64003
63992
|
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
64004
|
-
routeByName: params.flags?.routeByName ?? parseEnvBool("AGENT_SHIM_ROUTE_BY_NAME", params.env.AGENT_SHIM_ROUTE_BY_NAME) ?? params.cascade?.routeByName ?? false,
|
|
64005
63993
|
delayMs: resolveDelayMs(params)
|
|
64006
63994
|
};
|
|
64007
63995
|
}
|
|
@@ -64050,12 +64038,10 @@ function buildEnv(params) {
|
|
|
64050
64038
|
env[key] = value2;
|
|
64051
64039
|
}
|
|
64052
64040
|
}
|
|
64053
|
-
|
|
64054
|
-
|
|
64055
|
-
|
|
64056
|
-
|
|
64057
|
-
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
64058
|
-
}
|
|
64041
|
+
for (const tier of CLAUDE_TIERS) {
|
|
64042
|
+
const ref = params.tierModels?.[tier];
|
|
64043
|
+
if (ref !== void 0) {
|
|
64044
|
+
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
64059
64045
|
}
|
|
64060
64046
|
}
|
|
64061
64047
|
if (params.provider !== void 0) {
|
|
@@ -64078,7 +64064,6 @@ function buildEnv(params) {
|
|
|
64078
64064
|
{ name: SESSION_HEADER, value: params.sessionId },
|
|
64079
64065
|
{ name: AUTH_HEADER, value: params.frontdoor.sessionToken },
|
|
64080
64066
|
...params.provider === void 0 ? [] : [{ name: PROVIDER_HEADER, value: params.provider.name }],
|
|
64081
|
-
...params.routeByName ? [{ name: ROUTE_BY_NAME_HEADER, value: "1" }] : [],
|
|
64082
64067
|
...params.headroom === void 0 ? [] : [
|
|
64083
64068
|
{ name: HEADROOM_FLAG_HEADER, value: "1" },
|
|
64084
64069
|
{ name: PROJECT_ID_HEADER, value: params.headroom.projectId }
|
|
@@ -65950,7 +65935,7 @@ function providerModelRows(provider, catalogue = []) {
|
|
|
65950
65935
|
const taken = new Set(named.map((row) => labelOf(row.model)));
|
|
65951
65936
|
return [...named, ...catalogueRows(provider, catalogue).filter((row) => !taken.has(labelOf(row.model)))];
|
|
65952
65937
|
}
|
|
65953
|
-
function routedModelRows(models, providers
|
|
65938
|
+
function routedModelRows(models, providers) {
|
|
65954
65939
|
const hidden = new Set(models.hide ?? []);
|
|
65955
65940
|
const shown = models.show === void 0 ? void 0 : new Set(models.show);
|
|
65956
65941
|
const visible = (model) => shown === void 0 ? !hidden.has(model) : shown.has(model);
|
|
@@ -65958,17 +65943,17 @@ function routedModelRows(models, providers, bare = true) {
|
|
|
65958
65943
|
const concreteByRef = new Map(concrete.map((row) => [row.model, row]));
|
|
65959
65944
|
const families = buildFamilies([...concrete.map((row) => row.model), ...accountRefsOf(models)], models);
|
|
65960
65945
|
const handlingOf = (refs) => refs.map((ref) => concreteByRef.get(ref)?.behavesAs).find((behavesAs) => behavesAs !== void 0) ?? TIER_BEHAVES_AS.sonnet;
|
|
65961
|
-
const virtual =
|
|
65946
|
+
const virtual = Object.entries(models.virtual ?? {}).flatMap(([name, definition]) => {
|
|
65962
65947
|
if (!visible(name)) {
|
|
65963
65948
|
return [];
|
|
65964
65949
|
}
|
|
65965
65950
|
const targets = expandFamilyMembers(safeExpand(name, models), families);
|
|
65966
65951
|
return [{ model: name, label: name, description: `Virtual (${definition.mode})`, behavesAs: handlingOf(targets) }];
|
|
65967
|
-
})
|
|
65968
|
-
const familyRows =
|
|
65952
|
+
});
|
|
65953
|
+
const familyRows = sharedFamilies(families).flatMap((family) => {
|
|
65969
65954
|
const member = `${FAMILY_PREFIX}${family.key}`;
|
|
65970
65955
|
return visible(member) ? [{ model: member, label: family.key, description: `Family (${familyMode(family.settings)}): ${family.refs.join(", ")}`, behavesAs: handlingOf(family.refs) }] : [];
|
|
65971
|
-
})
|
|
65956
|
+
});
|
|
65972
65957
|
return [...virtual, ...familyRows, ...concrete.filter((row) => visible(row.model))];
|
|
65973
65958
|
}
|
|
65974
65959
|
function safeExpand(name, models) {
|
|
@@ -66439,7 +66424,6 @@ function decideLaunch(params, readOnly) {
|
|
|
66439
66424
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
66440
66425
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
66441
66426
|
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
66442
|
-
...parsedArgv.routeByName === void 0 ? {} : { routeByName: parsedArgv.routeByName },
|
|
66443
66427
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
66444
66428
|
}
|
|
66445
66429
|
});
|
|
@@ -66449,7 +66433,6 @@ function decideLaunch(params, readOnly) {
|
|
|
66449
66433
|
notes.push(`${loginlessProvider.identity} has no stored login, so Remote Control is off; provider ${loginlessProvider.provider} runs without it`);
|
|
66450
66434
|
}
|
|
66451
66435
|
const flags = loginlessProvider === void 0 ? requestedFlags : { ...requestedFlags, remoteControl: false };
|
|
66452
|
-
const routesByName = flags.routeByName || selectedProvider !== void 0 && isRouterProvider(selectedProvider.definition);
|
|
66453
66436
|
const globalModels = loadConfigFile(paths.globalConfigFile, GlobalConfigSchema, params.fs.readConfigFile)?.config.models;
|
|
66454
66437
|
const models = launchCascade !== void 0 && params.farm !== void 0 ? cascadeModels : globalModels;
|
|
66455
66438
|
const listedProviders = listProviderNames(fs26.readdir, paths.providersDir).flatMap((name) => {
|
|
@@ -66460,7 +66443,7 @@ function decideLaunch(params, readOnly) {
|
|
|
66460
66443
|
return [];
|
|
66461
66444
|
}
|
|
66462
66445
|
});
|
|
66463
|
-
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders
|
|
66446
|
+
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders), selectedProvider !== void 0);
|
|
66464
66447
|
const callerSettings = hasSettingsArgument(parsedArgv.rest);
|
|
66465
66448
|
if (pickerSettings !== void 0 && callerSettings) {
|
|
66466
66449
|
notes.push("--settings was passed, so /model keeps Claude Code's own model names");
|
|
@@ -66564,8 +66547,8 @@ function prepareLaunch(params) {
|
|
|
66564
66547
|
if (decided.pinnedVersion !== void 0) {
|
|
66565
66548
|
rows.push(pinnedVersionRow(decided.pinnedVersion.version, decided.pinnedVersion.source));
|
|
66566
66549
|
}
|
|
66567
|
-
const
|
|
66568
|
-
if (
|
|
66550
|
+
const namesResolved = decided.models !== void 0;
|
|
66551
|
+
if (namesResolved) {
|
|
66569
66552
|
const check2 = resolveRoutedProviderCredentials({ paths, port: params.fs, env, ...params.credentials === void 0 ? {} : { credentials: params.credentials }, models: decided.models, targets: () => targetRefs(paths) });
|
|
66570
66553
|
if (!check2.ok) {
|
|
66571
66554
|
log.error(check2.message);
|
|
@@ -66606,7 +66589,6 @@ function prepareLaunch(params) {
|
|
|
66606
66589
|
...headroom === void 0 ? {} : { headroom },
|
|
66607
66590
|
sessionId,
|
|
66608
66591
|
remoteControl: resolvedFlags.remoteControl,
|
|
66609
|
-
routeByName: routesByName,
|
|
66610
66592
|
...decided.models?.tiers === void 0 ? {} : { tierModels: decided.models.tiers }
|
|
66611
66593
|
});
|
|
66612
66594
|
const releases = [...headroom === void 0 || headroomPort === void 0 ? [] : [headroomPort.release], ...frontDoorRelease === void 0 ? [] : [frontDoorRelease]];
|
|
@@ -66634,8 +66616,7 @@ function resolveLaunch(params) {
|
|
|
66634
66616
|
...frontDoor ? { frontdoor: { port: 0, connectPort: 0, trustBundlePath: "", sessionToken: "" } } : {},
|
|
66635
66617
|
...decided.flags.headroom ? { headroom: { socketPath: "", projectId: "" } } : {},
|
|
66636
66618
|
sessionId: "",
|
|
66637
|
-
remoteControl: decided.flags.remoteControl
|
|
66638
|
-
routeByName: decided.flags.routeByName
|
|
66619
|
+
remoteControl: decided.flags.remoteControl
|
|
66639
66620
|
});
|
|
66640
66621
|
const credentialNames = decided.identityCredentialBlock === void 0 ? [] : Object.keys(credentialVariables(decided.identityCredentialBlock.target ?? "bearer", ""));
|
|
66641
66622
|
const environment = [.../* @__PURE__ */ new Set([...Object.keys(built).filter((name) => built[name] !== env[name]), ...credentialNames])].sort();
|
|
@@ -66647,7 +66628,7 @@ function resolveLaunch(params) {
|
|
|
66647
66628
|
bin: decided.bin,
|
|
66648
66629
|
args: decided.args,
|
|
66649
66630
|
...credential === void 0 ? {} : { credential },
|
|
66650
|
-
routing: { frontDoor, headroom: decided.flags.headroom
|
|
66631
|
+
routing: { frontDoor, headroom: decided.flags.headroom },
|
|
66651
66632
|
environment
|
|
66652
66633
|
};
|
|
66653
66634
|
}
|
|
@@ -113775,7 +113756,7 @@ function registerProfileCommand(program2, deps) {
|
|
|
113775
113756
|
withExamples(
|
|
113776
113757
|
profile.command("set <name>").description(
|
|
113777
113758
|
"Update a configuration profile's categories, entries, extends list, description or launch settings. With no options on a terminal, walks through its categories."
|
|
113778
|
-
).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("--
|
|
113759
|
+
).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) => {
|
|
113779
113760
|
const { json: json2, ...options } = allOptions;
|
|
113780
113761
|
requireProfileExists(paths, name);
|
|
113781
113762
|
if (Object.entries(allOptions).every(([key, value2]) => key === "json" || value2 === void 0)) {
|
|
@@ -129017,8 +128998,7 @@ var ConfigProfileSetInputSchema = external_exports.strictObject({
|
|
|
129017
128998
|
claudeVersion: external_exports.union([external_exports.string().min(1), external_exports.literal(false)]).optional(),
|
|
129018
128999
|
delay: external_exports.union([external_exports.string().regex(DURATION_RE), external_exports.literal(false)]).optional(),
|
|
129019
129000
|
pause: external_exports.boolean().optional(),
|
|
129020
|
-
explain: external_exports.boolean().optional()
|
|
129021
|
-
routeByName: external_exports.boolean().optional()
|
|
129001
|
+
explain: external_exports.boolean().optional()
|
|
129022
129002
|
}).optional()
|
|
129023
129003
|
});
|
|
129024
129004
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -129230,8 +129210,7 @@ function createConfigApiRouter(deps) {
|
|
|
129230
129210
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
129231
129211
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
129232
129212
|
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
129233
|
-
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
129234
|
-
...launch?.routeByName === void 0 ? {} : { launchRouteByName: launch.routeByName }
|
|
129213
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
129235
129214
|
});
|
|
129236
129215
|
return { action: "updated", kind: "profile", name: input2.name, value: profileValue(input2.name, paths) };
|
|
129237
129216
|
})
|
|
@@ -129533,7 +129512,6 @@ var LaunchFlagsSchema = external_exports.strictObject({
|
|
|
129533
129512
|
trackUsage: external_exports.boolean(),
|
|
129534
129513
|
pause: external_exports.boolean(),
|
|
129535
129514
|
explain: external_exports.boolean(),
|
|
129536
|
-
routeByName: external_exports.boolean(),
|
|
129537
129515
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
129538
129516
|
delayMs: external_exports.number()
|
|
129539
129517
|
});
|
|
@@ -129547,7 +129525,7 @@ var LaunchResolveOutputSchema = external_exports.strictObject({
|
|
|
129547
129525
|
args: external_exports.readonly(external_exports.array(external_exports.string())),
|
|
129548
129526
|
/** The credential the launch would authenticate with, by target and source kinds. Absent when none applies. */
|
|
129549
129527
|
credential: external_exports.strictObject({ subject: external_exports.enum(["provider", "identity"]), name: external_exports.string(), summary: CredentialSummarySchema }).optional(),
|
|
129550
|
-
routing: external_exports.strictObject({ frontDoor: external_exports.boolean(), headroom: external_exports.boolean()
|
|
129528
|
+
routing: external_exports.strictObject({ frontDoor: external_exports.boolean(), headroom: external_exports.boolean() }),
|
|
129551
129529
|
/** The names of the environment variables the launch would set or unset, sorted. Values are not reported. */
|
|
129552
129530
|
environment: external_exports.readonly(external_exports.array(external_exports.string())),
|
|
129553
129531
|
warnings: external_exports.readonly(external_exports.array(external_exports.string()))
|
|
@@ -131994,7 +131972,7 @@ var CHARS_PER_TOKEN2 = 4;
|
|
|
131994
131972
|
function needsOf(scan) {
|
|
131995
131973
|
return { hasImage: scan.hasImage === true, hasTools: scan.toolsPresent === true, thinking: scan.thinking === true, contextTokens: Math.ceil((scan.text?.length ?? 0) / CHARS_PER_TOKEN2) };
|
|
131996
131974
|
}
|
|
131997
|
-
function resolveRoutedModel(model, providerName, session, deps,
|
|
131975
|
+
function resolveRoutedModel(model, providerName, session, deps, memory, rotations, needs) {
|
|
131998
131976
|
const models = deps.models?.(session);
|
|
131999
131977
|
const qualified = model.includes("/") && !model.startsWith("acct:") ? model : void 0;
|
|
132000
131978
|
if (qualified !== void 0) {
|
|
@@ -132004,7 +131982,10 @@ function resolveRoutedModel(model, providerName, session, deps, byName, memory,
|
|
|
132004
131982
|
}
|
|
132005
131983
|
const isFamily = model.startsWith(FAMILY_PREFIX);
|
|
132006
131984
|
const virtual = isFamily ? void 0 : models?.virtual?.[model];
|
|
132007
|
-
if (
|
|
131985
|
+
if (virtual === void 0 && !isFamily) {
|
|
131986
|
+
return void 0;
|
|
131987
|
+
}
|
|
131988
|
+
if (providerName !== void 0 && (deps.targets?.() ?? []).some((ref) => ref === `${providerName}/${model}` || withoutContextMarker(ref) === `${providerName}/${withoutContextMarker(model)}`)) {
|
|
132008
131989
|
return void 0;
|
|
132009
131990
|
}
|
|
132010
131991
|
const declared = isFamily ? [model] : expandMembers(model, models);
|
|
@@ -132213,14 +132194,11 @@ function createProviderRouteResolver(deps) {
|
|
|
132213
132194
|
visited.add(providerName);
|
|
132214
132195
|
}
|
|
132215
132196
|
let routes;
|
|
132216
|
-
let isRouter;
|
|
132217
132197
|
try {
|
|
132218
132198
|
const definition = providerName === void 0 ? void 0 : loadProvider(deps.providersDir, providerName, deps.fs);
|
|
132219
132199
|
routes = definition === void 0 || !isHttpProvider(definition) ? void 0 : definition.routes;
|
|
132220
|
-
isRouter = definition !== void 0 && isRouterProvider(definition);
|
|
132221
132200
|
} catch {
|
|
132222
132201
|
routes = void 0;
|
|
132223
|
-
isRouter = false;
|
|
132224
132202
|
}
|
|
132225
132203
|
const resolvesNames = !nameResolved && !isRcSelfHostPath(path65);
|
|
132226
132204
|
if (resolvesNames) {
|
|
@@ -132240,7 +132218,7 @@ function createProviderRouteResolver(deps) {
|
|
|
132240
132218
|
message: moved ? `model "${account.model}" runs under identity "${account.identity}"; this session is being moved there and will resume with it` : `model "${account.model}" runs under identity "${account.identity}", which needs a relaunch this session cannot make; start it there with: claude @${account.identity} --resume`
|
|
132241
132219
|
};
|
|
132242
132220
|
}
|
|
132243
|
-
const routed = scan2.model === void 0 ? void 0 : resolveRoutedModel(scan2.model, providerName, current.session, { ...deps, definesProvider },
|
|
132221
|
+
const routed = scan2.model === void 0 ? void 0 : resolveRoutedModel(scan2.model, providerName, current.session, { ...deps, definesProvider }, routingMemory, rotations, needsOf(scan2));
|
|
132244
132222
|
const requested = scan2.model;
|
|
132245
132223
|
if (routed === void 0) {
|
|
132246
132224
|
current = scan2.replayed;
|
|
@@ -148841,12 +148819,11 @@ Launching:
|
|
|
148841
148819
|
--delay <duration> wait this long (5s, 500ms) after the launcher's own output before starting claude
|
|
148842
148820
|
--[no-]pause wait for a key press after the launcher's own output before starting claude
|
|
148843
148821
|
--[no-]explain with @pool:<name>, list every member the pick ranked and why, not only the one picked
|
|
148844
|
-
--[no-]route-by-name route provider-qualified model names through the models block to the provider that serves them
|
|
148845
148822
|
--native run the real claude with nothing from agent-shim applied (no other launch flag allowed)
|
|
148846
148823
|
|
|
148847
148824
|
Environment:
|
|
148848
148825
|
AGENT_SHIM_IDENTITY, AGENT_SHIM_CONFIG_PROFILE, AGENT_SHIM_SKIP_PERMISSIONS,
|
|
148849
|
-
AGENT_SHIM_REMOTE_CONTROL, AGENT_SHIM_HEADROOM, AGENT_SHIM_TRACK_USAGE, AGENT_SHIM_DELAY, AGENT_SHIM_PAUSE, AGENT_SHIM_EXPLAIN,
|
|
148826
|
+
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,
|
|
148850
148827
|
AGENT_SHIM_CATEGORY_OVERRIDE, AGENT_SHIM_ENTRY_OVERRIDE, AGENT_SHIM_HOME,
|
|
148851
148828
|
AGENT_SHIM_DEBUG (print stack traces), NO_COLOR. Booleans are true, false, 1 or 0.
|
|
148852
148829
|
|
|
@@ -149650,7 +149627,6 @@ function otherLaunchFlags(parsed) {
|
|
|
149650
149627
|
...parsed.delay === void 0 ? [] : ["--delay"],
|
|
149651
149628
|
...parsed.pause === void 0 ? [] : ["--[no-]pause"],
|
|
149652
149629
|
...parsed.explain === void 0 ? [] : ["--[no-]explain"],
|
|
149653
|
-
...parsed.routeByName === void 0 ? [] : ["--[no-]route-by-name"],
|
|
149654
149630
|
...parsed.headroom === void 0 ? [] : ["--[no-]headroom"],
|
|
149655
149631
|
...parsed.trackUsage === void 0 ? [] : ["--[no-]track-usage"],
|
|
149656
149632
|
...parsed.skipPermissions === void 0 ? [] : ["--[no-]skip-permissions"],
|
package/dist/index.cjs
CHANGED
|
@@ -294,7 +294,6 @@ var init_schema = __esm({
|
|
|
294
294
|
/** 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. */
|
|
295
295
|
pause: import_zod.z.boolean().optional(),
|
|
296
296
|
/** Whether a provider session routes provider-qualified model names (`z/glm-5.3`, `auto`) through the `models` block to the provider that serves them, instead of sending every request to the launch provider. */
|
|
297
|
-
routeByName: import_zod.z.boolean().optional(),
|
|
298
297
|
/** 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. */
|
|
299
298
|
explain: import_zod.z.boolean().optional()
|
|
300
299
|
});
|
|
@@ -1473,9 +1472,6 @@ function flattenLayers(layers, options) {
|
|
|
1473
1472
|
if (layer.launch.explain !== void 0) {
|
|
1474
1473
|
launch.explain = layer.launch.explain;
|
|
1475
1474
|
}
|
|
1476
|
-
if (layer.launch.routeByName !== void 0) {
|
|
1477
|
-
launch.routeByName = layer.launch.routeByName;
|
|
1478
|
-
}
|
|
1479
1475
|
}
|
|
1480
1476
|
if (layer.models !== void 0) {
|
|
1481
1477
|
models = mergeModels(models, layer.models);
|
|
@@ -2930,7 +2926,7 @@ var init_capability = __esm({
|
|
|
2930
2926
|
});
|
|
2931
2927
|
|
|
2932
2928
|
// src/frontdoor/route.ts
|
|
2933
|
-
var IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER,
|
|
2929
|
+
var IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER, PROJECT_ID_HEADER, AUTH_HEADER;
|
|
2934
2930
|
var init_route = __esm({
|
|
2935
2931
|
"src/frontdoor/route.ts"() {
|
|
2936
2932
|
"use strict";
|
|
@@ -2938,7 +2934,6 @@ var init_route = __esm({
|
|
|
2938
2934
|
SESSION_HEADER = "x-agent-shim-session";
|
|
2939
2935
|
PROVIDER_HEADER = "x-agent-shim-provider";
|
|
2940
2936
|
HEADROOM_FLAG_HEADER = "x-agent-shim-headroom";
|
|
2941
|
-
ROUTE_BY_NAME_HEADER = "x-agent-shim-route-by-name";
|
|
2942
2937
|
PROJECT_ID_HEADER = "x-headroom-project-id";
|
|
2943
2938
|
AUTH_HEADER = "x-agent-shim-auth";
|
|
2944
2939
|
}
|
|
@@ -3078,7 +3073,7 @@ var init_state = __esm({
|
|
|
3078
3073
|
import_node_path8 = __toESM(require("node:path"), 1);
|
|
3079
3074
|
import_zod3 = require("zod");
|
|
3080
3075
|
init_schema();
|
|
3081
|
-
FRONT_DOOR_PROTOCOL =
|
|
3076
|
+
FRONT_DOOR_PROTOCOL = 5;
|
|
3082
3077
|
FrontDoorSessionSchema = import_zod3.z.strictObject({ pid: import_zod3.z.number().int().positive(), startedAt: import_zod3.z.number(), token: import_zod3.z.string().min(1), supervisorPid: import_zod3.z.number().int().positive().optional(), sessionId: import_zod3.z.string().min(1).optional(), models: ModelsConfigSchema.optional() });
|
|
3083
3078
|
FrontDoorStateSchema = import_zod3.z.strictObject({
|
|
3084
3079
|
/**
|
|
@@ -3151,7 +3146,7 @@ var init_package = __esm({
|
|
|
3151
3146
|
"package.json"() {
|
|
3152
3147
|
package_default = {
|
|
3153
3148
|
name: "claude-use",
|
|
3154
|
-
version: "11.
|
|
3149
|
+
version: "11.46.0",
|
|
3155
3150
|
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.",
|
|
3156
3151
|
license: "MIT",
|
|
3157
3152
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6455,9 +6450,6 @@ function applyProfileChange(paths, name, change) {
|
|
|
6455
6450
|
if (change.launchExplain !== void 0) {
|
|
6456
6451
|
launchPatch.explain = change.launchExplain;
|
|
6457
6452
|
}
|
|
6458
|
-
if (change.launchRouteByName !== void 0) {
|
|
6459
|
-
launchPatch.routeByName = change.launchRouteByName;
|
|
6460
|
-
}
|
|
6461
6453
|
if (Object.keys(launchPatch).length > 0) {
|
|
6462
6454
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
6463
6455
|
touched = true;
|
|
@@ -8162,7 +8154,7 @@ function providerModelRows(provider, catalogue = []) {
|
|
|
8162
8154
|
const taken = new Set(named.map((row) => labelOf(row.model)));
|
|
8163
8155
|
return [...named, ...catalogueRows(provider, catalogue).filter((row) => !taken.has(labelOf(row.model)))];
|
|
8164
8156
|
}
|
|
8165
|
-
function routedModelRows(models, providers
|
|
8157
|
+
function routedModelRows(models, providers) {
|
|
8166
8158
|
const hidden = new Set(models.hide ?? []);
|
|
8167
8159
|
const shown = models.show === void 0 ? void 0 : new Set(models.show);
|
|
8168
8160
|
const visible = (model) => shown === void 0 ? !hidden.has(model) : shown.has(model);
|
|
@@ -8170,17 +8162,17 @@ function routedModelRows(models, providers, bare = true) {
|
|
|
8170
8162
|
const concreteByRef = new Map(concrete.map((row) => [row.model, row]));
|
|
8171
8163
|
const families = buildFamilies([...concrete.map((row) => row.model), ...accountRefsOf(models)], models);
|
|
8172
8164
|
const handlingOf = (refs) => refs.map((ref) => concreteByRef.get(ref)?.behavesAs).find((behavesAs) => behavesAs !== void 0) ?? TIER_BEHAVES_AS.sonnet;
|
|
8173
|
-
const virtual =
|
|
8165
|
+
const virtual = Object.entries(models.virtual ?? {}).flatMap(([name, definition]) => {
|
|
8174
8166
|
if (!visible(name)) {
|
|
8175
8167
|
return [];
|
|
8176
8168
|
}
|
|
8177
8169
|
const targets = expandFamilyMembers(safeExpand(name, models), families);
|
|
8178
8170
|
return [{ model: name, label: name, description: `Virtual (${definition.mode})`, behavesAs: handlingOf(targets) }];
|
|
8179
|
-
})
|
|
8180
|
-
const familyRows =
|
|
8171
|
+
});
|
|
8172
|
+
const familyRows = sharedFamilies(families).flatMap((family) => {
|
|
8181
8173
|
const member = `${FAMILY_PREFIX}${family.key}`;
|
|
8182
8174
|
return visible(member) ? [{ model: member, label: family.key, description: `Family (${familyMode(family.settings)}): ${family.refs.join(", ")}`, behavesAs: handlingOf(family.refs) }] : [];
|
|
8183
|
-
})
|
|
8175
|
+
});
|
|
8184
8176
|
return [...virtual, ...familyRows, ...concrete.filter((row) => visible(row.model))];
|
|
8185
8177
|
}
|
|
8186
8178
|
function safeExpand(name, models) {
|
|
@@ -8660,8 +8652,7 @@ var init_argv = __esm({
|
|
|
8660
8652
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
8661
8653
|
{ flag: "--wait", key: "wait" },
|
|
8662
8654
|
{ flag: "--pause", key: "pause" },
|
|
8663
|
-
{ flag: "--explain", key: "explain" }
|
|
8664
|
-
{ flag: "--route-by-name", key: "routeByName" }
|
|
8655
|
+
{ flag: "--explain", key: "explain" }
|
|
8665
8656
|
];
|
|
8666
8657
|
LAUNCHER_FLAG_NAMES = [
|
|
8667
8658
|
...VALUED_FLAGS,
|
|
@@ -8851,7 +8842,6 @@ function resolveLaunchFlags(params) {
|
|
|
8851
8842
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
8852
8843
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
8853
8844
|
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
8854
|
-
routeByName: params.flags?.routeByName ?? parseEnvBool("AGENT_SHIM_ROUTE_BY_NAME", params.env.AGENT_SHIM_ROUTE_BY_NAME) ?? params.cascade?.routeByName ?? false,
|
|
8855
8845
|
delayMs: resolveDelayMs(params)
|
|
8856
8846
|
};
|
|
8857
8847
|
}
|
|
@@ -8900,12 +8890,10 @@ function buildEnv(params) {
|
|
|
8900
8890
|
env[key] = value;
|
|
8901
8891
|
}
|
|
8902
8892
|
}
|
|
8903
|
-
|
|
8904
|
-
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
8908
|
-
}
|
|
8893
|
+
for (const tier of CLAUDE_TIERS) {
|
|
8894
|
+
const ref = params.tierModels?.[tier];
|
|
8895
|
+
if (ref !== void 0) {
|
|
8896
|
+
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
8909
8897
|
}
|
|
8910
8898
|
}
|
|
8911
8899
|
if (params.provider !== void 0) {
|
|
@@ -8928,7 +8916,6 @@ function buildEnv(params) {
|
|
|
8928
8916
|
{ name: SESSION_HEADER, value: params.sessionId },
|
|
8929
8917
|
{ name: AUTH_HEADER, value: params.frontdoor.sessionToken },
|
|
8930
8918
|
...params.provider === void 0 ? [] : [{ name: PROVIDER_HEADER, value: params.provider.name }],
|
|
8931
|
-
...params.routeByName ? [{ name: ROUTE_BY_NAME_HEADER, value: "1" }] : [],
|
|
8932
8919
|
...params.headroom === void 0 ? [] : [
|
|
8933
8920
|
{ name: HEADROOM_FLAG_HEADER, value: "1" },
|
|
8934
8921
|
{ name: PROJECT_ID_HEADER, value: params.headroom.projectId }
|
|
@@ -9707,7 +9694,6 @@ function decideLaunch(params, readOnly) {
|
|
|
9707
9694
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
9708
9695
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
9709
9696
|
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
9710
|
-
...parsedArgv.routeByName === void 0 ? {} : { routeByName: parsedArgv.routeByName },
|
|
9711
9697
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
9712
9698
|
}
|
|
9713
9699
|
});
|
|
@@ -9717,7 +9703,6 @@ function decideLaunch(params, readOnly) {
|
|
|
9717
9703
|
notes.push(`${loginlessProvider.identity} has no stored login, so Remote Control is off; provider ${loginlessProvider.provider} runs without it`);
|
|
9718
9704
|
}
|
|
9719
9705
|
const flags = loginlessProvider === void 0 ? requestedFlags : { ...requestedFlags, remoteControl: false };
|
|
9720
|
-
const routesByName = flags.routeByName || selectedProvider !== void 0 && isRouterProvider(selectedProvider.definition);
|
|
9721
9706
|
const globalModels = loadConfigFile(paths.globalConfigFile, GlobalConfigSchema, params.fs.readConfigFile)?.config.models;
|
|
9722
9707
|
const models = launchCascade !== void 0 && params.farm !== void 0 ? cascadeModels : globalModels;
|
|
9723
9708
|
const listedProviders = listProviderNames(fs13.readdir, paths.providersDir).flatMap((name) => {
|
|
@@ -9728,7 +9713,7 @@ function decideLaunch(params, readOnly) {
|
|
|
9728
9713
|
return [];
|
|
9729
9714
|
}
|
|
9730
9715
|
});
|
|
9731
|
-
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders
|
|
9716
|
+
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders), selectedProvider !== void 0);
|
|
9732
9717
|
const callerSettings = hasSettingsArgument(parsedArgv.rest);
|
|
9733
9718
|
if (pickerSettings !== void 0 && callerSettings) {
|
|
9734
9719
|
notes.push("--settings was passed, so /model keeps Claude Code's own model names");
|
|
@@ -9832,8 +9817,8 @@ function prepareLaunch(params) {
|
|
|
9832
9817
|
if (decided.pinnedVersion !== void 0) {
|
|
9833
9818
|
rows.push(pinnedVersionRow(decided.pinnedVersion.version, decided.pinnedVersion.source));
|
|
9834
9819
|
}
|
|
9835
|
-
const
|
|
9836
|
-
if (
|
|
9820
|
+
const namesResolved = decided.models !== void 0;
|
|
9821
|
+
if (namesResolved) {
|
|
9837
9822
|
const check = resolveRoutedProviderCredentials({ paths, port: params.fs, env, ...params.credentials === void 0 ? {} : { credentials: params.credentials }, models: decided.models, targets: () => targetRefs(paths) });
|
|
9838
9823
|
if (!check.ok) {
|
|
9839
9824
|
log.error(check.message);
|
|
@@ -9874,7 +9859,6 @@ function prepareLaunch(params) {
|
|
|
9874
9859
|
...headroom === void 0 ? {} : { headroom },
|
|
9875
9860
|
sessionId,
|
|
9876
9861
|
remoteControl: resolvedFlags.remoteControl,
|
|
9877
|
-
routeByName: routesByName,
|
|
9878
9862
|
...decided.models?.tiers === void 0 ? {} : { tierModels: decided.models.tiers }
|
|
9879
9863
|
});
|
|
9880
9864
|
const releases = [...headroom === void 0 || headroomPort === void 0 ? [] : [headroomPort.release], ...frontDoorRelease === void 0 ? [] : [frontDoorRelease]];
|
|
@@ -9902,8 +9886,7 @@ function resolveLaunch(params) {
|
|
|
9902
9886
|
...frontDoor ? { frontdoor: { port: 0, connectPort: 0, trustBundlePath: "", sessionToken: "" } } : {},
|
|
9903
9887
|
...decided.flags.headroom ? { headroom: { socketPath: "", projectId: "" } } : {},
|
|
9904
9888
|
sessionId: "",
|
|
9905
|
-
remoteControl: decided.flags.remoteControl
|
|
9906
|
-
routeByName: decided.flags.routeByName
|
|
9889
|
+
remoteControl: decided.flags.remoteControl
|
|
9907
9890
|
});
|
|
9908
9891
|
const credentialNames = decided.identityCredentialBlock === void 0 ? [] : Object.keys(credentialVariables(decided.identityCredentialBlock.target ?? "bearer", ""));
|
|
9909
9892
|
const environment = [.../* @__PURE__ */ new Set([...Object.keys(built).filter((name) => built[name] !== env[name]), ...credentialNames])].sort();
|
|
@@ -9915,7 +9898,7 @@ function resolveLaunch(params) {
|
|
|
9915
9898
|
bin: decided.bin,
|
|
9916
9899
|
args: decided.args,
|
|
9917
9900
|
...credential === void 0 ? {} : { credential },
|
|
9918
|
-
routing: { frontDoor, headroom: decided.flags.headroom
|
|
9901
|
+
routing: { frontDoor, headroom: decided.flags.headroom },
|
|
9919
9902
|
environment
|
|
9920
9903
|
};
|
|
9921
9904
|
}
|
|
@@ -16966,8 +16949,7 @@ var ConfigProfileSetInputSchema = import_zod26.z.strictObject({
|
|
|
16966
16949
|
claudeVersion: import_zod26.z.union([import_zod26.z.string().min(1), import_zod26.z.literal(false)]).optional(),
|
|
16967
16950
|
delay: import_zod26.z.union([import_zod26.z.string().regex(DURATION_RE), import_zod26.z.literal(false)]).optional(),
|
|
16968
16951
|
pause: import_zod26.z.boolean().optional(),
|
|
16969
|
-
explain: import_zod26.z.boolean().optional()
|
|
16970
|
-
routeByName: import_zod26.z.boolean().optional()
|
|
16952
|
+
explain: import_zod26.z.boolean().optional()
|
|
16971
16953
|
}).optional()
|
|
16972
16954
|
});
|
|
16973
16955
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -17179,8 +17161,7 @@ function createConfigApiRouter(deps) {
|
|
|
17179
17161
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
17180
17162
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
17181
17163
|
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
17182
|
-
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
17183
|
-
...launch?.routeByName === void 0 ? {} : { launchRouteByName: launch.routeByName }
|
|
17164
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
17184
17165
|
});
|
|
17185
17166
|
return { action: "updated", kind: "profile", name: input.name, value: profileValue(input.name, paths) };
|
|
17186
17167
|
})
|
|
@@ -17491,7 +17472,6 @@ var LaunchFlagsSchema = import_zod28.z.strictObject({
|
|
|
17491
17472
|
trackUsage: import_zod28.z.boolean(),
|
|
17492
17473
|
pause: import_zod28.z.boolean(),
|
|
17493
17474
|
explain: import_zod28.z.boolean(),
|
|
17494
|
-
routeByName: import_zod28.z.boolean(),
|
|
17495
17475
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
17496
17476
|
delayMs: import_zod28.z.number()
|
|
17497
17477
|
});
|
|
@@ -17505,7 +17485,7 @@ var LaunchResolveOutputSchema = import_zod28.z.strictObject({
|
|
|
17505
17485
|
args: import_zod28.z.readonly(import_zod28.z.array(import_zod28.z.string())),
|
|
17506
17486
|
/** The credential the launch would authenticate with, by target and source kinds. Absent when none applies. */
|
|
17507
17487
|
credential: import_zod28.z.strictObject({ subject: import_zod28.z.enum(["provider", "identity"]), name: import_zod28.z.string(), summary: CredentialSummarySchema }).optional(),
|
|
17508
|
-
routing: import_zod28.z.strictObject({ frontDoor: import_zod28.z.boolean(), headroom: import_zod28.z.boolean()
|
|
17488
|
+
routing: import_zod28.z.strictObject({ frontDoor: import_zod28.z.boolean(), headroom: import_zod28.z.boolean() }),
|
|
17509
17489
|
/** The names of the environment variables the launch would set or unset, sorted. Values are not reported. */
|
|
17510
17490
|
environment: import_zod28.z.readonly(import_zod28.z.array(import_zod28.z.string())),
|
|
17511
17491
|
warnings: import_zod28.z.readonly(import_zod28.z.array(import_zod28.z.string()))
|
package/dist/index.mjs
CHANGED
|
@@ -272,7 +272,6 @@ var init_schema = __esm({
|
|
|
272
272
|
/** 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. */
|
|
273
273
|
pause: z.boolean().optional(),
|
|
274
274
|
/** Whether a provider session routes provider-qualified model names (`z/glm-5.3`, `auto`) through the `models` block to the provider that serves them, instead of sending every request to the launch provider. */
|
|
275
|
-
routeByName: z.boolean().optional(),
|
|
276
275
|
/** 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. */
|
|
277
276
|
explain: z.boolean().optional()
|
|
278
277
|
});
|
|
@@ -1451,9 +1450,6 @@ function flattenLayers(layers, options) {
|
|
|
1451
1450
|
if (layer.launch.explain !== void 0) {
|
|
1452
1451
|
launch.explain = layer.launch.explain;
|
|
1453
1452
|
}
|
|
1454
|
-
if (layer.launch.routeByName !== void 0) {
|
|
1455
|
-
launch.routeByName = layer.launch.routeByName;
|
|
1456
|
-
}
|
|
1457
1453
|
}
|
|
1458
1454
|
if (layer.models !== void 0) {
|
|
1459
1455
|
models = mergeModels(models, layer.models);
|
|
@@ -2906,7 +2902,7 @@ var init_capability = __esm({
|
|
|
2906
2902
|
});
|
|
2907
2903
|
|
|
2908
2904
|
// src/frontdoor/route.ts
|
|
2909
|
-
var IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER,
|
|
2905
|
+
var IDENTITY_HEADER, SESSION_HEADER, PROVIDER_HEADER, HEADROOM_FLAG_HEADER, PROJECT_ID_HEADER, AUTH_HEADER;
|
|
2910
2906
|
var init_route = __esm({
|
|
2911
2907
|
"src/frontdoor/route.ts"() {
|
|
2912
2908
|
"use strict";
|
|
@@ -2914,7 +2910,6 @@ var init_route = __esm({
|
|
|
2914
2910
|
SESSION_HEADER = "x-agent-shim-session";
|
|
2915
2911
|
PROVIDER_HEADER = "x-agent-shim-provider";
|
|
2916
2912
|
HEADROOM_FLAG_HEADER = "x-agent-shim-headroom";
|
|
2917
|
-
ROUTE_BY_NAME_HEADER = "x-agent-shim-route-by-name";
|
|
2918
2913
|
PROJECT_ID_HEADER = "x-headroom-project-id";
|
|
2919
2914
|
AUTH_HEADER = "x-agent-shim-auth";
|
|
2920
2915
|
}
|
|
@@ -3054,7 +3049,7 @@ var init_state = __esm({
|
|
|
3054
3049
|
"src/frontdoor/state.ts"() {
|
|
3055
3050
|
"use strict";
|
|
3056
3051
|
init_schema();
|
|
3057
|
-
FRONT_DOOR_PROTOCOL =
|
|
3052
|
+
FRONT_DOOR_PROTOCOL = 5;
|
|
3058
3053
|
FrontDoorSessionSchema = z3.strictObject({ pid: z3.number().int().positive(), startedAt: z3.number(), token: z3.string().min(1), supervisorPid: z3.number().int().positive().optional(), sessionId: z3.string().min(1).optional(), models: ModelsConfigSchema.optional() });
|
|
3059
3054
|
FrontDoorStateSchema = z3.strictObject({
|
|
3060
3055
|
/**
|
|
@@ -3127,7 +3122,7 @@ var init_package = __esm({
|
|
|
3127
3122
|
"package.json"() {
|
|
3128
3123
|
package_default = {
|
|
3129
3124
|
name: "claude-use",
|
|
3130
|
-
version: "11.
|
|
3125
|
+
version: "11.46.0",
|
|
3131
3126
|
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.",
|
|
3132
3127
|
license: "MIT",
|
|
3133
3128
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -6431,9 +6426,6 @@ function applyProfileChange(paths, name, change) {
|
|
|
6431
6426
|
if (change.launchExplain !== void 0) {
|
|
6432
6427
|
launchPatch.explain = change.launchExplain;
|
|
6433
6428
|
}
|
|
6434
|
-
if (change.launchRouteByName !== void 0) {
|
|
6435
|
-
launchPatch.routeByName = change.launchRouteByName;
|
|
6436
|
-
}
|
|
6437
6429
|
if (Object.keys(launchPatch).length > 0) {
|
|
6438
6430
|
setProfileLaunchFlags(paths, name, launchPatch);
|
|
6439
6431
|
touched = true;
|
|
@@ -8135,7 +8127,7 @@ function providerModelRows(provider, catalogue = []) {
|
|
|
8135
8127
|
const taken = new Set(named.map((row) => labelOf(row.model)));
|
|
8136
8128
|
return [...named, ...catalogueRows(provider, catalogue).filter((row) => !taken.has(labelOf(row.model)))];
|
|
8137
8129
|
}
|
|
8138
|
-
function routedModelRows(models, providers
|
|
8130
|
+
function routedModelRows(models, providers) {
|
|
8139
8131
|
const hidden = new Set(models.hide ?? []);
|
|
8140
8132
|
const shown = models.show === void 0 ? void 0 : new Set(models.show);
|
|
8141
8133
|
const visible = (model) => shown === void 0 ? !hidden.has(model) : shown.has(model);
|
|
@@ -8143,17 +8135,17 @@ function routedModelRows(models, providers, bare = true) {
|
|
|
8143
8135
|
const concreteByRef = new Map(concrete.map((row) => [row.model, row]));
|
|
8144
8136
|
const families = buildFamilies([...concrete.map((row) => row.model), ...accountRefsOf(models)], models);
|
|
8145
8137
|
const handlingOf = (refs) => refs.map((ref) => concreteByRef.get(ref)?.behavesAs).find((behavesAs) => behavesAs !== void 0) ?? TIER_BEHAVES_AS.sonnet;
|
|
8146
|
-
const virtual =
|
|
8138
|
+
const virtual = Object.entries(models.virtual ?? {}).flatMap(([name, definition]) => {
|
|
8147
8139
|
if (!visible(name)) {
|
|
8148
8140
|
return [];
|
|
8149
8141
|
}
|
|
8150
8142
|
const targets = expandFamilyMembers(safeExpand(name, models), families);
|
|
8151
8143
|
return [{ model: name, label: name, description: `Virtual (${definition.mode})`, behavesAs: handlingOf(targets) }];
|
|
8152
|
-
})
|
|
8153
|
-
const familyRows =
|
|
8144
|
+
});
|
|
8145
|
+
const familyRows = sharedFamilies(families).flatMap((family) => {
|
|
8154
8146
|
const member = `${FAMILY_PREFIX}${family.key}`;
|
|
8155
8147
|
return visible(member) ? [{ model: member, label: family.key, description: `Family (${familyMode(family.settings)}): ${family.refs.join(", ")}`, behavesAs: handlingOf(family.refs) }] : [];
|
|
8156
|
-
})
|
|
8148
|
+
});
|
|
8157
8149
|
return [...virtual, ...familyRows, ...concrete.filter((row) => visible(row.model))];
|
|
8158
8150
|
}
|
|
8159
8151
|
function safeExpand(name, models) {
|
|
@@ -8633,8 +8625,7 @@ var init_argv = __esm({
|
|
|
8633
8625
|
{ flag: "--remote-control", key: "remoteControl" },
|
|
8634
8626
|
{ flag: "--wait", key: "wait" },
|
|
8635
8627
|
{ flag: "--pause", key: "pause" },
|
|
8636
|
-
{ flag: "--explain", key: "explain" }
|
|
8637
|
-
{ flag: "--route-by-name", key: "routeByName" }
|
|
8628
|
+
{ flag: "--explain", key: "explain" }
|
|
8638
8629
|
];
|
|
8639
8630
|
LAUNCHER_FLAG_NAMES = [
|
|
8640
8631
|
...VALUED_FLAGS,
|
|
@@ -8825,7 +8816,6 @@ function resolveLaunchFlags(params) {
|
|
|
8825
8816
|
trackUsage: params.flags?.trackUsage ?? parseEnvBool("AGENT_SHIM_TRACK_USAGE", params.env.AGENT_SHIM_TRACK_USAGE) ?? params.cascade?.trackUsage ?? true,
|
|
8826
8817
|
pause: params.flags?.pause ?? parseEnvBool("AGENT_SHIM_PAUSE", params.env.AGENT_SHIM_PAUSE) ?? params.cascade?.pause ?? false,
|
|
8827
8818
|
explain: params.flags?.explain ?? parseEnvBool("AGENT_SHIM_EXPLAIN", params.env.AGENT_SHIM_EXPLAIN) ?? params.cascade?.explain ?? false,
|
|
8828
|
-
routeByName: params.flags?.routeByName ?? parseEnvBool("AGENT_SHIM_ROUTE_BY_NAME", params.env.AGENT_SHIM_ROUTE_BY_NAME) ?? params.cascade?.routeByName ?? false,
|
|
8829
8819
|
delayMs: resolveDelayMs(params)
|
|
8830
8820
|
};
|
|
8831
8821
|
}
|
|
@@ -8874,12 +8864,10 @@ function buildEnv(params) {
|
|
|
8874
8864
|
env[key] = value;
|
|
8875
8865
|
}
|
|
8876
8866
|
}
|
|
8877
|
-
|
|
8878
|
-
|
|
8879
|
-
|
|
8880
|
-
|
|
8881
|
-
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
8882
|
-
}
|
|
8867
|
+
for (const tier of CLAUDE_TIERS) {
|
|
8868
|
+
const ref = params.tierModels?.[tier];
|
|
8869
|
+
if (ref !== void 0) {
|
|
8870
|
+
env[`ANTHROPIC_DEFAULT_${tier.toUpperCase()}_MODEL`] = ref;
|
|
8883
8871
|
}
|
|
8884
8872
|
}
|
|
8885
8873
|
if (params.provider !== void 0) {
|
|
@@ -8902,7 +8890,6 @@ function buildEnv(params) {
|
|
|
8902
8890
|
{ name: SESSION_HEADER, value: params.sessionId },
|
|
8903
8891
|
{ name: AUTH_HEADER, value: params.frontdoor.sessionToken },
|
|
8904
8892
|
...params.provider === void 0 ? [] : [{ name: PROVIDER_HEADER, value: params.provider.name }],
|
|
8905
|
-
...params.routeByName ? [{ name: ROUTE_BY_NAME_HEADER, value: "1" }] : [],
|
|
8906
8893
|
...params.headroom === void 0 ? [] : [
|
|
8907
8894
|
{ name: HEADROOM_FLAG_HEADER, value: "1" },
|
|
8908
8895
|
{ name: PROJECT_ID_HEADER, value: params.headroom.projectId }
|
|
@@ -9682,7 +9669,6 @@ function decideLaunch(params, readOnly) {
|
|
|
9682
9669
|
...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage },
|
|
9683
9670
|
...parsedArgv.pause === void 0 ? {} : { pause: parsedArgv.pause },
|
|
9684
9671
|
...parsedArgv.explain === void 0 ? {} : { explain: parsedArgv.explain },
|
|
9685
|
-
...parsedArgv.routeByName === void 0 ? {} : { routeByName: parsedArgv.routeByName },
|
|
9686
9672
|
...parsedArgv.delay === void 0 ? {} : { delay: parsedArgv.delay }
|
|
9687
9673
|
}
|
|
9688
9674
|
});
|
|
@@ -9692,7 +9678,6 @@ function decideLaunch(params, readOnly) {
|
|
|
9692
9678
|
notes.push(`${loginlessProvider.identity} has no stored login, so Remote Control is off; provider ${loginlessProvider.provider} runs without it`);
|
|
9693
9679
|
}
|
|
9694
9680
|
const flags = loginlessProvider === void 0 ? requestedFlags : { ...requestedFlags, remoteControl: false };
|
|
9695
|
-
const routesByName = flags.routeByName || selectedProvider !== void 0 && isRouterProvider(selectedProvider.definition);
|
|
9696
9681
|
const globalModels = loadConfigFile(paths.globalConfigFile, GlobalConfigSchema, params.fs.readConfigFile)?.config.models;
|
|
9697
9682
|
const models = launchCascade !== void 0 && params.farm !== void 0 ? cascadeModels : globalModels;
|
|
9698
9683
|
const listedProviders = listProviderNames(fs13.readdir, paths.providersDir).flatMap((name) => {
|
|
@@ -9703,7 +9688,7 @@ function decideLaunch(params, readOnly) {
|
|
|
9703
9688
|
return [];
|
|
9704
9689
|
}
|
|
9705
9690
|
});
|
|
9706
|
-
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders
|
|
9691
|
+
const pickerSettings = modelPickerSettingsFromRows(routedModelRows(models ?? {}, listedProviders), selectedProvider !== void 0);
|
|
9707
9692
|
const callerSettings = hasSettingsArgument(parsedArgv.rest);
|
|
9708
9693
|
if (pickerSettings !== void 0 && callerSettings) {
|
|
9709
9694
|
notes.push("--settings was passed, so /model keeps Claude Code's own model names");
|
|
@@ -9807,8 +9792,8 @@ function prepareLaunch(params) {
|
|
|
9807
9792
|
if (decided.pinnedVersion !== void 0) {
|
|
9808
9793
|
rows.push(pinnedVersionRow(decided.pinnedVersion.version, decided.pinnedVersion.source));
|
|
9809
9794
|
}
|
|
9810
|
-
const
|
|
9811
|
-
if (
|
|
9795
|
+
const namesResolved = decided.models !== void 0;
|
|
9796
|
+
if (namesResolved) {
|
|
9812
9797
|
const check = resolveRoutedProviderCredentials({ paths, port: params.fs, env, ...params.credentials === void 0 ? {} : { credentials: params.credentials }, models: decided.models, targets: () => targetRefs(paths) });
|
|
9813
9798
|
if (!check.ok) {
|
|
9814
9799
|
log.error(check.message);
|
|
@@ -9849,7 +9834,6 @@ function prepareLaunch(params) {
|
|
|
9849
9834
|
...headroom === void 0 ? {} : { headroom },
|
|
9850
9835
|
sessionId,
|
|
9851
9836
|
remoteControl: resolvedFlags.remoteControl,
|
|
9852
|
-
routeByName: routesByName,
|
|
9853
9837
|
...decided.models?.tiers === void 0 ? {} : { tierModels: decided.models.tiers }
|
|
9854
9838
|
});
|
|
9855
9839
|
const releases = [...headroom === void 0 || headroomPort === void 0 ? [] : [headroomPort.release], ...frontDoorRelease === void 0 ? [] : [frontDoorRelease]];
|
|
@@ -9877,8 +9861,7 @@ function resolveLaunch(params) {
|
|
|
9877
9861
|
...frontDoor ? { frontdoor: { port: 0, connectPort: 0, trustBundlePath: "", sessionToken: "" } } : {},
|
|
9878
9862
|
...decided.flags.headroom ? { headroom: { socketPath: "", projectId: "" } } : {},
|
|
9879
9863
|
sessionId: "",
|
|
9880
|
-
remoteControl: decided.flags.remoteControl
|
|
9881
|
-
routeByName: decided.flags.routeByName
|
|
9864
|
+
remoteControl: decided.flags.remoteControl
|
|
9882
9865
|
});
|
|
9883
9866
|
const credentialNames = decided.identityCredentialBlock === void 0 ? [] : Object.keys(credentialVariables(decided.identityCredentialBlock.target ?? "bearer", ""));
|
|
9884
9867
|
const environment = [.../* @__PURE__ */ new Set([...Object.keys(built).filter((name) => built[name] !== env[name]), ...credentialNames])].sort();
|
|
@@ -9890,7 +9873,7 @@ function resolveLaunch(params) {
|
|
|
9890
9873
|
bin: decided.bin,
|
|
9891
9874
|
args: decided.args,
|
|
9892
9875
|
...credential === void 0 ? {} : { credential },
|
|
9893
|
-
routing: { frontDoor, headroom: decided.flags.headroom
|
|
9876
|
+
routing: { frontDoor, headroom: decided.flags.headroom },
|
|
9894
9877
|
environment
|
|
9895
9878
|
};
|
|
9896
9879
|
}
|
|
@@ -16553,8 +16536,7 @@ var ConfigProfileSetInputSchema = z26.strictObject({
|
|
|
16553
16536
|
claudeVersion: z26.union([z26.string().min(1), z26.literal(false)]).optional(),
|
|
16554
16537
|
delay: z26.union([z26.string().regex(DURATION_RE), z26.literal(false)]).optional(),
|
|
16555
16538
|
pause: z26.boolean().optional(),
|
|
16556
|
-
explain: z26.boolean().optional()
|
|
16557
|
-
routeByName: z26.boolean().optional()
|
|
16539
|
+
explain: z26.boolean().optional()
|
|
16558
16540
|
}).optional()
|
|
16559
16541
|
});
|
|
16560
16542
|
var ConfigProfileSetOutputSchema = storedMutationOutput("profile", "updated", ProfileValueSchema);
|
|
@@ -16766,8 +16748,7 @@ function createConfigApiRouter(deps) {
|
|
|
16766
16748
|
...launch?.claudeVersion === void 0 ? {} : { launchClaudeVersion: launch.claudeVersion },
|
|
16767
16749
|
...launch?.delay === void 0 ? {} : { launchDelay: launch.delay },
|
|
16768
16750
|
...launch?.pause === void 0 ? {} : { launchPause: launch.pause },
|
|
16769
|
-
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
16770
|
-
...launch?.routeByName === void 0 ? {} : { launchRouteByName: launch.routeByName }
|
|
16751
|
+
...launch?.explain === void 0 ? {} : { launchExplain: launch.explain }
|
|
16771
16752
|
});
|
|
16772
16753
|
return { action: "updated", kind: "profile", name: input.name, value: profileValue(input.name, paths) };
|
|
16773
16754
|
})
|
|
@@ -17078,7 +17059,6 @@ var LaunchFlagsSchema = z28.strictObject({
|
|
|
17078
17059
|
trackUsage: z28.boolean(),
|
|
17079
17060
|
pause: z28.boolean(),
|
|
17080
17061
|
explain: z28.boolean(),
|
|
17081
|
-
routeByName: z28.boolean(),
|
|
17082
17062
|
/** How long the launch waits after its own output before it starts claude, in milliseconds. */
|
|
17083
17063
|
delayMs: z28.number()
|
|
17084
17064
|
});
|
|
@@ -17092,7 +17072,7 @@ var LaunchResolveOutputSchema = z28.strictObject({
|
|
|
17092
17072
|
args: z28.readonly(z28.array(z28.string())),
|
|
17093
17073
|
/** The credential the launch would authenticate with, by target and source kinds. Absent when none applies. */
|
|
17094
17074
|
credential: z28.strictObject({ subject: z28.enum(["provider", "identity"]), name: z28.string(), summary: CredentialSummarySchema }).optional(),
|
|
17095
|
-
routing: z28.strictObject({ frontDoor: z28.boolean(), headroom: z28.boolean()
|
|
17075
|
+
routing: z28.strictObject({ frontDoor: z28.boolean(), headroom: z28.boolean() }),
|
|
17096
17076
|
/** The names of the environment variables the launch would set or unset, sorted. Values are not reported. */
|
|
17097
17077
|
environment: z28.readonly(z28.array(z28.string())),
|
|
17098
17078
|
warnings: z28.readonly(z28.array(z28.string()))
|
package/dist/types/index.d.ts
CHANGED
|
@@ -278,7 +278,6 @@ 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
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
282
281
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
283
282
|
}, z.core.$strict>;
|
|
284
283
|
type LaunchFlags = z.infer<typeof LaunchSchema>;
|
|
@@ -960,7 +959,6 @@ declare const ConfigProfileSchema: z.ZodObject<{
|
|
|
960
959
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
961
960
|
delay: z.ZodOptional<z.ZodString>;
|
|
962
961
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
963
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
964
962
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
965
963
|
}, z.core.$strict>>;
|
|
966
964
|
models: z.ZodOptional<z.ZodObject<{
|
|
@@ -1262,7 +1260,6 @@ declare const DirectoryRuleSchema: z.ZodObject<{
|
|
|
1262
1260
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1263
1261
|
delay: z.ZodOptional<z.ZodString>;
|
|
1264
1262
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1265
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
1266
1263
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1267
1264
|
}, z.core.$strict>>;
|
|
1268
1265
|
path: z.ZodString;
|
|
@@ -1491,7 +1488,6 @@ declare const DirectoryRulesSchema: z.ZodObject<{
|
|
|
1491
1488
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1492
1489
|
delay: z.ZodOptional<z.ZodString>;
|
|
1493
1490
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1494
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
1495
1491
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1496
1492
|
}, z.core.$strict>>;
|
|
1497
1493
|
path: z.ZodString;
|
|
@@ -1721,7 +1717,6 @@ declare const PortableConfigSchema: z.ZodObject<{
|
|
|
1721
1717
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1722
1718
|
delay: z.ZodOptional<z.ZodString>;
|
|
1723
1719
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1724
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
1725
1720
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1726
1721
|
}, z.core.$strict>>;
|
|
1727
1722
|
configProfile: z.ZodOptional<z.ZodString>;
|
|
@@ -1930,7 +1925,6 @@ declare const GlobalConfigSchema: z.ZodObject<{
|
|
|
1930
1925
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
1931
1926
|
delay: z.ZodOptional<z.ZodString>;
|
|
1932
1927
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
1933
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
1934
1928
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
1935
1929
|
}, z.core.$strict>>;
|
|
1936
1930
|
headroom: z.ZodOptional<z.ZodObject<{
|
|
@@ -3677,7 +3671,6 @@ interface SessionIdentity {
|
|
|
3677
3671
|
/** Whether this launch resolved headroom on, so its requests must pass through the headroom hop before their route. */
|
|
3678
3672
|
readonly headroom: boolean;
|
|
3679
3673
|
/** Whether this launch routes provider-qualified model names through the models block, whatever provider it selected. */
|
|
3680
|
-
readonly routeByName: boolean;
|
|
3681
3674
|
/** The project identity headroom scopes memory to, re-set on the headroom hop and sent nowhere else. */
|
|
3682
3675
|
readonly projectId: string | undefined;
|
|
3683
3676
|
}
|
|
@@ -6445,7 +6438,6 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6445
6438
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
6446
6439
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
6447
6440
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6448
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
6449
6441
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6450
6442
|
}, zod_v4_core.$strict>>;
|
|
6451
6443
|
}, zod_v4_core.$strict>;
|
|
@@ -6466,7 +6458,6 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6466
6458
|
delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
6467
6459
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6468
6460
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6469
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
6470
6461
|
}, zod_v4_core.$strict>>;
|
|
6471
6462
|
}, zod_v4_core.$strict>, zod.ZodObject<{
|
|
6472
6463
|
action: zod.ZodLiteral<"updated">;
|
|
@@ -6618,7 +6609,6 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
6618
6609
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
6619
6610
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
6620
6611
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
6621
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
6622
6612
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
6623
6613
|
}, zod_v4_core.$strict>>;
|
|
6624
6614
|
}, zod_v4_core.$strict>;
|
|
@@ -7271,7 +7261,6 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
7271
7261
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
7272
7262
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
7273
7263
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
7274
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
7275
7264
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
7276
7265
|
}, zod_v4_core.$strict>>;
|
|
7277
7266
|
path: zod.ZodString;
|
|
@@ -7505,7 +7494,6 @@ declare function createConfigApiRouter(deps: ConfigApiDeps): {
|
|
|
7505
7494
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
7506
7495
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
7507
7496
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
7508
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
7509
7497
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
7510
7498
|
}, zod_v4_core.$strict>>;
|
|
7511
7499
|
path: zod.ZodString;
|
|
@@ -7841,7 +7829,6 @@ interface ResolvedLaunchFlags {
|
|
|
7841
7829
|
/** Whether the launch's report lists every pool member the pick ranked and why, and not only the one picked. */
|
|
7842
7830
|
readonly explain: boolean;
|
|
7843
7831
|
/** Whether a provider session routes provider-qualified model names through the models block to the provider that serves them. */
|
|
7844
|
-
readonly routeByName: boolean;
|
|
7845
7832
|
/** How long the launcher waits after its own output before it starts claude, in milliseconds; zero for no wait. */
|
|
7846
7833
|
readonly delayMs: number;
|
|
7847
7834
|
}
|
|
@@ -8051,7 +8038,6 @@ interface LaunchResolution {
|
|
|
8051
8038
|
readonly routing: {
|
|
8052
8039
|
readonly frontDoor: boolean;
|
|
8053
8040
|
readonly headroom: boolean;
|
|
8054
|
-
readonly routeByName: boolean;
|
|
8055
8041
|
};
|
|
8056
8042
|
/** The names of the environment variables the launch would set or unset, sorted. Values are never reported: the launcher's environment carries tokens and per-launch capabilities that mean nothing outside it. */
|
|
8057
8043
|
readonly environment: readonly string[];
|
|
@@ -8138,7 +8124,6 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
|
|
|
8138
8124
|
trackUsage: zod.ZodBoolean;
|
|
8139
8125
|
pause: zod.ZodBoolean;
|
|
8140
8126
|
explain: zod.ZodBoolean;
|
|
8141
|
-
routeByName: zod.ZodBoolean;
|
|
8142
8127
|
delayMs: zod.ZodNumber;
|
|
8143
8128
|
}, zod_v4_core.$strict>;
|
|
8144
8129
|
claudeVersion: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -8194,7 +8179,6 @@ declare function createLaunchApiRouter(deps: LaunchApiDeps): {
|
|
|
8194
8179
|
routing: zod.ZodObject<{
|
|
8195
8180
|
frontDoor: zod.ZodBoolean;
|
|
8196
8181
|
headroom: zod.ZodBoolean;
|
|
8197
|
-
routeByName: zod.ZodBoolean;
|
|
8198
8182
|
}, zod_v4_core.$strict>;
|
|
8199
8183
|
environment: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
|
|
8200
8184
|
warnings: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
|
|
@@ -9260,7 +9244,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9260
9244
|
trackUsage: zod.ZodBoolean;
|
|
9261
9245
|
pause: zod.ZodBoolean;
|
|
9262
9246
|
explain: zod.ZodBoolean;
|
|
9263
|
-
routeByName: zod.ZodBoolean;
|
|
9264
9247
|
delayMs: zod.ZodNumber;
|
|
9265
9248
|
}, zod_v4_core.$strict>;
|
|
9266
9249
|
claudeVersion: zod.ZodOptional<zod.ZodObject<{
|
|
@@ -9316,7 +9299,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9316
9299
|
routing: zod.ZodObject<{
|
|
9317
9300
|
frontDoor: zod.ZodBoolean;
|
|
9318
9301
|
headroom: zod.ZodBoolean;
|
|
9319
|
-
routeByName: zod.ZodBoolean;
|
|
9320
9302
|
}, zod_v4_core.$strict>;
|
|
9321
9303
|
environment: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
|
|
9322
9304
|
warnings: zod.ZodReadonly<zod.ZodArray<zod.ZodString>>;
|
|
@@ -9678,7 +9660,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9678
9660
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9679
9661
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9680
9662
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9681
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
9682
9663
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9683
9664
|
}, zod_v4_core.$strict>>;
|
|
9684
9665
|
}, zod_v4_core.$strict>;
|
|
@@ -9699,7 +9680,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9699
9680
|
delay: zod.ZodOptional<zod.ZodUnion<readonly [zod.ZodString, zod.ZodLiteral<false>]>>;
|
|
9700
9681
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9701
9682
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9702
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
9703
9683
|
}, zod_v4_core.$strict>>;
|
|
9704
9684
|
}, zod_v4_core.$strict>, zod.ZodObject<{
|
|
9705
9685
|
action: zod.ZodLiteral<"updated">;
|
|
@@ -9851,7 +9831,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
9851
9831
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
9852
9832
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
9853
9833
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
9854
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
9855
9834
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
9856
9835
|
}, zod_v4_core.$strict>>;
|
|
9857
9836
|
}, zod_v4_core.$strict>;
|
|
@@ -10504,7 +10483,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
10504
10483
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
10505
10484
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
10506
10485
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
10507
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
10508
10486
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
10509
10487
|
}, zod_v4_core.$strict>>;
|
|
10510
10488
|
path: zod.ZodString;
|
|
@@ -10738,7 +10716,6 @@ declare function createDoorApiRouter(deps: DoorApiDeps): {
|
|
|
10738
10716
|
claudeVersion: zod.ZodOptional<zod.ZodString>;
|
|
10739
10717
|
delay: zod.ZodOptional<zod.ZodString>;
|
|
10740
10718
|
pause: zod.ZodOptional<zod.ZodBoolean>;
|
|
10741
|
-
routeByName: zod.ZodOptional<zod.ZodBoolean>;
|
|
10742
10719
|
explain: zod.ZodOptional<zod.ZodBoolean>;
|
|
10743
10720
|
}, zod_v4_core.$strict>>;
|
|
10744
10721
|
path: zod.ZodString;
|
|
@@ -12013,7 +11990,6 @@ declare const ConfigProfileAddOutputSchema: z.ZodObject<{
|
|
|
12013
11990
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
12014
11991
|
delay: z.ZodOptional<z.ZodString>;
|
|
12015
11992
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
12016
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
12017
11993
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
12018
11994
|
}, z.core.$strict>>;
|
|
12019
11995
|
}, z.core.$strict>;
|
|
@@ -12035,7 +12011,6 @@ declare const ConfigProfileSetInputSchema: z.ZodObject<{
|
|
|
12035
12011
|
delay: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodLiteral<false>]>>;
|
|
12036
12012
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
12037
12013
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
12038
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
12039
12014
|
}, z.core.$strict>>;
|
|
12040
12015
|
}, z.core.$strict>;
|
|
12041
12016
|
declare const ConfigProfileSetOutputSchema: z.ZodObject<{
|
|
@@ -12188,7 +12163,6 @@ declare const ConfigProfileSetOutputSchema: z.ZodObject<{
|
|
|
12188
12163
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
12189
12164
|
delay: z.ZodOptional<z.ZodString>;
|
|
12190
12165
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
12191
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
12192
12166
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
12193
12167
|
}, z.core.$strict>>;
|
|
12194
12168
|
}, z.core.$strict>;
|
|
@@ -12843,7 +12817,6 @@ declare const ConfigRuleAddOutputSchema: z.ZodObject<{
|
|
|
12843
12817
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
12844
12818
|
delay: z.ZodOptional<z.ZodString>;
|
|
12845
12819
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
12846
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
12847
12820
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
12848
12821
|
}, z.core.$strict>>;
|
|
12849
12822
|
path: z.ZodString;
|
|
@@ -13079,7 +13052,6 @@ declare const ConfigRuleSetOutputSchema: z.ZodObject<{
|
|
|
13079
13052
|
claudeVersion: z.ZodOptional<z.ZodString>;
|
|
13080
13053
|
delay: z.ZodOptional<z.ZodString>;
|
|
13081
13054
|
pause: z.ZodOptional<z.ZodBoolean>;
|
|
13082
|
-
routeByName: z.ZodOptional<z.ZodBoolean>;
|
|
13083
13055
|
explain: z.ZodOptional<z.ZodBoolean>;
|
|
13084
13056
|
}, z.core.$strict>>;
|
|
13085
13057
|
path: z.ZodString;
|
|
@@ -13571,7 +13543,6 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
|
|
|
13571
13543
|
trackUsage: z.ZodBoolean;
|
|
13572
13544
|
pause: z.ZodBoolean;
|
|
13573
13545
|
explain: z.ZodBoolean;
|
|
13574
|
-
routeByName: z.ZodBoolean;
|
|
13575
13546
|
delayMs: z.ZodNumber;
|
|
13576
13547
|
}, z.core.$strict>;
|
|
13577
13548
|
claudeVersion: z.ZodOptional<z.ZodObject<{
|
|
@@ -13627,7 +13598,6 @@ declare const LaunchResolveOutputSchema: z.ZodObject<{
|
|
|
13627
13598
|
routing: z.ZodObject<{
|
|
13628
13599
|
frontDoor: z.ZodBoolean;
|
|
13629
13600
|
headroom: z.ZodBoolean;
|
|
13630
|
-
routeByName: z.ZodBoolean;
|
|
13631
13601
|
}, z.core.$strict>;
|
|
13632
13602
|
environment: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
|
13633
13603
|
warnings: z.ZodReadonly<z.ZodArray<z.ZodString>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-use",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.46.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>",
|