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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/dist/bin.js +3 -3
  2. package/dist/{chunk-TJH2EUAZ.js → chunk-23XVSEV5.js} +20 -18
  3. package/dist/{chunk-BXBCMGIQ.js → chunk-24OXGB3P.js} +1 -1
  4. package/dist/{chunk-DCWN3HFV.js → chunk-24XLDU72.js} +4 -3
  5. package/dist/{chunk-Q46QDDMF.js → chunk-2F4CYZKJ.js} +14 -9
  6. package/dist/{chunk-75ASLHBT.js → chunk-2GF7OLF3.js} +17 -15
  7. package/dist/chunk-2IIMFOPM.js +41 -0
  8. package/dist/{chunk-JRVNXLZP.js → chunk-2LGRMVCA.js} +14 -12
  9. package/dist/{chunk-62DLJSLV.js → chunk-2MMCFP5C.js} +10 -8
  10. package/dist/{chunk-UF4UHCIG.js → chunk-2Q56PQPS.js} +6 -4
  11. package/dist/{chunk-5TDRBOAV.js → chunk-2Q5EDGEO.js} +7 -5
  12. package/dist/{chunk-NYOABJNK.js → chunk-2RLKFUUL.js} +26 -24
  13. package/dist/chunk-2SKB4O2E.js +59 -0
  14. package/dist/{chunk-GCS3FZOB.js → chunk-34S2WGOB.js} +13 -4
  15. package/dist/{chunk-7AB6OWTV.js → chunk-3NFFJL5D.js} +31 -25
  16. package/dist/{chunk-GC2VK3JT.js → chunk-3NWDLGG6.js} +28 -25
  17. package/dist/{chunk-FLVZFTLQ.js → chunk-3RM4UK6W.js} +20 -18
  18. package/dist/{chunk-CNU5Q2D5.js → chunk-42SIDKEU.js} +37 -29
  19. package/dist/{chunk-K6JB6XTX.js → chunk-4EURQWQD.js} +20 -15
  20. package/dist/{chunk-OMPENNWY.js → chunk-4U276ICE.js} +1 -1
  21. package/dist/{chunk-JAABT3DA.js → chunk-53T4O55J.js} +4 -3
  22. package/dist/{chunk-YTTNTQOX.js → chunk-57TDNMI3.js} +17 -15
  23. package/dist/chunk-5BD2KYLE.js +57 -0
  24. package/dist/{chunk-7EFILTCI.js → chunk-5F7GFN2F.js} +28 -0
  25. package/dist/{chunk-KYZMRSPS.js → chunk-5NMKONLP.js} +5 -3
  26. package/dist/{chunk-5CMPVC3N.js → chunk-5SJZW52K.js} +25 -23
  27. package/dist/{chunk-YAH5IQAL.js → chunk-63YRMR6J.js} +6 -5
  28. package/dist/{chunk-GUYL7RMK.js → chunk-66PPNOON.js} +27 -25
  29. package/dist/chunk-6H3Z5JHH.js +64 -0
  30. package/dist/{chunk-Y6K3CJBU.js → chunk-6MUGR4LS.js} +75 -27
  31. package/dist/{chunk-DDJPM5YX.js → chunk-6OJQOPUN.js} +5 -3
  32. package/dist/{chunk-2V2ZPQQU.js → chunk-6PPOWY5E.js} +9 -7
  33. package/dist/{chunk-YO2PKTXT.js → chunk-6ZGLAACW.js} +5 -3
  34. package/dist/{chunk-LIJJCBQI.js → chunk-6ZJ5A7AF.js} +15 -16
  35. package/dist/{chunk-64AADMTW.js → chunk-745DAZ4L.js} +50 -12
  36. package/dist/{chunk-VYOCPTUB.js → chunk-7ASNL4Q4.js} +17 -15
  37. package/dist/{chunk-XEQCQO66.js → chunk-7BR7IPOH.js} +10 -8
  38. package/dist/{chunk-X2CUXTWU.js → chunk-7DOR27HL.js} +6 -6
  39. package/dist/{chunk-G6IQYM25.js → chunk-7FTTA3HD.js} +8 -6
  40. package/dist/{chunk-FAJDKNSD.js → chunk-7GJS6DNX.js} +8 -3
  41. package/dist/{chunk-4KNOJC6J.js → chunk-7IGKHZ4Z.js} +55 -13
  42. package/dist/{chunk-3WON4G3M.js → chunk-7IOWA5D5.js} +11 -6
  43. package/dist/{chunk-PNQLCRSS.js → chunk-7JITZFJC.js} +7 -5
  44. package/dist/{chunk-2D7PWSOK.js → chunk-7MJSQTL5.js} +22 -20
  45. package/dist/{chunk-AE4P57KK.js → chunk-7UOMVMFG.js} +17 -15
  46. package/dist/{chunk-GK4PYVEC.js → chunk-AFWUDXEM.js} +10 -8
  47. package/dist/chunk-AFZ3QA6W.js +47 -0
  48. package/dist/{chunk-7FUIVIBG.js → chunk-AJQ72EBM.js} +13 -8
  49. package/dist/{chunk-QOOEYDNJ.js → chunk-AJYXNTNZ.js} +6 -6
  50. package/dist/chunk-AVTBS4OW.js +49 -0
  51. package/dist/{chunk-WFU77T3A.js → chunk-BDKC6H5P.js} +5 -5
  52. package/dist/{chunk-3AQ2R5NL.js → chunk-BEVTIBRH.js} +9 -7
  53. package/dist/{chunk-J5AAZ6OJ.js → chunk-BHT7QK4G.js} +5 -4
  54. package/dist/{chunk-UFE36WJH.js → chunk-BIGDQDHD.js} +6 -4
  55. package/dist/{chunk-WNTIOBOG.js → chunk-BO4KX37X.js} +20 -18
  56. package/dist/{chunk-455SYIIE.js → chunk-BPK5P77O.js} +5 -3
  57. package/dist/{chunk-OZJ3JLYI.js → chunk-BQ4SQQC6.js} +10 -9
  58. package/dist/chunk-BQGDB6ZL.js +7342 -0
  59. package/dist/{chunk-EZIN5E5B.js → chunk-BTGPE6CR.js} +11 -9
  60. package/dist/{chunk-265LWMOA.js → chunk-BTY3HZBO.js} +18 -16
  61. package/dist/{chunk-TW3KOSQK.js → chunk-BXYMYEJ4.js} +7 -6
  62. package/dist/{chunk-HK3VOHIE.js → chunk-C3RY6KU6.js} +119 -18
  63. package/dist/chunk-C4R4JLHE.js +40 -0
  64. package/dist/{chunk-Z3QFH7YG.js → chunk-CADWLE2T.js} +5 -4
  65. package/dist/{chunk-J2O4LFVI.js → chunk-CBGGOQWU.js} +6 -4
  66. package/dist/chunk-CMDXGQTS.js +47 -0
  67. package/dist/{chunk-TWQRPM76.js → chunk-CQDGOPGH.js} +23 -16
  68. package/dist/{chunk-5PV7S2ZP.js → chunk-CX4RZ2KS.js} +4 -3
  69. package/dist/{chunk-JYMIB5XY.js → chunk-CXJ6FUKN.js} +164 -44
  70. package/dist/{chunk-D57MFJPP.js → chunk-D73UEXYW.js} +3 -3
  71. package/dist/{chunk-UYLBRRFK.js → chunk-DCZWQLYT.js} +125 -26
  72. package/dist/chunk-DLOBCJL6.js +48 -0
  73. package/dist/{chunk-IFHDV6KQ.js → chunk-DOBQKHIF.js} +23 -23
  74. package/dist/{chunk-QJCJOMW3.js → chunk-E3ISYXO3.js} +19 -21
  75. package/dist/{chunk-VAMHOHUU.js → chunk-E6ZIEVOI.js} +16 -13
  76. package/dist/{chunk-EFCQSMXB.js → chunk-EBL2R3YG.js} +10 -4
  77. package/dist/{chunk-HGHRSF3E.js → chunk-EGQRREQH.js} +25 -17
  78. package/dist/{chunk-3J5I7ZOU.js → chunk-EHA7RMZ3.js} +4 -4
  79. package/dist/{chunk-7CZHUZBL.js → chunk-EIPTLPFC.js} +38 -27
  80. package/dist/{chunk-UZACEG2C.js → chunk-EMRIQUND.js} +17 -15
  81. package/dist/{chunk-RALY3E5U.js → chunk-EPCJQQWD.js} +6 -4
  82. package/dist/{chunk-VUVGX5L2.js → chunk-F3P7N7SF.js} +1 -1
  83. package/dist/{chunk-RA33EYS4.js → chunk-FFLNS6VP.js} +19 -17
  84. package/dist/{chunk-OPQZISG3.js → chunk-FFTRTL6R.js} +5 -4
  85. package/dist/{chunk-DUPZPDCJ.js → chunk-FPJPLKDW.js} +18 -14
  86. package/dist/{chunk-2HH3UCZM.js → chunk-FSMSFDLD.js} +5 -4
  87. package/dist/{chunk-AHW3RY3X.js → chunk-FUJM6RTF.js} +8 -7
  88. package/dist/{chunk-2UCRFXFZ.js → chunk-FZOJFH7Q.js} +13 -11
  89. package/dist/{chunk-BVWWPBKD.js → chunk-G6X77UJZ.js} +20 -18
  90. package/dist/{chunk-BPPU3PW7.js → chunk-GCWRWSU7.js} +10 -4
  91. package/dist/chunk-GIW4ZVDB.js +39 -0
  92. package/dist/{chunk-FY3QIRTL.js → chunk-GUX3PTYM.js} +3 -3
  93. package/dist/{chunk-BA2HUMDN.js → chunk-GZY6RUZ6.js} +2 -2
  94. package/dist/chunk-H4VO6WG3.js +10 -0
  95. package/dist/{chunk-UEVZZZU2.js → chunk-H5HBGNXU.js} +5 -4
  96. package/dist/{chunk-GS76RXQE.js → chunk-H7KM7LZE.js} +15 -12
  97. package/dist/{chunk-I2A3Z5AK.js → chunk-HNM2YQT2.js} +4 -4
  98. package/dist/{chunk-3UTYPHN3.js → chunk-HYU5VLGA.js} +1 -1
  99. package/dist/{chunk-HSZMPH5T.js → chunk-IDKCWSM5.js} +225 -50
  100. package/dist/{chunk-BXZ4PKIT.js → chunk-IFKEI4SA.js} +15 -11
  101. package/dist/{chunk-XG4WJHLQ.js → chunk-IGOE6KPG.js} +49 -20
  102. package/dist/{chunk-GNWAOVFQ.js → chunk-IH2XURVQ.js} +5 -5
  103. package/dist/{chunk-YIGBJNH4.js → chunk-INQHESFB.js} +5 -4
  104. package/dist/chunk-IP74LCOQ.js +57 -0
  105. package/dist/chunk-IPHHDDC6.js +45 -0
  106. package/dist/{chunk-5WERBKLE.js → chunk-ISUAAMGS.js} +42 -221
  107. package/dist/{chunk-7FHNFCHK.js → chunk-IUPG3UKI.js} +154 -368
  108. package/dist/{chunk-HWD4JPU7.js → chunk-IVBOQAGB.js} +4 -2
  109. package/dist/{chunk-4SLBCEPD.js → chunk-J2JAKCIW.js} +88 -57
  110. package/dist/{chunk-G5YJBNDZ.js → chunk-J3IOLXWM.js} +8 -6
  111. package/dist/{chunk-FQ6WH6PB.js → chunk-JA5FI3QV.js} +6 -4
  112. package/dist/chunk-JAVI7JSP.js +49 -0
  113. package/dist/{chunk-ZFQMMU5Y.js → chunk-JB5LINEM.js} +6 -2
  114. package/dist/{chunk-LQH4P45K.js → chunk-JENSEMXF.js} +1 -1
  115. package/dist/{chunk-M6D2U3YM.js → chunk-JJF6HALY.js} +4 -3
  116. package/dist/chunk-JLUCKAEL.js +38 -0
  117. package/dist/{chunk-M4H2UG4R.js → chunk-JRBFANFE.js} +19 -16
  118. package/dist/{chunk-YZDZOEV4.js → chunk-KDNTAPLX.js} +3 -3
  119. package/dist/{chunk-IFFRGC3N.js → chunk-KFAVQZSX.js} +14 -12
  120. package/dist/chunk-KJXD4PNL.js +50 -0
  121. package/dist/chunk-KN5BXMWN.js +44 -0
  122. package/dist/{chunk-HXXP2NTE.js → chunk-KQGURXFU.js} +9 -7
  123. package/dist/{chunk-PQH56YF6.js → chunk-KXITGYLF.js} +6 -4
  124. package/dist/{chunk-MMZUN7ZO.js → chunk-L27SV425.js} +22 -20
  125. package/dist/{chunk-XQ3YZ4QW.js → chunk-LDLL7LB3.js} +24 -22
  126. package/dist/{chunk-6DQYZU2W.js → chunk-LFGTYX5U.js} +15 -15
  127. package/dist/{chunk-4D62IZII.js → chunk-LGBMTVNT.js} +7 -5
  128. package/dist/{chunk-YKTE2RU3.js → chunk-LGFL54FP.js} +3 -2
  129. package/dist/{chunk-GDZB57IU.js → chunk-LJXMYKZJ.js} +7 -5
  130. package/dist/{chunk-YJ3TBOTK.js → chunk-LKOR5UET.js} +29 -26
  131. package/dist/{chunk-WIWTJMMR.js → chunk-LNBQOP7D.js} +23 -21
  132. package/dist/{chunk-TGVVUKTG.js → chunk-LO6P2VYG.js} +2 -2
  133. package/dist/{chunk-HE3HRDNZ.js → chunk-LQJPN536.js} +2 -2
  134. package/dist/{chunk-PRW3HXM3.js → chunk-LYBNHMVZ.js} +29 -5
  135. package/dist/{chunk-75ZOZFGH.js → chunk-LZ7NUC62.js} +20 -18
  136. package/dist/chunk-M32BLWDH.js +37 -0
  137. package/dist/{chunk-QKMRFNMA.js → chunk-M3NANSDZ.js} +17 -15
  138. package/dist/chunk-MFHL5URL.js +31 -0
  139. package/dist/{chunk-TYD6I4CZ.js → chunk-MFR5OPBD.js} +6 -6
  140. package/dist/{chunk-LIRVU3HW.js → chunk-MG4ZL5RW.js} +32 -20
  141. package/dist/{chunk-ICHDSWEY.js → chunk-MO6P2JZH.js} +10 -8
  142. package/dist/{chunk-3LZ6P5EP.js → chunk-MUWDB4R4.js} +1 -1
  143. package/dist/{chunk-E57AOFYN.js → chunk-MZCGSXVR.js} +15 -13
  144. package/dist/{chunk-77O633L5.js → chunk-N3XIYPU3.js} +14 -12
  145. package/dist/{chunk-CG6CULP6.js → chunk-NDCF4R6S.js} +7 -5
  146. package/dist/{chunk-JS6WMC3J.js → chunk-NR2UJWOC.js} +10 -8
  147. package/dist/chunk-NXJ5URP6.js +51 -0
  148. package/dist/{chunk-NTAVOWYD.js → chunk-NY2XSR5K.js} +20 -18
  149. package/dist/{chunk-PUEWDYGP.js → chunk-O45HFTFS.js} +3 -2
  150. package/dist/{chunk-URIKUID7.js → chunk-O4GXGGBX.js} +14 -12
  151. package/dist/{chunk-C7CEK3KW.js → chunk-O5PXQR67.js} +7 -5
  152. package/dist/{chunk-E2VXBSIR.js → chunk-O66DM6DJ.js} +6 -4
  153. package/dist/{chunk-P2VBXX7N.js → chunk-O7FDLW7L.js} +11 -9
  154. package/dist/{chunk-COYN3UAN.js → chunk-O7XLYEFA.js} +59 -22
  155. package/dist/{chunk-5QUOPNLN.js → chunk-OHNCWBKF.js} +4 -4
  156. package/dist/{chunk-AZDITBCT.js → chunk-OHVTTOPS.js} +3 -3
  157. package/dist/chunk-OMI6FPPN.js +43 -0
  158. package/dist/chunk-ONUPY3H6.js +53 -0
  159. package/dist/chunk-OTLDSZDV.js +69 -0
  160. package/dist/{chunk-L4CESDPB.js → chunk-OUBGGKDU.js} +1 -1
  161. package/dist/{chunk-4FOAYLI4.js → chunk-OWNCM4ZN.js} +9 -7
  162. package/dist/{chunk-4B6BT75O.js → chunk-P2V7QW4D.js} +81 -24
  163. package/dist/{chunk-QHJJMZLX.js → chunk-P32RUW3B.js} +167 -92
  164. package/dist/{chunk-F6H2RJ3N.js → chunk-PAQ2AS5E.js} +1 -1
  165. package/dist/{chunk-ZLS6PU2O.js → chunk-PBPBMP2B.js} +4 -3
  166. package/dist/{chunk-ZOSD4FXV.js → chunk-PJSJPMJI.js} +3 -3
  167. package/dist/{chunk-XOL3GFW2.js → chunk-PKBHS4AA.js} +68 -31
  168. package/dist/{chunk-ZZFHLRQW.js → chunk-PMUAJGLI.js} +18 -16
  169. package/dist/{chunk-SH27FYPF.js → chunk-PPD7HTDP.js} +20 -18
  170. package/dist/chunk-PSOFBQWB.js +42 -0
  171. package/dist/{chunk-PAINMSID.js → chunk-Q2TECDIT.js} +987 -7619
  172. package/dist/{chunk-LU4MQVAL.js → chunk-Q4K5WB2W.js} +11 -10
  173. package/dist/{chunk-ECLXZWAG.js → chunk-Q6DFNVRJ.js} +14 -12
  174. package/dist/chunk-QA4O2GGC.js +265 -0
  175. package/dist/{chunk-4WXRPQDE.js → chunk-QAXW2N3B.js} +182 -33
  176. package/dist/{chunk-WCEF7H6L.js → chunk-QFWA2DPH.js} +8 -5
  177. package/dist/{chunk-CPK7QSBG.js → chunk-QKUJMING.js} +8 -6
  178. package/dist/{chunk-LEBR5NHW.js → chunk-R44CYFPV.js} +18 -15
  179. package/dist/{chunk-BEPCKDCP.js → chunk-R7NYHMUU.js} +153 -84
  180. package/dist/{chunk-G6X4YL4D.js → chunk-REWWDVQB.js} +5 -4
  181. package/dist/{chunk-LN77DXBM.js → chunk-RGERPOIV.js} +10 -10
  182. package/dist/{chunk-UDXWIPCB.js → chunk-RLDGWLQ7.js} +9 -7
  183. package/dist/chunk-RUGXBPWI.js +384 -0
  184. package/dist/{chunk-FYBF5MB2.js → chunk-RXPJMEOW.js} +13 -11
  185. package/dist/{chunk-K332XW7K.js → chunk-S4PMJU6H.js} +20 -9
  186. package/dist/{chunk-THN26IEF.js → chunk-S7FCV7S5.js} +4 -1
  187. package/dist/{chunk-OV57AHCG.js → chunk-SDKLKB6I.js} +26 -24
  188. package/dist/{chunk-O4IKAIZ2.js → chunk-SFSPGFCV.js} +28 -22
  189. package/dist/{chunk-TQ4TG57V.js → chunk-SFUP7TTO.js} +4 -4
  190. package/dist/{chunk-YBOVNMHC.js → chunk-SLXZOMA6.js} +29 -16
  191. package/dist/{chunk-LWDNKE4X.js → chunk-SQV37XO2.js} +6 -6
  192. package/dist/{chunk-67BP7HXL.js → chunk-SU74NDMQ.js} +19 -17
  193. package/dist/{chunk-JKIGL3XQ.js → chunk-SYV5LHML.js} +36 -33
  194. package/dist/chunk-T4YPZIQN.js +36 -0
  195. package/dist/{chunk-GX74YWR7.js → chunk-T6DQR5TV.js} +16 -14
  196. package/dist/{chunk-LNWEWYCM.js → chunk-THDMSZ3R.js} +345 -253
  197. package/dist/{chunk-NCB6656Z.js → chunk-TNR75OXT.js} +7 -7
  198. package/dist/{chunk-ODMBPDDV.js → chunk-TUULXQRW.js} +124 -2
  199. package/dist/{chunk-MD7KUEJ3.js → chunk-TYQBFTBR.js} +9 -7
  200. package/dist/chunk-U76OWS3Q.js +49 -0
  201. package/dist/{chunk-GSGIZ2OO.js → chunk-UCROWG2D.js} +27 -24
  202. package/dist/{chunk-PTQ3ZALZ.js → chunk-UF4AZOZB.js} +14 -12
  203. package/dist/{chunk-QE527XRY.js → chunk-UF4GLFBX.js} +26 -23
  204. package/dist/{chunk-YWAKDNMH.js → chunk-UGUP3ZM6.js} +70 -19
  205. package/dist/{chunk-3G6S7LAA.js → chunk-UNAGJYET.js} +14 -12
  206. package/dist/{chunk-EDZ45WIR.js → chunk-UOR2DTHH.js} +16 -14
  207. package/dist/{chunk-42EPP7OB.js → chunk-UPOY4YSQ.js} +14 -12
  208. package/dist/{chunk-API5TOUB.js → chunk-UPS2DGFC.js} +1 -1
  209. package/dist/{chunk-D2WSW4GU.js → chunk-UUU4CLJG.js} +4 -2
  210. package/dist/{chunk-ZKYRDV7A.js → chunk-UWMJKX5U.js} +14 -12
  211. package/dist/{chunk-HS4BGB4G.js → chunk-UWOJLHFT.js} +25 -23
  212. package/dist/{chunk-OKUB6RJA.js → chunk-VBTP56CE.js} +8 -6
  213. package/dist/{chunk-3SSTNB4E.js → chunk-VCTWPLAO.js} +34 -14
  214. package/dist/{chunk-YF5DZCPN.js → chunk-VNU26RCO.js} +37 -34
  215. package/dist/{chunk-AOCWFA7T.js → chunk-VTZMAJ3W.js} +8 -8
  216. package/dist/{chunk-ZQLRCA2V.js → chunk-VW62D6QE.js} +10 -8
  217. package/dist/{chunk-WAZEXEJH.js → chunk-VY72R2XZ.js} +45 -2
  218. package/dist/{chunk-WEOMJHPV.js → chunk-VZALIKIF.js} +18 -15
  219. package/dist/{chunk-TSM6T6GQ.js → chunk-W62H2XSO.js} +25 -23
  220. package/dist/{chunk-BC6KKZ67.js → chunk-W7VWI2YH.js} +9 -6
  221. package/dist/{chunk-LO3BLMVG.js → chunk-WERM6KPJ.js} +7 -4
  222. package/dist/{chunk-36RY7ZXM.js → chunk-WF7B67YE.js} +88 -26
  223. package/dist/{chunk-TQTRWENN.js → chunk-WG5U3F5V.js} +14 -12
  224. package/dist/{chunk-NRQ65LTQ.js → chunk-WJF2CS6M.js} +6 -5
  225. package/dist/{chunk-FVMPFCDS.js → chunk-WKUJ3KPV.js} +4 -4
  226. package/dist/{chunk-BA3U7ALS.js → chunk-WMTRHUI5.js} +26 -22
  227. package/dist/chunk-WNKPRSGI.js +36 -0
  228. package/dist/{chunk-GIFMBCTW.js → chunk-WXFLMQSR.js} +10 -8
  229. package/dist/{chunk-JYTIHTIK.js → chunk-X3WY6MN3.js} +4 -4
  230. package/dist/{chunk-S2RY3BOD.js → chunk-X4CXA2IL.js} +31 -21
  231. package/dist/{chunk-26Z7OGQW.js → chunk-X5F3Q5LV.js} +60 -30
  232. package/dist/{chunk-4CLK2RJO.js → chunk-XD75VZIH.js} +6 -4
  233. package/dist/{chunk-KDAHXQIE.js → chunk-XERYFDB5.js} +37 -34
  234. package/dist/{chunk-U3NBK4EU.js → chunk-XI2LCCYQ.js} +8 -8
  235. package/dist/{chunk-MZGRDONP.js → chunk-Y2EQNWKV.js} +55 -38
  236. package/dist/{chunk-A2G72UI4.js → chunk-YHCMZC2J.js} +7 -7
  237. package/dist/{chunk-4TKVU2I2.js → chunk-YYY3AZFE.js} +2 -2
  238. package/dist/{chunk-2HTEMYTB.js → chunk-Z5IA3WDR.js} +17 -15
  239. package/dist/{chunk-FRHD22WM.js → chunk-ZFFYNRIO.js} +25 -23
  240. package/dist/{chunk-6EXDI5GI.js → chunk-ZFL7NY4F.js} +43 -40
  241. package/dist/{chunk-4PYC2UGC.js → chunk-ZGULQAPZ.js} +7 -4
  242. package/dist/{chunk-4SKZDI62.js → chunk-ZIUFM5HT.js} +3 -1
  243. package/dist/{chunk-CNPY4NTZ.js → chunk-ZJFRMSJT.js} +15 -13
  244. package/dist/{chunk-Q26LDIUV.js → chunk-ZJXLNDH4.js} +18 -15
  245. package/dist/{chunk-LPV6T362.js → chunk-ZQ3ON2VQ.js} +8 -6
  246. package/dist/{chunk-ZX7235KR.js → chunk-ZQ7SKESZ.js} +44 -383
  247. package/dist/{chunk-7QPCGTPS.js → chunk-ZQXZ2SES.js} +24 -21
  248. package/dist/{chunk-4CYTJ5TZ.js → chunk-ZX57KSEQ.js} +4 -3
  249. package/dist/{chunk-37WE3LS2.js → chunk-ZZK56BLP.js} +5 -3
  250. package/dist/files.json +533 -509
  251. package/dist/packages/sdk/npm/index.js +448 -67
  252. package/dist/packages/ui/dist/assets/{elk-api-CowTnhEJ.js → elk-api-CIf-0gz5.js} +2 -2
  253. package/dist/packages/ui/dist/assets/index-CoK_Dl0D.js +47 -0
  254. package/dist/packages/ui/dist/index.html +2 -1
  255. package/package.json +4 -4
  256. package/dist/chunk-26WBY34Y.js +0 -37
  257. package/dist/chunk-3TD6S4TC.js +0 -49
  258. package/dist/chunk-5G7ILBUG.js +0 -66
  259. package/dist/chunk-6FNAKCET.js +0 -38
  260. package/dist/chunk-AM6FP6JW.js +0 -43
  261. package/dist/chunk-CFH3QH26.js +0 -29
  262. package/dist/chunk-CLD4RVTA.js +0 -45
  263. package/dist/chunk-D5KV5PSK.js +0 -45
  264. package/dist/chunk-D5MASS4I.js +0 -48
  265. package/dist/chunk-DN4A2Q2O.js +0 -57
  266. package/dist/chunk-FGAGWYZB.js +0 -47
  267. package/dist/chunk-JITJP64K.js +0 -34
  268. package/dist/chunk-JRXHON4E.js +0 -41
  269. package/dist/chunk-JU4QNJSR.js +0 -62
  270. package/dist/chunk-N3RUGTGV.js +0 -39
  271. package/dist/chunk-PKJAV25S.js +0 -43
  272. package/dist/chunk-PRTBPXYA.js +0 -50
  273. package/dist/chunk-PRZ7KMWL.js +0 -42
  274. package/dist/chunk-QSIDVFB7.js +0 -45
  275. package/dist/chunk-SB5GRUFM.js +0 -54
  276. package/dist/chunk-T74WQQGS.js +0 -40
  277. package/dist/chunk-X7EMBM5X.js +0 -34
  278. package/dist/chunk-Z6VLC5X4.js +0 -36
  279. package/dist/chunk-ZPDDEVQX.js +0 -47
  280. package/dist/packages/ui/dist/assets/index-z2wv0d5d.js +0 -47
