@maycombhq/atticus 2.0.0-beta.21 → 2.0.0-beta.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.js +3 -3
- package/dist/{chunk-TJH2EUAZ.js → chunk-23XVSEV5.js} +20 -18
- package/dist/{chunk-BXBCMGIQ.js → chunk-24OXGB3P.js} +1 -1
- package/dist/{chunk-DCWN3HFV.js → chunk-24XLDU72.js} +4 -3
- package/dist/{chunk-Q46QDDMF.js → chunk-2F4CYZKJ.js} +14 -9
- package/dist/{chunk-75ASLHBT.js → chunk-2GF7OLF3.js} +17 -15
- package/dist/chunk-2IIMFOPM.js +41 -0
- package/dist/{chunk-JRVNXLZP.js → chunk-2LGRMVCA.js} +14 -12
- package/dist/{chunk-62DLJSLV.js → chunk-2MMCFP5C.js} +10 -8
- package/dist/{chunk-UF4UHCIG.js → chunk-2Q56PQPS.js} +6 -4
- package/dist/{chunk-5TDRBOAV.js → chunk-2Q5EDGEO.js} +7 -5
- package/dist/{chunk-NYOABJNK.js → chunk-2RLKFUUL.js} +26 -24
- package/dist/chunk-2SKB4O2E.js +59 -0
- package/dist/{chunk-GCS3FZOB.js → chunk-34S2WGOB.js} +13 -4
- package/dist/{chunk-7AB6OWTV.js → chunk-3NFFJL5D.js} +31 -25
- package/dist/{chunk-GC2VK3JT.js → chunk-3NWDLGG6.js} +28 -25
- package/dist/{chunk-FLVZFTLQ.js → chunk-3RM4UK6W.js} +20 -18
- package/dist/{chunk-CNU5Q2D5.js → chunk-42SIDKEU.js} +37 -29
- package/dist/{chunk-K6JB6XTX.js → chunk-4EURQWQD.js} +20 -15
- package/dist/{chunk-OMPENNWY.js → chunk-4U276ICE.js} +1 -1
- package/dist/{chunk-JAABT3DA.js → chunk-53T4O55J.js} +4 -3
- package/dist/{chunk-YTTNTQOX.js → chunk-57TDNMI3.js} +17 -15
- package/dist/chunk-5BD2KYLE.js +57 -0
- package/dist/{chunk-7EFILTCI.js → chunk-5F7GFN2F.js} +28 -0
- package/dist/{chunk-KYZMRSPS.js → chunk-5NMKONLP.js} +5 -3
- package/dist/{chunk-5CMPVC3N.js → chunk-5SJZW52K.js} +25 -23
- package/dist/{chunk-YAH5IQAL.js → chunk-63YRMR6J.js} +6 -5
- package/dist/{chunk-GUYL7RMK.js → chunk-66PPNOON.js} +27 -25
- package/dist/chunk-6H3Z5JHH.js +64 -0
- package/dist/{chunk-Y6K3CJBU.js → chunk-6MUGR4LS.js} +75 -27
- package/dist/{chunk-DDJPM5YX.js → chunk-6OJQOPUN.js} +5 -3
- package/dist/{chunk-2V2ZPQQU.js → chunk-6PPOWY5E.js} +9 -7
- package/dist/{chunk-YO2PKTXT.js → chunk-6ZGLAACW.js} +5 -3
- package/dist/{chunk-LIJJCBQI.js → chunk-6ZJ5A7AF.js} +15 -16
- package/dist/{chunk-64AADMTW.js → chunk-745DAZ4L.js} +50 -12
- package/dist/{chunk-VYOCPTUB.js → chunk-7ASNL4Q4.js} +17 -15
- package/dist/{chunk-XEQCQO66.js → chunk-7BR7IPOH.js} +10 -8
- package/dist/{chunk-X2CUXTWU.js → chunk-7DOR27HL.js} +6 -6
- package/dist/{chunk-G6IQYM25.js → chunk-7FTTA3HD.js} +8 -6
- package/dist/{chunk-FAJDKNSD.js → chunk-7GJS6DNX.js} +8 -3
- package/dist/{chunk-4KNOJC6J.js → chunk-7IGKHZ4Z.js} +55 -13
- package/dist/{chunk-3WON4G3M.js → chunk-7IOWA5D5.js} +11 -6
- package/dist/{chunk-PNQLCRSS.js → chunk-7JITZFJC.js} +7 -5
- package/dist/{chunk-2D7PWSOK.js → chunk-7MJSQTL5.js} +22 -20
- package/dist/{chunk-AE4P57KK.js → chunk-7UOMVMFG.js} +17 -15
- package/dist/{chunk-GK4PYVEC.js → chunk-AFWUDXEM.js} +10 -8
- package/dist/chunk-AFZ3QA6W.js +47 -0
- package/dist/{chunk-7FUIVIBG.js → chunk-AJQ72EBM.js} +13 -8
- package/dist/{chunk-QOOEYDNJ.js → chunk-AJYXNTNZ.js} +6 -6
- package/dist/chunk-AVTBS4OW.js +49 -0
- package/dist/{chunk-WFU77T3A.js → chunk-BDKC6H5P.js} +5 -5
- package/dist/{chunk-3AQ2R5NL.js → chunk-BEVTIBRH.js} +9 -7
- package/dist/{chunk-J5AAZ6OJ.js → chunk-BHT7QK4G.js} +5 -4
- package/dist/{chunk-UFE36WJH.js → chunk-BIGDQDHD.js} +6 -4
- package/dist/{chunk-WNTIOBOG.js → chunk-BO4KX37X.js} +20 -18
- package/dist/{chunk-455SYIIE.js → chunk-BPK5P77O.js} +5 -3
- package/dist/{chunk-OZJ3JLYI.js → chunk-BQ4SQQC6.js} +10 -9
- package/dist/chunk-BQGDB6ZL.js +7342 -0
- package/dist/{chunk-EZIN5E5B.js → chunk-BTGPE6CR.js} +11 -9
- package/dist/{chunk-265LWMOA.js → chunk-BTY3HZBO.js} +18 -16
- package/dist/{chunk-TW3KOSQK.js → chunk-BXYMYEJ4.js} +7 -6
- package/dist/{chunk-HK3VOHIE.js → chunk-C3RY6KU6.js} +119 -18
- package/dist/chunk-C4R4JLHE.js +40 -0
- package/dist/{chunk-Z3QFH7YG.js → chunk-CADWLE2T.js} +5 -4
- package/dist/{chunk-J2O4LFVI.js → chunk-CBGGOQWU.js} +6 -4
- package/dist/chunk-CMDXGQTS.js +47 -0
- package/dist/{chunk-TWQRPM76.js → chunk-CQDGOPGH.js} +23 -16
- package/dist/{chunk-5PV7S2ZP.js → chunk-CX4RZ2KS.js} +4 -3
- package/dist/{chunk-JYMIB5XY.js → chunk-CXJ6FUKN.js} +164 -44
- package/dist/{chunk-D57MFJPP.js → chunk-D73UEXYW.js} +3 -3
- package/dist/{chunk-UYLBRRFK.js → chunk-DCZWQLYT.js} +125 -26
- package/dist/chunk-DLOBCJL6.js +48 -0
- package/dist/{chunk-IFHDV6KQ.js → chunk-DOBQKHIF.js} +23 -23
- package/dist/{chunk-QJCJOMW3.js → chunk-E3ISYXO3.js} +19 -21
- package/dist/{chunk-VAMHOHUU.js → chunk-E6ZIEVOI.js} +16 -13
- package/dist/{chunk-EFCQSMXB.js → chunk-EBL2R3YG.js} +10 -4
- package/dist/{chunk-HGHRSF3E.js → chunk-EGQRREQH.js} +25 -17
- package/dist/{chunk-3J5I7ZOU.js → chunk-EHA7RMZ3.js} +4 -4
- package/dist/{chunk-7CZHUZBL.js → chunk-EIPTLPFC.js} +38 -27
- package/dist/{chunk-UZACEG2C.js → chunk-EMRIQUND.js} +17 -15
- package/dist/{chunk-RALY3E5U.js → chunk-EPCJQQWD.js} +6 -4
- package/dist/{chunk-VUVGX5L2.js → chunk-F3P7N7SF.js} +1 -1
- package/dist/{chunk-RA33EYS4.js → chunk-FFLNS6VP.js} +19 -17
- package/dist/{chunk-OPQZISG3.js → chunk-FFTRTL6R.js} +5 -4
- package/dist/{chunk-DUPZPDCJ.js → chunk-FPJPLKDW.js} +18 -14
- package/dist/{chunk-2HH3UCZM.js → chunk-FSMSFDLD.js} +5 -4
- package/dist/{chunk-AHW3RY3X.js → chunk-FUJM6RTF.js} +8 -7
- package/dist/{chunk-2UCRFXFZ.js → chunk-FZOJFH7Q.js} +13 -11
- package/dist/{chunk-BVWWPBKD.js → chunk-G6X77UJZ.js} +20 -18
- package/dist/{chunk-BPPU3PW7.js → chunk-GCWRWSU7.js} +10 -4
- package/dist/chunk-GIW4ZVDB.js +39 -0
- package/dist/{chunk-FY3QIRTL.js → chunk-GUX3PTYM.js} +3 -3
- package/dist/{chunk-BA2HUMDN.js → chunk-GZY6RUZ6.js} +2 -2
- package/dist/chunk-H4VO6WG3.js +10 -0
- package/dist/{chunk-UEVZZZU2.js → chunk-H5HBGNXU.js} +5 -4
- package/dist/{chunk-GS76RXQE.js → chunk-H7KM7LZE.js} +15 -12
- package/dist/{chunk-I2A3Z5AK.js → chunk-HNM2YQT2.js} +4 -4
- package/dist/{chunk-3UTYPHN3.js → chunk-HYU5VLGA.js} +1 -1
- package/dist/{chunk-HSZMPH5T.js → chunk-IDKCWSM5.js} +225 -50
- package/dist/{chunk-BXZ4PKIT.js → chunk-IFKEI4SA.js} +15 -11
- package/dist/{chunk-XG4WJHLQ.js → chunk-IGOE6KPG.js} +49 -20
- package/dist/{chunk-GNWAOVFQ.js → chunk-IH2XURVQ.js} +5 -5
- package/dist/{chunk-YIGBJNH4.js → chunk-INQHESFB.js} +5 -4
- package/dist/chunk-IP74LCOQ.js +57 -0
- package/dist/chunk-IPHHDDC6.js +45 -0
- package/dist/{chunk-5WERBKLE.js → chunk-ISUAAMGS.js} +42 -221
- package/dist/{chunk-7FHNFCHK.js → chunk-IUPG3UKI.js} +154 -368
- package/dist/{chunk-HWD4JPU7.js → chunk-IVBOQAGB.js} +4 -2
- package/dist/{chunk-4SLBCEPD.js → chunk-J2JAKCIW.js} +88 -57
- package/dist/{chunk-G5YJBNDZ.js → chunk-J3IOLXWM.js} +8 -6
- package/dist/{chunk-FQ6WH6PB.js → chunk-JA5FI3QV.js} +6 -4
- package/dist/chunk-JAVI7JSP.js +49 -0
- package/dist/{chunk-ZFQMMU5Y.js → chunk-JB5LINEM.js} +6 -2
- package/dist/{chunk-LQH4P45K.js → chunk-JENSEMXF.js} +1 -1
- package/dist/{chunk-M6D2U3YM.js → chunk-JJF6HALY.js} +4 -3
- package/dist/chunk-JLUCKAEL.js +38 -0
- package/dist/{chunk-M4H2UG4R.js → chunk-JRBFANFE.js} +19 -16
- package/dist/{chunk-YZDZOEV4.js → chunk-KDNTAPLX.js} +3 -3
- package/dist/{chunk-IFFRGC3N.js → chunk-KFAVQZSX.js} +14 -12
- package/dist/chunk-KJXD4PNL.js +50 -0
- package/dist/chunk-KN5BXMWN.js +44 -0
- package/dist/{chunk-HXXP2NTE.js → chunk-KQGURXFU.js} +9 -7
- package/dist/{chunk-PQH56YF6.js → chunk-KXITGYLF.js} +6 -4
- package/dist/{chunk-MMZUN7ZO.js → chunk-L27SV425.js} +22 -20
- package/dist/{chunk-XQ3YZ4QW.js → chunk-LDLL7LB3.js} +24 -22
- package/dist/{chunk-6DQYZU2W.js → chunk-LFGTYX5U.js} +15 -15
- package/dist/{chunk-4D62IZII.js → chunk-LGBMTVNT.js} +7 -5
- package/dist/{chunk-YKTE2RU3.js → chunk-LGFL54FP.js} +3 -2
- package/dist/{chunk-GDZB57IU.js → chunk-LJXMYKZJ.js} +7 -5
- package/dist/{chunk-YJ3TBOTK.js → chunk-LKOR5UET.js} +29 -26
- package/dist/{chunk-WIWTJMMR.js → chunk-LNBQOP7D.js} +23 -21
- package/dist/{chunk-TGVVUKTG.js → chunk-LO6P2VYG.js} +2 -2
- package/dist/{chunk-HE3HRDNZ.js → chunk-LQJPN536.js} +2 -2
- package/dist/{chunk-PRW3HXM3.js → chunk-LYBNHMVZ.js} +29 -5
- package/dist/{chunk-75ZOZFGH.js → chunk-LZ7NUC62.js} +20 -18
- package/dist/chunk-M32BLWDH.js +37 -0
- package/dist/{chunk-QKMRFNMA.js → chunk-M3NANSDZ.js} +17 -15
- package/dist/chunk-MFHL5URL.js +31 -0
- package/dist/{chunk-TYD6I4CZ.js → chunk-MFR5OPBD.js} +6 -6
- package/dist/{chunk-LIRVU3HW.js → chunk-MG4ZL5RW.js} +32 -20
- package/dist/{chunk-ICHDSWEY.js → chunk-MO6P2JZH.js} +10 -8
- package/dist/{chunk-3LZ6P5EP.js → chunk-MUWDB4R4.js} +1 -1
- package/dist/{chunk-E57AOFYN.js → chunk-MZCGSXVR.js} +15 -13
- package/dist/{chunk-77O633L5.js → chunk-N3XIYPU3.js} +14 -12
- package/dist/{chunk-CG6CULP6.js → chunk-NDCF4R6S.js} +7 -5
- package/dist/{chunk-JS6WMC3J.js → chunk-NR2UJWOC.js} +10 -8
- package/dist/chunk-NXJ5URP6.js +51 -0
- package/dist/{chunk-NTAVOWYD.js → chunk-NY2XSR5K.js} +20 -18
- package/dist/{chunk-PUEWDYGP.js → chunk-O45HFTFS.js} +3 -2
- package/dist/{chunk-URIKUID7.js → chunk-O4GXGGBX.js} +14 -12
- package/dist/{chunk-C7CEK3KW.js → chunk-O5PXQR67.js} +7 -5
- package/dist/{chunk-E2VXBSIR.js → chunk-O66DM6DJ.js} +6 -4
- package/dist/{chunk-P2VBXX7N.js → chunk-O7FDLW7L.js} +11 -9
- package/dist/{chunk-COYN3UAN.js → chunk-O7XLYEFA.js} +59 -22
- package/dist/{chunk-5QUOPNLN.js → chunk-OHNCWBKF.js} +4 -4
- package/dist/{chunk-AZDITBCT.js → chunk-OHVTTOPS.js} +3 -3
- package/dist/chunk-OMI6FPPN.js +43 -0
- package/dist/chunk-ONUPY3H6.js +53 -0
- package/dist/chunk-OTLDSZDV.js +69 -0
- package/dist/{chunk-L4CESDPB.js → chunk-OUBGGKDU.js} +1 -1
- package/dist/{chunk-4FOAYLI4.js → chunk-OWNCM4ZN.js} +9 -7
- package/dist/{chunk-4B6BT75O.js → chunk-P2V7QW4D.js} +81 -24
- package/dist/{chunk-QHJJMZLX.js → chunk-P32RUW3B.js} +167 -92
- package/dist/{chunk-F6H2RJ3N.js → chunk-PAQ2AS5E.js} +1 -1
- package/dist/{chunk-ZLS6PU2O.js → chunk-PBPBMP2B.js} +4 -3
- package/dist/{chunk-ZOSD4FXV.js → chunk-PJSJPMJI.js} +3 -3
- package/dist/{chunk-XOL3GFW2.js → chunk-PKBHS4AA.js} +68 -31
- package/dist/{chunk-ZZFHLRQW.js → chunk-PMUAJGLI.js} +18 -16
- package/dist/{chunk-SH27FYPF.js → chunk-PPD7HTDP.js} +20 -18
- package/dist/chunk-PSOFBQWB.js +42 -0
- package/dist/{chunk-PAINMSID.js → chunk-Q2TECDIT.js} +987 -7619
- package/dist/{chunk-LU4MQVAL.js → chunk-Q4K5WB2W.js} +11 -10
- package/dist/{chunk-ECLXZWAG.js → chunk-Q6DFNVRJ.js} +14 -12
- package/dist/chunk-QA4O2GGC.js +265 -0
- package/dist/{chunk-4WXRPQDE.js → chunk-QAXW2N3B.js} +182 -33
- package/dist/{chunk-WCEF7H6L.js → chunk-QFWA2DPH.js} +8 -5
- package/dist/{chunk-CPK7QSBG.js → chunk-QKUJMING.js} +8 -6
- package/dist/{chunk-LEBR5NHW.js → chunk-R44CYFPV.js} +18 -15
- package/dist/{chunk-BEPCKDCP.js → chunk-R7NYHMUU.js} +153 -84
- package/dist/{chunk-G6X4YL4D.js → chunk-REWWDVQB.js} +5 -4
- package/dist/{chunk-LN77DXBM.js → chunk-RGERPOIV.js} +10 -10
- package/dist/{chunk-UDXWIPCB.js → chunk-RLDGWLQ7.js} +9 -7
- package/dist/chunk-RUGXBPWI.js +384 -0
- package/dist/{chunk-FYBF5MB2.js → chunk-RXPJMEOW.js} +13 -11
- package/dist/{chunk-K332XW7K.js → chunk-S4PMJU6H.js} +20 -9
- package/dist/{chunk-THN26IEF.js → chunk-S7FCV7S5.js} +4 -1
- package/dist/{chunk-OV57AHCG.js → chunk-SDKLKB6I.js} +26 -24
- package/dist/{chunk-O4IKAIZ2.js → chunk-SFSPGFCV.js} +28 -22
- package/dist/{chunk-TQ4TG57V.js → chunk-SFUP7TTO.js} +4 -4
- package/dist/{chunk-YBOVNMHC.js → chunk-SLXZOMA6.js} +29 -16
- package/dist/{chunk-LWDNKE4X.js → chunk-SQV37XO2.js} +6 -6
- package/dist/{chunk-67BP7HXL.js → chunk-SU74NDMQ.js} +19 -17
- package/dist/{chunk-JKIGL3XQ.js → chunk-SYV5LHML.js} +36 -33
- package/dist/chunk-T4YPZIQN.js +36 -0
- package/dist/{chunk-GX74YWR7.js → chunk-T6DQR5TV.js} +16 -14
- package/dist/{chunk-LNWEWYCM.js → chunk-THDMSZ3R.js} +345 -253
- package/dist/{chunk-NCB6656Z.js → chunk-TNR75OXT.js} +7 -7
- package/dist/{chunk-ODMBPDDV.js → chunk-TUULXQRW.js} +124 -2
- package/dist/{chunk-MD7KUEJ3.js → chunk-TYQBFTBR.js} +9 -7
- package/dist/chunk-U76OWS3Q.js +49 -0
- package/dist/{chunk-GSGIZ2OO.js → chunk-UCROWG2D.js} +27 -24
- package/dist/{chunk-PTQ3ZALZ.js → chunk-UF4AZOZB.js} +14 -12
- package/dist/{chunk-QE527XRY.js → chunk-UF4GLFBX.js} +26 -23
- package/dist/{chunk-YWAKDNMH.js → chunk-UGUP3ZM6.js} +70 -19
- package/dist/{chunk-3G6S7LAA.js → chunk-UNAGJYET.js} +14 -12
- package/dist/{chunk-EDZ45WIR.js → chunk-UOR2DTHH.js} +16 -14
- package/dist/{chunk-42EPP7OB.js → chunk-UPOY4YSQ.js} +14 -12
- package/dist/{chunk-API5TOUB.js → chunk-UPS2DGFC.js} +1 -1
- package/dist/{chunk-D2WSW4GU.js → chunk-UUU4CLJG.js} +4 -2
- package/dist/{chunk-ZKYRDV7A.js → chunk-UWMJKX5U.js} +14 -12
- package/dist/{chunk-HS4BGB4G.js → chunk-UWOJLHFT.js} +25 -23
- package/dist/{chunk-OKUB6RJA.js → chunk-VBTP56CE.js} +8 -6
- package/dist/{chunk-3SSTNB4E.js → chunk-VCTWPLAO.js} +34 -14
- package/dist/{chunk-YF5DZCPN.js → chunk-VNU26RCO.js} +37 -34
- package/dist/{chunk-AOCWFA7T.js → chunk-VTZMAJ3W.js} +8 -8
- package/dist/{chunk-ZQLRCA2V.js → chunk-VW62D6QE.js} +10 -8
- package/dist/{chunk-WAZEXEJH.js → chunk-VY72R2XZ.js} +45 -2
- package/dist/{chunk-WEOMJHPV.js → chunk-VZALIKIF.js} +18 -15
- package/dist/{chunk-TSM6T6GQ.js → chunk-W62H2XSO.js} +25 -23
- package/dist/{chunk-BC6KKZ67.js → chunk-W7VWI2YH.js} +9 -6
- package/dist/{chunk-LO3BLMVG.js → chunk-WERM6KPJ.js} +7 -4
- package/dist/{chunk-36RY7ZXM.js → chunk-WF7B67YE.js} +88 -26
- package/dist/{chunk-TQTRWENN.js → chunk-WG5U3F5V.js} +14 -12
- package/dist/{chunk-NRQ65LTQ.js → chunk-WJF2CS6M.js} +6 -5
- package/dist/{chunk-FVMPFCDS.js → chunk-WKUJ3KPV.js} +4 -4
- package/dist/{chunk-BA3U7ALS.js → chunk-WMTRHUI5.js} +26 -22
- package/dist/chunk-WNKPRSGI.js +36 -0
- package/dist/{chunk-GIFMBCTW.js → chunk-WXFLMQSR.js} +10 -8
- package/dist/{chunk-JYTIHTIK.js → chunk-X3WY6MN3.js} +4 -4
- package/dist/{chunk-S2RY3BOD.js → chunk-X4CXA2IL.js} +31 -21
- package/dist/{chunk-26Z7OGQW.js → chunk-X5F3Q5LV.js} +60 -30
- package/dist/{chunk-4CLK2RJO.js → chunk-XD75VZIH.js} +6 -4
- package/dist/{chunk-KDAHXQIE.js → chunk-XERYFDB5.js} +37 -34
- package/dist/{chunk-U3NBK4EU.js → chunk-XI2LCCYQ.js} +8 -8
- package/dist/{chunk-MZGRDONP.js → chunk-Y2EQNWKV.js} +55 -38
- package/dist/{chunk-A2G72UI4.js → chunk-YHCMZC2J.js} +7 -7
- package/dist/{chunk-4TKVU2I2.js → chunk-YYY3AZFE.js} +2 -2
- package/dist/{chunk-2HTEMYTB.js → chunk-Z5IA3WDR.js} +17 -15
- package/dist/{chunk-FRHD22WM.js → chunk-ZFFYNRIO.js} +25 -23
- package/dist/{chunk-6EXDI5GI.js → chunk-ZFL7NY4F.js} +43 -40
- package/dist/{chunk-4PYC2UGC.js → chunk-ZGULQAPZ.js} +7 -4
- package/dist/{chunk-4SKZDI62.js → chunk-ZIUFM5HT.js} +3 -1
- package/dist/{chunk-CNPY4NTZ.js → chunk-ZJFRMSJT.js} +15 -13
- package/dist/{chunk-Q26LDIUV.js → chunk-ZJXLNDH4.js} +18 -15
- package/dist/{chunk-LPV6T362.js → chunk-ZQ3ON2VQ.js} +8 -6
- package/dist/{chunk-ZX7235KR.js → chunk-ZQ7SKESZ.js} +44 -383
- package/dist/{chunk-7QPCGTPS.js → chunk-ZQXZ2SES.js} +24 -21
- package/dist/{chunk-4CYTJ5TZ.js → chunk-ZX57KSEQ.js} +4 -3
- package/dist/{chunk-37WE3LS2.js → chunk-ZZK56BLP.js} +5 -3
- package/dist/files.json +533 -509
- package/dist/packages/sdk/npm/index.js +448 -67
- package/dist/packages/ui/dist/assets/{elk-api-CowTnhEJ.js → elk-api-CIf-0gz5.js} +2 -2
- package/dist/packages/ui/dist/assets/index-CoK_Dl0D.js +47 -0
- package/dist/packages/ui/dist/index.html +2 -1
- package/package.json +4 -4
- package/dist/chunk-26WBY34Y.js +0 -37
- package/dist/chunk-3TD6S4TC.js +0 -49
- package/dist/chunk-5G7ILBUG.js +0 -66
- package/dist/chunk-6FNAKCET.js +0 -38
- package/dist/chunk-AM6FP6JW.js +0 -43
- package/dist/chunk-CFH3QH26.js +0 -29
- package/dist/chunk-CLD4RVTA.js +0 -45
- package/dist/chunk-D5KV5PSK.js +0 -45
- package/dist/chunk-D5MASS4I.js +0 -48
- package/dist/chunk-DN4A2Q2O.js +0 -57
- package/dist/chunk-FGAGWYZB.js +0 -47
- package/dist/chunk-JITJP64K.js +0 -34
- package/dist/chunk-JRXHON4E.js +0 -41
- package/dist/chunk-JU4QNJSR.js +0 -62
- package/dist/chunk-N3RUGTGV.js +0 -39
- package/dist/chunk-PKJAV25S.js +0 -43
- package/dist/chunk-PRTBPXYA.js +0 -50
- package/dist/chunk-PRZ7KMWL.js +0 -42
- package/dist/chunk-QSIDVFB7.js +0 -45
- package/dist/chunk-SB5GRUFM.js +0 -54
- package/dist/chunk-T74WQQGS.js +0 -40
- package/dist/chunk-X7EMBM5X.js +0 -34
- package/dist/chunk-Z6VLC5X4.js +0 -36
- package/dist/chunk-ZPDDEVQX.js +0 -47
- package/dist/packages/ui/dist/assets/index-z2wv0d5d.js +0 -47
|
@@ -8,22 +8,22 @@ import {
|
|
|
8
8
|
addStoreReference,
|
|
9
9
|
readStoreMarker,
|
|
10
10
|
readStoreVia
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-UUU4CLJG.js";
|
|
12
12
|
import {
|
|
13
13
|
AdapterError,
|
|
14
14
|
mergeBlockers,
|
|
15
15
|
requireApproval
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-7IGKHZ4Z.js";
|
|
17
17
|
import {
|
|
18
18
|
outsideProfileSystems,
|
|
19
19
|
readCatalog
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-J2JAKCIW.js";
|
|
21
21
|
import {
|
|
22
22
|
baseClonePath,
|
|
23
23
|
createGit,
|
|
24
24
|
readChangeRepos,
|
|
25
25
|
writeChangeRepos
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-PKBHS4AA.js";
|
|
27
27
|
import {
|
|
28
28
|
ChangeArtifact,
|
|
29
29
|
ChangeLifecycle,
|
|
@@ -50,13 +50,15 @@ import {
|
|
|
50
50
|
questionsRelOf,
|
|
51
51
|
readFlow,
|
|
52
52
|
readQuestion,
|
|
53
|
-
require_dist,
|
|
54
53
|
specFlowFiles,
|
|
55
54
|
toCanonicalYaml
|
|
56
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-Q2TECDIT.js";
|
|
57
56
|
import {
|
|
58
57
|
writeFileAtomic
|
|
59
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-TUULXQRW.js";
|
|
59
|
+
import {
|
|
60
|
+
require_dist
|
|
61
|
+
} from "./chunk-BQGDB6ZL.js";
|
|
60
62
|
import {
|
|
61
63
|
__toESM
|
|
62
64
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -628,22 +630,33 @@ function changeStore(root) {
|
|
|
628
630
|
await writeFileAtomic(path, serializeChange(value));
|
|
629
631
|
return path;
|
|
630
632
|
},
|
|
633
|
+
listWithProblems,
|
|
631
634
|
async list() {
|
|
632
|
-
|
|
635
|
+
return (await listWithProblems()).changes;
|
|
636
|
+
}
|
|
637
|
+
};
|
|
638
|
+
async function listWithProblems() {
|
|
639
|
+
let names;
|
|
640
|
+
try {
|
|
641
|
+
names = (await readdir2(changesDirOf(root), { withFileTypes: true })).filter((d) => d.isDirectory() && d.name !== "archive" && RecordId.safeParse(d.name).success).map((d) => d.name).sort();
|
|
642
|
+
} catch {
|
|
643
|
+
return { changes: [], problems: [] };
|
|
644
|
+
}
|
|
645
|
+
const changes = [];
|
|
646
|
+
const problems = [];
|
|
647
|
+
for (const n of names) {
|
|
633
648
|
try {
|
|
634
|
-
names = (await readdir2(changesDirOf(root), { withFileTypes: true })).filter((d) => d.isDirectory() && d.name !== "archive" && RecordId.safeParse(d.name).success).map((d) => d.name).sort();
|
|
635
|
-
} catch {
|
|
636
|
-
return [];
|
|
637
|
-
}
|
|
638
|
-
const out = [];
|
|
639
|
-
for (const n of names) {
|
|
640
649
|
const c = await tryRead(n);
|
|
641
650
|
if (c)
|
|
642
|
-
|
|
651
|
+
changes.push(c);
|
|
652
|
+
} catch (e) {
|
|
653
|
+
if (!(e instanceof ChangeFileError))
|
|
654
|
+
throw e;
|
|
655
|
+
problems.push({ file: e.path, message: e.message });
|
|
643
656
|
}
|
|
644
|
-
return out;
|
|
645
657
|
}
|
|
646
|
-
|
|
658
|
+
return { changes, problems };
|
|
659
|
+
}
|
|
647
660
|
}
|
|
648
661
|
|
|
649
662
|
// packages/changes/dist/codeowners.js
|
|
@@ -1650,8 +1663,19 @@ async function checkFindings(root, change, gates) {
|
|
|
1650
1663
|
continue;
|
|
1651
1664
|
const round2 = Math.max(...rounds);
|
|
1652
1665
|
const dir = join7(base, String(round2));
|
|
1666
|
+
const files = (await readdir4(dir)).filter((f) => /\.ya?ml$/.test(f)).sort();
|
|
1667
|
+
const unfinished = {
|
|
1668
|
+
code: "round-unfinished",
|
|
1669
|
+
message: `Critic round ${round2} on the ${gate} gate didn't finish: run atticus critic ${change.id} --gate ${gate} again.`
|
|
1670
|
+
};
|
|
1671
|
+
let hasMeta = false;
|
|
1653
1672
|
try {
|
|
1654
1673
|
const meta = (0, import_yaml5.parse)(await readFile6(join7(dir, "meta", "round.yaml"), "utf8"));
|
|
1674
|
+
hasMeta = true;
|
|
1675
|
+
if (meta?.state === "in-progress") {
|
|
1676
|
+
reasons.push(unfinished);
|
|
1677
|
+
continue;
|
|
1678
|
+
}
|
|
1655
1679
|
for (const l of meta?.lenses ?? [])
|
|
1656
1680
|
if (l.state === "waiting")
|
|
1657
1681
|
reasons.push({
|
|
@@ -1665,7 +1689,10 @@ async function checkFindings(root, change, gates) {
|
|
|
1665
1689
|
});
|
|
1666
1690
|
} catch {
|
|
1667
1691
|
}
|
|
1668
|
-
|
|
1692
|
+
if (!hasMeta && files.length === 0) {
|
|
1693
|
+
reasons.push(unfinished);
|
|
1694
|
+
continue;
|
|
1695
|
+
}
|
|
1669
1696
|
for (const f of files) {
|
|
1670
1697
|
const rel = `review/${gate}/${round2}/${f}`;
|
|
1671
1698
|
let data;
|
|
@@ -1837,19 +1864,87 @@ var NothingFile = external_exports.strictObject({
|
|
|
1837
1864
|
commit: external_exports.string().regex(/^[0-9a-f]{7,64}$/).optional(),
|
|
1838
1865
|
at: external_exports.string().min(1),
|
|
1839
1866
|
by: external_exports.string().min(1)
|
|
1840
|
-
}))
|
|
1867
|
+
})),
|
|
1868
|
+
/**
|
|
1869
|
+
* Review round 48: the change branch's commit when Sync first read each release PR merged, so
|
|
1870
|
+
* a merged PR stands only while the branch is there (work landed since needs a PR of its own).
|
|
1871
|
+
*/
|
|
1872
|
+
merged: external_exports.array(external_exports.strictObject({
|
|
1873
|
+
repo: external_exports.string().min(1),
|
|
1874
|
+
number: external_exports.number().int().positive(),
|
|
1875
|
+
commit: external_exports.string().regex(/^[0-9a-f]{7,64}$/),
|
|
1876
|
+
at: external_exports.string().min(1)
|
|
1877
|
+
})).optional()
|
|
1841
1878
|
});
|
|
1842
|
-
async function
|
|
1879
|
+
async function readReleaseFile(root, id) {
|
|
1880
|
+
const empty = { schemaVersion: 1, nothingToRelease: [] };
|
|
1843
1881
|
const text = await readFile8(join9(changeFolder(root, id), RELEASE_PRS_FILE), "utf8").catch(() => void 0);
|
|
1844
1882
|
if (text === void 0)
|
|
1845
|
-
return
|
|
1883
|
+
return empty;
|
|
1846
1884
|
try {
|
|
1847
1885
|
const r = NothingFile.safeParse((0, import_yaml7.parse)(text));
|
|
1848
|
-
return r.success ? r.data
|
|
1886
|
+
return r.success ? r.data : empty;
|
|
1849
1887
|
} catch {
|
|
1850
|
-
return
|
|
1888
|
+
return empty;
|
|
1851
1889
|
}
|
|
1852
1890
|
}
|
|
1891
|
+
async function readNothing(root, id) {
|
|
1892
|
+
return (await readReleaseFile(root, id)).nothingToRelease;
|
|
1893
|
+
}
|
|
1894
|
+
async function writeReleaseFile(root, id, nothing, merged) {
|
|
1895
|
+
const byRepo = (xs) => [...xs].sort((a, b) => a.repo < b.repo ? -1 : a.repo > b.repo ? 1 : 0);
|
|
1896
|
+
await writeFile(join9(changeFolder(root, id), RELEASE_PRS_FILE), toCanonicalYaml(NothingFile.parse({
|
|
1897
|
+
schemaVersion: 1,
|
|
1898
|
+
nothingToRelease: byRepo(nothing),
|
|
1899
|
+
...merged.length ? { merged: byRepo(merged) } : {}
|
|
1900
|
+
})), "utf8");
|
|
1901
|
+
}
|
|
1902
|
+
function repoDir(root, r) {
|
|
1903
|
+
const dirs = [join9(root, r.worktree)];
|
|
1904
|
+
try {
|
|
1905
|
+
dirs.push(baseClonePath(root, r.id));
|
|
1906
|
+
} catch {
|
|
1907
|
+
}
|
|
1908
|
+
return dirs.find((d) => existsSync(d));
|
|
1909
|
+
}
|
|
1910
|
+
async function staleReleasePrs(root, id, o = {}) {
|
|
1911
|
+
const out = /* @__PURE__ */ new Set();
|
|
1912
|
+
const cr = await readChangeRepos(root, id).catch(() => void 0);
|
|
1913
|
+
const merged = (await readReleaseFile(root, id)).merged ?? [];
|
|
1914
|
+
if (!cr || !merged.length)
|
|
1915
|
+
return out;
|
|
1916
|
+
const git = o.git ?? createGit({ timeoutMs: 3e4 });
|
|
1917
|
+
const remote = o.remote ?? "origin";
|
|
1918
|
+
for (const r of cr.repos) {
|
|
1919
|
+
if (r.pr?.state !== "merged")
|
|
1920
|
+
continue;
|
|
1921
|
+
const entry = merged.find((x) => x.repo === r.id && x.number === r.pr.number);
|
|
1922
|
+
if (!entry)
|
|
1923
|
+
continue;
|
|
1924
|
+
const dir = repoDir(root, r);
|
|
1925
|
+
if (!dir)
|
|
1926
|
+
continue;
|
|
1927
|
+
if (await movedPast(git, dir, remote, r.branch, entry.commit))
|
|
1928
|
+
out.add(r.id);
|
|
1929
|
+
}
|
|
1930
|
+
return out;
|
|
1931
|
+
}
|
|
1932
|
+
async function movedPast(git, dir, remote, branch, commit) {
|
|
1933
|
+
const ref = `refs/heads/${branch}`;
|
|
1934
|
+
const known = (sha) => git(["cat-file", "-e", `${sha}^{commit}`], dir).then(() => true, () => false);
|
|
1935
|
+
const here = await git(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`], dir).then((x) => x.stdout.trim() || void 0, () => void 0);
|
|
1936
|
+
const onHost = await git(["ls-remote", "--heads", remote, ref], dir).then((x) => x.stdout.trim().split(/\s+/)[0] || void 0, () => void 0);
|
|
1937
|
+
if (onHost && !sameSha(onHost, commit) && !await known(onHost))
|
|
1938
|
+
await git(["fetch", "-q", remote, `+${ref}:refs/remotes/${remote}/${branch}`], dir).catch(() => void 0);
|
|
1939
|
+
const ahead = async (sha) => {
|
|
1940
|
+
if (!sha || sameSha(sha, commit))
|
|
1941
|
+
return false;
|
|
1942
|
+
if (!await known(sha) || !await known(commit))
|
|
1943
|
+
return true;
|
|
1944
|
+
return git(["merge-base", "--is-ancestor", sha, commit], dir).then(() => false, () => true);
|
|
1945
|
+
};
|
|
1946
|
+
return await ahead(here) || await ahead(onHost);
|
|
1947
|
+
}
|
|
1853
1948
|
async function nothingToRelease(root, id, o = {}) {
|
|
1854
1949
|
const entries = await readNothing(root, id);
|
|
1855
1950
|
const out = /* @__PURE__ */ new Set();
|
|
@@ -1866,12 +1961,7 @@ async function nothingToRelease(root, id, o = {}) {
|
|
|
1866
1961
|
}
|
|
1867
1962
|
return out;
|
|
1868
1963
|
async function moved(r, commit) {
|
|
1869
|
-
const
|
|
1870
|
-
try {
|
|
1871
|
-
dirs.push(baseClonePath(root, r.id));
|
|
1872
|
-
} catch {
|
|
1873
|
-
}
|
|
1874
|
-
const dir = dirs.find((d) => existsSync(d));
|
|
1964
|
+
const dir = repoDir(root, r);
|
|
1875
1965
|
if (!dir)
|
|
1876
1966
|
return false;
|
|
1877
1967
|
const ref = `refs/heads/${r.branch}`;
|
|
@@ -1912,12 +2002,15 @@ async function raiseReleasePrs(root, id, o) {
|
|
|
1912
2002
|
const rows = [];
|
|
1913
2003
|
let changed2 = false;
|
|
1914
2004
|
const repos = cr.repos.map((r) => ({ ...r }));
|
|
1915
|
-
const
|
|
2005
|
+
const file = await readReleaseFile(root, id);
|
|
2006
|
+
const before = file.nothingToRelease;
|
|
1916
2007
|
const nothing = new Map(before.map((x) => [x.repo, x]));
|
|
2008
|
+
const stale = await staleReleasePrs(root, id, { git, remote });
|
|
1917
2009
|
for (const r of repos) {
|
|
1918
|
-
|
|
2010
|
+
const movedOn = r.pr?.state === "merged" && stale.has(r.id) ? `Release PR #${r.pr.number} merged before ${r.branch} moved on; this one carries what landed since.` : void 0;
|
|
2011
|
+
if (!live(r.pr) || movedOn)
|
|
1919
2012
|
nothing.delete(r.id);
|
|
1920
|
-
if (live(r.pr)) {
|
|
2013
|
+
if (live(r.pr) && !movedOn) {
|
|
1921
2014
|
rows.push({
|
|
1922
2015
|
repo: r.id,
|
|
1923
2016
|
outcome: "kept",
|
|
@@ -1964,7 +2057,7 @@ async function raiseReleasePrs(root, id, o) {
|
|
|
1964
2057
|
});
|
|
1965
2058
|
continue;
|
|
1966
2059
|
}
|
|
1967
|
-
const notes = [];
|
|
2060
|
+
const notes = movedOn ? [movedOn] : [];
|
|
1968
2061
|
const dir = join9(root, r.worktree);
|
|
1969
2062
|
if (existsSync(dir)) {
|
|
1970
2063
|
const onHost = await git(["ls-remote", "--heads", remote, `refs/heads/${r.branch}`], dir).then((x) => x.stdout.trim() ? "yes" : "no").catch((e) => {
|
|
@@ -2048,8 +2141,10 @@ async function raiseReleasePrs(root, id, o) {
|
|
|
2048
2141
|
if (changed2)
|
|
2049
2142
|
await writeChangeRepos(root, { ...cr, repos });
|
|
2050
2143
|
const after = [...nothing.values()].sort((a, b) => a.repo < b.repo ? -1 : 1);
|
|
2051
|
-
|
|
2052
|
-
|
|
2144
|
+
const mergedBefore = file.merged ?? [];
|
|
2145
|
+
const mergedAfter = mergedBefore.filter((x) => repos.some((r) => r.id === x.repo && r.pr?.number === x.number && r.pr.state === "merged"));
|
|
2146
|
+
if (JSON.stringify(after) !== JSON.stringify(before) || mergedAfter.length !== mergedBefore.length)
|
|
2147
|
+
await writeReleaseFile(root, id, after, mergedAfter);
|
|
2053
2148
|
return { change: id, rows };
|
|
2054
2149
|
}
|
|
2055
2150
|
async function syncReleasePrs(root, id, o) {
|
|
@@ -2060,6 +2155,9 @@ async function syncReleasePrs(root, id, o) {
|
|
|
2060
2155
|
const now = o.now ?? nowIso();
|
|
2061
2156
|
let changed2 = false;
|
|
2062
2157
|
const repos = cr.repos.map((r) => ({ ...r }));
|
|
2158
|
+
const file = await readReleaseFile(root, id);
|
|
2159
|
+
const merged = [...file.merged ?? []];
|
|
2160
|
+
let mergedChanged = false;
|
|
2063
2161
|
for (const r of repos) {
|
|
2064
2162
|
if (!r.pr)
|
|
2065
2163
|
continue;
|
|
@@ -2100,6 +2198,16 @@ async function syncReleasePrs(root, id, o) {
|
|
|
2100
2198
|
r.build = { ...r.build, status: build, at: now };
|
|
2101
2199
|
changed2 = true;
|
|
2102
2200
|
}
|
|
2201
|
+
if (pr.state === "merged" && !merged.some((x) => x.repo === r.id && x.number === pr.number)) {
|
|
2202
|
+
const commit = await branchTip(root, r, o.git, o.remote ?? "origin");
|
|
2203
|
+
if (commit) {
|
|
2204
|
+
for (let i = merged.length - 1; i >= 0; i--)
|
|
2205
|
+
if (merged[i].repo === r.id)
|
|
2206
|
+
merged.splice(i, 1);
|
|
2207
|
+
merged.push({ repo: r.id, number: pr.number, commit, at: now });
|
|
2208
|
+
mergedChanged = true;
|
|
2209
|
+
}
|
|
2210
|
+
}
|
|
2103
2211
|
rows.push({
|
|
2104
2212
|
repo: r.id,
|
|
2105
2213
|
outcome: "kept",
|
|
@@ -2109,8 +2217,25 @@ async function syncReleasePrs(root, id, o) {
|
|
|
2109
2217
|
}
|
|
2110
2218
|
if (changed2)
|
|
2111
2219
|
await writeChangeRepos(root, { ...cr, repos });
|
|
2220
|
+
if (mergedChanged)
|
|
2221
|
+
await writeReleaseFile(root, id, file.nothingToRelease, merged);
|
|
2112
2222
|
return { change: id, rows };
|
|
2113
2223
|
}
|
|
2224
|
+
async function branchTip(root, r, g, remote) {
|
|
2225
|
+
const dir = repoDir(root, r);
|
|
2226
|
+
if (!dir)
|
|
2227
|
+
return void 0;
|
|
2228
|
+
const git = g ?? createGit({ timeoutMs: 3e4 });
|
|
2229
|
+
const ref = `refs/heads/${r.branch}`;
|
|
2230
|
+
const onHost = await git(["ls-remote", "--heads", remote, ref], dir).then((x) => x.stdout.trim().split(/\s+/)[0] || void 0, () => void 0);
|
|
2231
|
+
if (onHost) {
|
|
2232
|
+
await git(["fetch", "-q", remote, `+${ref}:refs/remotes/${remote}/${r.branch}`], dir).catch(() => void 0);
|
|
2233
|
+
if (/^[0-9a-f]{7,64}$/.test(onHost))
|
|
2234
|
+
return onHost;
|
|
2235
|
+
}
|
|
2236
|
+
const here = await git(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`], dir).then((x) => x.stdout.trim(), () => "");
|
|
2237
|
+
return /^[0-9a-f]{7,64}$/.test(here) ? here : void 0;
|
|
2238
|
+
}
|
|
2114
2239
|
function buildOf(pr) {
|
|
2115
2240
|
if (!pr.checks.length)
|
|
2116
2241
|
return void 0;
|
|
@@ -2137,10 +2262,18 @@ async function releasePrReasons(root, id, o = {}) {
|
|
|
2137
2262
|
return [];
|
|
2138
2263
|
const merged = await requireMergedPrs(root);
|
|
2139
2264
|
const nothing = await nothingToRelease(root, id, o);
|
|
2265
|
+
const stale = await staleReleasePrs(root, id, o);
|
|
2140
2266
|
const out = [];
|
|
2141
2267
|
for (const r of cr.repos) {
|
|
2142
2268
|
if (!r.pr && nothing.has(r.id))
|
|
2143
2269
|
continue;
|
|
2270
|
+
if (r.pr?.state === "merged" && stale.has(r.id)) {
|
|
2271
|
+
out.push({
|
|
2272
|
+
code: "release-pr-stale",
|
|
2273
|
+
message: `${r.id}: ${r.branch} has commits since release PR #${r.pr.number} merged, so they haven't reached its default branch: raise the release PRs again (Release \u203A Raise the release PRs, or atticus change release-prs ${id} --approve).`
|
|
2274
|
+
});
|
|
2275
|
+
continue;
|
|
2276
|
+
}
|
|
2144
2277
|
if (!r.pr || r.pr.state === "closed")
|
|
2145
2278
|
out.push({
|
|
2146
2279
|
code: "release-pr-missing",
|
|
@@ -2394,12 +2527,13 @@ function gitHandoffPublisher(opts = {}) {
|
|
|
2394
2527
|
const gitDir = await out(["rev-parse", "--absolute-git-dir"]);
|
|
2395
2528
|
await tryOut(["fetch", "--quiet", remote, base]);
|
|
2396
2529
|
await tryOut(["fetch", "--quiet", remote, branch]);
|
|
2397
|
-
const
|
|
2530
|
+
const onRemote = await tryOut([
|
|
2398
2531
|
"rev-parse",
|
|
2399
2532
|
"--verify",
|
|
2400
2533
|
"--quiet",
|
|
2401
2534
|
`refs/remotes/${remote}/${branch}^{commit}`
|
|
2402
|
-
])
|
|
2535
|
+
]);
|
|
2536
|
+
const start = onRemote ?? await tryOut([
|
|
2403
2537
|
"rev-parse",
|
|
2404
2538
|
"--verify",
|
|
2405
2539
|
"--quiet",
|
|
@@ -2414,9 +2548,9 @@ function gitHandoffPublisher(opts = {}) {
|
|
|
2414
2548
|
const tree = (await staged(["write-tree"], root)).stdout.trim();
|
|
2415
2549
|
const startTree = await out(["rev-parse", `${start}^{tree}`]);
|
|
2416
2550
|
const commit = tree === startTree ? start : await out(["commit-tree", tree, "-p", start, "-m", message]);
|
|
2417
|
-
await out(["update-ref", `refs/heads/${branch}`, commit]);
|
|
2418
2551
|
await out(["push", "--quiet", remote, `${commit}:refs/heads/${branch}`]);
|
|
2419
|
-
|
|
2552
|
+
await keepLocalBranch(out, tryOut, branch, start, commit);
|
|
2553
|
+
return { commit, changed: commit !== onRemote };
|
|
2420
2554
|
} finally {
|
|
2421
2555
|
await rm(index, { force: true });
|
|
2422
2556
|
}
|
|
@@ -2424,6 +2558,23 @@ function gitHandoffPublisher(opts = {}) {
|
|
|
2424
2558
|
}
|
|
2425
2559
|
}
|
|
2426
2560
|
var queue = /* @__PURE__ */ new Map();
|
|
2561
|
+
async function keepLocalBranch(out, tryOut, branch, start, commit) {
|
|
2562
|
+
const ref = `refs/heads/${branch}`;
|
|
2563
|
+
const local = await tryOut(["rev-parse", "--verify", "--quiet", `${ref}^{commit}`]);
|
|
2564
|
+
if (local === commit)
|
|
2565
|
+
return;
|
|
2566
|
+
const list = await tryOut(["worktree", "list", "--porcelain"]) ?? "";
|
|
2567
|
+
if (list.split(/\r?\n/).includes(`branch ${ref}`))
|
|
2568
|
+
return;
|
|
2569
|
+
if (!local) {
|
|
2570
|
+
await tryOut(["update-ref", ref, commit, ""]);
|
|
2571
|
+
return;
|
|
2572
|
+
}
|
|
2573
|
+
const own = await tryOut(["rev-list", "--count", `${start}..${local}`]);
|
|
2574
|
+
if (own === void 0 || own !== "0")
|
|
2575
|
+
return;
|
|
2576
|
+
await out(["update-ref", ref, commit, local]).catch(() => void 0);
|
|
2577
|
+
}
|
|
2427
2578
|
|
|
2428
2579
|
// packages/changes/dist/handoff.js
|
|
2429
2580
|
import { readdir as readdir6, readFile as readFile12 } from "node:fs/promises";
|
|
@@ -2985,7 +3136,7 @@ async function handoff(root, id, opts) {
|
|
|
2985
3136
|
if (live2 && live2.phase === phase) {
|
|
2986
3137
|
const pr2 = await handoffPr(opts.gitHost, repo, id, live2);
|
|
2987
3138
|
if (pr2.state === "open" || pr2.state === "draft") {
|
|
2988
|
-
await opts.publisher?.publish({
|
|
3139
|
+
const published = await opts.publisher?.publish({
|
|
2989
3140
|
root,
|
|
2990
3141
|
branch,
|
|
2991
3142
|
base: pr2.base,
|
|
@@ -2993,7 +3144,9 @@ async function handoff(root, id, opts) {
|
|
|
2993
3144
|
message: `${handoffName(a.type, phase)}: update`,
|
|
2994
3145
|
approval: opts.approval
|
|
2995
3146
|
});
|
|
2996
|
-
|
|
3147
|
+
const unchanged = published ? published.changed === false : sameArtifacts(hashed, live2.artifacts);
|
|
3148
|
+
if (!unchanged)
|
|
3149
|
+
await opts.gitHost.comment(repo, pr2.number, `${by} updated the hand-off for another review.`, opts.approval);
|
|
2997
3150
|
const updated = {
|
|
2998
3151
|
...live2,
|
|
2999
3152
|
state: "open",
|
|
@@ -3014,6 +3167,13 @@ async function handoff(root, id, opts) {
|
|
|
3014
3167
|
live2.state = "closed";
|
|
3015
3168
|
live2.updatedAt = now;
|
|
3016
3169
|
}
|
|
3170
|
+
if (change.state === "returned") {
|
|
3171
|
+
const open = (await opts.gitHost.listPullRequests(repo, { head: branch })).find((p) => p.state === "open" || p.state === "draft");
|
|
3172
|
+
if (open) {
|
|
3173
|
+
const message = `PR #${open.number} from ${branch} is still open on the Git host (${open.url}): close it there first (the return asked for that), then resubmit the change.`;
|
|
3174
|
+
throw new ChangeError("refused", message, [{ code: "host-refused", message }]);
|
|
3175
|
+
}
|
|
3176
|
+
}
|
|
3017
3177
|
const base = opts.base ?? (await opts.gitHost.getRepo(repo)).defaultBranch;
|
|
3018
3178
|
const next = a.next;
|
|
3019
3179
|
await opts.publisher?.publish({
|
|
@@ -3024,13 +3184,23 @@ async function handoff(root, id, opts) {
|
|
|
3024
3184
|
message: `${handoffName(a.type, phase)}: ${change.title}`,
|
|
3025
3185
|
approval: opts.approval
|
|
3026
3186
|
});
|
|
3027
|
-
|
|
3028
|
-
|
|
3029
|
-
|
|
3030
|
-
|
|
3031
|
-
|
|
3032
|
-
|
|
3033
|
-
|
|
3187
|
+
let pr;
|
|
3188
|
+
try {
|
|
3189
|
+
pr = await opts.gitHost.createPullRequest({
|
|
3190
|
+
repo,
|
|
3191
|
+
head: branch,
|
|
3192
|
+
base,
|
|
3193
|
+
title: `${change.title}: ${handoffName(a.type, phase)}`,
|
|
3194
|
+
body: prBody(a, phase, change.state === "returned" ? nextAfterResubmit(a, phase) : next, [...files.map((f) => `${rel}/${id}/${f}`), ...questionFiles], reviewers, opts.review)
|
|
3195
|
+
}, opts.approval);
|
|
3196
|
+
} catch (e) {
|
|
3197
|
+
if (!(e instanceof AdapterError) || e.code !== "conflict")
|
|
3198
|
+
throw e;
|
|
3199
|
+
const open = (await opts.gitHost.listPullRequests(repo, { head: branch }).catch(() => [])).filter((p) => p.base === base && (p.state === "open" || p.state === "draft")).at(0);
|
|
3200
|
+
if (!open)
|
|
3201
|
+
throw e;
|
|
3202
|
+
pr = open;
|
|
3203
|
+
}
|
|
3034
3204
|
const h = {
|
|
3035
3205
|
phase,
|
|
3036
3206
|
branch,
|
|
@@ -3057,6 +3227,10 @@ async function handoff(root, id, opts) {
|
|
|
3057
3227
|
});
|
|
3058
3228
|
return h;
|
|
3059
3229
|
}
|
|
3230
|
+
function sameArtifacts(a, b) {
|
|
3231
|
+
const key = (xs) => JSON.stringify([...xs].map((x) => `${x.path} ${x.sha256}`).sort());
|
|
3232
|
+
return key(a) === key(b);
|
|
3233
|
+
}
|
|
3060
3234
|
function nextAfterResubmit(a, phase) {
|
|
3061
3235
|
const next = a.type.phases[a.type.phases.indexOf(phase) + 1];
|
|
3062
3236
|
return next ? phaseState(next) : "released";
|
|
@@ -3839,7 +4013,7 @@ async function metarepoOrigin(root, git = createGit()) {
|
|
|
3839
4013
|
return void 0;
|
|
3840
4014
|
}
|
|
3841
4015
|
}
|
|
3842
|
-
async function referenceMetarepoIn(root,
|
|
4016
|
+
async function referenceMetarepoIn(root, repoDir2, o = {}) {
|
|
3843
4017
|
const { settings } = await loadOpenSpecSettings(orgPackDirOf(root));
|
|
3844
4018
|
if (!settings.referenceInRepos)
|
|
3845
4019
|
return { action: "off" };
|
|
@@ -3851,7 +4025,7 @@ async function referenceMetarepoIn(root, repoDir, o = {}) {
|
|
|
3851
4025
|
file,
|
|
3852
4026
|
why: marker.missing ? `this metarepo isn't an OpenSpec store yet (no ${STORE_MARKER}): run atticus upgrade --openspec-store, commit the file, then hand down again` : `this metarepo's ${STORE_MARKER} can't be read (${marker.notes.join("; ")})`
|
|
3853
4027
|
};
|
|
3854
|
-
const path = join17(
|
|
4028
|
+
const path = join17(repoDir2, "openspec", "config.yaml");
|
|
3855
4029
|
const text = await readFile15(path, "utf8").catch(() => void 0);
|
|
3856
4030
|
if (text === void 0)
|
|
3857
4031
|
return {
|
|
@@ -4106,6 +4280,7 @@ export {
|
|
|
4106
4280
|
prApprovers,
|
|
4107
4281
|
RELEASE_PR_STATES,
|
|
4108
4282
|
RELEASE_PRS_FILE,
|
|
4283
|
+
staleReleasePrs,
|
|
4109
4284
|
nothingToRelease,
|
|
4110
4285
|
raiseReleasePrs,
|
|
4111
4286
|
syncReleasePrs,
|
|
@@ -89,6 +89,7 @@ import {
|
|
|
89
89
|
splitTargetGroups,
|
|
90
90
|
staleFlows,
|
|
91
91
|
staleTargetQuestions,
|
|
92
|
+
staleTopicQuestions,
|
|
92
93
|
suggestionWhy,
|
|
93
94
|
targetGroupQuestion,
|
|
94
95
|
targetGroupWordings,
|
|
@@ -106,22 +107,24 @@ import {
|
|
|
106
107
|
withExcludes,
|
|
107
108
|
withPluginScan,
|
|
108
109
|
writeCatalog
|
|
109
|
-
} from "./chunk-
|
|
110
|
-
import "./chunk-
|
|
111
|
-
import "./chunk-
|
|
112
|
-
import "./chunk-
|
|
113
|
-
import "./chunk-
|
|
114
|
-
import "./chunk-
|
|
115
|
-
import "./chunk-
|
|
116
|
-
import "./chunk-
|
|
117
|
-
import "./chunk-
|
|
110
|
+
} from "./chunk-J2JAKCIW.js";
|
|
111
|
+
import "./chunk-745DAZ4L.js";
|
|
112
|
+
import "./chunk-CXJ6FUKN.js";
|
|
113
|
+
import "./chunk-QKUJMING.js";
|
|
114
|
+
import "./chunk-6ZGLAACW.js";
|
|
115
|
+
import "./chunk-CQDGOPGH.js";
|
|
116
|
+
import "./chunk-3NFFJL5D.js";
|
|
117
|
+
import "./chunk-PKBHS4AA.js";
|
|
118
|
+
import "./chunk-P32RUW3B.js";
|
|
119
|
+
import "./chunk-QA4O2GGC.js";
|
|
118
120
|
import {
|
|
119
121
|
fieldKey,
|
|
120
122
|
lineNamesField,
|
|
121
123
|
lineNamesRoute,
|
|
122
124
|
lineNamesWord
|
|
123
|
-
} from "./chunk-
|
|
124
|
-
import "./chunk-
|
|
125
|
+
} from "./chunk-Q2TECDIT.js";
|
|
126
|
+
import "./chunk-TUULXQRW.js";
|
|
127
|
+
import "./chunk-BQGDB6ZL.js";
|
|
125
128
|
import "./chunk-TV45EUGM.js";
|
|
126
129
|
export {
|
|
127
130
|
CLEAR_MATCH,
|
|
@@ -213,6 +216,7 @@ export {
|
|
|
213
216
|
splitTargetGroups,
|
|
214
217
|
staleFlows,
|
|
215
218
|
staleTargetQuestions,
|
|
219
|
+
staleTopicQuestions,
|
|
216
220
|
suggestionWhy,
|
|
217
221
|
targetGroupQuestion,
|
|
218
222
|
targetGroupWordings,
|
|
@@ -6,10 +6,13 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
|
6
6
|
import {
|
|
7
7
|
aliasArgv,
|
|
8
8
|
isLegacy
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-24OXGB3P.js";
|
|
10
10
|
import {
|
|
11
11
|
isHandoffStep
|
|
12
12
|
} from "./chunk-4Q3NN7VF.js";
|
|
13
|
+
import {
|
|
14
|
+
optionsFor
|
|
15
|
+
} from "./chunk-QA4O2GGC.js";
|
|
13
16
|
|
|
14
17
|
// packages/cli/dist/command-catalog.js
|
|
15
18
|
var AREAS = [
|
|
@@ -189,24 +192,45 @@ function parseArgs(id, usage) {
|
|
|
189
192
|
}
|
|
190
193
|
return out;
|
|
191
194
|
}
|
|
192
|
-
function
|
|
195
|
+
function requiredFlags(usage) {
|
|
196
|
+
let masked = "";
|
|
197
|
+
let depth = 0;
|
|
198
|
+
let quoted = false;
|
|
199
|
+
for (const ch of usage) {
|
|
200
|
+
if (ch === '"')
|
|
201
|
+
quoted = !quoted;
|
|
202
|
+
else if (!quoted && (ch === "[" || ch === "<"))
|
|
203
|
+
depth++;
|
|
204
|
+
else if (!quoted && (ch === "]" || ch === ">"))
|
|
205
|
+
depth = Math.max(0, depth - 1);
|
|
206
|
+
masked += depth || quoted || ch === '"' || ch === "]" || ch === ">" ? "_" : ch;
|
|
207
|
+
}
|
|
208
|
+
const tokens = masked.split(/\s+/).filter(Boolean);
|
|
209
|
+
const flagOf = (t) => /^--[a-z]/.test(t) ? t.split("=")[0] : void 0;
|
|
210
|
+
const bar = tokens.indexOf("|");
|
|
211
|
+
if (bar < 0)
|
|
212
|
+
return new Set(tokens.map(flagOf).filter((f) => !!f));
|
|
213
|
+
const first = tokens.slice(0, bar).map(flagOf).filter((f) => !!f);
|
|
214
|
+
return new Set(first.slice(0, -1));
|
|
215
|
+
}
|
|
216
|
+
function parseFlags(text, summaries, required, options) {
|
|
193
217
|
const out = /* @__PURE__ */ new Map();
|
|
194
218
|
const re = /(--[a-z][a-z-]*)(?:[ =]("[^"]*"|<[^>]+>|[A-Za-z0-9][\w.,=-]*(?:\|[\w.-]+)*))?/g;
|
|
195
219
|
for (const m of text.matchAll(re)) {
|
|
196
220
|
const name = m[1];
|
|
197
221
|
if (out.has(name))
|
|
198
222
|
continue;
|
|
199
|
-
const
|
|
200
|
-
const opened = (before.match(/\[/g) ?? []).length - (before.match(/\]/g) ?? []).length;
|
|
223
|
+
const type = options[name.slice(2)]?.type;
|
|
201
224
|
let value = m[2]?.replace(/^<|>$/g, "");
|
|
202
|
-
if (value?.startsWith("--") ||
|
|
203
|
-
value =
|
|
225
|
+
if (value?.startsWith("--") || type === "boolean")
|
|
226
|
+
value = void 0;
|
|
227
|
+
else if (type === "string")
|
|
228
|
+
value ??= "value";
|
|
204
229
|
const summary = summaries.get(name);
|
|
205
230
|
out.set(name, {
|
|
206
231
|
name,
|
|
207
232
|
...value ? { value } : {},
|
|
208
|
-
|
|
209
|
-
required: opened <= 0 && !/(<[^>]+>|"[^"]*")\s*\|\s*$/.test(before),
|
|
233
|
+
required: required.has(name),
|
|
210
234
|
...summary ? { summary } : {}
|
|
211
235
|
});
|
|
212
236
|
}
|
|
@@ -235,13 +259,14 @@ function parseHelp(help) {
|
|
|
235
259
|
const written = cut > 0 ? b.line.slice(cut).trim() : b.below ?? "";
|
|
236
260
|
const summary = written.replace(/(\s*\[[^\]]*--[^\]]*\](\.\.\.)?)+\s*$/, "");
|
|
237
261
|
const tokens = usage.split(" ").slice(1);
|
|
238
|
-
const
|
|
262
|
+
const named = [];
|
|
239
263
|
for (const t of tokens) {
|
|
240
264
|
if (!isWord(t))
|
|
241
265
|
break;
|
|
242
|
-
|
|
266
|
+
named.push(t);
|
|
243
267
|
}
|
|
244
|
-
const
|
|
268
|
+
const after = tokens[named.length];
|
|
269
|
+
const ways = after && /^[a-z][a-z-]*(\|[a-z][a-z-]*)+$/.test(after) ? after.split("|") : [];
|
|
245
270
|
const summaries = /* @__PURE__ */ new Map();
|
|
246
271
|
for (const m of b.more) {
|
|
247
272
|
const c = m.search(/ {2,}/);
|
|
@@ -253,21 +278,24 @@ function parseHelp(help) {
|
|
|
253
278
|
}
|
|
254
279
|
const optionText = [
|
|
255
280
|
`${usage} `,
|
|
256
|
-
written,
|
|
281
|
+
written.slice(summary.length),
|
|
257
282
|
// Each option line's option part only: its description may hold brackets of its own.
|
|
258
283
|
...b.more.map((m) => {
|
|
259
284
|
const c = m.search(/ {2,}/);
|
|
260
285
|
return `[${(c > 0 ? m.slice(0, c) : m).replace(/^\[|\]$/g, "")}]`;
|
|
261
286
|
})
|
|
262
287
|
].join(" ");
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
288
|
+
const required = requiredFlags(usage);
|
|
289
|
+
const approves = APPROVE_FLAGS.filter((f) => new RegExp(`${f}(?![a-z-])`).test(written));
|
|
290
|
+
const rest = usage.slice(`atticus ${[...named, ...ways.length ? [after] : []].join(" ")}`.length);
|
|
291
|
+
for (const words of ways.length ? ways.map((w) => [...named, w]) : [named]) {
|
|
292
|
+
const id = words.join(" ");
|
|
293
|
+
const flags = parseFlags(optionText, summaries, required, optionsFor(words));
|
|
294
|
+
for (const name of approves)
|
|
295
|
+
if (!flags.some((f) => f.name === name))
|
|
296
|
+
flags.push({ name, required: false });
|
|
297
|
+
out.push({ id, words, usage, summary, args: parseArgs(id, rest), flags });
|
|
298
|
+
}
|
|
271
299
|
}
|
|
272
300
|
return out;
|
|
273
301
|
}
|
|
@@ -298,6 +326,7 @@ function commandCatalog(help) {
|
|
|
298
326
|
|
|
299
327
|
export {
|
|
300
328
|
AREAS,
|
|
329
|
+
requiredFlags,
|
|
301
330
|
parseHelp,
|
|
302
331
|
commandCatalog
|
|
303
332
|
};
|