@maycombhq/atticus 2.0.0-beta.21 → 2.0.0-beta.23

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 (299) hide show
  1. package/dist/bin.js +12 -7
  2. package/dist/{chunk-BXBCMGIQ.js → chunk-24OXGB3P.js} +1 -1
  3. package/dist/{chunk-PRW3HXM3.js → chunk-27AJAKX7.js} +29 -5
  4. package/dist/{chunk-PQH56YF6.js → chunk-2QPJ4E4Z.js} +6 -4
  5. package/dist/{chunk-7CZHUZBL.js → chunk-2UMSHYCB.js} +38 -27
  6. package/dist/{chunk-2V2ZPQQU.js → chunk-2WUTCPPJ.js} +9 -7
  7. package/dist/{chunk-YF5DZCPN.js → chunk-2YSD6E6V.js} +38 -34
  8. package/dist/{chunk-QHJJMZLX.js → chunk-3424TLIJ.js} +204 -97
  9. package/dist/{chunk-62DLJSLV.js → chunk-3ASYYMOX.js} +10 -8
  10. package/dist/{chunk-XOL3GFW2.js → chunk-3EWKO457.js} +111 -43
  11. package/dist/{chunk-G5YJBNDZ.js → chunk-3EX5HCZD.js} +8 -6
  12. package/dist/{chunk-WFU77T3A.js → chunk-3MYBT62N.js} +5 -5
  13. package/dist/{chunk-6EXDI5GI.js → chunk-3UHV76UD.js} +72 -41
  14. package/dist/{chunk-LU4MQVAL.js → chunk-3ZA3AK2D.js} +11 -10
  15. package/dist/{chunk-P2VBXX7N.js → chunk-4ETO2FXE.js} +11 -9
  16. package/dist/{chunk-GK4PYVEC.js → chunk-4FLNCK6Q.js} +31 -14
  17. package/dist/{chunk-64AADMTW.js → chunk-4GAB5ZOZ.js} +943 -336
  18. package/dist/{chunk-FLVZFTLQ.js → chunk-4MYHETJ3.js} +20 -18
  19. package/dist/chunk-4R3TO4VL.js +94 -0
  20. package/dist/{chunk-7EFILTCI.js → chunk-5F7GFN2F.js} +28 -0
  21. package/dist/chunk-5MYE42AP.js +43 -0
  22. package/dist/chunk-5O7U67UA.js +57 -0
  23. package/dist/{chunk-MZGRDONP.js → chunk-5OXKCH4Z.js} +54 -37
  24. package/dist/{chunk-PUEWDYGP.js → chunk-5VTIWEWP.js} +3 -2
  25. package/dist/{chunk-3G6S7LAA.js → chunk-63NFFAGI.js} +14 -12
  26. package/dist/{chunk-LIJJCBQI.js → chunk-66AQ2JIU.js} +15 -16
  27. package/dist/chunk-6JVPBGQG.js +50 -0
  28. package/dist/{chunk-WAZEXEJH.js → chunk-6NCPLIIP.js} +167 -2
  29. package/dist/{chunk-D57MFJPP.js → chunk-6NN36LVK.js} +3 -3
  30. package/dist/{chunk-G6IQYM25.js → chunk-6R5VHR3N.js} +8 -6
  31. package/dist/{chunk-Z3QFH7YG.js → chunk-6RQOINER.js} +5 -4
  32. package/dist/{chunk-TQTRWENN.js → chunk-6RYB3EET.js} +14 -12
  33. package/dist/{chunk-FYBF5MB2.js → chunk-6SNTHK43.js} +13 -11
  34. package/dist/{chunk-FRHD22WM.js → chunk-6Y4FXOMI.js} +27 -23
  35. package/dist/{chunk-LWDNKE4X.js → chunk-6ZFF7XSL.js} +6 -6
  36. package/dist/{chunk-FQ6WH6PB.js → chunk-6ZSYLZ7O.js} +6 -4
  37. package/dist/{chunk-LQH4P45K.js → chunk-73CC73I4.js} +1 -1
  38. package/dist/{chunk-Q46QDDMF.js → chunk-73GFVW2L.js} +14 -9
  39. package/dist/{chunk-QKMRFNMA.js → chunk-73V2OONC.js} +17 -15
  40. package/dist/{chunk-FVMPFCDS.js → chunk-75OMRKY2.js} +4 -4
  41. package/dist/{chunk-XEQCQO66.js → chunk-7IFTSAHP.js} +10 -8
  42. package/dist/{chunk-4FOAYLI4.js → chunk-7K5OH45X.js} +139 -17
  43. package/dist/{chunk-3SSTNB4E.js → chunk-7NQAGYK4.js} +34 -14
  44. package/dist/{chunk-URIKUID7.js → chunk-7XWJ6ED2.js} +14 -12
  45. package/dist/{chunk-TYD6I4CZ.js → chunk-7XYLNQFO.js} +7 -7
  46. package/dist/{chunk-BPPU3PW7.js → chunk-7YQBDE5W.js} +10 -4
  47. package/dist/{chunk-CPK7QSBG.js → chunk-A4JXVO5O.js} +8 -6
  48. package/dist/{chunk-YJ3TBOTK.js → chunk-AFBCNZRZ.js} +29 -26
  49. package/dist/{chunk-TW3KOSQK.js → chunk-AGOLEMHK.js} +13 -13
  50. package/dist/chunk-AHFQHPFF.js +49 -0
  51. package/dist/{chunk-NTAVOWYD.js → chunk-APDN6UOR.js} +118 -18
  52. package/dist/chunk-AQRUQNFB.js +322 -0
  53. package/dist/{chunk-KYZMRSPS.js → chunk-AVMWESFZ.js} +6 -3
  54. package/dist/chunk-B4AEL3RF.js +1011 -0
  55. package/dist/{chunk-GS76RXQE.js → chunk-BAY4K55I.js} +15 -12
  56. package/dist/{chunk-4CLK2RJO.js → chunk-BFL4PO64.js} +9 -7
  57. package/dist/{chunk-GCS3FZOB.js → chunk-BFMTGNAQ.js} +15 -4
  58. package/dist/{chunk-YBOVNMHC.js → chunk-BP33TBLI.js} +29 -16
  59. package/dist/chunk-BQGDB6ZL.js +7342 -0
  60. package/dist/{chunk-BXZ4PKIT.js → chunk-BUUJ7N4O.js} +15 -11
  61. package/dist/{chunk-HGHRSF3E.js → chunk-BYBU2EIB.js} +38 -19
  62. package/dist/{chunk-TQ4TG57V.js → chunk-C6ORPLCN.js} +4 -4
  63. package/dist/{chunk-HWD4JPU7.js → chunk-CA3DKO4D.js} +27 -3
  64. package/dist/{chunk-YTTNTQOX.js → chunk-CFUDAW3R.js} +17 -15
  65. package/dist/{chunk-OPQZISG3.js → chunk-CJEBRJBS.js} +5 -4
  66. package/dist/{chunk-RALY3E5U.js → chunk-CKVBDVIW.js} +6 -4
  67. package/dist/{chunk-DUPZPDCJ.js → chunk-CMB7FXHJ.js} +42 -16
  68. package/dist/{chunk-YIGBJNH4.js → chunk-CQ7RF4QN.js} +5 -4
  69. package/dist/{chunk-YAH5IQAL.js → chunk-CS4BMJLL.js} +6 -5
  70. package/dist/{chunk-455SYIIE.js → chunk-CT6NINGR.js} +5 -3
  71. package/dist/chunk-CXTG6AWM.js +40 -0
  72. package/dist/{chunk-JYMIB5XY.js → chunk-CZ2ZS7AT.js} +170 -45
  73. package/dist/{chunk-K332XW7K.js → chunk-D6BVLTDV.js} +100 -33
  74. package/dist/chunk-DCRYOMTM.js +37 -0
  75. package/dist/{chunk-G6X4YL4D.js → chunk-DHKDH464.js} +5 -4
  76. package/dist/{chunk-JRVNXLZP.js → chunk-DSHRA72L.js} +14 -12
  77. package/dist/{chunk-LNWEWYCM.js → chunk-E3PDCQRH.js} +2813 -621
  78. package/dist/chunk-EHXDB3SA.js +25 -0
  79. package/dist/{chunk-EZIN5E5B.js → chunk-EMVZIOOD.js} +11 -9
  80. package/dist/{chunk-IFHDV6KQ.js → chunk-ENH6Z4TY.js} +21 -20
  81. package/dist/{chunk-YKTE2RU3.js → chunk-EVTI22PQ.js} +7 -2
  82. package/dist/{chunk-2D7PWSOK.js → chunk-EXJZBL5N.js} +22 -20
  83. package/dist/{chunk-77O633L5.js → chunk-FBCVC2GJ.js} +14 -12
  84. package/dist/{chunk-HS4BGB4G.js → chunk-FJVUHQPS.js} +37 -24
  85. package/dist/{chunk-4KNOJC6J.js → chunk-FL344WQD.js} +270 -221
  86. package/dist/{chunk-GNWAOVFQ.js → chunk-FMJYKLDY.js} +5 -5
  87. package/dist/chunk-FMR2D3AZ.js +41 -0
  88. package/dist/{chunk-PAINMSID.js → chunk-FPBUTZI5.js} +3102 -7859
  89. package/dist/{chunk-ZOSD4FXV.js → chunk-FQVSLBTV.js} +3 -3
  90. package/dist/chunk-FRAEQVYN.js +52 -0
  91. package/dist/{chunk-UDXWIPCB.js → chunk-FRCOKUU4.js} +9 -7
  92. package/dist/{chunk-UYLBRRFK.js → chunk-FSN6JFXB.js} +129 -27
  93. package/dist/{chunk-BC6KKZ67.js → chunk-FTLYXMHA.js} +9 -6
  94. package/dist/{chunk-FAJDKNSD.js → chunk-FVYZ4Y52.js} +16 -3
  95. package/dist/{chunk-TWQRPM76.js → chunk-G6EFXTUO.js} +23 -16
  96. package/dist/{chunk-ZFQMMU5Y.js → chunk-G7VBMOZH.js} +6 -2
  97. package/dist/{chunk-VYOCPTUB.js → chunk-GM4EFHUX.js} +17 -15
  98. package/dist/chunk-GOZLTLRY.js +232 -0
  99. package/dist/chunk-GPNMSX5H.js +36 -0
  100. package/dist/{chunk-OZJ3JLYI.js → chunk-GUGQSIQM.js} +10 -9
  101. package/dist/chunk-H4VO6WG3.js +10 -0
  102. package/dist/{chunk-QJCJOMW3.js → chunk-HJQVUOUL.js} +16 -18
  103. package/dist/chunk-HMWJWYE2.js +31 -0
  104. package/dist/{chunk-4TKVU2I2.js → chunk-HMZ2DRBC.js} +2 -2
  105. package/dist/{chunk-HK3VOHIE.js → chunk-HRS5O7VV.js} +609 -171
  106. package/dist/{chunk-7FUIVIBG.js → chunk-HUGQZQ2K.js} +13 -8
  107. package/dist/{chunk-QOOEYDNJ.js → chunk-ICBGVVRI.js} +10 -10
  108. package/dist/{chunk-XG4WJHLQ.js → chunk-IGOE6KPG.js} +49 -20
  109. package/dist/{chunk-4SLBCEPD.js → chunk-IKAW2KJU.js} +95 -64
  110. package/dist/{chunk-L4CESDPB.js → chunk-IMZFOMVX.js} +1 -1
  111. package/dist/{chunk-XQ3YZ4QW.js → chunk-ISG547IS.js} +24 -22
  112. package/dist/{chunk-BA2HUMDN.js → chunk-IYNCSYU4.js} +5 -2
  113. package/dist/{chunk-UEVZZZU2.js → chunk-J25YOUIZ.js} +5 -4
  114. package/dist/chunk-J2CDBSFP.js +69 -0
  115. package/dist/chunk-J2H7YG3K.js +34 -0
  116. package/dist/{chunk-O4IKAIZ2.js → chunk-J32IPTVQ.js} +28 -22
  117. package/dist/{chunk-3AQ2R5NL.js → chunk-J4CPHJUL.js} +11 -9
  118. package/dist/{chunk-VUVGX5L2.js → chunk-JFFKHIM6.js} +1 -1
  119. package/dist/chunk-JMEWJPF2.js +384 -0
  120. package/dist/{chunk-LO3BLMVG.js → chunk-JSP73CDW.js} +13 -5
  121. package/dist/chunk-JXAKYP45.js +63 -0
  122. package/dist/{chunk-PNQLCRSS.js → chunk-K4OXYSGS.js} +7 -5
  123. package/dist/{chunk-3J5I7ZOU.js → chunk-K4RNVDR4.js} +4 -4
  124. package/dist/{chunk-LEBR5NHW.js → chunk-K757G7AD.js} +18 -15
  125. package/dist/{chunk-AHW3RY3X.js → chunk-KDJ2YKAZ.js} +8 -7
  126. package/dist/{chunk-4WXRPQDE.js → chunk-KT6Q44CA.js} +178 -31
  127. package/dist/{chunk-EFCQSMXB.js → chunk-KTNOBTV5.js} +10 -4
  128. package/dist/chunk-KVVNAUIG.js +66 -0
  129. package/dist/{chunk-26Z7OGQW.js → chunk-L3RCQWVQ.js} +64 -31
  130. package/dist/{chunk-3WON4G3M.js → chunk-LHH5KG5A.js} +21 -6
  131. package/dist/{chunk-NCB6656Z.js → chunk-LM45GMMB.js} +11 -8
  132. package/dist/{chunk-2HH3UCZM.js → chunk-LO6Y7OTG.js} +5 -4
  133. package/dist/{chunk-36RY7ZXM.js → chunk-LPDTDFKA.js} +88 -26
  134. package/dist/{chunk-67BP7HXL.js → chunk-LSHSDC6S.js} +19 -17
  135. package/dist/{chunk-GDZB57IU.js → chunk-LZVHP7CT.js} +7 -5
  136. package/dist/{chunk-GC2VK3JT.js → chunk-M3EOFSPY.js} +28 -25
  137. package/dist/chunk-MBYYQHPM.js +31 -0
  138. package/dist/{chunk-HXXP2NTE.js → chunk-MEJ63LDG.js} +35 -12
  139. package/dist/{chunk-2UCRFXFZ.js → chunk-MH2ZK67S.js} +13 -11
  140. package/dist/{chunk-BEPCKDCP.js → chunk-MLGWSBF4.js} +5447 -4165
  141. package/dist/{chunk-NRQ65LTQ.js → chunk-MNIPPBCT.js} +6 -5
  142. package/dist/{chunk-3LZ6P5EP.js → chunk-MUWDB4R4.js} +1 -1
  143. package/dist/{chunk-KDAHXQIE.js → chunk-MWF4PXQR.js} +38 -34
  144. package/dist/{chunk-WNTIOBOG.js → chunk-N2YX6JMY.js} +20 -18
  145. package/dist/{chunk-FY3QIRTL.js → chunk-NAPHHWW2.js} +3 -3
  146. package/dist/{chunk-D2WSW4GU.js → chunk-NC755EKE.js} +8 -2
  147. package/dist/{chunk-BA3U7ALS.js → chunk-NCLZJCXA.js} +26 -22
  148. package/dist/chunk-NKJDO4UC.js +39 -0
  149. package/dist/chunk-NOYOFYAJ.js +59 -0
  150. package/dist/{chunk-LPV6T362.js → chunk-NROSSWMS.js} +8 -6
  151. package/dist/{chunk-ZKYRDV7A.js → chunk-OBUB3H72.js} +14 -12
  152. package/dist/{chunk-ZQLRCA2V.js → chunk-OCQWSFJD.js} +10 -8
  153. package/dist/{chunk-42EPP7OB.js → chunk-OK6JGLE7.js} +14 -12
  154. package/dist/{chunk-MD7KUEJ3.js → chunk-OPWGPQ2N.js} +9 -7
  155. package/dist/{chunk-SH27FYPF.js → chunk-OSYHGGL3.js} +20 -18
  156. package/dist/chunk-OXXZZ7HQ.js +50 -0
  157. package/dist/chunk-P22EPEBR.js +57 -0
  158. package/dist/chunk-P4YUT7W7.js +45 -0
  159. package/dist/chunk-PCCLVIDP.js +217 -0
  160. package/dist/chunk-PFULMC2D.js +48 -0
  161. package/dist/chunk-PGAMTKBI.js +16 -0
  162. package/dist/{chunk-Y6K3CJBU.js → chunk-PNSSE7JM.js} +152 -29
  163. package/dist/{chunk-3UTYPHN3.js → chunk-POEMZECG.js} +1 -1
  164. package/dist/{chunk-GSGIZ2OO.js → chunk-POSDBRKV.js} +27 -24
  165. package/dist/{chunk-YZDZOEV4.js → chunk-POSZFDSQ.js} +3 -3
  166. package/dist/{chunk-7AB6OWTV.js → chunk-PQQKZPBU.js} +31 -25
  167. package/dist/{chunk-K6JB6XTX.js → chunk-PRMUQUWN.js} +20 -15
  168. package/dist/{chunk-ICHDSWEY.js → chunk-PT4USJNN.js} +10 -8
  169. package/dist/{chunk-265LWMOA.js → chunk-PWXB5GBB.js} +18 -16
  170. package/dist/{chunk-DCWN3HFV.js → chunk-PXMV2LLY.js} +6 -5
  171. package/dist/{chunk-THN26IEF.js → chunk-PXW2RZGQ.js} +4 -1
  172. package/dist/{chunk-CG6CULP6.js → chunk-Q367UGYN.js} +7 -5
  173. package/dist/chunk-QA4O2GGC.js +265 -0
  174. package/dist/{chunk-7FHNFCHK.js → chunk-QAVRDONY.js} +225 -375
  175. package/dist/{chunk-VAMHOHUU.js → chunk-QBMLBCQH.js} +16 -13
  176. package/dist/{chunk-WEOMJHPV.js → chunk-QLQIFJP3.js} +18 -15
  177. package/dist/{chunk-UZACEG2C.js → chunk-QLWDIKO4.js} +84 -27
  178. package/dist/{chunk-ZZFHLRQW.js → chunk-QVVGJVVX.js} +18 -16
  179. package/dist/{chunk-WIWTJMMR.js → chunk-QX4MAMUG.js} +23 -21
  180. package/dist/{chunk-JYTIHTIK.js → chunk-QZWRPQTI.js} +6 -6
  181. package/dist/{chunk-5WERBKLE.js → chunk-RCG5IAAT.js} +55 -227
  182. package/dist/chunk-RGZFOKVO.js +106 -0
  183. package/dist/{chunk-C7CEK3KW.js → chunk-RLZFL76D.js} +7 -5
  184. package/dist/{chunk-PTQ3ZALZ.js → chunk-RPQITJNX.js} +14 -12
  185. package/dist/{chunk-JS6WMC3J.js → chunk-RQQYEDAC.js} +10 -8
  186. package/dist/chunk-RQSLHZ7T.js +36 -0
  187. package/dist/{chunk-API5TOUB.js → chunk-RRQUQAXP.js} +1 -1
  188. package/dist/chunk-RYQ4JCFT.js +65 -0
  189. package/dist/chunk-S35DIFJH.js +38 -0
  190. package/dist/{chunk-YWAKDNMH.js → chunk-S5GSQPIN.js} +70 -19
  191. package/dist/chunk-S5XFO4GY.js +42 -0
  192. package/dist/chunk-S6LW2RRC.js +25 -0
  193. package/dist/{chunk-TSM6T6GQ.js → chunk-S6W3D5GS.js} +25 -23
  194. package/dist/{chunk-5PV7S2ZP.js → chunk-S7GUZ45I.js} +4 -3
  195. package/dist/{chunk-MMZUN7ZO.js → chunk-SCT4CEF7.js} +22 -20
  196. package/dist/{chunk-AOCWFA7T.js → chunk-SK5RVP7X.js} +8 -8
  197. package/dist/chunk-SRTUETF5.js +50 -0
  198. package/dist/{chunk-E57AOFYN.js → chunk-SVGGMBJI.js} +15 -13
  199. package/dist/{chunk-OV57AHCG.js → chunk-SWNKO4C4.js} +35 -26
  200. package/dist/chunk-SYP56T2D.js +65 -0
  201. package/dist/{chunk-5CMPVC3N.js → chunk-T33TPFGI.js} +25 -23
  202. package/dist/{chunk-Q26LDIUV.js → chunk-T3FNG2H2.js} +18 -15
  203. package/dist/{chunk-UFE36WJH.js → chunk-T6MAWL5P.js} +6 -4
  204. package/dist/{chunk-LN77DXBM.js → chunk-T6MX7WXM.js} +14 -11
  205. package/dist/{chunk-WCEF7H6L.js → chunk-T7IIEDA3.js} +10 -7
  206. package/dist/{chunk-2HTEMYTB.js → chunk-TABH4RBZ.js} +163 -84
  207. package/dist/{chunk-YO2PKTXT.js → chunk-TDSCKP3V.js} +5 -3
  208. package/dist/{chunk-BVWWPBKD.js → chunk-TMFMXQEN.js} +23 -21
  209. package/dist/{chunk-4B6BT75O.js → chunk-TNCF26JK.js} +83 -26
  210. package/dist/{chunk-75ASLHBT.js → chunk-TUM52SOE.js} +21 -15
  211. package/dist/{chunk-ZLS6PU2O.js → chunk-TV56QLLV.js} +4 -3
  212. package/dist/{chunk-JKIGL3XQ.js → chunk-TVQSXWWV.js} +36 -33
  213. package/dist/{chunk-OKUB6RJA.js → chunk-TXNSQ24G.js} +14 -11
  214. package/dist/{chunk-4CYTJ5TZ.js → chunk-UALE35WK.js} +4 -3
  215. package/dist/{chunk-CNU5Q2D5.js → chunk-UJF7PIMP.js} +35 -27
  216. package/dist/chunk-UMCDODBX.js +53 -0
  217. package/dist/{chunk-M6D2U3YM.js → chunk-UTPIFH4I.js} +4 -3
  218. package/dist/{chunk-COYN3UAN.js → chunk-V7PEHQZU.js} +95 -26
  219. package/dist/{chunk-U3NBK4EU.js → chunk-VJFXQISZ.js} +8 -8
  220. package/dist/chunk-VJZI6KFP.js +47 -0
  221. package/dist/{chunk-ECLXZWAG.js → chunk-VK7WYA64.js} +14 -12
  222. package/dist/{chunk-DDJPM5YX.js → chunk-VKTXFFOZ.js} +5 -3
  223. package/dist/{chunk-LIRVU3HW.js → chunk-VNIN7Q6Q.js} +32 -20
  224. package/dist/{chunk-7QPCGTPS.js → chunk-VRO7KSGL.js} +24 -21
  225. package/dist/{chunk-AZDITBCT.js → chunk-W3AZE7LN.js} +3 -3
  226. package/dist/chunk-W4TNCEI4.js +44 -0
  227. package/dist/{chunk-S2RY3BOD.js → chunk-W5VYJWOG.js} +31 -21
  228. package/dist/{chunk-X2CUXTWU.js → chunk-WF3RCZNO.js} +6 -6
  229. package/dist/{chunk-4D62IZII.js → chunk-WOMQQWTO.js} +7 -5
  230. package/dist/{chunk-UF4UHCIG.js → chunk-WXVTYLVH.js} +6 -4
  231. package/dist/{chunk-EDZ45WIR.js → chunk-WYGTSZHR.js} +18 -14
  232. package/dist/{chunk-HSZMPH5T.js → chunk-WZYM5M4U.js} +592 -133
  233. package/dist/chunk-X5ZHDSLU.js +49 -0
  234. package/dist/chunk-X7XVMYIL.js +5 -0
  235. package/dist/chunk-X7ZKNSK4.js +41 -0
  236. package/dist/{chunk-QE527XRY.js → chunk-XAPXKFIS.js} +26 -23
  237. package/dist/{chunk-HE3HRDNZ.js → chunk-XF6TSZW2.js} +2 -2
  238. package/dist/{chunk-GX74YWR7.js → chunk-XFDDJQT7.js} +16 -14
  239. package/dist/{chunk-5QUOPNLN.js → chunk-XGO74QWR.js} +4 -4
  240. package/dist/chunk-XLZAAAPX.js +43 -0
  241. package/dist/{chunk-NYOABJNK.js → chunk-XMUWPA56.js} +26 -24
  242. package/dist/{chunk-M4H2UG4R.js → chunk-XNFM6WUK.js} +19 -16
  243. package/dist/{chunk-TGVVUKTG.js → chunk-XOMEQVLK.js} +2 -2
  244. package/dist/{chunk-A2G72UI4.js → chunk-Y2H7X3VI.js} +7 -7
  245. package/dist/{chunk-37WE3LS2.js → chunk-Y5IE6YKD.js} +5 -3
  246. package/dist/{chunk-IFFRGC3N.js → chunk-YD3KTW4H.js} +14 -12
  247. package/dist/{chunk-75ZOZFGH.js → chunk-YDCOZOER.js} +20 -18
  248. package/dist/{chunk-6DQYZU2W.js → chunk-YERAAEO4.js} +20 -20
  249. package/dist/{chunk-J5AAZ6OJ.js → chunk-YHMPDIRG.js} +5 -4
  250. package/dist/{chunk-CNPY4NTZ.js → chunk-Z2D4P3R3.js} +15 -13
  251. package/dist/{chunk-E2VXBSIR.js → chunk-Z3H27OMV.js} +6 -4
  252. package/dist/{chunk-AE4P57KK.js → chunk-Z3RAFU5B.js} +17 -15
  253. package/dist/{chunk-RA33EYS4.js → chunk-ZENHDXRZ.js} +23 -17
  254. package/dist/{chunk-TJH2EUAZ.js → chunk-ZFHFC74B.js} +20 -18
  255. package/dist/{chunk-4PYC2UGC.js → chunk-ZGULQAPZ.js} +7 -4
  256. package/dist/{chunk-4SKZDI62.js → chunk-ZIUFM5HT.js} +3 -1
  257. package/dist/{chunk-JAABT3DA.js → chunk-ZJGCGKA4.js} +4 -3
  258. package/dist/{chunk-GIFMBCTW.js → chunk-ZLQEQR3D.js} +10 -8
  259. package/dist/{chunk-I2A3Z5AK.js → chunk-ZNHQGG7J.js} +7 -7
  260. package/dist/{chunk-5TDRBOAV.js → chunk-ZNTTW4IT.js} +7 -5
  261. package/dist/{chunk-ZX7235KR.js → chunk-ZR6J4QFQ.js} +44 -383
  262. package/dist/{chunk-F6H2RJ3N.js → chunk-ZSNOILL5.js} +1 -1
  263. package/dist/files.json +585 -509
  264. package/dist/packages/sdk/npm/index.js +1491 -110
  265. package/dist/packages/ui/dist/assets/{elk-api-CowTnhEJ.js → elk-api-DxfAMOJq.js} +2 -2
  266. package/dist/packages/ui/dist/assets/index-Buit9TfP.js +62 -0
  267. package/dist/packages/ui/dist/assets/index-Jyc9dFeZ.css +1 -0
  268. package/dist/packages/ui/dist/index.html +3 -2
  269. package/package.json +3 -3
  270. package/dist/chunk-26WBY34Y.js +0 -37
  271. package/dist/chunk-3TD6S4TC.js +0 -49
  272. package/dist/chunk-5G7ILBUG.js +0 -66
  273. package/dist/chunk-6FNAKCET.js +0 -38
  274. package/dist/chunk-AM6FP6JW.js +0 -43
  275. package/dist/chunk-CFH3QH26.js +0 -29
  276. package/dist/chunk-CLD4RVTA.js +0 -45
  277. package/dist/chunk-D5KV5PSK.js +0 -45
  278. package/dist/chunk-D5MASS4I.js +0 -48
  279. package/dist/chunk-DN4A2Q2O.js +0 -57
  280. package/dist/chunk-FGAGWYZB.js +0 -47
  281. package/dist/chunk-GUYL7RMK.js +0 -60
  282. package/dist/chunk-J2O4LFVI.js +0 -80
  283. package/dist/chunk-JITJP64K.js +0 -34
  284. package/dist/chunk-JRXHON4E.js +0 -41
  285. package/dist/chunk-JU4QNJSR.js +0 -62
  286. package/dist/chunk-N3RUGTGV.js +0 -39
  287. package/dist/chunk-ODMBPDDV.js +0 -298
  288. package/dist/chunk-OMPENNWY.js +0 -39
  289. package/dist/chunk-PKJAV25S.js +0 -43
  290. package/dist/chunk-PRTBPXYA.js +0 -50
  291. package/dist/chunk-PRZ7KMWL.js +0 -42
  292. package/dist/chunk-QSIDVFB7.js +0 -45
  293. package/dist/chunk-SB5GRUFM.js +0 -54
  294. package/dist/chunk-T74WQQGS.js +0 -40
  295. package/dist/chunk-X7EMBM5X.js +0 -34
  296. package/dist/chunk-Z6VLC5X4.js +0 -36
  297. package/dist/chunk-ZPDDEVQX.js +0 -47
  298. package/dist/packages/ui/dist/assets/index-Dw20IRhQ.css +0 -1
  299. package/dist/packages/ui/dist/assets/index-z2wv0d5d.js +0 -47
