@maycombhq/atticus 2.0.0-beta.25 → 2.0.0-beta.27

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.
Files changed (326) hide show
  1. package/dist/bin.js +3 -3
  2. package/dist/chunk-22A2K555.js +653 -0
  3. package/dist/{chunk-UTZMF5CV.js → chunk-23TTURB2.js} +1 -1
  4. package/dist/{chunk-F36DIKJ3.js → chunk-2666BPJE.js} +19 -19
  5. package/dist/{chunk-E2OP6JNF.js → chunk-2ALBHI4Q.js} +28 -27
  6. package/dist/chunk-2ANBMA74.js +107 -0
  7. package/dist/{chunk-S7UQFI4B.js → chunk-2HCW6HXK.js} +27 -26
  8. package/dist/{chunk-HV3KPEFH.js → chunk-2ISR6MWD.js} +15 -15
  9. package/dist/{chunk-QQD25YNF.js → chunk-2MRYL45Z.js} +50 -9
  10. package/dist/{chunk-KN4UQJ7R.js → chunk-3GNUHLAN.js} +4 -4
  11. package/dist/chunk-3GURU22K.js +44 -0
  12. package/dist/{chunk-4U3JLIRC.js → chunk-3M3MDBOG.js} +1 -1
  13. package/dist/{chunk-DJ4C5ELF.js → chunk-3PBIZBWN.js} +1 -1
  14. package/dist/{chunk-XUCHGEF5.js → chunk-3PWXVBCB.js} +83 -40
  15. package/dist/chunk-3W2QX6TT.js +58 -0
  16. package/dist/{chunk-CPFAWYVC.js → chunk-3Z7ATALI.js} +5 -5
  17. package/dist/{chunk-ZGULQAPZ.js → chunk-44SWXDD7.js} +8 -5
  18. package/dist/{chunk-LGE6H4UP.js → chunk-46N5O5H7.js} +5 -5
  19. package/dist/{chunk-SRLUADSY.js → chunk-4D4DNTFE.js} +4 -4
  20. package/dist/{chunk-DMQJDHXG.js → chunk-4EAT7HOX.js} +7 -5
  21. package/dist/{chunk-DPZD7WVX.js → chunk-4FLIW5PJ.js} +4 -4
  22. package/dist/{chunk-SGTAQNOP.js → chunk-4LWA5VMJ.js} +52 -37
  23. package/dist/{chunk-D45K3XKK.js → chunk-4ODVHNA6.js} +18 -17
  24. package/dist/{chunk-7QZDGM5V.js → chunk-4POSAXNC.js} +6 -6
  25. package/dist/{chunk-A3J75BO2.js → chunk-4PQ4KDOA.js} +16 -15
  26. package/dist/{chunk-2Y5FJQSF.js → chunk-4UVTNHA6.js} +1 -1
  27. package/dist/{chunk-KVVNAUIG.js → chunk-4XK3HLOH.js} +1 -0
  28. package/dist/{chunk-V7T6URII.js → chunk-523NRKHF.js} +4 -4
  29. package/dist/{chunk-7EAH2MFY.js → chunk-5GCCG3GJ.js} +11 -5
  30. package/dist/{chunk-7U6PBBXG.js → chunk-5XW6RUDV.js} +8 -8
  31. package/dist/{chunk-Y3J365UC.js → chunk-5YEUAZZE.js} +8 -8
  32. package/dist/{chunk-JWLABUXL.js → chunk-62LD7CSY.js} +13 -13
  33. package/dist/{chunk-LOJGNSPA.js → chunk-67Y2J55V.js} +22 -21
  34. package/dist/{chunk-UCKG6UE7.js → chunk-6DSZ4CL7.js} +37 -22
  35. package/dist/{chunk-FNP4M4VL.js → chunk-6G67LSBG.js} +283 -61
  36. package/dist/{chunk-5GLGLWAJ.js → chunk-6OEB4FTC.js} +20 -19
  37. package/dist/{chunk-5RKN5QIX.js → chunk-6OTGCKYH.js} +9 -9
  38. package/dist/{chunk-UI7ID4HG.js → chunk-6XLCMDIP.js} +13 -13
  39. package/dist/chunk-76DZJTU7.js +190 -0
  40. package/dist/chunk-7764GVJK.js +37 -0
  41. package/dist/{chunk-TKCNJJ2S.js → chunk-7BOGXFZ3.js} +11 -11
  42. package/dist/{chunk-Q52KWTG5.js → chunk-7CVHKNAF.js} +16 -15
  43. package/dist/{chunk-XF5UMMQL.js → chunk-7FEIS3KV.js} +25 -24
  44. package/dist/{chunk-UTYL4XVA.js → chunk-7GXM45T5.js} +26 -23
  45. package/dist/{chunk-4PW5SRKJ.js → chunk-7YMAMNMT.js} +17 -16
  46. package/dist/chunk-7YWS47SE.js +56 -0
  47. package/dist/{chunk-LZFKJ2BR.js → chunk-A3LVMCA5.js} +1 -1
  48. package/dist/{chunk-7YFUNWFM.js → chunk-A7ZJKLFC.js} +11 -11
  49. package/dist/chunk-AANQC5QP.js +47 -0
  50. package/dist/{chunk-LP5QGTCR.js → chunk-AIQLTDC3.js} +3 -3
  51. package/dist/{chunk-EPXYFJTY.js → chunk-AKZTCZ6F.js} +4 -4
  52. package/dist/{chunk-5267F4BS.js → chunk-ALCSTVWQ.js} +3 -3
  53. package/dist/{chunk-NMBHFSJQ.js → chunk-ALUHO7SE.js} +26 -25
  54. package/dist/{chunk-3WO7ASU7.js → chunk-AMZ4XMES.js} +8 -8
  55. package/dist/{chunk-JKEUPSCE.js → chunk-AOQG37K4.js} +8 -6
  56. package/dist/{chunk-3NA2VE45.js → chunk-ARXZTHEI.js} +16 -15
  57. package/dist/{chunk-W2W7YCFL.js → chunk-AS4CTARY.js} +16 -15
  58. package/dist/{chunk-7AKJ2XTW.js → chunk-AVUPW23W.js} +18 -17
  59. package/dist/{chunk-CMUJSPP4.js → chunk-B56FCIEJ.js} +12 -12
  60. package/dist/{chunk-K3OIBTCV.js → chunk-BABATPOZ.js} +18 -17
  61. package/dist/{chunk-VAZYNF6I.js → chunk-BIOKDLLX.js} +21 -19
  62. package/dist/{chunk-23QHP4JJ.js → chunk-BUBKKEUV.js} +5 -5
  63. package/dist/{chunk-N3OEBQTA.js → chunk-CDC6VECU.js} +3 -3
  64. package/dist/chunk-CHEFUNZ4.js +425 -0
  65. package/dist/{chunk-MM7YWUBB.js → chunk-CIFR3DPV.js} +6 -6
  66. package/dist/{chunk-JCKKAELC.js → chunk-CLBVKD4P.js} +16 -15
  67. package/dist/{chunk-HHZEXF7V.js → chunk-CLM5Z3R5.js} +5 -5
  68. package/dist/{chunk-M7XNX5IC.js → chunk-CLYV5MB6.js} +9 -9
  69. package/dist/{chunk-SHWHRCMU.js → chunk-CRYIBCGP.js} +37 -19
  70. package/dist/{chunk-6576X5BJ.js → chunk-D3L5SO27.js} +5 -5
  71. package/dist/chunk-DAZM2INZ.js +34 -0
  72. package/dist/{chunk-VBJHIRKV.js → chunk-DF4BXBB2.js} +6 -6
  73. package/dist/{chunk-U4HZ5CXL.js → chunk-E7Q52EOO.js} +11 -11
  74. package/dist/{chunk-MZTU5L6S.js → chunk-EFDUC35B.js} +3 -3
  75. package/dist/{chunk-GIOOA2ZO.js → chunk-EHXEJFHD.js} +5 -5
  76. package/dist/{chunk-M6HI36T3.js → chunk-ELJ5Q4J2.js} +2 -2
  77. package/dist/{chunk-MJAIBPI5.js → chunk-EM6DKBTJ.js} +3 -3
  78. package/dist/{chunk-YGS2YVF2.js → chunk-EMC46SU4.js} +38 -17
  79. package/dist/{chunk-CB6H7MH2.js → chunk-EQEDIWFQ.js} +25 -24
  80. package/dist/chunk-EW574EZI.js +57 -0
  81. package/dist/{chunk-JJEPU4VS.js → chunk-EYINWNXL.js} +5 -5
  82. package/dist/{chunk-MJOIMGS4.js → chunk-EYVYHYCA.js} +8 -8
  83. package/dist/{chunk-WGOQZ4PQ.js → chunk-F66542M6.js} +34 -9
  84. package/dist/{chunk-EUCATH2U.js → chunk-F74OMLNU.js} +6 -6
  85. package/dist/{chunk-G5P7F6RQ.js → chunk-FADIWOA5.js} +3 -3
  86. package/dist/{chunk-JMOZ6K5A.js → chunk-FC3ZVD3O.js} +3 -3
  87. package/dist/{chunk-XXJSGCDO.js → chunk-FG65LXED.js} +8 -8
  88. package/dist/{chunk-5WZV37WS.js → chunk-FKAUBC4Y.js} +8 -8
  89. package/dist/{chunk-WA644MUQ.js → chunk-FM3EEDS2.js} +15 -15
  90. package/dist/{chunk-XZQBFF65.js → chunk-FS4E7F6O.js} +403 -148
  91. package/dist/{chunk-Q6UYUCNS.js → chunk-FSYJPYLE.js} +16 -15
  92. package/dist/{chunk-H7GAPNGQ.js → chunk-G33UIUG3.js} +46 -20
  93. package/dist/{chunk-OEUTV6EL.js → chunk-G3F4BYML.js} +15 -14
  94. package/dist/{chunk-7UYRN4ON.js → chunk-GBJRFFDW.js} +5 -5
  95. package/dist/{chunk-7HW2CMIN.js → chunk-GF6GBHFN.js} +13 -11
  96. package/dist/{chunk-DCPI3ETH.js → chunk-GLHOUT5E.js} +26 -25
  97. package/dist/{chunk-VOBG7BLB.js → chunk-GM6GXO2A.js} +20 -19
  98. package/dist/{chunk-KJPKIU2R.js → chunk-GSJ2RXE7.js} +29 -28
  99. package/dist/{chunk-HU7VXMFV.js → chunk-GT72FDER.js} +6 -6
  100. package/dist/{chunk-SBNBVUOF.js → chunk-GW6ZH77P.js} +37 -36
  101. package/dist/{chunk-6WYOJCB4.js → chunk-GZILYRGC.js} +3 -3
  102. package/dist/{chunk-4SS5ZK47.js → chunk-GZSOZYEP.js} +3 -3
  103. package/dist/{chunk-N6SSI6XO.js → chunk-H25QNDKK.js} +58 -36
  104. package/dist/{chunk-DYVUNT4O.js → chunk-H3RKW4RF.js} +7 -7
  105. package/dist/chunk-H7M7ZH6H.js +52 -0
  106. package/dist/chunk-H7NRWSMP.js +55 -0
  107. package/dist/{chunk-KW4DIXUL.js → chunk-HDWVR5KD.js} +4 -4
  108. package/dist/{chunk-HR34F2AJ.js → chunk-HG24EF5S.js} +16 -15
  109. package/dist/chunk-HPNYSY5M.js +1068 -0
  110. package/dist/{chunk-3VC2XJ53.js → chunk-HUMM4S5I.js} +6 -6
  111. package/dist/{chunk-K373N5U6.js → chunk-HVPS2YCW.js} +11 -11
  112. package/dist/{chunk-IGOE6KPG.js → chunk-I34CXV2C.js} +185 -11
  113. package/dist/{chunk-U7YZ3IRI.js → chunk-I57IH5X6.js} +360 -271
  114. package/dist/{chunk-P56N3NPT.js → chunk-I5X4WU7U.js} +6 -6
  115. package/dist/chunk-IAVVJ34R.js +55 -0
  116. package/dist/chunk-IBJE2E2S.js +51 -0
  117. package/dist/{chunk-EXCXNDTQ.js → chunk-IF3X6FMO.js} +1 -1
  118. package/dist/{chunk-GAVEIYKH.js → chunk-IJHJIL6T.js} +154 -25
  119. package/dist/chunk-IM435QAM.js +72 -0
  120. package/dist/{chunk-7NLYSTEK.js → chunk-IMBJ7WAO.js} +6 -6
  121. package/dist/{chunk-EM7F6XEU.js → chunk-INCFIDCB.js} +2 -2
  122. package/dist/{chunk-AYWJMHSX.js → chunk-IPMPLTEG.js} +3 -3
  123. package/dist/{chunk-PGKCRK77.js → chunk-IPSZDVLI.js} +12 -12
  124. package/dist/{chunk-IMTAHDME.js → chunk-IX2EOYOU.js} +50 -13
  125. package/dist/{chunk-QE444DZ2.js → chunk-IXNMGPF7.js} +61 -28
  126. package/dist/{chunk-NL6GIEJU.js → chunk-J6GO3K7G.js} +19 -18
  127. package/dist/chunk-JBLM6IUA.js +42 -0
  128. package/dist/{chunk-IWQEZFVV.js → chunk-JL2VOYSL.js} +91 -93
  129. package/dist/{chunk-K77ILFUQ.js → chunk-JRXFZB6J.js} +8 -8
  130. package/dist/{chunk-UR6JGVX2.js → chunk-JTOLBS7R.js} +988 -410
  131. package/dist/{chunk-GD6FXN6R.js → chunk-K73BHPTQ.js} +19 -18
  132. package/dist/{chunk-PYVFLITV.js → chunk-KF7KVUNJ.js} +5 -5
  133. package/dist/{chunk-F4WKGX7K.js → chunk-KKUCBKJE.js} +20 -19
  134. package/dist/{chunk-U7F6E5M3.js → chunk-KLFFHBWG.js} +27 -26
  135. package/dist/{chunk-ROVOAF2O.js → chunk-KMYB2XO7.js} +21 -13
  136. package/dist/chunk-KNYQUWFN.js +52 -0
  137. package/dist/{chunk-KFDOL2Y4.js → chunk-KOAJPMU2.js} +31 -20
  138. package/dist/chunk-KRTSE73S.js +55 -0
  139. package/dist/{chunk-IW3QMW3X.js → chunk-L3AM5YRP.js} +28 -9
  140. package/dist/{chunk-334N6EI2.js → chunk-LCIIFAID.js} +22 -21
  141. package/dist/{chunk-DLNQ3HUM.js → chunk-LCQIRCOT.js} +55 -10
  142. package/dist/{chunk-QFOJ3UPU.js → chunk-LFHBAWIM.js} +13 -13
  143. package/dist/chunk-LIHEMWIT.js +39 -0
  144. package/dist/{chunk-T5QYYB5L.js → chunk-LJLYWILK.js} +14 -14
  145. package/dist/{chunk-E7PR4WMM.js → chunk-LNJKDS5C.js} +26 -25
  146. package/dist/{chunk-HHZ2ZKUD.js → chunk-LTHY7E2P.js} +16 -15
  147. package/dist/{chunk-4WIVTPGE.js → chunk-LTVOQJKT.js} +7 -7
  148. package/dist/{chunk-TIOYZDRB.js → chunk-LZO3JABE.js} +6 -6
  149. package/dist/{chunk-PXMV2LLY.js → chunk-M65AZ4ZE.js} +3 -5
  150. package/dist/chunk-MPNTEWNY.js +492 -0
  151. package/dist/chunk-MQGQ3AWK.js +58 -0
  152. package/dist/{chunk-NQLTWGF4.js → chunk-MUXYUIBV.js} +6 -6
  153. package/dist/{chunk-5R3FRI6H.js → chunk-MWRRJDXQ.js} +34 -31
  154. package/dist/{chunk-XY6FVBBV.js → chunk-MZDHFWTN.js} +2 -2
  155. package/dist/chunk-N2XCT5OX.js +68 -0
  156. package/dist/{chunk-C5LX54QK.js → chunk-N3JGYAMD.js} +15 -15
  157. package/dist/{chunk-RL7PETU6.js → chunk-N5DLB74D.js} +367 -71
  158. package/dist/{chunk-MJMEF7SD.js → chunk-NC3Q7RIB.js} +10 -10
  159. package/dist/{chunk-4GWQVT2C.js → chunk-NCNLX4DL.js} +19 -18
  160. package/dist/{chunk-3D74UADA.js → chunk-NGSGJLKW.js} +2 -2
  161. package/dist/{chunk-OOU4N2JQ.js → chunk-NN7K2LLN.js} +25 -24
  162. package/dist/{chunk-ELNIQYLR.js → chunk-NNURP7VO.js} +15 -15
  163. package/dist/chunk-NSQB24WR.js +56 -0
  164. package/dist/{chunk-MWOPED6I.js → chunk-NV5S63YK.js} +7 -7
  165. package/dist/{chunk-CTJHEG6A.js → chunk-NWMFVPEP.js} +2 -0
  166. package/dist/{chunk-7E3G5NCH.js → chunk-NYT6QGZA.js} +22 -18
  167. package/dist/chunk-OB2DAIJX.js +62 -0
  168. package/dist/{chunk-YAUMNRCB.js → chunk-OC3OXDTG.js} +13 -8
  169. package/dist/{chunk-DAHKLVHU.js → chunk-OD6RNYMQ.js} +16 -16
  170. package/dist/{chunk-7FUQAT2R.js → chunk-OFYBRMRG.js} +6 -6
  171. package/dist/chunk-OGTELPDN.js +43 -0
  172. package/dist/{chunk-BS52P2CM.js → chunk-OQ7SBQ2Z.js} +7 -7
  173. package/dist/{chunk-OMSH46JK.js → chunk-OUDGBJC2.js} +16 -9
  174. package/dist/{chunk-USH4VU5D.js → chunk-OUGTAOGA.js} +2 -2
  175. package/dist/chunk-OWP5FCYM.js +60 -0
  176. package/dist/{chunk-YEGGQG5E.js → chunk-P36PTWBM.js} +8 -8
  177. package/dist/{chunk-IKRM64KR.js → chunk-P6Y2J2QY.js} +12 -12
  178. package/dist/{chunk-P4QTTCVK.js → chunk-PDJL2HO5.js} +24 -22
  179. package/dist/{chunk-WDJGJ3HV.js → chunk-PPKH6ULR.js} +152 -20
  180. package/dist/{chunk-5OVSDV77.js → chunk-Q4PFF2ZE.js} +8 -8
  181. package/dist/chunk-Q7EUPQEG.js +5 -0
  182. package/dist/{chunk-YRKAJ42V.js → chunk-QC6GSNIK.js} +7074 -3456
  183. package/dist/chunk-QCRQNYGI.js +211 -0
  184. package/dist/chunk-QDF533AW.js +90 -0
  185. package/dist/chunk-QDGNDNBG.js +50 -0
  186. package/dist/{chunk-2ULVUSIP.js → chunk-QGMD3PYL.js} +31 -24
  187. package/dist/{chunk-QEP4HTJE.js → chunk-QLT3WYTD.js} +6 -6
  188. package/dist/{chunk-GX67TNFA.js → chunk-QNDMAKQS.js} +11 -3
  189. package/dist/{chunk-XM3JE4QY.js → chunk-QNXMVJMA.js} +8 -8
  190. package/dist/{chunk-XP5DF5MC.js → chunk-QPAANKUR.js} +13 -12
  191. package/dist/{chunk-SD3PGZSR.js → chunk-QS4VX3HZ.js} +1 -1
  192. package/dist/{chunk-ZD64ZR64.js → chunk-QSM4K6LI.js} +7 -7
  193. package/dist/{chunk-Z4N7BKLN.js → chunk-QUFZDWPC.js} +8 -8
  194. package/dist/{chunk-ELNLHU7Y.js → chunk-QXXEOH3A.js} +18 -6
  195. package/dist/{chunk-QA4O2GGC.js → chunk-R4TUWD4C.js} +17 -1
  196. package/dist/{chunk-TAIYQDIV.js → chunk-ROI64BAI.js} +22 -21
  197. package/dist/{chunk-NMGFXT4S.js → chunk-RPVL3RTX.js} +19 -18
  198. package/dist/{chunk-62FMA437.js → chunk-RUNHVUCW.js} +16 -15
  199. package/dist/{chunk-I2M7MXSV.js → chunk-RWYPLODE.js} +9 -9
  200. package/dist/{chunk-5K6ZKHZR.js → chunk-RZYRUXSU.js} +4 -4
  201. package/dist/{chunk-TVFADTAT.js → chunk-S6TLXRBR.js} +7 -7
  202. package/dist/{chunk-PCZ4C2V7.js → chunk-SCOP3J6X.js} +7 -7
  203. package/dist/{chunk-JXLUHMTC.js → chunk-SCP24MJX.js} +24 -23
  204. package/dist/{chunk-R6HJ4SDB.js → chunk-SF3HXNXR.js} +6 -6
  205. package/dist/{chunk-7F4GZ7U2.js → chunk-SFCFL7Y5.js} +1 -1
  206. package/dist/{chunk-5RDKQOY3.js → chunk-SHFY73RI.js} +53 -112
  207. package/dist/{chunk-H75SPCAW.js → chunk-SHIARIEZ.js} +20 -19
  208. package/dist/chunk-SMFFUFMN.js +1876 -0
  209. package/dist/{chunk-JQGWP3SC.js → chunk-SVOGRJO6.js} +197 -124
  210. package/dist/chunk-SVZAAOHJ.js +46 -0
  211. package/dist/{chunk-BJDVI5W6.js → chunk-SZOU32VF.js} +21 -20
  212. package/dist/{chunk-MXPKXCGP.js → chunk-T2MN24LZ.js} +1 -1
  213. package/dist/{chunk-A3AADMM2.js → chunk-TD5WWJLN.js} +6 -6
  214. package/dist/{chunk-SXF66YNZ.js → chunk-TFN2N227.js} +6 -6
  215. package/dist/{chunk-RSA5JJMN.js → chunk-TFXNOQEU.js} +28 -27
  216. package/dist/{chunk-BEDZNT62.js → chunk-TMETWJFO.js} +11 -11
  217. package/dist/chunk-TNSAIISO.js +50 -0
  218. package/dist/{chunk-IDTVBZQI.js → chunk-TRJO2I4S.js} +3 -3
  219. package/dist/{chunk-IFDCCCEN.js → chunk-TRSNIJNM.js} +7 -7
  220. package/dist/{chunk-GDGE7ZHC.js → chunk-U3Z2QZE3.js} +6 -6
  221. package/dist/{chunk-GVOQJPKA.js → chunk-U7L3ORPK.js} +22 -21
  222. package/dist/{chunk-5UJ7C7IH.js → chunk-UDM6HGF4.js} +6 -6
  223. package/dist/{chunk-Z3KEX7ON.js → chunk-UDM7LXNJ.js} +7 -7
  224. package/dist/chunk-UDTO3U6E.js +35 -0
  225. package/dist/{chunk-UVKJVTKX.js → chunk-UEUPEUZX.js} +3 -3
  226. package/dist/chunk-UWBODTY7.js +514 -0
  227. package/dist/{chunk-KGT5RIGE.js → chunk-UYYYQTPD.js} +84 -51
  228. package/dist/{chunk-LKRMVWXB.js → chunk-V34N6JAN.js} +32 -31
  229. package/dist/{chunk-RX56MZLX.js → chunk-V3Y5P7OS.js} +24 -23
  230. package/dist/chunk-V6MLVGTP.js +89 -0
  231. package/dist/chunk-VC2XHC7P.js +424 -0
  232. package/dist/{chunk-MM5OAVSW.js → chunk-VCYE4MUD.js} +29 -28
  233. package/dist/{chunk-AGAFNUYZ.js → chunk-VN2VJ6BV.js} +19 -15
  234. package/dist/{chunk-DBVQEPZB.js → chunk-VVLWEM2Y.js} +6 -6
  235. package/dist/{chunk-F56DNMDD.js → chunk-VWCNMDMZ.js} +5 -5
  236. package/dist/{chunk-LNGFTPU7.js → chunk-W2A4NHQD.js} +25 -24
  237. package/dist/{chunk-LQD3R6NZ.js → chunk-W6OY2PMB.js} +10 -10
  238. package/dist/{chunk-IP6TSICI.js → chunk-WC6DHBVG.js} +16 -15
  239. package/dist/{chunk-MELS6T5J.js → chunk-WCA3WIGG.js} +5 -5
  240. package/dist/{chunk-GLISHJ4G.js → chunk-WJWSB65O.js} +1602 -452
  241. package/dist/{chunk-77REYYY5.js → chunk-WNPGLGCJ.js} +5 -5
  242. package/dist/chunk-WTOVWEY3.js +67 -0
  243. package/dist/{chunk-WS7KBKP4.js → chunk-X5B7KYPD.js} +507 -20
  244. package/dist/{chunk-O6DJMDBR.js → chunk-X73WLHSN.js} +7 -7
  245. package/dist/{chunk-YGNQUFVZ.js → chunk-XIIT4PVT.js} +3 -3
  246. package/dist/{chunk-5P4PNGPL.js → chunk-XLTT5QCX.js} +28 -25
  247. package/dist/{chunk-NPZ4KXIV.js → chunk-XMIS25ZJ.js} +21 -20
  248. package/dist/{chunk-NB664KWQ.js → chunk-XPDQ4T6G.js} +27 -26
  249. package/dist/{chunk-EAGSM3XY.js → chunk-XRWUYOX3.js} +138 -22
  250. package/dist/{chunk-2VN4TLGI.js → chunk-XZY4GTCX.js} +14 -9
  251. package/dist/{chunk-QSKY7FE3.js → chunk-Y2TVTI4P.js} +121 -15
  252. package/dist/{chunk-XVQQ3BQS.js → chunk-Y2U4CSCA.js} +28 -27
  253. package/dist/chunk-Y2U63JKE.js +41 -0
  254. package/dist/{chunk-UJ535VWR.js → chunk-Y6S7VCYN.js} +6 -6
  255. package/dist/{chunk-SEBBJQWK.js → chunk-YAPMGK7E.js} +11 -11
  256. package/dist/{chunk-CNF7D3A7.js → chunk-YAPVAYZN.js} +3 -3
  257. package/dist/{chunk-B2U4AOZ5.js → chunk-YCBDNWX3.js} +78 -57
  258. package/dist/{chunk-CGVRLQAY.js → chunk-YIGSUTW2.js} +1329 -92
  259. package/dist/{chunk-J65TN6QU.js → chunk-YJTBE6AJ.js} +5 -5
  260. package/dist/chunk-YQ3IXQIH.js +185 -0
  261. package/dist/{chunk-ZJQ64T6M.js → chunk-YRHKEXTP.js} +11 -11
  262. package/dist/{chunk-MN2XDLDM.js → chunk-YSSFS3YC.js} +17 -17
  263. package/dist/{chunk-BPDS7KUR.js → chunk-YXG2VQJJ.js} +200 -56
  264. package/dist/{chunk-XC5ZDFW7.js → chunk-Z4GLFTEH.js} +8 -8
  265. package/dist/{chunk-7X3WLAKP.js → chunk-Z65FWO6A.js} +157 -89
  266. package/dist/{chunk-OW53P52N.js → chunk-ZDG637ZT.js} +22 -21
  267. package/dist/{chunk-BIQNPWGX.js → chunk-ZIAMPN7N.js} +6 -6
  268. package/dist/chunk-ZIIBQHCX.js +53 -0
  269. package/dist/{chunk-RFQW7XT3.js → chunk-ZJJMYPGZ.js} +57 -27
  270. package/dist/{chunk-Y6KPWRZJ.js → chunk-ZOAX7W5S.js} +11 -11
  271. package/dist/chunk-ZSSR5GGB.js +48 -0
  272. package/dist/files.json +655 -551
  273. package/dist/fixtures/forge/expected/crosscheck.json +726 -0
  274. package/dist/fixtures/forge/slots/README.md +13 -0
  275. package/dist/fixtures/forge/slots/build.json +2686 -0
  276. package/dist/fixtures/forge/slots/crosscheck/forge-ledger.crosscheck.yaml +8 -0
  277. package/dist/fixtures/forge/slots/facts/forge-ledger.jsonl +17 -0
  278. package/dist/fixtures/forge/slots/facts/forge-ledger.meta.json +9 -0
  279. package/dist/fixtures/forge/slots/legacy/joins.json +113 -0
  280. package/dist/fixtures/forge/slots/readers/forge-events.json +306 -0
  281. package/dist/fixtures/forge/slots/readers/forge-gateway.json +238 -0
  282. package/dist/fixtures/forge/slots/readers/forge-infra.json +264 -0
  283. package/dist/fixtures/forge/slots/readers/forge-ledger.json +756 -0
  284. package/dist/fixtures/forge/slots/readers/forge-portal-bff.json +349 -0
  285. package/dist/fixtures/forge/slots/readers/forge-portal-ui.json +214 -0
  286. package/dist/fixtures/forge/slots/readers/forge-reports-job.json +258 -0
  287. package/dist/packages/sdk/npm/index.js +3859 -2939
  288. package/dist/packages/ui/dist/assets/{elk-api-ts8TigYQ.js → elk-api-CPE6PVL8.js} +2 -2
  289. package/dist/packages/ui/dist/assets/index-BYcVqj0l.js +65 -0
  290. package/dist/packages/ui/dist/assets/index-DF52Ejvz.css +1 -0
  291. package/dist/packages/ui/dist/index.html +2 -2
  292. package/package.json +5 -5
  293. package/dist/chunk-24OXGB3P.js +0 -82
  294. package/dist/chunk-2RABF6RT.js +0 -36
  295. package/dist/chunk-5CPZIWIN.js +0 -38
  296. package/dist/chunk-7YSMZEO3.js +0 -55
  297. package/dist/chunk-AENMOZMM.js +0 -42
  298. package/dist/chunk-BDKYHCGI.js +0 -71
  299. package/dist/chunk-BMMTWRWE.js +0 -50
  300. package/dist/chunk-CQRFCWQV.js +0 -45
  301. package/dist/chunk-CVWKS6GO.js +0 -50
  302. package/dist/chunk-D2CGJ7RR.js +0 -46
  303. package/dist/chunk-D7QIZLWB.js +0 -38
  304. package/dist/chunk-DM3H4V2G.js +0 -62
  305. package/dist/chunk-EJGUEUXG.js +0 -51
  306. package/dist/chunk-ELKTDXV3.js +0 -67
  307. package/dist/chunk-EP7ZBZLT.js +0 -170
  308. package/dist/chunk-EXGXCVWC.js +0 -52
  309. package/dist/chunk-FJS2FZFZ.js +0 -41
  310. package/dist/chunk-G3ZFEHCX.js +0 -925
  311. package/dist/chunk-GAU2IFIC.js +0 -33
  312. package/dist/chunk-GPOL5H3B.js +0 -55
  313. package/dist/chunk-HD72AL3L.js +0 -43
  314. package/dist/chunk-K4C2DWOZ.js +0 -232
  315. package/dist/chunk-KY3BUZYI.js +0 -54
  316. package/dist/chunk-LMNCRSER.js +0 -257
  317. package/dist/chunk-LPXH2DA4.js +0 -40
  318. package/dist/chunk-MLUHBVCI.js +0 -45
  319. package/dist/chunk-ONB7M2AF.js +0 -52
  320. package/dist/chunk-QBK33722.js +0 -51
  321. package/dist/chunk-S7I7SLZN.js +0 -59
  322. package/dist/chunk-UCQB6NKS.js +0 -192
  323. package/dist/chunk-UKMA5JFE.js +0 -52
  324. package/dist/chunk-X7QLAUNS.js +0 -47
  325. package/dist/packages/ui/dist/assets/index-CIfmX7DJ.css +0 -1
  326. package/dist/packages/ui/dist/assets/index-DNtpSfZS.js +0 -63
