@maycombhq/atticus 2.0.0-beta.11 → 2.0.0-beta.12.1

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 (223) hide show
  1. package/dist/bin.js +3 -3
  2. package/dist/{chunk-4UZJOQYK.js → chunk-2A24BNRZ.js} +7 -7
  3. package/dist/{chunk-C2YGYTU6.js → chunk-2DJUQ6CO.js} +22 -22
  4. package/dist/{chunk-BQNEHB5U.js → chunk-2OWSG6BK.js} +11 -11
  5. package/dist/{chunk-23VFQHFQ.js → chunk-2QT6WVAK.js} +31 -21
  6. package/dist/chunk-2RMWW6G3.js +41 -0
  7. package/dist/{chunk-SILY6ZEZ.js → chunk-3256EDLL.js} +3 -3
  8. package/dist/{chunk-YLAM4HZH.js → chunk-34BCKMBS.js} +3 -3
  9. package/dist/{chunk-GVFUEGGM.js → chunk-34NWVIBC.js} +2 -2
  10. package/dist/{chunk-UABFFMWH.js → chunk-36CTZGPH.js} +7 -7
  11. package/dist/{chunk-77RSRG3A.js → chunk-3JLTN3Y7.js} +7 -7
  12. package/dist/{chunk-QWHTTA2X.js → chunk-3M7QBKKG.js} +8 -6
  13. package/dist/chunk-3PLE3ZQ5.js +34 -0
  14. package/dist/{chunk-LUPW4WLK.js → chunk-3W5R5J65.js} +8 -8
  15. package/dist/{chunk-EBWIOODZ.js → chunk-42L2WHP6.js} +4 -4
  16. package/dist/{chunk-KU4T2CXJ.js → chunk-4GNKICU5.js} +18 -18
  17. package/dist/{chunk-2K2ZEJVR.js → chunk-4HTILEXW.js} +2 -2
  18. package/dist/{chunk-HR4DVO6X.js → chunk-4JLB5ISS.js} +3 -3
  19. package/dist/{chunk-XOVLGBKI.js → chunk-5C24MOXU.js} +17 -17
  20. package/dist/{chunk-EHUYLNLC.js → chunk-5G5GD5HF.js} +14 -14
  21. package/dist/{chunk-HGQZTUAC.js → chunk-5I5JDJ3R.js} +4 -4
  22. package/dist/{chunk-KIWEBM6G.js → chunk-5IMZYLDW.js} +11 -11
  23. package/dist/{chunk-XJAJQGXJ.js → chunk-5ION6STH.js} +2 -2
  24. package/dist/{chunk-5ICB2BXH.js → chunk-5R2EWR47.js} +7 -7
  25. package/dist/{chunk-HOUUBE74.js → chunk-65XZSK6S.js} +4 -4
  26. package/dist/{chunk-LVBPY2M6.js → chunk-6AYUBYK6.js} +348 -15
  27. package/dist/{chunk-IY4PHPHT.js → chunk-6HSRGY4B.js} +7 -5
  28. package/dist/{chunk-Y5AYBGLB.js → chunk-6IKYFARG.js} +22 -13
  29. package/dist/{chunk-7KXYMC2P.js → chunk-6R2OM6Y3.js} +15 -15
  30. package/dist/{chunk-GWSWS264.js → chunk-6ROZRBWH.js} +4 -4
  31. package/dist/{chunk-TZXHUDI6.js → chunk-72DY5NCN.js} +2 -2
  32. package/dist/{chunk-XNRPCI23.js → chunk-77UOXZVM.js} +5 -5
  33. package/dist/{chunk-LS3WR2RF.js → chunk-7C7PTJM2.js} +256 -73
  34. package/dist/{chunk-VYNZED7B.js → chunk-7FPTI62T.js} +20 -20
  35. package/dist/{chunk-Z2EYRUOH.js → chunk-7H5HYERS.js} +19 -19
  36. package/dist/{chunk-4YWRU7JK.js → chunk-7MASAGFE.js} +15 -15
  37. package/dist/{chunk-7SZPENUP.js → chunk-7UKETVPW.js} +1 -1
  38. package/dist/{chunk-55TBYJF2.js → chunk-7UXSS23C.js} +18 -16
  39. package/dist/{chunk-XPWSNKF3.js → chunk-7VAMO66T.js} +398 -111
  40. package/dist/{chunk-LDIARP6F.js → chunk-7VNEDDCC.js} +2 -2
  41. package/dist/{chunk-TGEOLIAK.js → chunk-7XWCTVJS.js} +3 -3
  42. package/dist/{chunk-RJDP642F.js → chunk-ARLH2ZMD.js} +1 -1
  43. package/dist/{chunk-IRW64JFF.js → chunk-AUSC47BK.js} +4 -4
  44. package/dist/{chunk-JUZ75OG4.js → chunk-AY7Y3WPD.js} +15 -15
  45. package/dist/{chunk-4URR24DD.js → chunk-BFZSO2TP.js} +6 -6
  46. package/dist/{chunk-MYKQVS5W.js → chunk-BHHIHENP.js} +10 -6
  47. package/dist/{chunk-6V3DTQWK.js → chunk-BUD6JILH.js} +21 -21
  48. package/dist/{chunk-MKC7P5LD.js → chunk-CCXEXCRO.js} +14 -14
  49. package/dist/{chunk-52WCHTVZ.js → chunk-CGF4LKXR.js} +3 -3
  50. package/dist/{chunk-5ACUW753.js → chunk-CH6LUQLD.js} +1 -1
  51. package/dist/{chunk-7VFVQX5K.js → chunk-CIIRPLI6.js} +4 -4
  52. package/dist/{chunk-JEUXCIRD.js → chunk-CJ5FQHST.js} +5 -5
  53. package/dist/{chunk-U6YKL7SI.js → chunk-CKI4VG2I.js} +22 -22
  54. package/dist/{chunk-BKFGGJKA.js → chunk-CQD26SMZ.js} +3 -1
  55. package/dist/chunk-CU35HXQ7.js +48 -0
  56. package/dist/{chunk-KLKENMWQ.js → chunk-CUD4I2U6.js} +58 -43
  57. package/dist/{chunk-5TY4DTHQ.js → chunk-CUX4GRTB.js} +3 -3
  58. package/dist/{chunk-5NZSJ5ZG.js → chunk-CXY4YDXS.js} +2 -2
  59. package/dist/{chunk-XR5DD5DQ.js → chunk-CYDJK34J.js} +12 -7
  60. package/dist/{chunk-WKXOEIOY.js → chunk-DBVU45FY.js} +14 -14
  61. package/dist/{chunk-IILZ7J3L.js → chunk-DBZNQAMN.js} +171 -62
  62. package/dist/{chunk-D7MWYJZF.js → chunk-DDOLWHIM.js} +17 -17
  63. package/dist/{chunk-EW7MRMD5.js → chunk-DIAYQLEY.js} +16 -7
  64. package/dist/{chunk-OFWYZH6B.js → chunk-DKGWE5ZL.js} +21 -21
  65. package/dist/{chunk-27EDZN52.js → chunk-DLX2R3MI.js} +31 -31
  66. package/dist/{chunk-TCADP67G.js → chunk-DONCF2XC.js} +3 -3
  67. package/dist/{chunk-ORZSD2KD.js → chunk-DQKNOHUZ.js} +1 -1
  68. package/dist/{chunk-EAQFRD2B.js → chunk-DREIS5Z5.js} +6 -6
  69. package/dist/{chunk-CAN3EBE5.js → chunk-DW4BM73R.js} +1 -1
  70. package/dist/{chunk-C5JFMAXX.js → chunk-DX5H5YKM.js} +11 -11
  71. package/dist/{chunk-LZWVK4YY.js → chunk-EE3UNC44.js} +3 -3
  72. package/dist/{chunk-Z46OXTBE.js → chunk-EOCZDNWU.js} +5 -5
  73. package/dist/chunk-EOWO4YPF.js +43 -0
  74. package/dist/{chunk-NBGBMRIS.js → chunk-EREL3TQG.js} +1 -1
  75. package/dist/{chunk-NH5QH3WS.js → chunk-ESGIBN3S.js} +1 -1
  76. package/dist/chunk-EZ3FDHW3.js +41 -0
  77. package/dist/chunk-F5L23NGR.js +45 -0
  78. package/dist/{chunk-MQNBEO3N.js → chunk-FF5Q7ONT.js} +118 -104
  79. package/dist/{chunk-TC3KTG33.js → chunk-FLROTO6F.js} +3 -3
  80. package/dist/{chunk-YWOMGMZB.js → chunk-FNVY656P.js} +22 -22
  81. package/dist/{chunk-MCWWMMLN.js → chunk-FP6GJJY7.js} +22 -22
  82. package/dist/{chunk-SIUDWWKS.js → chunk-FSR7OUVJ.js} +23 -23
  83. package/dist/{chunk-GPLFYLGH.js → chunk-FT3RXIN4.js} +10 -10
  84. package/dist/{chunk-SH7AZZDA.js → chunk-FYWA2CPF.js} +17 -17
  85. package/dist/{chunk-5BJFMAQU.js → chunk-G2K2D6XS.js} +12 -12
  86. package/dist/{chunk-3LU6YCSQ.js → chunk-G5SKNMPC.js} +5 -5
  87. package/dist/{chunk-RB2VSED2.js → chunk-GIPQHVJF.js} +11 -11
  88. package/dist/{chunk-NELU7LSL.js → chunk-GJ4B2FYS.js} +10 -10
  89. package/dist/{chunk-KQRYW7OS.js → chunk-GRZGEMO5.js} +109 -108
  90. package/dist/{chunk-OR5VRULZ.js → chunk-GU7PEYRC.js} +10 -10
  91. package/dist/{chunk-MKIULIUQ.js → chunk-GUNBOZ75.js} +3 -3
  92. package/dist/{chunk-Q32Y5T2U.js → chunk-GX3Q5PRC.js} +11 -11
  93. package/dist/{chunk-ANCI3LFS.js → chunk-HIQWJ6JZ.js} +4 -4
  94. package/dist/{chunk-JBSD57N7.js → chunk-HK2CF6KQ.js} +23 -23
  95. package/dist/{chunk-ZKUDS7JG.js → chunk-HMQXIFOL.js} +4 -4
  96. package/dist/{chunk-WIMOJMAK.js → chunk-HY2VVVFZ.js} +168 -14
  97. package/dist/{chunk-BX52REMA.js → chunk-IDLO7UCZ.js} +5 -5
  98. package/dist/{chunk-CE4S5ZY3.js → chunk-IJ7TPOXQ.js} +11 -11
  99. package/dist/{chunk-6N2GUZMZ.js → chunk-ISXNWUG7.js} +1 -1
  100. package/dist/{chunk-DYWTQXP4.js → chunk-IZF2VJU5.js} +22 -22
  101. package/dist/{chunk-6RGIM2ZH.js → chunk-J22RSFKY.js} +79 -9
  102. package/dist/{chunk-WFYHOXTB.js → chunk-J3DTLYER.js} +15 -15
  103. package/dist/{chunk-LEHZTKB3.js → chunk-JC3BMRB5.js} +11 -11
  104. package/dist/{chunk-7RGCQ4VZ.js → chunk-JLIEAQP4.js} +4 -4
  105. package/dist/chunk-JOG6LBOP.js +38 -0
  106. package/dist/{chunk-L7I5PKGD.js → chunk-JQG4VO47.js} +1 -1
  107. package/dist/{chunk-RIEFYHXI.js → chunk-JS3DJH3Q.js} +4 -4
  108. package/dist/{chunk-DGKNOPSE.js → chunk-JWQMD54C.js} +7 -7
  109. package/dist/{chunk-XKJRPVJO.js → chunk-KJ6IH2D5.js} +5 -5
  110. package/dist/{chunk-T6ESD5KM.js → chunk-KPHPVOME.js} +4 -4
  111. package/dist/{chunk-YWZDAZMA.js → chunk-KY2ZHTBJ.js} +6 -6
  112. package/dist/{chunk-7HWXYP4H.js → chunk-LAOZB5YC.js} +11 -11
  113. package/dist/chunk-LRCWWMHH.js +54 -0
  114. package/dist/chunk-LVQMS54L.js +54 -0
  115. package/dist/{chunk-NG5R2WIY.js → chunk-M3BJTXLR.js} +9 -9
  116. package/dist/{chunk-7RUMD56V.js → chunk-M4D3VKAS.js} +1 -1
  117. package/dist/{chunk-UTR67XU2.js → chunk-MFRPLAOH.js} +2 -2
  118. package/dist/{chunk-HZYFLEWO.js → chunk-MI3GGF7V.js} +17 -17
  119. package/dist/{chunk-BA5DTXHQ.js → chunk-MIOY6EXD.js} +4 -4
  120. package/dist/{chunk-BUWSOQLU.js → chunk-ML3HOWPI.js} +4 -4
  121. package/dist/{chunk-SINJKQSI.js → chunk-MOY52LHS.js} +13 -13
  122. package/dist/{chunk-FMRMTI7W.js → chunk-MRLCNXXR.js} +1 -1
  123. package/dist/{chunk-5P5BGG5L.js → chunk-N2FA53DA.js} +6 -6
  124. package/dist/{chunk-ATNG5VOZ.js → chunk-N6YELFHL.js} +2 -2
  125. package/dist/{chunk-MYOW3RPC.js → chunk-N7HG4UP7.js} +6 -6
  126. package/dist/{chunk-7LCQ7JAM.js → chunk-NAKVQU6F.js} +1 -1
  127. package/dist/{chunk-3DDJLI7N.js → chunk-NTNJNRHW.js} +4 -4
  128. package/dist/{chunk-OHXTB6CO.js → chunk-NZY72PGJ.js} +13 -8
  129. package/dist/{chunk-4ONORLK5.js → chunk-O62VA6MH.js} +13 -13
  130. package/dist/{chunk-IVHN2VYG.js → chunk-OJAJXU65.js} +3 -1
  131. package/dist/{chunk-CZI2ACNT.js → chunk-OKUYBXXI.js} +16 -16
  132. package/dist/{chunk-EZSZFI54.js → chunk-OMH3I5BH.js} +2 -2
  133. package/dist/{chunk-5RUMHLIS.js → chunk-P3VBYYAS.js} +24 -3
  134. package/dist/{chunk-WUE6HKIU.js → chunk-P7SONIEO.js} +165 -46
  135. package/dist/{chunk-6E2GJANQ.js → chunk-PAOIMLTK.js} +19 -19
  136. package/dist/{chunk-B3QOYE74.js → chunk-PAQDPB6T.js} +4 -4
  137. package/dist/{chunk-DS3ZEJVN.js → chunk-PGFRXGHA.js} +2 -2
  138. package/dist/{chunk-5V5BJACL.js → chunk-PJRMMWU4.js} +2 -2
  139. package/dist/{chunk-S7ZWCMDO.js → chunk-PKCYRG6G.js} +57 -18
  140. package/dist/{chunk-26DBAGOP.js → chunk-PUGPT4Y6.js} +17 -17
  141. package/dist/{chunk-PQW7PYUR.js → chunk-PVMGHQWB.js} +7 -7
  142. package/dist/{chunk-MSL3CLHX.js → chunk-Q4AWUD6C.js} +16 -16
  143. package/dist/{chunk-JQX6BSE4.js → chunk-QC24Z5JU.js} +10 -10
  144. package/dist/{chunk-WCLAOKCH.js → chunk-QKSWQBWD.js} +8 -8
  145. package/dist/{chunk-GMJXC5AL.js → chunk-QL4VNY4U.js} +1 -1
  146. package/dist/chunk-QOF7U6BI.js +363 -0
  147. package/dist/{chunk-JRPQX2EK.js → chunk-QOPX5M7Y.js} +4 -4
  148. package/dist/{chunk-TEBBD4XH.js → chunk-QR65C3DV.js} +4 -4
  149. package/dist/{chunk-SG5KY4VB.js → chunk-QXGOEP44.js} +3 -3
  150. package/dist/{chunk-XZJE6WIT.js → chunk-RA64IK43.js} +1 -1
  151. package/dist/{chunk-3WU7LVTL.js → chunk-RMNYY5IE.js} +5 -5
  152. package/dist/chunk-S3QCJWCF.js +34 -0
  153. package/dist/{chunk-C75W7VXX.js → chunk-S4USA5WC.js} +20 -18
  154. package/dist/{chunk-FOQXYMOR.js → chunk-S5X7BVWP.js} +19 -19
  155. package/dist/{chunk-EV4TEFOD.js → chunk-SR2M7DWL.js} +13 -13
  156. package/dist/{chunk-R6UTCLH5.js → chunk-T4TMX54Q.js} +16 -16
  157. package/dist/{chunk-OXVVRJDQ.js → chunk-T72K4PLH.js} +11 -11
  158. package/dist/{chunk-SKMHS4CL.js → chunk-TA2ZNDYD.js} +1 -1
  159. package/dist/{chunk-CRQ73DIF.js → chunk-TBKJPKDN.js} +11 -11
  160. package/dist/{chunk-YVCOQ5TZ.js → chunk-TEHH47TG.js} +3 -3
  161. package/dist/{chunk-EATSD7YD.js → chunk-TEZSZ24W.js} +4 -4
  162. package/dist/{chunk-WUP77GG2.js → chunk-TIAPEYWI.js} +3 -3
  163. package/dist/{chunk-J27QGXO4.js → chunk-TIUBGJG3.js} +9 -9
  164. package/dist/{chunk-RWMSJP7H.js → chunk-TJHDFS33.js} +29 -26
  165. package/dist/chunk-TJP2KLZI.js +41 -0
  166. package/dist/{chunk-ZJQUIG3A.js → chunk-TV6ECMN3.js} +15 -14
  167. package/dist/{chunk-JMOLB347.js → chunk-U25OX22K.js} +64 -8
  168. package/dist/{chunk-UNFCFJMF.js → chunk-U2SGLXFR.js} +17 -17
  169. package/dist/{chunk-MV4637YA.js → chunk-U3JGJ3BO.js} +24 -24
  170. package/dist/{chunk-XF3DATVU.js → chunk-U43G5EUN.js} +17 -17
  171. package/dist/{chunk-SNHOLLGN.js → chunk-UQUDITWL.js} +84 -25
  172. package/dist/{chunk-EQOSXLK3.js → chunk-UYKKTEWB.js} +14 -14
  173. package/dist/{chunk-NX6QEEOA.js → chunk-VAL7HAIR.js} +3 -3
  174. package/dist/{chunk-JUQHYTXN.js → chunk-VC4JMXM5.js} +19 -17
  175. package/dist/{chunk-NIYB5K5B.js → chunk-VRH6ITQH.js} +9 -9
  176. package/dist/{chunk-U5PDQTLA.js → chunk-VTMIRRIZ.js} +2 -2
  177. package/dist/{chunk-H4VJO3M2.js → chunk-VUBVBFJW.js} +5 -5
  178. package/dist/{chunk-G7WZH54P.js → chunk-W3ZWS3B3.js} +20 -10
  179. package/dist/{chunk-GG6HIU74.js → chunk-WBOVB3XR.js} +24 -24
  180. package/dist/{chunk-IA2RKC6I.js → chunk-WFJMKUTR.js} +52 -11
  181. package/dist/{chunk-KXZR2BLL.js → chunk-WM4N2L4T.js} +1 -1
  182. package/dist/{chunk-7S3XFWOU.js → chunk-WRLEYM3T.js} +4 -4
  183. package/dist/{chunk-REWZE2XI.js → chunk-WSFPKNKT.js} +23 -23
  184. package/dist/{chunk-SUQZGPVG.js → chunk-XB64FJLU.js} +24 -24
  185. package/dist/{chunk-4AYZQ3SY.js → chunk-XBNKOARP.js} +4 -4
  186. package/dist/chunk-XDTD55UU.js +89 -0
  187. package/dist/{chunk-DQNKG4HY.js → chunk-XMYGEZQ7.js} +17 -17
  188. package/dist/{chunk-R3VFLYZZ.js → chunk-XP3KLC4S.js} +6 -6
  189. package/dist/{chunk-S2FDPN32.js → chunk-XRDYEEDE.js} +1 -1
  190. package/dist/{chunk-7HQOZALR.js → chunk-XSNIHYO6.js} +10 -10
  191. package/dist/chunk-XVQGT4SL.js +37 -0
  192. package/dist/{chunk-ZTNS3L5Z.js → chunk-XZLSKGJX.js} +5 -5
  193. package/dist/{chunk-NR5T46ZY.js → chunk-Y2FMWQQB.js} +16 -16
  194. package/dist/{chunk-7A7IG7OA.js → chunk-Y6LFFSRV.js} +10 -10
  195. package/dist/{chunk-V4XKYGLK.js → chunk-YISWYR3Q.js} +4 -4
  196. package/dist/{chunk-EI4KQYJ3.js → chunk-YSFIQGDK.js} +8 -8
  197. package/dist/{chunk-XPJR74MA.js → chunk-YVQWJDVN.js} +37 -25
  198. package/dist/{chunk-R3RVFCJ2.js → chunk-YY2WGL6S.js} +2 -2
  199. package/dist/{chunk-HQMCHHY5.js → chunk-Z2BA4NNR.js} +2 -2
  200. package/dist/{chunk-G3PBLW4K.js → chunk-ZDZCUZ4N.js} +34 -9
  201. package/dist/{chunk-UFBKJOWB.js → chunk-ZPPLFE4N.js} +14 -14
  202. package/dist/{chunk-WGU6NIUV.js → chunk-ZRP6ZXOF.js} +12 -12
  203. package/dist/{chunk-7J7UY46S.js → chunk-ZTIMXVV5.js} +2 -2
  204. package/dist/{chunk-IWZPGIGT.js → chunk-ZWGU46YO.js} +23 -23
  205. package/dist/files.json +441 -433
  206. package/dist/packages/sdk/npm/index.js +9 -0
  207. package/dist/packages/ui/dist/assets/{elk-api-DDup23Us.js → elk-api-D2NcYpUJ.js} +2 -2
  208. package/dist/packages/ui/dist/assets/index-CT7skl01.js +29 -0
  209. package/dist/packages/ui/dist/index.html +1 -1
  210. package/package.json +5 -5
  211. package/dist/chunk-4Y4FY34K.js +0 -34
  212. package/dist/chunk-ACWQDL6T.js +0 -37
  213. package/dist/chunk-ASKDCMW5.js +0 -275
  214. package/dist/chunk-B3UHYXHU.js +0 -41
  215. package/dist/chunk-DDAEAZEV.js +0 -54
  216. package/dist/chunk-E25G46RW.js +0 -54
  217. package/dist/chunk-KQK6SQPE.js +0 -48
  218. package/dist/chunk-NCR24CPV.js +0 -41
  219. package/dist/chunk-NDW4ROST.js +0 -38
  220. package/dist/chunk-OJN7WME4.js +0 -34
  221. package/dist/chunk-UFTQIK2J.js +0 -43
  222. package/dist/chunk-ZHWSL6SR.js +0 -45
  223. package/dist/packages/ui/dist/assets/index-mTOWhQZm.js +0 -29
