@maycombhq/atticus 2.0.0-beta.23 → 2.0.0-beta.25
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-S7GUZ45I.js → chunk-23QHP4JJ.js} +5 -3
- package/dist/{chunk-73V2OONC.js → chunk-2RABF6RT.js} +17 -15
- package/dist/{chunk-ENH6Z4TY.js → chunk-2ULVUSIP.js} +17 -17
- package/dist/{chunk-G6EFXTUO.js → chunk-2VN4TLGI.js} +7 -5
- package/dist/{chunk-ZSNOILL5.js → chunk-2Y5FJQSF.js} +1 -1
- package/dist/{chunk-YDCOZOER.js → chunk-334N6EI2.js} +20 -18
- package/dist/chunk-3D74UADA.js +22 -0
- package/dist/{chunk-63NFFAGI.js → chunk-3NA2VE45.js} +14 -12
- package/dist/{chunk-CJEBRJBS.js → chunk-3VC2XJ53.js} +6 -4
- package/dist/{chunk-7NQAGYK4.js → chunk-3WO7ASU7.js} +8 -8
- package/dist/{chunk-GM4EFHUX.js → chunk-4GWQVT2C.js} +19 -16
- package/dist/{chunk-SVGGMBJI.js → chunk-4PW5SRKJ.js} +15 -13
- package/dist/{chunk-27AJAKX7.js → chunk-4SS5ZK47.js} +3 -3
- package/dist/{chunk-PQQKZPBU.js → chunk-4U3JLIRC.js} +1 -1
- package/dist/{chunk-Z3H27OMV.js → chunk-4WIVTPGE.js} +6 -4
- package/dist/{chunk-XF6TSZW2.js → chunk-5267F4BS.js} +6 -4
- package/dist/chunk-5CPZIWIN.js +38 -0
- package/dist/{chunk-PWXB5GBB.js → chunk-5GLGLWAJ.js} +18 -16
- package/dist/{chunk-2QPJ4E4Z.js → chunk-5K6ZKHZR.js} +4 -2
- package/dist/{chunk-QZWRPQTI.js → chunk-5OVSDV77.js} +8 -6
- package/dist/{chunk-FJVUHQPS.js → chunk-5P4PNGPL.js} +26 -23
- package/dist/{chunk-M3EOFSPY.js → chunk-5R3FRI6H.js} +33 -29
- package/dist/{chunk-PNSSE7JM.js → chunk-5RDKQOY3.js} +25 -23
- package/dist/{chunk-KDJ2YKAZ.js → chunk-5RKN5QIX.js} +9 -7
- package/dist/{chunk-3EX5HCZD.js → chunk-5UJ7C7IH.js} +16 -14
- package/dist/{chunk-ZLQEQR3D.js → chunk-5WZV37WS.js} +8 -6
- package/dist/{chunk-OBUB3H72.js → chunk-62FMA437.js} +14 -12
- package/dist/{chunk-UALE35WK.js → chunk-6576X5BJ.js} +5 -3
- package/dist/{chunk-TXNSQ24G.js → chunk-6WYOJCB4.js} +3 -3
- package/dist/{chunk-TV56QLLV.js → chunk-77REYYY5.js} +5 -3
- package/dist/{chunk-QLQIFJP3.js → chunk-7AKJ2XTW.js} +19 -16
- package/dist/{chunk-2WUTCPPJ.js → chunk-7E3G5NCH.js} +17 -13
- package/dist/{chunk-FVYZ4Y52.js → chunk-7EAH2MFY.js} +5 -3
- package/dist/{chunk-PXW2RZGQ.js → chunk-7F4GZ7U2.js} +3 -3
- package/dist/{chunk-6RQOINER.js → chunk-7FUQAT2R.js} +6 -4
- package/dist/{chunk-AQRUQNFB.js → chunk-7HW2CMIN.js} +10 -8
- package/dist/{chunk-AGOLEMHK.js → chunk-7NLYSTEK.js} +10 -8
- package/dist/{chunk-YHMPDIRG.js → chunk-7QZDGM5V.js} +6 -4
- package/dist/{chunk-MEJ63LDG.js → chunk-7U6PBBXG.js} +11 -9
- package/dist/{chunk-UTPIFH4I.js → chunk-7UYRN4ON.js} +5 -3
- package/dist/{chunk-5OXKCH4Z.js → chunk-7X3WLAKP.js} +93 -40
- package/dist/{chunk-7IFTSAHP.js → chunk-7YFUNWFM.js} +10 -8
- package/dist/chunk-7YSMZEO3.js +55 -0
- package/dist/{chunk-RPQITJNX.js → chunk-A3AADMM2.js} +10 -8
- package/dist/{chunk-VK7WYA64.js → chunk-A3J75BO2.js} +14 -12
- package/dist/chunk-AENMOZMM.js +42 -0
- package/dist/{chunk-7K5OH45X.js → chunk-AGAFNUYZ.js} +87 -10
- package/dist/{chunk-VKTXFFOZ.js → chunk-AYWJMHSX.js} +5 -3
- package/dist/{chunk-3UHV76UD.js → chunk-B2U4AOZ5.js} +41 -38
- package/dist/chunk-BDKYHCGI.js +71 -0
- package/dist/{chunk-RQQYEDAC.js → chunk-BEDZNT62.js} +12 -9
- package/dist/{chunk-PGAMTKBI.js → chunk-BIQNPWGX.js} +6 -4
- package/dist/{chunk-LSHSDC6S.js → chunk-BJDVI5W6.js} +19 -17
- package/dist/{chunk-PFULMC2D.js → chunk-BMMTWRWE.js} +22 -20
- package/dist/{chunk-KT6Q44CA.js → chunk-BPDS7KUR.js} +27 -25
- package/dist/{chunk-7XYLNQFO.js → chunk-BS52P2CM.js} +13 -5
- package/dist/{chunk-TABH4RBZ.js → chunk-C5LX54QK.js} +16 -14
- package/dist/{chunk-NCLZJCXA.js → chunk-CB6H7MH2.js} +23 -21
- package/dist/{chunk-CZ2ZS7AT.js → chunk-CGVRLQAY.js} +2166 -326
- package/dist/{chunk-HJQVUOUL.js → chunk-CMUJSPP4.js} +13 -11
- package/dist/{chunk-CT6NINGR.js → chunk-CNF7D3A7.js} +3 -3
- package/dist/{chunk-BP33TBLI.js → chunk-CPFAWYVC.js} +9 -7
- package/dist/chunk-CQRFCWQV.js +45 -0
- package/dist/chunk-CTJHEG6A.js +97 -0
- package/dist/{chunk-SCT4CEF7.js → chunk-CVWKS6GO.js} +22 -20
- package/dist/chunk-D2CGJ7RR.js +46 -0
- package/dist/{chunk-K757G7AD.js → chunk-D45K3XKK.js} +19 -16
- package/dist/chunk-D7QIZLWB.js +38 -0
- package/dist/{chunk-YERAAEO4.js → chunk-DAHKLVHU.js} +15 -13
- package/dist/{chunk-OPWGPQ2N.js → chunk-DBVQEPZB.js} +8 -6
- package/dist/{chunk-T33TPFGI.js → chunk-DCPI3ETH.js} +24 -22
- package/dist/{chunk-RRQUQAXP.js → chunk-DJ4C5ELF.js} +5 -2
- package/dist/{chunk-RCG5IAAT.js → chunk-DLNQ3HUM.js} +12 -10
- package/dist/chunk-DM3H4V2G.js +62 -0
- package/dist/{chunk-EVTI22PQ.js → chunk-DMQJDHXG.js} +7 -4
- package/dist/{chunk-5VTIWEWP.js → chunk-DPZD7WVX.js} +4 -2
- package/dist/{chunk-WF3RCZNO.js → chunk-DYVUNT4O.js} +9 -7
- package/dist/{chunk-2UMSHYCB.js → chunk-E2OP6JNF.js} +26 -24
- package/dist/{chunk-6Y4FXOMI.js → chunk-E7PR4WMM.js} +24 -22
- package/dist/{chunk-TNCF26JK.js → chunk-EAGSM3XY.js} +14 -12
- package/dist/{chunk-X5ZHDSLU.js → chunk-EJGUEUXG.js} +25 -23
- package/dist/chunk-ELKTDXV3.js +67 -0
- package/dist/{chunk-T3FNG2H2.js → chunk-ELNIQYLR.js} +14 -12
- package/dist/{chunk-DHKDH464.js → chunk-ELNLHU7Y.js} +6 -4
- package/dist/{chunk-CA3DKO4D.js → chunk-EM7F6XEU.js} +4 -2
- package/dist/{chunk-K4OXYSGS.js → chunk-EP7ZBZLT.js} +7 -5
- package/dist/chunk-EPXYFJTY.js +278 -0
- package/dist/{chunk-MBYYQHPM.js → chunk-EUCATH2U.js} +6 -4
- package/dist/{chunk-73CC73I4.js → chunk-EXCXNDTQ.js} +1 -1
- package/dist/{chunk-SRTUETF5.js → chunk-EXGXCVWC.js} +24 -22
- package/dist/{chunk-BYBU2EIB.js → chunk-F36DIKJ3.js} +23 -21
- package/dist/{chunk-P22EPEBR.js → chunk-F4WKGX7K.js} +18 -16
- package/dist/{chunk-ZJGCGKA4.js → chunk-F56DNMDD.js} +5 -3
- package/dist/chunk-FJS2FZFZ.js +41 -0
- package/dist/{chunk-2YSD6E6V.js → chunk-FNP4M4VL.js} +42 -33
- package/dist/{chunk-B4AEL3RF.js → chunk-G3ZFEHCX.js} +21 -107
- package/dist/{chunk-XOMEQVLK.js → chunk-G5P7F6RQ.js} +5 -3
- package/dist/chunk-GAU2IFIC.js +33 -0
- package/dist/{chunk-XNFM6WUK.js → chunk-GAVEIYKH.js} +21 -18
- package/dist/{chunk-TUM52SOE.js → chunk-GD6FXN6R.js} +17 -15
- package/dist/{chunk-D6BVLTDV.js → chunk-GDGE7ZHC.js} +28 -26
- package/dist/{chunk-SYP56T2D.js → chunk-GIOOA2ZO.js} +7 -4
- package/dist/chunk-GLISHJ4G.js +21345 -0
- package/dist/chunk-GPOL5H3B.js +55 -0
- package/dist/{chunk-ZFHFC74B.js → chunk-GVOQJPKA.js} +20 -18
- package/dist/{chunk-G7VBMOZH.js → chunk-GX67TNFA.js} +3 -3
- package/dist/{chunk-VNIN7Q6Q.js → chunk-H75SPCAW.js} +18 -16
- package/dist/{chunk-J4CPHJUL.js → chunk-H7GAPNGQ.js} +29 -18
- package/dist/{chunk-X7ZKNSK4.js → chunk-HD72AL3L.js} +20 -18
- package/dist/{chunk-FBCVC2GJ.js → chunk-HHZ2ZKUD.js} +16 -13
- package/dist/{chunk-K4RNVDR4.js → chunk-HHZEXF7V.js} +8 -6
- package/dist/{chunk-OK6JGLE7.js → chunk-HR34F2AJ.js} +14 -12
- package/dist/{chunk-3MYBT62N.js → chunk-HU7VXMFV.js} +9 -7
- package/dist/{chunk-LPDTDFKA.js → chunk-HV3KPEFH.js} +18 -16
- package/dist/{chunk-4ETO2FXE.js → chunk-I2M7MXSV.js} +14 -12
- package/dist/{chunk-W3AZE7LN.js → chunk-IDTVBZQI.js} +3 -3
- package/dist/{chunk-BFL4PO64.js → chunk-IFDCCCEN.js} +6 -4
- package/dist/{chunk-3ZA3AK2D.js → chunk-IKRM64KR.js} +12 -10
- package/dist/{chunk-JMEWJPF2.js → chunk-IMTAHDME.js} +7 -7
- package/dist/{chunk-DCRYOMTM.js → chunk-IP6TSICI.js} +14 -12
- package/dist/{chunk-PT4USJNN.js → chunk-IW3QMW3X.js} +10 -8
- package/dist/{chunk-MLGWSBF4.js → chunk-IWQEZFVV.js} +261 -62
- package/dist/{chunk-C6ORPLCN.js → chunk-J65TN6QU.js} +7 -5
- package/dist/{chunk-QBMLBCQH.js → chunk-JCKKAELC.js} +16 -13
- package/dist/{chunk-XGO74QWR.js → chunk-JJEPU4VS.js} +7 -5
- package/dist/{chunk-BFMTGNAQ.js → chunk-JKEUPSCE.js} +5 -3
- package/dist/{chunk-HMZ2DRBC.js → chunk-JMOZ6K5A.js} +16 -5
- package/dist/{chunk-WZYM5M4U.js → chunk-JQGWP3SC.js} +19 -17
- package/dist/{chunk-ZR6J4QFQ.js → chunk-JWLABUXL.js} +13 -11
- package/dist/{chunk-EXJZBL5N.js → chunk-JXLUHMTC.js} +23 -21
- package/dist/{chunk-DSHRA72L.js → chunk-K373N5U6.js} +13 -11
- package/dist/{chunk-WYGTSZHR.js → chunk-K3OIBTCV.js} +16 -14
- package/dist/{chunk-BAY4K55I.js → chunk-K4C2DWOZ.js} +16 -13
- package/dist/{chunk-GOZLTLRY.js → chunk-K77ILFUQ.js} +4 -4
- package/dist/{chunk-4R3TO4VL.js → chunk-KFDOL2Y4.js} +19 -17
- package/dist/{chunk-T6MX7WXM.js → chunk-KGT5RIGE.js} +30 -13
- package/dist/{chunk-SWNKO4C4.js → chunk-KJPKIU2R.js} +29 -26
- package/dist/{chunk-T7IIEDA3.js → chunk-KN4UQJ7R.js} +6 -4
- package/dist/{chunk-AVMWESFZ.js → chunk-KW4DIXUL.js} +6 -3
- package/dist/{chunk-FRAEQVYN.js → chunk-KY3BUZYI.js} +24 -22
- package/dist/{chunk-FMJYKLDY.js → chunk-LGE6H4UP.js} +15 -8
- package/dist/{chunk-XAPXKFIS.js → chunk-LKRMVWXB.js} +33 -24
- package/dist/{chunk-BUUJ7N4O.js → chunk-LMNCRSER.js} +31 -11
- package/dist/{chunk-TMFMXQEN.js → chunk-LNGFTPU7.js} +22 -19
- package/dist/{chunk-N2YX6JMY.js → chunk-LOJGNSPA.js} +28 -23
- package/dist/{chunk-6ZSYLZ7O.js → chunk-LP5QGTCR.js} +3 -3
- package/dist/{chunk-S35DIFJH.js → chunk-LPXH2DA4.js} +19 -17
- package/dist/{chunk-FRCOKUU4.js → chunk-LQD3R6NZ.js} +9 -7
- package/dist/{chunk-FPBUTZI5.js → chunk-LZFKJ2BR.js} +3233 -22921
- package/dist/{chunk-TDSCKP3V.js → chunk-M6HI36T3.js} +2 -2
- package/dist/{chunk-SK5RVP7X.js → chunk-M7XNX5IC.js} +11 -9
- package/dist/{chunk-RGZFOKVO.js → chunk-MELS6T5J.js} +6 -4
- package/dist/{chunk-6NN36LVK.js → chunk-MJAIBPI5.js} +3 -3
- package/dist/{chunk-Y2H7X3VI.js → chunk-MJMEF7SD.js} +10 -8
- package/dist/{chunk-FTLYXMHA.js → chunk-MJOIMGS4.js} +7 -5
- package/dist/chunk-MLUHBVCI.js +45 -0
- package/dist/{chunk-JXAKYP45.js → chunk-MM5OAVSW.js} +27 -25
- package/dist/{chunk-6ZFF7XSL.js → chunk-MM7YWUBB.js} +6 -6
- package/dist/{chunk-S5GSQPIN.js → chunk-MN2XDLDM.js} +18 -16
- package/dist/{chunk-MNIPPBCT.js → chunk-MWOPED6I.js} +7 -5
- package/dist/{chunk-JFFKHIM6.js → chunk-MXPKXCGP.js} +1 -1
- package/dist/{chunk-IYNCSYU4.js → chunk-MZTU5L6S.js} +6 -4
- package/dist/{chunk-NAPHHWW2.js → chunk-N3OEBQTA.js} +3 -3
- package/dist/{chunk-PCCLVIDP.js → chunk-N6SSI6XO.js} +25 -22
- package/dist/{chunk-POSDBRKV.js → chunk-NB664KWQ.js} +28 -25
- package/dist/{chunk-Z3RAFU5B.js → chunk-NL6GIEJU.js} +17 -15
- package/dist/{chunk-ISG547IS.js → chunk-NMBHFSJQ.js} +24 -22
- package/dist/{chunk-CFUDAW3R.js → chunk-NMGFXT4S.js} +17 -15
- package/dist/{chunk-ZENHDXRZ.js → chunk-NPZ4KXIV.js} +20 -18
- package/dist/{chunk-CQ7RF4QN.js → chunk-NQLTWGF4.js} +6 -4
- package/dist/{chunk-KTNOBTV5.js → chunk-O6DJMDBR.js} +6 -4
- package/dist/{chunk-MH2ZK67S.js → chunk-OEUTV6EL.js} +15 -12
- package/dist/{chunk-CKVBDVIW.js → chunk-OMSH46JK.js} +6 -4
- package/dist/chunk-ONB7M2AF.js +52 -0
- package/dist/{chunk-QX4MAMUG.js → chunk-OOU4N2JQ.js} +136 -30
- package/dist/{chunk-4MYHETJ3.js → chunk-OW53P52N.js} +20 -18
- package/dist/{chunk-APDN6UOR.js → chunk-P4QTTCVK.js} +20 -18
- package/dist/{chunk-JSP73CDW.js → chunk-P56N3NPT.js} +8 -5
- package/dist/{chunk-CS4BMJLL.js → chunk-PCZ4C2V7.js} +7 -5
- package/dist/{chunk-A4JXVO5O.js → chunk-PGKCRK77.js} +10 -8
- package/dist/{chunk-RLZFL76D.js → chunk-PYVFLITV.js} +15 -13
- package/dist/{chunk-Z2D4P3R3.js → chunk-Q52KWTG5.js} +14 -12
- package/dist/{chunk-YD3KTW4H.js → chunk-Q6UYUCNS.js} +14 -12
- package/dist/chunk-QBK33722.js +51 -0
- package/dist/{chunk-L3RCQWVQ.js → chunk-QE444DZ2.js} +53 -26
- package/dist/{chunk-Y5IE6YKD.js → chunk-QEP4HTJE.js} +6 -4
- package/dist/{chunk-FSN6JFXB.js → chunk-QFOJ3UPU.js} +25 -19
- package/dist/{chunk-3424TLIJ.js → chunk-QQD25YNF.js} +12 -10
- package/dist/{chunk-HRS5O7VV.js → chunk-QSKY7FE3.js} +21 -17
- package/dist/{chunk-LO6Y7OTG.js → chunk-R6HJ4SDB.js} +10 -7
- package/dist/{chunk-QLWDIKO4.js → chunk-RFQW7XT3.js} +20 -17
- package/dist/{chunk-4GAB5ZOZ.js → chunk-RL7PETU6.js} +30 -26
- package/dist/{chunk-66AQ2JIU.js → chunk-ROVOAF2O.js} +13 -11
- package/dist/{chunk-UJF7PIMP.js → chunk-RSA5JJMN.js} +58 -34
- package/dist/{chunk-J32IPTVQ.js → chunk-RX56MZLX.js} +22 -20
- package/dist/chunk-S7I7SLZN.js +59 -0
- package/dist/{chunk-S6W3D5GS.js → chunk-S7UQFI4B.js} +29 -26
- package/dist/{chunk-TVQSXWWV.js → chunk-SBNBVUOF.js} +35 -33
- package/dist/{chunk-POEMZECG.js → chunk-SD3PGZSR.js} +1 -1
- package/dist/{chunk-EMVZIOOD.js → chunk-SEBBJQWK.js} +17 -15
- package/dist/{chunk-MWF4PXQR.js → chunk-SGTAQNOP.js} +37 -34
- package/dist/{chunk-HUGQZQ2K.js → chunk-SHWHRCMU.js} +9 -7
- package/dist/{chunk-POSZFDSQ.js → chunk-SRLUADSY.js} +6 -4
- package/dist/{chunk-J25YOUIZ.js → chunk-SXF66YNZ.js} +6 -4
- package/dist/{chunk-PRMUQUWN.js → chunk-T5QYYB5L.js} +16 -14
- package/dist/{chunk-OSYHGGL3.js → chunk-TAIYQDIV.js} +20 -18
- package/dist/{chunk-NROSSWMS.js → chunk-TIOYZDRB.js} +8 -6
- package/dist/{chunk-S6LW2RRC.js → chunk-TKCNJJ2S.js} +10 -8
- package/dist/{chunk-T6MAWL5P.js → chunk-TVFADTAT.js} +6 -4
- package/dist/{chunk-FMR2D3AZ.js → chunk-U4HZ5CXL.js} +8 -6
- package/dist/{chunk-XMUWPA56.js → chunk-U7F6E5M3.js} +27 -24
- package/dist/{chunk-FL344WQD.js → chunk-U7YZ3IRI.js} +6 -4
- package/dist/{chunk-OCQWSFJD.js → chunk-UCKG6UE7.js} +14 -12
- package/dist/{chunk-LM45GMMB.js → chunk-UCQB6NKS.js} +7 -7
- package/dist/{chunk-6SNTHK43.js → chunk-UI7ID4HG.js} +24 -19
- package/dist/{chunk-S5XFO4GY.js → chunk-UJ535VWR.js} +6 -4
- package/dist/chunk-UKMA5JFE.js +52 -0
- package/dist/{chunk-E3PDCQRH.js → chunk-UR6JGVX2.js} +299 -247
- package/dist/{chunk-IMZFOMVX.js → chunk-USH4VU5D.js} +5 -3
- package/dist/{chunk-V7PEHQZU.js → chunk-UTYL4XVA.js} +21 -19
- package/dist/{chunk-NC755EKE.js → chunk-UTZMF5CV.js} +1 -1
- package/dist/{chunk-FQVSLBTV.js → chunk-UVKJVTKX.js} +3 -3
- package/dist/{chunk-Q367UGYN.js → chunk-V7T6URII.js} +10 -8
- package/dist/{chunk-6RYB3EET.js → chunk-VAZYNF6I.js} +14 -12
- package/dist/{chunk-J2H7YG3K.js → chunk-VBJHIRKV.js} +5 -3
- package/dist/{chunk-QVVGJVVX.js → chunk-VOBG7BLB.js} +18 -16
- package/dist/{chunk-7XWJ6ED2.js → chunk-W2W7YCFL.js} +16 -13
- package/dist/{chunk-XFDDJQT7.js → chunk-WA644MUQ.js} +15 -13
- package/dist/{chunk-6NCPLIIP.js → chunk-WDJGJ3HV.js} +441 -365
- package/dist/chunk-WGOQZ4PQ.js +488 -0
- package/dist/{chunk-3EWKO457.js → chunk-WS7KBKP4.js} +8 -6
- package/dist/chunk-X7QLAUNS.js +47 -0
- package/dist/{chunk-4FLNCK6Q.js → chunk-XC5ZDFW7.js} +13 -11
- package/dist/{chunk-VRO7KSGL.js → chunk-XF5UMMQL.js} +23 -21
- package/dist/{chunk-WOMQQWTO.js → chunk-XM3JE4QY.js} +7 -5
- package/dist/{chunk-73GFVW2L.js → chunk-XP5DF5MC.js} +51 -14
- package/dist/{chunk-W5VYJWOG.js → chunk-XUCHGEF5.js} +25 -23
- package/dist/{chunk-AFBCNZRZ.js → chunk-XVQQ3BQS.js} +26 -24
- package/dist/{chunk-VJFXQISZ.js → chunk-XXJSGCDO.js} +13 -9
- package/dist/{chunk-WXVTYLVH.js → chunk-XY6FVBBV.js} +4 -4
- package/dist/{chunk-QAVRDONY.js → chunk-XZQBFF65.js} +121 -119
- package/dist/{chunk-LZVHP7CT.js → chunk-Y3J365UC.js} +7 -5
- package/dist/{chunk-GUGQSIQM.js → chunk-Y6KPWRZJ.js} +11 -9
- package/dist/{chunk-ZNHQGG7J.js → chunk-YAUMNRCB.js} +4 -4
- package/dist/{chunk-6R5VHR3N.js → chunk-YEGGQG5E.js} +9 -7
- package/dist/{chunk-LHH5KG5A.js → chunk-YGNQUFVZ.js} +3 -3
- package/dist/{chunk-CMB7FXHJ.js → chunk-YGS2YVF2.js} +16 -14
- package/dist/{chunk-IKAW2KJU.js → chunk-YRKAJ42V.js} +525 -287
- package/dist/{chunk-7YQBDE5W.js → chunk-Z3KEX7ON.js} +6 -4
- package/dist/{chunk-ZNTTW4IT.js → chunk-Z4N7BKLN.js} +7 -5
- package/dist/{chunk-75OMRKY2.js → chunk-ZD64ZR64.js} +7 -5
- package/dist/{chunk-3ASYYMOX.js → chunk-ZJQ64T6M.js} +10 -8
- package/dist/files.json +563 -547
- package/dist/packages/sdk/npm/index.js +5530 -4902
- package/dist/packages/ui/dist/assets/{elk-api-DxfAMOJq.js → elk-api-ts8TigYQ.js} +2 -2
- package/dist/packages/ui/dist/assets/index-CIfmX7DJ.css +1 -0
- package/dist/packages/ui/dist/assets/index-DNtpSfZS.js +63 -0
- package/dist/packages/ui/dist/index.html +2 -2
- package/package.json +3 -3
- package/dist/chunk-5MYE42AP.js +0 -43
- package/dist/chunk-5O7U67UA.js +0 -57
- package/dist/chunk-6JVPBGQG.js +0 -50
- package/dist/chunk-AHFQHPFF.js +0 -49
- package/dist/chunk-CXTG6AWM.js +0 -40
- package/dist/chunk-GPNMSX5H.js +0 -36
- package/dist/chunk-HMWJWYE2.js +0 -31
- package/dist/chunk-ICBGVVRI.js +0 -317
- package/dist/chunk-J2CDBSFP.js +0 -69
- package/dist/chunk-NKJDO4UC.js +0 -39
- package/dist/chunk-NOYOFYAJ.js +0 -59
- package/dist/chunk-OXXZZ7HQ.js +0 -50
- package/dist/chunk-P4YUT7W7.js +0 -45
- package/dist/chunk-RQSLHZ7T.js +0 -36
- package/dist/chunk-RYQ4JCFT.js +0 -65
- package/dist/chunk-UMCDODBX.js +0 -53
- package/dist/chunk-VJZI6KFP.js +0 -47
- package/dist/chunk-W4TNCEI4.js +0 -44
- package/dist/chunk-XLZAAAPX.js +0 -43
- package/dist/packages/ui/dist/assets/index-Buit9TfP.js +0 -62
- package/dist/packages/ui/dist/assets/index-Jyc9dFeZ.css +0 -1
|
@@ -0,0 +1,488 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
appendLines
|
|
8
|
+
} from "./chunk-7F4GZ7U2.js";
|
|
9
|
+
import {
|
|
10
|
+
readCorrections
|
|
11
|
+
} from "./chunk-XP5DF5MC.js";
|
|
12
|
+
import {
|
|
13
|
+
HttpError,
|
|
14
|
+
badRequest,
|
|
15
|
+
notFound
|
|
16
|
+
} from "./chunk-QSKY7FE3.js";
|
|
17
|
+
import {
|
|
18
|
+
applyCorrections,
|
|
19
|
+
correctedFact,
|
|
20
|
+
correctionFor,
|
|
21
|
+
outsidePairingFor,
|
|
22
|
+
repairFormSlips
|
|
23
|
+
} from "./chunk-CGVRLQAY.js";
|
|
24
|
+
import {
|
|
25
|
+
loadRepos
|
|
26
|
+
} from "./chunk-WS7KBKP4.js";
|
|
27
|
+
import {
|
|
28
|
+
FACT_FIXED_FIELDS,
|
|
29
|
+
FactCorrection,
|
|
30
|
+
FactId,
|
|
31
|
+
api_exports,
|
|
32
|
+
correctionLine,
|
|
33
|
+
factsDirOf,
|
|
34
|
+
factsRelOf,
|
|
35
|
+
listQuestions,
|
|
36
|
+
parseAuditFile,
|
|
37
|
+
parseCorrections,
|
|
38
|
+
parseFactsLines,
|
|
39
|
+
questionsDirOf,
|
|
40
|
+
sampleConfirmed
|
|
41
|
+
} from "./chunk-GLISHJ4G.js";
|
|
42
|
+
import {
|
|
43
|
+
LockHeldError,
|
|
44
|
+
withSharedFileLock,
|
|
45
|
+
writeFileAtomic
|
|
46
|
+
} from "./chunk-G3ZFEHCX.js";
|
|
47
|
+
|
|
48
|
+
// packages/cli/dist/ui-api-facts.js
|
|
49
|
+
import { mkdir, readdir as readdir2, readFile, rm } from "node:fs/promises";
|
|
50
|
+
|
|
51
|
+
// packages/cli/dist/file-memo.js
|
|
52
|
+
import { readdir, stat } from "node:fs/promises";
|
|
53
|
+
import { join } from "node:path";
|
|
54
|
+
var kept = /* @__PURE__ */ new Map();
|
|
55
|
+
async function stampOf(paths) {
|
|
56
|
+
const parts = await Promise.all(paths.map((p) => stat(p).then((s) => `${s.size}:${s.mtimeMs}`, () => "-")));
|
|
57
|
+
return parts.join("|");
|
|
58
|
+
}
|
|
59
|
+
var asking = /* @__PURE__ */ new Map();
|
|
60
|
+
function memoByFiles(key, paths, work, o = {}) {
|
|
61
|
+
const on = asking.get(key);
|
|
62
|
+
if (on)
|
|
63
|
+
return on;
|
|
64
|
+
const p = memoOnce(key, paths, work, o).finally(() => {
|
|
65
|
+
if (asking.get(key) === p)
|
|
66
|
+
asking.delete(key);
|
|
67
|
+
});
|
|
68
|
+
asking.set(key, p);
|
|
69
|
+
return p;
|
|
70
|
+
}
|
|
71
|
+
async function memoOnce(key, paths, work, o) {
|
|
72
|
+
const hit = kept.get(key);
|
|
73
|
+
if (hit && o.recheckAfterMs && Date.now() - hit.checked < o.recheckAfterMs)
|
|
74
|
+
return hit.value;
|
|
75
|
+
const stamp = await stampOf(typeof paths === "function" ? await paths() : paths);
|
|
76
|
+
if (hit && hit.stamp === stamp) {
|
|
77
|
+
hit.checked = Date.now();
|
|
78
|
+
return hit.value;
|
|
79
|
+
}
|
|
80
|
+
const value = work();
|
|
81
|
+
kept.set(key, { stamp, value, checked: Date.now() });
|
|
82
|
+
value.catch(() => {
|
|
83
|
+
if (kept.get(key)?.value === value)
|
|
84
|
+
kept.delete(key);
|
|
85
|
+
});
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
async function filesIn(dir) {
|
|
89
|
+
const names = await readdir(dir).catch(() => []);
|
|
90
|
+
return [dir, ...names.sort().map((n) => join(dir, n))];
|
|
91
|
+
}
|
|
92
|
+
async function filesUnder(dir) {
|
|
93
|
+
const out = [dir];
|
|
94
|
+
const entries = await readdir(dir, { withFileTypes: true }).catch(() => []);
|
|
95
|
+
for (const e of entries.sort((a, b) => a.name < b.name ? -1 : 1)) {
|
|
96
|
+
const p = join(dir, e.name);
|
|
97
|
+
if (e.isDirectory())
|
|
98
|
+
out.push(...await filesUnder(p));
|
|
99
|
+
else
|
|
100
|
+
out.push(p);
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function recheckNow(key) {
|
|
105
|
+
const hit = kept.get(key);
|
|
106
|
+
if (hit)
|
|
107
|
+
hit.checked = 0;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// packages/cli/dist/ui-api-facts.js
|
|
111
|
+
import { join as join2 } from "node:path";
|
|
112
|
+
var REPO = /^[a-z0-9][a-z0-9._-]{0,99}$/i;
|
|
113
|
+
var fixed = new Set(FACT_FIXED_FIELDS);
|
|
114
|
+
function factLabel(f) {
|
|
115
|
+
switch (f.kind) {
|
|
116
|
+
case "entry":
|
|
117
|
+
return `${f.method ? `${f.method} ` : ""}${f.path}`;
|
|
118
|
+
case "call":
|
|
119
|
+
return `${f.method ? `${f.method} ` : ""}${f.path}${f.to ? ` \u2192 ${f.to}` : ""}`;
|
|
120
|
+
case "store":
|
|
121
|
+
return `${f.name} (${f.op})`;
|
|
122
|
+
case "field":
|
|
123
|
+
return `${f.name}${f.type ? `: ${f.type}` : ""}`;
|
|
124
|
+
case "deploy":
|
|
125
|
+
return `${f.platform}${f.resourceName ? ` ${f.resourceName}` : ""}`;
|
|
126
|
+
case "config":
|
|
127
|
+
return `${f.key}${f.value !== void 0 ? ` = ${f.value}` : ""}`;
|
|
128
|
+
// ADR 0124 addendum A-framework: what the repo or the module is built on.
|
|
129
|
+
case "framework":
|
|
130
|
+
return `${f.name}${f.version ? ` ${f.version}` : ""}`;
|
|
131
|
+
case "flow":
|
|
132
|
+
return f.name;
|
|
133
|
+
// ADR 0163: a term of the organisation's, with the role a note gave it.
|
|
134
|
+
case "term":
|
|
135
|
+
return `${f.term} ${f.value} (${f.role})`;
|
|
136
|
+
// ADR 0180: what a component is.
|
|
137
|
+
case "component":
|
|
138
|
+
return `${f.component ?? f.repo} is a ${f.type}`;
|
|
139
|
+
// ADR 0192: what a component's build publishes, and what it builds on.
|
|
140
|
+
case "artifact":
|
|
141
|
+
return `publishes ${f.group}:${f.name}${f.version ? `:${f.version}` : ""}`;
|
|
142
|
+
case "dependency":
|
|
143
|
+
return `builds on ${f.group}:${f.name}${f.version ? `:${f.version}` : ""}${f.scope && f.scope !== "compile" ? ` (${f.scope})` : ""}`;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
function claimOf(f) {
|
|
147
|
+
const out = {};
|
|
148
|
+
for (const [k, v] of Object.entries(f))
|
|
149
|
+
if (!fixed.has(k) && typeof v === "string")
|
|
150
|
+
out[k] = v;
|
|
151
|
+
out.value = f.cite.value;
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
154
|
+
var spot = (c) => ({
|
|
155
|
+
file: c.file,
|
|
156
|
+
line: c.line,
|
|
157
|
+
value: c.value,
|
|
158
|
+
...c.quote ? { quote: c.quote } : {}
|
|
159
|
+
});
|
|
160
|
+
async function readFacts(root, repo) {
|
|
161
|
+
const file = `${factsRelOf(root)}/${repo}.jsonl`;
|
|
162
|
+
const text = await readFile(join2(factsDirOf(root), `${repo}.jsonl`), "utf8").catch(() => void 0);
|
|
163
|
+
if (text === void 0)
|
|
164
|
+
return { file, present: false, facts: [], bad: [] };
|
|
165
|
+
const read = parseFactsLines(text);
|
|
166
|
+
const p = repairFormSlips(read.facts, read.bad);
|
|
167
|
+
return {
|
|
168
|
+
file,
|
|
169
|
+
present: true,
|
|
170
|
+
facts: p.facts,
|
|
171
|
+
bad: [
|
|
172
|
+
...p.slips.map((x) => ({
|
|
173
|
+
file,
|
|
174
|
+
message: `slip of form fixed as read (a note; atticus verify ${repo} writes the fix into the facts file): ${x.message}`
|
|
175
|
+
})),
|
|
176
|
+
...p.bad.map((b) => ({
|
|
177
|
+
file,
|
|
178
|
+
message: `line ${b.line} isn't a fact: ${b.issues.map((i) => i.message).join("; ")}`
|
|
179
|
+
}))
|
|
180
|
+
]
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
async function repoFactsView(root, repo) {
|
|
184
|
+
const dir = factsDirOf(root);
|
|
185
|
+
return memoByFiles(`facts-view\0${root}\0${repo}`, [
|
|
186
|
+
...[`${repo}.jsonl`, `${repo}.corrections.jsonl`, `${repo}.audit.yaml`].map((f) => join2(dir, f)),
|
|
187
|
+
// Its open questions are part of the view.
|
|
188
|
+
...await filesIn(questionsDirOf(root))
|
|
189
|
+
], () => repoFactsViewNow(root, repo));
|
|
190
|
+
}
|
|
191
|
+
async function repoFactsViewNow(root, repo) {
|
|
192
|
+
const f = await readFacts(root, repo);
|
|
193
|
+
const cFile = `${factsRelOf(root)}/${repo}.corrections.jsonl`;
|
|
194
|
+
const c = await readCorrections(root, repo);
|
|
195
|
+
const problems = [
|
|
196
|
+
...f.bad,
|
|
197
|
+
...c.bad.map((b) => ({
|
|
198
|
+
file: cFile,
|
|
199
|
+
message: `line ${b.line} isn't a correction: ${b.message}`
|
|
200
|
+
}))
|
|
201
|
+
];
|
|
202
|
+
const auditText = await readFile(join2(factsDirOf(root), `${repo}.audit.yaml`), "utf8").catch(() => void 0);
|
|
203
|
+
const audit = auditText === void 0 ? void 0 : parseAuditFile(auditText);
|
|
204
|
+
const sampled = sampleConfirmed(audit?.ok ? audit.file : void 0, f.facts);
|
|
205
|
+
if (audit && !audit.ok)
|
|
206
|
+
problems.push({
|
|
207
|
+
file: `${factsRelOf(root)}/${repo}.audit.yaml`,
|
|
208
|
+
message: `isn't an audit file: ${audit.issues[0] ?? "invalid"}`
|
|
209
|
+
});
|
|
210
|
+
const facts = f.facts.map((x) => {
|
|
211
|
+
const corr = correctionFor(x, c.corrections) ?? outsidePairingFor(x, c.corrections);
|
|
212
|
+
return {
|
|
213
|
+
id: x.id,
|
|
214
|
+
kind: x.kind,
|
|
215
|
+
label: factLabel(x),
|
|
216
|
+
claim: claimOf(x),
|
|
217
|
+
cite: spot(x.cite),
|
|
218
|
+
...x.kind === "flow" ? {
|
|
219
|
+
steps: [
|
|
220
|
+
...x.steps.map((s) => ({ ...spot(s.cite), what: s.what })),
|
|
221
|
+
...x.errors.map((e) => ({ ...spot(e.cite), what: `${e.when} \u2192 ${e.then}` }))
|
|
222
|
+
]
|
|
223
|
+
} : {},
|
|
224
|
+
verified: x.verified === "line" && sampled.has(x.id) ? "sample" : x.verified,
|
|
225
|
+
by: x.by,
|
|
226
|
+
...corr ? { correction: corr } : {}
|
|
227
|
+
};
|
|
228
|
+
});
|
|
229
|
+
const staleAll = applyCorrections(f.facts, c.corrections).stale;
|
|
230
|
+
const stale = staleAll.filter((s) => s.why === "none").map((s) => s.correction.fact);
|
|
231
|
+
for (const s of staleAll)
|
|
232
|
+
if (s.why === "invalid")
|
|
233
|
+
problems.push({ file: cFile, message: s.message });
|
|
234
|
+
const questions = await listQuestions(root, { repo, state: "open" }).then((l) => l.questions.map((q) => ({ id: q.id, question: q.question, evidence: q.evidence })), () => []);
|
|
235
|
+
return {
|
|
236
|
+
repo,
|
|
237
|
+
file: f.file,
|
|
238
|
+
present: f.present,
|
|
239
|
+
...f.facts[0] ? { commit: f.facts[0].commit } : {},
|
|
240
|
+
facts,
|
|
241
|
+
corrections: { file: cFile, count: c.corrections.length, stale: [...new Set(stale)].sort() },
|
|
242
|
+
questions,
|
|
243
|
+
verify: `atticus verify ${repo}`,
|
|
244
|
+
problems
|
|
245
|
+
};
|
|
246
|
+
}
|
|
247
|
+
var repoOf = (v) => {
|
|
248
|
+
if (!REPO.test(v))
|
|
249
|
+
throw badRequest(`${JSON.stringify(v)} isn't a repo name.`);
|
|
250
|
+
return v;
|
|
251
|
+
};
|
|
252
|
+
function correctionOfRequest(f, req, user, at) {
|
|
253
|
+
const fact = f.facts.find((x) => x.id === req.fact);
|
|
254
|
+
if (!fact)
|
|
255
|
+
throw notFound(`${f.file} has no fact ${req.fact}.`);
|
|
256
|
+
const was = claimOf(fact);
|
|
257
|
+
const set = Object.fromEntries(Object.entries(req.set ?? {}).map(([k, v]) => [k, v.trim()]).filter(([k, v]) => was[k] !== v));
|
|
258
|
+
const line = req.line !== void 0 && req.line !== fact.cite.line ? req.line : void 0;
|
|
259
|
+
const c = FactCorrection.safeParse({
|
|
260
|
+
schemaVersion: 1,
|
|
261
|
+
fact: fact.id,
|
|
262
|
+
target: {
|
|
263
|
+
kind: fact.kind,
|
|
264
|
+
file: fact.cite.file,
|
|
265
|
+
line: fact.cite.line,
|
|
266
|
+
value: fact.cite.value
|
|
267
|
+
},
|
|
268
|
+
action: req.action,
|
|
269
|
+
...req.action === "edit" && Object.keys(set).length ? { set } : {},
|
|
270
|
+
...req.action === "edit" && line !== void 0 ? { line } : {},
|
|
271
|
+
...req.reason ? { reason: req.reason } : {},
|
|
272
|
+
by: user,
|
|
273
|
+
at: at.toISOString()
|
|
274
|
+
});
|
|
275
|
+
if (!c.success)
|
|
276
|
+
throw new HttpError(422, "Atticus can't record that", c.error.issues.map((i) => i.message).join("; "));
|
|
277
|
+
if (c.data.action === "edit") {
|
|
278
|
+
const fixedFact = correctedFact(fact, c.data);
|
|
279
|
+
if (typeof fixedFact === "string")
|
|
280
|
+
throw new HttpError(422, "That isn't a fact", `The corrected ${fact.kind} isn't one: ${fixedFact}.`);
|
|
281
|
+
}
|
|
282
|
+
return { c: c.data, fact };
|
|
283
|
+
}
|
|
284
|
+
var saysOf = (c) => JSON.stringify([
|
|
285
|
+
c.action,
|
|
286
|
+
Object.entries(c.set ?? {}).sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0),
|
|
287
|
+
c.line ?? null,
|
|
288
|
+
c.reason ?? null
|
|
289
|
+
]);
|
|
290
|
+
var LINK_CORRECTIONS_MAX_BODY = 16 * 1024 * 1024;
|
|
291
|
+
var holdingAll = (files, work, o = {}) => files.length ? withSharedFileLock(files[0], () => holdingAll(files.slice(1), work, o), o) : work();
|
|
292
|
+
async function repoSpellings(root) {
|
|
293
|
+
const byLower = /* @__PURE__ */ new Map();
|
|
294
|
+
const add = (n) => {
|
|
295
|
+
const k = n.toLowerCase();
|
|
296
|
+
byLower.set(k, (byLower.get(k) ?? /* @__PURE__ */ new Set()).add(n));
|
|
297
|
+
};
|
|
298
|
+
const manifests = /* @__PURE__ */ new Map();
|
|
299
|
+
for (const r of await loadRepos(root).catch(() => []))
|
|
300
|
+
manifests.set(r.id.toLowerCase(), r.id);
|
|
301
|
+
for (const n of await readdir2(factsDirOf(root)).catch(() => []))
|
|
302
|
+
if (n.endsWith(".jsonl") && !/\.(corrections|rejected|reviewed|questions)\.jsonl$/.test(n))
|
|
303
|
+
add(n.slice(0, -6));
|
|
304
|
+
return (name) => {
|
|
305
|
+
const k = name.toLowerCase();
|
|
306
|
+
const same = [...byLower.get(k) ?? []].sort();
|
|
307
|
+
const manifest = manifests.get(k);
|
|
308
|
+
if (!same.length && manifest)
|
|
309
|
+
return manifest;
|
|
310
|
+
if (!same.length)
|
|
311
|
+
throw notFound(`No repo of the estate is named ${name}.`);
|
|
312
|
+
if (same.length > 1)
|
|
313
|
+
throw new HttpError(422, "Atticus can't tell which repo that is", `The facts files spell ${same.join(", ")}, which differ only by case: one repo where case is ignored. Rename one (and its facts files) so each repo is spelt one way.`, { written: [] });
|
|
314
|
+
return same[0];
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
function uiFactsRoutes(r, ctx, deps = {}) {
|
|
318
|
+
const now = deps.now ?? (() => /* @__PURE__ */ new Date());
|
|
319
|
+
const write = deps.write ?? writeFileAtomic;
|
|
320
|
+
return r.add("GET", "/api/facts/{repo}", async ({ params }) => ({
|
|
321
|
+
status: 200,
|
|
322
|
+
body: await repoFactsView(ctx.root, repoOf(params.repo))
|
|
323
|
+
})).add("GET", "/api/facts/{repo}/preview", async ({ params, query }) => {
|
|
324
|
+
const repo = repoOf(params.repo);
|
|
325
|
+
const fact = query.get("fact") || void 0;
|
|
326
|
+
if (fact && !FactId.safeParse(fact).success)
|
|
327
|
+
throw badRequest(`${JSON.stringify(fact)} isn't a fact id.`);
|
|
328
|
+
const { verifyWritePreview } = await import("./chunk-SGTAQNOP.js");
|
|
329
|
+
const v = await verifyWritePreview(ctx.root, repo, fact ? { fact } : {});
|
|
330
|
+
if (!v)
|
|
331
|
+
throw notFound(`There are no facts for ${repo} at ${factsRelOf(ctx.root)}/${repo}.jsonl.`);
|
|
332
|
+
return { status: 200, body: v };
|
|
333
|
+
}).add("POST", "/api/facts/{repo}/corrections", async ({ params, body }) => {
|
|
334
|
+
const repo = (await repoSpellings(ctx.root))(repoOf(params.repo));
|
|
335
|
+
const b = api_exports.FactCorrectionRequest.safeParse(body ?? {});
|
|
336
|
+
if (!b.success)
|
|
337
|
+
throw badRequest("Say which fact and what is wrong: { fact, action, set, line, reason }.", {
|
|
338
|
+
errors: b.error.issues.map((i) => ({ path: i.path.join("."), message: i.message }))
|
|
339
|
+
});
|
|
340
|
+
const f = await readFacts(ctx.root, repo);
|
|
341
|
+
if (!f.present)
|
|
342
|
+
throw notFound(`There are no facts for ${repo} at ${f.file}.`);
|
|
343
|
+
const { c, fact } = correctionOfRequest(f, b.data, ctx.user, now());
|
|
344
|
+
const rel = `${factsRelOf(ctx.root)}/${repo}.corrections.jsonl`;
|
|
345
|
+
const written = correctionLine(c);
|
|
346
|
+
await mkdir(factsDirOf(ctx.root), { recursive: true });
|
|
347
|
+
const cfile = join2(factsDirOf(ctx.root), `${repo}.corrections.jsonl`);
|
|
348
|
+
await appendLines(cfile, [written], { waitMs: deps.lockWaitMs ?? 15e3 }).catch((e) => {
|
|
349
|
+
if (!(e instanceof LockHeldError))
|
|
350
|
+
throw e;
|
|
351
|
+
throw new HttpError(409, "Another write holds a corrections file", `${e.message} Nothing was written; try again once it is done.`, { written: [] });
|
|
352
|
+
});
|
|
353
|
+
ctx.events.publish({ type: "file.changed", path: rel });
|
|
354
|
+
const result = {
|
|
355
|
+
correction: c,
|
|
356
|
+
file: rel,
|
|
357
|
+
commit: `git add ${rel}
|
|
358
|
+
git commit -m "${repo}: a person's correction of ${fact.id}"`,
|
|
359
|
+
verify: `atticus verify ${repo}`,
|
|
360
|
+
line: written
|
|
361
|
+
};
|
|
362
|
+
return { status: 200, body: result };
|
|
363
|
+
}).add(
|
|
364
|
+
"POST",
|
|
365
|
+
"/api/links/corrections",
|
|
366
|
+
async ({ body }) => {
|
|
367
|
+
const b = api_exports.LinkCorrectionsRequest.safeParse(body ?? {});
|
|
368
|
+
if (!b.success)
|
|
369
|
+
throw badRequest("Say which calls and what is wrong: { items: [{ repo, fact, action, set }], reason }.", {
|
|
370
|
+
errors: b.error.issues.map((i) => ({ path: i.path.join("."), message: i.message }))
|
|
371
|
+
});
|
|
372
|
+
const at = now();
|
|
373
|
+
const byRepo = /* @__PURE__ */ new Map();
|
|
374
|
+
const read = /* @__PURE__ */ new Map();
|
|
375
|
+
const spelt = await repoSpellings(ctx.root);
|
|
376
|
+
for (const item of b.data.items) {
|
|
377
|
+
const repo = spelt(repoOf(item.repo));
|
|
378
|
+
let f = read.get(repo);
|
|
379
|
+
if (!f) {
|
|
380
|
+
f = await readFacts(ctx.root, repo);
|
|
381
|
+
read.set(repo, f);
|
|
382
|
+
}
|
|
383
|
+
if (!f.present)
|
|
384
|
+
throw notFound(`There are no facts for ${repo} at ${f.file}.`);
|
|
385
|
+
const reason = item.reason ?? b.data.reason;
|
|
386
|
+
const corrected = correctionOfRequest(f, {
|
|
387
|
+
fact: item.fact,
|
|
388
|
+
action: item.action,
|
|
389
|
+
...item.set ? { set: item.set } : {},
|
|
390
|
+
...reason ? { reason } : {}
|
|
391
|
+
}, ctx.user, at);
|
|
392
|
+
byRepo.set(repo, [...byRepo.get(repo) ?? [], corrected]);
|
|
393
|
+
}
|
|
394
|
+
await mkdir(factsDirOf(ctx.root), { recursive: true });
|
|
395
|
+
const repos = [...byRepo.keys()].sort((a, b2) => a < b2 ? -1 : a > b2 ? 1 : 0);
|
|
396
|
+
const fileOf = (repo) => join2(factsDirOf(ctx.root), `${repo}.corrections.jsonl`);
|
|
397
|
+
const relOf = (repo) => `${factsRelOf(ctx.root)}/${repo}.corrections.jsonl`;
|
|
398
|
+
const files = [];
|
|
399
|
+
const skipped = [];
|
|
400
|
+
const held = holdingAll(repos.map(fileOf), async () => {
|
|
401
|
+
const plan = [];
|
|
402
|
+
for (const repo of repos) {
|
|
403
|
+
const before = await readFile(fileOf(repo), "utf8").catch((e) => {
|
|
404
|
+
if (e.code === "ENOENT")
|
|
405
|
+
return void 0;
|
|
406
|
+
throw new HttpError(500, "Atticus wrote none of it", `${relOf(repo)} couldn't be read (${e instanceof Error ? e.message : String(e)}): nothing was written to any repo.`, { written: [] });
|
|
407
|
+
});
|
|
408
|
+
const onFile = parseCorrections(before ?? "").corrections;
|
|
409
|
+
const cs = [];
|
|
410
|
+
for (const { c, fact } of byRepo.get(repo)) {
|
|
411
|
+
const meets = correctionFor(fact, onFile);
|
|
412
|
+
if (meets && saysOf(meets) === saysOf(c)) {
|
|
413
|
+
if (!skipped.some((x) => x.repo === repo && x.fact === c.fact))
|
|
414
|
+
skipped.push({ repo, fact: c.fact });
|
|
415
|
+
continue;
|
|
416
|
+
}
|
|
417
|
+
onFile.push(c);
|
|
418
|
+
cs.push(c);
|
|
419
|
+
}
|
|
420
|
+
if (!cs.length)
|
|
421
|
+
continue;
|
|
422
|
+
const was = before ?? "";
|
|
423
|
+
const eol = /\r\n/.test(was) ? "\r\n" : "\n";
|
|
424
|
+
const lead = was && !was.endsWith("\n") ? eol : "";
|
|
425
|
+
const lines = cs.map(correctionLine);
|
|
426
|
+
plan.push({
|
|
427
|
+
repo,
|
|
428
|
+
before,
|
|
429
|
+
after: was + lead + lines.map((l) => `${l}${eol}`).join(""),
|
|
430
|
+
cs
|
|
431
|
+
});
|
|
432
|
+
}
|
|
433
|
+
const done = [];
|
|
434
|
+
for (const x of plan) {
|
|
435
|
+
try {
|
|
436
|
+
await write(fileOf(x.repo), x.after);
|
|
437
|
+
done.push(x);
|
|
438
|
+
} catch (e) {
|
|
439
|
+
const why = e instanceof Error ? e.message : String(e);
|
|
440
|
+
const kept2 = [];
|
|
441
|
+
for (const y of [...done].reverse())
|
|
442
|
+
await (y.before === void 0 ? rm(fileOf(y.repo), { force: true }) : write(fileOf(y.repo), y.before)).catch(() => kept2.push(y));
|
|
443
|
+
const written = kept2.sort((a, b2) => a.repo < b2.repo ? -1 : 1).map((y) => ({ repo: y.repo, file: relOf(y.repo) }));
|
|
444
|
+
for (const w of written)
|
|
445
|
+
ctx.events.publish({ type: "file.changed", path: w.file });
|
|
446
|
+
throw new HttpError(500, written.length ? "Atticus wrote only part of it" : "Atticus wrote none of it", written.length ? `${relOf(x.repo)} couldn't be written (${why}), and ${written.map((w) => w.file).join(", ")} couldn't be put back as it was: the corrections for ${written.map((w) => w.repo).join(", ")} are on file, the others are not. Asked again, the ones on file are skipped.` : `${relOf(x.repo)} couldn't be written (${why}): nothing was written to any repo.`, { written });
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
for (const x of done)
|
|
450
|
+
files.push({
|
|
451
|
+
repo: x.repo,
|
|
452
|
+
file: relOf(x.repo),
|
|
453
|
+
lines: x.cs.map(correctionLine),
|
|
454
|
+
corrections: x.cs
|
|
455
|
+
});
|
|
456
|
+
}, { waitMs: deps.lockWaitMs ?? 15e3 });
|
|
457
|
+
await held.catch((e) => {
|
|
458
|
+
if (!(e instanceof LockHeldError))
|
|
459
|
+
throw e;
|
|
460
|
+
throw new HttpError(409, "Another write holds a corrections file", `${e.message} Nothing was written to any repo; try again once it is done.`, { written: [] });
|
|
461
|
+
});
|
|
462
|
+
for (const f of files)
|
|
463
|
+
ctx.events.publish({ type: "file.changed", path: f.file });
|
|
464
|
+
const n = files.reduce((k, f) => k + f.corrections.length, 0);
|
|
465
|
+
const result = {
|
|
466
|
+
files,
|
|
467
|
+
// Nothing new written (every one on file already): nothing to commit.
|
|
468
|
+
commit: files.length ? `git add ${files.map((f) => f.file).join(" ")}
|
|
469
|
+
git commit -m "A person's correction of ${n} call${n === 1 ? "" : "s"} on one link"` : "",
|
|
470
|
+
verify: files.map((f) => `atticus verify ${f.repo}`),
|
|
471
|
+
...skipped.length ? { skipped } : {}
|
|
472
|
+
};
|
|
473
|
+
return { status: 200, body: result };
|
|
474
|
+
},
|
|
475
|
+
// Review of beta.24: up to 5000 calls in one request (every call edge-calls gives), each
|
|
476
|
+
// with its why: more than the server's usual 4 MB.
|
|
477
|
+
{ maxBody: LINK_CORRECTIONS_MAX_BODY }
|
|
478
|
+
);
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
export {
|
|
482
|
+
memoByFiles,
|
|
483
|
+
filesUnder,
|
|
484
|
+
recheckNow,
|
|
485
|
+
factLabel,
|
|
486
|
+
claimOf,
|
|
487
|
+
uiFactsRoutes
|
|
488
|
+
};
|
|
@@ -4,19 +4,21 @@ var require = __atticusCreateRequire(import.meta.url);
|
|
|
4
4
|
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
6
|
import {
|
|
7
|
-
ChangeRepos,
|
|
8
|
-
RecordId,
|
|
9
|
-
RepoManifest,
|
|
10
|
-
WORKSPACE_SCHEMA_VERSION,
|
|
11
7
|
changeBranch,
|
|
12
8
|
changesDirOf,
|
|
13
9
|
orgPackDirOf,
|
|
14
10
|
runsDirOf,
|
|
15
11
|
toCanonicalYaml
|
|
16
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GLISHJ4G.js";
|
|
17
13
|
import {
|
|
18
14
|
withSharedFileLock
|
|
19
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-G3ZFEHCX.js";
|
|
16
|
+
import {
|
|
17
|
+
ChangeRepos,
|
|
18
|
+
RecordId,
|
|
19
|
+
RepoManifest,
|
|
20
|
+
WORKSPACE_SCHEMA_VERSION
|
|
21
|
+
} from "./chunk-LZFKJ2BR.js";
|
|
20
22
|
import {
|
|
21
23
|
require_dist
|
|
22
24
|
} from "./chunk-BQGDB6ZL.js";
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createRequire as __atticusCreateRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
3
|
+
var require = __atticusCreateRequire(import.meta.url);
|
|
4
|
+
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
|
+
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
explainCommand,
|
|
8
|
+
learnCheck,
|
|
9
|
+
learnList,
|
|
10
|
+
learnStart,
|
|
11
|
+
sandboxCreate
|
|
12
|
+
} from "./chunk-UCKG6UE7.js";
|
|
13
|
+
import "./chunk-EAGSM3XY.js";
|
|
14
|
+
import "./chunk-C5LX54QK.js";
|
|
15
|
+
import "./chunk-H7GAPNGQ.js";
|
|
16
|
+
import "./chunk-VOGCSYOI.js";
|
|
17
|
+
import "./chunk-IWQEZFVV.js";
|
|
18
|
+
import "./chunk-EM7F6XEU.js";
|
|
19
|
+
import "./chunk-GDGE7ZHC.js";
|
|
20
|
+
import "./chunk-JQGWP3SC.js";
|
|
21
|
+
import "./chunk-UTZMF5CV.js";
|
|
22
|
+
import "./chunk-U7YZ3IRI.js";
|
|
23
|
+
import "./chunk-DLNQ3HUM.js";
|
|
24
|
+
import "./chunk-YRKAJ42V.js";
|
|
25
|
+
import "./chunk-CGVRLQAY.js";
|
|
26
|
+
import "./chunk-RL7PETU6.js";
|
|
27
|
+
import "./chunk-PGKCRK77.js";
|
|
28
|
+
import "./chunk-M6HI36T3.js";
|
|
29
|
+
import "./chunk-2VN4TLGI.js";
|
|
30
|
+
import "./chunk-4U3JLIRC.js";
|
|
31
|
+
import "./chunk-MXPKXCGP.js";
|
|
32
|
+
import "./chunk-QQD25YNF.js";
|
|
33
|
+
import "./chunk-QA4O2GGC.js";
|
|
34
|
+
import "./chunk-WS7KBKP4.js";
|
|
35
|
+
import "./chunk-GLISHJ4G.js";
|
|
36
|
+
import "./chunk-G3ZFEHCX.js";
|
|
37
|
+
import "./chunk-LZFKJ2BR.js";
|
|
38
|
+
import "./chunk-CTJHEG6A.js";
|
|
39
|
+
import "./chunk-BQGDB6ZL.js";
|
|
40
|
+
import "./chunk-TV45EUGM.js";
|
|
41
|
+
export {
|
|
42
|
+
explainCommand,
|
|
43
|
+
learnCheck,
|
|
44
|
+
learnList,
|
|
45
|
+
learnStart,
|
|
46
|
+
sandboxCreate
|
|
47
|
+
};
|
|
@@ -3,31 +3,33 @@ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
|
|
|
3
3
|
var require = __atticusCreateRequire(import.meta.url);
|
|
4
4
|
var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
|
+
import {
|
|
7
|
+
doctorChecks
|
|
8
|
+
} from "./chunk-F36DIKJ3.js";
|
|
6
9
|
import {
|
|
7
10
|
buildSite,
|
|
8
11
|
catalogRecords,
|
|
9
12
|
openChanges
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import {
|
|
12
|
-
doctorChecks
|
|
13
|
-
} from "./chunk-BYBU2EIB.js";
|
|
13
|
+
} from "./chunk-N3OEBQTA.js";
|
|
14
14
|
import {
|
|
15
15
|
readProbes,
|
|
16
16
|
whatRunsWhere
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-H7GAPNGQ.js";
|
|
18
18
|
import {
|
|
19
19
|
baseClonePath,
|
|
20
20
|
loadRepos
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-WS7KBKP4.js";
|
|
22
22
|
import {
|
|
23
|
-
CatalogBaseline,
|
|
24
|
-
DEFAULT_RUNTIME,
|
|
25
|
-
WORKSPACE_SCHEMA_VERSION,
|
|
26
23
|
catalogDirOf,
|
|
27
24
|
inputsDirOf,
|
|
28
|
-
loadOrgPack,
|
|
29
25
|
orgPackDirOf
|
|
30
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-GLISHJ4G.js";
|
|
27
|
+
import {
|
|
28
|
+
CatalogBaseline,
|
|
29
|
+
DEFAULT_RUNTIME,
|
|
30
|
+
WORKSPACE_SCHEMA_VERSION,
|
|
31
|
+
loadOrgPack
|
|
32
|
+
} from "./chunk-LZFKJ2BR.js";
|
|
31
33
|
import {
|
|
32
34
|
require_dist
|
|
33
35
|
} from "./chunk-BQGDB6ZL.js";
|
|
@@ -15,30 +15,32 @@ import {
|
|
|
15
15
|
glossaryScan,
|
|
16
16
|
testsGenerate,
|
|
17
17
|
traceCommand
|
|
18
|
-
} from "./chunk-
|
|
19
|
-
import "./chunk-
|
|
18
|
+
} from "./chunk-IMTAHDME.js";
|
|
19
|
+
import "./chunk-SEBBJQWK.js";
|
|
20
20
|
import "./chunk-MUWDB4R4.js";
|
|
21
21
|
import "./chunk-VOGCSYOI.js";
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
25
|
-
import "./chunk-
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
34
|
-
import "./chunk-
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-
|
|
37
|
-
import "./chunk-
|
|
38
|
-
import "./chunk-3424TLIJ.js";
|
|
22
|
+
import "./chunk-JWLABUXL.js";
|
|
23
|
+
import "./chunk-IWQEZFVV.js";
|
|
24
|
+
import "./chunk-EM7F6XEU.js";
|
|
25
|
+
import "./chunk-GDGE7ZHC.js";
|
|
26
|
+
import "./chunk-JQGWP3SC.js";
|
|
27
|
+
import "./chunk-UTZMF5CV.js";
|
|
28
|
+
import "./chunk-U7YZ3IRI.js";
|
|
29
|
+
import "./chunk-DLNQ3HUM.js";
|
|
30
|
+
import "./chunk-YRKAJ42V.js";
|
|
31
|
+
import "./chunk-CGVRLQAY.js";
|
|
32
|
+
import "./chunk-RL7PETU6.js";
|
|
33
|
+
import "./chunk-PGKCRK77.js";
|
|
34
|
+
import "./chunk-M6HI36T3.js";
|
|
35
|
+
import "./chunk-2VN4TLGI.js";
|
|
36
|
+
import "./chunk-4U3JLIRC.js";
|
|
37
|
+
import "./chunk-QQD25YNF.js";
|
|
39
38
|
import "./chunk-QA4O2GGC.js";
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
39
|
+
import "./chunk-WS7KBKP4.js";
|
|
40
|
+
import "./chunk-GLISHJ4G.js";
|
|
41
|
+
import "./chunk-G3ZFEHCX.js";
|
|
42
|
+
import "./chunk-LZFKJ2BR.js";
|
|
43
|
+
import "./chunk-CTJHEG6A.js";
|
|
42
44
|
import "./chunk-BQGDB6ZL.js";
|
|
43
45
|
import "./chunk-TV45EUGM.js";
|
|
44
46
|
export {
|
|
@@ -5,19 +5,21 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
6
|
import {
|
|
7
7
|
metarepoToolBox
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-UVKJVTKX.js";
|
|
9
9
|
import {
|
|
10
10
|
CONTEXT_TOOLS
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-DLNQ3HUM.js";
|
|
12
12
|
import {
|
|
13
13
|
TOOL_LIMITS,
|
|
14
14
|
ToolSession,
|
|
15
15
|
readToolCalls,
|
|
16
16
|
recordToolCalls
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-QQD25YNF.js";
|
|
18
18
|
import "./chunk-QA4O2GGC.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-GLISHJ4G.js";
|
|
20
|
+
import "./chunk-G3ZFEHCX.js";
|
|
21
|
+
import "./chunk-LZFKJ2BR.js";
|
|
22
|
+
import "./chunk-CTJHEG6A.js";
|
|
21
23
|
import "./chunk-BQGDB6ZL.js";
|
|
22
24
|
import "./chunk-TV45EUGM.js";
|
|
23
25
|
|