@remnic/core 1.1.14 → 1.1.16

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 (132) 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 +36 -5
  8. package/dist/access-schema.js +9 -5
  9. package/dist/{access-service-DcCDmNYC.d.ts → access-service-DZXc7qwR.d.ts} +31 -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-2OZ6GP27.js +832 -0
  15. package/dist/chunk-2OZ6GP27.js.map +1 -0
  16. package/dist/{chunk-VNO6ZJ35.js → chunk-2PRLKQAH.js} +5 -5
  17. package/dist/{chunk-EFJ3MQ4V.js → chunk-65HQPW6O.js} +2 -2
  18. package/dist/{chunk-A2XUIMJ3.js → chunk-66H2DZYB.js} +18 -2
  19. package/dist/chunk-66H2DZYB.js.map +1 -0
  20. package/dist/{chunk-GA454ALV.js → chunk-AAX3SUM3.js} +39 -39
  21. package/dist/{chunk-QQUAB63I.js → chunk-BEB4GUU5.js} +2 -2
  22. package/dist/{chunk-KUJVMMZQ.js → chunk-C7DGCHJE.js} +2 -2
  23. package/dist/{chunk-PR5FBTFU.js → chunk-CYFQJMUV.js} +5 -5
  24. package/dist/{chunk-KLAO5DGL.js → chunk-G7JBLD65.js} +3 -3
  25. package/dist/{chunk-CHEL3SKB.js → chunk-HJILHQOR.js} +27 -27
  26. package/dist/{chunk-ME6ESPZU.js → chunk-IG5VGHYB.js} +2 -2
  27. package/dist/{chunk-7AAT6G4Q.js → chunk-IOAY54RF.js} +57 -5
  28. package/dist/chunk-IOAY54RF.js.map +1 -0
  29. package/dist/{chunk-XVZ7B3HG.js → chunk-JFEH2LZM.js} +2 -2
  30. package/dist/{chunk-JLFA7DQG.js → chunk-M3AA636B.js} +2 -2
  31. package/dist/{chunk-P4NEIHUT.js → chunk-MS3ULOZF.js} +2 -2
  32. package/dist/{chunk-CQZRLNMV.js → chunk-MTYLGYOQ.js} +53 -4
  33. package/dist/chunk-MTYLGYOQ.js.map +1 -0
  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-WZYKANL3.js → chunk-SK42SSAN.js} +4 -4
  43. package/dist/{chunk-VW676BEI.js → chunk-V7WH7DEM.js} +2 -2
  44. package/dist/{chunk-PU63GXWS.js → chunk-W7DK3CYM.js} +2 -2
  45. package/dist/{chunk-TFO23QT4.js → chunk-XKLD5OK4.js} +4 -4
  46. package/dist/{chunk-M23FSH32.js → chunk-Y2YBRCEF.js} +79 -6
  47. package/dist/chunk-Y2YBRCEF.js.map +1 -0
  48. package/dist/{chunk-I5V2VDIW.js → chunk-YCVWX2NF.js} +2 -2
  49. package/dist/{chunk-UXHQAFNA.js → chunk-ZPXYWTN5.js} +4 -4
  50. package/dist/{chunk-GGKRUQOO.js → chunk-ZYVPLJ4T.js} +4 -4
  51. package/dist/{cli-D3VpkVwB.d.ts → cli-kVwab1_L.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 +92 -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 +145 -0
  72. package/dist/offline-sync.js +43 -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/schemas.d.ts +22 -22
  77. package/dist/search/factory.js +4 -4
  78. package/dist/search/index.js +6 -6
  79. package/dist/secure-store/index.d.ts +1 -15
  80. package/dist/secure-store/index.js +2 -2
  81. package/dist/semantic-consolidation.js +5 -5
  82. package/dist/semantic-rule-promotion.js +4 -4
  83. package/dist/semantic-rule-verifier.js +4 -4
  84. package/dist/storage.d.ts +7 -0
  85. package/dist/storage.js +3 -3
  86. package/dist/transfer/backup.js +2 -2
  87. package/dist/transfer/capsule-export.js +4 -4
  88. package/dist/transfer/capsule-import.js +3 -3
  89. package/dist/transfer/import-sqlite.js +2 -2
  90. package/dist/transfer/types.d.ts +12 -12
  91. package/dist/verified-recall.js +4 -4
  92. package/package.json +1 -1
  93. package/src/access-http.test.ts +289 -0
  94. package/src/access-http.ts +69 -0
  95. package/src/access-schema.ts +30 -0
  96. package/src/access-service-namespace.test.ts +64 -1
  97. package/src/access-service.ts +120 -0
  98. package/src/index.ts +34 -0
  99. package/src/offline-sync.test.ts +646 -0
  100. package/src/offline-sync.ts +1087 -0
  101. package/src/secure-store/secure-fs.ts +14 -7
  102. package/src/storage.ts +59 -0
  103. package/dist/chunk-7AAT6G4Q.js.map +0 -1
  104. package/dist/chunk-A2XUIMJ3.js.map +0 -1
  105. package/dist/chunk-CQZRLNMV.js.map +0 -1
  106. package/dist/chunk-M23FSH32.js.map +0 -1
  107. package/dist/chunk-YNJHCGDT.js.map +0 -1
  108. /package/dist/{chunk-VNO6ZJ35.js.map → chunk-2PRLKQAH.js.map} +0 -0
  109. /package/dist/{chunk-EFJ3MQ4V.js.map → chunk-65HQPW6O.js.map} +0 -0
  110. /package/dist/{chunk-GA454ALV.js.map → chunk-AAX3SUM3.js.map} +0 -0
  111. /package/dist/{chunk-QQUAB63I.js.map → chunk-BEB4GUU5.js.map} +0 -0
  112. /package/dist/{chunk-KUJVMMZQ.js.map → chunk-C7DGCHJE.js.map} +0 -0
  113. /package/dist/{chunk-PR5FBTFU.js.map → chunk-CYFQJMUV.js.map} +0 -0
  114. /package/dist/{chunk-KLAO5DGL.js.map → chunk-G7JBLD65.js.map} +0 -0
  115. /package/dist/{chunk-CHEL3SKB.js.map → chunk-HJILHQOR.js.map} +0 -0
  116. /package/dist/{chunk-ME6ESPZU.js.map → chunk-IG5VGHYB.js.map} +0 -0
  117. /package/dist/{chunk-XVZ7B3HG.js.map → chunk-JFEH2LZM.js.map} +0 -0
  118. /package/dist/{chunk-JLFA7DQG.js.map → chunk-M3AA636B.js.map} +0 -0
  119. /package/dist/{chunk-P4NEIHUT.js.map → chunk-MS3ULOZF.js.map} +0 -0
  120. /package/dist/{chunk-7IASACLB.js.map → chunk-NOHC2L57.js.map} +0 -0
  121. /package/dist/{chunk-6RVI47ZR.js.map → chunk-NTUNYIF7.js.map} +0 -0
  122. /package/dist/{chunk-CK5NTM2S.js.map → chunk-OGROP7ZN.js.map} +0 -0
  123. /package/dist/{chunk-MT25YHYH.js.map → chunk-OJRKZLZ4.js.map} +0 -0
  124. /package/dist/{chunk-2F2W355T.js.map → chunk-QA2ZAPBU.js.map} +0 -0
  125. /package/dist/{chunk-MC26UJIM.js.map → chunk-QLKBF3TI.js.map} +0 -0
  126. /package/dist/{chunk-WZYKANL3.js.map → chunk-SK42SSAN.js.map} +0 -0
  127. /package/dist/{chunk-VW676BEI.js.map → chunk-V7WH7DEM.js.map} +0 -0
  128. /package/dist/{chunk-PU63GXWS.js.map → chunk-W7DK3CYM.js.map} +0 -0
  129. /package/dist/{chunk-TFO23QT4.js.map → chunk-XKLD5OK4.js.map} +0 -0
  130. /package/dist/{chunk-I5V2VDIW.js.map → chunk-YCVWX2NF.js.map} +0 -0
  131. /package/dist/{chunk-UXHQAFNA.js.map → chunk-ZPXYWTN5.js.map} +0 -0
  132. /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-Y2YBRCEF.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-2OZ6GP27.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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,QAAQ;AACf,OAAO,UAAU;AAiDjB,IAAM,aAAN,cAAyB,MAAM;AAAA,EAC7B,YACW,MACA,YACA,gBACT;AACA,UAAM,8BAA8B;AAJ3B;AACA;AACA;AAAA,EAGX;AAAA,EALW;AAAA,EACA;AAAA,EACA;AAIb;AAEA,SAAS,iBAAiB,OAA2B;AACnD,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,qBAAqB,MAAM,cAAc,SAAS;AAAA,IAC3D,KAAK,kBAAkB;AACrB,YAAM,WAAW,MAAM,gBAAgB,SAAS,eAAe,MAAM,eAAe,KAAK,IAAI,CAAC,MAAM;AACpG,aAAO,uBAAuB,MAAM,cAAc,SAAS,GAAG,QAAQ;AAAA,IACxE;AAAA,IACA,KAAK;AACH,aAAO,qCAAqC,MAAM,cAAc,SAAS;AAAA,IAC3E,KAAK;AACH,aAAO,8BAA8B,MAAM,cAAc,SAAS;AAAA,IACpE,KAAK;AACH,aAAO;AAAA,IACT,KAAK;AACH,aAAO,yBAAyB,MAAM,cAAc,SAAS;AAAA,IAC/D,KAAK;AACH,aAAO,wBAAwB,MAAM,cAAc,SAAS;AAAA,EAChE;AACF;AAEA,SAAS,eAAe,OAAe,IAAU;AAC/C,UAAQ,OAAO,MAAM,GAAG,IAAI;AAAA,CAAI;AAClC;AAEA,SAAS,QAAgB;AACvB,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,EAAE,KAAK,IAAI;AACb;AAEA,IAAM,gBAAkD;AAAA,EACtD,QAAQ;AAAA,IACN,cAAc,oBAAI,IAAI;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,aAAa,oBAAI,IAAI;AAAA,EACvB;AAAA,EACA,OAAO;AAAA,IACL,cAAc,oBAAI,IAAI;AAAA,MACpB;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,CAAC;AAAA,IACD,aAAa,oBAAI,IAAI,CAAC,SAAS,CAAC;AAAA,EAClC;AACF;AAEA,IAAM,qBAAqB,OAAO,OAAO;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAU;AAIV,SAAS,UAAU,MAA4B;AAC7C,QAAM,CAAC,YAAY,GAAG,IAAI,IAAI;AAC9B,MAAI,eAAe,YAAY,eAAe,SAAS;AACrD,UAAM,IAAI,WAAW,qBAAqB;AAAA,EAC5C;AACA,QAAM,OAAO,cAAc,UAAU;AAErC,QAAM,UAAoC,CAAC;AAC3C,QAAM,QAAQ,oBAAI,IAAY;AAE9B,WAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,KAAK,GAAG;AACvC,UAAM,QAAQ,KAAK,CAAC;AACpB,QAAI,CAAC,MAAM,WAAW,IAAI,GAAG;AAC3B,YAAM,IAAI,WAAW,uBAAuB;AAAA,IAC9C;AACA,UAAM,SAAS,MAAM,MAAM,CAAC;AAC5B,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,WAAW,kBAAkB,MAAM;AAAA,IAC/C;AACA,UAAM,cAAc,OAAO,QAAQ,GAAG;AACtC,UAAM,MAAM,gBAAgB,KAAK,SAAS,OAAO,MAAM,GAAG,WAAW;AACrE,UAAM,cAAc,gBAAgB,KAAK,SAAY,OAAO,MAAM,cAAc,CAAC;AAEjF,QAAI,CAAC,KAAK,aAAa,IAAI,GAAG,KAAK,CAAC,KAAK,YAAY,IAAI,GAAG,GAAG;AAC7D,YAAM,IAAI,WAAW,kBAAkB,GAAG;AAAA,IAC5C;AAEA,QAAI,KAAK,YAAY,IAAI,GAAG,GAAG;AAC7B,UAAI,gBAAgB,QAAW;AAC7B,cAAM,IAAI,WAAW,8BAA8B,GAAG;AAAA,MACxD;AACA,YAAMA,QAAO,KAAK,IAAI,CAAC;AACvB,UAAIA,SAAQ,CAACA,MAAK,WAAW,IAAI,GAAG;AAClC,cAAM,IAAI,WAAW,8BAA8B,GAAG;AAAA,MACxD;AACA,YAAM,IAAI,GAAG;AACb;AAAA,IACF;AAEA,QAAI,gBAAgB,QAAW;AAC7B,UAAI,YAAY,WAAW,GAAG;AAC5B,cAAM,IAAI,WAAW,kBAAkB,GAAG;AAAA,MAC5C;AACA,UAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,gBAAQ,GAAG,IAAI,CAAC;AAAA,MAClB;AACA,cAAQ,GAAG,EAAE,KAAK,WAAW;AAC7B;AAAA,IACF;AAEA,UAAM,OAAO,KAAK,IAAI,CAAC;AACvB,QAAI,SAAS,UAAa,KAAK,WAAW,KAAK,KAAK,WAAW,IAAI,GAAG;AACpE,YAAM,IAAI,WAAW,kBAAkB,GAAG;AAAA,IAC5C;AACA,QAAI,CAAC,QAAQ,GAAG,GAAG;AACjB,cAAQ,GAAG,IAAI,CAAC;AAAA,IAClB;AACA,YAAQ,GAAG,EAAE,KAAK,IAAI;AACtB,SAAK;AAAA,EACP;AAEA,SAAO;AAAA,IACL,SAAS;AAAA,IACT;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,cAAc,MAAkB,MAAkC;AACzE,QAAM,SAAS,KAAK,QAAQ,IAAI;AAChC,MAAI,CAAC,UAAU,OAAO,WAAW,EAAG,QAAO;AAC3C,SAAO,OAAO,OAAO,SAAS,CAAC;AACjC;AAEA,SAAS,cAAc,MAAkB,MAAwB;AAC/D,SAAO,KAAK,QAAQ,IAAI,KAAK,CAAC;AAChC;AAEA,SAAS,cAAc,MAAkB,MAAsB;AAC7D,QAAM,QAAQ,cAAc,MAAM,IAAI;AACtC,MAAI,CAAC,SAAS,MAAM,KAAK,EAAE,WAAW,GAAG;AACvC,UAAM,IAAI,WAAW,kBAAkB,IAAI;AAAA,EAC7C;AACA,SAAO;AACT;AAEA,SAAS,mBACP,MACA,MACA,UAA4B,CAAC,GACT;AACpB,QAAM,MAAM,cAAc,MAAM,IAAI;AACpC,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,aAAa,KAAK,OAAO,GAAG;AAC/B,UAAM,IAAI,WAAW,mBAAmB,IAAI;AAAA,EAC9C;AACA,QAAM,QAAQ,OAAO,OAAO;AAC5B,MAAI,CAAC,OAAO,cAAc,KAAK,GAAG;AAChC,UAAM,IAAI,WAAW,mBAAmB,IAAI;AAAA,EAC9C;AACA,MAAI,QAAQ,QAAQ,UAAa,QAAQ,QAAQ,KAAK;AACpD,UAAM,IAAI,WAAW,kBAAkB,MAAM,CAAC,cAAc,QAAQ,GAAG,EAAE,CAAC;AAAA,EAC5E;AACA,SAAO;AACT;AAEA,SAAS,sBAAsB,MAAkB,MAAsC;AACrF,QAAM,MAAM,cAAc,MAAM,IAAI;AACpC,MAAI,CAAC,IAAK,QAAO;AACjB,MAAK,mBAAyC,SAAS,GAAG,GAAG;AAC3D,WAAO;AAAA,EACT;AACA,QAAM,IAAI,WAAW,kBAAkB,MAAM,kBAAkB;AACjE;AAEA,SAAS,iBACP,MACA,MACA,UAA0C,CAAC,GACvB;AACpB,QAAM,MAAM,cAAc,MAAM,IAAI;AACpC,MAAI,CAAC,IAAK,QAAO;AACjB,QAAM,UAAU,IAAI,KAAK;AACzB,MAAI,CAAC,oDAAoD,KAAK,OAAO,GAAG;AACtE,UAAM,IAAI,WAAW,kBAAkB,IAAI;AAAA,EAC7C;AACA,QAAM,QAAQ,OAAO,OAAO;AAC5B,MAAI,CAAC,OAAO,SAAS,KAAK,GAAG;AAC3B,UAAM,IAAI,WAAW,kBAAkB,IAAI;AAAA,EAC7C;AACA,MAAI,QAAQ,QAAQ,UAAa,QAAQ,QAAQ,KAAK;AACpD,UAAM,IAAI,WAAW,kBAAkB,IAAI;AAAA,EAC7C;AACA,MAAI,QAAQ,QAAQ,UAAa,QAAQ,QAAQ,KAAK;AACpD,UAAM,IAAI,WAAW,kBAAkB,IAAI;AAAA,EAC7C;AACA,SAAO;AACT;AAEA,SAAS,iBAAiB,aAA+C;AACvE,QAAM,aACJ,mBAAmB,WAAW,sBAAsB,CAAC,KACrD,mBAAmB,WAAW,6BAA6B,CAAC,KAC5D,KAAK,KAAK,eAAe,GAAG,aAAa,eAAe;AAC1D,QAAM,MAAM,KAAK,MAAM,GAAG,aAAa,YAAY,MAAM,CAAC;AAM1D,QAAM,QAAQ,yBAAyB,KAAK,WAAW;AACvD,SAAQ,QAAQ,QAAQ,KAA6C,CAAC;AACxE;AAEA,SAAS,aAAa,aAA+B;AACnD,QAAM,SAAS,YAAY,iBAAiB,WAAW,CAAC;AACxD,SAAO;AAAA,IACL;AAAA,IACA,SAAS,IAAI,oBAAoB,IAAI,aAAa,MAAM,CAAC;AAAA,EAC3D;AACF;AAEA,eAAe,UAAU,MAAkB,aAAqC;AAC9E,QAAM,aAAa;AAAA,IACjB,WAAW,cAAc,MAAM,WAAW;AAAA,IAC1C,WAAW,cAAc,MAAM,WAAW;AAAA,IAC1C,OAAO,cAAc,MAAM,OAAO;AAAA,IAClC,UAAU,cAAc,MAAM,UAAU;AAAA,IACxC,QAAQ,cAAc,MAAM,QAAQ;AAAA,IACpC,MAAM,sBAAsB,MAAM,MAAM;AAAA,IACxC,OAAO,mBAAmB,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC;AAAA,IACnD,QAAQ,mBAAmB,MAAM,UAAU,EAAE,KAAK,EAAE,CAAC;AAAA,EACvD;AACA,QAAM,EAAE,QAAQ,QAAQ,IAAI,aAAa,WAAW;AACpD,QAAM,UAAU;AAAA,IACd,WAAW,WAAW;AAAA,IACtB,wBAAwB,WAAW,aAAa,OAAO,gBAAgB;AAAA,IACvE,OAAO,WAAW;AAAA,IAClB,UAAU,WAAW;AAAA,IACrB,QAAQ,WAAW;AAAA,IACnB,MAAM,WAAW;AAAA,IACjB,OAAO,WAAW;AAAA,IAClB,QAAQ,WAAW;AAAA,EACrB;AACA,QAAM,SAAS,MAAM,QAAQ,aAAa,OAAO;AACjD,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEA,eAAe,SAAS,MAAkB,aAAqC;AAC7E,QAAM,cAAc,cAAc,MAAM,cAAc;AACtD,QAAM,gBAAgB,cAAc,MAAM,SAAS;AACnD,QAAM,UAAU,cACZ,GAAG,aAAa,gBAAgB,WAAW,GAAG,MAAM,IACpD;AACJ,MAAI,CAAC,WAAW,QAAQ,KAAK,EAAE,WAAW,GAAG;AAC3C,UAAM,IAAI,WAAW,iBAAiB;AAAA,EACxC;AACA,QAAM,YAAY;AAAA,IAChB,WAAW,cAAc,MAAM,WAAW;AAAA,IAC1C,YAAY,cAAc,MAAM,aAAa;AAAA,IAC7C;AAAA,IACA,UAAU,cAAc,MAAM,UAAU;AAAA,IACxC,YAAY,iBAAiB,MAAM,cAAc,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;AAAA,IACnE,MAAM,cAAc,MAAM,KAAK;AAAA,IAC/B,WAAW,cAAc,MAAM,YAAY;AAAA,IAC3C,KAAK,cAAc,MAAM,KAAK;AAAA,IAC9B,cAAc,cAAc,MAAM,eAAe;AAAA,IACjD,gBAAgB,cAAc,MAAM,iBAAiB;AAAA,IACrD,QAAQ,KAAK,MAAM,IAAI,SAAS;AAAA,EAClC;AAEA,QAAM,EAAE,QAAQ,QAAQ,IAAI,aAAa,WAAW;AACpD,QAAM,SAAS,MAAM,QAAQ,YAAY;AAAA,IACvC,WAAW,UAAU;AAAA,IACrB,YAAY,UAAU;AAAA,IACtB,wBAAwB,cAAc,MAAM,WAAW,KAAK,OAAO,gBAAgB;AAAA,IACnF,SAAS,UAAU;AAAA,IACnB,UAAU,UAAU;AAAA,IACpB,YAAY,UAAU;AAAA,IACtB,MAAM,UAAU;AAAA,IAChB,WAAW,UAAU;AAAA,IACrB,KAAK,UAAU;AAAA,IACf,cAAc,UAAU;AAAA,IACxB,gBAAgB,UAAU;AAAA,IAC1B,QAAQ,UAAU;AAAA,EACpB,CAAC;AACD,UAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAC7C;AAEA,SAAS,mBAAmB,OAA+C;AACzE,SAAO,UAAU,SAAY,SAAY,gBAAgB,KAAK;AAChE;AAEA,eAAsB,KACpB,OAAiB,QAAQ,KAAK,MAAM,CAAC,GACrC,UAA4B,CAAC,GACd;AACf,QAAM,OAAO,UAAU,IAAI;AAC3B,MAAI,KAAK,YAAY,UAAU;AAC7B,UAAM,UAAU,MAAM,QAAQ,WAAW;AACzC;AAAA,EACF;AACA,QAAM,SAAS,MAAM,QAAQ,WAAW;AAC1C;AAEO,SAAS,8BAA8B,SAAyB;AACrE,SAAO,QAAQ;AAAA,IACb;AAAA,IACA,CAAC,QAAQ,MAAc,cAAsB,GAAG,IAAI,GAAG,SAAS;AAAA,EAClE;AACF;AAEO,SAAS,aAAmB;AACjC,iBAAe,MAAM,CAAC;AACxB;AAEA,eAAsB,OACpB,OAAiB,QAAQ,KAAK,MAAM,CAAC,GACrC,UAA4B,CAAC,GACd;AACf,MAAI;AACF,UAAM,KAAK,MAAM,OAAO;AAAA,EAC1B,SAAS,OAAO;AACd,QAAI,iBAAiB,YAAY;AAC/B,qBAAe,iBAAiB,KAAK,CAAC;AACtC,qBAAe;AACf,iBAAW;AACX,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,YAAQ,MAAM,kCAAkC;AAChD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","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-DZXc7qwR.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-MTYLGYOQ.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-SK42SSAN.js";
12
12
  import "./chunk-C5BCH4ZS.js";
13
13
  import "./chunk-IQT3XTKW.js";
14
- import "./chunk-M23FSH32.js";
14
+ import "./chunk-Y2YBRCEF.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-2OZ6GP27.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-66H2DZYB.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-DZXc7qwR.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-SK42SSAN.js";
4
4
  import "./chunk-C5BCH4ZS.js";
5
5
  import "./chunk-IQT3XTKW.js";
6
- import "./chunk-M23FSH32.js";
6
+ import "./chunk-Y2YBRCEF.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-2OZ6GP27.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-66H2DZYB.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,35 @@ 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
+ }>;
578
+ declare const offlineSyncFilesRequestSchema: z.ZodObject<{
579
+ namespace: z.ZodOptional<z.ZodString>;
580
+ includeTranscripts: z.ZodOptional<z.ZodBoolean>;
581
+ paths: z.ZodArray<z.ZodString, "many">;
582
+ }, "strip", z.ZodTypeAny, {
583
+ paths: string[];
584
+ namespace?: string | undefined;
585
+ includeTranscripts?: boolean | undefined;
586
+ }, {
587
+ paths: string[];
588
+ namespace?: string | undefined;
589
+ includeTranscripts?: boolean | undefined;
590
+ }>;
562
591
  declare const actionConfidenceRequestSchema: z.ZodObject<{
563
592
  intendedAction: z.ZodEffects<z.ZodNullable<z.ZodOptional<z.ZodString>>, string | undefined, string | null | undefined>;
564
593
  confidence: z.ZodEffects<z.ZodNullable<z.ZodOptional<z.ZodNumber>>, number | undefined, number | null | undefined>;
@@ -726,9 +755,11 @@ type DaySummaryRequest = z.infer<typeof daySummaryRequestSchema>;
726
755
  type CapsuleExportRequest = z.infer<typeof capsuleExportRequestSchema>;
727
756
  type CapsuleImportRequest = z.infer<typeof capsuleImportRequestSchema>;
728
757
  type CapsuleListRequest = z.infer<typeof capsuleListRequestSchema>;
758
+ type OfflineSyncApplyRequest = z.infer<typeof offlineSyncApplyRequestSchema>;
759
+ type OfflineSyncFilesRequest = z.infer<typeof offlineSyncFilesRequestSchema>;
729
760
  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;
761
+ type SchemaName = "recall" | "recallExplain" | "setCodingContext" | "observe" | "memoryStore" | "suggestionSubmit" | "reviewDisposition" | "trustZonePromote" | "trustZoneDemoSeed" | "lcmSearch" | "lcmCompactionFlush" | "lcmCompactionRecord" | "daySummary" | "capsuleExport" | "capsuleImport" | "capsuleList" | "offlineSyncFiles" | "offlineSyncApply" | "actionConfidence";
762
+ 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 "offlineSyncFiles" ? OfflineSyncFilesRequest : N extends "offlineSyncApply" ? OfflineSyncApplyRequest : N extends "actionConfidence" ? ActionConfidenceRequest : never;
732
763
  /**
733
764
  * Validate a request body against the named schema.
734
765
  * Returns `{ success: true, data }` on pass or
@@ -742,4 +773,4 @@ declare function validateRequest<T = unknown>(schemaName: SchemaName, body: unkn
742
773
  error: SchemaValidationError;
743
774
  };
744
775
 
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 };
776
+ export { type ActionConfidenceRequest, type CapsuleExportRequest, type CapsuleImportRequest, type CapsuleListRequest, type DaySummaryRequest, type LcmCompactionFlushRequest, type LcmCompactionRecordRequest, type LcmSearchRequest, type MemoryStoreRequest, type ObserveRequest, type OfflineSyncApplyRequest, type OfflineSyncFilesRequest, 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, offlineSyncFilesRequestSchema, recallDisclosureSchema, recallExplainRequestSchema, recallRequestSchema, reviewDispositionRequestSchema, setCodingContextRequestSchema, suggestionSubmitRequestSchema, tagMatchSchema, trustZoneDemoSeedRequestSchema, trustZonePromoteRequestSchema, validateRequest };
@@ -11,6 +11,8 @@ import {
11
11
  lcmSearchRequestSchema,
12
12
  memoryStoreRequestSchema,
13
13
  observeRequestSchema,
14
+ offlineSyncApplyRequestSchema,
15
+ offlineSyncFilesRequestSchema,
14
16
  recallDisclosureSchema,
15
17
  recallExplainRequestSchema,
16
18
  recallRequestSchema,
@@ -21,16 +23,16 @@ import {
21
23
  trustZoneDemoSeedRequestSchema,
22
24
  trustZonePromoteRequestSchema,
23
25
  validateRequest
24
- } from "./chunk-A2XUIMJ3.js";
25
- import "./chunk-2F2W355T.js";
26
- import "./chunk-KNKUID7G.js";
26
+ } from "./chunk-66H2DZYB.js";
27
+ import "./chunk-QA2ZAPBU.js";
27
28
  import "./chunk-WEHSQBFR.js";
29
+ import "./chunk-KNKUID7G.js";
28
30
  import "./chunk-J4EB7DNW.js";
29
- import "./chunk-I6K5FBRQ.js";
30
- import "./chunk-AGZQD76C.js";
31
31
  import "./chunk-BJMBJZ2Y.js";
32
32
  import "./chunk-UKJAGEXH.js";
33
33
  import "./chunk-FP2373TW.js";
34
+ import "./chunk-I6K5FBRQ.js";
35
+ import "./chunk-AGZQD76C.js";
34
36
  import "./chunk-A6XUJE5D.js";
35
37
  import "./chunk-AH2JUU6X.js";
36
38
  import "./chunk-AC5LO7IU.js";
@@ -49,6 +51,8 @@ export {
49
51
  lcmSearchRequestSchema,
50
52
  memoryStoreRequestSchema,
51
53
  observeRequestSchema,
54
+ offlineSyncApplyRequestSchema,
55
+ offlineSyncFilesRequestSchema,
52
56
  recallDisclosureSchema,
53
57
  recallExplainRequestSchema,
54
58
  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,32 @@ 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 EngramAccessOfflineSyncFilesRequest {
684
+ namespace?: string;
685
+ principal?: string;
686
+ includeTranscripts?: boolean;
687
+ paths: string[];
688
+ }
689
+ interface EngramAccessOfflineSyncApplyRequest {
690
+ namespace?: string;
691
+ principal?: string;
692
+ changeset: unknown;
693
+ }
694
+ interface EngramAccessOfflineSyncSnapshotResponse extends OfflineSyncSnapshot {
695
+ namespace: string;
696
+ }
697
+ interface EngramAccessOfflineSyncFilesResponse extends OfflineSyncSnapshot {
698
+ namespace: string;
699
+ }
700
+ interface EngramAccessOfflineSyncApplyResponse extends OfflineSyncApplyChangesetResult {
701
+ namespace: string;
702
+ }
676
703
  type EngramAccessActionConfidenceRequest = ActionConfidenceInput;
677
704
  type EngramAccessActionConfidenceResponse = ActionConfidenceResult;
678
705
  interface EngramAccessReviewDispositionRequest {
@@ -1516,6 +1543,9 @@ declare class EngramAccessService {
1516
1543
  namespace?: string;
1517
1544
  principal?: string;
1518
1545
  }): Promise<EngramAccessCapsuleListResponse>;
1546
+ offlineSyncSnapshot(options?: EngramAccessOfflineSyncSnapshotRequest): Promise<EngramAccessOfflineSyncSnapshotResponse>;
1547
+ offlineSyncFiles(options: EngramAccessOfflineSyncFilesRequest): Promise<EngramAccessOfflineSyncFilesResponse>;
1548
+ offlineSyncApply(options: EngramAccessOfflineSyncApplyRequest): Promise<EngramAccessOfflineSyncApplyResponse>;
1519
1549
  /**
1520
1550
  * Return per-phase Dreams telemetry for the last N hours (default 24).
1521
1551
  */
@@ -1539,4 +1569,4 @@ declare class EngramAccessService {
1539
1569
  }): Promise<DreamsRunResult>;
