@remnic/core 1.1.13 → 1.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/dist/access-cli.js +34 -33
  2. package/dist/access-cli.js.map +1 -1
  3. package/dist/access-http.d.ts +2 -1
  4. package/dist/access-http.js +15 -14
  5. package/dist/access-mcp.d.ts +2 -1
  6. package/dist/access-mcp.js +14 -13
  7. package/dist/access-schema.d.ts +22 -5
  8. package/dist/access-schema.js +7 -5
  9. package/dist/{access-service-DcCDmNYC.d.ts → access-service-BCMine1s.d.ts} +21 -1
  10. package/dist/access-service.d.ts +2 -1
  11. package/dist/access-service.js +12 -11
  12. package/dist/briefing.js +4 -4
  13. package/dist/causal-consolidation.js +5 -5
  14. package/dist/{chunk-VNO6ZJ35.js → chunk-2PRLKQAH.js} +5 -5
  15. package/dist/{chunk-M23FSH32.js → chunk-5D2G67ZQ.js} +53 -6
  16. package/dist/chunk-5D2G67ZQ.js.map +1 -0
  17. package/dist/{chunk-EFJ3MQ4V.js → chunk-65HQPW6O.js} +2 -2
  18. package/dist/{chunk-GA454ALV.js → chunk-AAX3SUM3.js} +39 -39
  19. package/dist/{chunk-QQUAB63I.js → chunk-BEB4GUU5.js} +2 -2
  20. package/dist/{chunk-WZYKANL3.js → chunk-BNATB54A.js} +4 -4
  21. package/dist/{chunk-KUJVMMZQ.js → chunk-C7DGCHJE.js} +2 -2
  22. package/dist/{chunk-PR5FBTFU.js → chunk-CYFQJMUV.js} +5 -5
  23. package/dist/{chunk-KLAO5DGL.js → chunk-G7JBLD65.js} +3 -3
  24. package/dist/chunk-GSP6ZKOY.js +769 -0
  25. package/dist/chunk-GSP6ZKOY.js.map +1 -0
  26. package/dist/{chunk-CQZRLNMV.js → chunk-HJ2WMBFB.js} +42 -4
  27. package/dist/chunk-HJ2WMBFB.js.map +1 -0
  28. package/dist/{chunk-ME6ESPZU.js → chunk-IG5VGHYB.js} +2 -2
  29. package/dist/{chunk-7AAT6G4Q.js → chunk-IOAY54RF.js} +57 -5
  30. package/dist/chunk-IOAY54RF.js.map +1 -0
  31. package/dist/{chunk-XVZ7B3HG.js → chunk-JFEH2LZM.js} +2 -2
  32. package/dist/{chunk-JLFA7DQG.js → chunk-M3AA636B.js} +2 -2
  33. package/dist/{chunk-P4NEIHUT.js → chunk-MS3ULOZF.js} +2 -2
  34. package/dist/{chunk-7IASACLB.js → chunk-NOHC2L57.js} +2 -2
  35. package/dist/{chunk-6RVI47ZR.js → chunk-NTUNYIF7.js} +5 -5
  36. package/dist/{chunk-CK5NTM2S.js → chunk-OGROP7ZN.js} +2 -2
  37. package/dist/{chunk-MT25YHYH.js → chunk-OJRKZLZ4.js} +5 -5
  38. package/dist/{chunk-2F2W355T.js → chunk-QA2ZAPBU.js} +4 -4
  39. package/dist/{chunk-MC26UJIM.js → chunk-QLKBF3TI.js} +2 -2
  40. package/dist/{chunk-YNJHCGDT.js → chunk-SH5S7XYD.js} +8 -5
  41. package/dist/chunk-SH5S7XYD.js.map +1 -0
  42. package/dist/{chunk-VW676BEI.js → chunk-V7WH7DEM.js} +2 -2
  43. package/dist/{chunk-A2XUIMJ3.js → chunk-VWFIQOTJ.js} +11 -2
  44. package/dist/chunk-VWFIQOTJ.js.map +1 -0
  45. package/dist/{chunk-PU63GXWS.js → chunk-W7DK3CYM.js} +2 -2
  46. package/dist/{chunk-TFO23QT4.js → chunk-XKLD5OK4.js} +4 -4
  47. package/dist/{chunk-I5V2VDIW.js → chunk-YCVWX2NF.js} +2 -2
  48. package/dist/{chunk-UXHQAFNA.js → chunk-ZPXYWTN5.js} +4 -4
  49. package/dist/{chunk-CHEL3SKB.js → chunk-ZYRMKWVW.js} +27 -27
  50. package/dist/{chunk-GGKRUQOO.js → chunk-ZYVPLJ4T.js} +4 -4
  51. package/dist/{cli-D3VpkVwB.d.ts → cli-B71zQ6XK.d.ts} +1 -1
  52. package/dist/cli.d.ts +3 -2
  53. package/dist/cli.js +35 -34
  54. package/dist/compounding/engine.js +4 -4
  55. package/dist/connectors/codex-materialize-runner.js +4 -4
  56. package/dist/connectors/index.js +4 -4
  57. package/dist/conversation-index/backend.js +2 -2
  58. package/dist/entity-retrieval.js +4 -4
  59. package/dist/index.d.ts +4 -3
  60. package/dist/index.js +90 -58
  61. package/dist/index.js.map +1 -1
  62. package/dist/lcm/engine.js +2 -2
  63. package/dist/lcm/index.js +5 -5
  64. package/dist/maintenance/memory-governance.js +4 -4
  65. package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +4 -4
  66. package/dist/maintenance/rebuild-memory-projection.js +5 -5
  67. package/dist/mcp-memory-inspector-app.d.ts +2 -1
  68. package/dist/namespaces/migrate.js +10 -10
  69. package/dist/namespaces/search.js +5 -5
  70. package/dist/namespaces/storage.js +4 -4
  71. package/dist/offline-sync.d.ts +136 -0
  72. package/dist/offline-sync.js +41 -0
  73. package/dist/offline-sync.js.map +1 -0
  74. package/dist/operator-toolkit.js +13 -13
  75. package/dist/orchestrator.js +24 -24
  76. package/dist/search/factory.js +4 -4
  77. package/dist/search/index.js +6 -6
  78. package/dist/secure-store/index.d.ts +1 -15
  79. package/dist/secure-store/index.js +2 -2
  80. package/dist/semantic-consolidation.js +5 -5
  81. package/dist/semantic-rule-promotion.js +4 -4
  82. package/dist/semantic-rule-verifier.js +4 -4
  83. package/dist/storage.d.ts +7 -0
  84. package/dist/storage.js +3 -3
  85. package/dist/transfer/backup.js +2 -2
  86. package/dist/transfer/capsule-export.js +4 -4
  87. package/dist/transfer/capsule-import.js +3 -3
  88. package/dist/transfer/import-sqlite.js +2 -2
  89. package/dist/verified-recall.js +4 -4
  90. package/package.json +1 -1
  91. package/src/access-http.test.ts +216 -0
  92. package/src/access-http.ts +54 -0
  93. package/src/access-schema.ts +18 -0
  94. package/src/access-service.ts +76 -0
  95. package/src/index.ts +33 -0
  96. package/src/offline-sync.test.ts +521 -0
  97. package/src/offline-sync.ts +998 -0
  98. package/src/qmd.test.ts +1 -0
  99. package/src/secure-store/secure-fs.ts +14 -7
  100. package/src/storage.ts +59 -0
  101. package/dist/chunk-7AAT6G4Q.js.map +0 -1
  102. package/dist/chunk-A2XUIMJ3.js.map +0 -1
  103. package/dist/chunk-CQZRLNMV.js.map +0 -1
  104. package/dist/chunk-M23FSH32.js.map +0 -1
  105. package/dist/chunk-YNJHCGDT.js.map +0 -1
  106. /package/dist/{chunk-VNO6ZJ35.js.map → chunk-2PRLKQAH.js.map} +0 -0
  107. /package/dist/{chunk-EFJ3MQ4V.js.map → chunk-65HQPW6O.js.map} +0 -0
  108. /package/dist/{chunk-GA454ALV.js.map → chunk-AAX3SUM3.js.map} +0 -0
  109. /package/dist/{chunk-QQUAB63I.js.map → chunk-BEB4GUU5.js.map} +0 -0
  110. /package/dist/{chunk-WZYKANL3.js.map → chunk-BNATB54A.js.map} +0 -0
  111. /package/dist/{chunk-KUJVMMZQ.js.map → chunk-C7DGCHJE.js.map} +0 -0
  112. /package/dist/{chunk-PR5FBTFU.js.map → chunk-CYFQJMUV.js.map} +0 -0
  113. /package/dist/{chunk-KLAO5DGL.js.map → chunk-G7JBLD65.js.map} +0 -0
  114. /package/dist/{chunk-ME6ESPZU.js.map → chunk-IG5VGHYB.js.map} +0 -0
  115. /package/dist/{chunk-XVZ7B3HG.js.map → chunk-JFEH2LZM.js.map} +0 -0
  116. /package/dist/{chunk-JLFA7DQG.js.map → chunk-M3AA636B.js.map} +0 -0
  117. /package/dist/{chunk-P4NEIHUT.js.map → chunk-MS3ULOZF.js.map} +0 -0
  118. /package/dist/{chunk-7IASACLB.js.map → chunk-NOHC2L57.js.map} +0 -0
  119. /package/dist/{chunk-6RVI47ZR.js.map → chunk-NTUNYIF7.js.map} +0 -0
  120. /package/dist/{chunk-CK5NTM2S.js.map → chunk-OGROP7ZN.js.map} +0 -0
  121. /package/dist/{chunk-MT25YHYH.js.map → chunk-OJRKZLZ4.js.map} +0 -0
  122. /package/dist/{chunk-2F2W355T.js.map → chunk-QA2ZAPBU.js.map} +0 -0
  123. /package/dist/{chunk-MC26UJIM.js.map → chunk-QLKBF3TI.js.map} +0 -0
  124. /package/dist/{chunk-VW676BEI.js.map → chunk-V7WH7DEM.js.map} +0 -0
  125. /package/dist/{chunk-PU63GXWS.js.map → chunk-W7DK3CYM.js.map} +0 -0
  126. /package/dist/{chunk-TFO23QT4.js.map → chunk-XKLD5OK4.js.map} +0 -0
  127. /package/dist/{chunk-I5V2VDIW.js.map → chunk-YCVWX2NF.js.map} +0 -0
  128. /package/dist/{chunk-UXHQAFNA.js.map → chunk-ZPXYWTN5.js.map} +0 -0
  129. /package/dist/{chunk-CHEL3SKB.js.map → chunk-ZYRMKWVW.js.map} +0 -0
  130. /package/dist/{chunk-GGKRUQOO.js.map → chunk-ZYVPLJ4T.js.map} +0 -0
