@remnic/core 9.63.0 → 9.63.1
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/access-admin-ops-surface.d.ts +1 -1
- package/dist/access-admin-ops-surface.js +13 -13
- package/dist/access-authorization-probe.d.ts +1 -1
- package/dist/access-authorization-probe.js +14 -14
- package/dist/access-boundary.d.ts +1 -1
- package/dist/access-boundary.js +13 -13
- package/dist/access-cli.js +43 -43
- package/dist/access-extraction-force-flush.d.ts +1 -1
- package/dist/access-extraction-force-flush.js +13 -13
- package/dist/access-http-lcm-compaction.d.ts +1 -1
- package/dist/access-http-lifecycle-flush.d.ts +1 -1
- package/dist/access-http-offline-stream.d.ts +1 -1
- package/dist/access-http-query.js +13 -13
- package/dist/access-http.d.ts +2 -2
- package/dist/access-http.js +22 -22
- package/dist/access-identity-continuity-surface.js +13 -13
- package/dist/access-lcm-surface.d.ts +1 -1
- package/dist/access-lcm-surface.js +13 -13
- package/dist/access-mcp.d.ts +1 -1
- package/dist/access-mcp.js +18 -18
- package/dist/access-namespace-preflight.js +13 -13
- package/dist/access-observe-write-surface.d.ts +1 -1
- package/dist/access-observe-write-surface.js +13 -13
- package/dist/access-operations-batch.js +14 -14
- package/dist/access-operations.d.ts +4 -4
- package/dist/access-operations.js +17 -17
- package/dist/access-recall-concurrency.d.ts +1 -1
- package/dist/access-recall-concurrency.js +13 -13
- package/dist/access-recall-response.d.ts +1 -1
- package/dist/access-recall-response.js +13 -13
- package/dist/access-recall-surface.d.ts +1 -1
- package/dist/access-recall-surface.js +13 -13
- package/dist/access-schema.d.ts +88 -88
- package/dist/access-service-helpers.d.ts +1 -1
- package/dist/access-service.d.ts +1 -1
- package/dist/access-service.js +13 -13
- package/dist/access-surface-catalog.d.ts +1 -1
- package/dist/access-surface-catalog.js +15 -15
- package/dist/briefing.js +5 -5
- package/dist/buffer.js +3 -3
- package/dist/causal-consolidation.js +6 -6
- package/dist/{chunk-CH627RRV.js → chunk-2AZBPQLK.js} +3 -3
- package/dist/{chunk-WFLBP5GC.js → chunk-4NZHHGVL.js} +25 -6
- package/dist/chunk-4NZHHGVL.js.map +1 -0
- package/dist/{chunk-LTJTP5YQ.js → chunk-4WW5FMUD.js} +2 -2
- package/dist/{chunk-HSBQJRV2.js → chunk-5LVSFKQB.js} +2 -2
- package/dist/{chunk-RFH7U5LT.js → chunk-5S7Y7AC6.js} +2 -2
- package/dist/{chunk-7BJYTX6Q.js → chunk-6VX2ZZH2.js} +2 -2
- package/dist/{chunk-4FFROSFG.js → chunk-7CJO52ET.js} +8 -8
- package/dist/{chunk-JFLKSD5V.js → chunk-A5BYPCDI.js} +2 -2
- package/dist/{chunk-EFWHCTYJ.js → chunk-ALKRPLWB.js} +2 -2
- package/dist/{chunk-JDI7G6EA.js → chunk-AUIAHNO7.js} +2 -2
- package/dist/{chunk-BHO6RHE5.js → chunk-BE5SVRFC.js} +2 -2
- package/dist/{chunk-QCECHYZL.js → chunk-E2GYBTSP.js} +24 -4
- package/dist/chunk-E2GYBTSP.js.map +1 -0
- package/dist/{chunk-3MA7JVXN.js → chunk-EJYAE2U7.js} +4 -4
- package/dist/{chunk-IZRNVNPV.js → chunk-F2FZEVDE.js} +2 -2
- package/dist/{chunk-AYIHDC5S.js → chunk-FNYIMSKI.js} +2 -2
- package/dist/{chunk-ZPGHA7EO.js → chunk-FU7OICXE.js} +7 -7
- package/dist/{chunk-4Y2RHVCV.js → chunk-GL4RHVHX.js} +2 -2
- package/dist/{chunk-HVKMJAEF.js → chunk-GUBT77YC.js} +2 -2
- package/dist/{chunk-4IZ2IT7D.js → chunk-J5AFG5JN.js} +3 -3
- package/dist/{chunk-QCI73Z7C.js → chunk-KP36WQBJ.js} +2 -2
- package/dist/{chunk-H23GIXJC.js → chunk-LAX6S5WS.js} +2 -2
- package/dist/{chunk-DTLF2SLZ.js → chunk-MMM7SDOJ.js} +2 -2
- package/dist/{chunk-KPML4Q3M.js → chunk-MQFFR6QB.js} +2 -2
- package/dist/{chunk-BBHFAVMP.js → chunk-NVSTZ2PN.js} +7 -7
- package/dist/{chunk-CALURYWR.js → chunk-OF6KQJ35.js} +2 -2
- package/dist/{chunk-JCJGYNIS.js → chunk-ORB56L3Y.js} +3 -3
- package/dist/{chunk-YIIC5IDU.js → chunk-P2BT5ALE.js} +1 -1
- package/dist/{chunk-BP6WMYLP.js → chunk-R7R4FSV2.js} +2 -2
- package/dist/{chunk-CLJ5QS6J.js → chunk-RBBYKXXK.js} +30 -24
- package/dist/{chunk-CLJ5QS6J.js.map → chunk-RBBYKXXK.js.map} +1 -1
- package/dist/{chunk-FF6E6HOT.js → chunk-RBJKE5LV.js} +16 -16
- package/dist/{chunk-PSNN25DW.js → chunk-S4MF77NV.js} +2 -2
- package/dist/{chunk-4HO3542O.js → chunk-S52C2DEM.js} +2 -2
- package/dist/{chunk-WMOJIOIG.js → chunk-SHSJP4D6.js} +2 -2
- package/dist/{chunk-CK3NQUSQ.js → chunk-U4CCRHN6.js} +2 -2
- package/dist/{chunk-TGSMU3F2.js → chunk-U5LYM2NS.js} +2 -2
- package/dist/{chunk-X6E7TT3A.js → chunk-UDL4DNBM.js} +2 -2
- package/dist/{chunk-WR2YKUIW.js → chunk-UKBIB3FP.js} +2 -2
- package/dist/{chunk-347ZR6D4.js → chunk-UM7A4CPT.js} +2 -2
- package/dist/{chunk-TIRJV2LW.js → chunk-USKANB65.js} +2 -2
- package/dist/{chunk-UDTME32W.js → chunk-UW74LP76.js} +2 -2
- package/dist/{chunk-YSR3DXGC.js → chunk-WLITCQAC.js} +2 -2
- package/dist/{chunk-LLGDVG52.js → chunk-ZSH6GJ2V.js} +3 -3
- package/dist/{chunk-DROAPP6N.js → chunk-ZXMNT75M.js} +3 -3
- package/dist/{cli-Bw9z-KqX.d.ts → cli-DJwNNDL1.d.ts} +1 -1
- package/dist/cli.d.ts +2 -2
- package/dist/cli.js +32 -32
- package/dist/compounding/engine.js +5 -5
- package/dist/connectors/codex-materialize-runner.js +5 -5
- package/dist/connectors/index.js +5 -5
- package/dist/convergence-refresh.js +7 -7
- package/dist/corpus-watermark.js +7 -7
- package/dist/entity-retrieval.js +5 -5
- package/dist/external-wiki-access.d.ts +1 -1
- package/dist/external-wiki-access.js +14 -14
- package/dist/external-wiki-mcp-tools.d.ts +1 -1
- package/dist/extraction.js +9 -9
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.d.ts +681 -681
- package/dist/index.js +43 -43
- package/dist/maintenance/memory-governance.js +5 -5
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +5 -5
- package/dist/maintenance/rebuild-memory-projection.js +6 -6
- package/dist/mcp-memory-inspector-app.d.ts +1 -1
- package/dist/namespaces/migrate.js +6 -6
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.js +5 -5
- package/dist/operator-doctor-corpus.js +8 -8
- package/dist/operator-toolkit.js +12 -12
- package/dist/orchestration/maintenance.js +10 -10
- package/dist/orchestrator.js +43 -43
- package/dist/{public-http-DK-QwaBu.d.ts → public-http-43z1YT-k.d.ts} +1 -1
- package/dist/{qmd-D_62bYNl.d.ts → qmd-CBSxevyb.d.ts} +12 -1
- package/dist/qmd-preflight.d.ts +1 -1
- package/dist/qmd.d.ts +1 -1
- package/dist/qmd.js +3 -1
- package/dist/retrieval-agents.d.ts +1 -1
- package/dist/schemas.d.ts +117 -434
- package/dist/schemas.js +1 -1
- package/dist/search/factory.js +2 -2
- package/dist/search/index.js +2 -2
- package/dist/semantic-consolidation.js +6 -6
- package/dist/semantic-rule-promotion.js +5 -5
- package/dist/semantic-rule-verifier.js +5 -5
- package/dist/shared-context/manager.d.ts +8 -8
- package/dist/source-agent-qualifier.js +7 -7
- package/dist/storage.js +4 -4
- package/dist/support-passport/index.d.ts +4 -4
- package/dist/support-passport/index.js +16 -16
- package/dist/transfer/types.d.ts +66 -66
- package/dist/verified-recall.js +5 -5
- package/package.json +2 -2
- package/src/orchestration/turn-ingestion.ts +24 -1
- package/src/orchestrator-flush.test.ts +142 -1
- package/src/qmd-process-group.test.ts +125 -0
- package/src/qmd.ts +30 -2
- package/src/schemas.test.ts +158 -0
- package/src/schemas.ts +45 -22
- package/dist/chunk-QCECHYZL.js.map +0 -1
- package/dist/chunk-WFLBP5GC.js.map +0 -1
- package/dist/{access-service-M4LgO141.d.ts → access-service-DBpEnlzA.d.ts} +64 -64
- /package/dist/{chunk-CH627RRV.js.map → chunk-2AZBPQLK.js.map} +0 -0
- /package/dist/{chunk-LTJTP5YQ.js.map → chunk-4WW5FMUD.js.map} +0 -0
- /package/dist/{chunk-HSBQJRV2.js.map → chunk-5LVSFKQB.js.map} +0 -0
- /package/dist/{chunk-RFH7U5LT.js.map → chunk-5S7Y7AC6.js.map} +0 -0
- /package/dist/{chunk-7BJYTX6Q.js.map → chunk-6VX2ZZH2.js.map} +0 -0
- /package/dist/{chunk-4FFROSFG.js.map → chunk-7CJO52ET.js.map} +0 -0
- /package/dist/{chunk-JFLKSD5V.js.map → chunk-A5BYPCDI.js.map} +0 -0
- /package/dist/{chunk-EFWHCTYJ.js.map → chunk-ALKRPLWB.js.map} +0 -0
- /package/dist/{chunk-JDI7G6EA.js.map → chunk-AUIAHNO7.js.map} +0 -0
- /package/dist/{chunk-BHO6RHE5.js.map → chunk-BE5SVRFC.js.map} +0 -0
- /package/dist/{chunk-3MA7JVXN.js.map → chunk-EJYAE2U7.js.map} +0 -0
- /package/dist/{chunk-IZRNVNPV.js.map → chunk-F2FZEVDE.js.map} +0 -0
- /package/dist/{chunk-AYIHDC5S.js.map → chunk-FNYIMSKI.js.map} +0 -0
- /package/dist/{chunk-ZPGHA7EO.js.map → chunk-FU7OICXE.js.map} +0 -0
- /package/dist/{chunk-4Y2RHVCV.js.map → chunk-GL4RHVHX.js.map} +0 -0
- /package/dist/{chunk-HVKMJAEF.js.map → chunk-GUBT77YC.js.map} +0 -0
- /package/dist/{chunk-4IZ2IT7D.js.map → chunk-J5AFG5JN.js.map} +0 -0
- /package/dist/{chunk-QCI73Z7C.js.map → chunk-KP36WQBJ.js.map} +0 -0
- /package/dist/{chunk-H23GIXJC.js.map → chunk-LAX6S5WS.js.map} +0 -0
- /package/dist/{chunk-DTLF2SLZ.js.map → chunk-MMM7SDOJ.js.map} +0 -0
- /package/dist/{chunk-KPML4Q3M.js.map → chunk-MQFFR6QB.js.map} +0 -0
- /package/dist/{chunk-BBHFAVMP.js.map → chunk-NVSTZ2PN.js.map} +0 -0
- /package/dist/{chunk-CALURYWR.js.map → chunk-OF6KQJ35.js.map} +0 -0
- /package/dist/{chunk-JCJGYNIS.js.map → chunk-ORB56L3Y.js.map} +0 -0
- /package/dist/{chunk-YIIC5IDU.js.map → chunk-P2BT5ALE.js.map} +0 -0
- /package/dist/{chunk-BP6WMYLP.js.map → chunk-R7R4FSV2.js.map} +0 -0
- /package/dist/{chunk-FF6E6HOT.js.map → chunk-RBJKE5LV.js.map} +0 -0
- /package/dist/{chunk-PSNN25DW.js.map → chunk-S4MF77NV.js.map} +0 -0
- /package/dist/{chunk-4HO3542O.js.map → chunk-S52C2DEM.js.map} +0 -0
- /package/dist/{chunk-WMOJIOIG.js.map → chunk-SHSJP4D6.js.map} +0 -0
- /package/dist/{chunk-CK3NQUSQ.js.map → chunk-U4CCRHN6.js.map} +0 -0
- /package/dist/{chunk-TGSMU3F2.js.map → chunk-U5LYM2NS.js.map} +0 -0
- /package/dist/{chunk-X6E7TT3A.js.map → chunk-UDL4DNBM.js.map} +0 -0
- /package/dist/{chunk-WR2YKUIW.js.map → chunk-UKBIB3FP.js.map} +0 -0
- /package/dist/{chunk-347ZR6D4.js.map → chunk-UM7A4CPT.js.map} +0 -0
- /package/dist/{chunk-TIRJV2LW.js.map → chunk-USKANB65.js.map} +0 -0
- /package/dist/{chunk-UDTME32W.js.map → chunk-UW74LP76.js.map} +0 -0
- /package/dist/{chunk-YSR3DXGC.js.map → chunk-WLITCQAC.js.map} +0 -0
- /package/dist/{chunk-LLGDVG52.js.map → chunk-ZSH6GJ2V.js.map} +0 -0
- /package/dist/{chunk-DROAPP6N.js.map → chunk-ZXMNT75M.js.map} +0 -0
package/dist/transfer/types.d.ts
CHANGED
|
@@ -20,26 +20,26 @@ declare const ExportManifestV1Schema: z.ZodObject<{
|
|
|
20
20
|
bytes: number;
|
|
21
21
|
}>, "many">;
|
|
22
22
|
}, "strip", z.ZodTypeAny, {
|
|
23
|
-
schemaVersion: 1;
|
|
24
|
-
createdAt: string;
|
|
25
23
|
format: "openclaw-engram-export";
|
|
24
|
+
createdAt: string;
|
|
25
|
+
pluginVersion: string;
|
|
26
26
|
files: {
|
|
27
27
|
path: string;
|
|
28
28
|
sha256: string;
|
|
29
29
|
bytes: number;
|
|
30
30
|
}[];
|
|
31
|
-
|
|
31
|
+
schemaVersion: 1;
|
|
32
32
|
includesTranscripts: boolean;
|
|
33
33
|
}, {
|
|
34
|
-
schemaVersion: 1;
|
|
35
|
-
createdAt: string;
|
|
36
34
|
format: "openclaw-engram-export";
|
|
35
|
+
createdAt: string;
|
|
36
|
+
pluginVersion: string;
|
|
37
37
|
files: {
|
|
38
38
|
path: string;
|
|
39
39
|
sha256: string;
|
|
40
40
|
bytes: number;
|
|
41
41
|
}[];
|
|
42
|
-
|
|
42
|
+
schemaVersion: 1;
|
|
43
43
|
includesTranscripts: boolean;
|
|
44
44
|
}>;
|
|
45
45
|
type ExportManifestV1 = z.infer<typeof ExportManifestV1Schema>;
|
|
@@ -75,26 +75,26 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
75
75
|
bytes: number;
|
|
76
76
|
}>, "many">;
|
|
77
77
|
}, "strip", z.ZodTypeAny, {
|
|
78
|
-
schemaVersion: 1;
|
|
79
|
-
createdAt: string;
|
|
80
78
|
format: "openclaw-engram-export";
|
|
79
|
+
createdAt: string;
|
|
80
|
+
pluginVersion: string;
|
|
81
81
|
files: {
|
|
82
82
|
path: string;
|
|
83
83
|
sha256: string;
|
|
84
84
|
bytes: number;
|
|
85
85
|
}[];
|
|
86
|
-
|
|
86
|
+
schemaVersion: 1;
|
|
87
87
|
includesTranscripts: boolean;
|
|
88
88
|
}, {
|
|
89
|
-
schemaVersion: 1;
|
|
90
|
-
createdAt: string;
|
|
91
89
|
format: "openclaw-engram-export";
|
|
90
|
+
createdAt: string;
|
|
91
|
+
pluginVersion: string;
|
|
92
92
|
files: {
|
|
93
93
|
path: string;
|
|
94
94
|
sha256: string;
|
|
95
95
|
bytes: number;
|
|
96
96
|
}[];
|
|
97
|
-
|
|
97
|
+
schemaVersion: 1;
|
|
98
98
|
includesTranscripts: boolean;
|
|
99
99
|
}>;
|
|
100
100
|
records: z.ZodArray<z.ZodObject<{
|
|
@@ -109,15 +109,15 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
109
109
|
}>, "many">;
|
|
110
110
|
}, "strip", z.ZodTypeAny, {
|
|
111
111
|
manifest: {
|
|
112
|
-
schemaVersion: 1;
|
|
113
|
-
createdAt: string;
|
|
114
112
|
format: "openclaw-engram-export";
|
|
113
|
+
createdAt: string;
|
|
114
|
+
pluginVersion: string;
|
|
115
115
|
files: {
|
|
116
116
|
path: string;
|
|
117
117
|
sha256: string;
|
|
118
118
|
bytes: number;
|
|
119
119
|
}[];
|
|
120
|
-
|
|
120
|
+
schemaVersion: 1;
|
|
121
121
|
includesTranscripts: boolean;
|
|
122
122
|
};
|
|
123
123
|
records: {
|
|
@@ -126,15 +126,15 @@ declare const ExportBundleV1Schema: z.ZodObject<{
|
|
|
126
126
|
}[];
|
|
127
127
|
}, {
|
|
128
128
|
manifest: {
|
|
129
|
-
schemaVersion: 1;
|
|
130
|
-
createdAt: string;
|
|
131
129
|
format: "openclaw-engram-export";
|
|
130
|
+
createdAt: string;
|
|
131
|
+
pluginVersion: string;
|
|
132
132
|
files: {
|
|
133
133
|
path: string;
|
|
134
134
|
sha256: string;
|
|
135
135
|
bytes: number;
|
|
136
136
|
}[];
|
|
137
|
-
|
|
137
|
+
schemaVersion: 1;
|
|
138
138
|
includesTranscripts: boolean;
|
|
139
139
|
};
|
|
140
140
|
records: {
|
|
@@ -313,16 +313,16 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
313
313
|
peerProfiles: boolean;
|
|
314
314
|
}>;
|
|
315
315
|
}, "strip", z.ZodTypeAny, {
|
|
316
|
-
schemaVersion: string;
|
|
317
316
|
includes: {
|
|
318
317
|
procedural: boolean;
|
|
319
318
|
taxonomy: boolean;
|
|
320
319
|
identityAnchors: boolean;
|
|
321
320
|
peerProfiles: boolean;
|
|
322
321
|
};
|
|
322
|
+
description: string;
|
|
323
323
|
id: string;
|
|
324
|
+
schemaVersion: string;
|
|
324
325
|
version: string;
|
|
325
|
-
description: string;
|
|
326
326
|
parentCapsule: string | null;
|
|
327
327
|
retrievalPolicy: {
|
|
328
328
|
tierWeights: Record<string, number>;
|
|
@@ -334,16 +334,16 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
334
334
|
forkRoot: string;
|
|
335
335
|
} | null;
|
|
336
336
|
}, {
|
|
337
|
-
schemaVersion: string;
|
|
338
337
|
includes: {
|
|
339
338
|
procedural: boolean;
|
|
340
339
|
taxonomy: boolean;
|
|
341
340
|
identityAnchors: boolean;
|
|
342
341
|
peerProfiles: boolean;
|
|
343
342
|
};
|
|
343
|
+
description: string;
|
|
344
344
|
id: string;
|
|
345
|
+
schemaVersion: string;
|
|
345
346
|
version: string;
|
|
346
|
-
description: string;
|
|
347
347
|
parentCapsule: string | null;
|
|
348
348
|
retrievalPolicy: {
|
|
349
349
|
tierWeights: Record<string, number>;
|
|
@@ -464,16 +464,16 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
464
464
|
peerProfiles: boolean;
|
|
465
465
|
}>;
|
|
466
466
|
}, "strip", z.ZodTypeAny, {
|
|
467
|
-
schemaVersion: string;
|
|
468
467
|
includes: {
|
|
469
468
|
procedural: boolean;
|
|
470
469
|
taxonomy: boolean;
|
|
471
470
|
identityAnchors: boolean;
|
|
472
471
|
peerProfiles: boolean;
|
|
473
472
|
};
|
|
473
|
+
description: string;
|
|
474
474
|
id: string;
|
|
475
|
+
schemaVersion: string;
|
|
475
476
|
version: string;
|
|
476
|
-
description: string;
|
|
477
477
|
parentCapsule: string | null;
|
|
478
478
|
retrievalPolicy: {
|
|
479
479
|
tierWeights: Record<string, number>;
|
|
@@ -485,16 +485,16 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
485
485
|
forkRoot: string;
|
|
486
486
|
} | null;
|
|
487
487
|
}, {
|
|
488
|
-
schemaVersion: string;
|
|
489
488
|
includes: {
|
|
490
489
|
procedural: boolean;
|
|
491
490
|
taxonomy: boolean;
|
|
492
491
|
identityAnchors: boolean;
|
|
493
492
|
peerProfiles: boolean;
|
|
494
493
|
};
|
|
494
|
+
description: string;
|
|
495
495
|
id: string;
|
|
496
|
+
schemaVersion: string;
|
|
496
497
|
version: string;
|
|
497
|
-
description: string;
|
|
498
498
|
parentCapsule: string | null;
|
|
499
499
|
retrievalPolicy: {
|
|
500
500
|
tierWeights: Record<string, number>;
|
|
@@ -507,27 +507,25 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
507
507
|
} | null | undefined;
|
|
508
508
|
}>;
|
|
509
509
|
}, "strip", z.ZodTypeAny, {
|
|
510
|
-
schemaVersion: 2;
|
|
511
|
-
createdAt: string;
|
|
512
510
|
format: "openclaw-engram-export";
|
|
511
|
+
createdAt: string;
|
|
512
|
+
pluginVersion: string;
|
|
513
513
|
files: {
|
|
514
514
|
path: string;
|
|
515
515
|
sha256: string;
|
|
516
516
|
bytes: number;
|
|
517
517
|
}[];
|
|
518
|
-
pluginVersion: string;
|
|
519
|
-
includesTranscripts: boolean;
|
|
520
518
|
capsule: {
|
|
521
|
-
schemaVersion: string;
|
|
522
519
|
includes: {
|
|
523
520
|
procedural: boolean;
|
|
524
521
|
taxonomy: boolean;
|
|
525
522
|
identityAnchors: boolean;
|
|
526
523
|
peerProfiles: boolean;
|
|
527
524
|
};
|
|
525
|
+
description: string;
|
|
528
526
|
id: string;
|
|
527
|
+
schemaVersion: string;
|
|
529
528
|
version: string;
|
|
530
|
-
description: string;
|
|
531
529
|
parentCapsule: string | null;
|
|
532
530
|
retrievalPolicy: {
|
|
533
531
|
tierWeights: Record<string, number>;
|
|
@@ -539,28 +537,28 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
539
537
|
forkRoot: string;
|
|
540
538
|
} | null;
|
|
541
539
|
};
|
|
542
|
-
}, {
|
|
543
540
|
schemaVersion: 2;
|
|
544
|
-
|
|
541
|
+
includesTranscripts: boolean;
|
|
542
|
+
}, {
|
|
545
543
|
format: "openclaw-engram-export";
|
|
544
|
+
createdAt: string;
|
|
545
|
+
pluginVersion: string;
|
|
546
546
|
files: {
|
|
547
547
|
path: string;
|
|
548
548
|
sha256: string;
|
|
549
549
|
bytes: number;
|
|
550
550
|
}[];
|
|
551
|
-
pluginVersion: string;
|
|
552
|
-
includesTranscripts: boolean;
|
|
553
551
|
capsule: {
|
|
554
|
-
schemaVersion: string;
|
|
555
552
|
includes: {
|
|
556
553
|
procedural: boolean;
|
|
557
554
|
taxonomy: boolean;
|
|
558
555
|
identityAnchors: boolean;
|
|
559
556
|
peerProfiles: boolean;
|
|
560
557
|
};
|
|
558
|
+
description: string;
|
|
561
559
|
id: string;
|
|
560
|
+
schemaVersion: string;
|
|
562
561
|
version: string;
|
|
563
|
-
description: string;
|
|
564
562
|
parentCapsule: string | null;
|
|
565
563
|
retrievalPolicy: {
|
|
566
564
|
tierWeights: Record<string, number>;
|
|
@@ -572,6 +570,8 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
572
570
|
forkRoot: string;
|
|
573
571
|
} | null | undefined;
|
|
574
572
|
};
|
|
573
|
+
schemaVersion: 2;
|
|
574
|
+
includesTranscripts: boolean;
|
|
575
575
|
}>;
|
|
576
576
|
type ExportManifestV2 = z.infer<typeof ExportManifestV2Schema>;
|
|
577
577
|
declare const ExportBundleV2Schema: z.ZodObject<{
|
|
@@ -683,16 +683,16 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
683
683
|
peerProfiles: boolean;
|
|
684
684
|
}>;
|
|
685
685
|
}, "strip", z.ZodTypeAny, {
|
|
686
|
-
schemaVersion: string;
|
|
687
686
|
includes: {
|
|
688
687
|
procedural: boolean;
|
|
689
688
|
taxonomy: boolean;
|
|
690
689
|
identityAnchors: boolean;
|
|
691
690
|
peerProfiles: boolean;
|
|
692
691
|
};
|
|
692
|
+
description: string;
|
|
693
693
|
id: string;
|
|
694
|
+
schemaVersion: string;
|
|
694
695
|
version: string;
|
|
695
|
-
description: string;
|
|
696
696
|
parentCapsule: string | null;
|
|
697
697
|
retrievalPolicy: {
|
|
698
698
|
tierWeights: Record<string, number>;
|
|
@@ -704,16 +704,16 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
704
704
|
forkRoot: string;
|
|
705
705
|
} | null;
|
|
706
706
|
}, {
|
|
707
|
-
schemaVersion: string;
|
|
708
707
|
includes: {
|
|
709
708
|
procedural: boolean;
|
|
710
709
|
taxonomy: boolean;
|
|
711
710
|
identityAnchors: boolean;
|
|
712
711
|
peerProfiles: boolean;
|
|
713
712
|
};
|
|
713
|
+
description: string;
|
|
714
714
|
id: string;
|
|
715
|
+
schemaVersion: string;
|
|
715
716
|
version: string;
|
|
716
|
-
description: string;
|
|
717
717
|
parentCapsule: string | null;
|
|
718
718
|
retrievalPolicy: {
|
|
719
719
|
tierWeights: Record<string, number>;
|
|
@@ -726,27 +726,25 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
726
726
|
} | null | undefined;
|
|
727
727
|
}>;
|
|
728
728
|
}, "strip", z.ZodTypeAny, {
|
|
729
|
-
schemaVersion: 2;
|
|
730
|
-
createdAt: string;
|
|
731
729
|
format: "openclaw-engram-export";
|
|
730
|
+
createdAt: string;
|
|
731
|
+
pluginVersion: string;
|
|
732
732
|
files: {
|
|
733
733
|
path: string;
|
|
734
734
|
sha256: string;
|
|
735
735
|
bytes: number;
|
|
736
736
|
}[];
|
|
737
|
-
pluginVersion: string;
|
|
738
|
-
includesTranscripts: boolean;
|
|
739
737
|
capsule: {
|
|
740
|
-
schemaVersion: string;
|
|
741
738
|
includes: {
|
|
742
739
|
procedural: boolean;
|
|
743
740
|
taxonomy: boolean;
|
|
744
741
|
identityAnchors: boolean;
|
|
745
742
|
peerProfiles: boolean;
|
|
746
743
|
};
|
|
744
|
+
description: string;
|
|
747
745
|
id: string;
|
|
746
|
+
schemaVersion: string;
|
|
748
747
|
version: string;
|
|
749
|
-
description: string;
|
|
750
748
|
parentCapsule: string | null;
|
|
751
749
|
retrievalPolicy: {
|
|
752
750
|
tierWeights: Record<string, number>;
|
|
@@ -758,28 +756,28 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
758
756
|
forkRoot: string;
|
|
759
757
|
} | null;
|
|
760
758
|
};
|
|
761
|
-
}, {
|
|
762
759
|
schemaVersion: 2;
|
|
763
|
-
|
|
760
|
+
includesTranscripts: boolean;
|
|
761
|
+
}, {
|
|
764
762
|
format: "openclaw-engram-export";
|
|
763
|
+
createdAt: string;
|
|
764
|
+
pluginVersion: string;
|
|
765
765
|
files: {
|
|
766
766
|
path: string;
|
|
767
767
|
sha256: string;
|
|
768
768
|
bytes: number;
|
|
769
769
|
}[];
|
|
770
|
-
pluginVersion: string;
|
|
771
|
-
includesTranscripts: boolean;
|
|
772
770
|
capsule: {
|
|
773
|
-
schemaVersion: string;
|
|
774
771
|
includes: {
|
|
775
772
|
procedural: boolean;
|
|
776
773
|
taxonomy: boolean;
|
|
777
774
|
identityAnchors: boolean;
|
|
778
775
|
peerProfiles: boolean;
|
|
779
776
|
};
|
|
777
|
+
description: string;
|
|
780
778
|
id: string;
|
|
779
|
+
schemaVersion: string;
|
|
781
780
|
version: string;
|
|
782
|
-
description: string;
|
|
783
781
|
parentCapsule: string | null;
|
|
784
782
|
retrievalPolicy: {
|
|
785
783
|
tierWeights: Record<string, number>;
|
|
@@ -791,6 +789,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
791
789
|
forkRoot: string;
|
|
792
790
|
} | null | undefined;
|
|
793
791
|
};
|
|
792
|
+
schemaVersion: 2;
|
|
793
|
+
includesTranscripts: boolean;
|
|
794
794
|
}>;
|
|
795
795
|
records: z.ZodArray<z.ZodObject<{
|
|
796
796
|
path: z.ZodString;
|
|
@@ -804,27 +804,25 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
804
804
|
}>, "many">;
|
|
805
805
|
}, "strip", z.ZodTypeAny, {
|
|
806
806
|
manifest: {
|
|
807
|
-
schemaVersion: 2;
|
|
808
|
-
createdAt: string;
|
|
809
807
|
format: "openclaw-engram-export";
|
|
808
|
+
createdAt: string;
|
|
809
|
+
pluginVersion: string;
|
|
810
810
|
files: {
|
|
811
811
|
path: string;
|
|
812
812
|
sha256: string;
|
|
813
813
|
bytes: number;
|
|
814
814
|
}[];
|
|
815
|
-
pluginVersion: string;
|
|
816
|
-
includesTranscripts: boolean;
|
|
817
815
|
capsule: {
|
|
818
|
-
schemaVersion: string;
|
|
819
816
|
includes: {
|
|
820
817
|
procedural: boolean;
|
|
821
818
|
taxonomy: boolean;
|
|
822
819
|
identityAnchors: boolean;
|
|
823
820
|
peerProfiles: boolean;
|
|
824
821
|
};
|
|
822
|
+
description: string;
|
|
825
823
|
id: string;
|
|
824
|
+
schemaVersion: string;
|
|
826
825
|
version: string;
|
|
827
|
-
description: string;
|
|
828
826
|
parentCapsule: string | null;
|
|
829
827
|
retrievalPolicy: {
|
|
830
828
|
tierWeights: Record<string, number>;
|
|
@@ -836,6 +834,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
836
834
|
forkRoot: string;
|
|
837
835
|
} | null;
|
|
838
836
|
};
|
|
837
|
+
schemaVersion: 2;
|
|
838
|
+
includesTranscripts: boolean;
|
|
839
839
|
};
|
|
840
840
|
records: {
|
|
841
841
|
content: string;
|
|
@@ -843,27 +843,25 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
843
843
|
}[];
|
|
844
844
|
}, {
|
|
845
845
|
manifest: {
|
|
846
|
-
schemaVersion: 2;
|
|
847
|
-
createdAt: string;
|
|
848
846
|
format: "openclaw-engram-export";
|
|
847
|
+
createdAt: string;
|
|
848
|
+
pluginVersion: string;
|
|
849
849
|
files: {
|
|
850
850
|
path: string;
|
|
851
851
|
sha256: string;
|
|
852
852
|
bytes: number;
|
|
853
853
|
}[];
|
|
854
|
-
pluginVersion: string;
|
|
855
|
-
includesTranscripts: boolean;
|
|
856
854
|
capsule: {
|
|
857
|
-
schemaVersion: string;
|
|
858
855
|
includes: {
|
|
859
856
|
procedural: boolean;
|
|
860
857
|
taxonomy: boolean;
|
|
861
858
|
identityAnchors: boolean;
|
|
862
859
|
peerProfiles: boolean;
|
|
863
860
|
};
|
|
861
|
+
description: string;
|
|
864
862
|
id: string;
|
|
863
|
+
schemaVersion: string;
|
|
865
864
|
version: string;
|
|
866
|
-
description: string;
|
|
867
865
|
parentCapsule: string | null;
|
|
868
866
|
retrievalPolicy: {
|
|
869
867
|
tierWeights: Record<string, number>;
|
|
@@ -875,6 +873,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
875
873
|
forkRoot: string;
|
|
876
874
|
} | null | undefined;
|
|
877
875
|
};
|
|
876
|
+
schemaVersion: 2;
|
|
877
|
+
includesTranscripts: boolean;
|
|
878
878
|
};
|
|
879
879
|
records: {
|
|
880
880
|
content: string;
|
package/dist/verified-recall.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-BE5SVRFC.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-OF6KQJ35.js";
|
|
7
7
|
import "./chunk-UHVXE24Y.js";
|
|
8
8
|
import "./chunk-46WM6JX2.js";
|
|
9
9
|
import "./chunk-SXIMQLGV.js";
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
10
|
+
import "./chunk-A5BYPCDI.js";
|
|
11
|
+
import "./chunk-4WW5FMUD.js";
|
|
12
12
|
import "./chunk-CYEPCZN5.js";
|
|
13
13
|
import "./chunk-DCUMFQYM.js";
|
|
14
14
|
import "./chunk-VYISFWVX.js";
|
|
@@ -43,7 +43,7 @@ import "./chunk-RBOJCG4T.js";
|
|
|
43
43
|
import "./chunk-GSTIBXBW.js";
|
|
44
44
|
import "./chunk-5WITETWU.js";
|
|
45
45
|
import "./chunk-6CIAGZ6X.js";
|
|
46
|
-
import "./chunk-
|
|
46
|
+
import "./chunk-E2GYBTSP.js";
|
|
47
47
|
import "./chunk-URS5GSM7.js";
|
|
48
48
|
import "./chunk-ZLQ37WJX.js";
|
|
49
49
|
import "./chunk-IUM3VSHI.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.63.
|
|
3
|
+
"version": "9.63.1",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3156,7 +3156,7 @@
|
|
|
3156
3156
|
"core"
|
|
3157
3157
|
],
|
|
3158
3158
|
"peerDependencies": {
|
|
3159
|
-
"@remnic/coding-graph": "^9.63.
|
|
3159
|
+
"@remnic/coding-graph": "^9.63.1"
|
|
3160
3160
|
},
|
|
3161
3161
|
"peerDependenciesMeta": {
|
|
3162
3162
|
"@remnic/coding-graph": {
|
|
@@ -123,6 +123,25 @@ export interface TurnIngestionOptions extends SourceConnectorProvenance {
|
|
|
123
123
|
turnFingerprint?: string;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
+
/**
|
|
127
|
+
* Flush-plan recovery imports are compacted material the host already
|
|
128
|
+
* summarized before appending it to the flush-plan file. Feeding those
|
|
129
|
+
* turns through LCM observation again re-summarizes the same content
|
|
130
|
+
* (issue #2457). The producer stamps both a dedicated `sourceLabel` and a
|
|
131
|
+
* `:flush-plan[:chunk]`-shaped `sourceId`, so either marker identifies a
|
|
132
|
+
* recovery turn; ordinary bulk-import turns never carry either.
|
|
133
|
+
*/
|
|
134
|
+
function isFlushPlanRecoveryTurn(
|
|
135
|
+
turn: Pick<BufferTurn, "importProvenance">,
|
|
136
|
+
): boolean {
|
|
137
|
+
const provenance = turn.importProvenance;
|
|
138
|
+
if (provenance?.sourceLabel === "OpenClaw flush plan") return true;
|
|
139
|
+
return (
|
|
140
|
+
typeof provenance?.sourceId === "string" &&
|
|
141
|
+
/:flush-plan(:\d+\/\d+)?$/.test(provenance.sourceId)
|
|
142
|
+
);
|
|
143
|
+
}
|
|
144
|
+
|
|
126
145
|
export class TurnIngestionCoordinator {
|
|
127
146
|
constructor(
|
|
128
147
|
private readonly deps: TurnIngestionDeps,
|
|
@@ -456,7 +475,11 @@ export class TurnIngestionCoordinator {
|
|
|
456
475
|
};
|
|
457
476
|
}
|
|
458
477
|
|
|
459
|
-
|
|
478
|
+
// Skip LCM only when every turn is flush-plan recovery material; a mixed
|
|
479
|
+
// batch keeps the ordinary observe path (issue #2457). Extraction and
|
|
480
|
+
// persistence below are unaffected either way.
|
|
481
|
+
const skipLcmObservation = sessionTurns.every(isFlushPlanRecoveryTurn);
|
|
482
|
+
if (!skipLcmObservation && this.deps.lcmEngine?.enabled) {
|
|
460
483
|
await this.deps.lcmEngine.observeMessages(
|
|
461
484
|
sessionKey,
|
|
462
485
|
sessionTurns.map((turn) => ({
|
|
@@ -12,8 +12,10 @@ import { TurnIngestionCoordinator } from "./orchestration/turn-ingestion.js";
|
|
|
12
12
|
import { SmartBuffer } from "./buffer.js";
|
|
13
13
|
import { parseConfig } from "./config.js";
|
|
14
14
|
import { stableHash } from "./coding/git-context.js";
|
|
15
|
-
import type { BufferState, BufferTurn } from "./types.js";
|
|
15
|
+
import type { BufferState, BufferTurn, PluginConfig } from "./types.js";
|
|
16
16
|
import type { ImportTurn } from "./bulk-import/types.js";
|
|
17
|
+
import type { LcmEngine } from "./lcm/index.js";
|
|
18
|
+
import type { ExtractionRunResult } from "./orchestration/extraction-run.js";
|
|
17
19
|
import { namespaceIdentityToken } from "./namespaces/identity.js";
|
|
18
20
|
import { readNamespaceMaintenanceStatuses } from "./maintenance/namespace-planner.js";
|
|
19
21
|
import { stubPersistExtraction } from "./testing/orchestrator-lite.js";
|
|
@@ -28,6 +30,22 @@ function makeTurn(sessionKey: string, content: string, sessionOwnerPrincipal?: s
|
|
|
28
30
|
};
|
|
29
31
|
}
|
|
30
32
|
|
|
33
|
+
/**
|
|
34
|
+
* Writable orchestrator double for `ingestBulkImportBatch` slice tests: the
|
|
35
|
+
* real prototype methods run, but the per-test stub surface must stay
|
|
36
|
+
* assignable (the real class marks these fields readonly).
|
|
37
|
+
*/
|
|
38
|
+
interface BulkImportTestDouble {
|
|
39
|
+
config: PluginConfig;
|
|
40
|
+
extractionQueueCoordinator: ExtractionQueueCoordinator;
|
|
41
|
+
lcmEngine: LcmEngine | null;
|
|
42
|
+
runExtraction: (
|
|
43
|
+
turns: BufferTurn[],
|
|
44
|
+
options?: Record<string, unknown>,
|
|
45
|
+
) => Promise<ExtractionRunResult>;
|
|
46
|
+
ingestBulkImportBatch: Orchestrator["ingestBulkImportBatch"];
|
|
47
|
+
}
|
|
48
|
+
|
|
31
49
|
interface ScopedFlushTestDouble {
|
|
32
50
|
buffer: {
|
|
33
51
|
getTurns(bufferKey: string): BufferTurn[];
|
|
@@ -804,6 +822,129 @@ test("ingestBulkImportBatch can disable source-valid-at replay context", async (
|
|
|
804
822
|
);
|
|
805
823
|
});
|
|
806
824
|
|
|
825
|
+
test("ingestBulkImportBatch skips LCM observation for flush-plan recovery batches (issue #2457)", async () => {
|
|
826
|
+
const orchestrator = Object.create(Orchestrator.prototype) as unknown as BulkImportTestDouble;
|
|
827
|
+
orchestrator.config = parseConfig({});
|
|
828
|
+
orchestrator.extractionQueueCoordinator = new ExtractionQueueCoordinator();
|
|
829
|
+
const observedSessionKeys: string[] = [];
|
|
830
|
+
orchestrator.lcmEngine = {
|
|
831
|
+
enabled: true,
|
|
832
|
+
observeMessages: async (sessionKey: string) => {
|
|
833
|
+
observedSessionKeys.push(sessionKey);
|
|
834
|
+
},
|
|
835
|
+
// Partial engine double for the observe seam.
|
|
836
|
+
} as unknown as LcmEngine;
|
|
837
|
+
const extractedSlices: BufferTurn[][] = [];
|
|
838
|
+
orchestrator.runExtraction = async (turns: BufferTurn[]) => {
|
|
839
|
+
extractedSlices.push(turns);
|
|
840
|
+
return { status: "completed", persistedCount: 1, durableOutputCount: 1 };
|
|
841
|
+
};
|
|
842
|
+
|
|
843
|
+
const result = await orchestrator.ingestBulkImportBatch([
|
|
844
|
+
{
|
|
845
|
+
role: "user",
|
|
846
|
+
timestamp: "2026-06-24T12:00:00.000Z",
|
|
847
|
+
content: "Recovery material the host already compacted once.",
|
|
848
|
+
importProvenance: {
|
|
849
|
+
sourceLabel: "OpenClaw flush plan",
|
|
850
|
+
sourceId: "openclaw-remnic:flush-plan",
|
|
851
|
+
},
|
|
852
|
+
},
|
|
853
|
+
{
|
|
854
|
+
role: "user",
|
|
855
|
+
timestamp: "2026-06-24T12:00:01.000Z",
|
|
856
|
+
content: "Chunked recovery material.",
|
|
857
|
+
importProvenance: {
|
|
858
|
+
sourceLabel: "OpenClaw flush plan",
|
|
859
|
+
sourceId: "openclaw-remnic:flush-plan:2/3",
|
|
860
|
+
},
|
|
861
|
+
},
|
|
862
|
+
]);
|
|
863
|
+
|
|
864
|
+
assert.deepEqual(observedSessionKeys, []);
|
|
865
|
+
assert.equal(extractedSlices.length, 2);
|
|
866
|
+
assert.equal(result.extractionCount, 2);
|
|
867
|
+
assert.equal(result.persistedCount, 2);
|
|
868
|
+
});
|
|
869
|
+
|
|
870
|
+
test("ingestBulkImportBatch still observes ordinary bulk imports through LCM (issue #2457)", async () => {
|
|
871
|
+
const orchestrator = Object.create(Orchestrator.prototype) as unknown as BulkImportTestDouble;
|
|
872
|
+
orchestrator.config = parseConfig({});
|
|
873
|
+
orchestrator.extractionQueueCoordinator = new ExtractionQueueCoordinator();
|
|
874
|
+
const observed: { sessionKey: string; turnCount: number }[] = [];
|
|
875
|
+
orchestrator.lcmEngine = {
|
|
876
|
+
enabled: true,
|
|
877
|
+
observeMessages: async (sessionKey: string, messages: unknown[]) => {
|
|
878
|
+
observed.push({ sessionKey, turnCount: messages.length });
|
|
879
|
+
},
|
|
880
|
+
// Partial engine double for the observe seam.
|
|
881
|
+
} as unknown as LcmEngine;
|
|
882
|
+
orchestrator.runExtraction = async () => ({
|
|
883
|
+
status: "completed",
|
|
884
|
+
persistedCount: 1,
|
|
885
|
+
durableOutputCount: 1,
|
|
886
|
+
});
|
|
887
|
+
|
|
888
|
+
await orchestrator.ingestBulkImportBatch([
|
|
889
|
+
{
|
|
890
|
+
role: "user",
|
|
891
|
+
timestamp: "2026-06-24T12:00:00.000Z",
|
|
892
|
+
content: "Ordinary chatgpt import turn.",
|
|
893
|
+
importProvenance: { sourceLabel: "chatgpt", sourceId: "cg-1" },
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
role: "user",
|
|
897
|
+
timestamp: "2026-06-24T12:00:01.000Z",
|
|
898
|
+
content: "Ordinary turn without provenance.",
|
|
899
|
+
},
|
|
900
|
+
]);
|
|
901
|
+
|
|
902
|
+
assert.deepEqual(
|
|
903
|
+
observed.map((entry) => entry.turnCount),
|
|
904
|
+
[2],
|
|
905
|
+
);
|
|
906
|
+
assert.ok(observed[0]?.sessionKey.startsWith("bulk-import:batch:"));
|
|
907
|
+
});
|
|
908
|
+
|
|
909
|
+
test("ingestBulkImportBatch observes mixed batches that contain flush-plan turns (issue #2457)", async () => {
|
|
910
|
+
const orchestrator = Object.create(Orchestrator.prototype) as unknown as BulkImportTestDouble;
|
|
911
|
+
orchestrator.config = parseConfig({});
|
|
912
|
+
orchestrator.extractionQueueCoordinator = new ExtractionQueueCoordinator();
|
|
913
|
+
const observed: number[] = [];
|
|
914
|
+
orchestrator.lcmEngine = {
|
|
915
|
+
enabled: true,
|
|
916
|
+
observeMessages: async (_sessionKey: string, messages: unknown[]) => {
|
|
917
|
+
observed.push(messages.length);
|
|
918
|
+
},
|
|
919
|
+
// Partial engine double for the observe seam.
|
|
920
|
+
} as unknown as LcmEngine;
|
|
921
|
+
orchestrator.runExtraction = async () => ({
|
|
922
|
+
status: "completed",
|
|
923
|
+
persistedCount: 1,
|
|
924
|
+
durableOutputCount: 1,
|
|
925
|
+
});
|
|
926
|
+
|
|
927
|
+
await orchestrator.ingestBulkImportBatch([
|
|
928
|
+
{
|
|
929
|
+
role: "user",
|
|
930
|
+
timestamp: "2026-06-24T12:00:00.000Z",
|
|
931
|
+
content: "Recovery material mixed into an ordinary batch.",
|
|
932
|
+
importProvenance: {
|
|
933
|
+
sourceLabel: "OpenClaw flush plan",
|
|
934
|
+
sourceId: "openclaw-remnic:flush-plan",
|
|
935
|
+
},
|
|
936
|
+
},
|
|
937
|
+
{
|
|
938
|
+
role: "user",
|
|
939
|
+
timestamp: "2026-06-24T12:00:01.000Z",
|
|
940
|
+
content: "Ordinary chatgpt import turn.",
|
|
941
|
+
importProvenance: { sourceLabel: "chatgpt", sourceId: "cg-2" },
|
|
942
|
+
},
|
|
943
|
+
]);
|
|
944
|
+
|
|
945
|
+
assert.deepEqual(observed, [2]);
|
|
946
|
+
});
|
|
947
|
+
|
|
807
948
|
test("ingestBulkImportBatch preserves partial metadata failure before a later slice rejects", async () => {
|
|
808
949
|
const orchestrator = Object.create(Orchestrator.prototype) as any;
|
|
809
950
|
orchestrator.config = parseConfig({});
|