@unbrained/pm-cli 2026.7.20 → 2026.7.21
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/.claude-plugin/marketplace.json +2 -2
- package/CHANGELOG.md +11 -0
- package/dist/cli/commander-usage.d.ts +1 -1
- package/dist/cli/commander-usage.js +5 -5
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/completion.js +13 -5
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/contracts.js +4 -3
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/error-guidance.d.ts +2 -0
- package/dist/cli/error-guidance.js +7 -2
- package/dist/cli/error-guidance.js.map +1 -1
- package/dist/cli/main.d.ts +1 -5
- package/dist/cli/main.js +12 -50
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +13 -3
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +45 -3
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-structured-mutation.d.ts +14 -0
- package/dist/cli/register-structured-mutation.js +62 -0
- package/dist/cli/register-structured-mutation.js.map +1 -0
- package/dist/cli/registration-helpers.js +5 -3
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/bundle-manifest.json +280 -296
- package/dist/cli-bundle/chunks/{append-E6V54WOQ.js → append-7OVFYR3C.js} +3 -3
- package/dist/cli-bundle/chunks/{append-NNJ3EFIT.js → append-DFETHAZL.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-C3KD7U3T.js → chunk-2L6ZP22J.js} +241 -10
- package/dist/cli-bundle/chunks/chunk-2L6ZP22J.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-KZEANWJS.js → chunk-4PUUNQDV.js} +98 -30
- package/dist/cli-bundle/chunks/chunk-4PUUNQDV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RDV4ZFYS.js → chunk-4QOB7L7I.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-RDV4ZFYS.js.map → chunk-4QOB7L7I.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3LPFHE3P.js → chunk-4QSQ6XDK.js} +62 -20
- package/dist/cli-bundle/chunks/chunk-4QSQ6XDK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-QJKL5PHS.js → chunk-7656MAUL.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3AO5VSDR.js → chunk-7RW4JCU2.js} +328 -6
- package/dist/cli-bundle/chunks/chunk-7RW4JCU2.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-X6K5XTTN.js → chunk-7W2UAXXT.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-SSKOQNMS.js → chunk-ABWCF646.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-SSKOQNMS.js.map → chunk-ABWCF646.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-WVA4DVNV.js → chunk-ADBTSVGK.js} +71 -33
- package/dist/cli-bundle/chunks/chunk-ADBTSVGK.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-J4FBIFU6.js → chunk-AELMUANP.js} +12 -6
- package/dist/cli-bundle/chunks/chunk-AELMUANP.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-4F6BWJ4J.js → chunk-AMJPSANK.js} +57 -36
- package/dist/cli-bundle/chunks/chunk-AMJPSANK.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6VIJ7UA5.js → chunk-AS4SAZ5R.js} +850 -819
- package/dist/cli-bundle/chunks/chunk-AS4SAZ5R.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SG74J6MV.js → chunk-ATBCUC7Y.js} +574 -5
- package/dist/cli-bundle/chunks/chunk-ATBCUC7Y.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5OK4UGFV.js → chunk-BXNDKOR2.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KSPWRNVP.js → chunk-CPX275C6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JH2ZSLO3.js → chunk-DZRV2OPA.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-L7BH7IWU.js → chunk-E5XMKOSB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CQTQKUUV.js → chunk-EWJWSNRU.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DAQ45GCS.js → chunk-F2LBF7XJ.js} +22 -15
- package/dist/cli-bundle/chunks/chunk-F2LBF7XJ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6XMUURSS.js → chunk-FJIFFBJX.js} +64 -33
- package/dist/cli-bundle/chunks/chunk-FJIFFBJX.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-E7ICD63T.js → chunk-FO6OSVEN.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-E7ICD63T.js.map → chunk-FO6OSVEN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3MCTMJXI.js → chunk-FPBMLYPI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-UZDQXNUB.js → chunk-FSE2IKJQ.js} +46 -5
- package/dist/cli-bundle/chunks/chunk-FSE2IKJQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IX677TRO.js → chunk-GKX4NJ7U.js} +8 -10
- package/dist/cli-bundle/chunks/{chunk-IX677TRO.js.map → chunk-GKX4NJ7U.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-DVDBQA3B.js → chunk-GTK4DTEW.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-H7EAER5L.js +974 -0
- package/dist/cli-bundle/chunks/chunk-H7EAER5L.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5UX66S6U.js → chunk-ICDAQ4TD.js} +316 -8
- package/dist/cli-bundle/chunks/chunk-ICDAQ4TD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YQQNAKW3.js → chunk-JFD5LPMI.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-YQQNAKW3.js.map → chunk-JFD5LPMI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-QANSTTC7.js → chunk-JXCW2TI2.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-QANSTTC7.js.map → chunk-JXCW2TI2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-GSJSM5BJ.js → chunk-K36WV5J6.js} +76 -13
- package/dist/cli-bundle/chunks/chunk-K36WV5J6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GVI6FAFG.js → chunk-K55VMLSS.js} +7 -5
- package/dist/cli-bundle/chunks/chunk-K55VMLSS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GIQSU6S2.js → chunk-KBLZ3AA5.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XJF7CDNH.js → chunk-KH44WBAT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GV2262OF.js → chunk-LAV26CQG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VDO2JMD4.js → chunk-LVC72YRD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3VY6MIEO.js → chunk-LZYP423P.js} +35 -6
- package/dist/cli-bundle/chunks/chunk-LZYP423P.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZYPFOO3L.js → chunk-MATHDCGG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-OV7MSW3I.js → chunk-MWQ2HC2A.js} +99 -31
- package/dist/cli-bundle/chunks/chunk-MWQ2HC2A.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-NHT3F4WZ.js → chunk-NUF7ROFH.js} +840 -816
- package/dist/cli-bundle/chunks/chunk-NUF7ROFH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AOEOYL3S.js → chunk-O4BCOJTZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RJO3YAFM.js → chunk-OCUBRA6D.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5IZJWSDB.js → chunk-OG5DVFMA.js} +22 -15
- package/dist/cli-bundle/chunks/chunk-OG5DVFMA.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-I577UHC7.js → chunk-OR42SO64.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZOJ3LR7O.js → chunk-OY7DMU5P.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HEWM6CEN.js → chunk-P7MTHPJQ.js} +50 -9
- package/dist/cli-bundle/chunks/chunk-P7MTHPJQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-2BO4CA46.js → chunk-PFNHX655.js} +236 -12
- package/dist/cli-bundle/chunks/{chunk-2BO4CA46.js.map → chunk-PFNHX655.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZV2NTVMJ.js → chunk-PONKZPCJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-THAOZG4U.js → chunk-PQSEQD6E.js} +8 -6
- package/dist/cli-bundle/chunks/chunk-PQSEQD6E.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-PWDEHT3L.js +991 -0
- package/dist/cli-bundle/chunks/chunk-PWDEHT3L.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-UX6SSO2I.js → chunk-PZC2FUOQ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WUVEBQW6.js → chunk-QG4GFLQ6.js} +3 -5
- package/dist/cli-bundle/chunks/{chunk-WUVEBQW6.js.map → chunk-QG4GFLQ6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VQIHNHMJ.js → chunk-QIH77CAG.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-R3EWPG4A.js → chunk-QJIKE24M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-QLZ643FM.js → chunk-QOOTOD3W.js} +10 -12
- package/dist/cli-bundle/chunks/{chunk-QLZ643FM.js.map → chunk-QOOTOD3W.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MYSS5H2A.js → chunk-R3P6FZJW.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-MYSS5H2A.js.map → chunk-R3P6FZJW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-G3COA6GS.js → chunk-RNPZYNHS.js} +56 -35
- package/dist/cli-bundle/chunks/chunk-RNPZYNHS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-T44FMVRL.js → chunk-RPESLSO5.js} +62 -20
- package/dist/cli-bundle/chunks/chunk-RPESLSO5.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-INSTSQNZ.js → chunk-SY4SFZSD.js} +595 -3
- package/dist/cli-bundle/chunks/chunk-SY4SFZSD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HB3P4M52.js → chunk-TRSHFPRZ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HRW7GF6T.js → chunk-UCBDQI5E.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4U4Z6AHI.js → chunk-V22ZPOKN.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JM6YAXTR.js → chunk-VHXHVTUU.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LPEYZRUR.js → chunk-VJQG4BIM.js} +35 -6
- package/dist/cli-bundle/chunks/chunk-VJQG4BIM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-D6NXDNP3.js → chunk-VLRGDBLY.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JAPE62Y5.js → chunk-VNTCM3VW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FDHPAVVB.js → chunk-VXOOB6YX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GFQP7HAZ.js → chunk-VZIZB6QH.js} +3 -5
- package/dist/cli-bundle/chunks/{chunk-GFQP7HAZ.js.map → chunk-VZIZB6QH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HQ3SB4CN.js → chunk-X3W65QK3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RZJLNXFG.js → chunk-XJTABV3X.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GVT754PX.js → chunk-YCIUJJOD.js} +11 -5
- package/dist/cli-bundle/chunks/chunk-YCIUJJOD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-IJNK6WW2.js → chunk-Z75ONV25.js} +75 -12
- package/dist/cli-bundle/chunks/chunk-Z75ONV25.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-4L23AGQ7.js → chunk-Z7VWXXJM.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-4L23AGQ7.js.map → chunk-Z7VWXXJM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-YBT7O4KT.js → chunk-ZTVA4KLN.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-YBT7O4KT.js.map → chunk-ZTVA4KLN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TYHJDFYW.js → chunk-ZVZGXPQ5.js} +2 -2
- package/dist/cli-bundle/chunks/{close-many-SDA426VT.js → close-many-5RZXVN4J.js} +5 -6
- package/dist/cli-bundle/chunks/{close-many-UTZANOCQ.js → close-many-RZVTUGBG.js} +5 -6
- package/dist/cli-bundle/chunks/{comments-LZN6FXXC.js → comments-TPU7QRBL.js} +4 -4
- package/dist/cli-bundle/chunks/{comments-VBQ345ND.js → comments-Z4KV6FU3.js} +4 -4
- package/dist/cli-bundle/chunks/{create-GG4RBCGC.js → create-EIFBIVNQ.js} +6 -6
- package/dist/cli-bundle/chunks/{create-JBC5KUW6.js → create-RGSPN5GD.js} +6 -6
- package/dist/cli-bundle/chunks/{deps-FI4O6NQS.js → deps-UH5EQQUY.js} +3 -3
- package/dist/cli-bundle/chunks/{deps-DELOO4TL.js → deps-YG7UF3VR.js} +3 -3
- package/dist/cli-bundle/chunks/{docs-6Z2MP526.js → docs-G32TK6XS.js} +4 -4
- package/dist/cli-bundle/chunks/{docs-2UYBP5D6.js → docs-JWWNRC27.js} +4 -4
- package/dist/cli-bundle/chunks/{files-HKEAN5MA.js → files-3H32UQ4K.js} +4 -4
- package/dist/cli-bundle/chunks/{files-HEUGSJZL.js → files-4ALMCSKB.js} +4 -4
- package/dist/cli-bundle/chunks/{history-compact-7NDVP3PT.js → history-compact-77BT2LUB.js} +3 -4
- package/dist/cli-bundle/chunks/{history-compact-65YVN5DB.js → history-compact-VCKGTX64.js} +3 -4
- package/dist/cli-bundle/chunks/{history-redact-7YBL4XSG.js → history-redact-LJPZPNFA.js} +2 -3
- package/dist/cli-bundle/chunks/{history-redact-IZGNJBU4.js → history-redact-PWTTJ3XS.js} +2 -3
- package/dist/cli-bundle/chunks/{history-repair-7M4PYQUH.js → history-repair-I7CBNCV3.js} +5 -6
- package/dist/cli-bundle/chunks/{history-repair-GNGETJLI.js → history-repair-YTDZRK5E.js} +5 -6
- package/dist/cli-bundle/chunks/{learnings-3YXDRWFT.js → learnings-CYNOICKR.js} +4 -4
- package/dist/cli-bundle/chunks/{learnings-ALC6IMNL.js → learnings-KTYW3AL7.js} +4 -4
- package/dist/cli-bundle/chunks/{notes-7JMLQ447.js → notes-FGO63FXL.js} +4 -4
- package/dist/cli-bundle/chunks/{notes-JFCLTC5C.js → notes-ZERD3KB2.js} +4 -4
- package/dist/cli-bundle/chunks/{plan-T3XB3WTK.js → plan-OFJUBIM5.js} +7 -7
- package/dist/cli-bundle/chunks/{plan-KOIPWVOZ.js → plan-SGCDDTYR.js} +7 -7
- package/dist/cli-bundle/chunks/{profile-OILJHKUW.js → profile-3THJPIQY.js} +4 -5
- package/dist/cli-bundle/chunks/{profile-RJXA7PGS.js → profile-XEZAMMBW.js} +4 -5
- package/dist/cli-bundle/chunks/{register-list-query-CFVG75P3.js → register-list-query-BR435Q2H.js} +19 -16
- package/dist/cli-bundle/chunks/register-list-query-BR435Q2H.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-E7UVY4TN.js → register-list-query-RWTWLOBE.js} +18 -15
- package/dist/cli-bundle/chunks/register-list-query-RWTWLOBE.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-IQ55E25C.js → register-mutation-HLWC2WNP.js} +167 -31
- package/dist/cli-bundle/chunks/register-mutation-HLWC2WNP.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-4VJTXBZW.js → register-mutation-ZJX5AZM5.js} +173 -30
- package/dist/cli-bundle/chunks/register-mutation-ZJX5AZM5.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-AR7RMX4W.js → register-operations-744YBJMV.js} +23 -25
- package/dist/cli-bundle/chunks/{register-operations-AR7RMX4W.js.map → register-operations-744YBJMV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-NOLZGORC.js → register-operations-UEBJH6AN.js} +21 -23
- package/dist/cli-bundle/chunks/{register-operations-NOLZGORC.js.map → register-operations-UEBJH6AN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-EYZ7VTPZ.js → register-setup-5DA4UZXI.js} +7 -8
- package/dist/cli-bundle/chunks/{register-setup-EYZ7VTPZ.js.map → register-setup-5DA4UZXI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-BB77VUEE.js → register-setup-6H25M3BH.js} +9 -10
- package/dist/cli-bundle/chunks/{register-setup-BB77VUEE.js.map → register-setup-6H25M3BH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{restore-ZH65GZFB.js → restore-6TDVSATY.js} +4 -5
- package/dist/cli-bundle/chunks/{restore-L6IAGOD7.js → restore-RSL7C7LO.js} +4 -5
- package/dist/cli-bundle/chunks/{schema-4ERWM5QJ.js → schema-HFXFSGPG.js} +2 -3
- package/dist/cli-bundle/chunks/{schema-55DL3Q52.js → schema-TPVTIJPO.js} +2 -3
- package/dist/cli-bundle/chunks/{update-FW6FKDOP.js → update-LJZCL5SI.js} +7 -7
- package/dist/cli-bundle/chunks/{update-TJHSPRPT.js → update-SIA7LH5Y.js} +7 -7
- package/dist/cli-bundle/chunks/{update-many-PWXX5WHO.js → update-many-BDBZVGQL.js} +11 -12
- package/dist/cli-bundle/chunks/{update-many-NNALYQCN.js → update-many-MOY3A5B3.js} +11 -12
- package/dist/cli-bundle/main.js +60 -85
- package/dist/cli-bundle/main.js.map +2 -2
- package/dist/cli-bundle/sdk-runtime.js +37 -37
- package/dist/cli-bundle/sdk.js +126 -291
- package/dist/cli-bundle/sdk.js.map +4 -4
- package/dist/core/item/parse.d.ts +1 -1
- package/dist/core/item/parse.js +13 -7
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/output/mutation-projection.d.ts +2 -0
- package/dist/core/output/mutation-projection.js +33 -2
- package/dist/core/output/mutation-projection.js.map +1 -1
- package/dist/core/output/output.d.ts +4 -0
- package/dist/core/output/output.js +18 -13
- package/dist/core/output/output.js.map +1 -1
- package/dist/core/shared/command-types.d.ts +4 -0
- package/dist/core/shared/command-types.js +2 -2
- package/dist/core/shared/command-types.js.map +1 -1
- package/dist/mcp/server.js +39 -4
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.js +45 -4
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/cli-bootstrap.d.ts +2 -0
- package/dist/sdk/cli-bootstrap.js +20 -27
- package/dist/sdk/cli-bootstrap.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +2 -2
- package/dist/sdk/cli-contracts/enum-contracts.js +7 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +2 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +21 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +10 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +16 -3
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.js +6 -2
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts.js +3 -3
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/cli-program.js +4 -2
- package/dist/sdk/cli-program.js.map +1 -1
- package/dist/sdk/dependencies.d.ts +3 -2
- package/dist/sdk/dependencies.js +13 -12
- package/dist/sdk/dependencies.js.map +1 -1
- package/dist/sdk/error-runtime.d.ts +10 -0
- package/dist/sdk/error-runtime.js +59 -0
- package/dist/sdk/error-runtime.js.map +1 -0
- package/dist/sdk/graph/analytics.d.ts +9 -0
- package/dist/sdk/graph/analytics.js +24 -13
- package/dist/sdk/graph/analytics.js.map +1 -1
- package/dist/sdk/graph/assembly.d.ts +39 -0
- package/dist/sdk/graph/assembly.js +92 -12
- package/dist/sdk/graph/assembly.js.map +1 -1
- package/dist/sdk/graph/cache.d.ts +4 -1
- package/dist/sdk/graph/cache.js +17 -4
- package/dist/sdk/graph/cache.js.map +1 -1
- package/dist/sdk/graph/centrality.d.ts +82 -0
- package/dist/sdk/graph/centrality.js +259 -0
- package/dist/sdk/graph/centrality.js.map +1 -0
- package/dist/sdk/graph/durable-cache.d.ts +71 -0
- package/dist/sdk/graph/durable-cache.js +205 -0
- package/dist/sdk/graph/durable-cache.js.map +1 -0
- package/dist/sdk/graph/governance.d.ts +69 -1
- package/dist/sdk/graph/governance.js +143 -35
- package/dist/sdk/graph/governance.js.map +1 -1
- package/dist/sdk/graph/index.d.ts +7 -4
- package/dist/sdk/graph/index.js +8 -5
- package/dist/sdk/graph/index.js.map +1 -1
- package/dist/sdk/graph/mutation-advisory.d.ts +35 -4
- package/dist/sdk/graph/mutation-advisory.js +124 -35
- package/dist/sdk/graph/mutation-advisory.js.map +1 -1
- package/dist/sdk/graph/remediation.js +12 -2
- package/dist/sdk/graph/remediation.js.map +1 -1
- package/dist/sdk/graph/run.d.ts +133 -2
- package/dist/sdk/graph/run.js +217 -8
- package/dist/sdk/graph/run.js.map +1 -1
- package/dist/sdk/graph/scheduling.d.ts +59 -0
- package/dist/sdk/graph/scheduling.js +125 -0
- package/dist/sdk/graph/scheduling.js.map +1 -0
- package/dist/sdk/graph/traversal.d.ts +11 -0
- package/dist/sdk/graph/traversal.js +16 -2
- package/dist/sdk/graph/traversal.js.map +1 -1
- package/dist/sdk/index.d.ts +4 -0
- package/dist/sdk/index.js +6 -2
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runtime-input.js +7 -2
- package/dist/sdk/runtime-input.js.map +1 -1
- package/dist/sdk/runtime-primitives.d.ts +10 -0
- package/dist/sdk/runtime-primitives.js +14 -0
- package/dist/sdk/runtime-primitives.js.map +1 -0
- package/dist/sdk/runtime.d.ts +15 -0
- package/dist/sdk/runtime.js +16 -3
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/structured-mutations.d.ts +21 -0
- package/dist/sdk/structured-mutations.js +375 -0
- package/dist/sdk/structured-mutations.js.map +1 -0
- package/docs/COMMANDS.md +85 -5
- package/docs/RELATIONSHIP_GRAPH.md +48 -7
- package/docs/SDK.md +78 -3
- package/marketplace.json +2 -2
- package/package.json +1 -1
- package/packages/pm-beads/package.json +1 -1
- package/packages/pm-calendar/package.json +1 -1
- package/packages/pm-command-kit/package.json +1 -1
- package/packages/pm-governance-audit/package.json +1 -1
- package/packages/pm-guide-shell/package.json +1 -1
- package/packages/pm-kanban/package.json +1 -1
- package/packages/pm-lifecycle-hooks/package.json +1 -1
- package/packages/pm-linked-test-adapters/package.json +1 -1
- package/packages/pm-search-advanced/package.json +1 -1
- package/packages/pm-templates/package.json +1 -1
- package/packages/pm-todos/package.json +1 -1
- package/packages/pm-vcs/package.json +1 -1
- package/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-claude/README.md +5 -3
- package/plugins/pm-claude/commands/pm-init.md +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/chunk-3AO5VSDR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3LPFHE3P.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3VY6MIEO.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-4F6BWJ4J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5IZJWSDB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5UX66S6U.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6C2ZZX5Z.js +0 -286
- package/dist/cli-bundle/chunks/chunk-6C2ZZX5Z.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-6VIJ7UA5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6XMUURSS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C3KD7U3T.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-CFHAODHQ.js +0 -334
- package/dist/cli-bundle/chunks/chunk-CFHAODHQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DAQ45GCS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-E6LEMURX.js +0 -249
- package/dist/cli-bundle/chunks/chunk-E6LEMURX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-G3COA6GS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GSJSM5BJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GVI6FAFG.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-GVT754PX.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HEWM6CEN.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IJNK6WW2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-INSTSQNZ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-J4FBIFU6.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KZEANWJS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-LPEYZRUR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NHT3F4WZ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OV7MSW3I.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-P7JTWYLH.js +0 -246
- package/dist/cli-bundle/chunks/chunk-P7JTWYLH.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-R5U2VZ3K.js +0 -344
- package/dist/cli-bundle/chunks/chunk-R5U2VZ3K.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SG74J6MV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-T44FMVRL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-THAOZG4U.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UQLXSG72.js +0 -289
- package/dist/cli-bundle/chunks/chunk-UQLXSG72.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-UZDQXNUB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WVA4DVNV.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-CFVG75P3.js.map +0 -1
- package/dist/cli-bundle/chunks/register-list-query-E7UVY4TN.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-4VJTXBZW.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-IQ55E25C.js.map +0 -1
- /package/dist/cli-bundle/chunks/{append-E6V54WOQ.js.map → append-7OVFYR3C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-NNJ3EFIT.js.map → append-DFETHAZL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QJKL5PHS.js.map → chunk-7656MAUL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-X6K5XTTN.js.map → chunk-7W2UAXXT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5OK4UGFV.js.map → chunk-BXNDKOR2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KSPWRNVP.js.map → chunk-CPX275C6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JH2ZSLO3.js.map → chunk-DZRV2OPA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-L7BH7IWU.js.map → chunk-E5XMKOSB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CQTQKUUV.js.map → chunk-EWJWSNRU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3MCTMJXI.js.map → chunk-FPBMLYPI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DVDBQA3B.js.map → chunk-GTK4DTEW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GIQSU6S2.js.map → chunk-KBLZ3AA5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XJF7CDNH.js.map → chunk-KH44WBAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GV2262OF.js.map → chunk-LAV26CQG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VDO2JMD4.js.map → chunk-LVC72YRD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZYPFOO3L.js.map → chunk-MATHDCGG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AOEOYL3S.js.map → chunk-O4BCOJTZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RJO3YAFM.js.map → chunk-OCUBRA6D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I577UHC7.js.map → chunk-OR42SO64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZOJ3LR7O.js.map → chunk-OY7DMU5P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZV2NTVMJ.js.map → chunk-PONKZPCJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UX6SSO2I.js.map → chunk-PZC2FUOQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VQIHNHMJ.js.map → chunk-QIH77CAG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-R3EWPG4A.js.map → chunk-QJIKE24M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HB3P4M52.js.map → chunk-TRSHFPRZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HRW7GF6T.js.map → chunk-UCBDQI5E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4U4Z6AHI.js.map → chunk-V22ZPOKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JM6YAXTR.js.map → chunk-VHXHVTUU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-D6NXDNP3.js.map → chunk-VLRGDBLY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JAPE62Y5.js.map → chunk-VNTCM3VW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FDHPAVVB.js.map → chunk-VXOOB6YX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HQ3SB4CN.js.map → chunk-X3W65QK3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RZJLNXFG.js.map → chunk-XJTABV3X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TYHJDFYW.js.map → chunk-ZVZGXPQ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-SDA426VT.js.map → close-many-5RZXVN4J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-UTZANOCQ.js.map → close-many-RZVTUGBG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-LZN6FXXC.js.map → comments-TPU7QRBL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-VBQ345ND.js.map → comments-Z4KV6FU3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-GG4RBCGC.js.map → create-EIFBIVNQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-JBC5KUW6.js.map → create-RGSPN5GD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-FI4O6NQS.js.map → deps-UH5EQQUY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-DELOO4TL.js.map → deps-YG7UF3VR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-6Z2MP526.js.map → docs-G32TK6XS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-2UYBP5D6.js.map → docs-JWWNRC27.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-HKEAN5MA.js.map → files-3H32UQ4K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-HEUGSJZL.js.map → files-4ALMCSKB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-7NDVP3PT.js.map → history-compact-77BT2LUB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-65YVN5DB.js.map → history-compact-VCKGTX64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-7YBL4XSG.js.map → history-redact-LJPZPNFA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-IZGNJBU4.js.map → history-redact-PWTTJ3XS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-7M4PYQUH.js.map → history-repair-I7CBNCV3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-GNGETJLI.js.map → history-repair-YTDZRK5E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-3YXDRWFT.js.map → learnings-CYNOICKR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-ALC6IMNL.js.map → learnings-KTYW3AL7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-7JMLQ447.js.map → notes-FGO63FXL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-JFCLTC5C.js.map → notes-ZERD3KB2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-T3XB3WTK.js.map → plan-OFJUBIM5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-KOIPWVOZ.js.map → plan-SGCDDTYR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-OILJHKUW.js.map → profile-3THJPIQY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-RJXA7PGS.js.map → profile-XEZAMMBW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-ZH65GZFB.js.map → restore-6TDVSATY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-L6IAGOD7.js.map → restore-RSL7C7LO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-4ERWM5QJ.js.map → schema-HFXFSGPG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-55DL3Q52.js.map → schema-TPVTIJPO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-FW6FKDOP.js.map → update-LJZCL5SI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-TJHSPRPT.js.map → update-SIA7LH5Y.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-PWXX5WHO.js.map → update-many-BDBZVGQL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-NNALYQCN.js.map → update-many-MOY3A5B3.js.map} +0 -0
|
@@ -1,286 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._sentryDebugIds=e._sentryDebugIds||{},e._sentryDebugIds[n]="5638f886-de83-5daf-8c42-386c898c57c0")}catch(e){}}();
|
|
3
|
-
import {
|
|
4
|
-
createRelationshipKindRegistry
|
|
5
|
-
} from "./chunk-HYW67VJ5.js";
|
|
6
|
-
|
|
7
|
-
// dist/sdk/relationship-analytics.js
|
|
8
|
-
function appendNeighbor(adjacency, source, target) {
|
|
9
|
-
adjacency.get(source).add(target);
|
|
10
|
-
}
|
|
11
|
-
function createAdjacency(nodes) {
|
|
12
|
-
return new Map(nodes.map((node) => [node, /* @__PURE__ */ new Set()]));
|
|
13
|
-
}
|
|
14
|
-
function sortComponents(components) {
|
|
15
|
-
for (const component of components)
|
|
16
|
-
component.sort();
|
|
17
|
-
return components.sort((left, right) => right.length - left.length || left[0].localeCompare(right[0]));
|
|
18
|
-
}
|
|
19
|
-
function stableJsonValue(value) {
|
|
20
|
-
if (Array.isArray(value))
|
|
21
|
-
return value.map((entry) => stableJsonValue(entry));
|
|
22
|
-
if (value === null || typeof value !== "object")
|
|
23
|
-
return value;
|
|
24
|
-
const toJSON = value.toJSON;
|
|
25
|
-
if (typeof toJSON === "function")
|
|
26
|
-
return stableJsonValue(toJSON.call(value));
|
|
27
|
-
return Object.fromEntries(Object.entries(value).sort(([left], [right]) => left.localeCompare(right)).map(([key, entry]) => [key, stableJsonValue(entry)]));
|
|
28
|
-
}
|
|
29
|
-
function relationshipEdgeKey(edge) {
|
|
30
|
-
return JSON.stringify(stableJsonValue(edge));
|
|
31
|
-
}
|
|
32
|
-
function appendFinishingOrder(start, adjacency, visited, order) {
|
|
33
|
-
const stack = [{ id: start, expanded: false }];
|
|
34
|
-
while (stack.length > 0) {
|
|
35
|
-
const current = stack.pop();
|
|
36
|
-
if (current.expanded) {
|
|
37
|
-
order.push(current.id);
|
|
38
|
-
continue;
|
|
39
|
-
}
|
|
40
|
-
if (visited.has(current.id))
|
|
41
|
-
continue;
|
|
42
|
-
visited.add(current.id);
|
|
43
|
-
stack.push({ id: current.id, expanded: true });
|
|
44
|
-
const neighbors = [...adjacency.get(current.id)].sort().reverse();
|
|
45
|
-
for (const neighbor of neighbors)
|
|
46
|
-
if (!visited.has(neighbor))
|
|
47
|
-
stack.push({ id: neighbor, expanded: false });
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
function computeFinishingOrder(nodes, adjacency) {
|
|
51
|
-
const visited = /* @__PURE__ */ new Set();
|
|
52
|
-
const order = [];
|
|
53
|
-
for (const start of nodes)
|
|
54
|
-
if (!visited.has(start))
|
|
55
|
-
appendFinishingOrder(start, adjacency, visited, order);
|
|
56
|
-
return order;
|
|
57
|
-
}
|
|
58
|
-
function collectReverseComponents(order, reverse) {
|
|
59
|
-
const visited = /* @__PURE__ */ new Set();
|
|
60
|
-
const components = [];
|
|
61
|
-
for (const start of [...order].reverse()) {
|
|
62
|
-
if (visited.has(start))
|
|
63
|
-
continue;
|
|
64
|
-
const component = [];
|
|
65
|
-
const stack = [start];
|
|
66
|
-
visited.add(start);
|
|
67
|
-
while (stack.length > 0) {
|
|
68
|
-
const current = stack.pop();
|
|
69
|
-
component.push(current);
|
|
70
|
-
for (const neighbor of reverse.get(current)) {
|
|
71
|
-
if (visited.has(neighbor))
|
|
72
|
-
continue;
|
|
73
|
-
visited.add(neighbor);
|
|
74
|
-
stack.push(neighbor);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
components.push(component);
|
|
78
|
-
}
|
|
79
|
-
return sortComponents(components);
|
|
80
|
-
}
|
|
81
|
-
function stronglyConnectedComponents(nodes, adjacency) {
|
|
82
|
-
const reverse = createAdjacency(nodes);
|
|
83
|
-
for (const [source, targets] of adjacency)
|
|
84
|
-
for (const target of targets)
|
|
85
|
-
appendNeighbor(reverse, target, source);
|
|
86
|
-
return collectReverseComponents(computeFinishingOrder(nodes, adjacency), reverse);
|
|
87
|
-
}
|
|
88
|
-
function buildExecutionAdjacency(graph, registry) {
|
|
89
|
-
const adjacency = createAdjacency(graph.nodes());
|
|
90
|
-
for (const edge of graph.edges()) {
|
|
91
|
-
const definition = registry.require(edge.kind);
|
|
92
|
-
if (!definition.ordering)
|
|
93
|
-
continue;
|
|
94
|
-
const sourceFirst = (definition.precedence ?? "source_before_target") === "source_before_target";
|
|
95
|
-
appendNeighbor(adjacency, sourceFirst ? edge.source : edge.target, sourceFirst ? edge.target : edge.source);
|
|
96
|
-
}
|
|
97
|
-
return adjacency;
|
|
98
|
-
}
|
|
99
|
-
function topologicalLayers(nodes, adjacency) {
|
|
100
|
-
const indegree = new Map(nodes.map((node) => [node, 0]));
|
|
101
|
-
for (const targets of adjacency.values())
|
|
102
|
-
for (const target of targets)
|
|
103
|
-
indegree.set(target, indegree.get(target) + 1);
|
|
104
|
-
let frontier = nodes.filter((node) => indegree.get(node) === 0).sort();
|
|
105
|
-
const layers = [];
|
|
106
|
-
while (frontier.length > 0) {
|
|
107
|
-
layers.push(frontier);
|
|
108
|
-
const next = [];
|
|
109
|
-
for (const source of frontier) {
|
|
110
|
-
for (const target of adjacency.get(source)) {
|
|
111
|
-
const remaining = indegree.get(target) - 1;
|
|
112
|
-
indegree.set(target, remaining);
|
|
113
|
-
if (remaining === 0)
|
|
114
|
-
next.push(target);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
frontier = next.sort();
|
|
118
|
-
}
|
|
119
|
-
return layers;
|
|
120
|
-
}
|
|
121
|
-
function longestPath(order, adjacency) {
|
|
122
|
-
const depth = new Map(order.map((node) => [node, 0]));
|
|
123
|
-
const parent = /* @__PURE__ */ new Map();
|
|
124
|
-
for (const source of order) {
|
|
125
|
-
for (const target of adjacency.get(source)) {
|
|
126
|
-
if (!depth.has(target))
|
|
127
|
-
continue;
|
|
128
|
-
const candidate = depth.get(source) + 1;
|
|
129
|
-
const currentParent = parent.get(target);
|
|
130
|
-
if (candidate > depth.get(target) || candidate === depth.get(target) && (currentParent === void 0 || source.localeCompare(currentParent) < 0)) {
|
|
131
|
-
depth.set(target, candidate);
|
|
132
|
-
parent.set(target, source);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
const end = [...order].sort((left, right) => depth.get(right) - depth.get(left) || left.localeCompare(right))[0];
|
|
137
|
-
const path = end === void 0 ? [] : [end];
|
|
138
|
-
while (path[0] !== void 0 && parent.has(path[0]))
|
|
139
|
-
path.unshift(parent.get(path[0]));
|
|
140
|
-
return { depth: Object.fromEntries(depth), path };
|
|
141
|
-
}
|
|
142
|
-
function reconstructImpactPath(root, target, parents) {
|
|
143
|
-
const path = [target];
|
|
144
|
-
let cursor = target;
|
|
145
|
-
while (cursor !== root) {
|
|
146
|
-
cursor = parents.get(cursor);
|
|
147
|
-
path.push(cursor);
|
|
148
|
-
}
|
|
149
|
-
return path.reverse();
|
|
150
|
-
}
|
|
151
|
-
function analyzeRelationshipExecution(graph, options = {}) {
|
|
152
|
-
const registry = options.registry ?? createRelationshipKindRegistry();
|
|
153
|
-
const nodes = [...graph.nodes()];
|
|
154
|
-
const adjacency = buildExecutionAdjacency(graph, registry);
|
|
155
|
-
const layers = topologicalLayers(nodes, adjacency);
|
|
156
|
-
const order = layers.flat();
|
|
157
|
-
const acyclic = order.length === nodes.length;
|
|
158
|
-
const cycles = acyclic ? [] : stronglyConnectedComponents(nodes, adjacency).filter((component) => component.length > 1 || adjacency.get(component[0]).has(component[0]));
|
|
159
|
-
const longest = longestPath(order, adjacency);
|
|
160
|
-
return {
|
|
161
|
-
exact: true,
|
|
162
|
-
acyclic,
|
|
163
|
-
order,
|
|
164
|
-
layers,
|
|
165
|
-
frontier: layers[0] ?? [],
|
|
166
|
-
depth: longest.depth,
|
|
167
|
-
criticalPath: longest.path,
|
|
168
|
-
criticalPathLength: Math.max(0, longest.path.length - 1),
|
|
169
|
-
cycles,
|
|
170
|
-
provenance: { algorithm: "kahn-longest-path", edgeFamily: "ordering" }
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
function analyzeGraphImpact(graph, root, options = {}) {
|
|
174
|
-
const direction = options.direction ?? "outgoing";
|
|
175
|
-
const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;
|
|
176
|
-
const limit = options.limit ?? Number.POSITIVE_INFINITY;
|
|
177
|
-
const queue = [{ id: root, depth: 0 }];
|
|
178
|
-
const seen = /* @__PURE__ */ new Set([root]);
|
|
179
|
-
const parents = /* @__PURE__ */ new Map();
|
|
180
|
-
const affected = [];
|
|
181
|
-
let visitedNodes = 0;
|
|
182
|
-
let inspectedEdges = 0;
|
|
183
|
-
let truncated = false;
|
|
184
|
-
traversal: for (let index = 0; index < queue.length; index += 1) {
|
|
185
|
-
options.signal?.throwIfAborted();
|
|
186
|
-
const current = queue[index];
|
|
187
|
-
visitedNodes += 1;
|
|
188
|
-
const adjacent = graph.adjacency(current.id, {
|
|
189
|
-
direction,
|
|
190
|
-
kinds: options.kinds,
|
|
191
|
-
signal: options.signal
|
|
192
|
-
});
|
|
193
|
-
inspectedEdges += adjacent.meta.inspectedEdges;
|
|
194
|
-
if (current.depth >= maxDepth) {
|
|
195
|
-
if (adjacent.value.some((id) => !seen.has(id)))
|
|
196
|
-
truncated = true;
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
for (const id of adjacent.value) {
|
|
200
|
-
if (seen.has(id))
|
|
201
|
-
continue;
|
|
202
|
-
if (affected.length >= limit) {
|
|
203
|
-
truncated = true;
|
|
204
|
-
break traversal;
|
|
205
|
-
}
|
|
206
|
-
seen.add(id);
|
|
207
|
-
parents.set(id, current.id);
|
|
208
|
-
const depth = current.depth + 1;
|
|
209
|
-
affected.push({
|
|
210
|
-
id,
|
|
211
|
-
distance: depth,
|
|
212
|
-
path: reconstructImpactPath(root, id, parents)
|
|
213
|
-
});
|
|
214
|
-
queue.push({ id, depth });
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
return {
|
|
218
|
-
root,
|
|
219
|
-
affected,
|
|
220
|
-
exact: true,
|
|
221
|
-
truncated,
|
|
222
|
-
cost: { visitedNodes, inspectedEdges }
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
function analyzeKnowledgeGraph(graph) {
|
|
226
|
-
const nodes = [...graph.nodes()];
|
|
227
|
-
const weak = createAdjacency(nodes);
|
|
228
|
-
const directed = createAdjacency(nodes);
|
|
229
|
-
for (const edge of graph.edges()) {
|
|
230
|
-
appendNeighbor(weak, edge.source, edge.target);
|
|
231
|
-
appendNeighbor(weak, edge.target, edge.source);
|
|
232
|
-
appendNeighbor(directed, edge.source, edge.target);
|
|
233
|
-
}
|
|
234
|
-
const components = [];
|
|
235
|
-
const visited = /* @__PURE__ */ new Set();
|
|
236
|
-
for (const start of nodes) {
|
|
237
|
-
if (visited.has(start))
|
|
238
|
-
continue;
|
|
239
|
-
const component = [];
|
|
240
|
-
const stack = [start];
|
|
241
|
-
visited.add(start);
|
|
242
|
-
while (stack.length > 0) {
|
|
243
|
-
const current = stack.pop();
|
|
244
|
-
component.push(current);
|
|
245
|
-
for (const neighbor of weak.get(current)) {
|
|
246
|
-
if (visited.has(neighbor))
|
|
247
|
-
continue;
|
|
248
|
-
visited.add(neighbor);
|
|
249
|
-
stack.push(neighbor);
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
components.push(component);
|
|
253
|
-
}
|
|
254
|
-
const degrees = nodes.map((id) => ({ id, degree: weak.get(id).size }));
|
|
255
|
-
const maximum = Math.max(0, ...degrees.map(({ degree }) => degree));
|
|
256
|
-
return {
|
|
257
|
-
components: sortComponents(components),
|
|
258
|
-
stronglyConnected: stronglyConnectedComponents(nodes, directed),
|
|
259
|
-
orphans: degrees.filter(({ degree }) => degree === 0).map(({ id }) => id),
|
|
260
|
-
hubs: degrees.filter(({ degree }) => degree > 0 && degree === maximum),
|
|
261
|
-
exact: true,
|
|
262
|
-
provenance: { algorithm: "component-degree", edgeFamily: "all" }
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
function compareRelationshipSnapshots(before, after) {
|
|
266
|
-
const earlier = new Map(before.edges.map((edge) => [relationshipEdgeKey(edge), edge]));
|
|
267
|
-
const later = new Map(after.edges.map((edge) => [relationshipEdgeKey(edge), edge]));
|
|
268
|
-
return {
|
|
269
|
-
fromVersion: before.version,
|
|
270
|
-
toVersion: after.version,
|
|
271
|
-
added: [...later].filter(([key]) => !earlier.has(key)).map(([, edge]) => edge),
|
|
272
|
-
removed: [...earlier].filter(([key]) => !later.has(key)).map(([, edge]) => edge),
|
|
273
|
-
unchangedCount: [...earlier.keys()].filter((key) => later.has(key)).length,
|
|
274
|
-
exact: true
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
export {
|
|
279
|
-
analyzeRelationshipExecution,
|
|
280
|
-
analyzeGraphImpact,
|
|
281
|
-
analyzeKnowledgeGraph,
|
|
282
|
-
compareRelationshipSnapshots
|
|
283
|
-
};
|
|
284
|
-
//# sourceMappingURL=chunk-6C2ZZX5Z.js.map
|
|
285
|
-
|
|
286
|
-
//# debugId=5638f886-de83-5daf-8c42-386c898c57c0
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../../../sdk/relationship-analytics.ts"],"sourcesContent":["/**\n * @module sdk/relationship-analytics\n *\n * Provides exact, deterministic graph analytics with explicit semantics and\n * provenance suitable for planning, impact analysis, and context selection.\n */\nimport type { RelationshipSnapshot } from \"./relationship-history.js\";\nimport {\n RelationshipGraph,\n RelationshipKindRegistry,\n createRelationshipKindRegistry,\n type RelationshipEdge,\n type RelationshipQueryOptions,\n} from \"./relationships.js\";\n\n/** Exact execution-graph analysis over registered ordering kinds. */\nexport interface RelationshipExecutionAnalysis {\n /** Whether the result is exact rather than sampled or approximate. */\n exact: true;\n /** Whether the order-bearing graph is acyclic. */\n acyclic: boolean;\n /** Deterministic topological order for acyclic nodes. */\n order: string[];\n /** Parallelizable topological layers. */\n layers: string[][];\n /** Nodes with no prerequisites. */\n frontier: string[];\n /** Longest prerequisite distance for each acyclic node. */\n depth: Record<string, number>;\n /** Longest deterministic execution path. */\n criticalPath: string[];\n /** Edge count of the critical path. */\n criticalPathLength: number;\n /** Strongly connected order-bearing components that represent cycles. */\n cycles: string[][];\n /** Semantic provenance for the analysis. */\n provenance: { algorithm: \"kahn-longest-path\"; edgeFamily: \"ordering\" };\n}\n\n/** One affected node with its exact shortest explanation path. */\nexport interface RelationshipImpactRow {\n /** Affected node identifier. */\n id: string;\n /** Shortest relationship distance from the root. */\n distance: number;\n /** Exact path explaining why the node is affected. */\n path: string[];\n}\n\n/** Bounded reverse- or forward-impact result. */\nexport interface RelationshipImpactAnalysis {\n /** Impact origin. */\n root: string;\n /** Deterministic affected-node rows. */\n affected: RelationshipImpactRow[];\n /** Returned rows are exact even when the bounded result is incomplete. */\n exact: true;\n /** Whether configured traversal bounds omitted reachable work. */\n truncated: boolean;\n /** Query work retained for performance and explainability. */\n cost: { visitedNodes: number; inspectedEdges: number };\n}\n\n/** Exact structural summary of the complete graph snapshot. */\nexport interface RelationshipKnowledgeAnalysis {\n /** Weakly connected components, largest then lexicographic. */\n components: string[][];\n /** Strongly connected components over directed stored edges. */\n stronglyConnected: string[][];\n /** Nodes with no relationship edges. */\n orphans: string[];\n /** Maximum-degree nodes and their unique-neighbor degree. */\n hubs: { id: string; degree: number }[];\n /** Whether the result is exact. */\n exact: true;\n /** Semantic provenance for the analysis. */\n provenance: { algorithm: \"component-degree\"; edgeFamily: \"all\" };\n}\n\n/** Edge-level delta between two immutable snapshots. */\nexport interface RelationshipSnapshotComparison {\n /** Earlier snapshot version. */\n fromVersion: number;\n /** Later snapshot version. */\n toVersion: number;\n /** Edges introduced in the later snapshot. */\n added: RelationshipEdge[];\n /** Edges absent from the later snapshot. */\n removed: RelationshipEdge[];\n /** Number of byte-equivalent edges retained. */\n unchangedCount: number;\n /** Whether the comparison is exact. */\n exact: true;\n}\n\n/** Registry override for custom domain semantics. */\nexport interface RelationshipAnalyticsOptions {\n /** Registry used to interpret ordering direction and custom kinds. */\n registry?: RelationshipKindRegistry;\n}\n\nfunction appendNeighbor(\n adjacency: Map<string, Set<string>>,\n source: string,\n target: string,\n): void {\n adjacency.get(source)!.add(target);\n}\n\nfunction createAdjacency(nodes: readonly string[]): Map<string, Set<string>> {\n return new Map(nodes.map((node) => [node, new Set<string>()]));\n}\n\nfunction sortComponents(components: string[][]): string[][] {\n for (const component of components) component.sort();\n return components.sort(\n (left, right) =>\n right.length - left.length || left[0]!.localeCompare(right[0]!),\n );\n}\n\nfunction stableJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) return value.map((entry) => stableJsonValue(entry));\n if (value === null || typeof value !== \"object\") return value;\n const toJSON = (value as { toJSON?: (this: object) => unknown }).toJSON;\n if (typeof toJSON === \"function\") return stableJsonValue(toJSON.call(value));\n return Object.fromEntries(\n Object.entries(value)\n .sort(([left], [right]) => left.localeCompare(right))\n .map(([key, entry]) => [key, stableJsonValue(entry)]),\n );\n}\n\nfunction relationshipEdgeKey(edge: RelationshipEdge): string {\n return JSON.stringify(stableJsonValue(edge));\n}\n\nfunction appendFinishingOrder(\n start: string,\n adjacency: ReadonlyMap<string, ReadonlySet<string>>,\n visited: Set<string>,\n order: string[],\n): void {\n const stack = [{ id: start, expanded: false }];\n while (stack.length > 0) {\n const current = stack.pop()!;\n if (current.expanded) {\n order.push(current.id);\n continue;\n }\n if (visited.has(current.id)) continue;\n visited.add(current.id);\n stack.push({ id: current.id, expanded: true });\n const neighbors = [...adjacency.get(current.id)!].sort().reverse();\n for (const neighbor of neighbors)\n if (!visited.has(neighbor)) stack.push({ id: neighbor, expanded: false });\n }\n}\n\nfunction computeFinishingOrder(\n nodes: readonly string[],\n adjacency: ReadonlyMap<string, ReadonlySet<string>>,\n): string[] {\n const visited = new Set<string>();\n const order: string[] = [];\n for (const start of nodes)\n if (!visited.has(start))\n appendFinishingOrder(start, adjacency, visited, order);\n return order;\n}\n\nfunction collectReverseComponents(\n order: readonly string[],\n reverse: ReadonlyMap<string, ReadonlySet<string>>,\n): string[][] {\n const visited = new Set<string>();\n const components: string[][] = [];\n for (const start of [...order].reverse()) {\n if (visited.has(start)) continue;\n const component: string[] = [];\n const stack = [start];\n visited.add(start);\n while (stack.length > 0) {\n const current = stack.pop()!;\n component.push(current);\n for (const neighbor of reverse.get(current)!) {\n if (visited.has(neighbor)) continue;\n visited.add(neighbor);\n stack.push(neighbor);\n }\n }\n components.push(component);\n }\n return sortComponents(components);\n}\n\nfunction stronglyConnectedComponents(\n nodes: readonly string[],\n adjacency: ReadonlyMap<string, ReadonlySet<string>>,\n): string[][] {\n const reverse = createAdjacency(nodes);\n for (const [source, targets] of adjacency)\n for (const target of targets) appendNeighbor(reverse, target, source);\n return collectReverseComponents(\n computeFinishingOrder(nodes, adjacency),\n reverse,\n );\n}\n\nfunction buildExecutionAdjacency(\n graph: RelationshipGraph,\n registry: RelationshipKindRegistry,\n): Map<string, Set<string>> {\n const adjacency = createAdjacency(graph.nodes());\n for (const edge of graph.edges()) {\n const definition = registry.require(edge.kind);\n if (!definition.ordering) continue;\n // Legacy and JSON-parsed definitions may predate explicit precedence.\n const sourceFirst =\n (definition.precedence ?? \"source_before_target\") ===\n \"source_before_target\";\n appendNeighbor(\n adjacency,\n sourceFirst ? edge.source : edge.target,\n sourceFirst ? edge.target : edge.source,\n );\n }\n return adjacency;\n}\n\nfunction topologicalLayers(\n nodes: readonly string[],\n adjacency: ReadonlyMap<string, ReadonlySet<string>>,\n): string[][] {\n const indegree = new Map(nodes.map((node) => [node, 0]));\n for (const targets of adjacency.values())\n for (const target of targets)\n indegree.set(target, indegree.get(target)! + 1);\n let frontier = nodes.filter((node) => indegree.get(node) === 0).sort();\n const layers: string[][] = [];\n while (frontier.length > 0) {\n layers.push(frontier);\n const next: string[] = [];\n for (const source of frontier) {\n for (const target of adjacency.get(source)!) {\n const remaining = indegree.get(target)! - 1;\n indegree.set(target, remaining);\n if (remaining === 0) next.push(target);\n }\n }\n frontier = next.sort();\n }\n return layers;\n}\n\nfunction longestPath(\n order: readonly string[],\n adjacency: ReadonlyMap<string, ReadonlySet<string>>,\n): { depth: Record<string, number>; path: string[] } {\n const depth = new Map(order.map((node) => [node, 0]));\n const parent = new Map<string, string>();\n for (const source of order) {\n for (const target of adjacency.get(source)!) {\n if (!depth.has(target)) continue;\n const candidate = depth.get(source)! + 1;\n const currentParent = parent.get(target);\n if (\n candidate > depth.get(target)! ||\n (candidate === depth.get(target)! &&\n (currentParent === undefined ||\n source.localeCompare(currentParent) < 0))\n ) {\n depth.set(target, candidate);\n parent.set(target, source);\n }\n }\n }\n const end = [...order].sort(\n (left, right) =>\n depth.get(right)! - depth.get(left)! || left.localeCompare(right),\n )[0];\n const path = end === undefined ? [] : [end];\n while (path[0] !== undefined && parent.has(path[0]!))\n path.unshift(parent.get(path[0]!)!);\n return { depth: Object.fromEntries(depth), path };\n}\n\nfunction reconstructImpactPath(\n root: string,\n target: string,\n parents: ReadonlyMap<string, string>,\n): string[] {\n const path = [target];\n let cursor = target;\n while (cursor !== root) {\n cursor = parents.get(cursor)!;\n path.push(cursor);\n }\n return path.reverse();\n}\n\n/** Analyze registered order-bearing relationships without treating associative cycles as blockers. */\nexport function analyzeRelationshipExecution(\n graph: RelationshipGraph,\n options: RelationshipAnalyticsOptions = {},\n): RelationshipExecutionAnalysis {\n const registry = options.registry ?? createRelationshipKindRegistry();\n const nodes = [...graph.nodes()];\n const adjacency = buildExecutionAdjacency(graph, registry);\n const layers = topologicalLayers(nodes, adjacency);\n const order = layers.flat();\n const acyclic = order.length === nodes.length;\n const cycles = acyclic\n ? []\n : stronglyConnectedComponents(nodes, adjacency).filter(\n (component) =>\n component.length > 1 ||\n adjacency.get(component[0]!)!.has(component[0]!),\n );\n const longest = longestPath(order, adjacency);\n return {\n exact: true,\n acyclic,\n order,\n layers,\n frontier: layers[0] ?? [],\n depth: longest.depth,\n criticalPath: longest.path,\n criticalPathLength: Math.max(0, longest.path.length - 1),\n cycles,\n provenance: { algorithm: \"kahn-longest-path\", edgeFamily: \"ordering\" },\n };\n}\n\n/** Compute bounded impact rows and exact shortest explanation paths. */\nexport function analyzeGraphImpact(\n graph: RelationshipGraph,\n root: string,\n options: RelationshipQueryOptions = {},\n): RelationshipImpactAnalysis {\n const direction = options.direction ?? \"outgoing\";\n const maxDepth = options.maxDepth ?? Number.POSITIVE_INFINITY;\n const limit = options.limit ?? Number.POSITIVE_INFINITY;\n const queue = [{ id: root, depth: 0 }];\n const seen = new Set([root]);\n const parents = new Map<string, string>();\n const affected: RelationshipImpactRow[] = [];\n let visitedNodes = 0;\n let inspectedEdges = 0;\n let truncated = false;\n traversal: for (let index = 0; index < queue.length; index += 1) {\n options.signal?.throwIfAborted();\n const current = queue[index]!;\n visitedNodes += 1;\n const adjacent = graph.adjacency(current.id, {\n direction,\n kinds: options.kinds,\n signal: options.signal,\n });\n inspectedEdges += adjacent.meta.inspectedEdges;\n if (current.depth >= maxDepth) {\n if (adjacent.value.some((id) => !seen.has(id))) truncated = true;\n continue;\n }\n for (const id of adjacent.value) {\n if (seen.has(id)) continue;\n if (affected.length >= limit) {\n truncated = true;\n break traversal;\n }\n seen.add(id);\n parents.set(id, current.id);\n const depth = current.depth + 1;\n affected.push({\n id,\n distance: depth,\n path: reconstructImpactPath(root, id, parents),\n });\n queue.push({ id, depth });\n }\n }\n return {\n root,\n affected,\n exact: true,\n truncated,\n cost: { visitedNodes, inspectedEdges },\n };\n}\n\n/** Analyze weak/strong components, isolates, and exact unique-neighbor hubs. */\nexport function analyzeKnowledgeGraph(\n graph: RelationshipGraph,\n): RelationshipKnowledgeAnalysis {\n const nodes = [...graph.nodes()];\n const weak = createAdjacency(nodes);\n const directed = createAdjacency(nodes);\n for (const edge of graph.edges()) {\n appendNeighbor(weak, edge.source, edge.target);\n appendNeighbor(weak, edge.target, edge.source);\n appendNeighbor(directed, edge.source, edge.target);\n }\n const components: string[][] = [];\n const visited = new Set<string>();\n for (const start of nodes) {\n if (visited.has(start)) continue;\n const component: string[] = [];\n const stack = [start];\n visited.add(start);\n while (stack.length > 0) {\n const current = stack.pop()!;\n component.push(current);\n for (const neighbor of weak.get(current)!) {\n if (visited.has(neighbor)) continue;\n visited.add(neighbor);\n stack.push(neighbor);\n }\n }\n components.push(component);\n }\n const degrees = nodes.map((id) => ({ id, degree: weak.get(id)!.size }));\n const maximum = Math.max(0, ...degrees.map(({ degree }) => degree));\n return {\n components: sortComponents(components),\n stronglyConnected: stronglyConnectedComponents(nodes, directed),\n orphans: degrees.filter(({ degree }) => degree === 0).map(({ id }) => id),\n hubs: degrees.filter(({ degree }) => degree > 0 && degree === maximum),\n exact: true,\n provenance: { algorithm: \"component-degree\", edgeFamily: \"all\" },\n };\n}\n\n/** Compare two immutable relationship snapshots by full normalized edge value. */\nexport function compareRelationshipSnapshots(\n before: RelationshipSnapshot,\n after: RelationshipSnapshot,\n): RelationshipSnapshotComparison {\n const earlier = new Map(\n before.edges.map((edge) => [relationshipEdgeKey(edge), edge]),\n );\n const later = new Map(\n after.edges.map((edge) => [relationshipEdgeKey(edge), edge]),\n );\n return {\n fromVersion: before.version,\n toVersion: after.version,\n added: [...later]\n .filter(([key]) => !earlier.has(key))\n .map(([, edge]) => edge),\n removed: [...earlier]\n .filter(([key]) => !later.has(key))\n .map(([, edge]) => edge),\n unchangedCount: [...earlier.keys()].filter((key) => later.has(key)).length,\n exact: true,\n };\n}\n"],"names":[],"mappings":"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","debugId":"5638f886-de83-5daf-8c42-386c898c57c0"}
|