@@ -0,0 +1,424 @@
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
+ askHosts
8
+ } from "./chunk-OQ7SBQ2Z.js";
9
+ import {
10
+ driftAfterScan
11
+ } from "./chunk-YSSFS3YC.js";
12
+ import {
13
+ buildPlanOf,
14
+ pageChanged,
15
+ refusalPlanOf
16
+ } from "./chunk-QCRQNYGI.js";
17
+ import {
18
+ buildAndWrite,
19
+ buildLines,
20
+ diffCatalogs,
21
+ diffIsEmpty,
22
+ readCatalog,
23
+ scanEstate,
24
+ writeRefusedReport
25
+ } from "./chunk-QC6GSNIK.js";
26
+ import {
27
+ readersSlotPath,
28
+ serializeReadersSlot,
29
+ sourcesRelOf,
30
+ writeReadersSlots
31
+ } from "./chunk-UWBODTY7.js";
32
+ import {
33
+ loadRepos
34
+ } from "./chunk-X5B7KYPD.js";
35
+ import {
36
+ catalogDirOf,
37
+ throwIfCancelled
38
+ } from "./chunk-WJWSB65O.js";
39
+ import {
40
+ LockHeldError,
41
+ acquireLock
42
+ } from "./chunk-SMFFUFMN.js";
43
+
44
+ // packages/cli/dist/scan-commands.js
45
+ import { join } from "node:path";
46
+ function diffLines(d) {
47
+ if (diffIsEmpty(d))
48
+ return ["No catalog changes."];
49
+ const lines = [
50
+ `${d.added.length} added, ${d.removed.length} removed, ${d.changed.length} changed, ${d.evidenceOnly.length} with new evidence only`,
51
+ ...d.added.map((r) => `+ ${r.kind}/${r.id}`),
52
+ ...d.removed.map((r) => `- ${r.kind}/${r.id}`),
53
+ ...d.changed.map((r) => `~ ${r.kind}/${r.id} (${r.fields.join(", ")})`)
54
+ ];
55
+ return lines;
56
+ }
57
+ function unreadMessage(u) {
58
+ switch (u.why) {
59
+ case "not-cloned":
60
+ return "not cloned here; clone it with atticus workspace sync";
61
+ case "unreadable":
62
+ return `its clone can't be read (${u.detail ?? "git couldn't read it"}); clone it again with atticus workspace sync`;
63
+ case "run-failed":
64
+ return `${(u.runs ?? []).map((r) => `the run of ${r.extractor} failed (${r.error})`).join("; ")}, so its read is short of what that run reads; fix it, then scan again`;
65
+ case "not-asked":
66
+ return "left out by --repos";
67
+ }
68
+ }
69
+ function scanRefusal(scan) {
70
+ if (scan.observations.some((o) => o.full))
71
+ return void 0;
72
+ const unread = scan.unread;
73
+ const lines = unread.map((u) => `${u.repo}: ${unreadMessage(u)}`);
74
+ for (const o of scan.observations)
75
+ if (!o.full && !unread.some((u) => u.repo === o.repo))
76
+ lines.push(`${o.repo}: ${keptWhy({ reason: o.why, ...o.detail ? { detail: o.detail } : {} })}`);
77
+ return {
78
+ reasons: ["nothing-read"],
79
+ repos: unread.map((u) => ({
80
+ repo: u.repo,
81
+ why: u.why,
82
+ message: unreadMessage(u),
83
+ ...u.runs ? { runs: u.runs } : {}
84
+ })),
85
+ message: [
86
+ "Nothing written: the scan read no repo in full, so every slot and catalog/generated are as they were:",
87
+ ...lines.map((l) => ` ${l}`),
88
+ "Clone the repos (atticus workspace sync) or fix what stopped their read, then scan again."
89
+ ].join("\n")
90
+ };
91
+ }
92
+ function scanSources(scan, slots) {
93
+ return scan.observations.map((o) => {
94
+ const s = slots.find((x) => x.repo === o.repo);
95
+ const built = scan.build?.sources.find((x) => x.repo === o.repo);
96
+ return {
97
+ repo: o.repo,
98
+ source: built?.source ?? "none",
99
+ ...built?.commit ? { sourceCommit: built.commit } : {},
100
+ slot: s?.slot ?? "none",
101
+ ...s?.commit ? { commit: s.commit } : {},
102
+ ...s?.reason ? { reason: s.reason } : {},
103
+ ...s?.detail ? { detail: s.detail } : {},
104
+ ...o.factsStale ? { factsStale: o.factsStale } : {}
105
+ };
106
+ });
107
+ }
108
+ var short = (c) => /^[0-9a-f]{8,}$/.test(c) ? c.slice(0, 7) : c;
109
+ function keptWhy(s) {
110
+ switch (s.reason) {
111
+ case "not-cloned":
112
+ return "it isn't cloned here";
113
+ case "unreadable":
114
+ return "its clone can't be read";
115
+ case "not-asked":
116
+ return "--repos left it out";
117
+ case "run-failed":
118
+ return `a run failed (${s.detail ?? "a reader"})`;
119
+ case "plugin-refused":
120
+ return `a plugin that applies to it isn't used (${s.detail ?? "a plugin"})`;
121
+ case "readers-off":
122
+ return "the readers are switched off (ATTICUS_HELPERS_OFF=readers)";
123
+ case "dirty":
124
+ return "its clone has changes not committed (commit or stash them, then scan again)";
125
+ case "refused":
126
+ return "the scan wrote nothing";
127
+ case "dry-run":
128
+ return "a dry run writes nothing";
129
+ default:
130
+ return "it wasn't read in full";
131
+ }
132
+ }
133
+ function sourceLines(rel, sources, wrote) {
134
+ const out = [];
135
+ if (wrote) {
136
+ const n = (k) => sources.filter((s) => s.slot === k).length;
137
+ out.push(`${rel}/readers: ${n("written")} written, ${n("unchanged")} unchanged`);
138
+ for (const s of sources)
139
+ if (s.reason && s.reason !== "refused" && s.reason !== "dry-run")
140
+ out.push(s.slot === "kept-last-good" ? `${s.repo}: its readers slot keeps its last good read${s.commit ? ` (commit ${short(s.commit)})` : ""}: ${keptWhy(s)}.` : `${s.repo}: no readers slot written: ${keptWhy(s)}.`);
141
+ }
142
+ for (const s of sources) {
143
+ const f = s.factsStale;
144
+ if (!f)
145
+ continue;
146
+ const at = `${rel}/facts/${s.repo}.jsonl`;
147
+ if (f.unusable)
148
+ out.push(`${s.repo}: its facts snapshot (${at}) ${f.unusable}, so it isn't used; write it again: ${f.command}`);
149
+ else if (f.notComparable)
150
+ out.push(`${s.repo}: its facts snapshot (${at}) is of commit ${short(f.commit)}, which can't be compared with ${short(f.head)} here; the snapshot stays as it is; refresh it: ${f.command}`);
151
+ else {
152
+ const shown = f.files.slice(0, 5).map((x) => `${x.path} ${x.how}${x.to ? ` to ${x.to}` : ""}: ${x.facts.slice(0, 5).join(", ")}${x.facts.length > 5 ? ` and ${x.facts.length - 5} more` : ""}`);
153
+ if (f.files.length > 5)
154
+ shown.push(`${f.files.length - 5} more files`);
155
+ out.push(`${s.repo}: its facts snapshot (${at}, commit ${short(f.commit)}) is stale at ${short(f.head)}: ${f.facts} ${f.facts === 1 ? "fact cites" : "facts cite"} files changed since (${shown.join("; ")}). The snapshot stays as it is; refresh it: ${f.command}`);
156
+ }
157
+ }
158
+ return out;
159
+ }
160
+ function saidByRefusal(p, refused) {
161
+ const r = refused?.repos.find((x) => x.repo === p.repo);
162
+ if (!r)
163
+ return false;
164
+ return p.source === "workspace" || (r.runs ?? []).some((x) => x.extractor === String(p.source ?? ""));
165
+ }
166
+ function scanSummaryLines(report) {
167
+ const num = (v) => typeof v === "number" && Number.isFinite(v) ? v : 0;
168
+ const n = (x, one) => `${x} ${one}${x === 1 ? "" : "s"}`;
169
+ const refusal = report.refused;
170
+ const problemLines = () => (Array.isArray(report.problems) ? report.problems : []).filter((p) => !saidByRefusal(p ?? {}, refusal)).map((p) => {
171
+ const x = p ?? {};
172
+ return `${x.repo ? `${String(x.repo)}: ` : ""}${x.source ? `${String(x.source)}: ` : ""}${String(x.message ?? "")}`;
173
+ });
174
+ if (typeof report.branch === "string") {
175
+ const repos = (Array.isArray(report.repos) ? report.repos : []).map((r) => String(r.id ?? ""));
176
+ const d = report.diff;
177
+ return [
178
+ `Scanned ${report.branch} of ${repos.join(", ")} into ${String(report.folder ?? "")}/generated.`,
179
+ ...d ? [`${report.branch} against the baseline: ${diffLines(d)[0]}`] : [],
180
+ ...problemLines()
181
+ ];
182
+ }
183
+ if (!report.stats)
184
+ return [];
185
+ const s = report.stats;
186
+ const out = [
187
+ `Scanned ${n(num(s.repos), "repo")}: ${n(num(s.records), "record")}, ${n(num(s.interfaces), "interface")} (${num(s.verified)} verified), ${n(num(s.unresolved), "loose end")}.`
188
+ ];
189
+ const f = report.files;
190
+ if (f)
191
+ out.push(`catalog/generated: ${num(f.written)} written, ${num(f.unchanged)} unchanged, ${num(f.removed)} removed`);
192
+ for (const note of Array.isArray(report.notes) ? report.notes : [])
193
+ out.push(`note: ${String(note)}`);
194
+ out.push(...problemLines());
195
+ const w = Array.isArray(report.warnings) ? report.warnings.length : 0;
196
+ if (w)
197
+ out.push(`${n(w, "warning")}: atticus scan --warnings lists ${w === 1 ? "it" : "them"}`);
198
+ if (Array.isArray(report.sources))
199
+ out.push(...sourceLines(typeof report.sourcesDir === "string" ? report.sourcesDir : "catalog/sources", report.sources, report.written === true));
200
+ if (typeof refusal?.message === "string")
201
+ out.push(...refusal.message.split("\n"));
202
+ return out;
203
+ }
204
+ function driftLine(d) {
205
+ const head = `Drift check for ${d.change} (${d.state})`;
206
+ if (d.error)
207
+ return `${head} couldn't run: ${d.error}`;
208
+ if (d.round === void 0)
209
+ return `${head}: no drift.`;
210
+ const what = `${d.open} open finding${d.open === 1 ? "" : "s"}${d.blocking ? ` (${d.blocking} blocking)` : ""}`;
211
+ return `${head}: ${what} in review/drift/${d.round}${d.unchanged ? ", nothing new" : ""}.`;
212
+ }
213
+ async function scanCommand(root, o, io) {
214
+ if (o.repos && o.repos.length > 0) {
215
+ const known = new Set((await loadRepos(root)).map((r) => r.id));
216
+ const unknown = o.repos.filter((r) => !known.has(r));
217
+ if (unknown.length > 0) {
218
+ io.err(`Not in any repos.manifest.yaml: ${unknown.join(", ")}`);
219
+ return 2;
220
+ }
221
+ }
222
+ let lock;
223
+ if (!o.dryRun) {
224
+ try {
225
+ lock = await acquireLock(root, "scan", "scan");
226
+ } catch (e) {
227
+ if (e instanceof LockHeldError) {
228
+ io.err(e.message);
229
+ return 1;
230
+ }
231
+ throw e;
232
+ }
233
+ if (lock.interrupted)
234
+ io.err(`The last scan (started ${lock.interrupted.startedAt}) stopped before it finished; this one brings the catalog up to date.`);
235
+ }
236
+ try {
237
+ if (o.ref) {
238
+ const { scanBranch } = await import("./chunk-3PWXVBCB.js");
239
+ return await scanBranch(root, o.ref, {
240
+ ...o.repos ? { repos: o.repos } : {},
241
+ ...o.full ? { full: true } : {},
242
+ ...o.json ? { json: true } : {},
243
+ ...o.allowRemovals !== void 0 ? { allowRemovals: o.allowRemovals } : {},
244
+ ...o.discardEdits !== void 0 ? { discardEdits: o.discardEdits } : {},
245
+ ...o.plan !== void 0 ? { plan: o.plan } : {}
246
+ }, io);
247
+ }
248
+ return await scanLocked(root, o, io);
249
+ } finally {
250
+ await lock?.release();
251
+ }
252
+ }
253
+ async function scanLocked(root, o, io) {
254
+ const out = join(catalogDirOf(root), "generated");
255
+ const before = await readCatalog(out, { cacheRoot: root, fresh: true });
256
+ const started = Date.now();
257
+ const scan = await scanEstate({
258
+ root,
259
+ ...o.repos ? { repos: o.repos } : {},
260
+ ...o.full ? { cache: null } : {}
261
+ });
262
+ throwIfCancelled();
263
+ const command = `atticus scan${o.repos?.length ? ` --repos ${o.repos.join(",")}` : ""}`;
264
+ const unreadAll = scanRefusal(scan);
265
+ if (unreadAll && !o.dryRun)
266
+ await writeRefusedReport(root, command, {
267
+ reasons: ["nothing-read"],
268
+ message: unreadAll.message,
269
+ unread: unreadAll.repos.map((r) => ({ repo: r.repo, why: r.message }))
270
+ });
271
+ const slotWrites = scan.observations.flatMap((x) => x.full ? [{ path: readersSlotPath(root, x.repo), text: serializeReadersSlot(x.slot) }] : []);
272
+ const planned = await writeReadersSlots(root, scan.observations, { hold: "dry-run" });
273
+ const built = unreadAll ? void 0 : await buildAndWrite(root, {
274
+ command,
275
+ build: scan.build,
276
+ slots: slotWrites,
277
+ ...o.dryRun ? { check: true } : {},
278
+ ...o.allowRemovals !== void 0 ? { allowRemovals: o.allowRemovals } : {},
279
+ ...o.discardEdits !== void 0 ? { discardEdits: o.discardEdits } : {},
280
+ // The app's confirm: the list worked out again under the lock (the review of beta.27).
281
+ ...o.plan !== void 0 && !o.dryRun ? { expect: (listed) => buildPlanOf(listed) === o.plan } : {}
282
+ });
283
+ const guardRefused = built && !o.dryRun ? built.guard.refused : void 0;
284
+ const changed = built?.changed ? pageChanged("what the build would remove or discard") : void 0;
285
+ const refused = unreadAll ?? (changed && !guardRefused ? { reasons: [], repos: [], message: changed } : void 0) ?? (guardRefused ? {
286
+ reasons: guardRefused.reasons,
287
+ repos: [],
288
+ message: changed ? `${changed}
289
+ ${guardRefused.message}` : guardRefused.message,
290
+ ...guardRefused.removals ? { removals: guardRefused.removals } : {},
291
+ ...guardRefused.unexplained ? { unexplained: guardRefused.unexplained } : {},
292
+ ...guardRefused.allowRemovals !== void 0 ? { allowRemovals: guardRefused.allowRemovals } : {},
293
+ ...guardRefused.edits ? { edits: guardRefused.edits } : {},
294
+ ...guardRefused.discardEdits !== void 0 ? { discardEdits: guardRefused.discardEdits } : {},
295
+ plan: refusalPlanOf(guardRefused)
296
+ } : void 0);
297
+ const w = built?.write;
298
+ const diff = refused ? { added: [], removed: [], changed: [], evidenceOnly: [] } : diffCatalogs(before.records, scan.records);
299
+ const slots = planned.map((x) => {
300
+ if (x.reason !== "dry-run")
301
+ return x;
302
+ const obs = scan.observations.find((y) => y.repo === x.repo);
303
+ if (w && obs?.full)
304
+ return { repo: x.repo, slot: "written", commit: obs.slot.commit };
305
+ return { ...x, reason: o.dryRun ? "dry-run" : "refused" };
306
+ });
307
+ const sources = scanSources(scan, slots);
308
+ const write = w ? { written: w.written, unchanged: w.unchanged, removed: w.removed } : void 0;
309
+ const drift = write && !o.noDrift ? await driftAfterScan(root) : [];
310
+ const hosts = write ? await askHosts(root, scan.records, {
311
+ command: "atticus scan",
312
+ ...o.askFrom ? { only: o.askFrom } : {}
313
+ }) : { raised: [], open: [], lines: [] };
314
+ const problems = [
315
+ ...before.problems.map((p) => ({ source: `catalog/generated/${p.file}`, message: p.message })),
316
+ ...scan.problems
317
+ ];
318
+ const seen = /* @__PURE__ */ new Set();
319
+ const warnings = scan.repos.flatMap((r) => r.warnings.map((w2) => ({ repo: r.repo, ...w2 })).filter((w2) => {
320
+ const k = `${w2.repo}\0${w2.path ?? ""}\0${w2.message}`;
321
+ if (seen.has(k))
322
+ return false;
323
+ seen.add(k);
324
+ return true;
325
+ }));
326
+ if (o.json) {
327
+ io.out(JSON.stringify({
328
+ stats: scan.stats,
329
+ diff,
330
+ problems,
331
+ warnings,
332
+ coverage: scan.coverage,
333
+ unmodelled: scan.unmodelled,
334
+ notes: scan.notes,
335
+ written: write !== void 0,
336
+ files: write ?? null,
337
+ sources,
338
+ sourcesDir: sourcesRelOf(root),
339
+ removed: (w?.removals ?? []).map((x) => ({
340
+ kind: x.kind,
341
+ id: x.id,
342
+ repos: x.repos,
343
+ explainedBy: x.explainedBy,
344
+ reasons: x.reasons
345
+ })),
346
+ retired: scan.build.retired,
347
+ ...w?.undo !== void 0 ? { undo: w.undo } : {},
348
+ drift,
349
+ questions: [...hosts.raised, ...hosts.open].map((q) => q.id),
350
+ ...refused ? { refused } : {}
351
+ }, null, 2));
352
+ } else {
353
+ const s = scan.stats;
354
+ io.out(`Scanned ${s.repos} repos in ${((Date.now() - started) / 1e3).toFixed(1)}s (${s.ranRuns} extractor runs, ${s.cachedRuns} from cache)`);
355
+ io.out(`${s.records} records: ${s.interfaces} interfaces (${s.verified} verified), ${s.unresolved} loose ends`);
356
+ const joined = scan.coverage.reduce((n, c) => n + c.joined, 0);
357
+ const found = joined + scan.coverage.reduce((n, c) => n + c.open, 0);
358
+ const unread = scan.coverage.reduce((n, c) => n + c.unreadFiles, 0);
359
+ io.out(`Joined ${joined} of ${found} calls, listeners and endpoints found (${found ? Math.round(joined / found * 100) : 100}%)` + (unread ? `; ${unread} file${unread === 1 ? " uses" : "s use"} a client library with nothing read (atticus scan --warnings)` : ""));
360
+ for (const c of scan.coverage)
361
+ for (const r of c.redraft)
362
+ io.out(`Rule ${r.dialect} on ${c.repo} ${r.why === "tests-fail" ? "fails its own tests, so this scan didn't use it" : "read nothing there"}; have your assistant re-draft it: atticus onboard ${c.repo} --name ${r.dialect} (then onboard accept ${r.dialect} --replace)`);
363
+ const toOnboard = scan.coverage.filter((c) => c.needsOnboarding);
364
+ if (toOnboard.length)
365
+ io.out(`Read nothing from ${toOnboard.length === 1 ? "1 repo" : `${toOnboard.length} repos`} whose files no reader knows: ${toOnboard.map((c) => `${c.repo} (${c.unreadConfig.length} file${c.unreadConfig.length === 1 ? "" : "s"})`).join(", ")}. Have your assistant draft a dialect: atticus onboard ${toOnboard[0].repo}`);
366
+ for (const f of scan.unmodelled)
367
+ io.out(`House framework ${f.framework} is imported by ${f.repos.length} repos and no framework model covers it: ${f.repos.join(", ")}. Onboard it: atticus onboard framework ${f.name} --from <its source, JAR or package> --users ${f.repos.join(",")}`);
368
+ const idle = /* @__PURE__ */ new Map();
369
+ for (const c of scan.coverage)
370
+ for (const r of c.redraftFrameworks)
371
+ idle.set(r.framework, [...idle.get(r.framework) ?? [], c.repo]);
372
+ for (const [framework, repos] of idle)
373
+ io.out(`Framework model ${framework} read nothing in ${repos.join(", ")}, which import${repos.length === 1 ? "s" : ""} it; the framework may have changed. Have your assistant re-draft it: atticus onboard framework ${framework} --from <its source, JAR or package> --users ${repos.join(",")} (then onboard accept framework ${framework} --replace)`);
374
+ if (!refused)
375
+ for (const l of diffLines(diff))
376
+ io.out(l);
377
+ if (built && w)
378
+ for (const l of buildLines(root, built))
379
+ io.out(l);
380
+ else if (!refused)
381
+ io.out("Dry run: nothing written.");
382
+ for (const l of sourceLines(sourcesRelOf(root), sources, write !== void 0))
383
+ io.out(l);
384
+ for (const d of drift)
385
+ io.out(driftLine(d));
386
+ for (const l of hosts.lines)
387
+ io.out(l);
388
+ for (const n of scan.notes)
389
+ io.out(`note: ${n}`);
390
+ if (o.warnings)
391
+ for (const w2 of warnings)
392
+ io.out(`warning: ${w2.repo}: ${w2.path ? `${w2.path}: ` : ""}${w2.message}`);
393
+ else if (warnings.length)
394
+ io.out(`${warnings.length} warning${warnings.length === 1 ? "" : "s"}: atticus scan --warnings lists ${warnings.length === 1 ? "it" : "them"}`);
395
+ for (const p of problems.filter((x) => !saidByRefusal(x, refused)))
396
+ io.err(`${"repo" in p && p.repo ? `${p.repo}: ` : ""}${p.source}: ${p.message}`);
397
+ if (refused)
398
+ for (const l of refused.message.split("\n"))
399
+ io.err(l);
400
+ }
401
+ return problems.length > 0 || refused ? 1 : 0;
402
+ }
403
+ async function catalogDiff(a, b, json, io) {
404
+ const [x, y] = await Promise.all([readCatalog(a), readCatalog(b)]);
405
+ for (const p of [...x.problems, ...y.problems])
406
+ io.err(`${p.file}: ${p.message}`);
407
+ const d = diffCatalogs(x.records, y.records);
408
+ if (json)
409
+ io.out(JSON.stringify(d, null, 2));
410
+ else
411
+ for (const l of diffLines(d))
412
+ io.out(l);
413
+ return diffIsEmpty(d) && x.problems.length + y.problems.length === 0 ? 0 : 1;
414
+ }
415
+
416
+ export {
417
+ diffLines,
418
+ scanRefusal,
419
+ scanSources,
420
+ sourceLines,
421
+ scanSummaryLines,
422
+ scanCommand,
423
+ catalogDiff
424
+ };
@@ -17,36 +17,37 @@ import {
17
17
  rulesTryCommand,
18
18
  scopeFile,
19
19
  tryDiff
20
- } from "./chunk-K373N5U6.js";
21
- import "./chunk-ROVOAF2O.js";
22
- import "./chunk-QE444DZ2.js";
23
- import "./chunk-6WYOJCB4.js";
24
- import "./chunk-7F4GZ7U2.js";
20
+ } from "./chunk-HVPS2YCW.js";
21
+ import "./chunk-KMYB2XO7.js";
22
+ import "./chunk-IXNMGPF7.js";
23
+ import "./chunk-CLM5Z3R5.js";
24
+ import "./chunk-GZILYRGC.js";
25
+ import "./chunk-SFCFL7Y5.js";
25
26
  import "./chunk-EHXDB3SA.js";
