@funnycode/myclaude 0.1.176 → 0.1.178

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/myclaude.js CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.176",
8
- BUILD_TIME: "2026-08-01T21:17:26.004Z",
7
+ VERSION: "0.1.178",
8
+ BUILD_TIME: "2026-08-02T10:38:45.889Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -119947,7 +119947,7 @@ var package_default;
119947
119947
  var init_package = __esm(() => {
119948
119948
  package_default = {
119949
119949
  name: "@funnycode/myclaude",
119950
- version: "0.1.176",
119950
+ version: "0.1.178",
119951
119951
  private: false,
119952
119952
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119953
119953
  license: "MIT",
@@ -410151,8 +410151,8 @@ function isInputModeCharacter(input) {
410151
410151
  }
410152
410152
 
410153
410153
  // src/projectOnboardingState.ts
410154
- import { join as join105, resolve as resolve44 } from "path";
410155
- function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410154
+ import { join as join105, resolve as resolve44, basename as basename37, sep as pathSep2 } from "path";
410155
+ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath, maxDepth = 100) {
410156
410156
  const fs13 = getFsImplementation();
410157
410157
  if (!recursionStack) {
410158
410158
  recursionStack = [];
@@ -410162,12 +410162,23 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410162
410162
  currentRealPath = fs13.realpathSync(dirPath);
410163
410163
  } catch (err2) {
410164
410164
  console.warn(`[getDirectoryFingerprint] Failed to resolve real path for '${dirPath}', using original path: ${err2}`);
410165
- currentRealPath = dirPath;
410165
+ try {
410166
+ const linkTarget = fs13.readlinkSync(dirPath);
410167
+ const resolvedTarget = resolve44(dirPath, linkTarget);
410168
+ currentRealPath = resolvedTarget;
410169
+ } catch {
410170
+ currentRealPath = dirPath;
410171
+ }
410166
410172
  }
410167
- if (recursionStack.includes(currentRealPath)) {
410173
+ if (recursionStack.includes(currentRealPath) || recursionStack.includes(dirPath)) {
410168
410174
  return "";
410169
410175
  }
410170
410176
  recursionStack.push(currentRealPath);
410177
+ if (recursionStack.length > maxDepth) {
410178
+ console.warn(`[getDirectoryFingerprint] Maximum recursion depth (${maxDepth}) exceeded for '${dirPath}'`);
410179
+ recursionStack.pop();
410180
+ return "";
410181
+ }
410171
410182
  if (rootRealPath === undefined) {
410172
410183
  rootRealPath = currentRealPath;
410173
410184
  }
@@ -410197,11 +410208,18 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410197
410208
  console.warn(`[getDirectoryFingerprint] Failed to resolve target real path for symlink '${fullPath}': ${err2}`);
410198
410209
  targetRealPath = resolvedTarget;
410199
410210
  }
410200
- if (targetRealPath.startsWith(rootRealPath + "/") || targetRealPath === rootRealPath) {
410211
+ const targetLower = targetRealPath.toLowerCase();
410212
+ const rootLower = rootRealPath.toLowerCase();
410213
+ if (targetLower === rootLower || targetLower.startsWith(rootLower + pathSep2)) {
410201
410214
  const stat37 = fs13.statSync(resolvedTarget);
410202
410215
  if (stat37.isDirectory()) {
410216
+ const targetBasename = basename37(resolvedTarget);
410217
+ if (targetBasename === "node_modules" || targetBasename === ".git" || targetBasename === "dist" || targetBasename === "build" || targetBasename === ".next" || targetBasename === "out" || targetBasename === "coverage" || targetBasename === "target" || targetBasename === "vendor" || targetBasename === "__pycache__" || targetBasename === ".cache" || targetBasename === ".mypy_cache" || targetBasename === ".svn" || targetBasename === ".hg" || targetBasename === "venv" || targetBasename === ".venv" || targetBasename === "env") {
410218
+ fingerprintParts.push(entry + "/");
410219
+ continue;
410220
+ }
410203
410221
  fingerprintParts.push(entry + "/");
410204
- fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath));
410222
+ fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath, maxDepth));
410205
410223
  } else {
410206
410224
  fingerprintParts.push(entry);
410207
410225
  }
@@ -410217,7 +410235,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410217
410235
  continue;
410218
410236
  }
410219
410237
  fingerprintParts.push(entry + "/");