@@ -6,7 +6,7 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  dotInt8,
8
8
  textSha
9
- } from "./chunk-QHJJMZLX.js";
9
+ } from "./chunk-3424TLIJ.js";
10
10
  import {
11
11
  JOINED_BY_PERSON,
12
12
  Question,
@@ -14,8 +14,14 @@ import {
14
14
  RecordId,
15
15
  answerByWords,
16
16
  changesDirOf,
17
+ decodeText,
17
18
  deserializeRecord,
19
+ globMatcher,
18
20
  identifierWords,
21
+ ignoreRules,
22
+ ignoredBy,
23
+ isBinaryBytes,
24
+ isBinaryPath,
19
25
  knowledgeDirOf,
20
26
  knowledgeKindOf,
21
27
  layoutOf,
@@ -23,14 +29,17 @@ import {
23
29
  parseRecord,
24
30
  questionsDirOf,
25
31
  recordReferences,
26
- require_dist,
27
32
  serializeRecord,
28
33
  specsDirOf,
29
34
  specsRelOf,
30
35
  splitForms,
31
36
  stateDirOf,
32
- toCanonicalYaml
33
- } from "./chunk-PAINMSID.js";
37
+ toCanonicalYaml,
38
+ walkRepo
39
+ } from "./chunk-FPBUTZI5.js";
40
+ import {
41
+ require_dist
42
+ } from "./chunk-BQGDB6ZL.js";
34
43
  import {
35
44
  __toESM
36
45
  } from "./chunk-TV45EUGM.js";
@@ -1006,8 +1015,8 @@ var DOCUMENT_EXTENSIONS = /\.(docx|pptx|xlsx|pdf|md|markdown|html?|txt)$/i;
1006
1015
  async function documentNodes(path, bytes) {
1007
1016
  const out = { nodes: [], names: [], links: [] };
1008
1017
  const [{ readDocument }, { screenFile }] = await Promise.all([
1009
- import("./chunk-NRQ65LTQ.js"),
1010
- import("./chunk-UDXWIPCB.js")
1018
+ import("./chunk-MNIPPBCT.js"),
1019
+ import("./chunk-FRCOKUU4.js")
1011
1020
  ]);
1012
1021
  const screen = screenFile(path, bytes);
1013
1022
  if (screen.problem)
@@ -2260,7 +2269,7 @@ ${JSON.stringify(keyed)}`).digest("hex");
2260
2269
 
2261
2270
  // packages/index/dist/catalog-index.js
2262
2271
  import { mkdir } from "node:fs/promises";
2263
- import { dirname as dirname2, join as join3 } from "node:path";
2272
+ import { dirname as dirname2, join as join3, resolve } from "node:path";
2264
2273
 
2265
2274
  // packages/index/dist/db.js
2266
2275
  import { createRequire } from "node:module";
@@ -2286,7 +2295,8 @@ function openDb(file) {
2286
2295
  // packages/index/dist/catalog-index.js
2287
2296
  var vectorsFileOf = (file) => join3(dirname2(file), "vectors.sqlite");
2288
2297
  var notInstalled = (e, pkg) => e.code === "ERR_MODULE_NOT_FOUND" && String(e.message).includes(pkg);
2289
- async function embedderOf(root, setting, load = () => import("./chunk-LO3BLMVG.js")) {
2298
+ var embedders = /* @__PURE__ */ new Map();
2299
+ async function embedderOf(root, setting, load = () => import("./chunk-JSP73CDW.js")) {
2290
2300
  if (setting === "off")
2291
2301
  return { why: "turned off for this command" };
2292
2302
  if (setting && setting !== "auto")
@@ -2304,7 +2314,14 @@ async function embedderOf(root, setting, load = () => import("./chunk-LO3BLMVG.j
2304
2314
  try {
2305
2315
  const { embedderFor } = embed;
2306
2316
  const r = await embedderFor(root);
2307
- return r.embedder ? { embedder: r.embedder } : { why: r.state.problem ?? "no embedding model" };
2317
+ if (!r.embedder)
2318
+ return { why: r.state.problem ?? "no embedding model" };
2319
+ const key = `${resolve(root)}\0${r.state.dir ?? ""}\0${r.state.id ?? r.embedder.id}`;
2320
+ const had = embedders.get(key);
2321
+ if (had)
2322
+ return { embedder: had };
2323
+ embedders.set(key, r.embedder);
2324
+ return { embedder: r.embedder };
2308
2325
  } catch (e) {
2309
2326
  return { why: `the embedding model couldn't be read: ${e.message.split("\n")[0]}` };
2310
2327
  }
@@ -2312,11 +2329,10 @@ async function embedderOf(root, setting, load = () => import("./chunk-LO3BLMVG.j
2312
2329
  async function openIndex(root, o = {}) {
2313
2330
  const file = o.file ?? join3(stateDirOf(root), ".index", "catalog.sqlite");
2314
2331
  await mkdir(dirname2(file), { recursive: true });
2315
- const files = await listSources(root);
2316
2332
  const db = openDb(file);
2317
2333
  try {
2318
2334
  const fresh = ensureSchema(db, o.rebuild === true);
2319
- const u = await updateIndex(db, root, files, { force: fresh });
2335
+ const u = o.trusted && !fresh ? { changed: [], removed: [], problems: [], rematched: false } : await updateIndex(db, root, await listSources(root), { force: fresh });
2320
2336
  const rebuilt = fresh || u.changed.length > 0 || u.removed.length > 0;
2321
2337
  attachVectors(db, vectorsFileOf(file));
2322
2338
  const e = await embedderOf(root, o.embeddings, o.loadEmbed);
@@ -2896,133 +2912,9 @@ function translate(question, lookup) {
2896
2912
 
2897
2913
  // packages/index/dist/tools.js
2898
2914
  import { existsSync, readdirSync } from "node:fs";
2899
- import { readdir as readdir2, readFile as readFile3, realpath, stat as stat2 } from "node:fs/promises";
2900
- import { isAbsolute, join as join4, relative as relative2, resolve, sep as sep2 } from "node:path";
2915
+ import { readFile as readFile3, realpath, stat as stat2 } from "node:fs/promises";
2916
+ import { isAbsolute, join as join4, relative as relative2, resolve as resolve2, sep as sep2 } from "node:path";
2901
2917
  import { createContext, runInContext, Script } from "node:vm";
2902
-
2903
- // packages/index/dist/glob.js
2904
- var notSlash = (c) => c !== "/";
2905
- var anyChar = (c) => !/[\n\r\u2028\u2029]/.test(c);
2906
- var Builder = class {
2907
- states = [];
2908
- add(s) {
2909
- this.states.push(s);
2910
- return this.states.length - 1;
2911
- }
2912
- /** `c*` looping on a test, then on to next. */
2913
- loop(test, next) {
2914
- const split = this.add({ kind: "split", outs: [] });
2915
- const ch = this.add({ kind: "char", test, out: split });
2916
- this.states[split].outs.push(ch, next);
2917
- return split;
2918
- }
2919
- /** `(?:.*\/)?` then next: any folders, or none. */
2920
- folders(next) {
2921
- const slash = this.add({ kind: "char", test: (c) => c === "/", out: next });
2922
- return this.add({ kind: "split", outs: [this.loop(anyChar, slash), next] });
2923
- }
2924
- };
2925
- function tidy(glob2) {
2926
- return glob2.trim().replace(/\\/g, "/").replace(/^\.\//, "");
2927
- }
2928
- function compile(b, g, next) {
2929
- const pieces = [];
2930
- for (let i = 0; i < g.length; i++) {
2931
- const ch = g[i];
2932
- if (ch === "*") {
2933
- if (g[i + 1] === "*") {
2934
- const slash = g[i + 2] === "/";
2935
- pieces.push(slash ? (n) => b.folders(n) : (n) => b.loop(anyChar, n));
2936
- i += slash ? 2 : 1;
2937
- } else
2938
- pieces.push((n) => b.loop(notSlash, n));
2939
- } else if (ch === "?")
2940
- pieces.push((n) => b.add({ kind: "char", test: notSlash, out: n }));
2941
- else if (ch === "[") {
2942
- const end = g.indexOf("]", i + 2);
2943
- if (end < 0)
2944
- pieces.push(lit("["));
2945
- else {
2946
- const body = g.slice(i + 1, end).replace(/^!/, "^").replace(/\\/g, "\\\\");
2947
- const re = new RegExp(`^[${body}]$`);
2948
- pieces.push((n) => b.add({ kind: "char", test: (c) => re.test(c), out: n }));
2949
- i = end;
2950
- }
2951
- } else if (ch === "{") {
2952
- const end = g.indexOf("}", i);
2953
- if (end < 0)
2954
- pieces.push(lit("{"));
2955
- else {
2956
- const parts = g.slice(i + 1, end).split(",").map((p) => {
2957
- let t = tidy(p);
2958
- if (t.startsWith("/"))
2959
- t = t.slice(1);
2960
- return t;
2961
- });
2962
- const probe = new Builder();
2963
- for (const p of parts)
2964
- compile(probe, p, probe.add({ kind: "match" }));
2965
- pieces.push((n) => b.add({ kind: "split", outs: parts.map((p) => compile(b, p, n)) }));
2966
- i = end;
2967
- }
2968
- } else
2969
- pieces.push(lit(ch));
2970
- }
2971
- let at = next;
2972
- for (let k = pieces.length - 1; k >= 0; k--)
2973
- at = pieces[k](at);
2974
- return at;
2975
- function lit(c) {
2976
- return (n) => b.add({ kind: "char", test: (x) => x === c, out: n });
2977
- }
2978
- }
2979
- function globMatcher(glob2, anyDepth = !glob2.replace(/\/$/, "").includes("/")) {
2980
- let g = tidy(glob2);
2981
- if (g.startsWith("/")) {
2982
- g = g.slice(1);
2983
- anyDepth = false;
2984
- }
2985
- const b = new Builder();
2986
- const end = b.add({ kind: "match" });
2987
- let start = compile(b, g, end);
2988
- if (anyDepth)
2989
- start = b.folders(start);
2990
- const states = b.states;
2991
- const close = (set, s) => {
2992
- const stack = [s];
2993
- while (stack.length) {
2994
- const at = stack.pop();
2995
- if (set.has(at))
2996
- continue;
2997
- set.add(at);
2998
- const st = states[at];
2999
- if (st.kind === "split")
3000
- for (const o of st.outs)
3001
- stack.push(o);
3002
- }
3003
- };
3004
- return {
3005
- test(path) {
3006
- let live = /* @__PURE__ */ new Set();
3007
- close(live, start);
3008
- for (let i = 0; i < path.length; i++) {
3009
- const c = path[i];
3010
- const next = /* @__PURE__ */ new Set();
3011
- for (const s of live) {
3012
- const st = states[s];
3013
- if (st.kind === "char" && st.test(c))
3014
- close(next, st.out);
3015
- }
3016
- if (!next.size)
3017
- return false;
3018
- live = next;
3019
- }
3020
- return live.has(end);
3021
- }
3022
- };
3023
- }
3024
-
3025
- // packages/index/dist/tools.js
3026
2918
  var ContextToolError = class extends Error {
3027
2919
  constructor(message) {
3028
2920
  super(message);
@@ -3398,7 +3290,7 @@ function isCited(ix, root, c) {
3398
3290
  async function insideClone(base, path) {
3399
3291
  if (!path || path.includes("\0") || isAbsolute(path) || /^[a-zA-Z]:/.test(path))
3400
3292
  throw new ContextToolError(`${path} isn't a path inside the repo.`);
3401
- const full = resolve(base, ...path.split(/[\\/]+/));
3293
+ const full = resolve2(base, ...path.split(/[\\/]+/));
3402
3294
  const rel2 = relative2(base, full);
3403
3295
  if (!rel2 || rel2.startsWith("..") || isAbsolute(rel2))
3404
3296
  throw new ContextToolError(`${path} leaves the repo's checkout; Atticus reads nothing outside it.`);
@@ -3427,7 +3319,7 @@ async function excerpt(root, c, around, o) {
3427
3319
  const size = (await stat2(file)).size;
3428
3320
  if (size > CONTEXT_TOOL_BOUNDS.codeFileBytes)
3429
3321
  return `${c.what} ${c.verb ?? "cites"} ${c.repo}/${c.path}:${c.line}, a file too big to show (${size} bytes).`;
3430
- const lines = (await readFile3(file, "utf8")).split(/\r?\n/);
3322
+ const lines = decodeText(await readFile3(file)).split(/\r?\n/);
3431
3323
  if (c.line > lines.length)
3432
3324
  return `${c.what} ${c.verb ?? "cites"} ${c.repo}/${c.path}:${c.line}, but the file has ${lines.length} lines now: the cite is stale.`;
3433
3325
  const from = Math.max(1, c.line - around);
@@ -3556,17 +3448,20 @@ async function namesInCode(root, names, o = {}) {
3556
3448
  const names2 = open.filter((n) => !found.has(n) && DECLARABLE.test(n));
3557
3449
  if (!names2.length)
3558
3450
  return;
3559
- const buf = await readFile3(join4(dir, ...p.split("/"))).catch(() => void 0);
3451
+ const file = join4(dir, ...p.split("/"));
3452
+ if (!await readableCode(file, p))
3453
+ return;
3454
+ const buf = await readFile3(file).catch(() => void 0);
3560
3455
  if (!buf || buf.length > B.codeFileBytes)
3561
3456
  return;
3562
- if (buf.subarray(0, 8e3).includes(0))
3457
+ if (isBinaryBytes(buf))
3563
3458
  return;
3564
3459
  bytes += buf.length;
3565
3460
  if (bytes > B.grepBytes) {
3566
3461
  cut = true;
3567
3462
  return false;
3568
3463
  }
3569
- const text = buf.toString("utf8");
3464
+ const text = decodeText(buf);
3570
3465
  if (!names2.some((n) => text.includes(n)))
3571
3466
  return;
3572
3467
  const decls = await o.outline(p, text).catch(() => void 0);
@@ -3629,50 +3524,12 @@ function reposOf(root, input, o) {
3629
3524
  throw new ContextToolError("No repo is cloned in the workspace.");
3630
3525
  return out;
3631
3526
  }
3632
- function ignoreRules(text, base) {
3633
- const out = [];
3634
- for (let line of text.split(/\r?\n/)) {
3635
- line = line.replace(/(?<!\\)\s+$/, "");
3636
- if (!line || line.startsWith("#"))
3637
- continue;
3638
- let negate = false;
3639
- if (line.startsWith("!")) {
3640
- negate = true;
3641
- line = line.slice(1);
3642
- } else if (line.startsWith("\\!") || line.startsWith("\\#"))
3643
- line = line.slice(1);
3644
- const dirOnly = line.endsWith("/");
3645
- if (dirOnly)
3646
- line = line.slice(0, -1);
3647
- if (!line)
3648
- continue;
3649
- const anchored = line.includes("/");
3650
- try {
3651
- out.push({ base, re: globMatcher(line.replace(/^\//, ""), !anchored), negate, dirOnly });
3652
- } catch {
3653
- }
3654
- }
3655
- return out;
3656
- }
3657
- function ignored(rules, path, isDir) {
3658
- let out = false;
3659
- for (const r of rules) {
3660
- if (r.dirOnly && !isDir)
3661
- continue;
3662
- if (r.base && !path.startsWith(`${r.base}/`))
3663
- continue;
3664
- const rel2 = r.base ? path.slice(r.base.length + 1) : path;
3665
- if (r.re.test(rel2))
3666
- out = !r.negate;
3667
- }
3668
- return out;
3669
- }
3670
3527
  async function rulesFor(dir, path) {
3671
3528
  const parts = path.split("/").slice(0, -1);
3672
3529
  const rules = [];
3673
3530
  for (let i = 0; i <= parts.length; i++) {
3674
3531
  const base = parts.slice(0, i).join("/");
3675
- const text = await readFile3(join4(dir, ...parts.slice(0, i), ".gitignore"), "utf8").catch(() => void 0);
3532
+ const text = await readFile3(join4(dir, ...parts.slice(0, i), ".gitignore")).then(decodeText, () => void 0);
3676
3533
  if (text)
3677
3534
  rules.push(...ignoreRules(text, base));
3678
3535
  }
@@ -3682,50 +3539,18 @@ async function isIgnored(dir, path) {
3682
3539
  const rules = await rulesFor(dir, path);
3683
3540
  const parts = path.split("/");
3684
3541
  for (let i = 1; i < parts.length; i++)
3685
- if (ignored(rules, parts.slice(0, i).join("/"), true))
3542
+ if (ignoredBy(rules, parts.slice(0, i).join("/"), true))
3686
3543
  return true;
3687
- return ignored(rules, path, false);
3544
+ return ignoredBy(rules, path, false);
3688
3545
  }
3689
- async function walkClone(dir, max, visit) {
3690
- let files = 0;
3691
- let cut = false;
3692
- const go = async (rel2, inherited) => {
3693
- let entries;
3694
- try {
3695
- entries = await readdir2(rel2 ? join4(dir, ...rel2.split("/")) : dir, { withFileTypes: true });
3696
- } catch {
3697
- return true;
3698
- }
3699
- const here = entries.find((e) => e.name === ".gitignore" && e.isFile());
3700
- const rules = here ? [
3701
- ...inherited,
3702
- ...ignoreRules(await readFile3(join4(dir, ...rel2.split("/"), ".gitignore"), "utf8"), rel2)
3703
- ] : inherited;
3704
- for (const e of entries.sort((a, b) => a.name < b.name ? -1 : a.name > b.name ? 1 : 0)) {
3705
- if (e.isSymbolicLink() || e.name === ".git")
3706
- continue;
3707
- const p = rel2 ? `${rel2}/${e.name}` : e.name;
3708
- if (e.isDirectory()) {
3709
- if (ignored(rules, p, true))
3710
- continue;
3711
- if (!await go(p, rules))
3712
- return false;
3713
- } else if (e.isFile()) {
3714
- if (ignored(rules, p, false))
3715
- continue;
3716
- if (files >= max) {
3717
- cut = true;
3718
- return false;
3719
- }
3720
- files++;
3721
- if (await visit(p) === false)
3722
- return false;
3723
- }
3724
- }
3725
- return true;
3726
- };
3727
- await go("", []);
3728
- return { files, cut };
3546
+ function walkClone(dir, max, visit) {
3547
+ return walkRepo(dir, visit, { max });
3548
+ }
3549
+ async function readableCode(file, path) {
3550
+ if (isBinaryPath(path))
3551
+ return false;
3552
+ const size = (await stat2(file).catch(() => void 0))?.size;
3553
+ return size !== void 0 && size <= CONTEXT_TOOL_BOUNDS.codeFileBytes;
3729
3554
  }
3730
3555
  var plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
3731
3556
  async function runCodeTool(root, name, input, o) {
@@ -3801,10 +3626,13 @@ async function grepTool(root, input, o) {
3801
3626
  const walked = await walkClone(dir, B.walkFiles - read, async (p) => {
3802
3627
  if (only && !only.test(p))
3803
3628
  return;
3804
- const buf = await readFile3(join4(dir, ...p.split("/"))).catch(() => void 0);
3629
+ const file = join4(dir, ...p.split("/"));
3630
+ if (!await readableCode(file, p))
3631
+ return;
3632
+ const buf = await readFile3(file).catch(() => void 0);
3805
3633
  if (!buf || buf.length > B.codeFileBytes)
3806
3634
  return;
3807
- if (buf.subarray(0, 8e3).includes(0))
3635
+ if (isBinaryBytes(buf))
3808
3636
  return;
3809
3637
  bytes += buf.length;
3810
3638
  if (bytes > B.grepBytes) {
@@ -3812,7 +3640,7 @@ async function grepTool(root, input, o) {
3812
3640
  return false;
3813
3641
  }
3814
3642
  read++;
3815
- const lines = buf.toString("utf8").split(/\r?\n/).map((l) => l.slice(0, 2e3));
3643
+ const lines = decodeText(buf).split(/\r?\n/).map((l) => l.slice(0, 2e3));
3816
3644
  const found = matching(lines);
3817
3645
  if (!found) {
3818
3646
  cut = true;
@@ -3926,7 +3754,7 @@ async function outlineTool(root, input, o) {
3926
3754
  const size = (await stat2(file)).size;
3927
3755
  if (size > CONTEXT_TOOL_BOUNDS.codeFileBytes)
3928
3756
  throw new ContextToolError(`${path} is too big to outline (${size} bytes).`);
3929
- const text = await readFile3(file, "utf8");
3757
+ const text = decodeText(await readFile3(file));
3930
3758
  const head = `Outline of ${repo}:${rel2}`;
3931
3759
  let how;
3932
3760
  let lines;
@@ -0,0 +1,106 @@
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
+ readUserState,
8
+ writeUserState
9
+ } from "./chunk-KVVNAUIG.js";
10
+ import {
11
+ loadOrgPack,
12
+ orgPackDirOf
13
+ } from "./chunk-FPBUTZI5.js";
14
+
15
+ // packages/cli/dist/model-address.js
16
+ import { AsyncLocalStorage } from "node:async_hooks";
17
+ var ADDRESS = /url|endpoint|host|address/i;
18
+ function whereKeyGoes(m) {
19
+ const s = m?.settings ?? {};
20
+ const picked = Object.keys(s).filter((k) => k === "keyEnv" || k === "caFile" || ADDRESS.test(k)).sort().map((k) => [k, s[k]]);
21
+ return JSON.stringify([m?.type ?? null, picked]);
22
+ }
23
+ function addressWords(m) {
24
+ const s = m?.settings ?? {};
25
+ const at = Object.keys(s).filter((k) => k === "caFile" || ADDRESS.test(k)).map((k) => `${k} ${String(s[k])}`);
26
+ return `${String(m?.type ?? "no provider")}${at.length ? ` (${at.join(", ")})` : " at its own address"}`;
27
+ }
28
+ var OWN_ADDRESS = /* @__PURE__ */ new Set(["anthropic", "bedrock"]);
29
+ function atProvidersOwnAddress(m) {
30
+ if (typeof m?.type !== "string" || !OWN_ADDRESS.has(m.type))
31
+ return false;
32
+ return !Object.keys(m.settings ?? {}).some((k) => k === "caFile" || ADDRESS.test(k));
33
+ }
34
+ var FILE = "model-address.json";
35
+ async function confirmedAddress(root, env = process.env) {
36
+ const r = await readUserState(root, FILE, env);
37
+ return typeof r?.address === "string" ? r.address : void 0;
38
+ }
39
+ async function recordConfirmedAddress(root, m, env = process.env) {
40
+ await writeUserState(root, FILE, { address: whereKeyGoes(m), at: (/* @__PURE__ */ new Date()).toISOString() }, env);
41
+ }
42
+ async function addressRefusal(root, m, env = process.env) {
43
+ if (!m || m.type === void 0 || m.type === "mock")
44
+ return void 0;
45
+ const confirmed = await confirmedAddress(root, env);
46
+ const ok = confirmed !== void 0 ? confirmed === whereKeyGoes(m) : atProvidersOwnAddress(m);
47
+ if (ok)
48
+ return void 0;
49
+ return `runtime.yaml sends the model's key to ${addressWords(m)}, which you haven't confirmed${confirmed !== void 0 ? " (it changed since you last did)" : ""}, so nothing was sent. Open AI settings in the Atticus app and press Test: it asks you to confirm where the key goes. Or run the step yourself in a terminal (ADR 0186).`;
50
+ }
51
+ var fromApp = new AsyncLocalStorage();
52
+ var serving = 0;
53
+ var asTheApp = (f) => fromApp.run(true, f);
54
+ function servingTheApp(on) {
55
+ serving = Math.max(0, serving + (on ? 1 : -1));
56
+ }
57
+ function whoStarts(env = process.env, tty = process.stdin.isTTY === true) {
58
+ if (fromApp.getStore() || serving > 0)
59
+ return "app";
60
+ if (env.ATTICUS_ACP_SESSION)
61
+ return "session";
62
+ return tty ? "person" : "unattended";
63
+ }
64
+ async function refusalError(message) {
65
+ const { RuntimeConfigError } = await import("./chunk-BFMTGNAQ.js");
66
+ const e = new RuntimeConfigError(message);
67
+ return Object.assign(e, { modelAddress: true });
68
+ }
69
+ async function guardModelAddress(o, env = process.env, tty = process.stdin.isTTY === true) {
70
+ const who = whoStarts(env, tty);
71
+ if (who === "unattended")
72
+ return;
73
+ const m = { type: o.type, settings: o.settings };
74
+ if (who === "person") {
75
+ if (await confirmedAddress(o.root) !== whereKeyGoes(m))
76
+ await recordConfirmedAddress(o.root, m).catch(() => void 0);
77
+ return;
78
+ }
79
+ const no = await addressRefusal(o.root, m);
80
+ if (no)
81
+ throw await refusalError(no);
82
+ }
83
+ async function requireConfirmedModel(root, mode, env = process.env) {
84
+ const op = await loadOrgPack(orgPackDirOf(root));
85
+ const effective = mode ?? env.ATTICUS_RUNTIME ?? op.runtime.modes.default;
86
+ if (effective !== "model")
87
+ return;
88
+ const no = await addressRefusal(root, op.runtime.adapters.model, env);
89
+ if (!no)
90
+ return;
91
+ const { HttpError } = await import("./chunk-4R3TO4VL.js");
92
+ throw new HttpError(403, "Confirm where the model's key goes", no, { confirm: "ai-test" });
93
+ }
94
+
95
+ export {
96
+ whereKeyGoes,
97
+ atProvidersOwnAddress,
98
+ confirmedAddress,
99
+ recordConfirmedAddress,
100
+ addressRefusal,
101
+ asTheApp,
102
+ servingTheApp,
103
+ whoStarts,
104
+ guardModelAddress,
105
+ requireConfirmedModel
106
+ };
@@ -5,14 +5,14 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  repoFor
8
- } from "./chunk-TGVVUKTG.js";
8
+ } from "./chunk-XOMEQVLK.js";
9
9
  import {
10
10
  draftRepoType,
11
11
  matchRepoType
12
- } from "./chunk-4SLBCEPD.js";
12
+ } from "./chunk-IKAW2KJU.js";
13
13
  import {
14
14
  fsRepo
15
- } from "./chunk-7AB6OWTV.js";
15
+ } from "./chunk-PQQKZPBU.js";
16
16
  import {
17
17
  CONVENTIONS_SCHEMA_VERSION,
18
18
  ChecklistPack,
@@ -29,10 +29,12 @@ import {
29
29
  noteRuleDrafts,
30
30
  notesFor,
31
31
  orgPackDirOf,
32
- require_dist,
33
32
  termAnswerNote,
34
33
  termOfQuestion
35
- } from "./chunk-PAINMSID.js";
34
+ } from "./chunk-FPBUTZI5.js";
35
+ import {
36
+ require_dist
37
+ } from "./chunk-BQGDB6ZL.js";
36
38
  import {
37
39
  __toESM
38
40
  } from "./chunk-TV45EUGM.js";
@@ -22,7 +22,7 @@ import {
22
22
  roundsUsed,
23
23
  runCritic,
24
24
  waitingLenses
25
- } from "./chunk-K332XW7K.js";
25
+ } from "./chunk-D6BVLTDV.js";
26
26
  import {
27
27
  changeFolder,
28
28
  changeStore,
@@ -30,21 +30,23 @@ import {
30
30
  phaseStage,
31
31
  stageCommand,
32
32
  statePhase
33
- } from "./chunk-HSZMPH5T.js";
33
+ } from "./chunk-WZYM5M4U.js";
34
34
  import {
35
35
  AiOffError,
36
36
  HandoffRuntime,
37
37
  RuntimeConfigError,
38
38
  runtimeForCli
39
- } from "./chunk-QHJJMZLX.js";
39
+ } from "./chunk-3424TLIJ.js";
40
40
  import {
41
41
  CriticQuestion,
42
42
  LEGACY_LENSES,
43
43
  Lens,
44
- require_dist,
45
44
  runsDirOf,
46
45
  runsRelOf
47
- } from "./chunk-PAINMSID.js";
46
+ } from "./chunk-FPBUTZI5.js";
47
+ import {
48
+ require_dist
49
+ } from "./chunk-BQGDB6ZL.js";
48
50
  import {
49
51
  __toESM
50
52
  } from "./chunk-TV45EUGM.js";
@@ -108,7 +110,7 @@ function statusLine(s, change = "<change>") {
108
110
  return owner;
109
111
  if (s.humanDecides)
110
112
  return `The ${s.gate} gate is closed (${counts}) and ${roundsUsed(s)}: a person decides now. Once a person acts on round ${s.round}'s findings, ${checkRoundRule(s.round)}.`;
111
- return `The ${s.gate} gate is closed: ${counts}. Act on each with atticus finding <id> <action>.`;
113
+ return `The ${s.gate} gate is closed: ${counts}. Act on each with atticus finding ${change} <id> <action>.`;
112
114
  }
113
115
  async function runtimeOf(root, mode, deps) {
114
116
  if (deps.runtime)
@@ -229,7 +231,7 @@ async function critic(root, changeId, o, io, deps = {}) {
229
231
  io.out(`${l.lens} lens ${l.state}: ${l.reason ?? ""}`.trimEnd());
230
232
  if (r.discarded.length)
231
233
  io.out(`Discarded ${r.discarded.length} AI finding${r.discarded.length > 1 ? "s" : ""} without valid evidence.`);
232
- io.out(statusLine(s));
234
+ io.out(statusLine(s, r.change));
233
235
  return s.mayProceed ? 0 : 1;
234
236
  }
235
237
  function printCompleted(c, io) {
@@ -242,7 +244,7 @@ function printCompleted(c, io) {
242
244
  if (c.waiting.length)
243
245
  io.out(`${plural(c.waiting.length, "AI lens", "AI lenses")} ${c.waiting.length === 1 ? "is" : "are"} still with your assistant: ${c.waiting.map((w) => `${w.lens} (atticus handoff done ${w.runId})`).join(", ")}.`);
244
246
  else
245
- io.out(statusLine(c.status));
247
+ io.out(statusLine(c.status, c.change));
246
248
  return c.waiting.length === 0;
247
249
  }
248
250
  async function completeCriticLens(root, run, io, o = {}) {
@@ -279,7 +281,7 @@ async function completeCriticBatch(root, batch, result, io, o = {}) {
279
281
  if (last.waiting.length)
280
282
  io.out(`${plural(last.waiting.length, "AI lens", "AI lenses")} ${last.waiting.length === 1 ? "is" : "are"} still with your assistant: ${last.waiting.map((w) => w.lens).join(", ")}.`);
281
283
  else
282
- io.out(statusLine(last.status));
284
+ io.out(statusLine(last.status, last.change));
283
285
  }
284
286
  return batch.state === "validated" && read.every((c) => c.lens.state === "ran") ? 0 : 1;
285
287
  }
@@ -315,7 +317,7 @@ async function resumeLenses(root, changeId, o, io, deps) {
315
317
  for (const gate of gates) {
316
318
  const s = await gateStatus(root, changeId, gate);
317
319
  if (!statusPrinted && (any || s.round !== void 0))
318
- io.out(statusLine(s));
320
+ io.out(statusLine(s, changeId));
319
321
  mayProceed = s.mayProceed && s.round !== void 0;
320
322
  }
321
323
  return mayProceed ? 0 : 1;
@@ -372,7 +374,7 @@ async function findings(root, changeId, o, io) {
372
374
  f.finding.summary
373
375
  ])))
374
376
  io.out(` ${line}`);
375
- io.out(statusLine(s));
377
+ io.out(statusLine(s, changeId));
376
378
  }
377
379
  return 0;
378
380
  }
@@ -401,7 +403,7 @@ async function findingAction(root, changeId, findingId, action, o, io, deps = {}
401
403
  });
402
404
  io.out(r.message);
403
405
  if (r.finding.state !== "open") {
404
- const { retireChangeEscalations } = await import("./chunk-NTAVOWYD.js");
406
+ const { retireChangeEscalations } = await import("./chunk-APDN6UOR.js");
405
407
  const at = deps.now ?? (/* @__PURE__ */ new Date()).toISOString().replace(/\.\d{3}Z$/, "Z");
406
408
  const stages = await retireChangeEscalations(root, changeId, at).catch(() => []);
407
409
  if (stages.length)