@memoraone/mcp 0.1.48 → 0.1.50

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/daemon.cjs CHANGED
@@ -32,7 +32,7 @@ __export(daemon_exports, {
32
32
  runDaemon: () => runDaemon
33
33
  });
34
34
  module.exports = __toCommonJS(daemon_exports);
35
- var fs11 = __toESM(require("fs"), 1);
35
+ var fs9 = __toESM(require("fs"), 1);
36
36
  var net = __toESM(require("net"), 1);
37
37
  var import_stdio2 = require("@modelcontextprotocol/sdk/server/stdio.js");
38
38
 
@@ -169,11 +169,9 @@ function ensureBaseDir() {
169
169
  }
170
170
 
171
171
  // src/projectBinding.ts
172
- var fs7 = __toESM(require("fs/promises"), 1);
173
172
  var path10 = __toESM(require("path"), 1);
174
173
 
175
174
  // src/localState/resolveLocalBinding.ts
176
- var fs6 = __toESM(require("fs/promises"), 1);
177
175
  var path9 = __toESM(require("path"), 1);
178
176
 
179
177
  // src/localState/bindingStore.ts
@@ -1149,19 +1147,9 @@ async function refreshInstallationAccessToken(options) {
1149
1147
  }
1150
1148
 
1151
1149
  // src/localState/resolveLocalBinding.ts
1152
- async function detectLegacyM1Warning(workspaceRoot) {
1153
- const candidate = path9.join(path9.resolve(workspaceRoot), CANONICAL_M1_FILENAME);
1154
- try {
1155
- await fs6.access(candidate);
1156
- return candidate;
1157
- } catch {
1158
- return void 0;
1159
- }
1160
- }
1161
1150
  async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1162
1151
  const resolved = path9.resolve(workspaceRoot);
1163
1152
  const identity = await captureRootFilesystemIdentity(resolved, options.identityDeps);
1164
- const legacyM1WarningPath = await detectLegacyM1Warning(resolved);
1165
1153
  const index = await loadPathIndex(options.homeDir);
1166
1154
  const lookup = lookupPathIndex(index, resolved, identity);
1167
1155
  if (lookup.kind === "path") {
@@ -1185,8 +1173,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1185
1173
  return {
1186
1174
  repositoryBindingId: record.repositoryBindingId,
1187
1175
  identity,
1188
- created: false,
1189
- legacyM1WarningPath
1176
+ created: false
1190
1177
  };
1191
1178
  }
1192
1179
  }
@@ -1210,8 +1197,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1210
1197
  repositoryBindingId: record.repositoryBindingId,
1211
1198
  identity,
1212
1199
  created: false,
1213
- renamedFrom: lookup.previousPath,
1214
- legacyM1WarningPath
1200
+ renamedFrom: lookup.previousPath
1215
1201
  };
1216
1202
  }
1217
1203
  }
@@ -1224,8 +1210,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1224
1210
  return {
1225
1211
  repositoryBindingId,
1226
1212
  identity,
1227
- created: true,
1228
- legacyM1WarningPath
1213
+ created: true
1229
1214
  };
1230
1215
  }
