@remnic/core 10.0.58 → 10.0.60
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 +49 -47
- package/dist/access-authorization-probe.js +50 -48
- package/dist/access-boundary.js +49 -47
- package/dist/access-cli.js +136 -134
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +49 -47
- package/dist/access-http-briefing.js +50 -48
- package/dist/access-http-query.js +51 -49
- package/dist/access-http.js +72 -70
- package/dist/access-identity-continuity-surface.js +49 -47
- package/dist/access-lcm-surface.js +49 -47
- package/dist/access-mcp.js +60 -58
- package/dist/access-namespace-preflight.js +49 -47
- package/dist/access-observe-write-category.js +8 -8
- package/dist/access-observe-write-surface.js +49 -47
- package/dist/access-offline-manifest.js +7 -7
- package/dist/access-operations-batch.js +52 -50
- package/dist/access-operations.js +59 -57
- package/dist/access-recall-concurrency.js +49 -47
- package/dist/access-recall-response.js +49 -47
- package/dist/access-recall-surface.js +49 -47
- package/dist/access-schema.js +7 -7
- package/dist/access-service.js +49 -47
- package/dist/access-surface-catalog.js +51 -49
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +23 -21
- package/dist/active-recall.js.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/registry.js +3 -3
- package/dist/briefing.js +15 -13
- package/dist/buffer.js +5 -5
- package/dist/causal-behavior.js +2 -2
- package/dist/causal-chain.js +2 -2
- package/dist/causal-consolidation.js +18 -16
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/causal-retrieval.js +2 -2
- package/dist/causal-trajectory-graph.js +2 -2
- package/dist/causal-trajectory.js +1 -1
- package/dist/{chunk-XDKEHZUC.js → chunk-264B57GV.js} +2 -2
- package/dist/{chunk-UQYBPPVC.js → chunk-2EJAPJ5G.js} +20 -10
- package/dist/chunk-2EJAPJ5G.js.map +1 -0
- package/dist/{chunk-LTDK6HBV.js → chunk-2HVCTFKG.js} +2 -2
- package/dist/{chunk-E2YAGEFR.js → chunk-3DG2YAAX.js} +86 -86
- package/dist/chunk-4LZ7SVKM.js +211 -0
- package/dist/chunk-4LZ7SVKM.js.map +1 -0
- package/dist/{chunk-LIVNX7WK.js → chunk-4O4VAEWH.js} +2 -2
- package/dist/{chunk-NRGQ5HJO.js → chunk-4P4VLPGB.js} +1 -1
- package/dist/{chunk-GIRWNTMV.js → chunk-4PG5R6BJ.js} +2 -2
- package/dist/{chunk-AOSCGNIC.js → chunk-5XY46Z2W.js} +3 -3
- package/dist/{chunk-52II7PB6.js → chunk-645WOU5I.js} +4 -4
- package/dist/{chunk-RG3I2663.js → chunk-64JLBFCQ.js} +2 -2
- package/dist/{chunk-G3T6YMBO.js → chunk-64S6X4IU.js} +7 -7
- package/dist/{chunk-XHEKS4UN.js → chunk-66CC6L6R.js} +2 -2
- package/dist/{chunk-3632XJMR.js → chunk-6BKSUA6P.js} +2 -2
- package/dist/{chunk-6AEKSOWV.js → chunk-6I6DFULH.js} +8 -8
- package/dist/{chunk-2EYCW2ET.js → chunk-74Z2BYEK.js} +2 -2
- package/dist/{chunk-QAHP5SBG.js → chunk-7DHNBABU.js} +3 -3
- package/dist/{chunk-HJ4X4BGS.js → chunk-ADK5TMQL.js} +2 -2
- package/dist/{chunk-KCTL5EY7.js → chunk-AWKADEMO.js} +3 -3
- package/dist/{chunk-VV73XT3A.js → chunk-BJLCV2P3.js} +2 -2
- package/dist/{chunk-QF5EJ5VP.js → chunk-C5GTIRIO.js} +38 -38
- package/dist/{chunk-LRVFS4KA.js → chunk-DF4SYU4Z.js} +2 -2
- package/dist/{chunk-WBN66HPI.js → chunk-ELHJK7LM.js} +6 -6
- package/dist/{chunk-6CDNOREO.js → chunk-F3GX76LV.js} +2 -2
- package/dist/{chunk-AAANTXCQ.js → chunk-FZVZYU5C.js} +2 -2
- package/dist/{chunk-ON77FQXH.js → chunk-G6GMZJQ4.js} +2 -2
- package/dist/{chunk-HJQ4NKKO.js → chunk-GGHX4YHM.js} +2 -2
- package/dist/{chunk-HM3ZTDAX.js → chunk-GJF337YM.js} +2 -2
- package/dist/{chunk-GDYLZ6FR.js → chunk-HJ3UTGIW.js} +3 -3
- package/dist/{chunk-W3R77WHT.js → chunk-HL643H2F.js} +12 -12
- package/dist/{chunk-CCL2OXFO.js → chunk-HSHLDSPX.js} +3 -3
- package/dist/{chunk-OCXDZJL4.js → chunk-I6UTOUBK.js} +37 -80
- package/dist/chunk-I6UTOUBK.js.map +1 -0
- package/dist/{chunk-TTTPTQ6S.js → chunk-IA3XZG4V.js} +2 -2
- package/dist/{chunk-CIMD2MUR.js → chunk-IJFX4JRI.js} +7 -7
- package/dist/{chunk-RTJJPW3C.js → chunk-ILMB3X4X.js} +5 -5
- package/dist/{chunk-5LBBXI2A.js → chunk-J53IBVMF.js} +2 -2
- package/dist/{chunk-JEX2JL3U.js → chunk-JEDS2QYV.js} +2 -2
- package/dist/{chunk-W7NKMRAF.js → chunk-JFRO5HJY.js} +2 -2
- package/dist/{chunk-4W5B5Z6P.js → chunk-JM2WJBP7.js} +2 -2
- package/dist/{chunk-DJFULNXK.js → chunk-JRY55I6Z.js} +2 -2
- package/dist/{chunk-M4U25HLR.js → chunk-KXDUSGPM.js} +2 -2
- package/dist/{chunk-YJHOVA42.js → chunk-L5RMURVI.js} +2 -2
- package/dist/{chunk-QS5DUSBM.js → chunk-LGLLCWA2.js} +2 -2
- package/dist/{chunk-34UVJNSG.js → chunk-M3GOWG2P.js} +2 -2
- package/dist/{chunk-53OFDW3P.js → chunk-M7KAJBO2.js} +3 -3
- package/dist/{chunk-V4VCBFAL.js → chunk-MHSUEA32.js} +3 -3
- package/dist/{chunk-ERMT5WQM.js → chunk-MKE5DP3S.js} +2 -2
- package/dist/{chunk-IFOCK3OJ.js → chunk-MOB4JHG6.js} +2 -2
- package/dist/{chunk-W4QTA2H5.js → chunk-N5H22V75.js} +2 -2
- package/dist/{chunk-3LNAQLW4.js → chunk-NF5EHQTJ.js} +4 -4
- package/dist/{chunk-FFQNNFHX.js → chunk-NJZY5LOC.js} +2 -2
- package/dist/{chunk-YLN4ZQV4.js → chunk-PIVSUPF2.js} +2 -2
- package/dist/{chunk-2S6JADBB.js → chunk-PJLJN23N.js} +2 -2
- package/dist/{chunk-3H3PNQEF.js → chunk-PRSF7DWT.js} +2 -2
- package/dist/{chunk-W2KH27MQ.js → chunk-PTJWUN4H.js} +45 -45
- package/dist/{chunk-GFAEKSFR.js → chunk-QBK3IM6W.js} +5 -5
- package/dist/{chunk-KRAMCBIW.js → chunk-QKXPOLQD.js} +4 -4
- package/dist/{chunk-OWNAWY6D.js → chunk-QWURVT5Z.js} +2 -2
- package/dist/{chunk-YDT3OEYF.js → chunk-R4ZHF4K2.js} +2 -2
- package/dist/{chunk-CTNDFKEX.js → chunk-RSYFSCKL.js} +16 -16
- package/dist/{chunk-7XGNGLAN.js → chunk-T4SMMTGY.js} +2 -2
- package/dist/{chunk-FZLZUDJJ.js → chunk-TIS6T6UP.js} +2 -2
- package/dist/{chunk-RKRX4C4H.js → chunk-TPKB7T6Z.js} +2 -2
- package/dist/{chunk-JZCBMKR5.js → chunk-TUCEP2LS.js} +5 -5
- package/dist/{chunk-OMWQO7H6.js → chunk-UEDC2VGP.js} +2 -2
- package/dist/{chunk-B43P3DTC.js → chunk-UIX4JLVV.js} +2 -2
- package/dist/{chunk-VGE4PUY6.js → chunk-UP2Q7U4G.js} +9 -9
- package/dist/{chunk-HQUYENKK.js → chunk-UY67YP6Q.js} +2 -2
- package/dist/{chunk-U2A56LLF.js → chunk-VQ6H4DL6.js} +11 -11
- package/dist/{chunk-AO5ZOD32.js → chunk-W37MS6SX.js} +2 -2
- package/dist/{chunk-UBOWDOL5.js → chunk-WJC5KGYC.js} +6 -6
- package/dist/{chunk-G6A3SGCE.js → chunk-WVEEVYMH.js} +8 -25
- package/dist/chunk-WVEEVYMH.js.map +1 -0
- package/dist/{chunk-TRAOZ2WP.js → chunk-X2TZWVCC.js} +2 -2
- package/dist/{chunk-UQBOPCDK.js → chunk-X4PAATLA.js} +2 -2
- package/dist/{chunk-24SIB3EW.js → chunk-XWE3EOWX.js} +2 -2
- package/dist/{chunk-Y77FXULH.js → chunk-XWXBXBOX.js} +2 -2
- package/dist/{chunk-VKQI47DJ.js → chunk-Y7427SL7.js} +4 -4
- package/dist/{chunk-TEH5MDX5.js → chunk-YH7HJNWV.js} +22 -22
- package/dist/chunk-YHTG64XV.js +117 -0
- package/dist/chunk-YHTG64XV.js.map +1 -0
- package/dist/{chunk-EZ25VE3G.js → chunk-YNDLCWXS.js} +4 -4
- package/dist/{chunk-2M36PR7R.js → chunk-Z2T5BPOZ.js} +2 -2
- package/dist/{chunk-65B5RFKQ.js → chunk-Z4EH5TSO.js} +2 -2
- package/dist/{chunk-P5FYZH5G.js → chunk-ZRDEOC4X.js} +2 -2
- package/dist/{chunk-L5UB5BIY.js → chunk-ZXEPLZUQ.js} +9 -9
- package/dist/cli.js +94 -92
- package/dist/coding/export-okf-codegraph.js +14 -12
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/coding/pre-action-gate.js +2 -2
- package/dist/compounding/engine.js +16 -14
- package/dist/config.js +23 -21
- package/dist/connectors/codex-materialize-runner.js +15 -13
- package/dist/connectors/index.js +15 -13
- package/dist/convergence-refresh.js +17 -15
- package/dist/corpus-scan-worker-host.d.ts +109 -0
- package/dist/corpus-scan-worker-host.d.ts.map +1 -0
- package/dist/corpus-scan-worker-host.js +15 -0
- package/dist/corpus-scan-worker.entry.d.ts +21 -0
- package/dist/corpus-scan-worker.entry.d.ts.map +1 -0
- package/dist/corpus-scan-worker.entry.js +60 -0
- package/dist/corpus-scan-worker.entry.js.map +1 -0
- package/dist/corpus-scan-worker.entry.mjs +176 -0
- package/dist/corpus-scan.d.ts +71 -0
- package/dist/corpus-scan.d.ts.map +1 -0
- package/dist/corpus-scan.js +16 -0
- package/dist/corpus-watermark.d.ts.map +1 -1
- package/dist/corpus-watermark.js +17 -15
- package/dist/dashboard-runtime.js +2 -2
- package/dist/deep-recall-http-glue.js +8 -8
- package/dist/embedding-fallback.js +2 -2
- package/dist/{entity-canonical-id-migration-F3JVG6K6.js → entity-canonical-id-migration-CUDCKWPF.js} +4 -2
- package/dist/entity-canonical-id-migration-CUDCKWPF.js.map +1 -0
- package/dist/entity-retrieval.js +17 -15
- package/dist/event-order-recall.js +3 -3
- package/dist/external-wiki-access.js +50 -48
- package/dist/extraction.js +20 -18
- package/dist/{graph-edge-decay-IU75NV42.js → graph-edge-decay-2BZTY2IM.js} +5 -5
- package/dist/graph-edge-decay-2BZTY2IM.js.map +1 -0
- package/dist/graph-jsonl.js +3 -3
- package/dist/graph-snapshot.js +3 -3
- package/dist/graph.js +2 -2
- package/dist/harmonic-retrieval.js +15 -13
- package/dist/index.js +164 -162
- package/dist/lcm/engine.js +2 -2
- package/dist/lcm/index.js +5 -5
- package/dist/location/index.js +17 -15
- package/dist/maintenance/memory-governance.js +15 -13
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +15 -13
- package/dist/maintenance/rebuild-memory-projection-runner.js +17 -15
- package/dist/maintenance/rebuild-memory-projection.js +16 -14
- package/dist/memory-browse-operations.js +50 -48
- package/dist/memory-browse.js +5 -5
- package/dist/namespaces/migrate.js +16 -14
- package/dist/namespaces/search.js +8 -8
- package/dist/namespaces/storage.js +15 -13
- package/dist/offline-sync-changeset-generations.js +4 -4
- package/dist/offline-sync-embedding-generation.js +3 -3
- package/dist/offline-sync-snapshot-stream.js +7 -7
- package/dist/offline-sync.js +6 -6
- package/dist/operator-doctor-corpus.js +18 -16
- package/dist/operator-toolkit.js +34 -32
- package/dist/orchestration/maintenance.js +25 -23
- package/dist/orchestrator.js +136 -134
- package/dist/qmd.js +4 -4
- package/dist/recall-navigation-operations.js +50 -48
- package/dist/recall-navigation.js +49 -47
- package/dist/recall-state-view-admission.js +5 -5
- package/dist/recall-why-service.js +5 -5
- package/dist/resume-bundles.js +24 -22
- package/dist/search/factory.js +7 -7
- package/dist/search/index.js +15 -15
- package/dist/semantic-consolidation.js +16 -14
- package/dist/semantic-rule-promotion.js +15 -13
- package/dist/semantic-rule-verifier.js +15 -13
- package/dist/source-agent-qualifier.js +18 -16
- package/dist/standup/build.js +15 -13
- package/dist/storage/entity-canonical-id-migration.d.ts.map +1 -1
- package/dist/storage/memory-read-store.d.ts +7 -3
- package/dist/storage/memory-read-store.d.ts.map +1 -1
- package/dist/storage.js +16 -14
- package/dist/support-passport/index.js +52 -50
- package/dist/transfer/export-okf.js +15 -13
- package/dist/verified-recall.js +15 -13
- package/dist/who-knows-cli.js +16 -14
- package/dist/who-knows.js +15 -13
- package/package.json +2 -2
- package/scripts/build-with-heap.mjs +8 -0
- package/src/corpus-scan-worker-host.ts +314 -0
- package/src/corpus-scan-worker.entry.mjs +176 -0
- package/src/corpus-scan-worker.entry.ts +95 -0
- package/src/corpus-scan.ts +215 -0
- package/src/corpus-watermark.ts +28 -12
- package/src/storage/entity-canonical-id-migration.ts +4 -26
- package/src/storage/memory-read-store.ts +19 -111
- package/dist/chunk-G6A3SGCE.js.map +0 -1
- package/dist/chunk-OCXDZJL4.js.map +0 -1
- package/dist/chunk-UQYBPPVC.js.map +0 -1
- /package/dist/{chunk-XDKEHZUC.js.map → chunk-264B57GV.js.map} +0 -0
- /package/dist/{chunk-LTDK6HBV.js.map → chunk-2HVCTFKG.js.map} +0 -0
- /package/dist/{chunk-E2YAGEFR.js.map → chunk-3DG2YAAX.js.map} +0 -0
- /package/dist/{chunk-LIVNX7WK.js.map → chunk-4O4VAEWH.js.map} +0 -0
- /package/dist/{chunk-NRGQ5HJO.js.map → chunk-4P4VLPGB.js.map} +0 -0
- /package/dist/{chunk-GIRWNTMV.js.map → chunk-4PG5R6BJ.js.map} +0 -0
- /package/dist/{chunk-AOSCGNIC.js.map → chunk-5XY46Z2W.js.map} +0 -0
- /package/dist/{chunk-52II7PB6.js.map → chunk-645WOU5I.js.map} +0 -0
- /package/dist/{chunk-RG3I2663.js.map → chunk-64JLBFCQ.js.map} +0 -0
- /package/dist/{chunk-G3T6YMBO.js.map → chunk-64S6X4IU.js.map} +0 -0
- /package/dist/{chunk-XHEKS4UN.js.map → chunk-66CC6L6R.js.map} +0 -0
- /package/dist/{chunk-3632XJMR.js.map → chunk-6BKSUA6P.js.map} +0 -0
- /package/dist/{chunk-6AEKSOWV.js.map → chunk-6I6DFULH.js.map} +0 -0
- /package/dist/{chunk-2EYCW2ET.js.map → chunk-74Z2BYEK.js.map} +0 -0
- /package/dist/{chunk-QAHP5SBG.js.map → chunk-7DHNBABU.js.map} +0 -0
- /package/dist/{chunk-HJ4X4BGS.js.map → chunk-ADK5TMQL.js.map} +0 -0
- /package/dist/{chunk-KCTL5EY7.js.map → chunk-AWKADEMO.js.map} +0 -0
- /package/dist/{chunk-VV73XT3A.js.map → chunk-BJLCV2P3.js.map} +0 -0
- /package/dist/{chunk-QF5EJ5VP.js.map → chunk-C5GTIRIO.js.map} +0 -0
- /package/dist/{chunk-LRVFS4KA.js.map → chunk-DF4SYU4Z.js.map} +0 -0
- /package/dist/{chunk-WBN66HPI.js.map → chunk-ELHJK7LM.js.map} +0 -0
- /package/dist/{chunk-6CDNOREO.js.map → chunk-F3GX76LV.js.map} +0 -0
- /package/dist/{chunk-AAANTXCQ.js.map → chunk-FZVZYU5C.js.map} +0 -0
- /package/dist/{chunk-ON77FQXH.js.map → chunk-G6GMZJQ4.js.map} +0 -0
- /package/dist/{chunk-HJQ4NKKO.js.map → chunk-GGHX4YHM.js.map} +0 -0
- /package/dist/{chunk-HM3ZTDAX.js.map → chunk-GJF337YM.js.map} +0 -0
- /package/dist/{chunk-GDYLZ6FR.js.map → chunk-HJ3UTGIW.js.map} +0 -0
- /package/dist/{chunk-W3R77WHT.js.map → chunk-HL643H2F.js.map} +0 -0
- /package/dist/{chunk-CCL2OXFO.js.map → chunk-HSHLDSPX.js.map} +0 -0
- /package/dist/{chunk-TTTPTQ6S.js.map → chunk-IA3XZG4V.js.map} +0 -0
- /package/dist/{chunk-CIMD2MUR.js.map → chunk-IJFX4JRI.js.map} +0 -0
- /package/dist/{chunk-RTJJPW3C.js.map → chunk-ILMB3X4X.js.map} +0 -0
- /package/dist/{chunk-5LBBXI2A.js.map → chunk-J53IBVMF.js.map} +0 -0
- /package/dist/{chunk-JEX2JL3U.js.map → chunk-JEDS2QYV.js.map} +0 -0
- /package/dist/{chunk-W7NKMRAF.js.map → chunk-JFRO5HJY.js.map} +0 -0
- /package/dist/{chunk-4W5B5Z6P.js.map → chunk-JM2WJBP7.js.map} +0 -0
- /package/dist/{chunk-DJFULNXK.js.map → chunk-JRY55I6Z.js.map} +0 -0
- /package/dist/{chunk-M4U25HLR.js.map → chunk-KXDUSGPM.js.map} +0 -0
- /package/dist/{chunk-YJHOVA42.js.map → chunk-L5RMURVI.js.map} +0 -0
- /package/dist/{chunk-QS5DUSBM.js.map → chunk-LGLLCWA2.js.map} +0 -0
- /package/dist/{chunk-34UVJNSG.js.map → chunk-M3GOWG2P.js.map} +0 -0
- /package/dist/{chunk-53OFDW3P.js.map → chunk-M7KAJBO2.js.map} +0 -0
- /package/dist/{chunk-V4VCBFAL.js.map → chunk-MHSUEA32.js.map} +0 -0
- /package/dist/{chunk-ERMT5WQM.js.map → chunk-MKE5DP3S.js.map} +0 -0
- /package/dist/{chunk-IFOCK3OJ.js.map → chunk-MOB4JHG6.js.map} +0 -0
- /package/dist/{chunk-W4QTA2H5.js.map → chunk-N5H22V75.js.map} +0 -0
- /package/dist/{chunk-3LNAQLW4.js.map → chunk-NF5EHQTJ.js.map} +0 -0
- /package/dist/{chunk-FFQNNFHX.js.map → chunk-NJZY5LOC.js.map} +0 -0
- /package/dist/{chunk-YLN4ZQV4.js.map → chunk-PIVSUPF2.js.map} +0 -0
- /package/dist/{chunk-2S6JADBB.js.map → chunk-PJLJN23N.js.map} +0 -0
- /package/dist/{chunk-3H3PNQEF.js.map → chunk-PRSF7DWT.js.map} +0 -0
- /package/dist/{chunk-W2KH27MQ.js.map → chunk-PTJWUN4H.js.map} +0 -0
- /package/dist/{chunk-GFAEKSFR.js.map → chunk-QBK3IM6W.js.map} +0 -0
- /package/dist/{chunk-KRAMCBIW.js.map → chunk-QKXPOLQD.js.map} +0 -0
- /package/dist/{chunk-OWNAWY6D.js.map → chunk-QWURVT5Z.js.map} +0 -0
- /package/dist/{chunk-YDT3OEYF.js.map → chunk-R4ZHF4K2.js.map} +0 -0
- /package/dist/{chunk-CTNDFKEX.js.map → chunk-RSYFSCKL.js.map} +0 -0
- /package/dist/{chunk-7XGNGLAN.js.map → chunk-T4SMMTGY.js.map} +0 -0
- /package/dist/{chunk-FZLZUDJJ.js.map → chunk-TIS6T6UP.js.map} +0 -0
- /package/dist/{chunk-RKRX4C4H.js.map → chunk-TPKB7T6Z.js.map} +0 -0
- /package/dist/{chunk-JZCBMKR5.js.map → chunk-TUCEP2LS.js.map} +0 -0
- /package/dist/{chunk-OMWQO7H6.js.map → chunk-UEDC2VGP.js.map} +0 -0
- /package/dist/{chunk-B43P3DTC.js.map → chunk-UIX4JLVV.js.map} +0 -0
- /package/dist/{chunk-VGE4PUY6.js.map → chunk-UP2Q7U4G.js.map} +0 -0
- /package/dist/{chunk-HQUYENKK.js.map → chunk-UY67YP6Q.js.map} +0 -0
- /package/dist/{chunk-U2A56LLF.js.map → chunk-VQ6H4DL6.js.map} +0 -0
- /package/dist/{chunk-AO5ZOD32.js.map → chunk-W37MS6SX.js.map} +0 -0
- /package/dist/{chunk-UBOWDOL5.js.map → chunk-WJC5KGYC.js.map} +0 -0
- /package/dist/{chunk-TRAOZ2WP.js.map → chunk-X2TZWVCC.js.map} +0 -0
- /package/dist/{chunk-UQBOPCDK.js.map → chunk-X4PAATLA.js.map} +0 -0
- /package/dist/{chunk-24SIB3EW.js.map → chunk-XWE3EOWX.js.map} +0 -0
- /package/dist/{chunk-Y77FXULH.js.map → chunk-XWXBXBOX.js.map} +0 -0
- /package/dist/{chunk-VKQI47DJ.js.map → chunk-Y7427SL7.js.map} +0 -0
- /package/dist/{chunk-TEH5MDX5.js.map → chunk-YH7HJNWV.js.map} +0 -0
- /package/dist/{chunk-EZ25VE3G.js.map → chunk-YNDLCWXS.js.map} +0 -0
- /package/dist/{chunk-2M36PR7R.js.map → chunk-Z2T5BPOZ.js.map} +0 -0
- /package/dist/{chunk-65B5RFKQ.js.map → chunk-Z4EH5TSO.js.map} +0 -0
- /package/dist/{chunk-P5FYZH5G.js.map → chunk-ZRDEOC4X.js.map} +0 -0
- /package/dist/{chunk-L5UB5BIY.js.map → chunk-ZXEPLZUQ.js.map} +0 -0
- /package/dist/{entity-canonical-id-migration-F3JVG6K6.js.map → corpus-scan-worker-host.js.map} +0 -0
- /package/dist/{graph-edge-decay-IU75NV42.js.map → corpus-scan.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -91,11 +91,13 @@ import {
|
|
|
91
91
|
runWorkProductStatusCliCommand,
|
|
92
92
|
runWorkProjectCliCommand,
|
|
93
93
|
runWorkTaskCliCommand
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-PTJWUN4H.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";
|
|
99
101
|
import "./chunk-BV2TIZ4F.js";
|
|
100
102
|
import "./chunk-HDDRVXX4.js";
|
|
101
103
|
import "./chunk-PYHOAXTI.js";
|
|
@@ -104,54 +106,52 @@ import "./chunk-OZKVVUJB.js";
|
|
|
104
106
|
import "./chunk-2DL3OFLD.js";
|
|
105
107
|
import "./chunk-G4IAEX6D.js";
|
|
106
108
|
import "./chunk-2NLLXCJG.js";
|
|
107
|
-
import "./chunk-UP6MOYCB.js";
|
|
108
109
|
import "./chunk-765K3SAT.js";
|
|
109
|
-
import "./chunk-3632XJMR.js";
|
|
110
|
-
import "./chunk-TBUEE7XF.js";
|
|
111
110
|
import "./chunk-FGDKJJZS.js";
|
|
112
111
|
import "./chunk-AJVLDJU6.js";
|
|
112
|
+
import "./chunk-TBUEE7XF.js";
|
|
113
113
|
import "./chunk-SZDLX763.js";
|
|
114
114
|
import "./chunk-PYIFUBRK.js";
|
|
115
|
-
import "./chunk-EDR6CVWZ.js";
|
|
116
|
-
import "./chunk-IFOCK3OJ.js";
|
|
117
115
|
import "./chunk-WHCD4Z3D.js";
|
|
118
|
-
import "./chunk-YQJCWR4R.js";
|
|
119
116
|
import "./chunk-7IGMKQWK.js";
|
|
117
|
+
import "./chunk-EDR6CVWZ.js";
|
|
118
|
+
import "./chunk-YQJCWR4R.js";
|
|
119
|
+
import "./chunk-MOB4JHG6.js";
|
|
120
|
+
import "./chunk-I7TR2OCU.js";
|
|
120
121
|
import "./chunk-2524MOWK.js";
|
|
121
122
|
import "./chunk-HSSERO3E.js";
|
|
122
123
|
import "./chunk-NOUJNHWG.js";
|
|
123
|
-
import "./chunk-I7TR2OCU.js";
|
|
124
|
-
import "./chunk-XHEKS4UN.js";
|
|
125
|
-
import "./chunk-HL4DB7TO.js";
|
|
126
124
|
import "./chunk-WLT6LTQP.js";
|
|
127
125
|
import "./chunk-EOU6V4IN.js";
|
|
126
|
+
import "./chunk-66CC6L6R.js";
|
|
127
|
+
import "./chunk-HL4DB7TO.js";
|
|
128
128
|
import "./chunk-R7WYAXPO.js";
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
131
|
-
import "./chunk-
|
|
129
|
+
import "./chunk-GGHX4YHM.js";
|
|
130
|
+
import "./chunk-QWURVT5Z.js";
|
|
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-HL643H2F.js";
|
|
138
|
+
import "./chunk-AWKADEMO.js";
|
|
139
139
|
import "./chunk-KFY3SGN7.js";
|
|
140
140
|
import "./chunk-CMTINOFS.js";
|
|
141
|
-
import "./chunk-
|
|
141
|
+
import "./chunk-KXDUSGPM.js";
|
|
142
142
|
import "./chunk-I6ORDT54.js";
|
|
143
143
|
import "./chunk-BCCG7VWM.js";
|
|
144
144
|
import "./chunk-GGRRF4PZ.js";
|
|
145
145
|
import "./chunk-UOBPK2OS.js";
|
|
146
|
-
import "./chunk-OZKOPQCM.js";
|
|
147
146
|
import "./chunk-C7SRUWBW.js";
|
|
147
|
+
import "./chunk-OZKOPQCM.js";
|
|
148
148
|
import "./chunk-JKMIGCK6.js";
|
|
149
149
|
import "./chunk-CIO7GCWE.js";
|
|
150
|
-
import "./chunk-
|
|
151
|
-
import "./chunk-44442YCH.js";
|
|
150
|
+
import "./chunk-YNDLCWXS.js";
|
|
152
151
|
import "./chunk-AUDJPF4N.js";
|
|
152
|
+
import "./chunk-44442YCH.js";
|
|
153
153
|
import "./chunk-Y4Z4I6WK.js";
|
|
154
|
-
import "./chunk-
|
|
154
|
+
import "./chunk-7DHNBABU.js";
|
|
155
155
|
import "./chunk-KJTKLXTH.js";
|
|
156
156
|
import "./chunk-2DQ2XREU.js";
|
|
157
157
|
import "./chunk-OKTXM5H4.js";
|
|
@@ -161,12 +161,12 @@ import "./chunk-YBPYIAA5.js";
|
|
|
161
161
|
import "./chunk-6TBIWIAG.js";
|
|
162
162
|
import "./chunk-C6WMSXCJ.js";
|
|
163
163
|
import "./chunk-B7RWBZXW.js";
|
|
164
|
-
import "./chunk-
|
|
164
|
+
import "./chunk-XWXBXBOX.js";
|
|
165
165
|
import "./chunk-ZKOPY4WW.js";
|
|
166
166
|
import "./chunk-62OKGIJA.js";
|
|
167
167
|
import "./chunk-J5WI4QRP.js";
|
|
168
168
|
import "./chunk-QNJQCLI6.js";
|
|
169
|
-
import "./chunk-
|
|
169
|
+
import "./chunk-Z2T5BPOZ.js";
|
|
170
170
|
import "./chunk-QNIYL5SK.js";
|
|
171
171
|
import "./chunk-LI4APB6M.js";
|
|
172
172
|
import "./chunk-Z5LAYHGJ.js";
|
|
@@ -190,24 +190,24 @@ 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-RSYFSCKL.js";
|
|
194
194
|
import "./chunk-V7IZKJI3.js";
|
|
195
|
-
import "./chunk-TB6CBZ5V.js";
|
|
196
195
|
import "./chunk-XW2T4QAW.js";
|
|
197
|
-
import "./chunk-
|
|
198
|
-
import "./chunk-SI36RWC3.js";
|
|
199
|
-
import "./chunk-3JKYQBLC.js";
|
|
196
|
+
import "./chunk-64S6X4IU.js";
|
|
200
197
|
import "./chunk-7RKSJVOQ.js";
|
|
201
198
|
import "./chunk-HCAGBFE7.js";
|
|
199
|
+
import "./chunk-SI36RWC3.js";
|
|
200
|
+
import "./chunk-TB6CBZ5V.js";
|
|
201
|
+
import "./chunk-3JKYQBLC.js";
|
|
202
202
|
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-JRY55I6Z.js";
|
|
207
|
+
import "./chunk-JM2WJBP7.js";
|
|
208
|
+
import "./chunk-Z4EH5TSO.js";
|
|
209
209
|
import "./chunk-SRT6SHVZ.js";
|
|
210
|
-
import "./chunk-
|
|
210
|
+
import "./chunk-NF5EHQTJ.js";
|
|
211
211
|
import "./chunk-TE6S7KDF.js";
|
|
212
212
|
import "./chunk-MZUQVWVC.js";
|
|
213
213
|
import "./chunk-EIB4FJVR.js";
|
|
@@ -215,80 +215,80 @@ 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-WJC5KGYC.js";
|
|
219
|
+
import "./chunk-4O4VAEWH.js";
|
|
220
|
+
import "./chunk-JFRO5HJY.js";
|
|
221
|
+
import "./chunk-MHSUEA32.js";
|
|
222
|
+
import "./chunk-T4SMMTGY.js";
|
|
223
|
+
import "./chunk-TIS6T6UP.js";
|
|
224
|
+
import "./chunk-PRSF7DWT.js";
|
|
225
225
|
import "./chunk-7T4TOGMS.js";
|
|
226
226
|
import "./chunk-7YQ6ESEA.js";
|
|
227
|
-
import "./chunk-
|
|
228
|
-
import "./chunk-GDYLZ6FR.js";
|
|
227
|
+
import "./chunk-IJFX4JRI.js";
|
|
229
228
|
import "./chunk-PQM3B54K.js";
|
|
229
|
+
import "./chunk-HJ3UTGIW.js";
|
|
230
230
|
import "./chunk-EKPRLTAE.js";
|
|
231
231
|
import "./chunk-CEN6DW6X.js";
|
|
232
232
|
import "./chunk-E4RMZGRS.js";
|
|
233
|
-
import "./chunk-
|
|
233
|
+
import "./chunk-FZVZYU5C.js";
|
|
234
234
|
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-N5H22V75.js";
|
|
239
|
+
import "./chunk-ZRDEOC4X.js";
|
|
240
240
|
import "./chunk-AB3A7EFH.js";
|
|
241
241
|
import "./chunk-KIUVEMBI.js";
|
|
242
|
-
import "./chunk-
|
|
242
|
+
import "./chunk-ADK5TMQL.js";
|
|
243
243
|
import "./chunk-2BPPGNAQ.js";
|
|
244
244
|
import "./chunk-DJSJ4ULL.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
-
import "./chunk-
|
|
245
|
+
import "./chunk-X2TZWVCC.js";
|
|
246
|
+
import "./chunk-C5GTIRIO.js";
|
|
247
247
|
import "./chunk-W4F3C7N7.js";
|
|
248
248
|
import "./chunk-MPC7TYTZ.js";
|
|
249
249
|
import "./chunk-A3UFV4K3.js";
|
|
250
250
|
import "./chunk-IFBSZGW3.js";
|
|
251
|
-
import "./chunk-OGXXGHW6.js";
|
|
252
251
|
import "./chunk-VSHWPOUB.js";
|
|
253
252
|
import "./chunk-VQ7B2Q6M.js";
|
|
253
|
+
import "./chunk-OGXXGHW6.js";
|
|
254
|
+
import "./chunk-J53IBVMF.js";
|
|
254
255
|
import "./chunk-BANSBRNX.js";
|
|
255
|
-
import "./chunk-5LBBXI2A.js";
|
|
256
256
|
import "./chunk-GNVZQ5JN.js";
|
|
257
257
|
import "./chunk-YN2UN7N3.js";
|
|
258
258
|
import "./chunk-JWX2Q6HS.js";
|
|
259
259
|
import "./chunk-2AKIVSHP.js";
|
|
260
260
|
import "./chunk-53OWLEAD.js";
|
|
261
261
|
import "./chunk-WWDO7ZWM.js";
|
|
262
|
-
import "./chunk-5Y43VGYB.js";
|
|
263
262
|
import "./chunk-WR5POHQ3.js";
|
|
264
|
-
import "./chunk-
|
|
265
|
-
import "./chunk-5HFVWYHL.js";
|
|
263
|
+
import "./chunk-5Y43VGYB.js";
|
|
266
264
|
import "./chunk-HTTZ3GJ6.js";
|
|
265
|
+
import "./chunk-XWE3EOWX.js";
|
|
266
|
+
import "./chunk-5HFVWYHL.js";
|
|
267
|
+
import "./chunk-KIW3OOZE.js";
|
|
267
268
|
import "./chunk-YE4JBZO5.js";
|
|
268
269
|
import "./chunk-5KVT6G5U.js";
|
|
269
|
-
import "./chunk-
|
|
270
|
+
import "./chunk-VYDGHJIN.js";
|
|
270
271
|
import "./chunk-FLDXEJFX.js";
|
|
271
272
|
import "./chunk-7O5EW7KX.js";
|
|
272
273
|
import "./chunk-H7XKCNR6.js";
|
|
273
274
|
import "./chunk-WUL6LDJ4.js";
|
|
274
275
|
import "./chunk-SOBJ6NEY.js";
|
|
275
276
|
import "./chunk-VHBGJAYC.js";
|
|
276
|
-
import "./chunk-
|
|
277
|
-
import "./chunk-
|
|
277
|
+
import "./chunk-HSHLDSPX.js";
|
|
278
|
+
import "./chunk-LGLLCWA2.js";
|
|
278
279
|
import "./chunk-B6SPPYGJ.js";
|
|
279
|
-
import "./chunk-
|
|
280
|
+
import "./chunk-UD7UNYRD.js";
|
|
280
281
|
import "./chunk-Z64TS5V4.js";
|
|
281
282
|
import "./chunk-AQEJKOKI.js";
|
|
282
283
|
import "./chunk-4RNBLLZR.js";
|
|
283
|
-
import "./chunk-UD7UNYRD.js";
|
|
284
284
|
import "./chunk-IISBCCWR.js";
|
|
285
|
-
import "./chunk-
|
|
286
|
-
import "./chunk-
|
|
285
|
+
import "./chunk-4PG5R6BJ.js";
|
|
286
|
+
import "./chunk-BJLCV2P3.js";
|
|
287
287
|
import "./chunk-2YA5N2BY.js";
|
|
288
|
-
import "./chunk-
|
|
289
|
-
import "./chunk-LRVFS4KA.js";
|
|
288
|
+
import "./chunk-DF4SYU4Z.js";
|
|
290
289
|
import "./chunk-HUDPXTXW.js";
|
|
291
290
|
import "./chunk-AZEZSQ5R.js";
|
|
291
|
+
import "./chunk-MKE5DP3S.js";
|
|
292
292
|
import "./chunk-EI6V5UXY.js";
|
|
293
293
|
import "./chunk-JX3E4XCW.js";
|
|
294
294
|
import "./chunk-QA3Y2O6H.js";
|
|
@@ -306,23 +306,23 @@ 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-2EJAPJ5G.js";
|
|
310
|
+
import "./chunk-5XY46Z2W.js";
|
|
311
|
+
import "./chunk-M3GOWG2P.js";
|
|
309
312
|
import "./chunk-UFGFMWAD.js";
|
|
310
313
|
import "./chunk-LXATZLSC.js";
|
|
311
|
-
import "./chunk-
|
|
312
|
-
import "./chunk-
|
|
313
|
-
import "./chunk-AOSCGNIC.js";
|
|
314
|
-
import "./chunk-34UVJNSG.js";
|
|
315
|
-
import "./chunk-2EYCW2ET.js";
|
|
314
|
+
import "./chunk-IA3XZG4V.js";
|
|
315
|
+
import "./chunk-74Z2BYEK.js";
|
|
316
316
|
import "./chunk-3UXOZBHV.js";
|
|
317
317
|
import "./chunk-AL3TCNSJ.js";
|
|
318
|
-
import "./chunk-
|
|
318
|
+
import "./chunk-QKXPOLQD.js";
|
|
319
319
|
import "./chunk-YXW4KXCV.js";
|
|
320
|
+
import "./chunk-GKCXTSFF.js";
|
|
320
321
|
import "./chunk-2LSZVONP.js";
|
|
321
322
|
import "./chunk-DEUNUKTD.js";
|
|
322
323
|
import "./chunk-LXY5VVGM.js";
|
|
323
|
-
import "./chunk-
|
|
324
|
-
import "./chunk-
|
|
325
|
-
import "./chunk-YDT3OEYF.js";
|
|
324
|
+
import "./chunk-264B57GV.js";
|
|
325
|
+
import "./chunk-R4ZHF4K2.js";
|
|
326
326
|
import "./chunk-CSAKJVXW.js";
|
|
327
327
|
import "./chunk-K2XUWZBM.js";
|
|
328
328
|
import "./chunk-OD4FM2U7.js";
|
|
@@ -333,7 +333,7 @@ import "./chunk-QEDLJDHP.js";
|
|
|
333
333
|
import "./chunk-U4LUIE6Y.js";
|
|
334
334
|
import "./chunk-5YQXWVCP.js";
|
|
335
335
|
import "./chunk-ZY2MNJR6.js";
|
|
336
|
-
import "./chunk-
|
|
336
|
+
import "./chunk-W37MS6SX.js";
|
|
337
337
|
import "./chunk-X2KO4FK5.js";
|
|
338
338
|
import "./chunk-GZFKCLRC.js";
|
|
339
339
|
import "./chunk-EKUI7I2X.js";
|
|
@@ -355,23 +355,23 @@ import "./chunk-AJG2TAMR.js";
|
|
|
355
355
|
import "./chunk-236PXYG7.js";
|
|
356
356
|
import "./chunk-ZCUTSMR2.js";
|
|
357
357
|
import "./chunk-QDW3E4RD.js";
|
|
358
|
-
import "./chunk-
|
|
358
|
+
import "./chunk-4P4VLPGB.js";
|
|
359
359
|
import "./chunk-ZJP66Q4I.js";
|
|
360
|
-
import "./chunk-
|
|
360
|
+
import "./chunk-I6UTOUBK.js";
|
|
361
361
|
import "./chunk-UHVXE24Y.js";
|
|
362
362
|
import "./chunk-DM5QZ3YU.js";
|
|
363
|
-
import "./chunk-
|
|
363
|
+
import "./chunk-WVEEVYMH.js";
|
|
364
364
|
import "./chunk-G6OFEGUR.js";
|
|
365
|
-
import "./chunk-
|
|
366
|
-
import "./chunk-
|
|
367
|
-
import "./chunk-DOJBV6WR.js";
|
|
368
|
-
import "./chunk-PFUXPTBT.js";
|
|
369
|
-
import "./chunk-CYEPCZN5.js";
|
|
365
|
+
import "./chunk-JEDS2QYV.js";
|
|
366
|
+
import "./chunk-VQ6H4DL6.js";
|
|
370
367
|
import "./chunk-DLZGSZVC.js";
|
|
371
368
|
import "./chunk-OVZIYLBZ.js";
|
|
372
|
-
import "./chunk-WNEVEMJ3.js";
|
|
373
369
|
import "./chunk-EXYT52NR.js";
|
|
370
|
+
import "./chunk-DOJBV6WR.js";
|
|
371
|
+
import "./chunk-PFUXPTBT.js";
|
|
372
|
+
import "./chunk-WNEVEMJ3.js";
|
|
374
373
|
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";
|
|
@@ -379,8 +379,8 @@ import "./chunk-A7Q43EUZ.js";
|
|
|
379
379
|
import "./chunk-S2V7RUCL.js";
|
|
380
380
|
import "./chunk-PPUNC7UX.js";
|
|
381
381
|
import "./chunk-X3724WL4.js";
|
|
382
|
-
import "./chunk-S2HLHAZ4.js";
|
|
383
382
|
import "./chunk-MRPOZBJC.js";
|
|
383
|
+
import "./chunk-S2HLHAZ4.js";
|
|
384
384
|
import "./chunk-DM2T26WE.js";
|
|
385
385
|
import "./chunk-LDXUBPMO.js";
|
|
386
386
|
import "./chunk-FF6N7BXC.js";
|
|
@@ -388,12 +388,14 @@ import "./chunk-WXPBDEMW.js";
|
|
|
388
388
|
import "./chunk-AAD2ZS6P.js";
|
|
389
389
|
import "./chunk-WJCXUE2J.js";
|
|
390
390
|
import "./chunk-ZIKENA2C.js";
|
|
391
|
+
import "./chunk-YXZG5TVN.js";
|
|
391
392
|
import "./chunk-3OUGSOJP.js";
|
|
392
393
|
import "./chunk-SCU65EZI.js";
|
|
393
394
|
import "./chunk-3ONXXHQO.js";
|
|
394
|
-
import "./chunk-YXZG5TVN.js";
|
|
395
395
|
import "./chunk-3WU7XOFN.js";
|
|
396
396
|
import "./chunk-P4GUQSK3.js";
|
|
397
|
+
import "./chunk-4LZ7SVKM.js";
|
|
398
|
+
import "./chunk-YHTG64XV.js";
|
|
397
399
|
import "./chunk-564YP3DW.js";
|
|
398
400
|
import "./chunk-M5GVCJSJ.js";
|
|
399
401
|
import "./chunk-RBOJCG4T.js";
|
|
@@ -404,12 +406,12 @@ import "./chunk-7CT3AI52.js";
|
|
|
404
406
|
import "./chunk-G7D6GZ5J.js";
|
|
405
407
|
import "./chunk-7VLBZKNB.js";
|
|
406
408
|
import "./chunk-UUZ7KZAO.js";
|
|
407
|
-
import "./chunk-
|
|
409
|
+
import "./chunk-ELHJK7LM.js";
|
|
410
|
+
import "./chunk-IUM3VSHI.js";
|
|
408
411
|
import "./chunk-NWA6IXR3.js";
|
|
409
412
|
import "./chunk-VILPVT4S.js";
|
|
410
413
|
import "./chunk-AF2XMJKD.js";
|
|
411
414
|
import "./chunk-OR42ZI54.js";
|
|
412
|
-
import "./chunk-IUM3VSHI.js";
|
|
413
415
|
import "./chunk-23G5P7TA.js";
|
|
414
416
|
import "./chunk-C64XATK7.js";
|
|
415
417
|
import "./chunk-42JKGUFJ.js";
|
|
@@ -433,13 +435,13 @@ import "./chunk-PARM6OYL.js";
|
|
|
433
435
|
import "./chunk-YBA52OKG.js";
|
|
434
436
|
import "./chunk-RMMA44HE.js";
|
|
435
437
|
import "./chunk-YLXETSAH.js";
|
|
436
|
-
import "./chunk-
|
|
438
|
+
import "./chunk-PJLJN23N.js";
|
|
437
439
|
import "./chunk-S4OZKPBS.js";
|
|
438
440
|
import "./chunk-353C5UNV.js";
|
|
439
441
|
import "./chunk-TWRPWJJT.js";
|
|
440
442
|
import "./chunk-BT7NVCML.js";
|
|
441
443
|
import "./chunk-SDXBR5QO.js";
|
|
442
|
-
import "./chunk-
|
|
444
|
+
import "./chunk-UY67YP6Q.js";
|
|
443
445
|
import "./chunk-KQAFEZQX.js";
|
|
444
446
|
import "./chunk-WEHSQBFR.js";
|
|
445
447
|
import "./chunk-X7Y7WX73.js";
|
|
@@ -450,7 +452,7 @@ import "./chunk-SOAU2OE2.js";
|
|
|
450
452
|
import "./chunk-BJMBJZ2Y.js";
|
|
451
453
|
import "./chunk-UKJAGEXH.js";
|
|
452
454
|
import "./chunk-FP2373TW.js";
|
|
453
|
-
import "./chunk-
|
|
455
|
+
import "./chunk-X4PAATLA.js";
|
|
454
456
|
import "./chunk-QYAXMXOB.js";
|
|
455
457
|
import "./chunk-QUMKDRCF.js";
|
|
456
458
|
import "./chunk-KQXRVELF.js";
|
|
@@ -472,17 +474,17 @@ import "./chunk-BTNNL7ZW.js";
|
|
|
472
474
|
import "./chunk-JDSVLVCG.js";
|
|
473
475
|
import "./chunk-5GKPFL3S.js";
|
|
474
476
|
import "./chunk-JAKIDQB2.js";
|
|
475
|
-
import "./chunk-
|
|
477
|
+
import "./chunk-YH7HJNWV.js";
|
|
476
478
|
import "./chunk-UI3NYK34.js";
|
|
477
479
|
import "./chunk-XXR4A33N.js";
|
|
478
|
-
import "./chunk-
|
|
479
|
-
import "./chunk-
|
|
480
|
-
import "./chunk-6AEKSOWV.js";
|
|
480
|
+
import "./chunk-TUCEP2LS.js";
|
|
481
|
+
import "./chunk-6I6DFULH.js";
|
|
481
482
|
import "./chunk-63LFM77Z.js";
|
|
482
|
-
import "./chunk-
|
|
483
|
+
import "./chunk-UWMZT2TY.js";
|
|
483
484
|
import "./chunk-GCGJW34D.js";
|
|
484
|
-
import "./chunk-
|
|
485
|
+
import "./chunk-LDWE7OZS.js";
|
|
485
486
|
import "./chunk-SWRRZNHM.js";
|
|
487
|
+
import "./chunk-TRSKATZQ.js";
|
|
486
488
|
import "./chunk-JNA7LFMQ.js";
|
|
487
489
|
import "./chunk-LQWOFU6L.js";
|
|
488
490
|
import "./chunk-EBRG7ZIK.js";
|
|
@@ -24,21 +24,21 @@ import "../chunk-FEHIOYML.js";
|
|
|
24
24
|
import "../chunk-P32IDSHD.js";
|
|
25
25
|
import {
|
|
26
26
|
StorageManager
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-I6UTOUBK.js";
|
|
28
28
|
import "../chunk-UHVXE24Y.js";
|
|
29
29
|
import "../chunk-DM5QZ3YU.js";
|
|
30
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-WVEEVYMH.js";
|
|
31
31
|
import "../chunk-G6OFEGUR.js";
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-DOJBV6WR.js";
|
|
35
|
-
import "../chunk-PFUXPTBT.js";
|
|
36
|
-
import "../chunk-CYEPCZN5.js";
|
|
32
|
+
import "../chunk-JEDS2QYV.js";
|
|
33
|
+
import "../chunk-VQ6H4DL6.js";
|
|
37
34
|
import "../chunk-DLZGSZVC.js";
|
|
38
35
|
import "../chunk-OVZIYLBZ.js";
|
|
39
|
-
import "../chunk-WNEVEMJ3.js";
|
|
40
36
|
import "../chunk-EXYT52NR.js";
|
|
37
|
+
import "../chunk-DOJBV6WR.js";
|
|
38
|
+
import "../chunk-PFUXPTBT.js";
|
|
39
|
+
import "../chunk-WNEVEMJ3.js";
|
|
41
40
|
import "../chunk-Y5NLBXPV.js";
|
|
41
|
+
import "../chunk-CYEPCZN5.js";
|
|
42
42
|
import "../chunk-TFA6HPOA.js";
|
|
43
43
|
import "../chunk-F4TWWUMP.js";
|
|
44
44
|
import "../chunk-72A4L5JJ.js";
|
|
@@ -46,8 +46,8 @@ import "../chunk-A7Q43EUZ.js";
|
|
|
46
46
|
import "../chunk-S2V7RUCL.js";
|
|
47
47
|
import "../chunk-PPUNC7UX.js";
|
|
48
48
|
import "../chunk-X3724WL4.js";
|
|
49
|
-
import "../chunk-S2HLHAZ4.js";
|
|
50
49
|
import "../chunk-MRPOZBJC.js";
|
|
50
|
+
import "../chunk-S2HLHAZ4.js";
|
|
51
51
|
import "../chunk-DM2T26WE.js";
|
|
52
52
|
import "../chunk-LDXUBPMO.js";
|
|
53
53
|
import "../chunk-FF6N7BXC.js";
|
|
@@ -55,6 +55,7 @@ import "../chunk-WXPBDEMW.js";
|
|
|
55
55
|
import "../chunk-AAD2ZS6P.js";
|
|
56
56
|
import "../chunk-WJCXUE2J.js";
|
|
57
57
|
import "../chunk-ZIKENA2C.js";
|
|
58
|
+
import "../chunk-YXZG5TVN.js";
|
|
58
59
|
import {
|
|
59
60
|
OKF_ARCHITECTURE_CARD_TYPE,
|
|
60
61
|
OKF_CODE_MODULE_TYPE,
|
|
@@ -62,9 +63,10 @@ import {
|
|
|
62
63
|
} from "../chunk-3OUGSOJP.js";
|
|
63
64
|
import "../chunk-SCU65EZI.js";
|
|
64
65
|
import "../chunk-3ONXXHQO.js";
|
|
65
|
-
import "../chunk-YXZG5TVN.js";
|
|
66
66
|
import "../chunk-3WU7XOFN.js";
|
|
67
67
|
import "../chunk-P4GUQSK3.js";
|
|
68
|
+
import "../chunk-4LZ7SVKM.js";
|
|
69
|
+
import "../chunk-YHTG64XV.js";
|
|
68
70
|
import "../chunk-564YP3DW.js";
|
|
69
71
|
import "../chunk-M5GVCJSJ.js";
|
|
70
72
|
import "../chunk-RBOJCG4T.js";
|
|
@@ -75,12 +77,12 @@ import "../chunk-7CT3AI52.js";
|
|
|
75
77
|
import "../chunk-G7D6GZ5J.js";
|
|
76
78
|
import "../chunk-7VLBZKNB.js";
|
|
77
79
|
import "../chunk-UUZ7KZAO.js";
|
|
78
|
-
import "../chunk-
|
|
80
|
+
import "../chunk-ELHJK7LM.js";
|
|
81
|
+
import "../chunk-IUM3VSHI.js";
|
|
79
82
|
import "../chunk-NWA6IXR3.js";
|
|
80
83
|
import "../chunk-VILPVT4S.js";
|
|
81
84
|
import "../chunk-AF2XMJKD.js";
|
|
82
85
|
import "../chunk-OR42ZI54.js";
|
|
83
|
-
import "../chunk-IUM3VSHI.js";
|
|
84
86
|
import "../chunk-23G5P7TA.js";
|
|
85
87
|
import "../chunk-C64XATK7.js";
|
|
86
88
|
import "../chunk-42JKGUFJ.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":[]}
|
|
@@ -5,8 +5,8 @@ import {
|
|
|
5
5
|
PreActionFailureGate,
|
|
6
6
|
normalizeActionIntent,
|
|
7
7
|
sanitizePayloadString
|
|
8
|
-
} from "../chunk-
|
|
9
|
-
import "../chunk-
|
|
8
|
+
} from "../chunk-Z2T5BPOZ.js";
|
|
9
|
+
import "../chunk-4P4VLPGB.js";
|
|
10
10
|
import "../chunk-YCVB7X56.js";
|
|
11
11
|
import "../chunk-A2IYSXDQ.js";
|
|
12
12
|
import "../chunk-2Z5DIDQD.js";
|