@@ -6,7 +6,7 @@ var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  dotInt8,
8
8
  textSha
9
- } from "./chunk-BKFGGJKA.js";
9
+ } from "./chunk-CQD26SMZ.js";
10
10
  import {
11
11
  Question,
12
12
  RECORD_KINDS,
@@ -28,7 +28,7 @@ import {
28
28
  splitForms,
29
29
  stateDirOf,
30
30
  toCanonicalYaml
31
- } from "./chunk-JMOLB347.js";
31
+ } from "./chunk-U25OX22K.js";
32
32
  import {
33
33
  __toESM
34
34
  } from "./chunk-TV45EUGM.js";
@@ -1004,8 +1004,8 @@ var DOCUMENT_EXTENSIONS = /\.(docx|pptx|xlsx|pdf|md|markdown|html?|txt)$/i;
1004
1004
  async function documentNodes(path, bytes) {
1005
1005
  const out = { nodes: [], names: [], links: [] };
1006
1006
  const [{ readDocument }, { screenFile }] = await Promise.all([
1007
- import("./chunk-7VFVQX5K.js"),
1008
- import("./chunk-QWHTTA2X.js")
1007
+ import("./chunk-CIIRPLI6.js"),
1008
+ import("./chunk-3M7QBKKG.js")
1009
1009
  ]);
1010
1010
  const screen = screenFile(path, bytes);
1011
1011
  if (screen.problem)
@@ -2284,7 +2284,7 @@ function openDb(file) {
2284
2284
  // packages/index/dist/catalog-index.js
2285
2285
  var vectorsFileOf = (file) => join3(dirname2(file), "vectors.sqlite");
2286
2286
  var notInstalled = (e, pkg) => e.code === "ERR_MODULE_NOT_FOUND" && String(e.message).includes(pkg);
2287
- async function embedderOf(root, setting, load = () => import("./chunk-EZSZFI54.js")) {
2287
+ async function embedderOf(root, setting, load = () => import("./chunk-OMH3I5BH.js")) {
2288
2288
  if (setting === "off")
2289
2289
  return { why: "turned off for this command" };
2290
2290
  if (setting && setting !== "auto")
@@ -3,21 +3,20 @@ 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
+ modelsData,
8
+ modelsLine,
9
+ reachHeadOf,
10
+ reachPlanOf,
11
+ readPathsOf
12
+ } from "./chunk-XDTD55UU.js";
6
13
  import {
7
14
  notesAt
8
- } from "./chunk-52WCHTVZ.js";
15
+ } from "./chunk-CGF4LKXR.js";
9
16
  import {
10
17
  houseUntaughtLines,
11
18
  houseUntaughtOf
12
- } from "./chunk-B3QOYE74.js";
13
- import {
14
- loadReadPlan,
15
- partOfWords,
16
- readPlanProgress,
17
- readPlanRelOf,
18
- saveReadPlan,
19
- writeReadPlan
20
- } from "./chunk-LVBPY2M6.js";
19
+ } from "./chunk-PAQDPB6T.js";
21
20
  import {
22
21
  carryOf,
23
22
  checkoutOf,
@@ -25,22 +24,32 @@ import {
25
24
  estateComponentsOf,
26
25
  excludesOf,
27
26
  headOf,
27
+ loadReadPlan,
28
+ modelsModeOf,
29
+ partOfWords,
28
30
  raiseReadQuestions,
29
31
  readCorrections,
32
+ readPlanProgress,
33
+ readPlanRelOf,
30
34
  readReviewed,
35
+ recordNotReached,
31
36
  reviewedProblemsOf,
37
+ saveReadPlan,
32
38
  slipNoteLines,
39
+ writeReadPlan,
33
40
  writeVerifyFiles
34
- } from "./chunk-ASKDCMW5.js";
41
+ } from "./chunk-6AYUBYK6.js";
35
42
  import {
36
43
  ABOUT_RULE,
44
+ MODELS_RULE,
37
45
  assistantTier,
38
46
  mapBatchInstructions,
39
47
  readProbes,
48
+ rulesNow,
40
49
  taughtFrameworksText,
41
50
  tierSource,
42
51
  tierWords
43
- } from "./chunk-6RGIM2ZH.js";
52
+ } from "./chunk-J22RSFKY.js";
44
53
  import {
45
54
  FILE_KINDS,
46
55
  SHOWN_PROPOSALS,
@@ -62,10 +71,10 @@ import {
62
71
  sliceText,
63
72
  staleMessage,
64
73
  verifyFacts
65
- } from "./chunk-XPWSNKF3.js";
74
+ } from "./chunk-7VAMO66T.js";
66
75
  import {
67
76
  loadRepos
68
- } from "./chunk-XZJE6WIT.js";
77
+ } from "./chunk-RA64IK43.js";
69
78
  import {
70
79
  DATA_RULE,
71
80
  HandoffRuntime,
@@ -75,7 +84,7 @@ import {
75
84
  estimateTokens,
76
85
  promptBudget,
77
86
  wrapData
78
- } from "./chunk-BKFGGJKA.js";
87
+ } from "./chunk-CQD26SMZ.js";
79
88
  import {
80
89
  AgentDefinition,
81
90
  Fact,
@@ -95,7 +104,7 @@ import {
95
104
  runsDirOf,
96
105
  saysNotProduct,
97
106
  stackHelpersOff
98
- } from "./chunk-JMOLB347.js";
107
+ } from "./chunk-U25OX22K.js";
99
108
  import {
100
109
  writeFileAtomic
101
110
  } from "./chunk-MMB2OHUY.js";