26
- import "./chunk-USH4VU5D.js";
27
- import "./chunk-CNF7D3A7.js";
28
- import "./chunk-HHZEXF7V.js";
29
- import "./chunk-5WZV37WS.js";
30
- import "./chunk-DBVQEPZB.js";
31
- import "./chunk-XP5DF5MC.js";
32
- import "./chunk-G5P7F6RQ.js";
33
- import "./chunk-H7GAPNGQ.js";
34
- import "./chunk-YRKAJ42V.js";
35
- import "./chunk-CGVRLQAY.js";
36
- import "./chunk-RL7PETU6.js";
37
- import "./chunk-PGKCRK77.js";
38
- import "./chunk-M6HI36T3.js";
39
- import "./chunk-2VN4TLGI.js";
40
- import "./chunk-4U3JLIRC.js";
41
- import "./chunk-MXPKXCGP.js";
42
- import "./chunk-QQD25YNF.js";
43
- import "./chunk-QA4O2GGC.js";
44
- import "./chunk-WS7KBKP4.js";
45
- import "./chunk-GLISHJ4G.js";
46
- import "./chunk-G3ZFEHCX.js";
47
- import "./chunk-LZFKJ2BR.js";
48
- import "./chunk-CTJHEG6A.js";
27
+ import "./chunk-OUGTAOGA.js";
28
+ import "./chunk-YAPVAYZN.js";
29
+ import "./chunk-FKAUBC4Y.js";
30
+ import "./chunk-VVLWEM2Y.js";
31
+ import "./chunk-QPAANKUR.js";
32
+ import "./chunk-FADIWOA5.js";
33
+ import "./chunk-G33UIUG3.js";
34
+ import "./chunk-QC6GSNIK.js";
35
+ import "./chunk-YIGSUTW2.js";
36
+ import "./chunk-N5DLB74D.js";
37
+ import "./chunk-UWBODTY7.js";
38
+ import "./chunk-X5B7KYPD.js";
39
+ import "./chunk-IPSZDVLI.js";
40
+ import "./chunk-2MRYL45Z.js";
41
+ import "./chunk-ELJ5Q4J2.js";
42
+ import "./chunk-XZY4GTCX.js";
43
+ import "./chunk-3M3MDBOG.js";
44
+ import "./chunk-T2MN24LZ.js";
45
+ import "./chunk-WJWSB65O.js";
46
+ import "./chunk-SMFFUFMN.js";
47
+ import "./chunk-A3LVMCA5.js";
48
+ import "./chunk-NWMFVPEP.js";
49
49
  import "./chunk-BQGDB6ZL.js";
