@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
@@ -3,10 +3,6 @@ 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
- slug,
8
- writeGateRound
9
- } from "./chunk-EZIN5E5B.js";
10
6
  import {
11
7
  catchUpChangeBranch,
12
8
  changeWorktree,
@@ -14,11 +10,16 @@ import {
14
10
  loadTask,
15
11
  openTaskWorktree,
16
12
  readChangeTasks,
17
- setTaskDone
18
- } from "./chunk-YWAKDNMH.js";
13
+ setTaskDone,
14
+ taskBranchOwnCommits
15
+ } from "./chunk-S5GSQPIN.js";
19
16
  import {
20
17
  buildEngineFor
21
- } from "./chunk-3AQ2R5NL.js";
18
+ } from "./chunk-J4CPHJUL.js";
19
+ import {
20
+ slug,
21
+ writeGateRound
22
+ } from "./chunk-EMVZIOOD.js";
22
23
  import {
23
24
  conform,
24
25
  readConformDeltas,
@@ -26,38 +27,39 @@ import {
26
27
  renderTaskContext,
27
28
  taskContext,
28
29
  withBuildLine
29
- } from "./chunk-BEPCKDCP.js";
30
+ } from "./chunk-MLGWSBF4.js";
30
31
  import {
31
32
  readChangeFiles,
32
33
  readRound,
33
34
  readStoryIndex,
34
35
  roundsOf,
35
36
  writeQuarantineItems
36
- } from "./chunk-K332XW7K.js";
37
+ } from "./chunk-D6BVLTDV.js";
37
38
  import {
38
39
  changeFolder,
39
40
  changeStore
40
- } from "./chunk-HSZMPH5T.js";
41
+ } from "./chunk-WZYM5M4U.js";
41
42
  import {
43
+ AdapterError,
42
44
  createAdapters,
43
45
  fileStepStore,
44
46
  requireApproval
45
- } from "./chunk-4KNOJC6J.js";
47
+ } from "./chunk-FL344WQD.js";
46
48
  import {
47
49
  scanEstate
48
- } from "./chunk-4SLBCEPD.js";
50
+ } from "./chunk-IKAW2KJU.js";
49
51
  import {
50
52
  baseClonePath,
51
53
  createGit,
52
54
  toRepoRelative
53
- } from "./chunk-XOL3GFW2.js";
55
+ } from "./chunk-3EWKO457.js";
54
56
  import {
55
57
  HandoffRuntime,
56
58
  buildContextPack,
57
59
  createRuntime,
58
60
  quarantineItems,
59
61
  toRunSummary
60
- } from "./chunk-QHJJMZLX.js";
62
+ } from "./chunk-3424TLIJ.js";
61
63
  import {
62
64
  AgentDefinition,
63
65
  ChecklistPack,
@@ -71,18 +73,20 @@ import {
71
73
  changesRelOf,
72
74
  external_exports,
73
75
  readRepoSpec,
74
- require_dist,
75
76
  runsDirOf,
76
77
  runsRelOf,
77
78
  stateDirOf,
78
79
  taskBranch,
79
80
  toCanonicalYaml
80
- } from "./chunk-PAINMSID.js";
81
+ } from "./chunk-FPBUTZI5.js";
81
82
  import {
82
83
  LockHeldError,
83
84
  acquireLock,
84
85
  writeFileAtomic
85
- } from "./chunk-ODMBPDDV.js";
86
+ } from "./chunk-B4AEL3RF.js";
87
+ import {
88
+ require_dist
89
+ } from "./chunk-BQGDB6ZL.js";
86
90
  import {
87
91
  __toESM
88
92
  } from "./chunk-TV45EUGM.js";
@@ -564,7 +568,9 @@ ${s.body.trim()}`,
564
568
  id: "task-context",
565
569
  kind: "artifact",
566
570
  origin: `atticus task context ${t.change.id} ${t.task.id}`,
567
- text: renderTaskContext(context).replace(/\r\n/g, "\n"),
571
+ // The pack wraps and screens the whole file as one source, so its parts aren't fenced
572
+ // again inside it (review round 47).
573
+ text: renderTaskContext(context, { fence: false }).replace(/\r\n/g, "\n"),
568
574
  classification: "internal",
569
575
  priority: 35
570
576
  });
@@ -1112,6 +1118,12 @@ async function commit(c, runId) {
1112
1118
  await c.git(["add", "-A", "--", "."], c.worktree);
1113
1119
  const staged = (await c.git(["diff", "--cached", "--name-only"], c.worktree)).stdout.trim();
1114
1120
  if (!staged) {
1121
+ const own = await ownTaskCommit(c);
1122
+ if (own) {
1123
+ c.record.commit = own;
1124
+ c.record.notes.push(`Nothing new to commit: ${c.record.branch} already has this task's commit ${own.slice(0, 12)}, ahead of ${changeBranch(c.t.change.id)}, so it is the one built and raised.`);
1125
+ return true;
1126
+ }
1115
1127
  c.record.state = "needs-person";