@@ -397,6 +406,12 @@ async function packFor(root, s, batch, source, op, now, notes) {
397
406
  const onFile = (await listQuestions(root, { repo: s.repo })).questions.filter((q) => q.state !== "retired");
398
407
  const rules = await rulesCovering(root, s.repo, op);
399
408
  const slices = fix ? [] : s.batches[batch];
409
+ const inBatch = new Set(slices.map((x) => x.path));
410
+ const reachedHere = (s.reached ?? []).filter((r) => inBatch.has(r.path));
411
+ const models = reachedHere.length ? [
412
+ "Model classes in this batch the entry points and calls reach (read these, and write their fields):",
413
+ ...reachedHere.map((r) => `- ${r.path} (${r.types.join(", ")}), from ${r.from}`)
414
+ ].join("\n") : void 0;
400
415
  const rejected = s.rejected.map((r) => rejectedText(r, source));
401
416
  const own = kindsOf(slices.map((x) => x.path));
402
417
  const theirs = kindsOf(s.rejected.flatMap((r) => citedFiles(r.fact)));
@@ -419,15 +434,29 @@ async function packFor(root, s, batch, source, op, now, notes) {
419
434
  // build files are read first, so from the second batch on this is what the code says.
420
435
  frameworks: await frameworksFor(root, s.repo, facts),
421
436
  // Nothing says what this repo is: ask for one line, cited, for a person to confirm.
422
- ...about ? {} : { askAbout: true },
437
+ ...about || s.sets ? {} : { askAbout: true },
438
+ // ADR 0167: a top-up carries only the rule sets the read lacked.
439
+ ...s.sets ? { sets: s.sets } : {},
423
440
  // A-taught: how to read the wrapper calls and annotations of the frameworks it is built on.
424
441
  ...taughtOption(taughtIn(source, op)),
425
442
  // ADR 0163: what the organisation's terms mean here and what must hold, as data.
426
- ...notes ? { notes } : {}
443
+ ...notes ? { notes } : {},
444
+ // ADR 0169: the model classes of this batch the read reaches, listed beside it.
445
+ ...models ? { models: true } : {}
427
446
  }),
