@unbrained/pm-cli 2026.7.19 → 2026.7.20
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/AGENTS.md +2 -0
- package/CHANGELOG.md +36 -0
- package/dist/cli/commands/append.js +13 -6
- package/dist/cli/commands/append.js.map +1 -1
- package/dist/cli/commands/calendar.d.ts +1 -1
- package/dist/cli/commands/calendar.js +2 -2
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/comments.js +2 -5
- package/dist/cli/commands/comments.js.map +1 -1
- package/dist/cli/commands/completion.js +11 -3
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/context.d.ts +1 -1
- package/dist/cli/commands/context.js +2 -2
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +4 -3
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/copy.js +5 -3
- package/dist/cli/commands/copy.js.map +1 -1
- package/dist/cli/commands/create.d.ts +3 -1
- package/dist/cli/commands/create.js +5 -3
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/merge.d.ts +8 -0
- package/dist/cli/commands/merge.js +12 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +1 -1
- package/dist/cli/commands/plan.js +2 -2
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/update-many.d.ts +5 -0
- package/dist/cli/commands/update-many.js +81 -6
- package/dist/cli/commands/update-many.js.map +1 -1
- package/dist/cli/commands/update.d.ts +5 -1
- package/dist/cli/commands/update.js +50 -4
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/register-list-query.js +14 -2
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +61 -2
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-operations.js +5 -3
- package/dist/cli/register-operations.js.map +1 -1
- package/dist/cli/registration-helpers.js +4 -2
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/bundle-manifest.json +365 -333
- package/dist/cli-bundle/chunks/{append-MBXHNWSX.js → append-E6V54WOQ.js} +5 -5
- package/dist/cli-bundle/chunks/append-NNJ3EFIT.js +11 -0
- package/dist/cli-bundle/chunks/{chunk-M4B4RK4J.js → chunk-2BO4CA46.js} +14 -238
- package/dist/cli-bundle/chunks/{chunk-M4B4RK4J.js.map → chunk-2BO4CA46.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-MQOSMBWV.js → chunk-3AO5VSDR.js} +25 -6
- package/dist/cli-bundle/chunks/chunk-3AO5VSDR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ODEIDKGW.js → chunk-3LPFHE3P.js} +596 -154
- package/dist/cli-bundle/chunks/chunk-3LPFHE3P.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YGEA4CLH.js → chunk-3MCTMJXI.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-N7FCFJ76.js → chunk-3P7UJQOX.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-7B7IHMLH.js → chunk-3VY6MIEO.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-3EZZTFL2.js → chunk-4F6BWJ4J.js} +51 -43
- package/dist/cli-bundle/chunks/chunk-4F6BWJ4J.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VA3H7VVC.js → chunk-4L23AGQ7.js} +9 -7
- package/dist/cli-bundle/chunks/chunk-4L23AGQ7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-5S6IZXK7.js → chunk-4U4Z6AHI.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-UOIFZ66L.js → chunk-4XGJLADW.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-SUNZKVAH.js → chunk-5IZJWSDB.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-QQ77W23U.js → chunk-5NTE36LD.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-EVAN5VJA.js → chunk-5OK4UGFV.js} +5 -8
- package/dist/cli-bundle/chunks/{chunk-EVAN5VJA.js.map → chunk-5OK4UGFV.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-H3YKUVDR.js → chunk-5UX66S6U.js} +26 -7
- package/dist/cli-bundle/chunks/chunk-5UX66S6U.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KGPLSHJD.js → chunk-6C2ZZX5Z.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Q5NHJ6RO.js → chunk-6JUTHVQS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-NTS2RKHN.js → chunk-6VIJ7UA5.js} +15 -15
- package/dist/cli-bundle/chunks/{chunk-BBGR4FKQ.js → chunk-6XMUURSS.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-6XMUURSS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XVB6BATY.js → chunk-72LQ4TKV.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-WCBB6VI3.js → chunk-7AVEY74G.js} +8 -5
- package/dist/cli-bundle/chunks/chunk-7AVEY74G.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-YG56M3NE.js → chunk-7DOJC3HS.js} +8 -8
- package/dist/cli-bundle/chunks/chunk-7DOJC3HS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KZ5AC6B5.js → chunk-7WCE6Y64.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-VQOG2ETB.js → chunk-AF2CCM5U.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-P24ZU5QV.js → chunk-AOEOYL3S.js} +49 -12
- package/dist/cli-bundle/chunks/chunk-AOEOYL3S.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BZKE2O5V.js → chunk-BKIAH72N.js} +8 -6
- package/dist/cli-bundle/chunks/chunk-BKIAH72N.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-RWAIRGBC.js → chunk-C3KD7U3T.js} +12 -243
- package/dist/cli-bundle/chunks/chunk-C3KD7U3T.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-CFHAODHQ.js +334 -0
- package/dist/cli-bundle/chunks/chunk-CFHAODHQ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-TELI67UP.js → chunk-CQTQKUUV.js} +6 -9
- package/dist/cli-bundle/chunks/{chunk-TELI67UP.js.map → chunk-CQTQKUUV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ZUCBPXNA.js → chunk-D6NXDNP3.js} +5 -5
- package/dist/cli-bundle/chunks/chunk-D6NXDNP3.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EAV3P54W.js → chunk-DAQ45GCS.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-6V4T4RD3.js → chunk-DVDBQA3B.js} +79 -22
- package/dist/cli-bundle/chunks/chunk-DVDBQA3B.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-E6LEMURX.js +249 -0
- package/dist/cli-bundle/chunks/chunk-E6LEMURX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ZF52NVRT.js → chunk-E7ICD63T.js} +131 -179
- package/dist/cli-bundle/chunks/chunk-E7ICD63T.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RX53WHFI.js → chunk-EJDGV4GR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-IXG5CMBR.js → chunk-FDHPAVVB.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-KAE727L2.js → chunk-FSRHYUDA.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-FSRHYUDA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-46Z6FAVP.js → chunk-G3COA6GS.js} +51 -43
- package/dist/cli-bundle/chunks/chunk-G3COA6GS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-A4FVWFZY.js → chunk-GFQP7HAZ.js} +8 -6
- package/dist/cli-bundle/chunks/chunk-GFQP7HAZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-2XPDCXK5.js → chunk-GIQSU6S2.js} +6 -6
- package/dist/cli-bundle/chunks/chunk-GIQSU6S2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-V4QHAMI5.js → chunk-GROYI4RB.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-77XFQRTD.js → chunk-GSJSM5BJ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QYGK2XQ3.js → chunk-GTLCVJOE.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-VSQE43NO.js → chunk-GV2262OF.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-N2TEEOXJ.js → chunk-GVI6FAFG.js} +8 -6
- package/dist/cli-bundle/chunks/chunk-GVI6FAFG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-A5EQPNV7.js → chunk-GVT754PX.js} +44 -3
- package/dist/cli-bundle/chunks/chunk-GVT754PX.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-Y2VSGFT4.js → chunk-HB3P4M52.js} +22 -7
- package/dist/cli-bundle/chunks/chunk-HB3P4M52.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-STBCBDKF.js → chunk-HCEBZNC3.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-EEECAV5M.js → chunk-HEWM6CEN.js} +80 -25
- package/dist/cli-bundle/chunks/chunk-HEWM6CEN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GKCEEXMA.js → chunk-HQ3SB4CN.js} +21 -6
- package/dist/cli-bundle/chunks/{chunk-GKCEEXMA.js.map → chunk-HQ3SB4CN.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-U6RYD446.js → chunk-HRW7GF6T.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-D35WYXWC.js → chunk-HYW67VJ5.js} +6 -3
- package/dist/cli-bundle/chunks/chunk-HYW67VJ5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OKWJUL6F.js → chunk-I577UHC7.js} +16 -9
- package/dist/cli-bundle/chunks/{chunk-OKWJUL6F.js.map → chunk-I577UHC7.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XDWXPG2E.js → chunk-IAQE32BI.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-66SRNEBK.js → chunk-IJNK6WW2.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-INSTSQNZ.js +623 -0
- package/dist/cli-bundle/chunks/chunk-INSTSQNZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-A3GAQLBH.js → chunk-IX677TRO.js} +75 -12
- package/dist/cli-bundle/chunks/chunk-IX677TRO.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RLLOZAM2.js → chunk-IY6VZ3IW.js} +29 -8
- package/dist/cli-bundle/chunks/chunk-IY6VZ3IW.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-SVAWG7EE.js → chunk-J4FBIFU6.js} +45 -4
- package/dist/cli-bundle/chunks/chunk-J4FBIFU6.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AGEBQRBG.js → chunk-JAPE62Y5.js} +9 -9
- package/dist/cli-bundle/chunks/{chunk-UWAQI3B7.js → chunk-JGUKMMRS.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-UU6EP25G.js → chunk-JH2ZSLO3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-GRDK25BN.js → chunk-JHJSFOAM.js} +6 -6
- package/dist/cli-bundle/chunks/{chunk-FQO5THHM.js → chunk-JM6YAXTR.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-E7KBMWEF.js → chunk-JSLT7WVE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FIUTBFC6.js → chunk-K4CI6Y45.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IEMXESIS.js → chunk-KSPWRNVP.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-3QNUDDY2.js → chunk-KZEANWJS.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-3QNUDDY2.js.map → chunk-KZEANWJS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BFJP4VYC.js → chunk-L7BH7IWU.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-2UCG5H6B.js → chunk-LPEYZRUR.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-FQF6VVPH.js → chunk-MYSS5H2A.js} +9 -7
- package/dist/cli-bundle/chunks/{chunk-FQF6VVPH.js.map → chunk-MYSS5H2A.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IR3GOO6E.js → chunk-NHT3F4WZ.js} +15 -15
- package/dist/cli-bundle/chunks/{chunk-6BNV3G6C.js → chunk-NLR32VFS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-BDC4TW4B.js → chunk-OV7MSW3I.js} +15 -13
- package/dist/cli-bundle/chunks/chunk-OV7MSW3I.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-EI3UIMZM.js → chunk-OWXOPDHD.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-P7JTWYLH.js +246 -0
- package/dist/cli-bundle/chunks/chunk-P7JTWYLH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-AQUNTB7G.js → chunk-PEQGTJ5Q.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-QFG4MB7P.js → chunk-POG76WWZ.js} +28 -7
- package/dist/cli-bundle/chunks/chunk-POG76WWZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-MI3346YW.js → chunk-QANSTTC7.js} +129 -170
- package/dist/cli-bundle/chunks/chunk-QANSTTC7.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-T6MOTLOJ.js → chunk-QJKL5PHS.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SBW7EQC4.js → chunk-QLZ643FM.js} +76 -13
- package/dist/cli-bundle/chunks/chunk-QLZ643FM.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-XKVHL3MB.js → chunk-QWRVBJ4D.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-R3EWPG4A.js +106 -0
- package/dist/cli-bundle/chunks/chunk-R3EWPG4A.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-R5U2VZ3K.js +344 -0
- package/dist/cli-bundle/chunks/chunk-R5U2VZ3K.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VFA5EIEN.js → chunk-R7QV7ICM.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-NPEYH6CE.js → chunk-RDV4ZFYS.js} +12 -10
- package/dist/cli-bundle/chunks/{chunk-NPEYH6CE.js.map → chunk-RDV4ZFYS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-K2L6FZBX.js → chunk-RJO3YAFM.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-YIC5NGXF.js → chunk-RMF7LMBS.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-YIC5NGXF.js.map → chunk-RMF7LMBS.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MRXAHR4B.js → chunk-RZJLNXFG.js} +50 -13
- package/dist/cli-bundle/chunks/chunk-RZJLNXFG.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-DJAGYYCQ.js → chunk-SC2HMDGB.js} +19 -3
- package/dist/cli-bundle/chunks/chunk-SC2HMDGB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-SGJB6PXA.js → chunk-SF3DT5HJ.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-SG74J6MV.js +604 -0
- package/dist/cli-bundle/chunks/chunk-SG74J6MV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-Q3K5XPAQ.js → chunk-SR3JOATZ.js} +18 -2
- package/dist/cli-bundle/chunks/chunk-SR3JOATZ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DUDLSQFG.js → chunk-SSKOQNMS.js} +14 -12
- package/dist/cli-bundle/chunks/{chunk-DUDLSQFG.js.map → chunk-SSKOQNMS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-UNNCT5QY.js → chunk-SZVB53Y3.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-JBW2S2C6.js → chunk-T44FMVRL.js} +613 -157
- package/dist/cli-bundle/chunks/chunk-T44FMVRL.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GFZB5CLP.js → chunk-T6PPNM7V.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UE7LK3RE.js → chunk-THAOZG4U.js} +9 -7
- package/dist/cli-bundle/chunks/chunk-THAOZG4U.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-IGBBTPM5.js → chunk-TOBGV45Y.js} +4 -4
- package/dist/cli-bundle/chunks/chunk-TOBGV45Y.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-W6IEJXNC.js → chunk-TVYYO5A7.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-TYHJDFYW.js +109 -0
- package/dist/cli-bundle/chunks/chunk-TYHJDFYW.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-DOASIOQR.js → chunk-UQLXSG72.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IDUTGRDM.js → chunk-URXVHN3L.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-URXVHN3L.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-7CHWLT2J.js → chunk-UVN66B3M.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-Q6JPYR7I.js → chunk-UX6SSO2I.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-JPWUZOMR.js → chunk-UZDQXNUB.js} +75 -20
- package/dist/cli-bundle/chunks/chunk-UZDQXNUB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OK7VSX3N.js → chunk-UZLJOEAC.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-4PSJVGRE.js → chunk-VDO2JMD4.js} +7 -7
- package/dist/cli-bundle/chunks/{chunk-IRJ6F23W.js → chunk-VQIHNHMJ.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-FQODDTE7.js → chunk-WUVEBQW6.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-FQODDTE7.js.map → chunk-WUVEBQW6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-Q4PSG2GV.js → chunk-WVA4DVNV.js} +5 -5
- package/dist/cli-bundle/chunks/{chunk-Q4PSG2GV.js.map → chunk-WVA4DVNV.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-4M6RZJXF.js → chunk-WWNL6WMH.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-WWNL6WMH.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-3KPNOZOH.js → chunk-X6K5XTTN.js} +78 -21
- package/dist/cli-bundle/chunks/chunk-X6K5XTTN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-G33XIMRT.js → chunk-XJF7CDNH.js} +17 -10
- package/dist/cli-bundle/chunks/{chunk-G33XIMRT.js.map → chunk-XJF7CDNH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-AR24KW26.js → chunk-YBT7O4KT.js} +17 -112
- package/dist/cli-bundle/chunks/chunk-YBT7O4KT.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CZA2DXCV.js → chunk-YQQNAKW3.js} +17 -105
- package/dist/cli-bundle/chunks/chunk-YQQNAKW3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OKPZDH43.js → chunk-YQWCZ5AC.js} +7 -5
- package/dist/cli-bundle/chunks/{chunk-OKPZDH43.js.map → chunk-YQWCZ5AC.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-LT5UWU7H.js → chunk-ZOJ3LR7O.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-3HSRP6T2.js → chunk-ZOY5K4D3.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-XXWDEQ6O.js → chunk-ZV2NTVMJ.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-UW6HCMP2.js → chunk-ZYPFOO3L.js} +9 -9
- package/dist/cli-bundle/chunks/close-O5QVZ6ET.js +12 -0
- package/dist/cli-bundle/chunks/{close-7NWA3GLA.js → close-QEMOYZN3.js} +5 -5
- package/dist/cli-bundle/chunks/close-many-SDA426VT.js +24 -0
- package/dist/cli-bundle/chunks/{close-many-YALQ7AXS.js → close-many-UTZANOCQ.js} +15 -14
- package/dist/cli-bundle/chunks/{comments-SQIQ5WYR.js → comments-LZN6FXXC.js} +7 -7
- package/dist/cli-bundle/chunks/comments-VBQ345ND.js +13 -0
- package/dist/cli-bundle/chunks/{copy-YDAMENCP.js → copy-DKTSSCK7.js} +4 -4
- package/dist/cli-bundle/chunks/copy-M7DDI6LS.js +9 -0
- package/dist/cli-bundle/chunks/{create-JSL6CXU3.js → create-GG4RBCGC.js} +11 -11
- package/dist/cli-bundle/chunks/create-JBC5KUW6.js +29 -0
- package/dist/cli-bundle/chunks/{delete-IGVOZEU2.js → delete-LCS3VPDH.js} +4 -4
- package/dist/cli-bundle/chunks/delete-MD7YXQLH.js +10 -0
- package/dist/cli-bundle/chunks/{deps-BQAXUQAK.js → deps-DELOO4TL.js} +6 -6
- package/dist/cli-bundle/chunks/{deps-CBPPSS6J.js → deps-FI4O6NQS.js} +6 -6
- package/dist/cli-bundle/chunks/docs-2UYBP5D6.js +14 -0
- package/dist/cli-bundle/chunks/{docs-NS2AZWCN.js → docs-6Z2MP526.js} +6 -6
- package/dist/cli-bundle/chunks/{files-XUUBQ76I.js → files-HEUGSJZL.js} +6 -6
- package/dist/cli-bundle/chunks/{files-PVWEPT5J.js → files-HKEAN5MA.js} +6 -6
- package/dist/cli-bundle/chunks/{focus-DHBHKK3E.js → focus-7SOUT5PZ.js} +5 -5
- package/dist/cli-bundle/chunks/focus-DRQ6FQH6.js +10 -0
- package/dist/cli-bundle/chunks/history-compact-65YVN5DB.js +17 -0
- package/dist/cli-bundle/chunks/{history-compact-3TNPYVFG.js → history-compact-7NDVP3PT.js} +7 -6
- package/dist/cli-bundle/chunks/{history-redact-KKFDICCF.js → history-redact-7YBL4XSG.js} +5 -4
- package/dist/cli-bundle/chunks/{history-redact-ELRL73XN.js → history-redact-IZGNJBU4.js} +5 -4
- package/dist/cli-bundle/chunks/{history-repair-J7WKZFAG.js → history-repair-7M4PYQUH.js} +8 -6
- package/dist/cli-bundle/chunks/history-repair-GNGETJLI.js +18 -0
- package/dist/cli-bundle/chunks/learnings-3YXDRWFT.js +13 -0
- package/dist/cli-bundle/chunks/{learnings-X4D6JCCG.js → learnings-ALC6IMNL.js} +7 -7
- package/dist/cli-bundle/chunks/notes-7JMLQ447.js +13 -0
- package/dist/cli-bundle/chunks/{notes-UQC6VS6N.js → notes-JFCLTC5C.js} +7 -7
- package/dist/cli-bundle/chunks/plan-KOIPWVOZ.js +26 -0
- package/dist/cli-bundle/chunks/{plan-5GKRBJJO.js → plan-T3XB3WTK.js} +12 -12
- package/dist/cli-bundle/chunks/{profile-5PQAPCLF.js → profile-OILJHKUW.js} +12 -11
- package/dist/cli-bundle/chunks/{profile-CW4BD3FO.js → profile-RJXA7PGS.js} +12 -11
- package/dist/cli-bundle/chunks/{register-list-query-PHIPDFP2.js → register-list-query-CFVG75P3.js} +30 -21
- package/dist/cli-bundle/chunks/{register-list-query-PHIPDFP2.js.map → register-list-query-CFVG75P3.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-list-query-HTDQE6VI.js → register-list-query-E7UVY4TN.js} +29 -20
- package/dist/cli-bundle/chunks/{register-list-query-HTDQE6VI.js.map → register-list-query-E7UVY4TN.js.map} +2 -2
- package/dist/cli-bundle/chunks/{register-mutation-BLEWM5I6.js → register-mutation-4VJTXBZW.js} +86 -32
- package/dist/cli-bundle/chunks/register-mutation-4VJTXBZW.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-OTYHR7J6.js → register-mutation-IQ55E25C.js} +78 -33
- package/dist/cli-bundle/chunks/register-mutation-IQ55E25C.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-AMCUFYEW.js → register-operations-AR7RMX4W.js} +42 -38
- package/dist/cli-bundle/chunks/register-operations-AR7RMX4W.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-operations-MRLHOZYR.js → register-operations-NOLZGORC.js} +41 -37
- package/dist/cli-bundle/chunks/register-operations-NOLZGORC.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-setup-ZVKTDL4G.js → register-setup-BB77VUEE.js} +17 -16
- package/dist/cli-bundle/chunks/{register-setup-ZVKTDL4G.js.map → register-setup-BB77VUEE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-N2FOSWAG.js → register-setup-EYZ7VTPZ.js} +15 -14
- package/dist/cli-bundle/chunks/{register-setup-N2FOSWAG.js.map → register-setup-EYZ7VTPZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/restore-L6IAGOD7.js +15 -0
- package/dist/cli-bundle/chunks/{restore-HEQAG6EK.js → restore-ZH65GZFB.js} +7 -6
- package/dist/cli-bundle/chunks/{schema-Q5DAWJ2S.js → schema-4ERWM5QJ.js} +7 -6
- package/dist/cli-bundle/chunks/{schema-MAXAIHEC.js → schema-55DL3Q52.js} +7 -6
- package/dist/cli-bundle/chunks/{update-DWFXXJKP.js → update-FW6FKDOP.js} +15 -15
- package/dist/cli-bundle/chunks/update-TJHSPRPT.js +23 -0
- package/dist/cli-bundle/chunks/update-many-NNALYQCN.js +35 -0
- package/dist/cli-bundle/chunks/update-many-PWXX5WHO.js +39 -0
- package/dist/cli-bundle/main.js +62 -59
- package/dist/cli-bundle/main.js.map +1 -1
- package/dist/cli-bundle/sdk-runtime.js +62 -59
- package/dist/cli-bundle/sdk-testing.js +8 -8
- package/dist/cli-bundle/sdk.js +327 -57
- package/dist/cli-bundle/sdk.js.map +4 -4
- package/dist/core/config/nested-settings.d.ts +2 -0
- package/dist/core/config/nested-settings.js +18 -2
- package/dist/core/config/nested-settings.js.map +1 -1
- package/dist/core/diagnostics/remediation.js +38 -2
- package/dist/core/diagnostics/remediation.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +1 -1
- package/dist/core/extensions/extension-types.js +2 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/item/id.d.ts +19 -2
- package/dist/core/item/id.js +27 -6
- package/dist/core/item/id.js.map +1 -1
- package/dist/core/item/parse.d.ts +7 -0
- package/dist/core/item/parse.js +48 -2
- package/dist/core/item/parse.js.map +1 -1
- package/dist/core/schema/item-types-file.d.ts +2 -2
- package/dist/core/schema/item-types-file.js +2 -2
- package/dist/core/schema/item-types-file.js.map +1 -1
- package/dist/core/schema/runtime-schema.d.ts +3 -3
- package/dist/core/schema/runtime-schema.js +2 -2
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/type-workflows.d.ts +2 -2
- package/dist/core/schema/type-workflows.js +2 -2
- package/dist/core/schema/type-workflows.js.map +1 -1
- package/dist/core/shared/constants.js +5 -2
- package/dist/core/shared/constants.js.map +1 -1
- package/dist/core/store/settings-validator.d.ts +4 -0
- package/dist/core/store/settings-validator.js +8 -2
- package/dist/core/store/settings-validator.js.map +1 -1
- package/dist/core/store/settings.js +8 -2
- package/dist/core/store/settings.js.map +1 -1
- package/dist/sdk/annotations.js +24 -2
- package/dist/sdk/annotations.js.map +1 -1
- package/dist/sdk/cli-bootstrap.d.ts +1 -1
- package/dist/sdk/cli-bootstrap.js +3 -3
- package/dist/sdk/cli-bootstrap.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-mutation-options.js +22 -2
- package/dist/sdk/cli-contracts/commander-mutation-options.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.js +3 -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 +17 -2
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +512 -0
- package/dist/sdk/cli-contracts/tool-option-contracts.js +21 -11
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +13 -3
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +2 -0
- package/dist/sdk/cli-contracts/tool-schema.js +14 -10
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -1
- package/dist/sdk/cli-contracts/typed-action-inputs.d.ts +69 -0
- package/dist/sdk/cli-contracts/typed-action-inputs.js +5 -0
- package/dist/sdk/cli-contracts/typed-action-inputs.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +4 -3
- package/dist/sdk/cli-contracts.js +5 -5
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/extension/describe.d.ts +1 -1
- package/dist/sdk/extension/describe.js +2 -2
- package/dist/sdk/extension/describe.js.map +1 -1
- package/dist/sdk/extension/install-runtime.js +5 -3
- package/dist/sdk/extension/install-runtime.js.map +1 -1
- package/dist/sdk/extension.d.ts +2 -2
- package/dist/sdk/extension.js +2 -2
- package/dist/sdk/extension.js.map +1 -1
- package/dist/sdk/governance/gc.d.ts +14 -1
- package/dist/sdk/governance/gc.js +38 -2
- package/dist/sdk/governance/gc.js.map +1 -1
- package/dist/sdk/governance/storage-integrity.d.ts +84 -0
- package/dist/sdk/governance/storage-integrity.js +240 -0
- package/dist/sdk/governance/storage-integrity.js.map +1 -0
- package/dist/sdk/governance/validate.d.ts +3 -1
- package/dist/sdk/governance/validate.js +56 -2
- package/dist/sdk/governance/validate.js.map +1 -1
- package/dist/sdk/history-read.d.ts +1 -1
- package/dist/sdk/history-read.js +2 -2
- package/dist/sdk/history-read.js.map +1 -1
- package/dist/sdk/history-repair.d.ts +36 -0
- package/dist/sdk/history-repair.js +69 -4
- package/dist/sdk/history-repair.js.map +1 -1
- package/dist/sdk/index.d.ts +5 -2
- package/dist/sdk/index.js +5 -2
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/init.js +3 -3
- package/dist/sdk/init.js.map +1 -1
- package/dist/sdk/item-transaction.d.ts +131 -0
- package/dist/sdk/item-transaction.js +280 -0
- package/dist/sdk/item-transaction.js.map +1 -0
- package/dist/sdk/merge/driver.d.ts +75 -0
- package/dist/sdk/merge/driver.js +166 -0
- package/dist/sdk/merge/driver.js.map +1 -0
- package/dist/sdk/merge/index.d.ts +11 -0
- package/dist/sdk/merge/index.js +15 -0
- package/dist/sdk/merge/index.js.map +1 -0
- package/dist/sdk/merge/install.d.ts +90 -0
- package/dist/sdk/merge/install.js +318 -0
- package/dist/sdk/merge/install.js.map +1 -0
- package/dist/sdk/merge/three-way.d.ts +126 -0
- package/dist/sdk/merge/three-way.js +545 -0
- package/dist/sdk/merge/three-way.js.map +1 -0
- package/dist/sdk/query/list.d.ts +19 -2
- package/dist/sdk/query/list.js +5 -2
- package/dist/sdk/query/list.js.map +1 -1
- package/dist/sdk/runtime.d.ts +17 -14
- package/dist/sdk/runtime.js +5 -5
- package/dist/sdk/runtime.js.map +1 -1
- package/dist/sdk/schema.d.ts +2 -2
- package/dist/sdk/schema.js +29 -2
- package/dist/sdk/schema.js.map +1 -1
- package/dist/sdk/stats.d.ts +1 -1
- package/dist/sdk/stats.js +2 -2
- package/dist/sdk/stats.js.map +1 -1
- package/dist/sdk/workspace-transaction-gc.d.ts +46 -0
- package/dist/sdk/workspace-transaction-gc.js +155 -0
- package/dist/sdk/workspace-transaction-gc.js.map +1 -0
- package/dist/sdk/workspace.d.ts +28 -4
- package/dist/sdk/workspace.js +61 -15
- package/dist/sdk/workspace.js.map +1 -1
- package/dist/types.d.ts +11 -7
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/docs/AGENT_GUIDE.md +58 -47
- package/docs/COMMANDS.md +7 -0
- package/docs/CONFIGURATION.md +2 -0
- package/docs/MERGE_SAFETY.md +99 -0
- package/docs/README.md +1 -0
- package/docs/SDK.md +56 -0
- package/marketplace.json +2 -2
- package/package.json +3 -2
- 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-codex/.codex-plugin/plugin.json +1 -1
- package/dist/cli-bundle/chunks/append-XUYF7NON.js +0 -11
- package/dist/cli-bundle/chunks/chunk-2XPDCXK5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-3EZZTFL2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-3KPNOZOH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-46Z6FAVP.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-4M6RZJXF.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6V4T4RD3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-A3GAQLBH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A4FVWFZY.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-A5EQPNV7.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AR24KW26.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BBGR4FKQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BDC4TW4B.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-BZKE2O5V.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-CZA2DXCV.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-D35WYXWC.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-DJAGYYCQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-EEECAV5M.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-H3YKUVDR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IDUTGRDM.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IGBBTPM5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-JBW2S2C6.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JPWUZOMR.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-KAE727L2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MI3346YW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MQOSMBWV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-MRXAHR4B.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-N2TEEOXJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ODEIDKGW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-P24ZU5QV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Q3K5XPAQ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-QFG4MB7P.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-RLLOZAM2.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RWAIRGBC.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SBW7EQC4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SVAWG7EE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-UE7LK3RE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VA3H7VVC.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-WCBB6VI3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-Y2VSGFT4.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-YG56M3NE.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZF52NVRT.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZUCBPXNA.js.map +0 -7
- package/dist/cli-bundle/chunks/close-ZZCDDWJT.js +0 -12
- package/dist/cli-bundle/chunks/close-many-QCZHFCON.js +0 -23
- package/dist/cli-bundle/chunks/comments-FMQNYPSZ.js +0 -13
- package/dist/cli-bundle/chunks/copy-GI3RCVZP.js +0 -9
- package/dist/cli-bundle/chunks/create-LXMLYJNM.js +0 -29
- package/dist/cli-bundle/chunks/delete-5DFAXJNI.js +0 -10
- package/dist/cli-bundle/chunks/docs-KCWPLQOV.js +0 -14
- package/dist/cli-bundle/chunks/focus-3EJVFI3D.js +0 -10
- package/dist/cli-bundle/chunks/history-compact-JHYVDYLW.js +0 -16
- package/dist/cli-bundle/chunks/history-repair-REMI7DDI.js +0 -16
- package/dist/cli-bundle/chunks/learnings-O6V5WDCV.js +0 -13
- package/dist/cli-bundle/chunks/notes-ZSZREWZA.js +0 -13
- package/dist/cli-bundle/chunks/plan-EZW2YDDY.js +0 -26
- package/dist/cli-bundle/chunks/register-mutation-BLEWM5I6.js.map +0 -7
- package/dist/cli-bundle/chunks/register-mutation-OTYHR7J6.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-AMCUFYEW.js.map +0 -1
- package/dist/cli-bundle/chunks/register-operations-MRLHOZYR.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-A55MLFAI.js +0 -14
- package/dist/cli-bundle/chunks/update-5DTSCWVF.js +0 -23
- package/dist/cli-bundle/chunks/update-many-6T4ZLZS7.js +0 -34
- package/dist/cli-bundle/chunks/update-many-MYRK6VBJ.js +0 -38
- /package/dist/cli-bundle/chunks/{append-MBXHNWSX.js.map → append-E6V54WOQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{append-XUYF7NON.js.map → append-NNJ3EFIT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YGEA4CLH.js.map → chunk-3MCTMJXI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-N7FCFJ76.js.map → chunk-3P7UJQOX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7B7IHMLH.js.map → chunk-3VY6MIEO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5S6IZXK7.js.map → chunk-4U4Z6AHI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UOIFZ66L.js.map → chunk-4XGJLADW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SUNZKVAH.js.map → chunk-5IZJWSDB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QQ77W23U.js.map → chunk-5NTE36LD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KGPLSHJD.js.map → chunk-6C2ZZX5Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q5NHJ6RO.js.map → chunk-6JUTHVQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-NTS2RKHN.js.map → chunk-6VIJ7UA5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XVB6BATY.js.map → chunk-72LQ4TKV.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KZ5AC6B5.js.map → chunk-7WCE6Y64.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VQOG2ETB.js.map → chunk-AF2CCM5U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EAV3P54W.js.map → chunk-DAQ45GCS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-RX53WHFI.js.map → chunk-EJDGV4GR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IXG5CMBR.js.map → chunk-FDHPAVVB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-V4QHAMI5.js.map → chunk-GROYI4RB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-77XFQRTD.js.map → chunk-GSJSM5BJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QYGK2XQ3.js.map → chunk-GTLCVJOE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VSQE43NO.js.map → chunk-GV2262OF.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-STBCBDKF.js.map → chunk-HCEBZNC3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-U6RYD446.js.map → chunk-HRW7GF6T.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XDWXPG2E.js.map → chunk-IAQE32BI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-66SRNEBK.js.map → chunk-IJNK6WW2.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AGEBQRBG.js.map → chunk-JAPE62Y5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UWAQI3B7.js.map → chunk-JGUKMMRS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UU6EP25G.js.map → chunk-JH2ZSLO3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GRDK25BN.js.map → chunk-JHJSFOAM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FQO5THHM.js.map → chunk-JM6YAXTR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-E7KBMWEF.js.map → chunk-JSLT7WVE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FIUTBFC6.js.map → chunk-K4CI6Y45.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IEMXESIS.js.map → chunk-KSPWRNVP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-BFJP4VYC.js.map → chunk-L7BH7IWU.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2UCG5H6B.js.map → chunk-LPEYZRUR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IR3GOO6E.js.map → chunk-NHT3F4WZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-6BNV3G6C.js.map → chunk-NLR32VFS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EI3UIMZM.js.map → chunk-OWXOPDHD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AQUNTB7G.js.map → chunk-PEQGTJ5Q.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-T6MOTLOJ.js.map → chunk-QJKL5PHS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XKVHL3MB.js.map → chunk-QWRVBJ4D.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-VFA5EIEN.js.map → chunk-R7QV7ICM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-K2L6FZBX.js.map → chunk-RJO3YAFM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SGJB6PXA.js.map → chunk-SF3DT5HJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UNNCT5QY.js.map → chunk-SZVB53Y3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-GFZB5CLP.js.map → chunk-T6PPNM7V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-W6IEJXNC.js.map → chunk-TVYYO5A7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-DOASIOQR.js.map → chunk-UQLXSG72.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-7CHWLT2J.js.map → chunk-UVN66B3M.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-Q6JPYR7I.js.map → chunk-UX6SSO2I.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OK7VSX3N.js.map → chunk-UZLJOEAC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-4PSJVGRE.js.map → chunk-VDO2JMD4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IRJ6F23W.js.map → chunk-VQIHNHMJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-LT5UWU7H.js.map → chunk-ZOJ3LR7O.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3HSRP6T2.js.map → chunk-ZOY5K4D3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-XXWDEQ6O.js.map → chunk-ZV2NTVMJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-UW6HCMP2.js.map → chunk-ZYPFOO3L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-ZZCDDWJT.js.map → close-O5QVZ6ET.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-7NWA3GLA.js.map → close-QEMOYZN3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-QCZHFCON.js.map → close-many-SDA426VT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-many-YALQ7AXS.js.map → close-many-UTZANOCQ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-SQIQ5WYR.js.map → comments-LZN6FXXC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{comments-FMQNYPSZ.js.map → comments-VBQ345ND.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-YDAMENCP.js.map → copy-DKTSSCK7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{copy-GI3RCVZP.js.map → copy-M7DDI6LS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-JSL6CXU3.js.map → create-GG4RBCGC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-LXMLYJNM.js.map → create-JBC5KUW6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-IGVOZEU2.js.map → delete-LCS3VPDH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{delete-5DFAXJNI.js.map → delete-MD7YXQLH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-BQAXUQAK.js.map → deps-DELOO4TL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{deps-CBPPSS6J.js.map → deps-FI4O6NQS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-KCWPLQOV.js.map → docs-2UYBP5D6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{docs-NS2AZWCN.js.map → docs-6Z2MP526.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-XUUBQ76I.js.map → files-HEUGSJZL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{files-PVWEPT5J.js.map → files-HKEAN5MA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-DHBHKK3E.js.map → focus-7SOUT5PZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{focus-3EJVFI3D.js.map → focus-DRQ6FQH6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-JHYVDYLW.js.map → history-compact-65YVN5DB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-compact-3TNPYVFG.js.map → history-compact-7NDVP3PT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-KKFDICCF.js.map → history-redact-7YBL4XSG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-ELRL73XN.js.map → history-redact-IZGNJBU4.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-J7WKZFAG.js.map → history-repair-7M4PYQUH.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-repair-REMI7DDI.js.map → history-repair-GNGETJLI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-O6V5WDCV.js.map → learnings-3YXDRWFT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{learnings-X4D6JCCG.js.map → learnings-ALC6IMNL.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-ZSZREWZA.js.map → notes-7JMLQ447.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{notes-UQC6VS6N.js.map → notes-JFCLTC5C.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-EZW2YDDY.js.map → plan-KOIPWVOZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{plan-5GKRBJJO.js.map → plan-T3XB3WTK.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-5PQAPCLF.js.map → profile-OILJHKUW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{profile-CW4BD3FO.js.map → profile-RJXA7PGS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-A55MLFAI.js.map → restore-L6IAGOD7.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-HEQAG6EK.js.map → restore-ZH65GZFB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-Q5DAWJ2S.js.map → schema-4ERWM5QJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{schema-MAXAIHEC.js.map → schema-55DL3Q52.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-DWFXXJKP.js.map → update-FW6FKDOP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-5DTSCWVF.js.map → update-TJHSPRPT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-6T4ZLZS7.js.map → update-many-NNALYQCN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-many-MYRK6VBJ.js.map → update-many-PWXX5WHO.js.map} +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
normalizeItemId
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-IY6VZ3IW.js";
|
|
4
4
|
import {
|
|
5
5
|
EXIT_CODE,
|
|
6
6
|
PmCliError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-7AVEY74G.js";
|
|
8
8
|
|
|
9
9
|
// dist/core/item/parent-reference-policy.js
|
|
10
10
|
!(function() {
|
|
@@ -107,4 +107,4 @@ export {
|
|
|
107
107
|
normalizeSprintReleaseFormatPolicy,
|
|
108
108
|
validateSprintOrReleaseValue
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=chunk-
|
|
110
|
+
//# sourceMappingURL=chunk-SF3DT5HJ.js.map
|
|
@@ -0,0 +1,604 @@
|
|
|
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]="ad0928de-27a9-5c52-9736-17eac79ff5da")}catch(e){}}();
|
|
3
|
+
import {
|
|
4
|
+
historyEntriesToRaw,
|
|
5
|
+
reanchorHistoryEntries
|
|
6
|
+
} from "./chunk-P7JTWYLH.js";
|
|
7
|
+
import {
|
|
8
|
+
canonicalDocument,
|
|
9
|
+
compareTimestampStrings,
|
|
10
|
+
findFirstMergeConflictMarker,
|
|
11
|
+
getActiveExtensionRegistrations,
|
|
12
|
+
nowIso,
|
|
13
|
+
parseItemDocument,
|
|
14
|
+
readSettings,
|
|
15
|
+
serializeItemDocument,
|
|
16
|
+
stableStringify
|
|
17
|
+
} from "./chunk-POG76WWZ.js";
|
|
18
|
+
import {
|
|
19
|
+
EXIT_CODE,
|
|
20
|
+
PmCliError,
|
|
21
|
+
collectRegisteredItemFieldNames,
|
|
22
|
+
getSettingsPath,
|
|
23
|
+
pathExists,
|
|
24
|
+
resolvePmRoot
|
|
25
|
+
} from "./chunk-HYW67VJ5.js";
|
|
26
|
+
|
|
27
|
+
// dist/sdk/merge/three-way.js
|
|
28
|
+
function parseHistoryJsonl(raw, label) {
|
|
29
|
+
const conflictMarker = findFirstMergeConflictMarker(raw);
|
|
30
|
+
if (conflictMarker) {
|
|
31
|
+
throw new PmCliError(`History merge input (${label}) contains unresolved conflict markers at line ${conflictMarker.line}. Merge drivers must receive clean per-side versions.`, EXIT_CODE.GENERIC_FAILURE);
|
|
32
|
+
}
|
|
33
|
+
const entries = [];
|
|
34
|
+
for (const [index, rawLine] of raw.split(/\r?\n/).entries()) {
|
|
35
|
+
const line = rawLine.trim();
|
|
36
|
+
if (!line) {
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
try {
|
|
40
|
+
const parsed = JSON.parse(line);
|
|
41
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
42
|
+
throw new TypeError("history entry must be an object");
|
|
43
|
+
}
|
|
44
|
+
entries.push(parsed);
|
|
45
|
+
} catch {
|
|
46
|
+
throw new PmCliError(`History merge input (${label}) contains invalid JSON at line ${index + 1}.`, EXIT_CODE.GENERIC_FAILURE);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return entries;
|
|
50
|
+
}
|
|
51
|
+
function historyEntryIdentity(entry) {
|
|
52
|
+
return stableStringify({
|
|
53
|
+
ts: entry.ts,
|
|
54
|
+
author: entry.author,
|
|
55
|
+
op: entry.op,
|
|
56
|
+
patch: entry.patch,
|
|
57
|
+
message: entry.message ?? null
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
function commonHistoryPrefixLength(ours, theirs) {
|
|
61
|
+
const limit = Math.min(ours.length, theirs.length);
|
|
62
|
+
let shared = 0;
|
|
63
|
+
while (shared < limit && historyEntryIdentity(ours[shared]) === historyEntryIdentity(theirs[shared])) {
|
|
64
|
+
shared += 1;
|
|
65
|
+
}
|
|
66
|
+
return shared;
|
|
67
|
+
}
|
|
68
|
+
function mergeHistoryStreams(baseRaw, oursRaw, theirsRaw) {
|
|
69
|
+
parseHistoryJsonl(baseRaw, "base");
|
|
70
|
+
const ours = parseHistoryJsonl(oursRaw, "ours");
|
|
71
|
+
const theirs = parseHistoryJsonl(theirsRaw, "theirs");
|
|
72
|
+
const shared = commonHistoryPrefixLength(ours, theirs);
|
|
73
|
+
if (shared === ours.length && shared === theirs.length) {
|
|
74
|
+
return {
|
|
75
|
+
merged: historyEntriesToRaw(ours),
|
|
76
|
+
strategy: "identical",
|
|
77
|
+
common_entries: shared,
|
|
78
|
+
entries_from_ours: 0,
|
|
79
|
+
entries_from_theirs: 0,
|
|
80
|
+
entries_total: ours.length,
|
|
81
|
+
reanchored: false
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
if (shared === theirs.length) {
|
|
85
|
+
return {
|
|
86
|
+
merged: historyEntriesToRaw(ours),
|
|
87
|
+
strategy: "fast_forward_ours",
|
|
88
|
+
common_entries: shared,
|
|
89
|
+
entries_from_ours: ours.length - shared,
|
|
90
|
+
entries_from_theirs: 0,
|
|
91
|
+
entries_total: ours.length,
|
|
92
|
+
reanchored: false
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
if (shared === ours.length) {
|
|
96
|
+
return {
|
|
97
|
+
merged: historyEntriesToRaw(theirs),
|
|
98
|
+
strategy: "fast_forward_theirs",
|
|
99
|
+
common_entries: shared,
|
|
100
|
+
entries_from_ours: 0,
|
|
101
|
+
entries_from_theirs: theirs.length - shared,
|
|
102
|
+
entries_total: theirs.length,
|
|
103
|
+
reanchored: false
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
const oursSuffix = ours.slice(shared);
|
|
107
|
+
const seenIdentities = new Set(oursSuffix.map(historyEntryIdentity));
|
|
108
|
+
const theirsSuffix = theirs.slice(shared).filter((entry) => !seenIdentities.has(historyEntryIdentity(entry)));
|
|
109
|
+
const mergedSuffix = [...oursSuffix, ...theirsSuffix].sort((left, right) => {
|
|
110
|
+
const byTs = compareTimestampStrings(left.ts, right.ts);
|
|
111
|
+
if (byTs !== 0) {
|
|
112
|
+
return byTs;
|
|
113
|
+
}
|
|
114
|
+
const leftFromOurs = seenIdentities.has(historyEntryIdentity(left));
|
|
115
|
+
const rightFromOurs = seenIdentities.has(historyEntryIdentity(right));
|
|
116
|
+
if (leftFromOurs !== rightFromOurs) {
|
|
117
|
+
return Number(rightFromOurs) - Number(leftFromOurs);
|
|
118
|
+
}
|
|
119
|
+
return historyEntryIdentity(left).localeCompare(historyEntryIdentity(right));
|
|
120
|
+
});
|
|
121
|
+
const reanchored = reanchorHistoryEntries([
|
|
122
|
+
...ours.slice(0, shared),
|
|
123
|
+
...mergedSuffix
|
|
124
|
+
]);
|
|
125
|
+
return {
|
|
126
|
+
merged: historyEntriesToRaw(reanchored.entries),
|
|
127
|
+
strategy: "union_reanchor",
|
|
128
|
+
common_entries: shared,
|
|
129
|
+
entries_from_ours: oursSuffix.length,
|
|
130
|
+
entries_from_theirs: theirsSuffix.length,
|
|
131
|
+
entries_total: reanchored.entries.length,
|
|
132
|
+
reanchored: true
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function parseRelationshipJsonl(raw, label) {
|
|
136
|
+
const conflictMarker = findFirstMergeConflictMarker(raw);
|
|
137
|
+
if (conflictMarker) {
|
|
138
|
+
throw new PmCliError(`Relationship merge input (${label}) contains unresolved conflict markers at line ${conflictMarker.line}. Merge drivers must receive clean per-side versions.`, EXIT_CODE.GENERIC_FAILURE);
|
|
139
|
+
}
|
|
140
|
+
const events = [];
|
|
141
|
+
for (const [index, rawLine] of raw.split(/\r?\n/).entries()) {
|
|
142
|
+
const line = rawLine.trim();
|
|
143
|
+
if (!line) {
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
let parsed;
|
|
147
|
+
try {
|
|
148
|
+
parsed = JSON.parse(line);
|
|
149
|
+
} catch {
|
|
150
|
+
throw new PmCliError(`Relationship merge input (${label}) contains invalid JSON at line ${index + 1}.`, EXIT_CODE.GENERIC_FAILURE);
|
|
151
|
+
}
|
|
152
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed) || typeof parsed.eventId !== "string" || typeof parsed.sequence !== "number") {
|
|
153
|
+
throw new PmCliError(`Relationship merge input (${label}) line ${index + 1} is not a relationship event (eventId + sequence required).`, EXIT_CODE.GENERIC_FAILURE);
|
|
154
|
+
}
|
|
155
|
+
events.push(parsed);
|
|
156
|
+
}
|
|
157
|
+
return events;
|
|
158
|
+
}
|
|
159
|
+
function relationshipEventsToRaw(events) {
|
|
160
|
+
return events.length === 0 ? "" : `${events.map((event) => JSON.stringify(event)).join("\n")}
|
|
161
|
+
`;
|
|
162
|
+
}
|
|
163
|
+
function renumberRelationshipEvents(events) {
|
|
164
|
+
return events.map((event, index) => ({ ...event, sequence: index + 1 }));
|
|
165
|
+
}
|
|
166
|
+
function mergeRelationshipEventStreams(baseRaw, oursRaw, theirsRaw) {
|
|
167
|
+
parseRelationshipJsonl(baseRaw, "base");
|
|
168
|
+
const ours = parseRelationshipJsonl(oursRaw, "ours");
|
|
169
|
+
const theirs = parseRelationshipJsonl(theirsRaw, "theirs");
|
|
170
|
+
const limit = Math.min(ours.length, theirs.length);
|
|
171
|
+
let shared = 0;
|
|
172
|
+
while (shared < limit && ours[shared].eventId === theirs[shared].eventId) {
|
|
173
|
+
shared += 1;
|
|
174
|
+
}
|
|
175
|
+
if (shared === ours.length && shared === theirs.length) {
|
|
176
|
+
return {
|
|
177
|
+
merged: relationshipEventsToRaw(ours),
|
|
178
|
+
strategy: "identical",
|
|
179
|
+
common_entries: shared,
|
|
180
|
+
entries_from_ours: 0,
|
|
181
|
+
entries_from_theirs: 0,
|
|
182
|
+
entries_total: ours.length,
|
|
183
|
+
reanchored: false
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
if (shared === theirs.length) {
|
|
187
|
+
return {
|
|
188
|
+
merged: relationshipEventsToRaw(ours),
|
|
189
|
+
strategy: "fast_forward_ours",
|
|
190
|
+
common_entries: shared,
|
|
191
|
+
entries_from_ours: ours.length - shared,
|
|
192
|
+
entries_from_theirs: 0,
|
|
193
|
+
entries_total: ours.length,
|
|
194
|
+
reanchored: false
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (shared === ours.length) {
|
|
198
|
+
return {
|
|
199
|
+
merged: relationshipEventsToRaw(theirs),
|
|
200
|
+
strategy: "fast_forward_theirs",
|
|
201
|
+
common_entries: shared,
|
|
202
|
+
entries_from_ours: 0,
|
|
203
|
+
entries_from_theirs: theirs.length - shared,
|
|
204
|
+
entries_total: theirs.length,
|
|
205
|
+
reanchored: false
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
const oursSuffix = ours.slice(shared);
|
|
209
|
+
const oursEventIds = new Set(oursSuffix.map((event) => event.eventId));
|
|
210
|
+
const theirsSuffix = theirs.slice(shared).filter((event) => !oursEventIds.has(event.eventId));
|
|
211
|
+
const mergedSuffix = [...oursSuffix, ...theirsSuffix].sort((left, right) => {
|
|
212
|
+
if (left.timestamp !== void 0 && right.timestamp !== void 0) {
|
|
213
|
+
const byTs = compareTimestampStrings(left.timestamp, right.timestamp);
|
|
214
|
+
if (byTs !== 0) {
|
|
215
|
+
return byTs;
|
|
216
|
+
}
|
|
217
|
+
} else if (left.timestamp === void 0 && right.timestamp !== void 0) {
|
|
218
|
+
return 1;
|
|
219
|
+
} else if (left.timestamp !== void 0) {
|
|
220
|
+
return -1;
|
|
221
|
+
}
|
|
222
|
+
const leftFromOurs = oursEventIds.has(left.eventId);
|
|
223
|
+
const rightFromOurs = oursEventIds.has(right.eventId);
|
|
224
|
+
if (leftFromOurs !== rightFromOurs) {
|
|
225
|
+
return Number(rightFromOurs) - Number(leftFromOurs);
|
|
226
|
+
}
|
|
227
|
+
return 0;
|
|
228
|
+
});
|
|
229
|
+
const merged = renumberRelationshipEvents([
|
|
230
|
+
...ours.slice(0, shared),
|
|
231
|
+
...mergedSuffix
|
|
232
|
+
]);
|
|
233
|
+
return {
|
|
234
|
+
merged: relationshipEventsToRaw(merged),
|
|
235
|
+
strategy: "union_reanchor",
|
|
236
|
+
common_entries: shared,
|
|
237
|
+
entries_from_ours: oursSuffix.length,
|
|
238
|
+
entries_from_theirs: theirsSuffix.length,
|
|
239
|
+
entries_total: merged.length,
|
|
240
|
+
reanchored: true
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
var ITEM_UNION_COLLECTION_FIELDS = [
|
|
244
|
+
"tags",
|
|
245
|
+
"dependencies",
|
|
246
|
+
"comments",
|
|
247
|
+
"notes",
|
|
248
|
+
"learnings",
|
|
249
|
+
"files",
|
|
250
|
+
"tests",
|
|
251
|
+
"test_runs",
|
|
252
|
+
"docs",
|
|
253
|
+
"reminders",
|
|
254
|
+
"events"
|
|
255
|
+
];
|
|
256
|
+
var ITEM_LATEST_TIMESTAMP_FIELDS = ["updated_at"];
|
|
257
|
+
function jsonEquals(left, right) {
|
|
258
|
+
return stableStringify(left ?? null) === stableStringify(right ?? null);
|
|
259
|
+
}
|
|
260
|
+
function unionCollection(base, ours, theirs) {
|
|
261
|
+
const toEntries = (value) => Array.isArray(value) ? value : [];
|
|
262
|
+
const baseIds = new Set(toEntries(base).map((entry) => stableStringify(entry)));
|
|
263
|
+
const oursEntries = toEntries(ours);
|
|
264
|
+
const oursIds = new Set(oursEntries.map((entry) => stableStringify(entry)));
|
|
265
|
+
const theirsEntries = toEntries(theirs);
|
|
266
|
+
const theirsIds = new Set(theirsEntries.map((entry) => stableStringify(entry)));
|
|
267
|
+
const merged = oursEntries.filter((entry) => {
|
|
268
|
+
const identity = stableStringify(entry);
|
|
269
|
+
return !baseIds.has(identity) || theirsIds.has(identity);
|
|
270
|
+
});
|
|
271
|
+
for (const entry of theirsEntries) {
|
|
272
|
+
const identity = stableStringify(entry);
|
|
273
|
+
if (!oursIds.has(identity) && !baseIds.has(identity)) {
|
|
274
|
+
merged.push(entry);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
return merged;
|
|
278
|
+
}
|
|
279
|
+
function latestTimestamp(ours, theirs) {
|
|
280
|
+
return compareTimestampStrings(String(ours), String(theirs)) >= 0 ? ours : theirs;
|
|
281
|
+
}
|
|
282
|
+
function mergeScalarThreeWay(base, ours, theirs, preferred) {
|
|
283
|
+
if (jsonEquals(ours, theirs)) {
|
|
284
|
+
return { value: ours, from_theirs: false, conflict: false };
|
|
285
|
+
}
|
|
286
|
+
if (jsonEquals(base, ours)) {
|
|
287
|
+
return { value: theirs, from_theirs: true, conflict: false };
|
|
288
|
+
}
|
|
289
|
+
if (jsonEquals(base, theirs)) {
|
|
290
|
+
return { value: ours, from_theirs: false, conflict: false };
|
|
291
|
+
}
|
|
292
|
+
return {
|
|
293
|
+
value: preferred === "theirs" ? theirs : ours,
|
|
294
|
+
from_theirs: preferred === "theirs",
|
|
295
|
+
conflict: true
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
function toMetadataRecord(document) {
|
|
299
|
+
return { ...document.metadata };
|
|
300
|
+
}
|
|
301
|
+
function parseItemMergeSide(raw, label, options) {
|
|
302
|
+
try {
|
|
303
|
+
return canonicalDocument(parseItemDocument(raw, options), options);
|
|
304
|
+
} catch (error) {
|
|
305
|
+
throw new PmCliError(`Item merge input (${label}) is not a readable item document: ${String(error)}`, EXIT_CODE.GENERIC_FAILURE);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
function mergeItemMetadataRecords(baseRecord, oursRecord, theirsRecord, preferred) {
|
|
309
|
+
const unionFieldSet = new Set(ITEM_UNION_COLLECTION_FIELDS);
|
|
310
|
+
const latestFieldSet = new Set(ITEM_LATEST_TIMESTAMP_FIELDS);
|
|
311
|
+
const fieldNames = [
|
|
312
|
+
.../* @__PURE__ */ new Set([...Object.keys(oursRecord), ...Object.keys(theirsRecord)])
|
|
313
|
+
].sort((left, right) => left.localeCompare(right));
|
|
314
|
+
const accumulator = {
|
|
315
|
+
merged: {},
|
|
316
|
+
conflictFields: [],
|
|
317
|
+
fieldsFromTheirs: [],
|
|
318
|
+
unionFields: []
|
|
319
|
+
};
|
|
320
|
+
for (const field of fieldNames) {
|
|
321
|
+
const baseValue = baseRecord[field];
|
|
322
|
+
const oursValue = oursRecord[field];
|
|
323
|
+
const theirsValue = theirsRecord[field];
|
|
324
|
+
if (unionFieldSet.has(field)) {
|
|
325
|
+
const union = unionCollection(baseValue, oursValue, theirsValue);
|
|
326
|
+
accumulator.merged[field] = union;
|
|
327
|
+
if (!jsonEquals(union, oursValue)) {
|
|
328
|
+
accumulator.unionFields.push(field);
|
|
329
|
+
}
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
if (latestFieldSet.has(field)) {
|
|
333
|
+
accumulator.merged[field] = latestTimestamp(oursValue, theirsValue);
|
|
334
|
+
continue;
|
|
335
|
+
}
|
|
336
|
+
const outcome = mergeScalarThreeWay(baseValue, oursValue, theirsValue, preferred);
|
|
337
|
+
if (outcome.value !== void 0) {
|
|
338
|
+
accumulator.merged[field] = outcome.value;
|
|
339
|
+
}
|
|
340
|
+
if (outcome.conflict) {
|
|
341
|
+
accumulator.conflictFields.push(field);
|
|
342
|
+
} else if (outcome.from_theirs) {
|
|
343
|
+
accumulator.fieldsFromTheirs.push(field);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
return accumulator;
|
|
347
|
+
}
|
|
348
|
+
function mergeItemDocuments(baseRaw, oursRaw, theirsRaw, options = {}) {
|
|
349
|
+
const preferred = options.preferred ?? "ours";
|
|
350
|
+
const hasBase = baseRaw.trim().length > 0;
|
|
351
|
+
const ours = parseItemMergeSide(oursRaw, "ours", options);
|
|
352
|
+
const theirs = parseItemMergeSide(theirsRaw, "theirs", options);
|
|
353
|
+
const base = hasBase ? parseItemMergeSide(baseRaw, "base", options) : ours;
|
|
354
|
+
const baseRecord = hasBase ? toMetadataRecord(base) : {};
|
|
355
|
+
const oursRecord = toMetadataRecord(ours);
|
|
356
|
+
const theirsRecord = toMetadataRecord(theirs);
|
|
357
|
+
const { merged, conflictFields, fieldsFromTheirs, unionFields } = mergeItemMetadataRecords(baseRecord, oursRecord, theirsRecord, preferred);
|
|
358
|
+
const bodyOutcome = mergeScalarThreeWay(hasBase ? base.body : "", ours.body, theirs.body, preferred);
|
|
359
|
+
if (bodyOutcome.conflict) {
|
|
360
|
+
conflictFields.push("body");
|
|
361
|
+
} else if (bodyOutcome.from_theirs) {
|
|
362
|
+
fieldsFromTheirs.push("body");
|
|
363
|
+
}
|
|
364
|
+
const mergedRaw = serializeItemDocument({
|
|
365
|
+
metadata: merged,
|
|
366
|
+
body: bodyOutcome.value
|
|
367
|
+
}, options);
|
|
368
|
+
return {
|
|
369
|
+
merged: mergedRaw,
|
|
370
|
+
conflict_fields: conflictFields,
|
|
371
|
+
fields_from_theirs: fieldsFromTheirs,
|
|
372
|
+
union_fields: unionFields,
|
|
373
|
+
preferred
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
function isPlainObject(value) {
|
|
377
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
378
|
+
}
|
|
379
|
+
function parseJsonSide(raw, label) {
|
|
380
|
+
const conflictMarker = findFirstMergeConflictMarker(raw);
|
|
381
|
+
if (conflictMarker) {
|
|
382
|
+
throw new PmCliError(`JSON merge input (${label}) contains unresolved conflict markers at line ${conflictMarker.line}.`, EXIT_CODE.GENERIC_FAILURE);
|
|
383
|
+
}
|
|
384
|
+
if (raw.trim().length === 0) {
|
|
385
|
+
return void 0;
|
|
386
|
+
}
|
|
387
|
+
try {
|
|
388
|
+
return JSON.parse(raw);
|
|
389
|
+
} catch {
|
|
390
|
+
throw new PmCliError(`JSON merge input (${label}) is not valid JSON.`, EXIT_CODE.GENERIC_FAILURE);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
function mergeJsonValue(base, ours, theirs, preferred, pathPrefix, conflictPaths, pathsFromTheirs) {
|
|
394
|
+
if (jsonEquals(ours, theirs)) {
|
|
395
|
+
return ours;
|
|
396
|
+
}
|
|
397
|
+
if (isPlainObject(ours) && isPlainObject(theirs)) {
|
|
398
|
+
const baseObject = isPlainObject(base) ? base : {};
|
|
399
|
+
const merged = {};
|
|
400
|
+
const keys = [
|
|
401
|
+
.../* @__PURE__ */ new Set([...Object.keys(ours), ...Object.keys(theirs)])
|
|
402
|
+
].sort((left, right) => left.localeCompare(right));
|
|
403
|
+
for (const key of keys) {
|
|
404
|
+
const childPath = pathPrefix.length > 0 ? `${pathPrefix}.${key}` : key;
|
|
405
|
+
const child = mergeJsonKey(baseObject, ours, theirs, key, preferred, childPath, conflictPaths, pathsFromTheirs);
|
|
406
|
+
if (child !== void 0) {
|
|
407
|
+
merged[key] = child;
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
return merged;
|
|
411
|
+
}
|
|
412
|
+
const outcome = mergeScalarThreeWay(base, ours, theirs, preferred);
|
|
413
|
+
if (outcome.conflict) {
|
|
414
|
+
conflictPaths.push(pathPrefix);
|
|
415
|
+
} else if (outcome.from_theirs) {
|
|
416
|
+
pathsFromTheirs.push(pathPrefix);
|
|
417
|
+
}
|
|
418
|
+
return outcome.value;
|
|
419
|
+
}
|
|
420
|
+
function mergeJsonKey(base, ours, theirs, key, preferred, childPath, conflictPaths, pathsFromTheirs) {
|
|
421
|
+
const inOurs = Object.prototype.hasOwnProperty.call(ours, key);
|
|
422
|
+
const inTheirs = Object.prototype.hasOwnProperty.call(theirs, key);
|
|
423
|
+
const inBase = Object.prototype.hasOwnProperty.call(base, key);
|
|
424
|
+
if (inOurs && inTheirs) {
|
|
425
|
+
return mergeJsonValue(base[key], ours[key], theirs[key], preferred, childPath, conflictPaths, pathsFromTheirs);
|
|
426
|
+
}
|
|
427
|
+
if (inOurs) {
|
|
428
|
+
if (inBase && jsonEquals(base[key], ours[key])) {
|
|
429
|
+
pathsFromTheirs.push(childPath);
|
|
430
|
+
return void 0;
|
|
431
|
+
}
|
|
432
|
+
if (inBase) {
|
|
433
|
+
conflictPaths.push(childPath);
|
|
434
|
+
return preferred === "theirs" ? void 0 : ours[key];
|
|
435
|
+
}
|
|
436
|
+
return ours[key];
|
|
437
|
+
}
|
|
438
|
+
if (inBase && jsonEquals(base[key], theirs[key])) {
|
|
439
|
+
return void 0;
|
|
440
|
+
}
|
|
441
|
+
if (inBase) {
|
|
442
|
+
conflictPaths.push(childPath);
|
|
443
|
+
return preferred === "theirs" ? theirs[key] : void 0;
|
|
444
|
+
}
|
|
445
|
+
pathsFromTheirs.push(childPath);
|
|
446
|
+
return theirs[key];
|
|
447
|
+
}
|
|
448
|
+
function mergeJsonDocuments(baseRaw, oursRaw, theirsRaw, options = {}) {
|
|
449
|
+
const preferred = options.preferred ?? "ours";
|
|
450
|
+
const base = parseJsonSide(baseRaw, "base");
|
|
451
|
+
const ours = parseJsonSide(oursRaw, "ours");
|
|
452
|
+
const theirs = parseJsonSide(theirsRaw, "theirs");
|
|
453
|
+
const conflictPaths = [];
|
|
454
|
+
const pathsFromTheirs = [];
|
|
455
|
+
const merged = mergeJsonValue(base, ours, theirs, preferred, "", conflictPaths, pathsFromTheirs);
|
|
456
|
+
return {
|
|
457
|
+
merged: `${JSON.stringify(merged ?? null, null, 2)}
|
|
458
|
+
`,
|
|
459
|
+
conflict_paths: conflictPaths,
|
|
460
|
+
paths_from_theirs: pathsFromTheirs,
|
|
461
|
+
preferred
|
|
462
|
+
};
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
// dist/sdk/merge/driver.js
|
|
466
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
467
|
+
import path from "node:path";
|
|
468
|
+
var MERGE_DRIVER_ARTIFACT_VALUES = [
|
|
469
|
+
"item",
|
|
470
|
+
"history",
|
|
471
|
+
"relationship",
|
|
472
|
+
"json"
|
|
473
|
+
];
|
|
474
|
+
function resolveArtifact(value) {
|
|
475
|
+
const normalized = value.trim().toLowerCase();
|
|
476
|
+
if (MERGE_DRIVER_ARTIFACT_VALUES.includes(normalized)) {
|
|
477
|
+
return normalized;
|
|
478
|
+
}
|
|
479
|
+
throw new PmCliError(`Unknown merge artifact "${value}". Supported values: ${MERGE_DRIVER_ARTIFACT_VALUES.join(", ")}.`, EXIT_CODE.USAGE);
|
|
480
|
+
}
|
|
481
|
+
function resolvePreferredSide(value) {
|
|
482
|
+
if (value === void 0) {
|
|
483
|
+
return "ours";
|
|
484
|
+
}
|
|
485
|
+
const normalized = value.trim().toLowerCase();
|
|
486
|
+
if (normalized === "ours" || normalized === "theirs") {
|
|
487
|
+
return normalized;
|
|
488
|
+
}
|
|
489
|
+
throw new PmCliError(`Unknown --prefer value "${value}". Supported values: ours, theirs.`, EXIT_CODE.USAGE);
|
|
490
|
+
}
|
|
491
|
+
async function readSideFile(filePath, label) {
|
|
492
|
+
try {
|
|
493
|
+
return await readFile(filePath, "utf8");
|
|
494
|
+
} catch {
|
|
495
|
+
throw new PmCliError(`Cannot read merge ${label} file at ${filePath}.`, EXIT_CODE.NOT_FOUND);
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
async function loadOptionalSettings(global) {
|
|
499
|
+
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
500
|
+
if (!await pathExists(getSettingsPath(pmRoot))) {
|
|
501
|
+
return null;
|
|
502
|
+
}
|
|
503
|
+
return readSettings(pmRoot);
|
|
504
|
+
}
|
|
505
|
+
function itemFormatForPath(filePath, settings) {
|
|
506
|
+
if (filePath.endsWith(".md")) {
|
|
507
|
+
return "json_markdown";
|
|
508
|
+
}
|
|
509
|
+
if (filePath.endsWith(".toon")) {
|
|
510
|
+
return "toon";
|
|
511
|
+
}
|
|
512
|
+
return settings?.item_format ?? "toon";
|
|
513
|
+
}
|
|
514
|
+
async function runMergeDriver(options, global) {
|
|
515
|
+
const artifact = resolveArtifact(options.artifact);
|
|
516
|
+
const preferred = resolvePreferredSide(options.prefer);
|
|
517
|
+
const outputPath = path.resolve(options.outputPath ?? options.oursPath);
|
|
518
|
+
const [baseRaw, oursRaw, theirsRaw] = await Promise.all([
|
|
519
|
+
readSideFile(options.basePath, "base"),
|
|
520
|
+
readSideFile(options.oursPath, "ours"),
|
|
521
|
+
readSideFile(options.theirsPath, "theirs")
|
|
522
|
+
]);
|
|
523
|
+
let merged;
|
|
524
|
+
const conflicts = [];
|
|
525
|
+
const result = {};
|
|
526
|
+
if (artifact === "history") {
|
|
527
|
+
const historyMerge = mergeHistoryStreams(baseRaw, oursRaw, theirsRaw);
|
|
528
|
+
merged = historyMerge.merged;
|
|
529
|
+
result.history = {
|
|
530
|
+
strategy: historyMerge.strategy,
|
|
531
|
+
common_entries: historyMerge.common_entries,
|
|
532
|
+
entries_from_ours: historyMerge.entries_from_ours,
|
|
533
|
+
entries_from_theirs: historyMerge.entries_from_theirs,
|
|
534
|
+
entries_total: historyMerge.entries_total,
|
|
535
|
+
reanchored: historyMerge.reanchored
|
|
536
|
+
};
|
|
537
|
+
} else if (artifact === "relationship") {
|
|
538
|
+
const relationshipMerge = mergeRelationshipEventStreams(baseRaw, oursRaw, theirsRaw);
|
|
539
|
+
merged = relationshipMerge.merged;
|
|
540
|
+
result.relationship = {
|
|
541
|
+
strategy: relationshipMerge.strategy,
|
|
542
|
+
common_entries: relationshipMerge.common_entries,
|
|
543
|
+
entries_from_ours: relationshipMerge.entries_from_ours,
|
|
544
|
+
entries_from_theirs: relationshipMerge.entries_from_theirs,
|
|
545
|
+
entries_total: relationshipMerge.entries_total,
|
|
546
|
+
reanchored: relationshipMerge.reanchored
|
|
547
|
+
};
|
|
548
|
+
} else if (artifact === "item") {
|
|
549
|
+
const settings = await loadOptionalSettings(global);
|
|
550
|
+
const itemMerge = mergeItemDocuments(baseRaw, oursRaw, theirsRaw, {
|
|
551
|
+
format: itemFormatForPath(options.itemPath ?? outputPath, settings),
|
|
552
|
+
schema: settings?.schema,
|
|
553
|
+
extensionFieldNames: collectRegisteredItemFieldNames(getActiveExtensionRegistrations()),
|
|
554
|
+
preferred
|
|
555
|
+
});
|
|
556
|
+
merged = itemMerge.merged;
|
|
557
|
+
conflicts.push(...itemMerge.conflict_fields);
|
|
558
|
+
result.item = {
|
|
559
|
+
fields_from_theirs: itemMerge.fields_from_theirs,
|
|
560
|
+
union_fields: itemMerge.union_fields
|
|
561
|
+
};
|
|
562
|
+
} else {
|
|
563
|
+
const jsonMerge = mergeJsonDocuments(baseRaw, oursRaw, theirsRaw, {
|
|
564
|
+
preferred
|
|
565
|
+
});
|
|
566
|
+
merged = jsonMerge.merged;
|
|
567
|
+
conflicts.push(...jsonMerge.conflict_paths);
|
|
568
|
+
result.json = {
|
|
569
|
+
paths_from_theirs: jsonMerge.paths_from_theirs
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
await writeFile(outputPath, merged, "utf8");
|
|
573
|
+
const guidance = [];
|
|
574
|
+
if (conflicts.length > 0) {
|
|
575
|
+
guidance.push(`Both branches changed ${conflicts.join(", ")}; the ${preferred} value was kept. Review the merged file, re-apply the losing change if needed, then "git add" it.`);
|
|
576
|
+
}
|
|
577
|
+
if (artifact === "history" && result.history?.reanchored) {
|
|
578
|
+
guidance.push('The merged history chain was re-anchored. Run "pm validate --check-history-drift" and "pm history-repair --all" after the merge to reconcile item state with merged history.');
|
|
579
|
+
}
|
|
580
|
+
return {
|
|
581
|
+
ok: conflicts.length === 0,
|
|
582
|
+
artifact,
|
|
583
|
+
output_path: outputPath,
|
|
584
|
+
preferred,
|
|
585
|
+
conflicts,
|
|
586
|
+
...result,
|
|
587
|
+
guidance,
|
|
588
|
+
generated_at: nowIso()
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
export {
|
|
593
|
+
mergeHistoryStreams,
|
|
594
|
+
mergeRelationshipEventStreams,
|
|
595
|
+
ITEM_UNION_COLLECTION_FIELDS,
|
|
596
|
+
ITEM_LATEST_TIMESTAMP_FIELDS,
|
|
597
|
+
mergeItemDocuments,
|
|
598
|
+
mergeJsonDocuments,
|
|
599
|
+
MERGE_DRIVER_ARTIFACT_VALUES,
|
|
600
|
+
runMergeDriver
|
|
601
|
+
};
|
|
602
|
+
//# sourceMappingURL=chunk-SG74J6MV.js.map
|
|
603
|
+
|
|
604
|
+
//# debugId=ad0928de-27a9-5c52-9736-17eac79ff5da
|