@unbrained/pm-cli 2026.7.16 → 2026.7.18
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 +30 -2
- package/CONTRIBUTING.md +2 -2
- package/dist/cli/bootstrap-args.d.ts +2 -115
- package/dist/cli/bootstrap-args.js +4 -831
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commands/close.d.ts +1 -1
- package/dist/cli/commands/close.js +3 -3
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +47 -5
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.d.ts +2 -2
- package/dist/cli/commands/context.js +42 -28
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +5 -3
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/eval.d.ts +4 -64
- package/dist/cli/commands/eval.js +4 -153
- package/dist/cli/commands/eval.js.map +1 -1
- package/dist/cli/commands/graph.d.ts +7 -0
- package/dist/cli/commands/graph.js +11 -0
- package/dist/cli/commands/graph.js.map +1 -0
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.js +3 -2
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/linked-test-entry.d.ts +6 -6
- package/dist/cli/commands/linked-test-entry.js +4 -65
- package/dist/cli/commands/linked-test-entry.js.map +1 -1
- package/dist/cli/commands/linked-test-parsers.d.ts +3 -45
- package/dist/cli/commands/linked-test-parsers.js +4 -516
- package/dist/cli/commands/linked-test-parsers.js.map +1 -1
- package/dist/cli/commands/list.d.ts +3 -210
- package/dist/cli/commands/list.js +4 -1068
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.d.ts +1 -1
- package/dist/cli/commands/next.js +3 -3
- package/dist/cli/commands/next.js.map +1 -1
- package/dist/cli/commands/search.d.ts +3 -464
- package/dist/cli/commands/search.js +4 -2236
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/stats.d.ts +6 -66
- package/dist/cli/commands/stats.js +4 -157
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +6 -14
- package/dist/cli/commands/telemetry.js +4 -349
- package/dist/cli/commands/telemetry.js.map +1 -1
- package/dist/cli/commands/test-all.d.ts +6 -95
- package/dist/cli/commands/test-all.js +4 -439
- package/dist/cli/commands/test-all.js.map +1 -1
- package/dist/cli/commands/test-runs.d.ts +6 -92
- package/dist/cli/commands/test-runs.js +4 -189
- package/dist/cli/commands/test-runs.js.map +1 -1
- package/dist/cli/commands/test.d.ts +6 -244
- package/dist/cli/commands/test.js +4 -1780
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update-many.d.ts +15 -29
- package/dist/cli/commands/update-many.js +355 -259
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/main.js +141 -133
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +49 -7
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +7 -3
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/search-refresh.js +4 -9
- package/dist/cli/search-refresh.js.map +1 -1
- package/dist/cli/shared-parsers.d.ts +6 -9
- package/dist/cli/shared-parsers.js +4 -37
- package/dist/cli/shared-parsers.js.map +1 -1
- package/dist/cli/telemetry-flush.js +4 -4
- package/dist/cli/telemetry-flush.js.map +1 -1
- package/dist/cli-bundle/bundle-manifest.json +334 -326
- package/dist/cli-bundle/chunks/{append-OJQFUQ4T.js → append-5YF3TO7I.js} +5 -5
- package/dist/cli-bundle/chunks/append-JHO5K6RP.js +11 -0
- package/dist/cli-bundle/chunks/{chunk-BCOFWYW4.js → chunk-2BX74BAS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-APRVSW2O.js → chunk-2CXL335K.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-KG44YSKD.js → chunk-2FUOXSRN.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HDH3JUGG.js → chunk-2IPNL3DR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-GM5QHQU6.js → chunk-2XOSFSTH.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-UFXU44HV.js → chunk-35FHWD4C.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-2WSE6PO2.js.map → chunk-35FHWD4C.js.map} +1 -7
- package/dist/cli-bundle/chunks/{chunk-K3WII2ME.js → chunk-37DRDP2B.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-BKVG6XOA.js → chunk-3CUQZNQ6.js} +67 -509
- package/dist/cli-bundle/chunks/chunk-3CUQZNQ6.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-3QDR6ZLU.js +800 -0
- package/dist/cli-bundle/chunks/chunk-3QDR6ZLU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5JLUII3O.js → chunk-43UMFKCK.js} +321 -240
- package/dist/cli-bundle/chunks/chunk-43UMFKCK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PMOSXADO.js → chunk-47HXN6RX.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-6CFNAVTF.js → chunk-5HGZKQUL.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2IFFUZLC.js → chunk-5UKQLQM2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-DM4H7FP4.js → chunk-633PKXLT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-XSJUSQAE.js → chunk-646MQXFW.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ZI6VQWQ7.js → chunk-66MKH7SZ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-S6MQESFR.js → chunk-67RO3H4N.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-34L5OT3Y.js → chunk-6DYOZS6C.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-RRM5JYJC.js → chunk-6O44IN44.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-5ZSLZLDN.js → chunk-6VHUGVNP.js} +608 -456
- package/dist/cli-bundle/chunks/chunk-6VHUGVNP.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PENXZX3U.js → chunk-74FKFFXO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-HO4KXD6I.js → chunk-7H5NNCJ5.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7B67ZL4N.js → chunk-7R6UIHYY.js} +75 -5
- package/dist/cli-bundle/chunks/{chunk-7B67ZL4N.js.map → chunk-7R6UIHYY.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-3S5QVM5H.js → chunk-7UCY6DR5.js} +193 -22
- package/dist/cli-bundle/chunks/chunk-7UCY6DR5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-WT3ZEOGH.js → chunk-ADXDCAKP.js} +16 -7
- package/dist/cli-bundle/chunks/{chunk-WT3ZEOGH.js.map → chunk-ADXDCAKP.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-TQSZFPIS.js → chunk-AFGKSHAM.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-6N2VXVTQ.js → chunk-ARGDWQ4J.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XXXF6PAQ.js → chunk-AXRT7K5V.js} +83 -62
- package/dist/cli-bundle/chunks/chunk-AXRT7K5V.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3U7ZR6M4.js → chunk-B57RJHBZ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YCQET3OT.js → chunk-BAP7G3N2.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NLDFBC6J.js → chunk-BDA35QG5.js} +35 -5
- package/dist/cli-bundle/chunks/chunk-BDA35QG5.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QKXHFPYM.js → chunk-BIRYX32V.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RMLWNPH2.js → chunk-BVLOMU6O.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-2VPAVL7O.js → chunk-CKX4WOPC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TKOVBP6C.js → chunk-D52ZN3BF.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KPMKHGEA.js → chunk-D53RTYVI.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ODALILG3.js → chunk-D5XHO4Q7.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-YAQEBNY7.js → chunk-DDFGYUCQ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-EAB64KLB.js → chunk-DG2EQRIH.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-J6364LFM.js → chunk-DHNG452T.js} +9 -18
- package/dist/cli-bundle/chunks/{chunk-J6364LFM.js.map → chunk-DHNG452T.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JXQUXVMI.js → chunk-E4FXM2XB.js} +77 -7
- package/dist/cli-bundle/chunks/{chunk-JXQUXVMI.js.map → chunk-E4FXM2XB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IG3SWA4A.js → chunk-EHJFUOXL.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-P74IZQ7A.js → chunk-EWIT5WIC.js} +7 -7
- package/dist/cli-bundle/chunks/chunk-EX7OQT3Y.js +783 -0
- package/dist/cli-bundle/chunks/chunk-EX7OQT3Y.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-ONREO4ST.js → chunk-EY7ZE3TG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-ILX33QXL.js → chunk-F3VC3GOV.js} +669 -472
- package/dist/cli-bundle/chunks/chunk-F3VC3GOV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EJEXHTY5.js → chunk-FHOBCGQO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-H3EIEWGR.js → chunk-FL4D53ND.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-WUJQK4YV.js → chunk-FVNWHUME.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-INU6DKT5.js → chunk-FXFCFL73.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-QEHQ2GVG.js → chunk-FY4RLHSC.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AHVTB5I5.js → chunk-G6MYGULG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-HYB5AZ63.js → chunk-GKPCTQYG.js} +1822 -72
- package/dist/cli-bundle/chunks/chunk-GKPCTQYG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-TSMHDIW4.js → chunk-GLZKZON6.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-2JKGO6QX.js → chunk-H5IOT54C.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-SELVXEZK.js → chunk-HO4DLBNK.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-CRVF2JDM.js → chunk-HPAYDSR2.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-3CLU2XZO.js → chunk-HSYV4ZYT.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-EH2OPHBI.js → chunk-HTXXXF45.js} +23 -19
- package/dist/cli-bundle/chunks/chunk-HTXXXF45.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J5AOEGDC.js → chunk-HYTOJW2Q.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-4XQ3BDV4.js → chunk-I3INI567.js} +536 -449
- package/dist/cli-bundle/chunks/chunk-I3INI567.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-NU3IMIEA.js → chunk-I7DIDUSP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JYFOV7FC.js → chunk-IE5KRAKN.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YAROI3PD.js → chunk-IL5SPRMH.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-UY2ACEMF.js → chunk-ILVOOAT4.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-GOSLKLFE.js → chunk-KH6QAHME.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QKECXBBG.js → chunk-KX62NMZC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QKECXBBG.js.map → chunk-KX62NMZC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-WQPUU7XD.js → chunk-L337QKWJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-JFTKLTEF.js → chunk-L5BTTDU5.js} +68 -503
- package/dist/cli-bundle/chunks/chunk-L5BTTDU5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LSG2U345.js → chunk-L6FVNR7X.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-FMBNM2EN.js → chunk-LSOWTLEM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4223PVZT.js → chunk-M7MVOKVV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UMOPHQSU.js → chunk-MR4SHYR4.js} +41 -19
- package/dist/cli-bundle/chunks/chunk-MR4SHYR4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3WM75PWC.js → chunk-N33FD2UI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UXONS674.js → chunk-NCVT6XEL.js} +68 -56
- package/dist/cli-bundle/chunks/chunk-NCVT6XEL.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-6S3YSUYG.js → chunk-NNANAWFH.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-IJIICKVW.js → chunk-NTRQLE2R.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SDQLJWBO.js → chunk-NVZ6NVHJ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-E2OJMKML.js → chunk-OGVTB5VO.js} +47 -37
- package/dist/cli-bundle/chunks/chunk-OGVTB5VO.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-H2Z3FYXQ.js → chunk-OWP6QFBV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-Q7A43DS4.js → chunk-P22HGFFI.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NVPZIJVR.js → chunk-PT7MCCGD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ONG5V5CI.js → chunk-QPGQNLPI.js} +1751 -70
- package/dist/cli-bundle/chunks/chunk-QPGQNLPI.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J6EY5V4N.js → chunk-QRZNCRNA.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-QIPLHNP7.js → chunk-QWBKN3QC.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-7PIWCHTW.js → chunk-R5XTTZSJ.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-JOUQZENX.js → chunk-RC4UOUXA.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-BEP7WJA2.js → chunk-RGMWJLXF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-NP22ERDF.js → chunk-RTBX3C4C.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FNSPG7MU.js → chunk-RXPQ5Q23.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-LPYWLWDS.js → chunk-SIPOACV5.js} +534 -447
- package/dist/cli-bundle/chunks/chunk-SIPOACV5.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-TGBTLGPX.js +851 -0
- package/dist/cli-bundle/chunks/chunk-TGBTLGPX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-2WSE6PO2.js → chunk-TLWJP5BF.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-TLWJP5BF.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ULTHRDBP.js → chunk-TM5CIO3F.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UWQHLMEB.js → chunk-TZAE66GQ.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-OW4JWD5M.js → chunk-VAHZIPWS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-DYH63FX7.js → chunk-VE6ZSTQW.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3AUGG2DP.js → chunk-W5E2UUSH.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-BSEQUTQP.js → chunk-WACRQ26A.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BSEQUTQP.js.map → chunk-WACRQ26A.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-UOHFKBUV.js → chunk-WL3SS45P.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-H5APFTHZ.js → chunk-WQXRZMFN.js} +204 -33
- package/dist/cli-bundle/chunks/chunk-WQXRZMFN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QKJGPFAF.js → chunk-WU3KAN6A.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-IA5FKNII.js → chunk-X2MGQMZO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TD3LVC7D.js → chunk-X5YCTFKT.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-B7PE22W6.js → chunk-XC2HEEOV.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-7Z4LKRS4.js → chunk-XPUTSGJU.js} +38 -37
- package/dist/cli-bundle/chunks/chunk-XPUTSGJU.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YBLZ2VE7.js → chunk-XWBD6DSR.js} +320 -239
- package/dist/cli-bundle/chunks/chunk-XWBD6DSR.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-XWYQ2LT4.js +834 -0
- package/dist/cli-bundle/chunks/chunk-XWYQ2LT4.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-K2X6U4UA.js → chunk-XXLXJL7V.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2NCIPMQP.js → chunk-YFE7JHX3.js} +27 -6
- package/dist/cli-bundle/chunks/chunk-YFE7JHX3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-EACOH7AU.js → chunk-YIIIAKCE.js} +8 -8
- package/dist/cli-bundle/chunks/{chunk-RLCHOOHC.js → chunk-YJSURTBB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-PGY23YTC.js → chunk-YKFHF37B.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-EYLCSJAI.js → chunk-YQEZWI3R.js} +2 -2
- package/dist/cli-bundle/chunks/close-GPD7DTJV.js +12 -0
- package/dist/cli-bundle/chunks/{close-CWODTPKG.js → close-X3CF6FQP.js} +5 -5
- package/dist/cli-bundle/chunks/{close-many-CQFUY7MR.js → close-many-J7A5EHOQ.js} +14 -14
- package/dist/cli-bundle/chunks/close-many-NQLYGPYW.js +23 -0
- package/dist/cli-bundle/chunks/comments-2AOZQ5D2.js +13 -0
- package/dist/cli-bundle/chunks/{comments-WGLHR7LB.js → comments-TMHMALA5.js} +7 -7
- package/dist/cli-bundle/chunks/{copy-LXVDXH7B.js → copy-FWQA5OU4.js} +4 -4
- package/dist/cli-bundle/chunks/copy-N3LCQBMC.js +9 -0
- package/dist/cli-bundle/chunks/{create-LBVCYMEG.js → create-AQ5SIGZC.js} +9 -9
- package/dist/cli-bundle/chunks/{create-J5U6ND4K.js → create-KOGQ3JKD.js} +9 -9
- package/dist/cli-bundle/chunks/delete-6G3MBZ6S.js +10 -0
- package/dist/cli-bundle/chunks/{delete-PMJBNY5G.js → delete-YYYFOSEA.js} +4 -4
- package/dist/cli-bundle/chunks/{deps-JZ7TMVCB.js → deps-MQ4ZIGZB.js} +16 -7
- package/dist/cli-bundle/chunks/deps-NIIKXLPB.js +28 -0
- package/dist/cli-bundle/chunks/{docs-FEWB2DQB.js → docs-53NUGMIQ.js} +6 -6
- package/dist/cli-bundle/chunks/docs-OWRGDMNY.js +14 -0
- package/dist/cli-bundle/chunks/{files-EFIWKFTM.js → files-3PXGXYDB.js} +6 -6
- package/dist/cli-bundle/chunks/{files-6YFBJRBG.js → files-EGLKHD7O.js} +6 -6
- package/dist/cli-bundle/chunks/focus-KZLIA6WS.js +10 -0
- package/dist/cli-bundle/chunks/{focus-4QJR7FOQ.js → focus-SRPASFTN.js} +5 -5
- package/dist/cli-bundle/chunks/{history-compact-CKRPDTJN.js → history-compact-G4DULDCX.js} +6 -6
- package/dist/cli-bundle/chunks/history-compact-HHIUOMZ7.js +16 -0
- package/dist/cli-bundle/chunks/{history-redact-BB3TGDAE.js → history-redact-IUSJ6X3E.js} +4 -4
- package/dist/cli-bundle/chunks/{history-redact-D225BHOZ.js → history-redact-THHGRQXV.js} +4 -4
- package/dist/cli-bundle/chunks/history-repair-KG7SWXI6.js +16 -0
- package/dist/cli-bundle/chunks/{history-repair-RQXKQHL4.js → history-repair-LUQWRS7X.js} +6 -6
- package/dist/cli-bundle/chunks/{learnings-JLNLCOL5.js → learnings-2MRNBFJF.js} +7 -7
- package/dist/cli-bundle/chunks/learnings-ZVHSALJY.js +13 -0
- package/dist/cli-bundle/chunks/{notes-GB47XXQQ.js → notes-73JWKWUD.js} +7 -7
- package/dist/cli-bundle/chunks/notes-BAKUL5DJ.js +13 -0
- package/dist/cli-bundle/chunks/{plan-VDCJ2PCN.js → plan-AZPMCG37.js} +10 -10
- package/dist/cli-bundle/chunks/plan-LEAGLPGP.js +24 -0
- package/dist/cli-bundle/chunks/{profile-FAU7NZML.js → profile-AVCIIZID.js} +9 -9
- package/dist/cli-bundle/chunks/{profile-IVXQEL3D.js → profile-LFYO3HHX.js} +9 -9
- package/dist/cli-bundle/chunks/{register-list-query-UL4UKBBN.js → register-list-query-MZUF2EEC.js} +50 -22
- package/dist/cli-bundle/chunks/register-list-query-MZUF2EEC.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-DKA3EH5D.js → register-list-query-UKMF55FT.js} +49 -21
- package/dist/cli-bundle/chunks/register-list-query-UKMF55FT.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-RBBJ52DK.js → register-mutation-2PBW2GEX.js} +35 -33
- package/dist/cli-bundle/chunks/register-mutation-2PBW2GEX.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-ARFHRW55.js → register-mutation-T6RVNJC4.js} +34 -32
- package/dist/cli-bundle/chunks/{register-mutation-ARFHRW55.js.map → register-mutation-T6RVNJC4.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-operations-ZIBBRSED.js → register-operations-KHZYR6MG.js} +35 -35
- package/dist/cli-bundle/chunks/{register-operations-ZUJ5JWPE.js → register-operations-WPQ2LWZJ.js} +35 -35
- package/dist/cli-bundle/chunks/{register-setup-BCVLFEYS.js → register-setup-PGDNOXDQ.js} +15 -15
- package/dist/cli-bundle/chunks/{register-setup-TDCGWIOS.js → register-setup-TDN7WAO6.js} +15 -15
- package/dist/cli-bundle/chunks/{restore-25DLT2Q2.js → restore-E3PRGDN3.js} +6 -6
- package/dist/cli-bundle/chunks/restore-KIUYTAEJ.js +14 -0
- package/dist/cli-bundle/chunks/{schema-FNU3WE4O.js → schema-5JNFQFUW.js} +6 -6
- package/dist/cli-bundle/chunks/{schema-NBCM3RAD.js → schema-TMIW4XZC.js} +6 -6
- package/dist/cli-bundle/chunks/{update-XHSIAIXE.js → update-SQYZA3ZW.js} +12 -12
- package/dist/cli-bundle/chunks/update-XZJYS5X7.js +21 -0
- package/dist/cli-bundle/chunks/update-many-R24B3GBK.js +36 -0
- package/dist/cli-bundle/chunks/update-many-WQ3R3J6N.js +32 -0
- package/dist/cli-bundle/main.js +170 -856
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/cli-bundle/sdk-runtime.js +57 -54
- package/dist/cli-bundle/sdk-testing.js +6 -6
- package/dist/cli-bundle/sdk.js +266 -340
- package/dist/cli-bundle/sdk.js.map +4 -4
- package/dist/core/extensions/item-fields.js +2 -2
- package/dist/core/extensions/item-fields.js.map +1 -1
- package/dist/core/item/actionability.d.ts +12 -0
- package/dist/core/item/actionability.js +39 -4
- package/dist/core/item/actionability.js.map +1 -1
- package/dist/core/sentry/instrument.d.ts +11 -0
- package/dist/core/sentry/instrument.js +21 -2
- package/dist/core/sentry/instrument.js.map +1 -1
- package/dist/mcp/server.d.ts +16 -18
- package/dist/mcp/server.js +84 -31
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.js +17 -4
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/actionability.d.ts +10 -0
- package/dist/sdk/actionability.js +14 -0
- package/dist/sdk/actionability.js.map +1 -0
- package/dist/sdk/cli-bootstrap.d.ts +122 -0
- package/dist/sdk/cli-bootstrap.js +879 -0
- package/dist/sdk/cli-bootstrap.js.map +1 -0
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +6 -2
- package/dist/sdk/cli-contracts/enum-contracts.js +19 -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.d.ts +2 -0
- package/dist/sdk/cli-contracts/tool-option-contracts.js +16 -2
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +80 -3
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +20 -0
- package/dist/sdk/cli-contracts/tool-schema.js +97 -9
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/cli-contracts.d.ts +2 -2
- package/dist/sdk/cli-contracts.js +4 -4
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/dependencies.d.ts +42 -53
- package/dist/sdk/dependencies.js +177 -125
- package/dist/sdk/dependencies.js.map +1 -1
- package/dist/sdk/eval.d.ts +66 -0
- package/dist/sdk/eval.js +186 -0
- package/dist/sdk/eval.js.map +1 -0
- package/dist/sdk/governance/validate.js +3 -3
- package/dist/sdk/governance/validate.js.map +1 -1
- package/dist/sdk/graph/analytics.d.ts +124 -0
- package/dist/sdk/graph/analytics.js +464 -0
- package/dist/sdk/graph/analytics.js.map +1 -0
- package/dist/sdk/graph/assembly.d.ts +97 -0
- package/dist/sdk/graph/assembly.js +146 -0
- package/dist/sdk/graph/assembly.js.map +1 -0
- package/dist/sdk/graph/cache.d.ts +66 -0
- package/dist/sdk/graph/cache.js +148 -0
- package/dist/sdk/graph/cache.js.map +1 -0
- package/dist/sdk/graph/governance.d.ts +108 -0
- package/dist/sdk/graph/governance.js +360 -0
- package/dist/sdk/graph/governance.js.map +1 -0
- package/dist/sdk/graph/index.d.ts +16 -0
- package/dist/sdk/graph/index.js +20 -0
- package/dist/sdk/graph/index.js.map +1 -0
- package/dist/sdk/graph/remediation.d.ts +52 -0
- package/dist/sdk/graph/remediation.js +148 -0
- package/dist/sdk/graph/remediation.js.map +1 -0
- package/dist/sdk/graph/run.d.ts +295 -0
- package/dist/sdk/graph/run.js +468 -0
- package/dist/sdk/graph/run.js.map +1 -0
- package/dist/sdk/graph/traversal.d.ts +77 -0
- package/dist/sdk/graph/traversal.js +262 -0
- package/dist/sdk/graph/traversal.js.map +1 -0
- package/dist/sdk/index.d.ts +19 -5
- package/dist/sdk/index.js +21 -7
- package/dist/sdk/index.js.map +1 -1
- package/dist/{cli/commands → sdk/query}/item-filter-options.d.ts +1 -1
- package/dist/{cli/commands → sdk/query}/item-filter-options.js +3 -3
- package/dist/sdk/query/item-filter-options.js.map +1 -0
- package/dist/sdk/query/list.d.ts +262 -0
- package/dist/sdk/query/list.js +1089 -0
- package/dist/sdk/query/list.js.map +1 -0
- package/dist/sdk/query/parsers.d.ts +9 -0
- package/dist/sdk/query/parsers.js +45 -0
- package/dist/sdk/query/parsers.js.map +1 -0
- package/dist/{cli/commands → sdk/query}/search-pagination.js +4 -4
- package/dist/sdk/query/search-pagination.js.map +1 -0
- package/dist/{cli/commands → sdk/query}/search-rendering.js +3 -3
- package/dist/sdk/query/search-rendering.js.map +1 -0
- package/dist/sdk/query/search.d.ts +469 -0
- package/dist/sdk/query/search.js +2247 -0
- package/dist/sdk/query/search.js.map +1 -0
- package/dist/sdk/relationship-context.d.ts +42 -0
- package/dist/sdk/relationship-context.js +99 -20
- package/dist/sdk/relationship-context.js.map +1 -1
- package/dist/sdk/relationships.d.ts +13 -0
- package/dist/sdk/relationships.js +30 -2
- package/dist/sdk/relationships.js.map +1 -1
- package/dist/sdk/runtime-input.d.ts +41 -0
- package/dist/sdk/runtime-input.js +422 -2
- package/dist/sdk/runtime-input.js.map +1 -1
- package/dist/sdk/runtime.d.ts +19 -30
- package/dist/sdk/runtime.js +30 -376
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/search-refresh-worker.d.ts +2 -0
- package/dist/sdk/search-refresh-worker.js +19 -0
- package/dist/sdk/search-refresh-worker.js.map +1 -0
- package/dist/sdk/stats.d.ts +66 -0
- package/dist/sdk/stats.js +151 -0
- package/dist/sdk/stats.js.map +1 -0
- package/dist/sdk/telemetry-flush.d.ts +2 -0
- package/dist/sdk/telemetry-flush.js +14 -0
- package/dist/sdk/telemetry-flush.js.map +1 -0
- package/dist/sdk/telemetry.d.ts +14 -0
- package/dist/sdk/telemetry.js +398 -0
- package/dist/sdk/telemetry.js.map +1 -0
- package/dist/sdk/test/batch.d.ts +94 -0
- package/dist/sdk/test/batch.js +492 -0
- package/dist/sdk/test/batch.js.map +1 -0
- package/dist/sdk/test/entry.d.ts +6 -0
- package/dist/sdk/test/entry.js +74 -0
- package/dist/sdk/test/entry.js.map +1 -0
- package/dist/sdk/test/execution.d.ts +282 -0
- package/dist/sdk/test/execution.js +1817 -0
- package/dist/sdk/test/execution.js.map +1 -0
- package/dist/sdk/test/linked-command-detection.js +12 -3
- package/dist/sdk/test/linked-command-detection.js.map +1 -1
- package/dist/sdk/test/parsers.d.ts +48 -0
- package/dist/sdk/test/parsers.js +522 -0
- package/dist/sdk/test/parsers.js.map +1 -0
- package/dist/sdk/test/runs.d.ts +92 -0
- package/dist/sdk/test/runs.js +195 -0
- package/dist/sdk/test/runs.js.map +1 -0
- package/docs/AGENT_GUIDE.md +1 -0
- package/docs/COMMANDS.md +19 -1
- package/docs/RELATIONSHIP_GRAPH.md +99 -3
- package/docs/SDK.md +139 -3
- package/docs/SDK_PRIMITIVE_INVENTORY.md +5 -3
- package/docs/examples/sdk-custom-tool/README.md +27 -0
- package/docs/examples/sdk-custom-tool/package.json +13 -0
- package/docs/examples/sdk-custom-tool/src/cli.ts +36 -0
- package/docs/examples/sdk-custom-tool/src/entry.ts +15 -0
- package/docs/examples/sdk-custom-tool/src/index.ts +223 -0
- package/marketplace.json +2 -2
- package/package.json +4 -4
- 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/extensions/governance-audit/comments-audit.ts +77 -57
- package/packages/pm-governance-audit/extensions/governance-audit/dedupe-audit.ts +202 -194
- package/packages/pm-governance-audit/extensions/governance-audit/dedupe-merge.ts +227 -153
- package/packages/pm-governance-audit/extensions/governance-audit/normalize.ts +169 -125
- package/packages/pm-governance-audit/extensions/governance-audit/runtime-utils.ts +130 -81
- package/packages/pm-governance-audit/extensions/governance-audit/sdk.ts +53 -4
- 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/plugins/pm-claude/.claude-plugin/plugin.json +1 -1
- package/plugins/pm-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli/commands/item-filter-options.js.map +0 -1
- package/dist/cli/commands/search-pagination.js.map +0 -1
- package/dist/cli/commands/search-rendering.js.map +0 -1
- package/dist/cli-bundle/chunks/append-UZVHUO74.js +0 -11
- package/dist/cli-bundle/chunks/chunk-2NCIPMQP.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3S5QVM5H.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4XQ3BDV4.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-5JLUII3O.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-5ZSLZLDN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-7Z4LKRS4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BKVG6XOA.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-E2OJMKML.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-EH2OPHBI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-H5APFTHZ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HYB5AZ63.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ILX33QXL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JFTKLTEF.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LPYWLWDS.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NLDFBC6J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ONG5V5CI.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UFXU44HV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UMOPHQSU.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-UXONS674.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XXXF6PAQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YBLZ2VE7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-YXSHIAUJ.js +0 -58
- package/dist/cli-bundle/chunks/chunk-YXSHIAUJ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZKRZY773.js +0 -68
- package/dist/cli-bundle/chunks/chunk-ZKRZY773.js.map +0 -7
- package/dist/cli-bundle/chunks/close-W6LI2PKM.js +0 -12
- package/dist/cli-bundle/chunks/close-many-DLDDVSH5.js +0 -23
- package/dist/cli-bundle/chunks/comments-E3TNTK24.js +0 -13
- package/dist/cli-bundle/chunks/copy-Q5ZJPUKR.js +0 -9
- package/dist/cli-bundle/chunks/delete-WNHB3LYW.js +0 -10
- package/dist/cli-bundle/chunks/deps-OA26IS25.js +0 -19
- package/dist/cli-bundle/chunks/docs-HA2AIDBB.js +0 -14
- package/dist/cli-bundle/chunks/focus-POIW5LTJ.js +0 -10
- package/dist/cli-bundle/chunks/history-compact-FWG2C7FZ.js +0 -16
- package/dist/cli-bundle/chunks/history-repair-6GEAM7HE.js +0 -16
- package/dist/cli-bundle/chunks/learnings-RSNLSWDC.js +0 -13
- package/dist/cli-bundle/chunks/notes-2WDH6DXU.js +0 -13
- package/dist/cli-bundle/chunks/plan-DOVI2VMW.js +0 -24
- package/dist/cli-bundle/chunks/register-list-query-DKA3EH5D.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-UL4UKBBN.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-RBBJ52DK.js.map +0 -1
- package/dist/cli-bundle/chunks/restore-YPMVUUEX.js +0 -14
- package/dist/cli-bundle/chunks/update-WWBYOPXO.js +0 -21
- package/dist/cli-bundle/chunks/update-many-OUGIU5SF.js +0 -32
- package/dist/cli-bundle/chunks/update-many-TA7NGQBO.js +0 -36
- /package/dist/cli-bundle/chunks/{append-OJQFUQ4T.js.map → append-5YF3TO7I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-UZVHUO74.js.map → append-JHO5K6RP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BCOFWYW4.js.map → chunk-2BX74BAS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-APRVSW2O.js.map → chunk-2CXL335K.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KG44YSKD.js.map → chunk-2FUOXSRN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HDH3JUGG.js.map → chunk-2IPNL3DR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GM5QHQU6.js.map → chunk-2XOSFSTH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K3WII2ME.js.map → chunk-37DRDP2B.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PMOSXADO.js.map → chunk-47HXN6RX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6CFNAVTF.js.map → chunk-5HGZKQUL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2IFFUZLC.js.map → chunk-5UKQLQM2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DM4H7FP4.js.map → chunk-633PKXLT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XSJUSQAE.js.map → chunk-646MQXFW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ZI6VQWQ7.js.map → chunk-66MKH7SZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-S6MQESFR.js.map → chunk-67RO3H4N.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-34L5OT3Y.js.map → chunk-6DYOZS6C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RRM5JYJC.js.map → chunk-6O44IN44.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PENXZX3U.js.map → chunk-74FKFFXO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-HO4KXD6I.js.map → chunk-7H5NNCJ5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TQSZFPIS.js.map → chunk-AFGKSHAM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6N2VXVTQ.js.map → chunk-ARGDWQ4J.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3U7ZR6M4.js.map → chunk-B57RJHBZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YCQET3OT.js.map → chunk-BAP7G3N2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QKXHFPYM.js.map → chunk-BIRYX32V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RMLWNPH2.js.map → chunk-BVLOMU6O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2VPAVL7O.js.map → chunk-CKX4WOPC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TKOVBP6C.js.map → chunk-D52ZN3BF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KPMKHGEA.js.map → chunk-D53RTYVI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ODALILG3.js.map → chunk-D5XHO4Q7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YAQEBNY7.js.map → chunk-DDFGYUCQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EAB64KLB.js.map → chunk-DG2EQRIH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IG3SWA4A.js.map → chunk-EHJFUOXL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-P74IZQ7A.js.map → chunk-EWIT5WIC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ONREO4ST.js.map → chunk-EY7ZE3TG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EJEXHTY5.js.map → chunk-FHOBCGQO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H3EIEWGR.js.map → chunk-FL4D53ND.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WUJQK4YV.js.map → chunk-FVNWHUME.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-INU6DKT5.js.map → chunk-FXFCFL73.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QEHQ2GVG.js.map → chunk-FY4RLHSC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AHVTB5I5.js.map → chunk-G6MYGULG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TSMHDIW4.js.map → chunk-GLZKZON6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2JKGO6QX.js.map → chunk-H5IOT54C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SELVXEZK.js.map → chunk-HO4DLBNK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CRVF2JDM.js.map → chunk-HPAYDSR2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3CLU2XZO.js.map → chunk-HSYV4ZYT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J5AOEGDC.js.map → chunk-HYTOJW2Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NU3IMIEA.js.map → chunk-I7DIDUSP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JYFOV7FC.js.map → chunk-IE5KRAKN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YAROI3PD.js.map → chunk-IL5SPRMH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UY2ACEMF.js.map → chunk-ILVOOAT4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GOSLKLFE.js.map → chunk-KH6QAHME.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WQPUU7XD.js.map → chunk-L337QKWJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LSG2U345.js.map → chunk-L6FVNR7X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FMBNM2EN.js.map → chunk-LSOWTLEM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4223PVZT.js.map → chunk-M7MVOKVV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3WM75PWC.js.map → chunk-N33FD2UI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6S3YSUYG.js.map → chunk-NNANAWFH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IJIICKVW.js.map → chunk-NTRQLE2R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SDQLJWBO.js.map → chunk-NVZ6NVHJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-H2Z3FYXQ.js.map → chunk-OWP6QFBV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q7A43DS4.js.map → chunk-P22HGFFI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NVPZIJVR.js.map → chunk-PT7MCCGD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-J6EY5V4N.js.map → chunk-QRZNCRNA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QIPLHNP7.js.map → chunk-QWBKN3QC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7PIWCHTW.js.map → chunk-R5XTTZSJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JOUQZENX.js.map → chunk-RC4UOUXA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BEP7WJA2.js.map → chunk-RGMWJLXF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NP22ERDF.js.map → chunk-RTBX3C4C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FNSPG7MU.js.map → chunk-RXPQ5Q23.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-ULTHRDBP.js.map → chunk-TM5CIO3F.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UWQHLMEB.js.map → chunk-TZAE66GQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OW4JWD5M.js.map → chunk-VAHZIPWS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DYH63FX7.js.map → chunk-VE6ZSTQW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3AUGG2DP.js.map → chunk-W5E2UUSH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UOHFKBUV.js.map → chunk-WL3SS45P.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QKJGPFAF.js.map → chunk-WU3KAN6A.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IA5FKNII.js.map → chunk-X2MGQMZO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TD3LVC7D.js.map → chunk-X5YCTFKT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-B7PE22W6.js.map → chunk-XC2HEEOV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K2X6U4UA.js.map → chunk-XXLXJL7V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EACOH7AU.js.map → chunk-YIIIAKCE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RLCHOOHC.js.map → chunk-YJSURTBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-PGY23YTC.js.map → chunk-YKFHF37B.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EYLCSJAI.js.map → chunk-YQEZWI3R.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-W6LI2PKM.js.map → close-GPD7DTJV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-CWODTPKG.js.map → close-X3CF6FQP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-CQFUY7MR.js.map → close-many-J7A5EHOQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-DLDDVSH5.js.map → close-many-NQLYGPYW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-E3TNTK24.js.map → comments-2AOZQ5D2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-WGLHR7LB.js.map → comments-TMHMALA5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-LXVDXH7B.js.map → copy-FWQA5OU4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-Q5ZJPUKR.js.map → copy-N3LCQBMC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-LBVCYMEG.js.map → create-AQ5SIGZC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-J5U6ND4K.js.map → create-KOGQ3JKD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-WNHB3LYW.js.map → delete-6G3MBZ6S.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-PMJBNY5G.js.map → delete-YYYFOSEA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-JZ7TMVCB.js.map → deps-MQ4ZIGZB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-OA26IS25.js.map → deps-NIIKXLPB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-FEWB2DQB.js.map → docs-53NUGMIQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-HA2AIDBB.js.map → docs-OWRGDMNY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-EFIWKFTM.js.map → files-3PXGXYDB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-6YFBJRBG.js.map → files-EGLKHD7O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-POIW5LTJ.js.map → focus-KZLIA6WS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-4QJR7FOQ.js.map → focus-SRPASFTN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-CKRPDTJN.js.map → history-compact-G4DULDCX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-FWG2C7FZ.js.map → history-compact-HHIUOMZ7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-BB3TGDAE.js.map → history-redact-IUSJ6X3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-D225BHOZ.js.map → history-redact-THHGRQXV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-6GEAM7HE.js.map → history-repair-KG7SWXI6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-RQXKQHL4.js.map → history-repair-LUQWRS7X.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-JLNLCOL5.js.map → learnings-2MRNBFJF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-RSNLSWDC.js.map → learnings-ZVHSALJY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-GB47XXQQ.js.map → notes-73JWKWUD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-2WDH6DXU.js.map → notes-BAKUL5DJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-VDCJ2PCN.js.map → plan-AZPMCG37.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-DOVI2VMW.js.map → plan-LEAGLPGP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-FAU7NZML.js.map → profile-AVCIIZID.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-IVXQEL3D.js.map → profile-LFYO3HHX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-ZIBBRSED.js.map → register-operations-KHZYR6MG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-operations-ZUJ5JWPE.js.map → register-operations-WPQ2LWZJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-BCVLFEYS.js.map → register-setup-PGDNOXDQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{register-setup-TDCGWIOS.js.map → register-setup-TDN7WAO6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-25DLT2Q2.js.map → restore-E3PRGDN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-YPMVUUEX.js.map → restore-KIUYTAEJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-FNU3WE4O.js.map → schema-5JNFQFUW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-NBCM3RAD.js.map → schema-TMIW4XZC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-XHSIAIXE.js.map → update-SQYZA3ZW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-WWBYOPXO.js.map → update-XZJYS5X7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-TA7NGQBO.js.map → update-many-R24B3GBK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-OUGIU5SF.js.map → update-many-WQ3R3J6N.js.map} +0 -0
- /package/dist/{cli/commands → sdk/query}/search-pagination.d.ts +0 -0
- /package/dist/{cli/commands → sdk/query}/search-rendering.d.ts +0 -0
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { GlobalOptions } from "../core/shared/command-types.js";
|
|
2
|
-
import type {
|
|
2
|
+
import type { ItemMetadata, ItemStatus, ItemType } from "../types/index.js";
|
|
3
|
+
import { type DanglingDependencyReference } from "./graph/assembly.js";
|
|
3
4
|
import { type RelationshipContextResult } from "./relationship-context.js";
|
|
4
5
|
/** Supported values accepted by the deps format contract. */
|
|
5
6
|
export declare const DEPS_FORMAT_VALUES: readonly ["tree", "graph", "context"];
|
|
@@ -9,6 +10,10 @@ export type DepsFormat = (typeof DEPS_FORMAT_VALUES)[number];
|
|
|
9
10
|
export declare const DEPS_COLLAPSE_VALUES: readonly ["none", "repeated"];
|
|
10
11
|
/** Restricts deps collapse mode values accepted by command, SDK, and storage contracts. */
|
|
11
12
|
export type DepsCollapseMode = (typeof DEPS_COLLAPSE_VALUES)[number];
|
|
13
|
+
/** Supported values accepted by the deps graph-context direction contract. */
|
|
14
|
+
export declare const DEPS_DIRECTION_VALUES: readonly ["outgoing", "incoming", "both"];
|
|
15
|
+
/** Restricts deps traversal-direction values accepted by command, SDK, and storage contracts. */
|
|
16
|
+
export type DepsDirection = (typeof DEPS_DIRECTION_VALUES)[number];
|
|
12
17
|
/** Documents the deps command options payload exchanged by command, SDK, and package integrations. */
|
|
13
18
|
export interface DepsCommandOptions {
|
|
14
19
|
/** Value that configures or reports format for this contract. */
|
|
@@ -21,62 +26,17 @@ export interface DepsCommandOptions {
|
|
|
21
26
|
summary?: boolean;
|
|
22
27
|
/** Maximum graph-context nodes returned. */
|
|
23
28
|
nodeLimit?: string | number;
|
|
24
|
-
/** Maximum graph-context edges returned. */
|
|
29
|
+
/** Maximum graph-context edges and enumerated missing-reference rows returned. */
|
|
25
30
|
edgeLimit?: string | number;
|
|
26
31
|
/** Maximum estimated graph-context output tokens. */
|
|
27
32
|
tokenBudget?: string | number;
|
|
28
33
|
/** Opaque continuation cursor for graph-context output. */
|
|
29
34
|
cursor?: string;
|
|
35
|
+
/** Graph-context traversal direction relative to each visited node. */
|
|
36
|
+
direction?: string;
|
|
37
|
+
/** Registered relationship kinds narrowing graph-context traversal. */
|
|
38
|
+
kind?: string | string[];
|
|
30
39
|
}
|
|
31
|
-
/** Minimal item shape inspected by dependency-reference governance. */
|
|
32
|
-
export interface DependencyReferenceHolder {
|
|
33
|
-
/** Stable item identifier. */
|
|
34
|
-
id: string;
|
|
35
|
-
/** Lifecycle status used to separate actionable work from historical debt. */
|
|
36
|
-
status: ItemStatus;
|
|
37
|
-
/** Optional hierarchy parent reference. */
|
|
38
|
-
parent?: string;
|
|
39
|
-
/** Optional legacy scalar blocker reference. */
|
|
40
|
-
blocked_by?: string;
|
|
41
|
-
/** Structured dependency edges. */
|
|
42
|
-
dependencies?: Dependency[];
|
|
43
|
-
}
|
|
44
|
-
/** Storage surface that contributed a normalized dependency reference. */
|
|
45
|
-
export type DependencyReferenceSource = "parent" | "blocked_by" | "dependency";
|
|
46
|
-
/** One normalized dependency reference whose target is absent from the tracker. */
|
|
47
|
-
export interface DanglingDependencyReference {
|
|
48
|
-
/** Item that owns the reference. */
|
|
49
|
-
holder_id: string;
|
|
50
|
-
/** Missing referenced item id or legacy sentinel. */
|
|
51
|
-
target_id: string;
|
|
52
|
-
/** Relationship field or dependency kind. */
|
|
53
|
-
kind: string;
|
|
54
|
-
/** Storage surface that owns the reference and determines its remediation. */
|
|
55
|
-
source: DependencyReferenceSource;
|
|
56
|
-
/** Current lifecycle status of the holder. */
|
|
57
|
-
holder_status: ItemStatus;
|
|
58
|
-
/** Whether the holder is terminal and therefore historical, non-actionable debt. */
|
|
59
|
-
legacy_terminal: boolean;
|
|
60
|
-
/** Whether the target is the pre-structured-dependency `no-active-blocker` sentinel. */
|
|
61
|
-
no_active_blocker_sentinel: boolean;
|
|
62
|
-
}
|
|
63
|
-
/** Actionable and historical partitions returned by dependency-reference governance. */
|
|
64
|
-
export interface DanglingDependencyReferenceSummary {
|
|
65
|
-
/** Missing references held by active items; these may affect scheduling and should gate validation. */
|
|
66
|
-
active: DanglingDependencyReference[];
|
|
67
|
-
/** Missing references held only by terminal items; retained as informational history debt. */
|
|
68
|
-
legacy_terminal: DanglingDependencyReference[];
|
|
69
|
-
/** Legacy sentinel rows across active and terminal holders, called out separately from typo-like ids. */
|
|
70
|
-
no_active_blocker_sentinels: DanglingDependencyReference[];
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Classify missing hierarchy and dependency targets without mutating their holders.
|
|
74
|
-
*
|
|
75
|
-
* Consumers provide the workspace's terminal-status predicate so custom lifecycle
|
|
76
|
-
* schemas receive the same active-versus-historical behavior as the built-in
|
|
77
|
-
* closed/canceled statuses.
|
|
78
|
-
*/
|
|
79
|
-
export declare function collectDanglingDependencyReferences(items: readonly DependencyReferenceHolder[], isTerminal?: (status: ItemStatus) => boolean): DanglingDependencyReferenceSummary;
|
|
80
40
|
/** Documents the deps tree node payload exchanged by command, SDK, and package integrations. */
|
|
81
41
|
export interface DepsTreeNode {
|
|
82
42
|
/** Stable identifier used to reference this record across commands and storage. */
|
|
@@ -143,8 +103,22 @@ export interface DepsResult {
|
|
|
143
103
|
node_count: number;
|
|
144
104
|
/** Number of edge entries represented by this result. */
|
|
145
105
|
edge_count: number;
|
|
146
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Number of missing entries represented by this result.
|
|
108
|
+
*
|
|
109
|
+
* Tree and graph formats count missing nodes encountered while walking
|
|
110
|
+
* dependency edges; context format counts missing nodes reachable within the
|
|
111
|
+
* same bounded traversal (direction, kinds, and depth) that produced the
|
|
112
|
+
* packet, independent of node or token pagination, so the two formats agree
|
|
113
|
+
* for equal traversal parameters over the dependency edge family.
|
|
114
|
+
*/
|
|
147
115
|
missing_count: number;
|
|
116
|
+
/** Traversal scope documenting the missing_count semantics for context format. */
|
|
117
|
+
missing_scope?: "traversal";
|
|
118
|
+
/** Total dangling references declared into the traversed missing nodes. */
|
|
119
|
+
missing_reference_count?: number;
|
|
120
|
+
/** Bounded enumeration of dangling references, capped by the context edge limit. */
|
|
121
|
+
missing_references?: DanglingDependencyReference[];
|
|
148
122
|
/** Value that configures or reports tree for this contract. */
|
|
149
123
|
tree?: DepsTreeNode;
|
|
150
124
|
/** Value that configures or reports graph for this contract. */
|
|
@@ -152,7 +126,22 @@ export interface DepsResult {
|
|
|
152
126
|
/** Explainable bounded graph-context projection. */
|
|
153
127
|
context?: RelationshipContextResult;
|
|
154
128
|
}
|
|
129
|
+
/** Parse one positive-integer graph bound, failing fast with the offending flag name. */
|
|
130
|
+
export declare function parsePositiveInteger(raw: string | number | undefined, flag: string): number | undefined;
|
|
131
|
+
/** Parse the shared non-negative --max-depth traversal bound. */
|
|
132
|
+
export declare function parseMaxDepth(raw: string | number | undefined): number | undefined;
|
|
133
|
+
/** Parse the shared graph traversal --direction value, defaulting to "both". */
|
|
134
|
+
export declare function parseDirection(raw: string | undefined): DepsDirection;
|
|
135
|
+
/**
|
|
136
|
+
* Normalize repeatable and comma-separated --kind values against the built-in
|
|
137
|
+
* relationship ontology, failing fast on unknown kinds instead of silently
|
|
138
|
+
* matching nothing (the multi-value filter-grammar trap tracked by pm-gknu).
|
|
139
|
+
*/
|
|
140
|
+
export declare function parseKinds(raw: string | string[] | undefined): string[] | undefined;
|
|
141
|
+
/** Options subset consumed by the deps graph-context projection. */
|
|
142
|
+
type DepsContextOptions = Pick<DepsCommandOptions, "maxDepth" | "nodeLimit" | "edgeLimit" | "tokenBudget" | "cursor" | "direction" | "kind">;
|
|
155
143
|
/** Build the SDK-backed bounded relationship-context projection for deps. */
|
|
156
|
-
export declare function buildDepsRelationshipContext(rootId: string, items: readonly ItemMetadata[], options:
|
|
144
|
+
export declare function buildDepsRelationshipContext(rootId: string, items: readonly ItemMetadata[], options: DepsContextOptions, rootEvidence?: readonly string[]): RelationshipContextResult;
|
|
157
145
|
/** Implements run deps for the public runtime surface of this module. */
|
|
158
146
|
export declare function runDeps(id: string, options: DepsCommandOptions, global: GlobalOptions): Promise<DepsResult>;
|
|
147
|
+
export {};
|
package/dist/sdk/dependencies.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Implements the pm deps command surface and its agent-facing runtime behavior.
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
-
!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]="
|
|
7
|
+
!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]="1f69c8aa-b089-5f6e-8b5a-63695f1e6bbf")}catch(e){}}();
|
|
8
8
|
import { getActiveExtensionRegistrations } from "../core/extensions/index.js";
|
|
9
9
|
import { pathExists } from "../core/fs/fs-utils.js";
|
|
10
10
|
import { resolveItemTypeRegistry } from "../core/item/type-registry.js";
|
|
@@ -12,94 +12,19 @@ import { isTerminalStatus } from "../core/item/status.js";
|
|
|
12
12
|
import { resolveRuntimeStatusRegistry } from "../core/schema/runtime-schema.js";
|
|
13
13
|
import { EXIT_CODE } from "../core/shared/constants.js";
|
|
14
14
|
import { PmCliError } from "../core/shared/errors.js";
|
|
15
|
-
import { listAllItemMetadataLight } from "../core/store/item-store.js";
|
|
15
|
+
import { listAllItemMetadataLight, locateItem, readLocatedItem, } from "../core/store/item-store.js";
|
|
16
16
|
import { getSettingsPath, resolvePmRoot } from "../core/store/paths.js";
|
|
17
17
|
import { readSettings } from "../core/store/settings.js";
|
|
18
|
+
import { assembleWorkspaceRelationshipGraph, collectDanglingDependencyReferences, } from "./graph/assembly.js";
|
|
19
|
+
import { computeWorkspaceGraphFingerprint, workspaceGraphCache, } from "./graph/cache.js";
|
|
18
20
|
import { buildRelationshipContext, } from "./relationship-context.js";
|
|
19
|
-
import {
|
|
21
|
+
import { createRelationshipKindRegistry } from "./relationships.js";
|
|
20
22
|
/** Supported values accepted by the deps format contract. */
|
|
21
23
|
export const DEPS_FORMAT_VALUES = ["tree", "graph", "context"];
|
|
22
24
|
/** Supported values accepted by the deps collapse contract. */
|
|
23
25
|
export const DEPS_COLLAPSE_VALUES = ["none", "repeated"];
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
if (typeof target !== "string")
|
|
27
|
-
return undefined;
|
|
28
|
-
const normalized = target.trim();
|
|
29
|
-
if (!normalized || ["none", "null", "n/a", "na"].includes(normalized.toLowerCase()))
|
|
30
|
-
return undefined;
|
|
31
|
-
return normalized;
|
|
32
|
-
}
|
|
33
|
-
/** Normalize a graph target while removing the historical no-blocker marker. */
|
|
34
|
-
function normalizeDependencyGraphTarget(target) {
|
|
35
|
-
const normalized = normalizeDependencyReferenceTarget(target);
|
|
36
|
-
return normalized?.toLowerCase() === "no-active-blocker" ? undefined : normalized;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Classify missing hierarchy and dependency targets without mutating their holders.
|
|
40
|
-
*
|
|
41
|
-
* Consumers provide the workspace's terminal-status predicate so custom lifecycle
|
|
42
|
-
* schemas receive the same active-versus-historical behavior as the built-in
|
|
43
|
-
* closed/canceled statuses.
|
|
44
|
-
*/
|
|
45
|
-
export function collectDanglingDependencyReferences(items, isTerminal = (status) => status === "closed" || status === "canceled") {
|
|
46
|
-
const knownIds = new Set(items.map((item) => item.id.trim().toLowerCase()));
|
|
47
|
-
const rows = new Map();
|
|
48
|
-
const addReference = (item, target, kind, source) => {
|
|
49
|
-
const normalized = normalizeDependencyReferenceTarget(target);
|
|
50
|
-
if (!normalized || knownIds.has(normalized.toLowerCase())) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
const row = {
|
|
54
|
-
holder_id: item.id,
|
|
55
|
-
target_id: normalized,
|
|
56
|
-
kind,
|
|
57
|
-
source,
|
|
58
|
-
holder_status: item.status,
|
|
59
|
-
legacy_terminal: isTerminal(item.status),
|
|
60
|
-
no_active_blocker_sentinel: normalized.toLowerCase() === "no-active-blocker",
|
|
61
|
-
};
|
|
62
|
-
rows.set(`${row.holder_id}::${row.target_id}::${row.kind}::${row.source}`, row);
|
|
63
|
-
};
|
|
64
|
-
for (const item of items) {
|
|
65
|
-
addReference(item, item.parent, "parent", "parent");
|
|
66
|
-
addReference(item, item.blocked_by, "blocked_by", "blocked_by");
|
|
67
|
-
for (const dependency of item.dependencies ?? []) {
|
|
68
|
-
// Public SDK callers may supply legacy or JSON-decoded payloads that do
|
|
69
|
-
// not yet satisfy the current structured dependency contract.
|
|
70
|
-
if (typeof dependency !== "object" || dependency === null) {
|
|
71
|
-
continue;
|
|
72
|
-
}
|
|
73
|
-
const legacyDependency = dependency;
|
|
74
|
-
addReference(item, legacyDependency.id, typeof legacyDependency.kind === "string"
|
|
75
|
-
? legacyDependency.kind
|
|
76
|
-
: "related", "dependency");
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
const sorted = [...rows.values()].sort((left, right) => left.holder_id.localeCompare(right.holder_id) ||
|
|
80
|
-
left.target_id.localeCompare(right.target_id) ||
|
|
81
|
-
left.kind.localeCompare(right.kind) ||
|
|
82
|
-
left.source.localeCompare(right.source));
|
|
83
|
-
const legacyTerminal = sorted.filter((row) => row.legacy_terminal);
|
|
84
|
-
return {
|
|
85
|
-
active: sorted.filter((row) => !row.legacy_terminal),
|
|
86
|
-
legacy_terminal: legacyTerminal,
|
|
87
|
-
no_active_blocker_sentinels: sorted.filter((row) => row.no_active_blocker_sentinel),
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
/** Return unique real missing targets while excluding the legacy no-blocker sentinel. */
|
|
91
|
-
function collectMissingDependencyTargetIds(dangling) {
|
|
92
|
-
const targets = new Map();
|
|
93
|
-
for (const reference of [...dangling.active, ...dangling.legacy_terminal]) {
|
|
94
|
-
if (reference.no_active_blocker_sentinel)
|
|
95
|
-
continue;
|
|
96
|
-
const target = reference.target_id.trim();
|
|
97
|
-
const key = target.toLowerCase();
|
|
98
|
-
if (!targets.has(key))
|
|
99
|
-
targets.set(key, target);
|
|
100
|
-
}
|
|
101
|
-
return [...targets.values()].sort((left, right) => left.localeCompare(right));
|
|
102
|
-
}
|
|
26
|
+
/** Supported values accepted by the deps graph-context direction contract. */
|
|
27
|
+
export const DEPS_DIRECTION_VALUES = ["outgoing", "incoming", "both"];
|
|
103
28
|
function parseFormat(raw) {
|
|
104
29
|
const candidate = raw?.trim().toLowerCase() ?? "tree";
|
|
105
30
|
if (DEPS_FORMAT_VALUES.includes(candidate)) {
|
|
@@ -107,7 +32,8 @@ function parseFormat(raw) {
|
|
|
107
32
|
}
|
|
108
33
|
throw new PmCliError(`Invalid --format value "${raw}". Use "tree", "graph", or "context".`, EXIT_CODE.USAGE);
|
|
109
34
|
}
|
|
110
|
-
|
|
35
|
+
/** Parse one positive-integer graph bound, failing fast with the offending flag name. */
|
|
36
|
+
export function parsePositiveInteger(raw, flag) {
|
|
111
37
|
if (raw === undefined)
|
|
112
38
|
return undefined;
|
|
113
39
|
const value = typeof raw === "number" ? raw : Number(raw.trim());
|
|
@@ -115,7 +41,8 @@ function parsePositiveInteger(raw, flag) {
|
|
|
115
41
|
throw new PmCliError(`Invalid --${flag} value "${raw}". Use a positive integer.`, EXIT_CODE.USAGE);
|
|
116
42
|
return value;
|
|
117
43
|
}
|
|
118
|
-
|
|
44
|
+
/** Parse the shared non-negative --max-depth traversal bound. */
|
|
45
|
+
export function parseMaxDepth(raw) {
|
|
119
46
|
if (raw === undefined) {
|
|
120
47
|
return undefined;
|
|
121
48
|
}
|
|
@@ -132,6 +59,43 @@ function parseCollapse(raw) {
|
|
|
132
59
|
}
|
|
133
60
|
throw new PmCliError(`Invalid --collapse value "${raw}". Use "none" or "repeated".`, EXIT_CODE.USAGE);
|
|
134
61
|
}
|
|
62
|
+
/** Parse the shared graph traversal --direction value, defaulting to "both". */
|
|
63
|
+
export function parseDirection(raw) {
|
|
64
|
+
const candidate = raw?.trim().toLowerCase() ?? "both";
|
|
65
|
+
if (DEPS_DIRECTION_VALUES.includes(candidate)) {
|
|
66
|
+
return candidate;
|
|
67
|
+
}
|
|
68
|
+
throw new PmCliError(`Invalid --direction value "${raw}". Use "outgoing", "incoming", or "both".`, EXIT_CODE.USAGE);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Normalize repeatable and comma-separated --kind values against the built-in
|
|
72
|
+
* relationship ontology, failing fast on unknown kinds instead of silently
|
|
73
|
+
* matching nothing (the multi-value filter-grammar trap tracked by pm-gknu).
|
|
74
|
+
*/
|
|
75
|
+
export function parseKinds(raw) {
|
|
76
|
+
if (raw === undefined)
|
|
77
|
+
return undefined;
|
|
78
|
+
const registry = createRelationshipKindRegistry();
|
|
79
|
+
const values = (Array.isArray(raw) ? raw : [raw])
|
|
80
|
+
.flatMap((value) => value.split(","))
|
|
81
|
+
.map((value) => value.trim())
|
|
82
|
+
.filter((value) => value.length > 0);
|
|
83
|
+
if (values.length === 0)
|
|
84
|
+
return undefined;
|
|
85
|
+
const kinds = new Set();
|
|
86
|
+
for (const value of values) {
|
|
87
|
+
const definition = registry.resolve(value);
|
|
88
|
+
if (!definition) {
|
|
89
|
+
const known = registry
|
|
90
|
+
.list()
|
|
91
|
+
.map((entry) => entry.kind)
|
|
92
|
+
.join(", ");
|
|
93
|
+
throw new PmCliError(`Invalid --kind value "${value}". Registered kinds: ${known}.`, EXIT_CODE.USAGE);
|
|
94
|
+
}
|
|
95
|
+
kinds.add(definition.kind);
|
|
96
|
+
}
|
|
97
|
+
return [...kinds].sort();
|
|
98
|
+
}
|
|
135
99
|
function normalizeDependencies(dependencies) {
|
|
136
100
|
if (!dependencies || dependencies.length === 0) {
|
|
137
101
|
return [];
|
|
@@ -303,47 +267,130 @@ function countDependencyGraph(rootId, index, maxDepth) {
|
|
|
303
267
|
missing_count: missingIds.size,
|
|
304
268
|
};
|
|
305
269
|
}
|
|
306
|
-
/**
|
|
307
|
-
|
|
270
|
+
/** Parse CLI-compatible deps context options once for packet and closure parity. */
|
|
271
|
+
function parseDepsContextOptions(options) {
|
|
308
272
|
const maxDepth = parseMaxDepth(options.maxDepth);
|
|
309
273
|
const nodeLimit = parsePositiveInteger(options.nodeLimit, "node-limit");
|
|
310
274
|
const edgeLimit = parsePositiveInteger(options.edgeLimit, "edge-limit");
|
|
311
275
|
const tokenBudget = parsePositiveInteger(options.tokenBudget, "token-budget");
|
|
312
|
-
const
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
const parent = normalizeDependencyGraphTarget(item.parent);
|
|
317
|
-
const blocker = normalizeDependencyGraphTarget(item.blocked_by);
|
|
318
|
-
const dependencies = (item.dependencies ?? []).flatMap((rawDependency) => {
|
|
319
|
-
if (typeof rawDependency !== "object" || rawDependency === null)
|
|
320
|
-
return [];
|
|
321
|
-
const dependency = rawDependency;
|
|
322
|
-
const target = normalizeDependencyGraphTarget(dependency.id);
|
|
323
|
-
if (!target)
|
|
324
|
-
return [];
|
|
325
|
-
return [{
|
|
326
|
-
id: canonicalIds.get(target.toLowerCase()) ?? target,
|
|
327
|
-
kind: typeof dependency.kind === "string" ? dependency.kind : "related",
|
|
328
|
-
}];
|
|
329
|
-
});
|
|
330
|
-
return {
|
|
331
|
-
id: item.id,
|
|
332
|
-
...(parent ? { parent: canonicalIds.get(parent.toLowerCase()) ?? parent } : {}),
|
|
333
|
-
...(blocker ? { blocked_by: canonicalIds.get(blocker.toLowerCase()) ?? blocker } : {}),
|
|
334
|
-
dependencies,
|
|
335
|
-
};
|
|
336
|
-
});
|
|
337
|
-
return buildRelationshipContext(RelationshipGraph.fromItems([...graphItems, ...missingIds.map((id) => ({ id }))]), rootId, [
|
|
338
|
-
...items.map((item) => ({ id: item.id, title: item.title, status: item.status })),
|
|
339
|
-
...missingIds.map((id) => ({ id, title: `[missing] ${id}`, status: "missing" })),
|
|
340
|
-
], {
|
|
276
|
+
const kinds = parseKinds(options.kind);
|
|
277
|
+
return {
|
|
278
|
+
direction: parseDirection(options.direction),
|
|
279
|
+
...(kinds === undefined ? {} : { kinds }),
|
|
341
280
|
...(maxDepth === undefined ? {} : { maxDepth }),
|
|
342
281
|
...(nodeLimit === undefined ? {} : { nodeLimit }),
|
|
343
282
|
...(edgeLimit === undefined ? {} : { edgeLimit }),
|
|
344
283
|
...(tokenBudget === undefined ? {} : { tokenBudget }),
|
|
345
284
|
...(options.cursor?.trim() ? { cursor: options.cursor.trim() } : {}),
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
/** Build one bounded context packet from an assembled deps relationship graph. */
|
|
288
|
+
function buildContextFromAssembly(assembly, rootId, options, rootEvidence) {
|
|
289
|
+
return buildRelationshipContext(assembly.graph, rootId, assembly.details.map((detail) => detail.id === rootId && rootEvidence.length > 0
|
|
290
|
+
? { ...detail, evidence: rootEvidence }
|
|
291
|
+
: detail), options);
|
|
292
|
+
}
|
|
293
|
+
/** Build the SDK-backed bounded relationship-context projection for deps. */
|
|
294
|
+
export function buildDepsRelationshipContext(rootId, items, options, rootEvidence = []) {
|
|
295
|
+
return buildContextFromAssembly(assembleWorkspaceRelationshipGraph(items), rootId, parseDepsContextOptions(options), rootEvidence);
|
|
296
|
+
}
|
|
297
|
+
/** Append up to `limit` labeled pointers from one linked collection. */
|
|
298
|
+
function appendEvidencePointers(evidence, label, values, limit) {
|
|
299
|
+
for (const value of values.slice(0, limit)) {
|
|
300
|
+
const trimmed = value?.trim();
|
|
301
|
+
if (trimmed)
|
|
302
|
+
evidence.push(`${label}:${trimmed}`);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Load bounded root evidence pointers (linked files, tests, docs, and
|
|
307
|
+
* annotation counts) so the context packet answers "where is the proof"
|
|
308
|
+
* without a follow-up item read.
|
|
309
|
+
*/
|
|
310
|
+
async function collectRootEvidence(pmRoot, id, settings, typeToFolder) {
|
|
311
|
+
const located = await locateItem(pmRoot, id, settings.id_prefix, settings.item_format, typeToFolder);
|
|
312
|
+
// The caller already resolved the root against the light index, so a miss
|
|
313
|
+
// can only happen when storage mutates mid-read; degrade to no evidence.
|
|
314
|
+
/* c8 ignore start -- defensive: unreachable without a concurrent delete between the index scan and this read. */
|
|
315
|
+
if (!located)
|
|
316
|
+
return [];
|
|
317
|
+
/* c8 ignore stop */
|
|
318
|
+
const { document } = await readLocatedItem(located, {
|
|
319
|
+
schema: settings.schema,
|
|
320
|
+
});
|
|
321
|
+
const metadata = document.metadata;
|
|
322
|
+
const files = metadata.files ?? [];
|
|
323
|
+
const tests = metadata.tests ?? [];
|
|
324
|
+
const docs = metadata.docs ?? [];
|
|
325
|
+
const counts = [
|
|
326
|
+
["files", files.length],
|
|
327
|
+
["tests", tests.length],
|
|
328
|
+
["docs", docs.length],
|
|
329
|
+
["comments", (metadata.comments ?? []).length],
|
|
330
|
+
["notes", (metadata.notes ?? []).length],
|
|
331
|
+
["learnings", (metadata.learnings ?? []).length],
|
|
332
|
+
];
|
|
333
|
+
if (counts.every(([, count]) => count === 0))
|
|
334
|
+
return [];
|
|
335
|
+
const evidence = [
|
|
336
|
+
`linked:${counts.map(([key, count]) => `${key}=${count}`).join(",")}`,
|
|
337
|
+
];
|
|
338
|
+
appendEvidencePointers(evidence, "file", files.map((file) => file.path), 3);
|
|
339
|
+
appendEvidencePointers(evidence, "test", tests.map((test) => test.command ?? test.path), 2);
|
|
340
|
+
appendEvidencePointers(evidence, "doc", docs.map((doc) => doc.path), 2);
|
|
341
|
+
return evidence;
|
|
342
|
+
}
|
|
343
|
+
/** Assemble the context-format deps result with traversal-scoped missing enumeration. */
|
|
344
|
+
function buildContextDepsResult(params) {
|
|
345
|
+
const { assembly, canonicalId, options, rootEvidence, summaryOnly } = params;
|
|
346
|
+
const contextOptions = parseDepsContextOptions(options);
|
|
347
|
+
const context = buildContextFromAssembly(assembly, canonicalId, contextOptions, rootEvidence);
|
|
348
|
+
const reachable = assembly.graph.closure(canonicalId, {
|
|
349
|
+
direction: contextOptions.direction,
|
|
350
|
+
...(contextOptions.kinds === undefined
|
|
351
|
+
? {}
|
|
352
|
+
: { kinds: contextOptions.kinds }),
|
|
353
|
+
maxDepth: contextOptions.maxDepth ?? 3,
|
|
346
354
|
});
|
|
355
|
+
const missingReachable = reachable.value.filter((nodeId) => assembly.missingIdSet.has(nodeId.toLowerCase()));
|
|
356
|
+
const missingReachableSet = new Set(missingReachable.map((nodeId) => nodeId.toLowerCase()));
|
|
357
|
+
const relationshipRegistry = createRelationshipKindRegistry();
|
|
358
|
+
const filteredKinds = contextOptions.kinds
|
|
359
|
+
? new Set(contextOptions.kinds.map((kind) => relationshipRegistry.require(kind).kind))
|
|
360
|
+
: undefined;
|
|
361
|
+
const packetIds = new Set([canonicalId, ...reachable.value]);
|
|
362
|
+
const missingReferences = [
|
|
363
|
+
...assembly.dangling.active,
|
|
364
|
+
...assembly.dangling.legacy_terminal,
|
|
365
|
+
].filter((row) => {
|
|
366
|
+
if (row.no_active_blocker_sentinel ||
|
|
367
|
+
!missingReachableSet.has(row.target_id.trim().toLowerCase()) ||
|
|
368
|
+
!packetIds.has(row.holder_id))
|
|
369
|
+
return false;
|
|
370
|
+
if (filteredKinds === undefined)
|
|
371
|
+
return true;
|
|
372
|
+
const definition = relationshipRegistry.resolve(row.kind);
|
|
373
|
+
return (definition !== undefined &&
|
|
374
|
+
(filteredKinds.has(definition.kind) ||
|
|
375
|
+
(definition.inverse !== undefined &&
|
|
376
|
+
filteredKinds.has(definition.inverse))));
|
|
377
|
+
});
|
|
378
|
+
const referenceLimit = contextOptions.edgeLimit ?? 40;
|
|
379
|
+
return {
|
|
380
|
+
id: canonicalId,
|
|
381
|
+
format: "context",
|
|
382
|
+
node_count: context.nodes.length + 1,
|
|
383
|
+
edge_count: context.edges.length,
|
|
384
|
+
missing_count: missingReachable.length,
|
|
385
|
+
missing_scope: "traversal",
|
|
386
|
+
missing_reference_count: missingReferences.length,
|
|
387
|
+
...(summaryOnly
|
|
388
|
+
? {}
|
|
389
|
+
: {
|
|
390
|
+
missing_references: missingReferences.slice(0, referenceLimit),
|
|
391
|
+
context,
|
|
392
|
+
}),
|
|
393
|
+
};
|
|
347
394
|
}
|
|
348
395
|
/** Implements run deps for the public runtime surface of this module. */
|
|
349
396
|
export async function runDeps(id, options, global) {
|
|
@@ -375,15 +422,20 @@ export async function runDeps(id, options, global) {
|
|
|
375
422
|
}
|
|
376
423
|
if (format === "context") {
|
|
377
424
|
const canonicalId = index.get(id.trim().toLowerCase()).id;
|
|
378
|
-
const
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
425
|
+
const rootEvidence = summaryOnly
|
|
426
|
+
? []
|
|
427
|
+
: await collectRootEvidence(pmRoot, canonicalId, settings, typeRegistry.type_to_folder);
|
|
428
|
+
const isTerminal = (status) => isTerminalStatus(status, statusRegistry);
|
|
429
|
+
// Reuse the fingerprint-keyed shared cache so bounded context packets in
|
|
430
|
+
// long-lived hosts stop paying full-workspace assembly on every call.
|
|
431
|
+
const lookup = workspaceGraphCache().lookup(pmRoot, computeWorkspaceGraphFingerprint(items, isTerminal), () => assembleWorkspaceRelationshipGraph(items, isTerminal));
|
|
432
|
+
return buildContextDepsResult({
|
|
433
|
+
assembly: lookup.assembly,
|
|
434
|
+
canonicalId,
|
|
435
|
+
options,
|
|
436
|
+
rootEvidence,
|
|
437
|
+
summaryOnly,
|
|
438
|
+
});
|
|
387
439
|
}
|
|
388
440
|
if (summaryOnly) {
|
|
389
441
|
return {
|
|
@@ -413,4 +465,4 @@ export async function runDeps(id, options, global) {
|
|
|
413
465
|
};
|
|
414
466
|
}
|
|
415
467
|
//# sourceMappingURL=dependencies.js.map
|
|
416
|
-
//# debugId=
|
|
468
|
+
//# debugId=1f69c8aa-b089-5f6e-8b5a-63695f1e6bbf
|