@maycombhq/atticus 2.0.0-beta.10 → 2.0.0-beta.12

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 (235) hide show
  1. package/dist/bin.js +3 -3
  2. package/dist/{chunk-AY2IUF4K.js → chunk-22GLUHGE.js} +659 -73
  3. package/dist/{chunk-CIUHAHM6.js → chunk-2A24BNRZ.js} +8 -8
  4. package/dist/{chunk-2RX7PI2Y.js → chunk-2ELFEKOO.js} +4 -4
  5. package/dist/{chunk-QKEFZRHS.js → chunk-2P6IHSRO.js} +17 -17
  6. package/dist/chunk-2Q2YBAR5.js +40 -0
  7. package/dist/{chunk-7DUDLVFJ.js → chunk-2VQLFNBO.js} +20 -20
  8. package/dist/{chunk-E3Z67HRK.js → chunk-3256EDLL.js} +4 -4
  9. package/dist/{chunk-OIU657QQ.js → chunk-34BCKMBS.js} +4 -4
  10. package/dist/{chunk-UR7RMZ3R.js → chunk-34NWVIBC.js} +2 -2
  11. package/dist/{chunk-6VBXAGJX.js → chunk-36KD4OGC.js} +14 -14
  12. package/dist/{chunk-I7IWQIEB.js → chunk-3CFBU2O6.js} +4 -4
  13. package/dist/{chunk-OSGQW2Z6.js → chunk-3JLTN3Y7.js} +8 -8
  14. package/dist/{chunk-FOGG4AUR.js → chunk-3M7QBKKG.js} +25 -7
  15. package/dist/{chunk-UF7TAFJM.js → chunk-3RP34PYV.js} +18 -18
  16. package/dist/{chunk-YLAJAI2W.js → chunk-3ZKLWM5Y.js} +11 -11
  17. package/dist/{chunk-LTQANUDH.js → chunk-47HPZ34V.js} +25 -25
  18. package/dist/chunk-4BPROPGG.js +45 -0
  19. package/dist/{chunk-Y4BRGOJR.js → chunk-4G56W6H7.js} +13 -10
  20. package/dist/{chunk-YXJ4XOHF.js → chunk-4HIQ2FTI.js} +4 -4
  21. package/dist/{chunk-AJJK7GLO.js → chunk-4HTILEXW.js} +3 -3
  22. package/dist/{chunk-OJLRFGBP.js → chunk-4Q2PGM5T.js} +78 -15
  23. package/dist/{chunk-GR6YKM55.js → chunk-4RDW2X43.js} +108 -14
  24. package/dist/{chunk-23M2LUYM.js → chunk-4VOG5H2K.js} +1 -1
  25. package/dist/chunk-5CSZTVXH.js +34 -0
  26. package/dist/{chunk-65C57N7P.js → chunk-5FFMJMVH.js} +19 -19
  27. package/dist/{chunk-XNYNEEBR.js → chunk-5GGGAI5C.js} +18 -18
  28. package/dist/{chunk-IUD3ME4E.js → chunk-5H46QFSL.js} +4 -4
  29. package/dist/{chunk-KIHOIVST.js → chunk-5ION6STH.js} +3 -3
  30. package/dist/chunk-5M3CLAOV.js +39 -0
  31. package/dist/chunk-5OACMWWI.js +886 -0
  32. package/dist/{chunk-2HMWX4T6.js → chunk-6ENDKY52.js} +11 -11
  33. package/dist/{chunk-OS7PQ35Z.js → chunk-6FG7QKJC.js} +22 -22
  34. package/dist/{chunk-FEZE6NIA.js → chunk-6JV3YHRR.js} +18 -18
  35. package/dist/{chunk-WGZWR4RF.js → chunk-6ROZRBWH.js} +5 -5
  36. package/dist/{chunk-WARBF2KY.js → chunk-6S27MUQQ.js} +10 -6
  37. package/dist/{chunk-TZDSDDSV.js → chunk-72DY5NCN.js} +2 -2
  38. package/dist/chunk-76QVBNEM.js +37 -0
  39. package/dist/{chunk-N4QZJJVB.js → chunk-77UOXZVM.js} +5 -5
  40. package/dist/{chunk-LVGBKKSM.js → chunk-7AXMUE2U.js} +15 -15
  41. package/dist/{chunk-FJCFYKVO.js → chunk-7TEQF64E.js} +196 -76
  42. package/dist/{chunk-IDGSU7JF.js → chunk-7TH6I6TL.js} +9 -9
  43. package/dist/{chunk-ZONE6E3Z.js → chunk-7UKETVPW.js} +2 -2
  44. package/dist/{chunk-XKS6THI5.js → chunk-7VNEDDCC.js} +2 -2
  45. package/dist/{chunk-BMHGA7WD.js → chunk-A5GY2EWH.js} +12 -12
  46. package/dist/{chunk-E3JYO547.js → chunk-AEZ3EICK.js} +20 -20
  47. package/dist/{chunk-7F2RUWPU.js → chunk-ARLH2ZMD.js} +1 -1
  48. package/dist/{chunk-VKMTFIWS.js → chunk-AYVLEB55.js} +18 -18
  49. package/dist/chunk-B6X5PJSA.js +320 -0
  50. package/dist/{chunk-JMSEEBN4.js → chunk-BRCDEGNE.js} +1 -1
  51. package/dist/{chunk-67J3VZBA.js → chunk-BSVTNNUK.js} +5 -5
  52. package/dist/{chunk-3GTZ2OON.js → chunk-BTOGAUWX.js} +20 -11
  53. package/dist/{chunk-4SVJNVEE.js → chunk-BXBCMGIQ.js} +2 -0
  54. package/dist/chunk-BXP2Q4TD.js +48 -0
  55. package/dist/{chunk-XPEEICAO.js → chunk-BZRWJUB4.js} +15 -15
  56. package/dist/{chunk-MH5OCRUM.js → chunk-CH6LUQLD.js} +2 -2
  57. package/dist/{chunk-T6USVBEJ.js → chunk-CIIRPLI6.js} +5 -5
  58. package/dist/chunk-CJXM6SG4.js +339 -0
  59. package/dist/{chunk-5XDNUJ4P.js → chunk-CQD26SMZ.js} +4 -2
  60. package/dist/{chunk-7TGYNOXD.js → chunk-CW5SEPUT.js} +7 -7
  61. package/dist/{chunk-5KTOPOEP.js → chunk-CWSZP2LU.js} +25 -25
  62. package/dist/chunk-CXK27ZUY.js +32 -0
  63. package/dist/{chunk-YGKYFMSL.js → chunk-CXY4YDXS.js} +3 -3
  64. package/dist/{chunk-R64GLVBO.js → chunk-DDZZXVQ5.js} +10 -10
  65. package/dist/{chunk-7YYEKTYF.js → chunk-DGZXJO5I.js} +8 -8
  66. package/dist/{chunk-IV7BCWWN.js → chunk-DONCF2XC.js} +3 -3
  67. package/dist/{chunk-RRVT4MPS.js → chunk-DPNCAFMB.js} +18 -18
  68. package/dist/{chunk-UBWCUP3G.js → chunk-DQKNOHUZ.js} +2 -2
  69. package/dist/{chunk-NGPU2ARF.js → chunk-DW4BM73R.js} +1 -1
  70. package/dist/{chunk-PEF5OEMB.js → chunk-DWN7RSNQ.js} +4 -4
  71. package/dist/{chunk-KC5DROFC.js → chunk-DWYPYVPJ.js} +14 -14
  72. package/dist/{chunk-B7434AE2.js → chunk-E73QLYK7.js} +24 -3
  73. package/dist/{chunk-EX6ZXS5K.js → chunk-EE3UNC44.js} +4 -4
  74. package/dist/chunk-EJDZEK22.js +53 -0
  75. package/dist/{chunk-ISNZYKAS.js → chunk-ENZWVTTN.js} +21 -21
  76. package/dist/{chunk-ROTY5J2L.js → chunk-EREL3TQG.js} +1 -1
  77. package/dist/{chunk-ZZXF6OOJ.js → chunk-ESGIBN3S.js} +2 -2
  78. package/dist/{chunk-YGR6OCHQ.js → chunk-EU7VTBAI.js} +8 -14
  79. package/dist/chunk-F5GA6G3U.js +48 -0
  80. package/dist/{chunk-JAA53T23.js → chunk-F6FGIYPT.js} +20 -20
  81. package/dist/{chunk-NPCD54I7.js → chunk-FAET4BB6.js} +8 -5
  82. package/dist/{chunk-YPBQNJHA.js → chunk-FBFSTYAB.js} +8 -8
  83. package/dist/{chunk-OEI7LVRP.js → chunk-FEBYMFZA.js} +24 -24
  84. package/dist/chunk-FMV6IZ3P.js +54 -0
  85. package/dist/{chunk-F7UQR4ZX.js → chunk-FQ6IBYFC.js} +3 -3
  86. package/dist/{chunk-J5LHDJU4.js → chunk-FSJMFPA3.js} +7 -7
  87. package/dist/chunk-GFZ5MIQG.js +47 -0
  88. package/dist/{chunk-LK44ULGI.js → chunk-GHSVJNVL.js} +104 -11
  89. package/dist/{chunk-LRS573EX.js → chunk-GKPOCUQR.js} +12 -7
  90. package/dist/{chunk-LDKUC2QJ.js → chunk-GLSNVC67.js} +17 -17
  91. package/dist/{chunk-47QE246J.js → chunk-GMDOXWIS.js} +5 -5
  92. package/dist/{chunk-5MI2SEV5.js → chunk-GN5ZLSLD.js} +3 -3
  93. package/dist/{chunk-JQ7XQPQS.js → chunk-GUNBOZ75.js} +4 -4
  94. package/dist/{chunk-HHUFVJF7.js → chunk-GYS64N6F.js} +6 -6
  95. package/dist/{chunk-AKJTKMXU.js → chunk-HIQWJ6JZ.js} +5 -5
  96. package/dist/{chunk-6GNS32SI.js → chunk-HJ52XDST.js} +4 -4
  97. package/dist/{chunk-2KDSXJFJ.js → chunk-HJUEQERG.js} +34 -7
  98. package/dist/chunk-HKGQUOQ3.js +88 -0
  99. package/dist/chunk-HP32HUWR.js +41 -0
  100. package/dist/{chunk-R4TBNKKC.js → chunk-HY2VVVFZ.js} +1249 -610
  101. package/dist/{chunk-G5SFOH7P.js → chunk-I2PNEG3M.js} +38 -23
  102. package/dist/{chunk-Y5PZHS4K.js → chunk-INCECZ2E.js} +5 -5
  103. package/dist/{chunk-RK6MKKKP.js → chunk-ISXNWUG7.js} +1 -1
  104. package/dist/{chunk-73VPWF5R.js → chunk-ITJ7ST5E.js} +4 -4
  105. package/dist/{chunk-5IALSMZ2.js → chunk-J3VAFDEX.js} +14 -14
  106. package/dist/chunk-JGLZUQVN.js +29 -0
  107. package/dist/{chunk-5XN76FTF.js → chunk-JLIEAQP4.js} +5 -5
  108. package/dist/{chunk-MGVYVW7Q.js → chunk-JQG4VO47.js} +1 -1
  109. package/dist/chunk-JXXQHETS.js +130 -0
  110. package/dist/{chunk-APSVL2AI.js → chunk-KNGESBFW.js} +15 -15
  111. package/dist/{chunk-7UKVYFQ2.js → chunk-KUYA2E7M.js} +8 -8
  112. package/dist/{chunk-WLIIQ2A4.js → chunk-KY2ZHTBJ.js} +7 -7
  113. package/dist/{chunk-YPIEYQF4.js → chunk-L4UIKAWD.js} +6 -6
  114. package/dist/chunk-LDUJ6NIT.js +247 -0
  115. package/dist/{chunk-5YIBJXGB.js → chunk-LTLR4JZJ.js} +10 -10
  116. package/dist/{chunk-IZNSAEBX.js → chunk-MFRPLAOH.js} +2 -2
  117. package/dist/{chunk-6GWHKMQR.js → chunk-MH7UBG47.js} +4 -4
  118. package/dist/{chunk-4GZXS6S2.js → chunk-MLAACAES.js} +278 -17
  119. package/dist/{chunk-D3PO4DOZ.js → chunk-MMB2OHUY.js} +4 -2
  120. package/dist/{chunk-DDAHCPGA.js → chunk-MNCQ2GL7.js} +12 -12
  121. package/dist/{chunk-UYYN2IUZ.js → chunk-MNUZX67F.js} +6 -6
  122. package/dist/{chunk-YFSSNGLR.js → chunk-MQHYCS6A.js} +32 -29
  123. package/dist/{chunk-MKRBG5EF.js → chunk-MRLCNXXR.js} +1 -1
  124. package/dist/{chunk-BUYJL3GJ.js → chunk-NBQO75XT.js} +1 -1
  125. package/dist/{chunk-GXJVY6WT.js → chunk-NCONDPHH.js} +5 -5
  126. package/dist/{chunk-ZP4FJHR4.js → chunk-NHS55U7T.js} +18 -18
  127. package/dist/{chunk-CRE4BJHM.js → chunk-NL6XQZSV.js} +23 -23
  128. package/dist/{chunk-YVLMBAYE.js → chunk-NSJ6ZR2A.js} +3 -3
  129. package/dist/{chunk-XRO65C7V.js → chunk-NTNJNRHW.js} +8 -6
  130. package/dist/{chunk-FTV6I76U.js → chunk-NTTXTLCQ.js} +25 -25
  131. package/dist/chunk-NWL7XEQ4.js +37 -0
  132. package/dist/{chunk-CNKGYDMG.js → chunk-NWXY3B4R.js} +23 -23
  133. package/dist/{chunk-52R2YXP5.js → chunk-O5W4ECUY.js} +16 -16
  134. package/dist/{chunk-OGRWQ562.js → chunk-O6ILVBYB.js} +2 -2
  135. package/dist/{chunk-BJPMKJTL.js → chunk-OJAJXU65.js} +102 -2
  136. package/dist/{chunk-FZL2HNWP.js → chunk-OMH3I5BH.js} +3 -3
  137. package/dist/{chunk-MF7QH4AX.js → chunk-P6UJ22XR.js} +5 -5
  138. package/dist/{chunk-HE4ZQXZM.js → chunk-P76AW3PA.js} +309 -15
  139. package/dist/{chunk-GZ4TKR3Q.js → chunk-PCCPXWJC.js} +48 -139
  140. package/dist/{chunk-6TJCUYC5.js → chunk-PGFRXGHA.js} +3 -3
  141. package/dist/{chunk-NIXVDQVO.js → chunk-PJRMMWU4.js} +2 -2
  142. package/dist/{chunk-X4W4XXWP.js → chunk-PKJ3K3GM.js} +5 -5
  143. package/dist/{chunk-KM2FBM3T.js → chunk-PVW2N63M.js} +302 -55
  144. package/dist/{chunk-Y7KBQ4BD.js → chunk-Q55UP5EZ.js} +22 -22
  145. package/dist/{chunk-7URGP4DD.js → chunk-QAFMLBPF.js} +12 -12
  146. package/dist/{chunk-KIAI6PWL.js → chunk-QEZSA2O7.js} +17 -17
  147. package/dist/{chunk-PKCMRPPB.js → chunk-QJ3OX7OC.js} +33 -27
  148. package/dist/{chunk-6EDQE7GO.js → chunk-QL4VNY4U.js} +2 -2
  149. package/dist/{chunk-6JLPXDWN.js → chunk-QR65C3DV.js} +5 -5
  150. package/dist/{chunk-ILFKECGI.js → chunk-QXGOEP44.js} +4 -4
  151. package/dist/chunk-QY7RGTUP.js +326 -0
  152. package/dist/{chunk-PGKHJYOB.js → chunk-RA64IK43.js} +1 -1
  153. package/dist/{chunk-XB5RFZHH.js → chunk-RLJDYLID.js} +12 -12
  154. package/dist/{chunk-AWECWW5Y.js → chunk-RMLUZYEA.js} +13 -11
  155. package/dist/chunk-RSVBX6A3.js +54 -0
  156. package/dist/chunk-RZWZO2JQ.js +42 -0
  157. package/dist/chunk-S5LSDXV4.js +40 -0
  158. package/dist/{chunk-TM7LC37P.js → chunk-SAC6FNKR.js} +181 -117
  159. package/dist/{chunk-DPHCFZ7W.js → chunk-SCBU46AJ.js} +3 -3
  160. package/dist/{chunk-EZIUFEN6.js → chunk-SGNHNN3G.js} +12 -12
  161. package/dist/{chunk-XKZHAD6Y.js → chunk-SHAAGH3T.js} +15 -15
  162. package/dist/chunk-SK5OYWIY.js +122 -0
  163. package/dist/{chunk-FR7JPYBD.js → chunk-SNSFQ47W.js} +12 -12
  164. package/dist/{chunk-FV5YFR6I.js → chunk-SSL6JMPA.js} +9 -9
  165. package/dist/{chunk-XEG3FE2R.js → chunk-TA2ZNDYD.js} +1 -1
  166. package/dist/{chunk-JF2NSTFO.js → chunk-TEHH47TG.js} +3 -3
  167. package/dist/{chunk-W5OYJMBT.js → chunk-TEZSZ24W.js} +5 -5
  168. package/dist/{chunk-SS66Q4VE.js → chunk-TH526O6E.js} +12 -12
  169. package/dist/{chunk-R6B6XAKK.js → chunk-TIAPEYWI.js} +4 -4
  170. package/dist/chunk-TLCRIAU3.js +44 -0
  171. package/dist/{chunk-FMKKVWZD.js → chunk-TQYBXDVH.js} +2 -2
  172. package/dist/chunk-TV4CGNEY.js +43 -0
  173. package/dist/{chunk-QICFHVRW.js → chunk-TVSNWIAM.js} +8 -6
  174. package/dist/{chunk-CHC5FKTU.js → chunk-TWHZU36X.js} +1 -1
  175. package/dist/{chunk-BMCKL3VQ.js → chunk-TXV2AYZB.js} +24 -24
  176. package/dist/{chunk-577AJVRS.js → chunk-U25OX22K.js} +2039 -289
  177. package/dist/{chunk-7EKESFWV.js → chunk-U4NNG3ES.js} +11 -11
  178. package/dist/{chunk-XQ3YIV5R.js → chunk-U5T4A2QV.js} +6 -6
  179. package/dist/{chunk-2XM6PYQQ.js → chunk-UT5OA7KA.js} +43 -11
  180. package/dist/{chunk-BXIX7S7O.js → chunk-V3VCUSQ6.js} +15 -15
  181. package/dist/{chunk-4QUQEBFT.js → chunk-V5XV3JSP.js} +6 -6
  182. package/dist/{chunk-F7YL2RZ4.js → chunk-VF4VOPMB.js} +23 -23
  183. package/dist/{chunk-3QAKDIEU.js → chunk-VLDM4QZM.js} +23 -23
  184. package/dist/chunk-VP5H6DII.js +34 -0
  185. package/dist/{chunk-N3NBWIYQ.js → chunk-VRYQJZFL.js} +10 -9
  186. package/dist/{chunk-FQSRHTTC.js → chunk-VS6FS472.js} +15 -15
  187. package/dist/{chunk-YMOJD5BO.js → chunk-VTMIRRIZ.js} +3 -3
  188. package/dist/{chunk-4PJADZRR.js → chunk-VXSJKWB7.js} +16 -16
  189. package/dist/{chunk-MTAUZW2Z.js → chunk-WE5VMPUP.js} +216 -106
  190. package/dist/{chunk-ZE3P35DA.js → chunk-WEG7DY5K.js} +9 -9
  191. package/dist/{chunk-V2TH46ZY.js → chunk-WIF7A6JU.js} +12 -12
  192. package/dist/{chunk-GFXLPJWY.js → chunk-WM4N2L4T.js} +2 -2
  193. package/dist/{chunk-XIWYUQZQ.js → chunk-X64BFQ3R.js} +9 -9
  194. package/dist/{chunk-QWVBEK4P.js → chunk-XJRC3ZDI.js} +13 -13
  195. package/dist/{chunk-F2FOQLJ7.js → chunk-XVIVWG7B.js} +6 -6
  196. package/dist/{chunk-XTVDAHH2.js → chunk-Y3ZKT6IF.js} +5 -5
  197. package/dist/{chunk-62YMDXY6.js → chunk-YURIUFKF.js} +16 -16
  198. package/dist/{chunk-HKTUIMH4.js → chunk-YY2WGL6S.js} +3 -3
  199. package/dist/{chunk-BDEKREZH.js → chunk-Z2BA4NNR.js} +3 -3
  200. package/dist/{chunk-MTEBM4Y4.js → chunk-Z47YGBUY.js} +19 -12
  201. package/dist/chunk-Z4JSRKNR.js +41 -0
  202. package/dist/{chunk-G2E5MNYP.js → chunk-Z53ZB34U.js} +7 -7
  203. package/dist/{chunk-NNUASOAA.js → chunk-ZBOPIYOY.js} +12 -12
  204. package/dist/{chunk-7GB4ZRE2.js → chunk-ZBQCLKTH.js} +12 -12
  205. package/dist/chunk-ZGI7DNJ6.js +38 -0
  206. package/dist/{chunk-P3TKKBAH.js → chunk-ZPT4QX3J.js} +4 -4
  207. package/dist/chunk-ZS47PQ3O.js +41 -0
  208. package/dist/{chunk-PIVKU64W.js → chunk-ZTIMXVV5.js} +2 -2
  209. package/dist/{chunk-T4RTWMJD.js → chunk-ZYASEL7K.js} +5 -5
  210. package/dist/files.json +469 -417
  211. package/dist/packages/sdk/npm/index.js +2309 -1983
  212. package/dist/packages/ui/dist/assets/{elk-api-Mo5w5xCa.js → elk-api-D2NcYpUJ.js} +2 -2
  213. package/dist/packages/ui/dist/assets/{index-Bp3XhPHX.css → index-C0JEkXyN.css} +1 -1
  214. package/dist/packages/ui/dist/assets/index-CT7skl01.js +29 -0
  215. package/dist/packages/ui/dist/index.html +2 -2
  216. package/package.json +4 -4
  217. package/dist/chunk-26PLPSQW.js +0 -48
  218. package/dist/chunk-2G4DFUWJ.js +0 -43
  219. package/dist/chunk-2M6WXO73.js +0 -38
  220. package/dist/chunk-5F3RJCHB.js +0 -45
  221. package/dist/chunk-B2VSVN4P.js +0 -34
  222. package/dist/chunk-B3O52AUQ.js +0 -275
  223. package/dist/chunk-CITDNDIZ.js +0 -53
  224. package/dist/chunk-DAQBIK5G.js +0 -47
  225. package/dist/chunk-DZRQDNPT.js +0 -34
  226. package/dist/chunk-FLOEZA6K.js +0 -29
  227. package/dist/chunk-FNHSVBRA.js +0 -48
  228. package/dist/chunk-FPGVOSOG.js +0 -41
  229. package/dist/chunk-FZ2E5LGK.js +0 -54
  230. package/dist/chunk-HB6XSGI6.js +0 -131
  231. package/dist/chunk-HUZQDKQK.js +0 -48
  232. package/dist/chunk-L4VJ4ETL.js +0 -41
  233. package/dist/chunk-XPCWQXTY.js +0 -37
  234. package/dist/chunk-YIEOFHOL.js +0 -30
  235. package/dist/packages/ui/dist/assets/index-DM212ZbV.js +0 -29