1540
1570
  }
1541
1571
 
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 };
1572
+ export { type EngramAccessRecallRequest 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 EngramAccessOfflineSyncFilesRequest as U, type EngramAccessOfflineSyncFilesResponse as V, type EngramAccessOfflineSyncSnapshotRequest as W, type EngramAccessOfflineSyncSnapshotResponse as X, type EngramAccessQualityResponse as Y, type EngramAccessRecallExplainRequest as Z, type EngramAccessRecallExplainResponse as _, type EngramAccessRecallResponse as a, type EngramAccessReviewDispositionRequest as a0, type EngramAccessReviewDispositionResponse as a1, type EngramAccessReviewQueueResponse as a2, type EngramAccessSetCodingContextRequest as a3, type EngramAccessSuggestionSubmitRequest as a4, type EngramAccessTimelineResponse as a5, type EngramAccessTrustZoneBrowseRequest as a6, type EngramAccessTrustZoneBrowseResponse as a7, type EngramAccessTrustZoneDemoSeedRequest as a8, type EngramAccessTrustZoneDemoSeedResponse as a9, type EngramAccessTrustZonePromoteRequest as aa, type EngramAccessTrustZonePromoteResponse as ab, type EngramAccessTrustZoneRecordSummary as ac, type EngramAccessTrustZoneStatusResponse as ad, type EngramAccessWriteEnvelope as ae, type EngramAccessWriteResponse as af, shapeMemorySummary as ag, 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 };