@funnycode/myclaude 0.1.166 → 0.1.168
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 +112 -132
- package/dist/myclaude.mjs +112 -132
- 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-07-
|
|
7
|
+
VERSION: "0.1.168",
|
|
8
|
+
BUILD_TIME: "2026-07-31T17:52:42.282Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -61328,30 +61328,6 @@ function updateSettingsForSource(source, settings) {
|
|
|
61328
61328
|
}
|
|
61329
61329
|
return { error: null };
|
|
61330
61330
|
}
|
|
61331
|
-
function deleteSettingsField(source, field) {
|
|
61332
|
-
if (source === "policySettings" || source === "flagSettings") {
|
|
61333
|
-
return { error: null };
|
|
61334
|
-
}
|
|
61335
|
-
const filePath = getSettingsFilePathForSource(source);
|
|
61336
|
-
if (!filePath) {
|
|
61337
|
-
return { error: null };
|
|
61338
|
-
}
|
|
61339
|
-
try {
|
|
61340
|
-
getFsImplementation().mkdirSync(dirname13(filePath));
|
|
61341
|
-
let existingSettings = getSettingsForSourceUncached(source);
|
|
61342
|
-
if (!existingSettings) {
|
|
61343
|
-
return { error: null };
|
|
61344
|
-
}
|
|
61345
|
-
delete existingSettings[field];
|
|
61346
|
-
writeFileSyncAndFlush_DEPRECATED(filePath, jsonStringify(existingSettings));
|
|
61347
|
-
resetSettingsCache();
|
|
61348
|
-
return { error: null };
|
|
61349
|
-
} catch (e) {
|
|
61350
|
-
const error49 = new Error(`Failed to delete field ${field} from settings source ${source}: ${e}`);
|
|
61351
|
-
logError2(error49);
|
|
61352
|
-
return { error: error49 };
|
|
61353
|
-
}
|
|
61354
|
-
}
|
|
61355
61331
|
function mergeArrays(targetArray, sourceArray) {
|
|
61356
61332
|
return uniq([...targetArray, ...sourceArray]);
|
|
61357
61333
|
}
|
|
@@ -119971,7 +119947,7 @@ var package_default;
|
|
|
119971
119947
|
var init_package = __esm(() => {
|
|
119972
119948
|
package_default = {
|
|
119973
119949
|
name: "@funnycode/myclaude",
|
|
119974
|
-
version: "0.1.
|
|
119950
|
+
version: "0.1.168",
|
|
119975
119951
|
private: false,
|
|
119976
119952
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
119977
119953
|
license: "MIT",
|
|
@@ -275761,7 +275737,12 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275761
275737
|
}
|
|
275762
275738
|
function resolve26(baseURI, relativeURI, options) {
|
|
275763
275739
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
275764
|
-
const
|
|
275740
|
+
const { parsed: baseParsed, malformedAuthorityOrPort: baseMalformed } = parseWithStatus(baseURI, schemelessOptions);
|
|
275741
|
+
const { parsed: relativeParsed, malformedAuthorityOrPort: relativeMalformed } = parseWithStatus(relativeURI, schemelessOptions);
|
|
275742
|
+
if (baseMalformed || relativeMalformed) {
|
|
275743
|
+
throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
|
|
275744
|
+
}
|
|
275745
|
+
const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
|
|
275765
275746
|
schemelessOptions.skipEscape = true;
|
|
275766
275747
|
return serialize2(resolved, schemelessOptions);
|
|
275767
275748
|
}
|
|
@@ -275888,6 +275869,7 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275888
275869
|
}
|
|
275889
275870
|
var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
|
|
275890
275871
|
var AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/;
|
|
275872
|
+
var AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;
|
|
275891
275873
|
function getParseError2(parsed, matches) {
|
|
275892
275874
|
if (matches[2] !== undefined && parsed.path && parsed.path[0] !== "/") {
|
|
275893
275875
|
return 'URI path must start with "/" when authority is present.';
|
|
@@ -275922,6 +275904,20 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275922
275904
|
parsed.error = "URI authority must not contain a literal backslash.";
|
|
275923
275905
|
malformedAuthorityOrPort = true;
|
|
275924
275906
|
}
|
|
275907
|
+
const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION);
|
|
275908
|
+
if (introducerMatch !== null) {
|
|
275909
|
+
const region = introducerMatch[1];
|
|
275910
|
+
const normalizedRegion = region.replace(/[\t\n\r]/g, "");
|
|
275911
|
+
if (normalizedRegion.length >= 2) {
|
|
275912
|
+
if (normalizedRegion.slice(0, 2) !== "//") {
|
|
275913
|
+
parsed.error = parsed.error || "URI authority must not contain a literal backslash.";
|
|
275914
|
+
malformedAuthorityOrPort = true;
|
|
275915
|
+
} else if (region.length !== normalizedRegion.length) {
|
|
275916
|
+
parsed.error = parsed.error || "URI authority introducer must not contain whitespace.";
|
|
275917
|
+
malformedAuthorityOrPort = true;
|
|
275918
|
+
}
|
|
275919
|
+
}
|
|
275920
|
+
}
|
|
275925
275921
|
const matches = uri.match(URI_PARSE);
|
|
275926
275922
|
if (matches) {
|
|
275927
275923
|
parsed.scheme = matches[1];
|
|
@@ -410155,20 +410151,32 @@ function isInputModeCharacter(input) {
|
|
|
410155
410151
|
import { join as join105 } from "path";
|
|
410156
410152
|
function getDirectoryFingerprint(dirPath) {
|
|
410157
410153
|
const fs13 = getFsImplementation();
|
|
410158
|
-
|
|
410154
|
+
let entries;
|
|
410155
|
+
try {
|
|
410156
|
+
entries = fs13.readdirSync(dirPath).map((dirent) => dirent.name);
|
|
410157
|
+
} catch {
|
|
410158
|
+
return "";
|
|
410159
|
+
}
|
|
410159
410160
|
const sortedEntries = entries.sort();
|
|
410160
410161
|
const fingerprintParts = [];
|
|
410161
410162
|
for (const entry of sortedEntries) {
|
|
410162
410163
|
const fullPath = join105(dirPath, entry);
|
|
410163
|
-
|
|
410164
|
-
|
|
410165
|
-
if (
|
|
410164
|
+
try {
|
|
410165
|
+
const lstat7 = fs13.lstatSync(fullPath);
|
|
410166
|
+
if (lstat7.isSymbolicLink()) {
|
|
410166
410167
|
continue;
|
|
410167
410168
|
}
|
|
410168
|
-
|
|
410169
|
-
|
|
410170
|
-
|
|
410171
|
-
|
|
410169
|
+
if (lstat7.isDirectory()) {
|
|
410170
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist" || entry === "build" || entry === ".next" || entry === "out" || entry === "coverage") {
|
|
410171
|
+
continue;
|
|
410172
|
+
}
|
|
410173
|
+
fingerprintParts.push(entry + "/");
|
|
410174
|
+
fingerprintParts.push(getDirectoryFingerprint(fullPath));
|
|
410175
|
+
} else {
|
|
410176
|
+
fingerprintParts.push(entry);
|
|
410177
|
+
}
|
|
410178
|
+
} catch {
|
|
410179
|
+
continue;
|
|
410172
410180
|
}
|
|
410173
410181
|
}
|
|
410174
410182
|
return fingerprintParts.join(`
|
|
@@ -410178,6 +410186,7 @@ function clearCachedSteps() {
|
|
|
410178
410186
|
cachedSteps = null;
|
|
410179
410187
|
cachedClaudeMdMtime = -1;
|
|
410180
410188
|
cachedDirFingerprint = "";
|
|
410189
|
+
cachedRootMtime = -1;
|
|
410181
410190
|
cachedAt = null;
|
|
410182
410191
|
}
|
|
410183
410192
|
function isCacheValid() {
|
|
@@ -410194,12 +410203,17 @@ function isCacheValid() {
|
|
|
410194
410203
|
return false;
|
|
410195
410204
|
}
|
|
410196
410205
|
try {
|
|
410197
|
-
const
|
|
410198
|
-
if (
|
|
410206
|
+
const currentRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410207
|
+
if (currentRootMtime !== cachedRootMtime) {
|
|
410199
410208
|
return false;
|
|
410209
|
+
}
|
|
410200
410210
|
} catch {
|
|
410201
410211
|
return false;
|
|
410202
410212
|
}
|
|
410213
|
+
const currentDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410214
|
+
if (currentDirFingerprint !== cachedDirFingerprint) {
|
|
410215
|
+
return false;
|
|
410216
|
+
}
|
|
410203
410217
|
if (cachedAt !== null && Date.now() - cachedAt > CACHE_MAX_AGE_MS) {
|
|
410204
410218
|
return false;
|
|
410205
410219
|
}
|
|
@@ -410219,6 +410233,11 @@ function getSteps() {
|
|
|
410219
410233
|
} catch {
|
|
410220
410234
|
cachedClaudeMdMtime = -1;
|
|
410221
410235
|
}
|
|
410236
|
+
try {
|
|
410237
|
+
cachedRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410238
|
+
} catch {
|
|
410239
|
+
cachedRootMtime = -1;
|
|
410240
|
+
}
|
|
410222
410241
|
try {
|
|
410223
410242
|
cachedDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410224
410243
|
} catch {
|
|
@@ -410270,7 +410289,7 @@ function incrementProjectOnboardingSeenCount() {
|
|
|
410270
410289
|
projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
|
|
410271
410290
|
}));
|
|
410272
410291
|
}
|
|
410273
|
-
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410292
|
+
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedRootMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410274
410293
|
var init_projectOnboardingState = __esm(() => {
|
|
410275
410294
|
init_config();
|
|
410276
410295
|
init_cwd2();
|
|
@@ -566543,110 +566562,71 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566543
566562
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566544
566563
|
return;
|
|
566545
566564
|
}
|
|
566546
|
-
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566547
|
-
const originalProjectConfig = { ...projectConfig };
|
|
566548
|
-
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566549
|
-
const migratedFields = [];
|
|
566550
566565
|
const updates = {};
|
|
566551
|
-
|
|
566552
|
-
|
|
566553
|
-
|
|
566554
|
-
|
|
566555
|
-
|
|
566556
|
-
|
|
566557
|
-
|
|
566558
|
-
|
|
566559
|
-
|
|
566560
|
-
|
|
566561
|
-
|
|
566562
|
-
|
|
566563
|
-
|
|
566564
|
-
existingEnabledServers.push(server);
|
|
566565
|
-
seen.add(server);
|
|
566566
|
-
}
|
|
566566
|
+
const existingSettings = getSettingsForSource("localSettings") || {};
|
|
566567
|
+
if (hasEnableAll) {
|
|
566568
|
+
updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
|
|
566569
|
+
}
|
|
566570
|
+
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566571
|
+
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566572
|
+
if (hasEnabledServers) {
|
|
566573
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers) && projectConfig.enabledMcpjsonServers.length > 0) {
|
|
566574
|
+
const seen = new Set(existingEnabledServers);
|
|
566575
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566576
|
+
if (!seen.has(server)) {
|
|
566577
|
+
existingEnabledServers.push(server);
|
|
566578
|
+
seen.add(server);
|
|
566567
566579
|
}
|
|
566568
566580
|
}
|
|
566569
|
-
migratedFields.push("enabledMcpjsonServers");
|
|
566570
566581
|
}
|
|
566571
|
-
|
|
566572
|
-
|
|
566573
|
-
|
|
566574
|
-
|
|
566575
|
-
|
|
566576
|
-
|
|
566577
|
-
|
|
566578
|
-
|
|
566582
|
+
}
|
|
566583
|
+
if (hasDisabledServers) {
|
|
566584
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
|
|
566585
|
+
const seen = new Set(existingDisabledServers);
|
|
566586
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566587
|
+
if (!seen.has(server)) {
|
|
566588
|
+
existingDisabledServers.push(server);
|
|
566589
|
+
seen.add(server);
|
|
566579
566590
|
}
|
|
566580
566591
|
}
|
|
566581
|
-
migratedFields.push("disabledMcpjsonServers");
|
|
566582
566592
|
}
|
|
566583
|
-
|
|
566584
|
-
|
|
566585
|
-
|
|
566586
|
-
|
|
566587
|
-
|
|
566588
|
-
|
|
566589
|
-
updates.disabledMcpjsonServers = existingDisabledServers.filter((server) => !overlappingServers.includes(server));
|
|
566590
|
-
} else {
|
|
566591
|
-
updates.disabledMcpjsonServers = existingDisabledServers;
|
|
566592
|
-
}
|
|
566593
|
-
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566594
|
-
saveCurrentProjectConfig((config5) => {
|
|
566595
|
-
const updated = { ...config5 };
|
|
566596
|
-
for (const field of migratedFields) {
|
|
566597
|
-
delete updated[field];
|
|
566598
|
-
}
|
|
566599
|
-
return updated;
|
|
566593
|
+
}
|
|
566594
|
+
const overlappingServers = existingEnabledServers.filter((server) => existingDisabledServers.includes(server));
|
|
566595
|
+
if (overlappingServers.length > 0) {
|
|
566596
|
+
logEvent("tengu_migrate_mcp_server_conflict_resolved", {
|
|
566597
|
+
overlappingServers: overlappingServers.join(","),
|
|
566598
|
+
conflictResolution: "removed_from_disabled"
|
|
566600
566599
|
});
|
|
566601
|
-
|
|
566602
|
-
|
|
566603
|
-
|
|
566604
|
-
|
|
566605
|
-
|
|
566606
|
-
|
|
566600
|
+
}
|
|
566601
|
+
const finalDisabledServers = existingDisabledServers.filter((server) => !existingEnabledServers.includes(server));
|
|
566602
|
+
if (hasEnabledServers) {
|
|
566603
|
+
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566604
|
+
}
|
|
566605
|
+
if (hasDisabledServers || existingSettings.disabledMcpjsonServers !== undefined) {
|
|
566606
|
+
updates.disabledMcpjsonServers = finalDisabledServers;
|
|
566607
|
+
}
|
|
566608
|
+
try {
|
|
566607
566609
|
updateSettingsForSource("localSettings", updates);
|
|
566608
|
-
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566609
|
-
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566610
|
-
migration: "enableAllProjectMcpServersToSettings",
|
|
566611
|
-
fieldsMigrated: migratedFields.join(",")
|
|
566612
|
-
});
|
|
566613
566610
|
} catch (error49) {
|
|
566614
|
-
logError2(
|
|
566615
|
-
|
|
566616
|
-
try {
|
|
566617
|
-
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566618
|
-
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566619
|
-
if (currentSettingsHash !== originalSettingsHash) {
|
|
566620
|
-
logError2("MIGRATION WARNING: Settings file was modified concurrently. " + "The rollback will abort to prevent data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566621
|
-
throw new Error("Rollback aborted due to concurrent changes to settings file. " + "Please ensure no other processes are modifying the settings file.");
|
|
566622
|
-
}
|
|
566623
|
-
const rollbackUpdates = {};
|
|
566624
|
-
for (const field of migratedFields) {
|
|
566625
|
-
if (field in originalSettings) {
|
|
566626
|
-
rollbackUpdates[field] = originalSettings[field];
|
|
566627
|
-
} else {
|
|
566628
|
-
deleteSettingsField("localSettings", field);
|
|
566629
|
-
}
|
|
566630
|
-
}
|
|
566631
|
-
updateSettingsForSource("localSettings", rollbackUpdates);
|
|
566632
|
-
saveCurrentProjectConfig((config5) => {
|
|
566633
|
-
const updated = { ...config5 };
|
|
566634
|
-
for (const field of migratedFields) {
|
|
566635
|
-
if (field in originalProjectConfig) {
|
|
566636
|
-
updated[field] = originalProjectConfig[field];
|
|
566637
|
-
}
|
|
566638
|
-
}
|
|
566639
|
-
return updated;
|
|
566640
|
-
});
|
|
566641
|
-
} catch (rollbackError) {
|
|
566642
|
-
logError2("Rollback of settings failed", rollbackError);
|
|
566643
|
-
rollbackFailed = true;
|
|
566644
|
-
}
|
|
566645
|
-
if (rollbackFailed) {
|
|
566646
|
-
logError2("Migration failed and rollback was incomplete. " + "The settings file may be in an inconsistent state. " + "Please check the settings file manually.");
|
|
566647
|
-
throw error49;
|
|
566648
|
-
}
|
|
566611
|
+
logError2(new Error(`Failed to migrate MCP server settings to local config: ${error49}`));
|
|
566612
|
+
throw error49;
|
|
566649
566613
|
}
|
|
566614
|
+
saveCurrentProjectConfig((config5) => {
|
|
566615
|
+
const updated = { ...config5 };
|
|
566616
|
+
delete updated.enableAllProjectMcpServers;
|
|
566617
|
+
delete updated.enabledMcpjsonServers;
|
|
566618
|
+
delete updated.disabledMcpjsonServers;
|
|
566619
|
+
return updated;
|
|
566620
|
+
});
|
|
566621
|
+
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566622
|
+
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566623
|
+
migration: "enableAllProjectMcpServersToSettings",
|
|
566624
|
+
fieldsMigrated: [
|
|
566625
|
+
hasEnableAll && "enableAllProjectMcpServers",
|
|
566626
|
+
hasEnabledServers && "enabledMcpjsonServers",
|
|
566627
|
+
hasDisabledServers && "disabledMcpjsonServers"
|
|
566628
|
+
].filter(Boolean).join(",")
|
|
566629
|
+
});
|
|
566650
566630
|
}
|
|
566651
566631
|
var init_migrateEnableAllProjectMcpServersToSettings = __esm(() => {
|
|
566652
566632
|
init_analytics();
|
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-07-
|
|
7
|
+
VERSION: "0.1.168",
|
|
8
|
+
BUILD_TIME: "2026-07-31T17:52:42.282Z",
|
|
9
9
|
PACKAGE_URL: "@funnycode/myclaude",
|
|
10
10
|
NATIVE_PACKAGE_URL: "@funnycode/myclaude",
|
|
11
11
|
VERSION_CHANGELOG: '',
|
|
@@ -61328,30 +61328,6 @@ function updateSettingsForSource(source, settings) {
|
|
|
61328
61328
|
}
|
|
61329
61329
|
return { error: null };
|
|
61330
61330
|
}
|
|
61331
|
-
function deleteSettingsField(source, field) {
|
|
61332
|
-
if (source === "policySettings" || source === "flagSettings") {
|
|
61333
|
-
return { error: null };
|
|
61334
|
-
}
|
|
61335
|
-
const filePath = getSettingsFilePathForSource(source);
|
|
61336
|
-
if (!filePath) {
|
|
61337
|
-
return { error: null };
|
|
61338
|
-
}
|
|
61339
|
-
try {
|
|
61340
|
-
getFsImplementation().mkdirSync(dirname13(filePath));
|
|
61341
|
-
let existingSettings = getSettingsForSourceUncached(source);
|
|
61342
|
-
if (!existingSettings) {
|
|
61343
|
-
return { error: null };
|
|
61344
|
-
}
|
|
61345
|
-
delete existingSettings[field];
|
|
61346
|
-
writeFileSyncAndFlush_DEPRECATED(filePath, jsonStringify(existingSettings));
|
|
61347
|
-
resetSettingsCache();
|
|
61348
|
-
return { error: null };
|
|
61349
|
-
} catch (e) {
|
|
61350
|
-
const error49 = new Error(`Failed to delete field ${field} from settings source ${source}: ${e}`);
|
|
61351
|
-
logError2(error49);
|
|
61352
|
-
return { error: error49 };
|
|
61353
|
-
}
|
|
61354
|
-
}
|
|
61355
61331
|
function mergeArrays(targetArray, sourceArray) {
|
|
61356
61332
|
return uniq([...targetArray, ...sourceArray]);
|
|
61357
61333
|
}
|
|
@@ -119971,7 +119947,7 @@ var package_default;
|
|
|
119971
119947
|
var init_package = __esm(() => {
|
|
119972
119948
|
package_default = {
|
|
119973
119949
|
name: "@funnycode/myclaude",
|
|
119974
|
-
version: "0.1.
|
|
119950
|
+
version: "0.1.168",
|
|
119975
119951
|
private: false,
|
|
119976
119952
|
description: "An open-source AI coding assistant in your terminal - powered by Claude",
|
|
119977
119953
|
license: "MIT",
|
|
@@ -275761,7 +275737,12 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275761
275737
|
}
|
|
275762
275738
|
function resolve26(baseURI, relativeURI, options) {
|
|
275763
275739
|
const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
|
|
275764
|
-
const
|
|
275740
|
+
const { parsed: baseParsed, malformedAuthorityOrPort: baseMalformed } = parseWithStatus(baseURI, schemelessOptions);
|
|
275741
|
+
const { parsed: relativeParsed, malformedAuthorityOrPort: relativeMalformed } = parseWithStatus(relativeURI, schemelessOptions);
|
|
275742
|
+
if (baseMalformed || relativeMalformed) {
|
|
275743
|
+
throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
|
|
275744
|
+
}
|
|
275745
|
+
const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
|
|
275765
275746
|
schemelessOptions.skipEscape = true;
|
|
275766
275747
|
return serialize2(resolved, schemelessOptions);
|
|
275767
275748
|
}
|
|
@@ -275888,6 +275869,7 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275888
275869
|
}
|
|
275889
275870
|
var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
|
|
275890
275871
|
var AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/;
|
|
275872
|
+
var AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;
|
|
275891
275873
|
function getParseError2(parsed, matches) {
|
|
275892
275874
|
if (matches[2] !== undefined && parsed.path && parsed.path[0] !== "/") {
|
|
275893
275875
|
return 'URI path must start with "/" when authority is present.';
|
|
@@ -275922,6 +275904,20 @@ var require_fast_uri = __commonJS((exports, module) => {
|
|
|
275922
275904
|
parsed.error = "URI authority must not contain a literal backslash.";
|
|
275923
275905
|
malformedAuthorityOrPort = true;
|
|
275924
275906
|
}
|
|
275907
|
+
const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION);
|
|
275908
|
+
if (introducerMatch !== null) {
|
|
275909
|
+
const region = introducerMatch[1];
|
|
275910
|
+
const normalizedRegion = region.replace(/[\t\n\r]/g, "");
|
|
275911
|
+
if (normalizedRegion.length >= 2) {
|
|
275912
|
+
if (normalizedRegion.slice(0, 2) !== "//") {
|
|
275913
|
+
parsed.error = parsed.error || "URI authority must not contain a literal backslash.";
|
|
275914
|
+
malformedAuthorityOrPort = true;
|
|
275915
|
+
} else if (region.length !== normalizedRegion.length) {
|
|
275916
|
+
parsed.error = parsed.error || "URI authority introducer must not contain whitespace.";
|
|
275917
|
+
malformedAuthorityOrPort = true;
|
|
275918
|
+
}
|
|
275919
|
+
}
|
|
275920
|
+
}
|
|
275925
275921
|
const matches = uri.match(URI_PARSE);
|
|
275926
275922
|
if (matches) {
|
|
275927
275923
|
parsed.scheme = matches[1];
|
|
@@ -410155,20 +410151,32 @@ function isInputModeCharacter(input) {
|
|
|
410155
410151
|
import { join as join105 } from "path";
|
|
410156
410152
|
function getDirectoryFingerprint(dirPath) {
|
|
410157
410153
|
const fs13 = getFsImplementation();
|
|
410158
|
-
|
|
410154
|
+
let entries;
|
|
410155
|
+
try {
|
|
410156
|
+
entries = fs13.readdirSync(dirPath).map((dirent) => dirent.name);
|
|
410157
|
+
} catch {
|
|
410158
|
+
return "";
|
|
410159
|
+
}
|
|
410159
410160
|
const sortedEntries = entries.sort();
|
|
410160
410161
|
const fingerprintParts = [];
|
|
410161
410162
|
for (const entry of sortedEntries) {
|
|
410162
410163
|
const fullPath = join105(dirPath, entry);
|
|
410163
|
-
|
|
410164
|
-
|
|
410165
|
-
if (
|
|
410164
|
+
try {
|
|
410165
|
+
const lstat7 = fs13.lstatSync(fullPath);
|
|
410166
|
+
if (lstat7.isSymbolicLink()) {
|
|
410166
410167
|
continue;
|
|
410167
410168
|
}
|
|
410168
|
-
|
|
410169
|
-
|
|
410170
|
-
|
|
410171
|
-
|
|
410169
|
+
if (lstat7.isDirectory()) {
|
|
410170
|
+
if (entry === "node_modules" || entry === ".git" || entry === "dist" || entry === "build" || entry === ".next" || entry === "out" || entry === "coverage") {
|
|
410171
|
+
continue;
|
|
410172
|
+
}
|
|
410173
|
+
fingerprintParts.push(entry + "/");
|
|
410174
|
+
fingerprintParts.push(getDirectoryFingerprint(fullPath));
|
|
410175
|
+
} else {
|
|
410176
|
+
fingerprintParts.push(entry);
|
|
410177
|
+
}
|
|
410178
|
+
} catch {
|
|
410179
|
+
continue;
|
|
410172
410180
|
}
|
|
410173
410181
|
}
|
|
410174
410182
|
return fingerprintParts.join(`
|
|
@@ -410178,6 +410186,7 @@ function clearCachedSteps() {
|
|
|
410178
410186
|
cachedSteps = null;
|
|
410179
410187
|
cachedClaudeMdMtime = -1;
|
|
410180
410188
|
cachedDirFingerprint = "";
|
|
410189
|
+
cachedRootMtime = -1;
|
|
410181
410190
|
cachedAt = null;
|
|
410182
410191
|
}
|
|
410183
410192
|
function isCacheValid() {
|
|
@@ -410194,12 +410203,17 @@ function isCacheValid() {
|
|
|
410194
410203
|
return false;
|
|
410195
410204
|
}
|
|
410196
410205
|
try {
|
|
410197
|
-
const
|
|
410198
|
-
if (
|
|
410206
|
+
const currentRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410207
|
+
if (currentRootMtime !== cachedRootMtime) {
|
|
410199
410208
|
return false;
|
|
410209
|
+
}
|
|
410200
410210
|
} catch {
|
|
410201
410211
|
return false;
|
|
410202
410212
|
}
|
|
410213
|
+
const currentDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410214
|
+
if (currentDirFingerprint !== cachedDirFingerprint) {
|
|
410215
|
+
return false;
|
|
410216
|
+
}
|
|
410203
410217
|
if (cachedAt !== null && Date.now() - cachedAt > CACHE_MAX_AGE_MS) {
|
|
410204
410218
|
return false;
|
|
410205
410219
|
}
|
|
@@ -410219,6 +410233,11 @@ function getSteps() {
|
|
|
410219
410233
|
} catch {
|
|
410220
410234
|
cachedClaudeMdMtime = -1;
|
|
410221
410235
|
}
|
|
410236
|
+
try {
|
|
410237
|
+
cachedRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410238
|
+
} catch {
|
|
410239
|
+
cachedRootMtime = -1;
|
|
410240
|
+
}
|
|
410222
410241
|
try {
|
|
410223
410242
|
cachedDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410224
410243
|
} catch {
|
|
@@ -410270,7 +410289,7 @@ function incrementProjectOnboardingSeenCount() {
|
|
|
410270
410289
|
projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
|
|
410271
410290
|
}));
|
|
410272
410291
|
}
|
|
410273
|
-
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410292
|
+
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedRootMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410274
410293
|
var init_projectOnboardingState = __esm(() => {
|
|
410275
410294
|
init_config();
|
|
410276
410295
|
init_cwd2();
|
|
@@ -566543,110 +566562,71 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566543
566562
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566544
566563
|
return;
|
|
566545
566564
|
}
|
|
566546
|
-
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566547
|
-
const originalProjectConfig = { ...projectConfig };
|
|
566548
|
-
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566549
|
-
const migratedFields = [];
|
|
566550
566565
|
const updates = {};
|
|
566551
|
-
|
|
566552
|
-
|
|
566553
|
-
|
|
566554
|
-
|
|
566555
|
-
|
|
566556
|
-
|
|
566557
|
-
|
|
566558
|
-
|
|
566559
|
-
|
|
566560
|
-
|
|
566561
|
-
|
|
566562
|
-
|
|
566563
|
-
|
|
566564
|
-
existingEnabledServers.push(server);
|
|
566565
|
-
seen.add(server);
|
|
566566
|
-
}
|
|
566566
|
+
const existingSettings = getSettingsForSource("localSettings") || {};
|
|
566567
|
+
if (hasEnableAll) {
|
|
566568
|
+
updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
|
|
566569
|
+
}
|
|
566570
|
+
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566571
|
+
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566572
|
+
if (hasEnabledServers) {
|
|
566573
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers) && projectConfig.enabledMcpjsonServers.length > 0) {
|
|
566574
|
+
const seen = new Set(existingEnabledServers);
|
|
566575
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566576
|
+
if (!seen.has(server)) {
|
|
566577
|
+
existingEnabledServers.push(server);
|
|
566578
|
+
seen.add(server);
|
|
566567
566579
|
}
|
|
566568
566580
|
}
|
|
566569
|
-
migratedFields.push("enabledMcpjsonServers");
|
|
566570
566581
|
}
|
|
566571
|
-
|
|
566572
|
-
|
|
566573
|
-
|
|
566574
|
-
|
|
566575
|
-
|
|
566576
|
-
|
|
566577
|
-
|
|
566578
|
-
|
|
566582
|
+
}
|
|
566583
|
+
if (hasDisabledServers) {
|
|
566584
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
|
|
566585
|
+
const seen = new Set(existingDisabledServers);
|
|
566586
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566587
|
+
if (!seen.has(server)) {
|
|
566588
|
+
existingDisabledServers.push(server);
|
|
566589
|
+
seen.add(server);
|
|
566579
566590
|
}
|
|
566580
566591
|
}
|
|
566581
|
-
migratedFields.push("disabledMcpjsonServers");
|
|
566582
566592
|
}
|
|
566583
|
-
|
|
566584
|
-
|
|
566585
|
-
|
|
566586
|
-
|
|
566587
|
-
|
|
566588
|
-
|
|
566589
|
-
updates.disabledMcpjsonServers = existingDisabledServers.filter((server) => !overlappingServers.includes(server));
|
|
566590
|
-
} else {
|
|
566591
|
-
updates.disabledMcpjsonServers = existingDisabledServers;
|
|
566592
|
-
}
|
|
566593
|
-
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566594
|
-
saveCurrentProjectConfig((config5) => {
|
|
566595
|
-
const updated = { ...config5 };
|
|
566596
|
-
for (const field of migratedFields) {
|
|
566597
|
-
delete updated[field];
|
|
566598
|
-
}
|
|
566599
|
-
return updated;
|
|
566593
|
+
}
|
|
566594
|
+
const overlappingServers = existingEnabledServers.filter((server) => existingDisabledServers.includes(server));
|
|
566595
|
+
if (overlappingServers.length > 0) {
|
|
566596
|
+
logEvent("tengu_migrate_mcp_server_conflict_resolved", {
|
|
566597
|
+
overlappingServers: overlappingServers.join(","),
|
|
566598
|
+
conflictResolution: "removed_from_disabled"
|
|
566600
566599
|
});
|
|
566601
|
-
|
|
566602
|
-
|
|
566603
|
-
|
|
566604
|
-
|
|
566605
|
-
|
|
566606
|
-
|
|
566600
|
+
}
|
|
566601
|
+
const finalDisabledServers = existingDisabledServers.filter((server) => !existingEnabledServers.includes(server));
|
|
566602
|
+
if (hasEnabledServers) {
|
|
566603
|
+
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566604
|
+
}
|
|
566605
|
+
if (hasDisabledServers || existingSettings.disabledMcpjsonServers !== undefined) {
|
|
566606
|
+
updates.disabledMcpjsonServers = finalDisabledServers;
|
|
566607
|
+
}
|
|
566608
|
+
try {
|
|
566607
566609
|
updateSettingsForSource("localSettings", updates);
|
|
566608
|
-
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566609
|
-
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566610
|
-
migration: "enableAllProjectMcpServersToSettings",
|
|
566611
|
-
fieldsMigrated: migratedFields.join(",")
|
|
566612
|
-
});
|
|
566613
566610
|
} catch (error49) {
|
|
566614
|
-
logError2(
|
|
566615
|
-
|
|
566616
|
-
try {
|
|
566617
|
-
const currentSettings = getSettingsForSource("localSettings") || {};
|
|
566618
|
-
const currentSettingsHash = JSON.stringify(currentSettings);
|
|
566619
|
-
if (currentSettingsHash !== originalSettingsHash) {
|
|
566620
|
-
logError2("MIGRATION WARNING: Settings file was modified concurrently. " + "The rollback will abort to prevent data loss. " + "Original settings hash: " + originalSettingsHash + ", Current settings hash: " + currentSettingsHash);
|
|
566621
|
-
throw new Error("Rollback aborted due to concurrent changes to settings file. " + "Please ensure no other processes are modifying the settings file.");
|
|
566622
|
-
}
|
|
566623
|
-
const rollbackUpdates = {};
|
|
566624
|
-
for (const field of migratedFields) {
|
|
566625
|
-
if (field in originalSettings) {
|
|
566626
|
-
rollbackUpdates[field] = originalSettings[field];
|
|
566627
|
-
} else {
|
|
566628
|
-
deleteSettingsField("localSettings", field);
|
|
566629
|
-
}
|
|
566630
|
-
}
|
|
566631
|
-
updateSettingsForSource("localSettings", rollbackUpdates);
|
|
566632
|
-
saveCurrentProjectConfig((config5) => {
|
|
566633
|
-
const updated = { ...config5 };
|
|
566634
|
-
for (const field of migratedFields) {
|
|
566635
|
-
if (field in originalProjectConfig) {
|
|
566636
|
-
updated[field] = originalProjectConfig[field];
|
|
566637
|
-
}
|
|
566638
|
-
}
|
|
566639
|
-
return updated;
|
|
566640
|
-
});
|
|
566641
|
-
} catch (rollbackError) {
|
|
566642
|
-
logError2("Rollback of settings failed", rollbackError);
|
|
566643
|
-
rollbackFailed = true;
|
|
566644
|
-
}
|
|
566645
|
-
if (rollbackFailed) {
|
|
566646
|
-
logError2("Migration failed and rollback was incomplete. " + "The settings file may be in an inconsistent state. " + "Please check the settings file manually.");
|
|
566647
|
-
throw error49;
|
|
566648
|
-
}
|
|
566611
|
+
logError2(new Error(`Failed to migrate MCP server settings to local config: ${error49}`));
|
|
566612
|
+
throw error49;
|
|
566649
566613
|
}
|
|
566614
|
+
saveCurrentProjectConfig((config5) => {
|
|
566615
|
+
const updated = { ...config5 };
|
|
566616
|
+
delete updated.enableAllProjectMcpServers;
|
|
566617
|
+
delete updated.enabledMcpjsonServers;
|
|
566618
|
+
delete updated.disabledMcpjsonServers;
|
|
566619
|
+
return updated;
|
|
566620
|
+
});
|
|
566621
|
+
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566622
|
+
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566623
|
+
migration: "enableAllProjectMcpServersToSettings",
|
|
566624
|
+
fieldsMigrated: [
|
|
566625
|
+
hasEnableAll && "enableAllProjectMcpServers",
|
|
566626
|
+
hasEnabledServers && "enabledMcpjsonServers",
|
|
566627
|
+
hasDisabledServers && "disabledMcpjsonServers"
|
|
566628
|
+
].filter(Boolean).join(",")
|
|
566629
|
+
});
|
|
566650
566630
|
}
|
|
566651
566631
|
var init_migrateEnableAllProjectMcpServersToSettings = __esm(() => {
|
|
566652
566632
|
init_analytics();
|