@@ -7,19 +7,19 @@ import {
7
7
  ATTICUS_FOLDER_IGNORE,
8
8
  CHECKLISTS_README,
9
9
  STARTER_CHECKLISTS_README
10
- } from "./chunk-R64GLVBO.js";
10
+ } from "./chunk-DDZZXVQ5.js";
11
11
  import {
12
12
  openspecRootOf,
13
13
  rewriteStories
14
- } from "./chunk-KC5DROFC.js";
14
+ } from "./chunk-DWYPYVPJ.js";
15
15
  import {
16
16
  STARTER_REVIEW_PATH,
17
17
  readPackFiles,
18
18
  starterReviewText
19
- } from "./chunk-47QE246J.js";
19
+ } from "./chunk-GMDOXWIS.js";
20
20
  import {
21
21
  metarepoOrigin
22
- } from "./chunk-XQ3YIV5R.js";
22
+ } from "./chunk-U5T4A2QV.js";
23
23
  import {
24
24
  ORG_FLOW_VERSION,
25
25
  STORE_MARKER,
@@ -28,16 +28,16 @@ import {
28
28
  storeIdOf,
29
29
  writeOrgFlowSchema,
30
30
  writeStoreMarker
31
- } from "./chunk-MGVYVW7Q.js";
31
+ } from "./chunk-JQG4VO47.js";
32
32
  import {
33
33
  VERSION,
34
34
  versionAtLeast
35
- } from "./chunk-CHC5FKTU.js";
35
+ } from "./chunk-TWHZU36X.js";
36
36
  import {
37
37
  IGNORED,
38
38
  ensureGitignore,
39
39
  gitUser
40
- } from "./chunk-PGKHJYOB.js";
40
+ } from "./chunk-RA64IK43.js";
41
41
  import {
42
42
  MetarepoStamp,
43
43
  WORKSPACE_SCHEMA_VERSION,
@@ -59,12 +59,12 @@ import {
59
59
  require_dist,
60
60
  specsDirOf,
61
61
  specsRelOf
62
- } from "./chunk-577AJVRS.js";
62
+ } from "./chunk-U25OX22K.js";
63
63
  import {
64
64
  LOCAL_ONLY,
65
65
  ensureLocalIgnore,
66
66
  writeFileAtomic
67
- } from "./chunk-D3PO4DOZ.js";
67
+ } from "./chunk-MMB2OHUY.js";
68
68
  import {
69
69
  __toESM
70
70
  } from "./chunk-TV45EUGM.js";