@@ -3,6 +3,9 @@ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
3
  var require = __atticusCreateRequire(import.meta.url);
4
4
  var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ commandWords
8
+ } from "./chunk-QA4O2GGC.js";
6
9
  import {
7
10
  ANSWERED_BY,
8
11
  AgentDefinition,
@@ -16,6 +19,7 @@ import {
16
19
  copilotAcpOf,
17
20
  currentSignal,
18
21
  differentThings,
22
+ estimateTokens,
19
23
  identifierWords,
20
24
  judgmentKey,
21
25
  loadOrgPack,
@@ -23,21 +27,25 @@ import {
23
27
  namedBeyondAnswer,
24
28
  orgPackDirOf,
25
29
  quotedIn,
26
- require_dist,
27
30
  runsDirOf,
28
31
  runsRelOf,
29
32
  stateDirOf,
30
- stepModelsOf
31
- } from "./chunk-PAINMSID.js";
33
+ stepModelsOf,
34
+ tokenUnits
35
+ } from "./chunk-Q2TECDIT.js";
32
36
  import {
33
37
  writeFileAtomic
34
- } from "./chunk-ODMBPDDV.js";
38
+ } from "./chunk-TUULXQRW.js";
39
+ import {
40
+ require_dist
41
+ } from "./chunk-BQGDB6ZL.js";
35
42
  import {
36
43
  __toESM
37
44
  } from "./chunk-TV45EUGM.js";
