@maycombhq/atticus 2.0.0-beta.2 → 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 (284) hide show
  1. package/dist/bin.js +8 -4
  2. package/dist/chunk-23XVSEV5.js +49 -0
  3. package/dist/{chunk-ZDPAS56H.js → chunk-24OXGB3P.js} +8 -2
  4. package/dist/{chunk-7EOBHUMC.js → chunk-24XLDU72.js} +4 -3
  5. package/dist/{chunk-CR3MTH32.js → chunk-2F4CYZKJ.js} +86 -11
  6. package/dist/{chunk-6IU67AEK.js → chunk-2GF7OLF3.js} +23 -15
  7. package/dist/chunk-2IIMFOPM.js +41 -0
  8. package/dist/chunk-2LGRMVCA.js +617 -0
  9. package/dist/{chunk-XPCM366L.js → chunk-2MMCFP5C.js} +10 -8
  10. package/dist/{chunk-JBTK5OP2.js → chunk-2Q56PQPS.js} +6 -4
  11. package/dist/{chunk-Z6LF7HQN.js → chunk-2Q5EDGEO.js} +7 -5
  12. package/dist/{chunk-3USYZGRF.js → chunk-2RLKFUUL.js} +38 -27
  13. package/dist/chunk-2SKB4O2E.js +59 -0
  14. package/dist/{chunk-SP2I63OO.js → chunk-34S2WGOB.js} +87 -4
  15. package/dist/{chunk-GQ4N4WKF.js → chunk-3NFFJL5D.js} +33 -27
  16. package/dist/{chunk-SJRGMG6A.js → chunk-3NWDLGG6.js} +28 -25
  17. package/dist/{chunk-4WBVUHXN.js → chunk-3RM4UK6W.js} +20 -18
  18. package/dist/chunk-42SIDKEU.js +583 -0
  19. package/dist/{chunk-GLUX4EEP.js → chunk-4EURQWQD.js} +20 -15
  20. package/dist/chunk-4U276ICE.js +39 -0
  21. package/dist/{chunk-ZMFPW66A.js → chunk-53T4O55J.js} +4 -3
  22. package/dist/{chunk-6J5OKA4Y.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-5NMKONLP.js +95 -0
  26. package/dist/{chunk-7ZUIMTOU.js → chunk-5SJZW52K.js} +26 -24
  27. package/dist/{chunk-4RS5KZQD.js → chunk-63YRMR6J.js} +6 -5
  28. package/dist/chunk-66PPNOON.js +62 -0
  29. package/dist/chunk-6H3Z5JHH.js +64 -0
  30. package/dist/{chunk-CEXSU4S6.js → chunk-6MUGR4LS.js} +775 -89
  31. package/dist/{chunk-QSXK2RGH.js → chunk-6OJQOPUN.js} +5 -3
  32. package/dist/{chunk-MVZVGYXH.js → chunk-6PPOWY5E.js} +84 -14
  33. package/dist/{chunk-7EKXJZ2Y.js → chunk-6ZGLAACW.js} +299 -38
  34. package/dist/chunk-6ZJ5A7AF.js +222 -0
  35. package/dist/{chunk-L24C55VN.js → chunk-745DAZ4L.js} +142 -30
  36. package/dist/{chunk-Q4D5X7QB.js → chunk-7ASNL4Q4.js} +46 -24
  37. package/dist/chunk-7BR7IPOH.js +35 -0
  38. package/dist/{chunk-7WD63HU2.js → chunk-7DOR27HL.js} +6 -6
  39. package/dist/chunk-7FTTA3HD.js +341 -0
  40. package/dist/{chunk-OLQJTJJU.js → chunk-7GJS6DNX.js} +12 -3
  41. package/dist/{chunk-7JUKDRSZ.js → chunk-7IGKHZ4Z.js} +347 -226
  42. package/dist/{chunk-G2B4ZQGH.js → chunk-7IOWA5D5.js} +11 -6
  43. package/dist/{chunk-EBEW3XXQ.js → chunk-7JITZFJC.js} +7 -5
  44. package/dist/chunk-7MJSQTL5.js +174 -0
  45. package/dist/{chunk-I4JRCD6M.js → chunk-7UOMVMFG.js} +25 -17
  46. package/dist/{chunk-YY6ZQQBP.js → chunk-AFWUDXEM.js} +19 -7
  47. package/dist/chunk-AFZ3QA6W.js +47 -0
  48. package/dist/chunk-AJQ72EBM.js +420 -0
  49. package/dist/chunk-AJYXNTNZ.js +317 -0
  50. package/dist/chunk-AVTBS4OW.js +49 -0
  51. package/dist/{chunk-FHH4I4ZV.js → chunk-BDKC6H5P.js} +12 -6
  52. package/dist/{chunk-IPKHE5D6.js → chunk-BEVTIBRH.js} +1526 -875
  53. package/dist/chunk-BHT7QK4G.js +162 -0
  54. package/dist/{chunk-6JUBZBMW.js → chunk-BIGDQDHD.js} +6 -4
  55. package/dist/{chunk-2BFCZ3RK.js → chunk-BO4KX37X.js} +20 -18
  56. package/dist/chunk-BPK5P77O.js +115 -0
  57. package/dist/chunk-BQ4SQQC6.js +59 -0
  58. package/dist/chunk-BQGDB6ZL.js +7342 -0
  59. package/dist/{chunk-2ANOROX3.js → chunk-BTGPE6CR.js} +11 -9
  60. package/dist/chunk-BTY3HZBO.js +93 -0
  61. package/dist/{chunk-DPZHZQKE.js → chunk-BXYMYEJ4.js} +44 -10
  62. package/dist/{chunk-2RMYG36Q.js → chunk-C3RY6KU6.js} +309 -346
  63. package/dist/chunk-C4R4JLHE.js +40 -0
  64. package/dist/chunk-CADWLE2T.js +18 -0
  65. package/dist/chunk-CBGGOQWU.js +82 -0
  66. package/dist/chunk-CMDXGQTS.js +47 -0
  67. package/dist/{chunk-MC3H7736.js → chunk-CQDGOPGH.js} +58 -18
  68. package/dist/{chunk-HFQCFSJR.js → chunk-CX4RZ2KS.js} +4 -3
  69. package/dist/{chunk-PAMPPUR6.js → chunk-CXJ6FUKN.js} +1852 -207
  70. package/dist/{chunk-ABWHYWNI.js → chunk-D73UEXYW.js} +3 -3
  71. package/dist/chunk-DCZWQLYT.js +1205 -0
  72. package/dist/chunk-DLOBCJL6.js +48 -0
  73. package/dist/{chunk-4BN53TG3.js → chunk-DOBQKHIF.js} +31 -23
  74. package/dist/chunk-E3ISYXO3.js +423 -0
  75. package/dist/{chunk-7SW2QWLU.js → chunk-E6ZIEVOI.js} +16 -13
  76. package/dist/chunk-EBL2R3YG.js +43 -0
  77. package/dist/{chunk-AIOQPLA5.js → chunk-EGQRREQH.js} +41 -15
  78. package/dist/chunk-EHA7RMZ3.js +58 -0
  79. package/dist/{chunk-M766ZJ6W.js → chunk-EIPTLPFC.js} +38 -27
  80. package/dist/chunk-EMRIQUND.js +517 -0
  81. package/dist/{chunk-DFBCSHVT.js → chunk-EPCJQQWD.js} +6 -4
  82. package/dist/{chunk-RZPYKDWS.js → chunk-F3P7N7SF.js} +1 -1
  83. package/dist/{chunk-R77KLRB3.js → chunk-FFLNS6VP.js} +21 -18
  84. package/dist/chunk-FFTRTL6R.js +26 -0
  85. package/dist/{chunk-IHMLFRVV.js → chunk-FPJPLKDW.js} +62 -16
  86. package/dist/{chunk-JCZIKA4C.js → chunk-FSMSFDLD.js} +5 -4
  87. package/dist/{chunk-AVJDSJ2F.js → chunk-FUJM6RTF.js} +8 -7
  88. package/dist/chunk-FZOJFH7Q.js +132 -0
  89. package/dist/{chunk-QRAOANID.js → chunk-G6X77UJZ.js} +23 -21
  90. package/dist/{chunk-3ALD2W2A.js → chunk-GCWRWSU7.js} +10 -4
  91. package/dist/chunk-GIW4ZVDB.js +39 -0
  92. package/dist/{chunk-B2WLAWNJ.js → chunk-GUX3PTYM.js} +3 -3
  93. package/dist/{chunk-DPUYDDQG.js → chunk-GZY6RUZ6.js} +25 -3
  94. package/dist/chunk-H4VO6WG3.js +10 -0
  95. package/dist/{chunk-MMOSZPWJ.js → chunk-H5HBGNXU.js} +5 -4
  96. package/dist/chunk-H7KM7LZE.js +229 -0
  97. package/dist/{chunk-AA6YULYB.js → chunk-HNM2YQT2.js} +7 -7
  98. package/dist/{chunk-3C7EYRFZ.js → chunk-HYU5VLGA.js} +1 -1
  99. package/dist/{chunk-XY3P7JW7.js → chunk-IDKCWSM5.js} +1032 -172
  100. package/dist/chunk-IFKEI4SA.js +237 -0
  101. package/dist/{chunk-F7HYOUFF.js → chunk-IGOE6KPG.js} +67 -22
  102. package/dist/{chunk-TDD55CJH.js → chunk-IH2XURVQ.js} +6 -5
  103. package/dist/chunk-INQHESFB.js +38 -0
  104. package/dist/chunk-IP74LCOQ.js +57 -0
  105. package/dist/chunk-IPHHDDC6.js +45 -0
  106. package/dist/{chunk-T6AIP7H5.js → chunk-ISUAAMGS.js} +110 -153
  107. package/dist/{chunk-A7UPUQFY.js → chunk-IUPG3UKI.js} +624 -319
  108. package/dist/{chunk-L6SGQIR3.js → chunk-IVBOQAGB.js} +7 -3
  109. package/dist/{chunk-27NKUS3X.js → chunk-J2JAKCIW.js} +2205 -796
  110. package/dist/{chunk-V2YTAIQO.js → chunk-J3IOLXWM.js} +24 -7
  111. package/dist/chunk-JA5FI3QV.js +142 -0
  112. package/dist/chunk-JAVI7JSP.js +49 -0
  113. package/dist/{chunk-HLJAXMM4.js → chunk-JB5LINEM.js} +6 -2
  114. package/dist/{chunk-2VHF7OXM.js → chunk-JENSEMXF.js} +1 -1
  115. package/dist/{chunk-6BVONWJ7.js → chunk-JJF6HALY.js} +4 -3
  116. package/dist/chunk-JLUCKAEL.js +38 -0
  117. package/dist/chunk-JRBFANFE.js +221 -0
  118. package/dist/{chunk-R6XF6UR3.js → chunk-KDNTAPLX.js} +4 -4
  119. package/dist/chunk-KFAVQZSX.js +33 -0
  120. package/dist/chunk-KJXD4PNL.js +50 -0
  121. package/dist/chunk-KN5BXMWN.js +44 -0
  122. package/dist/{chunk-PCVDV3UZ.js → chunk-KQGURXFU.js} +9 -7
  123. package/dist/{chunk-WY6PP6AA.js → chunk-KXITGYLF.js} +40 -6
  124. package/dist/{chunk-66YVAGGM.js → chunk-L27SV425.js} +22 -20
  125. package/dist/{chunk-NE2W3OO7.js → chunk-LDLL7LB3.js} +24 -22
  126. package/dist/chunk-LFGTYX5U.js +379 -0
  127. package/dist/{chunk-EYWIDJFU.js → chunk-LGBMTVNT.js} +7 -5
  128. package/dist/{chunk-Q5AMFEWD.js → chunk-LGFL54FP.js} +3 -2
  129. package/dist/{chunk-6TACQN3N.js → chunk-LJXMYKZJ.js} +7 -5
  130. package/dist/{chunk-BKVWTZ6A.js → chunk-LKOR5UET.js} +29 -26
  131. package/dist/chunk-LNBQOP7D.js +294 -0
  132. package/dist/{chunk-O3WI5KWW.js → chunk-LO6P2VYG.js} +2 -2
  133. package/dist/chunk-LQJPN536.js +122 -0
  134. package/dist/{chunk-YEDDOYSC.js → chunk-LYBNHMVZ.js} +29 -5
  135. package/dist/{chunk-A3GY6SOA.js → chunk-LZ7NUC62.js} +20 -18
  136. package/dist/chunk-M32BLWDH.js +37 -0
  137. package/dist/{chunk-VYDBJ73M.js → chunk-M3NANSDZ.js} +17 -15
  138. package/dist/chunk-MFHL5URL.js +31 -0
  139. package/dist/chunk-MFR5OPBD.js +109 -0
  140. package/dist/{chunk-DE76JROX.js → chunk-MG4ZL5RW.js} +32 -20
  141. package/dist/{chunk-N7IXEHK3.js → chunk-MO6P2JZH.js} +10 -8
  142. package/dist/{chunk-65NYPGRC.js → chunk-MUWDB4R4.js} +1 -1
  143. package/dist/chunk-MZCGSXVR.js +34 -0
  144. package/dist/{chunk-MGYZM27B.js → chunk-N3XIYPU3.js} +51 -23
  145. package/dist/chunk-NDCF4R6S.js +172 -0
  146. package/dist/{chunk-DHPACDG7.js → chunk-NR2UJWOC.js} +10 -8
  147. package/dist/chunk-NXJ5URP6.js +51 -0
  148. package/dist/{chunk-UNM6ZOKP.js → chunk-NY2XSR5K.js} +147 -18
  149. package/dist/{chunk-5GDRCDQB.js → chunk-O45HFTFS.js} +3 -2
  150. package/dist/{chunk-ONLS5QA5.js → chunk-O4GXGGBX.js} +14 -12
  151. package/dist/chunk-O5PXQR67.js +249 -0
  152. package/dist/{chunk-PRPPGYZG.js → chunk-O66DM6DJ.js} +6 -4
  153. package/dist/{chunk-KEM4SDDP.js → chunk-O7FDLW7L.js} +11 -8
  154. package/dist/{chunk-T2UYZSCQ.js → chunk-O7XLYEFA.js} +169 -29
  155. package/dist/{chunk-FITWGOJ2.js → chunk-OHNCWBKF.js} +4 -4
  156. package/dist/{chunk-652QWTLZ.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-OUBGGKDU.js +22 -0
  161. package/dist/chunk-OWNCM4ZN.js +330 -0
  162. package/dist/{chunk-YISXLPHN.js → chunk-P2V7QW4D.js} +235 -35
  163. package/dist/{chunk-CNUKCS2T.js → chunk-P32RUW3B.js} +1632 -93
  164. package/dist/{chunk-BWZ77RQT.js → chunk-PAQ2AS5E.js} +1 -1
  165. package/dist/{chunk-ZMAINWBW.js → chunk-PBPBMP2B.js} +4 -3
  166. package/dist/{chunk-ZVM6AKKM.js → chunk-PJSJPMJI.js} +3 -3
  167. package/dist/{chunk-EFHQ3TWP.js → chunk-PKBHS4AA.js} +233 -56
  168. package/dist/{chunk-GT4I4ZWM.js → chunk-PMUAJGLI.js} +20 -16
  169. package/dist/chunk-PPD7HTDP.js +152 -0
  170. package/dist/chunk-PSOFBQWB.js +42 -0
  171. package/dist/{chunk-S2A7YC3Q.js → chunk-Q2TECDIT.js} +10694 -8896
  172. package/dist/chunk-Q4K5WB2W.js +42 -0
  173. package/dist/{chunk-UGLN7QHV.js → chunk-Q6DFNVRJ.js} +14 -12
  174. package/dist/chunk-QA4O2GGC.js +265 -0
  175. package/dist/chunk-QAXW2N3B.js +1216 -0
  176. package/dist/chunk-QBNWF5ZU.js +19 -0
  177. package/dist/chunk-QFWA2DPH.js +224 -0
  178. package/dist/{chunk-23W7VWKR.js → chunk-QKUJMING.js} +1363 -114
  179. package/dist/{chunk-NXFPS2LR.js → chunk-R44CYFPV.js} +16 -13
  180. package/dist/{chunk-CKSITVS4.js → chunk-R7NYHMUU.js} +2687 -786
  181. package/dist/chunk-REWWDVQB.js +162 -0
  182. package/dist/{chunk-JMSCMUCA.js → chunk-RGERPOIV.js} +145 -21
  183. package/dist/{chunk-6JCPI55B.js → chunk-RLDGWLQ7.js} +49 -7
  184. package/dist/chunk-RUGXBPWI.js +384 -0
  185. package/dist/{chunk-CPA6HPVR.js → chunk-RXPJMEOW.js} +18 -12
  186. package/dist/{chunk-3HI6Z55Y.js → chunk-S4PMJU6H.js} +339 -43
  187. package/dist/chunk-S5LSDXV4.js +40 -0
  188. package/dist/chunk-S7FCV7S5.js +51 -0
  189. package/dist/{chunk-5GGOLAKC.js → chunk-SDKLKB6I.js} +28 -26
  190. package/dist/chunk-SFSPGFCV.js +62 -0
  191. package/dist/{chunk-ZNCEKR4J.js → chunk-SFUP7TTO.js} +12 -8
  192. package/dist/{chunk-64EQYWCA.js → chunk-SLXZOMA6.js} +69 -19
  193. package/dist/chunk-SQV37XO2.js +273 -0
  194. package/dist/{chunk-K65BJIMT.js → chunk-SU74NDMQ.js} +19 -17
  195. package/dist/chunk-SYV5LHML.js +165 -0
  196. package/dist/chunk-T4YPZIQN.js +36 -0
  197. package/dist/chunk-T6DQR5TV.js +323 -0
  198. package/dist/{chunk-JIITQXFB.js → chunk-THDMSZ3R.js} +3075 -802
  199. package/dist/{chunk-JGZCG5VM.js → chunk-TNR75OXT.js} +7 -7
  200. package/dist/{chunk-D3PO4DOZ.js → chunk-TUULXQRW.js} +174 -15
  201. package/dist/chunk-TYQBFTBR.js +516 -0
  202. package/dist/chunk-U76OWS3Q.js +49 -0
  203. package/dist/{chunk-YYQN46FY.js → chunk-UCROWG2D.js} +27 -24
  204. package/dist/{chunk-6M5NK3K3.js → chunk-UF4AZOZB.js} +50 -10
  205. package/dist/chunk-UF4GLFBX.js +345 -0
  206. package/dist/{chunk-OT2O76OS.js → chunk-UGUP3ZM6.js} +240 -39
  207. package/dist/chunk-UNAGJYET.js +45 -0
  208. package/dist/{chunk-5WG5YP4T.js → chunk-UOR2DTHH.js} +16 -14
  209. package/dist/{chunk-S3QNRWYR.js → chunk-UPOY4YSQ.js} +14 -12
  210. package/dist/{chunk-EPTBZ3GP.js → chunk-UPS2DGFC.js} +1 -1
  211. package/dist/{chunk-4AK7IBVP.js → chunk-UUU4CLJG.js} +4 -2
  212. package/dist/{chunk-W3BQAZ3Q.js → chunk-UWMJKX5U.js} +14 -12
  213. package/dist/{chunk-QZSX3F7C.js → chunk-UWOJLHFT.js} +27 -23
  214. package/dist/chunk-VBTP56CE.js +535 -0
  215. package/dist/chunk-VCTWPLAO.js +211 -0
  216. package/dist/chunk-VNU26RCO.js +1215 -0
  217. package/dist/{chunk-CSZ4C5N6.js → chunk-VTZMAJ3W.js} +93 -10
  218. package/dist/{chunk-TXLH6WHQ.js → chunk-VW62D6QE.js} +14 -12
  219. package/dist/{chunk-CAQZUNOH.js → chunk-VY72R2XZ.js} +610 -3
  220. package/dist/{chunk-2DIQQJCB.js → chunk-VZALIKIF.js} +18 -15
  221. package/dist/{chunk-TYAID7B7.js → chunk-W62H2XSO.js} +25 -23
  222. package/dist/{chunk-HVUPKCGJ.js → chunk-W7VWI2YH.js} +9 -6
  223. package/dist/{chunk-TANFV3MZ.js → chunk-WERM6KPJ.js} +7 -4
  224. package/dist/{chunk-BOHJZTEQ.js → chunk-WF7B67YE.js} +208 -87
  225. package/dist/{chunk-7FBGJFEE.js → chunk-WG5U3F5V.js} +14 -12
  226. package/dist/{chunk-4NDAAFQT.js → chunk-WJF2CS6M.js} +8 -5
  227. package/dist/{chunk-XAKWMCXI.js → chunk-WKUJ3KPV.js} +4 -4
  228. package/dist/chunk-WMTRHUI5.js +103 -0
  229. package/dist/chunk-WNKPRSGI.js +36 -0
  230. package/dist/chunk-WXFLMQSR.js +223 -0
  231. package/dist/{chunk-RRTKKSLQ.js → chunk-X3WY6MN3.js} +8 -6
  232. package/dist/{chunk-ZCJDOK2S.js → chunk-X4CXA2IL.js} +47 -23
  233. package/dist/{chunk-UBBC2XSG.js → chunk-X5F3Q5LV.js} +560 -105
  234. package/dist/{chunk-C6EKFH7J.js → chunk-XD75VZIH.js} +9 -7
  235. package/dist/chunk-XERYFDB5.js +297 -0
  236. package/dist/chunk-XI2LCCYQ.js +420 -0
  237. package/dist/chunk-Y2EQNWKV.js +933 -0
  238. package/dist/{chunk-LR3R6Z2A.js → chunk-YHCMZC2J.js} +7 -7
  239. package/dist/chunk-YYY3AZFE.js +122 -0
  240. package/dist/{chunk-GDLULHTC.js → chunk-Z5IA3WDR.js} +19 -31
  241. package/dist/{chunk-T6XQL73F.js → chunk-ZFFYNRIO.js} +63 -23
  242. package/dist/{chunk-EDS2L2LD.js → chunk-ZFL7NY4F.js} +56 -27
  243. package/dist/{chunk-YMZ3TNYB.js → chunk-ZGULQAPZ.js} +7 -4
  244. package/dist/{chunk-4SKZDI62.js → chunk-ZIUFM5HT.js} +3 -1
  245. package/dist/{chunk-DKJA76CJ.js → chunk-ZJFRMSJT.js} +15 -13
  246. package/dist/chunk-ZJXLNDH4.js +239 -0
  247. package/dist/chunk-ZQ3ON2VQ.js +252 -0
  248. package/dist/{chunk-HITVBIJS.js → chunk-ZQ7SKESZ.js} +150 -415
  249. package/dist/{chunk-6QSERWXH.js → chunk-ZQXZ2SES.js} +24 -21
  250. package/dist/chunk-ZX57KSEQ.js +39 -0
  251. package/dist/{chunk-I3E7CX4H.js → chunk-ZZK56BLP.js} +5 -3
  252. package/dist/files.json +664 -368
  253. package/dist/packages/naysayer/constitution/constitution.yaml +19 -0
  254. package/dist/packages/sdk/npm/index.js +6194 -2542
  255. package/dist/packages/ui/dist/assets/{elk-api-tma0MCuh.js → elk-api-CIf-0gz5.js} +2 -2
  256. package/dist/packages/ui/dist/assets/index-CoK_Dl0D.js +47 -0
  257. package/dist/packages/ui/dist/assets/index-Dw20IRhQ.css +1 -0
  258. package/dist/packages/ui/dist/index.html +3 -2
  259. package/package.json +5 -5
  260. package/dist/chunk-2BF2EYJV.js +0 -174
  261. package/dist/chunk-42EVSKME.js +0 -37
  262. package/dist/chunk-4BKGMUIK.js +0 -53
  263. package/dist/chunk-5KLGBXG5.js +0 -48
  264. package/dist/chunk-6BNC6EQ4.js +0 -41
  265. package/dist/chunk-6D2CQ5II.js +0 -41
  266. package/dist/chunk-7AVHLZGD.js +0 -45
  267. package/dist/chunk-D46WUV3T.js +0 -33
  268. package/dist/chunk-E36QOJMD.js +0 -47
  269. package/dist/chunk-FQXYPF7E.js +0 -147
  270. package/dist/chunk-GBRFVT63.js +0 -45
  271. package/dist/chunk-ICY36XCH.js +0 -34
  272. package/dist/chunk-J4K3KVLD.js +0 -131
  273. package/dist/chunk-JZU3H6UQ.js +0 -54
  274. package/dist/chunk-NN2ZQEB4.js +0 -38
  275. package/dist/chunk-PCOCACY3.js +0 -385
  276. package/dist/chunk-RTEYOSJY.js +0 -29
  277. package/dist/chunk-RUVFXE2L.js +0 -666
  278. package/dist/chunk-RVH5SUW5.js +0 -69
  279. package/dist/chunk-VN3DP4LQ.js +0 -43
  280. package/dist/chunk-W5BVQF44.js +0 -36
  281. package/dist/chunk-WVPJSRRJ.js +0 -52
  282. package/dist/chunk-XPTOBS2D.js +0 -48
  283. package/dist/packages/ui/dist/assets/index-B54fm9FQ.js +0 -29
  284. package/dist/packages/ui/dist/assets/index-DD_hufQz.css +0 -1
@@ -5,33 +5,37 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  aliasArgv
8
- } from "./chunk-ZDPAS56H.js";
8
+ } from "./chunk-24OXGB3P.js";
9
9
  import {
10
10
  VERSION
11
- } from "./chunk-RZPYKDWS.js";
11
+ } from "./chunk-F3P7N7SF.js";
12
+ import {
13
+ OPTIONS,
14
+ optionsFor
15
+ } from "./chunk-QA4O2GGC.js";
12
16
  import {
13
17
  SCHEMA_VERSION,
14
18
  createLog
15
- } from "./chunk-D3PO4DOZ.js";
19
+ } from "./chunk-TUULXQRW.js";
16
20
  import "./chunk-TV45EUGM.js";