50
+ import "./chunk-R4TUWD4C.js";
50
51
  import "./chunk-TV45EUGM.js";
51
52
  export {
52
53
  READS_AS_RULE,
@@ -5,25 +5,24 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  contractCheckOf
8
- } from "./chunk-WA644MUQ.js";
8
+ } from "./chunk-FM3EEDS2.js";
9
9
  import {
10
10
  HttpError,
11
11
  badRequest,
12
12
  conflict,
13
13
  notFound
14
- } from "./chunk-QSKY7FE3.js";
14
+ } from "./chunk-Y2TVTI4P.js";
15
15
  import {
16
16
  readCatalog
17
- } from "./chunk-YRKAJ42V.js";
17
+ } from "./chunk-QC6GSNIK.js";
18
18
  import {
19
19
  frameworkFacts,
20
- frameworkGaps,
21
- keyIsSecret
22
- } from "./chunk-CGVRLQAY.js";
20
+ frameworkGaps
21
+ } from "./chunk-YIGSUTW2.js";
23
22
  import {
24
23
  baseClonePath,
25
24
  loadRepos
26
- } from "./chunk-WS7KBKP4.js";
25
+ } from "./chunk-X5B7KYPD.js";
27
26
  import {
28
27
  ProfileEditError,
29
28
  QuestionError,
@@ -39,13 +38,14 @@ import {
39
38
  listQuestions,
40
39
  parseAuditFile,
41
40
  parseFacts
42
- } from "./chunk-GLISHJ4G.js";
41
+ } from "./chunk-WJWSB65O.js";
43
42
  import {
44
- FileChangedError
45
- } from "./chunk-G3ZFEHCX.js";
43
+ FileChangedError,
44
+ keyIsSecret
45
+ } from "./chunk-SMFFUFMN.js";
46
46
  import {
47
47
  keptParse
48
- } from "./chunk-CTJHEG6A.js";
48
+ } from "./chunk-NWMFVPEP.js";
49
49
  import {
50
50
  require_dist
51
51
  } from "./chunk-BQGDB6ZL.js";
