@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 +32 -14
- package/dist/myclaude.mjs +32 -14
- package/package.json +1 -1
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.
|
|
8
|
-
BUILD_TIME: "2026-08-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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" ?
|
|
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" ?
|
|
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.
|
|
8
|
-
BUILD_TIME: "2026-08-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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" ?
|
|
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" ?
|
|
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,
|