@@ -1,44 +1,44 @@
1
1
  import {
2
2
  Orchestrator
3
- } from "./chunk-GA454ALV.js";
4
- import "./chunk-CK5NTM2S.js";
3
+ } from "./chunk-AAX3SUM3.js";
4
+ import "./chunk-OGROP7ZN.js";
5
5
  import "./chunk-KOSORCJG.js";
6
6
  import "./chunk-BFBF3XEF.js";
7
7
  import "./chunk-HHLLAQGZ.js";
8
8
  import "./chunk-UWK5OXUJ.js";
9
- import "./chunk-VNO6ZJ35.js";
9
+ import "./chunk-2PRLKQAH.js";
10
+ import "./chunk-7XYTQGCC.js";
10
11
  import "./chunk-34DQE4KF.js";
11
12
  import "./chunk-56K5QLHX.js";
12
13
  import "./chunk-7N4KAIGN.js";
13
14
  import "./chunk-TPDBFYEG.js";
14
15
  import "./chunk-ZTFCYYEZ.js";
15
- import "./chunk-7XYTQGCC.js";
16
16
  import "./chunk-TECVW3JP.js";
17
17
  import "./chunk-RYED3SPJ.js";
18
- import "./chunk-KUJVMMZQ.js";
18
+ import "./chunk-C7DGCHJE.js";
19
19
  import "./chunk-U4SCL7B7.js";
20
+ import "./chunk-UHGBNIOS.js";
20
21
  import "./chunk-FSFEQI74.js";
21
22
  import "./chunk-OIGNEXKZ.js";
22
23
  import "./chunk-MDYG7VI7.js";
23
24
  import "./chunk-Z5AAYHUC.js";
24
25
  import "./chunk-S75M5ZRK.js";
25
26
  import "./chunk-TPB3I2AC.js";
26
- import "./chunk-UHGBNIOS.js";
27
27
  import "./chunk-H3ME6L6D.js";
28
28
  import "./chunk-XJNBEDFE.js";
29
29
  import "./chunk-VWT3F4IV.js";
30
30
  import "./chunk-JR4ZC3G4.js";
31
+ import "./chunk-K4FLSOR5.js";
32
+ import "./chunk-V3RXWQIE.js";
31
33
  import "./chunk-5IZL4DCV.js";
34
+ import "./chunk-X7XN6YU4.js";
32
35
  import "./chunk-5NPGSAVB.js";
33
36
  import "./chunk-C7VW7C3F.js";
34
37
  import "./chunk-OZKZ2TRP.js";
35
- import "./chunk-K4FLSOR5.js";
36
- import "./chunk-V3RXWQIE.js";
38
+ import "./chunk-7DHTMOND.js";
37
39
  import "./chunk-WPGJYVUH.js";
38
- import "./chunk-X7XN6YU4.js";
39
40
  import "./chunk-ZZTOURJI.js";
40
41
  import "./chunk-YDBIWGNI.js";
41
- import "./chunk-7DHTMOND.js";
42
42
  import "./chunk-YCN4BVDK.js";
43
43
  import "./chunk-D654IBA6.js";
44
44
  import "./chunk-3GPTTA4J.js";
@@ -56,7 +56,7 @@ import "./chunk-54V4BZWP.js";
56
56
  import "./chunk-QR3C7BKQ.js";
57
57
  import "./chunk-EDTHC6UD.js";
58
58
  import "./chunk-DB5A3NHS.js";
59
- import "./chunk-7IASACLB.js";
59
+ import "./chunk-NOHC2L57.js";
60
60
  import "./chunk-6NKAQ74D.js";
61
61
  import "./chunk-OAZ5MFUB.js";
62
62
  import "./chunk-PYPOFEMK.js";
@@ -67,40 +67,40 @@ import "./chunk-Y4FHOFJ2.js";
67
67
  import "./chunk-NMZY542O.js";
68
68
  import "./chunk-3PG3H5TD.js";
69
69
  import "./chunk-2NMMFZ5T.js";
70
- import "./chunk-I5V2VDIW.js";
71
- import "./chunk-ME6ESPZU.js";
70
+ import "./chunk-YCVWX2NF.js";
71
+ import "./chunk-IG5VGHYB.js";
72
72
  import "./chunk-RHY3HH7P.js";
73
73
  import "./chunk-EJI5XIBB.js";
74
74
  import "./chunk-2PRQG7PV.js";
75
75
  import "./chunk-LUDTDZLK.js";
76
+ import "./chunk-MS3ULOZF.js";
76
77
  import "./chunk-PYXS46O7.js";
77
78
  import "./chunk-3QKK7QOS.js";
78
- import "./chunk-P4NEIHUT.js";
79
79
  import "./chunk-W4RVMTHR.js";
80
- import "./chunk-MC26UJIM.js";
80
+ import "./chunk-QLKBF3TI.js";
81
81
  import "./chunk-CULXMQJH.js";
82
82
  import "./chunk-5375UYTQ.js";
83
83
  import "./chunk-FF4KLI5W.js";
84
84
  import "./chunk-EABGC2TL.js";
85
- import "./chunk-PU63GXWS.js";
86
- import "./chunk-6RVI47ZR.js";
85
+ import "./chunk-BEB4GUU5.js";
86
+ import "./chunk-W7DK3CYM.js";
87
+ import "./chunk-NTUNYIF7.js";
88
+ import "./chunk-NJ3MJQZX.js";
87
89
  import "./chunk-XVVIG67A.js";
88
90
  import "./chunk-PIRJPV5T.js";
89
91
  import "./chunk-RXDLTSWT.js";
90
92
  import "./chunk-3VAL7ZL2.js";
91
93
  import "./chunk-TMQLARTH.js";
92
94
  import "./chunk-MJFNCJXV.js";
93
- import "./chunk-NJ3MJQZX.js";
94
- import "./chunk-QQUAB63I.js";
95
- import "./chunk-PR5FBTFU.js";
95
+ import "./chunk-CYFQJMUV.js";
96
+ import "./chunk-7DTASS5T.js";
96
97
  import "./chunk-FJ43PRLT.js";
97
98
  import "./chunk-LLQ2LLWF.js";
98
- import "./chunk-7DTASS5T.js";
99
99
  import "./chunk-YRMVARQP.js";
100
+ import "./chunk-BJ3KMYTB.js";
100
101
  import {
101
102
  resolveRemnicPluginEntry
102
103
  } from "./chunk-U66YHYC7.js";
103
- import "./chunk-BJ3KMYTB.js";
104
104
  import "./chunk-HXXBL2KD.js";
105
105
  import "./chunk-LPMVBPA3.js";
106
106
  import "./chunk-JXS5PDQ7.js";
@@ -135,10 +135,10 @@ import "./chunk-PVGDJXVK.js";
135
135
  import "./chunk-NGAVDO7E.js";
136
136
  import {
137
137
  EngramAccessService
138
- } from "./chunk-M23FSH32.js";
138
+ } from "./chunk-5D2G67ZQ.js";
139
139
  import "./chunk-ZKSK55RC.js";
140
140
  import "./chunk-WELDCG6C.js";
141
- import "./chunk-GGKRUQOO.js";
141
+ import "./chunk-ZYVPLJ4T.js";
142
142
  import "./chunk-BT7NVCML.js";
143
143
  import "./chunk-H7XKCNR6.js";
144
144
  import "./chunk-FBYESMQ2.js";
@@ -149,7 +149,8 @@ import "./chunk-MGKYQQYF.js";
149
149
  import "./chunk-GL6I6MEQ.js";
150
150
  import "./chunk-3APJ5EVB.js";
151
151
  import "./chunk-5UM2VJ6D.js";
152
- import "./chunk-EFJ3MQ4V.js";
152
+ import "./chunk-GSP6ZKOY.js";
153
+ import "./chunk-65HQPW6O.js";
153
154
  import "./chunk-EIR5VLIH.js";
154
155
  import "./chunk-PCUKNJAZ.js";
