@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
@@ -6,11 +6,7 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  historyEntry,
8
8
  listHistory
9
- } from "./chunk-3WON4G3M.js";
10
- import "./chunk-JYTIHTIK.js";
11
- import {
12
- uiComponentTypeRoutes
13
- } from "./chunk-CG6CULP6.js";
9
+ } from "./chunk-7IOWA5D5.js";
14
10
  import {
15
11
  answerAudit,
16
12
  auditLines,
@@ -18,52 +14,20 @@ import {
18
14
  precisionOf,
19
15
  prepareAudit,
20
16
  writeAudit
21
- } from "./chunk-7FUIVIBG.js";
22
- import {
23
- listRuns,
24
- partStates,
25
- runTranscript
26
- } from "./chunk-BA2HUMDN.js";
17
+ } from "./chunk-AJQ72EBM.js";
27
18
  import {
28
19
  uiCiteRoutes
29
- } from "./chunk-WCEF7H6L.js";
20
+ } from "./chunk-QFWA2DPH.js";
21
+ import "./chunk-X3WY6MN3.js";
30
22
  import {
31
23
  isHandoffStep
32
24
  } from "./chunk-4Q3NN7VF.js";
33
25
  import {
34
- estimateOf
35
- } from "./chunk-WFU77T3A.js";
36
- import {
37
- changeMapBody,
38
- changeMapOf,
39
- targetFlowsOf
40
- } from "./chunk-GNWAOVFQ.js";
41
- import {
42
- changeArchive,
43
- changeHandoff,
44
- changeNew,
45
- changeReleasePrs,
46
- changeSync
47
- } from "./chunk-COYN3UAN.js";
48
- import {
49
- isSandbox,
50
- learnCheck,
51
- learnStart,
52
- lessonsFor,
53
- readProgress,
54
- sandboxCreate
55
- } from "./chunk-ZQLRCA2V.js";
56
- import {
57
- defencesScan,
58
- evalRun
59
- } from "./chunk-FVMPFCDS.js";
60
- import {
61
- listReports,
62
- readQuality
63
- } from "./chunk-FYBF5MB2.js";
26
+ uiComponentTypeRoutes
27
+ } from "./chunk-NDCF4R6S.js";
64
28
  import {
65
29
  conformanceCommand
66
- } from "./chunk-G5YJBNDZ.js";
30
+ } from "./chunk-J3IOLXWM.js";
67
31
  import {
68
32
  outcomeList,
69
33
  outcomeRecord,
@@ -72,118 +36,172 @@ import {
72
36
  releaseNotesCommand,
73
37
  releasePlanCommand,
74
38
  releaseSecurityCommand
75
- } from "./chunk-AZDITBCT.js";
39
+ } from "./chunk-OHVTTOPS.js";
76
40
  import {
77
- readServiceRequests
78
- } from "./chunk-36RY7ZXM.js";
79
- import {
80
- runDone,
81
- taskRun,
82
- taskRunNotWaiting
83
- } from "./chunk-AOCWFA7T.js";
41
+ listRuns,
42
+ partStates,
43
+ runTranscript
44
+ } from "./chunk-GZY6RUZ6.js";
84
45
  import {
85
46
  executorsCheck,
86
47
  todoDone,
87
48
  todoRun,
88
49
  todoShow
89
- } from "./chunk-ZFQMMU5Y.js";
50
+ } from "./chunk-JB5LINEM.js";
90
51
  import {
91
52
  inputsSha256,
92
53
  loadExecutors
93
- } from "./chunk-DDJPM5YX.js";
54
+ } from "./chunk-6OJQOPUN.js";
94
55
  import {
95
- initiativeStatus,
96
- readView
97
- } from "./chunk-2V2ZPQQU.js";
56
+ isSandbox,
57
+ learnCheck,
58
+ learnStart,
59
+ lessonsFor,
60
+ readProgress,
61
+ sandboxCreate
62
+ } from "./chunk-VW62D6QE.js";
98
63
  import {
99
- DecideError,
100
- correctDecision,
101
- decisionsView,
102
- undoBatch
103
- } from "./chunk-UYLBRRFK.js";
64
+ defencesScan,
65
+ evalRun
66
+ } from "./chunk-WKUJ3KPV.js";
67
+ import {
68
+ listReports,
69
+ readQuality
70
+ } from "./chunk-RXPJMEOW.js";
71
+ import {
72
+ estimateOf
73
+ } from "./chunk-BDKC6H5P.js";
74
+ import {
75
+ changeMapBody,
76
+ changeMapOf,
77
+ targetFlowsOf
78
+ } from "./chunk-IH2XURVQ.js";
79
+ import {
80
+ changeArchive,
81
+ changeHandoff,
82
+ changeNew,
83
+ changeReleasePrs,
84
+ changeSync,
85
+ syncAfterManualStep
86
+ } from "./chunk-O7XLYEFA.js";
104
87
  import {
105
88
  boxesOf,
106
89
  candidatesOf,
107
90
  uiLinkRoutes
108
- } from "./chunk-6DQYZU2W.js";
91
+ } from "./chunk-LFGTYX5U.js";
109
92
  import {
110
93
  matchDone,
111
94
  quotesOf,
112
95
  readMatch,
113
96
  runMatch
114
- } from "./chunk-QJCJOMW3.js";
115
- import "./chunk-3SSTNB4E.js";
116
- import "./chunk-JRVNXLZP.js";
97
+ } from "./chunk-E3ISYXO3.js";
98
+ import "./chunk-2LGRMVCA.js";
99
+ import "./chunk-VCTWPLAO.js";
117
100
  import {
118
- copilotAcpAllowed
119
- } from "./chunk-LIJJCBQI.js";
120
- import "./chunk-26Z7OGQW.js";
121
- import "./chunk-OKUB6RJA.js";
101
+ readServiceRequests
102
+ } from "./chunk-WF7B67YE.js";
103
+ import {
104
+ initiativeStatus,
105
+ readView
106
+ } from "./chunk-6PPOWY5E.js";
107
+ import {
108
+ runDone,
109
+ taskRun,
110
+ taskRunNotWaiting
111
+ } from "./chunk-VTZMAJ3W.js";
122
112
  import {
123
113
  filesUnder,
124
114
  memoByFiles,
125
115
  recheckNow,
126
116
  uiFactsRoutes
127
- } from "./chunk-QOOEYDNJ.js";
117
+ } from "./chunk-AJYXNTNZ.js";
128
118
  import {
129
119
  HttpError,
130
120
  badRequest,
131
121
  conflict,
132
122
  notFound,
123
+ requireConfirmation,
133
124
  startServer,
134
125
  strParam
135
- } from "./chunk-HK3VOHIE.js";
126
+ } from "./chunk-C3RY6KU6.js";
127
+ import {
128
+ DecideError,
129
+ correctDecision,
130
+ decisionsView,
131
+ undoBatch
132
+ } from "./chunk-DCZWQLYT.js";
133
+ import {
134
+ copilotAcpAllowed
135
+ } from "./chunk-6ZJ5A7AF.js";
136
+ import "./chunk-X5F3Q5LV.js";
137
+ import "./chunk-VBTP56CE.js";
136
138
  import {
137
139
  safeMessage,
138
140
  withFileLock
139
- } from "./chunk-THN26IEF.js";
140
- import "./chunk-LN77DXBM.js";
141
- import "./chunk-L4CESDPB.js";
142
- import "./chunk-U3NBK4EU.js";
143
- import "./chunk-455SYIIE.js";
141
+ } from "./chunk-S7FCV7S5.js";
142
+ import {
143
+ readRepos
144
+ } from "./chunk-YYY3AZFE.js";
145
+ import "./chunk-RGERPOIV.js";
146
+ import "./chunk-OUBGGKDU.js";
147
+ import "./chunk-XI2LCCYQ.js";
148
+ import "./chunk-BPK5P77O.js";
149
+ import {
150
+ digestCommand
151
+ } from "./chunk-7DOR27HL.js";
144
152
  import {
145
153
  reconcileCommand
146
- } from "./chunk-YZDZOEV4.js";
154
+ } from "./chunk-KDNTAPLX.js";
147
155
  import {
148
156
  sourcesAdd,
149
157
  sourcesSync
150
- } from "./chunk-HXXP2NTE.js";
158
+ } from "./chunk-KQGURXFU.js";
151
159
  import {
152
160
  INPUTS_SOURCE_ID
153
- } from "./chunk-D57MFJPP.js";
154
- import "./chunk-5QUOPNLN.js";
155
- import {
156
- readRepos
157
- } from "./chunk-4TKVU2I2.js";
161
+ } from "./chunk-D73UEXYW.js";
162
+ import "./chunk-OHNCWBKF.js";
158
163
  import {
159
164
  uiOnboardingRoutes
160
- } from "./chunk-PNQLCRSS.js";
161
- import "./chunk-3J5I7ZOU.js";
165
+ } from "./chunk-7JITZFJC.js";
166
+ import "./chunk-EHA7RMZ3.js";
162
167
  import {
163
168
  uiTrustRoutes
164
- } from "./chunk-4FOAYLI4.js";
169
+ } from "./chunk-OWNCM4ZN.js";
165
170
  import {
166
171
  contractCheckOf,
167
172
  estateJoinOnFile,
168
173
  stampOf
169
- } from "./chunk-GX74YWR7.js";
170
- import "./chunk-G6IQYM25.js";
171
- import "./chunk-LPV6T362.js";
174
+ } from "./chunk-T6DQR5TV.js";
175
+ import "./chunk-WXFLMQSR.js";
176
+ import "./chunk-TYQBFTBR.js";
172
177
  import {
173
- digestCommand
174
- } from "./chunk-X2CUXTWU.js";
178
+ checkoutOf
179
+ } from "./chunk-2F4CYZKJ.js";
180
+ import "./chunk-LO6P2VYG.js";
181
+ import {
182
+ intakeContext
183
+ } from "./chunk-SFUP7TTO.js";
184
+ import "./chunk-7FTTA3HD.js";
185
+ import "./chunk-ZQ3ON2VQ.js";
175
186
  import {
176
187
  baselineCommand,
177
188
  setupSteps
178
- } from "./chunk-GK4PYVEC.js";
189
+ } from "./chunk-AFWUDXEM.js";
190
+ import {
191
+ catalogRecords,
192
+ openChanges,
193
+ systemGuide
194
+ } from "./chunk-GUX3PTYM.js";
179
195
  import {
180
196
  doctorChecks
181
- } from "./chunk-HGHRSF3E.js";
182
- import "./chunk-4B6BT75O.js";
197
+ } from "./chunk-EGQRREQH.js";
198
+ import "./chunk-3G4YI4ZU.js";
199
+ import "./chunk-P2V7QW4D.js";
200
+ import "./chunk-Z5IA3WDR.js";
183
201
  import {
184
202
  readMe,
185
203
  writeMe
186
- } from "./chunk-UF4UHCIG.js";
204
+ } from "./chunk-2Q56PQPS.js";
187
205
  import {
188
206
  cancelTaskRunWait,
189
207
  findTaskRunOfRun,
@@ -196,63 +214,38 @@ import {
196
214
  settleTaskPr,
197
215
  stopAllBuilds,
198
216
  taskRunOfRun
199
- } from "./chunk-Y6K3CJBU.js";
200
- import "./chunk-GIFMBCTW.js";
201
- import "./chunk-MD7KUEJ3.js";
202
- import {
203
- checkoutOf
204
- } from "./chunk-Q46QDDMF.js";
205
- import "./chunk-TGVVUKTG.js";
206
- import {
207
- intakeContext
208
- } from "./chunk-TQ4TG57V.js";
217
+ } from "./chunk-6MUGR4LS.js";
209
218
  import {
210
219
  workspaceOpen,
211
220
  workspaceSync
212
- } from "./chunk-IFHDV6KQ.js";
213
- import "./chunk-LQH4P45K.js";
214
- import "./chunk-P2VBXX7N.js";
221
+ } from "./chunk-DOBQKHIF.js";
222
+ import "./chunk-JENSEMXF.js";
223
+ import "./chunk-O7FDLW7L.js";
224
+ import {
225
+ planStories,
226
+ snowDraft,
227
+ snowSubmit
228
+ } from "./chunk-HNM2YQT2.js";
229
+ import "./chunk-PAQ2AS5E.js";
215
230
  import {
216
- archiveGate,
217
231
  ciArchiveGate
218
- } from "./chunk-ZX7235KR.js";
232
+ } from "./chunk-RUGXBPWI.js";
219
233
  import {
220
234
  traceMatrix
221
- } from "./chunk-EZIN5E5B.js";
222
- import "./chunk-3LZ6P5EP.js";
235
+ } from "./chunk-BTGPE6CR.js";
236
+ import "./chunk-MUWDB4R4.js";
237
+ import {
238
+ archiveGate
239
+ } from "./chunk-ZQ7SKESZ.js";
223
240
  import {
224
241
  scanCommand
225
- } from "./chunk-NCB6656Z.js";
226
- import "./chunk-TYD6I4CZ.js";
242
+ } from "./chunk-TNR75OXT.js";
243
+ import "./chunk-MFR5OPBD.js";
227
244
  import {
228
245
  readChangeTasks,
229
246
  readStory,
230
247
  setTaskDone
231
- } from "./chunk-YWAKDNMH.js";
232
- import {
233
- catalogRecords,
234
- openChanges,
235
- systemGuide
236
- } from "./chunk-FY3QIRTL.js";
237
- import "./chunk-3G4YI4ZU.js";
238
- import "./chunk-2HTEMYTB.js";
239
- import {
240
- ASSISTANT_FORMATS,
241
- readProbes,
242
- whatRunsWhere
243
- } from "./chunk-3AQ2R5NL.js";
244
- import {
245
- critic,
246
- criticStats,
247
- findingAction
248
- } from "./chunk-PTQ3ZALZ.js";
249
- import "./chunk-A2G72UI4.js";
250
- import {
251
- planStories,
252
- snowDraft,
253
- snowSubmit
254
- } from "./chunk-I2A3Z5AK.js";
255
- import "./chunk-F6H2RJ3N.js";
248
+ } from "./chunk-UGUP3ZM6.js";
256
249
  import {
257
250
  CORRECTIONS_FILE,
258
251
  FEATURE_FILE,
@@ -289,15 +282,26 @@ import {
289
282
  stageComments,
290
283
  stageGate,
291
284
  writeSketch
292
- } from "./chunk-BEPCKDCP.js";
285
+ } from "./chunk-R7NYHMUU.js";
293
286
  import {
294
287
  FeaturePlacement,
295
288
  STAGES,
296
289
  STAGE_PHASE,
297
290
  fieldNames,
298
291
  rerunOf
299
- } from "./chunk-HWD4JPU7.js";
300
- import "./chunk-5WERBKLE.js";
292
+ } from "./chunk-IVBOQAGB.js";
293
+ import "./chunk-ISUAAMGS.js";
294
+ import {
295
+ ASSISTANT_FORMATS,
296
+ readProbes,
297
+ whatRunsWhere
298
+ } from "./chunk-BEVTIBRH.js";
299
+ import {
300
+ critic,
301
+ criticStats,
302
+ findingAction
303
+ } from "./chunk-UF4AZOZB.js";
304
+ import "./chunk-YHCMZC2J.js";
301
305
  import "./chunk-VOGCSYOI.js";
