@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
@@ -3,18 +3,13 @@ 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
+ notesAt
8
+ } from "./chunk-ZS47PQ3O.js";
6
9
  import {
7
10
  houseUntaughtLines,
8
11
  houseUntaughtOf
9
- } from "./chunk-I7IWQIEB.js";
10
- import {
11
- loadReadPlan,
12
- partOfWords,
13
- readPlanProgress,
14
- readPlanRelOf,
15
- saveReadPlan,
16
- writeReadPlan
17
- } from "./chunk-HE4ZQXZM.js";
12
+ } from "./chunk-3CFBU2O6.js";
18
13
  import {
19
14
  carryOf,
20
15
  checkoutOf,
@@ -22,23 +17,29 @@ import {
22
17
  estateComponentsOf,
23
18
  excludesOf,
24
19
  headOf,
20
+ loadReadPlan,
21
+ partOfWords,
25
22
  raiseReadQuestions,
26
23
  readCorrections,
24
+ readPlanProgress,
25
+ readPlanRelOf,
27
26
  readReviewed,
28
27
  reviewedProblemsOf,
28
+ saveReadPlan,
29
29
  slipNoteLines,
30
+ writeReadPlan,
30
31
  writeVerifyFiles
31
- } from "./chunk-B3O52AUQ.js";
32
- import "./chunk-XKS6THI5.js";
32
+ } from "./chunk-P76AW3PA.js";
33
33
  import {
34
34
  ABOUT_RULE,
35
35
  assistantTier,
36
36
  mapBatchInstructions,
37
37
  readProbes,
38
+ rulesNow,
38
39
  taughtFrameworksText,
39
40
  tierSource,
40
41
  tierWords
41
- } from "./chunk-LK44ULGI.js";
42
+ } from "./chunk-GHSVJNVL.js";
42
43
  import {
43
44
  FILE_KINDS,
44
45
  SHOWN_PROPOSALS,
@@ -47,6 +48,7 @@ import {
47
48
  frameworkTopics,
48
49
  frameworkTopicsOfType,
49
50
  kindsOf,
51
+ lineRangeOf,
50
52
  numberedSlice,
51
53
  onlyFiles,
52
54
  planBatches,
@@ -59,12 +61,10 @@ import {
59
61
  sliceText,
60
62
  staleMessage,
61
63
  verifyFacts
62
- } from "./chunk-4GZXS6S2.js";
63
- import "./chunk-UR7RMZ3R.js";
64
+ } from "./chunk-MLAACAES.js";
64
65
  import {
65
66
  loadRepos
66
- } from "./chunk-PGKHJYOB.js";
67
- import "./chunk-MKRBG5EF.js";
67
+ } from "./chunk-RA64IK43.js";
68
68
  import {
69
69
  DATA_RULE,
70
70
  HandoffRuntime,
@@ -74,7 +74,7 @@ import {
74
74
  estimateTokens,
75
75
  promptBudget,
76
76
  wrapData
77
- } from "./chunk-5XDNUJ4P.js";
77
+ } from "./chunk-CQD26SMZ.js";
78
78
  import {
79
79
  AgentDefinition,
80
80
  Fact,
@@ -88,16 +88,16 @@ import {
88
88
  listQuestions,
89
89
  loadOrgPack,
90
90
  normalizeFactPaths,
91
+ notesText,
91
92
  orgPackDirOf,
92
93
  parseFacts,
93
94
  runsDirOf,
94
95
  saysNotProduct,
95
96
  stackHelpersOff
96
- } from "./chunk-577AJVRS.js";
97
+ } from "./chunk-U25OX22K.js";
97
98
  import {
98
99
  writeFileAtomic
99
- } from "./chunk-D3PO4DOZ.js";
100
- import "./chunk-TV45EUGM.js";
100
+ } from "./chunk-MMB2OHUY.js";
101
101
 
102
102
  // packages/cli/dist/map-commands.js
103
103
  import { existsSync } from "node:fs";
@@ -129,6 +129,9 @@ var plural = (n, w) => `${n} ${w}${n === 1 ? "" : "s"}`;
129
129
  var batches = (n) => `${n} ${n === 1 ? "batch" : "batches"}`;
130
130
  var changeOf = (repo) => `map-${repo}`;
131
131
  var stateFile = (root, repo) => join(runsDirOf(root), changeOf(repo), "state.json");
