@maycombhq/atticus 2.0.0-beta.2 → 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 +8 -4
- package/dist/chunk-23XVSEV5.js +49 -0
- package/dist/{chunk-ZDPAS56H.js → chunk-24OXGB3P.js} +8 -2
- package/dist/{chunk-7EOBHUMC.js → chunk-24XLDU72.js} +4 -3
- package/dist/{chunk-CR3MTH32.js → chunk-2F4CYZKJ.js} +86 -11
- package/dist/{chunk-6IU67AEK.js → chunk-2GF7OLF3.js} +23 -15
- package/dist/chunk-2IIMFOPM.js +41 -0
- package/dist/chunk-2LGRMVCA.js +617 -0
- package/dist/{chunk-XPCM366L.js → chunk-2MMCFP5C.js} +10 -8
- package/dist/{chunk-JBTK5OP2.js → chunk-2Q56PQPS.js} +6 -4
- package/dist/{chunk-Z6LF7HQN.js → chunk-2Q5EDGEO.js} +7 -5
- package/dist/{chunk-3USYZGRF.js → chunk-2RLKFUUL.js} +38 -27
- package/dist/chunk-2SKB4O2E.js +59 -0
- package/dist/{chunk-SP2I63OO.js → chunk-34S2WGOB.js} +87 -4
- package/dist/{chunk-GQ4N4WKF.js → chunk-3NFFJL5D.js} +33 -27
- package/dist/{chunk-SJRGMG6A.js → chunk-3NWDLGG6.js} +28 -25
- package/dist/{chunk-4WBVUHXN.js → chunk-3RM4UK6W.js} +20 -18
- package/dist/chunk-42SIDKEU.js +583 -0
- package/dist/{chunk-GLUX4EEP.js → chunk-4EURQWQD.js} +20 -15
- package/dist/chunk-4U276ICE.js +39 -0
- package/dist/{chunk-ZMFPW66A.js → chunk-53T4O55J.js} +4 -3
- package/dist/{chunk-6J5OKA4Y.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-5NMKONLP.js +95 -0
- package/dist/{chunk-7ZUIMTOU.js → chunk-5SJZW52K.js} +26 -24
- package/dist/{chunk-4RS5KZQD.js → chunk-63YRMR6J.js} +6 -5
- package/dist/chunk-66PPNOON.js +62 -0
- package/dist/chunk-6H3Z5JHH.js +64 -0
- package/dist/{chunk-CEXSU4S6.js → chunk-6MUGR4LS.js} +775 -89
- package/dist/{chunk-QSXK2RGH.js → chunk-6OJQOPUN.js} +5 -3
- package/dist/{chunk-MVZVGYXH.js → chunk-6PPOWY5E.js} +84 -14
- package/dist/{chunk-7EKXJZ2Y.js → chunk-6ZGLAACW.js} +299 -38
- package/dist/chunk-6ZJ5A7AF.js +222 -0
- package/dist/{chunk-L24C55VN.js → chunk-745DAZ4L.js} +142 -30
- package/dist/{chunk-Q4D5X7QB.js → chunk-7ASNL4Q4.js} +46 -24
- package/dist/chunk-7BR7IPOH.js +35 -0
- package/dist/{chunk-7WD63HU2.js → chunk-7DOR27HL.js} +6 -6
- package/dist/chunk-7FTTA3HD.js +341 -0
- package/dist/{chunk-OLQJTJJU.js → chunk-7GJS6DNX.js} +12 -3
- package/dist/{chunk-7JUKDRSZ.js → chunk-7IGKHZ4Z.js} +347 -226
- package/dist/{chunk-G2B4ZQGH.js → chunk-7IOWA5D5.js} +11 -6
- package/dist/{chunk-EBEW3XXQ.js → chunk-7JITZFJC.js} +7 -5
- package/dist/chunk-7MJSQTL5.js +174 -0
- package/dist/{chunk-I4JRCD6M.js → chunk-7UOMVMFG.js} +25 -17
- package/dist/{chunk-YY6ZQQBP.js → chunk-AFWUDXEM.js} +19 -7
- package/dist/chunk-AFZ3QA6W.js +47 -0
- package/dist/chunk-AJQ72EBM.js +420 -0
- package/dist/chunk-AJYXNTNZ.js +317 -0
- package/dist/chunk-AVTBS4OW.js +49 -0
- package/dist/{chunk-FHH4I4ZV.js → chunk-BDKC6H5P.js} +12 -6
- package/dist/{chunk-IPKHE5D6.js → chunk-BEVTIBRH.js} +1526 -875
- package/dist/chunk-BHT7QK4G.js +162 -0
- package/dist/{chunk-6JUBZBMW.js → chunk-BIGDQDHD.js} +6 -4
- package/dist/{chunk-2BFCZ3RK.js → chunk-BO4KX37X.js} +20 -18
- package/dist/chunk-BPK5P77O.js +115 -0
- package/dist/chunk-BQ4SQQC6.js +59 -0
- package/dist/chunk-BQGDB6ZL.js +7342 -0
- package/dist/{chunk-2ANOROX3.js → chunk-BTGPE6CR.js} +11 -9
- package/dist/chunk-BTY3HZBO.js +93 -0
- package/dist/{chunk-DPZHZQKE.js → chunk-BXYMYEJ4.js} +44 -10
- package/dist/{chunk-2RMYG36Q.js → chunk-C3RY6KU6.js} +309 -346
- package/dist/chunk-C4R4JLHE.js +40 -0
- package/dist/chunk-CADWLE2T.js +18 -0
- package/dist/chunk-CBGGOQWU.js +82 -0
- package/dist/chunk-CMDXGQTS.js +47 -0
- package/dist/{chunk-MC3H7736.js → chunk-CQDGOPGH.js} +58 -18
- package/dist/{chunk-HFQCFSJR.js → chunk-CX4RZ2KS.js} +4 -3
- package/dist/{chunk-PAMPPUR6.js → chunk-CXJ6FUKN.js} +1852 -207
- package/dist/{chunk-ABWHYWNI.js → chunk-D73UEXYW.js} +3 -3
- package/dist/chunk-DCZWQLYT.js +1205 -0
- package/dist/chunk-DLOBCJL6.js +48 -0
- package/dist/{chunk-4BN53TG3.js → chunk-DOBQKHIF.js} +31 -23
- package/dist/chunk-E3ISYXO3.js +423 -0
- package/dist/{chunk-7SW2QWLU.js → chunk-E6ZIEVOI.js} +16 -13
- package/dist/chunk-EBL2R3YG.js +43 -0
- package/dist/{chunk-AIOQPLA5.js → chunk-EGQRREQH.js} +41 -15
- package/dist/chunk-EHA7RMZ3.js +58 -0
- package/dist/{chunk-M766ZJ6W.js → chunk-EIPTLPFC.js} +38 -27
- package/dist/chunk-EMRIQUND.js +517 -0
- package/dist/{chunk-DFBCSHVT.js → chunk-EPCJQQWD.js} +6 -4
- package/dist/{chunk-RZPYKDWS.js → chunk-F3P7N7SF.js} +1 -1
- package/dist/{chunk-R77KLRB3.js → chunk-FFLNS6VP.js} +21 -18
- package/dist/chunk-FFTRTL6R.js +26 -0
- package/dist/{chunk-IHMLFRVV.js → chunk-FPJPLKDW.js} +62 -16
- package/dist/{chunk-JCZIKA4C.js → chunk-FSMSFDLD.js} +5 -4
- package/dist/{chunk-AVJDSJ2F.js → chunk-FUJM6RTF.js} +8 -7
- package/dist/chunk-FZOJFH7Q.js +132 -0
- package/dist/{chunk-QRAOANID.js → chunk-G6X77UJZ.js} +23 -21
- package/dist/{chunk-3ALD2W2A.js → chunk-GCWRWSU7.js} +10 -4
- package/dist/chunk-GIW4ZVDB.js +39 -0
- package/dist/{chunk-B2WLAWNJ.js → chunk-GUX3PTYM.js} +3 -3
- package/dist/{chunk-DPUYDDQG.js → chunk-GZY6RUZ6.js} +25 -3
- package/dist/chunk-H4VO6WG3.js +10 -0
- package/dist/{chunk-MMOSZPWJ.js → chunk-H5HBGNXU.js} +5 -4
- package/dist/chunk-H7KM7LZE.js +229 -0
- package/dist/{chunk-AA6YULYB.js → chunk-HNM2YQT2.js} +7 -7
- package/dist/{chunk-3C7EYRFZ.js → chunk-HYU5VLGA.js} +1 -1
- package/dist/{chunk-XY3P7JW7.js → chunk-IDKCWSM5.js} +1032 -172
- package/dist/chunk-IFKEI4SA.js +237 -0
- package/dist/{chunk-F7HYOUFF.js → chunk-IGOE6KPG.js} +67 -22
- package/dist/{chunk-TDD55CJH.js → chunk-IH2XURVQ.js} +6 -5
- package/dist/chunk-INQHESFB.js +38 -0
- package/dist/chunk-IP74LCOQ.js +57 -0
- package/dist/chunk-IPHHDDC6.js +45 -0
- package/dist/{chunk-T6AIP7H5.js → chunk-ISUAAMGS.js} +110 -153
- package/dist/{chunk-A7UPUQFY.js → chunk-IUPG3UKI.js} +624 -319
- package/dist/{chunk-L6SGQIR3.js → chunk-IVBOQAGB.js} +7 -3
- package/dist/{chunk-27NKUS3X.js → chunk-J2JAKCIW.js} +2205 -796
- package/dist/{chunk-V2YTAIQO.js → chunk-J3IOLXWM.js} +24 -7
- package/dist/chunk-JA5FI3QV.js +142 -0
- package/dist/chunk-JAVI7JSP.js +49 -0
- package/dist/{chunk-HLJAXMM4.js → chunk-JB5LINEM.js} +6 -2
- package/dist/{chunk-2VHF7OXM.js → chunk-JENSEMXF.js} +1 -1
- package/dist/{chunk-6BVONWJ7.js → chunk-JJF6HALY.js} +4 -3
- package/dist/chunk-JLUCKAEL.js +38 -0
- package/dist/chunk-JRBFANFE.js +221 -0
- package/dist/{chunk-R6XF6UR3.js → chunk-KDNTAPLX.js} +4 -4
- package/dist/chunk-KFAVQZSX.js +33 -0
- package/dist/chunk-KJXD4PNL.js +50 -0
- package/dist/chunk-KN5BXMWN.js +44 -0
- package/dist/{chunk-PCVDV3UZ.js → chunk-KQGURXFU.js} +9 -7
- package/dist/{chunk-WY6PP6AA.js → chunk-KXITGYLF.js} +40 -6
- package/dist/{chunk-66YVAGGM.js → chunk-L27SV425.js} +22 -20
- package/dist/{chunk-NE2W3OO7.js → chunk-LDLL7LB3.js} +24 -22
- package/dist/chunk-LFGTYX5U.js +379 -0
- package/dist/{chunk-EYWIDJFU.js → chunk-LGBMTVNT.js} +7 -5
- package/dist/{chunk-Q5AMFEWD.js → chunk-LGFL54FP.js} +3 -2
- package/dist/{chunk-6TACQN3N.js → chunk-LJXMYKZJ.js} +7 -5
- package/dist/{chunk-BKVWTZ6A.js → chunk-LKOR5UET.js} +29 -26
- package/dist/chunk-LNBQOP7D.js +294 -0
- package/dist/{chunk-O3WI5KWW.js → chunk-LO6P2VYG.js} +2 -2
- package/dist/chunk-LQJPN536.js +122 -0
- package/dist/{chunk-YEDDOYSC.js → chunk-LYBNHMVZ.js} +29 -5
- package/dist/{chunk-A3GY6SOA.js → chunk-LZ7NUC62.js} +20 -18
- package/dist/chunk-M32BLWDH.js +37 -0
- package/dist/{chunk-VYDBJ73M.js → chunk-M3NANSDZ.js} +17 -15
- package/dist/chunk-MFHL5URL.js +31 -0
- package/dist/chunk-MFR5OPBD.js +109 -0
- package/dist/{chunk-DE76JROX.js → chunk-MG4ZL5RW.js} +32 -20
- package/dist/{chunk-N7IXEHK3.js → chunk-MO6P2JZH.js} +10 -8
- package/dist/{chunk-65NYPGRC.js → chunk-MUWDB4R4.js} +1 -1
- package/dist/chunk-MZCGSXVR.js +34 -0
- package/dist/{chunk-MGYZM27B.js → chunk-N3XIYPU3.js} +51 -23
- package/dist/chunk-NDCF4R6S.js +172 -0
- package/dist/{chunk-DHPACDG7.js → chunk-NR2UJWOC.js} +10 -8
- package/dist/chunk-NXJ5URP6.js +51 -0
- package/dist/{chunk-UNM6ZOKP.js → chunk-NY2XSR5K.js} +147 -18
- package/dist/{chunk-5GDRCDQB.js → chunk-O45HFTFS.js} +3 -2
- package/dist/{chunk-ONLS5QA5.js → chunk-O4GXGGBX.js} +14 -12
- package/dist/chunk-O5PXQR67.js +249 -0
- package/dist/{chunk-PRPPGYZG.js → chunk-O66DM6DJ.js} +6 -4
- package/dist/{chunk-KEM4SDDP.js → chunk-O7FDLW7L.js} +11 -8
- package/dist/{chunk-T2UYZSCQ.js → chunk-O7XLYEFA.js} +169 -29
- package/dist/{chunk-FITWGOJ2.js → chunk-OHNCWBKF.js} +4 -4
- package/dist/{chunk-652QWTLZ.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-OUBGGKDU.js +22 -0
- package/dist/chunk-OWNCM4ZN.js +330 -0
- package/dist/{chunk-YISXLPHN.js → chunk-P2V7QW4D.js} +235 -35
- package/dist/{chunk-CNUKCS2T.js → chunk-P32RUW3B.js} +1632 -93
- package/dist/{chunk-BWZ77RQT.js → chunk-PAQ2AS5E.js} +1 -1
- package/dist/{chunk-ZMAINWBW.js → chunk-PBPBMP2B.js} +4 -3
- package/dist/{chunk-ZVM6AKKM.js → chunk-PJSJPMJI.js} +3 -3
- package/dist/{chunk-EFHQ3TWP.js → chunk-PKBHS4AA.js} +233 -56
- package/dist/{chunk-GT4I4ZWM.js → chunk-PMUAJGLI.js} +20 -16
- package/dist/chunk-PPD7HTDP.js +152 -0
- package/dist/chunk-PSOFBQWB.js +42 -0
- package/dist/{chunk-S2A7YC3Q.js → chunk-Q2TECDIT.js} +10694 -8896
- package/dist/chunk-Q4K5WB2W.js +42 -0
- package/dist/{chunk-UGLN7QHV.js → chunk-Q6DFNVRJ.js} +14 -12
- package/dist/chunk-QA4O2GGC.js +265 -0
- package/dist/chunk-QAXW2N3B.js +1216 -0
- package/dist/chunk-QBNWF5ZU.js +19 -0
- package/dist/chunk-QFWA2DPH.js +224 -0
- package/dist/{chunk-23W7VWKR.js → chunk-QKUJMING.js} +1363 -114
- package/dist/{chunk-NXFPS2LR.js → chunk-R44CYFPV.js} +16 -13
- package/dist/{chunk-CKSITVS4.js → chunk-R7NYHMUU.js} +2687 -786
- package/dist/chunk-REWWDVQB.js +162 -0
- package/dist/{chunk-JMSCMUCA.js → chunk-RGERPOIV.js} +145 -21
- package/dist/{chunk-6JCPI55B.js → chunk-RLDGWLQ7.js} +49 -7
- package/dist/chunk-RUGXBPWI.js +384 -0
- package/dist/{chunk-CPA6HPVR.js → chunk-RXPJMEOW.js} +18 -12
- package/dist/{chunk-3HI6Z55Y.js → chunk-S4PMJU6H.js} +339 -43
- package/dist/chunk-S5LSDXV4.js +40 -0
- package/dist/chunk-S7FCV7S5.js +51 -0
- package/dist/{chunk-5GGOLAKC.js → chunk-SDKLKB6I.js} +28 -26
- package/dist/chunk-SFSPGFCV.js +62 -0
- package/dist/{chunk-ZNCEKR4J.js → chunk-SFUP7TTO.js} +12 -8
- package/dist/{chunk-64EQYWCA.js → chunk-SLXZOMA6.js} +69 -19
- package/dist/chunk-SQV37XO2.js +273 -0
- package/dist/{chunk-K65BJIMT.js → chunk-SU74NDMQ.js} +19 -17
- package/dist/chunk-SYV5LHML.js +165 -0
- package/dist/chunk-T4YPZIQN.js +36 -0
- package/dist/chunk-T6DQR5TV.js +323 -0
- package/dist/{chunk-JIITQXFB.js → chunk-THDMSZ3R.js} +3075 -802
- package/dist/{chunk-JGZCG5VM.js → chunk-TNR75OXT.js} +7 -7
- package/dist/{chunk-D3PO4DOZ.js → chunk-TUULXQRW.js} +174 -15
- package/dist/chunk-TYQBFTBR.js +516 -0
- package/dist/chunk-U76OWS3Q.js +49 -0
- package/dist/{chunk-YYQN46FY.js → chunk-UCROWG2D.js} +27 -24
- package/dist/{chunk-6M5NK3K3.js → chunk-UF4AZOZB.js} +50 -10
- package/dist/chunk-UF4GLFBX.js +345 -0
- package/dist/{chunk-OT2O76OS.js → chunk-UGUP3ZM6.js} +240 -39
- package/dist/chunk-UNAGJYET.js +45 -0
- package/dist/{chunk-5WG5YP4T.js → chunk-UOR2DTHH.js} +16 -14
- package/dist/{chunk-S3QNRWYR.js → chunk-UPOY4YSQ.js} +14 -12
- package/dist/{chunk-EPTBZ3GP.js → chunk-UPS2DGFC.js} +1 -1
- package/dist/{chunk-4AK7IBVP.js → chunk-UUU4CLJG.js} +4 -2
- package/dist/{chunk-W3BQAZ3Q.js → chunk-UWMJKX5U.js} +14 -12
- package/dist/{chunk-QZSX3F7C.js → chunk-UWOJLHFT.js} +27 -23
- package/dist/chunk-VBTP56CE.js +535 -0
- package/dist/chunk-VCTWPLAO.js +211 -0
- package/dist/chunk-VNU26RCO.js +1215 -0
- package/dist/{chunk-CSZ4C5N6.js → chunk-VTZMAJ3W.js} +93 -10
- package/dist/{chunk-TXLH6WHQ.js → chunk-VW62D6QE.js} +14 -12
- package/dist/{chunk-CAQZUNOH.js → chunk-VY72R2XZ.js} +610 -3
- package/dist/{chunk-2DIQQJCB.js → chunk-VZALIKIF.js} +18 -15
- package/dist/{chunk-TYAID7B7.js → chunk-W62H2XSO.js} +25 -23
- package/dist/{chunk-HVUPKCGJ.js → chunk-W7VWI2YH.js} +9 -6
- package/dist/{chunk-TANFV3MZ.js → chunk-WERM6KPJ.js} +7 -4
- package/dist/{chunk-BOHJZTEQ.js → chunk-WF7B67YE.js} +208 -87
- package/dist/{chunk-7FBGJFEE.js → chunk-WG5U3F5V.js} +14 -12
- package/dist/{chunk-4NDAAFQT.js → chunk-WJF2CS6M.js} +8 -5
- package/dist/{chunk-XAKWMCXI.js → chunk-WKUJ3KPV.js} +4 -4
- package/dist/chunk-WMTRHUI5.js +103 -0
- package/dist/chunk-WNKPRSGI.js +36 -0
- package/dist/chunk-WXFLMQSR.js +223 -0
- package/dist/{chunk-RRTKKSLQ.js → chunk-X3WY6MN3.js} +8 -6
- package/dist/{chunk-ZCJDOK2S.js → chunk-X4CXA2IL.js} +47 -23
- package/dist/{chunk-UBBC2XSG.js → chunk-X5F3Q5LV.js} +560 -105
- package/dist/{chunk-C6EKFH7J.js → chunk-XD75VZIH.js} +9 -7
- package/dist/chunk-XERYFDB5.js +297 -0
- package/dist/chunk-XI2LCCYQ.js +420 -0
- package/dist/chunk-Y2EQNWKV.js +933 -0
- package/dist/{chunk-LR3R6Z2A.js → chunk-YHCMZC2J.js} +7 -7
- package/dist/chunk-YYY3AZFE.js +122 -0
- package/dist/{chunk-GDLULHTC.js → chunk-Z5IA3WDR.js} +19 -31
- package/dist/{chunk-T6XQL73F.js → chunk-ZFFYNRIO.js} +63 -23
- package/dist/{chunk-EDS2L2LD.js → chunk-ZFL7NY4F.js} +56 -27
- package/dist/{chunk-YMZ3TNYB.js → chunk-ZGULQAPZ.js} +7 -4
- package/dist/{chunk-4SKZDI62.js → chunk-ZIUFM5HT.js} +3 -1
- package/dist/{chunk-DKJA76CJ.js → chunk-ZJFRMSJT.js} +15 -13
- package/dist/chunk-ZJXLNDH4.js +239 -0
- package/dist/chunk-ZQ3ON2VQ.js +252 -0
- package/dist/{chunk-HITVBIJS.js → chunk-ZQ7SKESZ.js} +150 -415
- package/dist/{chunk-6QSERWXH.js → chunk-ZQXZ2SES.js} +24 -21
- package/dist/chunk-ZX57KSEQ.js +39 -0
- package/dist/{chunk-I3E7CX4H.js → chunk-ZZK56BLP.js} +5 -3
- package/dist/files.json +664 -368
- package/dist/packages/naysayer/constitution/constitution.yaml +19 -0
- package/dist/packages/sdk/npm/index.js +6194 -2542
- package/dist/packages/ui/dist/assets/{elk-api-tma0MCuh.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/assets/index-Dw20IRhQ.css +1 -0
- package/dist/packages/ui/dist/index.html +3 -2
- package/package.json +5 -5
- package/dist/chunk-2BF2EYJV.js +0 -174
- package/dist/chunk-42EVSKME.js +0 -37
- package/dist/chunk-4BKGMUIK.js +0 -53
- package/dist/chunk-5KLGBXG5.js +0 -48
- package/dist/chunk-6BNC6EQ4.js +0 -41
- package/dist/chunk-6D2CQ5II.js +0 -41
- package/dist/chunk-7AVHLZGD.js +0 -45
- package/dist/chunk-D46WUV3T.js +0 -33
- package/dist/chunk-E36QOJMD.js +0 -47
- package/dist/chunk-FQXYPF7E.js +0 -147
- package/dist/chunk-GBRFVT63.js +0 -45
- package/dist/chunk-ICY36XCH.js +0 -34
- package/dist/chunk-J4K3KVLD.js +0 -131
- package/dist/chunk-JZU3H6UQ.js +0 -54
- package/dist/chunk-NN2ZQEB4.js +0 -38
- package/dist/chunk-PCOCACY3.js +0 -385
- package/dist/chunk-RTEYOSJY.js +0 -29
- package/dist/chunk-RUVFXE2L.js +0 -666
- package/dist/chunk-RVH5SUW5.js +0 -69
- package/dist/chunk-VN3DP4LQ.js +0 -43
- package/dist/chunk-W5BVQF44.js +0 -36
- package/dist/chunk-WVPJSRRJ.js +0 -52
- package/dist/chunk-XPTOBS2D.js +0 -48
- package/dist/packages/ui/dist/assets/index-B54fm9FQ.js +0 -29
- package/dist/packages/ui/dist/assets/index-DD_hufQz.css +0 -1
|
@@ -7,19 +7,19 @@ import {
|
|
|
7
7
|
ATTICUS_FOLDER_IGNORE,
|
|
8
8
|
CHECKLISTS_README,
|
|
9
9
|
STARTER_CHECKLISTS_README
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-Z5IA3WDR.js";
|
|
11
11
|
import {
|
|
12
12
|
openspecRootOf,
|
|
13
13
|
rewriteStories
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-R7NYHMUU.js";
|
|
15
15
|
import {
|
|
16
16
|
STARTER_REVIEW_PATH,
|
|
17
17
|
readPackFiles,
|
|
18
18
|
starterReviewText
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-S4PMJU6H.js";
|
|
20
20
|
import {
|
|
21
21
|
metarepoOrigin
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-IDKCWSM5.js";
|
|
23
23
|
import {
|
|
24
24
|
ORG_FLOW_VERSION,
|
|
25
25
|
STORE_MARKER,
|
|
@@ -28,16 +28,15 @@ import {
|
|
|
28
28
|
storeIdOf,
|
|
29
29
|
writeOrgFlowSchema,
|
|
30
30
|
writeStoreMarker
|
|
31
|
-
} from "./chunk-
|
|
31
|
+
} from "./chunk-UUU4CLJG.js";
|
|
32
32
|
import {
|
|
33
|
-
VERSION
|
|
34
|
-
|
|
35
|
-
} from "./chunk-RZPYKDWS.js";
|
|
33
|
+
VERSION
|
|
34
|
+
} from "./chunk-F3P7N7SF.js";
|
|
36
35
|
import {
|
|
37
36
|
IGNORED,
|
|
38
37
|
ensureGitignore,
|
|
39
38
|
gitUser
|
|
40
|
-
} from "./chunk-
|
|
39
|
+
} from "./chunk-PKBHS4AA.js";
|
|
41
40
|
import {
|
|
42
41
|
MetarepoStamp,
|
|
43
42
|
WORKSPACE_SCHEMA_VERSION,
|
|
@@ -49,21 +48,27 @@ import {
|
|
|
49
48
|
loadOrgPack,
|
|
50
49
|
migrateCatalog,
|
|
51
50
|
migrateChangeTypesText,
|
|
51
|
+
migrateCorrections,
|
|
52
52
|
migrateGatesText,
|
|
53
53
|
migrateManifests,
|
|
54
54
|
migrateQuestions,
|
|
55
|
+
migrateRolesText,
|
|
55
56
|
migrateRuntimeText,
|
|
57
|
+
migrateRuntimeV3Text,
|
|
58
|
+
migrateRuntimeV4Text,
|
|
56
59
|
migrateSourcesText,
|
|
57
60
|
orgPackDirOf,
|
|
58
|
-
require_dist,
|
|
59
61
|
specsDirOf,
|
|
60
62
|
specsRelOf
|
|
61
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-Q2TECDIT.js";
|
|
62
64
|
import {
|
|
63
65
|
LOCAL_ONLY,
|
|
64
66
|
ensureLocalIgnore,
|
|
65
67
|
writeFileAtomic
|
|
66
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-TUULXQRW.js";
|
|
69
|
+
import {
|
|
70
|
+
require_dist
|
|
71
|
+
} from "./chunk-BQGDB6ZL.js";
|
|
67
72
|
import {
|
|
68
73
|
__toESM
|
|
69
74
|
} from "./chunk-TV45EUGM.js";
|
|
@@ -71,7 +76,7 @@ import {
|
|
|
71
76
|
// packages/cli/dist/upgrade.js
|
|
72
77
|
var import_yaml = __toESM(require_dist(), 1);
|
|
73
78
|
import { cp, mkdir, readdir, readFile, stat } from "node:fs/promises";
|
|
74
|
-
import { join } from "node:path";
|
|
79
|
+
import { join, relative, sep } from "node:path";
|
|
75
80
|
var STAMP_FILE = join(".atticus", "metarepo.yaml");
|
|
76
81
|
var rel = (prefix, files) => files.map((f) => `${prefix}/${f}`);
|
|
77
82
|
var MIGRATIONS = [
|
|
@@ -80,6 +85,7 @@ var MIGRATIONS = [
|
|
|
80
85
|
{
|
|
81
86
|
id: "local-files-ignored",
|
|
82
87
|
summary: "This machine's files kept out of Git (.atticus/.gitignore, ADR 0050)",
|
|
88
|
+
creates: true,
|
|
83
89
|
async pending(root) {
|
|
84
90
|
const text = await readFile(join(root, ".atticus", ".gitignore"), "utf8").catch(() => "");
|
|
85
91
|
const have = new Set(text.split(/\r?\n/).map((l) => l.trim()));
|
|
@@ -93,6 +99,7 @@ var MIGRATIONS = [
|
|
|
93
99
|
{
|
|
94
100
|
id: "state-folders-ignored",
|
|
95
101
|
summary: "Base clones, the index and run folders kept out of Git (metarepo .gitignore)",
|
|
102
|
+
creates: true,
|
|
96
103
|
async pending(root) {
|
|
97
104
|
if (isAdopted(root))
|
|
98
105
|
return [];
|
|
@@ -158,14 +165,21 @@ var MIGRATIONS = [
|
|
|
158
165
|
}
|
|
159
166
|
},
|
|
160
167
|
{
|
|
161
|
-
id
|
|
162
|
-
|
|
168
|
+
// The id is kept as it was first shipped (stamps record it); the step writes the current version.
|
|
169
|
+
id: "questions-v3",
|
|
170
|
+
summary: "Questions at schema version 5: a question can name the earlier one it may be the same as (ADR 0117), an answer can carry its rule and the proposal it accepted (ADR 0153), a question the code later disagreed with keeps why it reopened and the answer it had (ADR 0162), and a change's question carries the role that owns it, derived from the stage that asked when the file doesn't say (ADR 0181)",
|
|
163
171
|
pending: (root) => migrateQuestions(root, { dryRun: true }),
|
|
164
|
-
apply: (root) => migrateQuestions(root)
|
|
172
|
+
apply: (root) => migrateQuestions(root),
|
|
173
|
+
async problems(root) {
|
|
174
|
+
const out = [];
|
|
175
|
+
await migrateQuestions(root, { dryRun: true, problems: out });
|
|
176
|
+
return out.map((p) => `${p.file}: ${p.message}`);
|
|
177
|
+
}
|
|
165
178
|
},
|
|
166
179
|
{
|
|
167
180
|
id: "starter-review",
|
|
168
181
|
summary: "The starter review: AI rules for the critic's lenses in checklists/review.yaml, for an org pack with no AI review of its own (ADR 0120)",
|
|
182
|
+
creates: true,
|
|
169
183
|
async pending(root) {
|
|
170
184
|
return (await starterReviewPlan(root)).map((f) => f.rel);
|
|
171
185
|
},
|
|
@@ -180,6 +194,8 @@ var MIGRATIONS = [
|
|
|
180
194
|
},
|
|
181
195
|
// The version-2 files: only the number changes, no field gains a required (ADR 0125).
|
|
182
196
|
catalogStep("catalog-schema-v3", "Catalog records at schema version 3: a Schema field can say whether it is required (ADR 0125)", [2]),
|
|
197
|
+
// The version-3 files: only the number changes; version 4 adds a Schema format (ADR 0164).
|
|
198
|
+
catalogStep("catalog-schema-v4", "Catalog records at schema version 4: a Schema can be a protobuf message (ADR 0164)", [3]),
|
|
183
199
|
sourcesStep("sources-v2", "sources.yaml at version 2: a wiki can include and exclude pages by pattern; every wiki still reads every page (ADR 0083)", { from: 1, to: 2 }),
|
|
184
200
|
// ADR 0132: from version 1 or 2 (a version 1 file is moved to 2 by the step before, then here).
|
|
185
201
|
sourcesStep("sources-v3", "sources.yaml at version 3: a wiki can say how much its word counts (authority) and where it applies (appliesTo); every wiki still ranks as a team's and applies everywhere (ADR 0132)", { to: 3 }),
|
|
@@ -224,6 +240,48 @@ var MIGRATIONS = [
|
|
|
224
240
|
return [rel2];
|
|
225
241
|
}
|
|
226
242
|
},
|
|
243
|
+
{
|
|
244
|
+
// ADR 0171: a runtime.yaml that names copilot-acp (a mode or its copilotAcp section) needs
|
|
245
|
+
// version 3; any other file means the same at 1 or 2 and is left as it is.
|
|
246
|
+
id: "runtime-v3",
|
|
247
|
+
summary: "runtime.yaml at version 3 where it names copilot-acp: GitHub Copilot driven unattended through its Agent Client Protocol (ADR 0171); the number only",
|
|
248
|
+
async pending(root) {
|
|
249
|
+
const rel2 = packRel(root, "runtime.yaml");
|
|
250
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
251
|
+
return text !== void 0 && migrateRuntimeV3Text(text).changed ? [rel2] : [];
|
|
252
|
+
},
|
|
253
|
+
async apply(root) {
|
|
254
|
+
const rel2 = packRel(root, "runtime.yaml");
|
|
255
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
256
|
+
if (text === void 0)
|
|
257
|
+
return [];
|
|
258
|
+
const r = migrateRuntimeV3Text(text);
|
|
259
|
+
if (!r.changed)
|
|
260
|
+
return [];
|
|
261
|
+
await writeFileAtomic(join(root, rel2), r.text);
|
|
262
|
+
return [rel2];
|
|
263
|
+
}
|
|
264
|
+
},
|
|
265
|
+
{
|
|
266
|
+
id: "roles-v2",
|
|
267
|
+
summary: "roles.yaml at version 2: it can name the teams repos are owned by and who is on each, so questions go to their owner; no team is named until a person writes one (ADR 0140)",
|
|
268
|
+
async pending(root) {
|
|
269
|
+
const rel2 = packRel(root, "roles.yaml");
|
|
270
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
271
|
+
return text !== void 0 && migrateRolesText(text).changed ? [rel2] : [];
|
|
272
|
+
},
|
|
273
|
+
async apply(root) {
|
|
274
|
+
const rel2 = packRel(root, "roles.yaml");
|
|
275
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
276
|
+
if (text === void 0)
|
|
277
|
+
return [];
|
|
278
|
+
const r = migrateRolesText(text);
|
|
279
|
+
if (!r.changed)
|
|
280
|
+
return [];
|
|
281
|
+
await writeFileAtomic(join(root, rel2), r.text);
|
|
282
|
+
return [rel2];
|
|
283
|
+
}
|
|
284
|
+
},
|
|
227
285
|
{
|
|
228
286
|
// ADR 0006 addendum (2026-10-25): org-flow version 2 lists Atticus 2's artifacts (proposal,
|
|
229
287
|
// design, stories, specs, tasks), so `openspec status` and `validate` agree with Atticus.
|
|
@@ -249,22 +307,67 @@ var MIGRATIONS = [
|
|
|
249
307
|
// call: short story files, task prompts in tasks/, tasks numbered per story, OpenSpec specs.
|
|
250
308
|
id: "stories-b-short",
|
|
251
309
|
summary: "Each change's stories in the short form, with OpenSpec spec deltas and a proposal, from the kept stories answer (no model call; ADR 0124 addendum B-short)",
|
|
310
|
+
// The whole change folder: writing the stories again also writes stories.md, tasks.md,
|
|
311
|
+
// requests.md, the proposal, specs/, the task prompts and the needs files, all backed up.
|
|
252
312
|
async pending(root) {
|
|
253
|
-
return (await longStories(root)).map((c) => `${changesRelOf(root)}/${c}
|
|
313
|
+
return (await longStories(root)).map((c) => `${changesRelOf(root)}/${c}`);
|
|
254
314
|
},
|
|
255
315
|
async apply(root) {
|
|
256
316
|
const out = [];
|
|
257
|
-
for (const c of await longStories(root))
|
|
258
|
-
|
|
317
|
+
for (const c of await longStories(root)) {
|
|
318
|
+
const files = await rewriteStories(root, c).catch((e) => {
|
|
319
|
+
throw new Error(`The stories of ${c} couldn't be written again (${e instanceof Error ? e.message : String(e)}).`, { cause: e });
|
|
320
|
+
});
|
|
321
|
+
for (const f of files)
|
|
259
322
|
out.push(`${changesRelOf(root)}/${c}/${f}`);
|
|
323
|
+
}
|
|
260
324
|
return out;
|
|
261
325
|
}
|
|
262
326
|
},
|
|
263
327
|
{
|
|
264
328
|
id: "manifest-schema-v2",
|
|
265
329
|
summary: "repos.manifest.yaml at version 2: a repo can say what it is, in a person's words (ADR 0128)",
|
|
266
|
-
pending: (root) => migrateManifests(root, { dryRun: true }),
|
|
267
|
-
apply: (root) => migrateManifests(root)
|
|
330
|
+
pending: (root) => migrateManifests(root, { dryRun: true, to: 2 }),
|
|
331
|
+
apply: (root) => migrateManifests(root, { to: 2 })
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
id: "manifest-schema-v3",
|
|
335
|
+
summary: "repos.manifest.yaml at version 3: a repo can give the base path it answers under on a shared host (ADR 0134)",
|
|
336
|
+
pending: (root) => migrateManifests(root, { dryRun: true, to: 3 }),
|
|
337
|
+
apply: (root) => migrateManifests(root, { to: 3 })
|
|
338
|
+
},
|
|
339
|
+
// ADR 0181: the version-4 files: only the number changes; version 5 adds the evidence source
|
|
340
|
+
// `ai` with its run (a link the AI decided, flagged joined-by-ai).
|
|
341
|
+
catalogStep("catalog-schema-v5", "Catalog records at schema version 5: a link can be the AI's, with the run that decided it (ADR 0181)", [4]),
|
|
342
|
+
{
|
|
343
|
+
// ADR 0181: a runtime.yaml that sets `decide` needs version 4; any other file means the same
|
|
344
|
+
// at 1 to 3 and is left as it is.
|
|
345
|
+
id: "runtime-v4",
|
|
346
|
+
summary: "runtime.yaml at version 4 where it sets decide: whether the AI decides pairings and option questions itself (ADR 0181); the number only",
|
|
347
|
+
async pending(root) {
|
|
348
|
+
const rel2 = packRel(root, "runtime.yaml");
|
|
349
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
350
|
+
return text !== void 0 && migrateRuntimeV4Text(text).changed ? [rel2] : [];
|
|
351
|
+
},
|
|
352
|
+
async apply(root) {
|
|
353
|
+
const rel2 = packRel(root, "runtime.yaml");
|
|
354
|
+
const text = await readFile(join(root, rel2), "utf8").catch(() => void 0);
|
|
355
|
+
if (text === void 0)
|
|
356
|
+
return [];
|
|
357
|
+
const r = migrateRuntimeV4Text(text);
|
|
358
|
+
if (!r.changed)
|
|
359
|
+
return [];
|
|
360
|
+
await writeFileAtomic(join(root, rel2), r.text);
|
|
361
|
+
return [rel2];
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
// ADR 0181: a corrections line that uses version 2's fields (ai, batch, rule, match, unlink)
|
|
366
|
+
// but says version 1 (written by hand) says 2; every other line means the same at 1.
|
|
367
|
+
id: "corrections-v2",
|
|
368
|
+
summary: "Corrections lines at version 2 where they use its fields: an AI pairing, a batch, a rule, an unlink (ADR 0181); the number only",
|
|
369
|
+
pending: (root) => migrateCorrections(root, { dryRun: true }),
|
|
370
|
+
apply: (root) => migrateCorrections(root)
|
|
268
371
|
}
|
|
269
372
|
];
|
|
270
373
|
var orgFlowRel = (root) => `${layoutOf(root).openspec.replace(/\/+$/, "")}/schemas/org-flow/schema.yaml`;
|
|
@@ -317,7 +420,7 @@ function catalogStep(id, summary, versions) {
|
|
|
317
420
|
versions,
|
|
318
421
|
pendingOnly: dryRun
|
|
319
422
|
});
|
|
320
|
-
out.push(...rel(
|
|
423
|
+
out.push(...rel(`${layoutOf(root).catalog.replace(/\/+$/, "")}/${sub}`, r.migrated));
|
|
321
424
|
}
|
|
322
425
|
return out;
|
|
323
426
|
};
|
|
@@ -353,25 +456,104 @@ function gatesRel(root) {
|
|
|
353
456
|
return packRel(root, "gates.yaml");
|
|
354
457
|
}
|
|
355
458
|
async function readStamp(root) {
|
|
459
|
+
return (await readStampFile(root)).stamp;
|
|
460
|
+
}
|
|
461
|
+
async function readStampFile(root) {
|
|
462
|
+
let text;
|
|
356
463
|
try {
|
|
357
|
-
|
|
358
|
-
return r.success ? r.data : void 0;
|
|
464
|
+
text = await readFile(join(root, STAMP_FILE), "utf8");
|
|
359
465
|
} catch {
|
|
360
|
-
return
|
|
466
|
+
return {};
|
|
361
467
|
}
|
|
468
|
+
let data;
|
|
469
|
+
try {
|
|
470
|
+
data = (0, import_yaml.parse)(text);
|
|
471
|
+
} catch (e) {
|
|
472
|
+
return { unread: { why: `not YAML: ${e.message.split("\n")[0]}` } };
|
|
473
|
+
}
|
|
474
|
+
const r = MetarepoStamp.safeParse(data);
|
|
475
|
+
if (r.success)
|
|
476
|
+
return { stamp: r.data };
|
|
477
|
+
const atticus = data?.atticus;
|
|
478
|
+
const why = r.error.issues.map((i) => `${i.path.join(".") || "(top)"}: ${i.message}`).join("; ");
|
|
479
|
+
return {
|
|
480
|
+
unread: {
|
|
481
|
+
...typeof atticus === "string" && atticus.trim() ? { atticus: atticus.trim() } : {},
|
|
482
|
+
why
|
|
483
|
+
}
|
|
484
|
+
};
|
|
485
|
+
}
|
|
486
|
+
function newerAtticusOf(c) {
|
|
487
|
+
const u = c.unreadStamp?.atticus;
|
|
488
|
+
return c.stamp?.atticus ?? (u && newerThan(u, c.atticus) ? u : void 0);
|
|
489
|
+
}
|
|
490
|
+
function newerWords(c) {
|
|
491
|
+
const u = c.unreadStamp;
|
|
492
|
+
const v = newerAtticusOf(c);
|
|
493
|
+
if (v)
|
|
494
|
+
return `This metarepo was upgraded by Atticus ${v}; this is ${c.atticus}. Install ${v} or later before working in it, so nothing it wrote is lost.`;
|
|
495
|
+
return `This metarepo was upgraded by a newer or unknown Atticus${u?.atticus ? ` (${u.atticus})` : ""}: .atticus/metarepo.yaml isn't a stamp Atticus ${c.atticus} reads (${u?.why ?? "unreadable"}). Install it${u?.atticus ? ` (Atticus ${u.atticus} or later)` : ""} before working in this metarepo, so nothing it wrote is lost; or, if the file was edited by hand, put it back as it was committed. Nothing was changed.`;
|
|
496
|
+
}
|
|
497
|
+
function newerThan(a, b) {
|
|
498
|
+
const split = (v) => {
|
|
499
|
+
const [core, pre] = v.trim().replace(/^v/, "").split(/-(.*)/s, 2);
|
|
500
|
+
return { core: (core ?? "").split(".").map((n) => Number(n) || 0), pre: pre ?? "" };
|
|
501
|
+
};
|
|
502
|
+
const x = split(a);
|
|
503
|
+
const y = split(b);
|
|
504
|
+
for (let i = 0; i < Math.max(x.core.length, y.core.length); i++) {
|
|
505
|
+
const d = (x.core[i] ?? 0) - (y.core[i] ?? 0);
|
|
506
|
+
if (d)
|
|
507
|
+
return d > 0;
|
|
508
|
+
}
|
|
509
|
+
if (x.pre === y.pre)
|
|
510
|
+
return false;
|
|
511
|
+
if (!x.pre)
|
|
512
|
+
return true;
|
|
513
|
+
if (!y.pre)
|
|
514
|
+
return false;
|
|
515
|
+
const xp = x.pre.split(".");
|
|
516
|
+
const yp = y.pre.split(".");
|
|
517
|
+
for (let i = 0; i < Math.max(xp.length, yp.length); i++) {
|
|
518
|
+
const p = xp[i];
|
|
519
|
+
const q = yp[i];
|
|
520
|
+
if (p === void 0)
|
|
521
|
+
return false;
|
|
522
|
+
if (q === void 0)
|
|
523
|
+
return true;
|
|
524
|
+
if (p === q)
|
|
525
|
+
continue;
|
|
526
|
+
const pn = /^\d+$/.test(p);
|
|
527
|
+
const qn = /^\d+$/.test(q);
|
|
528
|
+
if (pn && qn)
|
|
529
|
+
return Number(p) > Number(q);
|
|
530
|
+
if (pn !== qn)
|
|
531
|
+
return !pn;
|
|
532
|
+
return p > q;
|
|
533
|
+
}
|
|
534
|
+
return false;
|
|
362
535
|
}
|
|
363
|
-
var newerThan = (a, b) => !versionAtLeast(b, a.replace(/-.*$/, ""));
|
|
364
536
|
async function upgradeCheck(root, version = VERSION) {
|
|
365
|
-
const [
|
|
366
|
-
|
|
367
|
-
Promise.all(MIGRATIONS.map(async (m) => ({
|
|
537
|
+
const [read, found] = await Promise.all([
|
|
538
|
+
readStampFile(root),
|
|
539
|
+
Promise.all(MIGRATIONS.map(async (m) => ({
|
|
540
|
+
m,
|
|
541
|
+
files: await m.pending(root),
|
|
542
|
+
problems: m.problems ? await m.problems(root) : []
|
|
543
|
+
})))
|
|
368
544
|
]);
|
|
545
|
+
const { stamp, unread } = read;
|
|
369
546
|
const pending = found.filter((x) => x.files.length).map(({ m, files }) => ({ id: m.id, summary: m.summary, files }));
|
|
547
|
+
const problems = found.flatMap((x) => x.problems);
|
|
370
548
|
return {
|
|
371
549
|
atticus: version,
|
|
372
550
|
...stamp ? { stamp } : {},
|
|
373
|
-
|
|
374
|
-
|
|
551
|
+
// Round 49: a stamp that is there but isn't read is a newer or unknown Atticus's: never
|
|
552
|
+
// taken as no stamp, so this one never writes over it.
|
|
553
|
+
newer: stamp ? newerThan(stamp.atticus, version) : !!unread,
|
|
554
|
+
...unread ? { unreadStamp: unread } : {},
|
|
555
|
+
pending,
|
|
556
|
+
...problems.length ? { problems } : {}
|
|
375
557
|
};
|
|
376
558
|
}
|
|
377
559
|
async function openspecStorePlan(root) {
|
|
@@ -404,11 +586,13 @@ function storeLine(s) {
|
|
|
404
586
|
async function upgradeCommand(root, o, io, version = VERSION) {
|
|
405
587
|
const c = await upgradeCheck(root, version);
|
|
406
588
|
if (c.newer) {
|
|
407
|
-
io.err(
|
|
589
|
+
io.err(newerWords(c));
|
|
408
590
|
if (o.json)
|
|
409
591
|
io.out(JSON.stringify(c, null, 2));
|
|
410
592
|
return 1;
|
|
411
593
|
}
|
|
594
|
+
for (const p of c.problems ?? [])
|
|
595
|
+
io.err(`Left as it is: ${p}`);
|
|
412
596
|
const store = o.openspecStore ? await openspecStorePlan(root) : void 0;
|
|
413
597
|
if (store?.action === "refused") {
|
|
414
598
|
io.err(store.why);
|
|
@@ -443,12 +627,25 @@ async function upgradeCommand(root, o, io, version = VERSION) {
|
|
|
443
627
|
if (c.pending.length) {
|
|
444
628
|
await mkdir(backup, { recursive: true });
|
|
445
629
|
await ensureLocalIgnore(root);
|
|
446
|
-
for (const p of c.pending)
|
|
630
|
+
for (const p of c.pending) {
|
|
631
|
+
const creates = MIGRATIONS.find((x) => x.id === p.id)?.creates === true;
|
|
447
632
|
for (const f of p.files)
|
|
448
|
-
await cp(join(root, ...f.split("/")), join(backup, ...f.split("/"))
|
|
633
|
+
await cp(join(root, ...f.split("/")), join(backup, ...f.split("/")), {
|
|
634
|
+
recursive: true
|
|
635
|
+
}).catch((e) => {
|
|
636
|
+
if (e.code === "ENOENT" && creates)
|
|
637
|
+
return;
|
|
638
|
+
throw new Error(e.code === "ENOENT" ? `Couldn't back up ${f} before upgrading: the step ${p.id} would change it, but it isn't there; nothing was changed.` : `Couldn't back up ${f} before upgrading (${e.message}); nothing was changed.`);
|
|
639
|
+
});
|
|
640
|
+
}
|
|
449
641
|
for (const p of c.pending) {
|
|
450
642
|
const m = MIGRATIONS.find((x) => x.id === p.id);
|
|
451
|
-
|
|
643
|
+
try {
|
|
644
|
+
changed.push(...await m.apply(root));
|
|
645
|
+
} catch (e) {
|
|
646
|
+
const done = c.pending.slice(0, c.pending.indexOf(p)).map((x) => x.id);
|
|
647
|
+
throw new Error(`${e instanceof Error ? e.message : String(e)} The files as they were before this upgrade are in ${relative(root, backup).split(sep).join("/")}${done.length ? `; these steps had already run: ${done.join(", ")}` : ""}. Run atticus upgrade again once it's fixed.`, { cause: e });
|
|
648
|
+
}
|
|
452
649
|
}
|
|
453
650
|
}
|
|
454
651
|
const stamp = MetarepoStamp.parse({
|
|
@@ -491,6 +688,9 @@ export {
|
|
|
491
688
|
STAMP_FILE,
|
|
492
689
|
MIGRATIONS,
|
|
493
690
|
readStamp,
|
|
691
|
+
newerAtticusOf,
|
|
692
|
+
newerWords,
|
|
693
|
+
newerThan,
|
|
494
694
|
upgradeCheck,
|
|
495
695
|
upgradeCommand
|
|
496
696
|
};
|