302
306
  import {
303
307
  layerRules,
@@ -311,7 +315,7 @@ import {
311
315
  readStoryIndex,
312
316
  reviewedGates,
313
317
  roundsOf
314
- } from "./chunk-K332XW7K.js";
318
+ } from "./chunk-S4PMJU6H.js";
315
319
  import {
316
320
  ChangeOwnersError,
317
321
  artifactFiles,
@@ -325,13 +329,13 @@ import {
325
329
  loadChangeContext,
326
330
  requiredArtifacts,
327
331
  setChangeOwners
328
- } from "./chunk-HSZMPH5T.js";
329
- import "./chunk-D2WSW4GU.js";
332
+ } from "./chunk-IDKCWSM5.js";
333
+ import "./chunk-UUU4CLJG.js";
330
334
  import {
331
335
  fileStepStore,
332
336
  manualAdapter,
333
337
  stepOfProvisional
334
- } from "./chunk-4KNOJC6J.js";
338
+ } from "./chunk-7IGKHZ4Z.js";
335
339
  import {
336
340
  componentRenames,
337
341
  estateFacts,
@@ -343,7 +347,7 @@ import {
343
347
  outsideProfileSystems,
344
348
  readCatalog,
345
349
  targetPicker
346
- } from "./chunk-4SLBCEPD.js";
350
+ } from "./chunk-J2JAKCIW.js";
347
351
  import {
348
352
  OrgPackProposal,
349
353
  SNAPSHOT_FILE,
@@ -367,38 +371,40 @@ import {
367
371
  snapshotDates,
368
372
  snapshotSources,
369
373
  writeReview
370
- } from "./chunk-64AADMTW.js";
374
+ } from "./chunk-745DAZ4L.js";
371
375
  import {
372
376
  NoSuchNode,
373
377
  buildEstate,
374
378
  focusView,
375
379
  nodeView,
376
380
  viewKey
377
- } from "./chunk-JYMIB5XY.js";
381
+ } from "./chunk-CXJ6FUKN.js";
378
382
  import {
379
383
  readServiceRequestExports,
380
384
  readVendorSpec,
381
385
  readWorkItemExports
382
- } from "./chunk-CPK7QSBG.js";
383
- import "./chunk-YO2PKTXT.js";
384
- import "./chunk-TWQRPM76.js";
385
- import "./chunk-VUVGX5L2.js";
386
- import "./chunk-API5TOUB.js";
386
+ } from "./chunk-QKUJMING.js";
387
+ import "./chunk-6ZGLAACW.js";
388
+ import "./chunk-CQDGOPGH.js";
389
+ import "./chunk-3NFFJL5D.js";
390
+ import "./chunk-F3P7N7SF.js";
391
+ import "./chunk-UPS2DGFC.js";
387
392
  import {
388
393
  baseClonePath,
389
394
  loadRepos,
390
395
  readChangeRepos
391
- } from "./chunk-XOL3GFW2.js";
396
+ } from "./chunk-PKBHS4AA.js";
392
397
  import {
393
398
  COMMON_SETTINGS,
394
399
  PROVIDER_SETTINGS,
395
400
  defaultKeyStore,
401
+ keyEnvFromEnvironment,
396
402
  looksLikeKey
397
- } from "./chunk-PRW3HXM3.js";
403
+ } from "./chunk-LYBNHMVZ.js";
398
404
  import {
399
405
  providerFactoryFor
400
- } from "./chunk-QHJJMZLX.js";
401
- import "./chunk-7AB6OWTV.js";
406
+ } from "./chunk-P32RUW3B.js";
407
+ import "./chunk-QA4O2GGC.js";
402
408
  import {
403
409
  ASSISTANTS,
404
410
  ChangeArtifact,
@@ -467,7 +473,6 @@ import {
467
473
  readQuestion,
468
474
  readRepoSpec,
469
475
  readSharedMaps,
470
- require_dist,
471
476
  runsDirOf,
472
477
  runsRelOf,
473
478
  setManifestField,
@@ -475,13 +480,16 @@ import {
475
480
  specRelOf,
476
481
  specRepos,
477
482
  undeclareLink
478
- } from "./chunk-PAINMSID.js";
483
+ } from "./chunk-Q2TECDIT.js";
479
484
  import {
480
485
  FileChangedError,
481
486
  createLog,
482
487
  writeFileAtomic,
483
488
  writeFileIfUnchanged
484
- } from "./chunk-ODMBPDDV.js";
489
+ } from "./chunk-TUULXQRW.js";
490
+ import {
491
+ require_dist
492
+ } from "./chunk-BQGDB6ZL.js";
485
493
  import {
486
494
  __toESM
487
495
  } from "./chunk-TV45EUGM.js";