@@ -159,8 +159,9 @@ var MIGRATIONS = [
159
159
  }
160
160
  },
161
161
  {
162
+ // The id is kept as it was first shipped (stamps record it); the step writes the current version.
162
163
  id: "questions-v3",
163
- summary: "Questions at schema version 3: a question can name the earlier one it may be the same as (ADR 0117), and an answer can carry its rule and the proposal it accepted (ADR 0153)",
164
+ summary: "Questions at schema version 4: a question can name the earlier one it may be the same as (ADR 0117), an answer can carry its rule and the proposal it accepted (ADR 0153), and a question the code later disagreed with keeps why it reopened and the answer it had (ADR 0162)",
164
165
  pending: (root) => migrateQuestions(root, { dryRun: true }),
165
166
  apply: (root) => migrateQuestions(root)
166
167
  },
@@ -181,6 +182,8 @@ var MIGRATIONS = [
181
182
  },
182
183
  // The version-2 files: only the number changes, no field gains a required (ADR 0125).
183
184
  catalogStep("catalog-schema-v3", "Catalog records at schema version 3: a Schema field can say whether it is required (ADR 0125)", [2]),
185
+ // The version-3 files: only the number changes; version 4 adds a Schema format (ADR 0164).
186
+ catalogStep("catalog-schema-v4", "Catalog records at schema version 4: a Schema can be a protobuf message (ADR 0164)", [3]),
184
187
  sourcesStep("sources-v2", "sources.yaml at version 2: a wiki can include and exclude pages by pattern; every wiki still reads every page (ADR 0083)", { from: 1, to: 2 }),