17
21
 
18
22
  // packages/cli/dist/main.js
19
23
  import { parseArgs } from "node:util";
20
24
  import { basename, join, resolve } from "node:path";
21
25
  import { existsSync } from "node:fs";
22
- var loadAi = () => import("./chunk-SP2I63OO.js");
26
+ var loadAi = () => import("./chunk-34S2WGOB.js");
23
27
  var runtimeForCli = async (...a) => {
24
28
  await setUpAi();
25
29
  return (await loadAi()).runtimeForCli(...a);
26
30
  };
27
- var gitUser = (...a) => import("./chunk-OLQJTJJU.js").then((m) => m.gitUser(...a));
31
+ var gitUser = (...a) => import("./chunk-7GJS6DNX.js").then((m) => m.gitUser(...a));
28
32
  var loadAiSetUp = () => Promise.all([
29
33
  loadAi(),
30
- import("./chunk-3ALD2W2A.js"),
31
- import("./chunk-6TACQN3N.js"),
32
- import("./chunk-6IU67AEK.js"),
33
- import("./chunk-Z6LF7HQN.js"),
34
- import("./chunk-3C7EYRFZ.js")
34
+ import("./chunk-GCWRWSU7.js"),
35
+ import("./chunk-LJXMYKZJ.js"),
36
+ import("./chunk-2GF7OLF3.js"),
37
+ import("./chunk-2Q5EDGEO.js"),
38
+ import("./chunk-HYU5VLGA.js")
35
39
  ]);