155
156
  import "./chunk-RRF5UOBJ.js";
@@ -162,13 +163,13 @@ import "./chunk-U3PN77QT.js";
162
163
  import "./chunk-RK2Y4XOM.js";
163
164
  import "./chunk-2LSZVONP.js";
164
165
  import "./chunk-WIICJPET.js";
165
- import "./chunk-VW676BEI.js";
166
- import "./chunk-7AAT6G4Q.js";
166
+ import "./chunk-V7WH7DEM.js";
167
+ import "./chunk-IOAY54RF.js";
167
168
  import "./chunk-5UZXUTVO.js";
168
- import "./chunk-YNJHCGDT.js";
169
- import "./chunk-P7FMDTKL.js";
169
+ import "./chunk-SH5S7XYD.js";
170
170
  import "./chunk-NN2DKE4T.js";
171
171
  import "./chunk-Q7P4WJDP.js";
172
+ import "./chunk-P7FMDTKL.js";
172
173
  import "./chunk-SCU65EZI.js";
173
174
  import "./chunk-3KW65B36.js";
174
175
  import "./chunk-3HPAPHUK.js";
@@ -199,15 +200,15 @@ import "./chunk-TVVEYCNW.js";
199
200
  import "./chunk-RFYAYKTD.js";
200
201
  import "./chunk-LBLXEFWK.js";
201
202
  import "./chunk-XKECPATV.js";
202
- import "./chunk-2F2W355T.js";
203
- import "./chunk-KNKUID7G.js";
203
+ import "./chunk-QA2ZAPBU.js";
204
204
  import "./chunk-WEHSQBFR.js";
205
+ import "./chunk-KNKUID7G.js";
205
206
  import "./chunk-J4EB7DNW.js";
206
- import "./chunk-I6K5FBRQ.js";
207
- import "./chunk-AGZQD76C.js";
208
207
  import "./chunk-BJMBJZ2Y.js";
209
208
  import "./chunk-UKJAGEXH.js";
210
209
  import "./chunk-FP2373TW.js";
210
+ import "./chunk-I6K5FBRQ.js";
211
+ import "./chunk-AGZQD76C.js";
211
212
  import "./chunk-A6XUJE5D.js";
212
213
  import "./chunk-AH2JUU6X.js";