132
+ async function mapStateOf(root, repo) {
133
+ return readState(root, repo).catch(() => void 0);
134
+ }
132
135
  async function readState(root, repo) {
133
136
  const text = await readFile(stateFile(root, repo), "utf8").catch(() => void 0);
134
137
  return text ? JSON.parse(text) : void 0;
@@ -189,6 +192,8 @@ function claimOf(f) {
189
192
  return `${f.name}${f.version ? ` ${f.version}` : ""}`;
190
193
  case "flow":
191
194
  return f.name;
195
+ case "term":
196
+ return `${f.term} ${f.value} (${f.role})`;
192
197
  }
193
198
  }
194
199
  function readAnswer(text, repo, commit, onFile = []) {
@@ -286,10 +291,26 @@ function rejectedText(r, source) {
286
291
  ] : []
287
292
  ].join("\n");
288
293
  }
289
- function questionsText(qs) {
294
+ async function rulesCovering(root, repo, op) {
295
+ const type = op.profiles.flatMap((p) => p.repos?.repos ?? []).find((r) => r.id === repo)?.type;
296
+ const all = (await listQuestions(root, { state: "answered" }).catch(() => ({ questions: [] }))).questions;
297
+ return all.filter((q) => q.repo !== repo && !!q.answer?.match && (q.answer.scope.level === "repo" ? q.answer.scope.id === repo : !!type && q.answer.scope.id === type)).map((q) => ({
298
+ id: q.id,
299
+ from: q.repo,
300
+ match: q.answer.match,
301
+ answer: q.answer.text ?? q.options[(q.answer.option ?? 1) - 1]?.label ?? "",
302
+ scope: q.answer.scope.level === "repo" ? repo : `every ${q.answer.scope.id} repo`
303
+ })).sort((a, b) => a.id.localeCompare(b.id));
304
+ }
305
+ var ruleLineOf = (r) => `Rule ${r.id} (answered for ${r.from}, covers ${r.scope}): the calls matching ${r.match} go to ${r.answer}.`;
306
+ function questionsText(qs, rules = []) {
290
307
  return [
291
308
  "Questions already on file for this repo. Don't ask them again; follow each answer a person gave.",
292
- ...qs.map((q) => `- ${q.question} (${q.evidence.join(", ")}): ${q.state === "answered" ? `answered: ${q.answer?.text ?? q.options[(q.answer?.option ?? 1) - 1]?.label ?? ""}` : "waiting for a person"}`)
309
+ ...qs.map((q) => `- ${q.question} (${q.evidence.join(", ")}): ${q.state === "answered" ? `answered: ${q.answer?.text ?? q.options[(q.answer?.option ?? 1) - 1]?.label ?? ""}` : "waiting for a person"}`),
310
+ ...rules.length ? [
311
+ "Answers by rule that cover this repo, from other repos' questions. A call one matches goes where it says: don't ask about it.",
312
+ ...rules.map((r) => `- ${ruleLineOf(r)}`)
313
+ ] : []
293
314
  ].join("\n");
294
315
  }
295
316
  function keptText(facts, budgetTokens) {
@@ -364,7 +385,7 @@ function taughtIn(source, op) {
364
385
  return texts.some((t) => declared.test(t));
365
386
  }));
366
387
  }