185
188
  // ADR 0132: from version 1 or 2 (a version 1 file is moved to 2 by the step before, then here).
186
189
  sourcesStep("sources-v3", "sources.yaml at version 3: a wiki can say how much its word counts (authority) and where it applies (appliesTo); every wiki still ranks as a team's and applies everywhere (ADR 0132)", { to: 3 }),
@@ -5,7 +5,7 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  judgingRuntime
8
- } from "./chunk-ROTY5J2L.js";
8
+ } from "./chunk-EREL3TQG.js";
9
9
  import {
10
10
  draftChange,
11
11
  draftTemplates,
@@ -16,17 +16,17 @@ import {
16
16
  storyBar,
17
17
  submitRequests,
18
18
  syncWorkItems
19
- } from "./chunk-KC5DROFC.js";
19
+ } from "./chunk-DWYPYVPJ.js";
20
20
  import {
21
21
  table
22
22
  } from "./chunk-VOGCSYOI.js";
23
23
  import {
24
24
  runtimeForCli
25
- } from "./chunk-5XDNUJ4P.js";
25
+ } from "./chunk-CQD26SMZ.js";
26
26
  import {
27
27
  changesRelOf,
28
28
  proposalsRelOf
29
- } from "./chunk-577AJVRS.js";
29
+ } from "./chunk-U25OX22K.js";
30
30
 
31
31
  // packages/cli/dist/plan-commands.js
32
32
  import { resolve } from "node:path";
