@remnic/core 9.25.3 → 9.25.5
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 +3 -2
- package/dist/access-admin-ops-surface.js +9 -8
- package/dist/access-authorization-probe.d.ts +10 -3
- package/dist/access-authorization-probe.js +12 -9
- package/dist/access-boundary.d.ts +6 -3
- package/dist/access-boundary.js +13 -10
- package/dist/access-cli.js +42 -41
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.d.ts +3 -2
- package/dist/access-http.js +16 -15
- package/dist/access-identity-continuity-surface.d.ts +2 -1
- package/dist/access-identity-continuity-surface.js +9 -8
- package/dist/access-lcm-surface.d.ts +3 -2
- package/dist/access-lcm-surface.js +9 -8
- package/dist/access-mcp-output-schemas.js +1 -1
- package/dist/access-mcp.d.ts +3 -2
- package/dist/access-mcp.js +13 -12
- package/dist/access-namespace-preflight.js +9 -8
- package/dist/access-observe-write-surface.d.ts +3 -2
- package/dist/access-observe-write-surface.js +9 -8
- package/dist/access-operations-batch.js +10 -9
- package/dist/access-operations.d.ts +6 -5
- package/dist/access-operations.js +11 -10
- package/dist/access-recall-concurrency.d.ts +3 -2
- package/dist/access-recall-concurrency.js +9 -8
- package/dist/access-recall-response.d.ts +4 -2
- package/dist/access-recall-response.js +9 -8
- package/dist/access-recall-surface.d.ts +3 -2
- package/dist/access-recall-surface.js +9 -8
- package/dist/access-schema.d.ts +76 -76
- package/dist/{access-service-BlNKWBC9.d.ts → access-service-BJQ22URi.d.ts} +4 -1
- package/dist/access-service.d.ts +3 -2
- package/dist/access-service.js +9 -8
- package/dist/access-surface-catalog.d.ts +3 -2
- package/dist/bootstrap.d.ts +2 -1
- package/dist/briefing.js +3 -3
- package/dist/causal-consolidation.js +4 -4
- package/dist/{chunk-GF22HWS2.js → chunk-2PHX3I5C.js} +7 -7
- package/dist/{chunk-3I35RLJW.js → chunk-32XTXKIA.js} +14 -13
- package/dist/chunk-32XTXKIA.js.map +1 -0
- package/dist/{chunk-LXKJNUND.js → chunk-37VPMR4E.js} +2 -2
- package/dist/{chunk-3CDMIR3C.js → chunk-3CHQZVAL.js} +2 -2
- package/dist/{chunk-U37RGPJT.js → chunk-5J7HJ7RT.js} +2 -2
- package/dist/{chunk-AGR7MGUX.js → chunk-7IGWPXVC.js} +2 -2
- package/dist/{chunk-FIGDB2HR.js → chunk-7KXQ44PA.js} +2 -2
- package/dist/chunk-AHVEHR6K.js +82 -0
- package/dist/chunk-AHVEHR6K.js.map +1 -0
- package/dist/{chunk-MNLZGCM2.js → chunk-AQ2ZQYDI.js} +3 -3
- package/dist/{chunk-TWCOYET2.js → chunk-B6JDYXL7.js} +2 -1
- package/dist/chunk-B6JDYXL7.js.map +1 -0
- package/dist/{chunk-RROMWDDC.js → chunk-BL4JHZSO.js} +49 -12
- package/dist/chunk-BL4JHZSO.js.map +1 -0
- package/dist/{chunk-PXJ4A6IK.js → chunk-BUK2FXOL.js} +133 -105
- package/dist/chunk-BUK2FXOL.js.map +1 -0
- package/dist/{chunk-JMDZDT24.js → chunk-D7MAWMMK.js} +18 -4
- package/dist/chunk-D7MAWMMK.js.map +1 -0
- package/dist/{chunk-TG2DJFH7.js → chunk-E5A6C4A5.js} +20 -20
- package/dist/{chunk-NBT7O25Z.js → chunk-FR75B4UU.js} +82 -56
- package/dist/chunk-FR75B4UU.js.map +1 -0
- package/dist/{chunk-DPYYSG6F.js → chunk-G6MGAE36.js} +7 -7
- package/dist/{chunk-GNFZFJBJ.js → chunk-IR4LGIH6.js} +2 -2
- package/dist/{chunk-MPDX5QMH.js → chunk-JA4HEXV7.js} +2 -2
- package/dist/{chunk-XTAAG4SQ.js → chunk-K4DP5KZA.js} +6 -6
- package/dist/{chunk-AT6DNUCM.js → chunk-NY6W6CJW.js} +2 -2
- package/dist/{chunk-NMGO2HAZ.js → chunk-OIE242WM.js} +2 -2
- package/dist/{chunk-SZN6XVFC.js → chunk-PS5OG75R.js} +2 -2
- package/dist/{chunk-VY6SDKWZ.js → chunk-SSYBI43M.js} +2 -2
- package/dist/{chunk-IE4HB6O5.js → chunk-TPYZ727G.js} +3 -3
- package/dist/{chunk-5ZGWA4AG.js → chunk-UMFLAACL.js} +6 -6
- package/dist/{chunk-THHPDPMS.js → chunk-UOURUMBN.js} +2 -2
- package/dist/{chunk-6LRTGCRV.js → chunk-VPSAVXHM.js} +3 -3
- package/dist/{chunk-AL4TZWI3.js → chunk-W33DEUKR.js} +2 -2
- package/dist/{chunk-W4ZDTHWZ.js → chunk-WIGBTWXA.js} +2 -2
- package/dist/{chunk-NVYCTASB.js → chunk-WSEA52RI.js} +2 -2
- package/dist/{chunk-LARPWF3S.js → chunk-ZPUFQGUF.js} +4 -4
- package/dist/{cli-Zc6UclD1.d.ts → cli-1W7cNjJJ.d.ts} +2 -2
- package/dist/cli.d.ts +4 -3
- package/dist/cli.js +28 -27
- package/dist/compounding/engine.js +3 -3
- package/dist/connectors/codex-materialize-runner.js +3 -3
- package/dist/connectors/index.js +3 -3
- package/dist/corpus-watermark.js +5 -5
- package/dist/entity-retrieval.js +3 -3
- package/dist/explicit-capture.d.ts +2 -1
- package/dist/extraction.js +5 -1
- package/dist/{first-start-migration-LEXL3XYL.js → first-start-migration-BKNGOFED.js} +4 -4
- package/dist/index.d.ts +391 -390
- package/dist/index.js +74 -54
- package/dist/lcm/engine.js +3 -3
- package/dist/lcm/index.js +8 -8
- package/dist/maintenance/memory-governance.js +3 -3
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +3 -3
- package/dist/maintenance/rebuild-memory-projection.js +4 -4
- package/dist/mcp-memory-inspector-app.d.ts +3 -2
- package/dist/namespaces/migrate.js +4 -4
- package/dist/namespaces/storage.js +3 -3
- package/dist/operator-doctor-corpus.js +6 -6
- package/dist/operator-toolkit.js +9 -9
- package/dist/orchestration/maintenance.js +8 -8
- package/dist/{orchestrator-BTGgoKli.d.ts → orchestrator-BtA1wC5K.d.ts} +2 -0
- package/dist/orchestrator.d.ts +2 -1
- package/dist/orchestrator.js +42 -41
- package/dist/recall-context-composition.d.ts +30 -0
- package/dist/recall-context-composition.js +24 -0
- package/dist/recall-context-composition.js.map +1 -0
- package/dist/schemas.d.ts +54 -54
- package/dist/semantic-consolidation.js +4 -4
- package/dist/semantic-rule-promotion.js +3 -3
- package/dist/semantic-rule-verifier.js +3 -3
- package/dist/shared-context/manager.d.ts +8 -8
- package/dist/storage.js +2 -2
- package/dist/transfer/types.d.ts +66 -66
- package/dist/verified-recall.js +3 -3
- package/package.json +2 -2
- package/src/access-authorization-probe.ts +30 -1
- package/src/access-boundary.ts +21 -0
- package/src/access-http.test.ts +86 -1
- package/src/access-http.ts +6 -6
- package/src/access-mcp-output-schemas.ts +1 -0
- package/src/access-recall-response.ts +18 -13
- package/src/access-recall-surface.ts +11 -1
- package/src/access-service.ts +3 -0
- package/src/extraction-prompt-safety.test.ts +179 -0
- package/src/extraction.ts +186 -205
- package/src/index.ts +1 -1
- package/src/orchestration/orchestrator-helpers.ts +2 -0
- package/src/orchestration/recall-internal.ts +49 -49
- package/src/recall-context-composition.test.ts +90 -0
- package/src/recall-context-composition.ts +104 -0
- package/src/recall-curiosity-composition.test.ts +301 -0
- package/dist/chunk-3I35RLJW.js.map +0 -1
- package/dist/chunk-JMDZDT24.js.map +0 -1
- package/dist/chunk-NBT7O25Z.js.map +0 -1
- package/dist/chunk-PXJ4A6IK.js.map +0 -1
- package/dist/chunk-RROMWDDC.js.map +0 -1
- package/dist/chunk-TWCOYET2.js.map +0 -1
- /package/dist/{chunk-GF22HWS2.js.map → chunk-2PHX3I5C.js.map} +0 -0
- /package/dist/{chunk-LXKJNUND.js.map → chunk-37VPMR4E.js.map} +0 -0
- /package/dist/{chunk-3CDMIR3C.js.map → chunk-3CHQZVAL.js.map} +0 -0
- /package/dist/{chunk-U37RGPJT.js.map → chunk-5J7HJ7RT.js.map} +0 -0
- /package/dist/{chunk-AGR7MGUX.js.map → chunk-7IGWPXVC.js.map} +0 -0
- /package/dist/{chunk-FIGDB2HR.js.map → chunk-7KXQ44PA.js.map} +0 -0
- /package/dist/{chunk-MNLZGCM2.js.map → chunk-AQ2ZQYDI.js.map} +0 -0
- /package/dist/{chunk-TG2DJFH7.js.map → chunk-E5A6C4A5.js.map} +0 -0
- /package/dist/{chunk-DPYYSG6F.js.map → chunk-G6MGAE36.js.map} +0 -0
- /package/dist/{chunk-GNFZFJBJ.js.map → chunk-IR4LGIH6.js.map} +0 -0
- /package/dist/{chunk-MPDX5QMH.js.map → chunk-JA4HEXV7.js.map} +0 -0
- /package/dist/{chunk-XTAAG4SQ.js.map → chunk-K4DP5KZA.js.map} +0 -0
- /package/dist/{chunk-AT6DNUCM.js.map → chunk-NY6W6CJW.js.map} +0 -0
- /package/dist/{chunk-NMGO2HAZ.js.map → chunk-OIE242WM.js.map} +0 -0
- /package/dist/{chunk-SZN6XVFC.js.map → chunk-PS5OG75R.js.map} +0 -0
- /package/dist/{chunk-VY6SDKWZ.js.map → chunk-SSYBI43M.js.map} +0 -0
- /package/dist/{chunk-IE4HB6O5.js.map → chunk-TPYZ727G.js.map} +0 -0
- /package/dist/{chunk-5ZGWA4AG.js.map → chunk-UMFLAACL.js.map} +0 -0
- /package/dist/{chunk-THHPDPMS.js.map → chunk-UOURUMBN.js.map} +0 -0
- /package/dist/{chunk-6LRTGCRV.js.map → chunk-VPSAVXHM.js.map} +0 -0
- /package/dist/{chunk-AL4TZWI3.js.map → chunk-W33DEUKR.js.map} +0 -0
- /package/dist/{chunk-W4ZDTHWZ.js.map → chunk-WIGBTWXA.js.map} +0 -0
- /package/dist/{chunk-NVYCTASB.js.map → chunk-WSEA52RI.js.map} +0 -0
- /package/dist/{chunk-LARPWF3S.js.map → chunk-ZPUFQGUF.js.map} +0 -0
- /package/dist/{first-start-migration-LEXL3XYL.js.map → first-start-migration-BKNGOFED.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
|
-
|
|
23
|
+
format: "openclaw-engram-export";
|
|
24
24
|
createdAt: string;
|
|
25
|
+
pluginVersion: string;
|
|
25
26
|
files: {
|
|
26
27
|
path: string;
|
|
27
28
|
sha256: string;
|
|
28
29
|
bytes: number;
|
|
29
30
|
}[];
|
|
30
|
-
|
|
31
|
-
pluginVersion: string;
|
|
31
|
+
schemaVersion: 1;
|
|
32
32
|
includesTranscripts: boolean;
|
|
33
33
|
}, {
|
|
34
|
-
|
|
34
|
+
format: "openclaw-engram-export";
|
|
35
35
|
createdAt: string;
|
|
36
|
+
pluginVersion: string;
|
|
36
37
|
files: {
|
|
37
38
|
path: string;
|
|
38
39
|
sha256: string;
|
|
39
40
|
bytes: number;
|
|
40
41
|
}[];
|
|
41
|
-
|
|
42
|
-
pluginVersion: string;
|
|
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
|
-
|
|
78
|
+
format: "openclaw-engram-export";
|
|
79
79
|
createdAt: string;
|
|
80
|
+
pluginVersion: string;
|
|
80
81
|
files: {
|
|
81
82
|
path: string;
|
|
82
83
|
sha256: string;
|
|
83
84
|
bytes: number;
|
|
84
85
|
}[];
|
|
85
|
-
|
|
86
|
-
pluginVersion: string;
|
|
86
|
+
schemaVersion: 1;
|
|
87
87
|
includesTranscripts: boolean;
|
|
88
88
|
}, {
|
|
89
|
-
|
|
89
|
+
format: "openclaw-engram-export";
|
|
90
90
|
createdAt: string;
|
|
91
|
+
pluginVersion: string;
|
|
91
92
|
files: {
|
|
92
93
|
path: string;
|
|
93
94
|
sha256: string;
|
|
94
95
|
bytes: number;
|
|
95
96
|
}[];
|
|
96
|
-
|
|
97
|
-
pluginVersion: string;
|
|
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
|
-
|
|
112
|
+
format: "openclaw-engram-export";
|
|
113
113
|
createdAt: string;
|
|
114
|
+
pluginVersion: string;
|
|
114
115
|
files: {
|
|
115
116
|
path: string;
|
|
116
117
|
sha256: string;
|
|
117
118
|
bytes: number;
|
|
118
119
|
}[];
|
|
119
|
-
|
|
120
|
-
pluginVersion: string;
|
|
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
|
-
|
|
129
|
+
format: "openclaw-engram-export";
|
|
130
130
|
createdAt: string;
|
|
131
|
+
pluginVersion: string;
|
|
131
132
|
files: {
|
|
132
133
|
path: string;
|
|
133
134
|
sha256: string;
|
|
134
135
|
bytes: number;
|
|
135
136
|
}[];
|
|
136
|
-
|
|
137
|
-
pluginVersion: string;
|
|
137
|
+
schemaVersion: 1;
|
|
138
138
|
includesTranscripts: boolean;
|
|
139
139
|
};
|
|
140
140
|
records: {
|
|
@@ -319,10 +319,10 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
319
319
|
identityAnchors: boolean;
|
|
320
320
|
peerProfiles: boolean;
|
|
321
321
|
};
|
|
322
|
-
|
|
322
|
+
description: string;
|
|
323
323
|
id: string;
|
|
324
|
+
schemaVersion: string;
|
|
324
325
|
version: string;
|
|
325
|
-
description: string;
|
|
326
326
|
parentCapsule: string | null;
|
|
327
327
|
parent: {
|
|
328
328
|
version: string;
|
|
@@ -340,10 +340,10 @@ declare const CapsuleBlockSchema: z.ZodObject<{
|
|
|
340
340
|
identityAnchors: boolean;
|
|
341
341
|
peerProfiles: boolean;
|
|
342
342
|
};
|
|
343
|
-
|
|
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>;
|
|
@@ -470,10 +470,10 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
470
470
|
identityAnchors: boolean;
|
|
471
471
|
peerProfiles: boolean;
|
|
472
472
|
};
|
|
473
|
-
|
|
473
|
+
description: string;
|
|
474
474
|
id: string;
|
|
475
|
+
schemaVersion: string;
|
|
475
476
|
version: string;
|
|
476
|
-
description: string;
|
|
477
477
|
parentCapsule: string | null;
|
|
478
478
|
parent: {
|
|
479
479
|
version: string;
|
|
@@ -491,10 +491,10 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
491
491
|
identityAnchors: boolean;
|
|
492
492
|
peerProfiles: boolean;
|
|
493
493
|
};
|
|
494
|
-
|
|
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,16 +507,14 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
507
507
|
} | null | undefined;
|
|
508
508
|
}>;
|
|
509
509
|
}, "strip", z.ZodTypeAny, {
|
|
510
|
-
|
|
510
|
+
format: "openclaw-engram-export";
|
|
511
511
|
createdAt: string;
|
|
512
|
+
pluginVersion: string;
|
|
512
513
|
files: {
|
|
513
514
|
path: string;
|
|
514
515
|
sha256: string;
|
|
515
516
|
bytes: number;
|
|
516
517
|
}[];
|
|
517
|
-
format: "openclaw-engram-export";
|
|
518
|
-
pluginVersion: string;
|
|
519
|
-
includesTranscripts: boolean;
|
|
520
518
|
capsule: {
|
|
521
519
|
includes: {
|
|
522
520
|
procedural: boolean;
|
|
@@ -524,10 +522,10 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
524
522
|
identityAnchors: boolean;
|
|
525
523
|
peerProfiles: boolean;
|
|
526
524
|
};
|
|
527
|
-
|
|
525
|
+
description: string;
|
|
528
526
|
id: string;
|
|
527
|
+
schemaVersion: string;
|
|
529
528
|
version: string;
|
|
530
|
-
description: string;
|
|
531
529
|
parentCapsule: string | null;
|
|
532
530
|
parent: {
|
|
533
531
|
version: string;
|
|
@@ -539,17 +537,17 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
539
537
|
directAnswerEnabled: boolean;
|
|
540
538
|
};
|
|
541
539
|
};
|
|
542
|
-
}, {
|
|
543
540
|
schemaVersion: 2;
|
|
541
|
+
includesTranscripts: boolean;
|
|
542
|
+
}, {
|
|
543
|
+
format: "openclaw-engram-export";
|
|
544
544
|
createdAt: string;
|
|
545
|
+
pluginVersion: string;
|
|
545
546
|
files: {
|
|
546
547
|
path: string;
|
|
547
548
|
sha256: string;
|
|
548
549
|
bytes: number;
|
|
549
550
|
}[];
|
|
550
|
-
format: "openclaw-engram-export";
|
|
551
|
-
pluginVersion: string;
|
|
552
|
-
includesTranscripts: boolean;
|
|
553
551
|
capsule: {
|
|
554
552
|
includes: {
|
|
555
553
|
procedural: boolean;
|
|
@@ -557,10 +555,10 @@ declare const ExportManifestV2Schema: z.ZodObject<{
|
|
|
557
555
|
identityAnchors: boolean;
|
|
558
556
|
peerProfiles: boolean;
|
|
559
557
|
};
|
|
560
|
-
|
|
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<{
|
|
@@ -689,10 +689,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
689
689
|
identityAnchors: boolean;
|
|
690
690
|
peerProfiles: boolean;
|
|
691
691
|
};
|
|
692
|
-
|
|
692
|
+
description: string;
|
|
693
693
|
id: string;
|
|
694
|
+
schemaVersion: string;
|
|
694
695
|
version: string;
|
|
695
|
-
description: string;
|
|
696
696
|
parentCapsule: string | null;
|
|
697
697
|
parent: {
|
|
698
698
|
version: string;
|
|
@@ -710,10 +710,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
710
710
|
identityAnchors: boolean;
|
|
711
711
|
peerProfiles: boolean;
|
|
712
712
|
};
|
|
713
|
-
|
|
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,16 +726,14 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
726
726
|
} | null | undefined;
|
|
727
727
|
}>;
|
|
728
728
|
}, "strip", z.ZodTypeAny, {
|
|
729
|
-
|
|
729
|
+
format: "openclaw-engram-export";
|
|
730
730
|
createdAt: string;
|
|
731
|
+
pluginVersion: string;
|
|
731
732
|
files: {
|
|
732
733
|
path: string;
|
|
733
734
|
sha256: string;
|
|
734
735
|
bytes: number;
|
|
735
736
|
}[];
|
|
736
|
-
format: "openclaw-engram-export";
|
|
737
|
-
pluginVersion: string;
|
|
738
|
-
includesTranscripts: boolean;
|
|
739
737
|
capsule: {
|
|
740
738
|
includes: {
|
|
741
739
|
procedural: boolean;
|
|
@@ -743,10 +741,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
743
741
|
identityAnchors: boolean;
|
|
744
742
|
peerProfiles: boolean;
|
|
745
743
|
};
|
|
746
|
-
|
|
744
|
+
description: string;
|
|
747
745
|
id: string;
|
|
746
|
+
schemaVersion: string;
|
|
748
747
|
version: string;
|
|
749
|
-
description: string;
|
|
750
748
|
parentCapsule: string | null;
|
|
751
749
|
parent: {
|
|
752
750
|
version: string;
|
|
@@ -758,17 +756,17 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
758
756
|
directAnswerEnabled: boolean;
|
|
759
757
|
};
|
|
760
758
|
};
|
|
761
|
-
}, {
|
|
762
759
|
schemaVersion: 2;
|
|
760
|
+
includesTranscripts: boolean;
|
|
761
|
+
}, {
|
|
762
|
+
format: "openclaw-engram-export";
|
|
763
763
|
createdAt: string;
|
|
764
|
+
pluginVersion: string;
|
|
764
765
|
files: {
|
|
765
766
|
path: string;
|
|
766
767
|
sha256: string;
|
|
767
768
|
bytes: number;
|
|
768
769
|
}[];
|
|
769
|
-
format: "openclaw-engram-export";
|
|
770
|
-
pluginVersion: string;
|
|
771
|
-
includesTranscripts: boolean;
|
|
772
770
|
capsule: {
|
|
773
771
|
includes: {
|
|
774
772
|
procedural: boolean;
|
|
@@ -776,10 +774,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
776
774
|
identityAnchors: boolean;
|
|
777
775
|
peerProfiles: boolean;
|
|
778
776
|
};
|
|
779
|
-
|
|
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,16 +804,14 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
804
804
|
}>, "many">;
|
|
805
805
|
}, "strip", z.ZodTypeAny, {
|
|
806
806
|
manifest: {
|
|
807
|
-
|
|
807
|
+
format: "openclaw-engram-export";
|
|
808
808
|
createdAt: string;
|
|
809
|
+
pluginVersion: string;
|
|
809
810
|
files: {
|
|
810
811
|
path: string;
|
|
811
812
|
sha256: string;
|
|
812
813
|
bytes: number;
|
|
813
814
|
}[];
|
|
814
|
-
format: "openclaw-engram-export";
|
|
815
|
-
pluginVersion: string;
|
|
816
|
-
includesTranscripts: boolean;
|
|
817
815
|
capsule: {
|
|
818
816
|
includes: {
|
|
819
817
|
procedural: boolean;
|
|
@@ -821,10 +819,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
821
819
|
identityAnchors: boolean;
|
|
822
820
|
peerProfiles: boolean;
|
|
823
821
|
};
|
|
824
|
-
|
|
822
|
+
description: string;
|
|
825
823
|
id: string;
|
|
824
|
+
schemaVersion: string;
|
|
826
825
|
version: string;
|
|
827
|
-
description: string;
|
|
828
826
|
parentCapsule: string | null;
|
|
829
827
|
parent: {
|
|
830
828
|
version: string;
|
|
@@ -836,6 +834,8 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
836
834
|
directAnswerEnabled: boolean;
|
|
837
835
|
};
|
|
838
836
|
};
|
|
837
|
+
schemaVersion: 2;
|
|
838
|
+
includesTranscripts: boolean;
|
|
839
839
|
};
|
|
840
840
|
records: {
|
|
841
841
|
content: string;
|
|
@@ -843,16 +843,14 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
843
843
|
}[];
|
|
844
844
|
}, {
|
|
845
845
|
manifest: {
|
|
846
|
-
|
|
846
|
+
format: "openclaw-engram-export";
|
|
847
847
|
createdAt: string;
|
|
848
|
+
pluginVersion: string;
|
|
848
849
|
files: {
|
|
849
850
|
path: string;
|
|
850
851
|
sha256: string;
|
|
851
852
|
bytes: number;
|
|
852
853
|
}[];
|
|
853
|
-
format: "openclaw-engram-export";
|
|
854
|
-
pluginVersion: string;
|
|
855
|
-
includesTranscripts: boolean;
|
|
856
854
|
capsule: {
|
|
857
855
|
includes: {
|
|
858
856
|
procedural: boolean;
|
|
@@ -860,10 +858,10 @@ declare const ExportBundleV2Schema: z.ZodObject<{
|
|
|
860
858
|
identityAnchors: boolean;
|
|
861
859
|
peerProfiles: boolean;
|
|
862
860
|
};
|
|
863
|
-
|
|
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,12 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareVerifiedEpisodeResults,
|
|
3
3
|
searchVerifiedEpisodes
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-SSYBI43M.js";
|
|
5
5
|
import "./chunk-B7RWBZXW.js";
|
|
6
6
|
import "./chunk-ZBJMUXZH.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-UHVXE24Y.js";
|
|
7
|
+
import "./chunk-K4DP5KZA.js";
|
|
9
8
|
import "./chunk-2QMKMVHH.js";
|
|
9
|
+
import "./chunk-UHVXE24Y.js";
|
|
10
10
|
import "./chunk-DEBHXHJR.js";
|
|
11
11
|
import "./chunk-DNHVPZOD.js";
|
|
12
12
|
import "./chunk-6CIAGZ6X.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@remnic/core",
|
|
3
|
-
"version": "9.25.
|
|
3
|
+
"version": "9.25.5",
|
|
4
4
|
"description": "Framework-agnostic Remnic memory engine — orchestrator, storage, extraction, search, trust zones",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -3056,7 +3056,7 @@
|
|
|
3056
3056
|
"core"
|
|
3057
3057
|
],
|
|
3058
3058
|
"peerDependencies": {
|
|
3059
|
-
"@remnic/coding-graph": "^9.25.
|
|
3059
|
+
"@remnic/coding-graph": "^9.25.5"
|
|
3060
3060
|
},
|
|
3061
3061
|
"peerDependenciesMeta": {
|
|
3062
3062
|
"@remnic/coding-graph": {
|
|
@@ -1,10 +1,22 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
getOperation,
|
|
3
|
+
operationRequiresAuthorizedNamespace,
|
|
4
|
+
OPERATION_NAMES,
|
|
5
|
+
type OperationName,
|
|
6
|
+
} from "./access-boundary.js";
|
|
2
7
|
import { EngramAccessInputError } from "./access-errors.js";
|
|
3
8
|
import {
|
|
4
9
|
assertOperationAuthorizationAllowed,
|
|
5
10
|
type TokenCapabilities,
|
|
6
11
|
} from "./access-token-capabilities.js";
|
|
7
12
|
|
|
13
|
+
const UNRESOLVABLE_RESOURCE_OPERATIONS = new Set<OperationName>([
|
|
14
|
+
"review_resolve",
|
|
15
|
+
"contradiction_detail",
|
|
16
|
+
"chat_message",
|
|
17
|
+
"chat_events",
|
|
18
|
+
]);
|
|
19
|
+
|
|
8
20
|
export interface AuthorizationProbeResponse {
|
|
9
21
|
readonly authorized: true;
|
|
10
22
|
readonly operations: readonly OperationName[];
|
|
@@ -41,3 +53,20 @@ export function probeOperationAuthorization(
|
|
|
41
53
|
|
|
42
54
|
return { authorized: true, operations };
|
|
43
55
|
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* Resolve every namespace an authorization probe can verify from the request.
|
|
59
|
+
* Resource-scoped routes resolve their stored target only after a resource id
|
|
60
|
+
* is supplied, so probes validate only request-resolvable namespaces.
|
|
61
|
+
*/
|
|
62
|
+
export function authorizationProbeNamespaces(
|
|
63
|
+
operations: readonly OperationName[],
|
|
64
|
+
requestedNamespace: string | undefined,
|
|
65
|
+
): readonly (string | undefined)[] {
|
|
66
|
+
const namespaceOperations = operations.filter(
|
|
67
|
+
(operation) =>
|
|
68
|
+
operationRequiresAuthorizedNamespace(operation) &&
|
|
69
|
+
!UNRESOLVABLE_RESOURCE_OPERATIONS.has(operation),
|
|
70
|
+
);
|
|
71
|
+
return namespaceOperations.length > 0 ? [requestedNamespace] : [];
|
|
72
|
+
}
|
package/src/access-boundary.ts
CHANGED
|
@@ -186,6 +186,18 @@ export const OPERATION_NAMES = [
|
|
|
186
186
|
*/
|
|
187
187
|
export type OperationName = (typeof OPERATION_NAMES)[number];
|
|
188
188
|
|
|
189
|
+
const IMPLICIT_HTTP_NAMESPACE_OPERATIONS = new Set<OperationName>([
|
|
190
|
+
"offline_sync_snapshot",
|
|
191
|
+
"offline_sync_snapshot_stream",
|
|
192
|
+
"memory_list",
|
|
193
|
+
"entity_list",
|
|
194
|
+
"maintenance_status",
|
|
195
|
+
"quality_status",
|
|
196
|
+
"trust_zones_status",
|
|
197
|
+
"graph_events",
|
|
198
|
+
"citations_observed",
|
|
199
|
+
]);
|
|
200
|
+
|
|
189
201
|
// ---------------------------------------------------------------------------
|
|
190
202
|
// Operation context — what every handler receives
|
|
191
203
|
// ---------------------------------------------------------------------------
|
|
@@ -435,6 +447,15 @@ export function getOperation(name: OperationName): BoundOperation | undefined {
|
|
|
435
447
|
return registry.get(name);
|
|
436
448
|
}
|
|
437
449
|
|
|
450
|
+
/** Whether a probe must authorize an operation's effective namespace. */
|
|
451
|
+
export function operationRequiresAuthorizedNamespace(name: OperationName): boolean {
|
|
452
|
+
if (name === "namespace_writable") return false;
|
|
453
|
+
if (IMPLICIT_HTTP_NAMESPACE_OPERATIONS.has(name)) return true;
|
|
454
|
+
const schema = registry.get(name)?.spec.schema;
|
|
455
|
+
const objectSchema = schema instanceof z.ZodEffects ? schema.innerType() : schema;
|
|
456
|
+
return objectSchema instanceof z.ZodObject && Object.hasOwn(objectSchema.shape, "namespace");
|
|
457
|
+
}
|
|
458
|
+
|
|
438
459
|
/** All registered operation names. */
|
|
439
460
|
export function listRegisteredOperations(): readonly OperationName[] {
|
|
440
461
|
return [...registry.keys()];
|
package/src/access-http.test.ts
CHANGED
|
@@ -2983,6 +2983,17 @@ test("HTTP authorization probe verifies requested operation grants without invok
|
|
|
2983
2983
|
const service = {
|
|
2984
2984
|
configRef: parseConfig({ memoryDir: "/tmp/remnic-http-authorization-probe", defaultNamespace: "default" }),
|
|
2985
2985
|
} as unknown as EngramAccessService;
|
|
2986
|
+
const implicitNamespaceOperations = [
|
|
2987
|
+
"offline_sync_snapshot",
|
|
2988
|
+
"offline_sync_snapshot_stream",
|
|
2989
|
+
"memory_list",
|
|
2990
|
+
"entity_list",
|
|
2991
|
+
"maintenance_status",
|
|
2992
|
+
"quality_status",
|
|
2993
|
+
"trust_zones_status",
|
|
2994
|
+
"graph_events",
|
|
2995
|
+
"citations_observed",
|
|
2996
|
+
];
|
|
2986
2997
|
const server = new EngramAccessHttpServer({
|
|
2987
2998
|
service,
|
|
2988
2999
|
port: 0,
|
|
@@ -2993,6 +3004,38 @@ test("HTTP authorization probe verifies requested operation grants without invok
|
|
|
2993
3004
|
},
|
|
2994
3005
|
{ token: "recall-only-token", capabilities: { version: 1, ops: ["recall"] } },
|
|
2995
3006
|
{ token: "observe-only-token", capabilities: { version: 1, ops: ["observe"] } },
|
|
3007
|
+
{
|
|
3008
|
+
token: "namespace-scoped-delegate-token",
|
|
3009
|
+
capabilities: {
|
|
3010
|
+
version: 1,
|
|
3011
|
+
ops: ["recall", "observe", "lcm_compaction_flush"],
|
|
3012
|
+
namespaces: ["other"],
|
|
3013
|
+
},
|
|
3014
|
+
},
|
|
3015
|
+
{
|
|
3016
|
+
token: "resource-scoped-chat-token",
|
|
3017
|
+
capabilities: {
|
|
3018
|
+
version: 1,
|
|
3019
|
+
ops: ["chat_message", "contradiction_detail"],
|
|
3020
|
+
namespaces: ["other"],
|
|
3021
|
+
},
|
|
3022
|
+
},
|
|
3023
|
+
{
|
|
3024
|
+
token: "namespace-scoped-adapters-token",
|
|
3025
|
+
capabilities: {
|
|
3026
|
+
version: 1,
|
|
3027
|
+
ops: ["adapters_status"],
|
|
3028
|
+
namespaces: ["other"],
|
|
3029
|
+
},
|
|
3030
|
+
},
|
|
3031
|
+
{
|
|
3032
|
+
token: "implicit-namespace-token",
|
|
3033
|
+
capabilities: {
|
|
3034
|
+
version: 1,
|
|
3035
|
+
ops: implicitNamespaceOperations,
|
|
3036
|
+
namespaces: ["other"],
|
|
3037
|
+
},
|
|
3038
|
+
},
|
|
2996
3039
|
{
|
|
2997
3040
|
token: "fleet-scoped-token",
|
|
2998
3041
|
capabilities: {
|
|
@@ -3005,9 +3048,10 @@ test("HTTP authorization probe verifies requested operation grants without invok
|
|
|
3005
3048
|
adminConsoleEnabled: false,
|
|
3006
3049
|
});
|
|
3007
3050
|
const status = await server.start();
|
|
3008
|
-
const probe = (token: string, operations: string[]) => {
|
|
3051
|
+
const probe = (token: string, operations: string[], namespace?: string) => {
|
|
3009
3052
|
const query = new URLSearchParams();
|
|
3010
3053
|
for (const operation of operations) query.append("op", operation);
|
|
3054
|
+
if (namespace !== undefined) query.set("namespace", namespace);
|
|
3011
3055
|
return fetch(`http://127.0.0.1:${status.port}/engram/v1/authorization?${query}`, {
|
|
3012
3056
|
headers: { authorization: `Bearer ${token}` },
|
|
3013
3057
|
});
|
|
@@ -3023,6 +3067,47 @@ test("HTTP authorization probe verifies requested operation grants without invok
|
|
|
3023
3067
|
assert.equal(alternateGrant.status, 200);
|
|
3024
3068
|
await alternateGrant.text();
|
|
3025
3069
|
|
|
3070
|
+
const namespaceDiagnostic = await probe(
|
|
3071
|
+
"namespace-scoped-delegate-token",
|
|
3072
|
+
["namespace_writable"],
|
|
3073
|
+
);
|
|
3074
|
+
assert.equal(namespaceDiagnostic.status, 200, "writability diagnostics report scope in their response");
|
|
3075
|
+
await namespaceDiagnostic.text();
|
|
3076
|
+
|
|
3077
|
+
const namespaceAgnostic = await probe("namespace-scoped-adapters-token", ["adapters_status"]);
|
|
3078
|
+
assert.equal(namespaceAgnostic.status, 200, "namespace-free operations must not use the daemon default");
|
|
3079
|
+
await namespaceAgnostic.text();
|
|
3080
|
+
|
|
3081
|
+
const namespaceDenied = await probe("namespace-scoped-delegate-token", delegateOperations);
|
|
3082
|
+
assert.equal(namespaceDenied.status, 403, "a scoped token must cover the daemon default namespace");
|
|
3083
|
+
|
|
3084
|
+
for (const operation of implicitNamespaceOperations) {
|
|
3085
|
+
const implicitNamespace = await probe("implicit-namespace-token", [operation]);
|
|
3086
|
+
assert.equal(implicitNamespace.status, 403, `${operation} must authorize the effective namespace`);
|
|
3087
|
+
await implicitNamespace.text();
|
|
3088
|
+
}
|
|
3089
|
+
await namespaceDenied.text();
|
|
3090
|
+
|
|
3091
|
+
const namespaceAllowed = await probe(
|
|
3092
|
+
"namespace-scoped-delegate-token",
|
|
3093
|
+
delegateOperations,
|
|
3094
|
+
"other",
|
|
3095
|
+
);
|
|
3096
|
+
assert.equal(namespaceAllowed.status, 200);
|
|
3097
|
+
await namespaceAllowed.text();
|
|
3098
|
+
|
|
3099
|
+
const resourceNamespaceProbe = await probe(
|
|
3100
|
+
"resource-scoped-chat-token",
|
|
3101
|
+
["chat_message", "contradiction_detail"],
|
|
3102
|
+
"other",
|
|
3103
|
+
);
|
|
3104
|
+
assert.equal(
|
|
3105
|
+
resourceNamespaceProbe.status,
|
|
3106
|
+
200,
|
|
3107
|
+
"resource-scoped probes must not claim a namespace they cannot resolve without a resource id",
|
|
3108
|
+
);
|
|
3109
|
+
await resourceNamespaceProbe.text();
|
|
3110
|
+
|
|
3026
3111
|
const fleetWide = await probe("fleet-scoped-token", ["continuity_audit_generate"]);
|
|
3027
3112
|
assert.equal(fleetWide.status, 403);
|
|
3028
3113
|
assert.equal(fleetWide.headers.get("cache-control"), "no-store");
|
package/src/access-http.ts
CHANGED
|
@@ -38,7 +38,7 @@ import {
|
|
|
38
38
|
import { expandTildePath } from "./utils/path.js";
|
|
39
39
|
import { projectTagProjectId } from "./coding/coding-namespace.js";
|
|
40
40
|
import { getOperation, type OperationName } from "./access-boundary.js";
|
|
41
|
-
import { probeOperationAuthorization } from "./access-authorization-probe.js";
|
|
41
|
+
import { authorizationProbeNamespaces, probeOperationAuthorization } from "./access-authorization-probe.js";
|
|
42
42
|
import { resolveQueryNamespaceWritablePreflight } from "./access-namespace-preflight.js";
|
|
43
43
|
import {
|
|
44
44
|
assertOperationAllowed,
|
|
@@ -892,11 +892,11 @@ export class EngramAccessHttpServer {
|
|
|
892
892
|
|
|
893
893
|
if (req.method === "GET" && pathname === "/engram/v1/authorization") {
|
|
894
894
|
res.setHeader("cache-control", "no-store");
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
);
|
|
895
|
+
const probe = probeOperationAuthorization(tokenCapabilityStore.getStore(), parsed.searchParams.getAll("op"));
|
|
896
|
+
const namespaceParam = parsed.searchParams.get("namespace") ?? undefined;
|
|
897
|
+
for (const namespace of authorizationProbeNamespaces(probe.operations, namespaceParam))
|
|
898
|
+
this.resolveNamespace(req, namespace);
|
|
899
|
+
this.respondJson(res, 200, probe);
|
|
900
900
|
return;
|
|
901
901
|
}
|
|
902
902
|
|
|
@@ -31,6 +31,7 @@ const TOOL_OUTPUT_SCHEMAS: Readonly<Record<string, Record<string, unknown>>> = {
|
|
|
31
31
|
query: T_STRING,
|
|
32
32
|
namespace: T_STRING,
|
|
33
33
|
context: T_STRING,
|
|
34
|
+
contextComposition: objectSchema({ context: T_STRING, footer: T_STRING }),
|
|
34
35
|
count: T_NUMBER,
|
|
35
36
|
memoryIds: T_ARRAY,
|
|
36
37
|
results: T_ARRAY,
|