38
45
 
39
46
  // packages/ai/dist/person-only.js
40
47
  var flag = (a, ...names) => a.some((x) => names.some((n) => x === n || x.startsWith(`${n}=`)));
48
+ var switchOn = (a, name) => a.some((x) => x === name || x.startsWith(`${name}=`) && /^(true)?$/i.test(x.slice(name.length + 1)));
41
49
  var RULES = [
42
50
  {
43
51
  test: (w, a) => w[0] === "change" && w[1] === "release-prs" && flag(a, "--approve"),
@@ -89,7 +97,7 @@ var RULES = [
89
97
  },
90
98
  { test: (_w, a) => flag(a, "--as"), why: "--as names a person; a session acts as no one" },
91
99
  {
92
- test: (w, a) => w[0] === "rules" && (w[1] === "activate" || w[1] === "off" || w[1] === "add" && !flag(a, "--draft")),
100
+ test: (w, a) => w[0] === "rules" && (w[1] === "activate" || w[1] === "off" || w[1] === "add" && !switchOn(a, "--draft")),
93
101
  why: "a person sets a reading rule active or off (a session drafts)"
94
102
  },
95
103
  {
@@ -124,13 +132,12 @@ var RULES = [
124
132
  why: "a person says who looks after the org pack"
125
133
  }
126
134
  ];
135
+ function withoutLegacy(argv) {
136
+ return argv[0] === "legacy" && argv[1] !== void 0 && !argv[1].startsWith("-") ? argv.slice(1) : argv;
137
+ }
127
138
  function personOnlyWhy(argv) {
128
- const words2 = [];
129
- for (const x of argv) {
130
- if (x.startsWith("-"))
131
- break;
132
- words2.push(x);
133
- }
139
+ argv = withoutLegacy(argv);
140
+ const words2 = commandWords(argv);
134
141
  return RULES.find((r) => r.test(words2, argv))?.why;
135
142
  }
136
143
  var isPersonsFactsFile = (name) => /\.audit\.yaml$|\.corrections\.jsonl$/i.test(windowsName(name));
@@ -956,9 +963,16 @@ var PromptTooLong = class extends Error {
956
963
 
957
964
  // packages/ai/dist/context.js
958
965
  var sha2562 = (s) => createHash2("sha256").update(s, "utf8").digest("hex");
959
- function estimateTokens(text) {
960
- return Math.ceil(text.length / 4);
961
- }
966
+ var RequiredSourceLeftOut = class extends Error {
967
+ step;
968
+ left;
969
+ constructor(step, left) {
970
+ super(`atticus ${step} can't go without ${left.map((l) => `${l.origin}: ${l.reason}`).join("; ")}.`);
971
+ this.step = step;
972
+ this.left = left;
973
+ this.name = "RequiredSourceLeftOut";
974
+ }
975
+ };
962
976
  function wrapData(source, text) {
963
977
  const safe = escapeDelimiters(text).text;
964
978
  return `<atticus-data id="${attr(source.id)}" kind="${attr(source.kind)}" origin="${attr(source.origin)}">
@@ -971,10 +985,10 @@ function buildContextPack(given) {
971
985
  const maxTokens = given.maxTokens ?? currentPromptLimit();
972
986
  const o = { ...given, budget: fitBudget(given.budget, maxTokens) };
973
987
  if (maxTokens !== void 0) {
974
- const required = new Set(o.required ?? []);
975
- const needed = o.sources.filter((s) => s.trusted || required.has(s.id)).reduce((n, s) => n + estimateTokens(s.trusted ? s.text : wrapData(s, s.text)), estimateTokens(DATA_RULE));
988
+ const required2 = new Set(o.required ?? []);
989
+ const needed = o.sources.filter((s) => s.trusted || required2.has(s.id)).reduce((n, s) => n + estimateTokens(s.trusted ? s.text : wrapData(s, s.text)), estimateTokens(DATA_RULE));
976
990
  if (needed > o.budget)
977
- throw new PromptTooLong(o.step ?? o.agent, needed, o.budget, maxTokens, o.sources.filter((s) => !s.trusted && required.has(s.id)).map((s) => s.id), o.smaller);
991
+ throw new PromptTooLong(o.step ?? o.agent, needed, o.budget, maxTokens, o.sources.filter((s) => !s.trusted && required2.has(s.id)).map((s) => s.id), o.smaller);
978
992
  }
979
993
  const maxLevel = o.levels.indexOf(o.maxClassification);
980
994
  if (maxLevel === -1)
@@ -1030,6 +1044,14 @@ function buildContextPack(given) {
1030
1044
  }
1031
1045
  if (total > o.budget)
1032
1046
  throw new Error(`instructions alone (${total} tokens) exceed the ${o.budget}-token budget`);
1047
+ const required = new Set(o.required ?? []);
1048
+ const left = dropped.filter((d) => required.has(d.id));
1049
+ if (left.length)
1050
+ throw new RequiredSourceLeftOut(o.step ?? o.agent, left.map((d) => ({
1051
+ id: d.id,
1052
+ origin: o.sources.find((s) => s.id === d.id)?.origin ?? d.id,
1053
+ reason: d.reason
1054
+ })));
1033
1055
  const prompt = parts.join("\n\n") + "\n";
1034
1056
  return {
1035
1057
  prompt,
@@ -1048,6 +1070,11 @@ function buildContextPack(given) {
1048
1070
  };
1049
1071
  }
1050
1072
 
1073
+ // packages/ai/dist/runtime.js
1074
+ import { randomBytes } from "node:crypto";
1075
+ import { mkdir } from "node:fs/promises";
1076
+ import { join } from "node:path";
1077
+
1051
1078
  // packages/ai/dist/step-class.js
1052
1079
  var STEP_CLASS_BY_AGENT = {
1053
1080
  // read: the repo read into facts (atticus map, and its fix round for the facts rejected).
@@ -1212,9 +1239,22 @@ function checkAllowed(kind, agent) {
1212
1239
  }
1213
1240
  function makeRunId(now, seq) {
1214
1241
  const stamp = now.toISOString().replace(/[-:TZ.]/g, "").slice(0, 14);
1215
- const tail2 = seq !== void 0 ? String(seq).padStart(4, "0") : Math.random().toString(36).slice(2, 8);
1242
+ const tail2 = seq !== void 0 ? String(seq).padStart(4, "0") : randomBytes(3).toString("hex");
1216
1243
  return `run-${stamp}-${tail2}`;
1217
1244
  }
1245
+ async function claimRunDir(dir, next) {
1246
+ await mkdir(dir, { recursive: true });
1247
+ for (let i = 0; ; i++) {
1248
+ const runId = next();
1249
+ try {
1250
+ await mkdir(join(dir, runId));
1251
+ return runId;
1252
+ } catch (e) {
1253
+ if (e.code !== "EEXIST" || i >= 9999)
1254
+ throw e;
1255
+ }
1256
+ }
1257
+ }
1218
1258
  function toRunSummary(run) {
1219
1259
  return {
1220
1260
  schemaVersion: RUN_SCHEMA_VERSION,
@@ -1260,6 +1300,17 @@ var OneShotRuntime = class {
1260
1300
  /** Keep a finished run where Model runs reads it (the model runtime, given a root). */
1261
1301
  async keep(_run) {
1262
1302
  }
1303
+ /**
1304
+ * The next run id: counted from 1 on a test's clock (deterministic), with a random tail on the
1305
+ * real one, so two commands' runtimes in one second don't share an id (round 46).
1306
+ */
1307
+ nextRunId(now) {
1308
+ return makeRunId(now, this.opts.now ? ++this.seq : void 0);
1309
+ }
1310
+ /** A new run's id; a runtime that keeps its runs in folders claims the folder (`claimRunDir`). */
1311
+ async newRunId(_request, now) {
1312
+ return this.nextRunId(now);
1313
+ }
1263
1314
  async prepare(request) {
1264
1315
  checkAllowed(this.allowedAs(request.agent), request.agent);
1265
1316
  if (request.pack.manifest.totalTokens > request.agent.tokenBudget) {
@@ -1267,7 +1318,7 @@ var OneShotRuntime = class {
1267
1318
  }
1268
1319
  const now = this.now();
1269
1320
  const run = {
1270
- runId: makeRunId(now, ++this.seq),
1321
+ runId: await this.newRunId(request, now),
1271
1322
  request,
1272
1323
  runtime: this.kind,
1273
1324
  state: "prepared",
@@ -1322,12 +1373,12 @@ var OneShotRuntime = class {
1322
1373
  };
1323
1374
 
1324
1375
  // packages/ai/dist/runtimes.js
1325
- import { mkdir as mkdir2, readdir as readdir2, readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
1326
- import { join as join2 } from "node:path";
1376
+ import { mkdir as mkdir3, readdir as readdir2, readFile as readFile2, writeFile as writeFile2 } from "node:fs/promises";
1377
+ import { join as join3 } from "node:path";
1327
1378
 
1328
1379
  // packages/ai/dist/tools.js
1329
- import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
1330
- import { join } from "node:path";
1380
+ import { mkdir as mkdir2, readdir, readFile, writeFile } from "node:fs/promises";
1381
+ import { join as join2 } from "node:path";
1331
1382
  var ToolError = class extends Error {
1332
1383
  constructor(message) {
1333
1384
  super(message);
@@ -1409,8 +1460,18 @@ function guardToolText(name, raw, room) {
1409
1460
  if (estimateTokens(wrap(text)) > room) {
1410
1461
  const note = `
1411
1462
  \u2026 cut at ${room} tokens; ask for less (a smaller limit, fewer hops, one id).`;
1412
- const chars = Math.max(0, room * 4 - wrap("").length - note.length);
1413
- text = text.slice(0, chars) + note;
1463
+ const units = Math.max(0, room * 4 - tokenUnits(wrap("")) - tokenUnits(note));
1464
+ let end = 0;
1465
+ for (let used = 0; end < text.length; end++) {
1466
+ const c = text.charCodeAt(end);
1467
+ used += c < 128 ? 1 : c >= 56320 && c <= 57343 ? 0 : 4;
1468
+ if (used > units)
1469
+ break;
1470
+ }
1471
+ const last = text.charCodeAt(end - 1);
1472
+ if (end > 0 && last >= 55296 && last <= 56319)
1473
+ end--;
1474
+ text = text.slice(0, end) + note;
1414
1475
  }
1415
1476
  return wrap(text);
1416
1477
  }
@@ -1457,7 +1518,7 @@ async function recordToolCalls(root, runId, update) {
1457
1518
  if (!found)
1458
1519
  return void 0;
1459
1520
  const tools = update(found.run.tools);
1460
- await mkdir(join(found.file, ".."), { recursive: true });
1521
+ await mkdir2(join2(found.file, ".."), { recursive: true });
1461
1522
  await writeFile(found.file, JSON.stringify({ ...found.run, tools }, null, 2) + "\n", "utf8");
1462
1523
  return tools;
1463
1524
  }
@@ -1472,7 +1533,7 @@ async function runFile(root, runId) {
1472
1533
  for (const change of await readdir(runs).catch(() => [])) {
1473
1534
  if (change.includes(".."))
1474
1535
  continue;
1475
- const file = join(runs, change, runId, "run.json");
1536
+ const file = join2(runs, change, runId, "run.json");
1476
1537
  const text = await readFile(file, "utf8").catch(() => void 0);
1477
1538
  if (text)
1478
1539
  return { file, run: JSON.parse(text) };
@@ -1516,8 +1577,8 @@ var ReplayRuntime = class _ReplayRuntime extends OneShotRuntime {
1516
1577
  } catch {
1517
1578
  }
1518
1579
  for (const a of agents.sort()) {
1519
- for (const f of (await readdir2(join2(dir, a)).catch(() => [])).filter((x) => x.endsWith(".json")).sort()) {
1520
- out.push(Recording.parse(JSON.parse(await readFile2(join2(dir, a, f), "utf8"))));
1580
+ for (const f of (await readdir2(join3(dir, a)).catch(() => [])).filter((x) => x.endsWith(".json")).sort()) {
1581
+ out.push(Recording.parse(JSON.parse(await readFile2(join3(dir, a, f), "utf8"))));
1521
1582
  }
1522
1583
  }
1523
1584
  return new _ReplayRuntime(out, opts);
@@ -1545,8 +1606,8 @@ async function recordRun(live, request, dir, model, now = /* @__PURE__ */ new Da
1545
1606
  model,
1546
1607
  recordedAt: now.toISOString()
1547
1608
  };
1548
- await mkdir2(join2(dir, rec.agent), { recursive: true });
1549
- await writeFile2(join2(dir, rec.agent, `${rec.promptSha256}.json`), JSON.stringify(rec, null, 2) + "\n", "utf8");
1609
+ await mkdir3(join3(dir, rec.agent), { recursive: true });
1610
+ await writeFile2(join3(dir, rec.agent, `${rec.promptSha256}.json`), JSON.stringify(rec, null, 2) + "\n", "utf8");
1550
1611
  return rec;
1551
1612
  }
1552
1613
  var MockModelProvider = class {
@@ -1645,17 +1706,26 @@ ${DATA_RULE}`;
1645
1706
  async keep(run) {
1646
1707
  if (!this.mo.root)
1647
1708
  return;
1648
- const dir = join2(runsDirOf(this.mo.root), run.request.change, run.runId);
1649
- await mkdir2(dir, { recursive: true });
1650
- await writeFile2(join2(dir, "prompt.md"), run.request.pack.prompt, "utf8");
1651
- await writeFile2(join2(dir, "context-manifest.json"), JSON.stringify(run.request.pack.manifest, null, 2) + "\n", "utf8");
1652
- await writeFile2(join2(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
1709
+ const dir = join3(runsDirOf(this.mo.root), run.request.change, run.runId);
1710
+ await mkdir3(dir, { recursive: true });
1711
+ await writeFile2(join3(dir, "prompt.md"), run.request.pack.prompt, "utf8");
1712
+ await writeFile2(join3(dir, "context-manifest.json"), JSON.stringify(run.request.pack.manifest, null, 2) + "\n", "utf8");
1713
+ await writeFile2(join3(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
1714
+ }
1715
+ /**
1716
+ * Round 46: given a root, the run's folder is claimed with its id, so another command's run in
1717
+ * the same second (its runtime counts from 1 too) never gets this id and overwrites it.
1718
+ */
1719
+ async newRunId(request, now) {
1720
+ if (!this.mo.root)
1721
+ return super.newRunId(request, now);
1722
+ return claimRunDir(join3(runsDirOf(this.mo.root), request.change), () => this.nextRunId(now));
1653
1723
  }
1654
1724
  };
1655
1725
 
1656
1726
  // packages/ai/dist/handoff.js
1657
- import { mkdir as mkdir3, readdir as readdir3, readFile as readFile3, rm, stat, writeFile as writeFile3 } from "node:fs/promises";
1658
- import { join as join3 } from "node:path";
1727
+ import { mkdir as mkdir4, readdir as readdir3, readFile as readFile3, rm, stat, writeFile as writeFile3 } from "node:fs/promises";
1728
+ import { join as join4 } from "node:path";
1659
1729
  var BATCH_OUTPUT = "answers.md";
1660
1730
  var DEFAULT_BATCH_MAX_TOKENS = 6e4;
1661
1731
  var SECTION = /^===[ \t]*([a-z][a-z0-9-]*)[ \t]*$/;
@@ -1694,12 +1764,12 @@ var HandoffRuntime = class _HandoffRuntime {
1694
1764
  this.o = o;
1695
1765
  }
1696
1766
  now = () => this.o.now?.() ?? /* @__PURE__ */ new Date();
1697
- runDir = (change, runId) => join3(runsDirOf(this.o.root), change, runId);
1698
- outputFile = (r) => r.request.outputIn === "run" ? join3(this.runDir(r.request.change, r.runId), r.request.outputPath) : join3(changesDirOf(this.o.root), r.request.change, r.request.outputPath);
1767
+ runDir = (change, runId) => join4(runsDirOf(this.o.root), change, runId);
1768
+ outputFile = (r) => r.request.outputIn === "run" ? join4(this.runDir(r.request.change, r.runId), r.request.outputPath) : join4(changesDirOf(this.o.root), r.request.change, r.request.outputPath);
1699
1769
  // Atomic: a step reading run.json while `handoff done` writes it never sees half a file.
1700
1770
  async save(run) {
1701
1771
  const dir = this.runDir(run.request.change, run.runId);
1702
- await writeFileAtomic(join3(dir, "run.json"), JSON.stringify(run, null, 2) + "\n");
1772
+ await writeFileAtomic(join4(dir, "run.json"), JSON.stringify(run, null, 2) + "\n");
1703
1773
  return run;
1704
1774
  }
1705
1775
  /** Where a run's prompt is, relative to the root (`atticus <step> --handoff` prints it). */
@@ -1761,12 +1831,9 @@ var HandoffRuntime = class _HandoffRuntime {
1761
1831
  ""
1762
1832
  ].join("\n");
1763
1833
  }
1764
- /** A run id no run folder of the change has yet. */
1834
+ /** A run id no run folder of the change has yet, its folder made (claimed) with it. */
1765
1835
  async freshId(change, now) {
1766
- let runId = makeRunId(now, ++this.seq);
1767
- while (await stat(this.runDir(change, runId)).catch(() => void 0))
1768
- runId = makeRunId(now, ++this.seq);
1769
- return runId;
1836
+ return claimRunDir(join4(runsDirOf(this.o.root), change), () => makeRunId(now, ++this.seq));
1770
1837
  }
1771
1838
  /**
1772
1839
  * Whether `parts` runs that wait together, `tokens` in all, are asked in one prompt (ADR 0185):
@@ -1836,9 +1903,9 @@ var HandoffRuntime = class _HandoffRuntime {
1836
1903
  };
1837
1904
  run.request.pack = { prompt, manifest };
1838
1905
  const dir = this.runDir(o.change, runId);
1839
- await mkdir3(dir, { recursive: true });
1840
- await writeFile3(join3(dir, "prompt.md"), prompt, "utf8");
1841
- await writeFile3(join3(dir, "context-manifest.json"), JSON.stringify(manifest, null, 2) + "\n", "utf8");
1906
+ await mkdir4(dir, { recursive: true });
1907
+ await writeFile3(join4(dir, "prompt.md"), prompt, "utf8");
1908
+ await writeFile3(join4(dir, "context-manifest.json"), JSON.stringify(manifest, null, 2) + "\n", "utf8");
1842
1909
  await this.save(run);
1843
1910
  for (const p of parts)
1844
1911
  await this.save({ ...p.run, batch: runId });
@@ -1863,9 +1930,9 @@ var HandoffRuntime = class _HandoffRuntime {
1863
1930
  stepClass: stepClassOf(request)
1864
1931
  };
1865
1932
  const dir = this.runDir(request.change, run.runId);
1866
- await mkdir3(dir, { recursive: true });
1867
- await writeFile3(join3(dir, "prompt.md"), _HandoffRuntime.promptFor(run, changesRelOf(this.o.root), runsRelOf(this.o.root)), "utf8");
1868
- await writeFile3(join3(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
1933
+ await mkdir4(dir, { recursive: true });
1934
+ await writeFile3(join4(dir, "prompt.md"), _HandoffRuntime.promptFor(run, changesRelOf(this.o.root), runsRelOf(this.o.root)), "utf8");
1935
+ await writeFile3(join4(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
1869
1936
  return this.save(run);
1870
1937
  }
1871
1938
  /** Hand the prompt to the assistant; Atticus now waits. */
@@ -1984,7 +2051,7 @@ var HandoffRuntime = class _HandoffRuntime {
1984
2051
  throw new RuntimeError(`not a run id: ${runId}`);
1985
2052
  const runs = runsDirOf(this.o.root);
1986
2053
  for (const change of await readdir3(runs).catch(() => [])) {
1987
- const f = join3(runs, change, runId, "run.json");
2054
+ const f = join4(runs, change, runId, "run.json");
1988
2055
  const text = await readFile3(f, "utf8").catch(() => void 0);
1989
2056
  if (text)
1990
2057
  return JSON.parse(text);
@@ -1998,12 +2065,12 @@ async function pruneRuns(root, days, now = /* @__PURE__ */ new Date(), only) {
1998
2065
  const cutoff = now.getTime() - days * 864e5;
1999
2066
  const changes = only ? [only] : await readdir3(runs).catch(() => []);
2000
2067
  for (const change of changes) {
2001
- for (const runId of await readdir3(join3(runs, change)).catch(() => [])) {
2002
- const f = join3(runs, change, runId, "run.json");
2068
+ for (const runId of await readdir3(join4(runs, change)).catch(() => [])) {
2069
+ const f = join4(runs, change, runId, "run.json");
2003
2070
  const text = await readFile3(f, "utf8").catch(() => void 0);
2004
2071
  const started = text ? Date.parse(JSON.parse(text).startedAt) : NaN;
2005
2072
  if (!Number.isNaN(started) && started < cutoff) {
2006
- await rm(join3(runs, change, runId), { recursive: true, force: true });
2073
+ await rm(join4(runs, change, runId), { recursive: true, force: true });
2007
2074
  removed.push(`${change}/${runId}`);
2008
2075
  }
2009
2076
  }
@@ -2014,15 +2081,15 @@ async function pruneRuns(root, days, now = /* @__PURE__ */ new Date(), only) {
2014
2081
  // packages/ai/dist/factory.js
2015
2082
  import { existsSync as existsSync2 } from "node:fs";
2016
2083
  import { spawn as spawn2 } from "node:child_process";
2017
- import { mkdir as mkdir5, mkdtemp, readFile as readFile5, rm as rm2, stat as stat3, writeFile as writeFile5 } from "node:fs/promises";
2084
+ import { mkdir as mkdir6, mkdtemp, readFile as readFile5, rm as rm2, stat as stat3, writeFile as writeFile5 } from "node:fs/promises";
2018
2085
  import { tmpdir } from "node:os";
2019
- import { dirname as dirname2, join as join5 } from "node:path";
2086
+ import { dirname as dirname2, join as join6 } from "node:path";
2020
2087
 
2021
2088
  // packages/ai/dist/copilot-acp.js
2022
2089
  import { spawn } from "node:child_process";
2023
2090
  import { existsSync, realpathSync } from "node:fs";
2024
- import { mkdir as mkdir4, readFile as readFile4, stat as stat2, writeFile as writeFile4 } from "node:fs/promises";
2025
- import { basename, dirname, isAbsolute, join as join4, relative, resolve, sep } from "node:path";
2091
+ import { mkdir as mkdir5, readFile as readFile4, stat as stat2, writeFile as writeFile4 } from "node:fs/promises";
2092
+ import { basename, dirname, isAbsolute, join as join5, relative, resolve, sep } from "node:path";
2026
2093
  import { createInterface } from "node:readline";
2027
2094
 
2028
2095
  // packages/ai/dist/acp.js
@@ -2301,10 +2368,12 @@ function atticusArgvOf(command, args = []) {
2301
2368
  const argv = all.slice(1);
2302
2369
  if (!argv.length)
2303
2370
  return { refused: "atticus needs a command (atticus next, atticus verify <repo>, ...)" };
2371
+ const named = [...withoutLegacy(argv)];
2304
2372
  for (const p of PERSONS)
2305
- if (p.test(argv))
2373
+ if (p.test(named))
2306
2374
  return { refused: `Refused: ${p.why}.` };
2307
- if (argv[0].startsWith("-") && !["--help", "--version", "-h"].includes(argv[0]))
2375
+ const hidden = argv[0] === "legacy" && argv[1]?.startsWith("-") && argv.slice(2).some((x) => !x.startsWith("-"));
2376
+ if (hidden || argv[0].startsWith("-") && !["--help", "--version", "-h"].includes(argv[0]))
2308
2377
  return {
2309
2378
  refused: `Put the command first: atticus <command> [arguments] (got ${short(argv.join(" "))})`
2310
2379
  };
@@ -2319,7 +2388,7 @@ function real(p) {
2319
2388
  const rest = [];
2320
2389
  for (; ; ) {
2321
2390
  try {
2322
- return join4(realpathSync.native(cur), ...rest.reverse());
2391
+ return join5(realpathSync.native(cur), ...rest.reverse());
2323
2392
  } catch {
2324
2393
  const up = dirname(cur);
2325
2394
  if (up === cur)
@@ -2383,7 +2452,7 @@ var factsOnly = (root, factsDir) => ({
2383
2452
  });
2384
2453
  function readRootsOf(root) {
2385
2454
  const out = [root];
2386
- const state = join4(stateDirOf(root), "workspace");
2455
+ const state = join5(stateDirOf(root), "workspace");
2387
2456
  if (!sameOrUnder(resolve(root), resolve(state)))
2388
2457
  out.push(state);
2389
2458
  return out;
@@ -2634,7 +2703,7 @@ async function runAcpSession(o) {
2634
2703
  const why = paths.writable(p.path);
2635
2704
  if (why)
2636
2705
  return refuse("fs/write_text_file", { path: p.path }, why);
2637
- await mkdir4(dirname(p.path), { recursive: true });
2706
+ await mkdir5(dirname(p.path), { recursive: true });
2638
2707
  await writeFile4(p.path, p.content, "utf8");
2639
2708
  record("fs/write_text_file", { path: p.path }, `${p.content.length} characters written`);
2640
2709
  return null;
@@ -2829,7 +2898,7 @@ async function runAcpSession(o) {
2829
2898
  t.kill.abort();
2830
2899
  await server.close().catch(() => void 0);
2831
2900
  if (o.transcript) {
2832
- await mkdir4(dirname(o.transcript), { recursive: true });
2901
+ await mkdir5(dirname(o.transcript), { recursive: true });
2833
2902
  await writeFile4(o.transcript, transcript.join("\n") + (transcript.length ? "\n" : ""), "utf8");
2834
2903
  }
2835
2904
  }
@@ -2968,20 +3037,24 @@ var CopilotAcpRuntime = class extends OneShotRuntime {
2968
3037
  modelFor() {
2969
3038
  return this.c.model;
2970
3039
  }
3040
+ /** Review round 48: the run's folder is claimed, as a model run's is (claimRunDir). */
3041
+ async newRunId(request, now) {
3042
+ return claimRunDir(join5(runsDirOf(this.c.root), request.change), () => this.nextRunId(now));
3043
+ }
2971
3044
  async produce(run, signal) {
2972
3045
  const { request } = run;
2973
3046
  const root = this.c.root;
2974
- const dir = join4(runsDirOf(root), request.change, run.runId);
2975
- await mkdir4(dir, { recursive: true });
3047
+ const dir = join5(runsDirOf(root), request.change, run.runId);
3048
+ await mkdir5(dir, { recursive: true });
2976
3049
  const outRel = HandoffRuntime.outputRel(run, changesRelOf(root), runsRelOf(root));
2977
3050
  const prompt = HandoffRuntime.promptFor(run, changesRelOf(root), runsRelOf(root)).replace(/\nWhen the file is complete.*\n$/s, "\n") + (request.selfCheck ? `
2978
3051
  Before you finish, check the file: run ${request.selfCheck.command} ${outRel}. Fix each problem it lists and run it again, until it says the file is clean (at most ${request.selfCheck.limit} times).
2979
3052
  ` : "") + `
2980
3053
  ${DATA_RULE}
2981
3054
  `;
2982
- await writeFile4(join4(dir, "prompt.md"), prompt, "utf8");
2983
- await writeFile4(join4(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
2984
- const outputFile = request.outputIn === "run" ? join4(dir, request.outputPath) : join4(changesDirOf(root), request.change, request.outputPath);
3055
+ await writeFile4(join5(dir, "prompt.md"), prompt, "utf8");
3056
+ await writeFile4(join5(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
3057
+ const outputFile = request.outputIn === "run" ? join5(dir, request.outputPath) : join5(changesDirOf(root), request.change, request.outputPath);
2985
3058
  const before = (await stat2(outputFile).catch(() => void 0))?.mtimeMs;
2986
3059
  const r = await runAcpSession({
2987
3060
  command: this.c.command,
@@ -2997,7 +3070,7 @@ ${DATA_RULE}
2997
3070
  ...this.c.env ? { env: this.c.env } : {},
2998
3071
  ...this.c.spawn ? { spawn: this.c.spawn } : {},
2999
3072
  ...this.c.clientVersion ? { clientVersion: this.c.clientVersion } : {},
3000
- transcript: join4(dir, "transcript.jsonl")
3073
+ transcript: join5(dir, "transcript.jsonl")
3001
3074
  });
3002
3075
  const after = (await stat2(outputFile).catch(() => void 0))?.mtimeMs;
3003
3076
  const written = after !== void 0 && after !== before ? await readFile4(outputFile, "utf8") : void 0;
@@ -3021,9 +3094,9 @@ ${DATA_RULE}
3021
3094
  }
3022
3095
  /** Kept as a hand-off run is: run.json beside the prompt, so Model runs shows it. */
3023
3096
  async keep(run) {
3024
- const dir = join4(runsDirOf(this.c.root), run.request.change, run.runId);
3025
- await mkdir4(dir, { recursive: true });
3026
- await writeFile4(join4(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
3097
+ const dir = join5(runsDirOf(this.c.root), run.request.change, run.runId);
3098
+ await mkdir5(dir, { recursive: true });
3099
+ await writeFile4(join5(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
3027
3100
  }
3028
3101
  };
3029
3102
  var noExec = async (argv) => ({
@@ -3032,10 +3105,10 @@ var noExec = async (argv) => ({
3032
3105
  `
3033
3106
  });
3034
3107
  async function keepAcpRun(o) {
3035
- const dir = join4(runsDirOf(o.root), o.change, o.runId);
3036
- await mkdir4(dir, { recursive: true });
3037
- if (!existsSync(join4(dir, "prompt.md")))
3038
- await writeFile4(join4(dir, "prompt.md"), o.prompt, "utf8");
3108
+ const dir = join5(runsDirOf(o.root), o.change, o.runId);
3109
+ await mkdir5(dir, { recursive: true });
3110
+ if (!existsSync(join5(dir, "prompt.md")))
3111
+ await writeFile4(join5(dir, "prompt.md"), o.prompt, "utf8");
3039
3112
  const r = o.result;
3040
3113
  const run = {
3041
3114
  runId: o.runId,
@@ -3058,7 +3131,7 @@ async function keepAcpRun(o) {
3058
3131
  ...r?.model ? { model: r.model } : {},
3059
3132
  ...r ? { assistant: r.assistant } : {}
3060
3133
  };
3061
- await writeFile4(join4(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
3134
+ await writeFile4(join5(dir, "run.json"), JSON.stringify(run, null, 2) + "\n", "utf8");
3062
3135
  return dir;
3063
3136
  }
3064
3137
 
@@ -3161,7 +3234,7 @@ function collectChild(start, prompt, timeoutMs, cwd, platform = process.platform
3161
3234
  child.stdin.end(prompt, "utf8");
3162
3235
  });
3163
3236
  }
3164
- var cloneDirs = (root) => [join5(root, "workspace"), join5(stateDirOf(root), "workspace")];
3237
+ var cloneDirs = (root) => [join6(root, "workspace"), join6(stateDirOf(root), "workspace")];
3165
3238
  async function existingDirs(dirs) {
3166
3239
  const out = [];
3167
3240
  for (const d of [...new Set(dirs)])
@@ -3202,9 +3275,9 @@ var HeadlessClaudeCodeRuntime = class _HeadlessClaudeCodeRuntime extends OneShot
3202
3275
  }
3203
3276
  async produce(run, signal) {
3204
3277
  const { request } = run;
3205
- const dir = join5(runsDirOf(this.h.root), request.change, run.runId);
3278
+ const dir = join6(runsDirOf(this.h.root), request.change, run.runId);
3206
3279
  const reviewer = request.agent.outputArtifact === "findings" && request.outputIn === "run";
3207
- const work = reviewer ? await mkdtemp(join5(tmpdir(), "atticus-review-")) : void 0;
3280
+ const work = reviewer ? await mkdtemp(join6(tmpdir(), "atticus-review-")) : void 0;
3208
3281
  const clones = work ? await existingDirs(cloneDirs(this.h.root)) : [];
3209
3282
  const base = work ? {
3210
3283
  cwd: work,
@@ -3218,8 +3291,8 @@ var HeadlessClaudeCodeRuntime = class _HeadlessClaudeCodeRuntime extends OneShot
3218
3291
  `Bash(${request.selfCheck.command}:*)`
3219
3292
  ]
3220
3293
  } : base;
3221
- await mkdir5(dir, { recursive: true });
3222
- const promptFile = join5(dir, "prompt.md");
3294
+ await mkdir6(dir, { recursive: true });
3295
+ const promptFile = join6(dir, "prompt.md");
3223
3296
  const self = reviewer ? void 0 : request.selfCheck;
3224
3297
  const handoff = HandoffRuntime.promptFor(run, changesRelOf(this.h.root), runsRelOf(this.h.root)).replace(/\nWhen the file is complete.*\n$/s, "\n") + // W3a: the drafter checks its own file with the stage's checks before it finishes.
3225
3298
  (self ? `
@@ -3227,18 +3300,18 @@ Before you finish, check the file: run ${self.command} ${HandoffRuntime.outputRe
3227
3300
  ` : "");
3228
3301
  const prompt = reviewer ? handoff.replace(`Write the result to ${HandoffRuntime.outputRel(run, changesRelOf(this.h.root), runsRelOf(this.h.root))}.`, `Write the result to ${request.outputPath}.${clones.length ? ` The metarepo is at ${this.h.root}: a folder named relative to the metarepo (the repos' clones under workspace/) is there, to read, never to edit.` : ""}`) : handoff;
3229
3302
  await writeFile5(promptFile, prompt, "utf8");
3230
- await writeFile5(join5(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
3303
+ await writeFile5(join6(dir, "context-manifest.json"), JSON.stringify(request.pack.manifest, null, 2) + "\n", "utf8");
3231
3304
  if (!await stat3(inv.cwd).catch(() => void 0))
3232
3305
  throw new RuntimeError(`the worktree ${inv.cwd} doesn't exist`);
3233
- const outputFile = work ? join5(work, request.outputPath) : request.outputIn === "run" ? join5(dir, request.outputPath) : join5(changesDirOf(this.h.root), request.change, request.outputPath);
3306
+ const outputFile = work ? join6(work, request.outputPath) : request.outputIn === "run" ? join6(dir, request.outputPath) : join6(changesDirOf(this.h.root), request.change, request.outputPath);
3234
3307
  try {
3235
3308
  return await this.runIn(run, dir, inv, prompt, promptFile, outputFile, signal);
3236
3309
  } finally {
3237
3310
  if (work) {
3238
3311
  const kept = await readFile5(outputFile, "utf8").catch(() => void 0);
3239
3312
  if (kept !== void 0) {
3240
- await mkdir5(dirname2(join5(dir, request.outputPath)), { recursive: true });
3241
- await writeFile5(join5(dir, request.outputPath), kept, "utf8");
3313
+ await mkdir6(dirname2(join6(dir, request.outputPath)), { recursive: true });
3314
+ await writeFile5(join6(dir, request.outputPath), kept, "utf8");
3242
3315
  }
3243
3316
  await rm2(work, { recursive: true, force: true, maxRetries: 5 }).catch(() => void 0);
3244
3317
  }
@@ -3262,7 +3335,7 @@ Before you finish, check the file: run ${self.command} ${HandoffRuntime.outputRe
3262
3335
  timeoutMs: this.h.timeoutMs ?? 30 * 6e4,
3263
3336
  ...signal ? { signal } : {}
3264
3337
  });
3265
- await writeFile5(join5(dir, "claude-output.json"), res.stdout, "utf8");
3338
+ await writeFile5(join6(dir, "claude-output.json"), res.stdout, "utf8");
3266
3339
  let parsed;
3267
3340
  try {
3268
3341
  parsed = JSON.parse(res.stdout);
@@ -3437,7 +3510,7 @@ var sayOnce = (line) => process.stderr.write(`${line}
3437
3510
  `);
3438
3511
  async function runtimeForCli(root, o = {}) {
3439
3512
  const env = o.env ?? process.env;
3440
- const op = await loadOrgPack(join5(orgPackDirOf(root)));
3513
+ const op = await loadOrgPack(join6(orgPackDirOf(root)));
3441
3514
  const bad = op.problems.filter((p) => p.file === "runtime.yaml");
3442
3515
  if (bad.length)
3443
3516
  throw new RuntimeConfigError(`org-pack/runtime.yaml has problems: ${bad.map((p) => `${p.path ? `${p.path}: ` : ""}${p.message}`).join("; ")}`);
@@ -4045,6 +4118,7 @@ function recordedJudge(byTexts, o = {}) {
4045
4118
  }
4046
4119
 
4047
4120
  export {
4121
+ withoutLegacy,
4048
4122
  personOnlyWhy,
4049
4123
  isPersonsFactsFile,
4050
4124
  windowsName,
@@ -4081,7 +4155,7 @@ export {
4081
4155
  BIGGER_MODEL,
4082
4156
  PromptTooLong,
4083
4157
  sha2562 as sha256,
4084
- estimateTokens,
4158
+ RequiredSourceLeftOut,
4085
4159
  wrapData,
4086
4160
  DATA_RULE,
4087
4161
  buildContextPack,
@@ -4097,6 +4171,7 @@ export {
4097
4171
  RuntimeError,
4098
4172
  checkAllowed,
4099
4173
  makeRunId,
4174
+ claimRunDir,
4100
4175
  toRunSummary,
4101
4176
  OneShotRuntime,
4102
4177
  ToolError,
@@ -5,7 +5,7 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  runtimeForCli
8
- } from "./chunk-QHJJMZLX.js";
8
+ } from "./chunk-P32RUW3B.js";
9
9
 
10
10
  // packages/cli/dist/judging.js
11
11
  async function judgingRuntime(root, given) {
@@ -7,9 +7,10 @@ import {
7
7
  ME_FILE,
8
8
  readMe,
9
9
  writeMe
10
- } from "./chunk-UF4UHCIG.js";
11
- import "./chunk-PAINMSID.js";
12
- import "./chunk-ODMBPDDV.js";
10
+ } from "./chunk-2Q56PQPS.js";
11
+ import "./chunk-Q2TECDIT.js";
12
+ import "./chunk-TUULXQRW.js";
13
+ import "./chunk-BQGDB6ZL.js";
13
14
  import "./chunk-TV45EUGM.js";
14
15
  export {
15
16
  ME_FILE,