@@ -124,9 +124,9 @@ import {
124
124
  verdictOf,
125
125
  withPromptLimit,
126
126
  wrapData
127
- } from "./chunk-5XDNUJ4P.js";
128
- import "./chunk-577AJVRS.js";
129
- import "./chunk-D3PO4DOZ.js";
127
+ } from "./chunk-CQD26SMZ.js";
128
+ import "./chunk-U25OX22K.js";
129
+ import "./chunk-MMB2OHUY.js";
130
130
  import "./chunk-TV45EUGM.js";
131
131
  export {
132
132
  ANSWERED_BY_SPEC,
@@ -4,25 +4,31 @@ var require = __atticusCreateRequire(import.meta.url);
4
4
  var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
+ globHolds
8
+ } from "./chunk-P76AW3PA.js";
9
+ import "./chunk-7VNEDDCC.js";
10
+ import {
11
+ lineRangeOf,
7
12
  planGaps,
8
13
  sameCommit
9
- } from "./chunk-4GZXS6S2.js";
10
- import "./chunk-UR7RMZ3R.js";
11
- import "./chunk-MKRBG5EF.js";
14
+ } from "./chunk-MLAACAES.js";
15
+ import "./chunk-34NWVIBC.js";
16
+ import "./chunk-RA64IK43.js";
17
+ import "./chunk-MRLCNXXR.js";
12
18
  import {
13
19
  DATA_RULE,
14
20
  estimateTokens,
15
21
  neutralise,
16
22
  wrapData
17
- } from "./chunk-5XDNUJ4P.js";
23
+ } from "./chunk-CQD26SMZ.js";
18
24
  import {
19
25
  factsDirOf,
20
26
  factsRelOf,
21
27
  require_dist
22
- } from "./chunk-577AJVRS.js";
28
+ } from "./chunk-U25OX22K.js";
23
29
  import {
24
30
  writeFileAtomic
25
- } from "./chunk-D3PO4DOZ.js";
31
+ } from "./chunk-MMB2OHUY.js";
26
32
  import {
27
33
  __toESM
28
34
  } from "./chunk-TV45EUGM.js";
@@ -60,7 +66,7 @@ async function mapGaps(root, repo, o, io) {
60
66
  const t = o.source.read(file);
61
67
  return t === void 0 ? void 0 : { tokens: estimateTokens(t), lines: t.split(/\r?\n/).length };
62
68
  };
63
- const plan = planGaps({
69
+ const from = {
64
70
  ...v.coverage?.unknown ? { unknown: v.coverage.unknown } : {},
65
71
  ...v.skipped ? { skipped: v.skipped } : {},
66
72
  ...v.skippedCount !== void 0 ? { skippedCount: v.skippedCount } : {},
@@ -68,31 +74,42 @@ async function mapGaps(root, repo, o, io) {
68
74
  ...v.specOpsUncovered ? { specOpsUncovered: v.specOpsUncovered } : {},
69
75
  ...v.specOpsUncoveredCount !== void 0 ? { specOpsUncoveredCount: v.specOpsUncoveredCount } : {},
70
76
  ...v.entriesNoFlowFollows ? { entriesNoFlowFollows: v.entriesNoFlowFollows } : {}
71
- }, size, o.session);
77
+ };
78
+ const plan = o.part ? partRest(from, o.part.left, size, o.session) : planGaps(from, size, o.session);
72
79
  const promptRel = gapsRelOf(root, repo);
73
80
  if (plan.sessions.length)
74
- await writeFileAtomic(join(dir, `${repo}.gaps.md`), gapsPrompt(repo, o.commit, plan, { rel, session: o.session }));
81
+ await writeFileAtomic(join(dir, `${repo}.gaps.md`), gapsPrompt(repo, o.commit, plan, {
82
+ rel,
83
+ session: o.session,
84
+ ...o.part ? { part: o.part.n } : {}
85
+ }));
75
86
  if (o.json) {
76
87
  io.out(JSON.stringify({
77
88
  repo,
78
89
  commit: o.commit,
79
90
  session: o.session,
80
91
  ...plan,
92
+ ...o.part ? { part: o.part.n } : {},
81
93
  ...plan.sessions.length ? { prompt: promptRel } : {}
82
94
  }, null, 2));
83
95
  return 0;
84
96
  }
97
+ const again = o.part ? `${repo} --part ${o.part.n} --gaps` : `${repo} --gaps`;
98
+ if (!plan.sessions.length && o.part) {
99
+ io.out(`Nothing is left of part ${o.part.n} of ${repo}: every file it reads is cited by a kept fact or reviewed.`);
100
+ return 0;
101
+ }
85
102
  if (!plan.sessions.length) {
86
103
  io.out(`No gaps left in ${repo}: the last verify lists no file no fact cites, no skipped line, no spec operation and no entry to follow.${plan.gone.length ? ` (${plan.gone.length} listed ${plan.gone.length === 1 ? "file is" : "files are"} gone from the checkout.)` : ""}`);
87
104
  return 0;
88
105
  }
89
106
  const n = plan.sessions.length;
90
107
  const first = plan.sessions[0];
91
- io.out(`Second pass on the gaps of ${repo}: ${plan.files} ${plan.files === 1 ? "file" : "files"}, about ${plan.tokens.toLocaleString("en-US")} tokens, in ${n} ${n === 1 ? "session" : "sessions"} of ${o.session.toLocaleString("en-US")} at most.`);
108
+ io.out(`${o.part ? `The rest of part ${o.part.n} of ${repo}` : `Second pass on the gaps of ${repo}`}: ${plan.files} ${plan.files === 1 ? "file" : "files"}, about ${plan.tokens.toLocaleString("en-US")} tokens, in ${n} ${n === 1 ? "session" : "sessions"} of ${o.session.toLocaleString("en-US")} at most.`);
92
109
  io.out(`Wrote ${promptRel}: session 1${n > 1 ? ` of ${n}` : ""}, ${first.reads.length} ${first.reads.length === 1 ? "read" : "reads"}, about ${first.tokens.toLocaleString("en-US")} tokens.`);
93
110
  if (plan.unlisted)
94
111
  io.out(`${plan.unlisted} more skipped lines or spec operations are counted in ${verifyYaml} but not listed: verify after this pass and --gaps again plans them.`);
95
- io.out(`Start a new chat, so the session holds only these files and lines, and run /atticus-map ${repo} --gaps there (or paste ${promptRel}).`);
112
+ io.out(`Start a new chat, so the session holds only these files and lines, and run /atticus-map ${again} there (or paste ${promptRel}).`);
96
113
  return 0;
97
114
  }
98
115
  function gapsPrompt(repo, commit, plan, c) {
@@ -104,14 +121,16 @@ function gapsPrompt(repo, commit, plan, c) {
104
121
  ]).join("\n");
105
122
  const data = wrapData({ id: `${repo}.gaps`, kind: "gaps", origin: `${c.rel}/${repo}.verify.yaml` }, neutralise(list, void 0, { mark: true }).text);
