@funnycode/myclaude 0.1.160 → 0.1.161

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/myclaude.js CHANGED
@@ -4,8 +4,8 @@
4
4
  // MACRO - build-time constants (injected by build.ts)
5
5
  // MACRO injected by build script
6
6
  globalThis.MACRO = {
7
- VERSION: "0.1.160",
8
- BUILD_TIME: "2026-07-30T03:10:11.108Z",
7
+ VERSION: "0.1.161",
8
+ BUILD_TIME: "2026-07-30T06:39:33.267Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -119829,7 +119829,7 @@ var package_default;
119829
119829
  var init_package = __esm(() => {
119830
119830
  package_default = {
119831
119831
  name: "@funnycode/myclaude",
119832
- version: "0.1.160",
119832
+ version: "0.1.161",
119833
119833
  private: false,
119834
119834
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119835
119835
  license: "MIT",
@@ -410011,10 +410011,16 @@ function isInputModeCharacter(input) {
410011
410011
 
410012
410012
  // src/projectOnboardingState.ts
410013
410013
  import { join as join105 } from "path";
410014
+ function getDirectoryFingerprint(dirPath) {
410015
+ const fs13 = getFsImplementation();
410016
+ const entries = fs13.readdirStringSync(dirPath);
410017
+ return entries.sort().join(`
410018
+ `);
410019
+ }
410014
410020
  function clearCachedSteps() {
410015
410021
  cachedSteps = null;
410016
410022
  cachedClaudeMdMtime = -1;
410017
- cachedDirMtime = -1;
410023
+ cachedDirFingerprint = "";
410018
410024
  cachedAt = null;
410019
410025
  }
410020
410026
  function isCacheValid() {
@@ -410031,8 +410037,8 @@ function isCacheValid() {
410031
410037
  return false;
410032
410038
  }
410033
410039
  try {
410034
- const currentDirMtime = getFileModificationTime(cwd2);
410035
- if (currentDirMtime !== cachedDirMtime)
410040
+ const currentFingerprint = getDirectoryFingerprint(cwd2);
410041
+ if (currentFingerprint !== cachedDirFingerprint)
410036
410042
  return false;
410037
410043
  } catch {
410038
410044
  return false;
@@ -410057,9 +410063,9 @@ function getSteps() {
410057
410063
  cachedClaudeMdMtime = -1;
410058
410064
  }
410059
410065
  try {
410060
- cachedDirMtime = getFileModificationTime(cwd2);
410066
+ cachedDirFingerprint = getDirectoryFingerprint(cwd2);
410061
410067
  } catch {
410062
- cachedDirMtime = -1;
410068
+ cachedDirFingerprint = "";
410063
410069
  }
410064
410070
  cachedAt = Date.now();
410065
410071
  cachedSteps = [
@@ -410107,7 +410113,7 @@ function incrementProjectOnboardingSeenCount() {
410107
410113
  projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
410108
410114
  }));
410109
410115
  }
410110
- var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 30000;
410116
+ var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 30000;
410111
410117
  var init_projectOnboardingState = __esm(() => {
410112
410118
  init_config();
410113
410119
  init_cwd2();
@@ -566367,14 +566373,13 @@ function migrateEnableAllProjectMcpServersToSettings() {
566367
566373
  }
566368
566374
  const originalSettings = getSettingsForSource("localSettings") || {};
566369
566375
  const originalProjectConfig = { ...projectConfig };
566370
- const originalSettingsKeys = new Set(Object.keys(originalSettings));
566371
- const fieldsToRemove = [];
566376
+ const migratedFields = [];
566372
566377
  const updates = {};
566373
566378
  try {
566374
566379
  const existingSettings = originalSettings;
566375
566380
  if (hasEnableAll) {
566376
566381
  updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
566377
- fieldsToRemove.push("enableAllProjectMcpServers");
566382
+ migratedFields.push("enableAllProjectMcpServers");
566378
566383
  }
566379
566384
  const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
566380
566385
  const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
@@ -566388,7 +566393,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566388
566393
  }
566389
566394
  }
566390
566395
  }
566391
- fieldsToRemove.push("enabledMcpjsonServers");
566396
+ migratedFields.push("enabledMcpjsonServers");
566392
566397
  }
566393
566398
  if (hasDisabledServers) {
566394
566399
  if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
@@ -566400,21 +566405,19 @@ function migrateEnableAllProjectMcpServersToSettings() {
566400
566405
  }
566401
566406
  }
566402
566407
  }
566403
- fieldsToRemove.push("disabledMcpjsonServers");
566408
+ migratedFields.push("disabledMcpjsonServers");
566404
566409
  }
566405
566410
  const enabledSet = new Set(existingEnabledServers);
566406
566411
  const overlappingServers = existingDisabledServers.filter((server) => enabledSet.has(server));
566407
- if (overlappingServers.length > 0) {
566408
- const overlappingSet = new Set(overlappingServers);
566409
- for (let i3 = existingDisabledServers.length - 1;i3 >= 0; i3--) {
566410
- if (overlappingSet.has(existingDisabledServers[i3])) {
566411
- existingDisabledServers.splice(i3, 1);
566412
- }
566412
+ for (const server of overlappingServers) {
566413
+ const index = existingDisabledServers.indexOf(server);
566414
+ if (index !== -1) {
566415
+ existingDisabledServers.splice(index, 1);
566413
566416
  }
566417
+ }
566418
+ if (overlappingServers.length > 0) {
566414
566419
  logEvent("tengu_migrate_mcp_server_overlap_in_both_lists", {
566415
- migration: "enableAllProjectMcpServersToSettings",
566416
- overlappingServers: overlappingServers.join(","),
566417
- message: "MCP server(s) appear in both enabled and disabled lists. Removed from disabled list to resolve conflict."
566420
+ overlappingServers: overlappingServers.join(",")
566418
566421
  });
566419
566422
  }
566420
566423
  const existingHadEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers);
@@ -566430,7 +566433,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566430
566433
  updateSettingsForSource("localSettings", updates);
566431
566434
  saveCurrentProjectConfig((config5) => {
566432
566435
  const updated = { ...config5 };
566433
- for (const field of fieldsToRemove) {
566436
+ for (const field of migratedFields) {
566434
566437
  delete updated[field];
566435
566438
  }
566436
566439
  return updated;
@@ -566438,17 +566441,12 @@ function migrateEnableAllProjectMcpServersToSettings() {
566438
566441
  saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
566439
566442
  logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
566440
566443
  migration: "enableAllProjectMcpServersToSettings",
566441
- fieldsMigrated: fieldsToRemove.join(",")
566444
+ fieldsMigrated: migratedFields.join(",")
566442
566445
  });
566443
566446
  } catch (error49) {
566444
566447
  logError2("Failed to migrate MCP server settings, rolling back", error49);
566445
566448
  let rollbackFailed = false;
566446
566449
  const rollbackUpdates = {};
566447
- const migratedFields = [
566448
- "enableAllProjectMcpServers",
566449
- "enabledMcpjsonServers",
566450
- "disabledMcpjsonServers"
566451
- ];
566452
566450
  for (const field of migratedFields) {
566453
566451
  if (field in originalSettings) {
566454
566452
  rollbackUpdates[field] = originalSettings[field];
@@ -566467,7 +566465,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566467
566465
  try {
566468
566466
  saveCurrentProjectConfig((config5) => {
566469
566467
  const updated = { ...config5 };
566470
- for (const field of fieldsToRemove) {
566468
+ for (const field of migratedFields) {
566471
566469
  updated[field] = originalProjectConfig[field];
566472
566470
  }
566473
566471
  return updated;
@@ -566477,13 +566475,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566477
566475
  rollbackFailed = true;
566478
566476
  if (settingsRollbackSucceeded) {
566479
566477
  try {
566480
- const reapplyUpdates = {};
566481
- for (const field of migratedFields) {
566482
- if (updates[field] !== undefined) {
566483
- reapplyUpdates[field] = updates[field];
566484
- }
566485
- }
566486
- updateSettingsForSource("localSettings", reapplyUpdates);
566478
+ updateSettingsForSource("localSettings", updates);
566487
566479
  logError2("Re-applied migrated state to settings after project config rollback failure. " + "System is now consistent (migration state re-applied).", rollbackError);
566488
566480
  } catch (reapplyError) {
566489
566481
  logError2("Failed to re-apply migrated state to settings after project config rollback failure. " + "System is in an inconsistent state. Manual intervention may be required.", reapplyError);
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.160",
8
- BUILD_TIME: "2026-07-30T03:10:11.108Z",
7
+ VERSION: "0.1.161",
8
+ BUILD_TIME: "2026-07-30T06:39:33.267Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -119829,7 +119829,7 @@ var package_default;
119829
119829
  var init_package = __esm(() => {
119830
119830
  package_default = {
119831
119831
  name: "@funnycode/myclaude",
119832
- version: "0.1.160",
119832
+ version: "0.1.161",
119833
119833
  private: false,
119834
119834
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119835
119835
  license: "MIT",
@@ -410011,10 +410011,16 @@ function isInputModeCharacter(input) {
410011
410011
 
410012
410012
  // src/projectOnboardingState.ts
410013
410013
  import { join as join105 } from "path";
410014
+ function getDirectoryFingerprint(dirPath) {
410015
+ const fs13 = getFsImplementation();
410016
+ const entries = fs13.readdirStringSync(dirPath);
410017
+ return entries.sort().join(`
410018
+ `);
410019
+ }
410014
410020
  function clearCachedSteps() {
410015
410021
  cachedSteps = null;
410016
410022
  cachedClaudeMdMtime = -1;
410017
- cachedDirMtime = -1;
410023
+ cachedDirFingerprint = "";
410018
410024
  cachedAt = null;
410019
410025
  }
410020
410026
  function isCacheValid() {
@@ -410031,8 +410037,8 @@ function isCacheValid() {
410031
410037
  return false;
410032
410038
  }
410033
410039
  try {
410034
- const currentDirMtime = getFileModificationTime(cwd2);
410035
- if (currentDirMtime !== cachedDirMtime)
410040
+ const currentFingerprint = getDirectoryFingerprint(cwd2);
410041
+ if (currentFingerprint !== cachedDirFingerprint)
410036
410042
  return false;
410037
410043
  } catch {
410038
410044
  return false;
@@ -410057,9 +410063,9 @@ function getSteps() {
410057
410063
  cachedClaudeMdMtime = -1;
410058
410064
  }
410059
410065
  try {
410060
- cachedDirMtime = getFileModificationTime(cwd2);
410066
+ cachedDirFingerprint = getDirectoryFingerprint(cwd2);
410061
410067
  } catch {
410062
- cachedDirMtime = -1;
410068
+ cachedDirFingerprint = "";
410063
410069
  }
410064
410070
  cachedAt = Date.now();
410065
410071
  cachedSteps = [
@@ -410107,7 +410113,7 @@ function incrementProjectOnboardingSeenCount() {
410107
410113
  projectOnboardingSeenCount: current.projectOnboardingSeenCount + 1
410108
410114
  }));
410109
410115
  }
410110
- var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirMtime = -1, cachedAt = null, CACHE_MAX_AGE_MS = 30000;
410116
+ var cachedSteps = null, cachedClaudeMdMtime = -1, cachedDirFingerprint = "", cachedAt = null, CACHE_MAX_AGE_MS = 30000;
410111
410117
  var init_projectOnboardingState = __esm(() => {
410112
410118
  init_config();
410113
410119
  init_cwd2();
@@ -566367,14 +566373,13 @@ function migrateEnableAllProjectMcpServersToSettings() {
566367
566373
  }
566368
566374
  const originalSettings = getSettingsForSource("localSettings") || {};
566369
566375
  const originalProjectConfig = { ...projectConfig };
566370
- const originalSettingsKeys = new Set(Object.keys(originalSettings));
566371
- const fieldsToRemove = [];
566376
+ const migratedFields = [];
566372
566377
  const updates = {};
566373
566378
  try {
566374
566379
  const existingSettings = originalSettings;
566375
566380
  if (hasEnableAll) {
566376
566381
  updates.enableAllProjectMcpServers = projectConfig.enableAllProjectMcpServers;
566377
- fieldsToRemove.push("enableAllProjectMcpServers");
566382
+ migratedFields.push("enableAllProjectMcpServers");
566378
566383
  }
566379
566384
  const existingEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers) ? [...existingSettings.enabledMcpjsonServers] : [];
566380
566385
  const existingDisabledServers = Array.isArray(existingSettings.disabledMcpjsonServers) ? [...existingSettings.disabledMcpjsonServers] : [];
@@ -566388,7 +566393,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566388
566393
  }
566389
566394
  }
566390
566395
  }
566391
- fieldsToRemove.push("enabledMcpjsonServers");
566396
+ migratedFields.push("enabledMcpjsonServers");
566392
566397
  }
566393
566398
  if (hasDisabledServers) {
566394
566399
  if (Array.isArray(projectConfig.disabledMcpjsonServers) && projectConfig.disabledMcpjsonServers.length > 0) {
@@ -566400,21 +566405,19 @@ function migrateEnableAllProjectMcpServersToSettings() {
566400
566405
  }
566401
566406
  }
566402
566407
  }
566403
- fieldsToRemove.push("disabledMcpjsonServers");
566408
+ migratedFields.push("disabledMcpjsonServers");
566404
566409
  }
566405
566410
  const enabledSet = new Set(existingEnabledServers);
566406
566411
  const overlappingServers = existingDisabledServers.filter((server) => enabledSet.has(server));
566407
- if (overlappingServers.length > 0) {
566408
- const overlappingSet = new Set(overlappingServers);
566409
- for (let i3 = existingDisabledServers.length - 1;i3 >= 0; i3--) {
566410
- if (overlappingSet.has(existingDisabledServers[i3])) {
566411
- existingDisabledServers.splice(i3, 1);
566412
- }
566412
+ for (const server of overlappingServers) {
566413
+ const index = existingDisabledServers.indexOf(server);
566414
+ if (index !== -1) {
566415
+ existingDisabledServers.splice(index, 1);
566413
566416
  }
566417
+ }
566418
+ if (overlappingServers.length > 0) {
566414
566419
  logEvent("tengu_migrate_mcp_server_overlap_in_both_lists", {
566415
- migration: "enableAllProjectMcpServersToSettings",
566416
- overlappingServers: overlappingServers.join(","),
566417
- message: "MCP server(s) appear in both enabled and disabled lists. Removed from disabled list to resolve conflict."
566420
+ overlappingServers: overlappingServers.join(",")
566418
566421
  });
566419
566422
  }
566420
566423
  const existingHadEnabledServers = Array.isArray(existingSettings.enabledMcpjsonServers);
@@ -566430,7 +566433,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566430
566433
  updateSettingsForSource("localSettings", updates);
566431
566434
  saveCurrentProjectConfig((config5) => {
566432
566435
  const updated = { ...config5 };
566433
- for (const field of fieldsToRemove) {
566436
+ for (const field of migratedFields) {
566434
566437
  delete updated[field];
566435
566438
  }
566436
566439
  return updated;
@@ -566438,17 +566441,12 @@ function migrateEnableAllProjectMcpServersToSettings() {
566438
566441
  saveGlobalConfig((c6) => ({ ...c6, hasCompletedMcpServerMigration: true }));
566439
566442
  logEvent("tengu_migrate_enable_all_project_mcp_servers_to_settings", {
566440
566443
  migration: "enableAllProjectMcpServersToSettings",
566441
- fieldsMigrated: fieldsToRemove.join(",")
566444
+ fieldsMigrated: migratedFields.join(",")
566442
566445
  });
566443
566446
  } catch (error49) {
566444
566447
  logError2("Failed to migrate MCP server settings, rolling back", error49);
566445
566448
  let rollbackFailed = false;
566446
566449
  const rollbackUpdates = {};
566447
- const migratedFields = [
566448
- "enableAllProjectMcpServers",
566449
- "enabledMcpjsonServers",
566450
- "disabledMcpjsonServers"
566451
- ];
566452
566450
  for (const field of migratedFields) {
566453
566451
  if (field in originalSettings) {
566454
566452
  rollbackUpdates[field] = originalSettings[field];
@@ -566467,7 +566465,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566467
566465
  try {
566468
566466
  saveCurrentProjectConfig((config5) => {
566469
566467
  const updated = { ...config5 };
566470
- for (const field of fieldsToRemove) {
566468
+ for (const field of migratedFields) {
566471
566469
  updated[field] = originalProjectConfig[field];
566472
566470
  }
566473
566471
  return updated;
@@ -566477,13 +566475,7 @@ function migrateEnableAllProjectMcpServersToSettings() {
566477
566475
  rollbackFailed = true;
566478
566476
  if (settingsRollbackSucceeded) {
566479
566477
  try {
566480
- const reapplyUpdates = {};
566481
- for (const field of migratedFields) {
566482
- if (updates[field] !== undefined) {
566483
- reapplyUpdates[field] = updates[field];
566484
- }
566485
- }
566486
- updateSettingsForSource("localSettings", reapplyUpdates);
566478
+ updateSettingsForSource("localSettings", updates);
566487
566479
  logError2("Re-applied migrated state to settings after project config rollback failure. " + "System is now consistent (migration state re-applied).", rollbackError);
566488
566480
  } catch (reapplyError) {
566489
566481
  logError2("Failed to re-apply migrated state to settings after project config rollback failure. " + "System is in an inconsistent state. Manual intervention may be required.", reapplyError);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.160",
3
+ "version": "0.1.161",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",