428
447
  classification: "public",
429
448
  trusted: true
430
449
  },
450
+ ...models ? [
451
+ {
452
+ id: "1-models",
453
+ kind: "document",
454
+ origin: "atticus/reachable",
455
+ text: models,
456
+ classification: "internal",
457
+ priority: 9
458
+ }
459
+ ] : [],
431
460
  ...s.reread ? [
432
461
  {
433
462
  id: "0-reread",
@@ -551,7 +580,7 @@ async function mapCommand(root, repo, o, io, deps = {}) {
551
580
  const repoNotes = await notesAt(root, repo, dir, op);
552
581
  const notesPrompt = notesText(repoNotes.notes, repoNotes.type);
553
582
  if (o.gaps) {
554
- const { mapGaps } = await import("./chunk-S7ZWCMDO.js");
583
+ const { mapGaps } = await import("./chunk-PKCYRG6G.js");
555
584
  const tier = await tierHere(root, op);
556
585
  let part;
557
586
  if (o.part !== void 0) {
@@ -570,7 +599,24 @@ async function mapCommand(root, repo, o, io, deps = {}) {
570
599
  source,
571
600
  session: sessionTokensFor(limitOf(o, op, tier).limit),
572
601
  ...o.json ? { json: true } : {},
573
- ...part ? { part } : {}
602
+ ...part ? { part } : {},
603
+ ...o.models ? { models: o.models } : {},
604
+ exclude,
605
+ conventions
606
+ }, io);
607
+ }
608
+ if (o.rules && !deps.runtime) {
609
+ const { mapRules } = await import("./chunk-TJP2KLZI.js");
610
+ const tier = await tierHere(root, op);
611
+ return mapRules(root, repo, {
612
+ commit,
613
+ source,
614
+ exclude,
615
+ conventions,
616
+ session: sessionTokensFor(limitOf(o, op, tier).limit),
617
+ notes: notesPrompt,
618
+ ...o.json ? { json: true } : {},
619
+ ...o.models ? { models: o.models } : {}
574
620
  }, io);
575
621
  }
576
622
  if (o.estimate)
@@ -645,44 +691,131 @@ async function mapCommand(root, repo, o, io, deps = {}) {
645
691
  if (room < MIN_ROOM)
646
692
  return tooSmall(0);
647
693
  const frameworks = await frameworksFor(root, repo, existing);
648
- const re = await rereadOf(dir, existing, commit, source, exclude, deps.git, conventions);
649
- const reread = re.plan && !re.plan.unknown.length ? re.plan : void 0;
650
- const since = reread?.from.map((x) => x.commit.slice(0, 12)).join(", ");
651
- if (reread && !reread.files.length && !reread.reread.length) {
652
- 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)}.`);
653
- return 0;
654
- }
655
- const plan = planBatches(reread ? onlyFiles(source, reread.files.map((f) => f.path)) : source, { room, exclude, overhead: overheadOf(repo, commit, frameworks), conventions });
656
- if (plan.leastRoom < MIN_ROOM)
657
- return tooSmall(room - plan.leastRoom);
658
- if (!plan.batches.length && !reread) {
659
- io.out(`${repo} has no source files to read${plan.excluded.length ? ` (${plural(plan.excluded.length, "file")} excluded)` : ""}.`);
660
- return 0;
694
+ if (o.rules) {
695
+ const { topUpOf, recordRulesNow, ruleSetsOfFiles } = await import("./chunk-TJP2KLZI.js");
696
+ const t = await topUpOf(root, repo, {
697
+ commit,
698
+ facts: existing,
699
+ source,
700
+ exclude,
701
+ conventions,
702
+ ...o.models ? { models: o.models } : {}
703
+ });
704
+ if ("error" in t) {
705
+ io.err(t.error);
706
+ return 2;
707
+ }
708
+ if (!t.lacking.length) {
709
+ io.out(`${repo} was read under the reading rules there are now: nothing to top up.`);
710
+ return 0;
711
+ }
712
+ if (!t.files.length) {
713
+ await recordRulesNow(root, repo, commit);
714
+ 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.`);
715
+ return 0;
716
+ }
717
+ const sets = ruleSetsOfFiles(t.files);
718
+ const plan = planBatches(onlyFiles(source, t.files.map((f) => f.path)), { room, exclude, overhead: overheadOf(repo, commit, frameworks), conventions });
719
+ if (plan.leastRoom < MIN_ROOM)
720
+ return tooSmall(room - plan.leastRoom);
721
+ s = {
722
+ schemaVersion: 1,
723
+ repo,
724
+ commit,
725
+ ...limit ? { maxTokens: limit } : {},
726
+ room,
727
+ batches: plan.batches,
728
+ next: 0,
729
+ rejected: [],
730
+ problems: [],
731
+ sets,
732
+ // ADR 0169: the reached model classes, listed in the prompts of the batches holding them.
733
+ ...t.reach?.reach.rooted && t.reach.reach.reached.length ? {
734
+ reached: t.reach.reach.reached.map((r) => ({
735
+ path: r.path,
736
+ types: r.types,
737
+ from: r.from
738
+ }))
739
+ } : {}
740
+ };
741
+ if (t.reach)
742
+ await recordNotReached(root, repo, {
743
+ commit,
744
+ session: sessionTokensFor(limit),
745
+ models: t.reach.mode,
746
+ ...t.reach.notReached ? { notReached: t.reach.notReached } : {}
747
+ });
748
+ await saveState(root, s);
749
+ 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}.`);
750
+ } else {
751
+ const re = await rereadOf(dir, existing, commit, source, exclude, deps.git, conventions);
752
+ const reread = re.plan && !re.plan.unknown.length ? re.plan : void 0;
753
+ const since = reread?.from.map((x) => x.commit.slice(0, 12)).join(", ");
754
+ if (reread && !reread.files.length && !reread.reread.length) {
755
+ 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)}.`);
756
+ return 0;
757
+ }
758
+ const mode = await modelsModeOf(root, repo, o.models);
759
+ const rp = reread ? void 0 : reachPlanOf({
760
+ paths: readPathsOf(source, exclude, conventions),
761
+ source,
762
+ facts: existing,
763
+ mode
764
+ });
765
+ const plan = planBatches(reread ? onlyFiles(source, reread.files.map((f) => f.path)) : source, {
766
+ room,
767
+ exclude,
768
+ overhead: overheadOf(repo, commit, frameworks),
769
+ conventions,
770
+ ...rp?.reach.rooted && rp.reach.models ? { reach: { first: rp.first, leaveOut: rp.leaveOut } } : {}
771
+ });
772
+ if (plan.leastRoom < MIN_ROOM)
773
+ return tooSmall(room - plan.leastRoom);
774
+ if (!plan.batches.length && !reread) {
775
+ io.out(`${repo} has no source files to read${plan.excluded.length ? ` (${plural(plan.excluded.length, "file")} excluded)` : ""}.`);
776
+ return 0;
777
+ }
778
+ const byId = new Map(existing.map((f) => [f.id, f]));
779
+ s = {
780
+ schemaVersion: 1,
781
+ repo,
782
+ commit,
783
+ ...limit ? { maxTokens: limit } : {},
784
+ room,
785
+ batches: plan.batches,
786
+ next: 0,
787
+ rejected: (reread?.reread ?? []).map((r) => {
788
+ const fact = byId.get(r.id);
789
+ return { id: r.id, code: "cite-changed", message: staleMessage(fact, r, commit), fact };
790
+ }),
791
+ problems: [],
792
+ ...rp?.reach.rooted && rp.reach.reached.length ? {
793
+ reached: rp.reach.reached.map((r) => ({
794
+ path: r.path,
795
+ types: r.types,
796
+ from: r.from
797
+ }))
798
+ } : {},
799
+ ...reread ? {
800
+ reread: {
801
+ from: reread.from.map((x) => x.commit),
802
+ carried: reread.carried,
803
+ facts: reread.reread.length
804
+ }
805
+ } : {}
806
+ };
807
+ await saveState(root, s);
808
+ if (rp)
809
+ await recordNotReached(root, repo, {
810
+ commit,
811
+ session: sessionTokensFor(limit),
812
+ models: mode,
813
+ ...rp.notReached ? { notReached: rp.notReached } : {}
814
+ });
815
+ if (rp?.leaveOut.length)
816
+ io.out(`${rp.leaveOut.length} model ${rp.leaveOut.length === 1 ? "class" : "classes"} no entry or call reaches are left out (ADR 0169; recorded in ${readPlanRelOf(root, repo)}): atticus map ${repo} --models all reads them.`);
817
+ 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}.`);
661
818
  }
662
- const byId = new Map(existing.map((f) => [f.id, f]));
663
- s = {
664
- schemaVersion: 1,
665
- repo,
666
- commit,
667
- ...limit ? { maxTokens: limit } : {},
668
- room,
669
- batches: plan.batches,
670
- next: 0,
671
- rejected: (reread?.reread ?? []).map((r) => {
672
- const fact = byId.get(r.id);
673
- return { id: r.id, code: "cite-changed", message: staleMessage(fact, r, commit), fact };
674
- }),
675
- problems: [],
676
- ...reread ? {
677
- reread: {
678
- from: reread.from.map((x) => x.commit),
679
- carried: reread.carried,
680
- facts: reread.reread.length
681
- }
682
- } : {}
683
- };
684
- await saveState(root, s);
685
- 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}.`);
686
819
  }
