@remnic/cli 10.0.47 → 10.0.49
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/index.js +22 -16
- package/package.json +32 -32
package/dist/index.js
CHANGED
|
@@ -597,7 +597,7 @@ import {
|
|
|
597
597
|
offlineSyncStateFromSnapshot,
|
|
598
598
|
readOfflineSyncFileContentChunk,
|
|
599
599
|
readOfflineSyncState,
|
|
600
|
-
embeddingGenerationMembership as
|
|
600
|
+
embeddingGenerationMembership as embeddingGenerationMembership3,
|
|
601
601
|
divergedEmbeddingGenerationDeferrals,
|
|
602
602
|
shouldPreferIncomingOfflineRuntimeFile,
|
|
603
603
|
summarizeOfflineSyncPendingChanges,
|
|
@@ -4537,12 +4537,24 @@ function resolveCredentialChannel(input, env, hooks) {
|
|
|
4537
4537
|
}
|
|
4538
4538
|
|
|
4539
4539
|
// src/converge-capture-lock.ts
|
|
4540
|
-
import { resolveConvergeCaptureWriteLockBackoff } from "@remnic/core";
|
|
4540
|
+
import { advanceEmbeddingGenerationMarker, embeddingGenerationMembership, resolveConvergeCaptureWriteLockBackoff } from "@remnic/core";
|
|
4541
4541
|
import { isTombstoneBlockedCaptureWriteLockBusy } from "@remnic/core/capture-write-lock-backoff.js";
|
|
4542
4542
|
function createConvergeStorageIoOpener(convergeConfig, signal) {
|
|
4543
4543
|
const backoff = resolveConvergeCaptureWriteLockBackoff(convergeConfig);
|
|
4544
4544
|
return (rootDir) => createOfflineStorageIo(rootDir, void 0, void 0, backoff, signal);
|
|
4545
4545
|
}
|
|
4546
|
+
async function deleteConvergeFile(io, target, expectedSha256) {
|
|
4547
|
+
await advanceEmbeddingGenerationMarker(
|
|
4548
|
+
target.root,
|
|
4549
|
+
embeddingGenerationMembership(target.path),
|
|
4550
|
+
() => io.deleteFile(target),
|
|
4551
|
+
async () => {
|
|
4552
|
+
if ((await io.readFileDigest(target)).sha256 !== expectedSha256) {
|
|
4553
|
+
throw new Error(`converge file changed before deletion: ${target.path}`);
|
|
4554
|
+
}
|
|
4555
|
+
}
|
|
4556
|
+
);
|
|
4557
|
+
}
|
|
4546
4558
|
function handleConvergeTransferResults(results, batch, onFailed) {
|
|
4547
4559
|
for (let index = 0; index < results.length; index += 1) {
|
|
4548
4560
|
const result = results[index];
|
|
@@ -5155,11 +5167,8 @@ async function executeConvergeApply(options = {}) {
|
|
|
5155
5167
|
try {
|
|
5156
5168
|
const io = await openStorageIo(rootDir);
|
|
5157
5169
|
const filePath = path7.join(rootDir, localPath);
|
|
5158
|
-
|
|
5159
|
-
|
|
5160
|
-
await io.deleteFile({ root: rootDir, path: localPath, filePath });
|
|
5161
|
-
deleted = true;
|
|
5162
|
-
}
|
|
5170
|
+
await deleteConvergeFile(io, { root: rootDir, path: localPath, filePath }, entry.localSha256);
|
|
5171
|
+
deleted = true;
|
|
5163
5172
|
} catch {
|
|
5164
5173
|
deleted = false;
|
|
5165
5174
|
}
|
|
@@ -5210,11 +5219,8 @@ async function executeConvergeApply(options = {}) {
|
|
|
5210
5219
|
try {
|
|
5211
5220
|
const io = await openStorageIo(rootDir);
|
|
5212
5221
|
const filePath = path7.join(rootDir, localPath);
|
|
5213
|
-
|
|
5214
|
-
|
|
5215
|
-
await io.deleteFile({ root: rootDir, path: localPath, filePath });
|
|
5216
|
-
deletedLocal = true;
|
|
5217
|
-
}
|
|
5222
|
+
await deleteConvergeFile(io, { root: rootDir, path: localPath, filePath }, entry.localSha256);
|
|
5223
|
+
deletedLocal = true;
|
|
5218
5224
|
} catch {
|
|
5219
5225
|
deletedLocal = false;
|
|
5220
5226
|
}
|
|
@@ -5805,13 +5811,13 @@ async function drainOfflineSyncImpressions(memoryDir, rotation) {
|
|
|
5805
5811
|
import { lstat as lstat3, mkdir as mkdir2, mkdtemp as mkdtemp2, readFile as readFile2, readdir as readdir3, rm as rm3, writeFile as writeFile2 } from "fs/promises";
|
|
5806
5812
|
import path8 from "path";
|
|
5807
5813
|
import { hostname } from "os";
|
|
5808
|
-
import { StorageManager as StorageManager4, embeddingGenerationMembership } from "@remnic/core";
|
|
5814
|
+
import { StorageManager as StorageManager4, embeddingGenerationMembership as embeddingGenerationMembership2 } from "@remnic/core";
|
|
5809
5815
|
var GENERATION_STAGING_PREFIX = "generation-incoming-";
|
|
5810
5816
|
function generationMembersForStagedTransport(options) {
|
|
5811
5817
|
const currentByPath = new Map((options.currentFiles ?? []).map((file) => [file.path, file]));
|
|
5812
5818
|
const deferred = new Set(options.deferredPaths ?? []);
|
|
5813
5819
|
return options.incomingFiles.filter(
|
|
5814
|
-
(file) => file.bytes >= options.minBytes && !deferred.has(file.path) && currentByPath.get(file.path)?.sha256 !== file.sha256 &&
|
|
5820
|
+
(file) => file.bytes >= options.minBytes && !deferred.has(file.path) && currentByPath.get(file.path)?.sha256 !== file.sha256 && embeddingGenerationMembership2(file.path) !== null
|
|
5815
5821
|
).sort((left, right) => right.bytes - left.bytes || left.path.localeCompare(right.path));
|
|
5816
5822
|
}
|
|
5817
5823
|
async function assertPrivateOfflineDir(offlineDir) {
|
|
@@ -16188,7 +16194,7 @@ function offlineSnapshotContentFilesForApply(options) {
|
|
|
16188
16194
|
function shouldDirectHydrateOfflineFile(options) {
|
|
16189
16195
|
if (options.incoming.bytes < OFFLINE_SYNC_DIRECT_HYDRATE_MIN_BYTES) return false;
|
|
16190
16196
|
if (options.current?.sha256 === options.incoming.sha256) return false;
|
|
16191
|
-
if (
|
|
16197
|
+
if (embeddingGenerationMembership3(options.incoming.path)) return false;
|
|
16192
16198
|
if (shouldPreferIncomingOfflineRuntimeFile(options.incoming.path)) return true;
|
|
16193
16199
|
if (options.current && options.base && options.current.sha256 === options.base.sha256) {
|
|
16194
16200
|
return true;
|
|
@@ -16633,7 +16639,7 @@ function chunkOfflineChangesetApplyBatches(changeset, namespace, maxRequestBytes
|
|
|
16633
16639
|
const items = [];
|
|
16634
16640
|
const itemIndexByDir = /* @__PURE__ */ new Map();
|
|
16635
16641
|
for (const change of changeset.changes) {
|
|
16636
|
-
const membership =
|
|
16642
|
+
const membership = embeddingGenerationMembership3(change.path);
|
|
16637
16643
|
if (!membership) {
|
|
16638
16644
|
items.push({ changes: [change], shardDir: null });
|
|
16639
16645
|
continue;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/cli",
|
|
3
|
-
"version": "10.0.
|
|
3
|
+
"version": "10.0.49",
|
|
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/
|
|
30
|
-
"@remnic/
|
|
31
|
-
"@remnic/
|
|
29
|
+
"@remnic/server": "^10.0.49",
|
|
30
|
+
"@remnic/plugin-pi": "^10.0.49",
|
|
31
|
+
"@remnic/core": "^10.0.49"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@remnic/bench": "^10.0.
|
|
35
|
-
"@remnic/plugin-openclaw": "^10.0.
|
|
36
|
-
"@remnic/export-weclone": "^10.0.
|
|
37
|
-
"@remnic/import-weclone": "^10.0.
|
|
38
|
-
"@remnic/import-chatgpt": "^10.0.
|
|
39
|
-
"@remnic/import-claude": "^10.0.
|
|
40
|
-
"@remnic/import-gemini": "^10.0.
|
|
41
|
-
"@remnic/import-lossless-claw": "^10.0.
|
|
42
|
-
"@remnic/import-mem0": "^10.0.
|
|
43
|
-
"@remnic/import-supermemory": "^10.0.
|
|
44
|
-
"@remnic/import-okf": "^10.0.
|
|
45
|
-
"@remnic/connector-limitless": "^10.0.
|
|
46
|
-
"@remnic/connector-bee": "^10.0.
|
|
47
|
-
"@remnic/connector-omi": "^10.0.
|
|
48
|
-
"@remnic/capture-audio": "^10.0.
|
|
34
|
+
"@remnic/bench": "^10.0.49",
|
|
35
|
+
"@remnic/plugin-openclaw": "^10.0.49",
|
|
36
|
+
"@remnic/export-weclone": "^10.0.49",
|
|
37
|
+
"@remnic/import-weclone": "^10.0.49",
|
|
38
|
+
"@remnic/import-chatgpt": "^10.0.49",
|
|
39
|
+
"@remnic/import-claude": "^10.0.49",
|
|
40
|
+
"@remnic/import-gemini": "^10.0.49",
|
|
41
|
+
"@remnic/import-lossless-claw": "^10.0.49",
|
|
42
|
+
"@remnic/import-mem0": "^10.0.49",
|
|
43
|
+
"@remnic/import-supermemory": "^10.0.49",
|
|
44
|
+
"@remnic/import-okf": "^10.0.49",
|
|
45
|
+
"@remnic/connector-limitless": "^10.0.49",
|
|
46
|
+
"@remnic/connector-bee": "^10.0.49",
|
|
47
|
+
"@remnic/connector-omi": "^10.0.49",
|
|
48
|
+
"@remnic/capture-audio": "^10.0.49"
|
|
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/plugin-openclaw": "10.0.
|
|
101
|
-
"@remnic/bench": "10.0.
|
|
102
|
-
"@remnic/export-weclone": "10.0.
|
|
103
|
-
"@remnic/import-weclone": "10.0.
|
|
104
|
-
"@remnic/import-claude": "10.0.
|
|
105
|
-
"@remnic/import-gemini": "10.0.
|
|
106
|
-
"@remnic/import-
|
|
107
|
-
"@remnic/import-
|
|
108
|
-
"@remnic/import-
|
|
109
|
-
"@remnic/import-
|
|
110
|
-
"@remnic/connector-limitless": "10.0.
|
|
111
|
-
"@remnic/connector-
|
|
112
|
-
"@remnic/connector-
|
|
100
|
+
"@remnic/plugin-openclaw": "10.0.49",
|
|
101
|
+
"@remnic/bench": "10.0.49",
|
|
102
|
+
"@remnic/export-weclone": "10.0.49",
|
|
103
|
+
"@remnic/import-weclone": "10.0.49",
|
|
104
|
+
"@remnic/import-claude": "10.0.49",
|
|
105
|
+
"@remnic/import-gemini": "10.0.49",
|
|
106
|
+
"@remnic/import-chatgpt": "10.0.49",
|
|
107
|
+
"@remnic/import-lossless-claw": "10.0.49",
|
|
108
|
+
"@remnic/import-mem0": "10.0.49",
|
|
109
|
+
"@remnic/import-supermemory": "10.0.49",
|
|
110
|
+
"@remnic/connector-limitless": "10.0.49",
|
|
111
|
+
"@remnic/connector-omi": "10.0.49",
|
|
112
|
+
"@remnic/connector-bee": "10.0.49"
|
|
113
113
|
},
|
|
114
114
|
"license": "MIT",
|
|
115
115
|
"repository": {
|