1116
1128
  c.record.notes.push(`The AI's answer changed nothing in ${c.record.branch}, so there is nothing to commit: run the task again, or do it by hand in ${c.record.worktree}.`);
1117
1129
  return false;
@@ -1130,9 +1142,20 @@ Requested-By: ${c.record.by}`
1130
1142
  c.record.commit = (await c.git(["rev-parse", "HEAD"], c.worktree)).stdout.trim();
1131
1143
  return true;
1132
1144
  }
1145
+ async function ownTaskCommit(c) {
1146
+ const base = changeBranch(c.t.change.id);
1147
+ const log = await c.git(["log", "--format=%B%x00", `refs/heads/${base}..HEAD`], c.worktree).catch(() => ({ stdout: "" }));
1148
+ const mine = log.stdout.split("\0").some((m) => {
1149
+ const lines = m.split("\n").map((l) => l.trim());
1150
+ return lines.includes(`Atticus-Change: ${c.t.change.id}`) && lines.includes(`Atticus-Task: ${c.t.task.id}`);
1151
+ });
1152
+ if (!mine)
1153
+ return void 0;
1154
+ return (await c.git(["rev-parse", "HEAD"], c.worktree)).stdout.trim() || void 0;
1155
+ }
1133
1156
  async function openPr(c) {
1134
1157
  if (c.record.state !== "built") {
1135
- c.record.notes.push(c.record.state === "unverified" ? "No PR: a pull request needs a passing build, and this repo has no build command." : "No PR: the build doesn't pass.");
1158
+ c.record.notes.push(c.record.state === "unverified" ? `No PR: a pull request needs a passing build, and ${c.t.repo.id} has no build command: set a build command for ${c.t.repo.id} (build: under its entry in repos.manifest.yaml), then run task ${c.t.task.id} again.` : "No PR: the build doesn't pass.");
1136
1159
  if (c.record.state === "unverified")
1137
1160
  c.record.state = "needs-person";
1138
1161
  return;
@@ -1182,6 +1205,15 @@ async function openPr(c) {
1182
1205
  } catch (e) {
1183
1206
  if (e instanceof TaskRunError)
1184
1207
  throw e;
1208
+ if (e instanceof AdapterError && e.code === "conflict") {
1209
+ const open = (await c.gitHost.listPullRequests(c.t.repo.id, { head: c.record.branch }).catch(() => [])).filter((p) => p.base === base && (p.state === "open" || p.state === "draft")).at(0);
1210
+ if (open) {
1211
+ c.record.pr = { number: open.number, url: open.url };
1212
+ c.record.state = "pr-open";
1213
+ c.record.notes.push(`PR #${open.number} from ${c.record.branch} into ${base} was already open on the Git host; recorded it (${open.url}).`);
1214
+ return;
1215
+ }
1216
+ }
1185
1217
  c.record.notes.push(`${PR_NOT_RAISED} ${(e instanceof Error ? e.message : String(e)).replace(/\.?$/, ".")} The build still passes: fix that and raise the task's PR again (Raise the task's PR on the Task board), or push ${c.record.branch} and open its PR into ${base} yourself.`);
1186
1218
  }
1187
1219
  }
@@ -1251,7 +1283,7 @@ async function ownTaskPr(host, r, held) {
1251
1283
  return own;
1252
1284
  throw new TaskRunError("refused", `PR #${held.number} on the Git host is from ${pr.head}, not ${r.branch}, and no PR from ${r.branch} was found`);
1253
1285
  }