213
214
  import "./chunk-AC5LO7IU.js";
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/access-cli.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseConfig } from \"./config.js\";\nimport type { PluginConfig } from \"./types.js\";\nimport { Orchestrator } from \"./orchestrator.js\";\nimport { EngramAccessService } from \"./access-service.js\";\nimport { readEnvVar, resolveHomeDir } from \"./runtime/env.js\";\nimport { resolveRemnicPluginEntry } from \"./plugin-id.js\";\nimport { expandTildePath } from \"./utils/path.js\";\n\ntype CommandName = \"browse\" | \"store\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype CommandSpec = {\n valueOptions: ReadonlySet<string>;\n flagOptions: ReadonlySet<string>;\n};\n\ntype Runtime = {\n config: PluginConfig;\n service: EngramAccessService;\n};\n\nexport type AccessCliOptions = {\n /**\n * The calling plugin's own id (e.g. `\"openclaw-engram\"` when invoked by the\n * shim binary). Forwarded to {@link resolveRemnicPluginEntry} so shim CLI\n * users target their own `plugins.entries[\"openclaw-engram\"]` block instead\n * of accidentally resolving to the canonical `\"openclaw-remnic\"` entry when\n * `plugins.slots.memory` is unset (#403).\n */\n preferredId?: string;\n};\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"unknown-option\"\n | \"invalid-option\"\n | \"option-does-not-take-value\"\n | \"missing-option\"\n | \"missing-content\"\n | \"invalid-integer\"\n | \"invalid-number\";\n\nclass UsageError extends Error {\n constructor(\n readonly kind: UsageErrorKind,\n readonly optionName?: string,\n readonly acceptedValues?: readonly string[],\n ) {\n super(\"invalid access-cli arguments\");\n }\n}\n\nfunction formatUsageError(error: UsageError): string {\n switch (error.kind) {\n case \"unsupported-command\":\n return \"unsupported command\";\n case \"unexpected-positional\":\n return \"unexpected positional argument\";\n case \"unknown-option\":\n return `unknown option: --${error.optionName ?? \"unknown\"}`;\n case \"invalid-option\": {\n const accepted = error.acceptedValues?.length ? `. Accepted: ${error.acceptedValues.join(\", \")}.` : \"\";\n return `invalid value for --${error.optionName ?? \"unknown\"}${accepted}`;\n }\n case \"option-does-not-take-value\":\n return `option does not accept a value: --${error.optionName ?? \"unknown\"}`;\n case \"missing-option\":\n return `missing required option: --${error.optionName ?? \"unknown\"}`;\n case \"missing-content\":\n return \"missing required option: --content or --content-file\";\n case \"invalid-integer\":\n return `invalid integer for --${error.optionName ?? \"unknown\"}`;\n case \"invalid-number\":\n return `invalid number for --${error.optionName ?? \"unknown\"}`;\n }\n}\n\nfunction writeCliOutput(text: string = \"\"): void {\n process.stdout.write(`${text}\\n`);\n}\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \"\",\n \"Browse options:\",\n \" --namespace <name>\",\n \" --principal <principal>\",\n \" --query <text>\",\n \" --category <name>\",\n \" --status <name>\",\n \" --sort <updated_desc|updated_asc|created_desc|created_asc>\",\n \" --limit <n>\",\n \" --offset <n>\",\n \"\",\n \"Store options:\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --content <text> | --content-file <path>\",\n \" --category <name>\",\n \" --confidence <0-1>\",\n \" --tag <tag> (repeatable)\",\n \" --entity-ref <ref>\",\n \" --ttl <duration>\",\n \" --source-reason <text>\",\n \" --idempotency-key <key>\",\n \" --dry-run\",\n ].join(\"\\n\");\n}\n\nconst COMMAND_SPECS: Record<CommandName, CommandSpec> = {\n browse: {\n valueOptions: new Set([\n \"namespace\",\n \"principal\",\n \"query\",\n \"category\",\n \"status\",\n \"sort\",\n \"limit\",\n \"offset\",\n ]),\n flagOptions: new Set(),\n },\n store: {\n valueOptions: new Set([\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"content\",\n \"content-file\",\n \"category\",\n \"confidence\",\n \"tag\",\n \"entity-ref\",\n \"ttl\",\n \"source-reason\",\n \"idempotency-key\",\n ]),\n flagOptions: new Set([\"dry-run\"]),\n },\n};\n\nconst BROWSE_SORT_VALUES = Object.freeze([\n \"updated_desc\",\n \"updated_asc\",\n \"created_desc\",\n \"created_asc\",\n] as const);\n\ntype BrowseSort = (typeof BROWSE_SORT_VALUES)[number];\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (commandRaw !== \"browse\" && commandRaw !== \"store\") {\n throw new UsageError(\"unsupported-command\");\n }\n const spec = COMMAND_SPECS[commandRaw];\n\n const options: Record<string, string[]> = {};\n const flags = new Set<string>();\n\n for (let i = 0; i < rest.length; i += 1) {\n const token = rest[i];\n if (!token.startsWith(\"--\")) {\n throw new UsageError(\"unexpected-positional\");\n }\n const rawKey = token.slice(2);\n if (!rawKey) {\n throw new UsageError(\"unknown-option\", rawKey);\n }\n const equalsIndex = rawKey.indexOf(\"=\");\n const key = equalsIndex === -1 ? rawKey : rawKey.slice(0, equalsIndex);\n const inlineValue = equalsIndex === -1 ? undefined : rawKey.slice(equalsIndex + 1);\n\n if (!spec.valueOptions.has(key) && !spec.flagOptions.has(key)) {\n throw new UsageError(\"unknown-option\", key);\n }\n\n if (spec.flagOptions.has(key)) {\n if (inlineValue !== undefined) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n const next = rest[i + 1];\n if (next && !next.startsWith(\"--\")) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n flags.add(key);\n continue;\n }\n\n if (inlineValue !== undefined) {\n if (inlineValue.length === 0) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(inlineValue);\n continue;\n }\n\n const next = rest[i + 1];\n if (next === undefined || next.length === 0 || next.startsWith(\"--\")) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(next);\n i += 1;\n }\n\n return {\n command: commandRaw,\n options,\n flags,\n };\n}\n\nfunction getLastOption(args: ParsedArgs, name: string): string | undefined {\n const values = args.options[name];\n if (!values || values.length === 0) return undefined;\n return values[values.length - 1];\n}\n\nfunction getAllOptions(args: ParsedArgs, name: string): string[] {\n return args.options[name] ?? [];\n}\n\nfunction requireOption(args: ParsedArgs, name: string): string {\n const value = getLastOption(args, name);\n if (!value || value.trim().length === 0) {\n throw new UsageError(\"missing-option\", name);\n }\n return value;\n}\n\nfunction parseIntegerOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?\\d+$/.test(trimmed)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n const value = Number(trimmed);\n if (!Number.isSafeInteger(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-option\", name, [`integer >= ${options.min}`]);\n }\n return value;\n}\n\nfunction parseBrowseSortOption(args: ParsedArgs, name: string): BrowseSort | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n if ((BROWSE_SORT_VALUES as readonly string[]).includes(raw)) {\n return raw as BrowseSort;\n }\n throw new UsageError(\"invalid-option\", name, BROWSE_SORT_VALUES);\n}\n\nfunction parseFloatOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number; max?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?$/i.test(trimmed)) {\n throw new UsageError(\"invalid-number\", name);\n }\n const value = Number(trimmed);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.max !== undefined && value > options.max) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n expandOptionalPath(readEnvVar(\"OPENCLAW_CONFIG_PATH\")) ||\n expandOptionalPath(readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\")) ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n // Delegate slot → preferredId → PLUGIN_ID → LEGACY_PLUGIN_ID resolution to\n // the shared helper so all config loaders stay in sync (#403). Shim CLI\n // callers pass `preferredId: \"openclaw-engram\"` so legacy shim installs\n // target their own config block instead of falling through to the canonical\n // \"openclaw-remnic\" entry.\n const entry = resolveRemnicPluginEntry(raw, preferredId);\n return (entry?.[\"config\"] as Record<string, unknown> | undefined) ?? {};\n}\n\nfunction buildRuntime(preferredId?: string): Runtime {\n const config = parseConfig(loadPluginConfig(preferredId));\n return {\n config,\n service: new EngramAccessService(new Orchestrator(config)),\n };\n}\n\nasync function runBrowse(args: ParsedArgs, preferredId?: string): Promise<void> {\n const browseArgs = {\n namespace: getLastOption(args, \"namespace\"),\n principal: getLastOption(args, \"principal\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: parseBrowseSortOption(args, \"sort\"),\n limit: parseIntegerOption(args, \"limit\", { min: 1 }),\n offset: parseIntegerOption(args, \"offset\", { min: 0 }),\n };\n const { config, service } = buildRuntime(preferredId);\n const request = {\n namespace: browseArgs.namespace,\n authenticatedPrincipal: browseArgs.principal ?? config.agentAccessHttp.principal,\n query: browseArgs.query,\n category: browseArgs.category,\n status: browseArgs.status,\n sort: browseArgs.sort,\n limit: browseArgs.limit,\n offset: browseArgs.offset,\n };\n const result = await service.memoryBrowse(request);\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile\n ? fs.readFileSync(expandTildePath(contentFile), \"utf8\")\n : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n const storeArgs = {\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\", { min: 0, max: 1 }),\n tags: getAllOptions(args, \"tag\"),\n entityRef: getLastOption(args, \"entity-ref\"),\n ttl: getLastOption(args, \"ttl\"),\n sourceReason: getLastOption(args, \"source-reason\"),\n idempotencyKey: getLastOption(args, \"idempotency-key\"),\n dryRun: args.flags.has(\"dry-run\"),\n };\n\n const { config, service } = buildRuntime(preferredId);\n const result = await service.memoryStore({\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n content: storeArgs.content,\n category: storeArgs.category,\n confidence: storeArgs.confidence,\n tags: storeArgs.tags,\n entityRef: storeArgs.entityRef,\n ttl: storeArgs.ttl,\n sourceReason: storeArgs.sourceReason,\n idempotencyKey: storeArgs.idempotencyKey,\n dryRun: storeArgs.dryRun,\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n const args = parseArgs(argv);\n if (args.command === \"browse\") {\n await runBrowse(args, options.preferredId);\n return;\n }\n await runStore(args, options.preferredId);\n}\n\nexport function sanitizeAccessCliErrorMessage(message: string): string {\n return message.replace(\n /\\b(openaiApiKey|localLlmApiKey)\\b(\\s*[:=]\\s*)(?:\"[^\"]*\"|'[^']*'|[^\\s,}\\]]+)/gi,\n (_match, name: string, separator: string) => `${name}${separator}[redacted]`,\n );\n}\n\nexport function printUsage(): void {\n writeCliOutput(usage());\n}\n\nexport async function runCli(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n try {\n await main(argv, options);\n } catch (error) {\n if (error instanceof UsageError) {\n writeCliOutput(formatUsageError(error));\n writeCliOutput();\n printUsage();\n process.exit(1);\n }\n\n console.error(\"access-cli failed: runtime error\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["next"]}
1
+ {"version":3,"sources":["../src/access-cli.ts"],"sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { parseConfig } from \"./config.js\";\nimport type { PluginConfig } from \"./types.js\";\nimport { Orchestrator } from \"./orchestrator.js\";\nimport { EngramAccessService } from \"./access-service.js\";\nimport { readEnvVar, resolveHomeDir } from \"./runtime/env.js\";\nimport { resolveRemnicPluginEntry } from \"./plugin-id.js\";\nimport { expandTildePath } from \"./utils/path.js\";\n\ntype CommandName = \"browse\" | \"store\";\n\ntype ParsedArgs = {\n command: CommandName;\n options: Record<string, string[]>;\n flags: Set<string>;\n};\n\ntype CommandSpec = {\n valueOptions: ReadonlySet<string>;\n flagOptions: ReadonlySet<string>;\n};\n\ntype Runtime = {\n config: PluginConfig;\n service: EngramAccessService;\n};\n\nexport type AccessCliOptions = {\n /**\n * The calling plugin's own id (e.g. `\"openclaw-engram\"` when invoked by the\n * shim binary). Forwarded to {@link resolveRemnicPluginEntry} so shim CLI\n * users target their own `plugins.entries[\"openclaw-engram\"]` block instead\n * of accidentally resolving to the canonical `\"openclaw-remnic\"` entry when\n * `plugins.slots.memory` is unset (#403).\n */\n preferredId?: string;\n};\n\ntype UsageErrorKind =\n | \"unsupported-command\"\n | \"unexpected-positional\"\n | \"unknown-option\"\n | \"invalid-option\"\n | \"option-does-not-take-value\"\n | \"missing-option\"\n | \"missing-content\"\n | \"invalid-integer\"\n | \"invalid-number\";\n\nclass UsageError extends Error {\n constructor(\n readonly kind: UsageErrorKind,\n readonly optionName?: string,\n readonly acceptedValues?: readonly string[],\n ) {\n super(\"invalid access-cli arguments\");\n }\n}\n\nfunction formatUsageError(error: UsageError): string {\n switch (error.kind) {\n case \"unsupported-command\":\n return \"unsupported command\";\n case \"unexpected-positional\":\n return \"unexpected positional argument\";\n case \"unknown-option\":\n return `unknown option: --${error.optionName ?? \"unknown\"}`;\n case \"invalid-option\": {\n const accepted = error.acceptedValues?.length ? `. Accepted: ${error.acceptedValues.join(\", \")}.` : \"\";\n return `invalid value for --${error.optionName ?? \"unknown\"}${accepted}`;\n }\n case \"option-does-not-take-value\":\n return `option does not accept a value: --${error.optionName ?? \"unknown\"}`;\n case \"missing-option\":\n return `missing required option: --${error.optionName ?? \"unknown\"}`;\n case \"missing-content\":\n return \"missing required option: --content or --content-file\";\n case \"invalid-integer\":\n return `invalid integer for --${error.optionName ?? \"unknown\"}`;\n case \"invalid-number\":\n return `invalid number for --${error.optionName ?? \"unknown\"}`;\n }\n}\n\nfunction writeCliOutput(text: string = \"\"): void {\n process.stdout.write(`${text}\\n`);\n}\n\nfunction usage(): string {\n return [\n \"Usage:\",\n \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \"\",\n \"Browse options:\",\n \" --namespace <name>\",\n \" --principal <principal>\",\n \" --query <text>\",\n \" --category <name>\",\n \" --status <name>\",\n \" --sort <updated_desc|updated_asc|created_desc|created_asc>\",\n \" --limit <n>\",\n \" --offset <n>\",\n \"\",\n \"Store options:\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --content <text> | --content-file <path>\",\n \" --category <name>\",\n \" --confidence <0-1>\",\n \" --tag <tag> (repeatable)\",\n \" --entity-ref <ref>\",\n \" --ttl <duration>\",\n \" --source-reason <text>\",\n \" --idempotency-key <key>\",\n \" --dry-run\",\n ].join(\"\\n\");\n}\n\nconst COMMAND_SPECS: Record<CommandName, CommandSpec> = {\n browse: {\n valueOptions: new Set([\n \"namespace\",\n \"principal\",\n \"query\",\n \"category\",\n \"status\",\n \"sort\",\n \"limit\",\n \"offset\",\n ]),\n flagOptions: new Set(),\n },\n store: {\n valueOptions: new Set([\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"content\",\n \"content-file\",\n \"category\",\n \"confidence\",\n \"tag\",\n \"entity-ref\",\n \"ttl\",\n \"source-reason\",\n \"idempotency-key\",\n ]),\n flagOptions: new Set([\"dry-run\"]),\n },\n};\n\nconst BROWSE_SORT_VALUES = Object.freeze([\n \"updated_desc\",\n \"updated_asc\",\n \"created_desc\",\n \"created_asc\",\n] as const);\n\ntype BrowseSort = (typeof BROWSE_SORT_VALUES)[number];\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (commandRaw !== \"browse\" && commandRaw !== \"store\") {\n throw new UsageError(\"unsupported-command\");\n }\n const spec = COMMAND_SPECS[commandRaw];\n\n const options: Record<string, string[]> = {};\n const flags = new Set<string>();\n\n for (let i = 0; i < rest.length; i += 1) {\n const token = rest[i];\n if (!token.startsWith(\"--\")) {\n throw new UsageError(\"unexpected-positional\");\n }\n const rawKey = token.slice(2);\n if (!rawKey) {\n throw new UsageError(\"unknown-option\", rawKey);\n }\n const equalsIndex = rawKey.indexOf(\"=\");\n const key = equalsIndex === -1 ? rawKey : rawKey.slice(0, equalsIndex);\n const inlineValue = equalsIndex === -1 ? undefined : rawKey.slice(equalsIndex + 1);\n\n if (!spec.valueOptions.has(key) && !spec.flagOptions.has(key)) {\n throw new UsageError(\"unknown-option\", key);\n }\n\n if (spec.flagOptions.has(key)) {\n if (inlineValue !== undefined) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n const next = rest[i + 1];\n if (next && !next.startsWith(\"--\")) {\n throw new UsageError(\"option-does-not-take-value\", key);\n }\n flags.add(key);\n continue;\n }\n\n if (inlineValue !== undefined) {\n if (inlineValue.length === 0) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(inlineValue);\n continue;\n }\n\n const next = rest[i + 1];\n if (next === undefined || next.length === 0 || next.startsWith(\"--\")) {\n throw new UsageError(\"missing-option\", key);\n }\n if (!options[key]) {\n options[key] = [];\n }\n options[key].push(next);\n i += 1;\n }\n\n return {\n command: commandRaw,\n options,\n flags,\n };\n}\n\nfunction getLastOption(args: ParsedArgs, name: string): string | undefined {\n const values = args.options[name];\n if (!values || values.length === 0) return undefined;\n return values[values.length - 1];\n}\n\nfunction getAllOptions(args: ParsedArgs, name: string): string[] {\n return args.options[name] ?? [];\n}\n\nfunction requireOption(args: ParsedArgs, name: string): string {\n const value = getLastOption(args, name);\n if (!value || value.trim().length === 0) {\n throw new UsageError(\"missing-option\", name);\n }\n return value;\n}\n\nfunction parseIntegerOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?\\d+$/.test(trimmed)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n const value = Number(trimmed);\n if (!Number.isSafeInteger(value)) {\n throw new UsageError(\"invalid-integer\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-option\", name, [`integer >= ${options.min}`]);\n }\n return value;\n}\n\nfunction parseBrowseSortOption(args: ParsedArgs, name: string): BrowseSort | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n if ((BROWSE_SORT_VALUES as readonly string[]).includes(raw)) {\n return raw as BrowseSort;\n }\n throw new UsageError(\"invalid-option\", name, BROWSE_SORT_VALUES);\n}\n\nfunction parseFloatOption(\n args: ParsedArgs,\n name: string,\n options: { min?: number; max?: number } = {},\n): number | undefined {\n const raw = getLastOption(args, name);\n if (!raw) return undefined;\n const trimmed = raw.trim();\n if (!/^[+-]?(?:(?:\\d+\\.?\\d*)|(?:\\.\\d+))(?:e[+-]?\\d+)?$/i.test(trimmed)) {\n throw new UsageError(\"invalid-number\", name);\n }\n const value = Number(trimmed);\n if (!Number.isFinite(value)) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.min !== undefined && value < options.min) {\n throw new UsageError(\"invalid-number\", name);\n }\n if (options.max !== undefined && value > options.max) {\n throw new UsageError(\"invalid-number\", name);\n }\n return value;\n}\n\nfunction loadPluginConfig(preferredId?: string): Record<string, unknown> {\n const configPath =\n expandOptionalPath(readEnvVar(\"OPENCLAW_CONFIG_PATH\")) ||\n expandOptionalPath(readEnvVar(\"OPENCLAW_ENGRAM_CONFIG_PATH\")) ||\n path.join(resolveHomeDir(), \".openclaw\", \"openclaw.json\");\n const raw = JSON.parse(fs.readFileSync(configPath, \"utf8\"));\n // Delegate slot → preferredId → PLUGIN_ID → LEGACY_PLUGIN_ID resolution to\n // the shared helper so all config loaders stay in sync (#403). Shim CLI\n // callers pass `preferredId: \"openclaw-engram\"` so legacy shim installs\n // target their own config block instead of falling through to the canonical\n // \"openclaw-remnic\" entry.\n const entry = resolveRemnicPluginEntry(raw, preferredId);\n return (entry?.[\"config\"] as Record<string, unknown> | undefined) ?? {};\n}\n\nfunction buildRuntime(preferredId?: string): Runtime {\n const config = parseConfig(loadPluginConfig(preferredId));\n return {\n config,\n service: new EngramAccessService(new Orchestrator(config)),\n };\n}\n\nasync function runBrowse(args: ParsedArgs, preferredId?: string): Promise<void> {\n const browseArgs = {\n namespace: getLastOption(args, \"namespace\"),\n principal: getLastOption(args, \"principal\"),\n query: getLastOption(args, \"query\"),\n category: getLastOption(args, \"category\"),\n status: getLastOption(args, \"status\"),\n sort: parseBrowseSortOption(args, \"sort\"),\n limit: parseIntegerOption(args, \"limit\", { min: 1 }),\n offset: parseIntegerOption(args, \"offset\", { min: 0 }),\n };\n const { config, service } = buildRuntime(preferredId);\n const request = {\n namespace: browseArgs.namespace,\n authenticatedPrincipal: browseArgs.principal ?? config.agentAccessHttp.principal,\n query: browseArgs.query,\n category: browseArgs.category,\n status: browseArgs.status,\n sort: browseArgs.sort,\n limit: browseArgs.limit,\n offset: browseArgs.offset,\n };\n const result = await service.memoryBrowse(request);\n console.log(JSON.stringify(result, null, 2));\n}\n\nasync function runStore(args: ParsedArgs, preferredId?: string): Promise<void> {\n const contentFile = getLastOption(args, \"content-file\");\n const inlineContent = getLastOption(args, \"content\");\n const content = contentFile\n ? fs.readFileSync(expandTildePath(contentFile), \"utf8\")\n : inlineContent;\n if (!content || content.trim().length === 0) {\n throw new UsageError(\"missing-content\");\n }\n const storeArgs = {\n namespace: getLastOption(args, \"namespace\"),\n sessionKey: getLastOption(args, \"session-key\"),\n content,\n category: requireOption(args, \"category\"),\n confidence: parseFloatOption(args, \"confidence\", { min: 0, max: 1 }),\n tags: getAllOptions(args, \"tag\"),\n entityRef: getLastOption(args, \"entity-ref\"),\n ttl: getLastOption(args, \"ttl\"),\n sourceReason: getLastOption(args, \"source-reason\"),\n idempotencyKey: getLastOption(args, \"idempotency-key\"),\n dryRun: args.flags.has(\"dry-run\"),\n };\n\n const { config, service } = buildRuntime(preferredId);\n const result = await service.memoryStore({\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n content: storeArgs.content,\n category: storeArgs.category,\n confidence: storeArgs.confidence,\n tags: storeArgs.tags,\n entityRef: storeArgs.entityRef,\n ttl: storeArgs.ttl,\n sourceReason: storeArgs.sourceReason,\n idempotencyKey: storeArgs.idempotencyKey,\n dryRun: storeArgs.dryRun,\n });\n console.log(JSON.stringify(result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\n}\n\nexport async function main(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n const args = parseArgs(argv);\n if (args.command === \"browse\") {\n await runBrowse(args, options.preferredId);\n return;\n }\n await runStore(args, options.preferredId);\n}\n\nexport function sanitizeAccessCliErrorMessage(message: string): string {\n return message.replace(\n /\\b(openaiApiKey|localLlmApiKey)\\b(\\s*[:=]\\s*)(?:\"[^\"]*\"|'[^']*'|[^\\s,}\\]]+)/gi,\n (_match, name: string, separator: string) => `${name}${separator}[redacted]`,\n );\n}\n\nexport function printUsage(): void {\n writeCliOutput(usage());\n}\n\nexport async function runCli(\n argv: string[] = process.argv.slice(2),\n options: AccessCliOptions = {},\n): Promise<void> {\n try {\n await main(argv, options);\n } catch (error) {\n if (error instanceof UsageError) {\n writeCliOutput(formatUsageError(error));\n writeCliOutput();\n printUsage();\n process.exit(1);\n }\n\n console.error(\"access-cli failed: runtime error\");\n process.exit(1);\n }\n}\n"],"mappings":"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","names":["next"]}
@@ -1,5 +1,5 @@
1
1
  import { IncomingMessage } from 'node:http';
