@remnic/cli 9.69.46 → 9.69.48

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.
Files changed (2) hide show
  1. package/dist/index.js +37 -8
  2. package/package.json +32 -32
package/dist/index.js CHANGED
@@ -3005,6 +3005,7 @@ async function planLocalNamespaceCensus(args) {
3005
3005
  const evidence = await readLocalTombstoneEvidence(rootDir);
3006
3006
  let manifestReadFailed = false;
3007
3007
  const manifest = await buildReconcileManifest({
3008
+ signal: args.signal,
3008
3009
  files,
3009
3010
  parseMemory: parseFrontmatter,
3010
3011
  citationTemplate: args.citationTemplate,
@@ -3288,7 +3289,7 @@ async function fetchPeerSyncCapabilities(peerUrl, token, fetchImpl, timeoutMs) {
3288
3289
  }
3289
3290
  return null;
3290
3291
  }
3291
- async function fetchPeerManifestStream(peerUrl, namespace, token, fetchImpl = globalThis.fetch, timeoutMs = DEFAULT_PEER_REQUEST_TIMEOUT_MS) {
3292
+ async function fetchPeerManifestStream(peerUrl, namespace, token, fetchImpl = globalThis.fetch, timeoutMs = DEFAULT_PEER_REQUEST_TIMEOUT_MS, signal) {
3292
3293
  const base = normalizePeerBaseUrl(peerUrl);
3293
3294
  const headers = token ? { authorization: `Bearer ${token}` } : {};
3294
3295
  const routes = [
@@ -3296,7 +3297,12 @@ async function fetchPeerManifestStream(peerUrl, namespace, token, fetchImpl = gl
3296
3297
  `/engram/v1/offline-sync/manifest-stream?namespace=${encodeURIComponent(namespace)}&include_transcripts=false`
3297
3298
  ];
3298
3299
  for (const route of routes) {
3299
- const response = await fetchPeerRequest(fetchImpl, `${base}${route}`, { headers }, timeoutMs);
3300
+ const response = await fetchPeerRequest(
3301
+ fetchImpl,
3302
+ `${base}${route}`,
3303
+ { headers, ...signal ? { signal } : {} },
3304
+ timeoutMs
3305
+ );
3300
3306
  if (response.status === 404 || response.status === 405) continue;
3301
3307
  if (response.status === 401 || response.status === 403) {
3302
3308
  throw new Error(`peer manifest authentication failed: HTTP ${response.status}`);
@@ -3306,7 +3312,7 @@ async function fetchPeerManifestStream(peerUrl, namespace, token, fetchImpl = gl
3306
3312
  }
3307
3313
  return null;
3308
3314
  }
3309
- async function fetchPeerSnapshot(peerUrl, namespace, token, fetchImpl = globalThis.fetch, timeoutMs = DEFAULT_PEER_REQUEST_TIMEOUT_MS) {
3315
+ async function fetchPeerSnapshot(peerUrl, namespace, token, fetchImpl = globalThis.fetch, timeoutMs = DEFAULT_PEER_REQUEST_TIMEOUT_MS, signal) {
3310
3316
  const base = normalizePeerBaseUrl(peerUrl);
3311
3317
  const routes = [
3312
3318
  // The snapshot validates the cached peer manifest, whose file set
@@ -3322,8 +3328,14 @@ async function fetchPeerSnapshot(peerUrl, namespace, token, fetchImpl = globalTh
3322
3328
  for (const route of routes) {
3323
3329
  let response;
3324
3330
  try {
3325
- response = await fetchPeerRequest(fetchImpl, `${base}${route}`, { headers }, timeoutMs);
3331
+ response = await fetchPeerRequest(
3332
+ fetchImpl,
3333
+ `${base}${route}`,
3334
+ { headers, ...signal ? { signal } : {} },
3335
+ timeoutMs
3336
+ );
3326
3337
  } catch (error) {
3338
+ if (signal?.aborted) throw error;
3327
3339
  lastFailure = error instanceof Error ? error.message : String(error);
3328
3340
  continue;
3329
3341
  }
@@ -3619,7 +3631,14 @@ async function postPeerFileDeletion(peerUrl, namespace, filePath, baseSha256, to
3619
3631
  async function planPeerNamespaceCensus(args) {
3620
3632
  const { peerUrl, ns } = { peerUrl: args.peerUrl, ns: args.namespace };
3621
3633
  args.signal?.throwIfAborted();
3622
- const peerData = await fetchPeerSnapshot(peerUrl, ns, args.resolvedToken, args.fetchFn, args.timeoutMs);
3634
+ const peerData = await fetchPeerSnapshot(
3635
+ peerUrl,
3636
+ ns,
3637
+ args.resolvedToken,
3638
+ args.fetchFn,
3639
+ args.timeoutMs,
3640
+ args.signal
3641
+ );
3623
3642
  const priorPeerEntry = args.cache ? await args.cache.readEntry("peer", ns) : null;
3624
3643
  const revisionTrusted = args.peerManifestRevision !== void 0 && priorPeerEntry?.peerManifestRevision === args.peerManifestRevision;
3625
3644
  const clientBuiltPrior = priorPeerEntry?.clientBuilt === true;
@@ -3643,7 +3662,14 @@ async function planPeerNamespaceCensus(args) {
3643
3662
  })
3644
3663
  };
3645
3664
  } else {
3646
- const streamedManifest = args.manifestStream ? await fetchPeerManifestStream(peerUrl, ns, args.resolvedToken, args.fetchFn, args.timeoutMs) : null;
3665
+ const streamedManifest = args.manifestStream ? await fetchPeerManifestStream(
3666
+ peerUrl,
3667
+ ns,
3668
+ args.resolvedToken,
3669
+ args.fetchFn,
3670
+ args.timeoutMs,
3671
+ args.signal
3672
+ ) : null;
3647
3673
  peerManifest = streamedManifest;
3648
3674
  if (peerManifest) {
3649
3675
  clientBuilt = false;
@@ -3654,6 +3680,7 @@ async function planPeerNamespaceCensus(args) {
3654
3680
  files: peerData.files,
3655
3681
  parseMemory: parseFrontmatter2,
3656
3682
  citationTemplate: args.citationTemplate,
3683
+ signal: args.signal,
3657
3684
  // Older peers need one content request per memory file; prior cache
3658
3685
  // rows (sha-keyed) skip the ones already fetched.
3659
3686
  cachedFiles: priorPeerFiles ?? args.localManifestFiles,
@@ -3666,7 +3693,8 @@ async function planPeerNamespaceCensus(args) {
3666
3693
  file.path,
3667
3694
  args.resolvedToken,
3668
3695
  args.fetchFn,
3669
- args.timeoutMs
3696
+ args.timeoutMs,
3697
+ args.signal
3670
3698
  );
3671
3699
  } catch (error) {
3672
3700
  readFailure = error instanceof Error ? error : new Error(String(error));
@@ -3693,7 +3721,8 @@ async function planPeerNamespaceCensus(args) {
3693
3721
  tombstonePath,
3694
3722
  args.resolvedToken,
3695
3723
  args.fetchFn,
3696
- args.timeoutMs
3724
+ args.timeoutMs,
3725
+ args.signal
3697
3726
  );
3698
3727
  if (!remote) {
3699
3728
  throw new Error(`failed to read peer tombstone evidence: ${tombstonePath}`);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@remnic/cli",
3
- "version": "9.69.46",
3
+ "version": "9.69.48",
4
4
  "description": "CLI for Remnic memory — init, query, doctor, daemon management",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -26,26 +26,26 @@
26
26
  },
27
27
  "dependencies": {
28
28
  "yaml": "^2.4.2",
29
- "@remnic/plugin-pi": "^9.69.46",
30
- "@remnic/server": "^9.69.46",
31
- "@remnic/core": "^9.69.46"
29
+ "@remnic/plugin-pi": "^9.69.48",
30
+ "@remnic/core": "^9.69.48",
31
+ "@remnic/server": "^9.69.48"
32
32
  },
33
33
  "peerDependencies": {
34
- "@remnic/bench": "^9.69.46",
35
- "@remnic/plugin-openclaw": "^9.69.46",
36
- "@remnic/export-weclone": "^9.69.46",
37
- "@remnic/import-weclone": "^9.69.46",
38
- "@remnic/import-chatgpt": "^9.69.46",
39
- "@remnic/import-claude": "^9.69.46",
40
- "@remnic/import-gemini": "^9.69.46",
41
- "@remnic/import-lossless-claw": "^9.69.46",
42
- "@remnic/import-mem0": "^9.69.46",
43
- "@remnic/import-supermemory": "^9.69.46",
44
- "@remnic/import-okf": "^9.69.46",
45
- "@remnic/connector-limitless": "^9.69.46",
46
- "@remnic/connector-bee": "^9.69.46",
47
- "@remnic/connector-omi": "^9.69.46",
48
- "@remnic/capture-audio": "^9.69.46"
34
+ "@remnic/bench": "^9.69.48",
35
+ "@remnic/plugin-openclaw": "^9.69.48",
36
+ "@remnic/export-weclone": "^9.69.48",
37
+ "@remnic/import-weclone": "^9.69.48",
38
+ "@remnic/import-chatgpt": "^9.69.48",
39
+ "@remnic/import-claude": "^9.69.48",
40
+ "@remnic/import-gemini": "^9.69.48",
41
+ "@remnic/import-lossless-claw": "^9.69.48",
42
+ "@remnic/import-mem0": "^9.69.48",
43
+ "@remnic/import-supermemory": "^9.69.48",
44
+ "@remnic/import-okf": "^9.69.48",
45
+ "@remnic/connector-limitless": "^9.69.48",
46
+ "@remnic/connector-bee": "^9.69.48",
47
+ "@remnic/connector-omi": "^9.69.48",
48
+ "@remnic/capture-audio": "^9.69.48"
49
49
  },
50
50
  "peerDependenciesMeta": {
51
51
  "@remnic/bench": {
@@ -97,19 +97,19 @@
97
97
  "devDependencies": {
98
98
  "tsup": "^8.5.1",
99
99
  "typescript": "^5.9.3",
100
- "@remnic/bench": "9.69.46",
101
- "@remnic/plugin-openclaw": "9.69.46",
102
- "@remnic/export-weclone": "9.69.46",
103
- "@remnic/import-weclone": "9.69.46",
104
- "@remnic/import-chatgpt": "9.69.46",
105
- "@remnic/import-claude": "9.69.46",
106
- "@remnic/import-gemini": "9.69.46",
107
- "@remnic/import-lossless-claw": "9.69.46",
108
- "@remnic/import-mem0": "9.69.46",
109
- "@remnic/connector-limitless": "9.69.46",
110
- "@remnic/import-supermemory": "9.69.46",
111
- "@remnic/connector-omi": "9.69.46",
112
- "@remnic/connector-bee": "9.69.46"
100
+ "@remnic/bench": "9.69.48",
101
+ "@remnic/plugin-openclaw": "9.69.48",
102
+ "@remnic/export-weclone": "9.69.48",
103
+ "@remnic/import-chatgpt": "9.69.48",
104
+ "@remnic/import-claude": "9.69.48",
105
+ "@remnic/import-gemini": "9.69.48",
106
+ "@remnic/import-weclone": "9.69.48",
107
+ "@remnic/import-lossless-claw": "9.69.48",
108
+ "@remnic/import-mem0": "9.69.48",
109
+ "@remnic/import-supermemory": "9.69.48",
110
+ "@remnic/connector-bee": "9.69.48",
111
+ "@remnic/connector-limitless": "9.69.48",
112
+ "@remnic/connector-omi": "9.69.48"
113
113
  },
114
114
  "license": "MIT",
115
115
  "repository": {