claude-use 6.0.0 → 6.1.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 CHANGED
@@ -79,7 +79,7 @@ claude-use identity resolve-conflicts <name> # interactively resolve a retained
79
79
  claude-use profile add [name] [--extends <profile>]... [--description <text>] # interactive with no options on a terminal
80
80
  claude-use profile set <name> [--category <category>=<bool>]... [--entry <category>/<path>=<bool>]...
81
81
  claude-use profile set <name> [--extends <profile>]... [--no-extends] [--description <text> | --no-description]
82
- claude-use profile set <name> [--[no-]launch-skip-permissions] [--[no-]launch-remote-control] [--[no-]launch-headroom]
82
+ claude-use profile set <name> [--[no-]launch-skip-permissions] [--[no-]launch-remote-control] [--[no-]launch-headroom] [--[no-]launch-track-usage]
83
83
  claude-use profile set <name> [--launch-provider <provider> | --no-launch-provider]
84
84
  claude-use profile list [--json]
85
85
  claude-use profile show <name> [--json]
@@ -116,7 +116,7 @@ claude-use run [@<identity>] [launch flags] [claude arguments]
116
116
  # launch flags, recognised only before a `--` terminator:
117
117
  # --identity <name> --config-profile <name> --provider <name> | --no-provider
118
118
  # --category <category>=<bool> --share <category>/<path> --hide <category>/<path> (each repeatable)
119
- # --[no-]skip-permissions --[no-]remote-control --[no-]headroom
119
+ # --[no-]skip-permissions --[no-]remote-control --[no-]headroom --[no-]track-usage
120
120
  claude @<identity> ... # the same, once `claude-use shim enable` has run
