@funnycode/myclaude 0.1.177 → 0.1.179
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 +42 -46
- package/dist/myclaude.mjs +42 -46
- 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.179",
|
|
8
|
+
BUILD_TIME: "2026-08-03T15:19:01.902Z",
|
|
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.179",
|
|
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, basename as basename37 } 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 = [];
|
|
@@ -410163,14 +410163,9 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
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
|
|
410167
|
-
|
|
410168
|
-
|
|
410169
|
-
const resolvedTarget = resolve44(dirPath, linkTarget);
|
|
410170
|
-
currentRealPath = resolvedTarget;
|
|
410171
|
-
} else {
|
|
410172
|
-
currentRealPath = dirPath;
|
|
410173
|
-
}
|
|
410166
|
+
const linkTarget = fs13.readlinkSync(dirPath);
|
|
410167
|
+
const resolvedTarget = resolve44(dirPath, linkTarget);
|
|
410168
|
+
currentRealPath = resolvedTarget;
|
|
410174
410169
|
} catch {
|
|
410175
410170
|
currentRealPath = dirPath;
|
|
410176
410171
|
}
|
|
@@ -410179,6 +410174,11 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410179
410174
|
return "";
|
|
410180
410175
|
}
|
|
410181
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
|
+
}
|
|
410182
410182
|
if (rootRealPath === undefined) {
|
|
410183
410183
|
rootRealPath = currentRealPath;
|
|
410184
410184
|
}
|
|
@@ -410208,7 +410208,9 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410208
410208
|
console.warn(`[getDirectoryFingerprint] Failed to resolve target real path for symlink '${fullPath}': ${err2}`);
|
|
410209
410209
|
targetRealPath = resolvedTarget;
|
|
410210
410210
|
}
|
|
410211
|
-
|
|
410211
|
+
const targetLower = targetRealPath.toLowerCase();
|
|
410212
|
+
const rootLower = rootRealPath.toLowerCase();
|
|
410213
|
+
if (targetLower === rootLower || targetLower.startsWith(rootLower + pathSep2)) {
|
|
410212
410214
|
const stat37 = fs13.statSync(resolvedTarget);
|
|
410213
410215
|
if (stat37.isDirectory()) {
|
|
410214
410216
|
const targetBasename = basename37(resolvedTarget);
|
|
@@ -410217,7 +410219,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410217
410219
|
continue;
|
|
410218
410220
|
}
|
|
410219
410221
|
fingerprintParts.push(entry + "/");
|
|
410220
|
-
fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath));
|
|
410222
|
+
fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath, maxDepth));
|
|
410221
410223
|
} else {
|
|
410222
410224
|
fingerprintParts.push(entry);
|
|
410223
410225
|
}
|
|
@@ -410233,7 +410235,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410233
410235
|
continue;
|
|
410234
410236
|
}
|
|
410235
410237
|
fingerprintParts.push(entry + "/");
|
|
410236
|
-
fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath));
|
|
410238
|
+
fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath, maxDepth));
|
|
410237
410239
|
} else {
|
|
410238
410240
|
fingerprintParts.push(entry);
|
|
410239
410241
|
}
|
|
@@ -487923,7 +487925,7 @@ var init_remember = __esm(() => {
|
|
|
487923
487925
|
// src/skills/bundledSkills.ts
|
|
487924
487926
|
import { constants as fsConstants5 } from "fs";
|
|
487925
487927
|
import { mkdir as mkdir37, open as open14 } from "fs/promises";
|
|
487926
|
-
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";
|
|
487927
487929
|
function registerBundledSkill(definition) {
|
|
487928
487930
|
const { files: files3 } = definition;
|
|
487929
487931
|
let skillRoot;
|
|
@@ -488010,7 +488012,7 @@ async function safeWriteFile(p, content) {
|
|
|
488010
488012
|
}
|
|
488011
488013
|
function resolveSkillFilePath(baseDir, relPath) {
|
|
488012
488014
|
const normalized = normalize13(relPath);
|
|
488013
|
-
if (isAbsolute28(normalized) || normalized.split(
|
|
488015
|
+
if (isAbsolute28(normalized) || normalized.split(pathSep3).includes("..") || normalized.split("/").includes("..")) {
|
|
488014
488016
|
throw new Error(`bundled skill file path escapes skill dir: ${relPath}`);
|
|
488015
488017
|
}
|
|
488016
488018
|
return join133(baseDir, normalized);
|
|
@@ -566637,23 +566639,31 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566637
566639
|
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566638
566640
|
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566639
566641
|
if (hasEnabledServers) {
|
|
566640
|
-
if (Array.isArray(projectConfig.enabledMcpjsonServers)
|
|
566641
|
-
|
|
566642
|
-
|
|
566643
|
-
|
|
566644
|
-
|
|
566645
|
-
|
|
566642
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers)) {
|
|
566643
|
+
if (projectConfig.enabledMcpjsonServers.length === 0) {
|
|
566644
|
+
existingEnabledServers.length = 0;
|
|
566645
|
+
} else {
|
|
566646
|
+
const seen = new Set(existingEnabledServers);
|
|
566647
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566648
|
+
if (!seen.has(server)) {
|
|
566649
|
+
existingEnabledServers.push(server);
|
|
566650
|
+
seen.add(server);
|
|
566651
|
+
}
|
|
566646
566652
|
}
|
|
566647
566653
|
}
|
|
566648
566654
|
}
|
|
566649
566655
|
}
|
|
566650
566656
|
if (hasDisabledServers) {
|
|
566651
|
-
if (Array.isArray(projectConfig.disabledMcpjsonServers)
|
|
566652
|
-
|
|
566653
|
-
|
|
566654
|
-
|
|
566655
|
-
|
|
566656
|
-
|
|
566657
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers)) {
|
|
566658
|
+
if (projectConfig.disabledMcpjsonServers.length === 0) {
|
|
566659
|
+
existingDisabledServers.length = 0;
|
|
566660
|
+
} else {
|
|
566661
|
+
const seen = new Set(existingDisabledServers);
|
|
566662
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566663
|
+
if (!seen.has(server)) {
|
|
566664
|
+
existingDisabledServers.push(server);
|
|
566665
|
+
seen.add(server);
|
|
566666
|
+
}
|
|
566657
566667
|
}
|
|
566658
566668
|
}
|
|
566659
566669
|
}
|
|
@@ -566766,22 +566776,8 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
|
|
|
566766
566776
|
return prev;
|
|
566767
566777
|
if (prev.remoteControlAtStartup !== undefined)
|
|
566768
566778
|
return prev;
|
|
566769
|
-
const newValue = typeof oldValue === "string" ?
|
|
566770
|
-
|
|
566771
|
-
});
|
|
566772
|
-
saveGlobalConfig((prev) => {
|
|
566773
|
-
const oldValue = prev["replBridgeEnabled"];
|
|
566774
|
-
if (oldValue === undefined)
|
|
566775
|
-
return prev;
|
|
566776
|
-
if (prev.remoteControlAtStartup === undefined) {
|
|
566777
|
-
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566778
|
-
return {
|
|
566779
|
-
...prev,
|
|
566780
|
-
remoteControlAtStartup: newValue,
|
|
566781
|
-
replBridgeEnabled: undefined
|
|
566782
|
-
};
|
|
566783
|
-
}
|
|
566784
|
-
const next = { ...prev };
|
|
566779
|
+
const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
|
|
566780
|
+
const next = { ...prev, remoteControlAtStartup: newValue };
|
|
566785
566781
|
delete next.replBridgeEnabled;
|
|
566786
566782
|
return next;
|
|
566787
566783
|
});
|
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.179",
|
|
8
|
+
BUILD_TIME: "2026-08-03T15:19:01.902Z",
|
|
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.179",
|
|
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, basename as basename37 } 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 = [];
|
|
@@ -410163,14 +410163,9 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
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
|
|
410167
|
-
|
|
410168
|
-
|
|
410169
|
-
const resolvedTarget = resolve44(dirPath, linkTarget);
|
|
410170
|
-
currentRealPath = resolvedTarget;
|
|
410171
|
-
} else {
|
|
410172
|
-
currentRealPath = dirPath;
|
|
410173
|
-
}
|
|
410166
|
+
const linkTarget = fs13.readlinkSync(dirPath);
|
|
410167
|
+
const resolvedTarget = resolve44(dirPath, linkTarget);
|
|
410168
|
+
currentRealPath = resolvedTarget;
|
|
410174
410169
|
} catch {
|
|
410175
410170
|
currentRealPath = dirPath;
|
|
410176
410171
|
}
|
|
@@ -410179,6 +410174,11 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410179
410174
|
return "";
|
|
410180
410175
|
}
|
|
410181
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
|
+
}
|
|
410182
410182
|
if (rootRealPath === undefined) {
|
|
410183
410183
|
rootRealPath = currentRealPath;
|
|
410184
410184
|
}
|
|
@@ -410208,7 +410208,9 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410208
410208
|
console.warn(`[getDirectoryFingerprint] Failed to resolve target real path for symlink '${fullPath}': ${err2}`);
|
|
410209
410209
|
targetRealPath = resolvedTarget;
|
|
410210
410210
|
}
|
|
410211
|
-
|
|
410211
|
+
const targetLower = targetRealPath.toLowerCase();
|
|
410212
|
+
const rootLower = rootRealPath.toLowerCase();
|
|
410213
|
+
if (targetLower === rootLower || targetLower.startsWith(rootLower + pathSep2)) {
|
|
410212
410214
|
const stat37 = fs13.statSync(resolvedTarget);
|
|
410213
410215
|
if (stat37.isDirectory()) {
|
|
410214
410216
|
const targetBasename = basename37(resolvedTarget);
|
|
@@ -410217,7 +410219,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410217
410219
|
continue;
|
|
410218
410220
|
}
|
|
410219
410221
|
fingerprintParts.push(entry + "/");
|
|
410220
|
-
fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath));
|
|
410222
|
+
fingerprintParts.push(getDirectoryFingerprint(resolvedTarget, recursionStack, rootRealPath, maxDepth));
|
|
410221
410223
|
} else {
|
|
410222
410224
|
fingerprintParts.push(entry);
|
|
410223
410225
|
}
|
|
@@ -410233,7 +410235,7 @@ function getDirectoryFingerprint(dirPath, recursionStack, rootRealPath) {
|
|
|
410233
410235
|
continue;
|
|
410234
410236
|
}
|
|
410235
410237
|
fingerprintParts.push(entry + "/");
|
|
410236
|
-
fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath));
|
|
410238
|
+
fingerprintParts.push(getDirectoryFingerprint(fullPath, recursionStack, rootRealPath, maxDepth));
|
|
410237
410239
|
} else {
|
|
410238
410240
|
fingerprintParts.push(entry);
|
|
410239
410241
|
}
|
|
@@ -487923,7 +487925,7 @@ var init_remember = __esm(() => {
|
|
|
487923
487925
|
// src/skills/bundledSkills.ts
|
|
487924
487926
|
import { constants as fsConstants5 } from "fs";
|
|
487925
487927
|
import { mkdir as mkdir37, open as open14 } from "fs/promises";
|
|
487926
|
-
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";
|
|
487927
487929
|
function registerBundledSkill(definition) {
|
|
487928
487930
|
const { files: files3 } = definition;
|
|
487929
487931
|
let skillRoot;
|
|
@@ -488010,7 +488012,7 @@ async function safeWriteFile(p, content) {
|
|
|
488010
488012
|
}
|
|
488011
488013
|
function resolveSkillFilePath(baseDir, relPath) {
|
|
488012
488014
|
const normalized = normalize13(relPath);
|
|
488013
|
-
if (isAbsolute28(normalized) || normalized.split(
|
|
488015
|
+
if (isAbsolute28(normalized) || normalized.split(pathSep3).includes("..") || normalized.split("/").includes("..")) {
|
|
488014
488016
|
throw new Error(`bundled skill file path escapes skill dir: ${relPath}`);
|
|
488015
488017
|
}
|
|
488016
488018
|
return join133(baseDir, normalized);
|
|
@@ -566637,23 +566639,31 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566637
566639
|
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566638
566640
|
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566639
566641
|
if (hasEnabledServers) {
|
|
566640
|
-
if (Array.isArray(projectConfig.enabledMcpjsonServers)
|
|
566641
|
-
|
|
566642
|
-
|
|
566643
|
-
|
|
566644
|
-
|
|
566645
|
-
|
|
566642
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers)) {
|
|
566643
|
+
if (projectConfig.enabledMcpjsonServers.length === 0) {
|
|
566644
|
+
existingEnabledServers.length = 0;
|
|
566645
|
+
} else {
|
|
566646
|
+
const seen = new Set(existingEnabledServers);
|
|
566647
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566648
|
+
if (!seen.has(server)) {
|
|
566649
|
+
existingEnabledServers.push(server);
|
|
566650
|
+
seen.add(server);
|
|
566651
|
+
}
|
|
566646
566652
|
}
|
|
566647
566653
|
}
|
|
566648
566654
|
}
|
|
566649
566655
|
}
|
|
566650
566656
|
if (hasDisabledServers) {
|
|
566651
|
-
if (Array.isArray(projectConfig.disabledMcpjsonServers)
|
|
566652
|
-
|
|
566653
|
-
|
|
566654
|
-
|
|
566655
|
-
|
|
566656
|
-
|
|
566657
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers)) {
|
|
566658
|
+
if (projectConfig.disabledMcpjsonServers.length === 0) {
|
|
566659
|
+
existingDisabledServers.length = 0;
|
|
566660
|
+
} else {
|
|
566661
|
+
const seen = new Set(existingDisabledServers);
|
|
566662
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566663
|
+
if (!seen.has(server)) {
|
|
566664
|
+
existingDisabledServers.push(server);
|
|
566665
|
+
seen.add(server);
|
|
566666
|
+
}
|
|
566657
566667
|
}
|
|
566658
566668
|
}
|
|
566659
566669
|
}
|
|
@@ -566766,22 +566776,8 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
|
|
|
566766
566776
|
return prev;
|
|
566767
566777
|
if (prev.remoteControlAtStartup !== undefined)
|
|
566768
566778
|
return prev;
|
|
566769
|
-
const newValue = typeof oldValue === "string" ?
|
|
566770
|
-
|
|
566771
|
-
});
|
|
566772
|
-
saveGlobalConfig((prev) => {
|
|
566773
|
-
const oldValue = prev["replBridgeEnabled"];
|
|
566774
|
-
if (oldValue === undefined)
|
|
566775
|
-
return prev;
|
|
566776
|
-
if (prev.remoteControlAtStartup === undefined) {
|
|
566777
|
-
const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
|
|
566778
|
-
return {
|
|
566779
|
-
...prev,
|
|
566780
|
-
remoteControlAtStartup: newValue,
|
|
566781
|
-
replBridgeEnabled: undefined
|
|
566782
|
-
};
|
|
566783
|
-
}
|
|
566784
|
-
const next = { ...prev };
|
|
566779
|
+
const newValue = typeof oldValue === "string" ? !["false", "0", "no", ""].includes(oldValue.toLowerCase().trim()) : Boolean(oldValue);
|
|
566780
|
+
const next = { ...prev, remoteControlAtStartup: newValue };
|
|
566785
566781
|
delete next.replBridgeEnabled;
|
|
566786
566782
|
return next;
|
|
566787
566783
|
});
|