687
820
  if (!s)
688
821
  return 2;
@@ -774,7 +907,9 @@ async function takeAnswer(root, s, run, batch, source, exclude, now, io, at) {
774
907
  ...estate ? { estate } : {},
775
908
  conventions: await conventionsAt(root),
776
909
  // ADR 0163: a term's note is one of those the batch was handed.
777
- notes: (await notesAt(root, s.repo, at.dir)).notes
910
+ notes: (await notesAt(root, s.repo, at.dir)).notes,
911
+ // ADR 0169: the model files the read leaves out, counted apart.
912
+ notReached: (await loadReadPlan(root, s.repo))?.notReached?.files ?? []
778
913
  });
779
914
  const q = await raiseReadQuestions(root, s.repo, answer.questions, source, {
780
915
  command: `atticus map ${s.repo}`,
@@ -783,7 +918,7 @@ async function takeAnswer(root, s, run, batch, source, exclude, now, io, at) {
783
918
  });
784
919
  const summary = await writeVerifyFiles(root, s.repo, report, s.commit, q.problems, [], reviewedProblemsOf(reviewed.bad, report), answer.slips);
785
920
  if (answer.about) {
786
- const { keepDraftedDescription } = await import("./chunk-ZKUDS7JG.js");
921
+ const { keepDraftedDescription } = await import("./chunk-HMQXIFOL.js");
787
922
  const d = await keepDraftedDescription(root, s.repo, answer.about, now());
788
923
  if (d.kept)
789
924
  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).`);
@@ -816,6 +951,10 @@ async function finish(root, s, io, o) {
816
951
  s.done = true;
817
952
  await saveState(root, s);
818
953
  const last = s.last;
954
+ if (last && !last.rejected && !s.reread) {
955
+ const { recordRulesNow } = await import("./chunk-TJP2KLZI.js");
956
+ await recordRulesNow(root, s.repo, s.commit);
957
+ }
819
958
  const rel = factsRelOf(root);
820
959
  if (o.json) {
821
960
  io.out(JSON.stringify({ state: "done", repo: s.repo, batches: s.batches.length, ...last }, null, 2));
@@ -825,7 +964,7 @@ async function finish(root, s, io, o) {
825
964
  io.out(`Read ${s.repo}: nothing was kept.`);
826
965
  return 0;
827
966
  }
828
- io.out(`Read ${s.repo} in ${batches(s.batches.length)}: ${plural(last.accepted, "fact")} kept in ${rel}/${s.repo}.jsonl, ${last.rejected} still rejected; coverage ${Math.round(last.coverage.ratio * 100)}% (${last.coverage.read} read, ${last.coverage.reviewed ? `${last.coverage.reviewed} reviewed with nothing to record, ` : ""}${last.coverage.unknown.length} unknown).`);
967
+ io.out(`Read ${s.repo} in ${batches(s.batches.length)}: ${plural(last.accepted, "fact")} kept in ${rel}/${s.repo}.jsonl, ${last.rejected} still rejected; coverage ${Math.round(last.coverage.ratio * 100)}% (${last.coverage.read} read, ${last.coverage.reviewed ? `${last.coverage.reviewed} reviewed with nothing to record, ` : ""}${last.coverage.unknown.length} unknown${last.coverage.notReached?.length ? `, ${last.coverage.notReached.length} model files no entry or call reaches` : ""}).`);
829
968
  if (last.rejected)
830
969
  io.out(`The rejected facts are in ${rel}/${s.repo}.rejected.jsonl; fix them by hand or with your assistant, then atticus verify ${s.repo}.`);
831
970
  if (last.coverage.unknown.length)
@@ -872,13 +1011,6 @@ async function estimate(root, repo, c, io) {
872
1011
  exclude: c.exclude,
873
1012
  conventions
874
1013
  });
875
- const planned = room >= MIN_ROOM ? planBatches(readSource, {
876
- room,
877
- exclude: c.exclude,
878
- conventions,
879
- overhead: overheadOf(repo, c.commit, await frameworksFor(root, repo, typeof existing === "string" ? [] : existing))
880
- }) : void 0;
881
- const plan = planned && planned.leastRoom >= MIN_ROOM ? planned : void 0;
882
1014
  const files = whole.batches.flat().map((s) => ({ path: s.path, tokens: s.tokens }));
883
1015
  const proposed = reread ? { proposals: [], before: whole.tokens, after: whole.tokens } : proposeExclusions(files, c.source.list(), (p) => c.source.read(p), {
884
1016
  // What the person's description plainly says this repo holds (ADR 0128).
@@ -892,16 +1024,38 @@ async function estimate(root, repo, c, io) {
892
1024
  const text = c.source.read(f.path);
893
1025
  return text === void 0 ? f : { ...f, lines: text.split(/\r?\n/).length };
894
1026
  });
895
- const parts = planParts(product, session);
1027
+ const mode = await modelsModeOf(root, repo, c.o.models);
1028
+ const facts0 = typeof existing === "string" ? [] : existing;
1029
+ const rp = reread ? void 0 : reachPlanOf({ paths: product.map((f) => f.path), source: c.source, facts: facts0, mode });
1030
+ const leave = new Set(rp?.leaveOut ?? []);
1031
+ const kept = product.filter((f) => !leave.has(f.path));
1032
+ const ordered = rp && rp.reach.rooted && rp.reach.models > 0;
1033
+ const parts = planParts(kept, session, ordered ? {
1034
+ head: reachHeadOf(kept.map((f) => f.path), rp),
1035
+ models: rp.reach.reached.map((r) => r.path),
1036
+ leftOut: rp.leaveOut
1037
+ } : void 0);
1038
+ const planned = room >= MIN_ROOM ? planBatches(readSource, {
1039
+ room,
1040
+ exclude: c.exclude,
1041
+ conventions,
1042
+ overhead: overheadOf(repo, c.commit, await frameworksFor(root, repo, facts0)),
1043
+ ...rp && ordered ? { reach: { first: rp.first, leaveOut: rp.leaveOut } } : {}
1044
+ }) : void 0;
1045
+ const plan = planned && planned.leastRoom >= MIN_ROOM ? planned : void 0;
896
1046
  const plan0 = await loadReadPlan(root, repo);
897
1047
  const same = plan0 !== void 0 && plan0.commit === c.commit && plan0.session === session && plan0.parts.length === parts.length && plan0.parts.every((p, i) => p.paths.length === parts[i].paths.length && p.paths.every((x, j) => x === parts[i].paths[j]));
898
1048
  const estimate2 = {
899
- files: product.length,
900
- tokens: product.reduce((n, f) => n + f.tokens, 0),
1049
+ files: kept.length,
1050
+ tokens: kept.reduce((n, f) => n + f.tokens, 0),
901
1051
  sessions: parts.length || 1,
902
1052
  ...reread ? { reread: true } : {}
903
1053
  };
904
1054
  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;
1055
+ const firstRead = typeof existing !== "string" && existing.length === 0 && !reread;
1056
+ const readRules = firstRead ? rulesNow() : plan0?.rules;
1057
+ const notReached = rp ? rp.notReached : plan0?.notReached;
1058
+ const sameModels = plan0 !== void 0 && (plan0.models ?? "reachable") === mode && JSON.stringify(plan0.notReached ?? null) === JSON.stringify(notReached ?? null);
905
1059
  if (!same)
906
1060
  await writeReadPlan(root, repo, {
907
1061
  commit: c.commit,
@@ -909,10 +1063,21 @@ async function estimate(root, repo, c, io) {
909
1063
  parts,
910
1064
  estimate: estimate2,
911
1065
  // What the reader reported of an earlier plan stays, under the commit it was of.
912
- ...plan0?.reported ? { reported: plan0.reported } : {}
1066
+ ...plan0?.reported ? { reported: plan0.reported } : {},
1067
+ ...readRules ? { rules: readRules } : {},
1068
+ models: mode,
1069
+ ...notReached ? { notReached } : {}
1070
+ });
1071
+ else if (!sameEstimate || !sameModels || firstRead && plan0.rules?.hash !== readRules?.hash) {
1072
+ const { notReached: _n, models: _m, ...rest0 } = plan0;
1073
+ await saveReadPlan(root, {
1074
+ ...rest0,
1075
+ estimate: estimate2,
1076
+ ...readRules ? { rules: readRules } : {},
1077
+ ...mode === "all" ? { models: "all" } : {},
1078
+ ...notReached ? { notReached } : {}
913
1079
  });
914
- else if (!sameEstimate)
915
- await saveReadPlan(root, { ...plan0, estimate: estimate2 });
1080
+ }
916
1081
  const progress = parts.length ? await readPlanProgress(root, repo, { commit: c.commit }) : void 0;
917
1082
  const questions = (await listQuestions(root, { repo })).questions.filter((q) => q.state !== "retired");
918
1083
  const notes = await notesAt(root, repo, c.dir, c.op);
@@ -937,6 +1102,8 @@ async function estimate(root, repo, c, io) {
937
1102
  maxTokensGiven: given !== void 0,
938
1103
  maxTokensFrom: from ?? "example",
939
1104
  batches: plan?.batches.length ?? null,
1105
+ // ADR 0169: what the read plans to read (the model classes it leaves out, out).
1106
+ read: { files: estimate2.files, tokens: estimate2.tokens },
940
1107
  order: whole.batches.flat().map((x) => x.path),
941
1108
  // ADR 0128: what a person says the repo is, and whether that eased the proposals.
942
1109
  about: about ? { text: about.text, trust: about.trust, eased: saysNotProduct(about) } : null,
@@ -960,6 +1127,13 @@ async function estimate(root, repo, c, io) {
960
1127
  }
961
1128
  } : {}
962
1129
  },
1130
+ // ADR 0169: the model classes reached from the entry points and calls, and those left out.
1131
+ models: rp ? {
1132
+ mode,
1133
+ roots: rp.reach.roots,
1134
+ reached: rp.reach.reached,
1135
+ notReached: rp.leaveOut
1136
+ } : null,
963
1137
  tier,
964
1138
  // A-taught: the frameworks of the organisation it is built on, as taught to Atticus.
965
1139
  taughtFrameworks: taughtIn(c.source, c.op).map((m) => m.name),
@@ -1037,6 +1211,15 @@ repo: ${repo}`);
1037
1211
  io.out(` part ${p.part} is part-read: nothing in the facts yet for ${p.left.join(", ")}.`);
