@remnic/plugin-openclaw 1.0.46 → 1.0.47
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/{causal-consolidation-6XK2QX6F.js → causal-consolidation-V533DIGW.js} +3 -3
- package/dist/{chunk-Q7COZSFU.js → chunk-2RQU6GVD.js} +1 -1
- package/dist/{chunk-IB4WJJF7.js → chunk-BQZ7JACP.js} +71 -0
- package/dist/{chunk-GXMAAGP2.js → chunk-MWLY7VQX.js} +1 -1
- package/dist/{chunk-J3EKUNTG.js → chunk-PSAPZGDX.js} +1 -1
- package/dist/{chunk-EPX44ITH.js → chunk-QVTGUY3H.js} +2 -2
- package/dist/{chunk-SDPTCSV7.js → chunk-YXDXRE6N.js} +12 -2
- package/dist/{engine-3GWI63BG.js → engine-7VG3IXKN.js} +3 -3
- package/dist/index.js +10 -8
- package/dist/{memory-governance-UGY2MUWJ.js → memory-governance-TK4B4ZZ2.js} +3 -3
- package/dist/{secure-store-5YT34LSD.js → secure-store-6RWYM6GK.js} +2 -2
- package/dist/{storage-ZSSESS6C.js → storage-HUNVVHZ7.js} +2 -2
- package/openclaw.plugin.json +1 -1
- package/package.json +2 -2
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
import {
|
|
6
6
|
buildExtensionsBlockForConsolidation,
|
|
7
7
|
runPostConsolidationMaterialize
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-MWLY7VQX.js";
|
|
9
9
|
import "./chunk-TH5FF5SC.js";
|
|
10
10
|
import {
|
|
11
11
|
resolveCausalTrajectoryStoreDir
|
|
@@ -21,9 +21,9 @@ import {
|
|
|
21
21
|
FallbackLlmClient
|
|
22
22
|
} from "./chunk-SWOYEQN2.js";
|
|
23
23
|
import "./chunk-3A5ELHTT.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-YXDXRE6N.js";
|
|
25
25
|
import "./chunk-QMUQV5NP.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-BQZ7JACP.js";
|
|
27
27
|
import {
|
|
28
28
|
log
|
|
29
29
|
} from "./chunk-UFU5GGGA.js";
|
|
@@ -1,13 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
+
AUTH_TAG_LENGTH,
|
|
3
|
+
ENVELOPE_HEADER_SIZE,
|
|
4
|
+
ENVELOPE_LAYOUT,
|
|
5
|
+
ENVELOPE_SALT_LENGTH,
|
|
6
|
+
ENVELOPE_VERSION,
|
|
7
|
+
IV_LENGTH,
|
|
2
8
|
generateSalt,
|
|
3
9
|
open,
|
|
4
10
|
seal
|
|
5
11
|
} from "./chunk-YGGGUTG3.js";
|
|
6
12
|
|
|
7
13
|
// ../remnic-core/src/secure-store/secure-fs.ts
|
|
14
|
+
import { createCipheriv, randomBytes } from "crypto";
|
|
8
15
|
import * as fsReadModule0 from "fs/promises";
|
|
9
16
|
const lstat = fsReadModule0.lstat;
|
|
10
17
|
const mkdir = fsReadModule0.mkdir;
|
|
18
|
+
const openFile = fsReadModule0.open;
|
|
11
19
|
const fileReader = fsReadModule0["re"+"ad"+"Fi"+"le"];
|
|
12
20
|
const readdir = fsReadModule0.readdir;
|
|
13
21
|
const rename = fsReadModule0.rename;
|
|
@@ -69,6 +77,12 @@ function decryptFileBody(buf, key, aad) {
|
|
|
69
77
|
);
|
|
70
78
|
}
|
|
71
79
|
}
|
|
80
|
+
function buildHeaderAad(salt) {
|
|
81
|
+
const out = Buffer.alloc(1 + ENVELOPE_SALT_LENGTH);
|
|
82
|
+
out.writeUInt8(ENVELOPE_VERSION, 0);
|
|
83
|
+
Buffer.from(salt).copy(out, 1);
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
72
86
|
function filePathAad(filePath, memoryDir) {
|
|
73
87
|
let rel = filePath;
|
|
74
88
|
if (memoryDir && path.isAbsolute(filePath)) {
|
|
@@ -118,6 +132,62 @@ async function writeMaybeEncryptedFile(filePath, content, key, options = {}, mem
|
|
|
118
132
|
await writeFile(filePath, data, { mode });
|
|
119
133
|
}
|
|
120
134
|
}
|
|
135
|
+
async function writeMaybeEncryptedFileFromChunks(filePath, chunks, key, options = {}, memoryDir) {
|
|
136
|
+
const { mode = 384, atomic = true } = options;
|
|
137
|
+
await mkdir(path.dirname(filePath), { recursive: true });
|
|
138
|
+
const writePath = atomic ? `${filePath}.tmp-${process.pid}-${Date.now()}` : filePath;
|
|
139
|
+
let completed = false;
|
|
140
|
+
try {
|
|
141
|
+
const handle = await openFile(writePath, "w", mode);
|
|
142
|
+
try {
|
|
143
|
+
if (key !== null) {
|
|
144
|
+
const salt = generateSalt();
|
|
145
|
+
const iv = randomBytes(IV_LENGTH);
|
|
146
|
+
const header = Buffer.alloc(MAGIC_HEADER_SIZE + ENVELOPE_HEADER_SIZE);
|
|
147
|
+
MAGIC_BYTES.copy(header, 0);
|
|
148
|
+
header.writeUInt8(FILE_FORMAT_VERSION, MAGIC_BYTES.length);
|
|
149
|
+
header.writeUInt8(FILE_FORMAT_FLAGS, MAGIC_BYTES.length + 1);
|
|
150
|
+
const envelopeOffset = MAGIC_HEADER_SIZE;
|
|
151
|
+
header.writeUInt8(ENVELOPE_VERSION, envelopeOffset + ENVELOPE_LAYOUT.version);
|
|
152
|
+
salt.copy(header, envelopeOffset + ENVELOPE_LAYOUT.salt);
|
|
153
|
+
iv.copy(header, envelopeOffset + ENVELOPE_LAYOUT.iv);
|
|
154
|
+
await handle.write(header);
|
|
155
|
+
const cipher = createCipheriv("aes-256-gcm", key, iv, { authTagLength: AUTH_TAG_LENGTH });
|
|
156
|
+
const aad = filePathAad(filePath, memoryDir);
|
|
157
|
+
cipher.setAAD(Buffer.concat([buildHeaderAad(salt), aad]));
|
|
158
|
+
for await (const chunk of chunks) {
|
|
159
|
+
if (chunk.length === 0) continue;
|
|
160
|
+
const encrypted = cipher.update(chunk);
|
|
161
|
+
if (encrypted.length > 0) await handle.write(encrypted);
|
|
162
|
+
}
|
|
163
|
+
const final = cipher.final();
|
|
164
|
+
if (final.length > 0) await handle.write(final);
|
|
165
|
+
const authTag = cipher.getAuthTag();
|
|
166
|
+
await handle.write(
|
|
167
|
+
authTag,
|
|
168
|
+
0,
|
|
169
|
+
authTag.length,
|
|
170
|
+
MAGIC_HEADER_SIZE + ENVELOPE_LAYOUT.authTag
|
|
171
|
+
);
|
|
172
|
+
} else {
|
|
173
|
+
for await (const chunk of chunks) {
|
|
174
|
+
if (chunk.length > 0) await handle.write(chunk);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
} finally {
|
|
178
|
+
await handle.close();
|
|
179
|
+
}
|
|
180
|
+
if (atomic) {
|
|
181
|
+
await rename(writePath, filePath);
|
|
182
|
+
}
|
|
183
|
+
completed = true;
|
|
184
|
+
} finally {
|
|
185
|
+
if (!completed && atomic) {
|
|
186
|
+
await unlink(writePath).catch(() => {
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
121
191
|
async function migrateMemoryDirToEncrypted(dir, key, onBeforeEncrypt) {
|
|
122
192
|
const result = { encrypted: 0, skipped: 0, errors: [] };
|
|
123
193
|
const files = await collectEncryptableStorageFiles(dir);
|
|
@@ -313,6 +383,7 @@ export {
|
|
|
313
383
|
readMaybeEncryptedFileBuffer,
|
|
314
384
|
readMaybeEncryptedFile,
|
|
315
385
|
writeMaybeEncryptedFile,
|
|
386
|
+
writeMaybeEncryptedFileFromChunks,
|
|
316
387
|
migrateMemoryDirToEncrypted,
|
|
317
388
|
decryptMemoryDirToPlaintext
|
|
318
389
|
};
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
StorageManager,
|
|
6
6
|
parseContinuityImprovementLoops,
|
|
7
7
|
sanitizeMemoryContent
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-YXDXRE6N.js";
|
|
9
9
|
import {
|
|
10
10
|
log
|
|
11
11
|
} from "./chunk-UFU5GGGA.js";
|
|
@@ -293,7 +293,7 @@ var CompoundingEngine = class {
|
|
|
293
293
|
let promotionCandidates = this.config.compoundingSemanticEnabled ? this.derivePromotionCandidates(outcomeSummary, mistakes.registry, rubrics) : [];
|
|
294
294
|
if (this.config.cmcConsolidationEnabled) {
|
|
295
295
|
try {
|
|
296
|
-
const { deriveCausalPromotionCandidates, materializeAfterCausalConsolidation } = await import("./causal-consolidation-
|
|
296
|
+
const { deriveCausalPromotionCandidates, materializeAfterCausalConsolidation } = await import("./causal-consolidation-V533DIGW.js");
|
|
297
297
|
const causalCandidates = await deriveCausalPromotionCandidates({
|
|
298
298
|
memoryDir: this.config.memoryDir,
|
|
299
299
|
causalTrajectoryStoreDir: this.config.causalTrajectoryStoreDir,
|
|
@@ -6,8 +6,9 @@ import {
|
|
|
6
6
|
isEncryptedFile,
|
|
7
7
|
readMaybeEncryptedFile,
|
|
8
8
|
readMaybeEncryptedFileBuffer,
|
|
9
|
-
writeMaybeEncryptedFile
|
|
10
|
-
|
|
9
|
+
writeMaybeEncryptedFile,
|
|
10
|
+
writeMaybeEncryptedFileFromChunks
|
|
11
|
+
} from "./chunk-BQZ7JACP.js";
|
|
11
12
|
import {
|
|
12
13
|
log
|
|
13
14
|
} from "./chunk-UFU5GGGA.js";
|
|
@@ -3254,6 +3255,15 @@ var StorageManager = class _StorageManager {
|
|
|
3254
3255
|
await writeMaybeEncryptedFile(target, content, this.resolveWriteKey(), {}, this.baseDir);
|
|
3255
3256
|
await this.invalidateAfterOfflineSyncMutation(target);
|
|
3256
3257
|
}
|
|
3258
|
+
async writeOfflineSyncStagingFile(filePath, content) {
|
|
3259
|
+
const target = this.assertManagedStoragePath(filePath, "storage.writeOfflineSyncStagingFile");
|
|
3260
|
+
await writeMaybeEncryptedFile(target, content, this.resolveWriteKey(), {}, this.baseDir);
|
|
3261
|
+
}
|
|
3262
|
+
async writeOfflineSyncFileChunks(filePath, chunks) {
|
|
3263
|
+
const target = this.assertManagedStoragePath(filePath, "storage.writeOfflineSyncFileChunks");
|
|
3264
|
+
await writeMaybeEncryptedFileFromChunks(target, chunks, this.resolveWriteKey(), {}, this.baseDir);
|
|
3265
|
+
await this.invalidateAfterOfflineSyncMutation(target);
|
|
3266
|
+
}
|
|
3257
3267
|
async deleteOfflineSyncFile(filePath) {
|
|
3258
3268
|
const target = this.assertManagedStoragePath(filePath, "storage.deleteOfflineSyncFile");
|
|
3259
3269
|
await unlink(target).catch((error) => {
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CompoundingEngine,
|
|
3
3
|
defaultTierMigrationCycleBudget
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-QVTGUY3H.js";
|
|
5
5
|
import "./chunk-4XDQ3KEC.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-YXDXRE6N.js";
|
|
7
7
|
import "./chunk-QMUQV5NP.js";
|
|
8
|
-
import "./chunk-
|
|
8
|
+
import "./chunk-BQZ7JACP.js";
|
|
9
9
|
import "./chunk-UFU5GGGA.js";
|
|
10
10
|
import "./chunk-YGGGUTG3.js";
|
|
11
11
|
import "./chunk-EH4AXGRO.js";
|
package/dist/index.js
CHANGED
|
@@ -11,32 +11,32 @@ import "./chunk-ZS6VABML.js";
|
|
|
11
11
|
import "./chunk-QQXJODFL.js";
|
|
12
12
|
import "./chunk-BU5KJVWF.js";
|
|
13
13
|
import "./chunk-LZCGPRHS.js";
|
|
14
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-PSAPZGDX.js";
|
|
15
15
|
import "./chunk-BZ4EYURA.js";
|
|
16
16
|
import "./chunk-W6EEFUCJ.js";
|
|
17
17
|
import "./chunk-7JOLBJJ5.js";
|
|
18
18
|
import "./chunk-JC3FCKYL.js";
|
|
19
19
|
import "./chunk-YJYZMLD5.js";
|
|
20
20
|
import "./chunk-IO5WWY6A.js";
|
|
21
|
-
import "./chunk-
|
|
21
|
+
import "./chunk-MWLY7VQX.js";
|
|
22
22
|
import "./chunk-TH5FF5SC.js";
|
|
23
23
|
import "./chunk-3IKMUNW5.js";
|
|
24
24
|
import "./chunk-3G7FAF6S.js";
|
|
25
25
|
import "./chunk-25J4PXDH.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-QVTGUY3H.js";
|
|
27
27
|
import {
|
|
28
28
|
external_exports
|
|
29
29
|
} from "./chunk-4XDQ3KEC.js";
|
|
30
|
-
import "./chunk-
|
|
30
|
+
import "./chunk-2RQU6GVD.js";
|
|
31
31
|
import "./chunk-MXFJXUHC.js";
|
|
32
32
|
import "./chunk-JZBOXOUC.js";
|
|
33
33
|
import "./chunk-6IWEAUN6.js";
|
|
34
34
|
import "./chunk-SWOYEQN2.js";
|
|
35
35
|
import "./chunk-3A5ELHTT.js";
|
|
36
36
|
import "./chunk-5ZW5XJQ6.js";
|
|
37
|
-
import "./chunk-
|
|
37
|
+
import "./chunk-YXDXRE6N.js";
|
|
38
38
|
import "./chunk-QMUQV5NP.js";
|
|
39
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-BQZ7JACP.js";
|
|
40
40
|
import "./chunk-UFU5GGGA.js";
|
|
41
41
|
import "./chunk-YGGGUTG3.js";
|
|
42
42
|
import "./chunk-NUWDSTP7.js";
|
|
@@ -6648,11 +6648,13 @@ const open5 = fsReadModule27.open;
|
|
|
6648
6648
|
const readdir19 = fsReadModule27.readdir;
|
|
6649
6649
|
const fileReader29 = fsReadModule27["re"+"ad"+"Fi"+"le"];
|
|
6650
6650
|
const rename5 = fsReadModule27.rename;
|
|
6651
|
+
const rm8 = fsReadModule27.rm;
|
|
6651
6652
|
const stat14 = fsReadModule27.stat;
|
|
6652
6653
|
const unlink9 = fsReadModule27.unlink;
|
|
6653
6654
|
const writeFile31 = fsReadModule27.writeFile;
|
|
6654
6655
|
import path48 from "path";
|
|
6655
6656
|
var OFFLINE_SYNC_FILE_CONTENT_MAX_CHUNK_BYTES = 64 * 1024 * 1024;
|
|
6657
|
+
var OFFLINE_SYNC_UPLOAD_STAGING_MAX_AGE_MS = 24 * 60 * 60 * 1e3;
|
|
6656
6658
|
|
|
6657
6659
|
// ../remnic-core/src/action-confidence.ts
|
|
6658
6660
|
var ACTION_CONFIDENCE_RISK_CATEGORIES = [
|
|
@@ -7373,7 +7375,7 @@ const writeFile32 = fsReadModule33.writeFile;
|
|
|
7373
7375
|
|
|
7374
7376
|
// ../remnic-core/src/transfer/backup.ts
|
|
7375
7377
|
import path69 from "path";
|
|
7376
|
-
import { mkdir as mkdir37, readdir as readdir21, rm as
|
|
7378
|
+
import { mkdir as mkdir37, readdir as readdir21, rm as rm9, unlink as unlink10, writeFile as writeFile33 } from "fs/promises";
|
|
7377
7379
|
import { gzipSync } from "zlib";
|
|
7378
7380
|
|
|
7379
7381
|
// ../remnic-core/src/transfer/export-sqlite.ts
|
|
@@ -7413,7 +7415,7 @@ import { mkdir as mkdir42, rename as rename6, stat as stat17, writeFile as write
|
|
|
7413
7415
|
|
|
7414
7416
|
// ../remnic-core/src/maintenance/rebuild-memory-projection.ts
|
|
7415
7417
|
import path77 from "path";
|
|
7416
|
-
import { mkdir as mkdir43, rename as rename7, rm as
|
|
7418
|
+
import { mkdir as mkdir43, rename as rename7, rm as rm10, stat as stat18 } from "fs/promises";
|
|
7417
7419
|
|
|
7418
7420
|
// ../remnic-core/src/maintenance/rebuild-observations.ts
|
|
7419
7421
|
import path79 from "path";
|
|
@@ -6,11 +6,11 @@ import {
|
|
|
6
6
|
readMemoryGovernanceRunArtifact,
|
|
7
7
|
restoreMemoryGovernanceRun,
|
|
8
8
|
runMemoryGovernance
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-PSAPZGDX.js";
|
|
10
10
|
import "./chunk-BZ4EYURA.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-YXDXRE6N.js";
|
|
12
12
|
import "./chunk-QMUQV5NP.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-BQZ7JACP.js";
|
|
14
14
|
import "./chunk-UFU5GGGA.js";
|
|
15
15
|
import "./chunk-YGGGUTG3.js";
|
|
16
16
|
import "./chunk-I2KLQ2HA.js";
|
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
runSecureStoreMigrate,
|
|
14
14
|
runSecureStoreStatus,
|
|
15
15
|
runSecureStoreUnlock
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-2RQU6GVD.js";
|
|
17
17
|
import {
|
|
18
18
|
HEADER_FILENAME,
|
|
19
19
|
HEADER_FORMAT,
|
|
@@ -66,7 +66,7 @@ import {
|
|
|
66
66
|
migrateMemoryDirToEncrypted,
|
|
67
67
|
readMaybeEncryptedFile,
|
|
68
68
|
writeMaybeEncryptedFile
|
|
69
|
-
} from "./chunk-
|
|
69
|
+
} from "./chunk-BQZ7JACP.js";
|
|
70
70
|
import {
|
|
71
71
|
AES_KEY_LENGTH,
|
|
72
72
|
AUTH_TAG_LENGTH,
|
|
@@ -8,9 +8,9 @@ import {
|
|
|
8
8
|
normalizeEntityName,
|
|
9
9
|
parseEntityFile,
|
|
10
10
|
serializeEntityFile
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-YXDXRE6N.js";
|
|
12
12
|
import "./chunk-QMUQV5NP.js";
|
|
13
|
-
import "./chunk-
|
|
13
|
+
import "./chunk-BQZ7JACP.js";
|
|
14
14
|
import "./chunk-UFU5GGGA.js";
|
|
15
15
|
import "./chunk-YGGGUTG3.js";
|
|
16
16
|
import "./chunk-I2KLQ2HA.js";
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "openclaw-remnic",
|
|
3
3
|
"name": "Remnic OpenClaw Plugin",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.47",
|
|
5
5
|
"kind": "memory",
|
|
6
6
|
"description": "Local semantic memory for OpenClaw with bundled Remnic core runtime. Requires plugins.slots.memory set to this plugin id for hooks to fire.",
|
|
7
7
|
"setup": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/plugin-openclaw",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.47",
|
|
4
4
|
"description": "OpenClaw adapter for Remnic memory with bundled @remnic/core runtime",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
73
|
"openai": "^6.0.0",
|
|
74
|
-
"@remnic/core": "^1.1.
|
|
74
|
+
"@remnic/core": "^1.1.23"
|
|
75
75
|
},
|
|
76
76
|
"peerDependencies": {
|
|
77
77
|
"openclaw": ">=2026.5.16-beta.1"
|