@funnycode/myclaude 0.1.166 → 0.1.167
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 +108 -132
- package/dist/myclaude.mjs +108 -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.167",
|
|
8
|
+
BUILD_TIME: "2026-07-31T15:47:37.502Z",
|
|
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.167",
|
|
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.readdirStringSync(dirPath);
|
|
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,9 +410203,10 @@ 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
|
}
|
|
@@ -410219,6 +410229,11 @@ function getSteps() {
|
|
|
410219
410229
|
} catch {
|
|
410220
410230
|
cachedClaudeMdMtime = -1;
|
|
410221
410231
|
}
|
|
410232
|
+
try {
|
|
410233
|
+
cachedRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410234
|
+
} catch {
|
|
410235
|
+
cachedRootMtime = -1;
|
|
410236
|
+
}
|
|
410222
410237
|
try {
|
|
410223
410238
|
cachedDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410224
410239
|
} catch {
|
|
@@ -410270,7 +410285,7 @@ function incrementProjectOnboardingSeenCount() {
|
|
|
410270
410285
|
projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
|
|
410271
410286
|
}));
|
|
410272
410287
|
}
|
|
410273
|
-
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410288
|
+
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedRootMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410274
410289
|
var init_projectOnboardingState = __esm(() => {
|
|
410275
410290
|
init_config();
|
|
410276
410291
|
init_cwd2();
|
|
@@ -566543,110 +566558,71 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566543
566558
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566544
566559
|
return;
|
|
566545
566560
|
}
|
|
566546
|
-
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566547
|
-
const originalProjectConfig = { ...projectConfig };
|
|
566548
|
-
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566549
|
-
const migratedFields = [];
|
|
566550
566561
|
const updates = {};
|
|
566551
|
-
|
|
566552
|
-
|
|
566553
|
-
|
|
566554
|
-
|
|
566555
|
-
|
|
566556
|
-
|
|
566557
|
-
|
|
566558
|
-
|
|
566559
|
-
|
|
566560
|
-
|
|
566561
|
-
|
|
566562
|
-
|
|
566563
|
-
|
|
566564
|
-
existingEnabledServers.push(server);
|
|
566565
|
-
seen.add(server);
|
|
566566
|
-
}
|
|
566562
|
+
const existingSettings = getSettingsForSource("localSettings") || {};
|
|
566563
|
+
if (hasEnableAll) {
|
|
566564
|
+
updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
|
|
566565
|
+
}
|
|
566566
|
+
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566567
|
+
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566568
|
+
if (hasEnabledServers) {
|
|
566569
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers) && projectConfig.enabledMcpjsonServers.length > 0) {
|
|
566570
|
+
const seen = new Set(existingEnabledServers);
|
|
566571
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566572
|
+
if (!seen.has(server)) {
|
|
566573
|
+
existingEnabledServers.push(server);
|
|
566574
|
+
seen.add(server);
|
|
566567
566575
|
}
|
|
566568
566576
|
}
|
|
566569
|
-
migratedFields.push("enabledMcpjsonServers");
|
|
566570
566577
|
}
|
|
566571
|
-
|
|
566572
|
-
|
|
566573
|
-
|
|
566574
|
-
|
|
566575
|
-
|
|
566576
|
-
|
|
566577
|
-
|
|
566578
|
-
|
|
566578
|
+
}
|
|
566579
|
+
if (hasDisabledServers) {
|
|
566580
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
|
|
566581
|
+
const seen = new Set(existingDisabledServers);
|
|
566582
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566583
|
+
if (!seen.has(server)) {
|
|
566584
|
+
existingDisabledServers.push(server);
|
|
566585
|
+
seen.add(server);
|
|
566579
566586
|
}
|
|
566580
566587
|
}
|
|
566581
|
-
migratedFields.push("disabledMcpjsonServers");
|
|
566582
566588
|
}
|
|
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;
|
|
566589
|
+
}
|
|
566590
|
+
const overlappingServers = existingEnabledServers.filter((server) => existingDisabledServers.includes(server));
|
|
566591
|
+
if (overlappingServers.length > 0) {
|
|
566592
|
+
logEvent("tengu_migrate_mcp_server_conflict_resolved", {
|
|
566593
|
+
overlappingServers: overlappingServers.join(","),
|
|
566594
|
+
conflictResolution: "removed_from_disabled"
|
|
566600
566595
|
});
|
|
566601
|
-
|
|
566602
|
-
|
|
566603
|
-
|
|
566604
|
-
|
|
566605
|
-
|
|
566606
|
-
|
|
566596
|
+
}
|
|
566597
|
+
const finalDisabledServers = existingDisabledServers.filter((server) => !existingEnabledServers.includes(server));
|
|
566598
|
+
if (hasEnabledServers) {
|
|
566599
|
+
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566600
|
+
}
|
|
566601
|
+
if (hasDisabledServers || existingSettings.disabledMcpjsonServers !== undefined) {
|
|
566602
|
+
updates.disabledMcpjsonServers = finalDisabledServers;
|
|
566603
|
+
}
|
|
566604
|
+
try {
|
|
566607
566605
|
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
566606
|
} catch (error49) {
|
|
566614
|
-
logError2("Failed to migrate MCP server settings
|
|
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
|
-
}
|
|
566607
|
+
logError2("Failed to migrate MCP server settings to local config", error49);
|
|
566608
|
+
throw error49;
|
|
566649
566609
|
}
|
|
566610
|
+
saveCurrentProjectConfig((config5) => {
|
|
566611
|
+
const updated = { ...config5 };
|
|
566612
|
+
delete updated.enableAllProjectMcpServers;
|
|
566613
|
+
delete updated.enabledMcpjsonServers;
|
|
566614
|
+
delete updated.disabledMcpjsonServers;
|
|
566615
|
+
return updated;
|
|
566616
|
+
});
|
|
566617
|
+
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566618
|
+
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566619
|
+
migration: "enableAllProjectMcpServersToSettings",
|
|
566620
|
+
fieldsMigrated: [
|
|
566621
|
+
hasEnableAll && "enableAllProjectMcpServers",
|
|
566622
|
+
hasEnabledServers && "enabledMcpjsonServers",
|
|
566623
|
+
hasDisabledServers && "disabledMcpjsonServers"
|
|
566624
|
+
].filter(Boolean).join(",")
|
|
566625
|
+
});
|
|
566650
566626
|
}
|
|
566651
566627
|
var init_migrateEnableAllProjectMcpServersToSettings = __esm(() => {
|
|
566652
566628
|
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.167",
|
|
8
|
+
BUILD_TIME: "2026-07-31T15:47:37.502Z",
|
|
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.167",
|
|
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.readdirStringSync(dirPath);
|
|
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,9 +410203,10 @@ 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
|
}
|
|
@@ -410219,6 +410229,11 @@ function getSteps() {
|
|
|
410219
410229
|
} catch {
|
|
410220
410230
|
cachedClaudeMdMtime = -1;
|
|
410221
410231
|
}
|
|
410232
|
+
try {
|
|
410233
|
+
cachedRootMtime = Math.floor(fs13.statSync(cwd2).mtimeMs);
|
|
410234
|
+
} catch {
|
|
410235
|
+
cachedRootMtime = -1;
|
|
410236
|
+
}
|
|
410222
410237
|
try {
|
|
410223
410238
|
cachedDirFingerprint = getDirectoryFingerprint(cwd2);
|
|
410224
410239
|
} catch {
|
|
@@ -410270,7 +410285,7 @@ function incrementProjectOnboardingSeenCount() {
|
|
|
410270
410285
|
projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
|
|
410271
410286
|
}));
|
|
410272
410287
|
}
|
|
410273
|
-
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410288
|
+
var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedRootMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 300000;
|
|
410274
410289
|
var init_projectOnboardingState = __esm(() => {
|
|
410275
410290
|
init_config();
|
|
410276
410291
|
init_cwd2();
|
|
@@ -566543,110 +566558,71 @@ function migrateEnableAllProjectMcpServersToSettings() {
|
|
|
566543
566558
|
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566544
566559
|
return;
|
|
566545
566560
|
}
|
|
566546
|
-
const originalSettings = getSettingsForSource("localSettings") || {};
|
|
566547
|
-
const originalProjectConfig = { ...projectConfig };
|
|
566548
|
-
const originalSettingsHash = JSON.stringify(originalSettings);
|
|
566549
|
-
const migratedFields = [];
|
|
566550
566561
|
const updates = {};
|
|
566551
|
-
|
|
566552
|
-
|
|
566553
|
-
|
|
566554
|
-
|
|
566555
|
-
|
|
566556
|
-
|
|
566557
|
-
|
|
566558
|
-
|
|
566559
|
-
|
|
566560
|
-
|
|
566561
|
-
|
|
566562
|
-
|
|
566563
|
-
|
|
566564
|
-
existingEnabledServers.push(server);
|
|
566565
|
-
seen.add(server);
|
|
566566
|
-
}
|
|
566562
|
+
const existingSettings = getSettingsForSource("localSettings") || {};
|
|
566563
|
+
if (hasEnableAll) {
|
|
566564
|
+
updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
|
|
566565
|
+
}
|
|
566566
|
+
const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
|
|
566567
|
+
const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
|
|
566568
|
+
if (hasEnabledServers) {
|
|
566569
|
+
if (Array.isArray(projectConfig.enabledMcpjsonServers) && projectConfig.enabledMcpjsonServers.length > 0) {
|
|
566570
|
+
const seen = new Set(existingEnabledServers);
|
|
566571
|
+
for (const server of projectConfig.enabledMcpjsonServers) {
|
|
566572
|
+
if (!seen.has(server)) {
|
|
566573
|
+
existingEnabledServers.push(server);
|
|
566574
|
+
seen.add(server);
|
|
566567
566575
|
}
|
|
566568
566576
|
}
|
|
566569
|
-
migratedFields.push("enabledMcpjsonServers");
|
|
566570
566577
|
}
|
|
566571
|
-
|
|
566572
|
-
|
|
566573
|
-
|
|
566574
|
-
|
|
566575
|
-
|
|
566576
|
-
|
|
566577
|
-
|
|
566578
|
-
|
|
566578
|
+
}
|
|
566579
|
+
if (hasDisabledServers) {
|
|
566580
|
+
if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
|
|
566581
|
+
const seen = new Set(existingDisabledServers);
|
|
566582
|
+
for (const server of projectConfig.disabledMcpjsonServers) {
|
|
566583
|
+
if (!seen.has(server)) {
|
|
566584
|
+
existingDisabledServers.push(server);
|
|
566585
|
+
seen.add(server);
|
|
566579
566586
|
}
|
|
566580
566587
|
}
|
|
566581
|
-
migratedFields.push("disabledMcpjsonServers");
|
|
566582
566588
|
}
|
|
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;
|
|
566589
|
+
}
|
|
566590
|
+
const overlappingServers = existingEnabledServers.filter((server) => existingDisabledServers.includes(server));
|
|
566591
|
+
if (overlappingServers.length > 0) {
|
|
566592
|
+
logEvent("tengu_migrate_mcp_server_conflict_resolved", {
|
|
566593
|
+
overlappingServers: overlappingServers.join(","),
|
|
566594
|
+
conflictResolution: "removed_from_disabled"
|
|
566600
566595
|
});
|
|
566601
|
-
|
|
566602
|
-
|
|
566603
|
-
|
|
566604
|
-
|
|
566605
|
-
|
|
566606
|
-
|
|
566596
|
+
}
|
|
566597
|
+
const finalDisabledServers = existingDisabledServers.filter((server) => !existingEnabledServers.includes(server));
|
|
566598
|
+
if (hasEnabledServers) {
|
|
566599
|
+
updates.enabledMcpjsonServers = existingEnabledServers;
|
|
566600
|
+
}
|
|
566601
|
+
if (hasDisabledServers || existingSettings.disabledMcpjsonServers !== undefined) {
|
|
566602
|
+
updates.disabledMcpjsonServers = finalDisabledServers;
|
|
566603
|
+
}
|
|
566604
|
+
try {
|
|
566607
566605
|
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
566606
|
} catch (error49) {
|
|
566614
|
-
logError2("Failed to migrate MCP server settings
|
|
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
|
-
}
|
|
566607
|
+
logError2("Failed to migrate MCP server settings to local config", error49);
|
|
566608
|
+
throw error49;
|
|
566649
566609
|
}
|
|
566610
|
+
saveCurrentProjectConfig((config5) => {
|
|
566611
|
+
const updated = { ...config5 };
|
|
566612
|
+
delete updated.enableAllProjectMcpServers;
|
|
566613
|
+
delete updated.enabledMcpjsonServers;
|
|
566614
|
+
delete updated.disabledMcpjsonServers;
|
|
566615
|
+
return updated;
|
|
566616
|
+
});
|
|
566617
|
+
saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
|
|
566618
|
+
logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
|
|
566619
|
+
migration: "enableAllProjectMcpServersToSettings",
|
|
566620
|
+
fieldsMigrated: [
|
|
566621
|
+
hasEnableAll && "enableAllProjectMcpServers",
|
|
566622
|
+
hasEnabledServers && "enabledMcpjsonServers",
|
|
566623
|
+
hasDisabledServers && "disabledMcpjsonServers"
|
|
566624
|
+
].filter(Boolean).join(",")
|
|
566625
|
+
});
|
|
566650
566626
|
}
|
|
566651
566627
|
var init_migrateEnableAllProjectMcpServersToSettings = __esm(() => {
|
|
566652
566628
|
init_analytics();
|