@remnic/core 9.69.100 → 9.69.101
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 +31 -30
- package/dist/access-authorization-probe.js +32 -31
- package/dist/access-boundary.js +31 -30
- package/dist/access-cli.js +83 -82
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +31 -30
- package/dist/access-http-briefing.js +32 -31
- package/dist/access-http-query.js +33 -32
- package/dist/access-http.js +50 -49
- package/dist/access-identity-continuity-surface.js +31 -30
- package/dist/access-lcm-surface.js +31 -30
- package/dist/access-mcp.js +40 -39
- package/dist/access-namespace-preflight.js +31 -30
- package/dist/access-observe-write-category.js +7 -7
- package/dist/access-observe-write-surface.js +31 -30
- package/dist/access-offline-manifest.js +6 -6
- package/dist/access-operations-batch.js +32 -31
- package/dist/access-operations.js +39 -38
- package/dist/access-recall-concurrency.js +31 -30
- package/dist/access-recall-response.js +31 -30
- package/dist/access-recall-surface.js +31 -30
- package/dist/access-schema.js +6 -6
- package/dist/access-service.js +31 -30
- package/dist/access-surface-catalog.js +33 -32
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +16 -15
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +4 -4
- package/dist/adapters/registry.js +2 -2
- package/dist/briefing.js +12 -11
- package/dist/causal-consolidation.js +13 -12
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-TVQZAQPE.js → chunk-3DNTFZAT.js} +2 -2
- package/dist/{chunk-SFSD5Q6O.js → chunk-3LMOJXZR.js} +2 -2
- package/dist/{chunk-RPVHRZ5C.js → chunk-4LNCLZNK.js} +2 -2
- package/dist/{chunk-53X6CL3A.js → chunk-4MP2Q2EI.js} +3 -3
- package/dist/{chunk-NJW2ZG64.js → chunk-4OXXDL3X.js} +2 -2
- package/dist/{chunk-ORVH5S7R.js → chunk-533RHNHB.js} +2 -2
- package/dist/{chunk-SZIJJGA2.js → chunk-5BVL2XUD.js} +14 -14
- package/dist/{chunk-5YR4UGF2.js → chunk-5K2ALMSZ.js} +2 -2
- package/dist/{chunk-KTG23JDX.js → chunk-5PHZSD75.js} +2 -2
- package/dist/{chunk-2KB7TTAP.js → chunk-64S6X4IU.js} +4 -4
- package/dist/{chunk-4I6PEEFA.js → chunk-6Z263Z3E.js} +2 -2
- package/dist/{chunk-NHFWYPXN.js → chunk-7AUIGOH4.js} +2 -2
- package/dist/{chunk-BCQU44UV.js → chunk-7OA4JWP5.js} +2 -2
- package/dist/{chunk-KICEAGKM.js → chunk-ABGM2BN4.js} +2 -2
- package/dist/{chunk-HGG63H3A.js → chunk-ARY6O3JN.js} +2 -2
- package/dist/{chunk-3MK4OYYH.js → chunk-CYG3K2T2.js} +4 -4
- package/dist/{chunk-YB5GVH36.js → chunk-CZN53OT5.js} +2 -2
- package/dist/{chunk-IAKC3KEJ.js → chunk-DBWNTLLI.js} +6 -6
- package/dist/{chunk-O57FCN42.js → chunk-DFPG47ET.js} +5 -5
- package/dist/{chunk-NI5MWLM3.js → chunk-DINOVGA5.js} +22 -22
- package/dist/{chunk-L3TZXELN.js → chunk-DSPWVQZ6.js} +3 -3
- package/dist/{chunk-I6B3S62A.js → chunk-F5MINS3R.js} +2 -2
- package/dist/{chunk-JWG43U5K.js → chunk-G3BW6SDE.js} +2 -2
- package/dist/{chunk-NWBYJ4VH.js → chunk-GNBZB43J.js} +2 -2
- package/dist/{chunk-CZ44FH45.js → chunk-HIHN4XHL.js} +3 -3
- package/dist/{chunk-37ZQYFX4.js → chunk-HVDEKJJR.js} +2 -2
- package/dist/{chunk-4GEBLO7S.js → chunk-IOYY6ROU.js} +5 -5
- package/dist/{chunk-DVSAMW5T.js → chunk-JNAOTN7B.js} +3 -3
- package/dist/{chunk-3QH4NT72.js → chunk-JTC3PBNH.js} +2 -2
- package/dist/{chunk-GLJNGCCM.js → chunk-KYLYXGKD.js} +2 -2
- package/dist/{chunk-RVBLCU5C.js → chunk-L6YCGS7I.js} +2 -2
- package/dist/{chunk-UEU5IURP.js → chunk-NM3BT2OH.js} +2 -2
- package/dist/{chunk-ZFTODDTX.js → chunk-O23QMYN4.js} +2 -2
- package/dist/{chunk-BCGMG2RD.js → chunk-OFFW73OZ.js} +2 -2
- package/dist/{chunk-HCPUVB7S.js → chunk-P3WRFSYF.js} +2 -2
- package/dist/{chunk-KO4X4WRJ.js → chunk-PEZAHDDU.js} +4 -4
- package/dist/{chunk-UGEFYQWU.js → chunk-PHBH74Q6.js} +2 -2
- package/dist/{chunk-R36IBI2M.js → chunk-PNVOKGAX.js} +2 -2
- package/dist/{chunk-PGJYLYPK.js → chunk-QCYUIZK2.js} +4 -4
- package/dist/{chunk-AEUMONCD.js → chunk-QSXEQPC4.js} +2 -2
- package/dist/{chunk-WTZQM74L.js → chunk-RFQT7IZO.js} +3 -3
- package/dist/{chunk-GDVORIFM.js → chunk-RP7RSENW.js} +2 -2
- package/dist/{chunk-RA3OID2N.js → chunk-RZXFXKWY.js} +2 -2
- package/dist/{chunk-CAKHZAXH.js → chunk-S5R77WHV.js} +2 -2
- package/dist/{chunk-DPG5HQLE.js → chunk-S7LWX2PQ.js} +4 -4
- package/dist/{chunk-KJKTDMAD.js → chunk-SBOCJ47I.js} +17 -17
- package/dist/{chunk-76LNUSS5.js → chunk-SF7CWSR6.js} +2 -2
- package/dist/{chunk-XWSUK5GL.js → chunk-T2YX56QI.js} +4 -4
- package/dist/{chunk-D5HQ3VEX.js → chunk-T3FMRLWQ.js} +4 -4
- package/dist/{chunk-WQUGCOKF.js → chunk-TFA6HPOA.js} +4 -4
- package/dist/{chunk-SCPHU3RW.js → chunk-UFIZRMQZ.js} +24 -27
- package/dist/chunk-UFIZRMQZ.js.map +1 -0
- package/dist/{chunk-76GQBIVX.js → chunk-UL7KDVLC.js} +7 -7
- package/dist/{chunk-JGXHQV5N.js → chunk-UYPQOASU.js} +2 -2
- package/dist/{chunk-XK6GP7QO.js → chunk-V3I4NLZP.js} +2 -2
- package/dist/{chunk-N4JZ7J2I.js → chunk-VPOAMPDD.js} +34 -34
- package/dist/{chunk-T7R5HI6A.js → chunk-VVYLVE6R.js} +1 -1
- package/dist/{chunk-VBNA2JEN.js → chunk-W5JQSVPZ.js} +2 -2
- package/dist/{chunk-M3N2TUZ7.js → chunk-WVEECBCG.js} +2 -2
- package/dist/chunk-X3724WL4.js +30 -0
- package/dist/chunk-X3724WL4.js.map +1 -0
- package/dist/{chunk-TK7G5ABN.js → chunk-X5TAWDRO.js} +2 -2
- package/dist/{chunk-42YP6FMP.js → chunk-XEATJBNB.js} +33 -33
- package/dist/{chunk-ACCOC6UM.js → chunk-ZGYLPCWN.js} +2 -2
- package/dist/cli.js +68 -67
- package/dist/coding/export-okf-codegraph.js +11 -10
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +12 -11
- package/dist/config.js +16 -15
- package/dist/connectors/codex-materialize-runner.js +12 -11
- package/dist/connectors/index.js +12 -11
- package/dist/convergence-refresh.js +14 -13
- package/dist/conversation-index/backend.js +2 -2
- package/dist/corpus-watermark.js +14 -13
- package/dist/deep-recall-http-glue.js +7 -7
- package/dist/entity-retrieval.js +12 -11
- package/dist/external-wiki-access.js +32 -31
- package/dist/extraction.js +12 -11
- package/dist/harmonic-retrieval.js +1 -1
- package/dist/index.js +93 -92
- package/dist/lcm/index.js +3 -3
- package/dist/location/index.js +14 -13
- package/dist/maintenance/memory-governance.js +12 -11
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +12 -11
- package/dist/maintenance/rebuild-memory-projection.js +13 -12
- package/dist/memory-browse-operations.js +32 -31
- package/dist/namespaces/migrate.js +13 -12
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.js +12 -11
- package/dist/offline-sync-changeset-generations.js +3 -3
- package/dist/offline-sync-digest-cache.d.ts +10 -0
- package/dist/offline-sync-digest-cache.d.ts.map +1 -0
- package/dist/offline-sync-digest-cache.js +8 -0
- package/dist/offline-sync-digest-cache.js.map +1 -0
- package/dist/offline-sync-embedding-generation.js +2 -2
- package/dist/offline-sync-snapshot-stream.js +6 -6
- package/dist/offline-sync.js +5 -5
- package/dist/operator-doctor-corpus.js +15 -14
- package/dist/operator-toolkit.js +25 -24
- package/dist/orchestration/maintenance.js +20 -19
- package/dist/orchestrator.js +83 -82
- package/dist/recall-navigation-operations.js +32 -31
- package/dist/recall-navigation.js +31 -30
- package/dist/resume-bundles.js +16 -15
- package/dist/search/factory.js +7 -7
- package/dist/search/index.js +7 -7
- package/dist/search/lancedb-backend.js +2 -2
- package/dist/search/meilisearch-backend.js +2 -2
- package/dist/search/orama-backend.js +2 -2
- package/dist/semantic-consolidation.js +13 -12
- package/dist/semantic-rule-promotion.js +12 -11
- package/dist/semantic-rule-verifier.js +12 -11
- package/dist/source-agent-qualifier.js +12 -11
- package/dist/standup/build.js +12 -11
- package/dist/storage.d.ts +5 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +11 -10
- package/dist/support-passport/index.js +34 -33
- package/dist/transfer/export-okf.js +12 -11
- package/dist/verified-recall.js +12 -11
- package/dist/who-knows-cli.js +13 -12
- package/dist/who-knows.js +12 -11
- package/package.json +2 -2
- package/src/offline-sync-digest-cache.ts +44 -0
- package/src/storage.ts +15 -37
- package/dist/chunk-SCPHU3RW.js.map +0 -1
- /package/dist/{chunk-TVQZAQPE.js.map → chunk-3DNTFZAT.js.map} +0 -0
- /package/dist/{chunk-SFSD5Q6O.js.map → chunk-3LMOJXZR.js.map} +0 -0
- /package/dist/{chunk-RPVHRZ5C.js.map → chunk-4LNCLZNK.js.map} +0 -0
- /package/dist/{chunk-53X6CL3A.js.map → chunk-4MP2Q2EI.js.map} +0 -0
- /package/dist/{chunk-NJW2ZG64.js.map → chunk-4OXXDL3X.js.map} +0 -0
- /package/dist/{chunk-ORVH5S7R.js.map → chunk-533RHNHB.js.map} +0 -0
- /package/dist/{chunk-SZIJJGA2.js.map → chunk-5BVL2XUD.js.map} +0 -0
- /package/dist/{chunk-5YR4UGF2.js.map → chunk-5K2ALMSZ.js.map} +0 -0
- /package/dist/{chunk-KTG23JDX.js.map → chunk-5PHZSD75.js.map} +0 -0
- /package/dist/{chunk-2KB7TTAP.js.map → chunk-64S6X4IU.js.map} +0 -0
- /package/dist/{chunk-4I6PEEFA.js.map → chunk-6Z263Z3E.js.map} +0 -0
- /package/dist/{chunk-NHFWYPXN.js.map → chunk-7AUIGOH4.js.map} +0 -0
- /package/dist/{chunk-BCQU44UV.js.map → chunk-7OA4JWP5.js.map} +0 -0
- /package/dist/{chunk-KICEAGKM.js.map → chunk-ABGM2BN4.js.map} +0 -0
- /package/dist/{chunk-HGG63H3A.js.map → chunk-ARY6O3JN.js.map} +0 -0
- /package/dist/{chunk-3MK4OYYH.js.map → chunk-CYG3K2T2.js.map} +0 -0
- /package/dist/{chunk-YB5GVH36.js.map → chunk-CZN53OT5.js.map} +0 -0
- /package/dist/{chunk-IAKC3KEJ.js.map → chunk-DBWNTLLI.js.map} +0 -0
- /package/dist/{chunk-O57FCN42.js.map → chunk-DFPG47ET.js.map} +0 -0
- /package/dist/{chunk-NI5MWLM3.js.map → chunk-DINOVGA5.js.map} +0 -0
- /package/dist/{chunk-L3TZXELN.js.map → chunk-DSPWVQZ6.js.map} +0 -0
- /package/dist/{chunk-I6B3S62A.js.map → chunk-F5MINS3R.js.map} +0 -0
- /package/dist/{chunk-JWG43U5K.js.map → chunk-G3BW6SDE.js.map} +0 -0
- /package/dist/{chunk-NWBYJ4VH.js.map → chunk-GNBZB43J.js.map} +0 -0
- /package/dist/{chunk-CZ44FH45.js.map → chunk-HIHN4XHL.js.map} +0 -0
- /package/dist/{chunk-37ZQYFX4.js.map → chunk-HVDEKJJR.js.map} +0 -0
- /package/dist/{chunk-4GEBLO7S.js.map → chunk-IOYY6ROU.js.map} +0 -0
- /package/dist/{chunk-DVSAMW5T.js.map → chunk-JNAOTN7B.js.map} +0 -0
- /package/dist/{chunk-3QH4NT72.js.map → chunk-JTC3PBNH.js.map} +0 -0
- /package/dist/{chunk-GLJNGCCM.js.map → chunk-KYLYXGKD.js.map} +0 -0
- /package/dist/{chunk-RVBLCU5C.js.map → chunk-L6YCGS7I.js.map} +0 -0
- /package/dist/{chunk-UEU5IURP.js.map → chunk-NM3BT2OH.js.map} +0 -0
- /package/dist/{chunk-ZFTODDTX.js.map → chunk-O23QMYN4.js.map} +0 -0
- /package/dist/{chunk-BCGMG2RD.js.map → chunk-OFFW73OZ.js.map} +0 -0
- /package/dist/{chunk-HCPUVB7S.js.map → chunk-P3WRFSYF.js.map} +0 -0
- /package/dist/{chunk-KO4X4WRJ.js.map → chunk-PEZAHDDU.js.map} +0 -0
- /package/dist/{chunk-UGEFYQWU.js.map → chunk-PHBH74Q6.js.map} +0 -0
- /package/dist/{chunk-R36IBI2M.js.map → chunk-PNVOKGAX.js.map} +0 -0
- /package/dist/{chunk-PGJYLYPK.js.map → chunk-QCYUIZK2.js.map} +0 -0
- /package/dist/{chunk-AEUMONCD.js.map → chunk-QSXEQPC4.js.map} +0 -0
- /package/dist/{chunk-WTZQM74L.js.map → chunk-RFQT7IZO.js.map} +0 -0
- /package/dist/{chunk-GDVORIFM.js.map → chunk-RP7RSENW.js.map} +0 -0
- /package/dist/{chunk-RA3OID2N.js.map → chunk-RZXFXKWY.js.map} +0 -0
- /package/dist/{chunk-CAKHZAXH.js.map → chunk-S5R77WHV.js.map} +0 -0
- /package/dist/{chunk-DPG5HQLE.js.map → chunk-S7LWX2PQ.js.map} +0 -0
- /package/dist/{chunk-KJKTDMAD.js.map → chunk-SBOCJ47I.js.map} +0 -0
- /package/dist/{chunk-76LNUSS5.js.map → chunk-SF7CWSR6.js.map} +0 -0
- /package/dist/{chunk-XWSUK5GL.js.map → chunk-T2YX56QI.js.map} +0 -0
- /package/dist/{chunk-D5HQ3VEX.js.map → chunk-T3FMRLWQ.js.map} +0 -0
- /package/dist/{chunk-WQUGCOKF.js.map → chunk-TFA6HPOA.js.map} +0 -0
- /package/dist/{chunk-76GQBIVX.js.map → chunk-UL7KDVLC.js.map} +0 -0
- /package/dist/{chunk-JGXHQV5N.js.map → chunk-UYPQOASU.js.map} +0 -0
- /package/dist/{chunk-XK6GP7QO.js.map → chunk-V3I4NLZP.js.map} +0 -0
- /package/dist/{chunk-N4JZ7J2I.js.map → chunk-VPOAMPDD.js.map} +0 -0
- /package/dist/{chunk-T7R5HI6A.js.map → chunk-VVYLVE6R.js.map} +0 -0
- /package/dist/{chunk-VBNA2JEN.js.map → chunk-W5JQSVPZ.js.map} +0 -0
- /package/dist/{chunk-M3N2TUZ7.js.map → chunk-WVEECBCG.js.map} +0 -0
- /package/dist/{chunk-TK7G5ABN.js.map → chunk-X5TAWDRO.js.map} +0 -0
- /package/dist/{chunk-42YP6FMP.js.map → chunk-XEATJBNB.js.map} +0 -0
- /package/dist/{chunk-ACCOC6UM.js.map → chunk-ZGYLPCWN.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -91,12 +91,12 @@ import {
|
|
|
91
91
|
runWorkProductStatusCliCommand,
|
|
92
92
|
runWorkProjectCliCommand,
|
|
93
93
|
runWorkTaskCliCommand
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-VPOAMPDD.js";
|
|
95
|
+
import "./chunk-54BGIBCR.js";
|
|
95
96
|
import "./chunk-H4CKS5B2.js";
|
|
96
97
|
import "./chunk-MMACM5G2.js";
|
|
97
|
-
import "./chunk-54BGIBCR.js";
|
|
98
98
|
import "./chunk-FXZTL7F7.js";
|
|
99
|
-
import "./chunk-
|
|
99
|
+
import "./chunk-ABGM2BN4.js";
|
|
100
100
|
import "./chunk-BV2TIZ4F.js";
|
|
101
101
|
import "./chunk-HDDRVXX4.js";
|
|
102
102
|
import "./chunk-PYHOAXTI.js";
|
|
@@ -105,40 +105,40 @@ import "./chunk-OZKVVUJB.js";
|
|
|
105
105
|
import "./chunk-2DL3OFLD.js";
|
|
106
106
|
import "./chunk-G4IAEX6D.js";
|
|
107
107
|
import "./chunk-2NLLXCJG.js";
|
|
108
|
-
import "./chunk-UP6MOYCB.js";
|
|
109
108
|
import "./chunk-765K3SAT.js";
|
|
110
|
-
import "./chunk-
|
|
111
|
-
import "./chunk-PYIFUBRK.js";
|
|
109
|
+
import "./chunk-UP6MOYCB.js";
|
|
112
110
|
import "./chunk-FGDKJJZS.js";
|
|
113
111
|
import "./chunk-AJVLDJU6.js";
|
|
114
|
-
import "./chunk-
|
|
112
|
+
import "./chunk-TBUEE7XF.js";
|
|
115
113
|
import "./chunk-SZDLX763.js";
|
|
114
|
+
import "./chunk-PYIFUBRK.js";
|
|
115
|
+
import "./chunk-DQTCGVFK.js";
|
|
116
|
+
import "./chunk-YLBE6PLR.js";
|
|
116
117
|
import "./chunk-IIFFC3RL.js";
|
|
117
118
|
import "./chunk-AXFWMRKI.js";
|
|
118
|
-
import "./chunk-
|
|
119
|
-
import "./chunk-
|
|
119
|
+
import "./chunk-3DNTFZAT.js";
|
|
120
|
+
import "./chunk-G2STTRYB.js";
|
|
120
121
|
import "./chunk-2524MOWK.js";
|
|
121
122
|
import "./chunk-HSSERO3E.js";
|
|
122
123
|
import "./chunk-NOUJNHWG.js";
|
|
123
|
-
import "./chunk-G2STTRYB.js";
|
|
124
124
|
import "./chunk-W3K3HITK.js";
|
|
125
125
|
import "./chunk-EBA5DA77.js";
|
|
126
|
-
import "./chunk-
|
|
126
|
+
import "./chunk-S5R77WHV.js";
|
|
127
127
|
import "./chunk-HL4DB7TO.js";
|
|
128
128
|
import "./chunk-OJP3N7UK.js";
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
129
|
+
import "./chunk-F5MINS3R.js";
|
|
130
|
+
import "./chunk-QSXEQPC4.js";
|
|
131
131
|
import "./chunk-PYYQCHJC.js";
|
|
132
132
|
import "./chunk-G7NYVKD6.js";
|
|
133
133
|
import "./chunk-AM4T6CHX.js";
|
|
134
134
|
import "./chunk-BTOHGPHC.js";
|
|
135
135
|
import "./chunk-2LA3H54D.js";
|
|
136
|
-
import "./chunk-
|
|
137
|
-
import "./chunk-
|
|
136
|
+
import "./chunk-UL7KDVLC.js";
|
|
137
|
+
import "./chunk-RFQT7IZO.js";
|
|
138
138
|
import "./chunk-KFY3SGN7.js";
|
|
139
|
-
import "./chunk-3T74IZB3.js";
|
|
140
139
|
import "./chunk-CMTINOFS.js";
|
|
141
|
-
import "./chunk-
|
|
140
|
+
import "./chunk-3T74IZB3.js";
|
|
141
|
+
import "./chunk-WVEECBCG.js";
|
|
142
142
|
import "./chunk-6UDLN4IA.js";
|
|
143
143
|
import "./chunk-KXRX7YC2.js";
|
|
144
144
|
import "./chunk-GGRRF4PZ.js";
|
|
@@ -151,7 +151,7 @@ import "./chunk-EZ25VE3G.js";
|
|
|
151
151
|
import "./chunk-44442YCH.js";
|
|
152
152
|
import "./chunk-AUDJPF4N.js";
|
|
153
153
|
import "./chunk-Y4Z4I6WK.js";
|
|
154
|
-
import "./chunk-
|
|
154
|
+
import "./chunk-JNAOTN7B.js";
|
|
155
155
|
import "./chunk-KJTKLXTH.js";
|
|
156
156
|
import "./chunk-2DQ2XREU.js";
|
|
157
157
|
import "./chunk-OKTXM5H4.js";
|
|
@@ -189,40 +189,40 @@ import "./chunk-UHESJ6TQ.js";
|
|
|
189
189
|
import "./chunk-27NO2KVB.js";
|
|
190
190
|
import "./chunk-KFZY2OFH.js";
|
|
191
191
|
import "./chunk-B32WYRXX.js";
|
|
192
|
-
import "./chunk-
|
|
192
|
+
import "./chunk-5BVL2XUD.js";
|
|
193
193
|
import "./chunk-V7IZKJI3.js";
|
|
194
194
|
import "./chunk-XW2T4QAW.js";
|
|
195
|
-
import "./chunk-
|
|
195
|
+
import "./chunk-64S6X4IU.js";
|
|
196
|
+
import "./chunk-7RKSJVOQ.js";
|
|
196
197
|
import "./chunk-HCAGBFE7.js";
|
|
197
198
|
import "./chunk-SI36RWC3.js";
|
|
198
199
|
import "./chunk-TB6CBZ5V.js";
|
|
199
200
|
import "./chunk-3JKYQBLC.js";
|
|
200
|
-
import "./chunk-7RKSJVOQ.js";
|
|
201
201
|
import "./chunk-NJAIR57U.js";
|
|
202
202
|
import "./chunk-ZSEFGDCI.js";
|
|
203
203
|
import "./chunk-P6P35FY4.js";
|
|
204
204
|
import "./chunk-3HSRWJTC.js";
|
|
205
|
-
import "./chunk-
|
|
206
|
-
import "./chunk-
|
|
207
|
-
import "./chunk-
|
|
205
|
+
import "./chunk-533RHNHB.js";
|
|
206
|
+
import "./chunk-KYLYXGKD.js";
|
|
207
|
+
import "./chunk-7AUIGOH4.js";
|
|
208
208
|
import "./chunk-SRT6SHVZ.js";
|
|
209
|
-
import "./chunk-
|
|
209
|
+
import "./chunk-QCYUIZK2.js";
|
|
210
210
|
import "./chunk-TE6S7KDF.js";
|
|
211
211
|
import "./chunk-EIB4FJVR.js";
|
|
212
212
|
import "./chunk-MZUQVWVC.js";
|
|
213
213
|
import "./chunk-A5KNZSNA.js";
|
|
214
214
|
import "./chunk-HUSTM6PU.js";
|
|
215
215
|
import "./chunk-D24OXEPB.js";
|
|
216
|
-
import "./chunk-
|
|
217
|
-
import "./chunk-
|
|
218
|
-
import "./chunk-
|
|
219
|
-
import "./chunk-
|
|
220
|
-
import "./chunk-
|
|
221
|
-
import "./chunk-
|
|
222
|
-
import "./chunk-
|
|
216
|
+
import "./chunk-DBWNTLLI.js";
|
|
217
|
+
import "./chunk-4LNCLZNK.js";
|
|
218
|
+
import "./chunk-ARY6O3JN.js";
|
|
219
|
+
import "./chunk-HIHN4XHL.js";
|
|
220
|
+
import "./chunk-GNBZB43J.js";
|
|
221
|
+
import "./chunk-RZXFXKWY.js";
|
|
222
|
+
import "./chunk-7OA4JWP5.js";
|
|
223
223
|
import "./chunk-7T4TOGMS.js";
|
|
224
224
|
import "./chunk-7YQ6ESEA.js";
|
|
225
|
-
import "./chunk-
|
|
225
|
+
import "./chunk-CYG3K2T2.js";
|
|
226
226
|
import "./chunk-SCXURCVT.js";
|
|
227
227
|
import "./chunk-EQWEIIKQ.js";
|
|
228
228
|
import "./chunk-HFOY2SBG.js";
|
|
@@ -233,24 +233,24 @@ import "./chunk-WHTMVTU4.js";
|
|
|
233
233
|
import "./chunk-JATHBCAV.js";
|
|
234
234
|
import "./chunk-ZQUVBZI4.js";
|
|
235
235
|
import "./chunk-5R627MYY.js";
|
|
236
|
-
import "./chunk-
|
|
237
|
-
import "./chunk-
|
|
236
|
+
import "./chunk-OFFW73OZ.js";
|
|
237
|
+
import "./chunk-UYPQOASU.js";
|
|
238
238
|
import "./chunk-AB3A7EFH.js";
|
|
239
239
|
import "./chunk-2FLFJTCI.js";
|
|
240
|
-
import "./chunk-
|
|
240
|
+
import "./chunk-PHBH74Q6.js";
|
|
241
241
|
import "./chunk-2BPPGNAQ.js";
|
|
242
242
|
import "./chunk-DJSJ4ULL.js";
|
|
243
|
-
import "./chunk-
|
|
244
|
-
import "./chunk-
|
|
243
|
+
import "./chunk-CZN53OT5.js";
|
|
244
|
+
import "./chunk-DINOVGA5.js";
|
|
245
245
|
import "./chunk-W4F3C7N7.js";
|
|
246
246
|
import "./chunk-MPC7TYTZ.js";
|
|
247
247
|
import "./chunk-ZHXSOMYH.js";
|
|
248
248
|
import "./chunk-IFBSZGW3.js";
|
|
249
|
-
import "./chunk-OGXXGHW6.js";
|
|
250
249
|
import "./chunk-EQUD7FP4.js";
|
|
251
250
|
import "./chunk-VQ7B2Q6M.js";
|
|
251
|
+
import "./chunk-OGXXGHW6.js";
|
|
252
|
+
import "./chunk-W5JQSVPZ.js";
|
|
252
253
|
import "./chunk-PJSK6OJM.js";
|
|
253
|
-
import "./chunk-VBNA2JEN.js";
|
|
254
254
|
import "./chunk-GNVZQ5JN.js";
|
|
255
255
|
import "./chunk-YN2UN7N3.js";
|
|
256
256
|
import "./chunk-ROBHL3GL.js";
|
|
@@ -272,8 +272,8 @@ import "./chunk-H7XKCNR6.js";
|
|
|
272
272
|
import "./chunk-32HO62I4.js";
|
|
273
273
|
import "./chunk-SOBJ6NEY.js";
|
|
274
274
|
import "./chunk-QPWUG2S3.js";
|
|
275
|
-
import "./chunk-
|
|
276
|
-
import "./chunk-
|
|
275
|
+
import "./chunk-PNVOKGAX.js";
|
|
276
|
+
import "./chunk-4MP2Q2EI.js";
|
|
277
277
|
import "./chunk-E6UNM67F.js";
|
|
278
278
|
import "./chunk-6WHJ2EAB.js";
|
|
279
279
|
import "./chunk-AQEJKOKI.js";
|
|
@@ -284,7 +284,7 @@ import "./chunk-JZ66PN72.js";
|
|
|
284
284
|
import "./chunk-OGZC2WUX.js";
|
|
285
285
|
import "./chunk-2YA5N2BY.js";
|
|
286
286
|
import "./chunk-HWLIMQE2.js";
|
|
287
|
-
import "./chunk-
|
|
287
|
+
import "./chunk-VVYLVE6R.js";
|
|
288
288
|
import "./chunk-EI6V5UXY.js";
|
|
289
289
|
import "./chunk-QAIKLICT.js";
|
|
290
290
|
import "./chunk-WL7N5VGG.js";
|
|
@@ -308,12 +308,12 @@ import "./chunk-HRATODNO.js";
|
|
|
308
308
|
import "./chunk-UFGFMWAD.js";
|
|
309
309
|
import "./chunk-BMWN7B3Y.js";
|
|
310
310
|
import "./chunk-JNLEJE4A.js";
|
|
311
|
-
import "./chunk-
|
|
312
|
-
import "./chunk-
|
|
313
|
-
import "./chunk-
|
|
314
|
-
import "./chunk-
|
|
311
|
+
import "./chunk-ZGYLPCWN.js";
|
|
312
|
+
import "./chunk-O23QMYN4.js";
|
|
313
|
+
import "./chunk-DSPWVQZ6.js";
|
|
314
|
+
import "./chunk-P3WRFSYF.js";
|
|
315
315
|
import "./chunk-ZY2MNJR6.js";
|
|
316
|
-
import "./chunk-
|
|
316
|
+
import "./chunk-4OXXDL3X.js";
|
|
317
317
|
import "./chunk-3UXOZBHV.js";
|
|
318
318
|
import "./chunk-PIWFNPQT.js";
|
|
319
319
|
import "./chunk-5FAGCOZD.js";
|
|
@@ -322,7 +322,7 @@ import "./chunk-2LSZVONP.js";
|
|
|
322
322
|
import "./chunk-DEUNUKTD.js";
|
|
323
323
|
import "./chunk-LXY5VVGM.js";
|
|
324
324
|
import "./chunk-GKCXTSFF.js";
|
|
325
|
-
import "./chunk-
|
|
325
|
+
import "./chunk-5K2ALMSZ.js";
|
|
326
326
|
import "./chunk-6JMQR72P.js";
|
|
327
327
|
import "./chunk-S533KGX6.js";
|
|
328
328
|
import "./chunk-R2TVWQLR.js";
|
|
@@ -348,25 +348,26 @@ import "./chunk-236PXYG7.js";
|
|
|
348
348
|
import "./chunk-ZCUTSMR2.js";
|
|
349
349
|
import "./chunk-QDW3E4RD.js";
|
|
350
350
|
import "./chunk-B3O3IRZN.js";
|
|
351
|
-
import "./chunk-
|
|
352
|
-
import "./chunk-UHVXE24Y.js";
|
|
351
|
+
import "./chunk-UFIZRMQZ.js";
|
|
353
352
|
import "./chunk-46WM6JX2.js";
|
|
353
|
+
import "./chunk-UHVXE24Y.js";
|
|
354
354
|
import "./chunk-V4JZCTMK.js";
|
|
355
|
-
import "./chunk-
|
|
356
|
-
import "./chunk-
|
|
355
|
+
import "./chunk-3LMOJXZR.js";
|
|
356
|
+
import "./chunk-DFPG47ET.js";
|
|
357
357
|
import "./chunk-7VO6E5UD.js";
|
|
358
358
|
import "./chunk-5BUCKFRE.js";
|
|
359
|
-
import "./chunk-
|
|
360
|
-
import "./chunk-
|
|
359
|
+
import "./chunk-S7LWX2PQ.js";
|
|
360
|
+
import "./chunk-T2YX56QI.js";
|
|
361
361
|
import "./chunk-CYEPCZN5.js";
|
|
362
|
-
import "./chunk-
|
|
363
|
-
import "./chunk-GUMZC2BO.js";
|
|
362
|
+
import "./chunk-T3FMRLWQ.js";
|
|
364
363
|
import "./chunk-4O6WRBGE.js";
|
|
365
|
-
import "./chunk-
|
|
364
|
+
import "./chunk-GUMZC2BO.js";
|
|
365
|
+
import "./chunk-TFA6HPOA.js";
|
|
366
|
+
import "./chunk-F4TWWUMP.js";
|
|
366
367
|
import "./chunk-72A4L5JJ.js";
|
|
367
368
|
import "./chunk-A7Q43EUZ.js";
|
|
368
|
-
import "./chunk-F4TWWUMP.js";
|
|
369
369
|
import "./chunk-S2V7RUCL.js";
|
|
370
|
+
import "./chunk-X3724WL4.js";
|
|
370
371
|
import "./chunk-MRPOZBJC.js";
|
|
371
372
|
import "./chunk-S2HLHAZ4.js";
|
|
372
373
|
import "./chunk-DM2T26WE.js";
|
|
@@ -412,13 +413,13 @@ import "./chunk-Z7L72ZHL.js";
|
|
|
412
413
|
import "./chunk-4O4TKIXQ.js";
|
|
413
414
|
import "./chunk-RMMA44HE.js";
|
|
414
415
|
import "./chunk-SYOIVK7K.js";
|
|
415
|
-
import "./chunk-
|
|
416
|
+
import "./chunk-X5TAWDRO.js";
|
|
416
417
|
import "./chunk-MY7B3HYC.js";
|
|
417
418
|
import "./chunk-353C5UNV.js";
|
|
418
419
|
import "./chunk-5AYUHSAU.js";
|
|
419
420
|
import "./chunk-BT7NVCML.js";
|
|
420
421
|
import "./chunk-PO7NXNGC.js";
|
|
421
|
-
import "./chunk-
|
|
422
|
+
import "./chunk-G3BW6SDE.js";
|
|
422
423
|
import "./chunk-KQAFEZQX.js";
|
|
423
424
|
import "./chunk-WEHSQBFR.js";
|
|
424
425
|
import "./chunk-X7Y7WX73.js";
|
|
@@ -429,7 +430,7 @@ import "./chunk-SOAU2OE2.js";
|
|
|
429
430
|
import "./chunk-BJMBJZ2Y.js";
|
|
430
431
|
import "./chunk-UKJAGEXH.js";
|
|
431
432
|
import "./chunk-FP2373TW.js";
|
|
432
|
-
import "./chunk-
|
|
433
|
+
import "./chunk-V3I4NLZP.js";
|
|
433
434
|
import "./chunk-N7QV3CMX.js";
|
|
434
435
|
import "./chunk-PAAJWQH5.js";
|
|
435
436
|
import "./chunk-2JRB3Z5N.js";
|
|
@@ -447,15 +448,15 @@ import "./chunk-C7HJ3NEI.js";
|
|
|
447
448
|
import "./chunk-N4PYB235.js";
|
|
448
449
|
import "./chunk-AW4QUFQF.js";
|
|
449
450
|
import "./chunk-5FVVY2EB.js";
|
|
450
|
-
import "./chunk-
|
|
451
|
+
import "./chunk-SBOCJ47I.js";
|
|
451
452
|
import "./chunk-UI3NYK34.js";
|
|
452
453
|
import "./chunk-3E6DGSGZ.js";
|
|
453
|
-
import "./chunk-3QH4NT72.js";
|
|
454
|
-
import "./chunk-KO4X4WRJ.js";
|
|
455
|
-
import "./chunk-TYT4TEQV.js";
|
|
456
|
-
import "./chunk-ANPRNTPT.js";
|
|
457
454
|
import "./chunk-EFHNFTWB.js";
|
|
455
|
+
import "./chunk-JTC3PBNH.js";
|
|
456
|
+
import "./chunk-PEZAHDDU.js";
|
|
457
|
+
import "./chunk-TYT4TEQV.js";
|
|
458
458
|
import "./chunk-GCGJW34D.js";
|
|
459
|
+
import "./chunk-ANPRNTPT.js";
|
|
459
460
|
import "./chunk-75PT4N7Q.js";
|
|
460
461
|
import "./chunk-UCPGOUDZ.js";
|
|
461
462
|
import "./chunk-LQWOFU6L.js";
|
|
@@ -24,25 +24,26 @@ import "../chunk-FEHIOYML.js";
|
|
|
24
24
|
import "../chunk-P32IDSHD.js";
|
|
25
25
|
import {
|
|
26
26
|
StorageManager
|
|
27
|
-
} from "../chunk-
|
|
28
|
-
import "../chunk-UHVXE24Y.js";
|
|
27
|
+
} from "../chunk-UFIZRMQZ.js";
|
|
29
28
|
import "../chunk-46WM6JX2.js";
|
|
29
|
+
import "../chunk-UHVXE24Y.js";
|
|
30
30
|
import "../chunk-V4JZCTMK.js";
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
31
|
+
import "../chunk-3LMOJXZR.js";
|
|
32
|
+
import "../chunk-DFPG47ET.js";
|
|
33
33
|
import "../chunk-7VO6E5UD.js";
|
|
34
34
|
import "../chunk-5BUCKFRE.js";
|
|
35
|
-
import "../chunk-
|
|
36
|
-
import "../chunk-
|
|
35
|
+
import "../chunk-S7LWX2PQ.js";
|
|
36
|
+
import "../chunk-T2YX56QI.js";
|
|
37
37
|
import "../chunk-CYEPCZN5.js";
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-GUMZC2BO.js";
|
|
38
|
+
import "../chunk-T3FMRLWQ.js";
|
|
40
39
|
import "../chunk-4O6WRBGE.js";
|
|
41
|
-
import "../chunk-
|
|
40
|
+
import "../chunk-GUMZC2BO.js";
|
|
41
|
+
import "../chunk-TFA6HPOA.js";
|
|
42
|
+
import "../chunk-F4TWWUMP.js";
|
|
42
43
|
import "../chunk-72A4L5JJ.js";
|
|
43
44
|
import "../chunk-A7Q43EUZ.js";
|
|
44
|
-
import "../chunk-F4TWWUMP.js";
|
|
45
45
|
import "../chunk-S2V7RUCL.js";
|
|
46
|
+
import "../chunk-X3724WL4.js";
|
|
46
47
|
import "../chunk-MRPOZBJC.js";
|
|
47
48
|
import "../chunk-S2HLHAZ4.js";
|
|
48
49
|
import "../chunk-DM2T26WE.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/coding/export-okf-codegraph.ts"],"sourcesContent":["/**\n * Codegraph OKF projection (issue #1950).\n *\n * Read-only projection of one project's code-graph SQLite store into an\n * OKF v0.1 knowledge bundle: the stored architecture card, decision\n * records, and one `Code Module` concept per indexed source file with its\n * symbols and outgoing edges. The store is NEVER opened for write — the\n * SQLite file is opened `readonly`, so an export cannot mutate indexing\n * state and the file's bytes are stable across runs.\n *\n * Rendering discipline mirrors architecture-card.ts (rule 38): byte-stable\n * output for an unchanged graph; every list is sorted with a total order.\n * Shared bundle mechanics come from ../okf/render.ts (one source of truth\n * with the memory exporter, issue #1948).\n */\nimport { existsSync, readdirSync, rmSync, statSync } from \"node:fs\";\nimport { mkdtemp } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { lintOkfDir } from \"../okf/lint.js\";\nimport {\n OKF_ARCHITECTURE_CARD_TYPE,\n OKF_CODE_MODULE_TYPE,\n OKF_DECISION_RECORD_TYPE,\n} from \"../okf/type-mapping.js\";\nimport {\n OKF_EXPORT_VERSION,\n publishBundle,\n renderFrontmatter,\n rejectSymlinkPath,\n writeBundleFile,\n} from \"../okf/render.js\";\nimport { openBetterSqlite3 } from \"../runtime/better-sqlite.js\";\nimport { StorageManager, stripAttributesSuffix } from \"../storage.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport { findArchitectureCardMemory, type ArchitectureSurfaceStorage } from \"./architecture-surfaces.js\";\nimport {\n CodegraphRuntimeError,\n codegraphSurfaceVisible,\n listCodegraphProjects,\n resolveCodegraphDbPath,\n} from \"./codegraph-runtime.js\";\nimport { defaultGitInvoker, normalizeOriginUrl } from \"./git-context.js\";\nimport { projectNamespaceName } from \"./coding-namespace.js\";\nimport {\n ACTIVE_DECISION_STATUSES,\n DECISION_STATUSES,\n parseDecisionRecord,\n type DecisionRecord,\n} from \"./decision-records.js\";\nimport { buildCodingGraphInstallHint, isCodingGraphInstalled } from \"./optional-coding-graph.js\";\n\n/** Default cap on rendered module concepts (`--max-module-concepts`). */\nexport const DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS = 500;\n\n/**\n * Visible marker written into the root index when module concepts were\n * truncated (mirrors `ARCHITECTURE_CARD_TRUNCATION_MARKER` — never\n * silently incomplete).\n */\nexport const OKF_CODEGRAPH_TRUNCATION_MARKER = \"<!-- okf-codegraph-truncated -->\";\n\nexport type OkfCodegraphSymbolFilter = \"none\" | \"exported\" | \"all\";\n\nconst SYMBOL_FILTERS: readonly OkfCodegraphSymbolFilter[] = [\"none\", \"exported\", \"all\"];\n\nexport function parseOkfCodegraphSymbolFilter(raw: unknown): OkfCodegraphSymbolFilter {\n const value = typeof raw === \"string\" ? raw.trim().toLowerCase() : \"\";\n if (value.length === 0) return \"exported\";\n if ((SYMBOL_FILTERS as readonly string[]).includes(value)) return value as OkfCodegraphSymbolFilter;\n throw new Error(`invalid --symbols ${String(raw)}; allowed: ${SYMBOL_FILTERS.join(\", \")}`);\n}\n\nexport interface ExportOkfCodegraphOptions {\n readonly config: PluginConfig;\n readonly memoryDir: string;\n /** Store owner; defaults to `\"default\"` like the access-service principal key. */\n readonly principal?: string;\n readonly projectId: string;\n readonly outDir: string;\n /**\n * Working directory used to resolve git context (repo root, origin URL).\n * Defaults to `process.cwd()`.\n */\n readonly cwd?: string;\n readonly maxModuleConcepts?: number;\n readonly symbols?: OkfCodegraphSymbolFilter;\n /** Default ON; pass `false` for `--no-include-adrs`. */\n readonly includeAdrs?: boolean;\n readonly force?: boolean;\n /**\n * Namespace holding the project's decision records + architecture card.\n * Defaults to the project-scope coding namespace for the project id.\n */\n readonly namespace?: string;\n}\n\nexport interface ExportOkfCodegraphResult {\n readonly projectId: string;\n readonly moduleConcepts: number;\n readonly moduleFilesInGraph: number;\n readonly truncated: boolean;\n readonly decisions: number;\n readonly architectureCard: boolean;\n}\n\ninterface GraphFileRow {\n readonly id: number;\n readonly path: string;\n readonly lang: string;\n}\n\ninterface GraphNodeRow {\n readonly name: string;\n readonly label: string;\n readonly file_id: number;\n readonly span_start: number;\n readonly span_end: number;\n readonly is_exported: number;\n}\n\ninterface GraphEdgeRow {\n readonly type: string;\n readonly confidence: number;\n readonly src_file_id: number;\n readonly dst_file_id: number;\n readonly dst_name: string;\n readonly dst_path: string;\n}\n\nexport async function exportCodegraphOkfBundle(\n opts: ExportOkfCodegraphOptions,\n): Promise<ExportOkfCodegraphResult> {\n if (!codegraphSurfaceVisible(opts.config)) {\n throw new CodegraphRuntimeError(\n \"disabled\",\n \"codegraph tools are disabled (codingKnowledge.enabled or codingKnowledge.codegraphTools is false)\",\n );\n }\n if (!(await isCodingGraphInstalled())) {\n throw new CodegraphRuntimeError(\"package_missing\", buildCodingGraphInstallHint());\n }\n const principal = opts.principal?.trim() || \"default\";\n const projectId = opts.projectId.trim();\n if (projectId.length === 0) {\n throw new CodegraphRuntimeError(\n \"project_required\",\n \"codegraph export-okf requires --project (or a cwd inside the project's git repo)\",\n );\n }\n rejectSymlinkPath(path.resolve(opts.outDir));\n // Explicit option validation (config-coercion footgun): honor the given\n // value or fail loudly — never silently default a bad input. `0` is a\n // legitimate \"no module concepts\" cap and is honored.\n const maxModules = opts.maxModuleConcepts ?? DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS;\n if (!Number.isInteger(maxModules) || maxModules < 0) {\n throw new Error(\n `invalid --max-module-concepts ${String(opts.maxModuleConcepts)}; must be a non-negative integer`,\n );\n }\n const dbPath = resolveCodegraphDbPath({ config: opts.config, memoryDir: opts.memoryDir, principal, projectId });\n if (!existsSync(dbPath)) {\n const known = listCodegraphProjects({\n config: opts.config,\n memoryDir: opts.memoryDir,\n principal,\n listDir: (dir) => {\n try {\n return readdirSync(dir);\n } catch {\n return [];\n }\n },\n });\n throw new CodegraphRuntimeError(\n \"project_not_found\",\n `no codegraph store for project '${projectId}' (principal '${principal}'); known projects: ${\n known.length > 0 ? known.join(\", \") : \"(none)\"\n }`,\n );\n }\n\n // Read the graph through a readonly handle — bytes on disk are never\n // touched, and the store cache (write-mode handles) is bypassed entirely.\n const graphIndexedAt = statSync(dbPath).mtime.toISOString();\n const db = openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n let files: GraphFileRow[];\n let nodes: GraphNodeRow[];\n let edges: GraphEdgeRow[];\n try {\n files = db.prepare(\"SELECT id, path, lang FROM files ORDER BY path ASC\").all() as GraphFileRow[];\n nodes = db\n .prepare(\n `SELECT n.name, n.label, n.file_id, n.span_start, n.span_end,\n COALESCE(na.is_exported, 0) AS is_exported\n FROM nodes n LEFT JOIN node_attributes na ON na.node_id = n.id`,\n )\n .all() as GraphNodeRow[];\n edges = db\n .prepare(\n `SELECT e.type, e.confidence, s.file_id AS src_file_id, d.file_id AS dst_file_id,\n d.name AS dst_name, df.path AS dst_path\n FROM edges e\n JOIN nodes s ON s.id = e.src\n JOIN nodes d ON d.id = e.dst\n JOIN files df ON d.file_id = df.id`,\n )\n .all() as GraphEdgeRow[];\n } finally {\n db.close();\n }\n\n // Trust boundary: file paths come from the indexed graph. Reject anything\n // that is not a strict repo-relative POSIX path so a hostile row cannot\n // escape the staging directory via writeBundleFile's path.join.\n const safeFiles = files.filter(\n (f) => f.path.length > 0 && !f.path.startsWith(\"/\") && !f.path.split(\"/\").includes(\"..\"),\n );\n const fileIdToPath = new Map<number, string>(safeFiles.map((f) => [f.id, f.path]));\n const nodesByFile = new Map<number, GraphNodeRow[]>();\n for (const node of nodes) {\n if (!fileIdToPath.has(node.file_id)) continue;\n const list = nodesByFile.get(node.file_id) ?? [];\n list.push(node);\n nodesByFile.set(node.file_id, list);\n }\n\n // Deterministic truncation: most symbols first, path ascending as the\n // tie-break (issue acceptance: cap of 1 keeps the highest-symbol file).\n const ranked = [...safeFiles].sort((a, b) => {\n const aCount = (nodesByFile.get(a.id) ?? []).length;\n const bCount = (nodesByFile.get(b.id) ?? []).length;\n if (aCount !== bCount) return bCount - aCount;\n return a.path.localeCompare(b.path);\n });\n const keptFiles = ranked.slice(0, maxModules);\n const keptPaths = new Set<string>(keptFiles.map((f) => f.path));\n const truncated = safeFiles.length > keptFiles.length;\n\n const symbolFilter = parseOkfCodegraphSymbolFilter(opts.symbols);\n const git = await resolveGitHints(opts.cwd ?? process.cwd());\n const staging = await mkdtemp(path.join(os.tmpdir(), \"remnic-okf-codegraph-\"));\nlet decisions = 0;\nlet architectureCard = false;\ntry {\n const namespace = opts.namespace?.trim() || projectNamespaceName(projectId);\n const namespaceDir = path.join(opts.memoryDir, \"namespaces\", namespace);\n if (opts.includeAdrs !== false && existsSync(namespaceDir)) {\n const storage = new StorageManager(namespaceDir);\n const memories = await storage.readAllMemories();\n // Architecture card — reuse the surface's classification (rule 53).\n const card = await findArchitectureCardMemory(readOnlyCardStorage(storage, namespaceDir, namespace));\n if (card) {\n architectureCard = true;\n writeBundleFile(\n staging,\n \"architecture.md\",\n renderFrontmatter({\n type: OKF_ARCHITECTURE_CARD_TYPE,\n title: git.repoName,\n ...(git.originUrl ? { resource: git.originUrl } : git.repoRoot ? { resource: git.repoRoot } : {}),\n timestamp: card.frontmatter.updated ?? card.frontmatter.created,\n }) +\n stripAttributesSuffix(card.content.replace(/^\\uFEFF/, \"\")).trimEnd() +\n \"\\n\",\n );\n }\n const records: Array<{ record: DecisionRecord; timestamp: string }> = [];\n for (const memory of memories) {\n if (memory.frontmatter.category !== \"decision\") continue;\n try {\n const parsed = parseDecisionRecord(memory.content);\n records.push({\n // Production writes leave the ADR frontmatter id empty and use\n // the memory id as the canonical identifier (decisionRecord\n // surface path) — prefer the ADR id, fall back to the memory id.\n record: parsed.id ? parsed : { ...parsed, id: memory.frontmatter.id },\n timestamp: memory.frontmatter.updated ?? memory.frontmatter.created,\n });\n } catch {\n // Unparseable decision bodies are skipped, mirroring the surface's\n // safeParseDecisionRecord degradation.\n }\n }\n records.sort((a, b) => a.record.title.localeCompare(b.record.title));\n decisions = records.length;\n for (const { record, timestamp } of records) {\n writeBundleFile(staging, `decisions/${decisionFileStem(record)}.md`, renderDecision(record, timestamp));\n }\n if (records.length > 0 || architectureCard) {\n writeBundleFile(staging, \"decisions/index.md\", renderDecisionsIndex(records));\n }\n }\n\n for (const file of keptFiles) {\n writeBundleFile(\n staging,\n `modules/${file.path}.md`,\n renderModule(\n file,\n nodesByFile.get(file.id) ?? [],\n edges,\n fileIdToPath,\n keptPaths,\n symbolFilter,\n git,\n graphIndexedAt,\n ),\n );\n }\n if (keptFiles.length > 0) {\n writeBundleFile(staging, \"modules/index.md\", renderModulesIndex(keptFiles));\n }\n writeBundleFile(\n staging,\n \"index.md\",\n renderRootIndex(git.repoName, projectId, architectureCard, decisions, keptFiles, safeFiles, truncated),\n );\n\n // Self-validate with the #1946 conformance checker; non-conformant\n // output fails the command. Reserved basenames (the bundle's own\n // index.md files) are the documented exemption, as in the memory export.\n const lint = lintOkfDir(staging);\n const blocking = lint.findings.filter((f) => f.code !== \"skipped_encrypted\" && f.code !== \"reserved_basename\");\n if (blocking.length > 0) {\n throw new Error(`OKF codegraph export failed lint: ${blocking.map((f) => `${f.file}: ${f.message}`).join(\"; \")}`);\n }\n publishBundle(staging, path.resolve(opts.outDir), opts.force === true);\n } catch (err) {\n rmSync(staging, { recursive: true, force: true });\n throw err;\n }\n return {\n projectId,\n moduleConcepts: keptFiles.length,\n moduleFilesInGraph: safeFiles.length,\n truncated,\n decisions,\n architectureCard,\n };\n}\n\n/**\n * Read-only adapter over the namespace StorageManager for\n * {@link findArchitectureCardMemory} — write arms throw so a future edit\n * cannot silently turn the exporter into a mutating surface.\n */\nfunction readOnlyCardStorage(\n storage: StorageManager,\n dir: string,\n namespace: string,\n): ArchitectureSurfaceStorage {\n return {\n dir,\n namespace,\n readAllMemories: () => storage.readAllMemories(),\n updateMemory: () => {\n throw new Error(\"codegraph export-okf is read-only\");\n },\n writeSealedMemory: () => {\n throw new Error(\"codegraph export-okf is read-only\");\n },\n };\n}\n\ninterface GitHints {\n readonly repoRoot: string | null;\n readonly repoName: string;\n readonly originUrl: string | null;\n}\n\nasync function resolveGitHints(cwd: string): Promise<GitHints> {\n try {\n const invoker = defaultGitInvoker();\n const topLevel = await invoker(cwd, [\"rev-parse\", \"--show-toplevel\"]);\n if (topLevel.exitCode !== 0) {\n return { repoRoot: null, repoName: \"codegraph\", originUrl: null };\n }\n const repoRoot = topLevel.stdout.trim();\n const origin = await invoker(repoRoot, [\"remote\", \"get-url\", \"origin\"]);\n const originUrl = origin.exitCode === 0 ? normalizeOriginUrl(origin.stdout) : null;\n return {\n repoRoot: repoRoot || null,\n repoName: (repoRoot && path.basename(repoRoot)) || \"codegraph\",\n originUrl: originUrl && originUrl.length > 0 ? originUrl : null,\n };\n } catch {\n return { repoRoot: null, repoName: \"codegraph\", originUrl: null };\n }\n}\n\nfunction moduleResource(git: GitHints, filePath: string): string {\n if (git.originUrl) return `${git.originUrl}/${filePath}`;\n if (git.repoRoot) return path.join(git.repoRoot, filePath);\n return filePath;\n}\n\nfunction confidenceTier(confidence: number): string {\n if (confidence >= 0.9) return \"high\";\n if (confidence >= 0.5) return \"medium\";\n return \"low\";\n}\n\nfunction decisionFileStem(record: Pick<DecisionRecord, \"id\">): string {\n const safe = record.id.replace(/[^A-Za-z0-9._-]+/g, \"_\");\n return safe.length > 0 ? safe : \"decision\";\n}\n\nfunction renderModule(\n file: GraphFileRow,\n fileNodes: readonly GraphNodeRow[],\n edges: readonly GraphEdgeRow[],\n fileIdToPath: ReadonlyMap<number, string>,\n keptPaths: ReadonlySet<string>,\n symbolFilter: OkfCodegraphSymbolFilter,\n git: GitHints,\n graphIndexedAt: string,\n): string {\n const visible =\n symbolFilter === \"all\"\n ? [...fileNodes]\n : symbolFilter === \"exported\"\n ? fileNodes.filter((n) => n.is_exported === 1)\n : [];\n visible.sort((a, b) => (a.name !== b.name ? a.name.localeCompare(b.name) : a.span_start - b.span_start));\n const outEdges = edges\n .filter((e) => e.src_file_id === file.id && fileIdToPath.get(e.src_file_id) === file.path)\n .map((e) => ({\n type: e.type,\n verb: e.type.toLowerCase(),\n dstPath: e.dst_path,\n dstName: e.dst_name,\n tier: confidenceTier(e.confidence),\n }))\n .sort((a, b) =>\n a.type !== b.type\n ? a.type.localeCompare(b.type)\n : a.dstPath !== b.dstPath\n ? a.dstPath.localeCompare(b.dstPath)\n : a.dstName.localeCompare(b.dstName),\n );\n const fields: Record<string, unknown> = {\n type: OKF_CODE_MODULE_TYPE,\n title: file.path,\n description: `${fileNodes.length} symbols, ${file.lang}`,\n resource: moduleResource(git, file.path),\n tags: [file.lang],\n timestamp: graphIndexedAt,\n };\n let body = \"\";\n if (symbolFilter !== \"none\") {\n const rows = visible.map((n) => `| ${n.name} | ${n.label} | ${n.span_start}-${n.span_end} |`).join(\"\\n\");\n body += `# Symbols\\n\\n| Name | Kind | Span (bytes) |\\n|---|---|---|\\n${rows}\\n\\n`;\n }\n if (outEdges.length > 0) {\n const lines = outEdges.map((e) => {\n // Broken links (target truncated out of the bundle) are legal per OKF\n // §5.3 — the link records the relationship regardless of target presence.\n const href = `/modules/${e.dstPath}.md`;\n const label = e.verb === \"calls\" ? `${e.dstName}() in ${e.dstPath}` : e.dstPath;\n const broken = keptPaths.has(e.dstPath) ? \"\" : \" (link target not exported)\";\n return `- ${e.verb}: [${label}](${href}) (confidence: ${e.tier})${broken}`;\n });\n body += `# Dependencies\\n\\n${lines.join(\"\\n\")}\\n\\n`;\n }\n return renderFrontmatter(fields) + body.trimEnd() + \"\\n\";\n}\n\nfunction renderModulesIndex(files: readonly GraphFileRow[]): string {\n const groups = new Map<string, GraphFileRow[]>();\n for (const file of files) {\n const key = file.path.includes(\"/\") ? (file.path.split(\"/\")[0] ?? \"\") : \"(root)\";\n const list = groups.get(key) ?? [];\n list.push(file);\n groups.set(key, list);\n }\n const sections = [...groups.keys()].sort().map((key) => {\n const lines = (groups.get(key) ?? [])\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((f) => `* [${f.path}](/modules/${f.path}.md)`);\n return `## ${key}\\n\\n${lines.join(\"\\n\")}`;\n });\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n# Code Modules\\n\\n${sections.join(\"\\n\\n\")}\\n`;\n}\n\nfunction renderDecisionsIndex(records: ReadonlyArray<{ record: DecisionRecord }>): string {\n // ACTIVE set first — the single classification source (rule 53), never a\n // re-derived list.\n const orderedStatuses = [\n ...DECISION_STATUSES.filter((s) => ACTIVE_DECISION_STATUSES.has(s)),\n ...DECISION_STATUSES.filter((s) => !ACTIVE_DECISION_STATUSES.has(s)),\n ];\n const byStatus = new Map<string, { record: DecisionRecord }[]>();\n for (const entry of records) {\n const list = byStatus.get(entry.record.status) ?? [];\n list.push(entry);\n byStatus.set(entry.record.status, list);\n }\n const sections: string[] = [];\n for (const status of orderedStatuses) {\n const list = byStatus.get(status);\n if (!list || list.length === 0) continue;\n const lines = list\n .map((e) => e.record)\n .sort((a, b) => a.title.localeCompare(b.title))\n .map((r) => `* [${r.title}](/decisions/${decisionFileStem(r)}.md)`);\n sections.push(`## ${status[0]!.toUpperCase()}${status.slice(1)}\\n\\n${lines.join(\"\\n\")}`);\n }\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n# Decision Records\\n\\n${sections.join(\"\\n\\n\")}\\n`;\n}\n\nfunction renderDecision(record: DecisionRecord, timestamp: string): string {\n const fields: Record<string, unknown> = {\n id: record.id,\n title: record.title,\n status: record.status,\n context: record.context,\n decision: record.decision,\n ...(record.consequences !== undefined ? { consequences: record.consequences } : {}),\n entityRefs: record.entityRefs,\n ...(record.supersedes !== undefined ? { supersedes: record.supersedes } : {}),\n type: OKF_DECISION_RECORD_TYPE,\n timestamp,\n };\n const lines: string[] = [];\n if (record.context) lines.push(record.context, \"\");\n lines.push(\"# Decision\", \"\");\n if (record.decision) lines.push(record.decision, \"\");\n if (record.consequences && record.consequences.length > 0) {\n lines.push(\"# Consequences\", \"\", record.consequences, \"\");\n }\n if (record.supersedes !== undefined) {\n lines.push(`- supersedes: [${record.supersedes}](/decisions/${decisionFileStem({ id: record.supersedes })}.md)`, \"\");\n }\n return renderFrontmatter(fields) + lines.join(\"\\n\").trimEnd() + \"\\n\";\n}\n\nfunction renderRootIndex(\n repoName: string,\n projectId: string,\n architectureCard: boolean,\n decisions: number,\n keptFiles: readonly GraphFileRow[],\n totalFiles: readonly GraphFileRow[],\n truncated: boolean,\n): string {\n const lines: string[] = [\n `# ${repoName} Code Graph`,\n \"\",\n `- project: ${projectId}`,\n architectureCard ? \"- [Architecture card](/architecture.md)\" : \"- architecture card: none stored\",\n `- decision records: ${decisions}`,\n `- code modules: ${keptFiles.length} of ${totalFiles.length} indexed files`,\n \"\",\n ];\n if (truncated) {\n lines.push(\n OKF_CODEGRAPH_TRUNCATION_MARKER,\n `Truncated to the ${keptFiles.length} files with the most symbols of ${totalFiles.length} in the graph; raise --max-module-concepts to widen.`,\n \"\",\n );\n }\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n${lines.join(\"\\n\")}\\n`;\n}\n"],"mappings":"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","names":[]}
|
|
1
|
+
{"version":3,"sources":["../../src/coding/export-okf-codegraph.ts"],"sourcesContent":["/**\n * Codegraph OKF projection (issue #1950).\n *\n * Read-only projection of one project's code-graph SQLite store into an\n * OKF v0.1 knowledge bundle: the stored architecture card, decision\n * records, and one `Code Module` concept per indexed source file with its\n * symbols and outgoing edges. The store is NEVER opened for write — the\n * SQLite file is opened `readonly`, so an export cannot mutate indexing\n * state and the file's bytes are stable across runs.\n *\n * Rendering discipline mirrors architecture-card.ts (rule 38): byte-stable\n * output for an unchanged graph; every list is sorted with a total order.\n * Shared bundle mechanics come from ../okf/render.ts (one source of truth\n * with the memory exporter, issue #1948).\n */\nimport { existsSync, readdirSync, rmSync, statSync } from \"node:fs\";\nimport { mkdtemp } from \"node:fs/promises\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport { lintOkfDir } from \"../okf/lint.js\";\nimport {\n OKF_ARCHITECTURE_CARD_TYPE,\n OKF_CODE_MODULE_TYPE,\n OKF_DECISION_RECORD_TYPE,\n} from \"../okf/type-mapping.js\";\nimport {\n OKF_EXPORT_VERSION,\n publishBundle,\n renderFrontmatter,\n rejectSymlinkPath,\n writeBundleFile,\n} from \"../okf/render.js\";\nimport { openBetterSqlite3 } from \"../runtime/better-sqlite.js\";\nimport { StorageManager, stripAttributesSuffix } from \"../storage.js\";\nimport type { PluginConfig } from \"../types.js\";\nimport { findArchitectureCardMemory, type ArchitectureSurfaceStorage } from \"./architecture-surfaces.js\";\nimport {\n CodegraphRuntimeError,\n codegraphSurfaceVisible,\n listCodegraphProjects,\n resolveCodegraphDbPath,\n} from \"./codegraph-runtime.js\";\nimport { defaultGitInvoker, normalizeOriginUrl } from \"./git-context.js\";\nimport { projectNamespaceName } from \"./coding-namespace.js\";\nimport {\n ACTIVE_DECISION_STATUSES,\n DECISION_STATUSES,\n parseDecisionRecord,\n type DecisionRecord,\n} from \"./decision-records.js\";\nimport { buildCodingGraphInstallHint, isCodingGraphInstalled } from \"./optional-coding-graph.js\";\n\n/** Default cap on rendered module concepts (`--max-module-concepts`). */\nexport const DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS = 500;\n\n/**\n * Visible marker written into the root index when module concepts were\n * truncated (mirrors `ARCHITECTURE_CARD_TRUNCATION_MARKER` — never\n * silently incomplete).\n */\nexport const OKF_CODEGRAPH_TRUNCATION_MARKER = \"<!-- okf-codegraph-truncated -->\";\n\nexport type OkfCodegraphSymbolFilter = \"none\" | \"exported\" | \"all\";\n\nconst SYMBOL_FILTERS: readonly OkfCodegraphSymbolFilter[] = [\"none\", \"exported\", \"all\"];\n\nexport function parseOkfCodegraphSymbolFilter(raw: unknown): OkfCodegraphSymbolFilter {\n const value = typeof raw === \"string\" ? raw.trim().toLowerCase() : \"\";\n if (value.length === 0) return \"exported\";\n if ((SYMBOL_FILTERS as readonly string[]).includes(value)) return value as OkfCodegraphSymbolFilter;\n throw new Error(`invalid --symbols ${String(raw)}; allowed: ${SYMBOL_FILTERS.join(\", \")}`);\n}\n\nexport interface ExportOkfCodegraphOptions {\n readonly config: PluginConfig;\n readonly memoryDir: string;\n /** Store owner; defaults to `\"default\"` like the access-service principal key. */\n readonly principal?: string;\n readonly projectId: string;\n readonly outDir: string;\n /**\n * Working directory used to resolve git context (repo root, origin URL).\n * Defaults to `process.cwd()`.\n */\n readonly cwd?: string;\n readonly maxModuleConcepts?: number;\n readonly symbols?: OkfCodegraphSymbolFilter;\n /** Default ON; pass `false` for `--no-include-adrs`. */\n readonly includeAdrs?: boolean;\n readonly force?: boolean;\n /**\n * Namespace holding the project's decision records + architecture card.\n * Defaults to the project-scope coding namespace for the project id.\n */\n readonly namespace?: string;\n}\n\nexport interface ExportOkfCodegraphResult {\n readonly projectId: string;\n readonly moduleConcepts: number;\n readonly moduleFilesInGraph: number;\n readonly truncated: boolean;\n readonly decisions: number;\n readonly architectureCard: boolean;\n}\n\ninterface GraphFileRow {\n readonly id: number;\n readonly path: string;\n readonly lang: string;\n}\n\ninterface GraphNodeRow {\n readonly name: string;\n readonly label: string;\n readonly file_id: number;\n readonly span_start: number;\n readonly span_end: number;\n readonly is_exported: number;\n}\n\ninterface GraphEdgeRow {\n readonly type: string;\n readonly confidence: number;\n readonly src_file_id: number;\n readonly dst_file_id: number;\n readonly dst_name: string;\n readonly dst_path: string;\n}\n\nexport async function exportCodegraphOkfBundle(\n opts: ExportOkfCodegraphOptions,\n): Promise<ExportOkfCodegraphResult> {\n if (!codegraphSurfaceVisible(opts.config)) {\n throw new CodegraphRuntimeError(\n \"disabled\",\n \"codegraph tools are disabled (codingKnowledge.enabled or codingKnowledge.codegraphTools is false)\",\n );\n }\n if (!(await isCodingGraphInstalled())) {\n throw new CodegraphRuntimeError(\"package_missing\", buildCodingGraphInstallHint());\n }\n const principal = opts.principal?.trim() || \"default\";\n const projectId = opts.projectId.trim();\n if (projectId.length === 0) {\n throw new CodegraphRuntimeError(\n \"project_required\",\n \"codegraph export-okf requires --project (or a cwd inside the project's git repo)\",\n );\n }\n rejectSymlinkPath(path.resolve(opts.outDir));\n // Explicit option validation (config-coercion footgun): honor the given\n // value or fail loudly — never silently default a bad input. `0` is a\n // legitimate \"no module concepts\" cap and is honored.\n const maxModules = opts.maxModuleConcepts ?? DEFAULT_OKF_CODEGRAPH_MAX_MODULE_CONCEPTS;\n if (!Number.isInteger(maxModules) || maxModules < 0) {\n throw new Error(\n `invalid --max-module-concepts ${String(opts.maxModuleConcepts)}; must be a non-negative integer`,\n );\n }\n const dbPath = resolveCodegraphDbPath({ config: opts.config, memoryDir: opts.memoryDir, principal, projectId });\n if (!existsSync(dbPath)) {\n const known = listCodegraphProjects({\n config: opts.config,\n memoryDir: opts.memoryDir,\n principal,\n listDir: (dir) => {\n try {\n return readdirSync(dir);\n } catch {\n return [];\n }\n },\n });\n throw new CodegraphRuntimeError(\n \"project_not_found\",\n `no codegraph store for project '${projectId}' (principal '${principal}'); known projects: ${\n known.length > 0 ? known.join(\", \") : \"(none)\"\n }`,\n );\n }\n\n // Read the graph through a readonly handle — bytes on disk are never\n // touched, and the store cache (write-mode handles) is bypassed entirely.\n const graphIndexedAt = statSync(dbPath).mtime.toISOString();\n const db = openBetterSqlite3(dbPath, { readonly: true, fileMustExist: true });\n let files: GraphFileRow[];\n let nodes: GraphNodeRow[];\n let edges: GraphEdgeRow[];\n try {\n files = db.prepare(\"SELECT id, path, lang FROM files ORDER BY path ASC\").all() as GraphFileRow[];\n nodes = db\n .prepare(\n `SELECT n.name, n.label, n.file_id, n.span_start, n.span_end,\n COALESCE(na.is_exported, 0) AS is_exported\n FROM nodes n LEFT JOIN node_attributes na ON na.node_id = n.id`,\n )\n .all() as GraphNodeRow[];\n edges = db\n .prepare(\n `SELECT e.type, e.confidence, s.file_id AS src_file_id, d.file_id AS dst_file_id,\n d.name AS dst_name, df.path AS dst_path\n FROM edges e\n JOIN nodes s ON s.id = e.src\n JOIN nodes d ON d.id = e.dst\n JOIN files df ON d.file_id = df.id`,\n )\n .all() as GraphEdgeRow[];\n } finally {\n db.close();\n }\n\n // Trust boundary: file paths come from the indexed graph. Reject anything\n // that is not a strict repo-relative POSIX path so a hostile row cannot\n // escape the staging directory via writeBundleFile's path.join.\n const safeFiles = files.filter(\n (f) => f.path.length > 0 && !f.path.startsWith(\"/\") && !f.path.split(\"/\").includes(\"..\"),\n );\n const fileIdToPath = new Map<number, string>(safeFiles.map((f) => [f.id, f.path]));\n const nodesByFile = new Map<number, GraphNodeRow[]>();\n for (const node of nodes) {\n if (!fileIdToPath.has(node.file_id)) continue;\n const list = nodesByFile.get(node.file_id) ?? [];\n list.push(node);\n nodesByFile.set(node.file_id, list);\n }\n\n // Deterministic truncation: most symbols first, path ascending as the\n // tie-break (issue acceptance: cap of 1 keeps the highest-symbol file).\n const ranked = [...safeFiles].sort((a, b) => {\n const aCount = (nodesByFile.get(a.id) ?? []).length;\n const bCount = (nodesByFile.get(b.id) ?? []).length;\n if (aCount !== bCount) return bCount - aCount;\n return a.path.localeCompare(b.path);\n });\n const keptFiles = ranked.slice(0, maxModules);\n const keptPaths = new Set<string>(keptFiles.map((f) => f.path));\n const truncated = safeFiles.length > keptFiles.length;\n\n const symbolFilter = parseOkfCodegraphSymbolFilter(opts.symbols);\n const git = await resolveGitHints(opts.cwd ?? process.cwd());\n const staging = await mkdtemp(path.join(os.tmpdir(), \"remnic-okf-codegraph-\"));\nlet decisions = 0;\nlet architectureCard = false;\ntry {\n const namespace = opts.namespace?.trim() || projectNamespaceName(projectId);\n const namespaceDir = path.join(opts.memoryDir, \"namespaces\", namespace);\n if (opts.includeAdrs !== false && existsSync(namespaceDir)) {\n const storage = new StorageManager(namespaceDir);\n const memories = await storage.readAllMemories();\n // Architecture card — reuse the surface's classification (rule 53).\n const card = await findArchitectureCardMemory(readOnlyCardStorage(storage, namespaceDir, namespace));\n if (card) {\n architectureCard = true;\n writeBundleFile(\n staging,\n \"architecture.md\",\n renderFrontmatter({\n type: OKF_ARCHITECTURE_CARD_TYPE,\n title: git.repoName,\n ...(git.originUrl ? { resource: git.originUrl } : git.repoRoot ? { resource: git.repoRoot } : {}),\n timestamp: card.frontmatter.updated ?? card.frontmatter.created,\n }) +\n stripAttributesSuffix(card.content.replace(/^\\uFEFF/, \"\")).trimEnd() +\n \"\\n\",\n );\n }\n const records: Array<{ record: DecisionRecord; timestamp: string }> = [];\n for (const memory of memories) {\n if (memory.frontmatter.category !== \"decision\") continue;\n try {\n const parsed = parseDecisionRecord(memory.content);\n records.push({\n // Production writes leave the ADR frontmatter id empty and use\n // the memory id as the canonical identifier (decisionRecord\n // surface path) — prefer the ADR id, fall back to the memory id.\n record: parsed.id ? parsed : { ...parsed, id: memory.frontmatter.id },\n timestamp: memory.frontmatter.updated ?? memory.frontmatter.created,\n });\n } catch {\n // Unparseable decision bodies are skipped, mirroring the surface's\n // safeParseDecisionRecord degradation.\n }\n }\n records.sort((a, b) => a.record.title.localeCompare(b.record.title));\n decisions = records.length;\n for (const { record, timestamp } of records) {\n writeBundleFile(staging, `decisions/${decisionFileStem(record)}.md`, renderDecision(record, timestamp));\n }\n if (records.length > 0 || architectureCard) {\n writeBundleFile(staging, \"decisions/index.md\", renderDecisionsIndex(records));\n }\n }\n\n for (const file of keptFiles) {\n writeBundleFile(\n staging,\n `modules/${file.path}.md`,\n renderModule(\n file,\n nodesByFile.get(file.id) ?? [],\n edges,\n fileIdToPath,\n keptPaths,\n symbolFilter,\n git,\n graphIndexedAt,\n ),\n );\n }\n if (keptFiles.length > 0) {\n writeBundleFile(staging, \"modules/index.md\", renderModulesIndex(keptFiles));\n }\n writeBundleFile(\n staging,\n \"index.md\",\n renderRootIndex(git.repoName, projectId, architectureCard, decisions, keptFiles, safeFiles, truncated),\n );\n\n // Self-validate with the #1946 conformance checker; non-conformant\n // output fails the command. Reserved basenames (the bundle's own\n // index.md files) are the documented exemption, as in the memory export.\n const lint = lintOkfDir(staging);\n const blocking = lint.findings.filter((f) => f.code !== \"skipped_encrypted\" && f.code !== \"reserved_basename\");\n if (blocking.length > 0) {\n throw new Error(`OKF codegraph export failed lint: ${blocking.map((f) => `${f.file}: ${f.message}`).join(\"; \")}`);\n }\n publishBundle(staging, path.resolve(opts.outDir), opts.force === true);\n } catch (err) {\n rmSync(staging, { recursive: true, force: true });\n throw err;\n }\n return {\n projectId,\n moduleConcepts: keptFiles.length,\n moduleFilesInGraph: safeFiles.length,\n truncated,\n decisions,\n architectureCard,\n };\n}\n\n/**\n * Read-only adapter over the namespace StorageManager for\n * {@link findArchitectureCardMemory} — write arms throw so a future edit\n * cannot silently turn the exporter into a mutating surface.\n */\nfunction readOnlyCardStorage(\n storage: StorageManager,\n dir: string,\n namespace: string,\n): ArchitectureSurfaceStorage {\n return {\n dir,\n namespace,\n readAllMemories: () => storage.readAllMemories(),\n updateMemory: () => {\n throw new Error(\"codegraph export-okf is read-only\");\n },\n writeSealedMemory: () => {\n throw new Error(\"codegraph export-okf is read-only\");\n },\n };\n}\n\ninterface GitHints {\n readonly repoRoot: string | null;\n readonly repoName: string;\n readonly originUrl: string | null;\n}\n\nasync function resolveGitHints(cwd: string): Promise<GitHints> {\n try {\n const invoker = defaultGitInvoker();\n const topLevel = await invoker(cwd, [\"rev-parse\", \"--show-toplevel\"]);\n if (topLevel.exitCode !== 0) {\n return { repoRoot: null, repoName: \"codegraph\", originUrl: null };\n }\n const repoRoot = topLevel.stdout.trim();\n const origin = await invoker(repoRoot, [\"remote\", \"get-url\", \"origin\"]);\n const originUrl = origin.exitCode === 0 ? normalizeOriginUrl(origin.stdout) : null;\n return {\n repoRoot: repoRoot || null,\n repoName: (repoRoot && path.basename(repoRoot)) || \"codegraph\",\n originUrl: originUrl && originUrl.length > 0 ? originUrl : null,\n };\n } catch {\n return { repoRoot: null, repoName: \"codegraph\", originUrl: null };\n }\n}\n\nfunction moduleResource(git: GitHints, filePath: string): string {\n if (git.originUrl) return `${git.originUrl}/${filePath}`;\n if (git.repoRoot) return path.join(git.repoRoot, filePath);\n return filePath;\n}\n\nfunction confidenceTier(confidence: number): string {\n if (confidence >= 0.9) return \"high\";\n if (confidence >= 0.5) return \"medium\";\n return \"low\";\n}\n\nfunction decisionFileStem(record: Pick<DecisionRecord, \"id\">): string {\n const safe = record.id.replace(/[^A-Za-z0-9._-]+/g, \"_\");\n return safe.length > 0 ? safe : \"decision\";\n}\n\nfunction renderModule(\n file: GraphFileRow,\n fileNodes: readonly GraphNodeRow[],\n edges: readonly GraphEdgeRow[],\n fileIdToPath: ReadonlyMap<number, string>,\n keptPaths: ReadonlySet<string>,\n symbolFilter: OkfCodegraphSymbolFilter,\n git: GitHints,\n graphIndexedAt: string,\n): string {\n const visible =\n symbolFilter === \"all\"\n ? [...fileNodes]\n : symbolFilter === \"exported\"\n ? fileNodes.filter((n) => n.is_exported === 1)\n : [];\n visible.sort((a, b) => (a.name !== b.name ? a.name.localeCompare(b.name) : a.span_start - b.span_start));\n const outEdges = edges\n .filter((e) => e.src_file_id === file.id && fileIdToPath.get(e.src_file_id) === file.path)\n .map((e) => ({\n type: e.type,\n verb: e.type.toLowerCase(),\n dstPath: e.dst_path,\n dstName: e.dst_name,\n tier: confidenceTier(e.confidence),\n }))\n .sort((a, b) =>\n a.type !== b.type\n ? a.type.localeCompare(b.type)\n : a.dstPath !== b.dstPath\n ? a.dstPath.localeCompare(b.dstPath)\n : a.dstName.localeCompare(b.dstName),\n );\n const fields: Record<string, unknown> = {\n type: OKF_CODE_MODULE_TYPE,\n title: file.path,\n description: `${fileNodes.length} symbols, ${file.lang}`,\n resource: moduleResource(git, file.path),\n tags: [file.lang],\n timestamp: graphIndexedAt,\n };\n let body = \"\";\n if (symbolFilter !== \"none\") {\n const rows = visible.map((n) => `| ${n.name} | ${n.label} | ${n.span_start}-${n.span_end} |`).join(\"\\n\");\n body += `# Symbols\\n\\n| Name | Kind | Span (bytes) |\\n|---|---|---|\\n${rows}\\n\\n`;\n }\n if (outEdges.length > 0) {\n const lines = outEdges.map((e) => {\n // Broken links (target truncated out of the bundle) are legal per OKF\n // §5.3 — the link records the relationship regardless of target presence.\n const href = `/modules/${e.dstPath}.md`;\n const label = e.verb === \"calls\" ? `${e.dstName}() in ${e.dstPath}` : e.dstPath;\n const broken = keptPaths.has(e.dstPath) ? \"\" : \" (link target not exported)\";\n return `- ${e.verb}: [${label}](${href}) (confidence: ${e.tier})${broken}`;\n });\n body += `# Dependencies\\n\\n${lines.join(\"\\n\")}\\n\\n`;\n }\n return renderFrontmatter(fields) + body.trimEnd() + \"\\n\";\n}\n\nfunction renderModulesIndex(files: readonly GraphFileRow[]): string {\n const groups = new Map<string, GraphFileRow[]>();\n for (const file of files) {\n const key = file.path.includes(\"/\") ? (file.path.split(\"/\")[0] ?? \"\") : \"(root)\";\n const list = groups.get(key) ?? [];\n list.push(file);\n groups.set(key, list);\n }\n const sections = [...groups.keys()].sort().map((key) => {\n const lines = (groups.get(key) ?? [])\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((f) => `* [${f.path}](/modules/${f.path}.md)`);\n return `## ${key}\\n\\n${lines.join(\"\\n\")}`;\n });\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n# Code Modules\\n\\n${sections.join(\"\\n\\n\")}\\n`;\n}\n\nfunction renderDecisionsIndex(records: ReadonlyArray<{ record: DecisionRecord }>): string {\n // ACTIVE set first — the single classification source (rule 53), never a\n // re-derived list.\n const orderedStatuses = [\n ...DECISION_STATUSES.filter((s) => ACTIVE_DECISION_STATUSES.has(s)),\n ...DECISION_STATUSES.filter((s) => !ACTIVE_DECISION_STATUSES.has(s)),\n ];\n const byStatus = new Map<string, { record: DecisionRecord }[]>();\n for (const entry of records) {\n const list = byStatus.get(entry.record.status) ?? [];\n list.push(entry);\n byStatus.set(entry.record.status, list);\n }\n const sections: string[] = [];\n for (const status of orderedStatuses) {\n const list = byStatus.get(status);\n if (!list || list.length === 0) continue;\n const lines = list\n .map((e) => e.record)\n .sort((a, b) => a.title.localeCompare(b.title))\n .map((r) => `* [${r.title}](/decisions/${decisionFileStem(r)}.md)`);\n sections.push(`## ${status[0]!.toUpperCase()}${status.slice(1)}\\n\\n${lines.join(\"\\n\")}`);\n }\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n# Decision Records\\n\\n${sections.join(\"\\n\\n\")}\\n`;\n}\n\nfunction renderDecision(record: DecisionRecord, timestamp: string): string {\n const fields: Record<string, unknown> = {\n id: record.id,\n title: record.title,\n status: record.status,\n context: record.context,\n decision: record.decision,\n ...(record.consequences !== undefined ? { consequences: record.consequences } : {}),\n entityRefs: record.entityRefs,\n ...(record.supersedes !== undefined ? { supersedes: record.supersedes } : {}),\n type: OKF_DECISION_RECORD_TYPE,\n timestamp,\n };\n const lines: string[] = [];\n if (record.context) lines.push(record.context, \"\");\n lines.push(\"# Decision\", \"\");\n if (record.decision) lines.push(record.decision, \"\");\n if (record.consequences && record.consequences.length > 0) {\n lines.push(\"# Consequences\", \"\", record.consequences, \"\");\n }\n if (record.supersedes !== undefined) {\n lines.push(`- supersedes: [${record.supersedes}](/decisions/${decisionFileStem({ id: record.supersedes })}.md)`, \"\");\n }\n return renderFrontmatter(fields) + lines.join(\"\\n\").trimEnd() + \"\\n\";\n}\n\nfunction renderRootIndex(\n repoName: string,\n projectId: string,\n architectureCard: boolean,\n decisions: number,\n keptFiles: readonly GraphFileRow[],\n totalFiles: readonly GraphFileRow[],\n truncated: boolean,\n): string {\n const lines: string[] = [\n `# ${repoName} Code Graph`,\n \"\",\n `- project: ${projectId}`,\n architectureCard ? \"- [Architecture card](/architecture.md)\" : \"- architecture card: none stored\",\n `- decision records: ${decisions}`,\n `- code modules: ${keptFiles.length} of ${totalFiles.length} indexed files`,\n \"\",\n ];\n if (truncated) {\n lines.push(\n OKF_CODEGRAPH_TRUNCATION_MARKER,\n `Truncated to the ${keptFiles.length} files with the most symbols of ${totalFiles.length} in the graph; raise --max-module-concepts to widen.`,\n \"\",\n );\n }\n return `---\\nokf_version: \"${OKF_EXPORT_VERSION}\"\\n---\\n\\n${lines.join(\"\\n\")}\\n`;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1,29 +1,30 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CompoundingEngine,
|
|
3
3
|
defaultTierMigrationCycleBudget
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-L6YCGS7I.js";
|
|
5
5
|
import "../chunk-77HNHT6S.js";
|
|
6
6
|
import "../chunk-OGXXGHW6.js";
|
|
7
7
|
import "../chunk-JYG2334B.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-UHVXE24Y.js";
|
|
8
|
+
import "../chunk-UFIZRMQZ.js";
|
|
10
9
|
import "../chunk-46WM6JX2.js";
|
|
10
|
+
import "../chunk-UHVXE24Y.js";
|
|
11
11
|
import "../chunk-V4JZCTMK.js";
|
|
12
|
-
import "../chunk-
|
|
13
|
-
import "../chunk-
|
|
12
|
+
import "../chunk-3LMOJXZR.js";
|
|
13
|
+
import "../chunk-DFPG47ET.js";
|
|
14
14
|
import "../chunk-7VO6E5UD.js";
|
|
15
15
|
import "../chunk-5BUCKFRE.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
import "../chunk-S7LWX2PQ.js";
|
|
17
|
+
import "../chunk-T2YX56QI.js";
|
|
18
18
|
import "../chunk-CYEPCZN5.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-GUMZC2BO.js";
|
|
19
|
+
import "../chunk-T3FMRLWQ.js";
|
|
21
20
|
import "../chunk-4O6WRBGE.js";
|
|
22
|
-
import "../chunk-
|
|
21
|
+
import "../chunk-GUMZC2BO.js";
|
|
22
|
+
import "../chunk-TFA6HPOA.js";
|
|
23
|
+
import "../chunk-F4TWWUMP.js";
|
|
23
24
|
import "../chunk-72A4L5JJ.js";
|
|
24
25
|
import "../chunk-A7Q43EUZ.js";
|
|
25
|
-
import "../chunk-F4TWWUMP.js";
|
|
26
26
|
import "../chunk-S2V7RUCL.js";
|
|
27
|
+
import "../chunk-X3724WL4.js";
|
|
27
28
|
import "../chunk-MRPOZBJC.js";
|
|
28
29
|
import "../chunk-S2HLHAZ4.js";
|
|
29
30
|
import "../chunk-DM2T26WE.js";
|
package/dist/config.js
CHANGED
|
@@ -47,25 +47,26 @@ import "./chunk-236PXYG7.js";
|
|
|
47
47
|
import "./chunk-ZCUTSMR2.js";
|
|
48
48
|
import "./chunk-QDW3E4RD.js";
|
|
49
49
|
import "./chunk-B3O3IRZN.js";
|
|
50
|
-
import "./chunk-
|
|
51
|
-
import "./chunk-UHVXE24Y.js";
|
|
50
|
+
import "./chunk-UFIZRMQZ.js";
|
|
52
51
|
import "./chunk-46WM6JX2.js";
|
|
52
|
+
import "./chunk-UHVXE24Y.js";
|
|
53
53
|
import "./chunk-V4JZCTMK.js";
|
|
54
|
-
import "./chunk-
|
|
55
|
-
import "./chunk-
|
|
54
|
+
import "./chunk-3LMOJXZR.js";
|
|
55
|
+
import "./chunk-DFPG47ET.js";
|
|
56
56
|
import "./chunk-7VO6E5UD.js";
|
|
57
57
|
import "./chunk-5BUCKFRE.js";
|
|
58
|
-
import "./chunk-
|
|
59
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-S7LWX2PQ.js";
|
|
59
|
+
import "./chunk-T2YX56QI.js";
|
|
60
60
|
import "./chunk-CYEPCZN5.js";
|
|
61
|
-
import "./chunk-
|
|
62
|
-
import "./chunk-GUMZC2BO.js";
|
|
61
|
+
import "./chunk-T3FMRLWQ.js";
|
|
63
62
|
import "./chunk-4O6WRBGE.js";
|
|
64
|
-
import "./chunk-
|
|
63
|
+
import "./chunk-GUMZC2BO.js";
|
|
64
|
+
import "./chunk-TFA6HPOA.js";
|
|
65
|
+
import "./chunk-F4TWWUMP.js";
|
|
65
66
|
import "./chunk-72A4L5JJ.js";
|
|
66
67
|
import "./chunk-A7Q43EUZ.js";
|
|
67
|
-
import "./chunk-F4TWWUMP.js";
|
|
68
68
|
import "./chunk-S2V7RUCL.js";
|
|
69
|
+
import "./chunk-X3724WL4.js";
|
|
69
70
|
import "./chunk-MRPOZBJC.js";
|
|
70
71
|
import "./chunk-S2HLHAZ4.js";
|
|
71
72
|
import "./chunk-DM2T26WE.js";
|
|
@@ -127,15 +128,15 @@ import "./chunk-C7HJ3NEI.js";
|
|
|
127
128
|
import "./chunk-N4PYB235.js";
|
|
128
129
|
import "./chunk-AW4QUFQF.js";
|
|
129
130
|
import "./chunk-5FVVY2EB.js";
|
|
130
|
-
import "./chunk-
|
|
131
|
+
import "./chunk-SBOCJ47I.js";
|
|
131
132
|
import "./chunk-UI3NYK34.js";
|
|
132
133
|
import "./chunk-3E6DGSGZ.js";
|
|
133
|
-
import "./chunk-3QH4NT72.js";
|
|
134
|
-
import "./chunk-KO4X4WRJ.js";
|
|
135
|
-
import "./chunk-TYT4TEQV.js";
|
|
136
|
-
import "./chunk-ANPRNTPT.js";
|
|
137
134
|
import "./chunk-EFHNFTWB.js";
|
|
135
|
+
import "./chunk-JTC3PBNH.js";
|
|
136
|
+
import "./chunk-PEZAHDDU.js";
|
|
137
|
+
import "./chunk-TYT4TEQV.js";
|
|
138
138
|
import "./chunk-GCGJW34D.js";
|
|
139
|
+
import "./chunk-ANPRNTPT.js";
|
|
139
140
|
import "./chunk-75PT4N7Q.js";
|
|
140
141
|
import "./chunk-UCPGOUDZ.js";
|
|
141
142
|
import "./chunk-LQWOFU6L.js";
|
|
@@ -1,32 +1,33 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runCodexMaterialize,
|
|
3
3
|
runPostConsolidationMaterialize
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-4OXXDL3X.js";
|
|
5
5
|
import "../chunk-3UXOZBHV.js";
|
|
6
6
|
import "../chunk-PIWFNPQT.js";
|
|
7
7
|
import "../chunk-TOTT6S2V.js";
|
|
8
8
|
import "../chunk-236PXYG7.js";
|
|
9
9
|
import "../chunk-ZCUTSMR2.js";
|
|
10
10
|
import "../chunk-QDW3E4RD.js";
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-UHVXE24Y.js";
|
|
11
|
+
import "../chunk-UFIZRMQZ.js";
|
|
13
12
|
import "../chunk-46WM6JX2.js";
|
|
13
|
+
import "../chunk-UHVXE24Y.js";
|
|
14
14
|
import "../chunk-V4JZCTMK.js";
|
|
15
|
-
import "../chunk-
|
|
16
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-3LMOJXZR.js";
|
|
16
|
+
import "../chunk-DFPG47ET.js";
|
|
17
17
|
import "../chunk-7VO6E5UD.js";
|
|
18
18
|
import "../chunk-5BUCKFRE.js";
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
19
|
+
import "../chunk-S7LWX2PQ.js";
|
|
20
|
+
import "../chunk-T2YX56QI.js";
|
|
21
21
|
import "../chunk-CYEPCZN5.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-GUMZC2BO.js";
|
|
22
|
+
import "../chunk-T3FMRLWQ.js";
|
|
24
23
|
import "../chunk-4O6WRBGE.js";
|
|
25
|
-
import "../chunk-
|
|
24
|
+
import "../chunk-GUMZC2BO.js";
|
|
25
|
+
import "../chunk-TFA6HPOA.js";
|
|
26
|
+
import "../chunk-F4TWWUMP.js";
|
|
26
27
|
import "../chunk-72A4L5JJ.js";
|
|
27
28
|
import "../chunk-A7Q43EUZ.js";
|
|
28
|
-
import "../chunk-F4TWWUMP.js";
|
|
29
29
|
import "../chunk-S2V7RUCL.js";
|
|
30
|
+
import "../chunk-X3724WL4.js";
|
|
30
31
|
import "../chunk-MRPOZBJC.js";
|
|
31
32
|
import "../chunk-S2HLHAZ4.js";
|
|
32
33
|
import "../chunk-DM2T26WE.js";
|