1038
1212
  }
1039
1213
  }
1214
+ const line = rp ? modelsLine(repo, rp) : void 0;
1215
+ if (rp && line) {
1216
+ io.out(line);
1217
+ const data = modelsData(repo, rp);
1218
+ if (data) {
1219
+ io.out(MODELS_RULE);
1220
+ io.out(data);
1221
+ }
1222
+ }
1040
1223
  io.out(`Your assistant: ${tierWords(tier)}, ${tierSource(tier)}. ${tier.how}`);
1041
1224
  io.out(`Another agentic assistant (Claude Code, Cursor, Gemini CLI) reads it the same way: /atticus-map ${repo}; one without file tools gets batches with atticus map ${repo} --handoff --max-tokens <its limit>.`);
1042
1225
  if (tier.fallback)
@@ -15,27 +15,27 @@ import {
15
15
  glossaryScan,
16
16
  testsGenerate,
17
17
  traceCommand
18
- } from "./chunk-J27QGXO4.js";
19
- import "./chunk-PQW7PYUR.js";
20
- import "./chunk-SKMHS4CL.js";
21
- import "./chunk-EV4TEFOD.js";
22
- import "./chunk-6N2GUZMZ.js";
18
+ } from "./chunk-TIUBGJG3.js";
19
+ import "./chunk-PVMGHQWB.js";
20
+ import "./chunk-TA2ZNDYD.js";
21
+ import "./chunk-SR2M7DWL.js";
22
+ import "./chunk-ISXNWUG7.js";
23
23
  import "./chunk-VOGCSYOI.js";
