@remnic/core 9.24.0 → 9.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/access-admin-ops-surface.js +21 -21
- package/dist/access-authorization-probe.d.ts +122 -0
- package/dist/access-authorization-probe.js +154 -0
- package/dist/access-authorization-probe.js.map +1 -0
- package/dist/access-boundary.js +21 -21
- package/dist/access-cli.js +68 -67
- package/dist/access-cli.js.map +1 -1
- package/dist/access-http.js +28 -27
- package/dist/access-identity-continuity-surface.js +21 -21
- package/dist/access-lcm-surface.js +21 -21
- package/dist/access-mcp.js +26 -26
- package/dist/access-namespace-preflight.js +21 -21
- package/dist/access-observe-write-surface.js +21 -21
- package/dist/access-operations-batch.js +23 -23
- package/dist/access-operations.d.ts +3 -3
- package/dist/access-operations.js +24 -24
- package/dist/access-recall-concurrency.js +21 -21
- package/dist/access-recall-response.js +21 -21
- package/dist/access-recall-surface.js +21 -21
- package/dist/access-schema.d.ts +76 -76
- package/dist/access-service.js +21 -21
- package/dist/access-token-capabilities.d.ts +15 -1
- package/dist/access-token-capabilities.js +3 -1
- package/dist/active-recall.js +5 -5
- package/dist/auto-sync-5OE5QOZB.js +1 -1
- package/dist/briefing.js +7 -7
- package/dist/causal-consolidation.js +8 -8
- package/dist/{chunk-34RC5RT7.js → chunk-2SA56WMI.js} +4 -4
- package/dist/{chunk-NM7SKDZM.js → chunk-3CDMIR3C.js} +2 -2
- package/dist/{chunk-V4MAO2Y4.js → chunk-3I35RLJW.js} +17 -5
- package/dist/chunk-3I35RLJW.js.map +1 -0
- package/dist/{chunk-XBRPEGXF.js → chunk-3UOSVTFR.js} +5 -5
- package/dist/{chunk-7IECFM4E.js → chunk-5ZGWA4AG.js} +10 -10
- package/dist/{chunk-WNSQOXWS.js → chunk-6LRTGCRV.js} +6 -6
- package/dist/{chunk-2NAFR36N.js → chunk-AGR7MGUX.js} +2 -2
- package/dist/{chunk-ZLNOX7B2.js → chunk-AL4TZWI3.js} +2 -2
- package/dist/{chunk-ECG64R7B.js → chunk-AT6DNUCM.js} +2 -2
- package/dist/{chunk-WO7KBATL.js → chunk-CKMO4RDY.js} +2 -2
- package/dist/{chunk-DFTCJVXI.js → chunk-DPYYSG6F.js} +8 -8
- package/dist/{chunk-MX4TUDMB.js → chunk-FIGDB2HR.js} +2 -2
- package/dist/{chunk-NHPROHJD.js → chunk-GNFZFJBJ.js} +2 -2
- package/dist/{chunk-TBJV4BZE.js → chunk-IE4HB6O5.js} +10 -10
- package/dist/chunk-JMDZDT24.js +38 -0
- package/dist/chunk-JMDZDT24.js.map +1 -0
- package/dist/{chunk-TGHUJC64.js → chunk-LARPWF3S.js} +3 -3
- package/dist/{chunk-M6ZJR6HU.js → chunk-LFHMUWA2.js} +67 -67
- package/dist/{chunk-L7DTBRTI.js → chunk-LXKJNUND.js} +2 -2
- package/dist/{chunk-BHKDCWGH.js → chunk-MNLZGCM2.js} +7 -7
- package/dist/{chunk-3FLPLDIL.js → chunk-MPDX5QMH.js} +2 -2
- package/dist/{chunk-7AMFUATK.js → chunk-MZWSOLMT.js} +14 -1
- package/dist/chunk-MZWSOLMT.js.map +1 -0
- package/dist/{chunk-SGMORUEU.js → chunk-NMGO2HAZ.js} +2 -2
- package/dist/{chunk-XHYCPA5C.js → chunk-NVYCTASB.js} +2 -2
- package/dist/{chunk-ONHRRJZM.js → chunk-QJAQNXWI.js} +6 -6
- package/dist/{chunk-GCKIDUHE.js → chunk-RROMWDDC.js} +22 -33
- package/dist/{chunk-GCKIDUHE.js.map → chunk-RROMWDDC.js.map} +1 -1
- package/dist/{chunk-4KAIGQVU.js → chunk-SZN6XVFC.js} +2 -2
- package/dist/{chunk-RENY3AIW.js → chunk-TG2DJFH7.js} +51 -51
- package/dist/{chunk-Z3B4V4YI.js → chunk-THHPDPMS.js} +5 -5
- package/dist/{chunk-WMR5WPZU.js → chunk-U37RGPJT.js} +2 -2
- package/dist/{chunk-FHH6R3QI.js → chunk-UGH6VPPO.js} +2 -2
- package/dist/{chunk-EFYACT2X.js → chunk-VY6SDKWZ.js} +2 -2
- package/dist/{chunk-NQ7E27HN.js → chunk-W4ZDTHWZ.js} +3 -3
- package/dist/{chunk-2WSX7U2N.js → chunk-X6ROIHFE.js} +2 -2
- package/dist/{chunk-AVPXXV6J.js → chunk-XKGPIWGI.js} +4 -4
- package/dist/{chunk-7CP7SO32.js → chunk-XTAAG4SQ.js} +11 -11
- package/dist/{chunk-A5N6ISRK.js → chunk-ZN4UZWMT.js} +2 -2
- package/dist/cli.js +48 -47
- package/dist/compounding/engine.js +7 -7
- package/dist/config.js +2 -2
- package/dist/connectors/codex-materialize-runner.js +7 -7
- package/dist/connectors/index.js +10 -10
- package/dist/consolidation-provenance-check.js +2 -2
- package/dist/contradiction/index.js +1 -1
- package/dist/corpus-watermark.js +16 -16
- package/dist/entity-retrieval.js +7 -7
- package/dist/explicit-capture.js +1 -1
- package/dist/extraction.js +1 -1
- package/dist/index.d.ts +388 -388
- package/dist/index.js +113 -112
- package/dist/lcm/index.js +3 -3
- package/dist/maintenance/memory-governance.js +7 -7
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +7 -7
- package/dist/maintenance/rebuild-memory-projection.js +8 -8
- package/dist/namespaces/migrate.js +14 -14
- package/dist/namespaces/search.js +6 -6
- package/dist/namespaces/storage.js +7 -7
- package/dist/offline-sync-impression-drain.js +4 -4
- package/dist/operator-doctor-corpus.js +17 -17
- package/dist/operator-toolkit.js +22 -22
- package/dist/orchestration/maintenance.js +13 -13
- package/dist/orchestrator.js +68 -67
- package/dist/qmd.js +4 -4
- package/dist/resolution-3K27T4VO.js +1 -1
- package/dist/resume-bundles.js +2 -2
- package/dist/salvage-envelope.js +1 -1
- package/dist/schemas.d.ts +76 -76
- package/dist/search/factory.js +5 -5
- package/dist/search/index.js +9 -9
- package/dist/semantic-consolidation.js +12 -12
- package/dist/semantic-rule-promotion.js +7 -7
- package/dist/semantic-rule-verifier.js +7 -7
- package/dist/shared-context/manager.d.ts +8 -8
- package/dist/storage.js +6 -6
- package/dist/tokens.js +2 -2
- package/dist/transfer/types.d.ts +66 -66
- package/dist/verified-recall.js +7 -7
- package/dist/write-envelope.js +1 -1
- package/package.json +2 -2
- package/src/access-authorization-probe.ts +43 -0
- package/src/access-boundary.ts +2 -31
- package/src/access-http.test.ts +76 -0
- package/src/access-http.ts +11 -0
- package/src/access-surface-catalog.test.ts +4 -3
- package/src/access-token-capabilities.ts +31 -0
- package/dist/chunk-7AMFUATK.js.map +0 -1
- package/dist/chunk-V4MAO2Y4.js.map +0 -1
- /package/dist/{chunk-34RC5RT7.js.map → chunk-2SA56WMI.js.map} +0 -0
- /package/dist/{chunk-NM7SKDZM.js.map → chunk-3CDMIR3C.js.map} +0 -0
- /package/dist/{chunk-XBRPEGXF.js.map → chunk-3UOSVTFR.js.map} +0 -0
- /package/dist/{chunk-7IECFM4E.js.map → chunk-5ZGWA4AG.js.map} +0 -0
- /package/dist/{chunk-WNSQOXWS.js.map → chunk-6LRTGCRV.js.map} +0 -0
- /package/dist/{chunk-2NAFR36N.js.map → chunk-AGR7MGUX.js.map} +0 -0
- /package/dist/{chunk-ZLNOX7B2.js.map → chunk-AL4TZWI3.js.map} +0 -0
- /package/dist/{chunk-ECG64R7B.js.map → chunk-AT6DNUCM.js.map} +0 -0
- /package/dist/{chunk-WO7KBATL.js.map → chunk-CKMO4RDY.js.map} +0 -0
- /package/dist/{chunk-DFTCJVXI.js.map → chunk-DPYYSG6F.js.map} +0 -0
- /package/dist/{chunk-MX4TUDMB.js.map → chunk-FIGDB2HR.js.map} +0 -0
- /package/dist/{chunk-NHPROHJD.js.map → chunk-GNFZFJBJ.js.map} +0 -0
- /package/dist/{chunk-TBJV4BZE.js.map → chunk-IE4HB6O5.js.map} +0 -0
- /package/dist/{chunk-TGHUJC64.js.map → chunk-LARPWF3S.js.map} +0 -0
- /package/dist/{chunk-M6ZJR6HU.js.map → chunk-LFHMUWA2.js.map} +0 -0
- /package/dist/{chunk-L7DTBRTI.js.map → chunk-LXKJNUND.js.map} +0 -0
- /package/dist/{chunk-BHKDCWGH.js.map → chunk-MNLZGCM2.js.map} +0 -0
- /package/dist/{chunk-3FLPLDIL.js.map → chunk-MPDX5QMH.js.map} +0 -0
- /package/dist/{chunk-SGMORUEU.js.map → chunk-NMGO2HAZ.js.map} +0 -0
- /package/dist/{chunk-XHYCPA5C.js.map → chunk-NVYCTASB.js.map} +0 -0
- /package/dist/{chunk-ONHRRJZM.js.map → chunk-QJAQNXWI.js.map} +0 -0
- /package/dist/{chunk-4KAIGQVU.js.map → chunk-SZN6XVFC.js.map} +0 -0
- /package/dist/{chunk-RENY3AIW.js.map → chunk-TG2DJFH7.js.map} +0 -0
- /package/dist/{chunk-Z3B4V4YI.js.map → chunk-THHPDPMS.js.map} +0 -0
- /package/dist/{chunk-WMR5WPZU.js.map → chunk-U37RGPJT.js.map} +0 -0
- /package/dist/{chunk-FHH6R3QI.js.map → chunk-UGH6VPPO.js.map} +0 -0
- /package/dist/{chunk-EFYACT2X.js.map → chunk-VY6SDKWZ.js.map} +0 -0
- /package/dist/{chunk-NQ7E27HN.js.map → chunk-W4ZDTHWZ.js.map} +0 -0
- /package/dist/{chunk-2WSX7U2N.js.map → chunk-X6ROIHFE.js.map} +0 -0
- /package/dist/{chunk-AVPXXV6J.js.map → chunk-XKGPIWGI.js.map} +0 -0
- /package/dist/{chunk-7CP7SO32.js.map → chunk-XTAAG4SQ.js.map} +0 -0
- /package/dist/{chunk-A5N6ISRK.js.map → chunk-ZN4UZWMT.js.map} +0 -0
package/dist/access-cli.js
CHANGED
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
import {
|
|
2
2
|
Orchestrator
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-LFHMUWA2.js";
|
|
4
4
|
import "./chunk-4B77XSG5.js";
|
|
5
5
|
import "./chunk-B7GROTXD.js";
|
|
6
|
-
import "./chunk-
|
|
6
|
+
import "./chunk-DPYYSG6F.js";
|
|
7
7
|
import "./chunk-I74SUMNI.js";
|
|
8
8
|
import "./chunk-ILNPU5W5.js";
|
|
9
9
|
import "./chunk-7HYPN2GC.js";
|
|
10
10
|
import "./chunk-666A3MOW.js";
|
|
11
11
|
import "./chunk-VDC6RZI4.js";
|
|
12
|
+
import "./chunk-UWK5OXUJ.js";
|
|
12
13
|
import "./chunk-GF22HWS2.js";
|
|
13
14
|
import "./chunk-7N4KAIGN.js";
|
|
14
15
|
import "./chunk-TPDBFYEG.js";
|
|
15
16
|
import "./chunk-UXPUUL3G.js";
|
|
16
17
|
import "./chunk-DDA47TES.js";
|
|
17
18
|
import "./chunk-PBGWYM3H.js";
|
|
18
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-LTAVSOZW.js";
|
|
19
20
|
import "./chunk-TECVW3JP.js";
|
|
20
21
|
import "./chunk-C5JF6EZ7.js";
|
|
21
22
|
import "./chunk-KBL3JJR6.js";
|
|
22
23
|
import "./chunk-FQ7HAWWC.js";
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-WMR5WPZU.js";
|
|
24
|
+
import "./chunk-U37RGPJT.js";
|
|
25
25
|
import "./chunk-JGUXPJUQ.js";
|
|
26
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-X6ROIHFE.js";
|
|
27
27
|
import "./chunk-V5OCT34X.js";
|
|
28
28
|
import "./chunk-LXOM6IQU.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-ECZU5BJH.js";
|
|
30
|
+
import "./chunk-CKMO4RDY.js";
|
|
30
31
|
import "./chunk-UHGBNIOS.js";
|
|
31
32
|
import "./chunk-I6WYQSX4.js";
|
|
32
33
|
import "./chunk-4EX5WZ4M.js";
|
|
33
34
|
import "./chunk-VOUOLGIP.js";
|
|
34
35
|
import "./chunk-S75M5ZRK.js";
|
|
35
|
-
import "./chunk-ECZU5BJH.js";
|
|
36
36
|
import "./chunk-FGBJBYWP.js";
|
|
37
37
|
import "./chunk-AAP5T6QG.js";
|
|
38
38
|
import "./chunk-T67LUYCR.js";
|
|
@@ -45,20 +45,21 @@ import "./chunk-X7XN6YU4.js";
|
|
|
45
45
|
import "./chunk-LULR4IUW.js";
|
|
46
46
|
import "./chunk-LUDXM7MD.js";
|
|
47
47
|
import "./chunk-6TCXIRP5.js";
|
|
48
|
+
import "./chunk-C3AKM55W.js";
|
|
48
49
|
import "./chunk-FMLKOL2Z.js";
|
|
49
50
|
import "./chunk-D3V3UMET.js";
|
|
50
51
|
import "./chunk-YDBIWGNI.js";
|
|
51
|
-
import "./chunk-C3AKM55W.js";
|
|
52
52
|
import "./chunk-ZZTOURJI.js";
|
|
53
53
|
import "./chunk-ROI7BK7H.js";
|
|
54
54
|
import "./chunk-23L3IXFD.js";
|
|
55
55
|
import "./chunk-3GPTTA4J.js";
|
|
56
56
|
import "./chunk-H63EDPFJ.js";
|
|
57
|
+
import "./chunk-PD6O7AXF.js";
|
|
57
58
|
import "./chunk-HTIIXNJQ.js";
|
|
58
59
|
import "./chunk-YAZNBMNF.js";
|
|
59
|
-
import "./chunk-PD6O7AXF.js";
|
|
60
60
|
import "./chunk-PHRLJFWZ.js";
|
|
61
61
|
import "./chunk-64NJRYU2.js";
|
|
62
|
+
import "./chunk-K2TDK7GG.js";
|
|
62
63
|
import "./chunk-LTHVM4XN.js";
|
|
63
64
|
import "./chunk-GBAJCDTW.js";
|
|
64
65
|
import "./chunk-4RA3C3EV.js";
|
|
@@ -69,27 +70,30 @@ import "./chunk-WLZYGLJ4.js";
|
|
|
69
70
|
import "./chunk-P2OZKKYP.js";
|
|
70
71
|
import "./chunk-JUXOTY6J.js";
|
|
71
72
|
import "./chunk-OH7QLI6W.js";
|
|
73
|
+
import "./chunk-IAIPNEHD.js";
|
|
72
74
|
import "./chunk-TVIVY7KU.js";
|
|
73
75
|
import "./chunk-YVVQUAOO.js";
|
|
74
76
|
import "./chunk-BLDBT6HZ.js";
|
|
75
77
|
import "./chunk-PWFCHOB3.js";
|
|
76
|
-
import "./chunk-
|
|
78
|
+
import "./chunk-Q6IP2ARR.js";
|
|
79
|
+
import "./chunk-6HEM6HTQ.js";
|
|
77
80
|
import "./chunk-XY7QPJDA.js";
|
|
78
|
-
import "./chunk-
|
|
81
|
+
import "./chunk-AT6DNUCM.js";
|
|
79
82
|
import "./chunk-DEOYTFA6.js";
|
|
80
83
|
import "./chunk-LUPVCGYK.js";
|
|
81
84
|
import "./chunk-DGFU5MSX.js";
|
|
82
|
-
import "./chunk-IAIPNEHD.js";
|
|
83
85
|
import "./chunk-FCCMFVS6.js";
|
|
84
86
|
import "./chunk-VEWZZM3H.js";
|
|
85
|
-
import "./chunk-Q6IP2ARR.js";
|
|
86
|
-
import "./chunk-6HEM6HTQ.js";
|
|
87
87
|
import "./chunk-OD4FM2U7.js";
|
|
88
88
|
import "./chunk-3I4FUAVJ.js";
|
|
89
|
-
import "./chunk-
|
|
89
|
+
import "./chunk-FIGDB2HR.js";
|
|
90
|
+
import "./chunk-MPDX5QMH.js";
|
|
91
|
+
import "./chunk-KSXJOC4F.js";
|
|
92
|
+
import "./chunk-JLNBQWZ2.js";
|
|
93
|
+
import "./chunk-TG2DJFH7.js";
|
|
94
|
+
import "./chunk-H4CKS5B2.js";
|
|
90
95
|
import "./chunk-MMACM5G2.js";
|
|
91
96
|
import "./chunk-54BGIBCR.js";
|
|
92
|
-
import "./chunk-H4CKS5B2.js";
|
|
93
97
|
import "./chunk-FXZTL7F7.js";
|
|
94
98
|
import "./chunk-BV2TIZ4F.js";
|
|
95
99
|
import "./chunk-HDDRVXX4.js";
|
|
@@ -99,48 +103,48 @@ import "./chunk-OZKVVUJB.js";
|
|
|
99
103
|
import "./chunk-2DL3OFLD.js";
|
|
100
104
|
import "./chunk-G4IAEX6D.js";
|
|
101
105
|
import "./chunk-2NLLXCJG.js";
|
|
102
|
-
import "./chunk-UP6MOYCB.js";
|
|
103
106
|
import "./chunk-765K3SAT.js";
|
|
107
|
+
import "./chunk-UP6MOYCB.js";
|
|
108
|
+
import "./chunk-XL24QQ63.js";
|
|
109
|
+
import "./chunk-EEC4PCG5.js";
|
|
104
110
|
import "./chunk-PYIFUBRK.js";
|
|
105
111
|
import "./chunk-FGDKJJZS.js";
|
|
106
112
|
import "./chunk-AJVLDJU6.js";
|
|
107
|
-
import "./chunk-
|
|
113
|
+
import "./chunk-IE4HB6O5.js";
|
|
108
114
|
import "./chunk-DX3XRGLH.js";
|
|
109
|
-
import "./chunk-EEC4PCG5.js";
|
|
110
115
|
import "./chunk-MC6XO7T4.js";
|
|
111
116
|
import "./chunk-MNB5RMAY.js";
|
|
112
117
|
import "./chunk-P65YJEEL.js";
|
|
113
|
-
import "./chunk-
|
|
114
|
-
import "./chunk-TBJV4BZE.js";
|
|
118
|
+
import "./chunk-THHPDPMS.js";
|
|
115
119
|
import "./chunk-KJTKLXTH.js";
|
|
116
120
|
import "./chunk-HSSERO3E.js";
|
|
117
121
|
import "./chunk-NOUJNHWG.js";
|
|
118
122
|
import "./chunk-GQL52GQ5.js";
|
|
119
123
|
import "./chunk-2F6NP3NT.js";
|
|
120
124
|
import "./chunk-TERNBNJB.js";
|
|
121
|
-
import "./chunk-
|
|
125
|
+
import "./chunk-VY6SDKWZ.js";
|
|
122
126
|
import "./chunk-OJP3N7UK.js";
|
|
123
|
-
import "./chunk-
|
|
124
|
-
import "./chunk-
|
|
125
|
-
import "./chunk-TGQ2NTWH.js";
|
|
127
|
+
import "./chunk-GNFZFJBJ.js";
|
|
128
|
+
import "./chunk-LXKJNUND.js";
|
|
126
129
|
import "./chunk-LLISELSY.js";
|
|
127
130
|
import "./chunk-ZRWB5D4H.js";
|
|
128
131
|
import "./chunk-HYQJQGD3.js";
|
|
132
|
+
import "./chunk-TGQ2NTWH.js";
|
|
129
133
|
import "./chunk-CSXHRAJJ.js";
|
|
134
|
+
import "./chunk-3T74IZB3.js";
|
|
130
135
|
import "./chunk-33JBK2XP.js";
|
|
131
|
-
import "./chunk-
|
|
132
|
-
import "./chunk-
|
|
136
|
+
import "./chunk-5ZGWA4AG.js";
|
|
137
|
+
import "./chunk-AGR7MGUX.js";
|
|
133
138
|
import "./chunk-KFY3SGN7.js";
|
|
134
139
|
import {
|
|
135
140
|
resolvePluginEntry
|
|
136
141
|
} from "./chunk-CMTINOFS.js";
|
|
137
|
-
import "./chunk-
|
|
138
|
-
import "./chunk-3T74IZB3.js";
|
|
142
|
+
import "./chunk-AL4TZWI3.js";
|
|
139
143
|
import "./chunk-HL4DB7TO.js";
|
|
140
144
|
import "./chunk-UR6PBX2J.js";
|
|
141
145
|
import "./chunk-6GUG4YNM.js";
|
|
142
|
-
import "./chunk-JXS5PDQ7.js";
|
|
143
146
|
import "./chunk-AV5ZEH4M.js";
|
|
147
|
+
import "./chunk-JXS5PDQ7.js";
|
|
144
148
|
import "./chunk-C7SRUWBW.js";
|
|
145
149
|
import "./chunk-OZKOPQCM.js";
|
|
146
150
|
import "./chunk-2DQ2XREU.js";
|
|
@@ -150,18 +154,16 @@ import "./chunk-EZ25VE3G.js";
|
|
|
150
154
|
import "./chunk-44442YCH.js";
|
|
151
155
|
import "./chunk-AUDJPF4N.js";
|
|
152
156
|
import "./chunk-Y4Z4I6WK.js";
|
|
153
|
-
import "./chunk-OKTXM5H4.js";
|
|
154
|
-
import "./chunk-34RC5RT7.js";
|
|
155
157
|
import "./chunk-LMDRGRJ2.js";
|
|
158
|
+
import "./chunk-OKTXM5H4.js";
|
|
159
|
+
import "./chunk-2SA56WMI.js";
|
|
160
|
+
import "./chunk-3UXOZBHV.js";
|
|
161
|
+
import "./chunk-YBPYIAA5.js";
|
|
156
162
|
import "./chunk-66SLUXKM.js";
|
|
157
163
|
import "./chunk-P4BC54KI.js";
|
|
158
164
|
import "./chunk-UQ7RN5HK.js";
|
|
159
165
|
import "./chunk-4TFIRMTE.js";
|
|
160
|
-
import "./chunk-
|
|
161
|
-
import "./chunk-3FLPLDIL.js";
|
|
162
|
-
import "./chunk-KSXJOC4F.js";
|
|
163
|
-
import "./chunk-JLNBQWZ2.js";
|
|
164
|
-
import "./chunk-3UXOZBHV.js";
|
|
166
|
+
import "./chunk-2AJ72VVS.js";
|
|
165
167
|
import {
|
|
166
168
|
parseConfig
|
|
167
169
|
} from "./chunk-GJJBPI6I.js";
|
|
@@ -179,9 +181,7 @@ import "./chunk-MYVPLJOO.js";
|
|
|
179
181
|
import "./chunk-H3FZVNRN.js";
|
|
180
182
|
import "./chunk-KFZY2OFH.js";
|
|
181
183
|
import "./chunk-B7RWBZXW.js";
|
|
182
|
-
import "./chunk-
|
|
183
|
-
import "./chunk-2AJ72VVS.js";
|
|
184
|
-
import "./chunk-V4MAO2Y4.js";
|
|
184
|
+
import "./chunk-3I35RLJW.js";
|
|
185
185
|
import "./chunk-V7IZKJI3.js";
|
|
186
186
|
import "./chunk-MKQBXQKU.js";
|
|
187
187
|
import "./chunk-SEDEKFYQ.js";
|
|
@@ -191,26 +191,27 @@ import "./chunk-J64TK33U.js";
|
|
|
191
191
|
import "./chunk-RSUYKGGZ.js";
|
|
192
192
|
import "./chunk-42NQ7AVG.js";
|
|
193
193
|
import "./chunk-7RXCMVFQ.js";
|
|
194
|
-
import "./chunk-
|
|
194
|
+
import "./chunk-6LRTGCRV.js";
|
|
195
195
|
import "./chunk-57QKLRBV.js";
|
|
196
196
|
import "./chunk-D24OXEPB.js";
|
|
197
|
-
import "./chunk-
|
|
197
|
+
import "./chunk-TWCOYET2.js";
|
|
198
|
+
import "./chunk-NMGO2HAZ.js";
|
|
198
199
|
import "./chunk-P25IPRXP.js";
|
|
199
|
-
import "./chunk-
|
|
200
|
-
import "./chunk-HNZKVLAN.js";
|
|
200
|
+
import "./chunk-MNLZGCM2.js";
|
|
201
201
|
import "./chunk-EQWEIIKQ.js";
|
|
202
|
+
import "./chunk-HNZKVLAN.js";
|
|
202
203
|
import "./chunk-BJJAX3IZ.js";
|
|
203
204
|
import "./chunk-WG5HSQ4P.js";
|
|
204
205
|
import "./chunk-35NN3ZFA.js";
|
|
205
206
|
import "./chunk-CEN6DW6X.js";
|
|
206
207
|
import "./chunk-T4WDJPEZ.js";
|
|
207
208
|
import "./chunk-56BSXSHC.js";
|
|
208
|
-
import "./chunk-TWCOYET2.js";
|
|
209
209
|
import "./chunk-OADWQ5CR.js";
|
|
210
|
+
import "./chunk-JMDZDT24.js";
|
|
210
211
|
import {
|
|
211
212
|
EngramAccessService,
|
|
212
213
|
getOperation
|
|
213
|
-
} from "./chunk-
|
|
214
|
+
} from "./chunk-RROMWDDC.js";
|
|
214
215
|
import "./chunk-GDASG7NC.js";
|
|
215
216
|
import "./chunk-GDB4J2H3.js";
|
|
216
217
|
import "./chunk-7CPOZH6Y.js";
|
|
@@ -225,11 +226,11 @@ import "./chunk-H7XKCNR6.js";
|
|
|
225
226
|
import "./chunk-M5EPMNS4.js";
|
|
226
227
|
import "./chunk-SOBJ6NEY.js";
|
|
227
228
|
import "./chunk-X3SQYAPP.js";
|
|
228
|
-
import "./chunk-
|
|
229
|
+
import "./chunk-3CDMIR3C.js";
|
|
229
230
|
import "./chunk-ICP53SKG.js";
|
|
230
231
|
import "./chunk-AQEJKOKI.js";
|
|
231
232
|
import "./chunk-6HMYUWXR.js";
|
|
232
|
-
import "./chunk-
|
|
233
|
+
import "./chunk-UGH6VPPO.js";
|
|
233
234
|
import "./chunk-R6YJI3HE.js";
|
|
234
235
|
import {
|
|
235
236
|
projectTagProjectId
|
|
@@ -239,30 +240,30 @@ import "./chunk-IISBCCWR.js";
|
|
|
239
240
|
import "./chunk-JYIFGGEM.js";
|
|
240
241
|
import "./chunk-EI6V5UXY.js";
|
|
241
242
|
import "./chunk-NLE6TSLG.js";
|
|
242
|
-
import "./chunk-IKMAO55B.js";
|
|
243
243
|
import "./chunk-QDW3E4RD.js";
|
|
244
|
+
import "./chunk-IKMAO55B.js";
|
|
244
245
|
import "./chunk-C37ZRXX7.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
-
import "./chunk-
|
|
247
|
-
import "./chunk-
|
|
248
|
-
import "./chunk-
|
|
246
|
+
import "./chunk-W4ZDTHWZ.js";
|
|
247
|
+
import "./chunk-LARPWF3S.js";
|
|
248
|
+
import "./chunk-ZN4UZWMT.js";
|
|
249
|
+
import "./chunk-3UOSVTFR.js";
|
|
250
|
+
import "./chunk-BLAKS3CP.js";
|
|
249
251
|
import "./chunk-S2BBISHU.js";
|
|
250
252
|
import "./chunk-CYEPCZN5.js";
|
|
251
253
|
import "./chunk-ES36HTSC.js";
|
|
252
254
|
import "./chunk-3Y224NYC.js";
|
|
253
|
-
import "./chunk-QH6CS6XJ.js";
|
|
254
|
-
import "./chunk-BLAKS3CP.js";
|
|
255
255
|
import "./chunk-W7IGLX4G.js";
|
|
256
|
+
import "./chunk-QH6CS6XJ.js";
|
|
256
257
|
import "./chunk-CINZGPSJ.js";
|
|
257
|
-
import "./chunk-
|
|
258
|
+
import "./chunk-NVYCTASB.js";
|
|
258
259
|
import "./chunk-227UFSEQ.js";
|
|
259
260
|
import "./chunk-ET356KSB.js";
|
|
260
261
|
import "./chunk-72A4L5JJ.js";
|
|
261
262
|
import "./chunk-A7Q43EUZ.js";
|
|
262
|
-
import "./chunk-
|
|
263
|
+
import "./chunk-QJAQNXWI.js";
|
|
263
264
|
import "./chunk-YV32N67O.js";
|
|
264
|
-
import "./chunk-IUM3VSHI.js";
|
|
265
265
|
import "./chunk-64UDOIMI.js";
|
|
266
|
+
import "./chunk-IUM3VSHI.js";
|
|
266
267
|
import "./chunk-O75CRYGF.js";
|
|
267
268
|
import "./chunk-3ONXXHQO.js";
|
|
268
269
|
import "./chunk-UFGFMWAD.js";
|
|
@@ -275,8 +276,8 @@ import "./chunk-P32IDSHD.js";
|
|
|
275
276
|
import "./chunk-443XCR34.js";
|
|
276
277
|
import "./chunk-TBBDFYXW.js";
|
|
277
278
|
import "./chunk-ZBJMUXZH.js";
|
|
278
|
-
import "./chunk-
|
|
279
|
-
import "./chunk-
|
|
279
|
+
import "./chunk-SZN6XVFC.js";
|
|
280
|
+
import "./chunk-XTAAG4SQ.js";
|
|
280
281
|
import "./chunk-UHVXE24Y.js";
|
|
281
282
|
import "./chunk-2QMKMVHH.js";
|
|
282
283
|
import "./chunk-DEBHXHJR.js";
|
|
@@ -285,14 +286,14 @@ import "./chunk-6CIAGZ6X.js";
|
|
|
285
286
|
import "./chunk-J6A3CX5N.js";
|
|
286
287
|
import "./chunk-HKF5VASQ.js";
|
|
287
288
|
import "./chunk-V25OWXAC.js";
|
|
288
|
-
import "./chunk-
|
|
289
|
+
import "./chunk-XKGPIWGI.js";
|
|
289
290
|
import "./chunk-EGGE52UU.js";
|
|
290
291
|
import "./chunk-GCASGYIO.js";
|
|
291
292
|
import "./chunk-WL5EBRDH.js";
|
|
293
|
+
import "./chunk-ILGC6JH6.js";
|
|
292
294
|
import "./chunk-SCU65EZI.js";
|
|
293
295
|
import "./chunk-3CSX3ETE.js";
|
|
294
296
|
import "./chunk-RL6NEVXT.js";
|
|
295
|
-
import "./chunk-ILGC6JH6.js";
|
|
296
297
|
import "./chunk-DM2T26WE.js";
|
|
297
298
|
import "./chunk-LDXUBPMO.js";
|
|
298
299
|
import "./chunk-CGASUJVP.js";
|
|
@@ -301,12 +302,12 @@ import "./chunk-BT7NVCML.js";
|
|
|
301
302
|
import "./chunk-JYIJNNN3.js";
|
|
302
303
|
import "./chunk-AAD2ZS6P.js";
|
|
303
304
|
import "./chunk-W5H6ZRPT.js";
|
|
304
|
-
import "./chunk-G7D6GZ5J.js";
|
|
305
305
|
import "./chunk-5VQJBH2G.js";
|
|
306
306
|
import "./chunk-AITCS2RC.js";
|
|
307
307
|
import "./chunk-XMMESCPD.js";
|
|
308
308
|
import "./chunk-42JKGUFJ.js";
|
|
309
309
|
import "./chunk-PDJTHRAW.js";
|
|
310
|
+
import "./chunk-G7D6GZ5J.js";
|
|
310
311
|
import "./chunk-C23BYTJV.js";
|
|
311
312
|
import "./chunk-QIEUU4UK.js";
|
|
312
313
|
import "./chunk-L2EXJQJP.js";
|
|
@@ -324,6 +325,8 @@ import {
|
|
|
324
325
|
readEnvVar,
|
|
325
326
|
resolveHomeDir
|
|
326
327
|
} from "./chunk-JUC24CTX.js";
|
|
328
|
+
import "./chunk-6MKAMLQL.js";
|
|
329
|
+
import "./chunk-JAKIDQB2.js";
|
|
327
330
|
import "./chunk-KQAFEZQX.js";
|
|
328
331
|
import "./chunk-WEHSQBFR.js";
|
|
329
332
|
import "./chunk-X7Y7WX73.js";
|
|
@@ -336,13 +339,11 @@ import "./chunk-BJMBJZ2Y.js";
|
|
|
336
339
|
import "./chunk-UKJAGEXH.js";
|
|
337
340
|
import "./chunk-FP2373TW.js";
|
|
338
341
|
import "./chunk-P7FMDTKL.js";
|
|
339
|
-
import "./chunk-
|
|
342
|
+
import "./chunk-MZWSOLMT.js";
|
|
340
343
|
import "./chunk-SYOIVK7K.js";
|
|
341
344
|
import "./chunk-Z2YFLXHU.js";
|
|
342
345
|
import "./chunk-I4WBNM3M.js";
|
|
343
346
|
import "./chunk-SOAU2OE2.js";
|
|
344
|
-
import "./chunk-6MKAMLQL.js";
|
|
345
|
-
import "./chunk-JAKIDQB2.js";
|
|
346
347
|
import "./chunk-44DUJETW.js";
|
|
347
348
|
import "./chunk-2H7OEVPO.js";
|
|
348
349
|
import "./chunk-U3PN77QT.js";
|
package/dist/access-cli.js.map
CHANGED
|
@@ -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 { resolvePluginEntry } from \"./plugin-entry-resolver.js\";\nimport { expandTildePath } from \"./utils/path.js\";\nimport { getOperation } from \"./access-boundary.js\";\n// Importing access-operations registers the pilot boundary operations as a\n// side effect; the store command dispatches through the registry (issue #1525).\nimport \"./access-operations.js\";\nimport { projectTagProjectId } from \"./coding/coding-namespace.js\";\n\nconst OPENCLAW_REMNIC_PLUGIN_IDS = [\"openclaw-remnic\", \"openclaw-engram\"] as const;\n\ntype CommandName = \"browse\" | \"store\" | \"decision\" | \"architecture\" | \"delta\" | \"correct\";\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 the plugin-entry resolver 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\nfunction getOpenClawPluginEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const entries =\n plugins && plugins[\"entries\"] && typeof plugins[\"entries\"] === \"object\" && !Array.isArray(plugins[\"entries\"])\n ? (plugins[\"entries\"] as Record<string, unknown>)\n : undefined;\n return entries;\n}\n\nfunction getOpenClawMemorySlotId(raw: Record<string, unknown>): string | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const slots =\n plugins && plugins[\"slots\"] && typeof plugins[\"slots\"] === \"object\" && !Array.isArray(plugins[\"slots\"])\n ? (plugins[\"slots\"] as Record<string, unknown>)\n : undefined;\n const slotId = slots?.[\"memory\"];\n return typeof slotId === \"string\" ? slotId : undefined;\n}\n\nfunction resolveOpenClawRemnicPluginEntry(raw: unknown, preferredId?: string): Record<string, unknown> | undefined {\n return resolvePluginEntry(raw, {\n candidateIds: OPENCLAW_REMNIC_PLUGIN_IDS,\n preferredId,\n getEntries: getOpenClawPluginEntries,\n getSlotId: getOpenClawMemorySlotId,\n });\n}\n\nfunction hasAllowedOpenClawRemnicPluginId(value: string): boolean {\n return (OPENCLAW_REMNIC_PLUGIN_IDS as readonly string[]).includes(value);\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 \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \" engram-access decision [options]\",\n \" engram-access architecture [options]\",\n \" engram-access delta [options]\",\n \" engram-access correct [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 \"\",\n \"Decision options:\",\n \" --subcommand <list|get|record|supersede>\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --id <id> (get/supersede)\",\n \" --title <title> (record/supersede)\",\n \" --status <proposed|accepted|superseded|rejected> (record)\",\n \" --context <text> (record/supersede)\",\n \" --decision <text> (record/supersede)\",\n \" --consequences <text> (record/supersede)\",\n \" --entity-ref <ref> (repeatable)\",\n \" --project-tag <tag> (attach coding context for this invocation)\",\n \" --supersedes-id <id> (alias for --id on supersede)\",\n \"\",\n \"Architecture options:\",\n \" --subcommand <get|refresh>\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --project-tag <tag> (attach coding context for this invocation)\",\n \" --repo-root <path> (repo to scan for refresh; defaults to the current directory)\",\n \"\",\n \"Correct options (issue #1580 — one plan/apply pipeline for all corrections):\",\n \" --text \\\"<correction>\\\" plan a correction from natural language\",\n \" --id <memoryId> (repeatable) explicit target memory ids\",\n \" --apply apply a pending plan (requires --plan-id + --confirm)\",\n \" --plan-id <id> the plan to apply or discard\",\n \" --confirm confirm the apply (safety guard, rule 48)\",\n \" --list list pending plans\",\n \" --discard discard a pending plan (requires --plan-id)\",\n \" --namespace <name> namespace (validated by policy)\",\n \" --session-key <key> session identifier for namespace resolution\",\n \" --principal <principal>\",\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 decision: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"id\",\n \"title\",\n \"status\",\n \"context\",\n \"decision\",\n \"consequences\",\n \"entity-ref\",\n \"project-tag\",\n \"supersedes-id\",\n ]),\n flagOptions: new Set(),\n },\n architecture: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"project-tag\",\n \"repo-root\",\n ]),\n flagOptions: new Set(),\n },\n delta: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"project-tag\",\n \"repo-root\",\n ]),\n flagOptions: new Set(),\n },\n correct: {\n valueOptions: new Set([\n \"text\",\n \"id\",\n \"plan-id\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n ]),\n flagOptions: new Set([\"apply\", \"list\", \"discard\", \"confirm\", \"yes\"]),\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\n/**\n * Type guard for {@link CommandName}. Enumerating the union (rather than a\n * bare `value in COMMAND_SPECS`) is what lets TypeScript NARROW the string\n * to `CommandName` — the `in` operator alone yields TS2322 on the\n * `command: commandRaw` assignment below (codex review P2).\n */\nfunction isCommandName(value: string): value is CommandName {\n return value === \"browse\" || value === \"store\" || value === \"decision\" || value === \"architecture\" || value === \"delta\" || value === \"correct\";\n}\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (!isCommandName(commandRaw)) {\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 const slotId =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? getOpenClawMemorySlotId(raw as Record<string, unknown>)\n : undefined;\n if (typeof slotId === \"string\" && !hasAllowedOpenClawRemnicPluginId(slotId)) {\n throw new Error(\n `OpenClaw memory slot points to non-Remnic plugin \"${slotId}\"; refusing to use default Remnic access config.`,\n );\n }\n // Delegate slot → preferredId → canonical → legacy resolution to the\n // generic 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 = resolveOpenClawRemnicPluginEntry(raw, preferredId);\n if (!entry) {\n throw new Error(\n \"OpenClaw config does not contain an allowed Remnic plugin entry; refusing to use default Remnic access config.\",\n );\n }\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 // Migrated through the access boundary (issue #1525): the store command\n // dispatches through the same registry entry as the MCP tool and HTTP\n // route, so validation/normalization is owned in ONE place. The CLI has no\n // write-quota hook (it is a one-shot process), so no hooks are forwarded.\n const op = getOperation(\"memory_store\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_store\");\n }\n const output = (await op.run(\n {\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\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 {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\n}\n\n/**\n * Decision-record surface (issue #1548 Track A PR 2). Dispatches through the\n * same `coding_decision` operation as the MCP tool and HTTP route — one\n * validation boundary, three transports.\n */\nasync function runDecision(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // The CLI creates a fresh Orchestrator per invocation, so the session\n // coding-context map is empty. If --project-tag + --session-key are\n // provided, attach a coding context BEFORE dispatching so the gate\n // passes and project-scoped writes resolve to the right namespace\n // (review P2).\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (projectTag && projectTag.trim().length > 0 && sessionKey && sessionKey.trim().length > 0) {\n const projectId = projectTagProjectId(projectTag.trim());\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: projectId,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_decision\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_decision\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n id: getLastOption(args, \"id\"),\n supersedesId: getLastOption(args, \"supersedes-id\"),\n title: getLastOption(args, \"title\"),\n status: getLastOption(args, \"status\"),\n context: getLastOption(args, \"context\"),\n decision: getLastOption(args, \"decision\"),\n consequences: getLastOption(args, \"consequences\"),\n entityRefs: getAllOptions(args, \"entity-ref\"),\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Architecture-card surface (issue #1548 Track A PR 3). Dispatches through\n * the same `coding_architecture` operation as the MCP tool and HTTP route —\n * one validation boundary, three transports.\n */\nasync function runArchitecture(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // Same coding-context attachment as runDecision (review P2): the CLI's\n // fresh Orchestrator has an empty session coding-context map, so attach\n // a context BEFORE dispatching when --project-tag + --session-key are\n // given, so the gate passes and writes resolve to the right namespace.\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (sessionKey && sessionKey.trim().length > 0) {\n // refresh scans codingContext.rootPath, so it must be a REAL checkout\n // path. Default to the CWD (or an explicit --repo-root) so a one-shot\n // CLI refresh scans the caller's repo, not a non-existent tag path.\n const repoRoot = expandOptionalPath(getLastOption(args, \"repo-root\")) ?? process.cwd();\n // --project-tag supplies the context id (namespace); when absent, derive\n // a default from the repo-root basename so refresh works with just\n // --session-key + --repo-root (codex review).\n const projectId =\n projectTag && projectTag.trim().length > 0\n ? projectTagProjectId(projectTag.trim())\n : projectTagProjectId(path.basename(repoRoot));\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: repoRoot,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_architecture\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_architecture\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Session-delta surface (issue #1548 Track A PR 4). Dispatches through the\n * same `coding_delta` operation as the MCP tool and HTTP route — one\n * validation boundary, three transports.\n */\nasync function runDelta(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // Same coding-context attachment as runArchitecture/runDecision: the CLI's\n // fresh Orchestrator has an empty session coding-context map, so attach a\n // context BEFORE dispatching so the gate passes.\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (sessionKey && sessionKey.trim().length > 0) {\n const repoRoot = expandOptionalPath(getLastOption(args, \"repo-root\")) ?? process.cwd();\n const projectId =\n projectTag && projectTag.trim().length > 0\n ? projectTagProjectId(projectTag.trim())\n : projectTagProjectId(path.basename(repoRoot));\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: repoRoot,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_delta\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_delta\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Correction Contract surface (issue #1580). Dispatches through the same\n * `memory_correct_plan` / `memory_correct_apply` operations as the MCP tool\n * and HTTP route — one validation boundary, three transports.\n *\n * Modes:\n * remnic correct \"<text>\" [--id <id>...] → plan + print diff\n * remnic correct --apply <planId> [--confirm] → apply a pending plan\n * remnic correct --list → list pending plans\n * remnic correct --discard <planId> → discard a pending plan\n */\nasync function runCorrect(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { config, service } = buildRuntime(preferredId);\n const principal = getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal;\n const namespace = getLastOption(args, \"namespace\");\n const sessionKey = getLastOption(args, \"session-key\");\n\n if (args.flags.has(\"list\")) {\n const plans = await service.correctionListPending({\n ...(namespace ? { namespace } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n principal,\n });\n console.log(JSON.stringify(plans, null, 2));\n return;\n }\n\n if (args.flags.has(\"discard\")) {\n const planId = requireOption(args, \"plan-id\");\n await service.correctionDiscard(planId, {\n ...(namespace ? { namespace } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n principal,\n });\n console.log(JSON.stringify({ discarded: planId }));\n return;\n }\n\n if (args.flags.has(\"apply\")) {\n const planId = requireOption(args, \"plan-id\");\n const op = getOperation(\"memory_correct_apply\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_correct_apply\");\n }\n const output = (await op.run(\n {\n planId,\n confirm: args.flags.has(\"confirm\") || args.flags.has(\"yes\"),\n ...(sessionKey ? { sessionKey } : {}),\n ...(namespace ? { namespace } : {}),\n },\n { service, authenticatedPrincipal: principal },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n return;\n }\n\n // Default mode: plan from text — dispatch through the boundary operation\n // so schema validation + namespace policy reach this path (same as MCP/HTTP).\n const text = requireOption(args, \"text\");\n const targetIds = getAllOptions(args, \"id\");\n const planOp = getOperation(\"memory_correct_plan\");\n if (!planOp) {\n throw new Error(\"access-boundary: operation not registered: memory_correct_plan\");\n }\n const planOutput = (await planOp.run(\n {\n text,\n ...(targetIds.length > 0 ? { targetIds } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n ...(namespace ? { namespace } : {}),\n },\n { service, authenticatedPrincipal: principal },\n )) as { result: unknown };\n console.log(JSON.stringify(planOutput.result, null, 2));\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 if (args.command === \"decision\") {\n await runDecision(args, options.preferredId);\n return;\n }\n if (args.command === \"architecture\") {\n await runArchitecture(args, options.preferredId);\n return;\n }\n if (args.command === \"delta\") {\n await runDelta(args, options.preferredId);\n return;\n }\n if (args.command === \"correct\") {\n await runCorrect(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 { resolvePluginEntry } from \"./plugin-entry-resolver.js\";\nimport { expandTildePath } from \"./utils/path.js\";\nimport { getOperation } from \"./access-boundary.js\";\n// Importing access-operations registers the pilot boundary operations as a\n// side effect; the store command dispatches through the registry (issue #1525).\nimport \"./access-operations.js\";\nimport { projectTagProjectId } from \"./coding/coding-namespace.js\";\n\nconst OPENCLAW_REMNIC_PLUGIN_IDS = [\"openclaw-remnic\", \"openclaw-engram\"] as const;\n\ntype CommandName = \"browse\" | \"store\" | \"decision\" | \"architecture\" | \"delta\" | \"correct\";\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 the plugin-entry resolver 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\nfunction getOpenClawPluginEntries(raw: Record<string, unknown>): Record<string, unknown> | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const entries =\n plugins && plugins[\"entries\"] && typeof plugins[\"entries\"] === \"object\" && !Array.isArray(plugins[\"entries\"])\n ? (plugins[\"entries\"] as Record<string, unknown>)\n : undefined;\n return entries;\n}\n\nfunction getOpenClawMemorySlotId(raw: Record<string, unknown>): string | undefined {\n const plugins =\n raw[\"plugins\"] && typeof raw[\"plugins\"] === \"object\" && !Array.isArray(raw[\"plugins\"])\n ? (raw[\"plugins\"] as Record<string, unknown>)\n : undefined;\n const slots =\n plugins && plugins[\"slots\"] && typeof plugins[\"slots\"] === \"object\" && !Array.isArray(plugins[\"slots\"])\n ? (plugins[\"slots\"] as Record<string, unknown>)\n : undefined;\n const slotId = slots?.[\"memory\"];\n return typeof slotId === \"string\" ? slotId : undefined;\n}\n\nfunction resolveOpenClawRemnicPluginEntry(raw: unknown, preferredId?: string): Record<string, unknown> | undefined {\n return resolvePluginEntry(raw, {\n candidateIds: OPENCLAW_REMNIC_PLUGIN_IDS,\n preferredId,\n getEntries: getOpenClawPluginEntries,\n getSlotId: getOpenClawMemorySlotId,\n });\n}\n\nfunction hasAllowedOpenClawRemnicPluginId(value: string): boolean {\n return (OPENCLAW_REMNIC_PLUGIN_IDS as readonly string[]).includes(value);\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 \" engram-access browse [options]\",\n \" engram-access store [options]\",\n \" engram-access decision [options]\",\n \" engram-access architecture [options]\",\n \" engram-access delta [options]\",\n \" engram-access correct [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 \"\",\n \"Decision options:\",\n \" --subcommand <list|get|record|supersede>\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --id <id> (get/supersede)\",\n \" --title <title> (record/supersede)\",\n \" --status <proposed|accepted|superseded|rejected> (record)\",\n \" --context <text> (record/supersede)\",\n \" --decision <text> (record/supersede)\",\n \" --consequences <text> (record/supersede)\",\n \" --entity-ref <ref> (repeatable)\",\n \" --project-tag <tag> (attach coding context for this invocation)\",\n \" --supersedes-id <id> (alias for --id on supersede)\",\n \"\",\n \"Architecture options:\",\n \" --subcommand <get|refresh>\",\n \" --namespace <name>\",\n \" --session-key <key>\",\n \" --principal <principal>\",\n \" --project-tag <tag> (attach coding context for this invocation)\",\n \" --repo-root <path> (repo to scan for refresh; defaults to the current directory)\",\n \"\",\n \"Correct options (issue #1580 — one plan/apply pipeline for all corrections):\",\n \" --text \\\"<correction>\\\" plan a correction from natural language\",\n \" --id <memoryId> (repeatable) explicit target memory ids\",\n \" --apply apply a pending plan (requires --plan-id + --confirm)\",\n \" --plan-id <id> the plan to apply or discard\",\n \" --confirm confirm the apply (safety guard, rule 48)\",\n \" --list list pending plans\",\n \" --discard discard a pending plan (requires --plan-id)\",\n \" --namespace <name> namespace (validated by policy)\",\n \" --session-key <key> session identifier for namespace resolution\",\n \" --principal <principal>\",\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 decision: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"id\",\n \"title\",\n \"status\",\n \"context\",\n \"decision\",\n \"consequences\",\n \"entity-ref\",\n \"project-tag\",\n \"supersedes-id\",\n ]),\n flagOptions: new Set(),\n },\n architecture: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"project-tag\",\n \"repo-root\",\n ]),\n flagOptions: new Set(),\n },\n delta: {\n valueOptions: new Set([\n \"subcommand\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n \"project-tag\",\n \"repo-root\",\n ]),\n flagOptions: new Set(),\n },\n correct: {\n valueOptions: new Set([\n \"text\",\n \"id\",\n \"plan-id\",\n \"namespace\",\n \"session-key\",\n \"principal\",\n ]),\n flagOptions: new Set([\"apply\", \"list\", \"discard\", \"confirm\", \"yes\"]),\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\n/**\n * Type guard for {@link CommandName}. Enumerating the union (rather than a\n * bare `value in COMMAND_SPECS`) is what lets TypeScript NARROW the string\n * to `CommandName` — the `in` operator alone yields TS2322 on the\n * `command: commandRaw` assignment below (codex review P2).\n */\nfunction isCommandName(value: string): value is CommandName {\n return value === \"browse\" || value === \"store\" || value === \"decision\" || value === \"architecture\" || value === \"delta\" || value === \"correct\";\n}\n\nfunction parseArgs(argv: string[]): ParsedArgs {\n const [commandRaw, ...rest] = argv;\n if (!isCommandName(commandRaw)) {\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 const slotId =\n raw && typeof raw === \"object\" && !Array.isArray(raw)\n ? getOpenClawMemorySlotId(raw as Record<string, unknown>)\n : undefined;\n if (typeof slotId === \"string\" && !hasAllowedOpenClawRemnicPluginId(slotId)) {\n throw new Error(\n `OpenClaw memory slot points to non-Remnic plugin \"${slotId}\"; refusing to use default Remnic access config.`,\n );\n }\n // Delegate slot → preferredId → canonical → legacy resolution to the\n // generic 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 = resolveOpenClawRemnicPluginEntry(raw, preferredId);\n if (!entry) {\n throw new Error(\n \"OpenClaw config does not contain an allowed Remnic plugin entry; refusing to use default Remnic access config.\",\n );\n }\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 // Migrated through the access boundary (issue #1525): the store command\n // dispatches through the same registry entry as the MCP tool and HTTP\n // route, so validation/normalization is owned in ONE place. The CLI has no\n // write-quota hook (it is a one-shot process), so no hooks are forwarded.\n const op = getOperation(\"memory_store\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_store\");\n }\n const output = (await op.run(\n {\n namespace: storeArgs.namespace,\n sessionKey: storeArgs.sessionKey,\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 {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\nfunction expandOptionalPath(value: string | undefined): string | undefined {\n return value === undefined ? undefined : expandTildePath(value);\n}\n\n/**\n * Decision-record surface (issue #1548 Track A PR 2). Dispatches through the\n * same `coding_decision` operation as the MCP tool and HTTP route — one\n * validation boundary, three transports.\n */\nasync function runDecision(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // The CLI creates a fresh Orchestrator per invocation, so the session\n // coding-context map is empty. If --project-tag + --session-key are\n // provided, attach a coding context BEFORE dispatching so the gate\n // passes and project-scoped writes resolve to the right namespace\n // (review P2).\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (projectTag && projectTag.trim().length > 0 && sessionKey && sessionKey.trim().length > 0) {\n const projectId = projectTagProjectId(projectTag.trim());\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: projectId,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_decision\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_decision\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n id: getLastOption(args, \"id\"),\n supersedesId: getLastOption(args, \"supersedes-id\"),\n title: getLastOption(args, \"title\"),\n status: getLastOption(args, \"status\"),\n context: getLastOption(args, \"context\"),\n decision: getLastOption(args, \"decision\"),\n consequences: getLastOption(args, \"consequences\"),\n entityRefs: getAllOptions(args, \"entity-ref\"),\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Architecture-card surface (issue #1548 Track A PR 3). Dispatches through\n * the same `coding_architecture` operation as the MCP tool and HTTP route —\n * one validation boundary, three transports.\n */\nasync function runArchitecture(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // Same coding-context attachment as runDecision (review P2): the CLI's\n // fresh Orchestrator has an empty session coding-context map, so attach\n // a context BEFORE dispatching when --project-tag + --session-key are\n // given, so the gate passes and writes resolve to the right namespace.\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (sessionKey && sessionKey.trim().length > 0) {\n // refresh scans codingContext.rootPath, so it must be a REAL checkout\n // path. Default to the CWD (or an explicit --repo-root) so a one-shot\n // CLI refresh scans the caller's repo, not a non-existent tag path.\n const repoRoot = expandOptionalPath(getLastOption(args, \"repo-root\")) ?? process.cwd();\n // --project-tag supplies the context id (namespace); when absent, derive\n // a default from the repo-root basename so refresh works with just\n // --session-key + --repo-root (codex review).\n const projectId =\n projectTag && projectTag.trim().length > 0\n ? projectTagProjectId(projectTag.trim())\n : projectTagProjectId(path.basename(repoRoot));\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: repoRoot,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_architecture\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_architecture\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Session-delta surface (issue #1548 Track A PR 4). Dispatches through the\n * same `coding_delta` operation as the MCP tool and HTTP route — one\n * validation boundary, three transports.\n */\nasync function runDelta(args: ParsedArgs, preferredId?: string): Promise<void> {\n const subcommand = requireOption(args, \"subcommand\");\n const { config, service } = buildRuntime(preferredId);\n // Same coding-context attachment as runArchitecture/runDecision: the CLI's\n // fresh Orchestrator has an empty session coding-context map, so attach a\n // context BEFORE dispatching so the gate passes.\n const projectTag = getLastOption(args, \"project-tag\");\n const sessionKey = getLastOption(args, \"session-key\");\n if (sessionKey && sessionKey.trim().length > 0) {\n const repoRoot = expandOptionalPath(getLastOption(args, \"repo-root\")) ?? process.cwd();\n const projectId =\n projectTag && projectTag.trim().length > 0\n ? projectTagProjectId(projectTag.trim())\n : projectTagProjectId(path.basename(repoRoot));\n service.setCodingContext({\n sessionKey,\n codingContext: {\n projectId,\n branch: null,\n rootPath: repoRoot,\n defaultBranch: null,\n },\n });\n }\n const op = getOperation(\"coding_delta\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: coding_delta\");\n }\n const output = (await op.run(\n {\n subcommand,\n namespace: getLastOption(args, \"namespace\"),\n sessionKey,\n },\n {\n service,\n authenticatedPrincipal: getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal,\n },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n}\n\n/**\n * Correction Contract surface (issue #1580). Dispatches through the same\n * `memory_correct_plan` / `memory_correct_apply` operations as the MCP tool\n * and HTTP route — one validation boundary, three transports.\n *\n * Modes:\n * remnic correct \"<text>\" [--id <id>...] → plan + print diff\n * remnic correct --apply <planId> [--confirm] → apply a pending plan\n * remnic correct --list → list pending plans\n * remnic correct --discard <planId> → discard a pending plan\n */\nasync function runCorrect(args: ParsedArgs, preferredId?: string): Promise<void> {\n const { config, service } = buildRuntime(preferredId);\n const principal = getLastOption(args, \"principal\") ?? config.agentAccessHttp.principal;\n const namespace = getLastOption(args, \"namespace\");\n const sessionKey = getLastOption(args, \"session-key\");\n\n if (args.flags.has(\"list\")) {\n const plans = await service.correctionListPending({\n ...(namespace ? { namespace } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n principal,\n });\n console.log(JSON.stringify(plans, null, 2));\n return;\n }\n\n if (args.flags.has(\"discard\")) {\n const planId = requireOption(args, \"plan-id\");\n await service.correctionDiscard(planId, {\n ...(namespace ? { namespace } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n principal,\n });\n console.log(JSON.stringify({ discarded: planId }));\n return;\n }\n\n if (args.flags.has(\"apply\")) {\n const planId = requireOption(args, \"plan-id\");\n const op = getOperation(\"memory_correct_apply\");\n if (!op) {\n throw new Error(\"access-boundary: operation not registered: memory_correct_apply\");\n }\n const output = (await op.run(\n {\n planId,\n confirm: args.flags.has(\"confirm\") || args.flags.has(\"yes\"),\n ...(sessionKey ? { sessionKey } : {}),\n ...(namespace ? { namespace } : {}),\n },\n { service, authenticatedPrincipal: principal },\n )) as { result: unknown };\n console.log(JSON.stringify(output.result, null, 2));\n return;\n }\n\n // Default mode: plan from text — dispatch through the boundary operation\n // so schema validation + namespace policy reach this path (same as MCP/HTTP).\n const text = requireOption(args, \"text\");\n const targetIds = getAllOptions(args, \"id\");\n const planOp = getOperation(\"memory_correct_plan\");\n if (!planOp) {\n throw new Error(\"access-boundary: operation not registered: memory_correct_plan\");\n }\n const planOutput = (await planOp.run(\n {\n text,\n ...(targetIds.length > 0 ? { targetIds } : {}),\n ...(sessionKey ? { sessionKey } : {}),\n ...(namespace ? { namespace } : {}),\n },\n { service, authenticatedPrincipal: principal },\n )) as { result: unknown };\n console.log(JSON.stringify(planOutput.result, null, 2));\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 if (args.command === \"decision\") {\n await runDecision(args, options.preferredId);\n return;\n }\n if (args.command === \"architecture\") {\n await runArchitecture(args, options.preferredId);\n return;\n }\n if (args.command === \"delta\") {\n await runDelta(args, options.preferredId);\n return;\n }\n if (args.command === \"correct\") {\n await runCorrect(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"]}
|