2
- import { E as EngramAccessService } from './access-service-DcCDmNYC.js';
2
+ import { E as EngramAccessService } from './access-service-BCMine1s.js';
3
3
  import { ResolvedIdentity } from './adapters/types.js';
4
4
  import { AdapterRegistry } from './adapters/registry.js';
5
5
  import './storage.js';
@@ -62,6 +62,7 @@ import './transfer/capsule-import.js';
62
62
  import './transfer/types.js';
63
63
  import './transfer/capsule-export.js';
64
64
  import './capsule-cli.js';
65
+ import './offline-sync.js';
65
66
  import './action-confidence.js';
66
67
 
67
68
  interface EngramAccessHttpServerOptions {
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  EngramAccessHttpServer
3
- } from "./chunk-CQZRLNMV.js";
3
+ } from "./chunk-HJ2WMBFB.js";
4
4
  import "./chunk-SEDEKFYQ.js";
5
5
  import "./chunk-6FC5EGNV.js";
6
6
  import "./chunk-3Y4P7RXM.js";
@@ -8,13 +8,13 @@ import "./chunk-6LVVDPJ4.js";
8
8
  import "./chunk-7MNMYOFP.js";
9
9
  import "./chunk-FKFMOY3N.js";
10
10
  import "./chunk-FAJ7FZYM.js";