24
- import "./chunk-T6ESD5KM.js";
25
- import "./chunk-3LU6YCSQ.js";
26
- import "./chunk-L7I5PKGD.js";
27
- import "./chunk-CAN3EBE5.js";
28
- import "./chunk-IILZ7J3L.js";
29
- import "./chunk-TEBBD4XH.js";
30
- import "./chunk-XPWSNKF3.js";
31
- import "./chunk-WIMOJMAK.js";
32
- import "./chunk-5V5BJACL.js";
33
- import "./chunk-GVFUEGGM.js";
34
- import "./chunk-XNRPCI23.js";
35
- import "./chunk-XZJE6WIT.js";
36
- import "./chunk-FMRMTI7W.js";
37
- import "./chunk-BKFGGJKA.js";
38
- import "./chunk-JMOLB347.js";
24
+ import "./chunk-KPHPVOME.js";
25
+ import "./chunk-G5SKNMPC.js";
26
+ import "./chunk-JQG4VO47.js";
27
+ import "./chunk-DW4BM73R.js";
28
+ import "./chunk-DBZNQAMN.js";
29
+ import "./chunk-QR65C3DV.js";
30
+ import "./chunk-7VAMO66T.js";
31
+ import "./chunk-HY2VVVFZ.js";
32
+ import "./chunk-PJRMMWU4.js";
33
+ import "./chunk-34NWVIBC.js";
34
+ import "./chunk-77UOXZVM.js";
35
+ import "./chunk-RA64IK43.js";
36
+ import "./chunk-MRLCNXXR.js";
37
+ import "./chunk-CQD26SMZ.js";
38
+ import "./chunk-U25OX22K.js";
39
39
  import "./chunk-MMB2OHUY.js";
