@funnycode/myclaude 0.1.163 → 0.1.164

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.163",
8
- BUILD_TIME: "2026-07-30T20:44:03.824Z",
7
+ VERSION: "0.1.164",
8
+ BUILD_TIME: "2026-07-30T22:29:53.074Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -61328,6 +61328,30 @@ 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
+ }
61331
61355
  function mergeArrays(targetArray, sourceArray) {
61332
61356
  return uniq([...targetArray, ...sourceArray]);
61333
61357
  }
@@ -119829,7 +119853,7 @@ var package_default;
119829
119853
  var init_package = __esm(() => {
119830
119854
  package_default = {
119831
119855
  name: "@funnycode/myclaude",
119832
- version: "0.1.163",
119856
+ version: "0.1.164",
119833
119857
  private: false,
119834
119858
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119835
119859
  license: "MIT",
@@ -501863,25 +501887,50 @@ function isBlockedV6(address) {
501863
501887
  return false;
501864
501888
  if (lower === "::")
501865
501889
  return true;
501866
- const mappedV4 = extractMappedIPv4(lower);
501867
- if (mappedV4 !== null) {
501868
- return isBlockedV4(mappedV4);
501890
+ const g2 = expandIPv6Groups(lower);
501891
+ if (!g2)
501892
+ return false;
501893
+ const embeddedV4 = extractEmbeddedIPv4(g2);
501894
+ if (embeddedV4 !== null) {
501895
+ return isBlockedV4(embeddedV4);
501869
501896
  }
501870
- if (lower.startsWith("fc") || lower.startsWith("fd")) {
501897
+ if (g2[0] >= 64512 && g2[0] <= 65023) {
501871
501898
  return true;
501872
501899
  }
501873
- const firstHextet = lower.split(":")[0];
501874
- if (firstHextet && firstHextet.length === 4 && firstHextet >= "fe80" && firstHextet <= "febf") {
501900
+ if (g2[0] >= 65152 && g2[0] <= 65215) {
501875
501901
  return true;
501876
501902
  }
501877
501903
  return false;
501878
501904
  }
501905
+ function extractEmbeddedIPv4(g2) {
501906
+ if (g2.length !== 8)
501907
+ return null;
501908
+ if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
501909
+ return composeV4(g2[6], g2[7]);
501910
+ }
501911
+ if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 0) {
501912
+ return composeV4(g2[6], g2[7]);
501913
+ }
501914
+ if (g2[0] === 8194) {
501915
+ return composeV4(g2[1], g2[2]);
501916
+ }
501917
+ if (g2[0] >= 65152 && g2[0] <= 65215 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 24318) {
501918
+ return composeV4(g2[6], g2[7]);
501919
+ }
501920
+ return null;
501921
+ }
501922
+ function composeV4(hi, lo) {
501923
+ return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
501924
+ }
501879
501925
  function expandIPv6Groups(addr) {
501880
501926
  let tailHextets = [];
501881
501927
  if (addr.includes(".")) {
501882
501928
  const lastColon = addr.lastIndexOf(":");
501883
501929
  const v4 = addr.slice(lastColon + 1);
501884
501930
  addr = addr.slice(0, lastColon);
501931
+ if (addr === ":") {
501932
+ addr = "::";
501933
+ }
501885
501934
  const octets = v4.split(".").map(Number);
501886
501935
  if (octets.length !== 4 || octets.some((n3) => !Number.isInteger(n3) || n3 < 0 || n3 > 255)) {
501887
501936
  return null;
@@ -501915,17 +501964,6 @@ function expandIPv6Groups(addr) {
501915
501964
  nums.push(...tailHextets);
501916
501965
  return nums.length === 8 ? nums : null;
501917
501966
  }
501918
- function extractMappedIPv4(addr) {
501919
- const g2 = expandIPv6Groups(addr);
501920
- if (!g2)
501921
- return null;
501922
- if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
501923
- const hi = g2[6];
501924
- const lo = g2[7];
501925
- return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
501926
- }
501927
- return null;
501928
- }
501929
501967
  function ssrfGuardedLookup(hostname4, options, callback) {
501930
501968
  const wantsAll = "all" in options && options.all === true;
501931
501969
  const ipVersion = isIP4(hostname4);
@@ -566459,15 +566497,15 @@ function migrateEnableAllProjectMcpServersToSettings() {
566459
566497
  } catch (error49) {
566460
566498
  logError2("Failed to migrate MCP server settings, rolling back", error49);
566461
566499
  let rollbackFailed = false;
566462
- const rollbackUpdates = {};
566463
- for (const field of migratedFields) {
566464
- if (field in originalSettings) {
566465
- rollbackUpdates[field] = originalSettings[field];
566466
- } else {
566467
- rollbackUpdates[field] = undefined;
566468
- }
566469
- }
566470
566500
  try {
566501
+ const rollbackUpdates = {};
566502
+ for (const field of migratedFields) {
566503
+ if (field in originalSettings) {
566504
+ rollbackUpdates[field] = originalSettings[field];
566505
+ } else {
566506
+ deleteSettingsField("localSettings", field);
566507
+ }
566508
+ }
566471
566509
  updateSettingsForSource("localSettings", rollbackUpdates);
566472
566510
  } catch (rollbackError) {
566473
566511
  logError2("Rollback of settings failed", rollbackError);
@@ -566564,9 +566602,23 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566564
566602
  return prev;
566565
566603
  if (prev.remoteControlAtStartup !== undefined)
566566
566604
  return prev;
566567
- const { replBridgeEnabled: _2, ...next } = prev;
566568
566605
  const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566569
- return { ...next, remoteControlAtStartup: newValue };
566606
+ return { ...prev, remoteControlAtStartup: newValue };
566607
+ });
566608
+ saveGlobalConfig((prev) => {
566609
+ const oldValue = prev["replBridgeEnabled"];
566610
+ if (oldValue === undefined)
566611
+ return prev;
566612
+ if (prev.remoteControlAtStartup === undefined) {
566613
+ const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566614
+ return {
566615
+ ...prev,
566616
+ remoteControlAtStartup: newValue,
566617
+ replBridgeEnabled: undefined
566618
+ };
566619
+ }
566620
+ const { replBridgeEnabled: _2, ...next } = prev;
566621
+ return next;
566570
566622
  });
566571
566623
  }
566572
566624
  var init_migrateReplBridgeEnabledToRemoteControlAtStartup = __esm(() => {
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.163",
8
- BUILD_TIME: "2026-07-30T20:44:03.824Z",
7
+ VERSION: "0.1.164",
8
+ BUILD_TIME: "2026-07-30T22:29:53.074Z",
9
9
  PACKAGE_URL: "@funnycode/myclaude",
10
10
  NATIVE_PACKAGE_URL: "@funnycode/myclaude",
11
11
  VERSION_CHANGELOG: '',
@@ -61328,6 +61328,30 @@ 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
+ }
61331
61355
  function mergeArrays(targetArray, sourceArray) {
61332
61356
  return uniq([...targetArray, ...sourceArray]);
61333
61357
  }
@@ -119829,7 +119853,7 @@ var package_default;
119829
119853
  var init_package = __esm(() => {
119830
119854
  package_default = {
119831
119855
  name: "@funnycode/myclaude",
119832
- version: "0.1.163",
119856
+ version: "0.1.164",
119833
119857
  private: false,
119834
119858
  description: "An open-source AI coding assistant in your terminal - powered by Claude",
119835
119859
  license: "MIT",
@@ -501863,25 +501887,50 @@ function isBlockedV6(address) {
501863
501887
  return false;
501864
501888
  if (lower === "::")
501865
501889
  return true;
501866
- const mappedV4 = extractMappedIPv4(lower);
501867
- if (mappedV4 !== null) {
501868
- return isBlockedV4(mappedV4);
501890
+ const g2 = expandIPv6Groups(lower);
501891
+ if (!g2)
501892
+ return false;
501893
+ const embeddedV4 = extractEmbeddedIPv4(g2);
501894
+ if (embeddedV4 !== null) {
501895
+ return isBlockedV4(embeddedV4);
501869
501896
  }
501870
- if (lower.startsWith("fc") || lower.startsWith("fd")) {
501897
+ if (g2[0] >= 64512 && g2[0] <= 65023) {
501871
501898
  return true;
501872
501899
  }
501873
- const firstHextet = lower.split(":")[0];
501874
- if (firstHextet && firstHextet.length === 4 && firstHextet >= "fe80" && firstHextet <= "febf") {
501900
+ if (g2[0] >= 65152 && g2[0] <= 65215) {
501875
501901
  return true;
501876
501902
  }
501877
501903
  return false;
501878
501904
  }
501905
+ function extractEmbeddedIPv4(g2) {
501906
+ if (g2.length !== 8)
501907
+ return null;
501908
+ if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
501909
+ return composeV4(g2[6], g2[7]);
501910
+ }
501911
+ if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 0) {
501912
+ return composeV4(g2[6], g2[7]);
501913
+ }
501914
+ if (g2[0] === 8194) {
501915
+ return composeV4(g2[1], g2[2]);
501916
+ }
501917
+ if (g2[0] >= 65152 && g2[0] <= 65215 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 24318) {
501918
+ return composeV4(g2[6], g2[7]);
501919
+ }
501920
+ return null;
501921
+ }
501922
+ function composeV4(hi, lo) {
501923
+ return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
501924
+ }
501879
501925
  function expandIPv6Groups(addr) {
501880
501926
  let tailHextets = [];
501881
501927
  if (addr.includes(".")) {
501882
501928
  const lastColon = addr.lastIndexOf(":");
501883
501929
  const v4 = addr.slice(lastColon + 1);
501884
501930
  addr = addr.slice(0, lastColon);
501931
+ if (addr === ":") {
501932
+ addr = "::";
501933
+ }
501885
501934
  const octets = v4.split(".").map(Number);
501886
501935
  if (octets.length !== 4 || octets.some((n3) => !Number.isInteger(n3) || n3 < 0 || n3 > 255)) {
501887
501936
  return null;
@@ -501915,17 +501964,6 @@ function expandIPv6Groups(addr) {
501915
501964
  nums.push(...tailHextets);
501916
501965
  return nums.length === 8 ? nums : null;
501917
501966
  }
501918
- function extractMappedIPv4(addr) {
501919
- const g2 = expandIPv6Groups(addr);
501920
- if (!g2)
501921
- return null;
501922
- if (g2[0] === 0 && g2[1] === 0 && g2[2] === 0 && g2[3] === 0 && g2[4] === 0 && g2[5] === 65535) {
501923
- const hi = g2[6];
501924
- const lo = g2[7];
501925
- return `${hi >> 8}.${hi & 255}.${lo >> 8}.${lo & 255}`;
501926
- }
501927
- return null;
501928
- }
501929
501967
  function ssrfGuardedLookup(hostname4, options, callback) {
501930
501968
  const wantsAll = "all" in options && options.all === true;
501931
501969
  const ipVersion = isIP4(hostname4);
@@ -566459,15 +566497,15 @@ function migrateEnableAllProjectMcpServersToSettings() {
566459
566497
  } catch (error49) {
566460
566498
  logError2("Failed to migrate MCP server settings, rolling back", error49);
566461
566499
  let rollbackFailed = false;
566462
- const rollbackUpdates = {};
566463
- for (const field of migratedFields) {
566464
- if (field in originalSettings) {
566465
- rollbackUpdates[field] = originalSettings[field];
566466
- } else {
566467
- rollbackUpdates[field] = undefined;
566468
- }
566469
- }
566470
566500
  try {
566501
+ const rollbackUpdates = {};
566502
+ for (const field of migratedFields) {
566503
+ if (field in originalSettings) {
566504
+ rollbackUpdates[field] = originalSettings[field];
566505
+ } else {
566506
+ deleteSettingsField("localSettings", field);
566507
+ }
566508
+ }
566471
566509
  updateSettingsForSource("localSettings", rollbackUpdates);
566472
566510
  } catch (rollbackError) {
566473
566511
  logError2("Rollback of settings failed", rollbackError);
@@ -566564,9 +566602,23 @@ function migrateReplBridgeEnabledToRemoteControlAtStartup() {
566564
566602
  return prev;
566565
566603
  if (prev.remoteControlAtStartup !== undefined)
566566
566604
  return prev;
566567
- const { replBridgeEnabled: _2, ...next } = prev;
566568
566605
  const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566569
- return { ...next, remoteControlAtStartup: newValue };
566606
+ return { ...prev, remoteControlAtStartup: newValue };
566607
+ });
566608
+ saveGlobalConfig((prev) => {
566609
+ const oldValue = prev["replBridgeEnabled"];
566610
+ if (oldValue === undefined)
566611
+ return prev;
566612
+ if (prev.remoteControlAtStartup === undefined) {
566613
+ const newValue = typeof oldValue === "string" ? oldValue === "true" : Boolean(oldValue);
566614
+ return {
566615
+ ...prev,
566616
+ remoteControlAtStartup: newValue,
566617
+ replBridgeEnabled: undefined
566618
+ };
566619
+ }
566620
+ const { replBridgeEnabled: _2, ...next } = prev;
566621
+ return next;
566570
566622
  });
566571
566623
  }
566572
566624
  var init_migrateReplBridgeEnabledToRemoteControlAtStartup = __esm(() => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@funnycode/myclaude",
3
- "version": "0.1.163",
3
+ "version": "0.1.164",
4
4
  "private": false,
5
5
  "description": "An open-source AI coding assistant in your terminal - powered by Claude",
6
6
  "license": "MIT",