@remnic/core 10.0.28 → 10.0.29
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 +47 -46
- package/dist/access-authorization-probe.js +48 -47
- package/dist/access-boundary.js +47 -46
- package/dist/access-citation-namespace.js +3 -2
- package/dist/access-cli.js +96 -95
- package/dist/access-cli.js.map +1 -1
- package/dist/access-extraction-force-flush.js +47 -46
- package/dist/access-http-briefing.js +48 -47
- package/dist/access-http-query.js +49 -48
- package/dist/access-http.js +65 -64
- package/dist/access-identity-continuity-surface.js +47 -46
- package/dist/access-lcm-surface.js +47 -46
- package/dist/access-mcp.js +57 -56
- package/dist/access-namespace-preflight.js +47 -46
- package/dist/access-observe-write-category.js +11 -11
- package/dist/access-observe-write-surface.js +47 -46
- package/dist/access-offline-manifest.js +10 -10
- package/dist/access-operations-batch.js +49 -48
- package/dist/access-operations.js +56 -55
- package/dist/access-recall-concurrency.js +47 -46
- package/dist/access-recall-response.js +47 -46
- package/dist/access-recall-surface.js +47 -46
- package/dist/access-schema.js +6 -5
- package/dist/access-service.js +47 -46
- package/dist/access-surface-catalog.js +49 -48
- package/dist/access-surface-catalog.js.map +1 -1
- package/dist/active-recall.js +23 -22
- package/dist/active-recall.js.map +1 -1
- package/dist/{auto-sync-UQESPLCB.js → auto-sync-MX2AHVPQ.js} +8 -8
- package/dist/briefing.js +19 -18
- package/dist/buffer.js +8 -8
- package/dist/{capsule-merge-LGYURS3C.js → capsule-merge-LGYZAMO4.js} +3 -3
- package/dist/causal-consolidation.js +21 -20
- package/dist/causal-consolidation.js.map +1 -1
- package/dist/{chunk-2TGDT37F.js → chunk-27OJ5G3D.js} +13 -13
- package/dist/{chunk-5LRV557D.js → chunk-2FIJQNL7.js} +2 -2
- package/dist/{chunk-ETPIYK4J.js → chunk-2VBDSZ7U.js} +2 -2
- package/dist/{chunk-QLI74KWK.js → chunk-2XVLY424.js} +3 -3
- package/dist/{chunk-P55FACBG.js → chunk-3BOQPLCF.js} +6 -6
- package/dist/{chunk-3LRBJQZE.js → chunk-3CHHQXAR.js} +2 -2
- package/dist/{chunk-3GYSZHMT.js → chunk-3CZRBTJK.js} +2 -2
- package/dist/{chunk-HFSPY26A.js → chunk-3IXNL6SK.js} +2 -2
- package/dist/{chunk-4DQ4VEIQ.js → chunk-3SN2D43X.js} +2 -2
- package/dist/{chunk-QMYB3N7X.js → chunk-4HNINU7Q.js} +28 -28
- package/dist/{chunk-LW6UHNWA.js → chunk-4HYP4OKH.js} +2 -2
- package/dist/{chunk-GKJJNO7C.js → chunk-4OE4UE2Y.js} +6 -6
- package/dist/{chunk-5SMR542T.js → chunk-5GT4ESLR.js} +2 -2
- package/dist/{chunk-DWL6YIZH.js → chunk-5JI3XWI2.js} +2 -2
- package/dist/{chunk-PDN6MRWF.js → chunk-5NPZFXQH.js} +2 -2
- package/dist/{chunk-Y6IF6H2U.js → chunk-5SMHQW45.js} +2 -2
- package/dist/{chunk-PRUXE3RC.js → chunk-654GT5UP.js} +2 -2
- package/dist/{chunk-3E6DGSGZ.js → chunk-6MC7UQ6D.js} +2 -2
- package/dist/{chunk-655FVTCD.js → chunk-74IN6PV5.js} +2 -2
- package/dist/{chunk-XOSCGZEV.js → chunk-7FZ4YVOH.js} +2 -2
- package/dist/{chunk-MWWAQXZ6.js → chunk-7HFTCBCZ.js} +2 -2
- package/dist/{chunk-NDZ7APNY.js → chunk-7VB3Y5OL.js} +3 -3
- package/dist/{chunk-YEF5AAWN.js → chunk-A54E2ZTD.js} +2 -2
- package/dist/{chunk-DEY7B77Y.js → chunk-AHCELJMH.js} +2 -2
- package/dist/{chunk-PIWFNPQT.js → chunk-AL3TCNSJ.js} +4 -4
- package/dist/{chunk-KNWC2EPP.js → chunk-AUYFUBBE.js} +5 -5
- package/dist/{chunk-XN6ABQGM.js → chunk-BIE3ZH3N.js} +27 -27
- package/dist/{chunk-A3IURDU2.js → chunk-C2AOL6MK.js} +3 -3
- package/dist/{chunk-J4PILQJG.js → chunk-C2QVDLQV.js} +2 -2
- package/dist/{chunk-RKB4JZEM.js → chunk-CKR7LXEK.js} +67 -45
- package/dist/chunk-CKR7LXEK.js.map +1 -0
- package/dist/{chunk-AWLQNLTM.js → chunk-CSGFGQBI.js} +2 -2
- package/dist/{chunk-HZKDYR3Z.js → chunk-D4RV54HH.js} +2 -2
- package/dist/{chunk-OKNB2II7.js → chunk-DDLRKPR2.js} +6 -6
- package/dist/{chunk-3X3PNU3T.js → chunk-DLH3ECZP.js} +5 -5
- package/dist/chunk-DNIG3JME.js +892 -0
- package/dist/chunk-DNIG3JME.js.map +1 -0
- package/dist/{chunk-SA6GMZJY.js → chunk-DP3TSAYT.js} +2 -2
- package/dist/{chunk-XAJH5H3Z.js → chunk-FN6OFDBZ.js} +2 -2
- package/dist/{chunk-SUZG7UUK.js → chunk-G6DAE2LT.js} +2 -2
- package/dist/{chunk-AUPL775F.js → chunk-GSKW64NB.js} +2 -2
- package/dist/{chunk-3Z5LSDKR.js → chunk-GWB7ZD2A.js} +2 -2
- package/dist/{chunk-XOWR3I2W.js → chunk-HG2VVIKI.js} +9 -9
- package/dist/{chunk-23ZQPP2G.js → chunk-HOSJESKO.js} +3 -3
- package/dist/{chunk-EU6IRUCY.js → chunk-IDPZCHET.js} +2 -2
- package/dist/{chunk-3EE7EHFX.js → chunk-IO2UQVR2.js} +2 -2
- package/dist/{chunk-BWXKJDDH.js → chunk-ISMZ5UNE.js} +3 -3
- package/dist/{chunk-SX4QDWXK.js → chunk-IWUFKS4J.js} +2 -2
- package/dist/{chunk-MIIZAEJD.js → chunk-IY7DGT2Z.js} +2 -2
- package/dist/{chunk-STBX5X6B.js → chunk-JAYNUYSJ.js} +2 -2
- package/dist/{chunk-GV2V4CX6.js → chunk-K2REHR42.js} +2 -2
- package/dist/{chunk-NRG67KMO.js → chunk-KFKFK6G6.js} +10 -10
- package/dist/{chunk-FDPE6OIK.js → chunk-LDEKVBVO.js} +4 -4
- package/dist/{chunk-C2J4LBNB.js → chunk-M236YHUH.js} +5 -5
- package/dist/{chunk-L5VCT7LU.js → chunk-MCLZM5G7.js} +2 -2
- package/dist/{chunk-7Z3DLNSD.js → chunk-MGKH5KO3.js} +2 -2
- package/dist/{chunk-PUDYANAX.js → chunk-MMBLOJJB.js} +2 -2
- package/dist/{chunk-EFHNFTWB.js → chunk-MND4YJSX.js} +2 -2
- package/dist/{chunk-BQOGQULP.js → chunk-MZZEMPCI.js} +2 -2
- package/dist/{chunk-CQBNFDSG.js → chunk-NAPHQ2MG.js} +2 -2
- package/dist/{chunk-B6VPA3PF.js → chunk-NB2YX6X2.js} +6 -6
- package/dist/{chunk-PCSPXMPD.js → chunk-NCPR2FOJ.js} +3 -3
- package/dist/{chunk-67F6SBCJ.js → chunk-NOMHXZD7.js} +2 -2
- package/dist/{chunk-LWFWZTWX.js → chunk-NQV6G6MU.js} +2 -2
- package/dist/{chunk-JSFU7AFZ.js → chunk-OANSZGAG.js} +2 -2
- package/dist/{chunk-364M2T3D.js → chunk-OIIAIY7J.js} +3 -3
- package/dist/{chunk-IP5QGSNH.js → chunk-OXX4ORRL.js} +15 -15
- package/dist/{chunk-RTTPBBAN.js → chunk-OXYXMGRH.js} +4 -4
- package/dist/{chunk-K7BN34IA.js → chunk-PL26BCRN.js} +5 -5
- package/dist/{chunk-PM72NSEW.js → chunk-PYCTZ2HX.js} +2 -2
- package/dist/{chunk-P3NXZAV7.js → chunk-PZEADMX4.js} +2 -2
- package/dist/{chunk-QPH52AZB.js → chunk-QNDOTDJK.js} +2 -2
- package/dist/{chunk-LZACDIM2.js → chunk-RBGRQEW3.js} +4 -4
- package/dist/{chunk-V4JZCTMK.js → chunk-TKBW4YLS.js} +2 -2
- package/dist/{chunk-4D2YH47Z.js → chunk-TRW7N4FS.js} +2 -2
- package/dist/{chunk-XALR4DOQ.js → chunk-TTIEXXL3.js} +365 -1108
- package/dist/chunk-TTIEXXL3.js.map +1 -0
- package/dist/{chunk-OQJKY3Z5.js → chunk-UAAAXSKQ.js} +2 -2
- package/dist/{chunk-4LJSCW24.js → chunk-UM73Q46J.js} +2 -2
- package/dist/{chunk-7EJCAFMS.js → chunk-UTXYOWDR.js} +2 -2
- package/dist/{chunk-OGOADX26.js → chunk-UUYAW3JH.js} +2 -2
- package/dist/{chunk-UTGHW2Y5.js → chunk-UVUBLLM3.js} +3 -3
- package/dist/{chunk-4GGTC2AX.js → chunk-V4FI2TG6.js} +3 -3
- package/dist/{chunk-MO6N4QYY.js → chunk-VARNSLUW.js} +4 -4
- package/dist/{chunk-RQUF3FXK.js → chunk-VEB7NEON.js} +4 -4
- package/dist/{chunk-SSFO7B7H.js → chunk-VLBFSD7B.js} +2 -2
- package/dist/{chunk-NZFFGO5O.js → chunk-VXWOJPSY.js} +36 -3
- package/dist/chunk-VXWOJPSY.js.map +1 -0
- package/dist/{chunk-JNIVZNIB.js → chunk-WKVL2G7X.js} +4 -4
- package/dist/{chunk-KJXP6RUG.js → chunk-WNEVEMJ3.js} +4 -4
- package/dist/{chunk-I4MYLDRY.js → chunk-WQIYGYY6.js} +2 -2
- package/dist/{chunk-GQJKVQJR.js → chunk-WYLBEJQI.js} +2 -2
- package/dist/{chunk-JCPR47NY.js → chunk-XNROYP5E.js} +2 -2
- package/dist/{chunk-XNAOCY67.js → chunk-XVZIBMSY.js} +3 -3
- package/dist/{chunk-TZZFGR4E.js → chunk-YGVZ4QOZ.js} +4 -4
- package/dist/{chunk-C5JXYJHN.js → chunk-YZTFQBYY.js} +4 -4
- package/dist/{chunk-JTLXVXYH.js → chunk-ZCRDYQL6.js} +2 -2
- package/dist/{chunk-MAAL6OZV.js → chunk-ZG3HZZ6K.js} +90 -36
- package/dist/chunk-ZG3HZZ6K.js.map +1 -0
- package/dist/{chunk-CRVL6SLC.js → chunk-ZXTAHSQU.js} +2 -2
- package/dist/cli.js +80 -79
- package/dist/coding/export-okf-codegraph.js +20 -19
- package/dist/coding/export-okf-codegraph.js.map +1 -1
- package/dist/compounding/engine.js +22 -21
- package/dist/config.js +23 -22
- package/dist/connectors/codex-materialize-runner.js +20 -19
- package/dist/connectors/codex-materialize.js +2 -2
- package/dist/connectors/index.js +20 -19
- package/dist/consolidation-provenance-check.js +3 -3
- package/dist/consolidation-undo.js +2 -2
- package/dist/contradiction/index.js +6 -5
- package/dist/convergence-refresh.js +21 -20
- package/dist/corpus-watermark.js +21 -20
- package/dist/deep-recall-http-glue.js +7 -6
- package/dist/entity-canonical-id-migration-GD5MPFUF.js +28 -0
- package/dist/entity-retrieval.js +19 -18
- package/dist/explicit-capture.js +8 -7
- package/dist/external-wiki-access.js +48 -47
- package/dist/extraction.js +24 -23
- package/dist/harmonic-retrieval.js +20 -19
- package/dist/harmonic-source-lookup.js +3 -2
- package/dist/index.js +96 -95
- package/dist/location/index.js +22 -21
- package/dist/maintenance/memory-governance.js +19 -18
- package/dist/maintenance/rebuild-memory-lifecycle-ledger.js +19 -18
- package/dist/maintenance/rebuild-memory-projection-runner.js +21 -20
- package/dist/maintenance/rebuild-memory-projection.js +20 -19
- package/dist/memory-browse-operations.js +48 -47
- package/dist/memory-subject.js +4 -3
- package/dist/namespaces/migrate.js +20 -19
- package/dist/namespaces/search.js +7 -7
- package/dist/namespaces/storage.js +19 -18
- package/dist/offline-sync-file-io.js +3 -2
- package/dist/offline-sync-impression-drain.js +4 -4
- package/dist/offline-sync-snapshot-stream.js +6 -5
- package/dist/offline-sync-upload-staging.js +4 -3
- package/dist/offline-sync.js +5 -4
- package/dist/operator-doctor-corpus.js +22 -21
- package/dist/operator-toolkit.js +33 -32
- package/dist/orchestration/maintenance.js +32 -31
- package/dist/orchestration/orchestrator-init.d.ts +3 -0
- package/dist/orchestration/orchestrator-init.d.ts.map +1 -1
- package/dist/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator.js +96 -95
- package/dist/page-versioning.js +2 -2
- package/dist/recall-navigation-operations.js +48 -47
- package/dist/recall-navigation.js +47 -46
- package/dist/recall-state.js +2 -2
- package/dist/reconcile/manifest.js +4 -3
- package/dist/{resolution-ZU5BIAJA.js → resolution-AMYTPT5X.js} +7 -6
- package/dist/resolution-AMYTPT5X.js.map +1 -0
- package/dist/resume-bundles.js +24 -23
- package/dist/retrieval-agents.js +3 -2
- package/dist/salvage-envelope.js +6 -5
- package/dist/search/document-scanner.js +2 -2
- package/dist/search/factory.js +6 -6
- package/dist/search/index.js +6 -6
- package/dist/search/lancedb-backend.js +3 -3
- package/dist/search/meilisearch-backend.js +3 -3
- package/dist/search/orama-backend.js +3 -3
- package/dist/secure-store/entity-file-read.d.ts +9 -0
- package/dist/secure-store/entity-file-read.d.ts.map +1 -0
- package/dist/secure-store/index.js +3 -2
- package/dist/secure-store/secure-fs.d.ts.map +1 -1
- package/dist/semantic-consolidation.js +21 -20
- package/dist/semantic-rule-promotion.js +19 -18
- package/dist/semantic-rule-verifier.js +19 -18
- package/dist/shared-context/manager.js +2 -2
- package/dist/source-agent-qualifier.js +23 -22
- package/dist/standup/build.js +19 -18
- package/dist/storage/entity-canonical-id-migration-runner.d.ts +12 -0
- package/dist/storage/entity-canonical-id-migration-runner.d.ts.map +1 -1
- package/dist/storage/entity-canonical-id-migration.d.ts +1 -0
- package/dist/storage/entity-canonical-id-migration.d.ts.map +1 -1
- package/dist/storage/entity-canonical-id-references.d.ts +14 -0
- package/dist/storage/entity-canonical-id-references.d.ts.map +1 -1
- package/dist/storage/entity-store.d.ts +4 -0
- package/dist/storage/entity-store.d.ts.map +1 -1
- package/dist/storage.d.ts +7 -2
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +18 -17
- package/dist/subject-config.js +5 -4
- package/dist/support-passport/index.js +50 -49
- package/dist/transfer/capsule-import.js +3 -3
- package/dist/transfer/export-okf.js +20 -19
- package/dist/verified-recall.js +19 -18
- package/dist/who-knows-cli.js +20 -19
- package/dist/who-knows.js +19 -18
- package/dist/write-envelope.js +5 -4
- package/package.json +2 -2
- package/src/orchestration/orchestrator-init.ts +26 -3
- package/src/orchestrator.ts +1 -0
- package/src/secure-store/entity-file-read.ts +55 -0
- package/src/secure-store/secure-fs.ts +2 -1
- package/src/storage/entity-canonical-id-migration-runner.ts +36 -0
- package/src/storage/entity-canonical-id-migration.ts +1 -1
- package/src/storage/entity-canonical-id-references.ts +57 -2
- package/src/storage/entity-store.ts +138 -25
- package/src/storage.ts +15 -15
- package/dist/chunk-MAAL6OZV.js.map +0 -1
- package/dist/chunk-NZFFGO5O.js.map +0 -1
- package/dist/chunk-RKB4JZEM.js.map +0 -1
- package/dist/chunk-XALR4DOQ.js.map +0 -1
- /package/dist/{auto-sync-UQESPLCB.js.map → auto-sync-MX2AHVPQ.js.map} +0 -0
- /package/dist/{capsule-merge-LGYURS3C.js.map → capsule-merge-LGYZAMO4.js.map} +0 -0
- /package/dist/{chunk-2TGDT37F.js.map → chunk-27OJ5G3D.js.map} +0 -0
- /package/dist/{chunk-5LRV557D.js.map → chunk-2FIJQNL7.js.map} +0 -0
- /package/dist/{chunk-ETPIYK4J.js.map → chunk-2VBDSZ7U.js.map} +0 -0
- /package/dist/{chunk-QLI74KWK.js.map → chunk-2XVLY424.js.map} +0 -0
- /package/dist/{chunk-P55FACBG.js.map → chunk-3BOQPLCF.js.map} +0 -0
- /package/dist/{chunk-3LRBJQZE.js.map → chunk-3CHHQXAR.js.map} +0 -0
- /package/dist/{chunk-3GYSZHMT.js.map → chunk-3CZRBTJK.js.map} +0 -0
- /package/dist/{chunk-HFSPY26A.js.map → chunk-3IXNL6SK.js.map} +0 -0
- /package/dist/{chunk-4DQ4VEIQ.js.map → chunk-3SN2D43X.js.map} +0 -0
- /package/dist/{chunk-QMYB3N7X.js.map → chunk-4HNINU7Q.js.map} +0 -0
- /package/dist/{chunk-LW6UHNWA.js.map → chunk-4HYP4OKH.js.map} +0 -0
- /package/dist/{chunk-GKJJNO7C.js.map → chunk-4OE4UE2Y.js.map} +0 -0
- /package/dist/{chunk-5SMR542T.js.map → chunk-5GT4ESLR.js.map} +0 -0
- /package/dist/{chunk-DWL6YIZH.js.map → chunk-5JI3XWI2.js.map} +0 -0
- /package/dist/{chunk-PDN6MRWF.js.map → chunk-5NPZFXQH.js.map} +0 -0
- /package/dist/{chunk-Y6IF6H2U.js.map → chunk-5SMHQW45.js.map} +0 -0
- /package/dist/{chunk-PRUXE3RC.js.map → chunk-654GT5UP.js.map} +0 -0
- /package/dist/{chunk-3E6DGSGZ.js.map → chunk-6MC7UQ6D.js.map} +0 -0
- /package/dist/{chunk-655FVTCD.js.map → chunk-74IN6PV5.js.map} +0 -0
- /package/dist/{chunk-XOSCGZEV.js.map → chunk-7FZ4YVOH.js.map} +0 -0
- /package/dist/{chunk-MWWAQXZ6.js.map → chunk-7HFTCBCZ.js.map} +0 -0
- /package/dist/{chunk-NDZ7APNY.js.map → chunk-7VB3Y5OL.js.map} +0 -0
- /package/dist/{chunk-YEF5AAWN.js.map → chunk-A54E2ZTD.js.map} +0 -0
- /package/dist/{chunk-DEY7B77Y.js.map → chunk-AHCELJMH.js.map} +0 -0
- /package/dist/{chunk-PIWFNPQT.js.map → chunk-AL3TCNSJ.js.map} +0 -0
- /package/dist/{chunk-KNWC2EPP.js.map → chunk-AUYFUBBE.js.map} +0 -0
- /package/dist/{chunk-XN6ABQGM.js.map → chunk-BIE3ZH3N.js.map} +0 -0
- /package/dist/{chunk-A3IURDU2.js.map → chunk-C2AOL6MK.js.map} +0 -0
- /package/dist/{chunk-J4PILQJG.js.map → chunk-C2QVDLQV.js.map} +0 -0
- /package/dist/{chunk-AWLQNLTM.js.map → chunk-CSGFGQBI.js.map} +0 -0
- /package/dist/{chunk-HZKDYR3Z.js.map → chunk-D4RV54HH.js.map} +0 -0
- /package/dist/{chunk-OKNB2II7.js.map → chunk-DDLRKPR2.js.map} +0 -0
- /package/dist/{chunk-3X3PNU3T.js.map → chunk-DLH3ECZP.js.map} +0 -0
- /package/dist/{chunk-SA6GMZJY.js.map → chunk-DP3TSAYT.js.map} +0 -0
- /package/dist/{chunk-XAJH5H3Z.js.map → chunk-FN6OFDBZ.js.map} +0 -0
- /package/dist/{chunk-SUZG7UUK.js.map → chunk-G6DAE2LT.js.map} +0 -0
- /package/dist/{chunk-AUPL775F.js.map → chunk-GSKW64NB.js.map} +0 -0
- /package/dist/{chunk-3Z5LSDKR.js.map → chunk-GWB7ZD2A.js.map} +0 -0
- /package/dist/{chunk-XOWR3I2W.js.map → chunk-HG2VVIKI.js.map} +0 -0
- /package/dist/{chunk-23ZQPP2G.js.map → chunk-HOSJESKO.js.map} +0 -0
- /package/dist/{chunk-EU6IRUCY.js.map → chunk-IDPZCHET.js.map} +0 -0
- /package/dist/{chunk-3EE7EHFX.js.map → chunk-IO2UQVR2.js.map} +0 -0
- /package/dist/{chunk-BWXKJDDH.js.map → chunk-ISMZ5UNE.js.map} +0 -0
- /package/dist/{chunk-SX4QDWXK.js.map → chunk-IWUFKS4J.js.map} +0 -0
- /package/dist/{chunk-MIIZAEJD.js.map → chunk-IY7DGT2Z.js.map} +0 -0
- /package/dist/{chunk-STBX5X6B.js.map → chunk-JAYNUYSJ.js.map} +0 -0
- /package/dist/{chunk-GV2V4CX6.js.map → chunk-K2REHR42.js.map} +0 -0
- /package/dist/{chunk-NRG67KMO.js.map → chunk-KFKFK6G6.js.map} +0 -0
- /package/dist/{chunk-FDPE6OIK.js.map → chunk-LDEKVBVO.js.map} +0 -0
- /package/dist/{chunk-C2J4LBNB.js.map → chunk-M236YHUH.js.map} +0 -0
- /package/dist/{chunk-L5VCT7LU.js.map → chunk-MCLZM5G7.js.map} +0 -0
- /package/dist/{chunk-7Z3DLNSD.js.map → chunk-MGKH5KO3.js.map} +0 -0
- /package/dist/{chunk-PUDYANAX.js.map → chunk-MMBLOJJB.js.map} +0 -0
- /package/dist/{chunk-EFHNFTWB.js.map → chunk-MND4YJSX.js.map} +0 -0
- /package/dist/{chunk-BQOGQULP.js.map → chunk-MZZEMPCI.js.map} +0 -0
- /package/dist/{chunk-CQBNFDSG.js.map → chunk-NAPHQ2MG.js.map} +0 -0
- /package/dist/{chunk-B6VPA3PF.js.map → chunk-NB2YX6X2.js.map} +0 -0
- /package/dist/{chunk-PCSPXMPD.js.map → chunk-NCPR2FOJ.js.map} +0 -0
- /package/dist/{chunk-67F6SBCJ.js.map → chunk-NOMHXZD7.js.map} +0 -0
- /package/dist/{chunk-LWFWZTWX.js.map → chunk-NQV6G6MU.js.map} +0 -0
- /package/dist/{chunk-JSFU7AFZ.js.map → chunk-OANSZGAG.js.map} +0 -0
- /package/dist/{chunk-364M2T3D.js.map → chunk-OIIAIY7J.js.map} +0 -0
- /package/dist/{chunk-IP5QGSNH.js.map → chunk-OXX4ORRL.js.map} +0 -0
- /package/dist/{chunk-RTTPBBAN.js.map → chunk-OXYXMGRH.js.map} +0 -0
- /package/dist/{chunk-K7BN34IA.js.map → chunk-PL26BCRN.js.map} +0 -0
- /package/dist/{chunk-PM72NSEW.js.map → chunk-PYCTZ2HX.js.map} +0 -0
- /package/dist/{chunk-P3NXZAV7.js.map → chunk-PZEADMX4.js.map} +0 -0
- /package/dist/{chunk-QPH52AZB.js.map → chunk-QNDOTDJK.js.map} +0 -0
- /package/dist/{chunk-LZACDIM2.js.map → chunk-RBGRQEW3.js.map} +0 -0
- /package/dist/{chunk-V4JZCTMK.js.map → chunk-TKBW4YLS.js.map} +0 -0
- /package/dist/{chunk-4D2YH47Z.js.map → chunk-TRW7N4FS.js.map} +0 -0
- /package/dist/{chunk-OQJKY3Z5.js.map → chunk-UAAAXSKQ.js.map} +0 -0
- /package/dist/{chunk-4LJSCW24.js.map → chunk-UM73Q46J.js.map} +0 -0
- /package/dist/{chunk-7EJCAFMS.js.map → chunk-UTXYOWDR.js.map} +0 -0
- /package/dist/{chunk-OGOADX26.js.map → chunk-UUYAW3JH.js.map} +0 -0
- /package/dist/{chunk-UTGHW2Y5.js.map → chunk-UVUBLLM3.js.map} +0 -0
- /package/dist/{chunk-4GGTC2AX.js.map → chunk-V4FI2TG6.js.map} +0 -0
- /package/dist/{chunk-MO6N4QYY.js.map → chunk-VARNSLUW.js.map} +0 -0
- /package/dist/{chunk-RQUF3FXK.js.map → chunk-VEB7NEON.js.map} +0 -0
- /package/dist/{chunk-SSFO7B7H.js.map → chunk-VLBFSD7B.js.map} +0 -0
- /package/dist/{chunk-JNIVZNIB.js.map → chunk-WKVL2G7X.js.map} +0 -0
- /package/dist/{chunk-KJXP6RUG.js.map → chunk-WNEVEMJ3.js.map} +0 -0
- /package/dist/{chunk-I4MYLDRY.js.map → chunk-WQIYGYY6.js.map} +0 -0
- /package/dist/{chunk-GQJKVQJR.js.map → chunk-WYLBEJQI.js.map} +0 -0
- /package/dist/{chunk-JCPR47NY.js.map → chunk-XNROYP5E.js.map} +0 -0
- /package/dist/{chunk-XNAOCY67.js.map → chunk-XVZIBMSY.js.map} +0 -0
- /package/dist/{chunk-TZZFGR4E.js.map → chunk-YGVZ4QOZ.js.map} +0 -0
- /package/dist/{chunk-C5JXYJHN.js.map → chunk-YZTFQBYY.js.map} +0 -0
- /package/dist/{chunk-JTLXVXYH.js.map → chunk-ZCRDYQL6.js.map} +0 -0
- /package/dist/{chunk-CRVL6SLC.js.map → chunk-ZXTAHSQU.js.map} +0 -0
- /package/dist/{resolution-ZU5BIAJA.js.map → entity-canonical-id-migration-GD5MPFUF.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -91,7 +91,7 @@ import {
|
|
|
91
91
|
runWorkProductStatusCliCommand,
|
|
92
92
|
runWorkProjectCliCommand,
|
|
93
93
|
runWorkTaskCliCommand
|
|
94
|
-
} from "./chunk-
|
|
94
|
+
} from "./chunk-4HNINU7Q.js";
|
|
95
95
|
import "./chunk-MMACM5G2.js";
|
|
96
96
|
import "./chunk-54BGIBCR.js";
|
|
97
97
|
import "./chunk-H4CKS5B2.js";
|
|
@@ -106,39 +106,39 @@ import "./chunk-G4IAEX6D.js";
|
|
|
106
106
|
import "./chunk-2NLLXCJG.js";
|
|
107
107
|
import "./chunk-UP6MOYCB.js";
|
|
108
108
|
import "./chunk-765K3SAT.js";
|
|
109
|
-
import "./chunk-
|
|
109
|
+
import "./chunk-UVUBLLM3.js";
|
|
110
110
|
import "./chunk-TBUEE7XF.js";
|
|
111
111
|
import "./chunk-FGDKJJZS.js";
|
|
112
112
|
import "./chunk-AJVLDJU6.js";
|
|
113
113
|
import "./chunk-SZDLX763.js";
|
|
114
114
|
import "./chunk-PYIFUBRK.js";
|
|
115
115
|
import "./chunk-EDR6CVWZ.js";
|
|
116
|
-
import "./chunk-
|
|
116
|
+
import "./chunk-LDEKVBVO.js";
|
|
117
117
|
import "./chunk-WHCD4Z3D.js";
|
|
118
118
|
import "./chunk-YQJCWR4R.js";
|
|
119
119
|
import "./chunk-7IGMKQWK.js";
|
|
120
120
|
import "./chunk-2524MOWK.js";
|
|
121
121
|
import "./chunk-HSSERO3E.js";
|
|
122
122
|
import "./chunk-NOUJNHWG.js";
|
|
123
|
-
import "./chunk-
|
|
124
|
-
import "./chunk-
|
|
123
|
+
import "./chunk-TRW7N4FS.js";
|
|
124
|
+
import "./chunk-NOMHXZD7.js";
|
|
125
125
|
import "./chunk-HL4DB7TO.js";
|
|
126
126
|
import "./chunk-WLT6LTQP.js";
|
|
127
127
|
import "./chunk-EOU6V4IN.js";
|
|
128
128
|
import "./chunk-R7WYAXPO.js";
|
|
129
|
-
import "./chunk-
|
|
130
|
-
import "./chunk-
|
|
131
|
-
import "./chunk-
|
|
129
|
+
import "./chunk-NCPR2FOJ.js";
|
|
130
|
+
import "./chunk-ZXTAHSQU.js";
|
|
131
|
+
import "./chunk-5SMHQW45.js";
|
|
132
132
|
import "./chunk-B2NXOVZN.js";
|
|
133
133
|
import "./chunk-HDN7IVIO.js";
|
|
134
134
|
import "./chunk-NPO4ZQFY.js";
|
|
135
135
|
import "./chunk-3T74IZB3.js";
|
|
136
136
|
import "./chunk-2LA3H54D.js";
|
|
137
|
-
import "./chunk-
|
|
138
|
-
import "./chunk-
|
|
137
|
+
import "./chunk-HG2VVIKI.js";
|
|
138
|
+
import "./chunk-7VB3Y5OL.js";
|
|
139
139
|
import "./chunk-KFY3SGN7.js";
|
|
140
140
|
import "./chunk-CMTINOFS.js";
|
|
141
|
-
import "./chunk-
|
|
141
|
+
import "./chunk-IY7DGT2Z.js";
|
|
142
142
|
import "./chunk-6UDLN4IA.js";
|
|
143
143
|
import "./chunk-KXRX7YC2.js";
|
|
144
144
|
import "./chunk-GGRRF4PZ.js";
|
|
@@ -151,8 +151,8 @@ import "./chunk-EZ25VE3G.js";
|
|
|
151
151
|
import "./chunk-44442YCH.js";
|
|
152
152
|
import "./chunk-AUDJPF4N.js";
|
|
153
153
|
import "./chunk-Y4Z4I6WK.js";
|
|
154
|
-
import "./chunk-
|
|
155
|
-
import "./chunk-
|
|
154
|
+
import "./chunk-MCLZM5G7.js";
|
|
155
|
+
import "./chunk-YZTFQBYY.js";
|
|
156
156
|
import "./chunk-KJTKLXTH.js";
|
|
157
157
|
import "./chunk-2DQ2XREU.js";
|
|
158
158
|
import "./chunk-OKTXM5H4.js";
|
|
@@ -161,13 +161,13 @@ 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-C2AOL6MK.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
169
|
import "./chunk-KW4AJ7T3.js";
|
|
170
|
-
import "./chunk-
|
|
170
|
+
import "./chunk-IWUFKS4J.js";
|
|
171
171
|
import "./chunk-LI4APB6M.js";
|
|
172
172
|
import "./chunk-Z5LAYHGJ.js";
|
|
173
173
|
import "./chunk-TNRCDMQT.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-OXX4ORRL.js";
|
|
194
194
|
import "./chunk-V7IZKJI3.js";
|
|
195
195
|
import "./chunk-TB6CBZ5V.js";
|
|
196
196
|
import "./chunk-XW2T4QAW.js";
|
|
@@ -203,11 +203,11 @@ import "./chunk-NJAIR57U.js";
|
|
|
203
203
|
import "./chunk-ZSEFGDCI.js";
|
|
204
204
|
import "./chunk-P6P35FY4.js";
|
|
205
205
|
import "./chunk-3HSRWJTC.js";
|
|
206
|
-
import "./chunk-
|
|
207
|
-
import "./chunk-
|
|
208
|
-
import "./chunk-
|
|
206
|
+
import "./chunk-5JI3XWI2.js";
|
|
207
|
+
import "./chunk-IO2UQVR2.js";
|
|
208
|
+
import "./chunk-5NPZFXQH.js";
|
|
209
209
|
import "./chunk-SRT6SHVZ.js";
|
|
210
|
-
import "./chunk-
|
|
210
|
+
import "./chunk-AUYFUBBE.js";
|
|
211
211
|
import "./chunk-TE6S7KDF.js";
|
|
212
212
|
import "./chunk-MZUQVWVC.js";
|
|
213
213
|
import "./chunk-EIB4FJVR.js";
|
|
@@ -215,19 +215,19 @@ import "./chunk-A5KNZSNA.js";
|
|
|
215
215
|
import "./chunk-HUSTM6PU.js";
|
|
216
216
|
import "./chunk-D24OXEPB.js";
|
|
217
217
|
import "./chunk-2WDMUQOH.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-NB2YX6X2.js";
|
|
219
|
+
import "./chunk-C2QVDLQV.js";
|
|
220
|
+
import "./chunk-NAPHQ2MG.js";
|
|
221
|
+
import "./chunk-VEB7NEON.js";
|
|
222
|
+
import "./chunk-ZCRDYQL6.js";
|
|
223
|
+
import "./chunk-7FZ4YVOH.js";
|
|
224
|
+
import "./chunk-654GT5UP.js";
|
|
225
225
|
import "./chunk-7T4TOGMS.js";
|
|
226
226
|
import "./chunk-7YQ6ESEA.js";
|
|
227
|
-
import "./chunk-
|
|
227
|
+
import "./chunk-M236YHUH.js";
|
|
228
228
|
import "./chunk-5GX5457J.js";
|
|
229
229
|
import "./chunk-PQM3B54K.js";
|
|
230
|
-
import "./chunk-
|
|
230
|
+
import "./chunk-NQV6G6MU.js";
|
|
231
231
|
import "./chunk-CEN6DW6X.js";
|
|
232
232
|
import "./chunk-E4RMZGRS.js";
|
|
233
233
|
import "./chunk-YYEOR4XN.js";
|
|
@@ -235,24 +235,24 @@ 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-K2REHR42.js";
|
|
239
|
+
import "./chunk-4HYP4OKH.js";
|
|
240
240
|
import "./chunk-AB3A7EFH.js";
|
|
241
241
|
import "./chunk-KIUVEMBI.js";
|
|
242
|
-
import "./chunk-
|
|
242
|
+
import "./chunk-FN6OFDBZ.js";
|
|
243
243
|
import "./chunk-2BPPGNAQ.js";
|
|
244
244
|
import "./chunk-DJSJ4ULL.js";
|
|
245
|
-
import "./chunk-
|
|
246
|
-
import "./chunk-
|
|
245
|
+
import "./chunk-GSKW64NB.js";
|
|
246
|
+
import "./chunk-BIE3ZH3N.js";
|
|
247
247
|
import "./chunk-W4F3C7N7.js";
|
|
248
248
|
import "./chunk-MPC7TYTZ.js";
|
|
249
|
-
import "./chunk-
|
|
249
|
+
import "./chunk-ISMZ5UNE.js";
|
|
250
250
|
import "./chunk-IFBSZGW3.js";
|
|
251
251
|
import "./chunk-OGXXGHW6.js";
|
|
252
|
-
import "./chunk-
|
|
252
|
+
import "./chunk-MGKH5KO3.js";
|
|
253
253
|
import "./chunk-VQ7B2Q6M.js";
|
|
254
254
|
import "./chunk-BANSBRNX.js";
|
|
255
|
-
import "./chunk-
|
|
255
|
+
import "./chunk-UUYAW3JH.js";
|
|
256
256
|
import "./chunk-GNVZQ5JN.js";
|
|
257
257
|
import "./chunk-YN2UN7N3.js";
|
|
258
258
|
import "./chunk-JWX2Q6HS.js";
|
|
@@ -260,10 +260,10 @@ import "./chunk-NRLWHZVS.js";
|
|
|
260
260
|
import "./chunk-FLI6DEIU.js";
|
|
261
261
|
import "./chunk-WWDO7ZWM.js";
|
|
262
262
|
import "./chunk-5Y43VGYB.js";
|
|
263
|
-
import "./chunk-
|
|
263
|
+
import "./chunk-UAAAXSKQ.js";
|
|
264
264
|
import "./chunk-O6S5FLZB.js";
|
|
265
265
|
import "./chunk-5HFVWYHL.js";
|
|
266
|
-
import "./chunk-
|
|
266
|
+
import "./chunk-DLH3ECZP.js";
|
|
267
267
|
import "./chunk-YE4JBZO5.js";
|
|
268
268
|
import "./chunk-5KVT6G5U.js";
|
|
269
269
|
import "./chunk-KIW3OOZE.js";
|
|
@@ -274,9 +274,9 @@ import "./chunk-RRJ462HP.js";
|
|
|
274
274
|
import "./chunk-SOBJ6NEY.js";
|
|
275
275
|
import "./chunk-4QPW6JVI.js";
|
|
276
276
|
import "./chunk-VYDGHJIN.js";
|
|
277
|
-
import "./chunk-
|
|
277
|
+
import "./chunk-3CHHQXAR.js";
|
|
278
278
|
import "./chunk-E6UNM67F.js";
|
|
279
|
-
import "./chunk-
|
|
279
|
+
import "./chunk-5GT4ESLR.js";
|
|
280
280
|
import "./chunk-Z64TS5V4.js";
|
|
281
281
|
import "./chunk-AQEJKOKI.js";
|
|
282
282
|
import "./chunk-4RNBLLZR.js";
|
|
@@ -286,8 +286,8 @@ import "./chunk-RN7HPFYS.js";
|
|
|
286
286
|
import "./chunk-BDLOEODO.js";
|
|
287
287
|
import "./chunk-2YA5N2BY.js";
|
|
288
288
|
import "./chunk-DMDWFQMR.js";
|
|
289
|
-
import "./chunk-
|
|
290
|
-
import "./chunk-
|
|
289
|
+
import "./chunk-YGVZ4QOZ.js";
|
|
290
|
+
import "./chunk-QNDOTDJK.js";
|
|
291
291
|
import "./chunk-AZEZSQ5R.js";
|
|
292
292
|
import "./chunk-EI6V5UXY.js";
|
|
293
293
|
import "./chunk-M7KGIW5F.js";
|
|
@@ -296,7 +296,7 @@ import "./chunk-754XN6LX.js";
|
|
|
296
296
|
import "./chunk-DOWACHYO.js";
|
|
297
297
|
import "./chunk-5MA7ZLPD.js";
|
|
298
298
|
import "./chunk-LTHVM4XN.js";
|
|
299
|
-
import "./chunk-
|
|
299
|
+
import "./chunk-IDPZCHET.js";
|
|
300
300
|
import "./chunk-C37ZRXX7.js";
|
|
301
301
|
import "./chunk-NVKO5YKP.js";
|
|
302
302
|
import "./chunk-GEHIRZXF.js";
|
|
@@ -306,12 +306,12 @@ import "./chunk-YRULQW5J.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-D4RV54HH.js";
|
|
310
|
+
import "./chunk-OIIAIY7J.js";
|
|
311
|
+
import "./chunk-VLBFSD7B.js";
|
|
312
312
|
import "./chunk-UFGFMWAD.js";
|
|
313
313
|
import "./chunk-LXATZLSC.js";
|
|
314
|
-
import "./chunk-
|
|
314
|
+
import "./chunk-DDLRKPR2.js";
|
|
315
315
|
import "./chunk-4IYIGN53.js";
|
|
316
316
|
import "./chunk-RXFCU3CY.js";
|
|
317
317
|
import "./chunk-2LSZVONP.js";
|
|
@@ -319,13 +319,13 @@ import "./chunk-DEUNUKTD.js";
|
|
|
319
319
|
import "./chunk-LXY5VVGM.js";
|
|
320
320
|
import "./chunk-GKCXTSFF.js";
|
|
321
321
|
import "./chunk-ZY2MNJR6.js";
|
|
322
|
-
import "./chunk-
|
|
322
|
+
import "./chunk-V4FI2TG6.js";
|
|
323
323
|
import "./chunk-3UXOZBHV.js";
|
|
324
|
-
import "./chunk-
|
|
325
|
-
import "./chunk-
|
|
324
|
+
import "./chunk-AL3TCNSJ.js";
|
|
325
|
+
import "./chunk-GWB7ZD2A.js";
|
|
326
326
|
import "./chunk-GZFKCLRC.js";
|
|
327
327
|
import "./chunk-6JMQR72P.js";
|
|
328
|
-
import "./chunk-
|
|
328
|
+
import "./chunk-UTXYOWDR.js";
|
|
329
329
|
import "./chunk-LVU7FP27.js";
|
|
330
330
|
import "./chunk-CSAKJVXW.js";
|
|
331
331
|
import "./chunk-K2XUWZBM.js";
|
|
@@ -354,18 +354,19 @@ import "./chunk-236PXYG7.js";
|
|
|
354
354
|
import "./chunk-ZCUTSMR2.js";
|
|
355
355
|
import "./chunk-QDW3E4RD.js";
|
|
356
356
|
import "./chunk-C2RW36YR.js";
|
|
357
|
-
import "./chunk-
|
|
357
|
+
import "./chunk-TTIEXXL3.js";
|
|
358
358
|
import "./chunk-UHVXE24Y.js";
|
|
359
359
|
import "./chunk-TRMJ6BYC.js";
|
|
360
|
-
import "./chunk-
|
|
361
|
-
import "./chunk-
|
|
362
|
-
import "./chunk-
|
|
363
|
-
import "./chunk-
|
|
364
|
-
import "./chunk-
|
|
360
|
+
import "./chunk-DNIG3JME.js";
|
|
361
|
+
import "./chunk-TKBW4YLS.js";
|
|
362
|
+
import "./chunk-7HFTCBCZ.js";
|
|
363
|
+
import "./chunk-OXYXMGRH.js";
|
|
364
|
+
import "./chunk-74IN6PV5.js";
|
|
365
|
+
import "./chunk-WYLBEJQI.js";
|
|
365
366
|
import "./chunk-CYEPCZN5.js";
|
|
366
|
-
import "./chunk-
|
|
367
|
+
import "./chunk-3IXNL6SK.js";
|
|
367
368
|
import "./chunk-7VO6E5UD.js";
|
|
368
|
-
import "./chunk-
|
|
369
|
+
import "./chunk-WNEVEMJ3.js";
|
|
369
370
|
import "./chunk-VOKHZRHW.js";
|
|
370
371
|
import "./chunk-GUMZC2BO.js";
|
|
371
372
|
import "./chunk-TFA6HPOA.js";
|
|
@@ -382,7 +383,7 @@ import "./chunk-LDXUBPMO.js";
|
|
|
382
383
|
import "./chunk-EPOYPPOW.js";
|
|
383
384
|
import "./chunk-AAD2ZS6P.js";
|
|
384
385
|
import "./chunk-FF6N7BXC.js";
|
|
385
|
-
import "./chunk-
|
|
386
|
+
import "./chunk-WKVL2G7X.js";
|
|
386
387
|
import "./chunk-YXZG5TVN.js";
|
|
387
388
|
import "./chunk-ZIKENA2C.js";
|
|
388
389
|
import "./chunk-3OUGSOJP.js";
|
|
@@ -391,10 +392,10 @@ import "./chunk-3ONXXHQO.js";
|
|
|
391
392
|
import "./chunk-6MKLMEBE.js";
|
|
392
393
|
import "./chunk-3WU7XOFN.js";
|
|
393
394
|
import "./chunk-G7D6GZ5J.js";
|
|
394
|
-
import "./chunk-
|
|
395
|
+
import "./chunk-3CZRBTJK.js";
|
|
395
396
|
import "./chunk-M5GVCJSJ.js";
|
|
396
397
|
import "./chunk-RBOJCG4T.js";
|
|
397
|
-
import "./chunk-
|
|
398
|
+
import "./chunk-VXWOJPSY.js";
|
|
398
399
|
import "./chunk-5WITETWU.js";
|
|
399
400
|
import "./chunk-6CIAGZ6X.js";
|
|
400
401
|
import "./chunk-7CT3AI52.js";
|
|
@@ -429,13 +430,13 @@ import "./chunk-LDXNKEYB.js";
|
|
|
429
430
|
import "./chunk-YBA52OKG.js";
|
|
430
431
|
import "./chunk-RMMA44HE.js";
|
|
431
432
|
import "./chunk-T2JSUEH6.js";
|
|
432
|
-
import "./chunk-
|
|
433
|
-
import "./chunk-
|
|
433
|
+
import "./chunk-A54E2ZTD.js";
|
|
434
|
+
import "./chunk-PL26BCRN.js";
|
|
434
435
|
import "./chunk-353C5UNV.js";
|
|
435
|
-
import "./chunk-
|
|
436
|
+
import "./chunk-2FIJQNL7.js";
|
|
436
437
|
import "./chunk-BT7NVCML.js";
|
|
437
|
-
import "./chunk-
|
|
438
|
-
import "./chunk-
|
|
438
|
+
import "./chunk-JAYNUYSJ.js";
|
|
439
|
+
import "./chunk-2VBDSZ7U.js";
|
|
439
440
|
import "./chunk-KQAFEZQX.js";
|
|
440
441
|
import "./chunk-WEHSQBFR.js";
|
|
441
442
|
import "./chunk-X7Y7WX73.js";
|
|
@@ -446,15 +447,15 @@ import "./chunk-SOAU2OE2.js";
|
|
|
446
447
|
import "./chunk-BJMBJZ2Y.js";
|
|
447
448
|
import "./chunk-UKJAGEXH.js";
|
|
448
449
|
import "./chunk-FP2373TW.js";
|
|
449
|
-
import "./chunk-
|
|
450
|
-
import "./chunk-
|
|
450
|
+
import "./chunk-VARNSLUW.js";
|
|
451
|
+
import "./chunk-DP3TSAYT.js";
|
|
451
452
|
import "./chunk-QUMKDRCF.js";
|
|
452
|
-
import "./chunk-
|
|
453
|
+
import "./chunk-4OE4UE2Y.js";
|
|
453
454
|
import "./chunk-ETZUIRCI.js";
|
|
454
455
|
import "./chunk-WC3V7HHP.js";
|
|
455
456
|
import "./chunk-EHHQJTAU.js";
|
|
456
457
|
import "./chunk-L272A5QW.js";
|
|
457
|
-
import "./chunk-
|
|
458
|
+
import "./chunk-3BOQPLCF.js";
|
|
458
459
|
import "./chunk-ZA53AZND.js";
|
|
459
460
|
import "./chunk-7RJUVTVF.js";
|
|
460
461
|
import "./chunk-AL3UYZ5N.js";
|
|
@@ -462,17 +463,16 @@ import "./chunk-RL6NEVXT.js";
|
|
|
462
463
|
import "./chunk-YET735EZ.js";
|
|
463
464
|
import "./chunk-PWPIERBM.js";
|
|
464
465
|
import "./chunk-IG747LRN.js";
|
|
465
|
-
import "./chunk-
|
|
466
|
-
import "./chunk-DEY7B77Y.js";
|
|
466
|
+
import "./chunk-AHCELJMH.js";
|
|
467
467
|
import "./chunk-5FVVY2EB.js";
|
|
468
468
|
import "./chunk-BTNNL7ZW.js";
|
|
469
469
|
import "./chunk-JDSVLVCG.js";
|
|
470
470
|
import "./chunk-5GKPFL3S.js";
|
|
471
471
|
import "./chunk-JAKIDQB2.js";
|
|
472
|
-
import "./chunk-
|
|
472
|
+
import "./chunk-HOSJESKO.js";
|
|
473
473
|
import "./chunk-UI3NYK34.js";
|
|
474
|
-
import "./chunk-
|
|
475
|
-
import "./chunk-
|
|
474
|
+
import "./chunk-6MC7UQ6D.js";
|
|
475
|
+
import "./chunk-MND4YJSX.js";
|
|
476
476
|
import "./chunk-UZRSI6NX.js";
|
|
477
477
|
import "./chunk-MGCKZWAE.js";
|
|
478
478
|
import "./chunk-63LFM77Z.js";
|
|
@@ -507,10 +507,11 @@ import "./chunk-QUIRIG2P.js";
|
|
|
507
507
|
import "./chunk-DAOMWGO2.js";
|
|
508
508
|
import "./chunk-RFYAYKTD.js";
|
|
509
509
|
import "./chunk-4MN27537.js";
|
|
510
|
-
import "./chunk-
|
|
510
|
+
import "./chunk-CSGFGQBI.js";
|
|
511
511
|
import "./chunk-LDPPTPO5.js";
|
|
512
|
-
import "./chunk-
|
|
512
|
+
import "./chunk-ZG3HZZ6K.js";
|
|
513
513
|
import "./chunk-A6XUJE5D.js";
|
|
514
|
+
import "./chunk-C7HJ3NEI.js";
|
|
514
515
|
import "./chunk-VS2IYZRU.js";
|
|
515
516
|
import "./chunk-KNA3BXXL.js";
|
|
516
517
|
import "./chunk-NINSR6LX.js";
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
rejectSymlinkPath,
|
|
6
6
|
renderFrontmatter,
|
|
7
7
|
writeBundleFile
|
|
8
|
-
} from "../chunk-
|
|
8
|
+
} from "../chunk-TRW7N4FS.js";
|
|
9
9
|
import {
|
|
10
10
|
ACTIVE_DECISION_STATUSES,
|
|
11
11
|
CodegraphRuntimeError,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
listCodegraphProjects,
|
|
16
16
|
parseDecisionRecord,
|
|
17
17
|
resolveCodegraphDbPath
|
|
18
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-MGKH5KO3.js";
|
|
19
19
|
import {
|
|
20
20
|
buildCodingGraphInstallHint,
|
|
21
21
|
isCodingGraphInstalled
|
|
@@ -24,18 +24,19 @@ import "../chunk-FEHIOYML.js";
|
|
|
24
24
|
import "../chunk-P32IDSHD.js";
|
|
25
25
|
import {
|
|
26
26
|
StorageManager
|
|
27
|
-
} from "../chunk-
|
|
27
|
+
} from "../chunk-TTIEXXL3.js";
|
|
28
28
|
import "../chunk-UHVXE24Y.js";
|
|
29
29
|
import "../chunk-TRMJ6BYC.js";
|
|
30
|
-
import "../chunk-
|
|
31
|
-
import "../chunk-
|
|
32
|
-
import "../chunk-
|
|
33
|
-
import "../chunk-
|
|
34
|
-
import "../chunk-
|
|
30
|
+
import "../chunk-DNIG3JME.js";
|
|
31
|
+
import "../chunk-TKBW4YLS.js";
|
|
32
|
+
import "../chunk-7HFTCBCZ.js";
|
|
33
|
+
import "../chunk-OXYXMGRH.js";
|
|
34
|
+
import "../chunk-74IN6PV5.js";
|
|
35
|
+
import "../chunk-WYLBEJQI.js";
|
|
35
36
|
import "../chunk-CYEPCZN5.js";
|
|
36
|
-
import "../chunk-
|
|
37
|
+
import "../chunk-3IXNL6SK.js";
|
|
37
38
|
import "../chunk-7VO6E5UD.js";
|
|
38
|
-
import "../chunk-
|
|
39
|
+
import "../chunk-WNEVEMJ3.js";
|
|
39
40
|
import "../chunk-VOKHZRHW.js";
|
|
40
41
|
import "../chunk-GUMZC2BO.js";
|
|
41
42
|
import "../chunk-TFA6HPOA.js";
|
|
@@ -52,7 +53,7 @@ import "../chunk-LDXUBPMO.js";
|
|
|
52
53
|
import "../chunk-EPOYPPOW.js";
|
|
53
54
|
import "../chunk-AAD2ZS6P.js";
|
|
54
55
|
import "../chunk-FF6N7BXC.js";
|
|
55
|
-
import "../chunk-
|
|
56
|
+
import "../chunk-WKVL2G7X.js";
|
|
56
57
|
import "../chunk-YXZG5TVN.js";
|
|
57
58
|
import "../chunk-ZIKENA2C.js";
|
|
58
59
|
import {
|
|
@@ -65,10 +66,10 @@ import "../chunk-3ONXXHQO.js";
|
|
|
65
66
|
import "../chunk-6MKLMEBE.js";
|
|
66
67
|
import "../chunk-3WU7XOFN.js";
|
|
67
68
|
import "../chunk-G7D6GZ5J.js";
|
|
68
|
-
import "../chunk-
|
|
69
|
+
import "../chunk-3CZRBTJK.js";
|
|
69
70
|
import "../chunk-M5GVCJSJ.js";
|
|
70
71
|
import "../chunk-RBOJCG4T.js";
|
|
71
|
-
import "../chunk-
|
|
72
|
+
import "../chunk-VXWOJPSY.js";
|
|
72
73
|
import "../chunk-5WITETWU.js";
|
|
73
74
|
import "../chunk-6CIAGZ6X.js";
|
|
74
75
|
import "../chunk-7CT3AI52.js";
|
|
@@ -96,14 +97,14 @@ import "../chunk-PJKTFXE2.js";
|
|
|
96
97
|
import "../chunk-W5BIQOAJ.js";
|
|
97
98
|
import "../chunk-LDXNKEYB.js";
|
|
98
99
|
import "../chunk-YBA52OKG.js";
|
|
99
|
-
import "../chunk-
|
|
100
|
+
import "../chunk-2FIJQNL7.js";
|
|
100
101
|
import "../chunk-BT7NVCML.js";
|
|
101
|
-
import "../chunk-
|
|
102
|
+
import "../chunk-JAYNUYSJ.js";
|
|
102
103
|
import "../chunk-BJMBJZ2Y.js";
|
|
103
104
|
import "../chunk-UKJAGEXH.js";
|
|
104
105
|
import "../chunk-FP2373TW.js";
|
|
105
106
|
import "../chunk-L272A5QW.js";
|
|
106
|
-
import "../chunk-
|
|
107
|
+
import "../chunk-3BOQPLCF.js";
|
|
107
108
|
import "../chunk-ZA53AZND.js";
|
|
108
109
|
import "../chunk-7RJUVTVF.js";
|
|
109
110
|
import "../chunk-AL3UYZ5N.js";
|
|
@@ -112,8 +113,7 @@ import {
|
|
|
112
113
|
} from "../chunk-RL6NEVXT.js";
|
|
113
114
|
import "../chunk-YET735EZ.js";
|
|
114
115
|
import "../chunk-PWPIERBM.js";
|
|
115
|
-
import "../chunk-
|
|
116
|
-
import "../chunk-DEY7B77Y.js";
|
|
116
|
+
import "../chunk-AHCELJMH.js";
|
|
117
117
|
import "../chunk-5FVVY2EB.js";
|
|
118
118
|
import "../chunk-BTNNL7ZW.js";
|
|
119
119
|
import {
|
|
@@ -137,8 +137,9 @@ import "../chunk-P2QRMMVQ.js";
|
|
|
137
137
|
import "../chunk-BTTPKDIL.js";
|
|
138
138
|
import "../chunk-QUIRIG2P.js";
|
|
139
139
|
import "../chunk-LDPPTPO5.js";
|
|
140
|
-
import "../chunk-
|
|
140
|
+
import "../chunk-ZG3HZZ6K.js";
|
|
141
141
|
import "../chunk-A6XUJE5D.js";
|
|
142
|
+
import "../chunk-C7HJ3NEI.js";
|
|
142
143
|
import "../chunk-VS2IYZRU.js";
|
|
143
144
|
import "../chunk-KNA3BXXL.js";
|
|
144
145
|
import "../chunk-3WCASNQZ.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":[]}
|