40
40
  import "./chunk-TV45EUGM.js";
41
41
  export {
@@ -5,33 +5,33 @@ var __atticusUrl = (p) => new URL("./" + p, import.meta.url).href;
5
5
  var __atticusPath = (p) => __atticusFileURLToPath(__atticusUrl(p));
6
6
  import {
7
7
  targetFlowsOf
8
- } from "./chunk-JEUXCIRD.js";
9
- import "./chunk-BUWSOQLU.js";
8
+ } from "./chunk-CJ5FQHST.js";
9
+ import "./chunk-ML3HOWPI.js";
10
10
  import {
11
11
  MAX_CHAIN_DEPTH,
12
12
  changeImpact,
13
13
  loadEstate
14
- } from "./chunk-EV4TEFOD.js";
15
- import "./chunk-6N2GUZMZ.js";
16
- import "./chunk-T6ESD5KM.js";
17
- import "./chunk-3LU6YCSQ.js";
18
- import "./chunk-L7I5PKGD.js";
19
- import "./chunk-CAN3EBE5.js";
20
- import "./chunk-IILZ7J3L.js";
21
- import "./chunk-TEBBD4XH.js";
22
- import "./chunk-XPWSNKF3.js";
23
- import "./chunk-WIMOJMAK.js";
24
- import "./chunk-5V5BJACL.js";
25
- import "./chunk-GVFUEGGM.js";
26
- import "./chunk-XNRPCI23.js";
14
+ } from "./chunk-SR2M7DWL.js";
15
+ import "./chunk-ISXNWUG7.js";
16
+ import "./chunk-KPHPVOME.js";
17
+ import "./chunk-G5SKNMPC.js";
18
+ import "./chunk-JQG4VO47.js";
19
+ import "./chunk-DW4BM73R.js";
20
+ import "./chunk-DBZNQAMN.js";
21
+ import "./chunk-QR65C3DV.js";
22
+ import "./chunk-7VAMO66T.js";
23
+ import "./chunk-HY2VVVFZ.js";
24
+ import "./chunk-PJRMMWU4.js";
25
+ import "./chunk-34NWVIBC.js";
26
+ import "./chunk-77UOXZVM.js";
27
27
  import {
28
28
  loadRepos
29
- } from "./chunk-XZJE6WIT.js";
30
- import "./chunk-FMRMTI7W.js";
31
- import "./chunk-BKFGGJKA.js";
29
+ } from "./chunk-RA64IK43.js";
30
+ import "./chunk-MRLCNXXR.js";
31
+ import "./chunk-CQD26SMZ.js";
32
32
  import {
33
33
  readTeams
34
- } from "./chunk-JMOLB347.js";
34
+ } from "./chunk-U25OX22K.js";
35
35
  import "./chunk-MMB2OHUY.js";
36
36
  import "./chunk-TV45EUGM.js";
37
37