121
121
  ```
122
122
 
package/dist/cli.cjs CHANGED
@@ -55164,7 +55164,8 @@ var LaunchSchema = external_exports.strictObject({
55164
55164
  skipPermissions: external_exports.boolean().optional(),
55165
55165
  remoteControl: external_exports.boolean().optional(),
55166
55166
  provider: external_exports.string().min(1).optional(),
55167
- headroom: external_exports.boolean().optional()
55167
+ headroom: external_exports.boolean().optional(),
55168
+ trackUsage: external_exports.boolean().optional()
55168
55169
  });
55169
55170
  var CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
55170
55171
  var PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
@@ -58105,6 +58106,9 @@ function flattenLayers(layers, options) {
58105
58106
  if (layer.launch.headroom !== void 0) {
58106
58107
  launch.headroom = layer.launch.headroom;
58107
58108
  }
58109
+ if (layer.launch.trackUsage !== void 0) {
58110
+ launch.trackUsage = layer.launch.trackUsage;
58111
+ }
58108
58112
  }
58109
58113
  if (layer.entries === void 0) {
58110
58114
  continue;
@@ -59503,6 +59507,9 @@ function applyProfileSet(paths, name, options) {
59503
59507
  if (options.launchHeadroom !== void 0) {
59504
59508
  launchPatch.headroom = options.launchHeadroom;
59505
59509
  }
59510
+ if (options.launchTrackUsage !== void 0) {
59511
+ launchPatch.trackUsage = options.launchTrackUsage;
59512
+ }
59506
59513
  if (options.launchProvider !== void 0) {
59507
59514
  launchPatch.provider = options.launchProvider === false ? void 0 : options.launchProvider;
59508
59515
  }
@@ -59542,7 +59549,7 @@ function registerProfileCommand(program2, deps) {
59542
59549
  withExamples(
59543
59550
  profile.command("set <name>").description(
59544
59551
  "Update a configuration profile's categories, entries, extends list, description or launch settings. With no options on a terminal, walks through its categories."
59545
- ).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-provider <provider>", "Launches under this profile route through this provider.").option("--no-launch-provider", "Clear this profile's provider selection.").action(async (name, options) => {
59552
+ ).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.").action(async (name, options) => {
59546
59553
  requireProfileExists(paths, name);
59547
59554
  if (Object.values(options).every((value) => value === void 0)) {
59548
59555
  if (!deps.isInteractive()) {
@@ -60901,7 +60908,7 @@ function resolveLaunchIdentity(paths, cwd) {
60901
60908
  // package.json
60902
60909
  var package_default = {
60903
60910
  name: "claude-use",
60904
- version: "6.0.0",
60911
+ version: "6.1.0",
60905
60912
  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.",
60906
60913
  license: "Apache-2.0",
60907
60914
  author: "Joseph Mearman <joseph@mearman.co.uk>",
@@ -66360,6 +66367,7 @@ var ConflictingIdentityError = class extends UsageError {
66360
66367
  var VALUED_FLAGS = ["--identity", "--config-profile", "--provider", "--category", "--share", "--hide"];
66361
66368
  var BOOLEAN_FLAGS = [
66362
66369
  { flag: "--headroom", key: "headroom" },
66370
+ { flag: "--track-usage", key: "trackUsage" },
66363
66371
  { flag: "--skip-permissions", key: "skipPermissions" },
66364
66372
  { flag: "--remote-control", key: "remoteControl" }
66365
66373
  ];
@@ -67955,7 +67963,7 @@ function formatUsageReport(report) {
67955
67963
  }
67956
67964
  }
67957
67965
  if (lines.length === 1) {
67958
- lines.push("no usage recorded (only sessions routed through the front door are recorded: provider launches and --headroom launches)");
67966
+ lines.push("no usage recorded (only sessions routed through the front door are recorded: provider launches, --headroom launches, and launches with --track-usage)");
67959
67967
  }
67960
67968
  if (report.invalidLines > 0) {
67961
67969
  lines.push(`warning: ${String(report.invalidLines)} log line(s) could not be read as usage records and were skipped`);
@@ -68092,11 +68100,11 @@ Launching:
68092
68100
  --provider <name> route through an API provider; --no-provider opts out
68093
68101
  --category <category=bool> share or hide a category (repeatable)
68094
68102
  --share <path>, --hide <path> share or hide one <category>/<path> entry (repeatable)
68095
- --[no-]skip-permissions, --[no-]remote-control, --[no-]headroom
68103
+ --[no-]skip-permissions, --[no-]remote-control, --[no-]headroom, --[no-]track-usage
68096
68104
 
68097
68105
  Environment:
68098
68106
  CLAUDE_USE_IDENTITY, CLAUDE_USE_CONFIG_PROFILE, CLAUDE_USE_SKIP_PERMISSIONS,
68099
- CLAUDE_USE_REMOTE_CONTROL, CLAUDE_USE_HEADROOM, CLAUDE_USE_ALLOW_AMBIENT_CREDENTIAL,
68107
+ CLAUDE_USE_REMOTE_CONTROL, CLAUDE_USE_HEADROOM, CLAUDE_USE_TRACK_USAGE, CLAUDE_USE_ALLOW_AMBIENT_CREDENTIAL,
68100
68108
  CLAUDE_USE_CATEGORY_OVERRIDE, CLAUDE_USE_ENTRY_OVERRIDE, CLAUDE_USE_HOME,
68101
68109
  CLAUDE_USE_DEBUG (print stack traces), NO_COLOR. Booleans are true, false, 1 or 0.
68102
68110
 
@@ -68258,7 +68266,8 @@ function resolveLaunchFlags(params) {
68258
68266
  return {
68259
68267
  skipPermissions: params.flags?.skipPermissions ?? parseEnvBool("CLAUDE_USE_SKIP_PERMISSIONS", params.env.CLAUDE_USE_SKIP_PERMISSIONS) ?? params.cascade?.skipPermissions ?? false,
68260
68268
  remoteControl: params.flags?.remoteControl ?? parseEnvBool("CLAUDE_USE_REMOTE_CONTROL", params.env.CLAUDE_USE_REMOTE_CONTROL) ?? params.cascade?.remoteControl ?? false,
68261
- headroom: params.flags?.headroom ?? parseEnvBool("CLAUDE_USE_HEADROOM", params.env.CLAUDE_USE_HEADROOM) ?? params.cascade?.headroom ?? false
68269
+ headroom: params.flags?.headroom ?? parseEnvBool("CLAUDE_USE_HEADROOM", params.env.CLAUDE_USE_HEADROOM) ?? params.cascade?.headroom ?? false,
68270
+ trackUsage: params.flags?.trackUsage ?? parseEnvBool("CLAUDE_USE_TRACK_USAGE", params.env.CLAUDE_USE_TRACK_USAGE) ?? params.cascade?.trackUsage ?? false
68262
68271
  };
68263
68272
  }
68264
68273
  function buildFlagArgs(flags) {
@@ -68593,11 +68602,12 @@ function runLauncher(params) {
68593
68602
  flags: {
68594
68603
  ...parsedArgv.skipPermissions === void 0 ? {} : { skipPermissions: parsedArgv.skipPermissions },
68595
68604
  ...parsedArgv.remoteControl === void 0 ? {} : { remoteControl: parsedArgv.remoteControl },
68596
- ...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom }
68605
+ ...parsedArgv.headroom === void 0 ? {} : { headroom: parsedArgv.headroom },
68606
+ ...parsedArgv.trackUsage === void 0 ? {} : { trackUsage: parsedArgv.trackUsage }
68597
68607
  }
68598
68608
  });
68599
68609
  const frontDoorPort = params.frontdoor;
68600
- const frontDoorEngaged = resolvedProvider !== void 0 || resolvedFlags.headroom;
68610
+ const frontDoorEngaged = resolvedProvider !== void 0 || resolvedFlags.headroom || resolvedFlags.trackUsage;
68601
68611
  if (frontDoorEngaged && frontDoorPort === void 0) {
68602
68612
  log.error("claude-use: this launch routes through the front-door daemon, but this launcher has no front-door port wired; refusing to launch without it.");
68603
68613
  proc.exit(1);
@@ -68620,7 +68630,7 @@ function runLauncher(params) {
68620
68630
  log.error("claude-use: headroom routing was requested but this launcher has no headroom port wired; refusing to launch without it.");
68621
68631
  proc.exit(1);
68622
68632
  } else if (frontDoor !== void 0) {
68623
- log.info(`claude-use: routing through the front door on 127.0.0.1:${String(frontDoor.port)}${resolvedProvider === void 0 ? "" : ` (provider ${resolvedProvider.name})`}`);
68633
+ log.info(`claude-use: routing through the front door on 127.0.0.1:${String(frontDoor.port)}${resolvedProvider === void 0 ? ` (OAuth via the door's CONNECT surface on 127.0.0.1:${String(frontDoor.connectPort)}, usage recorded)` : ` (provider ${resolvedProvider.name})`}`);
68624
68634
  }
68625
68635
  const frontDoorRelease = frontDoor === void 0 ? void 0 : frontDoorPort?.release;
68626
68636
  const finalArgv = buildArgv({
package/dist/index.cjs CHANGED
@@ -120,7 +120,8 @@ var LaunchSchema = import_zod.z.strictObject({
120
120
  skipPermissions: import_zod.z.boolean().optional(),
121
121
  remoteControl: import_zod.z.boolean().optional(),
122
122
  provider: import_zod.z.string().min(1).optional(),
123
- headroom: import_zod.z.boolean().optional()
123
+ headroom: import_zod.z.boolean().optional(),
124
+ trackUsage: import_zod.z.boolean().optional()
124
125
  });
125
126
  var CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
126
127
  var PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
@@ -668,6 +669,9 @@ function flattenLayers(layers, options) {
668
669
  if (layer.launch.headroom !== void 0) {
669
670
  launch.headroom = layer.launch.headroom;
670
671
  }
672
+ if (layer.launch.trackUsage !== void 0) {
673
+ launch.trackUsage = layer.launch.trackUsage;
674
+ }
671
675
  }
672
676
  if (layer.entries === void 0) {
673
677
  continue;
package/dist/index.mjs CHANGED
@@ -46,7 +46,8 @@ var LaunchSchema = z.strictObject({
46
46
  skipPermissions: z.boolean().optional(),
47
47
  remoteControl: z.boolean().optional(),
48
48
  provider: z.string().min(1).optional(),
49
- headroom: z.boolean().optional()
49
+ headroom: z.boolean().optional(),
50
+ trackUsage: z.boolean().optional()
50
51
  });
51
52
  var CREDENTIAL_TARGETS = ["bearer", "apiKey", "oauthToken"];
52
53
  var PROVIDER_CREDENTIAL_TARGETS = ["bearer", "apiKey"];
@@ -594,6 +595,9 @@ function flattenLayers(layers, options) {
594
595
  if (layer.launch.headroom !== void 0) {
595
596
  launch.headroom = layer.launch.headroom;
596
597
  }
598
+ if (layer.launch.trackUsage !== void 0) {
599
+ launch.trackUsage = layer.launch.trackUsage;
600
+ }
597
601
  }
598
602
  if (layer.entries === void 0) {
599
603
  continue;
@@ -83,6 +83,7 @@ declare const LaunchSchema: z.ZodObject<{
83
83
  remoteControl: z.ZodOptional<z.ZodBoolean>;
84
84
  provider: z.ZodOptional<z.ZodString>;
85
85
  headroom: z.ZodOptional<z.ZodBoolean>;
86
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
86
87
  }, z.core.$strict>;
87
88
  export type LaunchFlags = z.infer<typeof LaunchSchema>;
88
89
  /**
@@ -417,6 +418,7 @@ export declare const ConfigProfileSchema: z.ZodObject<{
417
418
  remoteControl: z.ZodOptional<z.ZodBoolean>;
418
419
  provider: z.ZodOptional<z.ZodString>;
419
420
  headroom: z.ZodOptional<z.ZodBoolean>;
421
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
420
422
  }, z.core.$strict>>;
421
423
  }, z.core.$strict>;
422
424
  export type ConfigProfile = z.infer<typeof ConfigProfileSchema>;
@@ -452,6 +454,7 @@ export declare const DirectoryRuleSchema: z.ZodObject<{
452
454
  remoteControl: z.ZodOptional<z.ZodBoolean>;
453
455
  provider: z.ZodOptional<z.ZodString>;
454
456
  headroom: z.ZodOptional<z.ZodBoolean>;
457
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
455
458
  }, z.core.$strict>>;
456
459
  path: z.ZodString;
457
460
  configProfile: z.ZodOptional<z.ZodString>;
@@ -499,6 +502,7 @@ export declare const DirectoryRulesSchema: z.ZodObject<{
499
502
  remoteControl: z.ZodOptional<z.ZodBoolean>;
500
503
  provider: z.ZodOptional<z.ZodString>;
501
504
  headroom: z.ZodOptional<z.ZodBoolean>;
505
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
502
506
  }, z.core.$strict>>;
503
507
  path: z.ZodString;
504
508
  configProfile: z.ZodOptional<z.ZodString>;
@@ -547,6 +551,7 @@ export declare const PortableConfigSchema: z.ZodObject<{
547
551
  remoteControl: z.ZodOptional<z.ZodBoolean>;
548
552
  provider: z.ZodOptional<z.ZodString>;
549
553
  headroom: z.ZodOptional<z.ZodBoolean>;
554
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
550
555
  }, z.core.$strict>>;
551
556
  configProfile: z.ZodOptional<z.ZodString>;
552
557
  identity: z.ZodOptional<z.ZodString>;
@@ -626,6 +631,7 @@ export declare const GlobalConfigSchema: z.ZodObject<{
626
631
  remoteControl: z.ZodOptional<z.ZodBoolean>;
627
632
  provider: z.ZodOptional<z.ZodString>;
628
633
  headroom: z.ZodOptional<z.ZodBoolean>;
634
+ trackUsage: z.ZodOptional<z.ZodBoolean>;
629
635
  }, z.core.$strict>>;
630
636
  headroom: z.ZodOptional<z.ZodObject<{
631
637
  source: z.ZodOptional<z.ZodString>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-use",
3
- "version": "6.0.0",
3
+ "version": "6.1.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": "Apache-2.0",
6
6
  "author": "Joseph Mearman <joseph@mearman.co.uk>",