367
- async function packFor(root, s, batch, source, op, now) {
388
+ async function packFor(root, s, batch, source, op, now, notes) {
368
389
  const agent = repoReaderAgent(op);
369
390
  const budget = op.runtime.budgets.perAgent[agent.id] ?? agent.tokenBudget;
370
391
  const fix = batch >= s.batches.length;
@@ -373,6 +394,7 @@ async function packFor(root, s, batch, source, op, now) {
373
394
  const kept = await readFactsFile(root, s.repo);
374
395
  const facts = typeof kept === "string" ? [] : kept;
375
396
  const onFile = (await listQuestions(root, { repo: s.repo })).questions.filter((q) => q.state !== "retired");
397
+ const rules = await rulesCovering(root, s.repo, op);
376
398
  const slices = fix ? [] : s.batches[batch];
377
399
  const rejected = s.rejected.map((r) => rejectedText(r, source));
378
400
  const own = kindsOf(slices.map((x) => x.path));
@@ -396,9 +418,13 @@ async function packFor(root, s, batch, source, op, now) {
396
418
  // build files are read first, so from the second batch on this is what the code says.
397
419
  frameworks: await frameworksFor(root, s.repo, facts),
398
420
  // Nothing says what this repo is: ask for one line, cited, for a person to confirm.
399
- ...about ? {} : { askAbout: true },
421
+ ...about || s.sets ? {} : { askAbout: true },
422
+ // ADR 0167: a top-up carries only the rule sets the read lacked.
423
+ ...s.sets ? { sets: s.sets } : {},
400
424
  // A-taught: how to read the wrapper calls and annotations of the frameworks it is built on.
401
- ...taughtOption(taughtIn(source, op))
425
+ ...taughtOption(taughtIn(source, op)),
426
+ // ADR 0163: what the organisation's terms mean here and what must hold, as data.
427
+ ...notes ? { notes } : {}
402
428
  }),
403
429
  classification: "public",
404
430
  trusted: true
@@ -442,12 +468,12 @@ ${s.problems.map((p) => `- ${p}`).join("\n")}`,
442
468
  priority: 5
443
469
  }
444
470
  ] : [],
445
- ...onFile.length ? [
471
+ ...onFile.length || rules.length ? [
446
472
  {
447
473
  id: "4-questions",
448
474
  kind: "document",
449
475
  origin: "questions/",
450
- text: questionsText(onFile),
476
+ text: questionsText(onFile, rules),
451
477
  classification: "internal",
452
478
  priority: 4
453
479
  }
@@ -523,13 +549,41 @@ async function mapCommand(root, repo, o, io, deps = {}) {
523
549
  const source = dirSource(dir);
524
550
  const exclude = await excludesOf(root, repo);
525
551
  const factsFile = `${factsRelOf(root)}/${repo}.jsonl`;
552
+ const repoNotes = await notesAt(root, repo, dir, op);
553
+ const notesPrompt = notesText(repoNotes.notes, repoNotes.type);
526
554
  if (o.gaps) {
527
- const { mapGaps } = await import("./chunk-OJLRFGBP.js");
555
+ const { mapGaps } = await import("./chunk-4Q2PGM5T.js");
528
556
  const tier = await tierHere(root, op);
557
+ let part;
558
+ if (o.part !== void 0) {
559
+ const p = (await readPlanProgress(root, repo))?.parts.find((x) => x.part === o.part);
560
+ if (!p) {
561
+ io.err(`${repo}'s read plan has no part ${o.part} (${readPlanRelOf(root, repo)}): atticus map ${repo} --estimate plans it.`);
562
+ return 2;
563
+ }
564
+ part = {
565
+ n: p.part,
566
+ left: [...p.paths.filter((g) => !lineRangeOf(g)), ...p.left.filter((g) => lineRangeOf(g))]
567
+ };
568
+ }
529
569
  return mapGaps(root, repo, {
530
570
  commit,
531
571
  source,
532
572
  session: sessionTokensFor(limitOf(o, op, tier).limit),
573
+ ...o.json ? { json: true } : {},
574
+ ...part ? { part } : {}
575
+ }, io);
576
+ }
577
+ if (o.rules && !deps.runtime) {
578
+ const { mapRules } = await import("./chunk-2Q2YBAR5.js");
579
+ const tier = await tierHere(root, op);
580
+ return mapRules(root, repo, {
581
+ commit,
582
+ source,
583
+ exclude,
584
+ conventions,
585
+ session: sessionTokensFor(limitOf(o, op, tier).limit),
586
+ notes: notesPrompt,
533
587
  ...o.json ? { json: true } : {}
534
588
  }, io);
535
589
  }