106
123
  return [
107
- `# Second pass on the gaps of ${repo} at ${commit}`,
124
+ c.part ? `# The rest of part ${c.part} of ${repo} at ${commit}` : `# Second pass on the gaps of ${repo} at ${commit}`,
108
125
  "",
109
- `Session 1${n > 1 ? ` of ${n}` : ""}, about ${s.tokens.toLocaleString("en-US")} tokens of source. The first read is done and verified; this session reads only what it left (ADR 0157). Open each path below and nothing else: a path ending \`#L<from>-L<to>\` by those lines only, never the whole file.`,
126
+ `Session 1${n > 1 ? ` of ${n}` : ""}, about ${s.tokens.toLocaleString("en-US")} tokens of source. ${c.part ? `The read of part ${c.part} stopped before it was done; what it wrote is verified and kept, so this session reads only the files of the part it left (ADR 0161).` : "The first read is done and verified; this session reads only what it left (ADR 0157)."} Open each path below and nothing else: a path ending \`#L<from>-L<to>\` by those lines only, never the whole file.`,
110
127
  "",
111
128
  `- Write each fact to \`${c.rel}/${repo}.jsonl\`, appended, under the same rules and id rules as the first read, with \`commit\` ${commit}. A fact already in the file keeps its id: look for it before you write it.`,
112
129
  `- A path or line that holds nothing to record: a line in \`${c.rel}/${repo}.reviewed.jsonl\`, \`{"path": "<the path below>", "why": "..."}\`.`,
113
130
  `- Then run \`atticus verify ${repo}\` and fix what it rejects until it exits 0.`,
114
- ...n > 1 || plan.unlisted ? [`- Then \`atticus map ${repo} --gaps\` plans what is left, for another new chat.`] : [],
131
+ ...n > 1 || plan.unlisted ? [
132
+ `- Then \`atticus map ${repo}${c.part ? ` --part ${c.part}` : ""} --gaps\` plans what is left, for another new chat.`
133
+ ] : [],
115
134
  "",
116
135
  "## Read",
117
136
  "",
@@ -121,8 +140,52 @@ function gapsPrompt(repo, commit, plan, c) {
121
140
  ""
122
141
  ].join("\n");
123
142
  }
143
+ function partRest(from, left, size, room) {
144
+ const ranges = left.filter((g) => lineRangeOf(g));
145
+ const folders = left.filter((g) => !lineRangeOf(g));
146
+ const inPart = (file) => folders.some((g) => globHolds(g, file));
147
+ const fileOf = (cite) => cite.replace(/:\d+$/, "");
148
+ const plan = planGaps({
149
+ unknown: (from.unknown ?? []).filter(inPart),
150
+ ...from.skipped ? { skipped: from.skipped.filter((x) => inPart(fileOf(x.cite))) } : {},
151
+ ...from.specOpsUncovered ? { specOpsUncovered: from.specOpsUncovered.filter((x) => inPart(fileOf(x.cite))) } : {},
152
+ ...from.entriesNoFlowFollows ? { entriesNoFlowFollows: from.entriesNoFlowFollows.filter((x) => inPart(fileOf(x.cite))) } : {}
153
+ }, size, room);
154
+ const sessions = plan.sessions.map((x) => ({ reads: [...x.reads], tokens: x.tokens }));
155
+ const gone = [...plan.gone];
156
+ for (const g of ranges) {
157
+ const r = lineRangeOf(g);
158
+ const sz = size(r.file);
159
+ if (!sz) {
160
+ gone.push(r.file);
161
+ continue;
162
+ }
163
+ const tokens = Math.ceil(sz.tokens * (r.to - r.from + 1) / Math.max(1, sz.lines));
164
+ const read = {
165
+ path: g,
166
+ file: r.file,
167
+ tokens,
168
+ why: ["no fact cites a line of this range yet: read these lines"]
169
+ };
170
+ const last = sessions.at(-1);
171
+ if (last && last.tokens + tokens <= room) {
172
+ last.reads.push(read);
173
+ last.tokens += tokens;
174
+ } else
175
+ sessions.push({ reads: [read], tokens });
176
+ }
177
+ const reads = sessions.flatMap((x) => x.reads);
178
+ return {
179
+ sessions,
180
+ files: new Set(reads.map((r) => r.file)).size,
181
+ tokens: reads.reduce((n, r) => n + r.tokens, 0),
182
+ unlisted: 0,
183
+ gone: [...new Set(gone)]
184
+ };
185
+ }
124
186
  export {
125
187
  gapsPrompt,
126
188
  gapsRelOf,
127
- mapGaps
189
+ mapGaps,
190
+ partRest
128
191
  };
@@ -3,21 +3,39 @@ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
3
  var require = __atticusCreateRequire(import.meta.url);
4
4
  var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ termNoteOffer
8
+ } from "./chunk-LDUJ6NIT.js";
9
+ import "./chunk-X64BFQ3R.js";
6
10
  import {
7
11
  routeQuestions
8
- } from "./chunk-B7434AE2.js";
12
+ } from "./chunk-E73QLYK7.js";
13
+ import "./chunk-ZPT4QX3J.js";
14
+ import "./chunk-7VNEDDCC.js";
15
+ import "./chunk-INCECZ2E.js";
9
16
  import {
10
17
  waitingQuestions
11
- } from "./chunk-RK6MKKKP.js";
18
+ } from "./chunk-ISXNWUG7.js";
19
+ import "./chunk-22GLUHGE.js";
20
+ import "./chunk-QR65C3DV.js";
21
+ import "./chunk-MLAACAES.js";
22
+ import "./chunk-HY2VVVFZ.js";
23
+ import "./chunk-PJRMMWU4.js";
24
+ import "./chunk-34NWVIBC.js";
25
+ import "./chunk-TEHH47TG.js";
26
+ import "./chunk-77UOXZVM.js";
12
27
  import {
13
28
  gitUser
14
- } from "./chunk-PGKHJYOB.js";
29
+ } from "./chunk-RA64IK43.js";
30
+ import "./chunk-MRLCNXXR.js";
31
+ import "./chunk-CQD26SMZ.js";
15
32
  import {
16
33
  HOSTS_STEP,
17
34
  QuestionError,
18
35
  QuestionScopeLevel,
19
36
  QuestionState,
20
37
  TARGETS_STEP_ID,
38
+ TOPICS_STEP_ID,
21
39
  acceptProposal,
22
40
  answerQuestion,
23
41
  answerWords,
@@ -29,11 +47,12 @@ import {
29
47
  proposalsRelOf,
30
48
  questionsRelOf,
31
49
  readQuestion,
32
- require_dist
33
- } from "./chunk-577AJVRS.js";
50
+ require_dist,
51
+ topicOfQuestion
52
+ } from "./chunk-U25OX22K.js";
34
53
  import {
35
54
  writeFileAtomic
36
- } from "./chunk-D3PO4DOZ.js";
55
+ } from "./chunk-MMB2OHUY.js";
37
56
  import {
38
57
  __toESM
39
58
  } from "./chunk-TV45EUGM.js";
@@ -228,13 +247,18 @@ function ruleLine(q, change = false) {
228
247
  const what = a.match.startsWith("/") ? `whose path is under ${a.match}` : `on a host matching ${a.match}`;
229
248
  return `It answers by rule: every call ${what}, in ${where}, reads this answer, the calls found later too.`;
230
249
  }