1254
- async function refuseIfHeld(root, t, host) {
1286
+ async function refuseIfHeld(root, t, host, git) {
1255
1287
  const before = await readTaskRun(root, t.change.id, t.task.id);
1256
1288
  if (before?.state === "pr-open") {
1257
1289
  let state;
@@ -1265,14 +1297,23 @@ async function refuseIfHeld(root, t, host) {
1265
1297
  } catch (e) {
1266
1298
  why = e instanceof Error ? e.message : String(e);
1267
1299
  }
1268
- if (before.pr && (state === "merged" || state === "closed"))
1269
- return [`Its earlier PR ${before.pr.url} is ${state}.`];
1300
+ if (before.pr && (state === "merged" || state === "closed")) {
1301
+ const own = await taskBranchOwnCommits(root, t.change.id, t.task.id, t.repo.id, git);
1302
+ if (own > 0) {
1303
+ const branch = taskBranch(t.change.id, t.task.id);
1304
+ const from = changeBranch(t.change.id);
1305
+ const clone = baseClonePath(root, t.repo.id);
1306
+ const carried = state === "closed" ? "the commits that PR carried" : "commits the change branch hasn't (a squash or rebase merge took them in another form)";
1307
+ throw new TaskRunError("refused", `Task ${t.task.id}'s earlier PR ${before.pr.url} is ${state}, and its branch ${branch} still has ${carried} (${own} not in ${from}): running the task again would raise them again. Atticus doesn't delete or rewrite them. To start the task afresh, remove its worktree and branch here (git -C ${clone} worktree remove ${join5(root, before.worktree)}, then git -C ${clone} branch -D ${branch}) and delete ${branch} on the Git host, then run the task again; or ask whoever looks after the workspace for a fresh start.`);
1308
+ }
1309
+ return { notes: [`Its earlier PR ${before.pr.url} is ${state}.`], settled: true };
1310
+ }
1270
1311
  throw new TaskRunError("refused", `Task ${t.task.id}'s PR is open (${before.pr?.url ?? "see its run"}): running the task again would start over beside it. Merge or close the PR first, then run the task again.${why ? ` (Atticus couldn't ask the Git host whether it still is: ${why}.)` : ""}`);
1271
1312
  }
1272
1313
  const open = ["prepared", "waiting", "produced", "failed"];
1273
1314
  if (before?.state === "waiting" && before.waiting && open.includes(await handoffRunState(root, t.change.id, before.waiting) ?? ""))
1274
1315
  throw new TaskRunError("refused", `Task ${t.task.id} already waits on your assistant (run ${before.waiting}, in ${before.worktree}): finish it with Done on its run page (Model runs) or atticus handoff done ${before.waiting}, or Cancel it there and run the task again.`);
1275
- return [];
1316
+ return { notes: [] };
1276
1317
  }
1277
1318
  async function taskPrState(root, changeId, taskId, o = {}) {
1278
1319
  const r = await readTaskRun(root, changeId, taskId).catch(() => void 0);
@@ -1347,7 +1388,7 @@ function gitHostConnected(root, t, given) {
1347
1388
  async function previewTaskRun(root, changeId, taskId, o = {}) {
1348
1389
  const t = await loadTask(root, changeId, taskId);
1349
1390
  const level = levelOf(t, o.level);
1350
- await refuseIfHeld(root, t, () => o.gitHost ?? gitHostOf(root, t));
1391
+ await refuseIfHeld(root, t, () => o.gitHost ?? gitHostOf(root, t), createGit());
1351
1392
  return {
1352
1393
  change: t.change.id,
1353
1394
  task: t.task.id,
@@ -1413,7 +1454,7 @@ async function runTaskHeld(root, changeId, taskId, o) {
1413
1454
  let t = await loadTask(root, changeId, taskId);
1414
1455
  const rt = t.ctx.orgPack.runtime;
1415
1456
  const level = levelOf(t, o.level);
1416
- const earlier = await refuseIfHeld(root, t, () => o.gitHost ?? gitHostOf(root, t));
1457
+ const earlier = await refuseIfHeld(root, t, () => o.gitHost ?? gitHostOf(root, t), git);
1417
1458
  if (level === "pr") {
1418
1459
  try {
1419
1460
  requireApproval("git-host", o.approval);
@@ -1424,9 +1465,9 @@ async function runTaskHeld(root, changeId, taskId, o) {
1424
1465
  const engine = buildEngineFor(t.ctx.orgPack, t.repo.id);
1425
1466
  const changeDir = await changeWorktree(root, t.change.id, t.repo.id);
1426
1467
  const handed = engine === "speckit" ? `specs/${t.task.id}/plan.md` : `.atticus/tasks/${t.task.id}.md`;
1427
- const notes = [...earlier];
1468
+ const notes = [...earlier.notes];
1428
1469
  try {
1429
- const caught = await catchUpChangeBranch(root, t.change.id, t.task.id, t.repo.id, changeDir, git);
1470
+ const caught = await catchUpChangeBranch(root, t.change.id, t.task.id, t.repo.id, changeDir, git, earlier.settled ? { settled: true } : {});
1430
1471
  if (caught)
1431
1472
  notes.push(caught);
1432
1473
  } catch (e) {
@@ -1439,7 +1480,14 @@ async function runTaskHeld(root, changeId, taskId, o) {
1439
1480
  notes.push(`Handed the task down first (${h.feature} in ${h.repo}${h.commit ? `, commit ${h.commit.slice(0, 12)}` : ""}).`);
1440
1481
  t = await loadTask(root, changeId, taskId);
1441
1482
  }
1442
- const wt = await openTaskWorktree(root, t.change.id, t.task.id, t.repo.id, git);
1483
+ let wt;
1484
+ try {
1485
+ wt = await openTaskWorktree(root, t.change.id, t.task.id, t.repo.id, git, earlier.settled ? { fresh: true } : {});
1486
+ } catch (e) {
1487
+ if (e instanceof Error && e.name === "SpecKitError")
1488
+ throw new TaskRunError("refused", e.message);
1489
+ throw e;
1490
+ }
1443
1491
  const runtime = o.runtime ?? await createRuntime(t.ctx.orgPack, {
1444
1492
  root,
1445
1493
  ...o.mode ? { mode: o.mode } : {},
@@ -1659,6 +1707,79 @@ async function raiseTaskPr(root, changeId, taskId, o) {
1659
1707
  await lock.release();
1660
1708
  }
1661
1709
  }
1710
+ async function buildTask(root, changeId, taskId, o = {}) {
1711
+ if (o.approval)
1712
+ requireApproval("git-host", o.approval);
1713
+ const lock = await holdTask(root, changeId, taskId);
1714
+ try {
1715
+ const record = await readTaskRun(root, changeId, taskId);
1716
+ if (!record || !["unverified", "needs-person"].includes(record.state))
1717
+ throw new TaskRunError("refused", !record ? `Task ${taskId} hasn't been drafted yet: run it with AI first.` : record.state === "built" ? `Task ${taskId} is built already: raise its PR (Raise the task's PR).` : `Task ${taskId} is ${record.state}: Build and raise PR is for a task drafted but not built (UNVERIFIED) or one a person took over; run it again instead.`);
1718
+ const t = await loadTask(root, changeId, taskId);
1719
+ const command = t.repo.build;
1720
+ if (!command)
1721
+ throw new TaskRunError("refused", `${record.repo} has no build command yet: set it on Set up \u203A Repos (build: under its entry in repos.manifest.yaml), then Build and raise PR again.`);
1722
+ const now = o.now ?? (() => /* @__PURE__ */ new Date());
1723
+ const git = o.git ?? createGit();
1724
+ const worktree = join5(root, record.worktree);
1725
+ if (!existsSync2(worktree))
1726
+ throw new TaskRunError("refused", `Task ${taskId}'s worktree ${record.worktree} isn't here any more: run the task again.`);
1727
+ const c = {
1728
+ root,
1729
+ t,
1730
+ record,
1731
+ worktree,
1732
+ runtime: void 0,
1733
+ commands: o.commands ?? shellCommandRunner(),
1734
+ git,
1735
+ ...o.gitHost ? { gitHost: o.gitHost } : {},
1736
+ ...o.approval ? { approval: o.approval } : {},
1737
+ now,
1738
+ maxFix: t.ctx.orgPack.runtime.autonomy.maxFixRounds
1739
+ };
1740
+ if ((await changedFiles(c)).length)
1741
+ throw new TaskRunError("refused", `Task ${taskId}'s worktree ${record.worktree} has edits that aren't committed: commit them on ${record.branch} (or put them aside), then Build and raise PR again.`);
1742
+ const own = await ownTaskCommit(c);
1743
+ const head = (await git(["rev-parse", "--verify", "-q", `refs/heads/${record.branch}`], worktree).catch(() => ({ stdout: "" }))).stdout.trim();
1744
+ const ahead = await git(["rev-list", "--count", `refs/heads/${changeBranch(changeId)}..refs/heads/${record.branch}`], worktree).then((x) => Number(x.stdout.trim()) || 0, () => 0);
1745
+ if (!head || !own && ahead === 0)
1746
+ throw new TaskRunError("refused", `Task ${taskId}'s branch ${record.branch} has nothing beyond ${changeBranch(changeId)} to build: run the task again.`);
1747
+ record.commit = head;
1748
+ const runId = record.runs[0] ?? `build-${stamp2(now()).replace(/[:]/g, "")}`;
1749
+ const a = await build(c, runId);
1750
+ if (c.stopped || stopRequested()) {
1751
+ record.state = "needs-person";
1752
+ record.notes.push(`Atticus was stopped while the build ran; Build and raise PR again.`);
1753
+ return await done(c);
1754
+ }
1755
+ if (!a.passed) {
1756
+ record.state = "needs-person";
1757
+ record.notes.push(`The build fails (${command}, exit ${a.exitCode ?? "none"}): fix it in ${record.worktree} and commit, then Build and raise PR again. See ${a.log}.`);
1758
+ return await done(c);
1759
+ }
1760
+ record.state = "built";
1761
+ record.notes.push(`Built with ${command}: it passes at ${head.slice(0, 12)}.`);
1762
+ await conformAfterBuild(c);
1763
+ if (o.approval && record.state === "built") {
1764
+ const host = o.gitHost ?? gitHostOf(root, t);
1765
+ if (host)
1766
+ c.gitHost = host;
1767
+ try {
1768
+ if (host)
1769
+ await openPr(c);
1770
+ else
1771
+ record.notes.push(`No Git host is connected (runtime.yaml adapters.gitHost): push ${record.branch} and open its PR into ${changeBranch(changeId)} yourself.`);
1772
+ } catch (e) {
1773
+ record.notes.push(`${PR_NOT_RAISED} ${e.message}`);
1774
+ }
1775
+ if (record.state === "pr-open")
1776
+ record.notes.push(`PR raised by ${o.approval.by} after the build (${o.approval.ref}).`);
1777
+ }
1778
+ return await done(c);
1779
+ } finally {
1780
+ await lock.release();
1781
+ }
1782
+ }
1662
1783
  async function isTaskRun(root, runId) {
1663
1784
  return await findWaitingTaskRun(root, runId) !== void 0;
1664
1785
  }
@@ -1667,7 +1788,8 @@ async function isTaskRun(root, runId) {
1667
1788
  var PAST = {
1668
1789
  waiting: "it is with your assistant: Done on its run carries on",
1669
1790
  built: "it is drafted: its PR is the next step",
1670
- unverified: "it is drafted but not built: its repo has no build command",
1791
+ // App-only audit: Build and raise PR builds it (once its repo has a build command), or Run again.
1792
+ unverified: "it is drafted but not built yet: Build and raise PR on its card builds it with its repo's build command, or Run again drafts it afresh",
1671
1793
  "pr-open": "its PR is open on the Git host",
1672
1794
  "needs-person": "it needs a person: carry on in its worktree, or Run with AI on it"
1673
1795
  };
@@ -1847,6 +1969,7 @@ export {
1847
1969
  runTask,
1848
1970
  completeTaskHandoff,
1849
1971
  raiseTaskPr,
1972
+ buildTask,
1850
1973
  isTaskRun,
1851
1974
  planReadyTasks,
1852
1975
  readyTasksOf,
@@ -10,7 +10,7 @@ function draftCheckTool(root, request) {
10
10
  if (!request.selfCheck || !/^(feature|architecture|stories|small)-answer\.yaml$/.test(request.outputPath))
11
11
  return void 0;
12
12
  let box;
13
- const planner = () => box ??= import("./chunk-NTAVOWYD.js").then((p) => p.draftCheckBox(root, request));
13
+ const planner = () => box ??= import("./chunk-APDN6UOR.js").then((p) => p.draftCheckBox(root, request));
14
14
  return {
15
15
  definitions: [
16
16
  {
@@ -3,40 +3,41 @@ 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 "./chunk-K6JB6XTX.js";
6
+ import "./chunk-PRMUQUWN.js";
7
7
  import {
8
8
  loadCatalog
9
- } from "./chunk-5QUOPNLN.js";
9
+ } from "./chunk-XGO74QWR.js";
10
10
  import {
11
11
  repoFor
12
- } from "./chunk-TGVVUKTG.js";
12
+ } from "./chunk-XOMEQVLK.js";
13
13
  import {
14
14
  recordFact,
15
15
  verifyScan
16
- } from "./chunk-P2VBXX7N.js";
17
- import "./chunk-ZOSD4FXV.js";
16
+ } from "./chunk-4ETO2FXE.js";
17
+ import "./chunk-FQVSLBTV.js";
18
18
  import {
19
19
  stepJudges
20
- } from "./chunk-BEPCKDCP.js";
21
- import "./chunk-HWD4JPU7.js";
22
- import "./chunk-5WERBKLE.js";
23
- import "./chunk-K332XW7K.js";
24
- import "./chunk-HSZMPH5T.js";
25
- import "./chunk-D2WSW4GU.js";
26
- import "./chunk-4KNOJC6J.js";
20
+ } from "./chunk-MLGWSBF4.js";
21
+ import "./chunk-CA3DKO4D.js";
22
+ import "./chunk-D6BVLTDV.js";
23
+ import "./chunk-RCG5IAAT.js";
24
+ import "./chunk-WZYM5M4U.js";
25
+ import "./chunk-NC755EKE.js";
26
+ import "./chunk-FL344WQD.js";
27
27
  import {
28
28
  checkScanSettings
29
- } from "./chunk-4SLBCEPD.js";
30
- import "./chunk-64AADMTW.js";
31
- import "./chunk-JYMIB5XY.js";
32
- import "./chunk-CPK7QSBG.js";
33
- import "./chunk-YO2PKTXT.js";
34
- import "./chunk-TWQRPM76.js";
35
- import "./chunk-XOL3GFW2.js";
36
- import "./chunk-QHJJMZLX.js";
29
+ } from "./chunk-IKAW2KJU.js";
30
+ import "./chunk-CZ2ZS7AT.js";
31
+ import "./chunk-4GAB5ZOZ.js";
32
+ import "./chunk-A4JXVO5O.js";
33
+ import "./chunk-TDSCKP3V.js";
34
+ import "./chunk-G6EFXTUO.js";
37
35
  import {
38
36
  fsRepo
39
- } from "./chunk-7AB6OWTV.js";
37
+ } from "./chunk-PQQKZPBU.js";
38
+ import "./chunk-3EWKO457.js";
39
+ import "./chunk-3424TLIJ.js";
40
+ import "./chunk-QA4O2GGC.js";
40
41
  import {
41
42
  SCAN_VERIFY_SCHEMA_VERSION,
42
43
  ScanSettings,
@@ -48,10 +49,12 @@ import {
48
49
  proposalsRelOf,
49
50
  questionsRelOf,
50
51
  raiseQuestions,
51
- require_dist,
52
52
  reusedLine
53
- } from "./chunk-PAINMSID.js";
54
- import "./chunk-ODMBPDDV.js";
53
+ } from "./chunk-FPBUTZI5.js";
54
+ import "./chunk-B4AEL3RF.js";
55
+ import {
56
+ require_dist
57
+ } from "./chunk-BQGDB6ZL.js";
55
58
  import {
56
59
  __toESM
57
60
  } from "./chunk-TV45EUGM.js";
@@ -5,18 +5,18 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  readCatalog
8
- } from "./chunk-4SLBCEPD.js";
8
+ } from "./chunk-IKAW2KJU.js";
9
9
  import {
10
10
  readDiagram,
11
11
  reconcile
12
- } from "./chunk-YO2PKTXT.js";
12
+ } from "./chunk-TDSCKP3V.js";
13
13
  import {
14
14
  loadOrgPack,
15
15
  orgPackDirOf,
16
16
  parseRecord,
17
17
  recordPath,
18
18
  serializeRecord
19
- } from "./chunk-PAINMSID.js";
19
+ } from "./chunk-FPBUTZI5.js";
20
20
 
21
21
  // packages/cli/dist/reconcile-commands.js
22
22
  import { mkdir, readdir, readFile, writeFile } from "node:fs/promises";
@@ -4,8 +4,10 @@ var require = __atticusCreateRequire(import.meta.url);
4
4
  var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
- parseRecord
8
- } from "./chunk-PAINMSID.js";
7
+ decodeText,
8
+ parseRecord,
9
+ walkRepo
10
+ } from "./chunk-FPBUTZI5.js";
9
11
 
10
12
  // packages/sdk/dist/parse-cache.js
11
13
  import { createHash } from "node:crypto";
@@ -332,8 +334,20 @@ function globToRegExp(glob) {
332
334
  }
333
335
 
334
336
  // packages/sdk/dist/fs-repo.js
335
- import { lstat, readdir, readFile, realpath, stat } from "node:fs/promises";
336
- import { join, relative, resolve, sep } from "node:path";
337
+ import { lstat, readFile, realpath, stat } from "node:fs/promises";
338
+ import { join, resolve, sep } from "node:path";
339
+
340
+ // packages/sdk/dist/listing.js
341
+ var LISTING = /* @__PURE__ */ Symbol.for("@maycombhq/sdk.listing");
342
+ function listingOf(repo) {
343
+ const v = repo[LISTING];
344
+ return typeof v === "string" ? v : "";
345
+ }
346
+ function setListing(repo, listing) {
347
+ Object.defineProperty(repo, LISTING, { value: listing, enumerable: false, configurable: true });
348
+ }
349
+
350
+ // packages/sdk/dist/fs-repo.js
337
351
  var DEFAULT_IGNORES = [
338
352
  ".git",
339
353
  "node_modules",
@@ -366,24 +380,12 @@ function fsRepo(name, dir, commit, options = {}) {
366
380
  let cache;
367
381
  const sizes = /* @__PURE__ */ new Map();
368
382
  const skipped = /* @__PURE__ */ new Map();
369
- async function walk(abs, out) {
370
- const entries = await readdir(abs, { withFileTypes: true });
371
- for (const e of entries) {
372
- if (e.isSymbolicLink())
373
- continue;
374
- const full = join(abs, e.name);
375
- if (e.isDirectory()) {
376
- if (!ignore.has(e.name))
377
- await walk(full, out);
378
- } else if (e.isFile()) {
379
- out.push(relative(root, full).split(sep).join("/"));
380
- }
381
- }
382
- }
383
383
  async function allFiles() {
384
384
  if (!cache) {
385
385
  const out = [];
386
- await walk(root, out);
386
+ await walkRepo(root, async (p) => void out.push(p), {
387
+ skipFolder: (_above, name2) => ignore.has(name2)
388
+ });
387
389
  cache = out.sort();
388
390
  }
389
391
  return cache;
@@ -407,7 +409,7 @@ function fsRepo(name, dir, commit, options = {}) {
407
409
  throw new RepoReadError(`file is larger than ${maxBytes} bytes: ${path}`, path);
408
410
  return abs;
409
411
  }
410
- return {
412
+ const handle = {
411
413
  name,
412
414
  commit,
413
415
  async *listFiles(globs) {
@@ -430,15 +432,16 @@ function fsRepo(name, dir, commit, options = {}) {
430
432
  return [...skipped].sort(([a], [b]) => a < b ? -1 : 1).map(([path, bytes]) => ({ path, bytes }));
431
433
  },
432
434
  async readText(path) {
433
- const text = await readFile(await safePath(path), "utf8");
434
- return text.charCodeAt(0) === 65279 ? text.slice(1) : text;
435
+ return decodeText(await readFile(await safePath(path)));
435
436
  }
436
437
  };
438
+ setListing(handle, JSON.stringify({ ignore: [...ignore].sort(), maxFileBytes: maxBytes, gitignore: true }));
439
+ return handle;
437
440
  }
438
441
 
439
442
  // packages/sdk/dist/cache.js
440
443
  import { createHash as createHash2 } from "node:crypto";
441
- import { mkdir, readdir as readdir2, readFile as readFile2, rename, rm, writeFile } from "node:fs/promises";
444
+ import { mkdir, readdir, readFile as readFile2, rename, rm, writeFile } from "node:fs/promises";
442
445
  import { join as join2 } from "node:path";
443
446
  var sha256 = (s) => createHash2("sha256").update(s).digest("hex");
444
447
  function cacheKeyHash(key) {
@@ -524,7 +527,7 @@ function fsScanCache(dir) {
524
527
  let removed = 0;
525
528
  let commits;
526
529
  try {
527
- commits = await readdir2(join2(dir, repo));
530
+ commits = await readdir(join2(dir, repo));
528
531
  } catch {
529
532
  return 0;
530
533
  }
@@ -635,7 +638,10 @@ async function scanWith(options) {
635
638
  options.configFor?.(extractor) ?? "",
636
639
  JSON.stringify(options.repoInfo ?? {}),
637
640
  // A changed framework model means a different reading of the same code.
638
- options.frameworks?.length ? JSON.stringify(options.frameworks) : ""
641
+ options.frameworks?.length ? JSON.stringify(options.frameworks) : "",
642
+ // Review round 49: the same commit listed another way (scan-settings exclusions, the
643
+ // folders left out, the size limit) gives the extractor other files.
644
+ listingOf(repo)
639
645
  ].join("|")
640
646
  };
641
647
  try {
@@ -5,10 +5,10 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  loadCatalog
8
- } from "./chunk-5QUOPNLN.js";
8
+ } from "./chunk-XGO74QWR.js";
9
9
  import {
10
10
  repoFor
11
- } from "./chunk-TGVVUKTG.js";
11
+ } from "./chunk-XOMEQVLK.js";
12
12
  import {
13
13
  checkDraft,
14
14
  checkFrameworkDraft,
@@ -22,25 +22,25 @@ import {
22
22
  proposalYaml,
23
23
  reviewRepo,
24
24
  surveyRepo
25
- } from "./chunk-P2VBXX7N.js";
25
+ } from "./chunk-4ETO2FXE.js";
26
26
  import {
27
27
  offerCodeDir
28
- } from "./chunk-ZOSD4FXV.js";
28
+ } from "./chunk-FQVSLBTV.js";
29
29
  import {
30
30
  matchRepoType
31
- } from "./chunk-4SLBCEPD.js";
31
+ } from "./chunk-IKAW2KJU.js";
32
32
  import {
33
33
  modelCovers,
34
34
  repoImports,
35
35
  runDialectTests,
36
36
  runFrameworkTests
37
- } from "./chunk-TWQRPM76.js";
38
- import {
39
- baseClonePath
40
- } from "./chunk-XOL3GFW2.js";
37
+ } from "./chunk-G6EFXTUO.js";
41
38
  import {
42
39
  fsRepo
43
- } from "./chunk-7AB6OWTV.js";
40
+ } from "./chunk-PQQKZPBU.js";
41
+ import {
42
+ baseClonePath
43
+ } from "./chunk-3EWKO457.js";
44
44
  import {
45
45
  Dialect,
46
46
  FrameworkModel,
@@ -50,16 +50,21 @@ import {
50
50
  orgPackDirOf,
51
51
  questionsRelOf,
52
52
  raiseQuestions,
53
- require_dist,
54
53
  reusedLine
55
- } from "./chunk-PAINMSID.js";
54
+ } from "./chunk-FPBUTZI5.js";
55
+ import {
56
+ renameRetrying
57
+ } from "./chunk-B4AEL3RF.js";
58
+ import {
59
+ require_dist
60
+ } from "./chunk-BQGDB6ZL.js";
56
61
  import {
57
62
  __toESM
58
63
  } from "./chunk-TV45EUGM.js";
59
64
 
60
65
  // packages/cli/dist/onboard-commands.js
61
66
  var import_yaml = __toESM(require_dist(), 1);
62
- import { mkdir, readFile, rename, stat, writeFile } from "node:fs/promises";
67
+ import { mkdir, readFile, stat, writeFile } from "node:fs/promises";
63
68
  import { join, resolve } from "node:path";
64
69
  var plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
65
70
  var proposalPath = (root, name) => join(root, "proposals", "dialects", `${name}.yaml`);
@@ -157,7 +162,7 @@ async function onboardAccept(root, name, o, io) {
157
162
  return 1;
158
163
  }
159
164
  await mkdir(join(orgPackDirOf(root), "dialects"), { recursive: true });
160
- await rename(from, to);
165
+ await renameRetrying(from, to);
161
166
  const types = parsed.data.appliesTo.repoTypes;
162
167
  io.out(`Accepted: org-pack/dialects/${name}.yaml. ${types.length ? `It applies to repos of type ${types.join(", ")}.` : `Add it to the repos it reads in repos.manifest.yaml: dialects: [${name}].`} Commit the org pack for review, as with any change to it.`);
163
168
  return 0;
@@ -392,7 +397,7 @@ async function onboardFrameworkAccept(root, name, o, io) {
392
397
  return 1;
393
398
  }
394
399
  await mkdir(join(orgPackDirOf(root), "frameworks"), { recursive: true });
395
- await rename(from, to);
400
+ await renameRetrying(from, to);
396
401
  io.out(`Accepted: org-pack/frameworks/${name}.yaml. Scans read every repo that imports ${model.packages.join(", ")} through it. Commit the org pack for review, as with any change to it.`);
397
402
  return 0;
398
403
  }