@@ -605,44 +659,86 @@ async function mapCommand(root, repo, o, io, deps = {}) {
605
659
  if (room < MIN_ROOM)
606
660
  return tooSmall(0);
607
661
  const frameworks = await frameworksFor(root, repo, existing);
608
- const re = await rereadOf(dir, existing, commit, source, exclude, deps.git, conventions);
609
- const reread = re.plan && !re.plan.unknown.length ? re.plan : void 0;
610
- const since = reread?.from.map((x) => x.commit.slice(0, 12)).join(", ");
611
- if (reread && !reread.files.length && !reread.reread.length) {
612
- io.out(`Nothing ${repo}'s facts cite changed since ${since}, and no source file did: atticus verify ${repo} carries its ${plural(reread.carried, "fact")} to ${commit.slice(0, 12)}.`);
613
- return 0;
614
- }
615
- const plan = planBatches(reread ? onlyFiles(source, reread.files.map((f) => f.path)) : source, { room, exclude, overhead: overheadOf(repo, commit, frameworks), conventions });
616
- if (plan.leastRoom < MIN_ROOM)
617
- return tooSmall(room - plan.leastRoom);
618
- if (!plan.batches.length && !reread) {
619
- io.out(`${repo} has no source files to read${plan.excluded.length ? ` (${plural(plan.excluded.length, "file")} excluded)` : ""}.`);
620
- return 0;
662
+ if (o.rules) {
663
+ const { topUpOf, recordRulesNow, ruleSetsOfFiles } = await import("./chunk-2Q2YBAR5.js");
664
+ const t = await topUpOf(root, repo, {
665
+ commit,
666
+ facts: existing,
667
+ source,
668
+ exclude,
669
+ conventions
670
+ });
671
+ if ("error" in t) {
672
+ io.err(t.error);
673
+ return 2;
674
+ }
675
+ if (!t.lacking.length) {
676
+ io.out(`${repo} was read under the reading rules there are now: nothing to top up.`);
677
+ return 0;
678
+ }
679
+ if (!t.files.length) {
680
+ await recordRulesNow(root, repo, commit);
681
+ io.out(`No file of ${repo} is one the reading rules added since it was read apply to (${t.lacking.join(", ")}): its read is recorded as under the rules there are now.`);
682
+ return 0;
683
+ }
684
+ const sets = ruleSetsOfFiles(t.files);
685
+ const plan = planBatches(onlyFiles(source, t.files.map((f) => f.path)), { room, exclude, overhead: overheadOf(repo, commit, frameworks), conventions });
686
+ if (plan.leastRoom < MIN_ROOM)
687
+ return tooSmall(room - plan.leastRoom);
688
+ s = {
689
+ schemaVersion: 1,
690
+ repo,
691
+ commit,
692
+ ...limit ? { maxTokens: limit } : {},
693
+ room,
694
+ batches: plan.batches,
695
+ next: 0,
696
+ rejected: [],
697
+ problems: [],
698
+ sets
699
+ };
700
+ await saveState(root, s);
701
+ io.out(`Topping up ${repo} at ${commit.slice(0, 12)} for the reading rules added since it was read (${sets.join(", ")}): ${plural(plan.files, "source file")} in ${batches(plan.batches.length)}; facts go to ${factsFile}.`);
702
+ } else {
703
+ const re = await rereadOf(dir, existing, commit, source, exclude, deps.git, conventions);
704
+ const reread = re.plan && !re.plan.unknown.length ? re.plan : void 0;
705
+ const since = reread?.from.map((x) => x.commit.slice(0, 12)).join(", ");
706
+ if (reread && !reread.files.length && !reread.reread.length) {
707
+ io.out(`Nothing ${repo}'s facts cite changed since ${since}, and no source file did: atticus verify ${repo} carries its ${plural(reread.carried, "fact")} to ${commit.slice(0, 12)}.`);
708
+ return 0;
709
+ }
710
+ const plan = planBatches(reread ? onlyFiles(source, reread.files.map((f) => f.path)) : source, { room, exclude, overhead: overheadOf(repo, commit, frameworks), conventions });
711
+ if (plan.leastRoom < MIN_ROOM)
712
+ return tooSmall(room - plan.leastRoom);
713
+ if (!plan.batches.length && !reread) {
714
+ io.out(`${repo} has no source files to read${plan.excluded.length ? ` (${plural(plan.excluded.length, "file")} excluded)` : ""}.`);
715
+ return 0;
716
+ }
717
+ const byId = new Map(existing.map((f) => [f.id, f]));
718
+ s = {
719
+ schemaVersion: 1,
720
+ repo,
721
+ commit,
722
+ ...limit ? { maxTokens: limit } : {},
723
+ room,
724
+ batches: plan.batches,
725
+ next: 0,
726
+ rejected: (reread?.reread ?? []).map((r) => {
727
+ const fact = byId.get(r.id);
728
+ return { id: r.id, code: "cite-changed", message: staleMessage(fact, r, commit), fact };
729
+ }),
730
+ problems: [],
731
+ ...reread ? {
732
+ reread: {
733
+ from: reread.from.map((x) => x.commit),
734
+ carried: reread.carried,
735
+ facts: reread.reread.length
736
+ }
737
+ } : {}
738
+ };
739
+ await saveState(root, s);
740
+ io.out(reread ? `Re-reading ${repo} at ${commit.slice(0, 12)}: ${plural(plan.files, "source file")} changed since ${since}, in ${batches(plan.batches.length)}${plan.batches.length ? ` (about ${plan.tokens} tokens${limit ? `, each prompt within ${limit} tokens` : ""})` : ""}; ${plural(reread.reread.length, "fact")} to rewrite, ${reread.carried} carried as they are; facts go to ${factsFile}.` : `Reading ${repo} at ${commit.slice(0, 12)} in ${batches(plan.batches.length)} (${plural(plan.files, "source file")}, about ${plan.tokens} tokens${limit ? `, each prompt within ${limit} tokens` : ""}); facts go to ${factsFile}.`);
621
741
  }
622
- const byId = new Map(existing.map((f) => [f.id, f]));
623
- s = {
624
- schemaVersion: 1,
625
- repo,
626
- commit,
627
- ...limit ? { maxTokens: limit } : {},
628
- room,
629
- batches: plan.batches,
630
- next: 0,
631
- rejected: (reread?.reread ?? []).map((r) => {
632
- const fact = byId.get(r.id);
633
- return { id: r.id, code: "cite-changed", message: staleMessage(fact, r, commit), fact };
634
- }),
635
- problems: [],
636
- ...reread ? {
637
- reread: {
638
- from: reread.from.map((x) => x.commit),
639
- carried: reread.carried,
640
- facts: reread.reread.length
641
- }
642
- } : {}
643
- };
644
- await saveState(root, s);
645
- io.out(reread ? `Re-reading ${repo} at ${commit.slice(0, 12)}: ${plural(plan.files, "source file")} changed since ${since}, in ${batches(plan.batches.length)}${plan.batches.length ? ` (about ${plan.tokens} tokens${limit ? `, each prompt within ${limit} tokens` : ""})` : ""}; ${plural(reread.reread.length, "fact")} to rewrite, ${reread.carried} carried as they are; facts go to ${factsFile}.` : `Reading ${repo} at ${commit.slice(0, 12)} in ${batches(plan.batches.length)} (${plural(plan.files, "source file")}, about ${plan.tokens} tokens${limit ? `, each prompt within ${limit} tokens` : ""}); facts go to ${factsFile}.`);
646
742
  }
647
743
  if (!s)
648
744
  return 2;
@@ -652,7 +748,7 @@ async function mapCommand(root, repo, o, io, deps = {}) {
652
748
  break;
653
749
  if (fixRound)
654
750
  s.fixRound = true;
655
- const { agent, pack } = await packFor(root, s, s.next, source, op, now());
751
+ const { agent, pack } = await packFor(root, s, s.next, source, op, now(), notesPrompt);
656
752
  const prepared = await runtime.prepare({
657
753
  change: changeOf(repo),
658
754
  agent,
@@ -732,7 +828,9 @@ async function takeAnswer(root, s, run, batch, source, exclude, now, io, at) {
732
828
  reviewed: reviewed.entries,
733
829
  // J1 (ADR 0143): an exposure names a component the manifest lists.
734
830
  ...estate ? { estate } : {},
735
- conventions: await conventionsAt(root)
831
+ conventions: await conventionsAt(root),
832
+ // ADR 0163: a term's note is one of those the batch was handed.
833
+ notes: (await notesAt(root, s.repo, at.dir)).notes
736
834
  });
737
835
  const q = await raiseReadQuestions(root, s.repo, answer.questions, source, {
738
836
  command: `atticus map ${s.repo}`,
@@ -741,7 +839,7 @@ async function takeAnswer(root, s, run, batch, source, exclude, now, io, at) {
741
839
  });
742
840
  const summary = await writeVerifyFiles(root, s.repo, report, s.commit, q.problems, [], reviewedProblemsOf(reviewed.bad, report), answer.slips);
743
841
  if (answer.about) {
744
- const { keepDraftedDescription } = await import("./chunk-T4RTWMJD.js");
842
+ const { keepDraftedDescription } = await import("./chunk-ZYASEL7K.js");
745
843
  const d = await keepDraftedDescription(root, s.repo, answer.about, now());
746
844
  if (d.kept)
747
845
  io.out(`Your assistant says ${s.repo} is: "${answer.about.text}" \u2014 written to the manifest as a draft, unconfirmed. Confirm it (atticus repo describe ${s.repo} --accept), change it (--description "...") or drop it (--reject).`);
@@ -774,6 +872,10 @@ async function finish(root, s, io, o) {
774
872
  s.done = true;
775
873
  await saveState(root, s);
776
874
  const last = s.last;
875
+ if (last && !last.rejected && !s.reread) {
876
+ const { recordRulesNow } = await import("./chunk-2Q2YBAR5.js");
877
+ await recordRulesNow(root, s.repo, s.commit);
878
+ }
777
879
  const rel = factsRelOf(root);
778
880
  if (o.json) {
779
881
  io.out(JSON.stringify({ state: "done", repo: s.repo, batches: s.batches.length, ...last }, null, 2));
@@ -860,6 +962,8 @@ async function estimate(root, repo, c, io) {
860
962
  ...reread ? { reread: true } : {}
861
963
  };
862
964
  const sameEstimate = plan0?.estimate !== void 0 && plan0.estimate.files === estimate2.files && plan0.estimate.tokens === estimate2.tokens && plan0.estimate.sessions === estimate2.sessions && plan0.estimate.reread === estimate2.reread;
965
+ const firstRead = typeof existing !== "string" && existing.length === 0 && !reread;
966
+ const readRules = firstRead ? rulesNow() : plan0?.rules;
863
967
  if (!same)
864
968
  await writeReadPlan(root, repo, {
865
969
  commit: c.commit,
@@ -867,12 +971,15 @@ async function estimate(root, repo, c, io) {
867
971
  parts,
868
972
  estimate: estimate2,
869
973
  // What the reader reported of an earlier plan stays, under the commit it was of.
870
- ...plan0?.reported ? { reported: plan0.reported } : {}
974
+ ...plan0?.reported ? { reported: plan0.reported } : {},
975
+ ...readRules ? { rules: readRules } : {}
871
976
  });
872
- else if (!sameEstimate)
873
- await saveReadPlan(root, { ...plan0, estimate: estimate2 });
977
+ else if (!sameEstimate || firstRead && plan0.rules?.hash !== readRules?.hash)
978
+ await saveReadPlan(root, { ...plan0, estimate: estimate2, ...readRules ? { rules: readRules } : {} });
874
979
  const progress = parts.length ? await readPlanProgress(root, repo, { commit: c.commit }) : void 0;
875
980
  const questions = (await listQuestions(root, { repo })).questions.filter((q) => q.state !== "retired");
981
+ const notes = await notesAt(root, repo, c.dir, c.op);
982
+ const rules = await rulesCovering(root, repo, c.op);
876
983
  const house = await houseUntaughtOf(root, repo, {
877
984
  dir: c.dir,
878
985
  source: c.source,
@@ -921,12 +1028,15 @@ async function estimate(root, repo, c, io) {
921
1028
  taughtFrameworks: taughtIn(c.source, c.op).map((m) => m.name),
922
1029
  // R3: the house packages to teach before the first read.
923
1030
  houseUntaught: house,
1031
+ // ADR 0163: the org notes the reader is handed, numbered, and the repo type they are of.
1032
+ notes: { ...notes.type ? { repoType: notes.type } : {}, notes: notes.notes },
924
1033
  questions: questions.map((q) => ({
925
1034
  id: q.id,
926
1035
  question: q.question,
927
1036
  state: q.state,
928
1037
  ...q.answer ? { answer: q.answer } : {}
929
1038
  })),
1039
+ rules,
930
1040
  // A re-read: what the files and batches above are, and the facts to revisit.
931
1041
  reread: reread ? {
932
1042
  ...reread,
@@ -947,6 +1057,10 @@ async function estimate(root, repo, c, io) {
947
1057
  if (taught)
948
1058
  for (const l of taught.split("\n"))
949
1059
  io.out(l);
1060
+ const notesLines = notesText(notes.notes, notes.type);
1061
+ if (notesLines)
1062
+ for (const l of notesLines.split("\n"))
1063
+ io.out(l);
950
1064
  for (const l of houseUntaughtLines(repo, house))
951
1065
  io.out(l);
952
1066
  if (reread)
@@ -1001,14 +1115,20 @@ repo: ${repo}`);
1001
1115
  io.out(plan ? `In batches at ${limit} tokens a prompt${given === void 0 ? " (GPT-4o mini through Copilot; --max-tokens n for your model's limit)" : from === "probe" ? ` (the limit stated when your assistant was measured on ${tier.measured?.at})` : ""}: ${plural(plan.batches.length, "prompt")}, one more if facts are rejected in the last.` : `A model of ${limit} tokens leaves too little room for the files beside the instructions: use a model with a bigger limit.`);
1002
1116
  for (const q of questions)
1003
1117
  io.out(`Question ${q.id}: ${q.question} (${q.state === "answered" ? `answered: ${q.answer?.text ?? q.options[(q.answer?.option ?? 1) - 1]?.label ?? ""}` : "open"})`);
1004
- if (questions.length)
1005
- io.out("Follow each answer; don't ask these again.");
1118
+ for (const r of rules)
1119
+ io.out(ruleLineOf(r));
1120
+ if (questions.length || rules.length)
1121
+ io.out("Follow each answer and each rule; don't ask what they settle again.");
1006
1122
  return 0;
1007
1123
  }
1124
+
1008
1125
  export {
1009
1126
  REPO_READER,
1010
- mapCommand,
1011
- readAnswer,
1012
1127
  repoReaderAgent,
1013
- taughtIn
1128
+ mapStateOf,
1129
+ readAnswer,
1130
+ rulesCovering,
1131
+ ruleLineOf,
1132
+ taughtIn,
1133
+ mapCommand
1014
1134
  };
@@ -11,7 +11,7 @@ import {
11
11
  generateAssistantFiles,
12
12
  parseHeader,
13
13
  writeAssistantFiles
14
- } from "./chunk-LK44ULGI.js";
14
+ } from "./chunk-GHSVJNVL.js";
15
15
  import {
16
16
  CONSTITUTION_FILE_LABEL,
17
17
  buildContext,
@@ -33,7 +33,7 @@ import {
33
33
  sectionMatching,
34
34
  toFinding,
35
35
  writeFinding
36
- } from "./chunk-47QE246J.js";
36
+ } from "./chunk-GMDOXWIS.js";
37
37
  import {
38
38
  changeFolder,
39
39
  changeFootprint,
@@ -41,10 +41,10 @@ import {
41
41
  changeTypeOf,
42
42
  loadChangeContext,
43
43
  referenceMetarepoIn
44
- } from "./chunk-XQ3YIV5R.js";
44
+ } from "./chunk-U5T4A2QV.js";
45
45
  import {
46
46
  readSpecKitFeatures
47
- } from "./chunk-UR7RMZ3R.js";
47
+ } from "./chunk-34NWVIBC.js";
48
48
  import {
49
49
  baseClonePath,
50
50
  changeWorktreesDir,
@@ -52,14 +52,14 @@ import {
52
52
  loadRepos,
53
53
  readChangeRepos,
54
54
  toRepoRelative
55
- } from "./chunk-PGKHJYOB.js";
55
+ } from "./chunk-RA64IK43.js";
56
56
  import {
57
57
  fsRepo
58
- } from "./chunk-MKRBG5EF.js";
58
+ } from "./chunk-MRLCNXXR.js";
59
59
  import {
60
60
  buildContextPack,
61
61
  toRunSummary
62
- } from "./chunk-5XDNUJ4P.js";
62
+ } from "./chunk-CQD26SMZ.js";
63
63
  import {
64
64
  ChecklistPack,
65
65
  Finding,
@@ -71,10 +71,10 @@ import {
71
71
  require_dist,
72
72
  taskBranch,
73
73
  toCanonicalYaml
74
- } from "./chunk-577AJVRS.js";
74
+ } from "./chunk-U25OX22K.js";
75
75
  import {
76
76
  writeFileAtomic
77
- } from "./chunk-D3PO4DOZ.js";
77
+ } from "./chunk-MMB2OHUY.js";
78
78
  import {
79
79
  __toESM
80
80
  } from "./chunk-TV45EUGM.js";
@@ -5,8 +5,8 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  assistantActor
8
- } from "./chunk-577AJVRS.js";
9
- import "./chunk-D3PO4DOZ.js";
8
+ } from "./chunk-U25OX22K.js";
9
+ import "./chunk-MMB2OHUY.js";
10
10
  import "./chunk-TV45EUGM.js";
11
11
 
12
12
  // packages/cli/dist/assistant-session.js
@@ -5,11 +5,11 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  baseClonePath
8
- } from "./chunk-PGKHJYOB.js";
8
+ } from "./chunk-RA64IK43.js";
9
9
  import {
10
10
  loadOrgPack,
11
11
  orgPackDirOf
12
- } from "./chunk-577AJVRS.js";
12
+ } from "./chunk-U25OX22K.js";
13
13
 
14
14
  // packages/cli/dist/repo-for.js
15
15
  import { stat } from "node:fs/promises";
@@ -6,18 +6,18 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  aliasCommand,
8
8
  reconcileCommand
9
- } from "./chunk-F7UQR4ZX.js";
10
- import "./chunk-AY2IUF4K.js";
11
- import "./chunk-6JLPXDWN.js";
12
- import "./chunk-4GZXS6S2.js";
13
- import "./chunk-R4TBNKKC.js";
14
- import "./chunk-NIXVDQVO.js";
15
- import "./chunk-UR7RMZ3R.js";
16
- import "./chunk-PGKHJYOB.js";
17
- import "./chunk-MKRBG5EF.js";
18
- import "./chunk-5XDNUJ4P.js";
19
- import "./chunk-577AJVRS.js";
20
- import "./chunk-D3PO4DOZ.js";
9
+ } from "./chunk-FQ6IBYFC.js";
10
+ import "./chunk-22GLUHGE.js";
11
+ import "./chunk-QR65C3DV.js";
12
+ import "./chunk-MLAACAES.js";
13
+ import "./chunk-HY2VVVFZ.js";
14
+ import "./chunk-PJRMMWU4.js";
15
+ import "./chunk-34NWVIBC.js";
16
+ import "./chunk-RA64IK43.js";
17
+ import "./chunk-MRLCNXXR.js";
18
+ import "./chunk-CQD26SMZ.js";
19
+ import "./chunk-U25OX22K.js";
20
+ import "./chunk-MMB2OHUY.js";
21
21
  import "./chunk-TV45EUGM.js";
22
22
  export {
23
23
  aliasCommand,
@@ -12,27 +12,27 @@ import {
12
12
  snowSubmit,
13
13
  storyBarCommand,
14
14
  templatesDraft
15
- } from "./chunk-YXJ4XOHF.js";
16
- import "./chunk-ROTY5J2L.js";
17
- import "./chunk-KC5DROFC.js";
18
- import "./chunk-RK6MKKKP.js";
15
+ } from "./chunk-4HIQ2FTI.js";
16
+ import "./chunk-EREL3TQG.js";
17
+ import "./chunk-DWYPYVPJ.js";
18
+ import "./chunk-ISXNWUG7.js";
19
19
  import "./chunk-VOGCSYOI.js";
20
- import "./chunk-47QE246J.js";
21
- import "./chunk-XQ3YIV5R.js";
22
- import "./chunk-MGVYVW7Q.js";
23
- import "./chunk-NGPU2ARF.js";
24
- import "./chunk-AY2IUF4K.js";
25
- import "./chunk-6JLPXDWN.js";
26
- import "./chunk-4GZXS6S2.js";
27
- import "./chunk-R4TBNKKC.js";
28
- import "./chunk-NIXVDQVO.js";
29
- import "./chunk-UR7RMZ3R.js";
30
- import "./chunk-N4QZJJVB.js";
31
- import "./chunk-PGKHJYOB.js";
32
- import "./chunk-MKRBG5EF.js";
33
- import "./chunk-5XDNUJ4P.js";
34
- import "./chunk-577AJVRS.js";
35
- import "./chunk-D3PO4DOZ.js";
20
+ import "./chunk-GMDOXWIS.js";
21
+ import "./chunk-U5T4A2QV.js";
22
+ import "./chunk-JQG4VO47.js";
23
+ import "./chunk-DW4BM73R.js";
24
+ import "./chunk-22GLUHGE.js";
25
+ import "./chunk-QR65C3DV.js";
26
+ import "./chunk-MLAACAES.js";
27
+ import "./chunk-HY2VVVFZ.js";
28
+ import "./chunk-PJRMMWU4.js";
29
+ import "./chunk-34NWVIBC.js";
30
+ import "./chunk-77UOXZVM.js";
31
+ import "./chunk-RA64IK43.js";
32
+ import "./chunk-MRLCNXXR.js";
33
+ import "./chunk-CQD26SMZ.js";
34
+ import "./chunk-U25OX22K.js";
35
+ import "./chunk-MMB2OHUY.js";
36
36
  import "./chunk-TV45EUGM.js";
37
37
  export {
38
38
  adoSync,
@@ -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
  parseFactLine
8
- } from "./chunk-577AJVRS.js";
8
+ } from "./chunk-U25OX22K.js";
9
9
 
10
10
  // packages/cli/dist/memory-room.js
11
11
  import { createReadStream } from "node:fs";