@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
|
@@ -5,41 +5,47 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
|
|
|
5
5
|
var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
|
|
6
6
|
import {
|
|
7
7
|
intakeContext
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-SFUP7TTO.js";
|
|
9
9
|
import "./chunk-VOGCSYOI.js";
|
|
10
10
|
import {
|
|
11
11
|
changeFolder,
|
|
12
12
|
changeStore
|
|
13
|
-
} from "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
13
|
+
} from "./chunk-IDKCWSM5.js";
|
|
14
|
+
import "./chunk-UUU4CLJG.js";
|
|
15
|
+
import "./chunk-7IGKHZ4Z.js";
|
|
16
16
|
import {
|
|
17
17
|
estateFacts,
|
|
18
18
|
estateRepos,
|
|
19
|
+
hostAliases,
|
|
19
20
|
joinReposOf,
|
|
21
|
+
outsideProfileSystems,
|
|
20
22
|
outsideSystems
|
|
21
|
-
} from "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-J2JAKCIW.js";
|
|
24
|
+
import "./chunk-745DAZ4L.js";
|
|
25
|
+
import "./chunk-CXJ6FUKN.js";
|
|
24
26
|
import {
|
|
25
27
|
attachToChange,
|
|
26
28
|
readChangeInputs,
|
|
27
29
|
readVendorSpec
|
|
28
|
-
} from "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
30
|
+
} from "./chunk-QKUJMING.js";
|
|
31
|
+
import "./chunk-6ZGLAACW.js";
|
|
32
|
+
import "./chunk-CQDGOPGH.js";
|
|
33
|
+
import "./chunk-3NFFJL5D.js";
|
|
34
|
+
import "./chunk-PKBHS4AA.js";
|
|
35
|
+
import "./chunk-P32RUW3B.js";
|
|
36
|
+
import "./chunk-QA4O2GGC.js";
|
|
34
37
|
import {
|
|
35
38
|
PROTOTYPE_GROUPS,
|
|
36
39
|
comparePrototype,
|
|
37
40
|
factsDirOf,
|
|
38
41
|
inputsDirOf,
|
|
39
42
|
isPrototypeType,
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
joinConventions,
|
|
44
|
+
parseFacts,
|
|
45
|
+
prototypeArchitectureSection
|
|
46
|
+
} from "./chunk-Q2TECDIT.js";
|
|
47
|
+
import "./chunk-TUULXQRW.js";
|
|
48
|
+
import "./chunk-BQGDB6ZL.js";
|
|
43
49
|
import "./chunk-TV45EUGM.js";
|
|
44
50
|
|
|
45
51
|
// packages/cli/dist/prototype-commands.js
|
|
@@ -62,6 +68,8 @@ var PROTOTYPE_CLI_WORDS = {
|
|
|
62
68
|
new: "New: nothing in the estate serves it.",
|
|
63
69
|
vendor: "Vendor: only a vendor provides it, so it needs a route through the external gateway."
|
|
64
70
|
},
|
|
71
|
+
/** The vendor group's heading when another team's system provides one of its calls (O2). */
|
|
72
|
+
outside: "Outside: only a vendor or another team's system provides it; a vendor's needs a route through the external gateway, another team's is called as it publishes it.",
|
|
65
73
|
left: (n) => `${n} call${n === 1 ? "" : "s"} of the prototype reach${n === 1 ? "es" : ""} nothing in it and ${n === 1 ? "isn't" : "aren't"} compared:`,
|
|
66
74
|
attached: (path) => `Attached as ${path}: the change's feature and architecture stages read it as data, citing it by line.`,
|
|
67
75
|
unchanged: (path) => `The comparison is what ${path} already says: nothing to attach again.`,
|
|
@@ -88,12 +96,12 @@ async function loadPrototypeComparison(root, repo, io) {
|
|
|
88
96
|
if (!parsed?.ok || !parsed.facts.length || parsed.facts.some((f) => f.verified === "none"))
|
|
89
97
|
return { error: PROTOTYPE_CLI_WORDS.notRead(repo) };
|
|
90
98
|
const estate = await estateFacts(root, op, repo);
|
|
91
|
-
const systems = op
|
|
99
|
+
const systems = outsideProfileSystems(op);
|
|
92
100
|
const vendors = [];
|
|
93
101
|
for (const d of inputs.documents) {
|
|
94
102
|
if (!d.id || d.supersededBy || !SPECS.has(d.classification))
|
|
95
103
|
continue;
|
|
96
|
-
const system = systems.find((s) => s.id === d.systems[0]
|
|
104
|
+
const system = systems.find((s) => s.id === d.systems[0]);
|
|
97
105
|
if (!system)
|
|
98
106
|
continue;
|
|
99
107
|
const body = await readFile(join(inputsDirOf(root), ...d.path.split("/").slice(1)), "utf8");
|
|
@@ -117,8 +125,11 @@ async function loadPrototypeComparison(root, repo, io) {
|
|
|
117
125
|
name: f.name,
|
|
118
126
|
...f.type ? { type: f.type } : {},
|
|
119
127
|
...f.required !== void 0 ? { required: f.required } : {},
|
|
128
|
+
...f.enum ? { enum: f.enum } : {},
|
|
129
|
+
...f.in === "header" ? { in: f.in } : {},
|
|
120
130
|
at: f.cite
|
|
121
|
-
}))
|
|
131
|
+
})),
|
|
132
|
+
...o.errors ? { errors: o.errors.map((e) => ({ status: e.status, at: e.cite })) } : {}
|
|
122
133
|
}));
|
|
123
134
|
if (prior) {
|
|
124
135
|
prior.operations.push(...operations);
|
|
@@ -127,7 +138,8 @@ async function loadPrototypeComparison(root, repo, io) {
|
|
|
127
138
|
vendors.push({
|
|
128
139
|
system: system.id,
|
|
129
140
|
names: [system.name, ...system.aliases],
|
|
130
|
-
hosts: [...spec.hosts],
|
|
141
|
+
hosts: [.../* @__PURE__ */ new Set([...spec.hosts, ...hostAliases(system.aliases)])],
|
|
142
|
+
...system.boundary === "vendor" ? {} : { boundary: "internal" },
|
|
131
143
|
operations
|
|
132
144
|
});
|
|
133
145
|
}
|
|
@@ -139,13 +151,15 @@ async function loadPrototypeComparison(root, repo, io) {
|
|
|
139
151
|
},
|
|
140
152
|
estate: joinReposOf(op, estate.repos),
|
|
141
153
|
vendors,
|
|
142
|
-
outside: outsideSystems(op)
|
|
154
|
+
outside: outsideSystems(op),
|
|
155
|
+
...joinConventions(op)
|
|
143
156
|
});
|
|
144
157
|
return {
|
|
145
158
|
repo,
|
|
146
159
|
...manifest.description ? { about: manifest.description } : {},
|
|
147
160
|
comparison,
|
|
148
161
|
notes: estate.notes,
|
|
162
|
+
architecture: prototypeArchitectureSection(comparison, parsed.facts),
|
|
149
163
|
systemOf: Object.fromEntries(estateRepos(op).flatMap((r) => r.system ? [[r.id, r.system]] : []))
|
|
150
164
|
};
|
|
151
165
|
}
|
|
@@ -166,7 +180,7 @@ function prototypeLines(l) {
|
|
|
166
180
|
const calls = c.calls.filter((x) => x.group === g);
|
|
167
181
|
if (!calls.length)
|
|
168
182
|
continue;
|
|
169
|
-
out.push(PROTOTYPE_CLI_WORDS.group[g]);
|
|
183
|
+
out.push(g === "vendor" && calls.some((x) => x.vendor?.boundary === "internal") ? PROTOTYPE_CLI_WORDS.outside : PROTOTYPE_CLI_WORDS.group[g]);
|
|
170
184
|
for (const x of calls)
|
|
171
185
|
out.push(...callLines(x));
|
|
172
186
|
}
|
|
@@ -181,13 +195,21 @@ function prototypeLines(l) {
|
|
|
181
195
|
function prototypeDocument(l) {
|
|
182
196
|
return {
|
|
183
197
|
name: `prototype-${l.repo}.md`,
|
|
184
|
-
text: [
|
|
198
|
+
text: [
|
|
199
|
+
PROTOTYPE_CLI_WORDS.docTitle(l.repo),
|
|
200
|
+
"",
|
|
201
|
+
...prototypeLines(l),
|
|
202
|
+
"",
|
|
203
|
+
...l.architecture
|
|
204
|
+
].join("\n")
|
|
185
205
|
};
|
|
186
206
|
}
|
|
187
207
|
var sorted = (xs) => [...new Set(xs)].sort();
|
|
188
208
|
var ATTACHED = /^prototype-(.+)\.md$/;
|
|
189
209
|
async function changePrototypes(root, change) {
|
|
190
210
|
const quiet = { out: () => void 0, err: () => void 0 };
|
|
211
|
+
const { op } = await intakeContext(root, quiet);
|
|
212
|
+
const candidates = estateRepos(op).filter((r) => isPrototypeType(r.type)).map((r) => r.id).sort();
|
|
191
213
|
const files = (await readChangeInputs(changeFolder(root, change))).files.filter((f) => !f.supersededBy && ATTACHED.test(f.name)).sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0);
|
|
192
214
|
const prototypes = [];
|
|
193
215
|
for (const f of files) {
|
|
@@ -200,7 +222,7 @@ async function changePrototypes(root, change) {
|
|
|
200
222
|
comparison: got.comparison
|
|
201
223
|
});
|
|
202
224
|
}
|
|
203
|
-
return { prototypes };
|
|
225
|
+
return { prototypes, candidates };
|
|
204
226
|
}
|
|
205
227
|
async function attachPrototype(root, change, repo, o, io) {
|
|
206
228
|
const store = changeStore(root);
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
denyHash,
|
|
8
|
+
denyHashesAt,
|
|
9
|
+
intakeTraffic,
|
|
10
|
+
linkEvidenceAbout,
|
|
11
|
+
linkEvidenceLines,
|
|
12
|
+
loadLinkEvidence,
|
|
13
|
+
repoContractsOf,
|
|
14
|
+
writeRepoContracts
|
|
15
|
+
} from "./chunk-ZQ3ON2VQ.js";
|
|
16
|
+
import "./chunk-QKUJMING.js";
|
|
17
|
+
import "./chunk-6ZGLAACW.js";
|
|
18
|
+
import "./chunk-CQDGOPGH.js";
|
|
19
|
+
import "./chunk-3NFFJL5D.js";
|
|
20
|
+
import "./chunk-P32RUW3B.js";
|
|
21
|
+
import "./chunk-QA4O2GGC.js";
|
|
22
|
+
import "./chunk-Q2TECDIT.js";
|
|
23
|
+
import "./chunk-TUULXQRW.js";
|
|
24
|
+
import "./chunk-BQGDB6ZL.js";
|
|
25
|
+
import "./chunk-TV45EUGM.js";
|
|
26
|
+
export {
|
|
27
|
+
denyHash,
|
|
28
|
+
denyHashesAt,
|
|
29
|
+
intakeTraffic,
|
|
30
|
+
linkEvidenceAbout,
|
|
31
|
+
linkEvidenceLines,
|
|
32
|
+
loadLinkEvidence,
|
|
33
|
+
repoContractsOf,
|
|
34
|
+
writeRepoContracts
|
|
35
|
+
};
|
|
@@ -7,18 +7,18 @@ import {
|
|
|
7
7
|
readRound,
|
|
8
8
|
reviewedGates,
|
|
9
9
|
roundsOf
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-S4PMJU6H.js";
|
|
11
11
|
import {
|
|
12
12
|
changeStore,
|
|
13
13
|
liveHandoff
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-IDKCWSM5.js";
|
|
15
15
|
import {
|
|
16
16
|
createAdapters
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-7IGKHZ4Z.js";
|
|
18
18
|
import {
|
|
19
19
|
loadOrgPack,
|
|
20
20
|
orgPackDirOf
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-Q2TECDIT.js";
|
|
22
22
|
|
|
23
23
|
// packages/cli/dist/digest-commands.js
|
|
24
24
|
var norm = (s) => s.toLowerCase().replace(/^@/, "");
|
|
@@ -68,8 +68,8 @@ async function buildDigest(root, user) {
|
|
|
68
68
|
}
|
|
69
69
|
if (!lines.length)
|
|
70
70
|
lines.push("Nothing waits on you.");
|
|
71
|
-
const { readMe } = await import("./chunk-
|
|
72
|
-
const { watchLine } = await import("./chunk-
|
|
71
|
+
const { readMe } = await import("./chunk-PBPBMP2B.js");
|
|
72
|
+
const { watchLine } = await import("./chunk-MG4ZL5RW.js");
|
|
73
73
|
const watching = [];
|
|
74
74
|
for (const c of (await readMe(root)).watch)
|
|
75
75
|
watching.push(await watchLine(root, c));
|
|
@@ -0,0 +1,341 @@
|
|
|
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
|
+
denyHashesAt
|
|
8
|
+
} from "./chunk-ZQ3ON2VQ.js";
|
|
9
|
+
import {
|
|
10
|
+
estateRepos,
|
|
11
|
+
outsideProfileSystems
|
|
12
|
+
} from "./chunk-J2JAKCIW.js";
|
|
13
|
+
import {
|
|
14
|
+
denyListHits
|
|
15
|
+
} from "./chunk-QKUJMING.js";
|
|
16
|
+
import {
|
|
17
|
+
RepoManifest,
|
|
18
|
+
SHARED_MAP_SCHEMA_VERSION,
|
|
19
|
+
SharedMapFile,
|
|
20
|
+
factsDirOf,
|
|
21
|
+
factsFileOf,
|
|
22
|
+
isAdopted,
|
|
23
|
+
isSecretPath,
|
|
24
|
+
loadOrgPack,
|
|
25
|
+
orgPackDirOf,
|
|
26
|
+
parseFactsLines,
|
|
27
|
+
readSharedMaps,
|
|
28
|
+
redactSecrets,
|
|
29
|
+
serializeFacts,
|
|
30
|
+
sharedDirOf,
|
|
31
|
+
sharedRelOf
|
|
32
|
+
} from "./chunk-Q2TECDIT.js";
|
|
33
|
+
import {
|
|
34
|
+
writeFileAtomic
|
|
35
|
+
} from "./chunk-TUULXQRW.js";
|
|
36
|
+
import {
|
|
37
|
+
require_dist
|
|
38
|
+
} from "./chunk-BQGDB6ZL.js";
|
|
39
|
+
import {
|
|
40
|
+
__toESM
|
|
41
|
+
} from "./chunk-TV45EUGM.js";
|
|
42
|
+
|
|
43
|
+
// packages/cli/dist/shared-commands.js
|
|
44
|
+
var import_yaml = __toESM(require_dist(), 1);
|
|
45
|
+
import { readdir, readFile, rm, mkdir, stat } from "node:fs/promises";
|
|
46
|
+
import { isAbsolute, join, relative, resolve } from "node:path";
|
|
47
|
+
var SLUG = /^[a-z0-9][a-z0-9_-]*$/;
|
|
48
|
+
var SHA = /^[0-9a-f]{7,64}$/;
|
|
49
|
+
var SECRET_WORD = /(password|passwd|secret|token|api[-_]?key|access[-_]?key|private[-_]?key|credential)/i;
|
|
50
|
+
var posix = (p) => p.split("\\").join("/");
|
|
51
|
+
async function headCommitOf(dir) {
|
|
52
|
+
let git = join(dir, ".git");
|
|
53
|
+
const s = await stat(git).catch(() => void 0);
|
|
54
|
+
if (!s)
|
|
55
|
+
return void 0;
|
|
56
|
+
if (s.isFile()) {
|
|
57
|
+
const m = /^gitdir:\s*(.+)$/m.exec(await readFile(git, "utf8"));
|
|
58
|
+
if (!m)
|
|
59
|
+
return void 0;
|
|
60
|
+
git = resolve(dir, m[1].trim());
|
|
61
|
+
}
|
|
62
|
+
const head = (await readFile(join(git, "HEAD"), "utf8").catch(() => "")).trim();
|
|
63
|
+
if (SHA.test(head))
|
|
64
|
+
return head;
|
|
65
|
+
const ref = /^ref:\s*(.+)$/.exec(head)?.[1]?.trim();
|
|
66
|
+
if (!ref)
|
|
67
|
+
return void 0;
|
|
68
|
+
const common = (await readFile(join(git, "commondir"), "utf8").catch(() => "")).trim();
|
|
69
|
+
for (const g of [git, ...common ? [resolve(git, common)] : []]) {
|
|
70
|
+
const loose = (await readFile(join(g, ...ref.split("/")), "utf8").catch(() => "")).trim();
|
|
71
|
+
if (SHA.test(loose))
|
|
72
|
+
return loose;
|
|
73
|
+
const packed = await readFile(join(g, "packed-refs"), "utf8").catch(() => "");
|
|
74
|
+
for (const line of packed.split(/\r?\n/)) {
|
|
75
|
+
const [sha, name] = line.trim().split(/\s+/);
|
|
76
|
+
if (name === ref && sha && SHA.test(sha))
|
|
77
|
+
return sha;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return void 0;
|
|
81
|
+
}
|
|
82
|
+
async function theirManifest(dir) {
|
|
83
|
+
const out = /* @__PURE__ */ new Map();
|
|
84
|
+
const profiles = join(orgPackDirOf(dir), "profiles");
|
|
85
|
+
for (const p of (await readdir(profiles).catch(() => [])).sort()) {
|
|
86
|
+
const text = await readFile(join(profiles, p, "repos.manifest.yaml"), "utf8").catch(() => void 0);
|
|
87
|
+
if (text === void 0)
|
|
88
|
+
continue;
|
|
89
|
+
let raw;
|
|
90
|
+
try {
|
|
91
|
+
raw = (0, import_yaml.parse)(text);
|
|
92
|
+
} catch {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const m = RepoManifest.safeParse(raw);
|
|
96
|
+
if (m.success) {
|
|
97
|
+
for (const r of m.data.repos)
|
|
98
|
+
if (!out.has(r.id))
|
|
99
|
+
out.set(r.id, r);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return out;
|
|
103
|
+
}
|
|
104
|
+
function kept(f) {
|
|
105
|
+
const q = f.cite.quote;
|
|
106
|
+
if (q === void 0)
|
|
107
|
+
return { fact: f, redacted: false };
|
|
108
|
+
const red = isSecretPath(f.cite.file) ? void 0 : redactSecrets(q);
|
|
109
|
+
const quote = red !== void 0 && red === q && SECRET_WORD.test(q) ? void 0 : red;
|
|
110
|
+
if (quote === q)
|
|
111
|
+
return { fact: f, redacted: false };
|
|
112
|
+
const { quote: _q, ...cite } = f.cite;
|
|
113
|
+
return { fact: { ...f, cite: quote ? { ...cite, quote } : cite }, redacted: true };
|
|
114
|
+
}
|
|
115
|
+
async function readTheirMap(root, dir, o) {
|
|
116
|
+
if (!SLUG.test(o.team))
|
|
117
|
+
return {
|
|
118
|
+
ok: false,
|
|
119
|
+
message: `${o.team} isn't a team id: use a lowercase slug, e.g. forge-risk-team.`
|
|
120
|
+
};
|
|
121
|
+
const op = await loadOrgPack(orgPackDirOf(root));
|
|
122
|
+
const systems = outsideProfileSystems(op);
|
|
123
|
+
const system = systems.find((s) => s.id === o.system);
|
|
124
|
+
if (!system)
|
|
125
|
+
return {
|
|
126
|
+
ok: false,
|
|
127
|
+
message: `${o.system} isn't a system of your profiles that no estate repo belongs to (${systems.map((s) => s.id).join(", ") || "none"}). Add their system to a profile, boundary internal, with its host as an alias, then import again.`
|
|
128
|
+
};
|
|
129
|
+
const others = (await readSharedMaps(root)).maps.filter((m) => m.system === o.system && m.team !== o.team);
|
|
130
|
+
if (others.length)
|
|
131
|
+
return {
|
|
132
|
+
ok: false,
|
|
133
|
+
message: `${o.system} already has ${others[0].name}'s map (shared/${others[0].team}/): one map per system.`
|
|
134
|
+
};
|
|
135
|
+
const from = resolve(dir);
|
|
136
|
+
const st = await stat(from).catch(() => void 0);
|
|
137
|
+
if (!st?.isDirectory())
|
|
138
|
+
return { ok: false, message: `${dir} isn't a folder.` };
|
|
139
|
+
const commit = o.commit ?? await headCommitOf(from);
|
|
140
|
+
if (!commit || !SHA.test(commit))
|
|
141
|
+
return {
|
|
142
|
+
ok: false,
|
|
143
|
+
message: o.commit ? `${o.commit} isn't a commit sha.` : `${dir} isn't a git clone Atticus can read the commit of: say which commit of their metarepo these files are at with --commit <sha>.`
|
|
144
|
+
};
|
|
145
|
+
const theirFacts = isAdopted(from) || await stat(factsDirOf(from)).catch(() => void 0) ? factsDirOf(from) : from;
|
|
146
|
+
const names = (await readdir(theirFacts).catch(() => [])).sort();
|
|
147
|
+
const files = names.flatMap((n) => {
|
|
148
|
+
const f = factsFileOf(n);
|
|
149
|
+
return f?.facts ? [f.repo] : [];
|
|
150
|
+
});
|
|
151
|
+
if (!files.length)
|
|
152
|
+
return {
|
|
153
|
+
ok: false,
|
|
154
|
+
message: `No facts files (<repo>.jsonl) in ${dir}: give their metarepo, or the folder their facts are in.`
|
|
155
|
+
};
|
|
156
|
+
const ours = new Set(estateRepos(op).map((r) => r.id));
|
|
157
|
+
const clash = files.filter((r) => ours.has(r));
|
|
158
|
+
if (clash.length)
|
|
159
|
+
return {
|
|
160
|
+
ok: false,
|
|
161
|
+
message: `${clash.join(", ")} ${clash.length === 1 ? "is a repo" : "are repos"} of your estate: a shared map holds only another team's repos.`
|
|
162
|
+
};
|
|
163
|
+
const manifest = await theirManifest(from);
|
|
164
|
+
const leftOut = { other: 0, unverified: 0, bad: 0, redacted: 0 };
|
|
165
|
+
const facts = {};
|
|
166
|
+
const repos = [];
|
|
167
|
+
for (const repo of files) {
|
|
168
|
+
const { facts: read, bad } = parseFactsLines(await readFile(join(theirFacts, `${repo}.jsonl`), "utf8"));
|
|
169
|
+
leftOut.bad += bad.length;
|
|
170
|
+
const list = [];
|
|
171
|
+
for (const f of read) {
|
|
172
|
+
if (f.kind !== "entry" || f.repo !== repo)
|
|
173
|
+
leftOut.other++;
|
|
174
|
+
else if (f.verified === "none")
|
|
175
|
+
leftOut.unverified++;
|
|
176
|
+
else {
|
|
177
|
+
const k = kept(f);
|
|
178
|
+
if (k.redacted)
|
|
179
|
+
leftOut.redacted++;
|
|
180
|
+
list.push(k.fact);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
const m = manifest.get(repo);
|
|
184
|
+
const hosts = [
|
|
185
|
+
.../* @__PURE__ */ new Set([...m?.hosts ?? [], ...(m?.modules ?? []).flatMap((x) => x.hosts)])
|
|
186
|
+
].sort();
|
|
187
|
+
const codeCommit = list.map((f) => f.commit).sort()[0];
|
|
188
|
+
facts[repo] = list;
|
|
189
|
+
repos.push({
|
|
190
|
+
repo,
|
|
191
|
+
...m?.component ? { component: m.component } : {},
|
|
192
|
+
...codeCommit ? { commit: codeCommit } : {},
|
|
193
|
+
hosts,
|
|
194
|
+
...m?.basePath ? { basePath: m.basePath } : {},
|
|
195
|
+
entries: list.length
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
const rel = posix(relative(root, from));
|
|
199
|
+
const inside = !!rel && rel !== ".." && !rel.startsWith("../") && !isAbsolute(rel);
|
|
200
|
+
const file = SharedMapFile.parse({
|
|
201
|
+
schemaVersion: SHARED_MAP_SCHEMA_VERSION,
|
|
202
|
+
team: o.team,
|
|
203
|
+
name: o.name ?? o.team,
|
|
204
|
+
system: o.system,
|
|
205
|
+
...inside ? { source: rel } : {},
|
|
206
|
+
commit,
|
|
207
|
+
importedAt: (o.now ?? /* @__PURE__ */ new Date()).toISOString(),
|
|
208
|
+
repos
|
|
209
|
+
});
|
|
210
|
+
const deny = await denyHashesAt(root);
|
|
211
|
+
if (deny.size) {
|
|
212
|
+
for (const [repo, list] of Object.entries(facts)) {
|
|
213
|
+
const hits = denyListHits(list.length ? serializeFacts(list) : "", deny);
|
|
214
|
+
if (hits.length)
|
|
215
|
+
return {
|
|
216
|
+
ok: false,
|
|
217
|
+
message: `Refused: the deny-list names a word in ${repo}'s entries (line${hits.length === 1 ? "" : "s"} ${hits.join(", ")} as they would be kept). Nothing was written.`
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
if (denyListHits((0, import_yaml.stringify)(file), deny).length)
|
|
221
|
+
return {
|
|
222
|
+
ok: false,
|
|
223
|
+
message: "Refused: the deny-list names a word in the map's own file. Nothing was written."
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
const was = (await readSharedMaps(root)).maps.find((m) => m.team === o.team);
|
|
227
|
+
return { ok: true, file, facts, leftOut, ...was ? { replaced: was.commit } : {} };
|
|
228
|
+
}
|
|
229
|
+
async function writeTheirMap(root, r) {
|
|
230
|
+
const dir = join(sharedDirOf(root), r.file.team);
|
|
231
|
+
await rm(join(dir, "facts"), { recursive: true, force: true });
|
|
232
|
+
await mkdir(join(dir, "facts"), { recursive: true });
|
|
233
|
+
for (const [repo, list] of Object.entries(r.facts))
|
|
234
|
+
await writeFileAtomic(join(dir, "facts", `${repo}.jsonl`), list.length ? serializeFacts(list) : "");
|
|
235
|
+
await writeFileAtomic(join(dir, "map.yaml"), `# ${r.file.name}'s Atticus map, read-only (ADR 0160): their entries at their commit. Theirs to
|
|
236
|
+
# change: import it again (atticus join shared refresh ${r.file.team}); never edit it here.
|
|
237
|
+
${(0, import_yaml.stringify)(r.file)}`);
|
|
238
|
+
return `${sharedRelOf(root)}/${r.file.team}`;
|
|
239
|
+
}
|
|
240
|
+
function sayImported(r, where, io) {
|
|
241
|
+
const f = r.file;
|
|
242
|
+
const entries = f.repos.reduce((n, x) => n + x.entries, 0);
|
|
243
|
+
io.out(`${r.replaced && r.replaced !== f.commit ? `Replaced ${f.name}'s map at ${r.replaced.slice(0, 7)} with` : r.replaced ? `Imported ${f.name}'s map again,` : `Imported ${f.name}'s map,`} their commit ${f.commit.slice(0, 7)}: ${entries} entr${entries === 1 ? "y" : "ies"} from ${f.repos.length} repo${f.repos.length === 1 ? "" : "s"} (${f.repos.map((x) => `${x.repo} ${x.entries}`).join(", ")}), standing for ${f.system}. Written to ${where}/.`);
|
|
244
|
+
const lo = r.leftOut;
|
|
245
|
+
const parts = [
|
|
246
|
+
lo.other ? `${lo.other} fact${lo.other === 1 ? "" : "s"} that aren't entries` : "",
|
|
247
|
+
lo.unverified ? `${lo.unverified} entr${lo.unverified === 1 ? "y" : "ies"} their verify didn't confirm` : "",
|
|
248
|
+
lo.bad ? `${lo.bad} line${lo.bad === 1 ? "" : "s"} that don't read as facts` : ""
|
|
249
|
+
].filter(Boolean);
|
|
250
|
+
if (parts.length)
|
|
251
|
+
io.out(` Left out: ${parts.join(", ")}.`);
|
|
252
|
+
if (lo.redacted)
|
|
253
|
+
io.out(` ${lo.redacted} quote${lo.redacted === 1 ? "" : "s"} naming a secret-looking key redacted or dropped.`);
|
|
254
|
+
if (!f.source)
|
|
255
|
+
io.out(` Their folder is outside this metarepo, so where it is isn't recorded: refresh with atticus join shared refresh ${f.team} <folder>.`);
|
|
256
|
+
io.out(` Their entries stay theirs: never verified, corrected or reported on here. Review ${where}/ in a pull request, then atticus verify --all --write joins the calls to ${f.system} to them.`);
|
|
257
|
+
}
|
|
258
|
+
async function sharedImport(root, dir, o, io) {
|
|
259
|
+
if (!dir || !o.team || !o.system) {
|
|
260
|
+
io.err("Usage: atticus join shared import <their metarepo or facts folder> --team <id> --system <our profile's system id> [--name <team name>] [--commit <sha>] [--json]");
|
|
261
|
+
return 2;
|
|
262
|
+
}
|
|
263
|
+
const r = await readTheirMap(root, dir, o);
|
|
264
|
+
if (!r.ok) {
|
|
265
|
+
io.err(r.message);
|
|
266
|
+
return 1;
|
|
267
|
+
}
|
|
268
|
+
const where = await writeTheirMap(root, r);
|
|
269
|
+
if (o.json)
|
|
270
|
+
io.out(JSON.stringify({ written: where, map: r.file, leftOut: r.leftOut }, null, 2));
|
|
271
|
+
else
|
|
272
|
+
sayImported(r, where, io);
|
|
273
|
+
return 0;
|
|
274
|
+
}
|
|
275
|
+
async function sharedRefresh(root, team, o, io) {
|
|
276
|
+
const { maps, problems } = await readSharedMaps(root);
|
|
277
|
+
for (const p of problems)
|
|
278
|
+
io.err(p.message);
|
|
279
|
+
const which = team ? maps.filter((m) => m.team === team) : maps;
|
|
280
|
+
if (team && !which.length) {
|
|
281
|
+
io.err(`No shared map for ${team} in ${sharedRelOf(root)}/: import it first (atticus join shared import).`);
|
|
282
|
+
return 1;
|
|
283
|
+
}
|
|
284
|
+
if (o.dir && which.length !== 1) {
|
|
285
|
+
io.err("Give the team with a new folder: atticus join shared refresh <team> <folder>.");
|
|
286
|
+
return 2;
|
|
287
|
+
}
|
|
288
|
+
let failed = 0;
|
|
289
|
+
let noFolder = 0;
|
|
290
|
+
for (const m of which) {
|
|
291
|
+
const source = m.file.source;
|
|
292
|
+
if (!o.dir && !source) {
|
|
293
|
+
io.err(`${m.team}'s map doesn't record where it came from (its folder was outside this metarepo): give the folder, atticus join shared refresh ${m.team} <folder>.`);
|
|
294
|
+
noFolder++;
|
|
295
|
+
continue;
|
|
296
|
+
}
|
|
297
|
+
const src = o.dir ?? (isAbsolute(source) ? source : join(root, ...source.split("/")));
|
|
298
|
+
const r = await readTheirMap(root, src, {
|
|
299
|
+
team: m.team,
|
|
300
|
+
name: m.name,
|
|
301
|
+
system: m.system,
|
|
302
|
+
...o.commit ? { commit: o.commit } : {},
|
|
303
|
+
...o.now ? { now: o.now } : {}
|
|
304
|
+
});
|
|
305
|
+
if (!r.ok) {
|
|
306
|
+
io.err(`${m.team}: ${r.message}`);
|
|
307
|
+
failed++;
|
|
308
|
+
continue;
|
|
309
|
+
}
|
|
310
|
+
sayImported(r, await writeTheirMap(root, r), io);
|
|
311
|
+
}
|
|
312
|
+
if (!which.length)
|
|
313
|
+
io.out(`No shared maps in ${sharedRelOf(root)}/.`);
|
|
314
|
+
return failed ? 1 : noFolder ? 2 : 0;
|
|
315
|
+
}
|
|
316
|
+
async function sharedList(root, o, io) {
|
|
317
|
+
const { maps, problems } = await readSharedMaps(root);
|
|
318
|
+
if (o.json) {
|
|
319
|
+
io.out(JSON.stringify({ maps: maps.map((m) => m.file), problems }, null, 2));
|
|
320
|
+
return problems.length ? 1 : 0;
|
|
321
|
+
}
|
|
322
|
+
for (const p of problems)
|
|
323
|
+
io.err(p.message);
|
|
324
|
+
if (!maps.length) {
|
|
325
|
+
io.out(`No shared maps in ${sharedRelOf(root)}/. Import another team's: atticus join shared import <their metarepo> --team <id> --system <id>.`);
|
|
326
|
+
return problems.length ? 1 : 0;
|
|
327
|
+
}
|
|
328
|
+
for (const m of maps) {
|
|
329
|
+
const n = m.file.repos.reduce((k, r) => k + r.entries, 0);
|
|
330
|
+
io.out(`${m.team}: ${m.name}'s map for ${m.system}, their commit ${m.commit.slice(0, 7)}, imported ${m.file.importedAt.slice(0, 10)} from ${m.file.source ?? "a folder outside the metarepo"}: ${n} entr${n === 1 ? "y" : "ies"} in ${m.file.repos.map((r) => r.repo).join(", ")}.`);
|
|
331
|
+
}
|
|
332
|
+
return problems.length ? 1 : 0;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
export {
|
|
336
|
+
headCommitOf,
|
|
337
|
+
readTheirMap,
|
|
338
|
+
sharedImport,
|
|
339
|
+
sharedRefresh,
|
|
340
|
+
sharedList
|
|
341
|
+
};
|
|
@@ -21,9 +21,13 @@ import {
|
|
|
21
21
|
createWorkspace,
|
|
22
22
|
ensureGitignore,
|
|
23
23
|
gitUser,
|
|
24
|
+
inPlaceDir,
|
|
25
|
+
inPlacePath,
|
|
24
26
|
intellijProject,
|
|
25
27
|
intellijProjectPath,
|
|
26
28
|
isInPlace,
|
|
29
|
+
legacyBranchCheckoutPath,
|
|
30
|
+
legacyBranchSlug,
|
|
27
31
|
loadManifest,
|
|
28
32
|
loadRepos,
|
|
29
33
|
readChangeRepos,
|
|
@@ -36,9 +40,10 @@ import {
|
|
|
36
40
|
worktreePath,
|
|
37
41
|
writeChangeRepos,
|
|
38
42
|
writeEditorWorkspaces
|
|
39
|
-
} from "./chunk-
|
|
40
|
-
import "./chunk-
|
|
41
|
-
import "./chunk-
|
|
43
|
+
} from "./chunk-PKBHS4AA.js";
|
|
44
|
+
import "./chunk-Q2TECDIT.js";
|
|
45
|
+
import "./chunk-TUULXQRW.js";
|
|
46
|
+
import "./chunk-BQGDB6ZL.js";
|
|
42
47
|
import "./chunk-TV45EUGM.js";
|
|
43
48
|
export {
|
|
44
49
|
GitError,
|
|
@@ -58,9 +63,13 @@ export {
|
|
|
58
63
|
createWorkspace,
|
|
59
64
|
ensureGitignore,
|
|
60
65
|
gitUser,
|
|
66
|
+
inPlaceDir,
|
|
67
|
+
inPlacePath,
|
|
61
68
|
intellijProject,
|
|
62
69
|
intellijProjectPath,
|
|
63
70
|
isInPlace,
|
|
71
|
+
legacyBranchCheckoutPath,
|
|
72
|
+
legacyBranchSlug,
|
|
64
73
|
loadManifest,
|
|
65
74
|
loadRepos,
|
|
66
75
|
readChangeRepos,
|