36
40
  async function setUpAi() {
37
41
  const [ai, providers, plugins, naysayer, codeTools, draftCheck] = await loadAiSetUp();
@@ -39,6 +43,12 @@ async function setUpAi() {
39
43
  plugins.registerModelProviderPlugins();
40
44
  ai.registerToolSource((at) => (req) => draftCheck.bothTools(codeTools.metarepoToolBox(at), draftCheck.draftCheckTool(at, req)));
41
45
  naysayer.registerCodeSearch(codeTools.criticCodeSearch);
46
+ ai.registerCopilotAcp({
47
+ ...process.argv[1] ? { exec: ai.atticusExec(process.argv[1]) } : {},
48
+ onProgress: (l) => process.stderr.write(`${l}
49
+ `),
50
+ clientVersion: VERSION
51
+ });
42
52
  }
43
53
  var NO_AI = /* @__PURE__ */ new Set([
44
54
  "next",
@@ -53,79 +63,82 @@ var NO_AI = /* @__PURE__ */ new Set([
53
63
  "upgrade",
54
64
  "support",
55
65
  "change list",
66
+ "estate measure",
67
+ "estate fresh",
68
+ "estate shared",
56
69
  "change status",
57
70
  // Reading the questions on file and printing one: files only, no model (question-commands.ts).
58
71
  "questions list",
59
72
  "questions show"
60
73
  ]);
61
74
  var runsNoAi = (group, command) => NO_AI.has(group) || NO_AI.has(`${group} ${command ?? ""}`);
62
- var loadCommands = () => import("./chunk-Q5AMFEWD.js");
75
+ var loadCommands = () => import("./chunk-LGFL54FP.js");
63
76
  var catalogValidate = (...a) => loadCommands().then((m) => m.catalogValidate(...a));
64
77
  var orgPackValidate = (...a) => loadCommands().then((m) => m.orgPackValidate(...a));
65
78
  var schemaExport = (...a) => loadCommands().then((m) => m.schemaExport(...a));
66
- var loadWorkspaceCommands = () => import("./chunk-JZU3H6UQ.js");
67
- var handoffDone = (...a) => loadWorkspaceCommands().then((m) => m.handoffDone(...a));
79
+ var loadWorkspaceCommands = () => import("./chunk-IP74LCOQ.js");
68
80
  var openspecCheck = (...a) => loadWorkspaceCommands().then((m) => m.openspecCheck(...a));
69
81
  var openspecSetup = (...a) => loadWorkspaceCommands().then((m) => m.openspecSetup(...a));
70
82
  var workspaceOpen = (...a) => loadWorkspaceCommands().then((m) => m.workspaceOpen(...a));
71
83
  var workspacePrune = (...a) => loadWorkspaceCommands().then((m) => m.workspacePrune(...a));
72
84
  var workspaceSync = (...a) => loadWorkspaceCommands().then((m) => m.workspaceSync(...a));
73
- var loadScanCommands = () => import("./chunk-ICY36XCH.js");
85
+ var loadScanCommands = () => import("./chunk-WNKPRSGI.js");
74
86
  var catalogDiff = (...a) => loadScanCommands().then((m) => m.catalogDiff(...a));
75
87
  var scanCommand = (...a) => loadScanCommands().then((m) => m.scanCommand(...a));
76
- var loadIndexCommands = () => import("./chunk-C6EKFH7J.js");
88
+ var loadIndexCommands = () => import("./chunk-XD75VZIH.js");
77
89
  var askCommand = (...a) => loadIndexCommands().then((m) => m.askCommand(...a));
78
90
  var impactCommand = (...a) => loadIndexCommands().then((m) => m.impactCommand(...a));
79
91
  var indexRebuild = (...a) => loadIndexCommands().then((m) => m.indexRebuild(...a));
80
92
  var queryCommand = (...a) => loadIndexCommands().then((m) => m.queryCommand(...a));
81
93
  var searchCommand = (...a) => loadIndexCommands().then((m) => m.searchCommand(...a));
82
- var loadSiteCommands = () => import("./chunk-VYDBJ73M.js");
94
+ var loadSiteCommands = () => import("./chunk-M3NANSDZ.js");
83
95
  var guideCommand = (...a) => loadSiteCommands().then((m) => m.guideCommand(...a));
84
96
  var siteBuildCommand = (...a) => loadSiteCommands().then((m) => m.siteBuildCommand(...a));
85
- var loadBaselineCommands = () => import("./chunk-GBRFVT63.js");
97
+ var loadBaselineCommands = () => import("./chunk-DLOBCJL6.js");
86
98
  var baselineCommand = (...a) => loadBaselineCommands().then((m) => m.baselineCommand(...a));
87
99
  var setupCommand = (...a) => loadBaselineCommands().then((m) => m.setupCommand(...a));
88
- var loadDigestCommands = () => import("./chunk-RTEYOSJY.js");
100
+ var loadDigestCommands = () => import("./chunk-MFHL5URL.js");
89
101
  var digestCommand = (...a) => loadDigestCommands().then((m) => m.digestCommand(...a));
90
- var loadDoctor = () => import("./chunk-5KLGBXG5.js");
102
+ var loadDoctor = () => import("./chunk-ONUPY3H6.js");
91
103
  var doctorCommand = (...a) => loadDoctor().then((m) => m.doctorCommand(...a));
92
- var loadSupport = () => import("./chunk-SJRGMG6A.js");
104
+ var loadSupport = () => import("./chunk-3NWDLGG6.js");
93
105
  var supportBundleCommand = (...a) => loadSupport().then((m) => m.supportBundleCommand(...a));
94
- var loadUpgrade = () => import("./chunk-6D2CQ5II.js");
106
+ var loadUpgrade = () => import("./chunk-AVTBS4OW.js");
95
107
  var upgradeCommand = (...a) => loadUpgrade().then((m) => m.upgradeCommand(...a));
96
- var loadReconcileCommands = () => import("./chunk-S3QNRWYR.js");
108
+ var loadReconcileCommands = () => import("./chunk-UPOY4YSQ.js");
97
109
  var aliasCommand = (...a) => loadReconcileCommands().then((m) => m.aliasCommand(...a));
98
110
  var reconcileCommand = (...a) => loadReconcileCommands().then((m) => m.reconcileCommand(...a));
99
- var loadKnowledgeCommands = () => import("./chunk-5WG5YP4T.js");
111
+ var loadKnowledgeCommands = () => import("./chunk-UOR2DTHH.js");
100
112
  var coverageCommand = (...a) => loadKnowledgeCommands().then((m) => m.coverageCommand(...a));
101
113
  var patternsScan = (...a) => loadKnowledgeCommands().then((m) => m.patternsScan(...a));
102
114
  var questionsCommand = (...a) => loadKnowledgeCommands().then((m) => m.questionsCommand(...a));
103
- var questionsFiles = (...a) => import("./chunk-2BF2EYJV.js").then((m) => m.questionsFiles(...a));
115
+ var questionsFiles = (...a) => import("./chunk-42SIDKEU.js").then((m) => m.questionsFiles(...a));
104
116
  var sourcesAdd = (...a) => loadKnowledgeCommands().then((m) => m.sourcesAdd(...a));
105
117
  var sourcesSync = (...a) => loadKnowledgeCommands().then((m) => m.sourcesSync(...a));
106
- var loadDiagramCommands = () => import("./chunk-UGLN7QHV.js");
118
+ var loadDiagramCommands = () => import("./chunk-Q6DFNVRJ.js");
107
119
  var diagramLibrary = (...a) => loadDiagramCommands().then((m) => m.diagramLibrary(...a));
108
120
  var diagramRender = (...a) => loadDiagramCommands().then((m) => m.diagramRender(...a));
109
- var loadStubCommands = () => import("./chunk-DKJA76CJ.js");
121
+ var loadStubCommands = () => import("./chunk-ZJFRMSJT.js");
110
122
  var stubCheck = (...a) => loadStubCommands().then((m) => m.stubCheck(...a));
111
123
  var stubServe = (...a) => loadStubCommands().then((m) => m.stubServe(...a));
112
- var loadIntakeCommands = () => import("./chunk-W3BQAZ3Q.js");
124
+ var loadIntakeCommands = () => import("./chunk-UWMJKX5U.js");
113
125
  var intakeAdd = (...a) => loadIntakeCommands().then((m) => m.intakeAdd(...a));
114
126
  var intakeList = (...a) => loadIntakeCommands().then((m) => m.intakeList(...a));
115
127
  var triageDecide = (...a) => loadIntakeCommands().then((m) => m.triageDecide(...a));
116
128
  var triageList = (...a) => loadIntakeCommands().then((m) => m.triageList(...a));
117
- var loadRunCommands = () => import("./chunk-4BKGMUIK.js");
129
+ var loadRunCommands = () => import("./chunk-OTLDSZDV.js");
118
130
  var assistantFiles = (...a) => loadRunCommands().then((m) => m.assistantFiles(...a));
119
131
  var driftCommand = (...a) => loadRunCommands().then((m) => m.driftCommand(...a));
120
132
  var specHandDown = (...a) => loadRunCommands().then((m) => m.specHandDown(...a));
121
133
  var specHandUp = (...a) => loadRunCommands().then((m) => m.specHandUp(...a));
122
- var taskHandoff = (...a) => loadRunCommands().then((m) => m.taskHandoff(...a));
134
+ var runDone = (...a) => loadRunCommands().then((m) => m.runDone(...a));
123
135
  var taskRun = (...a) => loadRunCommands().then((m) => m.taskRun(...a));
124
- var loadFeatureCommands = () => import("./chunk-6J5OKA4Y.js");
136
+ var taskRunReady = (...a) => import("./chunk-SYV5LHML.js").then((m) => m.taskRunReady(...a));
137
+ var loadFeatureCommands = () => import("./chunk-57TDNMI3.js");
125
138
  var featureSuggestNames = (...a) => loadFeatureCommands().then((m) => m.featureSuggestNames(...a));
126
- var loadDomainCommands = () => import("./chunk-7FBGJFEE.js");
139
+ var loadDomainCommands = () => import("./chunk-WG5U3F5V.js");
127
140
  var domainProfileCommand = (...a) => loadDomainCommands().then((m) => m.domainProfileCommand(...a));
128
- var loadPlanCommands = () => import("./chunk-66YVAGGM.js");
141
+ var loadPlanCommands = () => import("./chunk-L27SV425.js");
129
142
  var adoSync = (...a) => loadPlanCommands().then((m) => m.adoSync(...a));
130
143
  var changeDraft = (...a) => loadPlanCommands().then((m) => m.changeDraft(...a));
131
144
  var planStories = (...a) => loadPlanCommands().then((m) => m.planStories(...a));
@@ -133,13 +146,13 @@ var snowDraft = (...a) => loadPlanCommands().then((m) => m.snowDraft(...a));
133
146
  var snowSubmit = (...a) => loadPlanCommands().then((m) => m.snowSubmit(...a));
134
147
  var storyBarCommand = (...a) => loadPlanCommands().then((m) => m.storyBarCommand(...a));
135
148
  var templatesDraft = (...a) => loadPlanCommands().then((m) => m.templatesDraft(...a));
136
- var loadTodoCommands = () => import("./chunk-4RS5KZQD.js");
149
+ var loadTodoCommands = () => import("./chunk-63YRMR6J.js");
137
150
  var executorsCheck = (...a) => loadTodoCommands().then((m) => m.executorsCheck(...a));
138
151
  var todoDone = (...a) => loadTodoCommands().then((m) => m.todoDone(...a));
139
152
  var todoList = (...a) => loadTodoCommands().then((m) => m.todoList(...a));
140
153
  var todoRun = (...a) => loadTodoCommands().then((m) => m.todoRun(...a));
141
154
  var todoShow = (...a) => loadTodoCommands().then((m) => m.todoShow(...a));
142
- var loadSetupCommands = () => import("./chunk-QZSX3F7C.js");
155
+ var loadSetupCommands = () => import("./chunk-UWOJLHFT.js");
143
156
  var absorbCommand = (...a) => loadSetupCommands().then((m) => m.absorbCommand(...a));
144
157
  var absorbAcceptCommand = (...a) => loadSetupCommands().then((m) => m.absorbAcceptCommand(...a));
145
158
  var absorbRefreshCommand = (...a) => loadSetupCommands().then((m) => m.absorbRefreshCommand(...a));
@@ -149,7 +162,7 @@ var initCommand = (...a) => loadSetupCommands().then((m) => m.initCommand(...a))
149
162
  var reposDiscoverCommand = (...a) => loadSetupCommands().then((m) => m.reposDiscoverCommand(...a));
150
163
  var unadoptCommand = (...a) => loadSetupCommands().then((m) => m.unadoptCommand(...a));
151
164
  var zeroInstallCommand = (...a) => loadSetupCommands().then((m) => m.zeroInstallCommand(...a));
152
- var loadQualityCommands = () => import("./chunk-6QSERWXH.js");
165
+ var loadQualityCommands = () => import("./chunk-ZQXZ2SES.js");
153
166
  var ciArchiveGate = (...a) => loadQualityCommands().then((m) => m.ciArchiveGate(...a));
154
167
  var ciDrift = (...a) => loadQualityCommands().then((m) => m.ciDrift(...a));
155
168
  var ciSnippet = (...a) => loadQualityCommands().then((m) => m.ciSnippet(...a));
@@ -160,33 +173,33 @@ var glossaryList = (...a) => loadQualityCommands().then((m) => m.glossaryList(..
160
173
  var glossaryScan = (...a) => loadQualityCommands().then((m) => m.glossaryScan(...a));
161
174
  var testsGenerate = (...a) => loadQualityCommands().then((m) => m.testsGenerate(...a));
162
175
  var traceCommand = (...a) => loadQualityCommands().then((m) => m.traceCommand(...a));
163
- var loadInitiativeCommands = () => import("./chunk-I4JRCD6M.js");
176
+ var loadInitiativeCommands = () => import("./chunk-7UOMVMFG.js");
164
177
  var initiativeCommitment = (...a) => loadInitiativeCommands().then((m) => m.initiativeCommitment(...a));
165
178
  var initiativeNew = (...a) => loadInitiativeCommands().then((m) => m.initiativeNew(...a));
166
179
  var initiativePlan = (...a) => loadInitiativeCommands().then((m) => m.initiativePlan(...a));
167
180
  var initiativeStatus = (...a) => loadInitiativeCommands().then((m) => m.initiativeStatus(...a));
168
181
  var requestFromTeam = (...a) => loadInitiativeCommands().then((m) => m.requestFromTeam(...a));
169
- var loadLearnCommands = () => import("./chunk-VN3DP4LQ.js");
182
+ var loadLearnCommands = () => import("./chunk-IPHHDDC6.js");
170
183
  var explainCommand = (...a) => loadLearnCommands().then((m) => m.explainCommand(...a));
171
184
  var learnCheck = (...a) => loadLearnCommands().then((m) => m.learnCheck(...a));
172
185
  var learnList = (...a) => loadLearnCommands().then((m) => m.learnList(...a));
173
186
  var learnStart = (...a) => loadLearnCommands().then((m) => m.learnStart(...a));
174
187
  var sandboxCreate = (...a) => loadLearnCommands().then((m) => m.sandboxCreate(...a));
175
- var loadEvalCommands = () => import("./chunk-6BNC6EQ4.js");
176
- var loadBenchCommands = () => import("./chunk-XPTOBS2D.js");
188
+ var loadEvalCommands = () => import("./chunk-OMI6FPPN.js");
189
+ var loadBenchCommands = () => import("./chunk-KJXD4PNL.js");
177
190
  var benchFetch = (...a) => loadBenchCommands().then((m) => m.benchFetch(...a));
178
191
  var benchRun = (...a) => loadBenchCommands().then((m) => m.benchRun(...a));
179
192
  var benchSurvey = (...a) => loadBenchCommands().then((m) => m.benchSurvey(...a));
180
193
  var benchVerify = (...a) => loadBenchCommands().then((m) => m.benchVerify(...a));
181
- var loadScanVerifyCommands = () => import("./chunk-YYQN46FY.js");
182
- var stageCli = (...a) => import("./chunk-3USYZGRF.js").then((m) => m.stageCli(...a));
183
- var knowledgeCli = (...a) => import("./chunk-5GGOLAKC.js").then((m) => m.knowledgeCli(...a));
194
+ var loadScanVerifyCommands = () => import("./chunk-UCROWG2D.js");
195
+ var stageCli = (...a) => import("./chunk-2RLKFUUL.js").then((m) => m.stageCli(...a));
196
+ var knowledgeCli = (...a) => import("./chunk-SDKLKB6I.js").then((m) => m.knowledgeCli(...a));
184
197
  var defencesScan = (...a) => loadEvalCommands().then((m) => m.defencesScan(...a));
185
198
  var evalReport = (...a) => loadEvalCommands().then((m) => m.evalReport(...a));
186
199
  var evalRun = (...a) => loadEvalCommands().then((m) => m.evalRun(...a));
187
- var loadU1Commands = () => import("./chunk-AVJDSJ2F.js");
200
+ var loadU1Commands = () => import("./chunk-FUJM6RTF.js");
188
201
  var conformanceCommand = (...a) => loadU1Commands().then((m) => m.conformanceCommand(...a));
189
- var loadReleaseCommands = () => import("./chunk-E36QOJMD.js");
202
+ var loadReleaseCommands = () => import("./chunk-U76OWS3Q.js");
190
203
  var outcomeList = (...a) => loadReleaseCommands().then((m) => m.outcomeList(...a));
191
204
  var outcomeRecord = (...a) => loadReleaseCommands().then((m) => m.outcomeRecord(...a));
192
205
  var releaseEvidenceCommand = (...a) => loadReleaseCommands().then((m) => m.releaseEvidenceCommand(...a));
@@ -194,9 +207,9 @@ var releaseForecastCommand = (...a) => loadReleaseCommands().then((m) => m.relea
194
207
  var releaseNotesCommand = (...a) => loadReleaseCommands().then((m) => m.releaseNotesCommand(...a));
195
208
  var releasePlanCommand = (...a) => loadReleaseCommands().then((m) => m.releasePlanCommand(...a));
196
209
  var releaseSecurityCommand = (...a) => loadReleaseCommands().then((m) => m.releaseSecurityCommand(...a));
197
- var loadUiCommands = () => import("./chunk-JIITQXFB.js");
210
+ var loadUiCommands = () => import("./chunk-THDMSZ3R.js");
198
211
  var uiCommand = (...a) => loadUiCommands().then((m) => m.uiCommand(...a));
199
- var loadCriticCommands = () => import("./chunk-GT4I4ZWM.js");
212
+ var loadCriticCommands = () => import("./chunk-PMUAJGLI.js");
200
213
  var critic = (...a) => loadCriticCommands().then((m) => m.critic(...a));
201
214
  var criticStats = (...a) => loadCriticCommands().then((m) => m.criticStats(...a));
202
215
  var findingAction = (...a) => loadCriticCommands().then((m) => m.findingAction(...a));
@@ -211,7 +224,7 @@ var featureSpec = (...a) => loadFeatureCommands().then((m) => m.featureSpec(...a
211
224
  var featureSplit = (...a) => loadFeatureCommands().then((m) => m.featureSplit(...a));
212
225
  var featureSuggestLinks = (...a) => loadFeatureCommands().then((m) => m.featureSuggestLinks(...a));
213
226
  var featureTag = (...a) => loadFeatureCommands().then((m) => m.featureTag(...a));
214
- var loadChangeCommands = () => import("./chunk-WVPJSRRJ.js");
227
+ var loadChangeCommands = () => import("./chunk-SFSPGFCV.js");
215
228
  var changeArchive = (...a) => loadChangeCommands().then((m) => m.changeArchive(...a));
216
229
  var changeConflicts = (...a) => loadChangeCommands().then((m) => m.changeConflicts(...a));
217
230
  var changeHandoff = (...a) => loadChangeCommands().then((m) => m.changeHandoff(...a));
@@ -220,34 +233,35 @@ var changeNew = (...a) => loadChangeCommands().then((m) => m.changeNew(...a));
220
233
  var changeReturn = (...a) => loadChangeCommands().then((m) => m.changeReturn(...a));
221
234
  var changeStatus = (...a) => loadChangeCommands().then((m) => m.changeStatus(...a));
222
235
  var changeSync = (...a) => loadChangeCommands().then((m) => m.changeSync(...a));
236
+ var changeReleasePrs = (...a) => loadChangeCommands().then((m) => m.changeReleasePrs(...a));
223
237
  var changeLearn = (...a) => loadChangeCommands().then((m) => m.changeLearn(...a));
224
- var loadDialectCommands = () => import("./chunk-7SW2QWLU.js");
238
+ var loadDialectCommands = () => import("./chunk-E6ZIEVOI.js");
225
239
  var dialectGrade = (...a) => loadDialectCommands().then((m) => m.dialectGrade(...a));
226
240
  var dialectKit = (...a) => loadDialectCommands().then((m) => m.dialectKit(...a));
227
241
  var dialectTree = (...a) => loadDialectCommands().then((m) => m.dialectTree(...a));
228
242
  var dialectNew = (...a) => loadDialectCommands().then((m) => m.dialectNew(...a));
229
243
  var dialectRun = (...a) => loadDialectCommands().then((m) => m.dialectRun(...a));
230
244
  var dialectTest = (...a) => loadDialectCommands().then((m) => m.dialectTest(...a));
231
- var loadPluginCommands = () => import("./chunk-NXFPS2LR.js");
245
+ var loadPluginCommands = () => import("./chunk-R44CYFPV.js");
232
246
  var pluginTest = (...a) => loadPluginCommands().then((m) => m.pluginTest(...a));
233
247
  var pluginPin = (...a) => loadPluginCommands().then((m) => m.pluginPin(...a));
234
248
  var pluginAdd = (...a) => loadPluginCommands().then((m) => m.pluginAdd(...a));
235
- var loadFrameworkCommands = () => import("./chunk-2DIQQJCB.js");
249
+ var loadFrameworkCommands = () => import("./chunk-VZALIKIF.js");
236
250
  var frameworksCheck = (...a) => loadFrameworkCommands().then((m) => m.frameworksCheck(...a));
237
251
  var frameworksDiscover = (...a) => loadFrameworkCommands().then((m) => m.frameworksDiscover(...a));
238
252
  var frameworksKit = (...a) => loadFrameworkCommands().then((m) => m.frameworksKit(...a));
239
253
  var frameworksLearn = (...a) => loadFrameworkCommands().then((m) => m.frameworksLearn(...a));
240
254
  var frameworksSurvey = (...a) => loadFrameworkCommands().then((m) => m.frameworksSurvey(...a));
241
- var loadOnboardCommands = () => import("./chunk-K65BJIMT.js");
255
+ var loadOnboardCommands = () => import("./chunk-SU74NDMQ.js");
242
256
  var onboardAccept = (...a) => loadOnboardCommands().then((m) => m.onboardAccept(...a));
243
257
  var onboardCheck = (...a) => loadOnboardCommands().then((m) => m.onboardCheck(...a));
244
258
  var onboardDraft = (...a) => loadOnboardCommands().then((m) => m.onboardDraft(...a));
245
259
  var scanReview = (...a) => loadOnboardCommands().then((m) => m.scanReview(...a));
246
260
  var scanSurvey = (...a) => loadOnboardCommands().then((m) => m.scanSurvey(...a));
247
- var loadRepoTypeCommands = () => import("./chunk-J4K3KVLD.js");
248
- var loadRepoCommands = () => import("./chunk-DPZHZQKE.js");
249
- var loadSpecCommands = () => import("./chunk-TYAID7B7.js");
250
- var loadEstateCommands = () => import("./chunk-2BFCZ3RK.js");
261
+ var loadRepoTypeCommands = () => import("./chunk-2IIMFOPM.js");
262
+ var loadRepoCommands = () => import("./chunk-BXYMYEJ4.js");
263
+ var loadSpecCommands = () => import("./chunk-W62H2XSO.js");
264
+ var loadEstateCommands = () => import("./chunk-BO4KX37X.js");
251
265
  var onboardEval = (...a) => loadOnboardCommands().then((m) => m.onboardEval(...a));
252
266
  var onboardFramework = (...a) => loadOnboardCommands().then((m) => m.onboardFramework(...a));
253
267
  var onboardFrameworkAccept = (...a) => loadOnboardCommands().then((m) => m.onboardFrameworkAccept(...a));
@@ -268,13 +282,22 @@ Usage:
268
282
  [--json] Print the result as JSON
269
283
  atticus scan survey <repo> Your assistant reads the repo and drafts its scan settings (folders to leave out, path prefixes, client base URLs); checked against the code [--attempts 3] [--force] [--max-tokens n]
270
284
  atticus scan verify <repo> Your assistant compares the code with the last scan: what it missed, what it has wrong, a fix for each; checked, kept in proposals/scan/ [--attempts 3] [--json] [--accept] [--max-tokens n]
271
- atticus map <repo> Read a repo into facts in batches that fit your model, one hand-off at a time, each answer verified at once; for an assistant without file tools (ADR 0124; /atticus-map reads it in one session) [--mode m] [--max-tokens n] [--next] [--resume run] [--force] [--dir path] [--commit sha] [--json]
272
- [--estimate] Say what the first read costs: the checkout, commit, facts file, source files, tokens, your assistant's tier and the batches at the limit
285
+ atticus map <repo> Read a repo into facts in batches that fit your model, one hand-off at a time, each answer verified at once; for an assistant without file tools (ADR 0124; /atticus-map reads it in one session). Where runtime.yaml's reader is Copilot (or reads by a pasted line), it runs map --all's waiting loop for this one repo instead, --force reading it whole again (ADR 0170) [--mode m] [--max-tokens n] [--next] [--resume run] [--force] [--idle minutes] [--dir path] [--commit sha] [--json]
286
+ [--estimate] Say what the first read costs: the checkout, commit, facts file, source files, tokens, your assistant's tier and the batches at the limit; with housePrefixes in conventions.yaml, it warns of house packages the repo imports that no taught framework covers, with the frameworks learn command for each (ADR 0147); with --part n, names that part for the session to read whole (ADR 0170)
287
+ [--gaps] Plan a second pass on what the last verify left (files no fact cites, skipped lines, spec operations, entries no flow follows) for a new chat, sized to the session: writes facts/<repo>.gaps.md (ADR 0157)
273
288
  [--copy] Print the next batch's prompt to paste into a chat
274
289
  [--answer <file>] With --copy: read the pasted answer back from a file (- for stdin)
275
- atticus verify <repo> Check the facts your assistant wrote for a repo (/atticus-map) against its code: the claim on each cited line, the quote, references, secrets, coverage; raises the questions it wrote for a person; rejected facts go back to the assistant (ADR 0124) [--dir path] [--commit sha] [--routed a,b] [--json]
290
+ [--gaps --part n] With --gaps: only what is left of part n of the read plan, for a read that stopped in it (ADR 0161); /atticus-map <repo> --part n --gaps in a new chat reads it
291
+ [--rules] Top up a repo read before reading rules added since (estate fresh says rules-changed): only the rule parts its read lacked, over the files they apply to, the facts kept listed by id; writes facts/<repo>.rules.md for a new chat (/atticus-map <repo> --rules), or reads it in batches with --mode or --handoff; once verify passes the read records the rules (ADR 0167)
292
+ [--models entries|reachable|all] Which model classes (DTOs, requests, responses, schemas) the read, its parts, --gaps and --rules take: those the entry points and calls reach, read right after them (the default), those the repo's own entry points reach (entries: the ones only an outbound client reaches are left for later, ADR 0170), or all; those left out are recorded in the read plan as notReached and said by --estimate and verify (ADR 0169)
293
+ [--spent <tokens>] [--sessions n] [--part n] Record what the read took as your assistant reports it, in facts/<repo>.read-plan.yaml beside --estimate's estimate (Atticus can't meter an assistant's tokens; ADR 0141)
294
+ atticus map --all Map or re-map the whole estate in one command (ADR 0161): every repo's read planned at the model's limit, in the onboarding queue's order, fresh repos skipped, and repos read before the reading rules there are now topped up for the new rules only (ADR 0167). Under Copilot you paste one line per part into a new chat and Atticus waits for the facts, verifies them and moves on (s skip, r retry what's left, q stop; it resumes); where runtime.yaml allows model mode it runs unattended; with --mode copilot-acp (runtime.yaml version 3, ADR 0171) Atticus drives Copilot itself through its Agent Client Protocol, one new session per part, unattended. Then the estate is joined once. A part is done when verify's coverage leaves no file under it unaccounted; after --idle minutes (30) with nothing written it stops waiting, saying how to carry on; --force reads the repos (all, or --repos) whole again, the facts on file kept as already kept (ADR 0170) [--max-tokens n] [--stale | --gaps | --force] [--models entries|reachable|all] [--repos a,b] [--dry-run] [--mode model|hand-off|copilot-acp] [--max-parts n] [--budget-tokens n] [--idle minutes]
295
+ atticus verify <repo> Check the facts your assistant wrote for a repo (/atticus-map) against its code: the claim on each cited line, the quote, references, secrets, coverage; raises the questions it wrote for a person; rejected facts go back to the assistant (ADR 0124) [--dir path] [--commit sha] [--routed a,b] [--skipped] [--json]
276
296
  [--write] When nothing is rejected: put the facts in the catalog, the flows in specs/<repo>/, ask about calls nothing joins, and render the map
277
297
  [--verbose] With --write: list every record changed and flow written, not only the counts
298
+ atticus verify --all [--write] Every repo read so far (each with a facts file), one after another; no model is called
299
+ atticus verify audit <repo> Confirm a reproducible random sample of the repo's kept facts and its links, each with its cited lines (right, wrong or unsure); the answers go to facts/<repo>.audit.yaml, a person's record for a pull request (ADR 0148) [--size n] [--seed s] [--answers file] [--right ids] [--wrong ids] [--unsure ids] [--dir path] [--json]
300
+ atticus verify audit <repo> --report Precision from the answers, per kind of fact and for links (by how each was joined), with the sample size and a 95% interval; without a repo, every repo audited and the estate [--json]
278
301
  atticus map render <repo> [--json] Render the repo's map from the catalog: map.md, a page per flow with its sequence diagram, an OpenAPI file per component, under map/<repo>/
279
302
  atticus spec draft <repo> Your assistant writes the repo's flows, one per trigger, each step cited and checked [--attempts 3] [--resume run] [--force] [--mode m] [--max-tokens n]
280
303
  atticus spec check <repo> [--json] Check the repo's flows against the catalog, the template and the code; confirms steps on their cited lines
@@ -282,15 +305,41 @@ Usage:
282
305
  atticus estate flow <flow> [--depth 5] [--json] A flow followed across repos, with the data at each crossing
283
306
  atticus estate lineage <flow> <field> [--depth 5] [--json] Follow a field along a flow to the column it is stored in, or where it breaks
284
307
  atticus join [--json] Follow each repo's flows into the flows their calls reach, through the calls the repos' verified facts join (verify --write); the same as estate join
308
+ atticus join measure <reference> [--json] Measure your map against a reference you write by hand for two or three repos you know (their entries and calls, each call with the repo it should reach): reading recall, and join precision and recall; reads files only (docs/guide/measure.md)
309
+ atticus estate measure <reference> [--json] The same as join measure
310
+ atticus join shared import <their metarepo> --team <id> --system <id> Bring in another team's Atticus map, read-only: their verified entries (quotes redacted, the deny-list applied) go to shared/<team>/ at their commit, and verify --write joins your calls to that system to them, cited on their lines; files only (docs/guide/shared-maps.md) [--name <team name>] [--commit <sha>] [--json]
311
+ atticus join shared refresh [<team>] [<folder>] Import a team's map again from where it came from (a folder inside the metarepo), or the folder given (needed when it was outside); a newer commit replaces the old [--commit <sha>]
312
+ atticus join shared list [--json] The shared maps on file: whose, for which system, their commit and entries
313
+ atticus estate shared import|refresh|list The same as join shared
314
+ atticus join contracts [--json] Compare the payload on both sides of every link (REST calls, gateway hops, topics, calls to outside systems) from the field facts and the specs on file (a repo's own, a consumer's copy, a topic's .proto, Avro, JSON Schema or AsyncAPI, a vendor's or team's taken in through intake): missing and extra fields, required but not sent, types, error statuses, protobuf field numbers; a mapping nobody traced is unconfirmed, never a mismatch; reads files only (ADR 0164)
315
+ atticus estate contracts [--json] The same as join contracts
316
+ atticus estate fresh [--all] [--json] Which repos' clones have moved past their facts' commit, most stale first: per repo the facts' commit, the clone's, the files changed that the facts cite, the facts to read again and the command to run; local git only, nothing fetched or written (--all lists the fresh ones too); a repo whose facts are fresh but read before reading rules added since is rules-changed, with its top-up command (ADR 0167)
285
317
  atticus repo-type detect <repo> [--json] Match a repo against the org pack's repo types by fingerprint, with the evidence for each signal
286
318
  atticus repo-type new <id> --from <repo> [--force] Draft a repo type from a repo (its build files, dependencies, markers, folders) for you to edit
319
+ atticus repo-type note <type> | --org-wide [--add "..."] List a repo type's notes (or the org-wide ones), or add one: what the organisation's terms mean and what must hold, in its own words; each read of a repo is handed them
320
+ atticus repo-type rules [--save] [--json] Draft a checklist rule (status draft) from each note that reads as a rule (all, every, must); --save adds the new drafts to org-pack/checklists/org-notes.yaml for review
321
+ atticus skills list [--json] The skills, agents and team instructions the org pack keeps (yours and other teams' imported), and where each is written for Claude and Copilot (ADR 0177)
322
+ atticus skills import <their repo> --team <team> [--at <tag>] [--only <names>] [--replace] A pinned copy of another team's skills, agents and instructions in the org pack, then written for both assistants; a file edited here is kept
323
+ atticus skills write [--check] Write .claude/ and .github/ files (and CLAUDE.md's team instructions) from the org pack's sources; --check exits 1 when they are behind
324
+ atticus types list [--json] The organisation's component types (ADR 0180): Atticus's built-ins with the org pack's own, reworded and switched-off ones applied; each with its badge, description and whether it has notes
325
+ atticus types add <id> --name "..." --description "..." [--badge <1-3 chars>] [--shape <shape>] [--colour <css>] [--owner <team>] Write a component type to org-pack/component-types/<id>/type.yaml with a notes.md to fill in; the next reads are handed it, the canvas draws it, a new box on the canvas can be of it
326
+ atticus types notes <id> A component type's notes (the architect's write-up), or where to write them
327
+ atticus connect match <repo> --to <repo> | --system <id> [--mode copilot-acp|hand-off] [--read] [--json] Copilot reads the repo's loose call sites and proposes which of the other box's APIs each reaches, naming the lines; it writes only its answer under proposals/matching/, and nothing is a correction until a person ticks it in the app's Connect panel; --read reads the answer back after a hand-off (ADR 0178)
328
+ atticus rules list [<repo>] [--json] The organisation's reading rules (ADR 0176): every layer's file, or the rules a repo's reads are given, with their layer, drafts and what is switched off
329
+ atticus rules add --key <k> --rule "..." --org-wide | --type <t> | --repo <r> [--files <glob,glob>] [--example <path:line>] [--draft] Write a reading rule to a layer's file, for review
330
+ atticus rules activate <key> --org-wide | --type <t> | --repo <r> | --team <team> --type <t> Give a draft rule to reads (--team: one of another team's imported copy)
331
+ atticus rules off <key> --reason "..." --org-wide | --type <t> | --repo <r> Switch an earlier layer's rule (or builtin:<set>) off for this scope, saying why
332
+ atticus rules draft --type <t> [--repos a,b] | --repo <r> --about "..." [--mode copilot-acp|hand-off] Copilot drafts rules from what the reads keep missing (rejections, corrections, open questions); each is a draft a person sets active
333
+ atticus rules try <repo> --rule <key> [--files <n>] [--compare] One small Copilot session on a few files the rule names: the facts it would add or change; writes nothing
334
+ atticus rules import <their metarepo> --type <t> --team <team> --at <tag> A copy of another product team's type rules pinned at their tag, in reading-rules/imported/<team>/, each a draft until reviewed and set active
335
+ atticus rules notes --type <t> [--save] The repo type's notes that read as an instruction to a reader, offered (with --save written) as draft reading rules
287
336
  atticus scan review <repo> What the last scan couldn't read: your assistant gives a verdict on each gap and a rule for code it can read; checked [--gaps] [--attempts 3]
288
337
  atticus query "<query>" Find records, e.g. "kind:interface via:gateway -has:pattern"
289
338
  atticus query "<words>" --search Search everything the index holds (records, knowledge items, flows, changes, answered questions, wiki sections, documents), names and ids first [--by words|meaning|both] [--kind k,k] [--limit n] [--json]
290
339
  [--limit n] [--json] (see docs/query-language.md)
291
340
  atticus context show <id> One record, flow, step, knowledge item, change, answered question or wiki section in full, with its file
292
341
  atticus context walk <id> [--hops 1] [--kind k,k] [--limit n] The links from one id, how each was made, at most two hops
293
- atticus cites --repo <repo> --path <path> What cites each line of one file: the flow steps, with the changes in flight on them, and the records (or --file <path on disk>) [--json]
342
+ atticus cites --repo <repo> --path <path> What cites each line of one file: the flow steps, with the changes in flight on them, and the records (or --file <path on disk>) [--file <path on disk>] [--json]
294
343
  atticus context code <id> [--around 6] The code a fact cites, a few lines around each cited line, from the workspace checkout
295
344
  [--repo r --path p --line n] (or one line a fact cites)
296
345
  atticus context similar <id> [--kind k,k] [--limit n] What reads like one id, by the local embedding model: a hint where to look, never a link
@@ -303,7 +352,8 @@ Usage:
303
352
  atticus ask "<question>" Answer a plain question from the catalog, showing the query it ran
304
353
  atticus setup [--json] The setup checklist until the catalog is accepted, with a fix for each step
305
354
  atticus baseline Accept the as-is catalog as the baseline [--note text] [--site dir]
306
- atticus doctor [--json] Check this machine: Node, Git, OpenSpec, proxy, TLS, disk, port, assistant, and the tier your assistant reads a repo at
355
+ atticus doctor [--json] Check this machine: Node, Git, OpenSpec, proxy, TLS, disk, port, assistant, the tier your assistant reads a repo at, and (where runtime.yaml allows copilot-acp) the Copilot language server, its version and its sign-in, without running a session (ADR 0171)
356
+ atticus doctor --counts [--json] How far the map has got, in counts and flags only (questions, target questions by the calls each covers, links by how joined, asked and unresolved calls by why the join left them, repos read and stale, facts, tokens reported): nothing named, safe to paste
307
357
  atticus probe Measure what your assistant can do here (open a file, write one, run a command), so the tier it reads a repo at is measured, not read off runtime.yaml; then /atticus-probe in the assistant (ADR 0124) [--assistant id] [--max-tokens n] [--json]
308
358
  atticus probe answer <code> Check the assistant's answer (none when it couldn't open the file) and keep what it measured in .atticus/probe/<assistant>.yaml, on this machine only [--pasted] [--max-tokens n] [--json]
309
359
  atticus secret set|check|forget <name> Keep a model provider's key in this machine's credential store under the name runtime.yaml gives as keyEnv; read from stdin, never printed
@@ -339,20 +389,33 @@ Usage:
339
389
  atticus patterns scan [--json] Find integration patterns in the wikis and compare them with the org pack
340
390
  atticus coverage [--json] What the catalog knows per system and area: verified, document-only, unknown
341
391
  atticus questions [--json] Knowledge gaps and the owner questions that close them
342
- atticus questions list [--state open] [--json] The questions in questions/ a step raised for a person
392
+ atticus questions owner <id> --text "..." [--by who] [--json] Record an owner's answer to a gap's owner question in catalog/curated/ownerquestion/<id>.yaml; the gap closes once the fact is in the catalog
393
+ atticus questions list [--state open] [--mine] [--json] The questions in questions/ a step raised for a person,
394
+ in the order to ask them, each with its owner team; --mine, your teams' only
343
395
  atticus questions show <id> [--json] One question on file, with its options, evidence and answer
344
- atticus questions answer <id> --option <n> | --text "..." Write the answer to the file; prints the rerun
345
- [--scope repo|repo-type] [--type <repo type>] [--by who]
396
+ (--json on an open target or topics question adds its picks: every repo, system and team --target takes, for the editors' pickers; ADR 0166)
397
+ atticus questions answer <id> --option <n> | --text "..." | --accept-proposal Write the answer to the file; prints the rerun
398
+ [--scope repo|repo-type] [--type <repo type>] [--by who] (--accept-proposal: the assistant's proposed answer, checked again, as yours)
399
+ [--match <host pattern or /path/**>] (a target or hosts answer by rule: it covers every call that matches, the calls found later too)
400
+ [--target <id> [--add-system vendor|internal] [--name "..."]] (where a call goes: any repo of the manifest, read or not, any system of the profile or a team in roles.yaml; a vendor or a team with no system yet is added to the profile with --add-system, a file change for review; ADR 0162)
401
+ atticus questions propose [<id>] /atticus-propose as a command (ADR 0171): under --mode copilot-acp (or runtime.yaml's default) Copilot proposes in a new session, unattended, writing only proposals/questions/, then the proposals are checked; otherwise it prints the line to paste. A person still accepts each one [--mode copilot-acp|hand-off]
402
+ atticus questions proposed [--json] The answers /atticus-propose proposed for open questions, each citation checked (the file, the line, the quote on it); exits 1 while one doesn't check
403
+ atticus questions decisions [--json] What the AI decided that stands (ADR 0181): its pairings and answers, Detected by AI with the run; counts from code, by a person, by AI; the batches; whether deciding is paused by the sample audit
404
+ atticus questions correct <q-id | link:<repo>:<call>> --option <n> | --api <entry> --to <repo> | --none Correct an AI decision as yours; with Apply to similar (on; --no-similar off) a rule derived from it (or --match) re-checks every AI decision and open item it covers [--no-similar] [--match <rule>] [--preview] [--json]
405
+ atticus questions undo <batch> [--json] Undo one batch of decisions (by AI, or a correction and its rule): exactly its lines and answers
406
+ atticus questions sheet [--out <file>] Every open question in one YAML answer sheet, each with an empty answer:, to answer in one sitting
407
+ atticus questions sheet --apply <file> [--by who] [--json] Answer each filled entry as you; skips blanks, refuses one whose question changed since
346
408
  atticus intake add <files...> Drop documents, specs and diagrams into inputs/inbox for intake
347
409
  atticus intake list [--json] What intake read from inputs/: kinds, systems, duplicates, versions
348
410
  atticus intake impact <spec> [--json] A vendor spec against its other version: each change, breaking or not, and the gateway routes, service calls and callers it reaches
411
+ atticus intake traffic <file> --source apigee|catalog [--from YYYY-MM-DD --to YYYY-MM-DD] [--json] A traffic export (a file) kept as aggregate counts in evidence/traffic/, client ids, IPs and tokens dropped; the next verify write marks the links it shows used
349
412
  atticus triage [--json] What needs a person: unknown names, conflicts with code, image edges
350
413
  atticus triage decide <item> <n> Choose option n for a triage item; writes a curated decision
351
414
  [--reason text]
352
415
  atticus diagram render <view|file> Draw a view (context, container, data, event, sequence) or a .drawio file
353
416
  [--focus id] [--format mermaid|drawio] [--out file]
354
417
  atticus diagram library <file> Write the draw.io shape library
355
- atticus stub serve <spec|id> Serve a stub of an API from its spec, or from the catalog (--from-catalog)
418
+ atticus stub serve <spec|id> Serve a stub of an API from its spec, or from the catalog [--from-catalog]
356
419
  [--port 4010] [--host 127.0.0.1]
357
420
  atticus stub check <spec> Which operations have examples to answer with
358
421
  atticus dialect new <name> --from <repo>[,<repo>...] Scaffold a dialect from sample repos
@@ -377,10 +440,12 @@ Usage:
377
440
  atticus frameworks check [name] Run each framework model's own tests; a failing model isn't used
378
441
  atticus frameworks survey [--package <prefix>[,...]] How the repos use house frameworks, any language [--json]
379
442
  atticus frameworks kit [dir] Export the framework-model kit for an assistant
380
- atticus change new "<title>" Start a change from a template: --type <type>
443
+ atticus change new "<title>" --type <type> Start a change from a template
381
444
  [--template id] [--id id] [--owner role=a,b]... [--system id]... [--like <archived change>]
382
445
  [--impact <vendor spec>] (its footprint: what the spec's newer version reaches, see intake impact)
383
- atticus change similar "<brief>" The archived changes nearest a new brief (or --change <id>: a change's own), to start from one with change new --like or change attach --like [--limit n] [--json]
446
+ atticus change sketch <change> --from <file.drawio|.mmd> [--save] [--json] Read a draw.io export or a Mermaid flowchart as strokes into the change's target flows (a line marked new or not on today's map is a call or a topic; one marked retired takes today's step out); shows what it would draw, --save draws it (ADR 0179)
447
+ atticus change impact <change> [--json] What the change's target flows break across the estate: each entry or table, who calls or uses it (a link the map guessed: may break, not counted), the fields that stop crossing and the gateway routes to update, each with its owner team; then who calls the callers, up to five hops up
448
+ atticus change similar "<brief>" The archived changes nearest a new brief (or --change <id>: a change's own), to start from one with change new --like or change attach --like [--change <id>] [--limit n] [--json]
384
449
  atticus domain profile <system> A system as a domain profile, filled from the catalog [--out file]
385
450
  atticus change feature <change> The feature stage: your assistant places the change on the estate's flows and features from the brief, stories or a design; checked and criticised every draft until done [--from-figma f.json] [--mode m] [--resume run] [--force] [--context-tokens n] [--whole-context] [--max-tokens n]
386
451
  atticus change architecture <change> The architecture stage: the target flows (steps added, changed or removed, with fields) as flow deltas; looped the same way [--mode m] [--resume run] [--context-tokens n] [--whole-context] [--max-tokens n]
@@ -391,7 +456,9 @@ Usage:
391
456
  atticus change knowledge <id> The patterns, standards, decisions, processes, requests and wiki and document sections that apply to the change, picked by each of its stages from the feature stage on and by each task, with near-misses and the pages that disagree (each undecided one asked of a person once); confirm one (later stages that take its kind pick it) or exclude it (they leave it out) [--confirm id] [--exclude id] [--json]
392
457
  atticus change handoff <id> --approve Open the phase's hand-off PR; merging it approves the gate [--repo]
393
458
  (without --approve: say what it would open, send nothing)
394
- atticus change sync <id> [--approve] Read the hand-off PR; a merged PR moves the change on (--approve merges a ready one) and keeps what Atticus drafted beside what merged (stage/<stage>.drafted/, .merged/)
459
+ atticus change sync <id> [--approve] Read the hand-off PR and the release PRs; a merged hand-off PR moves the change on (--approve merges a ready one) and keeps what Atticus drafted beside what merged (stage/<stage>.drafted/, .merged/)
460
+ atticus change release-prs <id> --approve Open one release PR per code repo from change/<id> into its default branch, before go/no-go; a person merges each on the Git host (ADR 0184)
461
+ (without --approve: say which it would open, send nothing)
395
462
  atticus change learn [--json] How much people changed Atticus's drafts: per merged change and stage, lines per file and each story's criteria and fields, and whether it falls over time (from the kept drafts; completes any whose merge you have since pulled)
396
463
  atticus change return <id> --reason "<why>" --approve Close the hand-off PR and return the change to the product owner
397
464
  atticus change archive <id> [--no-rescan] Archive a released change and rescan its repos
@@ -418,8 +485,9 @@ Usage:
418
485
  atticus feature spec <id> Draft an OpenSpec capability spec from a confirmed feature
419
486
  atticus catalog migrate [--dry-run] Rewrite catalog files to the current schema version
420
487
  atticus task context <change> <task> [--json|--markdown] The task's context for an assistant: its story and criteria, the step it implements with today's code, what applies, the knowledge that applies to it (how-tos with their steps, standards, processes, decisions, each with its page, the pages that say the same and those that disagree), the files attached and the files likely to change
421
- atticus task run <change> <task> Run a task with AI [--level plan|draft|pr] [--mode m] [--approve]
422
- atticus task <change> <task> Run one task with your assistant, the same as task run [--level plan|draft|pr] [--mode m] [--approve]
488
+ atticus task run <change> <task> Run a task with AI [--level plan|draft|pr] [--mode m] [--approve] [--dry-run]
489
+ atticus task run-ready <change> Run all ready tasks: every task whose dependencies are done, in cross-repo order, one task run each, stopping on the first that needs a person (ADR 0181) [--level draft|pr] [--mode m] [--approve] [--dry-run]
490
+ atticus task <change> <task> Run one task with your assistant, the same as task run [--level plan|draft|pr] [--mode m] [--approve] [--dry-run]
423
491
  atticus spec hand-down <change> <task> Create the task's Spec Kit feature in its repo [--force]
424
492
  atticus spec hand-up <change> <task> Read the Spec Kit feature back at the PR [--pr n --pr-url url]
425
493
  atticus drift <change> [--json] Compare design, repo plans and code
@@ -451,11 +519,12 @@ Usage:
451
519
  atticus todo done <step> Record a manual step's result [--result k=v]... [--skip --note why]
452
520
  atticus todo run <step> --with <executor> Run a step with a team's own tool [--approve --inputs sha] [--fill-only]
453
521
  atticus executors check Ping configured executors and show what each covers
454
- atticus init <folder> --platform <p> Create a new metarepo named after the folder [--from pack] [--owner who] [--openspec-store: also an OpenSpec store, beta]
522
+ atticus init <folder> --platform <p> Create a new metarepo named after the folder [--from pack] [--owner who] [--by you] [--openspec-store: also an OpenSpec store, beta]
455
523
  atticus adopt <path> Use Atticus in an existing repo; writes only .atticus/ [--platform p] [--name n]
456
524
  atticus unadopt <path> Remove Atticus from an adopted repo, leaving it as it was
457
525
  atticus repos discover <folder> | --org <org> Propose repos.manifest.yaml entries [--platform p] [--dry-run]
458
526
  atticus repo add <url|path> Add one repo to the manifest, with what it is in your own words; with a folder and no --type, its type is read from its files (or, where they say nothing, from what you wrote) [--id x] [--type t] [--owner team] [--system s] [--component c] [--platform p] [--description "what it is"] [--no-description] [--json]
527
+ atticus repo rename <old> <new> Move a repo's id with its facts, read plan, reviewed file, questions and catalog records, in one change you review (files moved and rewritten; nothing committed or pushed)
459
528
  atticus repo describe [<repo>] Say what a repo is, in one line, for a repo that has none (or edit what it says); with no repo, the repos with no description and the drafts waiting for a person [--description "..."] [--accept] [--reject] [--json]
460
529
  [--drafted "..." --cites f:n] Your assistant hands over the line it drafted, with the lines it read it from; kept unconfirmed until a person confirms it
461
530
  atticus absorb <git-url|path> --id <id> Translate another team's prompts, agents, checklists, OpenSpec, Spec Kit, TypeSpec or Atticus repo
@@ -483,7 +552,7 @@ Usage:
483
552
  atticus initiative plan <id> --target <system> Plan its changes and commitments [--release d] [--system s]... [--dry-run]
484
553
  atticus initiative status <id> Critical path, at-risk and slipped commitments
485
554
  atticus initiative request <id> <party> Send a team a system card and track the reply [--system s]...
486
- atticus initiative commit <commitment> <open|at-risk|done|slipped> Record a commitment's status
555
+ atticus initiative commit <commitment> <open|at-risk|done|slipped> Record a commitment's status [--note "<words>"]
487
556
  atticus learn [list] | learn start <role|lesson> | learn check [--answer a] [--lesson l] [--step s]
488
557
  Lessons by role in a practice sandbox: list them, start one, check a step
489
558
  atticus sandbox create <dir> A throwaway practice metarepo
@@ -512,14 +581,19 @@ Usage:
512
581
  atticus standards accept Put the proposed checks a person picks into org-pack/checklists/standards.yaml [--only <id,id>] [--dry-run] [--json]
513
582
  atticus openspec setup Set up OpenSpec with the org-flow schema in the metarepo
514
583
  atticus openspec check Check the OpenSpec version and validate every change and spec
584
+ atticus spec seed <repo> [--json] Propose a repo's starting openspec/specs from its verified flows, as the change openspec/changes/seed-<repo>/: a requirement per flow, a scenario per path and error case, each citing its lines (ADR 0146)
585
+ atticus spec accept <repo> Accept the repo's seeded spec: OpenSpec validates it strictly, then archives it into openspec/specs/; the next change modifies it
515
586
  atticus openspec <args...> Run the bundled OpenSpec CLI in the metarepo with these arguments (openspec isn't on PATH; it ships inside Atticus). status, instructions and show take --change from the only change open when you don't name one
516
- atticus handoff done <run-id> Tell Atticus a hand-off artifact is written; it validates it (a stage's draft: with the stage's checks, its problems listed with their lines until it is clean) [--model m: the model that wrote it, kept in the run record]
587
+ atticus handoff done <run-id> Tell Atticus a hand-off artifact is written; it validates it (a stage's draft: with the stage's checks, its problems listed with their lines until it is clean) [--model m: the model that wrote it, kept in the run record] [--approve: a pr-level task run's push and PR]
517
588
  atticus stage check <change> <stage> <file> Run a stage's checks on a draft's file and list its problems with their lines; writes nothing (a drafter checks its draft before it hands it in)
518
589
  atticus next [--all] [--json] The next step to take, its command and slash command, and why; from the files only
590
+ [--queue] The repos to read next, gateways and the repos others call first so links land early, each with its estimated cost, and what each read so far took (ADR 0141)
519
591
  atticus <step> --handoff [--json] On map, scan survey, scan verify, spec draft, knowledge scan, change feature, change architecture, change small, change draft, stories, change needs, knowledge find, knowledge ask and critic (its lenses one at a time, as a stage offers its critic lenses after each draft): print only the prompt, the result file and the commands that finish it
520
- atticus <step> --max-tokens n On the same steps: the model's limit. The whole prompt fits n tokens (counted as characters / 4, a quarter kept back for the count's error), or the step says before handing off that it can't, with the numbers. The VS Code extension passes its model's limit to every step
592
+ atticus <step> --max-tokens n On the same steps: the model's limit. The whole prompt fits n tokens (counted as characters / 4 and characters outside ASCII one each, a quarter kept back for the count's error), or the step says before handing off that it can't, with the numbers. The VS Code extension passes its model's limit to every step
521
593
  atticus workspace sync Clone or update the base clone of every repo in the manifests
522
594
  [--repos a,b] Only these repos
595
+ [--from <folder>] Copy a missing base clone from your own clone of it in that folder: no network, your clone only read
596
+ atticus workspace bring-in After a proposal or hand-off PR merges: put back the edits it already has and fast-forward the metarepo; your own edits stay (ADR 0183)
523
597
  atticus workspace open <change> Create the change's worktrees, repos.yaml and editor workspaces
524
598
  --repos a,b The repos the change touches
525
599
  atticus workspace prune <change> Remove worktrees whose PRs merged or closed
@@ -531,7 +605,7 @@ Usage:
531
605
  atticus ui [--port n] [--open] Start the app on this machine (127.0.0.1); Ctrl+C stops it
532
606
  [--embed vscode] Let a VS Code panel show the app (the Atticus extension starts it so)
533
607
  [--parent pid] Stop when that process ends (an editor that started it)
534
- [--show-token] Print the session token, for an assistant or a script (an editor that starts it gets it)
608
+ [--show-token] Print the session token, for an assistant or a script (an editor that starts it gets it); it never approves a PR, push, merge or message (ADR 0186)
535
609
  [--full] Every page a tab of its section, and the menu's More pages open
536
610
  atticus --version Print the version
537
611
  atticus --help Show this help
@@ -577,7 +651,8 @@ async function main(given, io, o = {}) {
577
651
  ...new Set(argv.filter((a) => a.startsWith("--")).map((a) => a.slice(2).split("=")[0]))
578
652
  ];
579
653
  const rootAt = argv.indexOf("--root");
580
- const root = resolve(rootAt >= 0 && argv[rootAt + 1] ? argv[rootAt + 1] : process.cwd());
654
+ const rootEq = argv.find((a) => a.startsWith("--root="));
655
+ const root = resolve(rootAt >= 0 && argv[rootAt + 1] ? argv[rootAt + 1] : rootEq ? rootEq.slice("--root=".length) : process.env.ATTICUS_ACP_SESSION && process.env.ATTICUS_ROOT ? process.env.ATTICUS_ROOT : process.cwd());
581
656
  const log = () => isMetarepoRoot(root) ? createLog(root, o.quiet ? { level: "warn" } : {}) : void 0;
582
657
  try {
583
658
  const code = await dispatch(argv, io);
@@ -610,7 +685,7 @@ function positionalsAt(argv) {
610
685
  const { tokens } = parseArgs({
611
686
  args: argv,
612
687
  allowPositionals: true,
613
- options: OPTIONS,
688
+ options: optionsFor(argv),
614
689
  strict: false,
615
690
  tokens: true
616
691
  });
@@ -639,186 +714,18 @@ async function dispatch(argv, io) {
639
714
  return 2;
640
715
  }
641
716
  }
642
- var OPTIONS = {
643
- help: { type: "boolean", short: "h" },
644
- version: { type: "boolean", short: "v" },
645
- fix: { type: "boolean" },
646
- root: { type: "string" },
647
- repos: { type: "string" },
648
- all: { type: "boolean" },
649
- kind: { type: "string" },
650
- executor: { type: "string" },
651
- fixture: { type: "string" },
652
- force: { type: "boolean" },
653
- draft: { type: "boolean" },
654
- story: { type: "string" },
655
- gaps: { type: "boolean" },
656
- full: { type: "boolean" },
657
- "dry-run": { type: "boolean" },
658
- json: { type: "boolean" },
659
- limit: { type: "string" },
660
- filter: { type: "string" },
661
- "batch-tokens": { type: "string" },
662
- "max-tokens": { type: "string" },
663
- // atticus probe (ADR 0124 addendum A-probe).
664
- assistant: { type: "string" },
665
- pasted: { type: "boolean" },
666
- "context-tokens": { type: "string" },
667
- "whole-context": { type: "boolean" },
668
- search: { type: "boolean" },
669
- regex: { type: "boolean" },
670
- "ignore-case": { type: "boolean" },
671
- paths: { type: "string" },
672
- // atticus context (ADR 0107 addendum): the context tools.
673
- input: { type: "string" },
674
- run: { type: "string" },
675
- round: { type: "string" },
676
- hops: { type: "string" },
677
- line: { type: "string" },
678
- around: { type: "string" },
679
- depth: { type: "string" },
680
- by: { type: "string" },
681
- as: { type: "string" },
682
- group: { type: "string", multiple: true },
683
- channel: { type: "string" },
684
- send: { type: "boolean" },
685
- site: { type: "string" },
686
- reason: { type: "string" },
687
- focus: { type: "string" },
688
- format: { type: "string" },
689
- out: { type: "string" },
690
- area: { type: "string" },
691
- iteration: { type: "string" },
692
- port: { type: "string" },
693
- open: { type: "boolean" },
694
- "show-token": { type: "boolean" },
695
- embed: { type: "string" },
696
- parent: { type: "string" },
697
- host: { type: "string" },
698
- catalog: { type: "string" },
699
- "from-catalog": { type: "boolean" },
700
- from: { type: "string" },
701
- package: { type: "string" },
702
- jars: { type: "string", multiple: true },
703
- learn: { type: "boolean" },
704
- type: { type: "string" },
705
- template: { type: "string" },
706
- like: { type: "string" },
707
- impact: { type: "string" },
708
- id: { type: "string" },
709
- owner: { type: "string", multiple: true },
710
- system: { type: "string", multiple: true },
711
- base: { type: "string" },
712
- repo: { type: "string" },
713
- gate: { type: "string" },
714
- lens: { type: "string" },
715
- model: { type: "string" },
716
- "asked-of": { type: "string" },
717
- edit: { type: "string" },
718
- description: { type: "string" },
719
- title: { type: "string" },
720
- name: { type: "string" },
721
- attempts: { type: "string" },
722
- users: { type: "string" },
723
- language: { type: "string" },
724
- replace: { type: "boolean" },
725
- into: { type: "string" },
726
- level: { type: "string" },
727
- mode: { type: "string" },
728
- approve: { type: "boolean" },
729
- pr: { type: "string" },
730
- "pr-url": { type: "string" },
731
- change: { type: "string" },
732
- check: { type: "boolean" },
733
- resume: { type: "string" },
734
- eval: { type: "string" },
735
- epic: { type: "string" },
736
- "no-ai": { type: "boolean" },
737
- "openspec-store": { type: "boolean" },
738
- "no-drift": { type: "boolean" },
739
- warnings: { type: "boolean" },
740
- "no-rescan": { type: "boolean" },
741
- refresh: { type: "string" },
742
- export: { type: "string" },
743
- result: { type: "string", multiple: true },
744
- skip: { type: "boolean" },
745
- note: { type: "string" },
746
- for: { type: "string" },
747
- with: { type: "string" },
748
- inputs: { type: "string" },
749
- "fill-only": { type: "boolean" },
750
- platform: { type: "string" },
751
- ref: { type: "string" },
752
- task: { type: "string" },
753
- latest: { type: "boolean" },
754
- org: { type: "string" },
755
- framework: { type: "string" },
756
- csv: { type: "boolean" },
757
- "no-write": { type: "boolean" },
758
- junit: { type: "string" },
759
- summary: { type: "string" },
760
- "json-out": { type: "string" },
761
- "warn-only": { type: "boolean" },
762
- write: { type: "string" },
763
- path: { type: "string" },
764
- file: { type: "string" },
765
- submodule: { type: "boolean" },
766
- save: { type: "boolean" },
767
- only: { type: "string" },
768
- "verified-only": { type: "boolean" },
769
- unverified: { type: "boolean" },
770
- set: { type: "string", multiple: true },
771
- find: { type: "string" },
772
- drift: { type: "string", multiple: true },
773
- journey: { type: "string" },
774
- release: { type: "string" },
775
- target: { type: "string" },
776
- answer: { type: "string" },
777
- lesson: { type: "string" },
778
- step: { type: "string" },
779
- agent: { type: "string", multiple: true },
780
- runs: { type: "string" },
781
- audience: { type: "string" },
782
- value: { type: "string" },
783
- bench: { type: "string" },
784
- cache: { type: "string" },
785
- batch: { type: "string" },
786
- specs: { type: "boolean" },
787
- estate: { type: "string" },
788
- accept: { type: "boolean" },
789
- // atticus repo add / repo describe (ADR 0128)
790
- reject: { type: "boolean" },
791
- cites: { type: "string" },
792
- drafted: { type: "string" },
793
- "no-description": { type: "boolean" },
794
- component: { type: "string" },
795
- tag: { type: "string" },
796
- source: { type: "string" },
797
- "from-figma": { type: "string" },
798
- replaces: { type: "string" },
799
- promote: { type: "string" },
800
- prototype: { type: "string" },
801
- off: { type: "boolean" },
802
- surface: { type: "string" },
803
- session: { type: "string" },
804
- command: { type: "string" },
805
- markdown: { type: "boolean" },
806
- dir: { type: "string" },
807
- commit: { type: "string" },
808
- confirm: { type: "string" },
809
- exclude: { type: "string" },
810
- routed: { type: "string" },
811
- // atticus map (ADR 0124 §4)
812
- estimate: { type: "boolean" },
813
- next: { type: "boolean" },
814
- copy: { type: "boolean" },
815
- facts: { type: "string" }
816
- };
817
- async function dispatchCommand(argv, io) {
717
+ async function dispatchCommand(raw, io) {
718
+ const options = optionsFor(raw);
719
+ const switched = (await import("./chunk-ZIUFM5HT.js")).switchValues(raw, options);
720
+ if (switched.error !== void 0) {
721
+ io.err(switched.error);
722
+ return 2;
723
+ }
724
+ const argv = switched.argv;
818
725
  const { values, positionals } = parseArgs({
819
726
  args: argv,
820
727
  allowPositionals: true,
821
- options: OPTIONS,
728
+ options,
822
729
  strict: false
823
730
  });
824
731
  if (values.version) {
@@ -829,19 +736,27 @@ async function dispatchCommand(argv, io) {
829
736
  const refused = await checkFlags(argv, positionals, io);
830
737
  if (refused !== void 0)
831
738
  return refused;
739
+ if (process.env.ATTICUS_ACP_SESSION) {
740
+ const { personOnlyWhy } = await import("./chunk-34S2WGOB.js");
741
+ const why = personOnlyWhy(argv);
742
+ if (why) {
743
+ io.err(`This runs inside a Copilot session that Atticus started, so it is refused: ${why}. The person runs it, in the app or their own terminal.`);
744
+ return 2;
745
+ }
746
+ }
832
747
  if (group === "help" || values.help || !group) {
833
- const { helpCommand } = await import("./chunk-7EOBHUMC.js");
748
+ const { helpCommand } = await import("./chunk-24XLDU72.js");
834
749
  return helpCommand(group === "help" ? positionals.slice(1) : positionals, HELP, io, {
835
750
  all: values.all === true
836
751
  });
837
752
  }
838
753
  if (group === "legacy") {
839
- const { legacyHelp } = await import("./chunk-7EOBHUMC.js");
754
+ const { legacyHelp } = await import("./chunk-24XLDU72.js");
840
755
  io.out(legacyHelp(HELP, { all: values.all === true }));
841
756
  return 0;
842
757
  }
843
758
  if (group === "commands") {
844
- const { AREAS, commandCatalog: commandCatalog2 } = await import("./chunk-YMZ3TNYB.js");
759
+ const { AREAS, commandCatalog: commandCatalog2 } = await import("./chunk-ZGULQAPZ.js");
845
760
  const commands = commandCatalog2(HELP);
846
761
  if (values.json === true)
847
762
  io.out(JSON.stringify({ areas: AREAS, commands }, null, 2));
@@ -873,13 +788,13 @@ async function dispatchCommand(argv, io) {
873
788
  }
874
789
  return catalogDiff(resolve(arg), resolve(b), values.json === true, io);
875
790
  }
876
- const root = resolve(typeof values.root === "string" ? values.root : process.cwd());
791
+ const root = resolve(typeof values.root === "string" ? values.root : process.env.ATTICUS_ACP_SESSION && process.env.ATTICUS_ROOT ? process.env.ATTICUS_ROOT : process.cwd());
877
792
  if (!runsNoAi(group, command))
878
793
  await setUpAi();
879
794
  if (group === "next")
880
- return (await import("./chunk-7AVHLZGD.js")).nextCommand(root, { json: values.json === true, all: values.all === true }, io);
795
+ return (await import("./chunk-2SKB4O2E.js")).nextCommand(root, { json: values.json === true, all: values.all === true, queue: values.queue === true }, io);
881
796
  if (values.handoff === true && (await import("./chunk-KQDZXGNR.js")).isHandoffStep(group, command))
882
- return (await import("./chunk-W5BVQF44.js")).handoffStep(root, argv, io, dispatch);
797
+ return (await import("./chunk-JLUCKAEL.js")).handoffStep(root, argv, io, dispatch);
883
798
  const given = typeof values.by === "string" && values.by.trim() ? values.by : void 0;
884
799
  const person = !given && RECORDS_A_PERSON.has(group) ? await gitUser(root) : void 0;
885
800
  let warned = false;
@@ -894,7 +809,7 @@ async function dispatchCommand(argv, io) {
894
809
  };
895
810
  const repoIds = typeof values.repos === "string" ? values.repos.split(",").map((s) => s.trim()).filter(Boolean) : void 0;
896
811
  if (group === "change" && command === "needs" || group === "needs") {
897
- const handled = await (await import("./chunk-QRAOANID.js")).needsCli(root, positionals, values, io, who);
812
+ const handled = await (await import("./chunk-G6X77UJZ.js")).needsCli(root, positionals, values, io, who);
898
813
  if (handled !== void 0)
899
814
  return handled;
900
815
  }
@@ -918,7 +833,7 @@ async function dispatchCommand(argv, io) {
918
833
  }, io, run);
919
834
  }
920
835
  if (group === "runs") {
921
- const m = await import("./chunk-PRPPGYZG.js");
836
+ const m = await import("./chunk-O66DM6DJ.js");
922
837
  if (command === "show") {
923
838
  const id = positionals[2];
924
839
  if (!id) {
@@ -939,7 +854,7 @@ async function dispatchCommand(argv, io) {
939
854
  }, io);
940
855
  }
941
856
  if (group === "history") {
942
- const m = await import("./chunk-I3E7CX4H.js");
857
+ const m = await import("./chunk-ZZK56BLP.js");
943
858
  const text = (v) => typeof v === "string" && v.trim() ? v : void 0;
944
859
  if (command === "add") {
945
860
  if (process.stdin.isTTY) {
@@ -982,6 +897,10 @@ async function dispatchCommand(argv, io) {
982
897
  if (handled !== void 0)
983
898
  return handled;
984
899
  }
900
+ if (group === "repo" && command === "rename") {
901
+ const { repoRename } = await import("./chunk-H7KM7LZE.js");
902
+ return repoRename(root, positionals[2], positionals[3], io);
903
+ }
985
904
  if (group === "repo" && (command === "add" || command === "describe")) {
986
905
  const m = await loadRepoCommands();
987
906
  const str2 = (v) => typeof v === "string" ? v : void 0;
@@ -1005,6 +924,123 @@ async function dispatchCommand(argv, io) {
1005
924
  json: values.json === true
1006
925
  }, io);
1007
926
  }
927
+ if (group === "repo-type" && command === "note") {
928
+ const m = await loadRepoTypeCommands();
929
+ return m.repoTypeNote(root, arg, {
930
+ ...typeof values.add === "string" ? { add: values.add } : {},
931
+ org: values["org-wide"] === true
932
+ }, io);
933
+ }
934
+ if (group === "types") {
935
+ const t = await import("./chunk-FFTRTL6R.js");
936
+ const text = (v) => typeof v === "string" ? v : void 0;
937
+ if (!command || command === "list")
938
+ return t.typesListCommand(root, { json: values.json === true }, io);
939
+ if (command === "add")
940
+ return t.typesAddCommand(root, positionals[2], {
941
+ ...text(values.name) ? { name: text(values.name) } : {},
942
+ ...text(values.description) ? { description: text(values.description) } : {},
943
+ ...text(values.badge) ? { badge: text(values.badge) } : {},
944
+ ...text(values.shape) ? { shape: text(values.shape) } : {},
945
+ ...text(values.colour) ? { colour: text(values.colour) } : {},
946
+ ...Array.isArray(values.owner) && text(values.owner[0]) ? { owner: text(values.owner[0]) } : {}
947
+ }, io);
948
+ if (command === "notes")
949
+ return t.typesNotesCommand(root, positionals[2], io);
950
+ io.err("atticus types list | add <id> --name --description | notes <id>");
951
+ return 2;
952
+ }
953
+ if (group === "connect") {
954
+ const text = (v) => typeof v === "string" ? v : void 0;
955
+ const sys = Array.isArray(values.system) ? text(values.system[0]) : text(values.system);
956
+ if (command === "match") {
957
+ const m = await import("./chunk-6H3Z5JHH.js");
958
+ const l = await import("./chunk-KN5BXMWN.js");
959
+ return m.connectMatchCommand(root, positionals[2], {
960
+ ...text(values.to) ? { to: text(values.to) } : {},
961
+ ...sys ? { system: sys } : {},
962
+ ...text(values.mode) ? { mode: text(values.mode) } : {},
963
+ ...values.read === true ? { read: true } : {},
964
+ ...values.json === true ? { json: true } : {},
965
+ candidates: (from, to) => l.candidatesOf(root, from, to)
966
+ }, io);
967
+ }
968
+ io.err("atticus connect match <repo> --to <repo> | --system <id> [--mode copilot-acp|hand-off]");
969
+ return 2;
970
+ }
971
+ if (group === "skills") {
972
+ const k = await import("./chunk-INQHESFB.js");
973
+ const text = (v) => typeof v === "string" ? v : void 0;
974
+ if (!command || command === "list")
975
+ return k.skillsListCommand(root, { json: values.json === true }, io);
976
+ if (command === "write")
977
+ return k.skillsWriteCommand(root, { check: values.check === true }, io);
978
+ if (command === "import")
979
+ return k.skillsImportCommand(root, positionals[2], {
980
+ ...text(values.team) ? { team: text(values.team) } : {},
981
+ ...text(values.at) ? { at: text(values.at) } : {},
982
+ ...text(values.only) ? { only: text(values.only) } : {},
983
+ ...values.replace === true ? { replace: true } : {}
984
+ }, io);
985
+ io.err("atticus skills list | import | write [--check]");
986
+ return 2;
987
+ }
988
+ if (group === "rules") {
989
+ const r = await import("./chunk-66PPNOON.js");
990
+ const text = (v) => typeof v === "string" ? v : void 0;
991
+ const scope = {
992
+ ...values["org-wide"] === true ? { org: true } : {},
993
+ ...text(values.type) ? { type: text(values.type) } : {},
994
+ ...text(values.repo) ? { repo: text(values.repo) } : {},
995
+ // An imported copy for activate: --team <team> --type <type> (import names its own).
996
+ ...text(values.team) && command !== "import" ? { imported: text(values.team) } : {}
997
+ };
998
+ if (!command || command === "list")
999
+ return r.rulesListCommand(root, positionals[2], { json: values.json === true }, io);
1000
+ if (command === "add")
1001
+ return r.rulesAddCommand(root, scope, {
1002
+ ...text(values.key) ? { key: text(values.key) } : {},
1003
+ ...text(values.rule) ? { rule: text(values.rule) } : {},
1004
+ ...text(values.files) ? { files: text(values.files) } : {},
1005
+ ...text(values.example) ? { example: text(values.example) } : {},
1006
+ ...values.draft === true ? { draft: true } : {},
1007
+ ...text(values.by) ? { by: text(values.by) } : {}
1008
+ }, io);
1009
+ if (command === "activate" || command === "off")
1010
+ return r.rulesSetCommand(root, command, positionals[2], scope, { ...text(values.reason) ? { reason: text(values.reason) } : {} }, io);
1011
+ if (command === "draft")
1012
+ return r.rulesDraftCommand(root, {
1013
+ ...text(values.type) ? { type: text(values.type) } : {},
1014
+ ...text(values.repos) ? { repos: text(values.repos) } : {},
1015
+ ...text(values.repo) ? { repo: text(values.repo) } : {},
1016
+ ...text(values.about) ? { about: text(values.about) } : {},
1017
+ ...text(values.mode) ? { mode: text(values.mode) } : {}
1018
+ }, io);
1019
+ if (command === "try")
1020
+ return r.rulesTryCommand(root, positionals[2], {
1021
+ ...text(values.rule) ? { rule: text(values.rule) } : {},
1022
+ ...text(values.files) && /^\d+$/.test(text(values.files)) ? { files: Number(text(values.files)) } : {},
1023
+ ...values.compare === true ? { compare: true } : {},
1024
+ ...text(values.mode) ? { mode: text(values.mode) } : {}
1025
+ }, io);
1026
+ if (command === "import")
1027
+ return r.rulesImportCommand(root, positionals[2], {
1028
+ ...text(values.type) ? { type: text(values.type) } : {},
1029
+ ...text(values.team) ? { team: text(values.team) } : {},
1030
+ ...text(values.at) ? { at: text(values.at) } : {}
1031
+ }, io);
1032
+ if (command === "notes")
1033
+ return r.rulesNotesCommand(root, {
1034
+ ...text(values.type) ? { type: text(values.type) } : {},
1035
+ ...values.save === true ? { save: true } : {}
1036
+ }, io);
1037
+ io.err("atticus rules list | add | activate | off | draft | try | import | notes (atticus help rules)");
1038
+ return 2;
1039
+ }
1040
+ if (group === "repo-type" && command === "rules") {
1041
+ const m = await loadRepoTypeCommands();
1042
+ return m.repoTypeRules(root, { write: values.save === true, json: values.json === true }, io);
1043
+ }
1008
1044
  if (group === "repo-type" && (command === "detect" || command === "new")) {
1009
1045
  const m = await loadRepoTypeCommands();
1010
1046
  const from = typeof values.from === "string" ? values.from : void 0;
@@ -1044,6 +1080,41 @@ async function dispatchCommand(argv, io) {
1044
1080
  throw e;
1045
1081
  }
1046
1082
  }
1083
+ if (group === "estate" && command === "fresh") {
1084
+ const m = await import("./chunk-AFZ3QA6W.js");
1085
+ return m.estateFresh(root, { json: values.json === true, all: values.all === true }, io);
1086
+ }
1087
+ if (group === "estate" && command === "shared") {
1088
+ const m = await import("./chunk-MZCGSXVR.js");
1089
+ const json2 = values.json === true;
1090
+ const text = (v) => typeof v === "string" && v.trim() ? v : void 0;
1091
+ if (arg === "import")
1092
+ return m.sharedImport(root, positionals[3], {
1093
+ ...text(values.team) ? { team: text(values.team) } : {},
1094
+ ...text(values.system) ? { system: text(values.system) } : {},
1095
+ ...text(values.name) ? { name: text(values.name) } : {},
1096
+ ...text(values.commit) ? { commit: text(values.commit) } : {},
1097
+ json: json2
1098
+ }, io);
1099
+ if (arg === "refresh")
1100
+ return m.sharedRefresh(root, positionals[3], {
1101
+ ...positionals[4] ? { dir: positionals[4] } : {},
1102
+ ...text(values.commit) ? { commit: text(values.commit) } : {},
1103
+ json: json2
1104
+ }, io);
1105
+ if (arg === "list" || arg === void 0)
1106
+ return m.sharedList(root, { json: json2 }, io);
1107
+ io.err("Usage: atticus join shared import|refresh|list (atticus help join)");
1108
+ return 2;
1109
+ }
1110
+ if (group === "estate" && command === "contracts") {
1111
+ const m = await import("./chunk-BTY3HZBO.js");
1112
+ return m.joinContracts(root, { json: values.json === true }, io);
1113
+ }
1114
+ if (group === "estate" && command === "measure") {
1115
+ const m = await import("./chunk-FZOJFH7Q.js");
1116
+ return m.joinMeasure(root, arg, { json: values.json === true }, io);
1117
+ }
1047
1118
  if (group === "estate" && (command === "join" || command === "flow" || command === "lineage")) {
1048
1119
  const m = await loadEstateCommands();
1049
1120
  const field = positionals[3];
@@ -1057,6 +1128,14 @@ async function dispatchCommand(argv, io) {
1057
1128
  }
1058
1129
  return command === "flow" ? m.estateFlowCommand(root, arg, o, io) : m.estateLineage(root, arg, field, o, io);
1059
1130
  }
1131
+ if (group === "spec" && (command === "seed" || command === "accept")) {
1132
+ const m = await import("./chunk-PPD7HTDP.js");
1133
+ if (!arg) {
1134
+ io.err(command === "seed" ? "Usage: atticus spec seed <repo> [--json]" : "Usage: atticus spec accept <repo> [--by you]");
1135
+ return 2;
1136
+ }
1137
+ return command === "seed" ? m.specSeed(root, arg, { json: values.json === true }, io) : m.specAccept(root, arg, { by: who() }, io);
1138
+ }
1060
1139
  if (group === "spec" && (command === "draft" || command === "check")) {
1061
1140
  const text = (v) => typeof v === "string" ? v : void 0;
1062
1141
  const m = await loadSpecCommands();
@@ -1094,35 +1173,171 @@ async function dispatchCommand(argv, io) {
1094
1173
  io.err("Usage: atticus map render <repo> [--json]");
1095
1174
  return 2;
1096
1175
  }
1097
- const { mapRenderCommand } = await import("./chunk-PCOCACY3.js");
1176
+ const { mapRenderCommand } = await import("./chunk-Y2EQNWKV.js");
1098
1177
  return mapRenderCommand(root, repo, { json: values.json === true }, io);
1099
1178
  }
1179
+ const models = values.models === "entries" || values.models === "reachable" || values.models === "all" ? values.models : void 0;
1180
+ if (group === "map" && values.models !== void 0 && !models) {
1181
+ io.err(`--models is entries, reachable or all (got ${String(values.models)}).`);
1182
+ return 2;
1183
+ }
1184
+ const runMapAll = async (o) => {
1185
+ if (process.env.ATTICUS_ACP_SESSION && !o.dryRun) {
1186
+ io.err("This runs inside a Copilot session that Atticus started, so atticus map starts no read of its own: Atticus outside this session gives each part and verifies it. Do the step you were given: read the files it names, write the facts, then run atticus verify <repo> on its own.");
1187
+ return 2;
1188
+ }
1189
+ const { mapAllCommand } = await import("./chunk-VNU26RCO.js");
1190
+ const { copyToClipboard } = await import("./chunk-S5LSDXV4.js");
1191
+ const typed = [];
1192
+ const { createInterface } = await import("node:readline");
1193
+ const rl = process.stdin.readable && !o.dryRun ? createInterface({ input: process.stdin, terminal: false }) : void 0;
1194
+ rl?.on("line", (l) => typed.push(l));
1195
+ const ac = new AbortController();
1196
+ const onInt = () => {
1197
+ if (ac.signal.aborted)
1198
+ process.exit(130);
1199
+ ac.abort();
1200
+ io.err("Stopping after this step (Ctrl+C again stops at once)...");
1201
+ };
1202
+ process.on("SIGINT", onInt);
1203
+ try {
1204
+ return await mapAllCommand(root, o, io, {
1205
+ clipboard: copyToClipboard,
1206
+ input: { take: () => typed.shift() },
1207
+ signal: ac.signal,
1208
+ makeRuntime: async () => (await runtimeForCli(root, { mode: "model", handoffValidate: async () => [] })).runtime,
1209
+ // ADR 0171: Copilot driven through its Agent Client Protocol, one new session a part.
1210
+ makeAcp: async () => (await import("./chunk-JAVI7JSP.js")).acpStepRunner(root)
1211
+ });
1212
+ } catch (e) {
1213
+ if (e instanceof (await loadAi()).RuntimeConfigError) {
1214
+ io.err(e.message);
1215
+ return 2;
1216
+ }
1217
+ throw e;
1218
+ } finally {
1219
+ process.off("SIGINT", onInt);
1220
+ rl?.close();
1221
+ }
1222
+ };
1223
+ if (group === "map" && !command && values.all === true) {
1224
+ const text = (v) => typeof v === "string" ? v : void 0;
1225
+ const count = (flag) => {
1226
+ const raw2 = text(values[flag]);
1227
+ if (raw2 === void 0)
1228
+ return void 0;
1229
+ const n = Number(raw2);
1230
+ return Number.isInteger(n) && n > 0 ? n : NaN;
1231
+ };
1232
+ const numbers = {
1233
+ maxParts: count("max-parts"),
1234
+ budgetTokens: count("budget-tokens"),
1235
+ idle: count("idle")
1236
+ };
1237
+ for (const [k, v] of Object.entries(numbers))
1238
+ if (Number.isNaN(v)) {
1239
+ io.err(`--${k === "maxParts" ? "max-parts" : k === "budgetTokens" ? "budget-tokens" : "idle"} is a whole number above 0.`);
1240
+ return 2;
1241
+ }
1242
+ const asked = text(values.mode);
1243
+ if (asked && !["model", "hand-off", "copilot", "copilot-acp"].includes(asked)) {
1244
+ io.err("atticus map --all takes --mode model, --mode hand-off (Copilot Chat, a line pasted per part) or --mode copilot-acp (Copilot driven unattended, ADR 0171).");
1245
+ return 2;
1246
+ }
1247
+ return runMapAll({
1248
+ ...text(values.repos) ? {
1249
+ repos: text(values.repos).split(",").map((x) => x.trim()).filter(Boolean)
1250
+ } : {},
1251
+ stale: values.stale === true,
1252
+ gaps: values.gaps === true,
1253
+ force: values.force === true,
1254
+ dryRun: values["dry-run"] === true,
1255
+ json: values.json === true,
1256
+ ...asked ? {
1257
+ mode: asked === "model" ? "model" : asked === "copilot-acp" ? "copilot-acp" : "copilot"
1258
+ } : {},
1259
+ ...numbers.maxParts ? { maxParts: numbers.maxParts } : {},
1260
+ ...numbers.budgetTokens ? { budgetTokens: numbers.budgetTokens } : {},
1261
+ ...numbers.idle ? { idleMinutes: numbers.idle } : {},
1262
+ ...models ? { models } : {}
1263
+ });
1264
+ }
1100
1265
  if (group === "map") {
1101
1266
  const repo = command;
1102
1267
  if (!repo) {
1103
- io.err("Usage: atticus map <repo> [--estimate] [--handoff | --copy [--answer <file>] | --mode m] [--next] [--max-tokens n] [--force]");
1268
+ io.err("Usage: atticus map <repo> [--estimate [--part n] | --gaps [--part n] | --rules] [--models entries|reachable|all] [--handoff | --copy [--answer <file>] | --mode m] [--next] [--max-tokens n] [--force], or atticus map --all [--stale | --gaps | --force] [--models entries|reachable|all] [--repos a,b] [--dry-run] [--max-tokens n] [--idle minutes]");
1104
1269
  return 2;
1105
1270
  }
1106
1271
  const text = (v) => typeof v === "string" ? v : void 0;
1107
- const { mapCommand } = await import("./chunk-UBBC2XSG.js");
1272
+ if (values.spent !== void 0 || values.sessions !== void 0) {
1273
+ const { mapSpent } = await import("./chunk-BQ4SQQC6.js");
1274
+ return mapSpent(root, repo, {
1275
+ ...text(values.spent) !== void 0 ? { spent: text(values.spent) } : {},
1276
+ ...text(values.sessions) !== void 0 ? { sessions: text(values.sessions) } : {},
1277
+ ...text(values.part) !== void 0 ? { part: text(values.part) } : {},
1278
+ ...text(values.by) ? { by: text(values.by) } : {}
1279
+ }, io);
1280
+ }
1281
+ const { mapCommand } = await import("./chunk-CMDXGQTS.js");
1108
1282
  const o = {
1109
1283
  ...text(values.dir) ? { dir: resolve(text(values.dir)) } : {},
1110
1284
  ...text(values.commit) ? { commit: text(values.commit) } : {},
1111
1285
  ...text(values.resume) ? { resume: text(values.resume) } : {},
1112
1286
  ...text(values.answer) !== void 0 ? { answer: text(values.answer) } : {},
1113
1287
  estimate: values.estimate === true,
1288
+ gaps: values.gaps === true,
1289
+ rules: values.rules === true,
1290
+ // ADR 0161: with --gaps, the rest of one part of the read plan; ADR 0170: with --estimate
1291
+ // (as /atticus-map <repo> --part n runs it), that part whole.
1292
+ ...(values.gaps === true || values.estimate === true) && Number.isInteger(Number(text(values.part))) && Number(text(values.part)) > 0 ? { part: Number(text(values.part)) } : {},
1114
1293
  next: values.next === true,
1115
1294
  force: values.force === true,
1116
1295
  copy: values.copy === true,
1117
- json: values.json === true
1296
+ json: values.json === true,
1297
+ ...models ? { models } : {}
1118
1298
  };
1119
- if (o.estimate)
1299
+ const acpAsked = text(values.mode) === "copilot-acp";
1300
+ if (!o.estimate && !o.copy && o.answer === void 0 && !o.next && o.resume === void 0) {
1301
+ const { copilotAcpByDefault } = await import("./chunk-JAVI7JSP.js");
1302
+ const core = await import("./chunk-VY72R2XZ.js");
1303
+ const op = await core.loadOrgPack(core.orgPackDirOf(root)).catch(() => void 0);
1304
+ if (acpAsked || !text(values.mode) && op && copilotAcpByDefault(op) && !o.json) {
1305
+ const idle = Number(text(values.idle));
1306
+ return runMapAll({
1307
+ repos: [repo],
1308
+ mode: "copilot-acp",
1309
+ force: o.force,
1310
+ gaps: o.gaps,
1311
+ dryRun: values["dry-run"] === true,
1312
+ ...Number.isInteger(idle) && idle > 0 ? { idleMinutes: idle } : {},
1313
+ ...models ? { models } : {},
1314
+ resumeAs: `atticus map ${repo}${o.gaps ? " --gaps" : ""}${o.force ? " --force" : ""} --mode copilot-acp`
1315
+ });
1316
+ }
1317
+ }
1318
+ if (o.estimate || o.gaps || o.rules && !o.copy && !text(values.mode))
1120
1319
  return mapCommand(root, repo, o, io);
1320
+ const starting = !o.next && o.resume === void 0 && !o.copy && o.answer === void 0 && !text(values.mode);
1321
+ const { mapReader } = await import("./chunk-VNU26RCO.js");
1322
+ const reader = await mapReader(root);
1323
+ if (starting && !o.json && !o.dir && !o.commit && reader.loop) {
1324
+ const idle = Number(text(values.idle));
1325
+ return runMapAll({
1326
+ repos: [repo],
1327
+ force: o.force,
1328
+ dryRun: values["dry-run"] === true,
1329
+ ...Number.isInteger(idle) && idle > 0 ? { idleMinutes: idle } : {},
1330
+ ...models ? { models } : {},
1331
+ resumeAs: `atticus map ${repo}${o.force ? " --force" : ""}`
1332
+ });
1333
+ }
1121
1334
  try {
1122
1335
  const { runtime } = await runtimeForCli(root, {
1123
1336
  ...o.copy ? { mode: "hand-off" } : text(values.mode) ? { mode: text(values.mode) } : {},
1124
1337
  handoffValidate: async () => []
1125
1338
  });
1339
+ if ((starting || o.copy && o.answer === void 0 && !o.next) && runtime.kind === "hand-off")
1340
+ io.out(`runtime.yaml says ${reader.name}; if you use Copilot, run atticus map --all --repos ${repo} (it waits and copies each line).`);
1126
1341
  return await mapCommand(root, repo, o, io, { runtime });
1127
1342
  } catch (e) {
1128
1343
  if (e instanceof (await loadAi()).RuntimeConfigError) {
@@ -1133,22 +1348,52 @@ async function dispatchCommand(argv, io) {
1133
1348
  }
1134
1349
  }
1135
1350
  if (group === "verify") {
1136
- const v = parseArgs({
1137
- args: argv,
1138
- allowPositionals: true,
1139
- options: { ...OPTIONS, write: { type: "boolean" }, verbose: { type: "boolean" } },
1140
- strict: false
1141
- });
1351
+ const v = { values, positionals };
1142
1352
  const repo = v.positionals[1];
1353
+ const text = (x) => typeof x === "string" ? x : void 0;
1354
+ if (repo === "audit" && (v.positionals[2] || v.values.report === true)) {
1355
+ const { auditCommand } = await import("./chunk-NXJ5URP6.js");
1356
+ const ids = (x) => text(x)?.split(",").map((y) => y.trim()).filter(Boolean);
1357
+ const size = Number(text(v.values.size));
1358
+ const interactive = process.stdin.isTTY && v.values.json !== true;
1359
+ let rl;
1360
+ const ask = interactive ? async (q) => {
1361
+ const { createInterface } = await import("node:readline/promises");
1362
+ rl ??= createInterface({ input: process.stdin, output: process.stdout });
1363
+ return rl.question(`${q} `);
1364
+ } : void 0;
1365
+ try {
1366
+ return await auditCommand(text(v.values.root) ? resolve(text(v.values.root)) : root, v.positionals[2], {
1367
+ by: who(),
1368
+ ...Number.isFinite(size) && size > 0 ? { size } : {},
1369
+ ...text(v.values.seed) ? { seed: text(v.values.seed) } : {},
1370
+ ...text(v.values.dir) ? { dir: resolve(text(v.values.dir)) } : {},
1371
+ ...text(v.values.answers) ? { answers: text(v.values.answers) } : {},
1372
+ ...ids(v.values.right) ? { right: ids(v.values.right) } : {},
1373
+ ...ids(v.values.wrong) ? { wrong: ids(v.values.wrong) } : {},
1374
+ ...ids(v.values.unsure) ? { unsure: ids(v.values.unsure) } : {},
1375
+ report: v.values.report === true,
1376
+ json: v.values.json === true,
1377
+ ...ask ? { ask } : {}
1378
+ }, io);
1379
+ } finally {
1380
+ rl?.close();
1381
+ }
1382
+ }
1383
+ if (!repo && v.values.all === true) {
1384
+ const { verifyAllCommand } = await import("./chunk-PSOFBQWB.js");
1385
+ return verifyAllCommand(text(v.values.root) ? resolve(text(v.values.root)) : root, {
1386
+ ...v.values.write === true ? { write: true } : {},
1387
+ ...v.values.verbose === true ? { verbose: true } : {}
1388
+ }, io);
1389
+ }
1143
1390
  if (!repo) {
1144
- io.err("Usage: atticus verify <repo> [--write [--verbose]] [--dir path] [--commit sha] [--routed a,b] [--json]");
1391
+ io.err("Usage: atticus verify <repo> [--write [--verbose]] [--dir path] [--commit sha] [--routed a,b] [--skipped] [--json], or atticus verify --all [--write]");
1145
1392
  return 2;
1146
1393
  }
1147
- const text = (x) => typeof x === "string" ? x : void 0;
1148
- const { verifyCommand } = await import("./chunk-JMSCMUCA.js");
1394
+ const { verifyCommand } = await import("./chunk-PSOFBQWB.js");
1149
1395
  return verifyCommand(
1150
- // The first reading took --write's next word as its value, so a --root right after it
1151
- // was lost; this reading has --write as a switch.
1396
+ // --write is a switch, so a --root right after it is read (it once took --root as its value).
1152
1397
  text(v.values.root) ? resolve(text(v.values.root)) : root,
1153
1398
  repo,
1154
1399
  {
@@ -1159,7 +1404,8 @@ async function dispatchCommand(argv, io) {
1159
1404
  } : {},
1160
1405
  write: v.values.write === true,
1161
1406
  verbose: v.values.verbose === true,
1162
- json: v.values.json === true
1407
+ json: v.values.json === true,
1408
+ ...v.values.skipped === true ? { skipped: true } : {}
1163
1409
  },
1164
1410
  io
1165
1411
  );
@@ -1239,7 +1485,7 @@ async function dispatchCommand(argv, io) {
1239
1485
  if (group === "cites") {
1240
1486
  const given2 = (v) => typeof v === "string" && v.trim() ? v.trim() : void 0;
1241
1487
  const [repo, path, file] = [given2(values.repo), given2(values.path), given2(values.file)];
1242
- return (await import("./chunk-D46WUV3T.js")).citesCli(root, {
1488
+ return (await import("./chunk-T4YPZIQN.js")).citesCli(root, {
1243
1489
  ...repo ? { repo } : {},
1244
1490
  ...path ? { path } : {},
1245
1491
  ...file ? { file: resolve(file) } : {},
@@ -1247,13 +1493,15 @@ async function dispatchCommand(argv, io) {
1247
1493
  }, io);
1248
1494
  }
1249
1495
  if (group === "watch")
1250
- return (await import("./chunk-DE76JROX.js")).watchCommand(root, command, { off: values.off === true, json: values.json === true }, io);
1496
+ return (await import("./chunk-MG4ZL5RW.js")).watchCommand(root, command, { off: values.off === true, json: values.json === true }, io);
1251
1497
  if (group === "setup" && !command)
1252
1498
  return setupCommand(root, { json: values.json === true }, io);
1499
+ if (group === "doctor" && values.counts === true)
1500
+ return (await import("./chunk-UF4GLFBX.js")).doctorCountsCommand(root, { json: values.json === true }, io);
1253
1501
  if (group === "doctor")
1254
1502
  return doctorCommand(root, { json: values.json === true }, io);
1255
1503
  if (group === "probe") {
1256
- const { probeCommand, probeAnswerCommand } = await import("./chunk-JCZIKA4C.js");
1504
+ const { probeCommand, probeAnswerCommand } = await import("./chunk-FSMSFDLD.js");
1257
1505
  const max = typeof values["max-tokens"] === "string" ? Number(values["max-tokens"]) : void 0;
1258
1506
  const json2 = values.json === true;
1259
1507
  if (command === "answer")
@@ -1306,7 +1554,7 @@ async function dispatchCommand(argv, io) {
1306
1554
  return askCommand(root, command, { json: values.json === true }, io);
1307
1555
  }
1308
1556
  if (group === "context") {
1309
- const m = await import("./chunk-EYWIDJFU.js");
1557
+ const m = await import("./chunk-LGBMTVNT.js");
1310
1558
  const target = positionals[2];
1311
1559
  const csv = (v) => typeof v === "string" ? v.split(",").map((k) => k.trim()).filter(Boolean) : void 0;
1312
1560
  if (command === "tools")
@@ -1421,7 +1669,7 @@ async function dispatchCommand(argv, io) {
1421
1669
  if (group === "index" && command === "rebuild")
1422
1670
  return indexRebuild(root, io);
1423
1671
  if (group === "index" && command === "embed")
1424
- return (await import("./chunk-C6EKFH7J.js")).indexEmbed(root, io);
1672
+ return (await import("./chunk-XD75VZIH.js")).indexEmbed(root, io);
1425
1673
  if (group === "alias") {
1426
1674
  const target = positionals[2];
1427
1675
  if (!command || !target) {
@@ -1462,7 +1710,7 @@ async function dispatchCommand(argv, io) {
1462
1710
  if (command === "request")
1463
1711
  return requestFromTeam(root, arg, positionals[3], { ...by ? { by } : {}, ...systems.length ? { systems } : {}, json }, io);
1464
1712
  if (command === "commit")
1465
- return initiativeCommitment(root, arg, positionals[3], { ...by ? { by } : {} }, io);
1713
+ return initiativeCommitment(root, arg, positionals[3], { ...by ? { by } : {}, ...str(values.note) ? { note: str(values.note) } : {} }, io);
1466
1714
  }
1467
1715
  if (group === "learn") {
1468
1716
  if (!command || command === "list")
@@ -1491,7 +1739,7 @@ async function dispatchCommand(argv, io) {
1491
1739
  if (group === "eval" && command === "report")
1492
1740
  return evalReport(root, { json }, io);
1493
1741
  if (group === "bench" && (command === "facts" || command === "stories")) {
1494
- const m = await import("./chunk-BKVWTZ6A.js");
1742
+ const m = await import("./chunk-LKOR5UET.js");
1495
1743
  return m.benchScoreCli(command, arg, values, io, root);
1496
1744
  }
1497
1745
  if (group === "bench" && (command === "fetch" || command === "run" || command === "survey" || command === "verify")) {
@@ -1543,7 +1791,7 @@ async function dispatchCommand(argv, io) {
1543
1791
  }, io);
1544
1792
  }
1545
1793
  if (group === "secret") {
1546
- const { secretCommand } = await import("./chunk-DFBCSHVT.js");
1794
+ const { secretCommand } = await import("./chunk-EPCJQQWD.js");
1547
1795
  return secretCommand(positionals.slice(1), io);
1548
1796
  }
1549
1797
  if (group === "conformance") {
@@ -1627,6 +1875,8 @@ async function dispatchCommand(argv, io) {
1627
1875
  ...str(values.platform) ? { platform: str(values.platform) } : {},
1628
1876
  ...str(values.from) ? { packFrom: resolve(str(values.from)) } : {},
1629
1877
  ...owner ? { owner } : {},
1878
+ // Round 49: the person the stamp records as having upgraded it (default the owner, then the Git user).
1879
+ ...str(values.by) ? { by: str(values.by) } : {},
1630
1880
  ...values["openspec-store"] === true ? { openspecStore: true } : {},
1631
1881
  json
1632
1882
  }, io);
@@ -1738,9 +1988,9 @@ async function dispatchCommand(argv, io) {
1738
1988
  }, io);
1739
1989
  }
1740
1990
  if (group === "task" && command === "context")
1741
- return (await import("./chunk-NE2W3OO7.js")).taskContextCli(root, arg, positionals[3], { json, markdown: values.markdown === true }, io);
1991
+ return (await import("./chunk-LDLL7LB3.js")).taskContextCli(root, arg, positionals[3], { json, markdown: values.markdown === true }, io);
1742
1992
  if (group === "change" && command === "attach")
1743
- return (await import("./chunk-NE2W3OO7.js")).changeAttachCli(root, arg, positionals.slice(3), {
1993
+ return (await import("./chunk-LDLL7LB3.js")).changeAttachCli(root, arg, positionals.slice(3), {
1744
1994
  by: who(),
1745
1995
  json,
1746
1996
  ...typeof values.replaces === "string" && values.replaces.trim() ? { replaces: values.replaces.trim() } : {},
@@ -1748,12 +1998,22 @@ async function dispatchCommand(argv, io) {
1748
1998
  ...typeof values.like === "string" && values.like.trim() ? { like: values.like.trim() } : {},
1749
1999
  ...typeof values.prototype === "string" && values.prototype.trim() ? { prototype: values.prototype.trim() } : {}
1750
2000
  }, io);
2001
+ if (group === "task" && command === "run-ready")
2002
+ return taskRunReady(root, arg, {
2003
+ ...str(values.level) ? { level: str(values.level) } : {},
2004
+ ...str(values.mode) ? { mode: str(values.mode) } : {},
2005
+ by: who(),
2006
+ approve: values.approve === true,
2007
+ dryRun: values["dry-run"] === true,
2008
+ json
2009
+ }, io);
1751
2010
  if (group === "task" && command === "run")
1752
2011
  return taskRun(root, arg, positionals[3], {
1753
2012
  ...str(values.level) ? { level: str(values.level) } : {},
1754
2013
  ...str(values.mode) ? { mode: str(values.mode) } : {},
1755
2014
  by: who(),
1756
2015
  approve: values.approve === true,
2016
+ dryRun: values["dry-run"] === true,
1757
2017
  json
1758
2018
  }, io);
1759
2019
  if (group === "spec" && command === "hand-down")
@@ -1867,7 +2127,7 @@ async function dispatchCommand(argv, io) {
1867
2127
  io.err('finding needs a change, a finding id and an action, for example: atticus finding add-transfer-limit f-1 not-relevant --reason "..."');
1868
2128
  return 2;
1869
2129
  }
1870
- const session = given ? void 0 : (await import("./chunk-5GDRCDQB.js")).assistantSession(process.env);
2130
+ const session = given ? void 0 : (await import("./chunk-O45HFTFS.js")).assistantSession(process.env);
1871
2131
  if (session)
1872
2132
  io.err(`Recorded as ${session.by}: ${session.because}.`);
1873
2133
  return findingAction(root, command, findingId, action, {
@@ -1893,8 +2153,21 @@ async function dispatchCommand(argv, io) {
1893
2153
  ...str(values.like) ? { like: str(values.like) } : {},
1894
2154
  ...str(values.impact) ? { impact: str(values.impact) } : {}
1895
2155
  }, io);
2156
+ if (command === "sketch") {
2157
+ const { changeSketchCommand } = await import("./chunk-LNBQOP7D.js");
2158
+ return changeSketchCommand(root, arg, {
2159
+ ...str(values.from) ? { from: str(values.from) } : {},
2160
+ ...values.save === true ? { save: true } : {},
2161
+ json,
2162
+ by: who()
2163
+ }, io);
2164
+ }
2165
+ if (command === "impact") {
2166
+ const { changeImpactCli } = await import("./chunk-7MJSQTL5.js");
2167
+ return changeImpactCli(root, arg, { json }, io);
2168
+ }
1896
2169
  if (command === "similar") {
1897
- const { changeSimilarCli } = await import("./chunk-HVUPKCGJ.js");
2170
+ const { changeSimilarCli } = await import("./chunk-W7VWI2YH.js");
1898
2171
  const limit = Number(str(values.limit) ?? 5);
1899
2172
  return changeSimilarCli(root, arg, {
1900
2173
  json,
@@ -1905,7 +2178,7 @@ async function dispatchCommand(argv, io) {
1905
2178
  if (command === "list")
1906
2179
  return changeList(root, { json }, io);
1907
2180
  if (command === "export") {
1908
- const { changeExportCommand } = await import("./chunk-4WBVUHXN.js");
2181
+ const { changeExportCommand } = await import("./chunk-3RM4UK6W.js");
1909
2182
  const named = positionals[3];
1910
2183
  const fmt = str(values.format) ?? (named === "ado" || named === "jira" ? named : void 0);
1911
2184
  return changeExportCommand(root, arg, {
@@ -1922,7 +2195,7 @@ async function dispatchCommand(argv, io) {
1922
2195
  io.err("change conform needs a change id, for example: atticus change conform add-transfer-limit");
1923
2196
  return 2;
1924
2197
  }
1925
- const { changeConformCommand } = await import("./chunk-7ZUIMTOU.js");
2198
+ const { changeConformCommand } = await import("./chunk-5SJZW52K.js");
1926
2199
  return changeConformCommand(root, arg, {
1927
2200
  ...str(values.repo) ? { repo: str(values.repo) } : {},
1928
2201
  ...str(values.ref) ? { ref: str(values.ref) } : {},
@@ -1936,7 +2209,7 @@ async function dispatchCommand(argv, io) {
1936
2209
  io.err("change estimate needs a change id, for example: atticus change estimate add-transfer-limit");
1937
2210
  return 2;
1938
2211
  }
1939
- const { changeEstimateCommand } = await import("./chunk-NN2ZQEB4.js");
2212
+ const { changeEstimateCommand } = await import("./chunk-C4R4JLHE.js");
1940
2213
  return changeEstimateCommand(root, arg, { json }, io);
1941
2214
  }
1942
2215
  if (command === "map") {
@@ -1944,7 +2217,7 @@ async function dispatchCommand(argv, io) {
1944
2217
  io.err("change map needs a change id, for example: atticus change map add-transfer-limit");
1945
2218
  return 2;
1946
2219
  }
1947
- const { changeMapCommand } = await import("./chunk-42EVSKME.js");
2220
+ const { changeMapCommand } = await import("./chunk-GIW4ZVDB.js");
1948
2221
  return changeMapCommand(root, arg, { ...str(values.format) ? { format: str(values.format) } : {}, json }, io);
1949
2222
  }
1950
2223
  if (command === "learn")
@@ -1964,7 +2237,7 @@ async function dispatchCommand(argv, io) {
1964
2237
  if (command === "status")
1965
2238
  return changeStatus(root, arg, { json }, io);
1966
2239
  if (command === "knowledge") {
1967
- const { changeKnowledge } = await import("./chunk-A3GY6SOA.js");
2240
+ const { changeKnowledge } = await import("./chunk-LZ7NUC62.js");
1968
2241
  return changeKnowledge(root, arg, {
1969
2242
  ...str(values.confirm) ? { confirm: str(values.confirm) } : {},
1970
2243
  ...str(values.exclude) ? { exclude: str(values.exclude) } : {},
@@ -1981,6 +2254,8 @@ async function dispatchCommand(argv, io) {
1981
2254
  }, io);
1982
2255
  if (command === "sync")
1983
2256
  return changeSync(root, arg, { ...approve ? { by: who() } : {}, approve, ...repo ? { repo } : {} }, io);
2257
+ if (command === "release-prs")
2258
+ return changeReleasePrs(root, arg, { by: who(), approve }, io);
1984
2259
  if (command === "return")
1985
2260
  return changeReturn(root, arg, {
1986
2261
  by: who(),
@@ -1997,8 +2272,17 @@ async function dispatchCommand(argv, io) {
1997
2272
  return intakeAdd(root, positionals.slice(2).map((f) => resolve(f)), io);
1998
2273
  if (group === "intake" && command === "list")
1999
2274
  return intakeList(root, io, { json });
2275
+ if (group === "intake" && command === "traffic") {
2276
+ const { intakeTraffic } = await import("./chunk-7BR7IPOH.js");
2277
+ return intakeTraffic(root, positionals[2] ?? "", {
2278
+ ...str(values.source) ? { source: str(values.source) } : {},
2279
+ ...str(values.from) ? { from: str(values.from) } : {},
2280
+ ...str(values.to) ? { to: str(values.to) } : {},
2281
+ json
2282
+ }, io);
2283
+ }
2000
2284
  if (group === "intake" && command === "impact") {
2001
- const { intakeImpact } = await import("./chunk-MGYZM27B.js");
2285
+ const { intakeImpact } = await import("./chunk-N3XIYPU3.js");
2002
2286
  return intakeImpact(root, positionals[2] ?? "", { json }, io);
2003
2287
  }
2004
2288
  if (group === "triage" && !command)
@@ -2253,7 +2537,7 @@ async function dispatchCommand(argv, io) {
2253
2537
  return sourcesRefreshCommand(root, { json }, io);
2254
2538
  if (group === "sources" && command === "estimate") {
2255
2539
  const bt = str(values["batch-tokens"]);
2256
- return (await import("./chunk-DHPACDG7.js")).sourcesEstimate(root, {
2540
+ return (await import("./chunk-NR2UJWOC.js")).sourcesEstimate(root, {
2257
2541
  ...str(values.source) ? { source: str(values.source) } : {},
2258
2542
  ...bt && Number(bt) > 0 ? { batchTokens: Number(bt) } : {},
2259
2543
  ...values.full === true ? { full: true } : {},
@@ -2261,7 +2545,7 @@ async function dispatchCommand(argv, io) {
2261
2545
  }, io);
2262
2546
  }
2263
2547
  if (group === "standards")
2264
- return (await import("./chunk-DHPACDG7.js")).standardsCli(root, command, values, io);
2548
+ return (await import("./chunk-NR2UJWOC.js")).standardsCli(root, command, values, io);
2265
2549
  if (group === "sources" && command === "sync")
2266
2550
  return sourcesSync(root, io, {
2267
2551
  json: values.json === true,
@@ -2273,6 +2557,25 @@ async function dispatchCommand(argv, io) {
2273
2557
  return coverageCommand(root, io, { json: values.json === true });
2274
2558
  if (group === "domain" && command === "profile")
2275
2559
  return domainProfileCommand(root, arg, str(values.out) ? { out: str(values.out) } : {}, io);
2560
+ if (group === "questions" && command === "propose") {
2561
+ const { questionsProposeCommand } = await import("./chunk-JAVI7JSP.js");
2562
+ const ac = new AbortController();
2563
+ const onInt = () => ac.abort();
2564
+ process.on("SIGINT", onInt);
2565
+ try {
2566
+ return await questionsProposeCommand(root, {
2567
+ ...arg ? { id: arg } : {},
2568
+ ...typeof values.mode === "string" ? { mode: values.mode } : {},
2569
+ signal: ac.signal
2570
+ }, io, () => questionsFiles(root, ["questions", "proposed", "--root", root], io));
2571
+ } finally {
2572
+ process.off("SIGINT", onInt);
2573
+ }
2574
+ }
2575
+ if (group === "questions" && command === "owner")
2576
+ return (await import("./chunk-JRBFANFE.js")).ownerQuestionCommand(root, argv, io);
2577
+ if (group === "questions" && ["decisions", "correct", "undo"].includes(command ?? ""))
2578
+ return (await import("./chunk-BHT7QK4G.js")).decisionsCli(root, argv, io);
2276
2579
  if (group === "questions" && command)
2277
2580
  return questionsFiles(root, argv, io);
2278
2581
  if (group === "questions")
@@ -2280,36 +2583,39 @@ async function dispatchCommand(argv, io) {
2280
2583
  if (group === "reconcile")
2281
2584
  return reconcileCommand(root, positionals.slice(1), { json: values.json === true }, io);
2282
2585
  if (group === "orgpack" && (command === "draft" || command === "accept"))
2283
- return (await import("./chunk-XPCM366L.js")).orgPackDraftCli(root, command, arg, values, io);
2586
+ return (await import("./chunk-2MMCFP5C.js")).orgPackDraftCli(root, command, arg, values, io);
2284
2587
  if (group === "orgpack" && command === "owner")
2285
- return (await import("./chunk-WY6PP6AA.js")).orgPackOwnerCli(root, arg, io);
2588
+ return (await import("./chunk-KXITGYLF.js")).orgPackOwnerCli(root, arg, io);
2286
2589
  if (group === "orgpack" && command === "validate")
2287
- return orgPackValidate(arg ? resolve(arg) : join((await import("./chunk-CAQZUNOH.js")).orgPackDirOf(root)), io);
2590
+ return orgPackValidate(arg ? resolve(arg) : join((await import("./chunk-VY72R2XZ.js")).orgPackDirOf(root)), io);
2288
2591
  if (group === "stage" && command === "check")
2289
- return (await import("./chunk-3USYZGRF.js")).stageCheck(root, arg, positionals[3], positionals[4], io);
2592
+ return (await import("./chunk-2RLKFUUL.js")).stageCheck(root, arg, positionals[3], positionals[4], io);
2290
2593
  if (group === "handoff" && command === "done") {
2291
2594
  if (!arg) {
2292
2595
  io.err("handoff done needs the run id from the prompt, for example: atticus handoff done run-20261018060000-0001");
2293
2596
  return 2;
2294
2597
  }
2295
- if (await (await import("./chunk-T6XQL73F.js")).isTaskRun(root, arg))
2296
- return taskHandoff(root, arg, {
2297
- by: who(),
2298
- approve: values.approve === true,
2299
- json
2300
- }, io);
2301
- return handoffDone(root, arg, io, str(values.model) ? { model: str(values.model) } : {});
2598
+ return runDone(root, arg, {
2599
+ by: who(),
2600
+ approve: values.approve === true,
2601
+ json,
2602
+ ...str(values.model) ? { model: str(values.model) } : {}
2603
+ }, io);
2302
2604
  }
2303
2605
  if (group === "openspec" && command === "setup")
2304
2606
  return openspecSetup(root, io);
2305
2607
  if (group === "openspec" && command === "check")
2306
2608
  return openspecCheck(root, io);
2307
2609
  if (group === "openspec") {
2308
- const { openspecRun } = await import("./chunk-6BVONWJ7.js");
2610
+ const { openspecRun } = await import("./chunk-JJF6HALY.js");
2309
2611
  return openspecRun(root, openspecArgsOf(argv), io);
2310
2612
  }
2613
+ if (group === "workspace" && command === "bring-in") {
2614
+ const { bringInMerged } = await import("./chunk-EMRIQUND.js");
2615
+ return bringInMerged(root, io);
2616
+ }
2311
2617
  if (group === "workspace" && command === "sync")
2312
- return workspaceSync(root, repoIds, io);
2618
+ return workspaceSync(root, repoIds, io, str(values.from) ? { from: resolve(str(values.from)) } : {});
2313
2619
  if (group === "workspace" && (command === "open" || command === "prune")) {
2314
2620
  if (!arg) {
2315
2621
  io.err(`workspace ${command} needs a change id, for example: atticus workspace ${command} add-transfer-limit`);
@@ -2319,20 +2625,19 @@ async function dispatchCommand(argv, io) {
2319
2625
  return workspaceOpen(root, arg, repoIds, io);
2320
2626
  return workspacePrune(root, arg, { all: values.all === true, force: values.force === true }, io);
2321
2627
  }
2322
- const { commandCatalog } = await import("./chunk-YMZ3TNYB.js");
2323
- const { nearestCommand } = await import("./chunk-4SKZDI62.js");
2628
+ const { commandCatalog } = await import("./chunk-ZGULQAPZ.js");
2629
+ const { nearestCommand } = await import("./chunk-ZIUFM5HT.js");
2324
2630
  const near = nearestCommand(positionals, commandCatalog(HELP).map((c) => c.id));
2325
2631
  io.err(`Unknown command: ${positionals.join(" ")}.${near ? ` Did you mean atticus ${near}?` : ""}`);
2326
2632
  io.err("atticus help lists the main commands, atticus legacy the rest; atticus help <command> explains one.");
2327
2633
  return 2;
2328
2634
  }
2329
- var QUESTION_FLAGS = ["state", "option", "text", "scope", "type"];
2330
2635
  async function checkFlags(argv, positionals, io) {
2331
- const { unknownFlags, unknownFlagMessages } = await import("./chunk-4SKZDI62.js");
2332
- const quick = /* @__PURE__ */ new Set([...Object.keys(OPTIONS), ...QUESTION_FLAGS, "handoff"]);
2636
+ const { unknownFlags, unknownFlagMessages } = await import("./chunk-ZIUFM5HT.js");
2637
+ const quick = new Set(Object.keys(OPTIONS));
2333
2638
  if (!unknownFlags(argv, quick).length)
2334
2639
  return void 0;
2335
- const { commandCatalog } = await import("./chunk-YMZ3TNYB.js");
2640
+ const { commandCatalog } = await import("./chunk-ZGULQAPZ.js");
2336
2641
  const catalog = commandCatalog(HELP);
2337
2642
  const known = /* @__PURE__ */ new Set([
2338
2643
  ...quick,
@@ -2343,7 +2648,7 @@ async function checkFlags(argv, positionals, io) {
2343
2648
  return void 0;
2344
2649
  for (const m of unknownFlagMessages(unknown, known))
2345
2650
  io.err(m);
2346
- const { commandOf } = await import("./chunk-7EOBHUMC.js");
2651
+ const { commandOf } = await import("./chunk-24XLDU72.js");
2347
2652
  const id = commandOf(positionals, catalog.map((c) => c.id));
2348
2653
  io.err(id ? `atticus help ${id} lists what it takes. Nothing was run.` : "atticus help --all lists every command and what it takes. Nothing was run.");
2349
2654
  return 2;