250
+ function ruleOfferLine(id, r) {
251
+ const others = r.ids.length - 1;
252
+ return ` Answer once for all ${r.ids.length}: atticus questions answer ${id} --option <n> --match '${r.match}' covers the ${plural(r.calls, "call")} of these ${r.ids.length} questions, and the other ${others === 1 ? "one retires" : `${others} retire`} on the next verify --write (${r.ids.filter((x) => x !== id).join(", ")}).`;
253
+ }
231
254
  function questionLines(q, o = {}) {
232
255
  const lines = [
233
256
  `${q.id} ${q.state} ${q.repo} (asked by ${q.askedBy.command} on ${q.askedBy.at.slice(0, 10)})`,
234
257
  ` ${q.question}`,
235
258
  ...aboutLines(o.about),
236
259
  ...q.options.map((o2, i) => ` ${i + 1}. ${o2.label}: ${sentence2(o2.means)} It would change: ${sentence2(o2.changes)}`),
237
- ` Evidence: ${q.evidence.join(", ")}`
260
+ ` Evidence: ${q.evidence.join(", ")}`,
261
+ ...q.state === "open" && o.about?.rule ? [ruleOfferLine(q.id, o.about.rule)] : []
238
262
  ];
239
263
  if (q.answer)
240
264
  lines.push(` Answered by ${q.answer.by} on ${q.answer.at.slice(0, 10)}: ${answerWords(q)} (${scopeWords(q.answer.scope, true, o.change)})${q.answer.match ? `, by rule: ${q.answer.match}` : ""}`, ...q.answer.proposal ? [
@@ -262,7 +286,10 @@ async function questionsFiles(root, argv, io, deps = {}) {
262
286
  "accept-proposal": { type: "boolean" },
263
287
  match: { type: "string" },
264
288
  apply: { type: "string" },
265
- out: { type: "string" }
289
+ out: { type: "string" },
290
+ target: { type: "string" },
291
+ "add-system": { type: "string" },
292
+ name: { type: "string" }
266
293
  }
267
294
  });
268
295
  const str = (v) => typeof v === "string" ? v : void 0;
@@ -319,9 +346,16 @@ async function questionsFiles(root, argv, io, deps = {}) {
319
346
  }
320
347
  const p = q.state === "open" ? await proposalOf(root, q.id) : void 0;
321
348
  const proposal = p?.ok && p.proposal ? { ...p.proposal, file: p.file } : void 0;
322
- if (values.json === true)
323
- io.out(JSON.stringify(proposal ? { ...q, proposal } : q, null, 2));
324
- else {
349
+ if (values.json === true) {
350
+ const picks = q.state === "open" && (q.askedBy.step === TARGETS_STEP_ID || q.askedBy.step === TOPICS_STEP_ID) ? await (await import("./chunk-JXXQHETS.js")).pickerOf(root) : void 0;
351
+ const rule = q.state === "open" && q.askedBy.step === TARGETS_STEP_ID ? (await routeQuestions(root, [q])).about[q.id]?.rule : void 0;
352
+ io.out(JSON.stringify({
353
+ ...q,
354
+ ...proposal ? { proposal } : {},
355
+ ...picks ? { picks } : {},
356
+ ...rule ? { rule } : {}
357
+ }, null, 2));
358
+ } else {
325
359
  const routed = await routeQuestions(root, [q]);
326
360
  const about = routed.about[q.id];
327
361
  for (const l of questionLines(q, {
@@ -406,14 +440,62 @@ async function questionsFiles(root, argv, io, deps = {}) {
406
440
  return 2;
407
441
  }
408
442
  const opt = str(values.option);
409
- const text = str(values.text)?.trim() || void 0;
443
+ let text = str(values.text)?.trim() || void 0;
410
444
  const accept = values["accept-proposal"] === true;
445
+ const target = str(values.target)?.trim() || void 0;
446
+ const addSystem = str(values["add-system"]);
447
+ if (addSystem !== void 0 && addSystem !== "vendor" && addSystem !== "internal") {
448
+ io.err("--add-system is vendor (an outside vendor) or internal (another team's system).");
449
+ return 2;
450
+ }
451
+ if (addSystem !== void 0 && !target) {
452
+ io.err("--add-system goes with --target <the system's name>.");
453
+ return 2;
454
+ }
455
+ let added;
456
+ let beforeWrite;
457
+ if (target) {
458
+ if (opt !== void 0 || text !== void 0 || accept) {
459
+ io.err("--target names the answer: give it alone, not with --option, --text or --accept-proposal.");
460
+ return 2;
461
+ }
462
+ const { readQuestion: readQuestion2 } = await import("./chunk-OJAJXU65.js");
463
+ const { targetAnswerOf, pickerOf, pickerText, offerLine } = await import("./chunk-JXXQHETS.js");
464
+ const q0 = await readQuestion2(root, id).catch(() => void 0);
465
+ if (!q0) {
466
+ io.err(`There is no question ${id}.`);
467
+ return 1;
468
+ }
469
+ const r = await targetAnswerOf(root, q0, target, {
470
+ ...addSystem ? { addSystem } : {},
471
+ ...str(values.name) ? { name: str(values.name) } : {}
472
+ });
473
+ if ("problem" in r) {
474
+ io.err(r.problem);
475
+ if (r.offer)
476
+ io.err(offerLine(id, target, r.offer));
477
+ else if (q0.askedBy.step === TARGETS_STEP_ID || q0.askedBy.step === TOPICS_STEP_ID) {
478
+ io.err("The repos, systems and teams --target takes:");
479
+ for (const l of pickerText(await pickerOf(root)))
480
+ io.err(` ${l}`);
481
+ }
482
+ return 2;
483
+ }
484
+ text = r.text;
485
+ if (r.write) {
486
+ const writeSystem = r.write;
487
+ beforeWrite = async () => {
488
+ const sys = await writeSystem();
489
+ added = sys.added ? `Wrote the system ${sys.id} (boundary ${sys.boundary}${sys.owner ? `, owner ${sys.owner}` : ""}${q0.askedBy.step !== TARGETS_STEP_ID ? `, topic ${topicOfQuestion(q0) ?? ""}` : ""}) into ${sys.profile}; review it in the same pull request.` : sys.topics?.length ? `Wrote ${sys.topics.join(", ")} under topics of ${sys.id} in ${sys.profile}, so the next write lands it there; review it in the same pull request.` : `${sys.profile} already has ${sys.id}${q0.askedBy.step !== TARGETS_STEP_ID ? `, with ${topicOfQuestion(q0) ?? "the topic"} among its topics` : ""}.`;
490
+ };
491
+ }
492
+ }
411
493
  if (accept && (opt !== void 0 || text !== void 0)) {
412
494
  io.err("--accept-proposal takes the proposed answer: give it alone, or answer with --option or --text instead.");
413
495
  return 2;
414
496
  }
415
497
  if (!accept && opt === void 0 === (text === void 0)) {
416
- io.err('Answer with --option <n> or --text "your own words", one of the two.');
498
+ io.err('Answer with --option <n> or --text "your own words" (--target <repo, system or team id> for where a call goes): one of them.');
417
499
  return 2;
418
500
  }
419
501
  const option = opt === void 0 ? void 0 : Number(opt);
@@ -440,15 +522,21 @@ async function questionsFiles(root, argv, io, deps = {}) {
440
522
  ...option !== void 0 ? { option } : {},
441
523
  ...text !== void 0 ? { text } : {},
442
524
  ...scoped,
525
+ ...beforeWrite ? { beforeWrite } : {},
443
526
  by,
444
527
  at
445
528
  });
446
529
  const q = r.question;
530
+ if (added)
531
+ io.out(added);
447
532
  io.out(`Answered ${q.id}: ${answerWords(q)} (for ${q.answer.scope.level === "repo" ? `${await isChange(root, q.repo) ? "this change" : "this repo"}, ${q.repo}` : scopeWords(q.answer.scope)}). Wrote ${questionsRelOf(root)}/${q.id}.yaml; commit it for review.`);
448
533
  if (accept)
449
534
  io.out(`It was the assistant's proposal; you accepted it, so it is recorded as answered by ${q.answer.by}, with the proposal it came from.`);
450
535
  if (q.answer.match)
451
536
  io.out(ruleLine(q, await isChange(root, q.repo)));
537
+ const offer = termNoteOffer(q);
538
+ if (offer)
539
+ io.out(offer);
452
540
  if (r.skill)
453
541
  io.out(r.skill.written ? `Also wrote it under Answers in ${r.skill.path}; review it in the same pull request.` : `${r.skill.path} isn't there yet, so the answer is kept in the question file, with that path.`);
454
542
  if (r.hosts)
@@ -463,11 +551,16 @@ async function questionsFiles(root, argv, io, deps = {}) {
463
551
  if (!(e instanceof QuestionError))
464
552
  throw e;
465
553
  io.err(e.message);
554
+ if (/opens the list of every repo/.test(e.message)) {
555
+ const { pickerOf, pickerText } = await import("./chunk-JXXQHETS.js");
556
+ for (const l of pickerText(await pickerOf(root)))
557
+ io.err(` ${l}`);
558
+ }
466
559
  return e.code === "bad-answer" ? 2 : 1;
467
560
  }
468
561
  }
469
562
  io.err(`atticus questions ${command ?? ""} isn't a command: it is questions list, show, proposed, answer or sheet (atticus questions alone lists the knowledge gaps).`);
470
- io.err('Usage: atticus questions list [--state open|answered|retired] [--mine] [--json], atticus questions show <id> [--json], atticus questions proposed [--json], or atticus questions answer <id> --option <n> | --text "..." | --accept-proposal [--scope repo|repo-type] [--type <repo type>] [--match <host pattern or /path/**>], or atticus questions sheet [--out <file>] | --apply <file>');
563
+ io.err('Usage: atticus questions list [--state open|answered|retired] [--mine] [--json], atticus questions show <id> [--json], atticus questions proposed [--json], or atticus questions answer <id> --option <n> | --text "..." | --target <id> [--add-system vendor|internal] [--name "..."] | --accept-proposal [--scope repo|repo-type] [--type <repo type>] [--match <host pattern or /path/**>], or atticus questions sheet [--out <file>] | --apply <file>');
471
564
  return 2;
472
565
  }
473
566
  export {
@@ -476,5 +569,6 @@ export {
476
569
  questionLines,
477
570
  questionsFiles,
478
571
  ruleLine,
572
+ ruleOfferLine,
479
573
  scopeWords
480
574
  };
@@ -8,7 +8,7 @@ import {
8
8
  } from "./chunk-VOGCSYOI.js";
9
9
  import {
10
10
  openspecStores
11
- } from "./chunk-XQ3YIV5R.js";
11
+ } from "./chunk-U5T4A2QV.js";
12
12
 
13
13
  // packages/cli/dist/openspec-stores-commands.js
14
14
  var plural = (n, w) => `${n} ${w}${n === 1 ? "" : "s"}`;
@@ -0,0 +1,34 @@
1
+ import { createRequire as __atticusCreateRequire } from "node:module";
2
+ import { fileURLToPath as __atticusFileURLToPath } from "node:url";
3
+ var require = __atticusCreateRequire(import.meta.url);
4
+ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
+ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
+ import {
7
+ catalogDiff,
8
+ diffLines,
9
+ scanCommand
10
+ } from "./chunk-CW5SEPUT.js";
11
+ import "./chunk-GKPOCUQR.js";
12
+ import "./chunk-7TH6I6TL.js";
13
+ import "./chunk-GHSVJNVL.js";
14
+ import "./chunk-GMDOXWIS.js";
15
+ import "./chunk-U5T4A2QV.js";
16
+ import "./chunk-JQG4VO47.js";
17
+ import "./chunk-DW4BM73R.js";
18
+ import "./chunk-22GLUHGE.js";
19
+ import "./chunk-QR65C3DV.js";
20
+ import "./chunk-MLAACAES.js";
21
+ import "./chunk-HY2VVVFZ.js";
22
+ import "./chunk-PJRMMWU4.js";
23
+ import "./chunk-34NWVIBC.js";
24
+ import "./chunk-RA64IK43.js";
25
+ import "./chunk-MRLCNXXR.js";
26
+ import "./chunk-CQD26SMZ.js";
27
+ import "./chunk-U25OX22K.js";
28
+ import "./chunk-MMB2OHUY.js";
29
+ import "./chunk-TV45EUGM.js";
30
+ export {
31
+ catalogDiff,
32
+ diffLines,
33
+ scanCommand
34
+ };
@@ -5,40 +5,40 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  diffLines
8
- } from "./chunk-7TGYNOXD.js";
9
- import "./chunk-LRS573EX.js";
10
- import "./chunk-IDGSU7JF.js";
11
- import "./chunk-LK44ULGI.js";
12
- import "./chunk-47QE246J.js";
13
- import "./chunk-XQ3YIV5R.js";
14
- import "./chunk-MGVYVW7Q.js";
15
- import "./chunk-NGPU2ARF.js";
8
+ } from "./chunk-CW5SEPUT.js";
9
+ import "./chunk-GKPOCUQR.js";
10
+ import "./chunk-7TH6I6TL.js";
11
+ import "./chunk-GHSVJNVL.js";
12
+ import "./chunk-GMDOXWIS.js";
13
+ import "./chunk-U5T4A2QV.js";
14
+ import "./chunk-JQG4VO47.js";
15
+ import "./chunk-DW4BM73R.js";
16
16
  import {
17
17
  diffCatalogs,
18
18
  readCatalog,
19
19
  scanEstate,
20
20
  writeCatalog
21
- } from "./chunk-AY2IUF4K.js";
22
- import "./chunk-6JLPXDWN.js";
23
- import "./chunk-4GZXS6S2.js";
24
- import "./chunk-R4TBNKKC.js";
25
- import "./chunk-NIXVDQVO.js";
26
- import "./chunk-UR7RMZ3R.js";
21
+ } from "./chunk-22GLUHGE.js";
22
+ import "./chunk-QR65C3DV.js";
23
+ import "./chunk-MLAACAES.js";
24
+ import "./chunk-HY2VVVFZ.js";
25
+ import "./chunk-PJRMMWU4.js";
26
+ import "./chunk-34NWVIBC.js";
27
27
  import {
28
28
  branchSlug,
29
29
  createWorkspace,
30
30
  isInPlace,
31
31
  loadRepos
32
- } from "./chunk-PGKHJYOB.js";
33
- import "./chunk-MKRBG5EF.js";
34
- import "./chunk-5XDNUJ4P.js";
32
+ } from "./chunk-RA64IK43.js";
33
+ import "./chunk-MRLCNXXR.js";
34
+ import "./chunk-CQD26SMZ.js";
35
35
  import {
36
36
  catalogDirOf,
37
37
  require_dist
38
- } from "./chunk-577AJVRS.js";
38
+ } from "./chunk-U25OX22K.js";
39
39
  import {
40
40
  writeFileAtomic
41
- } from "./chunk-D3PO4DOZ.js";
41
+ } from "./chunk-MMB2OHUY.js";
42
42
  import {
43
43
  __toESM
44
44
  } from "./chunk-TV45EUGM.js";