claudekit-cli 3.41.0 → 3.41.1

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.
Files changed (2) hide show
  1. package/dist/index.js +32 -25
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -57632,7 +57632,7 @@ var package_default;
57632
57632
  var init_package = __esm(() => {
57633
57633
  package_default = {
57634
57634
  name: "claudekit-cli",
57635
- version: "3.41.0",
57635
+ version: "3.41.1",
57636
57636
  description: "CLI tool for bootstrapping and updating ClaudeKit projects",
57637
57637
  type: "module",
57638
57638
  repository: {
@@ -93449,7 +93449,10 @@ class SettingsProcessor {
93449
93449
  }
93450
93450
  let transformed = content;
93451
93451
  const rawPrefix = prefix.replace(/"/g, "");
93452
- transformed = transformed.replace(/(node\s+)(?:\.\/)?(\.claude\/[^\s"\\]+)/g, `$1\\"${rawPrefix}/$2\\"`);
93452
+ transformed = transformed.replace(/(node\s+)(?:\.\/)?(\.claude\/[^\s"\\]+)([^"\\]*)/g, (_match, nodePrefix, relativePath, suffix) => {
93453
+ const normalizedRelativePath = relativePath.replace(/\\/g, "/");
93454
+ return rawPrefix === "$CLAUDE_PROJECT_DIR" ? `${nodePrefix}\\"${rawPrefix}\\"/${normalizedRelativePath}${suffix}` : `${nodePrefix}\\"${rawPrefix}/${normalizedRelativePath}\\"${suffix}`;
93455
+ });
93453
93456
  if (rawPrefix.includes("HOME") || rawPrefix.includes("USERPROFILE")) {
93454
93457
  transformed = transformed.replace(/\$CLAUDE_PROJECT_DIR/g, rawPrefix);
93455
93458
  transformed = transformed.replace(/%CLAUDE_PROJECT_DIR%/g, rawPrefix);
@@ -93495,33 +93498,38 @@ class SettingsProcessor {
93495
93498
  fixSingleCommandPath(cmd) {
93496
93499
  if (!cmd.includes(".claude/") && !cmd.includes(".claude\\"))
93497
93500
  return cmd;
93498
- const bareRelativeRe = /^(node\s+)(?:\.\/)?\.claude\//;
93499
- if (bareRelativeRe.test(cmd)) {
93500
- const prefix = this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR";
93501
- return cmd.replace(/^(node\s+)(?:\.\/)?(\.claude\/.+)$/, `$1"${prefix}/$2"`);
93502
- }
93503
- const varOnlyQuotingRe = /^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)"[/\\](.+)$/;
93504
- const varOnlyMatch = cmd.match(varOnlyQuotingRe);
93505
- if (varOnlyMatch) {
93506
- const [, nodePrefix, capturedVar, restPath] = varOnlyMatch;
93507
- const canonicalVar = this.canonicalizePathVar(capturedVar);
93508
- return `${nodePrefix}"${canonicalVar}/${restPath.replace(/\\/g, "/")}"`;
93509
- }
93510
- const tildeRe = /^(node\s+)~[/\\](.+)$/;
93511
- const tildeMatch = cmd.match(tildeRe);
93501
+ const bareRelativeMatch = cmd.match(/^(node\s+)(?:\.\/)?(\.claude[/\\][^\s"]+)(.*)$/);
93502
+ if (bareRelativeMatch) {
93503
+ const [, nodePrefix, relativePath, suffix] = bareRelativeMatch;
93504
+ return this.formatCommandPath(nodePrefix, this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR", relativePath, suffix);
93505
+ }
93506
+ const embeddedQuotedMatch = cmd.match(/^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](\.claude[/\\][^"]+)"(.*)$/);
93507
+ if (embeddedQuotedMatch) {
93508
+ const [, nodePrefix, capturedVar, relativePath, suffix] = embeddedQuotedMatch;
93509
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93510
+ }
93511
+ const varOnlyQuotedMatch = cmd.match(/^(node\s+)"(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)"[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93512
+ if (varOnlyQuotedMatch) {
93513
+ const [, nodePrefix, capturedVar, relativePath, suffix] = varOnlyQuotedMatch;
93514
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93515
+ }
93516
+ const tildeMatch = cmd.match(/^(node\s+)~[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93512
93517
  if (tildeMatch) {
93513
- const [, nodePrefix, restPath] = tildeMatch;
93514
- return `${nodePrefix}"$HOME/${restPath.replace(/\\/g, "/")}"`;
93518
+ const [, nodePrefix, relativePath, suffix] = tildeMatch;
93519
+ return this.formatCommandPath(nodePrefix, "$HOME", relativePath, suffix);
93515
93520
  }
93516
- const unquotedRe = /^(node\s+)(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](.+)$/;
93517
- const unquotedMatch = cmd.match(unquotedRe);
93521
+ const unquotedMatch = cmd.match(/^(node\s+)(\$HOME|\$CLAUDE_PROJECT_DIR|%USERPROFILE%|%CLAUDE_PROJECT_DIR%)[/\\](\.claude[/\\][^\s"]+)(.*)$/);
93518
93522
  if (unquotedMatch) {
93519
- const [, nodePrefix, capturedVar, restPath] = unquotedMatch;
93520
- const canonicalVar = this.canonicalizePathVar(capturedVar);
93521
- return `${nodePrefix}"${canonicalVar}/${restPath.replace(/\\/g, "/")}"`;
93523
+ const [, nodePrefix, capturedVar, relativePath, suffix] = unquotedMatch;
93524
+ return this.formatCommandPath(nodePrefix, capturedVar, relativePath, suffix);
93522
93525
  }
93523
93526
  return cmd;
93524
93527
  }
93528
+ formatCommandPath(nodePrefix, capturedVar, relativePath, suffix = "") {
93529
+ const canonicalVar = this.canonicalizePathVar(capturedVar);
93530
+ const normalizedRelativePath = relativePath.replace(/\\/g, "/").replace(/^\/+/, "");
93531
+ return canonicalVar === "$CLAUDE_PROJECT_DIR" ? `${nodePrefix}"${canonicalVar}"/${normalizedRelativePath}${suffix}` : `${nodePrefix}"${canonicalVar}/${normalizedRelativePath}"${suffix}`;
93532
+ }
93525
93533
  canonicalizePathVar(capturedVar) {
93526
93534
  switch (capturedVar) {
93527
93535
  case "%USERPROFILE%":
@@ -93570,7 +93578,6 @@ class SettingsProcessor {
93570
93578
  logger.warning("Failed to read settings file for team hooks injection");
93571
93579
  return;
93572
93580
  }
93573
- const prefix = this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR";
93574
93581
  if (!settings.hooks) {
93575
93582
  settings.hooks = {};
93576
93583
  }
@@ -93581,7 +93588,7 @@ class SettingsProcessor {
93581
93588
  { event: "TeammateIdle", handler: "teammate-idle-handler.cjs" }
93582
93589
  ];
93583
93590
  for (const { event, handler } of teamHooks) {
93584
- const hookCommand = `node "${prefix}/.claude/hooks/${handler}"`;
93591
+ const hookCommand = this.formatCommandPath("node ", this.isGlobal ? "$HOME" : "$CLAUDE_PROJECT_DIR", `.claude/hooks/${handler}`);
93585
93592
  const eventHooks = settings.hooks[event];
93586
93593
  if (eventHooks && eventHooks.length > 0)
93587
93594
  continue;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claudekit-cli",
3
- "version": "3.41.0",
3
+ "version": "3.41.1",
4
4
  "description": "CLI tool for bootstrapping and updating ClaudeKit projects",
5
5
  "type": "module",
6
6
  "repository": {