410220
- fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath));
410238
+ fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath, maxDepth));
410221
410239
  } else {
410222
410240
  fingerprintParts.push(entry);
410223
410241
  }
@@ -487907,7 +487925,7 @@ var init_remember = __esm(() => {
487907
487925
  // src/skills/bundledSkills.ts
487908
487926
  import { constants as fsConstants5 } from "fs";
487909
487927
  import { mkdir as mkdir37, open as open14 } from "fs/promises";
487910
- import { dirname as dirname59, isAbsolute as isAbsolute28, join as join133, normalize as normalize13, sep as pathSep2 } from "path";
487928
+ import { dirname as dirname59, isAbsolute as isAbsolute28, join as join133, normalize as normalize13, sep as pathSep3 } from "path";
487911
487929
  function registerBundledSkill(definition) {
487912
487930
  const { files: files3 } = definition;
487913
487931
  let skillRoot;
@@ -487994,7 +488012,7 @@ async function safeWriteFile(p, content) {
487994
488012
  }
487995
488013
  function resolveSkillFilePath(baseDir, relPath) {
487996
488014
  const normalized = normalize13(relPath);
487997
- if (isAbsolute28(normalized) || normalized.split(pathSep2).includes("..") || normalized.split("/").includes("..")) {
488015
+ if (isAbsolute28(normalized) || normalized.split(pathSep3).includes("..") || normalized.split("/").includes("..")) {
487998
488016
  throw new Error(`bundled skill file path escapes skill dir: ${relPath}`);
487999
488017
  }
488000
488018
  return join133(baseDir, normalized);
@@ -566750,7 +566768,7 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566750
566768
  return prev;
566751
566769
  if (prev.remoteControlAtStartup !== undefined)
566752
566770
  return prev;
566753
- const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566771
+ const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
566754
566772
  return { ...prev, remoteControlAtStartup: newValue };
566755
566773
  });
566756
566774
  saveGlobalConfig((prev) => {
@@ -566758,7 +566776,7 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566758
566776
  if (oldValue === undefined)
566759
566777
  return prev;
566760
566778
  if (prev.remoteControlAtStartup === undefined) {
566761
- const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566779
+ const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
566762
566780
  return {
566763
566781
  ...prev,
566764
566782
  remoteControlAtStartup: newValue,
package/dist/myclaude.mjs CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.176",
8
- BUILD_TIME: "2026-08-01T21:17:26.004Z",
7
+ VERSION: "0.1.178",
8
+ BUILD_TIME: "2026-08-02T10:38:45.889Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -119947,7 +119947,7 @@ var package_default;
119947
119947
  var init_package = __esm(() => {
119948
119948
  package_default = {
119949
119949
  name: "@funnycode/myclaude",
119950
- version: "0.1.176",
119950
+ version: "0.1.178",
119951
119951
  private: false,
119952
119952
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119953
119953
  license: "MIT",
@@ -410151,8 +410151,8 @@ function isInputModeCharacter(input) {
410151
410151
  }
410152
410152
 
410153
410153
  // src/projectOnboardingState.ts
410154
- import { join as join105, resolve as resolve44 } from "path";
410155
- function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410154
+ import { join as join105, resolve as resolve44, basename as basename37, sep as pathSep2 } from "path";
410155
+ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath, maxDepth = 100) {
410156
410156
  const fs13 = getFsImplementation();
410157
410157
  if (!recursionStack) {
410158
410158
  recursionStack = [];
@@ -410162,12 +410162,23 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410162
410162
  currentRealPath = fs13.realpathSync(dirPath);
410163
410163
  } catch (err2) {
410164
410164
  console.warn(`[getDirectoryFingerprint] Failed to resolve real path for '${dirPath}', using original path: ${err2}`);
410165
- currentRealPath = dirPath;
410165
+ try {
410166
+ const linkTarget = fs13.readlinkSync(dirPath);
410167
+ const resolvedTarget = resolve44(dirPath, linkTarget);
410168
+ currentRealPath = resolvedTarget;
410169
+ } catch {
410170
+ currentRealPath = dirPath;
410171
+ }
410166
410172
  }
410167
- if (recursionStack.includes(currentRealPath)) {
410173
+ if (recursionStack.includes(currentRealPath) || recursionStack.includes(dirPath)) {
410168
410174
  return "";
410169
410175
  }
410170
410176
  recursionStack.push(currentRealPath);
410177
+ if (recursionStack.length > maxDepth) {
410178
+ console.warn(`[getDirectoryFingerprint] Maximum recursion depth (${maxDepth}) exceeded for '${dirPath}'`);
410179
+ recursionStack.pop();
410180
+ return "";
410181
+ }
410171
410182
  if (rootRealPath === undefined) {
410172
410183
  rootRealPath = currentRealPath;
410173
410184
  }
@@ -410197,11 +410208,18 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410197
410208
  console.warn(`[getDirectoryFingerprint] Failed to resolve target real path for symlink '${fullPath}': ${err2}`);
410198
410209
  targetRealPath = resolvedTarget;
410199
410210
  }
410200
- if (targetRealPath.startsWith(rootRealPath + "/") || targetRealPath === rootRealPath) {
410211
+ const targetLower = targetRealPath.toLowerCase();
410212
+ const rootLower = rootRealPath.toLowerCase();
410213
+ if (targetLower === rootLower || targetLower.startsWith(rootLower + pathSep2)) {
410201
410214
  const stat37 = fs13.statSync(resolvedTarget);
410202
410215
  if (stat37.isDirectory()) {
410216
+ const targetBasename = basename37(resolvedTarget);
410217
+ if (targetBasename === "node_modules" || targetBasename === ".git" || targetBasename === "dist" || targetBasename === "build" || targetBasename === ".next" || targetBasename === "out" || targetBasename === "coverage" || targetBasename === "target" || targetBasename === "vendor" || targetBasename === "__pycache__" || targetBasename === ".cache" || targetBasename === ".mypy_cache" || targetBasename === ".svn" || targetBasename === ".hg" || targetBasename === "venv" || targetBasename === ".venv" || targetBasename === "env") {
410218
+ fingerprintParts.push(entry + "/");
410219
+ continue;
410220
+ }
410203
410221
  fingerprintParts.push(entry + "/");
410204
- fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath));
410222
+ fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath, maxDepth));
410205
410223
  } else {
410206
410224
  fingerprintParts.push(entry);
410207
410225
  }
@@ -410217,7 +410235,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
410217
410235
  continue;
410218
410236
  }
410219
410237
  fingerprintParts.push(entry + "/");
410220
- fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath));
410238
+ fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath, maxDepth));
410221
410239
  } else {
410222
410240
  fingerprintParts.push(entry);
410223
410241
  }
@@ -487907,7 +487925,7 @@ var init_remember = __esm(() => {
487907
487925
  // src/skills/bundledSkills.ts
487908
487926
  import { constants as fsConstants5 } from "fs";
487909
487927
  import { mkdir as mkdir37, open as open14 } from "fs/promises";
487910
- import { dirname as dirname59, isAbsolute as isAbsolute28, join as join133, normalize as normalize13, sep as pathSep2 } from "path";
487928
+ import { dirname as dirname59, isAbsolute as isAbsolute28, join as join133, normalize as normalize13, sep as pathSep3 } from "path";
487911
487929
  function registerBundledSkill(definition) {
487912
487930
  const { files: files3 } = definition;
487913
487931
  let skillRoot;
@@ -487994,7 +488012,7 @@ async function safeWriteFile(p, content) {
487994
488012
  }
487995
488013
  function resolveSkillFilePath(baseDir, relPath) {
487996
488014
  const normalized = normalize13(relPath);
487997
- if (isAbsolute28(normalized) || normalized.split(pathSep2).includes("..") || normalized.split("/").includes("..")) {
488015
+ if (isAbsolute28(normalized) || normalized.split(pathSep3).includes("..") || normalized.split("/").includes("..")) {
487998
488016
  throw new Error(`bundled skill file path escapes skill dir: ${relPath}`);
487999
488017
  }
488000
488018
  return join133(baseDir, normalized);
@@ -566750,7 +566768,7 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566750
566768
  return prev;
566751
566769
  if (prev.remoteControlAtStartup !== undefined)
566752
566770
  return prev;
566753
- const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566771
+ const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
566754
566772
  return { ...prev, remoteControlAtStartup: newValue };
566755
566773
  });
566756
566774
  saveGlobalConfig((prev) => {
@@ -566758,7 +566776,7 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566758
566776
  if (oldValue === undefined)
566759
566777
  return prev;
566760
566778
  if (prev.remoteControlAtStartup === undefined) {
566761
- const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566779
+ const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
566762
566780
  return {
566763
566781
  ...prev,
566764
566782
  remoteControlAtStartup: newValue,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.176",
3
+ "version": "0.1.178",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",