@remnic/core 10.0.60 → 10.0.61
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 -20
- package/dist/access-authorization-probe.js +22 -21
- package/dist/access-boundary.js +21 -20
- package/dist/access-cli.js +64 -63
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +21 -20
- package/dist/access-http-briefing.js +22 -21
- package/dist/access-http-query.js +23 -22
- package/dist/access-http.js +39 -38
- package/dist/access-identity-continuity-surface.js +21 -20
- package/dist/access-lcm-surface.js +21 -20
- package/dist/access-mcp.js +31 -30
- package/dist/access-namespace-preflight.js +21 -20
- package/dist/access-observe-write-category.js +4 -4
- package/dist/access-observe-write-surface.js +21 -20
- package/dist/access-operations-batch.js +23 -22
- package/dist/access-operations.js +30 -29
- package/dist/access-recall-concurrency.js +21 -20
- package/dist/access-recall-response.js +21 -20
- package/dist/access-recall-surface.js +21 -20
- package/dist/access-schema.js +3 -3
- package/dist/access-service.js +21 -20
- package/dist/access-surface-catalog.js +23 -22
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +6 -4
- package/dist/active-recall.js.map +1 -1
- package/dist/briefing.js +7 -5
- package/dist/buffer-persistence.d.ts +14 -3
- package/dist/buffer-persistence.d.ts.map +1 -1
- package/dist/buffer-persistence.js +1 -1
- package/dist/buffer-turn-helpers.d.ts +7 -0
- package/dist/buffer-turn-helpers.d.ts.map +1 -1
- package/dist/buffer-turn-helpers.js +5 -3
- package/dist/buffer.d.ts +2 -0
- package/dist/buffer.d.ts.map +1 -1
- package/dist/buffer.js +3 -3
- package/dist/{capsule-crypto-7FJQINUR.js → capsule-crypto-GWVG7LGC.js} +2 -2
- package/dist/causal-consolidation.js +8 -6
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-PRSF7DWT.js → chunk-23OEPU3K.js} +2 -2
- package/dist/{chunk-2EJAPJ5G.js → chunk-46U6L5DM.js} +2 -2
- package/dist/{chunk-NF5EHQTJ.js → chunk-6HTEPYOI.js} +4 -4
- package/dist/{chunk-TIS6T6UP.js → chunk-6T4CMKNP.js} +2 -2
- package/dist/{chunk-W37MS6SX.js → chunk-73A2DDDR.js} +2 -2
- package/dist/{chunk-X2TZWVCC.js → chunk-7AKPLEJV.js} +2 -2
- package/dist/{chunk-T4SMMTGY.js → chunk-7OKYO2UC.js} +2 -2
- package/dist/{chunk-WJC5KGYC.js → chunk-7ULSP7AU.js} +6 -6
- package/dist/{chunk-J53IBVMF.js → chunk-A4FZLM6Q.js} +2 -2
- package/dist/{chunk-KQAFEZQX.js → chunk-BUKK5SWA.js} +2 -2
- package/dist/{chunk-JRY55I6Z.js → chunk-C2AYUXEF.js} +2 -2
- package/dist/{chunk-PTJWUN4H.js → chunk-D3BYJSHX.js} +25 -25
- package/dist/{chunk-ADK5TMQL.js → chunk-D4WR56FR.js} +2 -2
- package/dist/{chunk-3DG2YAAX.js → chunk-DMYNM3WG.js} +59 -32
- package/dist/chunk-DMYNM3WG.js.map +1 -0
- package/dist/{chunk-66CC6L6R.js → chunk-DP22K7IC.js} +2 -2
- package/dist/{chunk-AWKADEMO.js → chunk-DTQJ7BRN.js} +3 -3
- package/dist/{chunk-IA3XZG4V.js → chunk-DZL5PBEJ.js} +2 -2
- package/dist/{chunk-7DHNBABU.js → chunk-EGCC5OJE.js} +3 -3
- package/dist/{chunk-N5H22V75.js → chunk-EJ4RS7I7.js} +2 -2
- package/dist/{chunk-MOB4JHG6.js → chunk-ENAPZQA6.js} +2 -2
- package/dist/{chunk-DF4SYU4Z.js → chunk-F2UAAI6B.js} +2 -2
- package/dist/{chunk-KXDUSGPM.js → chunk-FKNNWH7P.js} +2 -2
- package/dist/{chunk-74Z2BYEK.js → chunk-GNP4BV4Z.js} +2 -2
- package/dist/{chunk-LGLLCWA2.js → chunk-HWMGQDZI.js} +2 -2
- package/dist/{chunk-PIVSUPF2.js → chunk-IIUEHIQ2.js} +2 -2
- package/dist/{chunk-JFRO5HJY.js → chunk-IPN67KVR.js} +2 -2
- package/dist/chunk-JCL7RO2G.js +674 -0
- package/dist/chunk-JCL7RO2G.js.map +1 -0
- package/dist/{chunk-ZXEPLZUQ.js → chunk-JGSWWD33.js} +7 -7
- package/dist/{chunk-A3UFV4K3.js → chunk-JIYJIH5N.js} +2 -2
- package/dist/{chunk-M7KAJBO2.js → chunk-JKUVPVKR.js} +3 -3
- package/dist/{chunk-L5RMURVI.js → chunk-JL5FHZ7O.js} +29 -5
- package/dist/chunk-JL5FHZ7O.js.map +1 -0
- package/dist/{chunk-QWURVT5Z.js → chunk-L2HSSVVD.js} +2 -2
- package/dist/{chunk-VQ6H4DL6.js → chunk-L334PSLW.js} +4 -4
- package/dist/{chunk-UY67YP6Q.js → chunk-LIUI46BX.js} +2 -2
- package/dist/{chunk-4OFXLQJD.js → chunk-MPDLLLOG.js} +8 -3
- package/dist/chunk-MPDLLLOG.js.map +1 -0
- package/dist/{chunk-2HVCTFKG.js → chunk-MPJ7VHHA.js} +2 -2
- package/dist/{chunk-I6UTOUBK.js → chunk-N7RAABFM.js} +149 -344
- package/dist/chunk-N7RAABFM.js.map +1 -0
- package/dist/{chunk-RSYFSCKL.js → chunk-NSUGAIIB.js} +12 -12
- package/dist/{chunk-Z4EH5TSO.js → chunk-NXHBQC2O.js} +2 -2
- package/dist/{chunk-JEDS2QYV.js → chunk-OH55F76C.js} +2 -2
- package/dist/{chunk-GGHX4YHM.js → chunk-OUJ4DVR5.js} +2 -2
- package/dist/{chunk-2NLLXCJG.js → chunk-OWHERGF2.js} +2 -2
- package/dist/{chunk-4O4VAEWH.js → chunk-P5F7ISLV.js} +2 -2
- package/dist/{chunk-5XY46Z2W.js → chunk-PNVQNAJM.js} +3 -3
- package/dist/{chunk-HL643H2F.js → chunk-PRYDNBCO.js} +7 -7
- package/dist/{chunk-F3GX76LV.js → chunk-PUTH5REB.js} +2 -2
- package/dist/{chunk-IJFX4JRI.js → chunk-RBUR6USI.js} +7 -7
- package/dist/{chunk-JM2WJBP7.js → chunk-RZSHIJYY.js} +2 -2
- package/dist/{chunk-6BKSUA6P.js → chunk-SVTIWBSA.js} +2 -2
- package/dist/{chunk-M3GOWG2P.js → chunk-TBFAQHQZ.js} +2 -2
- package/dist/{chunk-ZRDEOC4X.js → chunk-TKCJI7WA.js} +2 -2
- package/dist/{chunk-NJZY5LOC.js → chunk-TLOAAOT3.js} +2 -2
- package/dist/{chunk-KZMRMKC7.js → chunk-U7MIMS2Y.js} +11 -1
- package/dist/chunk-U7MIMS2Y.js.map +1 -0
- package/dist/{chunk-X7Y7WX73.js → chunk-UVYI6VIX.js} +1 -1
- package/dist/{chunk-GJF337YM.js → chunk-VCYH2XUY.js} +2 -2
- package/dist/{chunk-UP2Q7U4G.js → chunk-WD2QH3JM.js} +2 -2
- package/dist/{chunk-MHSUEA32.js → chunk-WWSJQ7MP.js} +3 -3
- package/dist/{chunk-UIX4JLVV.js → chunk-XAFSZ4DP.js} +2 -2
- package/dist/{chunk-PJLJN23N.js → chunk-XICJL56Z.js} +2 -2
- package/dist/{chunk-C5GTIRIO.js → chunk-XJDSZFBZ.js} +18 -18
- package/dist/cli.js +52 -51
- package/dist/coding/export-okf-codegraph.js +6 -4
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +8 -6
- package/dist/config.js +6 -4
- package/dist/connectors/codex-materialize-runner.js +7 -5
- package/dist/connectors/index.js +7 -5
- package/dist/convergence-refresh.js +9 -7
- package/dist/corpus-watermark.js +9 -7
- package/dist/deep-recall-http-glue.js +4 -4
- package/dist/entity-retrieval.js +7 -5
- package/dist/external-wiki-access.js +22 -21
- package/dist/extraction.js +7 -5
- package/dist/harmonic-retrieval.js +7 -5
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +66 -63
- package/dist/location/index.js +9 -7
- package/dist/maintenance/memory-governance.js +7 -5
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +7 -5
- package/dist/maintenance/rebuild-memory-projection-runner.js +9 -7
- package/dist/maintenance/rebuild-memory-projection.js +8 -6
- package/dist/memory-browse-operations.js +22 -21
- package/dist/namespaces/migrate.js +8 -6
- package/dist/namespaces/search.js +3 -3
- package/dist/namespaces/storage.js +7 -5
- package/dist/operator-doctor-corpus.js +10 -8
- package/dist/operator-toolkit.js +15 -13
- package/dist/orchestration/buffer-drain-gate.d.ts +21 -0
- package/dist/orchestration/buffer-drain-gate.d.ts.map +1 -0
- package/dist/orchestration/buffer-drain-runner.d.ts +79 -0
- package/dist/orchestration/buffer-drain-runner.d.ts.map +1 -0
- package/dist/orchestration/buffer-drain-runner.js +780 -0
- package/dist/orchestration/buffer-drain-runner.js.map +1 -0
- package/dist/orchestration/buffer-swap.d.ts +12 -0
- package/dist/orchestration/buffer-swap.d.ts.map +1 -0
- package/dist/orchestration/maintenance.js +17 -15
- package/dist/orchestration/turn-ingestion.d.ts.map +1 -1
- package/dist/orchestrator.d.ts +4 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +64 -63
- package/dist/recall-navigation-operations.js +22 -21
- package/dist/recall-navigation.js +21 -20
- package/dist/resume-bundles.js +6 -4
- package/dist/search/factory.js +2 -2
- package/dist/search/index.js +4 -4
- package/dist/semantic-consolidation.js +8 -6
- package/dist/semantic-rule-promotion.js +7 -5
- package/dist/semantic-rule-verifier.js +7 -5
- package/dist/source-agent-qualifier.js +7 -5
- package/dist/standup/build.js +7 -5
- package/dist/storage/buffer-drain-claims.d.ts +159 -0
- package/dist/storage/buffer-drain-claims.d.ts.map +1 -0
- package/dist/storage/buffer-drain-claims.js +18 -0
- package/dist/storage/buffer-drain-claims.js.map +1 -0
- package/dist/storage/buffer-session-files.d.ts +14 -2
- package/dist/storage/buffer-session-files.d.ts.map +1 -1
- package/dist/storage/buffer-session-files.js +22 -0
- package/dist/storage/buffer-session-files.js.map +1 -0
- package/dist/storage.d.ts +6 -1
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +6 -4
- package/dist/support-passport/index.js +24 -23
- package/dist/transfer/backup.js +2 -2
- package/dist/transfer/capsule-export.js +2 -2
- package/dist/transfer/capsule-import.js +2 -2
- package/dist/transfer/export-okf.js +7 -5
- package/dist/verified-recall.js +7 -5
- package/dist/who-knows-cli.js +8 -6
- package/dist/who-knows.js +7 -5
- package/package.json +32 -2
- package/src/buffer-drain-handover.test.ts +307 -0
- package/src/buffer-persistence.ts +27 -5
- package/src/buffer-turn-helpers.ts +16 -0
- package/src/buffer.ts +32 -2
- package/src/index.ts +1 -1
- package/src/orchestration/buffer-drain-gate.test.ts +40 -0
- package/src/orchestration/buffer-drain-gate.ts +38 -0
- package/src/orchestration/buffer-drain-runner.ts +312 -0
- package/src/orchestration/buffer-swap.ts +27 -0
- package/src/orchestration/turn-ingestion.ts +2 -0
- package/src/orchestrator.ts +9 -6
- package/src/storage/buffer-drain-claims.test.ts +448 -0
- package/src/storage/buffer-drain-claims.ts +593 -0
- package/src/storage/buffer-session-files.ts +50 -3
- package/src/storage.ts +8 -11
- package/src/testing/subjects/extraction-lifecycle.test.ts +34 -0
- package/dist/chunk-3DG2YAAX.js.map +0 -1
- package/dist/chunk-4OFXLQJD.js.map +0 -1
- package/dist/chunk-I6UTOUBK.js.map +0 -1
- package/dist/chunk-KZMRMKC7.js.map +0 -1
- package/dist/chunk-L5RMURVI.js.map +0 -1
- /package/dist/{capsule-crypto-7FJQINUR.js.map → capsule-crypto-GWVG7LGC.js.map} +0 -0
- /package/dist/{chunk-PRSF7DWT.js.map → chunk-23OEPU3K.js.map} +0 -0
- /package/dist/{chunk-2EJAPJ5G.js.map → chunk-46U6L5DM.js.map} +0 -0
- /package/dist/{chunk-NF5EHQTJ.js.map → chunk-6HTEPYOI.js.map} +0 -0
- /package/dist/{chunk-TIS6T6UP.js.map → chunk-6T4CMKNP.js.map} +0 -0
- /package/dist/{chunk-W37MS6SX.js.map → chunk-73A2DDDR.js.map} +0 -0
- /package/dist/{chunk-X2TZWVCC.js.map → chunk-7AKPLEJV.js.map} +0 -0
- /package/dist/{chunk-T4SMMTGY.js.map → chunk-7OKYO2UC.js.map} +0 -0
- /package/dist/{chunk-WJC5KGYC.js.map → chunk-7ULSP7AU.js.map} +0 -0
- /package/dist/{chunk-J53IBVMF.js.map → chunk-A4FZLM6Q.js.map} +0 -0
- /package/dist/{chunk-KQAFEZQX.js.map → chunk-BUKK5SWA.js.map} +0 -0
- /package/dist/{chunk-JRY55I6Z.js.map → chunk-C2AYUXEF.js.map} +0 -0
- /package/dist/{chunk-PTJWUN4H.js.map → chunk-D3BYJSHX.js.map} +0 -0
- /package/dist/{chunk-ADK5TMQL.js.map → chunk-D4WR56FR.js.map} +0 -0
- /package/dist/{chunk-66CC6L6R.js.map → chunk-DP22K7IC.js.map} +0 -0
- /package/dist/{chunk-AWKADEMO.js.map → chunk-DTQJ7BRN.js.map} +0 -0
- /package/dist/{chunk-IA3XZG4V.js.map → chunk-DZL5PBEJ.js.map} +0 -0
- /package/dist/{chunk-7DHNBABU.js.map → chunk-EGCC5OJE.js.map} +0 -0
- /package/dist/{chunk-N5H22V75.js.map → chunk-EJ4RS7I7.js.map} +0 -0
- /package/dist/{chunk-MOB4JHG6.js.map → chunk-ENAPZQA6.js.map} +0 -0
- /package/dist/{chunk-DF4SYU4Z.js.map → chunk-F2UAAI6B.js.map} +0 -0
- /package/dist/{chunk-KXDUSGPM.js.map → chunk-FKNNWH7P.js.map} +0 -0
- /package/dist/{chunk-74Z2BYEK.js.map → chunk-GNP4BV4Z.js.map} +0 -0
- /package/dist/{chunk-LGLLCWA2.js.map → chunk-HWMGQDZI.js.map} +0 -0
- /package/dist/{chunk-PIVSUPF2.js.map → chunk-IIUEHIQ2.js.map} +0 -0
- /package/dist/{chunk-JFRO5HJY.js.map → chunk-IPN67KVR.js.map} +0 -0
- /package/dist/{chunk-ZXEPLZUQ.js.map → chunk-JGSWWD33.js.map} +0 -0
- /package/dist/{chunk-A3UFV4K3.js.map → chunk-JIYJIH5N.js.map} +0 -0
- /package/dist/{chunk-M7KAJBO2.js.map → chunk-JKUVPVKR.js.map} +0 -0
- /package/dist/{chunk-QWURVT5Z.js.map → chunk-L2HSSVVD.js.map} +0 -0
- /package/dist/{chunk-VQ6H4DL6.js.map → chunk-L334PSLW.js.map} +0 -0
- /package/dist/{chunk-UY67YP6Q.js.map → chunk-LIUI46BX.js.map} +0 -0
- /package/dist/{chunk-2HVCTFKG.js.map → chunk-MPJ7VHHA.js.map} +0 -0
- /package/dist/{chunk-RSYFSCKL.js.map → chunk-NSUGAIIB.js.map} +0 -0
- /package/dist/{chunk-Z4EH5TSO.js.map → chunk-NXHBQC2O.js.map} +0 -0
- /package/dist/{chunk-JEDS2QYV.js.map → chunk-OH55F76C.js.map} +0 -0
- /package/dist/{chunk-GGHX4YHM.js.map → chunk-OUJ4DVR5.js.map} +0 -0
- /package/dist/{chunk-2NLLXCJG.js.map → chunk-OWHERGF2.js.map} +0 -0
- /package/dist/{chunk-4O4VAEWH.js.map → chunk-P5F7ISLV.js.map} +0 -0
- /package/dist/{chunk-5XY46Z2W.js.map → chunk-PNVQNAJM.js.map} +0 -0
- /package/dist/{chunk-HL643H2F.js.map → chunk-PRYDNBCO.js.map} +0 -0
- /package/dist/{chunk-F3GX76LV.js.map → chunk-PUTH5REB.js.map} +0 -0
- /package/dist/{chunk-IJFX4JRI.js.map → chunk-RBUR6USI.js.map} +0 -0
- /package/dist/{chunk-JM2WJBP7.js.map → chunk-RZSHIJYY.js.map} +0 -0
- /package/dist/{chunk-6BKSUA6P.js.map → chunk-SVTIWBSA.js.map} +0 -0
- /package/dist/{chunk-M3GOWG2P.js.map → chunk-TBFAQHQZ.js.map} +0 -0
- /package/dist/{chunk-ZRDEOC4X.js.map → chunk-TKCJI7WA.js.map} +0 -0
- /package/dist/{chunk-NJZY5LOC.js.map → chunk-TLOAAOT3.js.map} +0 -0
- /package/dist/{chunk-X7Y7WX73.js.map → chunk-UVYI6VIX.js.map} +0 -0
- /package/dist/{chunk-GJF337YM.js.map → chunk-VCYH2XUY.js.map} +0 -0
- /package/dist/{chunk-UP2Q7U4G.js.map → chunk-WD2QH3JM.js.map} +0 -0
- /package/dist/{chunk-MHSUEA32.js.map → chunk-WWSJQ7MP.js.map} +0 -0
- /package/dist/{chunk-UIX4JLVV.js.map → chunk-XAFSZ4DP.js.map} +0 -0
- /package/dist/{chunk-PJLJN23N.js.map → chunk-XICJL56Z.js.map} +0 -0
- /package/dist/{chunk-C5GTIRIO.js.map → chunk-XJDSZFBZ.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -91,21 +91,21 @@ import {
|
|
|
91
91
|
runWorkProductStatusCliCommand,
|
|
92
92
|
runWorkProjectCliCommand,
|
|
93
93
|
runWorkTaskCliCommand
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-D3BYJSHX.js";
|
|
95
95
|
import "./chunk-MMACM5G2.js";
|
|
96
96
|
import "./chunk-54BGIBCR.js";
|
|
97
97
|
import "./chunk-H4CKS5B2.js";
|
|
98
98
|
import "./chunk-FXZTL7F7.js";
|
|
99
|
-
import "./chunk-UP6MOYCB.js";
|
|
100
|
-
import "./chunk-6BKSUA6P.js";
|
|
101
|
-
import "./chunk-BV2TIZ4F.js";
|
|
102
99
|
import "./chunk-HDDRVXX4.js";
|
|
103
100
|
import "./chunk-PYHOAXTI.js";
|
|
101
|
+
import "./chunk-UP6MOYCB.js";
|
|
102
|
+
import "./chunk-SVTIWBSA.js";
|
|
103
|
+
import "./chunk-BV2TIZ4F.js";
|
|
104
104
|
import "./chunk-Z734BLO3.js";
|
|
105
105
|
import "./chunk-OZKVVUJB.js";
|
|
106
106
|
import "./chunk-2DL3OFLD.js";
|
|
107
107
|
import "./chunk-G4IAEX6D.js";
|
|
108
|
-
import "./chunk-
|
|
108
|
+
import "./chunk-OWHERGF2.js";
|
|
109
109
|
import "./chunk-765K3SAT.js";
|
|
110
110
|
import "./chunk-FGDKJJZS.js";
|
|
111
111
|
import "./chunk-AJVLDJU6.js";
|
|
@@ -116,29 +116,29 @@ import "./chunk-WHCD4Z3D.js";
|
|
|
116
116
|
import "./chunk-7IGMKQWK.js";
|
|
117
117
|
import "./chunk-EDR6CVWZ.js";
|
|
118
118
|
import "./chunk-YQJCWR4R.js";
|
|
119
|
-
import "./chunk-
|
|
119
|
+
import "./chunk-ENAPZQA6.js";
|
|
120
120
|
import "./chunk-I7TR2OCU.js";
|
|
121
121
|
import "./chunk-2524MOWK.js";
|
|
122
122
|
import "./chunk-HSSERO3E.js";
|
|
123
123
|
import "./chunk-NOUJNHWG.js";
|
|
124
124
|
import "./chunk-WLT6LTQP.js";
|
|
125
125
|
import "./chunk-EOU6V4IN.js";
|
|
126
|
-
import "./chunk-
|
|
126
|
+
import "./chunk-DP22K7IC.js";
|
|
127
127
|
import "./chunk-HL4DB7TO.js";
|
|
128
128
|
import "./chunk-R7WYAXPO.js";
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
129
|
+
import "./chunk-OUJ4DVR5.js";
|
|
130
|
+
import "./chunk-L2HSSVVD.js";
|
|
131
131
|
import "./chunk-G6GMZJQ4.js";
|
|
132
132
|
import "./chunk-B2NXOVZN.js";
|
|
133
133
|
import "./chunk-HDN7IVIO.js";
|
|
134
134
|
import "./chunk-LR7RW4T6.js";
|
|
135
135
|
import "./chunk-3T74IZB3.js";
|
|
136
136
|
import "./chunk-2LA3H54D.js";
|
|
137
|
-
import "./chunk-
|
|
138
|
-
import "./chunk-
|
|
137
|
+
import "./chunk-PRYDNBCO.js";
|
|
138
|
+
import "./chunk-DTQJ7BRN.js";
|
|
139
139
|
import "./chunk-KFY3SGN7.js";
|
|
140
140
|
import "./chunk-CMTINOFS.js";
|
|
141
|
-
import "./chunk-
|
|
141
|
+
import "./chunk-FKNNWH7P.js";
|
|
142
142
|
import "./chunk-I6ORDT54.js";
|
|
143
143
|
import "./chunk-BCCG7VWM.js";
|
|
144
144
|
import "./chunk-GGRRF4PZ.js";
|
|
@@ -151,7 +151,7 @@ import "./chunk-YNDLCWXS.js";
|
|
|
151
151
|
import "./chunk-AUDJPF4N.js";
|
|
152
152
|
import "./chunk-44442YCH.js";
|
|
153
153
|
import "./chunk-Y4Z4I6WK.js";
|
|
154
|
-
import "./chunk-
|
|
154
|
+
import "./chunk-EGCC5OJE.js";
|
|
155
155
|
import "./chunk-KJTKLXTH.js";
|
|
156
156
|
import "./chunk-2DQ2XREU.js";
|
|
157
157
|
import "./chunk-OKTXM5H4.js";
|
|
@@ -190,7 +190,7 @@ import "./chunk-G2XTGEGL.js";
|
|
|
190
190
|
import "./chunk-27NO2KVB.js";
|
|
191
191
|
import "./chunk-KFZY2OFH.js";
|
|
192
192
|
import "./chunk-B32WYRXX.js";
|
|
193
|
-
import "./chunk-
|
|
193
|
+
import "./chunk-NSUGAIIB.js";
|
|
194
194
|
import "./chunk-V7IZKJI3.js";
|
|
195
195
|
import "./chunk-XW2T4QAW.js";
|
|
196
196
|
import "./chunk-64S6X4IU.js";
|
|
@@ -203,11 +203,11 @@ import "./chunk-NJAIR57U.js";
|
|
|
203
203
|
import "./chunk-2TGIKMMZ.js";
|
|
204
204
|
import "./chunk-SDESKFKT.js";
|
|
205
205
|
import "./chunk-3HSRWJTC.js";
|
|
206
|
-
import "./chunk-
|
|
207
|
-
import "./chunk-
|
|
208
|
-
import "./chunk-
|
|
206
|
+
import "./chunk-C2AYUXEF.js";
|
|
207
|
+
import "./chunk-RZSHIJYY.js";
|
|
208
|
+
import "./chunk-NXHBQC2O.js";
|
|
209
209
|
import "./chunk-SRT6SHVZ.js";
|
|
210
|
-
import "./chunk-
|
|
210
|
+
import "./chunk-6HTEPYOI.js";
|
|
211
211
|
import "./chunk-TE6S7KDF.js";
|
|
212
212
|
import "./chunk-MZUQVWVC.js";
|
|
213
213
|
import "./chunk-EIB4FJVR.js";
|
|
@@ -215,18 +215,18 @@ import "./chunk-A5KNZSNA.js";
|
|
|
215
215
|
import "./chunk-HUSTM6PU.js";
|
|
216
216
|
import "./chunk-D24OXEPB.js";
|
|
217
217
|
import "./chunk-KJ3MDX4V.js";
|
|
218
|
-
import "./chunk-
|
|
219
|
-
import "./chunk-
|
|
220
|
-
import "./chunk-
|
|
221
|
-
import "./chunk-
|
|
222
|
-
import "./chunk-
|
|
223
|
-
import "./chunk-
|
|
224
|
-
import "./chunk-
|
|
218
|
+
import "./chunk-7ULSP7AU.js";
|
|
219
|
+
import "./chunk-IPN67KVR.js";
|
|
220
|
+
import "./chunk-P5F7ISLV.js";
|
|
221
|
+
import "./chunk-WWSJQ7MP.js";
|
|
222
|
+
import "./chunk-7OKYO2UC.js";
|
|
223
|
+
import "./chunk-6T4CMKNP.js";
|
|
224
|
+
import "./chunk-23OEPU3K.js";
|
|
225
225
|
import "./chunk-7T4TOGMS.js";
|
|
226
226
|
import "./chunk-7YQ6ESEA.js";
|
|
227
|
-
import "./chunk-
|
|
228
|
-
import "./chunk-PQM3B54K.js";
|
|
227
|
+
import "./chunk-RBUR6USI.js";
|
|
229
228
|
import "./chunk-HJ3UTGIW.js";
|
|
229
|
+
import "./chunk-PQM3B54K.js";
|
|
230
230
|
import "./chunk-EKPRLTAE.js";
|
|
231
231
|
import "./chunk-CEN6DW6X.js";
|
|
232
232
|
import "./chunk-E4RMZGRS.js";
|
|
@@ -235,23 +235,23 @@ import "./chunk-2FLFJTCI.js";
|
|
|
235
235
|
import "./chunk-JATHBCAV.js";
|
|
236
236
|
import "./chunk-ZQUVBZI4.js";
|
|
237
237
|
import "./chunk-5R627MYY.js";
|
|
238
|
-
import "./chunk-
|
|
239
|
-
import "./chunk-
|
|
238
|
+
import "./chunk-EJ4RS7I7.js";
|
|
239
|
+
import "./chunk-TKCJI7WA.js";
|
|
240
240
|
import "./chunk-AB3A7EFH.js";
|
|
241
241
|
import "./chunk-KIUVEMBI.js";
|
|
242
|
-
import "./chunk-
|
|
242
|
+
import "./chunk-D4WR56FR.js";
|
|
243
243
|
import "./chunk-2BPPGNAQ.js";
|
|
244
244
|
import "./chunk-DJSJ4ULL.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
-
import "./chunk-
|
|
245
|
+
import "./chunk-7AKPLEJV.js";
|
|
246
|
+
import "./chunk-XJDSZFBZ.js";
|
|
247
247
|
import "./chunk-W4F3C7N7.js";
|
|
248
248
|
import "./chunk-MPC7TYTZ.js";
|
|
249
|
-
import "./chunk-
|
|
249
|
+
import "./chunk-JIYJIH5N.js";
|
|
250
250
|
import "./chunk-IFBSZGW3.js";
|
|
251
251
|
import "./chunk-VSHWPOUB.js";
|
|
252
252
|
import "./chunk-VQ7B2Q6M.js";
|
|
253
253
|
import "./chunk-OGXXGHW6.js";
|
|
254
|
-
import "./chunk-
|
|
254
|
+
import "./chunk-A4FZLM6Q.js";
|
|
255
255
|
import "./chunk-BANSBRNX.js";
|
|
256
256
|
import "./chunk-GNVZQ5JN.js";
|
|
257
257
|
import "./chunk-YN2UN7N3.js";
|
|
@@ -275,7 +275,7 @@ import "./chunk-WUL6LDJ4.js";
|
|
|
275
275
|
import "./chunk-SOBJ6NEY.js";
|
|
276
276
|
import "./chunk-VHBGJAYC.js";
|
|
277
277
|
import "./chunk-HSHLDSPX.js";
|
|
278
|
-
import "./chunk-
|
|
278
|
+
import "./chunk-HWMGQDZI.js";
|
|
279
279
|
import "./chunk-B6SPPYGJ.js";
|
|
280
280
|
import "./chunk-UD7UNYRD.js";
|
|
281
281
|
import "./chunk-Z64TS5V4.js";
|
|
@@ -285,7 +285,7 @@ import "./chunk-IISBCCWR.js";
|
|
|
285
285
|
import "./chunk-4PG5R6BJ.js";
|
|
286
286
|
import "./chunk-BJLCV2P3.js";
|
|
287
287
|
import "./chunk-2YA5N2BY.js";
|
|
288
|
-
import "./chunk-
|
|
288
|
+
import "./chunk-F2UAAI6B.js";
|
|
289
289
|
import "./chunk-HUDPXTXW.js";
|
|
290
290
|
import "./chunk-AZEZSQ5R.js";
|
|
291
291
|
import "./chunk-MKE5DP3S.js";
|
|
@@ -306,13 +306,13 @@ import "./chunk-HXFIILGF.js";
|
|
|
306
306
|
import "./chunk-WTWQA7BB.js";
|
|
307
307
|
import "./chunk-VZIAVM72.js";
|
|
308
308
|
import "./chunk-HRATODNO.js";
|
|
309
|
-
import "./chunk-
|
|
310
|
-
import "./chunk-
|
|
311
|
-
import "./chunk-
|
|
309
|
+
import "./chunk-46U6L5DM.js";
|
|
310
|
+
import "./chunk-PNVQNAJM.js";
|
|
311
|
+
import "./chunk-TBFAQHQZ.js";
|
|
312
312
|
import "./chunk-UFGFMWAD.js";
|
|
313
313
|
import "./chunk-LXATZLSC.js";
|
|
314
|
-
import "./chunk-
|
|
315
|
-
import "./chunk-
|
|
314
|
+
import "./chunk-DZL5PBEJ.js";
|
|
315
|
+
import "./chunk-GNP4BV4Z.js";
|
|
316
316
|
import "./chunk-3UXOZBHV.js";
|
|
317
317
|
import "./chunk-AL3TCNSJ.js";
|
|
318
318
|
import "./chunk-QKXPOLQD.js";
|
|
@@ -326,14 +326,13 @@ import "./chunk-R4ZHF4K2.js";
|
|
|
326
326
|
import "./chunk-CSAKJVXW.js";
|
|
327
327
|
import "./chunk-K2XUWZBM.js";
|
|
328
328
|
import "./chunk-OD4FM2U7.js";
|
|
329
|
-
import "./chunk-KZMRMKC7.js";
|
|
330
329
|
import "./chunk-74AY3S7U.js";
|
|
331
330
|
import "./chunk-T6OZW2WR.js";
|
|
332
331
|
import "./chunk-QEDLJDHP.js";
|
|
333
332
|
import "./chunk-U4LUIE6Y.js";
|
|
334
333
|
import "./chunk-5YQXWVCP.js";
|
|
335
334
|
import "./chunk-ZY2MNJR6.js";
|
|
336
|
-
import "./chunk-
|
|
335
|
+
import "./chunk-73A2DDDR.js";
|
|
337
336
|
import "./chunk-X2KO4FK5.js";
|
|
338
337
|
import "./chunk-GZFKCLRC.js";
|
|
339
338
|
import "./chunk-EKUI7I2X.js";
|
|
@@ -357,13 +356,15 @@ import "./chunk-ZCUTSMR2.js";
|
|
|
357
356
|
import "./chunk-QDW3E4RD.js";
|
|
358
357
|
import "./chunk-4P4VLPGB.js";
|
|
359
358
|
import "./chunk-ZJP66Q4I.js";
|
|
360
|
-
import "./chunk-
|
|
359
|
+
import "./chunk-N7RAABFM.js";
|
|
361
360
|
import "./chunk-UHVXE24Y.js";
|
|
362
361
|
import "./chunk-DM5QZ3YU.js";
|
|
363
362
|
import "./chunk-WVEEVYMH.js";
|
|
363
|
+
import "./chunk-JCL7RO2G.js";
|
|
364
364
|
import "./chunk-G6OFEGUR.js";
|
|
365
|
-
import "./chunk-
|
|
366
|
-
import "./chunk-
|
|
365
|
+
import "./chunk-OH55F76C.js";
|
|
366
|
+
import "./chunk-L334PSLW.js";
|
|
367
|
+
import "./chunk-CYEPCZN5.js";
|
|
367
368
|
import "./chunk-DLZGSZVC.js";
|
|
368
369
|
import "./chunk-OVZIYLBZ.js";
|
|
369
370
|
import "./chunk-EXYT52NR.js";
|
|
@@ -371,7 +372,6 @@ import "./chunk-DOJBV6WR.js";
|
|
|
371
372
|
import "./chunk-PFUXPTBT.js";
|
|
372
373
|
import "./chunk-WNEVEMJ3.js";
|
|
373
374
|
import "./chunk-Y5NLBXPV.js";
|
|
374
|
-
import "./chunk-CYEPCZN5.js";
|
|
375
375
|
import "./chunk-TFA6HPOA.js";
|
|
376
376
|
import "./chunk-F4TWWUMP.js";
|
|
377
377
|
import "./chunk-72A4L5JJ.js";
|
|
@@ -415,6 +415,7 @@ import "./chunk-OR42ZI54.js";
|
|
|
415
415
|
import "./chunk-23G5P7TA.js";
|
|
416
416
|
import "./chunk-C64XATK7.js";
|
|
417
417
|
import "./chunk-42JKGUFJ.js";
|
|
418
|
+
import "./chunk-U7MIMS2Y.js";
|
|
418
419
|
import "./chunk-AVVCPA7U.js";
|
|
419
420
|
import "./chunk-I55KAVET.js";
|
|
420
421
|
import "./chunk-L2EXJQJP.js";
|
|
@@ -435,16 +436,16 @@ import "./chunk-PARM6OYL.js";
|
|
|
435
436
|
import "./chunk-YBA52OKG.js";
|
|
436
437
|
import "./chunk-RMMA44HE.js";
|
|
437
438
|
import "./chunk-YLXETSAH.js";
|
|
438
|
-
import "./chunk-
|
|
439
|
+
import "./chunk-XICJL56Z.js";
|
|
439
440
|
import "./chunk-S4OZKPBS.js";
|
|
440
441
|
import "./chunk-353C5UNV.js";
|
|
441
442
|
import "./chunk-TWRPWJJT.js";
|
|
442
443
|
import "./chunk-BT7NVCML.js";
|
|
443
444
|
import "./chunk-SDXBR5QO.js";
|
|
444
|
-
import "./chunk-
|
|
445
|
-
import "./chunk-
|
|
445
|
+
import "./chunk-LIUI46BX.js";
|
|
446
|
+
import "./chunk-BUKK5SWA.js";
|
|
446
447
|
import "./chunk-WEHSQBFR.js";
|
|
447
|
-
import "./chunk-
|
|
448
|
+
import "./chunk-UVYI6VIX.js";
|
|
448
449
|
import "./chunk-J4EB7DNW.js";
|
|
449
450
|
import "./chunk-Z2YFLXHU.js";
|
|
450
451
|
import "./chunk-I4WBNM3M.js";
|
|
@@ -24,13 +24,15 @@ import "../chunk-FEHIOYML.js";
|
|
|
24
24
|
import "../chunk-P32IDSHD.js";
|
|
25
25
|
import {
|
|
26
26
|
StorageManager
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-N7RAABFM.js";
|
|
28
28
|
import "../chunk-UHVXE24Y.js";
|
|
29
29
|
import "../chunk-DM5QZ3YU.js";
|
|
30
30
|
import "../chunk-WVEEVYMH.js";
|
|
31
|
+
import "../chunk-JCL7RO2G.js";
|
|
31
32
|
import "../chunk-G6OFEGUR.js";
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
33
|
+
import "../chunk-OH55F76C.js";
|
|
34
|
+
import "../chunk-L334PSLW.js";
|
|
35
|
+
import "../chunk-CYEPCZN5.js";
|
|
34
36
|
import "../chunk-DLZGSZVC.js";
|
|
35
37
|
import "../chunk-OVZIYLBZ.js";
|
|
36
38
|
import "../chunk-EXYT52NR.js";
|
|
@@ -38,7 +40,6 @@ import "../chunk-DOJBV6WR.js";
|
|
|
38
40
|
import "../chunk-PFUXPTBT.js";
|
|
39
41
|
import "../chunk-WNEVEMJ3.js";
|
|
40
42
|
import "../chunk-Y5NLBXPV.js";
|
|
41
|
-
import "../chunk-CYEPCZN5.js";
|
|
42
43
|
import "../chunk-TFA6HPOA.js";
|
|
43
44
|
import "../chunk-F4TWWUMP.js";
|
|
44
45
|
import "../chunk-72A4L5JJ.js";
|
|
@@ -86,6 +87,7 @@ import "../chunk-OR42ZI54.js";
|
|
|
86
87
|
import "../chunk-23G5P7TA.js";
|
|
87
88
|
import "../chunk-C64XATK7.js";
|
|
88
89
|
import "../chunk-42JKGUFJ.js";
|
|
90
|
+
import "../chunk-U7MIMS2Y.js";
|
|
89
91
|
import "../chunk-AVVCPA7U.js";
|
|
90
92
|
import "../chunk-I55KAVET.js";
|
|
91
93
|
import "../chunk-L2EXJQJP.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,18 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
CompoundingEngine,
|
|
3
3
|
defaultTierMigrationCycleBudget
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-JKUVPVKR.js";
|
|
5
5
|
import "../chunk-5KBIOI4G.js";
|
|
6
6
|
import "../chunk-OGXXGHW6.js";
|
|
7
7
|
import "../chunk-WR5POHQ3.js";
|
|
8
|
-
import "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
import "../chunk-TBFAQHQZ.js";
|
|
9
|
+
import "../chunk-N7RAABFM.js";
|
|
10
10
|
import "../chunk-UHVXE24Y.js";
|
|
11
11
|
import "../chunk-DM5QZ3YU.js";
|
|
12
12
|
import "../chunk-WVEEVYMH.js";
|
|
13
|
+
import "../chunk-JCL7RO2G.js";
|
|
13
14
|
import "../chunk-G6OFEGUR.js";
|
|
14
|
-
import "../chunk-
|
|
15
|
-
import "../chunk-
|
|
15
|
+
import "../chunk-OH55F76C.js";
|
|
16
|
+
import "../chunk-L334PSLW.js";
|
|
17
|
+
import "../chunk-CYEPCZN5.js";
|
|
16
18
|
import "../chunk-DLZGSZVC.js";
|
|
17
19
|
import "../chunk-OVZIYLBZ.js";
|
|
18
20
|
import "../chunk-EXYT52NR.js";
|
|
@@ -20,7 +22,6 @@ import "../chunk-DOJBV6WR.js";
|
|
|
20
22
|
import "../chunk-PFUXPTBT.js";
|
|
21
23
|
import "../chunk-WNEVEMJ3.js";
|
|
22
24
|
import "../chunk-Y5NLBXPV.js";
|
|
23
|
-
import "../chunk-CYEPCZN5.js";
|
|
24
25
|
import "../chunk-TFA6HPOA.js";
|
|
25
26
|
import "../chunk-F4TWWUMP.js";
|
|
26
27
|
import "../chunk-72A4L5JJ.js";
|
|
@@ -64,6 +65,7 @@ import "../chunk-OR42ZI54.js";
|
|
|
64
65
|
import "../chunk-23G5P7TA.js";
|
|
65
66
|
import "../chunk-C64XATK7.js";
|
|
66
67
|
import "../chunk-42JKGUFJ.js";
|
|
68
|
+
import "../chunk-U7MIMS2Y.js";
|
|
67
69
|
import "../chunk-AVVCPA7U.js";
|
|
68
70
|
import "../chunk-I55KAVET.js";
|
|
69
71
|
import "../chunk-L2EXJQJP.js";
|
package/dist/config.js
CHANGED
|
@@ -49,13 +49,15 @@ import "./chunk-ZCUTSMR2.js";
|
|
|
49
49
|
import "./chunk-QDW3E4RD.js";
|
|
50
50
|
import "./chunk-4P4VLPGB.js";
|
|
51
51
|
import "./chunk-ZJP66Q4I.js";
|
|
52
|
-
import "./chunk-
|
|
52
|
+
import "./chunk-N7RAABFM.js";
|
|
53
53
|
import "./chunk-UHVXE24Y.js";
|
|
54
54
|
import "./chunk-DM5QZ3YU.js";
|
|
55
55
|
import "./chunk-WVEEVYMH.js";
|
|
56
|
+
import "./chunk-JCL7RO2G.js";
|
|
56
57
|
import "./chunk-G6OFEGUR.js";
|
|
57
|
-
import "./chunk-
|
|
58
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-OH55F76C.js";
|
|
59
|
+
import "./chunk-L334PSLW.js";
|
|
60
|
+
import "./chunk-CYEPCZN5.js";
|
|
59
61
|
import "./chunk-DLZGSZVC.js";
|
|
60
62
|
import "./chunk-OVZIYLBZ.js";
|
|
61
63
|
import "./chunk-EXYT52NR.js";
|
|
@@ -63,7 +65,6 @@ import "./chunk-DOJBV6WR.js";
|
|
|
63
65
|
import "./chunk-PFUXPTBT.js";
|
|
64
66
|
import "./chunk-WNEVEMJ3.js";
|
|
65
67
|
import "./chunk-Y5NLBXPV.js";
|
|
66
|
-
import "./chunk-CYEPCZN5.js";
|
|
67
68
|
import "./chunk-TFA6HPOA.js";
|
|
68
69
|
import "./chunk-F4TWWUMP.js";
|
|
69
70
|
import "./chunk-72A4L5JJ.js";
|
|
@@ -107,6 +108,7 @@ import "./chunk-OR42ZI54.js";
|
|
|
107
108
|
import "./chunk-23G5P7TA.js";
|
|
108
109
|
import "./chunk-C64XATK7.js";
|
|
109
110
|
import "./chunk-42JKGUFJ.js";
|
|
111
|
+
import "./chunk-U7MIMS2Y.js";
|
|
110
112
|
import "./chunk-AVVCPA7U.js";
|
|
111
113
|
import "./chunk-I55KAVET.js";
|
|
112
114
|
import "./chunk-L2EXJQJP.js";
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import {
|
|
2
2
|
runCodexMaterialize,
|
|
3
3
|
runPostConsolidationMaterialize
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-GNP4BV4Z.js";
|
|
5
5
|
import "../chunk-3UXOZBHV.js";
|
|
6
6
|
import "../chunk-AL3TCNSJ.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-
|
|
11
|
+
import "../chunk-N7RAABFM.js";
|
|
12
12
|
import "../chunk-UHVXE24Y.js";
|
|
13
13
|
import "../chunk-DM5QZ3YU.js";
|
|
14
14
|
import "../chunk-WVEEVYMH.js";
|
|
15
|
+
import "../chunk-JCL7RO2G.js";
|
|
15
16
|
import "../chunk-G6OFEGUR.js";
|
|
16
|
-
import "../chunk-
|
|
17
|
-
import "../chunk-
|
|
17
|
+
import "../chunk-OH55F76C.js";
|
|
18
|
+
import "../chunk-L334PSLW.js";
|
|
19
|
+
import "../chunk-CYEPCZN5.js";
|
|
18
20
|
import "../chunk-DLZGSZVC.js";
|
|
19
21
|
import "../chunk-OVZIYLBZ.js";
|
|
20
22
|
import "../chunk-EXYT52NR.js";
|
|
@@ -22,7 +24,6 @@ import "../chunk-DOJBV6WR.js";
|
|
|
22
24
|
import "../chunk-PFUXPTBT.js";
|
|
23
25
|
import "../chunk-WNEVEMJ3.js";
|
|
24
26
|
import "../chunk-Y5NLBXPV.js";
|
|
25
|
-
import "../chunk-CYEPCZN5.js";
|
|
26
27
|
import "../chunk-TFA6HPOA.js";
|
|
27
28
|
import "../chunk-F4TWWUMP.js";
|
|
28
29
|
import "../chunk-72A4L5JJ.js";
|
|
@@ -66,6 +67,7 @@ import "../chunk-OR42ZI54.js";
|
|
|
66
67
|
import "../chunk-23G5P7TA.js";
|
|
67
68
|
import "../chunk-C64XATK7.js";
|
|
68
69
|
import "../chunk-42JKGUFJ.js";
|
|
70
|
+
import "../chunk-U7MIMS2Y.js";
|
|
69
71
|
import "../chunk-AVVCPA7U.js";
|
|
70
72
|
import "../chunk-I55KAVET.js";
|
|
71
73
|
import "../chunk-L2EXJQJP.js";
|
package/dist/connectors/index.js
CHANGED
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
import "../chunk-V27FK6D6.js";
|
|
34
34
|
import {
|
|
35
35
|
runCodexMaterialize
|
|
36
|
-
} from "../chunk-
|
|
36
|
+
} from "../chunk-GNP4BV4Z.js";
|
|
37
37
|
import "../chunk-3UXOZBHV.js";
|
|
38
38
|
import {
|
|
39
39
|
MATERIALIZE_VERSION,
|
|
@@ -58,13 +58,15 @@ import {
|
|
|
58
58
|
import "../chunk-236PXYG7.js";
|
|
59
59
|
import "../chunk-ZCUTSMR2.js";
|
|
60
60
|
import "../chunk-QDW3E4RD.js";
|
|
61
|
-
import "../chunk-
|
|
61
|
+
import "../chunk-N7RAABFM.js";
|
|
62
62
|
import "../chunk-UHVXE24Y.js";
|
|
63
63
|
import "../chunk-DM5QZ3YU.js";
|
|
64
64
|
import "../chunk-WVEEVYMH.js";
|
|
65
|
+
import "../chunk-JCL7RO2G.js";
|
|
65
66
|
import "../chunk-G6OFEGUR.js";
|
|
66
|
-
import "../chunk-
|
|
67
|
-
import "../chunk-
|
|
67
|
+
import "../chunk-OH55F76C.js";
|
|
68
|
+
import "../chunk-L334PSLW.js";
|
|
69
|
+
import "../chunk-CYEPCZN5.js";
|
|
68
70
|
import "../chunk-DLZGSZVC.js";
|
|
69
71
|
import "../chunk-OVZIYLBZ.js";
|
|
70
72
|
import "../chunk-EXYT52NR.js";
|
|
@@ -72,7 +74,6 @@ import "../chunk-DOJBV6WR.js";
|
|
|
72
74
|
import "../chunk-PFUXPTBT.js";
|
|
73
75
|
import "../chunk-WNEVEMJ3.js";
|
|
74
76
|
import "../chunk-Y5NLBXPV.js";
|
|
75
|
-
import "../chunk-CYEPCZN5.js";
|
|
76
77
|
import "../chunk-TFA6HPOA.js";
|
|
77
78
|
import "../chunk-F4TWWUMP.js";
|
|
78
79
|
import "../chunk-72A4L5JJ.js";
|
|
@@ -116,6 +117,7 @@ import "../chunk-OR42ZI54.js";
|
|
|
116
117
|
import "../chunk-23G5P7TA.js";
|
|
117
118
|
import "../chunk-C64XATK7.js";
|
|
118
119
|
import "../chunk-42JKGUFJ.js";
|
|
120
|
+
import "../chunk-U7MIMS2Y.js";
|
|
119
121
|
import "../chunk-AVVCPA7U.js";
|
|
120
122
|
import "../chunk-I55KAVET.js";
|
|
121
123
|
import "../chunk-L2EXJQJP.js";
|