@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
|
@@ -27,6 +27,7 @@ interface PlannedChange {
|
|
|
27
27
|
interface PlannedItemDiff {
|
|
28
28
|
id: string;
|
|
29
29
|
changes: PlannedChange[];
|
|
30
|
+
warnings?: string[];
|
|
30
31
|
}
|
|
31
32
|
interface UpdateManyApplyResultRow {
|
|
32
33
|
id: string;
|
|
@@ -77,6 +78,10 @@ export interface UpdateManyResult {
|
|
|
77
78
|
rows?: UpdateManyApplyResultRow[] | UpdateManyRollbackResultRow[];
|
|
78
79
|
/** Value that configures or reports ids for this contract. */
|
|
79
80
|
ids: string[];
|
|
81
|
+
/** Explicitly requested --ids values that matched no tracked item. */
|
|
82
|
+
unmatched_ids?: string[];
|
|
83
|
+
/** Number of explicitly requested --ids values that matched no tracked item. */
|
|
84
|
+
unmatched_count?: number;
|
|
80
85
|
}
|
|
81
86
|
/** Implements run update many for the public runtime surface of this module. */
|
|
82
87
|
export declare const runUpdateMany: (options: UpdateManyCommandOptions, global: GlobalOptions) => Promise<UpdateManyResult>;
|
|
@@ -4,11 +4,11 @@
|
|
|
4
4
|
* Implements the pm update many 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]="c71478fc-d38f-5d1b-b0de-632e04f83a80")}catch(e){}}();
|
|
8
8
|
import { pathExists } from "../../core/fs/fs-utils.js";
|
|
9
9
|
import { createCheckpointId, loadMutationCheckpoint, restoreCheckpointItems, writeMutationCheckpoint, } from "../../core/checkpoint/mutation-checkpoint.js";
|
|
10
10
|
import { toItemRecord } from "../../core/item/item-record.js";
|
|
11
|
-
import { applyTagRemovals, mergeAdditiveTags, parseOptionalNonNegativeInteger, parseTags, } from "../../core/item/parse.js";
|
|
11
|
+
import { applyAcceptanceCriteriaMutations, applyTagRemovals, mergeAdditiveTags, parseOptionalNonNegativeInteger, parseTags, splitAcceptanceCriteria, } from "../../core/item/parse.js";
|
|
12
12
|
import { resolvePriority } from "../../core/item/priority.js";
|
|
13
13
|
import { normalizeStatusInput } from "../../core/item/status.js";
|
|
14
14
|
import { resolveItemTypeRegistry, resolveTypeName, } from "../../core/item/type-registry.js";
|
|
@@ -385,6 +385,26 @@ const buildTagMutationPlan = (row, update) => {
|
|
|
385
385
|
}
|
|
386
386
|
return { field: "tags", before: existing, after };
|
|
387
387
|
};
|
|
388
|
+
// Acceptance criteria support replace (--ac) plus additive --add-ac/--remove-ac
|
|
389
|
+
// (GH-612). Replicate runUpdate's resolution order so dry-run previews and
|
|
390
|
+
// apply-mode actionable detection account for additive criterion mutations (an
|
|
391
|
+
// --add-ac-only bulk update must NOT be treated as a no-op skip).
|
|
392
|
+
const buildAcceptanceCriteriaMutationPlan = (row, update) => {
|
|
393
|
+
const before = row.acceptance_criteria;
|
|
394
|
+
const base = update.acceptanceCriteria === undefined
|
|
395
|
+
? before
|
|
396
|
+
: String(update.acceptanceCriteria).trim();
|
|
397
|
+
const mutation = applyAcceptanceCriteriaMutations(splitAcceptanceCriteria(base), update.addAc, update.removeAc);
|
|
398
|
+
const warnings = mutation.unmatchedRemovals.map((criterion) => `remove_ac_unmatched:${criterion}`);
|
|
399
|
+
const after = mutation.criteria.join("; ");
|
|
400
|
+
if (areValuesEqual(before, after) || (before === undefined && after === "")) {
|
|
401
|
+
return { warnings };
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
change: { field: "acceptance_criteria", before, after },
|
|
405
|
+
warnings,
|
|
406
|
+
};
|
|
407
|
+
};
|
|
388
408
|
/** Adds changed scalar options to a planned item diff. */
|
|
389
409
|
const appendScalarMutationPlans = (changes, row, update) => {
|
|
390
410
|
for (const [optionKey, itemKey] of Object.entries(UPDATE_OPTION_TO_ITEM_KEY)) {
|
|
@@ -423,17 +443,29 @@ const appendUnsetMutationPlans = (changes, row, unset) => {
|
|
|
423
443
|
const buildPlannedItemDiff = (item, runtimeFieldRegistry, update = {}) => {
|
|
424
444
|
const row = toItemRecord(item);
|
|
425
445
|
const changes = [];
|
|
446
|
+
const warnings = [];
|
|
426
447
|
const tagPlan = buildTagMutationPlan(row, update);
|
|
427
448
|
if (tagPlan) {
|
|
428
449
|
changes.push(tagPlan);
|
|
429
450
|
}
|
|
430
451
|
appendScalarMutationPlans(changes, row, update);
|
|
452
|
+
if (updateArrayValueCount(update.addAc) > 0 ||
|
|
453
|
+
updateArrayValueCount(update.removeAc) > 0) {
|
|
454
|
+
const composed = buildAcceptanceCriteriaMutationPlan(row, update);
|
|
455
|
+
const withoutAc = changes.filter((change) => change.field !== "acceptance_criteria");
|
|
456
|
+
changes.splice(0, changes.length, ...withoutAc);
|
|
457
|
+
if (composed.change !== undefined) {
|
|
458
|
+
changes.push(composed.change);
|
|
459
|
+
}
|
|
460
|
+
warnings.push(...composed.warnings);
|
|
461
|
+
}
|
|
431
462
|
changes.push(...buildCollectionMutationPlans(row, update));
|
|
432
463
|
appendRuntimeFieldMutationPlans(changes, row, update, runtimeFieldRegistry);
|
|
433
464
|
appendUnsetMutationPlans(changes, row, update.unset);
|
|
434
465
|
return {
|
|
435
466
|
id: item.id,
|
|
436
467
|
changes,
|
|
468
|
+
...(warnings.length > 0 ? { warnings } : {}),
|
|
437
469
|
};
|
|
438
470
|
};
|
|
439
471
|
/** Normalizes an optional list status against the runtime schema. */
|
|
@@ -541,6 +573,31 @@ const writeUpdateManyCheckpoint = async (params) => {
|
|
|
541
573
|
rollback_command: `pm update-many --rollback ${params.checkpointId}`,
|
|
542
574
|
};
|
|
543
575
|
};
|
|
576
|
+
// GH-596: an explicit --ids request naming IDs that do not exist must stay
|
|
577
|
+
// machine-detectable without client-side set differencing. The requested list
|
|
578
|
+
// is re-derived here (same CSV split as the list filter) and compared against
|
|
579
|
+
// the unfiltered storage corpus so pagination and additional query filters do
|
|
580
|
+
// not misclassify existing items as nonexistent.
|
|
581
|
+
const collectUnmatchedRequestedIds = (rawIds, existingItems) => {
|
|
582
|
+
if (rawIds == null) {
|
|
583
|
+
return undefined;
|
|
584
|
+
}
|
|
585
|
+
const requested = [
|
|
586
|
+
...new Set(String(rawIds)
|
|
587
|
+
.split(",")
|
|
588
|
+
.map((entry) => entry.trim())
|
|
589
|
+
.filter((entry) => entry.length > 0)),
|
|
590
|
+
];
|
|
591
|
+
const existing = new Set(existingItems.map((item) => item.id));
|
|
592
|
+
return requested.filter((id) => !existing.has(id));
|
|
593
|
+
};
|
|
594
|
+
/** Builds the shared unmatched-id envelope fields for one prepared plan. */
|
|
595
|
+
const buildUnmatchedIdFields = (plan) => plan.unmatchedIds === undefined
|
|
596
|
+
? {}
|
|
597
|
+
: {
|
|
598
|
+
unmatched_ids: plan.unmatchedIds,
|
|
599
|
+
unmatched_count: plan.unmatchedIds.length,
|
|
600
|
+
};
|
|
544
601
|
/** Loads tracker settings and runtime registries for update-many execution. */
|
|
545
602
|
const loadUpdateManyRuntimeContext = async (global) => {
|
|
546
603
|
const pmRoot = resolvePmRoot(process.cwd(), global.path);
|
|
@@ -585,12 +642,20 @@ const buildUpdateManyPlan = async (params) => {
|
|
|
585
642
|
full: true,
|
|
586
643
|
}, params.global);
|
|
587
644
|
const planned = listed.items.map((item) => buildPlannedItemDiff(item, params.runtime.runtimeFieldRegistry, params.options.update));
|
|
645
|
+
const existenceItems = params.options.list?.ids == null
|
|
646
|
+
? []
|
|
647
|
+
: (await runList(undefined, {
|
|
648
|
+
ids: params.options.list.ids,
|
|
649
|
+
noTruncate: true,
|
|
650
|
+
full: true,
|
|
651
|
+
}, params.global)).items;
|
|
588
652
|
return {
|
|
589
653
|
listed,
|
|
590
654
|
planned,
|
|
591
655
|
actionable: planned.filter((row) => row.changes.length > 0),
|
|
592
656
|
updateSummary: params.updateSummary,
|
|
593
657
|
statusFilter,
|
|
658
|
+
unmatchedIds: collectUnmatchedRequestedIds(params.options.list?.ids, existenceItems),
|
|
594
659
|
};
|
|
595
660
|
};
|
|
596
661
|
/** Builds the non-mutating preview response for a prepared update-many plan. */
|
|
@@ -602,6 +667,7 @@ const buildUpdateManyDryRunResult = (plan) => ({
|
|
|
602
667
|
planned_update_options: plan.updateSummary,
|
|
603
668
|
item_plans: plan.planned,
|
|
604
669
|
ids: [],
|
|
670
|
+
...buildUnmatchedIdFields(plan),
|
|
605
671
|
});
|
|
606
672
|
/** Builds the apply response for a plan whose rows are all already current. */
|
|
607
673
|
const buildUpdateManyNoopResult = (plan) => ({
|
|
@@ -616,18 +682,26 @@ const buildUpdateManyNoopResult = (plan) => ({
|
|
|
616
682
|
rows: plan.planned.map((row) => ({
|
|
617
683
|
id: row.id,
|
|
618
684
|
status: "skipped",
|
|
685
|
+
...(row.warnings ? { warnings: row.warnings } : {}),
|
|
619
686
|
})),
|
|
620
687
|
ids: [],
|
|
688
|
+
...buildUnmatchedIdFields(plan),
|
|
621
689
|
});
|
|
622
690
|
/** Applies planned item updates independently while preserving per-row failures. */
|
|
623
691
|
const applyUpdateManyRows = async (params) => {
|
|
624
692
|
const rows = [];
|
|
625
693
|
const updatedIds = [];
|
|
626
694
|
const updateMessage = params.options.update.message ?? `update-many apply ${params.checkpointId}`;
|
|
627
|
-
const
|
|
695
|
+
const plannedById = new Map(params.plans.map((row) => [row.id, row]));
|
|
696
|
+
const actionableById = new Set(params.plans.filter((row) => row.changes.length > 0).map((row) => row.id));
|
|
628
697
|
for (const item of params.items) {
|
|
629
698
|
if (!actionableById.has(item.id)) {
|
|
630
|
-
|
|
699
|
+
const warnings = plannedById.get(item.id)?.warnings;
|
|
700
|
+
rows.push({
|
|
701
|
+
id: item.id,
|
|
702
|
+
status: "skipped",
|
|
703
|
+
...(warnings ? { warnings } : {}),
|
|
704
|
+
});
|
|
631
705
|
continue;
|
|
632
706
|
}
|
|
633
707
|
try {
|
|
@@ -679,7 +753,7 @@ const applyUpdateManyPlan = async (params) => {
|
|
|
679
753
|
});
|
|
680
754
|
const applied = await applyUpdateManyRows({
|
|
681
755
|
items: params.plan.listed.items,
|
|
682
|
-
|
|
756
|
+
plans: params.plan.planned,
|
|
683
757
|
options: params.options,
|
|
684
758
|
global: params.global,
|
|
685
759
|
checkpointId,
|
|
@@ -698,6 +772,7 @@ const applyUpdateManyPlan = async (params) => {
|
|
|
698
772
|
failed_count: countStatus("failed"),
|
|
699
773
|
rows: applied.rows,
|
|
700
774
|
ids: applied.updatedIds,
|
|
775
|
+
...buildUnmatchedIdFields(params.plan),
|
|
701
776
|
};
|
|
702
777
|
};
|
|
703
778
|
/** Implements run update many for the public runtime surface of this module. */
|
|
@@ -747,4 +822,4 @@ export const _testOnlyUpdateManyCommand = {
|
|
|
747
822
|
toComparablePreviewValue,
|
|
748
823
|
};
|
|
749
824
|
//# sourceMappingURL=update-many.js.map
|
|
750
|
-
//# debugId=
|
|
825
|
+
//# debugId=c71478fc-d38f-5d1b-b0de-632e04f83a80
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-many.js","sources":["cli/commands/update-many.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/update-many\n *\n * Implements the pm update many command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n createCheckpointId,\n loadMutationCheckpoint,\n restoreCheckpointItems,\n writeMutationCheckpoint,\n type MutationCheckpointItem,\n} from \"../../core/checkpoint/mutation-checkpoint.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport {\n applyTagRemovals,\n mergeAdditiveTags,\n parseOptionalNonNegativeInteger,\n parseTags,\n} from \"../../core/item/parse.js\";\nimport { resolvePriority } from \"../../core/item/priority.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport {\n resolveItemTypeRegistry,\n resolveTypeName,\n} from \"../../core/item/type-registry.js\";\nimport { collectRuntimeUpdateFieldValues } from \"../../core/schema/runtime-field-values.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport {\n resolveItemTypesFilePath,\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toErrorMessage } from \"../../core/shared/primitives.js\";\nimport { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { nowIso, resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport type { ItemStatus, PmSettings } from \"../../types/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { hasListFilters } from \"./list-filter-shared.js\";\nimport {\n runList,\n type ListFullResult,\n type ListOptions,\n type ListedItem,\n} from \"./list.js\";\nimport { runRestore } from \"./restore.js\";\nimport { runUpdate, type UpdateCommandOptions } from \"./update.js\";\n\nconst UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;\nconst UPDATE_MANY_CHECKPOINT_SUBDIR = \"update-many\";\n\nconst NON_MUTATION_UPDATE_OPTION_KEYS = new Set<PropertyKey>([\n \"author\",\n \"message\",\n \"force\",\n \"ownershipMetadataBypass\",\n \"ownershipDependencyBypass\",\n]);\n\nconst UPDATE_MANY_MUTATION_FLAG_GUIDANCE = [\n \"--status\",\n \"--priority\",\n \"--type\",\n \"--tags\",\n \"--description\",\n \"--body\",\n \"--deadline\",\n \"--estimate\",\n \"--assignee\",\n \"--dep\",\n \"--dep-remove\",\n \"--comment\",\n \"--note\",\n \"--learning\",\n \"--file\",\n \"--test\",\n \"--doc\",\n \"--replace-deps\",\n \"--replace-tests\",\n \"--unset\",\n \"--clear-*\",\n].join(\", \");\n\nconst UPDATE_OPTION_TO_ITEM_KEY: Partial<\n Record<keyof UpdateCommandOptions, string>\n> = {\n title: \"title\",\n description: \"description\",\n body: \"body\",\n status: \"status\",\n closeReason: \"close_reason\",\n priority: \"priority\",\n type: \"type\",\n deadline: \"deadline\",\n estimatedMinutes: \"estimated_minutes\",\n acceptanceCriteria: \"acceptance_criteria\",\n definitionOfReady: \"definition_of_ready\",\n order: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n whyNow: \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blockedBy: \"blocked_by\",\n blockedReason: \"blocked_reason\",\n unblockNote: \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n reproSteps: \"repro_steps\",\n resolution: \"resolution\",\n expectedResult: \"expected_result\",\n actualResult: \"actual_result\",\n affectedVersion: \"affected_version\",\n fixedVersion: \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customerImpact: \"customer_impact\",\n};\n\ninterface CollectionMutationPlanDefinition {\n field: string;\n addKey: keyof UpdateCommandOptions;\n removeKey?: keyof UpdateCommandOptions;\n clearKey: keyof UpdateCommandOptions;\n replaceKey?: keyof UpdateCommandOptions;\n}\n\nconst COLLECTION_MUTATION_PLAN_DEFINITIONS: CollectionMutationPlanDefinition[] =\n [\n {\n field: \"dependencies\",\n addKey: \"dep\",\n removeKey: \"depRemove\",\n clearKey: \"clearDeps\",\n replaceKey: \"replaceDeps\",\n },\n {\n field: \"comments\",\n addKey: \"comment\",\n clearKey: \"clearComments\",\n },\n {\n field: \"notes\",\n addKey: \"note\",\n clearKey: \"clearNotes\",\n },\n {\n field: \"learnings\",\n addKey: \"learning\",\n clearKey: \"clearLearnings\",\n },\n {\n field: \"files\",\n addKey: \"file\",\n clearKey: \"clearFiles\",\n },\n {\n field: \"tests\",\n addKey: \"test\",\n clearKey: \"clearTests\",\n replaceKey: \"replaceTests\",\n },\n {\n field: \"docs\",\n addKey: \"doc\",\n clearKey: \"clearDocs\",\n },\n {\n field: \"reminders\",\n addKey: \"reminder\",\n clearKey: \"clearReminders\",\n },\n {\n field: \"events\",\n addKey: \"event\",\n clearKey: \"clearEvents\",\n },\n {\n field: \"type_options\",\n addKey: \"typeOption\",\n clearKey: \"clearTypeOptions\",\n },\n ];\n\nconst UNSET_FIELD_ALIASES: Record<string, string> = {\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n deadline: \"deadline\",\n estimate: \"estimated_minutes\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n ac: \"acceptance_criteria\",\n definition_of_ready: \"definition_of_ready\",\n \"definition-of-ready\": \"definition_of_ready\",\n order: \"order\",\n rank: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n why_now: \"why_now\",\n \"why-now\": \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blocked_by: \"blocked_by\",\n \"blocked-by\": \"blocked_by\",\n blocked_reason: \"blocked_reason\",\n \"blocked-reason\": \"blocked_reason\",\n unblock_note: \"unblock_note\",\n \"unblock-note\": \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n repro_steps: \"repro_steps\",\n \"repro-steps\": \"repro_steps\",\n resolution: \"resolution\",\n expected_result: \"expected_result\",\n \"expected-result\": \"expected_result\",\n actual_result: \"actual_result\",\n \"actual-result\": \"actual_result\",\n affected_version: \"affected_version\",\n \"affected-version\": \"affected_version\",\n fixed_version: \"fixed_version\",\n \"fixed-version\": \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customer_impact: \"customer_impact\",\n \"customer-impact\": \"customer_impact\",\n type_options: \"type_options\",\n \"type-options\": \"type_options\",\n tags: \"tags\",\n};\n\ninterface UpdateManyCheckpoint {\n schema_version: number;\n id: string;\n created_at: string;\n author: string;\n status_filter: string | null;\n list_filters: Record<string, unknown>;\n update_options: Record<string, unknown>;\n items: MutationCheckpointItem[];\n}\n\n/** Documents the update many command options payload exchanged by command, SDK, and package integrations. */\nexport interface UpdateManyCommandOptions {\n /** Lifecycle state reported for status. */\n status?: string;\n /** Value that configures or reports list for this contract. */\n list: ListOptions;\n /** Value that configures or reports update for this contract. */\n update: UpdateCommandOptions;\n /** Value that configures or reports dry run for this contract. */\n dryRun?: boolean;\n /** Value that configures or reports rollback for this contract. */\n rollback?: string;\n /** Value that configures or reports checkpoint for this contract. */\n checkpoint?: boolean;\n}\n\ninterface PlannedChange {\n field: string;\n before: unknown;\n after: unknown;\n}\n\ninterface PlannedItemDiff {\n id: string;\n changes: PlannedChange[];\n}\n\ninterface UpdateManyApplyResultRow {\n id: string;\n status: \"updated\" | \"failed\" | \"skipped\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\ninterface UpdateManyRollbackResultRow {\n id: string;\n status: \"restored\" | \"failed\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\n/** Documents the update many result payload exchanged by command, SDK, and package integrations. */\nexport interface UpdateManyResult {\n /** Value that configures or reports mode for this contract. */\n mode: \"dry_run\" | \"apply\" | \"rollback\";\n /** Number of matched entries represented by this result. */\n matched_count: number;\n /** Value that configures or reports dry run for this contract. */\n dry_run: boolean;\n /** Value that configures or reports filters for this contract. */\n filters?: Record<string, unknown>;\n /** Inputs that customize the planned update operation. */\n planned_update_options?: Record<string, unknown>;\n /** Value that configures or reports item plans for this contract. */\n item_plans?: PlannedItemDiff[];\n /** Value that configures or reports checkpoint for this contract. */\n checkpoint?: {\n id: string;\n created_at: string;\n path: string;\n rollback_command: string;\n };\n /** Number of updated entries represented by this result. */\n updated_count?: number;\n /** Number of skipped entries represented by this result. */\n skipped_count?: number;\n /** Number of failed entries represented by this result. */\n failed_count?: number;\n /** Number of restored entries represented by this result. */\n restored_count?: number;\n /** Value that configures or reports rollback checkpoint id for this contract. */\n rollback_checkpoint_id?: string;\n /** Value that configures or reports rows for this contract. */\n rows?: UpdateManyApplyResultRow[] | UpdateManyRollbackResultRow[];\n /** Value that configures or reports ids for this contract. */\n ids: string[];\n}\n\n/** Removes execution-only options from the mutation summary persisted in checkpoints. */\nconst sanitizeUpdateOptionsForSummary = (\n options: UpdateCommandOptions,\n): Record<string, unknown> => {\n const summary: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options) as Array<\n [keyof UpdateCommandOptions, unknown]\n >) {\n if (NON_MUTATION_UPDATE_OPTION_KEYS.has(key)) {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n summary[key] = value;\n }\n return summary;\n};\n\n/** Reports whether an update-many request contains at least one mutation input. */\nconst hasAnyUpdateMutationInput = (options: UpdateCommandOptions): boolean => {\n return Object.keys(sanitizeUpdateOptionsForSummary(options)).length > 0;\n};\n\ntype PreviewValueNormalizer = (value: unknown) => unknown;\n\n/** Trims string preview values while preserving non-string inputs. */\nconst trimPreviewValue: PreviewValueNormalizer = (value) =>\n typeof value === \"string\" ? value.trim() : value;\n/** Converts integer-like preview values to their storage representation. */\nconst normalizeIntegerPreviewValue: PreviewValueNormalizer = (value) => {\n const trimmed = String(value).trim();\n const parsed = Number(trimmed);\n return Number.isInteger(parsed) ? parsed : trimmed;\n};\n/** Converts finite numeric preview values to their storage representation. */\nconst normalizeNumericPreviewValue: PreviewValueNormalizer = (value) => {\n const trimmed = String(value).trim();\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : trimmed;\n};\n/** Converts supported regression tokens to their boolean storage representation. */\nconst normalizeRegressionPreviewValue: PreviewValueNormalizer = (value) => {\n const normalized = String(value).trim().toLowerCase();\n const parsed = new Map<string, boolean>([\n [\"true\", true],\n [\"1\", true],\n [\"false\", false],\n [\"0\", false],\n ]).get(normalized);\n return parsed ?? trimPreviewValue(value);\n};\n\nconst PREVIEW_VALUE_NORMALIZERS: Partial<\n Record<keyof UpdateCommandOptions, PreviewValueNormalizer>\n> = {\n priority: normalizeIntegerPreviewValue,\n estimatedMinutes: normalizeNumericPreviewValue,\n order: normalizeNumericPreviewValue,\n rank: normalizeNumericPreviewValue,\n regression: normalizeRegressionPreviewValue,\n};\n\n/** Normalizes a CLI mutation value to the storage-shaped value used by previews. */\nconst toComparablePreviewValue = (\n optionKey: keyof UpdateCommandOptions,\n value: unknown,\n): unknown => {\n if (value === undefined) {\n return undefined;\n }\n return (PREVIEW_VALUE_NORMALIZERS[optionKey] ?? trimPreviewValue)(value);\n};\n\n/** Resolves user-facing unset aliases to stored metadata keys. */\nconst normalizeUnsetField = (rawField: string): string => {\n const normalized = rawField.trim().toLowerCase().replaceAll(\"-\", \"_\");\n return UNSET_FIELD_ALIASES[normalized] ?? normalized;\n};\n\n/** Compares preview values using the canonical stable serialization contract. */\nconst areValuesEqual = (left: unknown, right: unknown): boolean => {\n return stableValueEquals(left, right);\n};\n\n/** Supplies the storage-shaped empty value for an absent collection field. */\nconst normalizeCollectionBeforeValue = (\n field: string,\n value: unknown,\n): unknown => {\n if (value !== undefined) {\n return value;\n }\n if (field === \"type_options\") {\n return {};\n }\n return [];\n};\n\n/** Counts entries in list and type-option collection values. */\nconst collectionValueCount = (field: string, value: unknown): number => {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (field === \"type_options\" && value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).length;\n }\n return 0;\n};\n\n/** Resolves the dominant collection mutation using apply-path precedence. */\nconst resolveCollectionMutationOperation = (params: {\n replace: boolean;\n clear: boolean;\n removeCount: number;\n}): string => {\n if (params.replace) {\n return \"replace\";\n }\n if (params.clear) {\n return \"clear_or_reset\";\n }\n return params.removeCount > 0 ? \"merge_remove\" : \"append\";\n};\n\n/** Reads an optional definition key without indexing through undefined. */\nconst readOptionalUpdateValue = (\n update: UpdateCommandOptions,\n key: keyof UpdateCommandOptions | undefined,\n): unknown => (key === undefined ? undefined : update[key]);\n\n/** Counts array-shaped mutation inputs while treating other shapes as empty. */\nconst updateArrayValueCount = (value: unknown): number =>\n Array.isArray(value) ? value.length : 0;\n\n/** Builds one collection plan when its definition has an active mutation. */\nconst buildCollectionMutationPlan = (\n definition: CollectionMutationPlanDefinition,\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange | undefined => {\n const addValues = update[definition.addKey];\n const removeValues = readOptionalUpdateValue(update, definition.removeKey);\n const addCount = updateArrayValueCount(addValues);\n const removeCount = updateArrayValueCount(removeValues);\n const clear = update[definition.clearKey] === true;\n const replace =\n readOptionalUpdateValue(update, definition.replaceKey) === true;\n if (![clear, replace, addCount > 0, removeCount > 0].includes(true)) {\n return undefined;\n }\n const before = normalizeCollectionBeforeValue(\n definition.field,\n row[definition.field],\n );\n return {\n field: definition.field,\n before,\n after: {\n operation: resolveCollectionMutationOperation({\n replace,\n clear,\n removeCount,\n }),\n clear,\n replace,\n add_count: addCount,\n remove_count: removeCount,\n before_count: collectionValueCount(definition.field, before),\n },\n };\n};\n\n/** Builds collection mutation previews for every active collection option. */\nconst buildCollectionMutationPlans = (\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange[] => {\n const changes: PlannedChange[] = [];\n for (const definition of COLLECTION_MUTATION_PLAN_DEFINITIONS) {\n const plan = buildCollectionMutationPlan(definition, row, update);\n if (plan !== undefined) {\n changes.push(plan);\n }\n }\n return changes;\n};\n\n/** Keeps only string tags from an existing storage value. */\nconst normalizeExistingTags = (value: unknown): string[] => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((tag): tag is string => typeof tag === \"string\");\n};\n\n// Tags support three mutation modes that compose: --tags replaces, --add-tags\n// extends, --remove-tags prunes. Replicate runUpdate's resolution order so the\n// dry-run preview and the apply-mode actionable detection both account for\n// additive/subtractive tag mutations (a --add-tags-only update must NOT be\n// treated as a no-op skip).\nconst buildTagMutationPlan = (\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange | undefined => {\n if (\n ![\n update.tags !== undefined,\n updateArrayValueCount(update.addTags) > 0,\n updateArrayValueCount(update.removeTags) > 0,\n ].includes(true)\n ) {\n return undefined;\n }\n const existing = normalizeExistingTags(row.tags);\n const baseTags =\n update.tags === undefined ? existing : parseTags(update.tags);\n const withAdditions = mergeAdditiveTags(baseTags, update.addTags);\n const after = applyTagRemovals(withAdditions, update.removeTags)\n .slice()\n .sort((a, b) => a.localeCompare(b));\n const before = existing.slice().sort((a, b) => a.localeCompare(b));\n if (areValuesEqual(before, after)) {\n return undefined;\n }\n return { field: \"tags\", before: existing, after };\n};\n\n/** Adds changed scalar options to a planned item diff. */\nconst appendScalarMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): void => {\n for (const [optionKey, itemKey] of Object.entries(\n UPDATE_OPTION_TO_ITEM_KEY,\n ) as Array<[keyof UpdateCommandOptions, string]>) {\n const candidate = update[optionKey];\n if (candidate === undefined) {\n continue;\n }\n const before = row[itemKey];\n const after = toComparablePreviewValue(optionKey, candidate);\n if (!areValuesEqual(before, after)) {\n changes.push({ field: itemKey, before, after });\n }\n }\n};\n\n/** Adds changed runtime-schema fields to a planned item diff. */\nconst appendRuntimeFieldMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n): void => {\n const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(\n update as Record<string, unknown>,\n runtimeFieldRegistry,\n [\"update_many\"],\n );\n for (const [field, after] of Object.entries(runtimeFieldUpdates)) {\n const before = row[field];\n if (!areValuesEqual(before, after)) {\n changes.push({ field, before, after });\n }\n }\n};\n\n/** Adds present fields requested through unset options to a planned item diff. */\nconst appendUnsetMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n unset: string[] | undefined,\n): void => {\n for (const rawUnsetField of unset ?? []) {\n const field = normalizeUnsetField(rawUnsetField);\n const before = row[field];\n if (before !== undefined) {\n changes.push({ field, before, after: null });\n }\n }\n};\n\n/** Builds the complete storage-shaped mutation preview for one item. */\nconst buildPlannedItemDiff = (\n item: ListedItem,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n update: UpdateCommandOptions = {},\n): PlannedItemDiff => {\n const row = toItemRecord(item);\n const changes: PlannedChange[] = [];\n const tagPlan = buildTagMutationPlan(row, update);\n if (tagPlan) {\n changes.push(tagPlan);\n }\n appendScalarMutationPlans(changes, row, update);\n changes.push(...buildCollectionMutationPlans(row, update));\n appendRuntimeFieldMutationPlans(changes, row, update, runtimeFieldRegistry);\n appendUnsetMutationPlans(changes, row, update.unset);\n\n return {\n id: item.id,\n changes,\n };\n};\n\n/** Normalizes an optional list status against the runtime schema. */\nconst normalizeStatusFilter = (\n value: string | undefined,\n statusRegistry: RuntimeStatusRegistry,\n): ItemStatus | undefined => {\n if (value === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(value, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map(\n (definition) => definition.id,\n );\n throw new PmCliError(\n `Invalid --filter-status value \"${value}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n};\n\n/** Rejects an explicitly blank bulk ID filter before loading the corpus. */\nconst rejectBlankIdsFilter = (list: ListOptions | undefined): void => {\n if (list?.ids != null && String(list.ids).trim().length === 0) {\n throw new PmCliError(\n \"--ids requires at least one non-empty item ID\",\n EXIT_CODE.USAGE,\n );\n }\n};\n\n// GH-256: validate planned scalar enum/format fields up front so a `--dry-run`\n// preview rejects globally-invalid values exactly as apply would (true\n// preview==apply parity), and so apply itself fails fast before creating an\n// orphan checkpoint. Only VALUE/ENUM/FORMAT correctness is checked here — these\n// are invalid regardless of the matched item. Per-item governance and\n// workflow-transition rules stay in the apply path (runUpdate). Each field is\n// validated only when the caller actually provided it, reusing the exact same\n// resolvers and error messages runUpdate raises so single/bulk/dry-run stay\n// consistent.\ninterface PlannedUpdateValidationContext {\n update: UpdateCommandOptions;\n settings: PmSettings;\n statusRegistry: RuntimeStatusRegistry;\n pmRoot: string;\n}\n\ntype PlannedUpdateValidator = (context: PlannedUpdateValidationContext) => void;\n\nconst PLANNED_UPDATE_VALIDATORS: PlannedUpdateValidator[] = [\n ({ update }) => {\n if (update.priority !== undefined) {\n resolvePriority(update.priority);\n }\n },\n ({ update, settings, pmRoot }) => {\n if (update.type === undefined) {\n return;\n }\n const typeRegistry = resolveItemTypeRegistry(\n settings,\n getActiveExtensionRegistrations(),\n );\n if (!resolveTypeName(update.type, typeRegistry)) {\n throw new PmCliError(\n buildInvalidTypeError(\n update.type,\n typeRegistry.types,\n resolveItemTypesFilePath(pmRoot, settings.schema),\n ),\n EXIT_CODE.USAGE,\n );\n }\n },\n ({ update, statusRegistry }) => {\n if (\n update.status !== undefined &&\n !normalizeStatusInput(update.status, statusRegistry)\n ) {\n const allowedStatuses = statusRegistry.definitions.map(\n (definition) => definition.id,\n );\n throw new PmCliError(\n `Invalid --status value \"${update.status}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n },\n ({ update }) => {\n if (update.deadline !== undefined) {\n resolveIsoOrRelative(update.deadline, new Date(), \"deadline\");\n }\n },\n ({ update }) => {\n if (update.estimatedMinutes !== undefined) {\n parseOptionalNonNegativeInteger(\n update.estimatedMinutes,\n \"estimated-minutes\",\n );\n }\n },\n];\n\n/** Validates globally invalid mutation values before preview or checkpoint work. */\nconst assertPlannedUpdateValuesValid = (\n update: UpdateCommandOptions,\n settings: PmSettings,\n statusRegistry: RuntimeStatusRegistry,\n pmRoot: string,\n): void => {\n const context = { update, settings, statusRegistry, pmRoot };\n for (const validate of PLANNED_UPDATE_VALIDATORS) {\n validate(context);\n }\n};\n\n/** Restores every item captured by an update-many checkpoint. */\nconst runUpdateManyRollback = async (params: {\n pmRoot: string;\n rollbackId: string;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n}): Promise<UpdateManyResult> => {\n const checkpoint = await loadMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.rollbackId,\n UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n );\n const restoreMessage =\n params.options.update?.message ??\n `Rollback update-many checkpoint ${checkpoint.id}`;\n const rollback = await restoreCheckpointItems(\n checkpoint.items,\n (id, targetUpdatedAt) =>\n runRestore(\n id,\n targetUpdatedAt,\n {\n author: params.options.update?.author,\n message: restoreMessage,\n force: params.options.update?.force ?? true,\n },\n params.global,\n ),\n );\n return {\n mode: \"rollback\",\n matched_count: checkpoint.items.length,\n dry_run: false,\n rollback_checkpoint_id: checkpoint.id,\n checkpoint: {\n id: checkpoint.id,\n created_at: checkpoint.created_at,\n path: checkpoint.path,\n rollback_command: `pm update-many --rollback ${checkpoint.id}`,\n },\n restored_count: rollback.restored_ids.length,\n failed_count: rollback.failed_count,\n rows: rollback.rows,\n ids: rollback.restored_ids,\n };\n};\n\n/** Persists an apply checkpoint and returns its user-facing descriptor. */\nconst writeUpdateManyCheckpoint = async (params: {\n pmRoot: string;\n checkpointId: string;\n nowValue: string;\n options: UpdateManyCommandOptions;\n statusFilter: string | undefined;\n filters: Record<string, unknown>;\n updateSummary: Record<string, unknown>;\n checkpointItems: MutationCheckpointItem[];\n}): Promise<UpdateManyResult[\"checkpoint\"]> => {\n const checkpointPayload: UpdateManyCheckpoint = {\n schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n id: params.checkpointId,\n created_at: params.nowValue,\n author: resolveAuthor(params.options.update?.author, \"unknown\"),\n status_filter: params.statusFilter ?? null,\n list_filters: params.filters,\n update_options: params.updateSummary,\n items: params.checkpointItems,\n };\n const checkpointPath = await writeMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.checkpointId,\n checkpointPayload,\n );\n return {\n id: params.checkpointId,\n created_at: params.nowValue,\n path: checkpointPath,\n rollback_command: `pm update-many --rollback ${params.checkpointId}`,\n };\n};\n\ninterface UpdateManyRuntimeContext {\n pmRoot: string;\n settings: PmSettings;\n statusRegistry: RuntimeStatusRegistry;\n runtimeFieldRegistry: RuntimeFieldRegistry;\n}\n\ninterface UpdateManyPlan {\n listed: ListFullResult;\n planned: PlannedItemDiff[];\n actionable: PlannedItemDiff[];\n updateSummary: Record<string, unknown>;\n statusFilter: ItemStatus | undefined;\n}\n\n/** Loads tracker settings and runtime registries for update-many execution. */\nconst loadUpdateManyRuntimeContext = async (\n global: GlobalOptions,\n): Promise<UpdateManyRuntimeContext> => {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n return {\n pmRoot,\n settings,\n statusRegistry: resolveRuntimeStatusRegistry(settings.schema),\n runtimeFieldRegistry: resolveRuntimeFieldRegistry(settings.schema),\n };\n};\n\n/** Validates rollback exclusivity before restoring a checkpoint. */\nconst runRequestedUpdateManyRollback = (params: {\n runtime: UpdateManyRuntimeContext;\n rollbackId: string;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n updateSummary: Record<string, unknown>;\n}): Promise<UpdateManyResult> => {\n if (params.options.dryRun === true) {\n throw new PmCliError(\n \"--dry-run cannot be combined with --rollback\",\n EXIT_CODE.USAGE,\n );\n }\n if (hasListFilters(params.options.list, params.options.status)) {\n throw new PmCliError(\n \"Rollback mode does not accept filter options\",\n EXIT_CODE.USAGE,\n );\n }\n if (Object.keys(params.updateSummary).length > 0) {\n throw new PmCliError(\n \"Rollback mode does not accept update mutation flags\",\n EXIT_CODE.USAGE,\n );\n }\n return runUpdateManyRollback({\n pmRoot: params.runtime.pmRoot,\n rollbackId: params.rollbackId,\n options: params.options,\n global: params.global,\n });\n};\n\n/** Loads complete matching rows and derives their mutation previews. */\nconst buildUpdateManyPlan = async (params: {\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n runtime: UpdateManyRuntimeContext;\n updateSummary: Record<string, unknown>;\n}): Promise<UpdateManyPlan> => {\n const statusFilter = normalizeStatusFilter(\n params.options.status,\n params.runtime.statusRegistry,\n );\n const listed = await runList(\n statusFilter,\n {\n ...params.options.list,\n compact: undefined,\n brief: undefined,\n fields: undefined,\n includeBody: true,\n full: true,\n },\n params.global,\n );\n const planned = listed.items.map((item) =>\n buildPlannedItemDiff(\n item,\n params.runtime.runtimeFieldRegistry,\n params.options.update,\n ),\n );\n return {\n listed,\n planned,\n actionable: planned.filter((row) => row.changes.length > 0),\n updateSummary: params.updateSummary,\n statusFilter,\n };\n};\n\n/** Builds the non-mutating preview response for a prepared update-many plan. */\nconst buildUpdateManyDryRunResult = (\n plan: UpdateManyPlan,\n): UpdateManyResult => ({\n mode: \"dry_run\",\n matched_count: plan.listed.items.length,\n dry_run: true,\n filters: plan.listed.filters,\n planned_update_options: plan.updateSummary,\n item_plans: plan.planned,\n ids: [],\n});\n\n/** Builds the apply response for a plan whose rows are all already current. */\nconst buildUpdateManyNoopResult = (plan: UpdateManyPlan): UpdateManyResult => ({\n mode: \"apply\",\n matched_count: plan.listed.items.length,\n dry_run: false,\n filters: plan.listed.filters,\n planned_update_options: plan.updateSummary,\n updated_count: 0,\n skipped_count: plan.listed.items.length,\n failed_count: 0,\n rows: plan.planned.map((row) => ({\n id: row.id,\n status: \"skipped\" as const,\n })),\n ids: [],\n});\n\n/** Applies planned item updates independently while preserving per-row failures. */\nconst applyUpdateManyRows = async (params: {\n items: ListedItem[];\n actionable: PlannedItemDiff[];\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n checkpointId: string;\n}): Promise<{ rows: UpdateManyApplyResultRow[]; updatedIds: string[] }> => {\n const rows: UpdateManyApplyResultRow[] = [];\n const updatedIds: string[] = [];\n const updateMessage =\n params.options.update.message ?? `update-many apply ${params.checkpointId}`;\n const actionableById = new Set(params.actionable.map((row) => row.id));\n for (const item of params.items) {\n if (!actionableById.has(item.id)) {\n rows.push({ id: item.id, status: \"skipped\" });\n continue;\n }\n try {\n const result = await runUpdate(\n item.id,\n {\n ...params.options.update,\n message: updateMessage,\n runtimeFieldCommands: [\"update_many\"],\n },\n params.global,\n );\n rows.push({\n id: item.id,\n status: \"updated\",\n changed_fields: result.changed_fields,\n warnings: result.warnings,\n });\n updatedIds.push(item.id);\n } catch (error: unknown) {\n rows.push({\n id: item.id,\n status: \"failed\",\n error: toErrorMessage(error),\n });\n }\n }\n return { rows, updatedIds };\n};\n\n/** Applies a prepared plan, checkpointing actionable rows when requested. */\nconst applyUpdateManyPlan = async (params: {\n runtime: UpdateManyRuntimeContext;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n plan: UpdateManyPlan;\n}): Promise<UpdateManyResult> => {\n if (params.plan.actionable.length === 0) {\n return buildUpdateManyNoopResult(params.plan);\n }\n const nowValue = nowIso();\n const checkpointId = createCheckpointId(\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n nowValue,\n );\n const actionableById = new Set(params.plan.actionable.map((row) => row.id));\n const checkpointItems = params.plan.listed.items\n .filter((item) => actionableById.has(item.id))\n .map((item) => ({ id: item.id, target_updated_at: item.updated_at }));\n const checkpointInfo =\n params.options.checkpoint === false\n ? undefined\n : await writeUpdateManyCheckpoint({\n pmRoot: params.runtime.pmRoot,\n checkpointId,\n nowValue,\n options: params.options,\n statusFilter: params.plan.statusFilter,\n filters: params.plan.listed.filters,\n updateSummary: params.plan.updateSummary,\n checkpointItems,\n });\n const applied = await applyUpdateManyRows({\n items: params.plan.listed.items,\n actionable: params.plan.actionable,\n options: params.options,\n global: params.global,\n checkpointId,\n });\n /** Counts apply rows with one terminal status. */\n const countStatus = (status: UpdateManyApplyResultRow[\"status\"]): number =>\n applied.rows.filter((row) => row.status === status).length;\n return {\n mode: \"apply\",\n matched_count: params.plan.listed.items.length,\n dry_run: false,\n filters: params.plan.listed.filters,\n planned_update_options: params.plan.updateSummary,\n ...(checkpointInfo ? { checkpoint: checkpointInfo } : {}),\n updated_count: countStatus(\"updated\"),\n skipped_count: countStatus(\"skipped\"),\n failed_count: countStatus(\"failed\"),\n rows: applied.rows,\n ids: applied.updatedIds,\n };\n};\n\n/** Implements run update many for the public runtime surface of this module. */\nexport const runUpdateMany = async (\n options: UpdateManyCommandOptions,\n global: GlobalOptions,\n): Promise<UpdateManyResult> => {\n const runtime = await loadUpdateManyRuntimeContext(global);\n const rollbackId =\n typeof options.rollback === \"string\" ? options.rollback : undefined;\n const updateSummary = sanitizeUpdateOptionsForSummary(options.update);\n rejectBlankIdsFilter(options.list);\n if (rollbackId !== undefined) {\n return runRequestedUpdateManyRollback({\n runtime,\n rollbackId,\n options,\n global,\n updateSummary,\n });\n }\n if (!hasAnyUpdateMutationInput(options.update)) {\n throw new PmCliError(\n `No update-many mutation flags provided. Add at least one mutation flag (for example: ${UPDATE_MANY_MUTATION_FLAG_GUIDANCE}).`,\n EXIT_CODE.USAGE,\n );\n }\n assertPlannedUpdateValuesValid(\n options.update,\n runtime.settings,\n runtime.statusRegistry,\n runtime.pmRoot,\n );\n const plan = await buildUpdateManyPlan({\n options,\n global,\n runtime,\n updateSummary,\n });\n return options.dryRun === true\n ? buildUpdateManyDryRunResult(plan)\n : applyUpdateManyPlan({ runtime, options, global, plan });\n};\n\n/** Public contract for test only update many command, shared by SDK and presentation-layer consumers. */\nexport const _testOnlyUpdateManyCommand = {\n assertPlannedUpdateValuesValid,\n buildCollectionMutationPlans,\n buildPlannedItemDiff,\n buildTagMutationPlan,\n collectionValueCount,\n hasAnyUpdateMutationInput,\n hasListFilters,\n normalizeStatusFilter,\n normalizeCollectionBeforeValue,\n normalizeExistingTags,\n normalizeUnsetField,\n rejectBlankIdsFilter,\n sanitizeUpdateOptionsForSummary,\n toComparablePreviewValue,\n};\n"],"names":[],"mappings":"AAAA;;;;GAIG;;;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,+BAA+B,EAC/B,SAAS,GACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAG7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,OAAO,GAIR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAA6B,MAAM,aAAa,CAAC;AAEnE,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAChD,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAEpD,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAc;IAC3D,QAAQ;IACR,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,MAAM,kCAAkC,GAAG;IACzC,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,cAAc;IACd,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,gBAAgB;IAChB,iBAAiB;IACjB,SAAS;IACT,WAAW;CACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,yBAAyB,GAE3B;IACF,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,mBAAmB;IACrC,kBAAkB,EAAE,qBAAqB;IACzC,iBAAiB,EAAE,qBAAqB;IACxC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,YAAY;IACvB,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;CAClC,CAAC;AAUF,MAAM,oCAAoC,GACxC;IACE;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,aAAa;KAC1B;IACD;QACE,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,eAAe;KAC1B;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;KAC3B;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,cAAc;KAC3B;IACD;QACE,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,WAAW;KACtB;IACD;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;KAC3B;IACD;QACE,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,aAAa;KACxB;IACD;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC;AAEJ,MAAM,mBAAmB,GAA2B;IAClD,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,mBAAmB;IAC7B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,qBAAqB;IAC5C,EAAE,EAAE,qBAAqB;IACzB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,qBAAqB;IAC5C,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,kBAAkB;IACtC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,eAAe;IAChC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,iBAAiB;IACpC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE,MAAM;CACb,CAAC;AA6FF,yFAAyF;AACzF,MAAM,+BAA+B,GAAG,CACtC,OAA6B,EACJ,EAAE;IAC3B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAEhD,EAAE,CAAC;QACF,IAAI,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,mFAAmF;AACnF,MAAM,yBAAyB,GAAG,CAAC,OAA6B,EAAW,EAAE;IAC3E,OAAO,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,CAAC,CAAC;AAIF,sEAAsE;AACtE,MAAM,gBAAgB,GAA2B,CAAC,KAAK,EAAE,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,4EAA4E;AAC5E,MAAM,4BAA4B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC,CAAC;AACF,8EAA8E;AAC9E,MAAM,4BAA4B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC,CAAC;AACF,oFAAoF;AACpF,MAAM,+BAA+B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAkB;QACtC,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,CAAC,GAAG,EAAE,IAAI,CAAC;QACX,CAAC,OAAO,EAAE,KAAK,CAAC;QAChB,CAAC,GAAG,EAAE,KAAK,CAAC;KACb,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,OAAO,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAE3B;IACF,QAAQ,EAAE,4BAA4B;IACtC,gBAAgB,EAAE,4BAA4B;IAC9C,KAAK,EAAE,4BAA4B;IACnC,IAAI,EAAE,4BAA4B;IAClC,UAAU,EAAE,+BAA+B;CAC5C,CAAC;AAEF,oFAAoF;AACpF,MAAM,wBAAwB,GAAG,CAC/B,SAAqC,EACrC,KAAc,EACL,EAAE;IACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,mBAAmB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACvD,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE;IAChE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,8BAA8B,GAAG,CACrC,KAAa,EACb,KAAc,EACL,EAAE;IACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,KAAc,EAAU,EAAE;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,kCAAkC,GAAG,CAAC,MAI3C,EAAU,EAAE;IACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,uBAAuB,GAAG,CAC9B,MAA4B,EAC5B,GAA2C,EAClC,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAU,EAAE,CACvD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1C,6EAA6E;AAC7E,MAAM,2BAA2B,GAAG,CAClC,UAA4C,EAC5C,GAA4B,EAC5B,MAA4B,EACD,EAAE;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACnD,MAAM,OAAO,GACX,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAClE,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,8BAA8B,CAC3C,UAAU,CAAC,KAAK,EAChB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CACtB,CAAC;IACF,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM;QACN,KAAK,EAAE;YACL,SAAS,EAAE,kCAAkC,CAAC;gBAC5C,OAAO;gBACP,KAAK;gBACL,WAAW;aACZ,CAAC;YACF,KAAK;YACL,OAAO;YACP,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,4BAA4B,GAAG,CACnC,GAA4B,EAC5B,MAA4B,EACX,EAAE;IACnB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,UAAU,IAAI,oCAAoC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAY,EAAE;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,4BAA4B;AAC5B,MAAM,oBAAoB,GAAG,CAC3B,GAA4B,EAC5B,MAA4B,EACD,EAAE;IAC7B,IACE,CAAC;QACC,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACzC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;KAC7C,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;SAC7D,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,0DAA0D;AAC1D,MAAM,yBAAyB,GAAG,CAChC,OAAwB,EACxB,GAA4B,EAC5B,MAA4B,EACtB,EAAE;IACR,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/C,yBAAyB,CACqB,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,+BAA+B,GAAG,CACtC,OAAwB,EACxB,GAA4B,EAC5B,MAA4B,EAC5B,oBAA0C,EACpC,EAAE;IACR,MAAM,mBAAmB,GAAG,+BAA+B,CACzD,MAAiC,EACjC,oBAAoB,EACpB,CAAC,aAAa,CAAC,CAChB,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,kFAAkF;AAClF,MAAM,wBAAwB,GAAG,CAC/B,OAAwB,EACxB,GAA4B,EAC5B,KAA2B,EACrB,EAAE;IACR,KAAK,MAAM,aAAa,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,oBAAoB,GAAG,CAC3B,IAAgB,EAChB,oBAA0C,EAC1C,SAA+B,EAAE,EAChB,EAAE;IACnB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5E,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,OAAO;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,CAC5B,KAAyB,EACzB,cAAqC,EACb,EAAE;IAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CACpD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,CAAC;QACF,MAAM,IAAI,UAAU,CAClB,kCAAkC,KAAK,eAAe,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAClF,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,CAAC,IAA6B,EAAQ,EAAE;IACnE,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,UAAU,CAClB,+CAA+C,EAC/C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAoBF,MAAM,yBAAyB,GAA6B;IAC1D,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,YAAY,GAAG,uBAAuB,CAC1C,QAAQ,EACR,+BAA+B,EAAE,CAClC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,UAAU,CAClB,qBAAqB,CACnB,MAAM,CAAC,IAAI,EACX,YAAY,CAAC,KAAK,EAClB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAClD,EACD,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QAC7B,IACE,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACpD,CAAC;YACD,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CACpD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,CAAC;YACF,MAAM,IAAI,UAAU,CAClB,2BAA2B,MAAM,CAAC,MAAM,eAAe,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnF,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC1C,+BAA+B,CAC7B,MAAM,CAAC,gBAAgB,EACvB,mBAAmB,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,oFAAoF;AACpF,MAAM,8BAA8B,GAAG,CACrC,MAA4B,EAC5B,QAAoB,EACpB,cAAqC,EACrC,MAAc,EACR,EAAE;IACR,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAC7D,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE,CAAC;QACjD,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,KAAK,EAAE,MAKpC,EAA6B,EAAE;IAC9B,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,MAAM,CAAC,MAAM,EACb,6BAA6B,EAC7B,MAAM,CAAC,UAAU,EACjB,qCAAqC,CACtC,CAAC;IACF,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;QAC9B,mCAAmC,UAAU,CAAC,EAAE,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,UAAU,CAAC,KAAK,EAChB,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,CACtB,UAAU,CACR,EAAE,EACF,eAAe,EACf;QACE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QACrC,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI;KAC5C,EACD,MAAM,CAAC,MAAM,CACd,CACJ,CAAC;IACF,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;QACtC,OAAO,EAAE,KAAK;QACd,sBAAsB,EAAE,UAAU,CAAC,EAAE;QACrC,UAAU,EAAE;YACV,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,gBAAgB,EAAE,6BAA6B,UAAU,CAAC,EAAE,EAAE;SAC/D;QACD,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM;QAC5C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,EAAE,QAAQ,CAAC,YAAY;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,yBAAyB,GAAG,KAAK,EAAE,MASxC,EAA2C,EAAE;IAC5C,MAAM,iBAAiB,GAAyB;QAC9C,cAAc,EAAE,qCAAqC;QACrD,EAAE,EAAE,MAAM,CAAC,YAAY;QACvB,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QAC/D,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QAC1C,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,KAAK,EAAE,MAAM,CAAC,eAAe;KAC9B,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAClD,MAAM,CAAC,MAAM,EACb,6BAA6B,EAC7B,MAAM,CAAC,YAAY,EACnB,iBAAiB,CAClB,CAAC;IACF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,YAAY;QACvB,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,IAAI,EAAE,cAAc;QACpB,gBAAgB,EAAE,6BAA6B,MAAM,CAAC,YAAY,EAAE;KACrE,CAAC;AACJ,CAAC,CAAC;AAiBF,+EAA+E;AAC/E,MAAM,4BAA4B,GAAG,KAAK,EACxC,MAAqB,EACc,EAAE;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAClB,iCAAiC,MAAM,sBAAsB,EAC7D,SAAS,CAAC,SAAS,CACpB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM;QACN,QAAQ;QACR,cAAc,EAAE,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7D,oBAAoB,EAAE,2BAA2B,CAAC,QAAQ,CAAC,MAAM,CAAC;KACnE,CAAC;AACJ,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,8BAA8B,GAAG,CAAC,MAMvC,EAA6B,EAAE;IAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAClB,qDAAqD,EACrD,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAKlC,EAA2B,EAAE;IAC5B,MAAM,YAAY,GAAG,qBAAqB,CACxC,MAAM,CAAC,OAAO,CAAC,MAAM,EACrB,MAAM,CAAC,OAAO,CAAC,cAAc,CAC9B,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,YAAY,EACZ;QACE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,IAAI;KACX,EACD,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,oBAAoB,CAClB,IAAI,EACJ,MAAM,CAAC,OAAO,CAAC,oBAAoB,EACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CACtB,CACF,CAAC;IACF,OAAO;QACL,MAAM;QACN,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY;KACb,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,2BAA2B,GAAG,CAClC,IAAoB,EACF,EAAE,CAAC,CAAC;IACtB,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;IAC5B,sBAAsB,EAAE,IAAI,CAAC,aAAa;IAC1C,UAAU,EAAE,IAAI,CAAC,OAAO;IACxB,GAAG,EAAE,EAAE;CACR,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,yBAAyB,GAAG,CAAC,IAAoB,EAAoB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;IAC5B,sBAAsB,EAAE,IAAI,CAAC,aAAa;IAC1C,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,SAAkB;KAC3B,CAAC,CAAC;IACH,GAAG,EAAE,EAAE;CACR,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAMlC,EAAuE,EAAE;IACxE,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,MAAM,CAAC,YAAY,EAAE,CAAC;IAC9E,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,IAAI,CAAC,EAAE,EACP;gBACE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;gBACxB,OAAO,EAAE,aAAa;gBACtB,oBAAoB,EAAE,CAAC,aAAa,CAAC;aACtC,EACD,MAAM,CAAC,MAAM,CACd,CAAC;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAKlC,EAA6B,EAAE;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,kBAAkB,CACrC,6BAA6B,EAC7B,QAAQ,CACT,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;SAC7C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,yBAAyB,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,YAAY;YACZ,QAAQ;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;YACtC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;YACxC,eAAe;SAChB,CAAC,CAAC;IACT,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAC/B,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;QAClC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY;KACb,CAAC,CAAC;IACH,kDAAkD;IAClD,MAAM,WAAW,GAAG,CAAC,MAA0C,EAAU,EAAE,CACzE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAC9C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;QACnC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;QACjD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;QACrC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;QACrC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC;QACnC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,UAAU;KACxB,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,OAAiC,EACjC,MAAqB,EACM,EAAE;IAC7B,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,aAAa,GAAG,+BAA+B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,8BAA8B,CAAC;YACpC,OAAO;YACP,UAAU;YACV,OAAO;YACP,MAAM;YACN,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAClB,wFAAwF,kCAAkC,IAAI,EAC9H,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,8BAA8B,CAC5B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,CACf,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;QACrC,OAAO;QACP,MAAM;QACN,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI;QAC5B,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC;QACnC,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,yGAAyG;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,8BAA8B;IAC9B,4BAA4B;IAC5B,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,cAAc;IACd,qBAAqB;IACrB,8BAA8B;IAC9B,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,+BAA+B;IAC/B,wBAAwB;CACzB,CAAC","debugId":"19acba6b-a459-52ce-b267-6f1d0db63265"}
|
|
1
|
+
{"version":3,"file":"update-many.js","sources":["cli/commands/update-many.ts"],"sourceRoot":"/","sourcesContent":["/**\n * @module cli/commands/update-many\n *\n * Implements the pm update many command surface and its agent-facing runtime behavior.\n */\nimport { pathExists } from \"../../core/fs/fs-utils.js\";\nimport {\n createCheckpointId,\n loadMutationCheckpoint,\n restoreCheckpointItems,\n writeMutationCheckpoint,\n type MutationCheckpointItem,\n} from \"../../core/checkpoint/mutation-checkpoint.js\";\nimport { toItemRecord } from \"../../core/item/item-record.js\";\nimport {\n applyAcceptanceCriteriaMutations,\n applyTagRemovals,\n mergeAdditiveTags,\n parseOptionalNonNegativeInteger,\n parseTags,\n splitAcceptanceCriteria,\n} from \"../../core/item/parse.js\";\nimport { resolvePriority } from \"../../core/item/priority.js\";\nimport { normalizeStatusInput } from \"../../core/item/status.js\";\nimport {\n resolveItemTypeRegistry,\n resolveTypeName,\n} from \"../../core/item/type-registry.js\";\nimport { collectRuntimeUpdateFieldValues } from \"../../core/schema/runtime-field-values.js\";\nimport { buildInvalidTypeError } from \"../../core/schema/item-types-file.js\";\nimport {\n resolveItemTypesFilePath,\n resolveRuntimeFieldRegistry,\n resolveRuntimeStatusRegistry,\n type RuntimeFieldRegistry,\n type RuntimeStatusRegistry,\n} from \"../../core/schema/runtime-schema.js\";\nimport { EXIT_CODE } from \"../../core/shared/constants.js\";\nimport type { GlobalOptions } from \"../../core/shared/command-types.js\";\nimport { PmCliError } from \"../../core/shared/errors.js\";\nimport { toErrorMessage } from \"../../core/shared/primitives.js\";\nimport { stableValueEquals } from \"../../core/shared/serialization.js\";\nimport { nowIso, resolveIsoOrRelative } from \"../../core/shared/time.js\";\nimport { getActiveExtensionRegistrations } from \"../../core/extensions/index.js\";\nimport type { ItemStatus, PmSettings } from \"../../types/index.js\";\nimport { getSettingsPath, resolvePmRoot } from \"../../core/store/paths.js\";\nimport { readSettings } from \"../../core/store/settings.js\";\nimport { resolveAuthor } from \"../../core/shared/author.js\";\nimport { hasListFilters } from \"./list-filter-shared.js\";\nimport {\n runList,\n type ListFullResult,\n type ListOptions,\n type ListedItem,\n} from \"./list.js\";\nimport { runRestore } from \"./restore.js\";\nimport { runUpdate, type UpdateCommandOptions } from \"./update.js\";\n\nconst UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION = 1;\nconst UPDATE_MANY_CHECKPOINT_SUBDIR = \"update-many\";\n\nconst NON_MUTATION_UPDATE_OPTION_KEYS = new Set<PropertyKey>([\n \"author\",\n \"message\",\n \"force\",\n \"ownershipMetadataBypass\",\n \"ownershipDependencyBypass\",\n]);\n\nconst UPDATE_MANY_MUTATION_FLAG_GUIDANCE = [\n \"--status\",\n \"--priority\",\n \"--type\",\n \"--tags\",\n \"--description\",\n \"--body\",\n \"--deadline\",\n \"--estimate\",\n \"--assignee\",\n \"--dep\",\n \"--dep-remove\",\n \"--comment\",\n \"--note\",\n \"--learning\",\n \"--file\",\n \"--test\",\n \"--doc\",\n \"--replace-deps\",\n \"--replace-tests\",\n \"--unset\",\n \"--clear-*\",\n].join(\", \");\n\nconst UPDATE_OPTION_TO_ITEM_KEY: Partial<\n Record<keyof UpdateCommandOptions, string>\n> = {\n title: \"title\",\n description: \"description\",\n body: \"body\",\n status: \"status\",\n closeReason: \"close_reason\",\n priority: \"priority\",\n type: \"type\",\n deadline: \"deadline\",\n estimatedMinutes: \"estimated_minutes\",\n acceptanceCriteria: \"acceptance_criteria\",\n definitionOfReady: \"definition_of_ready\",\n order: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n whyNow: \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blockedBy: \"blocked_by\",\n blockedReason: \"blocked_reason\",\n unblockNote: \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n reproSteps: \"repro_steps\",\n resolution: \"resolution\",\n expectedResult: \"expected_result\",\n actualResult: \"actual_result\",\n affectedVersion: \"affected_version\",\n fixedVersion: \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customerImpact: \"customer_impact\",\n};\n\ninterface CollectionMutationPlanDefinition {\n field: string;\n addKey: keyof UpdateCommandOptions;\n removeKey?: keyof UpdateCommandOptions;\n clearKey: keyof UpdateCommandOptions;\n replaceKey?: keyof UpdateCommandOptions;\n}\n\nconst COLLECTION_MUTATION_PLAN_DEFINITIONS: CollectionMutationPlanDefinition[] =\n [\n {\n field: \"dependencies\",\n addKey: \"dep\",\n removeKey: \"depRemove\",\n clearKey: \"clearDeps\",\n replaceKey: \"replaceDeps\",\n },\n {\n field: \"comments\",\n addKey: \"comment\",\n clearKey: \"clearComments\",\n },\n {\n field: \"notes\",\n addKey: \"note\",\n clearKey: \"clearNotes\",\n },\n {\n field: \"learnings\",\n addKey: \"learning\",\n clearKey: \"clearLearnings\",\n },\n {\n field: \"files\",\n addKey: \"file\",\n clearKey: \"clearFiles\",\n },\n {\n field: \"tests\",\n addKey: \"test\",\n clearKey: \"clearTests\",\n replaceKey: \"replaceTests\",\n },\n {\n field: \"docs\",\n addKey: \"doc\",\n clearKey: \"clearDocs\",\n },\n {\n field: \"reminders\",\n addKey: \"reminder\",\n clearKey: \"clearReminders\",\n },\n {\n field: \"events\",\n addKey: \"event\",\n clearKey: \"clearEvents\",\n },\n {\n field: \"type_options\",\n addKey: \"typeOption\",\n clearKey: \"clearTypeOptions\",\n },\n ];\n\nconst UNSET_FIELD_ALIASES: Record<string, string> = {\n close_reason: \"close_reason\",\n \"close-reason\": \"close_reason\",\n deadline: \"deadline\",\n estimate: \"estimated_minutes\",\n estimated_minutes: \"estimated_minutes\",\n \"estimated-minutes\": \"estimated_minutes\",\n acceptance_criteria: \"acceptance_criteria\",\n \"acceptance-criteria\": \"acceptance_criteria\",\n ac: \"acceptance_criteria\",\n definition_of_ready: \"definition_of_ready\",\n \"definition-of-ready\": \"definition_of_ready\",\n order: \"order\",\n rank: \"order\",\n goal: \"goal\",\n objective: \"objective\",\n value: \"value\",\n impact: \"impact\",\n outcome: \"outcome\",\n why_now: \"why_now\",\n \"why-now\": \"why_now\",\n assignee: \"assignee\",\n parent: \"parent\",\n reviewer: \"reviewer\",\n risk: \"risk\",\n confidence: \"confidence\",\n sprint: \"sprint\",\n release: \"release\",\n blocked_by: \"blocked_by\",\n \"blocked-by\": \"blocked_by\",\n blocked_reason: \"blocked_reason\",\n \"blocked-reason\": \"blocked_reason\",\n unblock_note: \"unblock_note\",\n \"unblock-note\": \"unblock_note\",\n reporter: \"reporter\",\n severity: \"severity\",\n environment: \"environment\",\n repro_steps: \"repro_steps\",\n \"repro-steps\": \"repro_steps\",\n resolution: \"resolution\",\n expected_result: \"expected_result\",\n \"expected-result\": \"expected_result\",\n actual_result: \"actual_result\",\n \"actual-result\": \"actual_result\",\n affected_version: \"affected_version\",\n \"affected-version\": \"affected_version\",\n fixed_version: \"fixed_version\",\n \"fixed-version\": \"fixed_version\",\n component: \"component\",\n regression: \"regression\",\n customer_impact: \"customer_impact\",\n \"customer-impact\": \"customer_impact\",\n type_options: \"type_options\",\n \"type-options\": \"type_options\",\n tags: \"tags\",\n};\n\ninterface UpdateManyCheckpoint {\n schema_version: number;\n id: string;\n created_at: string;\n author: string;\n status_filter: string | null;\n list_filters: Record<string, unknown>;\n update_options: Record<string, unknown>;\n items: MutationCheckpointItem[];\n}\n\n/** Documents the update many command options payload exchanged by command, SDK, and package integrations. */\nexport interface UpdateManyCommandOptions {\n /** Lifecycle state reported for status. */\n status?: string;\n /** Value that configures or reports list for this contract. */\n list: ListOptions;\n /** Value that configures or reports update for this contract. */\n update: UpdateCommandOptions;\n /** Value that configures or reports dry run for this contract. */\n dryRun?: boolean;\n /** Value that configures or reports rollback for this contract. */\n rollback?: string;\n /** Value that configures or reports checkpoint for this contract. */\n checkpoint?: boolean;\n}\n\ninterface PlannedChange {\n field: string;\n before: unknown;\n after: unknown;\n}\n\ninterface PlannedItemDiff {\n id: string;\n changes: PlannedChange[];\n warnings?: string[];\n}\n\ninterface UpdateManyApplyResultRow {\n id: string;\n status: \"updated\" | \"failed\" | \"skipped\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\ninterface UpdateManyRollbackResultRow {\n id: string;\n status: \"restored\" | \"failed\";\n changed_fields?: string[];\n warnings?: string[];\n error?: string;\n}\n\n/** Documents the update many result payload exchanged by command, SDK, and package integrations. */\nexport interface UpdateManyResult {\n /** Value that configures or reports mode for this contract. */\n mode: \"dry_run\" | \"apply\" | \"rollback\";\n /** Number of matched entries represented by this result. */\n matched_count: number;\n /** Value that configures or reports dry run for this contract. */\n dry_run: boolean;\n /** Value that configures or reports filters for this contract. */\n filters?: Record<string, unknown>;\n /** Inputs that customize the planned update operation. */\n planned_update_options?: Record<string, unknown>;\n /** Value that configures or reports item plans for this contract. */\n item_plans?: PlannedItemDiff[];\n /** Value that configures or reports checkpoint for this contract. */\n checkpoint?: {\n id: string;\n created_at: string;\n path: string;\n rollback_command: string;\n };\n /** Number of updated entries represented by this result. */\n updated_count?: number;\n /** Number of skipped entries represented by this result. */\n skipped_count?: number;\n /** Number of failed entries represented by this result. */\n failed_count?: number;\n /** Number of restored entries represented by this result. */\n restored_count?: number;\n /** Value that configures or reports rollback checkpoint id for this contract. */\n rollback_checkpoint_id?: string;\n /** Value that configures or reports rows for this contract. */\n rows?: UpdateManyApplyResultRow[] | UpdateManyRollbackResultRow[];\n /** Value that configures or reports ids for this contract. */\n ids: string[];\n /** Explicitly requested --ids values that matched no tracked item. */\n unmatched_ids?: string[];\n /** Number of explicitly requested --ids values that matched no tracked item. */\n unmatched_count?: number;\n}\n\n/** Removes execution-only options from the mutation summary persisted in checkpoints. */\nconst sanitizeUpdateOptionsForSummary = (\n options: UpdateCommandOptions,\n): Record<string, unknown> => {\n const summary: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(options) as Array<\n [keyof UpdateCommandOptions, unknown]\n >) {\n if (NON_MUTATION_UPDATE_OPTION_KEYS.has(key)) {\n continue;\n }\n if (value === undefined) {\n continue;\n }\n summary[key] = value;\n }\n return summary;\n};\n\n/** Reports whether an update-many request contains at least one mutation input. */\nconst hasAnyUpdateMutationInput = (options: UpdateCommandOptions): boolean => {\n return Object.keys(sanitizeUpdateOptionsForSummary(options)).length > 0;\n};\n\ntype PreviewValueNormalizer = (value: unknown) => unknown;\n\n/** Trims string preview values while preserving non-string inputs. */\nconst trimPreviewValue: PreviewValueNormalizer = (value) =>\n typeof value === \"string\" ? value.trim() : value;\n/** Converts integer-like preview values to their storage representation. */\nconst normalizeIntegerPreviewValue: PreviewValueNormalizer = (value) => {\n const trimmed = String(value).trim();\n const parsed = Number(trimmed);\n return Number.isInteger(parsed) ? parsed : trimmed;\n};\n/** Converts finite numeric preview values to their storage representation. */\nconst normalizeNumericPreviewValue: PreviewValueNormalizer = (value) => {\n const trimmed = String(value).trim();\n const parsed = Number(trimmed);\n return Number.isFinite(parsed) ? parsed : trimmed;\n};\n/** Converts supported regression tokens to their boolean storage representation. */\nconst normalizeRegressionPreviewValue: PreviewValueNormalizer = (value) => {\n const normalized = String(value).trim().toLowerCase();\n const parsed = new Map<string, boolean>([\n [\"true\", true],\n [\"1\", true],\n [\"false\", false],\n [\"0\", false],\n ]).get(normalized);\n return parsed ?? trimPreviewValue(value);\n};\n\nconst PREVIEW_VALUE_NORMALIZERS: Partial<\n Record<keyof UpdateCommandOptions, PreviewValueNormalizer>\n> = {\n priority: normalizeIntegerPreviewValue,\n estimatedMinutes: normalizeNumericPreviewValue,\n order: normalizeNumericPreviewValue,\n rank: normalizeNumericPreviewValue,\n regression: normalizeRegressionPreviewValue,\n};\n\n/** Normalizes a CLI mutation value to the storage-shaped value used by previews. */\nconst toComparablePreviewValue = (\n optionKey: keyof UpdateCommandOptions,\n value: unknown,\n): unknown => {\n if (value === undefined) {\n return undefined;\n }\n return (PREVIEW_VALUE_NORMALIZERS[optionKey] ?? trimPreviewValue)(value);\n};\n\n/** Resolves user-facing unset aliases to stored metadata keys. */\nconst normalizeUnsetField = (rawField: string): string => {\n const normalized = rawField.trim().toLowerCase().replaceAll(\"-\", \"_\");\n return UNSET_FIELD_ALIASES[normalized] ?? normalized;\n};\n\n/** Compares preview values using the canonical stable serialization contract. */\nconst areValuesEqual = (left: unknown, right: unknown): boolean => {\n return stableValueEquals(left, right);\n};\n\n/** Supplies the storage-shaped empty value for an absent collection field. */\nconst normalizeCollectionBeforeValue = (\n field: string,\n value: unknown,\n): unknown => {\n if (value !== undefined) {\n return value;\n }\n if (field === \"type_options\") {\n return {};\n }\n return [];\n};\n\n/** Counts entries in list and type-option collection values. */\nconst collectionValueCount = (field: string, value: unknown): number => {\n if (Array.isArray(value)) {\n return value.length;\n }\n if (field === \"type_options\" && value && typeof value === \"object\") {\n return Object.keys(value as Record<string, unknown>).length;\n }\n return 0;\n};\n\n/** Resolves the dominant collection mutation using apply-path precedence. */\nconst resolveCollectionMutationOperation = (params: {\n replace: boolean;\n clear: boolean;\n removeCount: number;\n}): string => {\n if (params.replace) {\n return \"replace\";\n }\n if (params.clear) {\n return \"clear_or_reset\";\n }\n return params.removeCount > 0 ? \"merge_remove\" : \"append\";\n};\n\n/** Reads an optional definition key without indexing through undefined. */\nconst readOptionalUpdateValue = (\n update: UpdateCommandOptions,\n key: keyof UpdateCommandOptions | undefined,\n): unknown => (key === undefined ? undefined : update[key]);\n\n/** Counts array-shaped mutation inputs while treating other shapes as empty. */\nconst updateArrayValueCount = (value: unknown): number =>\n Array.isArray(value) ? value.length : 0;\n\n/** Builds one collection plan when its definition has an active mutation. */\nconst buildCollectionMutationPlan = (\n definition: CollectionMutationPlanDefinition,\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange | undefined => {\n const addValues = update[definition.addKey];\n const removeValues = readOptionalUpdateValue(update, definition.removeKey);\n const addCount = updateArrayValueCount(addValues);\n const removeCount = updateArrayValueCount(removeValues);\n const clear = update[definition.clearKey] === true;\n const replace =\n readOptionalUpdateValue(update, definition.replaceKey) === true;\n if (![clear, replace, addCount > 0, removeCount > 0].includes(true)) {\n return undefined;\n }\n const before = normalizeCollectionBeforeValue(\n definition.field,\n row[definition.field],\n );\n return {\n field: definition.field,\n before,\n after: {\n operation: resolveCollectionMutationOperation({\n replace,\n clear,\n removeCount,\n }),\n clear,\n replace,\n add_count: addCount,\n remove_count: removeCount,\n before_count: collectionValueCount(definition.field, before),\n },\n };\n};\n\n/** Builds collection mutation previews for every active collection option. */\nconst buildCollectionMutationPlans = (\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange[] => {\n const changes: PlannedChange[] = [];\n for (const definition of COLLECTION_MUTATION_PLAN_DEFINITIONS) {\n const plan = buildCollectionMutationPlan(definition, row, update);\n if (plan !== undefined) {\n changes.push(plan);\n }\n }\n return changes;\n};\n\n/** Keeps only string tags from an existing storage value. */\nconst normalizeExistingTags = (value: unknown): string[] => {\n if (!Array.isArray(value)) {\n return [];\n }\n return value.filter((tag): tag is string => typeof tag === \"string\");\n};\n\n// Tags support three mutation modes that compose: --tags replaces, --add-tags\n// extends, --remove-tags prunes. Replicate runUpdate's resolution order so the\n// dry-run preview and the apply-mode actionable detection both account for\n// additive/subtractive tag mutations (a --add-tags-only update must NOT be\n// treated as a no-op skip).\nconst buildTagMutationPlan = (\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): PlannedChange | undefined => {\n if (\n ![\n update.tags !== undefined,\n updateArrayValueCount(update.addTags) > 0,\n updateArrayValueCount(update.removeTags) > 0,\n ].includes(true)\n ) {\n return undefined;\n }\n const existing = normalizeExistingTags(row.tags);\n const baseTags =\n update.tags === undefined ? existing : parseTags(update.tags);\n const withAdditions = mergeAdditiveTags(baseTags, update.addTags);\n const after = applyTagRemovals(withAdditions, update.removeTags)\n .slice()\n .sort((a, b) => a.localeCompare(b));\n const before = existing.slice().sort((a, b) => a.localeCompare(b));\n if (areValuesEqual(before, after)) {\n return undefined;\n }\n return { field: \"tags\", before: existing, after };\n};\n\n// Acceptance criteria support replace (--ac) plus additive --add-ac/--remove-ac\n// (GH-612). Replicate runUpdate's resolution order so dry-run previews and\n// apply-mode actionable detection account for additive criterion mutations (an\n// --add-ac-only bulk update must NOT be treated as a no-op skip).\nconst buildAcceptanceCriteriaMutationPlan = (\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): { change?: PlannedChange; warnings: string[] } => {\n const before = row.acceptance_criteria;\n const base =\n update.acceptanceCriteria === undefined\n ? before\n : String(update.acceptanceCriteria).trim();\n const mutation = applyAcceptanceCriteriaMutations(\n splitAcceptanceCriteria(base),\n update.addAc,\n update.removeAc,\n );\n const warnings = mutation.unmatchedRemovals.map(\n (criterion) => `remove_ac_unmatched:${criterion}`,\n );\n const after = mutation.criteria.join(\"; \");\n if (areValuesEqual(before, after) || (before === undefined && after === \"\")) {\n return { warnings };\n }\n return {\n change: { field: \"acceptance_criteria\", before, after },\n warnings,\n };\n};\n\n/** Adds changed scalar options to a planned item diff. */\nconst appendScalarMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n): void => {\n for (const [optionKey, itemKey] of Object.entries(\n UPDATE_OPTION_TO_ITEM_KEY,\n ) as Array<[keyof UpdateCommandOptions, string]>) {\n const candidate = update[optionKey];\n if (candidate === undefined) {\n continue;\n }\n const before = row[itemKey];\n const after = toComparablePreviewValue(optionKey, candidate);\n if (!areValuesEqual(before, after)) {\n changes.push({ field: itemKey, before, after });\n }\n }\n};\n\n/** Adds changed runtime-schema fields to a planned item diff. */\nconst appendRuntimeFieldMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n update: UpdateCommandOptions,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n): void => {\n const runtimeFieldUpdates = collectRuntimeUpdateFieldValues(\n update as Record<string, unknown>,\n runtimeFieldRegistry,\n [\"update_many\"],\n );\n for (const [field, after] of Object.entries(runtimeFieldUpdates)) {\n const before = row[field];\n if (!areValuesEqual(before, after)) {\n changes.push({ field, before, after });\n }\n }\n};\n\n/** Adds present fields requested through unset options to a planned item diff. */\nconst appendUnsetMutationPlans = (\n changes: PlannedChange[],\n row: Record<string, unknown>,\n unset: string[] | undefined,\n): void => {\n for (const rawUnsetField of unset ?? []) {\n const field = normalizeUnsetField(rawUnsetField);\n const before = row[field];\n if (before !== undefined) {\n changes.push({ field, before, after: null });\n }\n }\n};\n\n/** Builds the complete storage-shaped mutation preview for one item. */\nconst buildPlannedItemDiff = (\n item: ListedItem,\n runtimeFieldRegistry: RuntimeFieldRegistry,\n update: UpdateCommandOptions = {},\n): PlannedItemDiff => {\n const row = toItemRecord(item);\n const changes: PlannedChange[] = [];\n const warnings: string[] = [];\n const tagPlan = buildTagMutationPlan(row, update);\n if (tagPlan) {\n changes.push(tagPlan);\n }\n appendScalarMutationPlans(changes, row, update);\n if (\n updateArrayValueCount(update.addAc) > 0 ||\n updateArrayValueCount(update.removeAc) > 0\n ) {\n const composed = buildAcceptanceCriteriaMutationPlan(row, update);\n const withoutAc = changes.filter(\n (change) => change.field !== \"acceptance_criteria\",\n );\n changes.splice(0, changes.length, ...withoutAc);\n if (composed.change !== undefined) {\n changes.push(composed.change);\n }\n warnings.push(...composed.warnings);\n }\n changes.push(...buildCollectionMutationPlans(row, update));\n appendRuntimeFieldMutationPlans(changes, row, update, runtimeFieldRegistry);\n appendUnsetMutationPlans(changes, row, update.unset);\n\n return {\n id: item.id,\n changes,\n ...(warnings.length > 0 ? { warnings } : {}),\n };\n};\n\n/** Normalizes an optional list status against the runtime schema. */\nconst normalizeStatusFilter = (\n value: string | undefined,\n statusRegistry: RuntimeStatusRegistry,\n): ItemStatus | undefined => {\n if (value === undefined) {\n return undefined;\n }\n const normalized = normalizeStatusInput(value, statusRegistry);\n if (!normalized) {\n const allowedStatuses = statusRegistry.definitions.map(\n (definition) => definition.id,\n );\n throw new PmCliError(\n `Invalid --filter-status value \"${value}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n return normalized;\n};\n\n/** Rejects an explicitly blank bulk ID filter before loading the corpus. */\nconst rejectBlankIdsFilter = (list: ListOptions | undefined): void => {\n if (list?.ids != null && String(list.ids).trim().length === 0) {\n throw new PmCliError(\n \"--ids requires at least one non-empty item ID\",\n EXIT_CODE.USAGE,\n );\n }\n};\n\n// GH-256: validate planned scalar enum/format fields up front so a `--dry-run`\n// preview rejects globally-invalid values exactly as apply would (true\n// preview==apply parity), and so apply itself fails fast before creating an\n// orphan checkpoint. Only VALUE/ENUM/FORMAT correctness is checked here — these\n// are invalid regardless of the matched item. Per-item governance and\n// workflow-transition rules stay in the apply path (runUpdate). Each field is\n// validated only when the caller actually provided it, reusing the exact same\n// resolvers and error messages runUpdate raises so single/bulk/dry-run stay\n// consistent.\ninterface PlannedUpdateValidationContext {\n update: UpdateCommandOptions;\n settings: PmSettings;\n statusRegistry: RuntimeStatusRegistry;\n pmRoot: string;\n}\n\ntype PlannedUpdateValidator = (context: PlannedUpdateValidationContext) => void;\n\nconst PLANNED_UPDATE_VALIDATORS: PlannedUpdateValidator[] = [\n ({ update }) => {\n if (update.priority !== undefined) {\n resolvePriority(update.priority);\n }\n },\n ({ update, settings, pmRoot }) => {\n if (update.type === undefined) {\n return;\n }\n const typeRegistry = resolveItemTypeRegistry(\n settings,\n getActiveExtensionRegistrations(),\n );\n if (!resolveTypeName(update.type, typeRegistry)) {\n throw new PmCliError(\n buildInvalidTypeError(\n update.type,\n typeRegistry.types,\n resolveItemTypesFilePath(pmRoot, settings.schema),\n ),\n EXIT_CODE.USAGE,\n );\n }\n },\n ({ update, statusRegistry }) => {\n if (\n update.status !== undefined &&\n !normalizeStatusInput(update.status, statusRegistry)\n ) {\n const allowedStatuses = statusRegistry.definitions.map(\n (definition) => definition.id,\n );\n throw new PmCliError(\n `Invalid --status value \"${update.status}\". Allowed: ${allowedStatuses.join(\", \")}`,\n EXIT_CODE.USAGE,\n );\n }\n },\n ({ update }) => {\n if (update.deadline !== undefined) {\n resolveIsoOrRelative(update.deadline, new Date(), \"deadline\");\n }\n },\n ({ update }) => {\n if (update.estimatedMinutes !== undefined) {\n parseOptionalNonNegativeInteger(\n update.estimatedMinutes,\n \"estimated-minutes\",\n );\n }\n },\n];\n\n/** Validates globally invalid mutation values before preview or checkpoint work. */\nconst assertPlannedUpdateValuesValid = (\n update: UpdateCommandOptions,\n settings: PmSettings,\n statusRegistry: RuntimeStatusRegistry,\n pmRoot: string,\n): void => {\n const context = { update, settings, statusRegistry, pmRoot };\n for (const validate of PLANNED_UPDATE_VALIDATORS) {\n validate(context);\n }\n};\n\n/** Restores every item captured by an update-many checkpoint. */\nconst runUpdateManyRollback = async (params: {\n pmRoot: string;\n rollbackId: string;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n}): Promise<UpdateManyResult> => {\n const checkpoint = await loadMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.rollbackId,\n UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n );\n const restoreMessage =\n params.options.update?.message ??\n `Rollback update-many checkpoint ${checkpoint.id}`;\n const rollback = await restoreCheckpointItems(\n checkpoint.items,\n (id, targetUpdatedAt) =>\n runRestore(\n id,\n targetUpdatedAt,\n {\n author: params.options.update?.author,\n message: restoreMessage,\n force: params.options.update?.force ?? true,\n },\n params.global,\n ),\n );\n return {\n mode: \"rollback\",\n matched_count: checkpoint.items.length,\n dry_run: false,\n rollback_checkpoint_id: checkpoint.id,\n checkpoint: {\n id: checkpoint.id,\n created_at: checkpoint.created_at,\n path: checkpoint.path,\n rollback_command: `pm update-many --rollback ${checkpoint.id}`,\n },\n restored_count: rollback.restored_ids.length,\n failed_count: rollback.failed_count,\n rows: rollback.rows,\n ids: rollback.restored_ids,\n };\n};\n\n/** Persists an apply checkpoint and returns its user-facing descriptor. */\nconst writeUpdateManyCheckpoint = async (params: {\n pmRoot: string;\n checkpointId: string;\n nowValue: string;\n options: UpdateManyCommandOptions;\n statusFilter: string | undefined;\n filters: Record<string, unknown>;\n updateSummary: Record<string, unknown>;\n checkpointItems: MutationCheckpointItem[];\n}): Promise<UpdateManyResult[\"checkpoint\"]> => {\n const checkpointPayload: UpdateManyCheckpoint = {\n schema_version: UPDATE_MANY_CHECKPOINT_SCHEMA_VERSION,\n id: params.checkpointId,\n created_at: params.nowValue,\n author: resolveAuthor(params.options.update?.author, \"unknown\"),\n status_filter: params.statusFilter ?? null,\n list_filters: params.filters,\n update_options: params.updateSummary,\n items: params.checkpointItems,\n };\n const checkpointPath = await writeMutationCheckpoint(\n params.pmRoot,\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n params.checkpointId,\n checkpointPayload,\n );\n return {\n id: params.checkpointId,\n created_at: params.nowValue,\n path: checkpointPath,\n rollback_command: `pm update-many --rollback ${params.checkpointId}`,\n };\n};\n\ninterface UpdateManyRuntimeContext {\n pmRoot: string;\n settings: PmSettings;\n statusRegistry: RuntimeStatusRegistry;\n runtimeFieldRegistry: RuntimeFieldRegistry;\n}\n\ninterface UpdateManyPlan {\n listed: ListFullResult;\n planned: PlannedItemDiff[];\n actionable: PlannedItemDiff[];\n updateSummary: Record<string, unknown>;\n statusFilter: ItemStatus | undefined;\n unmatchedIds: string[] | undefined;\n}\n\n// GH-596: an explicit --ids request naming IDs that do not exist must stay\n// machine-detectable without client-side set differencing. The requested list\n// is re-derived here (same CSV split as the list filter) and compared against\n// the unfiltered storage corpus so pagination and additional query filters do\n// not misclassify existing items as nonexistent.\nconst collectUnmatchedRequestedIds = (\n rawIds: unknown,\n existingItems: ReadonlyArray<{ id: string }>,\n): string[] | undefined => {\n if (rawIds == null) {\n return undefined;\n }\n const requested = [\n ...new Set(\n String(rawIds)\n .split(\",\")\n .map((entry) => entry.trim())\n .filter((entry) => entry.length > 0),\n ),\n ];\n const existing = new Set(existingItems.map((item) => item.id));\n return requested.filter((id) => !existing.has(id));\n};\n\n/** Builds the shared unmatched-id envelope fields for one prepared plan. */\nconst buildUnmatchedIdFields = (\n plan: UpdateManyPlan,\n): Pick<UpdateManyResult, \"unmatched_ids\" | \"unmatched_count\"> =>\n plan.unmatchedIds === undefined\n ? {}\n : {\n unmatched_ids: plan.unmatchedIds,\n unmatched_count: plan.unmatchedIds.length,\n };\n\n/** Loads tracker settings and runtime registries for update-many execution. */\nconst loadUpdateManyRuntimeContext = async (\n global: GlobalOptions,\n): Promise<UpdateManyRuntimeContext> => {\n const pmRoot = resolvePmRoot(process.cwd(), global.path);\n if (!(await pathExists(getSettingsPath(pmRoot)))) {\n throw new PmCliError(\n `Tracker is not initialized at ${pmRoot}. Run pm init first.`,\n EXIT_CODE.NOT_FOUND,\n );\n }\n const settings = await readSettings(pmRoot);\n return {\n pmRoot,\n settings,\n statusRegistry: resolveRuntimeStatusRegistry(settings.schema),\n runtimeFieldRegistry: resolveRuntimeFieldRegistry(settings.schema),\n };\n};\n\n/** Validates rollback exclusivity before restoring a checkpoint. */\nconst runRequestedUpdateManyRollback = (params: {\n runtime: UpdateManyRuntimeContext;\n rollbackId: string;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n updateSummary: Record<string, unknown>;\n}): Promise<UpdateManyResult> => {\n if (params.options.dryRun === true) {\n throw new PmCliError(\n \"--dry-run cannot be combined with --rollback\",\n EXIT_CODE.USAGE,\n );\n }\n if (hasListFilters(params.options.list, params.options.status)) {\n throw new PmCliError(\n \"Rollback mode does not accept filter options\",\n EXIT_CODE.USAGE,\n );\n }\n if (Object.keys(params.updateSummary).length > 0) {\n throw new PmCliError(\n \"Rollback mode does not accept update mutation flags\",\n EXIT_CODE.USAGE,\n );\n }\n return runUpdateManyRollback({\n pmRoot: params.runtime.pmRoot,\n rollbackId: params.rollbackId,\n options: params.options,\n global: params.global,\n });\n};\n\n/** Loads complete matching rows and derives their mutation previews. */\nconst buildUpdateManyPlan = async (params: {\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n runtime: UpdateManyRuntimeContext;\n updateSummary: Record<string, unknown>;\n}): Promise<UpdateManyPlan> => {\n const statusFilter = normalizeStatusFilter(\n params.options.status,\n params.runtime.statusRegistry,\n );\n const listed = await runList(\n statusFilter,\n {\n ...params.options.list,\n compact: undefined,\n brief: undefined,\n fields: undefined,\n includeBody: true,\n full: true,\n },\n params.global,\n );\n const planned = listed.items.map((item) =>\n buildPlannedItemDiff(\n item,\n params.runtime.runtimeFieldRegistry,\n params.options.update,\n ),\n );\n const existenceItems =\n params.options.list?.ids == null\n ? []\n : (\n await runList(\n undefined,\n {\n ids: params.options.list.ids,\n noTruncate: true,\n full: true,\n },\n params.global,\n )\n ).items;\n return {\n listed,\n planned,\n actionable: planned.filter((row) => row.changes.length > 0),\n updateSummary: params.updateSummary,\n statusFilter,\n unmatchedIds: collectUnmatchedRequestedIds(\n params.options.list?.ids,\n existenceItems,\n ),\n };\n};\n\n/** Builds the non-mutating preview response for a prepared update-many plan. */\nconst buildUpdateManyDryRunResult = (\n plan: UpdateManyPlan,\n): UpdateManyResult => ({\n mode: \"dry_run\",\n matched_count: plan.listed.items.length,\n dry_run: true,\n filters: plan.listed.filters,\n planned_update_options: plan.updateSummary,\n item_plans: plan.planned,\n ids: [],\n ...buildUnmatchedIdFields(plan),\n});\n\n/** Builds the apply response for a plan whose rows are all already current. */\nconst buildUpdateManyNoopResult = (plan: UpdateManyPlan): UpdateManyResult => ({\n mode: \"apply\",\n matched_count: plan.listed.items.length,\n dry_run: false,\n filters: plan.listed.filters,\n planned_update_options: plan.updateSummary,\n updated_count: 0,\n skipped_count: plan.listed.items.length,\n failed_count: 0,\n rows: plan.planned.map((row) => ({\n id: row.id,\n status: \"skipped\" as const,\n ...(row.warnings ? { warnings: row.warnings } : {}),\n })),\n ids: [],\n ...buildUnmatchedIdFields(plan),\n});\n\n/** Applies planned item updates independently while preserving per-row failures. */\nconst applyUpdateManyRows = async (params: {\n items: ListedItem[];\n plans: PlannedItemDiff[];\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n checkpointId: string;\n}): Promise<{ rows: UpdateManyApplyResultRow[]; updatedIds: string[] }> => {\n const rows: UpdateManyApplyResultRow[] = [];\n const updatedIds: string[] = [];\n const updateMessage =\n params.options.update.message ?? `update-many apply ${params.checkpointId}`;\n const plannedById = new Map(params.plans.map((row) => [row.id, row]));\n const actionableById = new Set(\n params.plans.filter((row) => row.changes.length > 0).map((row) => row.id),\n );\n for (const item of params.items) {\n if (!actionableById.has(item.id)) {\n const warnings = plannedById.get(item.id)?.warnings;\n rows.push({\n id: item.id,\n status: \"skipped\",\n ...(warnings ? { warnings } : {}),\n });\n continue;\n }\n try {\n const result = await runUpdate(\n item.id,\n {\n ...params.options.update,\n message: updateMessage,\n runtimeFieldCommands: [\"update_many\"],\n },\n params.global,\n );\n rows.push({\n id: item.id,\n status: \"updated\",\n changed_fields: result.changed_fields,\n warnings: result.warnings,\n });\n updatedIds.push(item.id);\n } catch (error: unknown) {\n rows.push({\n id: item.id,\n status: \"failed\",\n error: toErrorMessage(error),\n });\n }\n }\n return { rows, updatedIds };\n};\n\n/** Applies a prepared plan, checkpointing actionable rows when requested. */\nconst applyUpdateManyPlan = async (params: {\n runtime: UpdateManyRuntimeContext;\n options: UpdateManyCommandOptions;\n global: GlobalOptions;\n plan: UpdateManyPlan;\n}): Promise<UpdateManyResult> => {\n if (params.plan.actionable.length === 0) {\n return buildUpdateManyNoopResult(params.plan);\n }\n const nowValue = nowIso();\n const checkpointId = createCheckpointId(\n UPDATE_MANY_CHECKPOINT_SUBDIR,\n nowValue,\n );\n const actionableById = new Set(params.plan.actionable.map((row) => row.id));\n const checkpointItems = params.plan.listed.items\n .filter((item) => actionableById.has(item.id))\n .map((item) => ({ id: item.id, target_updated_at: item.updated_at }));\n const checkpointInfo =\n params.options.checkpoint === false\n ? undefined\n : await writeUpdateManyCheckpoint({\n pmRoot: params.runtime.pmRoot,\n checkpointId,\n nowValue,\n options: params.options,\n statusFilter: params.plan.statusFilter,\n filters: params.plan.listed.filters,\n updateSummary: params.plan.updateSummary,\n checkpointItems,\n });\n const applied = await applyUpdateManyRows({\n items: params.plan.listed.items,\n plans: params.plan.planned,\n options: params.options,\n global: params.global,\n checkpointId,\n });\n /** Counts apply rows with one terminal status. */\n const countStatus = (status: UpdateManyApplyResultRow[\"status\"]): number =>\n applied.rows.filter((row) => row.status === status).length;\n return {\n mode: \"apply\",\n matched_count: params.plan.listed.items.length,\n dry_run: false,\n filters: params.plan.listed.filters,\n planned_update_options: params.plan.updateSummary,\n ...(checkpointInfo ? { checkpoint: checkpointInfo } : {}),\n updated_count: countStatus(\"updated\"),\n skipped_count: countStatus(\"skipped\"),\n failed_count: countStatus(\"failed\"),\n rows: applied.rows,\n ids: applied.updatedIds,\n ...buildUnmatchedIdFields(params.plan),\n };\n};\n\n/** Implements run update many for the public runtime surface of this module. */\nexport const runUpdateMany = async (\n options: UpdateManyCommandOptions,\n global: GlobalOptions,\n): Promise<UpdateManyResult> => {\n const runtime = await loadUpdateManyRuntimeContext(global);\n const rollbackId =\n typeof options.rollback === \"string\" ? options.rollback : undefined;\n const updateSummary = sanitizeUpdateOptionsForSummary(options.update);\n rejectBlankIdsFilter(options.list);\n if (rollbackId !== undefined) {\n return runRequestedUpdateManyRollback({\n runtime,\n rollbackId,\n options,\n global,\n updateSummary,\n });\n }\n if (!hasAnyUpdateMutationInput(options.update)) {\n throw new PmCliError(\n `No update-many mutation flags provided. Add at least one mutation flag (for example: ${UPDATE_MANY_MUTATION_FLAG_GUIDANCE}).`,\n EXIT_CODE.USAGE,\n );\n }\n assertPlannedUpdateValuesValid(\n options.update,\n runtime.settings,\n runtime.statusRegistry,\n runtime.pmRoot,\n );\n const plan = await buildUpdateManyPlan({\n options,\n global,\n runtime,\n updateSummary,\n });\n return options.dryRun === true\n ? buildUpdateManyDryRunResult(plan)\n : applyUpdateManyPlan({ runtime, options, global, plan });\n};\n\n/** Public contract for test only update many command, shared by SDK and presentation-layer consumers. */\nexport const _testOnlyUpdateManyCommand = {\n assertPlannedUpdateValuesValid,\n buildCollectionMutationPlans,\n buildPlannedItemDiff,\n buildTagMutationPlan,\n collectionValueCount,\n hasAnyUpdateMutationInput,\n hasListFilters,\n normalizeStatusFilter,\n normalizeCollectionBeforeValue,\n normalizeExistingTags,\n normalizeUnsetField,\n rejectBlankIdsFilter,\n sanitizeUpdateOptionsForSummary,\n toComparablePreviewValue,\n};\n"],"names":[],"mappings":"AAAA;;;;GAIG;;;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EACL,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EACL,gCAAgC,EAChC,gBAAgB,EAChB,iBAAiB,EACjB,+BAA+B,EAC/B,SAAS,EACT,uBAAuB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EACL,uBAAuB,EACvB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AAC5F,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,2BAA2B,EAC3B,4BAA4B,GAG7B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEjF,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EACL,OAAO,GAIR,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAA6B,MAAM,aAAa,CAAC;AAEnE,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAChD,MAAM,6BAA6B,GAAG,aAAa,CAAC;AAEpD,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAc;IAC3D,QAAQ;IACR,SAAS;IACT,OAAO;IACP,yBAAyB;IACzB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,MAAM,kCAAkC,GAAG;IACzC,UAAU;IACV,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,eAAe;IACf,QAAQ;IACR,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,OAAO;IACP,cAAc;IACd,WAAW;IACX,QAAQ;IACR,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,OAAO;IACP,gBAAgB;IAChB,iBAAiB;IACjB,SAAS;IACT,WAAW;CACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,yBAAyB,GAE3B;IACF,KAAK,EAAE,OAAO;IACd,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,gBAAgB,EAAE,mBAAmB;IACrC,kBAAkB,EAAE,qBAAqB;IACzC,iBAAiB,EAAE,qBAAqB;IACxC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,YAAY;IACvB,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,UAAU,EAAE,aAAa;IACzB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;IACjC,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,kBAAkB;IACnC,YAAY,EAAE,eAAe;IAC7B,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,cAAc,EAAE,iBAAiB;CAClC,CAAC;AAUF,MAAM,oCAAoC,GACxC;IACE;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,WAAW;QACtB,QAAQ,EAAE,WAAW;QACrB,UAAU,EAAE,aAAa;KAC1B;IACD;QACE,KAAK,EAAE,UAAU;QACjB,MAAM,EAAE,SAAS;QACjB,QAAQ,EAAE,eAAe;KAC1B;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;KAC3B;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;KACvB;IACD;QACE,KAAK,EAAE,OAAO;QACd,MAAM,EAAE,MAAM;QACd,QAAQ,EAAE,YAAY;QACtB,UAAU,EAAE,cAAc;KAC3B;IACD;QACE,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE,WAAW;KACtB;IACD;QACE,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,UAAU;QAClB,QAAQ,EAAE,gBAAgB;KAC3B;IACD;QACE,KAAK,EAAE,QAAQ;QACf,MAAM,EAAE,OAAO;QACf,QAAQ,EAAE,aAAa;KACxB;IACD;QACE,KAAK,EAAE,cAAc;QACrB,MAAM,EAAE,YAAY;QACpB,QAAQ,EAAE,kBAAkB;KAC7B;CACF,CAAC;AAEJ,MAAM,mBAAmB,GAA2B;IAClD,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,mBAAmB;IAC7B,iBAAiB,EAAE,mBAAmB;IACtC,mBAAmB,EAAE,mBAAmB;IACxC,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,qBAAqB;IAC5C,EAAE,EAAE,qBAAqB;IACzB,mBAAmB,EAAE,qBAAqB;IAC1C,qBAAqB,EAAE,qBAAqB;IAC5C,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,OAAO;IACb,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,UAAU;IACpB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,OAAO,EAAE,SAAS;IAClB,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,YAAY;IAC1B,cAAc,EAAE,gBAAgB;IAChC,gBAAgB,EAAE,gBAAgB;IAClC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,aAAa;IAC1B,WAAW,EAAE,aAAa;IAC1B,aAAa,EAAE,aAAa;IAC5B,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,eAAe;IAChC,gBAAgB,EAAE,kBAAkB;IACpC,kBAAkB,EAAE,kBAAkB;IACtC,aAAa,EAAE,eAAe;IAC9B,eAAe,EAAE,eAAe;IAChC,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,eAAe,EAAE,iBAAiB;IAClC,iBAAiB,EAAE,iBAAiB;IACpC,YAAY,EAAE,cAAc;IAC5B,cAAc,EAAE,cAAc;IAC9B,IAAI,EAAE,MAAM;CACb,CAAC;AAkGF,yFAAyF;AACzF,MAAM,+BAA+B,GAAG,CACtC,OAA6B,EACJ,EAAE;IAC3B,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAEhD,EAAE,CAAC;QACF,IAAI,+BAA+B,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7C,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,SAAS;QACX,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,mFAAmF;AACnF,MAAM,yBAAyB,GAAG,CAAC,OAA6B,EAAW,EAAE;IAC3E,OAAO,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAC1E,CAAC,CAAC;AAIF,sEAAsE;AACtE,MAAM,gBAAgB,GAA2B,CAAC,KAAK,EAAE,EAAE,CACzD,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AACnD,4EAA4E;AAC5E,MAAM,4BAA4B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACrD,CAAC,CAAC;AACF,8EAA8E;AAC9E,MAAM,4BAA4B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACrE,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;AACpD,CAAC,CAAC;AACF,oFAAoF;AACpF,MAAM,+BAA+B,GAA2B,CAAC,KAAK,EAAE,EAAE;IACxE,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,GAAG,CAAkB;QACtC,CAAC,MAAM,EAAE,IAAI,CAAC;QACd,CAAC,GAAG,EAAE,IAAI,CAAC;QACX,CAAC,OAAO,EAAE,KAAK,CAAC;QAChB,CAAC,GAAG,EAAE,KAAK,CAAC;KACb,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACnB,OAAO,MAAM,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,yBAAyB,GAE3B;IACF,QAAQ,EAAE,4BAA4B;IACtC,gBAAgB,EAAE,4BAA4B;IAC9C,KAAK,EAAE,4BAA4B;IACnC,IAAI,EAAE,4BAA4B;IAClC,UAAU,EAAE,+BAA+B;CAC5C,CAAC;AAEF,oFAAoF;AACpF,MAAM,wBAAwB,GAAG,CAC/B,SAAqC,EACrC,KAAc,EACL,EAAE;IACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,CAAC,yBAAyB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;AAC3E,CAAC,CAAC;AAEF,kEAAkE;AAClE,MAAM,mBAAmB,GAAG,CAAC,QAAgB,EAAU,EAAE;IACvD,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACtE,OAAO,mBAAmB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACvD,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,cAAc,GAAG,CAAC,IAAa,EAAE,KAAc,EAAW,EAAE;IAChE,OAAO,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,8BAA8B,GAAG,CACrC,KAAa,EACb,KAAc,EACL,EAAE;IACX,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,KAAK,cAAc,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC;AAEF,gEAAgE;AAChE,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,KAAc,EAAU,EAAE;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CAAC;IACtB,CAAC;IACD,IAAI,KAAK,KAAK,cAAc,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAgC,CAAC,CAAC,MAAM,CAAC;IAC9D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,kCAAkC,GAAG,CAAC,MAI3C,EAAU,EAAE;IACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC;AAC5D,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,uBAAuB,GAAG,CAC9B,MAA4B,EAC5B,GAA2C,EAClC,EAAE,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAE5D,gFAAgF;AAChF,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAU,EAAE,CACvD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AAE1C,6EAA6E;AAC7E,MAAM,2BAA2B,GAAG,CAClC,UAA4C,EAC5C,GAA4B,EAC5B,MAA4B,EACD,EAAE;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,YAAY,GAAG,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC;IACnD,MAAM,OAAO,GACX,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAClE,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,MAAM,GAAG,8BAA8B,CAC3C,UAAU,CAAC,KAAK,EAChB,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CACtB,CAAC;IACF,OAAO;QACL,KAAK,EAAE,UAAU,CAAC,KAAK;QACvB,MAAM;QACN,KAAK,EAAE;YACL,SAAS,EAAE,kCAAkC,CAAC;gBAC5C,OAAO;gBACP,KAAK;gBACL,WAAW;aACZ,CAAC;YACF,KAAK;YACL,OAAO;YACP,SAAS,EAAE,QAAQ;YACnB,YAAY,EAAE,WAAW;YACzB,YAAY,EAAE,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC;SAC7D;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,8EAA8E;AAC9E,MAAM,4BAA4B,GAAG,CACnC,GAA4B,EAC5B,MAA4B,EACX,EAAE;IACnB,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,KAAK,MAAM,UAAU,IAAI,oCAAoC,EAAE,CAAC;QAC9D,MAAM,IAAI,GAAG,2BAA2B,CAAC,UAAU,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,qBAAqB,GAAG,CAAC,KAAc,EAAY,EAAE;IACzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC;AACvE,CAAC,CAAC;AAEF,8EAA8E;AAC9E,+EAA+E;AAC/E,2EAA2E;AAC3E,2EAA2E;AAC3E,4BAA4B;AAC5B,MAAM,oBAAoB,GAAG,CAC3B,GAA4B,EAC5B,MAA4B,EACD,EAAE;IAC7B,IACE,CAAC;QACC,MAAM,CAAC,IAAI,KAAK,SAAS;QACzB,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;QACzC,qBAAqB,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC;KAC7C,CAAC,QAAQ,CAAC,IAAI,CAAC,EAChB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,QAAQ,GACZ,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,gBAAgB,CAAC,aAAa,EAAE,MAAM,CAAC,UAAU,CAAC;SAC7D,KAAK,EAAE;SACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC,CAAC;AAEF,gFAAgF;AAChF,2EAA2E;AAC3E,+EAA+E;AAC/E,kEAAkE;AAClE,MAAM,mCAAmC,GAAG,CAC1C,GAA4B,EAC5B,MAA4B,EACoB,EAAE;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,mBAAmB,CAAC;IACvC,MAAM,IAAI,GACR,MAAM,CAAC,kBAAkB,KAAK,SAAS;QACrC,CAAC,CAAC,MAAM;QACR,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,MAAM,QAAQ,GAAG,gCAAgC,CAC/C,uBAAuB,CAAC,IAAI,CAAC,EAC7B,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,QAAQ,CAChB,CAAC;IACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,CAC7C,CAAC,SAAS,EAAE,EAAE,CAAC,uBAAuB,SAAS,EAAE,CAClD,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,IAAI,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,CAAC,EAAE,CAAC;QAC5E,OAAO,EAAE,QAAQ,EAAE,CAAC;IACtB,CAAC;IACD,OAAO;QACL,MAAM,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,KAAK,EAAE;QACvD,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AAEF,0DAA0D;AAC1D,MAAM,yBAAyB,GAAG,CAChC,OAAwB,EACxB,GAA4B,EAC5B,MAA4B,EACtB,EAAE;IACR,KAAK,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAC/C,yBAAyB,CACqB,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,wBAAwB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,+BAA+B,GAAG,CACtC,OAAwB,EACxB,GAA4B,EAC5B,MAA4B,EAC5B,oBAA0C,EACpC,EAAE;IACR,MAAM,mBAAmB,GAAG,+BAA+B,CACzD,MAAiC,EACjC,oBAAoB,EACpB,CAAC,aAAa,CAAC,CAChB,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACjE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,kFAAkF;AAClF,MAAM,wBAAwB,GAAG,CAC/B,OAAwB,EACxB,GAA4B,EAC5B,KAA2B,EACrB,EAAE;IACR,KAAK,MAAM,aAAa,IAAI,KAAK,IAAI,EAAE,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,mBAAmB,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;AACH,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,oBAAoB,GAAG,CAC3B,IAAgB,EAChB,oBAA0C,EAC1C,SAA+B,EAAE,EAChB,EAAE;IACnB,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;IACD,yBAAyB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAChD,IACE,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;QACvC,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAC1C,CAAC;QACD,MAAM,QAAQ,GAAG,mCAAmC,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAC9B,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,qBAAqB,CACnD,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;QAChD,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAChC,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,GAAG,4BAA4B,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,+BAA+B,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAC5E,wBAAwB,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAErD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,OAAO;QACP,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7C,CAAC;AACJ,CAAC,CAAC;AAEF,qEAAqE;AACrE,MAAM,qBAAqB,GAAG,CAC5B,KAAyB,EACzB,cAAqC,EACb,EAAE;IAC1B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CACpD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,CAAC;QACF,MAAM,IAAI,UAAU,CAClB,kCAAkC,KAAK,eAAe,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAClF,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,oBAAoB,GAAG,CAAC,IAA6B,EAAQ,EAAE;IACnE,IAAI,IAAI,EAAE,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,UAAU,CAClB,+CAA+C,EAC/C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;AACH,CAAC,CAAC;AAoBF,MAAM,yBAAyB,GAA6B;IAC1D,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO;QACT,CAAC;QACD,MAAM,YAAY,GAAG,uBAAuB,CAC1C,QAAQ,EACR,+BAA+B,EAAE,CAClC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,CAAC;YAChD,MAAM,IAAI,UAAU,CAClB,qBAAqB,CACnB,MAAM,CAAC,IAAI,EACX,YAAY,CAAC,KAAK,EAClB,wBAAwB,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAClD,EACD,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,EAAE;QAC7B,IACE,MAAM,CAAC,MAAM,KAAK,SAAS;YAC3B,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,EACpD,CAAC;YACD,MAAM,eAAe,GAAG,cAAc,CAAC,WAAW,CAAC,GAAG,CACpD,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAC9B,CAAC;YACF,MAAM,IAAI,UAAU,CAClB,2BAA2B,MAAM,CAAC,MAAM,eAAe,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnF,SAAS,CAAC,KAAK,CAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAClC,oBAAoB,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,EAAE,EAAE,UAAU,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;YAC1C,+BAA+B,CAC7B,MAAM,CAAC,gBAAgB,EACvB,mBAAmB,CACpB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC;AAEF,oFAAoF;AACpF,MAAM,8BAA8B,GAAG,CACrC,MAA4B,EAC5B,QAAoB,EACpB,cAAqC,EACrC,MAAc,EACR,EAAE;IACR,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC;IAC7D,KAAK,MAAM,QAAQ,IAAI,yBAAyB,EAAE,CAAC;QACjD,QAAQ,CAAC,OAAO,CAAC,CAAC;IACpB,CAAC;AACH,CAAC,CAAC;AAEF,iEAAiE;AACjE,MAAM,qBAAqB,GAAG,KAAK,EAAE,MAKpC,EAA6B,EAAE;IAC9B,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,MAAM,CAAC,MAAM,EACb,6BAA6B,EAC7B,MAAM,CAAC,UAAU,EACjB,qCAAqC,CACtC,CAAC;IACF,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO;QAC9B,mCAAmC,UAAU,CAAC,EAAE,EAAE,CAAC;IACrD,MAAM,QAAQ,GAAG,MAAM,sBAAsB,CAC3C,UAAU,CAAC,KAAK,EAChB,CAAC,EAAE,EAAE,eAAe,EAAE,EAAE,CACtB,UAAU,CACR,EAAE,EACF,eAAe,EACf;QACE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM;QACrC,OAAO,EAAE,cAAc;QACvB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI;KAC5C,EACD,MAAM,CAAC,MAAM,CACd,CACJ,CAAC;IACF,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,MAAM;QACtC,OAAO,EAAE,KAAK;QACd,sBAAsB,EAAE,UAAU,CAAC,EAAE;QACrC,UAAU,EAAE;YACV,EAAE,EAAE,UAAU,CAAC,EAAE;YACjB,UAAU,EAAE,UAAU,CAAC,UAAU;YACjC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,gBAAgB,EAAE,6BAA6B,UAAU,CAAC,EAAE,EAAE;SAC/D;QACD,cAAc,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM;QAC5C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,GAAG,EAAE,QAAQ,CAAC,YAAY;KAC3B,CAAC;AACJ,CAAC,CAAC;AAEF,2EAA2E;AAC3E,MAAM,yBAAyB,GAAG,KAAK,EAAE,MASxC,EAA2C,EAAE;IAC5C,MAAM,iBAAiB,GAAyB;QAC9C,cAAc,EAAE,qCAAqC;QACrD,EAAE,EAAE,MAAM,CAAC,YAAY;QACvB,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC;QAC/D,aAAa,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QAC1C,YAAY,EAAE,MAAM,CAAC,OAAO;QAC5B,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,KAAK,EAAE,MAAM,CAAC,eAAe;KAC9B,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,uBAAuB,CAClD,MAAM,CAAC,MAAM,EACb,6BAA6B,EAC7B,MAAM,CAAC,YAAY,EACnB,iBAAiB,CAClB,CAAC;IACF,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,YAAY;QACvB,UAAU,EAAE,MAAM,CAAC,QAAQ;QAC3B,IAAI,EAAE,cAAc;QACpB,gBAAgB,EAAE,6BAA6B,MAAM,CAAC,YAAY,EAAE;KACrE,CAAC;AACJ,CAAC,CAAC;AAkBF,2EAA2E;AAC3E,8EAA8E;AAC9E,8EAA8E;AAC9E,8EAA8E;AAC9E,iDAAiD;AACjD,MAAM,4BAA4B,GAAG,CACnC,MAAe,EACf,aAA4C,EACtB,EAAE;IACxB,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,SAAS,GAAG;QAChB,GAAG,IAAI,GAAG,CACR,MAAM,CAAC,MAAM,CAAC;aACX,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;aAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CACvC;KACF,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACrD,CAAC,CAAC;AAEF,4EAA4E;AAC5E,MAAM,sBAAsB,GAAG,CAC7B,IAAoB,EACyC,EAAE,CAC/D,IAAI,CAAC,YAAY,KAAK,SAAS;IAC7B,CAAC,CAAC,EAAE;IACJ,CAAC,CAAC;QACE,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,eAAe,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;KAC1C,CAAC;AAER,+EAA+E;AAC/E,MAAM,4BAA4B,GAAG,KAAK,EACxC,MAAqB,EACc,EAAE;IACrC,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAClB,iCAAiC,MAAM,sBAAsB,EAC7D,SAAS,CAAC,SAAS,CACpB,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5C,OAAO;QACL,MAAM;QACN,QAAQ;QACR,cAAc,EAAE,4BAA4B,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC7D,oBAAoB,EAAE,2BAA2B,CAAC,QAAQ,CAAC,MAAM,CAAC;KACnE,CAAC;AACJ,CAAC,CAAC;AAEF,oEAAoE;AACpE,MAAM,8BAA8B,GAAG,CAAC,MAMvC,EAA6B,EAAE;IAC9B,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAClB,8CAA8C,EAC9C,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAClB,qDAAqD,EACrD,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,OAAO,qBAAqB,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;QAC7B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;KACtB,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,wEAAwE;AACxE,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAKlC,EAA2B,EAAE;IAC5B,MAAM,YAAY,GAAG,qBAAqB,CACxC,MAAM,CAAC,OAAO,CAAC,MAAM,EACrB,MAAM,CAAC,OAAO,CAAC,cAAc,CAC9B,CAAC;IACF,MAAM,MAAM,GAAG,MAAM,OAAO,CAC1B,YAAY,EACZ;QACE,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI;QACtB,OAAO,EAAE,SAAS;QAClB,KAAK,EAAE,SAAS;QAChB,MAAM,EAAE,SAAS;QACjB,WAAW,EAAE,IAAI;QACjB,IAAI,EAAE,IAAI;KACX,EACD,MAAM,CAAC,MAAM,CACd,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,oBAAoB,CAClB,IAAI,EACJ,MAAM,CAAC,OAAO,CAAC,oBAAoB,EACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CACtB,CACF,CAAC;IACF,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,IAAI,IAAI;QAC9B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,CACE,MAAM,OAAO,CACX,SAAS,EACT;YACE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;YAC5B,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;SACX,EACD,MAAM,CAAC,MAAM,CACd,CACF,CAAC,KAAK,CAAC;IACd,OAAO;QACL,MAAM;QACN,OAAO;QACP,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3D,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,YAAY;QACZ,YAAY,EAAE,4BAA4B,CACxC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,EACxB,cAAc,CACf;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,2BAA2B,GAAG,CAClC,IAAoB,EACF,EAAE,CAAC,CAAC;IACtB,IAAI,EAAE,SAAS;IACf,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;IAC5B,sBAAsB,EAAE,IAAI,CAAC,aAAa;IAC1C,UAAU,EAAE,IAAI,CAAC,OAAO;IACxB,GAAG,EAAE,EAAE;IACP,GAAG,sBAAsB,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AAEH,+EAA+E;AAC/E,MAAM,yBAAyB,GAAG,CAAC,IAAoB,EAAoB,EAAE,CAAC,CAAC;IAC7E,IAAI,EAAE,OAAO;IACb,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;IAC5B,sBAAsB,EAAE,IAAI,CAAC,aAAa;IAC1C,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;IACvC,YAAY,EAAE,CAAC;IACf,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QAC/B,EAAE,EAAE,GAAG,CAAC,EAAE;QACV,MAAM,EAAE,SAAkB;QAC1B,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpD,CAAC,CAAC;IACH,GAAG,EAAE,EAAE;IACP,GAAG,sBAAsB,CAAC,IAAI,CAAC;CAChC,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAMlC,EAAuE,EAAE;IACxE,MAAM,IAAI,GAA+B,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,aAAa,GACjB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,qBAAqB,MAAM,CAAC,YAAY,EAAE,CAAC;IAC9E,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAC1E,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC;YACpD,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAClC,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAC5B,IAAI,CAAC,EAAE,EACP;gBACE,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM;gBACxB,OAAO,EAAE,aAAa;gBACtB,oBAAoB,EAAE,CAAC,aAAa,CAAC;aACtC,EACD,MAAM,CAAC,MAAM,CACd,CAAC;YACF,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,MAAM,CAAC,cAAc;gBACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ;aAC1B,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC;gBACR,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,cAAc,CAAC,KAAK,CAAC;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;AAC9B,CAAC,CAAC;AAEF,6EAA6E;AAC7E,MAAM,mBAAmB,GAAG,KAAK,EAAE,MAKlC,EAA6B,EAAE;IAC9B,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,YAAY,GAAG,kBAAkB,CACrC,6BAA6B,EAC7B,QAAQ,CACT,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5E,MAAM,eAAe,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;SAC7C,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7C,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IACxE,MAAM,cAAc,GAClB,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK,KAAK;QACjC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,MAAM,yBAAyB,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM;YAC7B,YAAY;YACZ,QAAQ;YACR,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY;YACtC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;YACnC,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;YACxC,eAAe;SAChB,CAAC,CAAC;IACT,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC;QACxC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK;QAC/B,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO;QAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,YAAY;KACb,CAAC,CAAC;IACH,kDAAkD;IAClD,MAAM,WAAW,GAAG,CAAC,MAA0C,EAAU,EAAE,CACzE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO;QACL,IAAI,EAAE,OAAO;QACb,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;QAC9C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO;QACnC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;QACjD,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;QACrC,aAAa,EAAE,WAAW,CAAC,SAAS,CAAC;QACrC,YAAY,EAAE,WAAW,CAAC,QAAQ,CAAC;QACnC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,GAAG,EAAE,OAAO,CAAC,UAAU;QACvB,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC;KACvC,CAAC;AACJ,CAAC,CAAC;AAEF,gFAAgF;AAChF,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,OAAiC,EACjC,MAAqB,EACM,EAAE;IAC7B,MAAM,OAAO,GAAG,MAAM,4BAA4B,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,UAAU,GACd,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACtE,MAAM,aAAa,GAAG,+BAA+B,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtE,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,8BAA8B,CAAC;YACpC,OAAO;YACP,UAAU;YACV,OAAO;YACP,MAAM;YACN,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,MAAM,IAAI,UAAU,CAClB,wFAAwF,kCAAkC,IAAI,EAC9H,SAAS,CAAC,KAAK,CAChB,CAAC;IACJ,CAAC;IACD,8BAA8B,CAC5B,OAAO,CAAC,MAAM,EACd,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,cAAc,EACtB,OAAO,CAAC,MAAM,CACf,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC;QACrC,OAAO;QACP,MAAM;QACN,OAAO;QACP,aAAa;KACd,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,MAAM,KAAK,IAAI;QAC5B,CAAC,CAAC,2BAA2B,CAAC,IAAI,CAAC;QACnC,CAAC,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC;AAEF,yGAAyG;AACzG,MAAM,CAAC,MAAM,0BAA0B,GAAG;IACxC,8BAA8B;IAC9B,4BAA4B;IAC5B,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,yBAAyB;IACzB,cAAc;IACd,qBAAqB;IACrB,8BAA8B;IAC9B,qBAAqB;IACrB,mBAAmB;IACnB,oBAAoB;IACpB,+BAA+B;IAC/B,wBAAwB;CACzB,CAAC","debugId":"c71478fc-d38f-5d1b-b0de-632e04f83a80"}
|
|
@@ -22,7 +22,7 @@ export interface UpdateCommandOptions extends MutationMetadataCommandOptions, Sh
|
|
|
22
22
|
/** Value that configures or reports close reason for this contract. */
|
|
23
23
|
closeReason?: string;
|
|
24
24
|
/** Value that configures or reports priority for this contract. */
|
|
25
|
-
priority?: string;
|
|
25
|
+
priority?: string | number;
|
|
26
26
|
/** Schema type that determines the shape and validation rules for this value. */
|
|
27
27
|
type?: string;
|
|
28
28
|
/** Value that configures or reports tags for this contract. */
|
|
@@ -31,6 +31,10 @@ export interface UpdateCommandOptions extends MutationMetadataCommandOptions, Sh
|
|
|
31
31
|
addTags?: string[];
|
|
32
32
|
/** Value that configures or reports remove tags for this contract. */
|
|
33
33
|
removeTags?: string[];
|
|
34
|
+
/** Acceptance criteria appended individually without replacing the existing list. */
|
|
35
|
+
addAc?: string[];
|
|
36
|
+
/** Acceptance criteria removed individually by exact text match. */
|
|
37
|
+
removeAc?: string[];
|
|
34
38
|
/** Value that configures or reports force for this contract. */
|
|
35
39
|
force?: boolean;
|
|
36
40
|
/** Value that configures or reports dep remove for this contract. */
|