11
- import "./chunk-WZYKANL3.js";
11
+ import "./chunk-BNATB54A.js";
12
12
  import "./chunk-C5BCH4ZS.js";
13
13
  import "./chunk-IQT3XTKW.js";
14
- import "./chunk-M23FSH32.js";
14
+ import "./chunk-5D2G67ZQ.js";
15
15
  import "./chunk-ZKSK55RC.js";
16
16
  import "./chunk-WELDCG6C.js";
17
- import "./chunk-GGKRUQOO.js";
17
+ import "./chunk-ZYVPLJ4T.js";
18
18
  import "./chunk-BT7NVCML.js";
19
19
  import "./chunk-H7XKCNR6.js";
20
20
  import "./chunk-FBYESMQ2.js";
@@ -25,7 +25,8 @@ import "./chunk-MGKYQQYF.js";
25
25
  import "./chunk-GL6I6MEQ.js";
26
26
  import "./chunk-3APJ5EVB.js";
27
27
  import "./chunk-5UM2VJ6D.js";
28
- import "./chunk-EFJ3MQ4V.js";
28
+ import "./chunk-GSP6ZKOY.js";
29
+ import "./chunk-65HQPW6O.js";
29
30
  import "./chunk-EIR5VLIH.js";
30
31
  import "./chunk-PCUKNJAZ.js";
31
32
  import "./chunk-RRF5UOBJ.js";
@@ -38,13 +39,13 @@ import "./chunk-U3PN77QT.js";
38
39
  import "./chunk-RK2Y4XOM.js";
39
40
  import "./chunk-2LSZVONP.js";
40
41
  import "./chunk-WIICJPET.js";
41
- import "./chunk-VW676BEI.js";
42
- import "./chunk-7AAT6G4Q.js";
42
+ import "./chunk-V7WH7DEM.js";
43
+ import "./chunk-IOAY54RF.js";
43
44
  import "./chunk-5UZXUTVO.js";
44
- import "./chunk-YNJHCGDT.js";
45
- import "./chunk-P7FMDTKL.js";
45
+ import "./chunk-SH5S7XYD.js";
46
46
  import "./chunk-NN2DKE4T.js";
47
47
  import "./chunk-Q7P4WJDP.js";
48
+ import "./chunk-P7FMDTKL.js";
48
49
  import "./chunk-SCU65EZI.js";
49
50
  import "./chunk-3KW65B36.js";
50
51
  import "./chunk-3HPAPHUK.js";
@@ -70,16 +71,16 @@ import "./chunk-TVVEYCNW.js";
70
71
  import "./chunk-RFYAYKTD.js";
71
72
  import "./chunk-LBLXEFWK.js";
72
73
  import "./chunk-XKECPATV.js";
73
- import "./chunk-A2XUIMJ3.js";
74
- import "./chunk-2F2W355T.js";
75
- import "./chunk-KNKUID7G.js";
74
+ import "./chunk-VWFIQOTJ.js";
75
+ import "./chunk-QA2ZAPBU.js";
76
76
  import "./chunk-WEHSQBFR.js";
77
+ import "./chunk-KNKUID7G.js";
77
78
  import "./chunk-J4EB7DNW.js";
78
- import "./chunk-I6K5FBRQ.js";
79
- import "./chunk-AGZQD76C.js";
80
79
  import "./chunk-BJMBJZ2Y.js";
81
80
  import "./chunk-UKJAGEXH.js";
82
81
  import "./chunk-FP2373TW.js";
82
+ import "./chunk-I6K5FBRQ.js";
83
+ import "./chunk-AGZQD76C.js";
83
84
  import "./chunk-A6XUJE5D.js";
84
85
  import "./chunk-AH2JUU6X.js";
85
86
  import "./chunk-AC5LO7IU.js";
@@ -1,5 +1,5 @@
1
1
  import { Readable, Writable } from 'node:stream';
2
- import { E as EngramAccessService } from './access-service-DcCDmNYC.js';
2
+ import { E as EngramAccessService } from './access-service-BCMine1s.js';
3
3
  import './storage.js';
4
4
  import './page-versioning.js';
5
5
  import './consolidation-operator.js';
@@ -60,6 +60,7 @@ import './transfer/capsule-import.js';
60
60
  import './transfer/types.js';
61
61
  import './transfer/capsule-export.js';
62
62
  import './capsule-cli.js';
63
+ import './offline-sync.js';
63
64
  import './action-confidence.js';
64
65
 
65
66
  type JsonRpcId = string | number | null;
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  EngramMcpServer
3
- } from "./chunk-WZYKANL3.js";
3
+ } from "./chunk-BNATB54A.js";
4
4
  import "./chunk-C5BCH4ZS.js";
5
5
  import "./chunk-IQT3XTKW.js";
6
- import "./chunk-M23FSH32.js";
6
+ import "./chunk-5D2G67ZQ.js";
7
7
  import "./chunk-ZKSK55RC.js";
8
8
  import "./chunk-WELDCG6C.js";
9
- import "./chunk-GGKRUQOO.js";
9
+ import "./chunk-ZYVPLJ4T.js";
10
10
  import "./chunk-BT7NVCML.js";
11
11
  import "./chunk-H7XKCNR6.js";
12
12
  import "./chunk-FBYESMQ2.js";
@@ -17,7 +17,8 @@ import "./chunk-MGKYQQYF.js";
17
17
  import "./chunk-GL6I6MEQ.js";
18
18
  import "./chunk-3APJ5EVB.js";
19
19
  import "./chunk-5UM2VJ6D.js";
20
- import "./chunk-EFJ3MQ4V.js";
20
+ import "./chunk-GSP6ZKOY.js";
21
+ import "./chunk-65HQPW6O.js";
21
22
  import "./chunk-EIR5VLIH.js";
22
23
  import "./chunk-PCUKNJAZ.js";
23
24
  import "./chunk-RRF5UOBJ.js";
@@ -30,13 +31,13 @@ import "./chunk-U3PN77QT.js";
30
31
  import "./chunk-RK2Y4XOM.js";
31
32
  import "./chunk-2LSZVONP.js";
32
33
  import "./chunk-WIICJPET.js";
33
- import "./chunk-VW676BEI.js";
34
- import "./chunk-7AAT6G4Q.js";
34
+ import "./chunk-V7WH7DEM.js";
35
+ import "./chunk-IOAY54RF.js";
35
36
  import "./chunk-5UZXUTVO.js";
36
- import "./chunk-YNJHCGDT.js";
37
- import "./chunk-P7FMDTKL.js";
37
+ import "./chunk-SH5S7XYD.js";
38
38
  import "./chunk-NN2DKE4T.js";
39
39
  import "./chunk-Q7P4WJDP.js";
40
+ import "./chunk-P7FMDTKL.js";
40
41
  import "./chunk-SCU65EZI.js";
41
42
  import "./chunk-3KW65B36.js";
42
43
  import "./chunk-3HPAPHUK.js";
@@ -62,16 +63,16 @@ import "./chunk-TVVEYCNW.js";
62
63
  import "./chunk-RFYAYKTD.js";
63
64
  import "./chunk-LBLXEFWK.js";
64
65
  import "./chunk-XKECPATV.js";
65
- import "./chunk-A2XUIMJ3.js";
66
- import "./chunk-2F2W355T.js";
67
- import "./chunk-KNKUID7G.js";
66
+ import "./chunk-VWFIQOTJ.js";
67
+ import "./chunk-QA2ZAPBU.js";
68
68
  import "./chunk-WEHSQBFR.js";
69
+ import "./chunk-KNKUID7G.js";
69
70
  import "./chunk-J4EB7DNW.js";
70
- import "./chunk-I6K5FBRQ.js";
71
- import "./chunk-AGZQD76C.js";
72
71
  import "./chunk-BJMBJZ2Y.js";
73
72
  import "./chunk-UKJAGEXH.js";
74
73
  import "./chunk-FP2373TW.js";
74
+ import "./chunk-I6K5FBRQ.js";
75
+ import "./chunk-AGZQD76C.js";
75
76
  import "./chunk-A6XUJE5D.js";
76
77
  import "./chunk-AH2JUU6X.js";
77
78
  import "./chunk-AC5LO7IU.js";
@@ -528,16 +528,16 @@ declare const capsuleExportRequestSchema: z.ZodObject<{
528
528
  since?: string | undefined;
529
529
  includeKinds?: string[] | undefined;
530
530
  peerIds?: string[] | undefined;
531
- encrypt?: boolean | undefined;
532
531
  includeTranscripts?: boolean | undefined;
532
+ encrypt?: boolean | undefined;
533
533
  }, {
534
534
  name: string;
535
535
  namespace?: string | undefined;
536
536
  since?: string | undefined;
537
537
  includeKinds?: string[] | undefined;
538
538
  peerIds?: string[] | undefined;
539
- encrypt?: boolean | undefined;
540
539
  includeTranscripts?: boolean | undefined;
540
+ encrypt?: boolean | undefined;
541
541
  }>;