@@ -776,8 +784,9 @@ async function artifactPath(root, id, artifact, o = {}) {
776
784
  }
777
785
  function uiRoutes(r, ctx, deps = {}) {
778
786
  const { root, user, jobs } = ctx;
787
+ const confirmed2 = (write, target, given) => requireConfirmation(ctx.confirmations, write, target, given);
779
788
  const readyView = async (change) => {
780
- const { deployOrderOf } = await import("./chunk-JKIGL3XQ.js");
789
+ const { deployOrderOf } = await import("./chunk-SYV5LHML.js");
781
790
  const repoOrder = await deployOrderOf(root, change);
782
791
  const prStates = /* @__PURE__ */ new Map();
783
792
  for (const t of await taskViews(root, change, {
@@ -814,7 +823,7 @@ function uiRoutes(r, ctx, deps = {}) {
814
823
  return { status: 202, body: { jobId: job.id } };
815
824
  };
816
825
  return r.add("POST", "/api/facts/{repo}/apply", async ({ params }) => {
817
- const { verifyCommand } = await import("./chunk-T74WQQGS.js");
826
+ const { verifyCommand } = await import("./chunk-PSOFBQWB.js");
818
827
  const repo = params.repo;
819
828
  if (!FACTS_REPO.test(repo))
820
829
  throw badRequest(`${JSON.stringify(repo)} isn't a repo name.`);
@@ -822,25 +831,26 @@ function uiRoutes(r, ctx, deps = {}) {
822
831
  throw notFound(`There is no repo ${repo} in this workspace.`);
823
832
  return asJob(`Applying to ${repo}`, () => run((io) => verifyCommand(root, repo, { write: true, verbose: false, json: false }, io)));
824
833
  }).add("GET", "/api/upgrade", async () => {
825
- const { upgradeCheck } = await import("./chunk-AM6FP6JW.js");
834
+ const { newerAtticusOf, upgradeCheck } = await import("./chunk-AVTBS4OW.js");
826
835
  const c = await upgradeCheck(root);
836
+ const stamp2 = c.stamp?.atticus ?? newerAtticusOf(c);
827
837
  const body = {
828
838
  atticus: c.atticus,
829
839
  newer: c.newer,
830
- ...c.stamp ? { stamp: c.stamp.atticus } : {},
840
+ ...stamp2 ? { stamp: stamp2 } : {},
831
841
  pending: c.pending
832
842
  };
833
843
  return { status: 200, body };
834
844
  }).add("POST", "/api/upgrade", async () => {
835
- const { upgradeCheck, upgradeCommand } = await import("./chunk-AM6FP6JW.js");
845
+ const { newerThan, newerWords, upgradeCheck, upgradeCommand } = await import("./chunk-AVTBS4OW.js");
836
846
  const c = await upgradeCheck(root);
837
847
  if (c.newer)
838
- throw conflict(`This metarepo was upgraded by Atticus ${c.stamp.atticus}; this is ${c.atticus}. Install ${c.stamp.atticus} or later first.`);
839
- if (!c.pending.length)
848
+ throw conflict(newerWords(c));
849
+ if (!c.pending.length && c.stamp && !newerThan(c.atticus, c.stamp.atticus))
840
850
  throw conflict(`Nothing to upgrade: up to date for Atticus ${c.atticus}.`);
841
851
  return asJob("Upgrading the metarepo", () => run((io) => upgradeCommand(root, { by: user }, io)));
842
852
  }).add("GET", "/api/propose", async ({ query }) => {
843
- const { proposePlan, PROPOSE_SCOPES } = await import("./chunk-UZACEG2C.js");
853
+ const { proposePlan, PROPOSE_SCOPES } = await import("./chunk-EMRIQUND.js");
844
854
  const scope = query.get("scope") ?? "";
845
855
  if (!PROPOSE_SCOPES.includes(scope))
846
856
  throw refused({
@@ -862,7 +872,8 @@ function uiRoutes(r, ctx, deps = {}) {
862
872
  return { status: 200, body: { ...plan, applyFirst: await applyFirstOf(root, plan.files) } };
863
873
  }).add("POST", "/api/propose", async ({ body }) => {
864
874
  const b = parseBody(api_exports.ProposeRequest, body);
865
- const { proposeForReview } = await import("./chunk-UZACEG2C.js");
875
+ confirmed2("propose", b.scope, b.confirmation);
876
+ const { proposeForReview } = await import("./chunk-EMRIQUND.js");
866
877
  return asJob("Proposing for review", () => run((io) => proposeForReview(root, {
867
878
  scope: b.scope,
868
879
  by: user,
@@ -871,11 +882,11 @@ function uiRoutes(r, ctx, deps = {}) {
871
882
  ...b.branch ? { branch: b.branch } : {}
872
883
  }, io)));
873
884
  }).add("POST", "/api/propose/bring-in", async () => {
874
- const { bringInMerged } = await import("./chunk-UZACEG2C.js");
885
+ const { bringInMerged } = await import("./chunk-EMRIQUND.js");
875
886
  return asJob("Bringing in what merged", () => run((io) => bringInMerged(root, io)));
876
887
  }).add("POST", "/api/changes/{changeId}/conformance", async ({ params }) => {
877
888
  await readChange(root, params.changeId);
878
- const { changeConformCommand } = await import("./chunk-5CMPVC3N.js");
889
+ const { changeConformCommand } = await import("./chunk-5SJZW52K.js");
879
890
  return asJob(`Checking ${params.changeId}'s code against its design`, () => run((io) => changeConformCommand(root, params.changeId, { findingsAnswer: true }, io)));
880
891
  }).add("GET", "/api/change-types", async () => {
881
892
  const op = await loadOrgPack(orgPackDirOf(root));
@@ -978,7 +989,7 @@ function uiRoutes(r, ctx, deps = {}) {
978
989
  throw conflict(`${rel} changed since you opened it. Reload it, then make your edit again.`);
979
990
  await mkdir(dirname2(file), { recursive: true });
980
991
  await writeFileIfUnchanged(file, was, b.content);
981
- const { recordPersonSave: recordPersonSave2 } = await import("./chunk-NTAVOWYD.js");
992
+ const { recordPersonSave: recordPersonSave2 } = await import("./chunk-NY2XSR5K.js");
982
993
  await recordPersonSave2(join2(changesDirOf(root), params.changeId), params.changeId, {
983
994
  file: rel,
984
995
  who: user,
@@ -1101,12 +1112,14 @@ function uiRoutes(r, ctx, deps = {}) {
1101
1112
  };
1102
1113
  });
1103
1114
  return { status: 202, body: api_exports.RunReadyAccepted.parse({ jobId: job.id, tasks }) };
1104
- }).add("POST", "/api/changes/{changeId}/tasks/{taskId}/pr", async ({ params }) => {
1115
+ }).add("POST", "/api/changes/{changeId}/tasks/{taskId}/pr", async ({ params, body }) => {
1105
1116
  await readChange(root, params.changeId);
1106
1117
  const change = params.changeId;
1107
1118
  const task = params.taskId;
1119
+ const b = parseBody(api_exports.ConfirmedRequest, body ?? {});
1108
1120
  if (!(await taskViews(root, change)).some((t) => t.id === task))
1109
1121
  throw notFound(`Change ${change} has no task ${task}.`);
1122
+ confirmed2("task-pr", `${change}/${task}`, b.confirmation);
1110
1123
  let raised;
1111
1124
  try {
1112
1125
  raised = await raiseTaskPr(root, change, task, {
@@ -1148,6 +1161,7 @@ function uiRoutes(r, ctx, deps = {}) {
1148
1161
  }).add("POST", "/api/changes/{changeId}/handoff", async ({ params, body }) => {
1149
1162
  await readChange(root, params.changeId);
1150
1163
  const b = parseBody(api_exports.HandoffRequest, body);
1164
+ confirmed2("handoff", params.changeId, b.confirmation);
1151
1165
  const res = await run((io) => changeHandoff(root, params.changeId, { by: user, approve: true, ...b.repo ? { repo: b.repo } : {} }, io, changeDeps));
1152
1166
  if (res.code !== 0)
1153
1167
  throw refused(res);
@@ -1158,7 +1172,8 @@ function uiRoutes(r, ctx, deps = {}) {
1158
1172
  }).add("POST", "/api/changes/{changeId}/release-prs", async ({ params, body }) => {
1159
1173
  const id = params.changeId;
1160
1174
  await readChange(root, id);
1161
- parseBody(api_exports.ReleasePrsRequest, body);
1175
+ const b = parseBody(api_exports.ReleasePrsRequest, body);
1176
+ confirmed2("release-prs", id, b.confirmation);
1162
1177
  const res = await run((io) => changeReleasePrs(root, id, { by: user, approve: true }, io, changeDeps));
1163
1178
  ctx.events.publish({ type: "file.changed", path: `${id}/repos.yaml` });
1164
1179
  if (res.code !== 0)
@@ -1167,10 +1182,13 @@ function uiRoutes(r, ctx, deps = {}) {
1167
1182
  }).add("POST", "/api/changes/{changeId}/sync", async ({ params, body }) => {
1168
1183
  await readChange(root, params.changeId);
1169
1184
  const b = parseBody(api_exports.SyncRequest, body);
1170
- const res = await run((io) => changeSync(root, params.changeId, { by: user, approve: true, ...b.repo ? { repo: b.repo } : {} }, io, changeDeps));
1185
+ const approve = b.confirmation !== void 0;
1186
+ if (approve)
1187
+ confirmed2("merge", params.changeId, b.confirmation);
1188
+ const res = await run((io) => changeSync(root, params.changeId, { by: user, approve, ...b.repo ? { repo: b.repo } : {} }, io, changeDeps));
1171
1189
  if (res.code === 2)
1172
1190
  throw refused(res);
1173
- const { appLines } = await import("./chunk-J2O4LFVI.js");
1191
+ const { appLines } = await import("./chunk-CBGGOQWU.js");
1174
1192
  return {
1175
1193
  status: 200,
1176
1194
  body: {
@@ -1180,14 +1198,14 @@ function uiRoutes(r, ctx, deps = {}) {
1180
1198
  };
1181
1199
  }).add("GET", "/api/changes/{changeId}/inputs", async ({ params }) => {
1182
1200
  const c = await readChange(root, params.changeId);
1183
- const { readChangeInputs } = await import("./chunk-UDXWIPCB.js");
1201
+ const { readChangeInputs } = await import("./chunk-RLDGWLQ7.js");
1184
1202
  return {
1185
1203
  status: 200,
1186
1204
  body: api_exports.ChangeInputList.parse(await readChangeInputs(join2(changesDirOf(root), c.id)))
1187
1205
  };
1188
1206
  }).add("GET", "/api/changes/{changeId}/prototypes", async ({ params }) => {
1189
1207
  const c = await readChange(root, params.changeId);
1190
- const { changePrototypes } = await import("./chunk-VYOCPTUB.js");
1208
+ const { changePrototypes } = await import("./chunk-7ASNL4Q4.js");
1191
1209
  return {
1192
1210
  status: 200,
1193
1211
  body: api_exports.ChangePrototypeList.parse(await changePrototypes(root, c.id))
@@ -1195,7 +1213,7 @@ function uiRoutes(r, ctx, deps = {}) {
1195
1213
  }).add("POST", "/api/changes/{changeId}/prototypes", async ({ params, body }) => {
1196
1214
  const c = await readChange(root, params.changeId);
1197
1215
  const b = parseBody(api_exports.ComparePrototypeRequest, body);
1198
- const { attachPrototype, changePrototypes } = await import("./chunk-VYOCPTUB.js");
1216
+ const { attachPrototype, changePrototypes } = await import("./chunk-7ASNL4Q4.js");
1199
1217
  const res = await run((io) => attachPrototype(root, c.id, b.repo, { by: user, ...deps.now ? { now: new Date(deps.now) } : {} }, io));
1200
1218
  if (res.code !== 0)
1201
1219
  throw refused(res);
@@ -1213,7 +1231,7 @@ function uiRoutes(r, ctx, deps = {}) {
1213
1231
  const bytes = new Uint8Array(Buffer.from(b.content, "base64"));
1214
1232
  if (bytes.length > MAX_ATTACH)
1215
1233
  throw new HttpError(413, "The file is too large", "Attach a file of 15 MB or less.");
1216
- const { attachFiles } = await import("./chunk-XQ3YZ4QW.js");
1234
+ const { attachFiles } = await import("./chunk-LDLL7LB3.js");
1217
1235
  const r2 = await attachFiles(root, c.id, [{ name: b.name, bytes }], user);
1218
1236
  if (!r2.added.length)
1219
1237
  throw new HttpError(422, "Atticus can't attach that", r2.refused[0]?.why ?? "", {
@@ -1332,11 +1350,11 @@ function uiRoutes(r, ctx, deps = {}) {
1332
1350
  }
1333
1351
  const after = await findRun(root, params.runId);
1334
1352
  ctx.events.publish({ type: "run.changed", runId: after.runId, state: after.state });
1335
- const { resumeAfterDone, appLines } = await import("./chunk-J2O4LFVI.js");
1353
+ const { resumeAfterDone, appLines } = await import("./chunk-CBGGOQWU.js");
1336
1354
  if (res.code !== 0)
1337
1355
  throw refused({ ...res, out: appLines(res.out), err: appLines(res.err) });
1338
1356
  const stepRunner = deps.runStep ?? (async (args) => {
1339
- const { main } = await import("./chunk-7FHNFCHK.js");
1357
+ const { main } = await import("./chunk-IUPG3UKI.js");
1340
1358
  const out = [];
1341
1359
  const err = [];
1342
1360
  const code = await main([...args, "--root", root], { out: (l) => out.push(l), err: (l) => err.push(l) }, { quiet: true });
@@ -1481,6 +1499,9 @@ function uiRoutes(r, ctx, deps = {}) {
1481
1499
  return { status: 202, body: { jobId: job.id } };
1482
1500
  }).add("POST", "/api/workspace/sync", ({ body }) => {
1483
1501
  const b = parseBody(api_exports.ScanRequest.pick({ repos: true }), body);
1502
+ const busy = jobs.runningOf("sync");
1503
+ if (busy)
1504
+ throw conflict(`A sync is already running (${busy.id}): wait for it to finish.`);
1484
1505
  const job = jobs.start("sync", async (c) => {
1485
1506
  c.progress(0, 1, "Syncing base clones");
1486
1507
  const res = await run((io) => workspaceSync(root, b.repos, io));
@@ -1490,6 +1511,9 @@ function uiRoutes(r, ctx, deps = {}) {
1490
1511
  return { status: 202, body: { jobId: job.id } };
1491
1512
  }).add("POST", "/api/reconcile", ({ body }) => {
1492
1513
  const b = parseBody(api_exports.ReconcileRequest, body);
1514
+ const busy = jobs.runningOf("reconcile");
1515
+ if (busy)
1516
+ throw conflict(`A reconcile is already running (${busy.id}): wait for it to finish.`);
1493
1517
  const job = jobs.start("reconcile", async (c) => {
1494
1518
  c.progress(0, 1, `Reconciling ${b.diagram}`);
1495
1519
  const res = await run((io) => reconcileCommand(root, [b.diagram], { json: true }, io));
@@ -1729,19 +1753,16 @@ function uiRunRoutes(r, ctx, deps = {}) {
1729
1753
  const pack = () => loadOrgPack(orgPackDirOf(root));
1730
1754
  const rel = deps.now ? { now: () => new Date(deps.now) } : {};
1731
1755
  const syncAfterStep = async (s) => {
1732
- if (s.system !== "git-host" || !s.change || s.state === "open")
1733
- return void 0;
1734
- const c = await changeStore(root).tryRead(s.change).catch(() => void 0);
1735
- const live = c && c.state !== "returned" ? liveHandoff(c) : void 0;
1736
- const steps = await fileStepStore(root).list({ change: s.change, system: "git-host" });
1737
- const open = s.action === "open-pull-request" ? s : steps.find((x) => x.action === "open-pull-request" && s.dependsOn.includes(x.id));
1738
- if (!live || !open || open.inputs.head !== live.branch)
1756
+ let synced = false;
1757
+ const res = await run2(async (io) => {
1758
+ synced = await syncAfterManualStep(root, s, user, io, {
1759
+ ...deps.gitHost ? { gitHost: deps.gitHost } : {},
1760
+ ...deps.now ? { now: deps.now } : {}
1761
+ });
1762
+ return 0;
1763
+ });
1764
+ if (!synced)
1739
1765
  return void 0;
1740
- const repo = typeof open.inputs.repo === "string" ? open.inputs.repo : void 0;
1741
- const res = await run2((io) => changeSync(root, s.change, { by: user, ...repo ? { repo } : {} }, io, {
1742
- ...deps.gitHost ? { gitHost: deps.gitHost } : {},
1743
- ...deps.now ? { now: deps.now } : {}
1744
- }));
1745
1766
  ctx.events.publish({ type: "file.changed", path: `${changesRelOf(root)}/${s.change}` });
1746
1767
  return [...res.out, ...res.err];
1747
1768
  };
@@ -1806,12 +1827,19 @@ function uiRunRoutes(r, ctx, deps = {}) {
1806
1827
  }).add("POST", "/api/todo/{stepId}/done", async ({ params, body }) => {
1807
1828
  const b = parseBody2(api_exports.StepDoneRequest, body);
1808
1829
  const ref = stepRef(params.stepId, b.change);
1809
- const res = await run2((io) => todoDone(root, ref, {
1810
- by: user,
1811
- result: b.values,
1812
- ...b.skip ? { skip: true } : {},
1813
- ...b.note ? { note: b.note } : {}
1814
- }, io, deps.todo ?? {}));
1830
+ const res = await run2((io) => todoDone(
1831
+ root,
1832
+ ref,
1833
+ {
1834
+ by: user,
1835
+ result: b.values,
1836
+ ...b.skip ? { skip: true } : {},
1837
+ ...b.note ? { note: b.note } : {}
1838
+ },
1839
+ io,
1840
+ // the step's sync is said apart, as `synced`, below
1841
+ { ...deps.todo, sync: false }
1842
+ ));
1815
1843
  if (res.code !== 0) {
1816
1844
  if (res.err.some((l) => /^There is no step/.test(l)))
1817
1845
  throw notFound(res.err.join("\n"));
@@ -1843,12 +1871,20 @@ function uiRunRoutes(r, ctx, deps = {}) {
1843
1871
  };
1844
1872
  }).add("POST", "/api/todo/{stepId}/run", async ({ params, body }) => {
1845
1873
  const b = parseBody2(api_exports.StepRunRequest, body);
1846
- const res = await run2((io) => todoRun(root, stepRef(params.stepId, b.change), {
1847
- with: b.with,
1848
- approve: user,
1849
- inputs: b.inputsSha256,
1850
- ...b.fillOnly ? { fillOnly: true } : {}
1851
- }, io, deps.todo ?? {}));
1874
+ requireConfirmation(ctx.confirmations, "step-run", params.stepId, b.confirmation);
1875
+ const res = await run2((io) => todoRun(
1876
+ root,
1877
+ stepRef(params.stepId, b.change),
1878
+ {
1879
+ with: b.with,
1880
+ approve: user,
1881
+ inputs: b.inputsSha256,
1882
+ ...b.fillOnly ? { fillOnly: true } : {}
1883
+ },
1884
+ io,
1885
+ // the step's sync is said apart, as `synced`, below
1886
+ { ...deps.todo, sync: false }
1887
+ ));
1852
1888
  if (res.code !== 0) {
1853
1889
  if (res.err.some((l) => /^There is no step/.test(l)))
1854
1890
  throw notFound(res.err.join("\n"));
@@ -2395,6 +2431,8 @@ function uiMeRoutes(r, ctx, deps = {}) {
2395
2431
  const b = api_exports.SendDigestRequest.safeParse(body ?? {});
2396
2432
  if (!b.success)
2397
2433
  throw badRequest("Send { send: true } to post it, or {} to see it.");
2434
+ if (b.data.send)
2435
+ requireConfirmation(ctx.confirmations, "digest-send", "me", b.data.confirmation);
2398
2436
  const me = await readMe(ctx.root);
2399
2437
  const out = [];
2400
2438
  const err = [];
@@ -2448,7 +2486,7 @@ function uiKnowRoutes(r, ctx, o = {}) {
2448
2486
  if (o.warm)
2449
2487
  void machine().catch(() => void 0);
2450
2488
  const view3 = async (name, arg) => {
2451
- const build = VIEWS[name];
2489
+ const build = Object.hasOwn(VIEWS, name) ? VIEWS[name] : void 0;
2452
2490
  if (!build)
2453
2491
  throw notFound(`There is no view ${name}.`);
2454
2492
  if (arg !== void 0 && !ID.test(arg))
@@ -2456,7 +2494,7 @@ function uiKnowRoutes(r, ctx, o = {}) {
2456
2494
  const args = build(arg);
2457
2495
  if (!args)
2458
2496
  throw badRequest(`The ${name} view needs an id: /api/view/${name}/<id>.`);
2459
- const { main } = await import("./chunk-7FHNFCHK.js");
2497
+ const { main } = await import("./chunk-IUPG3UKI.js");
2460
2498
  const out = [];
2461
2499
  const err = [];
2462
2500
  const code = await main([...args, "--json", "--root", ctx.root], { out: (l) => out.push(l), err: (l) => err.push(l) }, { quiet: true });
@@ -2486,7 +2524,7 @@ function uiKnowRoutes(r, ctx, o = {}) {
2486
2524
  return { status: 200, body: { code, data: body, problems: err } };
2487
2525
  };
2488
2526
  const text = async (args) => {
2489
- const { main } = await import("./chunk-7FHNFCHK.js");
2527
+ const { main } = await import("./chunk-IUPG3UKI.js");
2490
2528
  const out = [];
2491
2529
  const err = [];
2492
2530
  const code = await main([...args, "--root", ctx.root], { out: (l) => out.push(l), err: (l) => err.push(l) }, { quiet: true });
@@ -2504,7 +2542,7 @@ function uiKnowRoutes(r, ctx, o = {}) {
2504
2542
  throw badRequest("Some fields aren't right.", {
2505
2543
  errors: b.error.issues.map((i) => ({ path: i.path.join("."), message: i.message }))
2506
2544
  });
2507
- const { triageDecide } = await import("./chunk-ZKYRDV7A.js");
2545
+ const { triageDecide } = await import("./chunk-UWMJKX5U.js");
2508
2546
  const out = [];
2509
2547
  const err = [];
2510
2548
  const code = await triageDecide(ctx.root, params.itemId, b.data.option, { by: ctx.user, ...b.data.reason ? { reason: b.data.reason } : {} }, { out: (l) => out.push(l), err: (l) => err.push(l) });
@@ -2620,7 +2658,7 @@ function refused3(r) {
2620
2658
  return r.code === 2 ? badRequest(detail) : new HttpError(422, "Atticus refused", detail);
2621
2659
  }
2622
2660
  function uiInitiativeRoutes(r, ctx) {
2623
- const commands = () => import("./chunk-AE4P57KK.js");
2661
+ const commands = () => import("./chunk-7UOMVMFG.js");
2624
2662
  const changed = () => ctx.events.publish({ type: "file.changed", path: "catalog/curated" });
2625
2663
  return r.add("POST", "/api/initiatives", async ({ body }) => {
2626
2664
  const b = parseBody3(api_exports.NewInitiativeRequest, body);
@@ -2698,9 +2736,9 @@ function uiQuestionRoutes(r, ctx, deps = {}) {
2698
2736
  throw badRequest("role is product, architecture, analysis or delivery, or left out.");
2699
2737
  const onFile = await listQuestions(ctx.root);
2700
2738
  const every = { ...onFile, questions: onFile.questions.filter((q) => !q.finding) };
2701
- const { routeQuestions } = await import("./chunk-Z3QFH7YG.js");
2739
+ const { routeQuestions } = await import("./chunk-CADWLE2T.js");
2702
2740
  const routedAll = await routeQuestions(ctx.root, every.questions, mine ? { mine: ctx.user } : {});
2703
- const { stageQuestions, roleWithStage, isChangeQuestion, countByRole, personsRoles } = await import("./chunk-KYZMRSPS.js");
2741
+ const { stageQuestions, roleWithStage, isChangeQuestion, countByRole, personsRoles } = await import("./chunk-5NMKONLP.js");
2704
2742
  const stages = await stageQuestions(ctx.root);
2705
2743
  const roleOf = (q) => roleWithStage(q, stages);
2706
2744
  for (const q of every.questions) {
@@ -2710,20 +2748,21 @@ function uiQuestionRoutes(r, ctx, deps = {}) {
2710
2748
  a.role = r2;
2711
2749
  }
2712
2750
  const base = change ? routedAll.questions.filter((q) => isChangeQuestion(q, change, { stages, restsOn: routedAll.about[q.id]?.restsOn })) : routedAll.questions;
2751
+ const ofRole = role ? base.filter((q) => roleOf(q) === role) : base;
2713
2752
  const routed = {
2714
2753
  ...routedAll,
2715
- questions: base.filter((q) => (!state || q.state === state) && (!role || roleOf(q) === role))
2754
+ questions: ofRole.filter((q) => !state || q.state === state)
2716
2755
  };
2717
2756
  const listed = { problems: every.problems };
2718
- const n = (s) => base.filter((q) => q.state === s).length;
2757
+ const n = (s) => ofRole.filter((q) => q.state === s).length;
2719
2758
  const body = {
2720
2759
  counts: {
2721
2760
  open: n("open"),
2722
2761
  answered: n("answered"),
2723
2762
  retired: n("retired"),
2724
- total: base.length,
2725
- byRepo: Object.fromEntries([...new Set(base.map((q) => q.repo))].sort().map((r2) => {
2726
- const of = base.filter((q) => q.repo === r2);
2763
+ total: ofRole.length,
2764
+ byRepo: Object.fromEntries([...new Set(ofRole.map((q) => q.repo))].sort().map((r2) => {
2765
+ const of = ofRole.filter((q) => q.repo === r2);
2727
2766
  const k = (s) => of.filter((q) => q.state === s).length;
2728
2767
  return [
2729
2768
  r2,
@@ -2745,13 +2784,13 @@ function uiQuestionRoutes(r, ctx, deps = {}) {
2745
2784
  };
2746
2785
  return { status: 200, body };
2747
2786
  }).add("GET", "/api/owner-questions", async () => {
2748
- const { ownerQuestions } = await import("./chunk-M4H2UG4R.js");
2787
+ const { ownerQuestions } = await import("./chunk-JRBFANFE.js");
2749
2788
  return { status: 200, body: await ownerQuestions(ctx.root, { now: now() }) };
2750
2789
  }).add("POST", "/api/owner-questions/{id}/answer", async ({ params, body }) => {
2751
2790
  const b = api_exports.OwnerAnswerRequest.safeParse(body ?? {});
2752
2791
  if (!b.success || !b.data.answer.trim())
2753
2792
  throw badRequest('Answer with { answer: "what the owner said" }.');
2754
- const { answerOwnerQuestion, OwnerQuestionError } = await import("./chunk-M4H2UG4R.js");
2793
+ const { answerOwnerQuestion, OwnerQuestionError } = await import("./chunk-JRBFANFE.js");
2755
2794
  try {
2756
2795
  const r2 = await answerOwnerQuestion(ctx.root, params.id, b.data.answer, {
2757
2796
  by: ctx.user,
@@ -2776,13 +2815,13 @@ function uiQuestionRoutes(r, ctx, deps = {}) {
2776
2815
  throw notFound(`There is no question ${params.id}.`);
2777
2816
  if (q.askedBy.step !== TARGETS_STEP_ID && q.askedBy.step !== TOPICS_STEP_ID)
2778
2817
  throw new HttpError(422, "That question doesn't ask where a call goes or who owns a topic", `${q.id} isn't a targets or topics question, so it has no picker.`);
2779
- const { pickerOf } = await import("./chunk-IFFRGC3N.js");
2818
+ const { pickerOf } = await import("./chunk-KFAVQZSX.js");
2780
2819
  return { status: 200, body: { picks: await pickerOf(ctx.root) } };
2781
2820
  }).add("GET", "/api/questions/{id}/evidence", async ({ params }) => {
2782
2821
  const q = await readQuestion(ctx.root, params.id).catch(() => void 0);
2783
2822
  if (!q)
2784
2823
  throw notFound(`There is no question ${params.id}.`);
2785
- const { evidenceExcerpts } = await import("./chunk-UFE36WJH.js");
2824
+ const { evidenceExcerpts } = await import("./chunk-BIGDQDHD.js");
2786
2825
  return {
2787
2826
  status: 200,
2788
2827
  body: {
@@ -2805,7 +2844,7 @@ function uiQuestionRoutes(r, ctx, deps = {}) {
2805
2844
  const q0 = await readQuestion(ctx.root, params.id).catch(() => void 0);
2806
2845
  if (!q0)
2807
2846
  throw notFound(`There is no question ${params.id}.`);
2808
- const { targetAnswerOf, offerLine } = await import("./chunk-IFFRGC3N.js");
2847
+ const { targetAnswerOf, offerLine } = await import("./chunk-KFAVQZSX.js");
2809
2848
  const t = await targetAnswerOf(ctx.root, q0, target, {
2810
2849
  ...addSystem ? { addSystem } : {},
2811
2850
  ...name ? { name } : {}
@@ -3049,8 +3088,9 @@ async function hopsFromTargetFlows(dir, mappings, interfaces) {
3049
3088
  rows: names.map((name, i) => ({
3050
3089
  line: i + 1,
3051
3090
  source: name,
3052
- target: as[name] ?? name,
3053
- rule: derived[name] ?? "",
3091
+ // Review round 48: a field named toString or constructor is a field, not the prototype's.
3092
+ target: (Object.hasOwn(as, name) ? as[name] : void 0) ?? name,
3093
+ rule: (Object.hasOwn(derived, name) ? derived[name] : void 0) ?? "",
3054
3094
  whenMissing: ""
3055
3095
  })),
3056
3096
  asIs: asIsFor(mappings, ifIds),
@@ -3388,7 +3428,7 @@ function uiSpecRoutes(r, ctx) {
3388
3428
  });
3389
3429
  r.add("GET", "/api/changes/{changeId}/conformance", async ({ params }) => {
3390
3430
  const change = idOf2(params.changeId, "change");
3391
- const { conformanceOf } = await import("./chunk-FRHD22WM.js");
3431
+ const { conformanceOf } = await import("./chunk-ZFFYNRIO.js");
3392
3432
  const c = await conformanceOf(root, change);
3393
3433
  if (!c)
3394
3434
  throw notFound(`There is no change ${change}.`);
@@ -3403,7 +3443,7 @@ function uiSpecRoutes(r, ctx) {
3403
3443
  });
3404
3444
  r.add("GET", "/api/changes/{changeId}/impact", async ({ params }) => {
3405
3445
  const change = idOf2(params.changeId, "change");
3406
- const { changeImpactOf } = await import("./chunk-2D7PWSOK.js");
3446
+ const { changeImpactOf } = await import("./chunk-7MJSQTL5.js");
3407
3447
  const i = await changeImpactOf(root, change);
3408
3448
  if (!i)
3409
3449
  throw notFound(`There is no change ${change}.`);
@@ -4010,7 +4050,7 @@ async function configuredModel(root) {
4010
4050
  function uiModelRunRoutes(r, ctx, deps = {}) {
4011
4051
  const root = ctx.root;
4012
4052
  const runStep = deps.runStep ?? (async (args) => {
4013
- const { main } = await import("./chunk-7FHNFCHK.js");
4053
+ const { main } = await import("./chunk-IUPG3UKI.js");
4014
4054
  const out = [];
4015
4055
  const err = [];
4016
4056
  const code = await main([...args, "--root", root], { out: (l) => out.push(l), err: (l) => err.push(l) }, { quiet: true });
@@ -4018,7 +4058,7 @@ function uiModelRunRoutes(r, ctx, deps = {}) {
4018
4058
  });
4019
4059
  return r.add("POST", "/api/runs/handoff", async ({ body }) => {
4020
4060
  const words = stepWords(body);
4021
- const { prepareStep } = await import("./chunk-J2O4LFVI.js");
4061
+ const { prepareStep } = await import("./chunk-CBGGOQWU.js");
4022
4062
  const { code, prepared } = await prepareStep(root, runStep, words);
4023
4063
  ctx.events.publish({ type: "file.changed", path: runsRelOf(root) });
4024
4064
  if (!prepared.runId && code !== 0)
@@ -4213,10 +4253,10 @@ var CopilotRun = class {
4213
4253
 
4214
4254
  // packages/cli/dist/ui-api-copilot-runs.js
4215
4255
  var defaultStarter = (root) => async (o, io, deps) => {
4216
- const { mapAllCommand } = await import("./chunk-YF5DZCPN.js");
4256
+ const { mapAllCommand } = await import("./chunk-VNU26RCO.js");
4217
4257
  return mapAllCommand(root, o, io, {
4218
4258
  ...deps,
4219
- makeAcp: async () => (await import("./chunk-ZPDDEVQX.js")).acpStepRunner(root)
4259
+ makeAcp: async () => (await import("./chunk-JAVI7JSP.js")).acpStepRunner(root)
4220
4260
  });
4221
4261
  };
4222
4262
  var TAIL = 200;
@@ -4537,7 +4577,7 @@ function uiDecisionRoutes(r, ctx, deps = {}) {
4537
4577
  ctx.events.publish({ type: "file.changed", path });
4538
4578
  return { status: 200, body: out };
4539
4579
  }).add("GET", "/api/propose-answers", async () => {
4540
- const { openDecideRun, PROPOSE_CHANGE } = await import("./chunk-EFCQSMXB.js");
4580
+ const { openDecideRun, PROPOSE_CHANGE } = await import("./chunk-EBL2R3YG.js");
4541
4581
  const run4 = await openDecideRun(ctx.root, PROPOSE_CHANGE);
4542
4582
  const body = run4 ? {
4543
4583
  state: "waiting",
@@ -4551,7 +4591,7 @@ function uiDecisionRoutes(r, ctx, deps = {}) {
4551
4591
  const op = await loadOrgPack(orgPackDirOf(ctx.root));
4552
4592
  if (op.runtime.ai === "off")
4553
4593
  throw conflict("runtime.yaml turns AI off here (ai: off): answer the questions yourself.");
4554
- const { startProposeHandoff } = await import("./chunk-ZPDDEVQX.js");
4594
+ const { startProposeHandoff } = await import("./chunk-JAVI7JSP.js");
4555
4595
  const h = await startProposeHandoff(ctx.root, { now: now() });
4556
4596
  const body = {
4557
4597
  state: "waiting",
@@ -5000,11 +5040,38 @@ function uiHistoryRoutes(r, ctx) {
5000
5040
 
5001
5041
  // packages/cli/dist/ui-api-ai.js
5002
5042
  var import_yaml6 = __toESM(require_dist(), 1);
5043
+ import { execFileSync } from "node:child_process";
5003
5044
  import { existsSync as existsSync3 } from "node:fs";
5004
5045
  import { readFile as readFile8 } from "node:fs/promises";
5005
- import { join as join10, relative, sep } from "node:path";
5046
+ import { basename, dirname as dirname3, join as join10, relative, sep } from "node:path";
5006
5047
  var unprocessable = (detail) => new HttpError(422, "The settings aren't valid", detail);
5007
5048
  var ENV_NAME = /^[A-Za-z_][A-Za-z0-9_]{0,127}$/;
5049
+ function whereKeyGoes(m) {
5050
+ const s = m?.settings ?? {};
5051
+ const picked = Object.keys(s).filter((k) => k === "keyEnv" || k === "caFile" || /url|endpoint|host|address/i.test(k)).sort().map((k) => [k, s[k]]);
5052
+ return JSON.stringify([m?.type ?? null, picked]);
5053
+ }
5054
+ function canonical(v) {
5055
+ if (Array.isArray(v))
5056
+ return `[${v.map(canonical).join(",")}]`;
5057
+ if (v && typeof v === "object")
5058
+ return `{${Object.keys(v).sort().map((k) => `${JSON.stringify(k)}:${canonical(v[k])}`).join(",")}}`;
5059
+ return JSON.stringify(v ?? null);
5060
+ }
5061
+ function committedModel(file) {
5062
+ try {
5063
+ const text = execFileSync("git", ["show", `HEAD:./${basename(file)}`], {
5064
+ cwd: dirname3(file),
5065
+ encoding: "utf8",
5066
+ stdio: ["ignore", "pipe", "ignore"],
5067
+ env: { ...process.env, GIT_TERMINAL_PROMPT: "0" }
5068
+ });
5069
+ const raw = (0, import_yaml6.parse)(text) ?? {};
5070
+ return { model: raw.adapters?.model };
5071
+ } catch {
5072
+ return void 0;
5073
+ }
5074
+ }
5008
5075
  var FIELDS = ["ai", "modes", "assistants", "models", "budgets", "decide"];
5009
5076
  function uiAiRoutes(r, ctx, deps = {}) {
5010
5077
  const root = ctx.root;
@@ -5055,7 +5122,8 @@ function uiAiRoutes(r, ctx, deps = {}) {
5055
5122
  ],
5056
5123
  model: model ? { type: model.type, settings: model.settings } : null,
5057
5124
  // Whether the key's variable is set here, by name: its value is never read out.
5058
- keySet: keyEnv ? !!env[keyEnv]?.trim() || !!keys().get(keyEnv) : false,
5125
+ // Review round 48: as the provider reads it, the environment only for a model's key.
5126
+ keySet: keyEnv ? keyEnvFromEnvironment(keyEnv) && !!env[keyEnv]?.trim() || !!keys().get(keyEnv) : false,
5059
5127
  models: rt.models,
5060
5128
  budgets: rt.budgets,
5061
5129
  // Ninth UX walk (ADR 0181): whether the AI decides first, and the bar that pauses it.
@@ -5084,8 +5152,14 @@ function uiAiRoutes(r, ctx, deps = {}) {
5084
5152
  throw unprocessable(`${name} looks like a key. A key never goes in runtime.yaml: keep it in an environment variable (or the OS's credential store) and give that variable's name as keyEnv.`);
5085
5153
  if (settings.keyEnv !== void 0 && !ENV_NAME.test(String(settings.keyEnv)))
5086
5154
  throw unprocessable(`keyEnv is the name of an environment variable, such as ATTICUS_MODEL_KEY.`);
5155
+ const keyEnv = settings.keyEnv === void 0 ? void 0 : String(settings.keyEnv);
5156
+ if (keyEnv && !keyEnvFromEnvironment(keyEnv) && !keys().get(keyEnv))
5157
+ throw unprocessable(`keyEnv ${keyEnv} isn't a model's key: name a variable starting ATTICUS_ (such as ATTICUS_MODEL_KEY) or the provider's own (such as ANTHROPIC_API_KEY or OPENAI_API_KEY), or keep the key in this machine's credential store under that name first ("Set the key on this machine", or atticus secret set ${keyEnv}). Another variable (a Git or pipeline token, cloud credentials) is never sent to a model.`);
5087
5158
  adapters.model = { type: m.type, settings };
5088
5159
  }
5160
+ const was = raw.adapters?.model;
5161
+ if (adapters.model !== void 0 && whereKeyGoes(was) !== whereKeyGoes(adapters.model))
5162
+ requireConfirmation(ctx.confirmations, "ai-model", "model", b.confirmation);
5089
5163
  raw.adapters = adapters;
5090
5164
  }
5091
5165
  const names = (m) => {
@@ -5133,11 +5207,14 @@ function uiAiRoutes(r, ctx, deps = {}) {
5133
5207
  throw unprocessable("No key was given.");
5134
5208
  keys().set(name, value);
5135
5209
  return { status: 200, body: { ok: true, name } };
5136
- }).add("POST", "/api/settings/ai/test", async () => {
5210
+ }).add("POST", "/api/settings/ai/test", async ({ body }) => {
5137
5211
  const op = await loadOrgPack(orgPackDirOf(root));
5138
5212
  const model = op.runtime.adapters.model;
5139
5213
  if (!model || model.type === "mock")
5140
5214
  throw conflict("No model provider is set in runtime.yaml: choose one first.");
5215
+ const committed = committedModel(file());
5216
+ if (!committed || canonical(committed.model) !== canonical(model))
5217
+ requireConfirmation(ctx.confirmations, "ai-test", "model", body?.confirmation);
5141
5218
  const started = Date.now();
5142
5219
  try {
5143
5220
  const p = await build(op, model.type, model.settings);
@@ -5167,7 +5244,7 @@ function uiDocumentRoutes(r, ctx) {
5167
5244
  const root = ctx.root;
5168
5245
  const changed = (path) => ctx.events.publish({ type: "file.changed", path });
5169
5246
  return r.add("GET", "/api/knowledge/documents", async () => {
5170
- const { listDocuments } = await import("./chunk-URIKUID7.js");
5247
+ const { listDocuments } = await import("./chunk-O4GXGGBX.js");
5171
5248
  return { status: 200, body: api_exports.DocumentList.parse(await listDocuments(root)) };
5172
5249
  }).add("POST", "/api/knowledge/documents", async ({ body }) => {
5173
5250
  const b = api_exports.AttachFileRequest.safeParse(body ?? {});
@@ -5176,7 +5253,7 @@ function uiDocumentRoutes(r, ctx) {
5176
5253
  const bytes = new Uint8Array(Buffer.from(b.data.content, "base64"));
5177
5254
  if (bytes.length > MAX_FILE)
5178
5255
  throw new HttpError(413, "The file is too large", "Add a file of 15 MB or less.");
5179
- const { addToInbox } = await import("./chunk-ZKYRDV7A.js");
5256
+ const { addToInbox } = await import("./chunk-UWMJKX5U.js");
5180
5257
  const res = await addToInbox(root, [{ name: b.data.name, bytes }]);
5181
5258
  if (!res.added.length)
5182
5259
  throw new HttpError(422, "Atticus can't add that", res.refused[0]?.why ?? "", {
@@ -5186,7 +5263,7 @@ function uiDocumentRoutes(r, ctx) {
5186
5263
  changed(a.path);
5187
5264
  return { status: 201, body: api_exports.AddDocumentResult.parse(res) };
5188
5265
  }, { maxBody: Math.ceil(MAX_FILE * 4 / 3) + 64 * 1024 }).add("POST", "/api/changes/{changeId}/inputs/{name}/promote", async ({ params }) => {
5189
- const { AttachError, promoteChangeInput } = await import("./chunk-XQ3YZ4QW.js");
5266
+ const { AttachError, promoteChangeInput } = await import("./chunk-LDLL7LB3.js");
5190
5267
  try {
5191
5268
  const res = await promoteChangeInput(root, params.changeId, params.name);
5192
5269
  changed(res.path);
@@ -5203,13 +5280,13 @@ function uiDocumentRoutes(r, ctx) {
5203
5280
  function uiRepoRoutes(r, ctx) {
5204
5281
  const root = ctx.root;
5205
5282
  return r.add("GET", "/api/repos/branches", async () => {
5206
- const { repoBranches } = await import("./chunk-YBOVNMHC.js");
5283
+ const { repoBranches } = await import("./chunk-M32BLWDH.js");
5207
5284
  return { status: 200, body: api_exports.RepoBranchesList.parse(await repoBranches(root)) };
5208
5285
  }).add("GET", "/api/repos/compare", async ({ query }) => {
5209
5286
  const branch = query.get("branch")?.trim() ?? "";
5210
5287
  if (!branch)
5211
5288
  throw badRequest("Say which branch: ?branch=<name>.");
5212
- const { compareBranch } = await import("./chunk-YBOVNMHC.js");
5289
+ const { compareBranch } = await import("./chunk-M32BLWDH.js");
5213
5290
  const c = await compareBranch(root, branch);
5214
5291
  if (!c)
5215
5292
  throw notFound(`${branch} hasn't been scanned beside the baseline yet.`);
@@ -5218,7 +5295,7 @@ function uiRepoRoutes(r, ctx) {
5218
5295
  const b = api_exports.EditRepoBranchesRequest.safeParse(body ?? {});
5219
5296
  if (!b.success)
5220
5297
  throw badRequest("Send defaultBranch and branches as branch names.");
5221
- const { editRepoBranches, RepoEditError } = await import("./chunk-YBOVNMHC.js");
5298
+ const { editRepoBranches, RepoEditError } = await import("./chunk-M32BLWDH.js");
5222
5299
  try {
5223
5300
  const file = await editRepoBranches(root, params.repoId, b.data);
5224
5301
  ctx.events.publish({ type: "file.changed", path: file });
@@ -5238,7 +5315,7 @@ function uiRepoRoutes(r, ctx) {
5238
5315
  const b = api_exports.EditRepoBuildRequest.safeParse(body ?? {});
5239
5316
  if (!b.success)
5240
5317
  throw badRequest('Send the build command as build ("" clears it), up to 500 characters.');
5241
- const { editRepoBuild, RepoEditError } = await import("./chunk-YBOVNMHC.js");
5318
+ const { editRepoBuild, RepoEditError } = await import("./chunk-M32BLWDH.js");
5242
5319
  try {
5243
5320
  const r2 = await editRepoBuild(root, params.repoId, b.data);
5244
5321
  ctx.events.publish({ type: "file.changed", path: r2.file });
@@ -5259,7 +5336,7 @@ function uiRepoRoutes(r, ctx) {
5259
5336
  const b = api_exports.SetOrgPackOwnerRequest.safeParse(body ?? {});
5260
5337
  if (!b.success)
5261
5338
  throw badRequest("Send the owner as one handle: { owner }.");
5262
- const { setOrgPackOwner, OwnerEditError } = await import("./chunk-PQH56YF6.js");
5339
+ const { setOrgPackOwner, OwnerEditError } = await import("./chunk-KXITGYLF.js");
5263
5340
  try {
5264
5341
  const r2 = await setOrgPackOwner(root, b.data.owner, b.data.was);
5265
5342
  ctx.events.publish({ type: "file.changed", path: r2.file });
@@ -5280,7 +5357,7 @@ function uiRepoRoutes(r, ctx) {
5280
5357
  const b = api_exports.EditRepoDescriptionRequest.safeParse(body ?? {});
5281
5358
  if (!b.success)
5282
5359
  throw badRequest("Send what the repo is as text, or accept: true to confirm the draft, or reject: true to drop it.");
5283
- const { editRepoDescription, RepoEditError } = await import("./chunk-YBOVNMHC.js");
5360
+ const { editRepoDescription, RepoEditError } = await import("./chunk-M32BLWDH.js");
5284
5361
  try {
5285
5362
  const r2 = await editRepoDescription(root, params.repoId, b.data);
5286
5363
  ctx.events.publish({ type: "file.changed", path: r2.file });
@@ -5301,13 +5378,19 @@ function uiRepoRoutes(r, ctx) {
5301
5378
  }
5302
5379
 
5303
5380
  // packages/cli/dist/ui-api-cockpit.js
5381
+ function changeIdOf(v) {
5382
+ if (!RecordId.safeParse(v).success)
5383
+ throw badRequest(`${JSON.stringify(v.slice(0, 120))} isn't a change id.`);
5384
+ return v;
5385
+ }
5304
5386
  function uiCockpitRoutes(r, ctx) {
5305
5387
  return r.add("GET", "/api/changes/{changeId}/cockpit", async ({ params }) => {
5306
- const { cockpit } = await import("./chunk-6EXDI5GI.js");
5388
+ const id = changeIdOf(params.changeId);
5389
+ const { cockpit } = await import("./chunk-ZFL7NY4F.js");
5307
5390
  try {
5308
5391
  return {
5309
5392
  status: 200,
5310
- body: api_exports.ChangeCockpit.parse(await cockpit(ctx.root, params.changeId, { user: ctx.user }))
5393
+ body: api_exports.ChangeCockpit.parse(await cockpit(ctx.root, id, { user: ctx.user }))
5311
5394
  };
5312
5395
  } catch (e) {
5313
5396
  if (e instanceof Error && e.name === "ChangeFileError")
@@ -5315,8 +5398,9 @@ function uiCockpitRoutes(r, ctx) {
5315
5398
  throw e;
5316
5399
  }
5317
5400
  }).add("GET", "/api/past-changes", async ({ query }) => {
5318
- const { changeAboutText, similarChanges } = await import("./chunk-BC6KKZ67.js");
5319
- const change = query.get("change");
5401
+ const { changeAboutText, similarChanges } = await import("./chunk-W7VWI2YH.js");
5402
+ const given = query.get("change");
5403
+ const change = given ? changeIdOf(given) : void 0;
5320
5404
  const text = change ? await changeAboutText(ctx.root, change) : query.get("text")?.trim();
5321
5405
  if (change && !text)
5322
5406
  throw notFound(`There is no change ${change}.`);
@@ -5333,11 +5417,11 @@ function uiCockpitRoutes(r, ctx) {
5333
5417
  const b = api_exports.AttachPastChangeRequest.safeParse(body ?? {});
5334
5418
  if (!b.success)
5335
5419
  throw badRequest("Say which archived change: { like: <its folder or id> }.");
5336
- const { attachPastChange, findPastChange } = await import("./chunk-BC6KKZ67.js");
5420
+ const { attachPastChange, findPastChange } = await import("./chunk-W7VWI2YH.js");
5337
5421
  const folder = await findPastChange(ctx.root, b.data.like);
5338
5422
  if (!folder)
5339
5423
  throw notFound(`There is no archived change ${b.data.like}.`);
5340
- const { AttachError } = await import("./chunk-XQ3YZ4QW.js");
5424
+ const { AttachError } = await import("./chunk-LDLL7LB3.js");
5341
5425
  try {
5342
5426
  const name = await attachPastChange(ctx.root, params.changeId, folder, ctx.user);
5343
5427
  ctx.events.publish({ type: "file.changed", path: `inputs/${name}` });
@@ -6142,6 +6226,7 @@ async function startUi(root, o = {}, deps = {}) {
6142
6226
  ...o.embed ? { embed: o.embed } : {},
6143
6227
  ...o.full ? { full: true } : {},
6144
6228
  ...o.token ? { token: o.token } : {},
6229
+ ...o.pageKey ? { pageKey: o.pageKey } : {},
6145
6230
  staticDir: o.staticDir ?? uiDistDir(),
6146
6231
  ...o.user ? { user: o.user } : {},
6147
6232
  ...o.version ? { version: o.version } : {},
@@ -6222,16 +6307,23 @@ function untilStopped(embedded, stdin = process.stdin, o = {}) {
6222
6307
  function startedLines(url, token, o) {
6223
6308
  return [
6224
6309
  `Atticus is running at ${url} (Ctrl+C stops it).`,
6225
- o.embed || o.parent !== void 0 ? "The session token isn't printed: the editor that started the app has it." : o.showToken ? `For assistants and scripts, the session token is ${token}` : "The page has the session token; --show-token prints it for an assistant or a script."
6310
+ o.embed || o.parent !== void 0 ? "The session token isn't printed: the editor that started the app has it." : o.showToken ? `For assistants and scripts, the session token is ${token}` : "The page has the session token; --show-token prints it for an assistant or a script.",
6311
+ // ADR 0186: what the printed token can't do, said where it is printed.
6312
+ ...o.showToken && !o.embed && o.parent === void 0 ? [
6313
+ "It doesn't approve a write to a shared system (a PR, a push, a merge, a message): a person confirms those in the app, or runs the command with --approve."
6314
+ ] : []
6226
6315
  ];
6227
6316
  }
6228
6317
  async function uiCommand(root, o, io) {
6229
6318
  const given = o.embed ? process.env.ATTICUS_UI_TOKEN : void 0;
6230
6319
  delete process.env.ATTICUS_UI_TOKEN;
6320
+ const pageKey = o.embed ? process.env.ATTICUS_UI_PAGE_KEY : void 0;
6321
+ delete process.env.ATTICUS_UI_PAGE_KEY;
6231
6322
  let srv;
6232
6323
  try {
6233
6324
  srv = await startUi(root, {
6234
6325
  ...given ? { token: given } : {},
6326
+ ...pageKey ? { pageKey } : {},
6235
6327
  warm: true,
6236
6328
  ...o.full ? { full: true } : {},
6237
6329
  ...o.port !== void 0 ? { port: o.port } : {},