@@ -385,7 +385,7 @@ async function trustView(root) {
385
385
  });
386
386
  }
387
387
  const contracts = await contractCheckOf(root).then((c) => c.result.counts.compared ? c.result.counts : void 0, () => void 0);
388
- const { answerBoxesOf } = await import("./chunk-EPXYFJTY.js");
388
+ const { answerBoxesOf } = await import("./chunk-AKZTCZ6F.js");
389
389
  const answerBoxes = await answerBoxesOf(root).catch(() => []);
390
390
  return {
391
391
  factsDir: factsRel,
@@ -455,8 +455,12 @@ function uiTrustRoutes(r, ctx) {
455
455
  return r.add("GET", "/api/trust", async () => ({
456
456
  status: 200,
457
457
  body: await keptAnswer(ctx.root, "trust", () => trustView(ctx.root), () => checkoutsStamp(ctx.root))
458
- })).add("POST", "/api/trust/answer-boxes/ignore", ({ body }) => answerBoxRoute(ctx, body, false)).add("POST", "/api/trust/answer-boxes/rename", ({ body }) => answerBoxRoute(ctx, body, true)).add("GET", "/api/trust/fresh", async () => {
459
- const { estateFreshness } = await import("./chunk-7YSMZEO3.js");
458
+ })).add("POST", "/api/trust/answer-boxes/ignore", ({ body }) => answerBoxRoute(ctx, body, false)).add("POST", "/api/trust/answer-boxes/rename", ({ body }) => answerBoxRoute(ctx, body, true)).add("GET", "/api/trust/canaries", async () => {
459
+ const { canaryView } = await import("./chunk-HPNYSY5M.js");
460
+ const body = await canaryView(ctx.root);
461
+ return { status: 200, body };
462
+ }).add("GET", "/api/trust/fresh", async () => {
463
+ const { estateFreshness } = await import("./chunk-7YWS47SE.js");
460
464
  const v = await estateFreshness(ctx.root);
461
465
  const body = {
462
466
  ...v,
@@ -474,7 +478,7 @@ async function answerBoxRoute(ctx, body, rename) {
474
478
  const b = api_exports.AnswerBoxRequest.safeParse(body ?? {});
475
479
  if (!b.success || rename && !b.data.name)
476
480
  throw badRequest(rename ? "Say which box and its real name: { id, name, preview }." : "Say which box: { id, preview }.");
477
- const { AnswerBoxError, ignoreAnswerBox, renameAnswerBox } = await import("./chunk-EPXYFJTY.js");
481
+ const { AnswerBoxError, ignoreAnswerBox, renameAnswerBox } = await import("./chunk-AKZTCZ6F.js");
478
482
  const o = {
479
483
  by: ctx.user,
480
484
  at: (/* @__PURE__ */ new Date()).toISOString(),
@@ -5,25 +5,25 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  readReviewed
8
- } from "./chunk-XP5DF5MC.js";
8
+ } from "./chunk-QPAANKUR.js";
9
9
  import {
10
10
  lineRangeOf
11
- } from "./chunk-CGVRLQAY.js";
11
+ } from "./chunk-YIGSUTW2.js";
12
12
  import {
13
13
  globToRegExp
14
- } from "./chunk-4U3JLIRC.js";
14
+ } from "./chunk-3M3MDBOG.js";
15
15
  import {
16
16
  citedFiles,
17
17
  factsDirOf,
18
18
  factsRelOf,
19
19
  parseFacts
20
- } from "./chunk-GLISHJ4G.js";
20
+ } from "./chunk-WJWSB65O.js";
21
21
  import {
22
22
  writeFileAtomic
23
- } from "./chunk-G3ZFEHCX.js";
23
+ } from "./chunk-SMFFUFMN.js";
24
24
  import {
25
25
  external_exports
26
- } from "./chunk-LZFKJ2BR.js";
26
+ } from "./chunk-A3LVMCA5.js";
27
27
  import {
28
28
  require_dist
29
29
  } from "./chunk-BQGDB6ZL.js";
@@ -9,11 +9,11 @@ import {
9
9
  reExecForMemory,
10
10
  roomGuard,
11
11
  streamFacts
12
- } from "./chunk-DJ4C5ELF.js";
13
- import "./chunk-GLISHJ4G.js";
14
- import "./chunk-G3ZFEHCX.js";
15
- import "./chunk-LZFKJ2BR.js";
16
- import "./chunk-CTJHEG6A.js";
12
+ } from "./chunk-3PBIZBWN.js";
13
+ import "./chunk-WJWSB65O.js";
14
+ import "./chunk-SMFFUFMN.js";
15
+ import "./chunk-A3LVMCA5.js";
16
+ import "./chunk-NWMFVPEP.js";
17
17
  import "./chunk-BQGDB6ZL.js";
18
18
  import "./chunk-TV45EUGM.js";
19
19
  export {