542
542
  declare const capsuleImportRequestSchema: z.ZodObject<{
543
543
  archivePath: z.ZodString;
@@ -559,6 +559,22 @@ declare const capsuleListRequestSchema: z.ZodObject<{
559
559
  }, {
560
560
  namespace?: string | undefined;
561
561
  }>;
562
+ declare const offlineSyncApplyRequestSchema: z.ZodEffects<z.ZodObject<{
563
+ namespace: z.ZodOptional<z.ZodString>;
564
+ changeset: z.ZodUnknown;
565
+ }, "strip", z.ZodTypeAny, {
566
+ namespace?: string | undefined;
567
+ changeset?: unknown;
568
+ }, {
569
+ namespace?: string | undefined;
570
+ changeset?: unknown;
571
+ }>, {
572
+ namespace?: string | undefined;
573
+ changeset?: unknown;
574
+ }, {
575
+ namespace?: string | undefined;
576
+ changeset?: unknown;
577
+ }>;
562
578
  declare const actionConfidenceRequestSchema: z.ZodObject<{
563
579
  intendedAction: z.ZodEffects<z.ZodNullable<z.ZodOptional<z.ZodString>>, string | undefined, string | null | undefined>;
564
580
  confidence: z.ZodEffects<z.ZodNullable<z.ZodOptional<z.ZodNumber>>, number | undefined, number | null | undefined>;
@@ -726,9 +742,10 @@ type DaySummaryRequest = z.infer<typeof daySummaryRequestSchema>;
726
742
  type CapsuleExportRequest = z.infer<typeof capsuleExportRequestSchema>;
727
743
  type CapsuleImportRequest = z.infer<typeof capsuleImportRequestSchema>;
728
744
  type CapsuleListRequest = z.infer<typeof capsuleListRequestSchema>;
745
+ type OfflineSyncApplyRequest = z.infer<typeof offlineSyncApplyRequestSchema>;
729
746
  type ActionConfidenceRequest = z.infer<typeof actionConfidenceRequestSchema>;
730
- type SchemaName = "recall" | "recallExplain" | "setCodingContext" | "observe" | "memoryStore" | "suggestionSubmit" | "reviewDisposition" | "trustZonePromote" | "trustZoneDemoSeed" | "lcmSearch" | "lcmCompactionFlush" | "lcmCompactionRecord" | "daySummary" | "capsuleExport" | "capsuleImport" | "capsuleList" | "actionConfidence";
731
- type SchemaTypeFor<N extends SchemaName> = N extends "recall" ? RecallRequest : N extends "recallExplain" ? RecallExplainRequest : N extends "setCodingContext" ? SetCodingContextRequest : N extends "observe" ? ObserveRequest : N extends "memoryStore" ? MemoryStoreRequest : N extends "suggestionSubmit" ? SuggestionSubmitRequest : N extends "reviewDisposition" ? ReviewDispositionRequest : N extends "trustZonePromote" ? TrustZonePromoteRequest : N extends "trustZoneDemoSeed" ? TrustZoneDemoSeedRequest : N extends "lcmSearch" ? LcmSearchRequest : N extends "lcmCompactionFlush" ? LcmCompactionFlushRequest : N extends "lcmCompactionRecord" ? LcmCompactionRecordRequest : N extends "daySummary" ? DaySummaryRequest : N extends "capsuleExport" ? CapsuleExportRequest : N extends "capsuleImport" ? CapsuleImportRequest : N extends "capsuleList" ? CapsuleListRequest : N extends "actionConfidence" ? ActionConfidenceRequest : never;
747
+ type SchemaName = "recall" | "recallExplain" | "setCodingContext" | "observe" | "memoryStore" | "suggestionSubmit" | "reviewDisposition" | "trustZonePromote" | "trustZoneDemoSeed" | "lcmSearch" | "lcmCompactionFlush" | "lcmCompactionRecord" | "daySummary" | "capsuleExport" | "capsuleImport" | "capsuleList" | "offlineSyncApply" | "actionConfidence";
748
+ type SchemaTypeFor<N extends SchemaName> = N extends "recall" ? RecallRequest : N extends "recallExplain" ? RecallExplainRequest : N extends "setCodingContext" ? SetCodingContextRequest : N extends "observe" ? ObserveRequest : N extends "memoryStore" ? MemoryStoreRequest : N extends "suggestionSubmit" ? SuggestionSubmitRequest : N extends "reviewDisposition" ? ReviewDispositionRequest : N extends "trustZonePromote" ? TrustZonePromoteRequest : N extends "trustZoneDemoSeed" ? TrustZoneDemoSeedRequest : N extends "lcmSearch" ? LcmSearchRequest : N extends "lcmCompactionFlush" ? LcmCompactionFlushRequest : N extends "lcmCompactionRecord" ? LcmCompactionRecordRequest : N extends "daySummary" ? DaySummaryRequest : N extends "capsuleExport" ? CapsuleExportRequest : N extends "capsuleImport" ? CapsuleImportRequest : N extends "capsuleList" ? CapsuleListRequest : N extends "offlineSyncApply" ? OfflineSyncApplyRequest : N extends "actionConfidence" ? ActionConfidenceRequest : never;
732
749
  /**
733
750
  * Validate a request body against the named schema.
734
751
  * Returns `{ success: true, data }` on pass or
@@ -742,4 +759,4 @@ declare function validateRequest<T = unknown>(schemaName: SchemaName, body: unkn
742
759
  error: SchemaValidationError;
743
760
  };
744
761
 
745
- export { type ActionConfidenceRequest, type CapsuleExportRequest, type CapsuleImportRequest, type CapsuleListRequest, type DaySummaryRequest, type LcmCompactionFlushRequest, type LcmCompactionRecordRequest, type LcmSearchRequest, type MemoryStoreRequest, type ObserveRequest, type RecallExplainRequest, type RecallRequest, type ReviewDispositionRequest, type SchemaName, type SchemaTypeFor, type SchemaValidationError, type SetCodingContextRequest, type SuggestionSubmitRequest, type TrustZoneDemoSeedRequest, type TrustZonePromoteRequest, actionConfidenceRequestSchema, capsuleExportRequestSchema, capsuleImportRequestSchema, capsuleListRequestSchema, codingContextSchema, daySummaryRequestSchema, formatZodError, lcmCompactionFlushRequestSchema, lcmCompactionRecordRequestSchema, lcmSearchRequestSchema, memoryStoreRequestSchema, observeRequestSchema, recallDisclosureSchema, recallExplainRequestSchema, recallRequestSchema, reviewDispositionRequestSchema, setCodingContextRequestSchema, suggestionSubmitRequestSchema, tagMatchSchema, trustZoneDemoSeedRequestSchema, trustZonePromoteRequestSchema, validateRequest };
762
+ export { type ActionConfidenceRequest, type CapsuleExportRequest, type CapsuleImportRequest, type CapsuleListRequest, type DaySummaryRequest, type LcmCompactionFlushRequest, type LcmCompactionRecordRequest, type LcmSearchRequest, type MemoryStoreRequest, type ObserveRequest, type OfflineSyncApplyRequest, type RecallExplainRequest, type RecallRequest, type ReviewDispositionRequest, type SchemaName, type SchemaTypeFor, type SchemaValidationError, type SetCodingContextRequest, type SuggestionSubmitRequest, type TrustZoneDemoSeedRequest, type TrustZonePromoteRequest, actionConfidenceRequestSchema, capsuleExportRequestSchema, capsuleImportRequestSchema, capsuleListRequestSchema, codingContextSchema, daySummaryRequestSchema, formatZodError, lcmCompactionFlushRequestSchema, lcmCompactionRecordRequestSchema, lcmSearchRequestSchema, memoryStoreRequestSchema, observeRequestSchema, offlineSyncApplyRequestSchema, recallDisclosureSchema, recallExplainRequestSchema, recallRequestSchema, reviewDispositionRequestSchema, setCodingContextRequestSchema, suggestionSubmitRequestSchema, tagMatchSchema, trustZoneDemoSeedRequestSchema, trustZonePromoteRequestSchema, validateRequest };
@@ -11,6 +11,7 @@ import {
11
11
  lcmSearchRequestSchema,
12
12
  memoryStoreRequestSchema,
13
13
  observeRequestSchema,
14
+ offlineSyncApplyRequestSchema,
14
15
  recallDisclosureSchema,
15
16
  recallExplainRequestSchema,
16
17
  recallRequestSchema,
@@ -21,16 +22,16 @@ import {
21
22
  trustZoneDemoSeedRequestSchema,
22
23
  trustZonePromoteRequestSchema,
23
24
  validateRequest
24
- } from "./chunk-A2XUIMJ3.js";
25
- import "./chunk-2F2W355T.js";
26
- import "./chunk-KNKUID7G.js";
25
+ } from "./chunk-VWFIQOTJ.js";
26
+ import "./chunk-QA2ZAPBU.js";
27
27
  import "./chunk-WEHSQBFR.js";
28
+ import "./chunk-KNKUID7G.js";
28
29
  import "./chunk-J4EB7DNW.js";
29
- import "./chunk-I6K5FBRQ.js";
30
- import "./chunk-AGZQD76C.js";
31
30
  import "./chunk-BJMBJZ2Y.js";
32
31
  import "./chunk-UKJAGEXH.js";
33
32
  import "./chunk-FP2373TW.js";
33
+ import "./chunk-I6K5FBRQ.js";
34
+ import "./chunk-AGZQD76C.js";
34
35
  import "./chunk-A6XUJE5D.js";
35
36
  import "./chunk-AH2JUU6X.js";
36
37
  import "./chunk-AC5LO7IU.js";
@@ -49,6 +50,7 @@ export {
49
50
  lcmSearchRequestSchema,
50
51
  memoryStoreRequestSchema,
51
52
  observeRequestSchema,
53
+ offlineSyncApplyRequestSchema,
52
54
  recallDisclosureSchema,
53
55
  recallExplainRequestSchema,
54
56
  recallRequestSchema,
@@ -19,6 +19,7 @@ import { MemoryOutcomeKind, RecordMemoryOutcomeResult } from './memory-worth-out
19
19
  import { ImportCapsuleOptions, ImportCapsuleResult } from './transfer/capsule-import.js';
20
20
  import { ExportCapsuleOptions, ExportCapsuleResult } from './transfer/capsule-export.js';
21
21
  import { CapsuleListEntry } from './capsule-cli.js';
22
+ import { OfflineSyncSnapshot, OfflineSyncApplyChangesetResult } from './offline-sync.js';
22
23
  import { ActionConfidenceInput, ActionConfidenceResult } from './action-confidence.js';
23
24
 
24
25
  /**
@@ -673,6 +674,23 @@ interface EngramAccessCapsuleListResponse {
673
674
  capsulesDir: string;
674
675
  capsules: CapsuleListEntry[];
675
676
  }
677
+ interface EngramAccessOfflineSyncSnapshotRequest {
678
+ namespace?: string;
679
+ principal?: string;
680
+ includeTranscripts?: boolean;
681
+ includeContent?: boolean;
682
+ }
683
+ interface EngramAccessOfflineSyncApplyRequest {
684
+ namespace?: string;
685
+ principal?: string;
686
+ changeset: unknown;
687
+ }
688
+ interface EngramAccessOfflineSyncSnapshotResponse extends OfflineSyncSnapshot {
689
+ namespace: string;
690
+ }
691
+ interface EngramAccessOfflineSyncApplyResponse extends OfflineSyncApplyChangesetResult {
692
+ namespace: string;
693
+ }
676
694
  type EngramAccessActionConfidenceRequest = ActionConfidenceInput;
677
695
  type EngramAccessActionConfidenceResponse = ActionConfidenceResult;
678
696
  interface EngramAccessReviewDispositionRequest {
@@ -1516,6 +1534,8 @@ declare class EngramAccessService {
1516
1534
  namespace?: string;
1517
1535
  principal?: string;
1518
1536
  }): Promise<EngramAccessCapsuleListResponse>;
1537
+ offlineSyncSnapshot(options?: EngramAccessOfflineSyncSnapshotRequest): Promise<EngramAccessOfflineSyncSnapshotResponse>;
1538
+ offlineSyncApply(options: EngramAccessOfflineSyncApplyRequest): Promise<EngramAccessOfflineSyncApplyResponse>;
1519
1539
  /**
1520
1540
  * Return per-phase Dreams telemetry for the last N hours (default 24).
1521
1541
  */
@@ -1539,4 +1559,4 @@ declare class EngramAccessService {
1539
1559
  }): Promise<DreamsRunResult>;
1540
1560
  }
