claude-use 11.52.1 → 11.54.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/dist/cli.cjs +1402 -653
- package/dist/index.cjs +87 -11
- package/dist/index.mjs +87 -11
- package/dist/types/index.d.ts +2910 -28
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -140,7 +140,7 @@ var init_proxyBypass = __esm({
|
|
|
140
140
|
|
|
141
141
|
// src/config/statusline.ts
|
|
142
142
|
function distinctList(member) {
|
|
143
|
-
return import_zod.z.array(member).refine((items) => new Set(items).size === items.length, "must not repeat
|
|
143
|
+
return import_zod.z.array(member).refine((items) => new Set(items).size === items.length, "must not repeat an entry");
|
|
144
144
|
}
|
|
145
145
|
function isSingleVisibleGrapheme(text) {
|
|
146
146
|
return [...GRAPHEMES.segment(text)].length === 1 && !/[\p{C}\p{Z}]/u.test(text);
|
|
@@ -165,13 +165,13 @@ function resolveStatusline(settings) {
|
|
|
165
165
|
}
|
|
166
166
|
return resolved;
|
|
167
167
|
}
|
|
168
|
-
var import_zod, STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_COLOUR_NAMES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_CHARS, MAX_BAR_CELLS, LABEL_RE2, colourValue, GRAPHEMES, barCharacter, labelText, wholePercent, SHAPES, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
|
|
168
|
+
var import_zod, STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PATH_LEVELS, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_CHARS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, LABEL_RE2, OPTIONAL_LABEL_RE, colourValue, GRAPHEMES, barCharacter, labelText, overrideText, wholePercent, SHAPES, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
|
|
169
169
|
var init_statusline = __esm({
|
|
170
170
|
"src/config/statusline.ts"() {
|
|
171
171
|
"use strict";
|
|
172
172
|
import_zod = require("zod");
|
|
173
|
-
STATUSLINE_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom"];
|
|
174
|
-
STATUSLINE_ROWS = ["context", "quota"];
|
|
173
|
+
STATUSLINE_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom", "project", "vcs", "effort", "advisor", "version", "outputStyle"];
|
|
174
|
+
STATUSLINE_ROWS = ["context", "quota", "addedDirs", "gitFiles"];
|
|
175
175
|
STATUSLINE_COLOUR_NAMES = [
|
|
176
176
|
"default",
|
|
177
177
|
"dim",
|
|
@@ -192,21 +192,46 @@ var init_statusline = __esm({
|
|
|
192
192
|
"brightCyan",
|
|
193
193
|
"brightWhite"
|
|
194
194
|
];
|
|
195
|
+
DEFAULT_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom"];
|
|
196
|
+
DEFAULT_ROWS = ["context", "quota"];
|
|
197
|
+
STATUSLINE_PATH_LEVELS = ["1", "2", "3", "full"];
|
|
195
198
|
MAX_PERCENT = 100;
|
|
196
199
|
MAX_STATUSLINE_PALETTE_INDEX = 255;
|
|
197
200
|
MAX_STATUSLINE_LABEL_CHARS = 12;
|
|
198
201
|
MAX_BAR_CELLS = 40;
|
|
202
|
+
MAX_ACCOUNT_USER_CHARS = 254;
|
|
203
|
+
MAX_DISPLAY_TEXT_CHARS = 80;
|
|
199
204
|
LABEL_RE2 = /^[^\p{C}\p{Z}]+(?: [^\p{C}\p{Z}]+)*$/u;
|
|
205
|
+
OPTIONAL_LABEL_RE = /^(?:[^\p{C}\p{Z}]+(?: [^\p{C}\p{Z}]+)*)?$/u;
|
|
200
206
|
colourValue = import_zod.z.union([import_zod.z.enum(STATUSLINE_COLOUR_NAMES), import_zod.z.number().int().min(0).max(MAX_STATUSLINE_PALETTE_INDEX), import_zod.z.string().regex(/^#[0-9a-fA-F]{6}$/, "must be a colour name, a palette index from 0 to 255 or #rrggbb")]);
|
|
201
207
|
GRAPHEMES = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
202
208
|
barCharacter = import_zod.z.string().refine(isSingleVisibleGrapheme, "must be a single visible character");
|
|
203
209
|
labelText = import_zod.z.string().max(MAX_STATUSLINE_LABEL_CHARS).regex(LABEL_RE2, "must be visible text without control characters");
|
|
210
|
+
overrideText = import_zod.z.string().max(MAX_DISPLAY_TEXT_CHARS).regex(OPTIONAL_LABEL_RE, "must be visible text without control characters");
|
|
204
211
|
wholePercent = import_zod.z.number().int().min(1).max(MAX_PERCENT);
|
|
205
212
|
SHAPES = {
|
|
206
213
|
layout: {
|
|
207
214
|
header: distinctList(import_zod.z.enum(STATUSLINE_HEADER_SEGMENTS)).describe("The header segments to draw, in drawing order; a segment left out is hidden, and an empty list hides the header."),
|
|
208
215
|
rows: distinctList(import_zod.z.enum(STATUSLINE_ROWS)).describe("The rows to draw below the header, in drawing order; a row left out is hidden, and an empty list hides every row.")
|
|
209
216
|
},
|
|
217
|
+
model: {
|
|
218
|
+
format: import_zod.z.enum(["full", "compact", "short"]).describe("How the model's name is written: full is the name as the client gives it, compact drops a context-window suffix such as (1M context), and short also drops a leading Claude."),
|
|
219
|
+
override: overrideText.describe("A name to show in place of the client's own model name, whatever model is running; empty shows the model's own name. A dynamic mode's served model still follows it."),
|
|
220
|
+
source: import_zod.z.enum(["client", "transcript", "auto"]).describe("Where the model's name comes from: client is the name the client reports, transcript is the model the session's last reply came from (what a proxy actually served), and auto uses the transcript's model only when it is not a Claude model, which is what a proxy redirect looks like.")
|
|
221
|
+
},
|
|
222
|
+
provider: {
|
|
223
|
+
name: overrideText.describe("A label to show in place of the launch's provider name, or on its own when the launch has no provider; empty shows the provider's own name.")
|
|
224
|
+
},
|
|
225
|
+
account: {
|
|
226
|
+
parts: distinctList(import_zod.z.enum(["user", "organisation", "plan"])).describe("What the account segment says about the login account, in drawing order: the account's email address, its organisation (shown for team and enterprise accounts) and its plan. A part left out is hidden, and an empty list hides the segment."),
|
|
227
|
+
userLength: import_zod.z.number().int().min(0).max(MAX_ACCOUNT_USER_CHARS).describe("The most characters of the account's email address to show, with an ellipsis after a cut one; 0 shows all of it.")
|
|
228
|
+
},
|
|
229
|
+
effort: {
|
|
230
|
+
format: import_zod.z.enum(["full", "symbol", "text"]).describe("How the reasoning effort is written: full is a symbol and the level (a filled circle that grows with the level, then the name), symbol is the symbol alone, and text is the level's name alone. A level with no symbol is always written as its name.")
|
|
231
|
+
},
|
|
232
|
+
advisor: {
|
|
233
|
+
override: overrideText.describe("A name to show for the advisor model in place of the one the session's transcript records; empty shows the transcript's, prettified.")
|
|
234
|
+
},
|
|
210
235
|
bands: {
|
|
211
236
|
warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow; it must be below criticalAt."),
|
|
212
237
|
criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red.")
|
|
@@ -228,25 +253,67 @@ var init_statusline = __esm({
|
|
|
228
253
|
critical: colourValue.describe("The colour of a bar at or above bands.criticalAt, and of a cache hit share that is nearly nothing."),
|
|
229
254
|
model: colourValue.describe("The colour of the model and provider segments."),
|
|
230
255
|
label: colourValue.describe("The colour of labels and secondary text: row labels, and the route, account, identity and headroom segments."),
|
|
231
|
-
empty: colourValue.describe("The colour of the unused part of a bar.")
|
|
256
|
+
empty: colourValue.describe("The colour of the unused part of a bar."),
|
|
257
|
+
project: colourValue.describe("The colour of the project path segment."),
|
|
258
|
+
git: colourValue.describe("The colour of the version control segment's wrapper text (`git:(` and `)`)."),
|
|
259
|
+
gitBranch: colourValue.describe("The colour of the branch or bookmark and its ahead, behind and dirty markers.")
|
|
260
|
+
},
|
|
261
|
+
project: {
|
|
262
|
+
pathLevels: import_zod.z.enum(STATUSLINE_PATH_LEVELS).describe("How many trailing directories of the working directory the project segment shows: 1, 2 or 3, or full for the whole absolute path."),
|
|
263
|
+
addedDirsLayout: import_zod.z.enum(["inline", "row"]).describe("Where the directories added to the session are drawn: inline, as +name after the project path in the project segment, or row, as an Added dirs line when layout.rows lists addedDirs.")
|
|
264
|
+
},
|
|
265
|
+
git: {
|
|
266
|
+
enabled: import_zod.z.boolean().describe("Whether the vcs segment and the gitFiles row read the working directory's git status."),
|
|
267
|
+
showDirty: import_zod.z.boolean().describe("Whether the branch is followed by * when the working tree has uncommitted changes."),
|
|
268
|
+
showAheadBehind: import_zod.z.boolean().describe("Whether the branch is followed by the commits ahead of (up-arrow) and behind (down-arrow) its upstream."),
|
|
269
|
+
showLineDiff: import_zod.z.boolean().describe("Whether the segment shows the total lines added and removed against HEAD, as [+a -d]."),
|
|
270
|
+
branchOverflow: import_zod.z.enum(["truncate", "wrap"]).describe("How the vcs segment sits beside the project segment when they are listed next to each other: truncate keeps them as one unit the client cuts off at the terminal's edge, and wrap lets the line break between them."),
|
|
271
|
+
pushWarnAt: import_zod.z.number().int().min(0).describe("The count of unpushed commits at which the ahead marker takes colours.warning; 0 turns it off."),
|
|
272
|
+
pushCriticalAt: import_zod.z.number().int().min(0).describe("The count of unpushed commits at which the ahead marker takes colours.critical; 0 turns it off.")
|
|
273
|
+
},
|
|
274
|
+
jj: {
|
|
275
|
+
enabled: import_zod.z.boolean().describe("Whether the vcs segment reads a Jujutsu repository's status, instead of git's, when the working directory is inside one."),
|
|
276
|
+
showDirty: import_zod.z.boolean().describe("Whether the bookmark or change id is followed by * when the working-copy commit differs from its parent."),
|
|
277
|
+
showConflicts: import_zod.z.boolean().describe("Whether the segment shows !conflict when the working-copy commit has an unresolved conflict.")
|
|
232
278
|
}
|
|
233
279
|
};
|
|
234
280
|
StatuslineSchema = import_zod.z.strictObject({
|
|
235
281
|
layout: import_zod.z.strictObject(SHAPES.layout).partial().optional(),
|
|
282
|
+
model: import_zod.z.strictObject(SHAPES.model).partial().optional(),
|
|
283
|
+
provider: import_zod.z.strictObject(SHAPES.provider).partial().optional(),
|
|
284
|
+
account: import_zod.z.strictObject(SHAPES.account).partial().optional(),
|
|
285
|
+
effort: import_zod.z.strictObject(SHAPES.effort).partial().optional(),
|
|
286
|
+
advisor: import_zod.z.strictObject(SHAPES.advisor).partial().optional(),
|
|
236
287
|
bands: import_zod.z.strictObject(SHAPES.bands).partial().optional(),
|
|
237
288
|
labels: import_zod.z.strictObject(SHAPES.labels).partial().optional(),
|
|
238
289
|
bar: import_zod.z.strictObject(SHAPES.bar).partial().optional(),
|
|
239
|
-
colours: import_zod.z.strictObject(SHAPES.colours).partial().optional()
|
|
290
|
+
colours: import_zod.z.strictObject(SHAPES.colours).partial().optional(),
|
|
291
|
+
project: import_zod.z.strictObject(SHAPES.project).partial().optional(),
|
|
292
|
+
git: import_zod.z.strictObject(SHAPES.git).partial().optional(),
|
|
293
|
+
jj: import_zod.z.strictObject(SHAPES.jj).partial().optional()
|
|
240
294
|
});
|
|
241
295
|
ResolvedStatuslineSchema = import_zod.z.strictObject({
|
|
242
296
|
layout: import_zod.z.strictObject(SHAPES.layout),
|
|
297
|
+
model: import_zod.z.strictObject(SHAPES.model),
|
|
298
|
+
provider: import_zod.z.strictObject(SHAPES.provider),
|
|
299
|
+
account: import_zod.z.strictObject(SHAPES.account),
|
|
300
|
+
effort: import_zod.z.strictObject(SHAPES.effort),
|
|
301
|
+
advisor: import_zod.z.strictObject(SHAPES.advisor),
|
|
243
302
|
bands: import_zod.z.strictObject(SHAPES.bands),
|
|
244
303
|
labels: import_zod.z.strictObject(SHAPES.labels),
|
|
245
304
|
bar: import_zod.z.strictObject(SHAPES.bar),
|
|
246
|
-
colours: import_zod.z.strictObject(SHAPES.colours)
|
|
305
|
+
colours: import_zod.z.strictObject(SHAPES.colours),
|
|
306
|
+
project: import_zod.z.strictObject(SHAPES.project),
|
|
307
|
+
git: import_zod.z.strictObject(SHAPES.git),
|
|
308
|
+
jj: import_zod.z.strictObject(SHAPES.jj)
|
|
247
309
|
});
|
|
248
310
|
STATUSLINE_DEFAULTS = {
|
|
249
|
-
layout: { header: [...
|
|
311
|
+
layout: { header: [...DEFAULT_HEADER_SEGMENTS], rows: [...DEFAULT_ROWS] },
|
|
312
|
+
model: { format: "full", override: "", source: "client" },
|
|
313
|
+
provider: { name: "" },
|
|
314
|
+
account: { parts: ["user", "organisation", "plan"], userLength: 0 },
|
|
315
|
+
effort: { format: "full" },
|
|
316
|
+
advisor: { override: "" },
|
|
250
317
|
bands: { warnAt: 70, criticalAt: 90 },
|
|
251
318
|
labels: { fiveHour: "5h", sevenDay: "Wk" },
|
|
252
319
|
bar: { width: 10, filled: "\u2588", empty: "\u2591" },
|
|
@@ -258,8 +325,14 @@ var init_statusline = __esm({
|
|
|
258
325
|
critical: "red",
|
|
259
326
|
model: "default",
|
|
260
327
|
label: "default",
|
|
261
|
-
empty: "brightBlack"
|
|
262
|
-
|
|
328
|
+
empty: "brightBlack",
|
|
329
|
+
project: "yellow",
|
|
330
|
+
git: "magenta",
|
|
331
|
+
gitBranch: "cyan"
|
|
332
|
+
},
|
|
333
|
+
project: { pathLevels: "1", addedDirsLayout: "inline" },
|
|
334
|
+
git: { enabled: true, showDirty: true, showAheadBehind: false, showLineDiff: false, branchOverflow: "truncate", pushWarnAt: 0, pushCriticalAt: 0 },
|
|
335
|
+
jj: { enabled: false, showDirty: true, showConflicts: true }
|
|
263
336
|
};
|
|
264
337
|
STATUSLINE_ENV = "AGENT_SHIM_STATUSLINE";
|
|
265
338
|
}
|
|
@@ -4325,7 +4398,7 @@ var init_package = __esm({
|
|
|
4325
4398
|
"package.json"() {
|
|
4326
4399
|
package_default = {
|
|
4327
4400
|
name: "claude-use",
|
|
4328
|
-
version: "11.
|
|
4401
|
+
version: "11.54.0",
|
|
4329
4402
|
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.",
|
|
4330
4403
|
license: "MIT",
|
|
4331
4404
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -7501,6 +7574,9 @@ function keyOf(path43, leaf) {
|
|
|
7501
7574
|
if (leaf instanceof import_zod15.z.ZodNumber) {
|
|
7502
7575
|
return { ...common, kind: "integer", choices: [] };
|
|
7503
7576
|
}
|
|
7577
|
+
if (leaf instanceof import_zod15.z.ZodBoolean) {
|
|
7578
|
+
return { ...common, kind: "boolean", choices: [] };
|
|
7579
|
+
}
|
|
7504
7580
|
if (leaf instanceof import_zod15.z.ZodString) {
|
|
7505
7581
|
return { ...common, kind: "text", choices: [] };
|
|
7506
7582
|
}
|
package/dist/index.mjs
CHANGED
|
@@ -119,7 +119,7 @@ var init_proxyBypass = __esm({
|
|
|
119
119
|
// src/config/statusline.ts
|
|
120
120
|
import { z } from "zod";
|
|
121
121
|
function distinctList(member) {
|
|
122
|
-
return z.array(member).refine((items) => new Set(items).size === items.length, "must not repeat
|
|
122
|
+
return z.array(member).refine((items) => new Set(items).size === items.length, "must not repeat an entry");
|
|
123
123
|
}
|
|
124
124
|
function isSingleVisibleGrapheme(text) {
|
|
125
125
|
return [...GRAPHEMES.segment(text)].length === 1 && !/[\p{C}\p{Z}]/u.test(text);
|
|
@@ -144,12 +144,12 @@ function resolveStatusline(settings) {
|
|
|
144
144
|
}
|
|
145
145
|
return resolved;
|
|
146
146
|
}
|
|
147
|
-
var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_COLOUR_NAMES, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_CHARS, MAX_BAR_CELLS, LABEL_RE2, colourValue, GRAPHEMES, barCharacter, labelText, wholePercent, SHAPES, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
|
|
147
|
+
var STATUSLINE_HEADER_SEGMENTS, STATUSLINE_ROWS, STATUSLINE_COLOUR_NAMES, DEFAULT_HEADER_SEGMENTS, DEFAULT_ROWS, STATUSLINE_PATH_LEVELS, MAX_PERCENT, MAX_STATUSLINE_PALETTE_INDEX, MAX_STATUSLINE_LABEL_CHARS, MAX_BAR_CELLS, MAX_ACCOUNT_USER_CHARS, MAX_DISPLAY_TEXT_CHARS, LABEL_RE2, OPTIONAL_LABEL_RE, colourValue, GRAPHEMES, barCharacter, labelText, overrideText, wholePercent, SHAPES, StatuslineSchema, ResolvedStatuslineSchema, STATUSLINE_DEFAULTS, STATUSLINE_ENV;
|
|
148
148
|
var init_statusline = __esm({
|
|
149
149
|
"src/config/statusline.ts"() {
|
|
150
150
|
"use strict";
|
|
151
|
-
STATUSLINE_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom"];
|
|
152
|
-
STATUSLINE_ROWS = ["context", "quota"];
|
|
151
|
+
STATUSLINE_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom", "project", "vcs", "effort", "advisor", "version", "outputStyle"];
|
|
152
|
+
STATUSLINE_ROWS = ["context", "quota", "addedDirs", "gitFiles"];
|
|
153
153
|
STATUSLINE_COLOUR_NAMES = [
|
|
154
154
|
"default",
|
|
155
155
|
"dim",
|
|
@@ -170,21 +170,46 @@ var init_statusline = __esm({
|
|
|
170
170
|
"brightCyan",
|
|
171
171
|
"brightWhite"
|
|
172
172
|
];
|
|
173
|
+
DEFAULT_HEADER_SEGMENTS = ["model", "provider", "route", "account", "identity", "headroom"];
|
|
174
|
+
DEFAULT_ROWS = ["context", "quota"];
|
|
175
|
+
STATUSLINE_PATH_LEVELS = ["1", "2", "3", "full"];
|
|
173
176
|
MAX_PERCENT = 100;
|
|
174
177
|
MAX_STATUSLINE_PALETTE_INDEX = 255;
|
|
175
178
|
MAX_STATUSLINE_LABEL_CHARS = 12;
|
|
176
179
|
MAX_BAR_CELLS = 40;
|
|
180
|
+
MAX_ACCOUNT_USER_CHARS = 254;
|
|
181
|
+
MAX_DISPLAY_TEXT_CHARS = 80;
|
|
177
182
|
LABEL_RE2 = /^[^\p{C}\p{Z}]+(?: [^\p{C}\p{Z}]+)*$/u;
|
|
183
|
+
OPTIONAL_LABEL_RE = /^(?:[^\p{C}\p{Z}]+(?: [^\p{C}\p{Z}]+)*)?$/u;
|
|
178
184
|
colourValue = z.union([z.enum(STATUSLINE_COLOUR_NAMES), z.number().int().min(0).max(MAX_STATUSLINE_PALETTE_INDEX), z.string().regex(/^#[0-9a-fA-F]{6}$/, "must be a colour name, a palette index from 0 to 255 or #rrggbb")]);
|
|
179
185
|
GRAPHEMES = new Intl.Segmenter(void 0, { granularity: "grapheme" });
|
|
180
186
|
barCharacter = z.string().refine(isSingleVisibleGrapheme, "must be a single visible character");
|
|
181
187
|
labelText = z.string().max(MAX_STATUSLINE_LABEL_CHARS).regex(LABEL_RE2, "must be visible text without control characters");
|
|
188
|
+
overrideText = z.string().max(MAX_DISPLAY_TEXT_CHARS).regex(OPTIONAL_LABEL_RE, "must be visible text without control characters");
|
|
182
189
|
wholePercent = z.number().int().min(1).max(MAX_PERCENT);
|
|
183
190
|
SHAPES = {
|
|
184
191
|
layout: {
|
|
185
192
|
header: distinctList(z.enum(STATUSLINE_HEADER_SEGMENTS)).describe("The header segments to draw, in drawing order; a segment left out is hidden, and an empty list hides the header."),
|
|
186
193
|
rows: distinctList(z.enum(STATUSLINE_ROWS)).describe("The rows to draw below the header, in drawing order; a row left out is hidden, and an empty list hides every row.")
|
|
187
194
|
},
|
|
195
|
+
model: {
|
|
196
|
+
format: z.enum(["full", "compact", "short"]).describe("How the model's name is written: full is the name as the client gives it, compact drops a context-window suffix such as (1M context), and short also drops a leading Claude."),
|
|
197
|
+
override: overrideText.describe("A name to show in place of the client's own model name, whatever model is running; empty shows the model's own name. A dynamic mode's served model still follows it."),
|
|
198
|
+
source: z.enum(["client", "transcript", "auto"]).describe("Where the model's name comes from: client is the name the client reports, transcript is the model the session's last reply came from (what a proxy actually served), and auto uses the transcript's model only when it is not a Claude model, which is what a proxy redirect looks like.")
|
|
199
|
+
},
|
|
200
|
+
provider: {
|
|
201
|
+
name: overrideText.describe("A label to show in place of the launch's provider name, or on its own when the launch has no provider; empty shows the provider's own name.")
|
|
202
|
+
},
|
|
203
|
+
account: {
|
|
204
|
+
parts: distinctList(z.enum(["user", "organisation", "plan"])).describe("What the account segment says about the login account, in drawing order: the account's email address, its organisation (shown for team and enterprise accounts) and its plan. A part left out is hidden, and an empty list hides the segment."),
|
|
205
|
+
userLength: z.number().int().min(0).max(MAX_ACCOUNT_USER_CHARS).describe("The most characters of the account's email address to show, with an ellipsis after a cut one; 0 shows all of it.")
|
|
206
|
+
},
|
|
207
|
+
effort: {
|
|
208
|
+
format: z.enum(["full", "symbol", "text"]).describe("How the reasoning effort is written: full is a symbol and the level (a filled circle that grows with the level, then the name), symbol is the symbol alone, and text is the level's name alone. A level with no symbol is always written as its name.")
|
|
209
|
+
},
|
|
210
|
+
advisor: {
|
|
211
|
+
override: overrideText.describe("A name to show for the advisor model in place of the one the session's transcript records; empty shows the transcript's, prettified.")
|
|
212
|
+
},
|
|
188
213
|
bands: {
|
|
189
214
|
warnAt: wholePercent.describe("The whole percentage of use at which a bar turns yellow; it must be below criticalAt."),
|
|
190
215
|
criticalAt: wholePercent.describe("The whole percentage of use at which a bar turns red.")
|
|
@@ -206,25 +231,67 @@ var init_statusline = __esm({
|
|
|
206
231
|
critical: colourValue.describe("The colour of a bar at or above bands.criticalAt, and of a cache hit share that is nearly nothing."),
|
|
207
232
|
model: colourValue.describe("The colour of the model and provider segments."),
|
|
208
233
|
label: colourValue.describe("The colour of labels and secondary text: row labels, and the route, account, identity and headroom segments."),
|
|
209
|
-
empty: colourValue.describe("The colour of the unused part of a bar.")
|
|
234
|
+
empty: colourValue.describe("The colour of the unused part of a bar."),
|
|
235
|
+
project: colourValue.describe("The colour of the project path segment."),
|
|
236
|
+
git: colourValue.describe("The colour of the version control segment's wrapper text (`git:(` and `)`)."),
|
|
237
|
+
gitBranch: colourValue.describe("The colour of the branch or bookmark and its ahead, behind and dirty markers.")
|
|
238
|
+
},
|
|
239
|
+
project: {
|
|
240
|
+
pathLevels: z.enum(STATUSLINE_PATH_LEVELS).describe("How many trailing directories of the working directory the project segment shows: 1, 2 or 3, or full for the whole absolute path."),
|
|
241
|
+
addedDirsLayout: z.enum(["inline", "row"]).describe("Where the directories added to the session are drawn: inline, as +name after the project path in the project segment, or row, as an Added dirs line when layout.rows lists addedDirs.")
|
|
242
|
+
},
|
|
243
|
+
git: {
|
|
244
|
+
enabled: z.boolean().describe("Whether the vcs segment and the gitFiles row read the working directory's git status."),
|
|
245
|
+
showDirty: z.boolean().describe("Whether the branch is followed by * when the working tree has uncommitted changes."),
|
|
246
|
+
showAheadBehind: z.boolean().describe("Whether the branch is followed by the commits ahead of (up-arrow) and behind (down-arrow) its upstream."),
|
|
247
|
+
showLineDiff: z.boolean().describe("Whether the segment shows the total lines added and removed against HEAD, as [+a -d]."),
|
|
248
|
+
branchOverflow: z.enum(["truncate", "wrap"]).describe("How the vcs segment sits beside the project segment when they are listed next to each other: truncate keeps them as one unit the client cuts off at the terminal's edge, and wrap lets the line break between them."),
|
|
249
|
+
pushWarnAt: z.number().int().min(0).describe("The count of unpushed commits at which the ahead marker takes colours.warning; 0 turns it off."),
|
|
250
|
+
pushCriticalAt: z.number().int().min(0).describe("The count of unpushed commits at which the ahead marker takes colours.critical; 0 turns it off.")
|
|
251
|
+
},
|
|
252
|
+
jj: {
|
|
253
|
+
enabled: z.boolean().describe("Whether the vcs segment reads a Jujutsu repository's status, instead of git's, when the working directory is inside one."),
|
|
254
|
+
showDirty: z.boolean().describe("Whether the bookmark or change id is followed by * when the working-copy commit differs from its parent."),
|
|
255
|
+
showConflicts: z.boolean().describe("Whether the segment shows !conflict when the working-copy commit has an unresolved conflict.")
|
|
210
256
|
}
|
|
211
257
|
};
|
|
212
258
|
StatuslineSchema = z.strictObject({
|
|
213
259
|
layout: z.strictObject(SHAPES.layout).partial().optional(),
|
|
260
|
+
model: z.strictObject(SHAPES.model).partial().optional(),
|
|
261
|
+
provider: z.strictObject(SHAPES.provider).partial().optional(),
|
|
262
|
+
account: z.strictObject(SHAPES.account).partial().optional(),
|
|
263
|
+
effort: z.strictObject(SHAPES.effort).partial().optional(),
|
|
264
|
+
advisor: z.strictObject(SHAPES.advisor).partial().optional(),
|
|
214
265
|
bands: z.strictObject(SHAPES.bands).partial().optional(),
|
|
215
266
|
labels: z.strictObject(SHAPES.labels).partial().optional(),
|
|
216
267
|
bar: z.strictObject(SHAPES.bar).partial().optional(),
|
|
217
|
-
colours: z.strictObject(SHAPES.colours).partial().optional()
|
|
268
|
+
colours: z.strictObject(SHAPES.colours).partial().optional(),
|
|
269
|
+
project: z.strictObject(SHAPES.project).partial().optional(),
|
|
270
|
+
git: z.strictObject(SHAPES.git).partial().optional(),
|
|
271
|
+
jj: z.strictObject(SHAPES.jj).partial().optional()
|
|
218
272
|
});
|
|
219
273
|
ResolvedStatuslineSchema = z.strictObject({
|
|
220
274
|
layout: z.strictObject(SHAPES.layout),
|
|
275
|
+
model: z.strictObject(SHAPES.model),
|
|
276
|
+
provider: z.strictObject(SHAPES.provider),
|
|
277
|
+
account: z.strictObject(SHAPES.account),
|
|
278
|
+
effort: z.strictObject(SHAPES.effort),
|
|
279
|
+
advisor: z.strictObject(SHAPES.advisor),
|
|
221
280
|
bands: z.strictObject(SHAPES.bands),
|
|
222
281
|
labels: z.strictObject(SHAPES.labels),
|
|
223
282
|
bar: z.strictObject(SHAPES.bar),
|
|
224
|
-
colours: z.strictObject(SHAPES.colours)
|
|
283
|
+
colours: z.strictObject(SHAPES.colours),
|
|
284
|
+
project: z.strictObject(SHAPES.project),
|
|
285
|
+
git: z.strictObject(SHAPES.git),
|
|
286
|
+
jj: z.strictObject(SHAPES.jj)
|
|
225
287
|
});
|
|
226
288
|
STATUSLINE_DEFAULTS = {
|
|
227
|
-
layout: { header: [...
|
|
289
|
+
layout: { header: [...DEFAULT_HEADER_SEGMENTS], rows: [...DEFAULT_ROWS] },
|
|
290
|
+
model: { format: "full", override: "", source: "client" },
|
|
291
|
+
provider: { name: "" },
|
|
292
|
+
account: { parts: ["user", "organisation", "plan"], userLength: 0 },
|
|
293
|
+
effort: { format: "full" },
|
|
294
|
+
advisor: { override: "" },
|
|
228
295
|
bands: { warnAt: 70, criticalAt: 90 },
|
|
229
296
|
labels: { fiveHour: "5h", sevenDay: "Wk" },
|
|
230
297
|
bar: { width: 10, filled: "\u2588", empty: "\u2591" },
|
|
@@ -236,8 +303,14 @@ var init_statusline = __esm({
|
|
|
236
303
|
critical: "red",
|
|
237
304
|
model: "default",
|
|
238
305
|
label: "default",
|
|
239
|
-
empty: "brightBlack"
|
|
240
|
-
|
|
306
|
+
empty: "brightBlack",
|
|
307
|
+
project: "yellow",
|
|
308
|
+
git: "magenta",
|
|
309
|
+
gitBranch: "cyan"
|
|
310
|
+
},
|
|
311
|
+
project: { pathLevels: "1", addedDirsLayout: "inline" },
|
|
312
|
+
git: { enabled: true, showDirty: true, showAheadBehind: false, showLineDiff: false, branchOverflow: "truncate", pushWarnAt: 0, pushCriticalAt: 0 },
|
|
313
|
+
jj: { enabled: false, showDirty: true, showConflicts: true }
|
|
241
314
|
};
|
|
242
315
|
STATUSLINE_ENV = "AGENT_SHIM_STATUSLINE";
|
|
243
316
|
}
|
|
@@ -4301,7 +4374,7 @@ var init_package = __esm({
|
|
|
4301
4374
|
"package.json"() {
|
|
4302
4375
|
package_default = {
|
|
4303
4376
|
name: "claude-use",
|
|
4304
|
-
version: "11.
|
|
4377
|
+
version: "11.54.0",
|
|
4305
4378
|
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.",
|
|
4306
4379
|
license: "MIT",
|
|
4307
4380
|
author: "Joseph Mearman <joseph@mearman.co.uk>",
|
|
@@ -7476,6 +7549,9 @@ function keyOf(path43, leaf) {
|
|
|
7476
7549
|
if (leaf instanceof z15.ZodNumber) {
|
|
7477
7550
|
return { ...common, kind: "integer", choices: [] };
|
|
7478
7551
|
}
|
|
7552
|
+
if (leaf instanceof z15.ZodBoolean) {
|
|
7553
|
+
return { ...common, kind: "boolean", choices: [] };
|
|
7554
|
+
}
|
|
7479
7555
|
if (leaf instanceof z15.ZodString) {
|
|
7480
7556
|
return { ...common, kind: "text", choices: [] };
|
|
7481
7557
|
}
|