1231
1216
  async function lookupLocalBindingIdentity(workspaceRoot, options = {}) {
@@ -1254,7 +1239,7 @@ async function lookupLocalBindingIdentity(workspaceRoot, options = {}) {
1254
1239
  }
1255
1240
  async function resolveLocalBinding(workspaceRoot, options = {}) {
1256
1241
  const resolved = path9.resolve(workspaceRoot);
1257
- const { repositoryBindingId, legacyM1WarningPath } = await ensureRepositoryBindingForRoot(
1242
+ const { repositoryBindingId } = await ensureRepositoryBindingForRoot(
1258
1243
  resolved,
1259
1244
  { ...options, createIfMissing: false }
1260
1245
  );
@@ -1297,14 +1282,12 @@ async function resolveLocalBinding(workspaceRoot, options = {}) {
1297
1282
  installationPublicId: record.installationPublicId ?? creds.installationPublicId,
1298
1283
  environment: record.environment,
1299
1284
  bindingSource: "local-binding",
1300
- status: record.status,
1301
- legacyM1WarningPath
1285
+ status: record.status
1302
1286
  };
1303
1287
  }
1304
1288
 
1305
1289
  // src/projectBinding.ts
1306
1290
  var uuidRegex2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
1307
- var CANONICAL_M1_FILENAME = "memoraone.m1";
1308
1291
  function normalizeEnvironment(raw) {
1309
1292
  if (raw === void 0 || raw === null || typeof raw !== "string") {
1310
1293
  return void 0;
@@ -1320,23 +1303,9 @@ function toResolvedBinding(local) {
1320
1303
  installationPublicId: local.installationPublicId,
1321
1304
  environment: local.environment,
1322
1305
  bindingSource: "local-binding",
1323
- status: local.status,
1324
- legacyM1WarningPath: local.legacyM1WarningPath
1306
+ status: local.status
1325
1307
  };
1326
1308
  }
1327
- async function warnLegacyM1IfPresent(workspaceRoot) {
1328
- const candidate = path10.join(path10.resolve(workspaceRoot), CANONICAL_M1_FILENAME);
1329
- try {
1330
- await fs7.access(candidate);
1331
- process.stderr.write(
1332
- `[memoraone-mcp] warning: ignoring legacy ${CANONICAL_M1_FILENAME} (not used for credentials or binding)
1333
- `
1334
- );
1335
- return candidate;
1336
- } catch {
1337
- return void 0;
1338
- }
1339
- }
1340
1309
  async function resolveAuthoritativeBinding(workspaceRoot, _options = {}) {
1341
1310
  const candidates = normalizeWorkspaceSearchRoots(workspaceRoot);
1342
1311
  if (candidates.length === 0) {
@@ -1346,12 +1315,11 @@ async function resolveAuthoritativeBinding(workspaceRoot, _options = {}) {
1346
1315
  }
1347
1316
  const bindings = [];
1348
1317
  for (const root of candidates) {
1349
- await warnLegacyM1IfPresent(root);
1350
1318
  try {
1351
1319
  const local = await resolveLocalBinding(root);
1352
1320
  bindings.push(toResolvedBinding(local));
1353
1321
  } catch (err) {
1354
- if (err instanceof ReconnectRequiredError) {
1322
+ if (err instanceof ReconnectRequiredError && (err.message.includes("No local binding for workspace") || err.message.includes("No local MemoraOne binding for this workspace"))) {
1355
1323
  continue;
1356
1324
  }
1357
1325
  throw err;
@@ -1505,7 +1473,7 @@ function decodeResolvedBinding(value) {
1505
1473
  }
1506
1474
 
1507
1475
  // src/bindingSidecar.ts
1508
- var fs8 = __toESM(require("fs"), 1);
1476
+ var fs6 = __toESM(require("fs"), 1);
1509
1477
  var path11 = __toESM(require("path"), 1);
1510
1478
  function bindingSidecarPath(socketPath) {
1511
1479
  if (socketPath.endsWith(".sock")) {
@@ -1530,11 +1498,11 @@ function writeBindingSidecar(socketPath, binding, ideType = resolveBindingIdeTyp
1530
1498
  if (/["']?(accessToken|refreshToken|apiKey|clientRedeemKey|clientRefreshKey)["']?\s*:/.test(text)) {
1531
1499
  throw new Error("[memoraone-mcp] Refusing to write sidecar containing secrets");
1532
1500
  }
1533
- fs8.writeFileSync(bindingSidecarPath(socketPath), text, "utf8");
1501
+ fs6.writeFileSync(bindingSidecarPath(socketPath), text, "utf8");
1534
1502
  }
1535
1503
  function removeBindingSidecar(socketPath) {
1536
1504
  try {
1537
- fs8.unlinkSync(bindingSidecarPath(socketPath));
1505
+ fs6.unlinkSync(bindingSidecarPath(socketPath));
1538
1506
  } catch {
1539
1507
  }
1540
1508
  }
@@ -1546,7 +1514,7 @@ var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
1546
1514
 
1547
1515
  // src/config.ts
1548
1516
  var process2 = __toESM(require("process"), 1);
1549
- var fs9 = __toESM(require("fs"), 1);
1517
+ var fs7 = __toESM(require("fs"), 1);
1550
1518
  var path12 = __toESM(require("path"), 1);
1551
1519
  var dotenv = __toESM(require("dotenv"), 1);
1552
1520
  var import_v4 = require("zod/v4");
@@ -1571,7 +1539,7 @@ function resolveApiUrl(env2) {
1571
1539
 
1572
1540
  // src/config.ts
1573
1541
  var dotenvPath = path12.resolve(process2.cwd(), ".env");
1574
- if (fs9.existsSync(dotenvPath)) {
1542
+ if (fs7.existsSync(dotenvPath)) {
1575
1543
  try {
1576
1544
  dotenv.config({ path: dotenvPath });
1577
1545
  } catch (err) {
@@ -1750,7 +1718,7 @@ async function resolveBindingFromWorkspaceRoots(workspaceRoots, options = {}) {
1750
1718
  })
1751
1719
  );
1752
1720
  } catch (err) {
1753
- if (err instanceof Error && (err.message.includes("No local MemoraOne binding") || err.message.includes("memoraone-mcp connect") || err.name === "ReconnectRequiredError")) {
1721
+ if (err instanceof Error && (err.message.includes("No local MemoraOne binding for this workspace") || err.message.includes("No local binding for workspace"))) {
1754
1722
  continue;
1755
1723
  }
1756
1724
  throw err;
@@ -2899,7 +2867,7 @@ function handleBindingStatus(binding, options = {}) {
2899
2867
 
2900
2868
  // src/heartbeat.ts
2901
2869
  var crypto5 = __toESM(require("crypto"), 1);
2902
- var fs10 = __toESM(require("fs"), 1);
2870
+ var fs8 = __toESM(require("fs"), 1);
2903
2871
  var path15 = __toESM(require("path"), 1);
2904
2872
 
2905
2873
  // src/localState/mcpSessionId.ts
@@ -2939,7 +2907,7 @@ function resolvePackageVersion() {
2939
2907
  ];
2940
2908
  for (const candidate of candidates) {
2941
2909
  try {
2942
- const pkg = JSON.parse(fs10.readFileSync(candidate, "utf8"));
2910
+ const pkg = JSON.parse(fs8.readFileSync(candidate, "utf8"));
2943
2911
  if (typeof pkg.version === "string" && pkg.version.trim()) {
2944
2912
  return pkg.version.trim();
2945
2913
  }
@@ -3828,11 +3796,6 @@ async function main(opts = {}) {
3828
3796
  if (debugLog) {
3829
3797
  console.error("[memoraone-mcp][debug] Resolved installation credentials from OS keyring");
3830
3798
  }
3831
- if (binding.legacyM1WarningPath) {
3832
- console.error(
3833
- `[memoraone-mcp] warning: ignoring legacy memoraone.m1 at ${binding.legacyM1WarningPath}`
3834
- );
3835
- }
3836
3799
  const projectId = binding.projectId;
3837
3800
  const existing = getBoundProjectId();
3838
3801
  if (existing !== null && existing !== projectId) {
@@ -3984,7 +3947,7 @@ function parseBindingFromEnv(repositoryBindingId) {
3984
3947
  }
3985
3948
  async function ensureSocketClean(socketPath) {
3986
3949
  try {
3987
- fs11.accessSync(socketPath);
3950
+ fs9.accessSync(socketPath);
3988
3951
  } catch {
3989
3952
  return;
3990
3953
  }
@@ -3996,7 +3959,7 @@ async function ensureSocketClean(socketPath) {
3996
3959
  });
3997
3960
  client.on("error", () => {
3998
3961
  try {
3999
- fs11.unlinkSync(socketPath);
3962
+ fs9.unlinkSync(socketPath);
4000
3963
  log("stale socket removed");
4001
3964
  } catch {
4002
3965
  }
@@ -4027,8 +3990,8 @@ async function runDaemon() {
4027
3990
  await ensureSocketClean(socketPath);
4028
3991
  const cleanupSocketFile = () => {
4029
3992
  try {
4030
- if (fs11.existsSync(socketPath)) {
4031
- fs11.unlinkSync(socketPath);
3993
+ if (fs9.existsSync(socketPath)) {
3994
+ fs9.unlinkSync(socketPath);
4032
3995
  log("socket removed");
4033
3996
  }
4034
3997
  removeBindingSidecar(socketPath);
package/dist/index.cjs CHANGED
@@ -1012,11 +1012,9 @@ var MemoraClient = class {
1012
1012
  var memoraClient_default = MemoraClient;
1013
1013
 
1014
1014
  // src/projectBinding.ts
1015
- var fs8 = __toESM(require("fs/promises"), 1);
1016
1015
  var path11 = __toESM(require("path"), 1);
1017
1016
 
1018
1017
  // src/localState/resolveLocalBinding.ts
1019
- var fs7 = __toESM(require("fs/promises"), 1);
1020
1018
  var path10 = __toESM(require("path"), 1);
1021
1019
 
1022
1020
  // src/localState/pathIndex.ts
@@ -1234,19 +1232,9 @@ function identityMatchesStored(stored, current) {
1234
1232
  }
1235
1233
 
1236
1234
  // src/localState/resolveLocalBinding.ts
1237
- async function detectLegacyM1Warning(workspaceRoot) {
1238
- const candidate = path10.join(path10.resolve(workspaceRoot), CANONICAL_M1_FILENAME);
1239
- try {
1240
- await fs7.access(candidate);
1241
- return candidate;
1242
- } catch {
1243
- return void 0;
1244
- }
1245
- }
1246
1235
  async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1247
1236
  const resolved = path10.resolve(workspaceRoot);
1248
1237
  const identity = await captureRootFilesystemIdentity(resolved, options.identityDeps);
1249
- const legacyM1WarningPath = await detectLegacyM1Warning(resolved);
1250
1238
  const index = await loadPathIndex(options.homeDir);
1251
1239
  const lookup = lookupPathIndex(index, resolved, identity);
1252
1240
  if (lookup.kind === "path") {
@@ -1270,8 +1258,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1270
1258
  return {
1271
1259
  repositoryBindingId: record.repositoryBindingId,
1272
1260
  identity,
1273
- created: false,
1274
- legacyM1WarningPath
1261
+ created: false
1275
1262
  };
1276
1263
  }
1277
1264
  }
@@ -1295,8 +1282,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1295
1282
  repositoryBindingId: record.repositoryBindingId,
1296
1283
  identity,
1297
1284
  created: false,
1298
- renamedFrom: lookup.previousPath,
1299
- legacyM1WarningPath
1285
+ renamedFrom: lookup.previousPath
1300
1286
  };
1301
1287
  }
1302
1288
  }
@@ -1309,8 +1295,7 @@ async function ensureRepositoryBindingForRoot(workspaceRoot, options = {}) {
1309
1295
  return {
1310
1296
  repositoryBindingId,
1311
1297
  identity,
1312
- created: true,
1313
- legacyM1WarningPath
1298
+ created: true
1314
1299
  };
1315
1300
  }
1316
1301
  async function lookupLocalBindingIdentity(workspaceRoot, options = {}) {
@@ -1339,7 +1324,7 @@ async function lookupLocalBindingIdentity(workspaceRoot, options = {}) {
1339
1324
  }
1340
1325
  async function resolveLocalBinding(workspaceRoot, options = {}) {
1341
1326
  const resolved = path10.resolve(workspaceRoot);
1342
- const { repositoryBindingId, legacyM1WarningPath } = await ensureRepositoryBindingForRoot(
1327
+ const { repositoryBindingId } = await ensureRepositoryBindingForRoot(
1343
1328
  resolved,
1344
1329
  { ...options, createIfMissing: false }
1345
1330
  );
@@ -1382,13 +1367,11 @@ async function resolveLocalBinding(workspaceRoot, options = {}) {
1382
1367
  installationPublicId: record.installationPublicId ?? creds.installationPublicId,
1383
1368
  environment: record.environment,
1384
1369
  bindingSource: "local-binding",
1385
- status: record.status,
1386
- legacyM1WarningPath
1370
+ status: record.status
1387
1371
  };
1388
1372
  }
1389
1373
 
1390
1374
  // src/projectBinding.ts
1391
- var CANONICAL_M1_FILENAME = "memoraone.m1";
1392
1375
  function toResolvedBinding(local) {
1393
1376
  return {
1394
1377
  repositoryBindingId: local.repositoryBindingId,
@@ -1397,23 +1380,9 @@ function toResolvedBinding(local) {
1397
1380
  installationPublicId: local.installationPublicId,
1398
1381
  environment: local.environment,
1399
1382
  bindingSource: "local-binding",
1400
- status: local.status,
1401
- legacyM1WarningPath: local.legacyM1WarningPath
1383
+ status: local.status
1402
1384
  };
1403
1385
  }
1404
- async function warnLegacyM1IfPresent(workspaceRoot) {
1405
- const candidate = path11.join(path11.resolve(workspaceRoot), CANONICAL_M1_FILENAME);
1406
- try {
1407
- await fs8.access(candidate);
1408
- process.stderr.write(
1409
- `[memoraone-mcp] warning: ignoring legacy ${CANONICAL_M1_FILENAME} (not used for credentials or binding)
1410
- `
1411
- );
1412
- return candidate;
1413
- } catch {
1414
- return void 0;
1415
- }
1416
- }
1417
1386
  async function resolveAuthoritativeBinding(workspaceRoot, _options = {}) {
1418
1387
  const candidates = normalizeWorkspaceSearchRoots(workspaceRoot);
1419
1388
  if (candidates.length === 0) {
@@ -1423,12 +1392,11 @@ async function resolveAuthoritativeBinding(workspaceRoot, _options = {}) {
1423
1392
  }
1424
1393
  const bindings = [];
1425
1394
  for (const root of candidates) {
1426
- await warnLegacyM1IfPresent(root);
1427
1395
  try {
1428
1396
  const local = await resolveLocalBinding(root);
1429
1397
  bindings.push(toResolvedBinding(local));
1430
1398
  } catch (err) {
1431
- if (err instanceof ReconnectRequiredError) {
1399
+ if (err instanceof ReconnectRequiredError && (err.message.includes("No local binding for workspace") || err.message.includes("No local MemoraOne binding for this workspace"))) {
1432
1400
  continue;
1433
1401
  }
1434
1402
  throw err;
@@ -1647,7 +1615,7 @@ async function resolveBindingFromWorkspaceRoots(workspaceRoots, options = {}) {
1647
1615
  })
1648
1616
  );
1649
1617
  } catch (err) {
1650
- if (err instanceof Error && (err.message.includes("No local MemoraOne binding") || err.message.includes("memoraone-mcp connect") || err.name === "ReconnectRequiredError")) {
1618
+ if (err instanceof Error && (err.message.includes("No local MemoraOne binding for this workspace") || err.message.includes("No local binding for workspace"))) {
1651
1619
  continue;
1652
1620
  }
1653
1621
  throw err;
@@ -1854,7 +1822,7 @@ async function waitForPluginStartupBinding(resolve11, options = {}) {
1854
1822
  }
1855
1823
 
1856
1824
  // src/bindingSidecar.ts
1857
- var fs9 = __toESM(require("fs"), 1);
1825
+ var fs7 = __toESM(require("fs"), 1);
1858
1826
  var path14 = __toESM(require("path"), 1);
1859
1827
  function bindingSidecarPath(socketPath) {
1860
1828
  if (socketPath.endsWith(".sock")) {
@@ -1879,7 +1847,7 @@ function writeBindingSidecar(socketPath, binding, ideType = resolveBindingIdeTyp
1879
1847
  if (/["']?(accessToken|refreshToken|apiKey|clientRedeemKey|clientRefreshKey)["']?\s*:/.test(text)) {
1880
1848
  throw new Error("[memoraone-mcp] Refusing to write sidecar containing secrets");
1881
1849
  }
1882
- fs9.writeFileSync(bindingSidecarPath(socketPath), text, "utf8");
1850
+ fs7.writeFileSync(bindingSidecarPath(socketPath), text, "utf8");
1883
1851
  }
1884
1852
 
1885
1853
  // src/bridgeClientRoots.ts
@@ -2825,7 +2793,7 @@ function handleBindingStatus(binding, options = {}) {
2825
2793
 
2826
2794
  // src/heartbeat.ts
2827
2795
  var crypto5 = __toESM(require("crypto"), 1);
2828
- var fs10 = __toESM(require("fs"), 1);
2796
+ var fs8 = __toESM(require("fs"), 1);
2829
2797
  var path15 = __toESM(require("path"), 1);
2830
2798
 
2831
2799
  // src/localState/mcpSessionId.ts
@@ -2865,7 +2833,7 @@ function resolvePackageVersion() {
2865
2833
  ];
2866
2834
  for (const candidate of candidates) {
2867
2835
  try {
2868
- const pkg = JSON.parse(fs10.readFileSync(candidate, "utf8"));
2836
+ const pkg = JSON.parse(fs8.readFileSync(candidate, "utf8"));
2869
2837
  if (typeof pkg.version === "string" && pkg.version.trim()) {
2870
2838
  return pkg.version.trim();
2871
2839
  }
@@ -3754,11 +3722,6 @@ async function main(opts = {}) {
3754
3722
  if (debugLog) {
3755
3723
  console.error("[memoraone-mcp][debug] Resolved installation credentials from OS keyring");
3756
3724
  }
3757
- if (binding.legacyM1WarningPath) {
3758
- console.error(
3759
- `[memoraone-mcp] warning: ignoring legacy memoraone.m1 at ${binding.legacyM1WarningPath}`
3760
- );
3761
- }
3762
3725
  const projectId = binding.projectId;
3763
3726
  const existing = getBoundProjectId();
3764
3727
  if (existing !== null && existing !== projectId) {