1541
1561
 
1542
- export { type EngramAccessTimelineResponse as $, type EngramAccessLcmCompactionFlushResponse as A, type EngramAccessLcmCompactionRecordRequest as B, type EngramAccessLcmCompactionRecordResponse as C, type EngramAccessLcmSearchRequest as D, EngramAccessService as E, type EngramAccessLcmSearchResponse as F, type EngramAccessLcmStatusResponse as G, type EngramAccessMaintenanceResponse as H, type EngramAccessMemoryBrowseRequest as I, type EngramAccessMemoryBrowseResponse as J, type EngramAccessMemoryRecord as K, type EngramAccessMemoryResponse as L, type EngramAccessMemoryStoreRequest as M, type EngramAccessMemorySummary as N, type EngramAccessObserveMessage as O, type PeerInteractionLogEntry as P, type EngramAccessObserveRequest as Q, type EngramAccessObserveResponse as R, type EngramAccessQualityResponse as S, type EngramAccessRecallExplainRequest as T, type EngramAccessRecallExplainResponse as U, type EngramAccessRecallRequest as V, type EngramAccessReviewDispositionRequest as W, type EngramAccessReviewDispositionResponse as X, type EngramAccessReviewQueueResponse as Y, type EngramAccessSetCodingContextRequest as Z, type EngramAccessSuggestionSubmitRequest as _, type EngramAccessRecallResponse as a, type EngramAccessTrustZoneBrowseRequest as a0, type EngramAccessTrustZoneBrowseResponse as a1, type EngramAccessTrustZoneDemoSeedRequest as a2, type EngramAccessTrustZoneDemoSeedResponse as a3, type EngramAccessTrustZonePromoteRequest as a4, type EngramAccessTrustZonePromoteResponse as a5, type EngramAccessTrustZoneRecordSummary as a6, type EngramAccessTrustZoneStatusResponse as a7, type EngramAccessWriteEnvelope as a8, type EngramAccessWriteResponse as a9, shapeMemorySummary as aa, type Peer as b, type PeerProfile as c, EngramAccessInputError as d, PEER_ID_MAX_LENGTH as e, PEER_ID_PATTERN as f, type PeerKind as g, type PeerProfileFieldProvenance as h, type ProcedureStatsConfigSnapshot as i, type ProcedureStatsRecent as j, type ProcedureStatsReport as k, type ProcedureStatusCounts as l, computeProcedureStats as m, formatProcedureStatsText as n, ENGRAM_ACCESS_WRITE_SCHEMA_VERSION as o, type EngramAccessActionConfidenceRequest as p, type EngramAccessActionConfidenceResponse as q, type EngramAccessBriefingRequest as r, type EngramAccessBriefingResponse as s, type EngramAccessCapsuleListResponse as t, type EngramAccessDaySummaryRequest as u, type EngramAccessEntityListResponse as v, type EngramAccessEntityResponse as w, type EngramAccessEntitySummary as x, type EngramAccessHealthResponse as y, type EngramAccessLcmCompactionFlushRequest as z };
1562
+ export { type EngramAccessReviewDispositionResponse as $, type EngramAccessLcmCompactionFlushResponse as A, type EngramAccessLcmCompactionRecordRequest as B, type EngramAccessLcmCompactionRecordResponse as C, type EngramAccessLcmSearchRequest as D, EngramAccessService as E, type EngramAccessLcmSearchResponse as F, type EngramAccessLcmStatusResponse as G, type EngramAccessMaintenanceResponse as H, type EngramAccessMemoryBrowseRequest as I, type EngramAccessMemoryBrowseResponse as J, type EngramAccessMemoryRecord as K, type EngramAccessMemoryResponse as L, type EngramAccessMemoryStoreRequest as M, type EngramAccessMemorySummary as N, type EngramAccessObserveMessage as O, type PeerInteractionLogEntry as P, type EngramAccessObserveRequest as Q, type EngramAccessObserveResponse as R, type EngramAccessOfflineSyncApplyRequest as S, type EngramAccessOfflineSyncApplyResponse as T, type EngramAccessOfflineSyncSnapshotRequest as U, type EngramAccessOfflineSyncSnapshotResponse as V, type EngramAccessQualityResponse as W, type EngramAccessRecallExplainRequest as X, type EngramAccessRecallExplainResponse as Y, type EngramAccessRecallRequest as Z, type EngramAccessReviewDispositionRequest as _, type EngramAccessRecallResponse as a, type EngramAccessReviewQueueResponse as a0, type EngramAccessSetCodingContextRequest as a1, type EngramAccessSuggestionSubmitRequest as a2, type EngramAccessTimelineResponse as a3, type EngramAccessTrustZoneBrowseRequest as a4, type EngramAccessTrustZoneBrowseResponse as a5, type EngramAccessTrustZoneDemoSeedRequest as a6, type EngramAccessTrustZoneDemoSeedResponse as a7, type EngramAccessTrustZonePromoteRequest as a8, type EngramAccessTrustZonePromoteResponse as a9, type EngramAccessTrustZoneRecordSummary as aa, type EngramAccessTrustZoneStatusResponse as ab, type EngramAccessWriteEnvelope as ac, type EngramAccessWriteResponse as ad, shapeMemorySummary as ae, type Peer as b, type PeerProfile as c, EngramAccessInputError as d, PEER_ID_MAX_LENGTH as e, PEER_ID_PATTERN as f, type PeerKind as g, type PeerProfileFieldProvenance as h, type ProcedureStatsConfigSnapshot as i, type ProcedureStatsRecent as j, type ProcedureStatsReport as k, type ProcedureStatusCounts as l, computeProcedureStats as m, formatProcedureStatsText as n, ENGRAM_ACCESS_WRITE_SCHEMA_VERSION as o, type EngramAccessActionConfidenceRequest as p, type EngramAccessActionConfidenceResponse as q, type EngramAccessBriefingRequest as r, type EngramAccessBriefingResponse as s, type EngramAccessCapsuleListResponse as t, type EngramAccessDaySummaryRequest as u, type EngramAccessEntityListResponse as v, type EngramAccessEntityResponse as w, type EngramAccessEntitySummary as x, type EngramAccessHealthResponse as y, type EngramAccessLcmCompactionFlushRequest as z };