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

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 (232) hide show
  1. package/dist/bin.js +3 -3
  2. package/dist/{chunk-GZ4TKR3Q.js → chunk-23VFQHFQ.js} +33 -134
  3. package/dist/{chunk-VKMTFIWS.js → chunk-26DBAGOP.js} +18 -18
  4. package/dist/{chunk-PKCMRPPB.js → chunk-27EDZN52.js} +33 -27
  5. package/dist/{chunk-AJJK7GLO.js → chunk-2K2ZEJVR.js} +3 -3
  6. package/dist/{chunk-XRO65C7V.js → chunk-3DDJLI7N.js} +8 -6
  7. package/dist/{chunk-XQ3YIV5R.js → chunk-3LU6YCSQ.js} +6 -6
  8. package/dist/{chunk-XTVDAHH2.js → chunk-3WU7LVTL.js} +5 -5
  9. package/dist/{chunk-6GNS32SI.js → chunk-4AYZQ3SY.js} +4 -4
  10. package/dist/{chunk-6VBXAGJX.js → chunk-4ONORLK5.js} +14 -14
  11. package/dist/{chunk-7TGYNOXD.js → chunk-4URR24DD.js} +7 -7
  12. package/dist/{chunk-CIUHAHM6.js → chunk-4UZJOQYK.js} +8 -8
  13. package/dist/chunk-4Y4FY34K.js +34 -0
  14. package/dist/{chunk-52R2YXP5.js → chunk-4YWRU7JK.js} +16 -16
  15. package/dist/chunk-52WCHTVZ.js +41 -0
  16. package/dist/{chunk-YIEOFHOL.js → chunk-55TBYJF2.js} +17 -11
  17. package/dist/{chunk-MH5OCRUM.js → chunk-5ACUW753.js} +2 -2
  18. package/dist/chunk-5BJFMAQU.js +32 -0
  19. package/dist/{chunk-YPBQNJHA.js → chunk-5ICB2BXH.js} +8 -8
  20. package/dist/{chunk-YGKYFMSL.js → chunk-5NZSJ5ZG.js} +3 -3
  21. package/dist/{chunk-YPIEYQF4.js → chunk-5P5BGG5L.js} +6 -6
  22. package/dist/{chunk-B7434AE2.js → chunk-5RUMHLIS.js} +2 -2
  23. package/dist/{chunk-5MI2SEV5.js → chunk-5TY4DTHQ.js} +3 -3
  24. package/dist/{chunk-NIXVDQVO.js → chunk-5V5BJACL.js} +2 -2
  25. package/dist/{chunk-7DUDLVFJ.js → chunk-6E2GJANQ.js} +20 -20
  26. package/dist/{chunk-RK6MKKKP.js → chunk-6N2GUZMZ.js} +1 -1
  27. package/dist/{chunk-LK44ULGI.js → chunk-6RGIM2ZH.js} +32 -6
  28. package/dist/{chunk-OS7PQ35Z.js → chunk-6V3DTQWK.js} +22 -22
  29. package/dist/{chunk-OSGQW2Z6.js → chunk-77RSRG3A.js} +8 -8
  30. package/dist/{chunk-5YIBJXGB.js → chunk-7A7IG7OA.js} +10 -10
  31. package/dist/{chunk-YLAJAI2W.js → chunk-7HQOZALR.js} +11 -11
  32. package/dist/{chunk-XB5RFZHH.js → chunk-7HWXYP4H.js} +12 -12
  33. package/dist/{chunk-PIVKU64W.js → chunk-7J7UY46S.js} +2 -2
  34. package/dist/{chunk-62YMDXY6.js → chunk-7KXYMC2P.js} +16 -16
  35. package/dist/{chunk-23M2LUYM.js → chunk-7LCQ7JAM.js} +1 -1
  36. package/dist/{chunk-5XN76FTF.js → chunk-7RGCQ4VZ.js} +5 -5
  37. package/dist/{chunk-CHC5FKTU.js → chunk-7RUMD56V.js} +1 -1
  38. package/dist/{chunk-IUD3ME4E.js → chunk-7S3XFWOU.js} +4 -4
  39. package/dist/{chunk-ZONE6E3Z.js → chunk-7SZPENUP.js} +2 -2
  40. package/dist/{chunk-T6USVBEJ.js → chunk-7VFVQX5K.js} +5 -5
  41. package/dist/chunk-ACWQDL6T.js +37 -0
  42. package/dist/{chunk-AKJTKMXU.js → chunk-ANCI3LFS.js} +5 -5
  43. package/dist/{chunk-B3O52AUQ.js → chunk-ASKDCMW5.js} +4 -4
  44. package/dist/chunk-ATNG5VOZ.js +122 -0
  45. package/dist/{chunk-I7IWQIEB.js → chunk-B3QOYE74.js} +4 -4
  46. package/dist/chunk-B3UHYXHU.js +41 -0
  47. package/dist/{chunk-GXJVY6WT.js → chunk-BA5DTXHQ.js} +5 -5
  48. package/dist/{chunk-5XDNUJ4P.js → chunk-BKFGGJKA.js} +2 -2
  49. package/dist/{chunk-DDAHCPGA.js → chunk-BQNEHB5U.js} +12 -12
  50. package/dist/{chunk-P3TKKBAH.js → chunk-BUWSOQLU.js} +4 -4
  51. package/dist/{chunk-X4W4XXWP.js → chunk-BX52REMA.js} +5 -5
  52. package/dist/{chunk-4SVJNVEE.js → chunk-BXBCMGIQ.js} +2 -0
  53. package/dist/{chunk-CRE4BJHM.js → chunk-C2YGYTU6.js} +23 -23
  54. package/dist/{chunk-7URGP4DD.js → chunk-C5JFMAXX.js} +12 -12
  55. package/dist/chunk-C75W7VXX.js +42 -0
  56. package/dist/{chunk-NGPU2ARF.js → chunk-CAN3EBE5.js} +1 -1
  57. package/dist/{chunk-FR7JPYBD.js → chunk-CE4S5ZY3.js} +12 -12
  58. package/dist/{chunk-BMHGA7WD.js → chunk-CRQ73DIF.js} +12 -12
  59. package/dist/{chunk-KIAI6PWL.js → chunk-CZI2ACNT.js} +17 -17
  60. package/dist/chunk-D7MWYJZF.js +43 -0
  61. package/dist/chunk-DDAEAZEV.js +54 -0
  62. package/dist/{chunk-G2E5MNYP.js → chunk-DGKNOPSE.js} +7 -7
  63. package/dist/{chunk-UF7TAFJM.js → chunk-DQNKG4HY.js} +18 -18
  64. package/dist/{chunk-6TJCUYC5.js → chunk-DS3ZEJVN.js} +3 -3
  65. package/dist/{chunk-3QAKDIEU.js → chunk-DYWTQXP4.js} +23 -23
  66. package/dist/chunk-E25G46RW.js +54 -0
  67. package/dist/{chunk-F2FOQLJ7.js → chunk-EAQFRD2B.js} +6 -6
  68. package/dist/{chunk-W5OYJMBT.js → chunk-EATSD7YD.js} +5 -5
  69. package/dist/{chunk-YGR6OCHQ.js → chunk-EBWIOODZ.js} +8 -14
  70. package/dist/{chunk-LVGBKKSM.js → chunk-EHUYLNLC.js} +15 -15
  71. package/dist/{chunk-IDGSU7JF.js → chunk-EI4KQYJ3.js} +9 -9
  72. package/dist/{chunk-FQSRHTTC.js → chunk-EQOSXLK3.js} +15 -15
  73. package/dist/{chunk-KC5DROFC.js → chunk-EV4TEFOD.js} +14 -14
  74. package/dist/{chunk-2KDSXJFJ.js → chunk-EW7MRMD5.js} +24 -6
  75. package/dist/{chunk-FZL2HNWP.js → chunk-EZSZFI54.js} +3 -3
  76. package/dist/{chunk-MKRBG5EF.js → chunk-FMRMTI7W.js} +1 -1
  77. package/dist/{chunk-E3JYO547.js → chunk-FOQXYMOR.js} +20 -20
  78. package/dist/{chunk-G5SFOH7P.js → chunk-G3PBLW4K.js} +8 -18
  79. package/dist/{chunk-2XM6PYQQ.js → chunk-G7WZH54P.js} +33 -11
  80. package/dist/{chunk-FTV6I76U.js → chunk-GG6HIU74.js} +25 -25
  81. package/dist/{chunk-6EDQE7GO.js → chunk-GMJXC5AL.js} +2 -2
  82. package/dist/chunk-GPLFYLGH.js +130 -0
  83. package/dist/{chunk-UR7RMZ3R.js → chunk-GVFUEGGM.js} +2 -2
  84. package/dist/{chunk-WGZWR4RF.js → chunk-GWSWS264.js} +5 -5
  85. package/dist/{chunk-NPCD54I7.js → chunk-H4VJO3M2.js} +8 -5
  86. package/dist/{chunk-73VPWF5R.js → chunk-HGQZTUAC.js} +4 -4
  87. package/dist/{chunk-2RX7PI2Y.js → chunk-HOUUBE74.js} +4 -4
  88. package/dist/{chunk-BDEKREZH.js → chunk-HQMCHHY5.js} +3 -3
  89. package/dist/{chunk-DPHCFZ7W.js → chunk-HR4DVO6X.js} +3 -3
  90. package/dist/chunk-HZYFLEWO.js +39 -0
  91. package/dist/chunk-IA2RKC6I.js +279 -0
  92. package/dist/{chunk-AY2IUF4K.js → chunk-IILZ7J3L.js} +541 -64
  93. package/dist/chunk-IRW64JFF.js +247 -0
  94. package/dist/{chunk-BJPMKJTL.js → chunk-IVHN2VYG.js} +100 -2
  95. package/dist/{chunk-OEI7LVRP.js → chunk-IWZPGIGT.js} +24 -24
  96. package/dist/{chunk-QICFHVRW.js → chunk-IY4PHPHT.js} +4 -4
  97. package/dist/{chunk-ZE3P35DA.js → chunk-J27QGXO4.js} +9 -9
  98. package/dist/{chunk-BMCKL3VQ.js → chunk-JBSD57N7.js} +24 -24
  99. package/dist/{chunk-67J3VZBA.js → chunk-JEUXCIRD.js} +5 -5
  100. package/dist/{chunk-577AJVRS.js → chunk-JMOLB347.js} +1976 -282
  101. package/dist/{chunk-7EKESFWV.js → chunk-JQX6BSE4.js} +11 -11
  102. package/dist/{chunk-YXJ4XOHF.js → chunk-JRPQX2EK.js} +4 -4
  103. package/dist/{chunk-MTEBM4Y4.js → chunk-JUQHYTXN.js} +18 -12
  104. package/dist/{chunk-APSVL2AI.js → chunk-JUZ75OG4.js} +15 -15
  105. package/dist/{chunk-7GB4ZRE2.js → chunk-KIWEBM6G.js} +12 -12
  106. package/dist/{chunk-KM2FBM3T.js → chunk-KLKENMWQ.js} +282 -50
  107. package/dist/chunk-KQK6SQPE.js +48 -0
  108. package/dist/{chunk-TM7LC37P.js → chunk-KQRYW7OS.js} +179 -115
  109. package/dist/{chunk-65C57N7P.js → chunk-KU4T2CXJ.js} +19 -19
  110. package/dist/{chunk-GFXLPJWY.js → chunk-KXZR2BLL.js} +2 -2
  111. package/dist/{chunk-MGVYVW7Q.js → chunk-L7I5PKGD.js} +1 -1
  112. package/dist/{chunk-XKS6THI5.js → chunk-LDIARP6F.js} +2 -2
  113. package/dist/{chunk-NNUASOAA.js → chunk-LEHZTKB3.js} +12 -12
  114. package/dist/{chunk-FJCFYKVO.js → chunk-LS3WR2RF.js} +86 -29
  115. package/dist/{chunk-Y4BRGOJR.js → chunk-LUPW4WLK.js} +13 -10
  116. package/dist/{chunk-HE4ZQXZM.js → chunk-LVBPY2M6.js} +14 -4
  117. package/dist/{chunk-EX6ZXS5K.js → chunk-LZWVK4YY.js} +4 -4
  118. package/dist/chunk-MCWWMMLN.js +48 -0
  119. package/dist/{chunk-BXIX7S7O.js → chunk-MKC7P5LD.js} +15 -15
  120. package/dist/{chunk-JQ7XQPQS.js → chunk-MKIULIUQ.js} +4 -4
  121. package/dist/{chunk-D3PO4DOZ.js → chunk-MMB2OHUY.js} +4 -2
  122. package/dist/{chunk-MTAUZW2Z.js → chunk-MQNBEO3N.js} +210 -104
  123. package/dist/{chunk-4PJADZRR.js → chunk-MSL3CLHX.js} +16 -16
  124. package/dist/{chunk-5KTOPOEP.js → chunk-MV4637YA.js} +25 -25
  125. package/dist/{chunk-WARBF2KY.js → chunk-MYKQVS5W.js} +4 -4
  126. package/dist/{chunk-4QUQEBFT.js → chunk-MYOW3RPC.js} +6 -6
  127. package/dist/{chunk-ROTY5J2L.js → chunk-NBGBMRIS.js} +1 -1
  128. package/dist/{chunk-BUYJL3GJ.js → chunk-NBQO75XT.js} +1 -1
  129. package/dist/chunk-NCR24CPV.js +41 -0
  130. package/dist/chunk-NDW4ROST.js +38 -0
  131. package/dist/{chunk-AWECWW5Y.js → chunk-NELU7LSL.js} +13 -11
  132. package/dist/{chunk-R64GLVBO.js → chunk-NG5R2WIY.js} +10 -10
  133. package/dist/{chunk-ZZXF6OOJ.js → chunk-NH5QH3WS.js} +2 -2
  134. package/dist/{chunk-XIWYUQZQ.js → chunk-NIYB5K5B.js} +9 -9
  135. package/dist/{chunk-LDKUC2QJ.js → chunk-NR5T46ZY.js} +17 -17
  136. package/dist/{chunk-PEF5OEMB.js → chunk-NX6QEEOA.js} +4 -4
  137. package/dist/{chunk-OGRWQ562.js → chunk-O6ILVBYB.js} +2 -2
  138. package/dist/{chunk-Y7KBQ4BD.js → chunk-OFWYZH6B.js} +22 -22
  139. package/dist/{chunk-N3NBWIYQ.js → chunk-OHXTB6CO.js} +11 -9
  140. package/dist/chunk-OJN7WME4.js +34 -0
  141. package/dist/{chunk-2HMWX4T6.js → chunk-OR5VRULZ.js} +11 -11
  142. package/dist/{chunk-UBWCUP3G.js → chunk-ORZSD2KD.js} +2 -2
  143. package/dist/{chunk-V2TH46ZY.js → chunk-OXVVRJDQ.js} +12 -12
  144. package/dist/{chunk-7YYEKTYF.js → chunk-PQW7PYUR.js} +8 -8
  145. package/dist/{chunk-EZIUFEN6.js → chunk-Q32Y5T2U.js} +12 -12
  146. package/dist/{chunk-FOGG4AUR.js → chunk-QWHTTA2X.js} +23 -7
  147. package/dist/{chunk-HKTUIMH4.js → chunk-R3RVFCJ2.js} +3 -3
  148. package/dist/{chunk-J5LHDJU4.js → chunk-R3VFLYZZ.js} +7 -7
  149. package/dist/{chunk-QKEFZRHS.js → chunk-R6UTCLH5.js} +17 -17
  150. package/dist/{chunk-SS66Q4VE.js → chunk-RB2VSED2.js} +12 -12
  151. package/dist/chunk-REWZE2XI.js +53 -0
  152. package/dist/{chunk-MF7QH4AX.js → chunk-RIEFYHXI.js} +5 -5
  153. package/dist/{chunk-7F2RUWPU.js → chunk-RJDP642F.js} +1 -1
  154. package/dist/{chunk-YFSSNGLR.js → chunk-RWMSJP7H.js} +31 -29
  155. package/dist/{chunk-JMSEEBN4.js → chunk-S2FDPN32.js} +1 -1
  156. package/dist/chunk-S5LSDXV4.js +40 -0
  157. package/dist/{chunk-OJLRFGBP.js → chunk-S7ZWCMDO.js} +79 -15
  158. package/dist/{chunk-ILFKECGI.js → chunk-SG5KY4VB.js} +4 -4
  159. package/dist/{chunk-FEZE6NIA.js → chunk-SH7AZZDA.js} +18 -18
  160. package/dist/{chunk-E3Z67HRK.js → chunk-SILY6ZEZ.js} +4 -4
  161. package/dist/{chunk-5IALSMZ2.js → chunk-SINJKQSI.js} +14 -14
  162. package/dist/chunk-SIUDWWKS.js +47 -0
  163. package/dist/{chunk-XEG3FE2R.js → chunk-SKMHS4CL.js} +1 -1
  164. package/dist/chunk-SNHOLLGN.js +280 -0
  165. package/dist/{chunk-LTQANUDH.js → chunk-SUQZGPVG.js} +25 -25
  166. package/dist/{chunk-47QE246J.js → chunk-T6ESD5KM.js} +5 -5
  167. package/dist/{chunk-YVLMBAYE.js → chunk-TC3KTG33.js} +3 -3
  168. package/dist/{chunk-IV7BCWWN.js → chunk-TCADP67G.js} +3 -3
  169. package/dist/{chunk-6JLPXDWN.js → chunk-TEBBD4XH.js} +5 -5
  170. package/dist/{chunk-F7UQR4ZX.js → chunk-TGEOLIAK.js} +3 -3
  171. package/dist/{chunk-FMKKVWZD.js → chunk-TQYBXDVH.js} +2 -2
  172. package/dist/{chunk-TZDSDDSV.js → chunk-TZXHUDI6.js} +2 -2
  173. package/dist/{chunk-YMOJD5BO.js → chunk-U5PDQTLA.js} +3 -3
  174. package/dist/{chunk-CNKGYDMG.js → chunk-U6YKL7SI.js} +23 -23
  175. package/dist/{chunk-7UKVYFQ2.js → chunk-UABFFMWH.js} +8 -8
  176. package/dist/{chunk-XPEEICAO.js → chunk-UFBKJOWB.js} +15 -15
  177. package/dist/chunk-UFTQIK2J.js +43 -0
  178. package/dist/{chunk-ZP4FJHR4.js → chunk-UNFCFJMF.js} +18 -18
  179. package/dist/{chunk-IZNSAEBX.js → chunk-UTR67XU2.js} +2 -2
  180. package/dist/{chunk-6GWHKMQR.js → chunk-V4XKYGLK.js} +4 -4
  181. package/dist/{chunk-ISNZYKAS.js → chunk-VYNZED7B.js} +21 -21
  182. package/dist/{chunk-FV5YFR6I.js → chunk-WCLAOKCH.js} +9 -9
  183. package/dist/chunk-WFYHOXTB.js +29 -0
  184. package/dist/{chunk-QWVBEK4P.js → chunk-WGU6NIUV.js} +13 -13
  185. package/dist/{chunk-R4TBNKKC.js → chunk-WIMOJMAK.js} +974 -489
  186. package/dist/{chunk-XKZHAD6Y.js → chunk-WKXOEIOY.js} +15 -15
  187. package/dist/chunk-WUE6HKIU.js +790 -0
  188. package/dist/{chunk-R6B6XAKK.js → chunk-WUP77GG2.js} +4 -4
  189. package/dist/{chunk-RRVT4MPS.js → chunk-XF3DATVU.js} +18 -18
  190. package/dist/{chunk-KIHOIVST.js → chunk-XJAJQGXJ.js} +3 -3
  191. package/dist/{chunk-Y5PZHS4K.js → chunk-XKJRPVJO.js} +5 -5
  192. package/dist/{chunk-N4QZJJVB.js → chunk-XNRPCI23.js} +5 -5
  193. package/dist/{chunk-XNYNEEBR.js → chunk-XOVLGBKI.js} +18 -18
  194. package/dist/{chunk-GR6YKM55.js → chunk-XPJR74MA.js} +95 -13
  195. package/dist/{chunk-4GZXS6S2.js → chunk-XPWSNKF3.js} +226 -8
  196. package/dist/{chunk-LRS573EX.js → chunk-XR5DD5DQ.js} +4 -4
  197. package/dist/{chunk-PGKHJYOB.js → chunk-XZJE6WIT.js} +1 -1
  198. package/dist/{chunk-3GTZ2OON.js → chunk-Y5AYBGLB.js} +16 -10
  199. package/dist/{chunk-OIU657QQ.js → chunk-YLAM4HZH.js} +4 -4
  200. package/dist/{chunk-JF2NSTFO.js → chunk-YVCOQ5TZ.js} +3 -3
  201. package/dist/{chunk-F7YL2RZ4.js → chunk-YWOMGMZB.js} +23 -23
  202. package/dist/{chunk-WLIIQ2A4.js → chunk-YWZDAZMA.js} +7 -7
  203. package/dist/{chunk-JAA53T23.js → chunk-Z2EYRUOH.js} +20 -20
  204. package/dist/{chunk-UYYN2IUZ.js → chunk-Z46OXTBE.js} +6 -6
  205. package/dist/chunk-ZHWSL6SR.js +45 -0
  206. package/dist/chunk-ZJQUIG3A.js +87 -0
  207. package/dist/{chunk-T4RTWMJD.js → chunk-ZKUDS7JG.js} +5 -5
  208. package/dist/{chunk-HHUFVJF7.js → chunk-ZTNS3L5Z.js} +6 -6
  209. package/dist/files.json +471 -423
  210. package/dist/packages/sdk/npm/index.js +2300 -1983
  211. package/dist/packages/ui/dist/assets/{elk-api-Mo5w5xCa.js → elk-api-DDup23Us.js} +2 -2
  212. package/dist/packages/ui/dist/assets/{index-Bp3XhPHX.css → index-C0JEkXyN.css} +1 -1
  213. package/dist/packages/ui/dist/assets/index-mTOWhQZm.js +29 -0
  214. package/dist/packages/ui/dist/index.html +2 -2
  215. package/package.json +5 -5
  216. package/dist/chunk-26PLPSQW.js +0 -48
  217. package/dist/chunk-2G4DFUWJ.js +0 -43
  218. package/dist/chunk-2M6WXO73.js +0 -38
  219. package/dist/chunk-5F3RJCHB.js +0 -45
  220. package/dist/chunk-B2VSVN4P.js +0 -34
  221. package/dist/chunk-CITDNDIZ.js +0 -53
  222. package/dist/chunk-DAQBIK5G.js +0 -47
  223. package/dist/chunk-DZRQDNPT.js +0 -34
  224. package/dist/chunk-FLOEZA6K.js +0 -29
  225. package/dist/chunk-FNHSVBRA.js +0 -48
  226. package/dist/chunk-FPGVOSOG.js +0 -41
  227. package/dist/chunk-FZ2E5LGK.js +0 -54
  228. package/dist/chunk-HB6XSGI6.js +0 -131
  229. package/dist/chunk-HUZQDKQK.js +0 -48
  230. package/dist/chunk-L4VJ4ETL.js +0 -41
  231. package/dist/chunk-XPCWQXTY.js +0 -37
  232. package/dist/packages/ui/dist/assets/index-DM212ZbV.js +0 -29
@@ -3,26 +3,50 @@ 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
+ repoTypeOf
8
+ } from "./chunk-52WCHTVZ.js";
9
+ import {
10
+ estateFreshness
11
+ } from "./chunk-G3PBLW4K.js";
12
+ import {
13
+ readPlanProgress
14
+ } from "./chunk-LVBPY2M6.js";
15
+ import "./chunk-EW7MRMD5.js";
16
+ import {
17
+ writeRepoSpecs
18
+ } from "./chunk-IA2RKC6I.js";
19
+ import {
20
+ checkoutOf
21
+ } from "./chunk-ASKDCMW5.js";
22
+ import "./chunk-LDIARP6F.js";
23
+ import "./chunk-MYKQVS5W.js";
24
+ import "./chunk-EBWIOODZ.js";
6
25
  import {
7
26
  linkEvidenceAbout,
8
27
  linkEvidenceLines,
9
28
  loadLinkEvidence,
10
29
  writeRepoContracts
11
- } from "./chunk-GXJVY6WT.js";
30
+ } from "./chunk-BA5DTXHQ.js";
12
31
  import {
13
32
  diffLines
14
- } from "./chunk-7TGYNOXD.js";
33
+ } from "./chunk-4URR24DD.js";
15
34
  import {
16
35
  askHosts
17
- } from "./chunk-LRS573EX.js";
18
- import "./chunk-IDGSU7JF.js";
19
- import "./chunk-LK44ULGI.js";
20
- import "./chunk-47QE246J.js";
21
- import "./chunk-XQ3YIV5R.js";
22
- import "./chunk-MGVYVW7Q.js";
23
- import "./chunk-NGPU2ARF.js";
36
+ } from "./chunk-XR5DD5DQ.js";
37
+ import "./chunk-3G4YI4ZU.js";
38
+ import "./chunk-EI4KQYJ3.js";
39
+ import "./chunk-6RGIM2ZH.js";
40
+ import "./chunk-VOGCSYOI.js";
41
+ import "./chunk-T6ESD5KM.js";
42
+ import "./chunk-3LU6YCSQ.js";
43
+ import "./chunk-L7I5PKGD.js";
44
+ import "./chunk-CAN3EBE5.js";
24
45
  import {
25
46
  TARGETS_STEP,
47
+ answerReconfirmed,
48
+ answerRuleOffers,
49
+ answeredQuestionOfCall,
26
50
  catalogWithFacts,
27
51
  diffCatalogs,
28
52
  diffIsEmpty,
@@ -37,28 +61,35 @@ import {
37
61
  staleTargetQuestions,
38
62
  targetQuestionFor,
39
63
  targetsFromAnswers,
64
+ topicQuestionDrafts,
40
65
  writeCatalog
41
- } from "./chunk-AY2IUF4K.js";
42
- import "./chunk-6JLPXDWN.js";
66
+ } from "./chunk-IILZ7J3L.js";
67
+ import "./chunk-TEBBD4XH.js";
43
68
  import {
44
69
  codeLinkerFor,
45
70
  frameworkFacts,
46
71
  frameworkGaps,
47
72
  renderMap,
48
73
  trustOf
49
- } from "./chunk-4GZXS6S2.js";
50
- import "./chunk-R4TBNKKC.js";
51
- import "./chunk-NIXVDQVO.js";
52
- import "./chunk-UR7RMZ3R.js";
74
+ } from "./chunk-XPWSNKF3.js";
75
+ import "./chunk-WIMOJMAK.js";
76
+ import "./chunk-5V5BJACL.js";
77
+ import "./chunk-GVFUEGGM.js";
53
78
  import {
54
79
  baseClonePath,
55
80
  loadRepos
56
- } from "./chunk-PGKHJYOB.js";
57
- import "./chunk-MKRBG5EF.js";
58
- import "./chunk-5XDNUJ4P.js";
81
+ } from "./chunk-XZJE6WIT.js";
82
+ import "./chunk-FMRMTI7W.js";
83
+ import "./chunk-BKFGGJKA.js";
59
84
  import {
85
+ CALL_SECURITY_CHECK,
60
86
  SPEC_HEADER_SCHEMA_VERSION,
87
+ TERM_STEP,
88
+ TOPICS_STEP_ID,
89
+ callSecurityParams,
61
90
  catalogDirOf,
91
+ checkCallSecurity,
92
+ factIdPart,
62
93
  factsDirOf,
63
94
  factsRelOf,
64
95
  flowFiles,
@@ -77,18 +108,21 @@ import {
77
108
  readRepoSpec,
78
109
  readSharedMaps,
79
110
  removeFlow,
111
+ reopenQuestion,
80
112
  require_dist,
81
113
  retireQuestion,
82
114
  specFileHash,
83
115
  specRelOf,
116
+ termOfQuestion,
117
+ termQuestionDrafts,
84
118
  writeFlow,
85
119
  writeSpecHeader
86
- } from "./chunk-577AJVRS.js";
120
+ } from "./chunk-JMOLB347.js";
87
121
  import {
88
122
  LockHeldError,
89
123
  acquireLock,
90
124
  writeFileAtomic
91
- } from "./chunk-D3PO4DOZ.js";
125
+ } from "./chunk-MMB2OHUY.js";
92
126
  import {
93
127
  __toESM
94
128
  } from "./chunk-TV45EUGM.js";
@@ -97,7 +131,127 @@ import {
97
131
  var import_yaml = __toESM(require_dist(), 1);
98
132
  import { existsSync } from "node:fs";
99
133
  import { readFile, readdir, rm } from "node:fs/promises";
100
- import { join, relative, sep } from "node:path";
134
+ import { join as join2, relative, sep } from "node:path";
135
+
136
+ // packages/cli/dist/answer-reopen.js
137
+ import { stat } from "node:fs/promises";
138
+ import { join } from "node:path";
139
+ function repoOfTarget(op, target) {
140
+ const t = factIdPart(target);
141
+ const r = estateRepos(op).find((x) => factIdPart(x.id) === t || x.component !== void 0 && factIdPart(x.component) === t || (x.modules ?? []).some((m) => factIdPart(m.component) === t));
142
+ return r?.id ?? target;
143
+ }
144
+ var mtimeOf = async (path) => (await stat(path).catch(() => void 0))?.mtimeMs;
145
+ async function readNotSettled(root, repo, o = {}) {
146
+ const plan = await readPlanProgress(root, repo);
147
+ if (plan && (plan.stale || plan.done < plan.total))
148
+ return plan.stale ? `its read plan is of another commit (${plan.commit})` : `${plan.total - plan.done} of the ${plan.total} parts of its read plan are not read yet`;
149
+ const dir = factsDirOf(root);
150
+ const gaps = await mtimeOf(join(dir, `${repo}.gaps.md`));
151
+ const facts = await mtimeOf(join(dir, `${repo}.jsonl`));
152
+ if (gaps !== void 0 && (facts === void 0 || gaps >= facts))
153
+ return `its second pass (atticus map ${repo} --gaps) is planned and not read yet`;
154
+ const fresh = (await estateFreshness(root, { repos: [repo], ...o.git ? { git: o.git } : {} })).repos[0];
155
+ if (!fresh || fresh.state !== "fresh")
156
+ return `its facts aren't fresh (atticus estate fresh says ${fresh?.state ?? "not-read"})`;
157
+ return void 0;
158
+ }
159
+
160
+ // packages/cli/dist/term-lines.js
161
+ async function termsWrite(root, repo, o) {
162
+ const lines = [];
163
+ const raised = [];
164
+ const t = o.terms;
165
+ if (t) {
166
+ for (const a of t.access) {
167
+ const mine = a.repo === repo || (a.reason === "listed-no-call" ? a.owner.repo : a.call.repo) === repo;
168
+ if (!mine)
169
+ continue;
170
+ lines.push(a.reason === "caller-not-listed" ? `Access: ${a.message}. Add it to the list, or say why it calls (a finding for ${ownerOf(o.op, a.call.repo)}).` : a.reason === "caller-no-id" ? `Access (a note): ${a.message}; whether it is listed is unknown until a fact of ${a.call.repo} names its own id.` : `Access (a note): ${a.message}.`);
171
+ }
172
+ for (const p of t.possible) {
173
+ if (!p.seen.some((s) => s.repo === repo))
174
+ continue;
175
+ lines.push(`Possible link (a guess, ${p.flag}): ${p.value} is written in ${[...new Set(p.seen.map((s) => `${s.repo} (${s.at})`))].join(", ")}; a note on the repo type saying what it means links them.`);
176
+ }
177
+ const types = /* @__PURE__ */ new Map();
178
+ for (const r of new Set(t.terms.map((x) => x.repo)))
179
+ types.set(r, (await repoTypeOf(o.op, r, await o.dirOf(r)))?.id);
180
+ const all = termQuestionDrafts(t, (r) => types.get(r));
181
+ const drafts = all.filter((d) => d.terms.some((x) => x.repo === repo));
182
+ const asked = /* @__PURE__ */ new Map();
183
+ for (const d of drafts) {
184
+ const r = await raiseQuestions(root, [d.draft], {
185
+ step: TERM_STEP,
186
+ repo: d.repo,
187
+ command: o.command,
188
+ rerun: o.rerun,
189
+ at: o.at
190
+ });
191
+ const q0 = r.of[0];
192
+ if (q0)
193
+ asked.set(`${d.repo}\0${d.term}\0${d.file}`, q0.id);
194
+ for (const q of r.raised) {
195
+ raised.push(q);
196
+ lines.push(`A term nothing says the meaning of: asked ${q.id}: ${q.question} Answer it: atticus questions answer ${q.id} --option <n>${d.repoType ? `, and save the answer as a note on ${d.repoType} with atticus repo-type note ${d.repoType} --add "..."` : ""}; then ${o.rerun}.`);
197
+ }
198
+ }
199
+ for (const q of (await listQuestions(root, { step: TERM_STEP })).questions) {
200
+ if (q.state !== "open")
201
+ continue;
202
+ const about = termOfQuestion(q.question);
203
+ if (!about)
204
+ continue;
205
+ const k = `${q.repo}\0${about.term}\0${about.file}`;
206
+ const now = asked.get(k);
207
+ if (now === q.id)
208
+ continue;
209
+ const inGroup = all.find((d) => d.repo === q.repo && d.term === about.term && d.file === about.file);
210
+ if (q.repo !== repo && !(inGroup && inGroup.terms.some((x) => x.repo === repo)))
211
+ continue;
212
+ const why = now ? "the same term is asked across a changed set of repos" : "the facts now give every value it asked about a role";
213
+ await retireQuestion(root, q.id, { why, at: o.at, ...now ? { replacedBy: [now] } : {} });
214
+ lines.push(`Retired ${q.id}: ${why}.`);
215
+ }
216
+ }
217
+ if (o.join)
218
+ for (const pack of o.op.checklists)
219
+ for (const rule of pack.rules) {
220
+ if (rule.status !== "active")
221
+ continue;
222
+ if (rule.check.type !== "deterministic" || rule.check.check !== CALL_SECURITY_CHECK)
223
+ continue;
224
+ const params = callSecurityParams(rule.check.params);
225
+ if ("problem" in params) {
226
+ lines.push(`Rule ${rule.id} (${pack.name}) can't be checked: ${params.problem}.`);
227
+ continue;
228
+ }
229
+ for (const r of checkCallSecurity(params, {
230
+ repos: o.repos,
231
+ join: o.join,
232
+ systems: o.op.profiles.flatMap((p) => p.profile?.systems ?? [])
233
+ }))
234
+ if (r.call.repo === repo || r.callers.some((c) => c.repo === repo))
235
+ lines.push(ruleLine(rule.id, r, o.op));
236
+ }
237
+ return { lines, raised };
238
+ }
239
+ function ownerOf(op, repo) {
240
+ const owner = estateRepos(op).find((r) => r.id === repo)?.owner;
241
+ return owner ? `${repo}'s owner, ${owner}` : `${repo}'s owner`;
242
+ }
243
+ function ruleLine(rule, r, op) {
244
+ switch (r.outcome) {
245
+ case "pass":
246
+ return `Rule ${rule}: passes, ${r.message}.`;
247
+ case "declared":
248
+ return `Rule ${rule}: declared, ${r.message}.`;
249
+ case "finding":
250
+ return `Rule ${rule}: a finding for ${ownerOf(op, r.call.repo)}: ${r.message}.`;
251
+ }
252
+ }
253
+
254
+ // packages/cli/dist/map-render-commands.js
101
255
  var FACTS_TEMPLATE = "facts@1";
102
256
  var posix = (p) => p.split(sep).join("/");
103
257
  var HOW_WORDS = {
@@ -108,10 +262,10 @@ var HOW_WORDS = {
108
262
  path: "path",
109
263
  topic: "topic"
110
264
  };
111
- function linkChanges(repo, join2, before, after) {
265
+ function linkChanges(repo, join3, before, after) {
112
266
  const mine = (xs) => (xs ?? []).filter((x) => x.call.repo === repo);
113
- const joined = mine(join2?.joins);
114
- const how = new Map((join2?.joins ?? []).map((j) => [j.interface, j.how]));
267
+ const joined = mine(join3?.joins);
268
+ const how = new Map((join3?.joins ?? []).map((j) => [j.interface, j.how]));
115
269
  const ifaces = (rs) => new Map(rs.filter((r) => r.kind === "Interface").map((r) => [r.id, r]));
116
270
  const was = ifaces(before);
117
271
  const now = ifaces(after);
@@ -148,9 +302,9 @@ function linkChanges(repo, join2, before, after) {
148
302
  calls: {
149
303
  joined: joined.length,
150
304
  inferred: joined.filter(isGuessedJoin).length,
151
- asked: mine(join2?.asks).filter((a) => !linked.has(`${a.call.repo}|${a.call.at}`)).length,
152
- outside: mine(join2?.outside).length,
153
- missed: mine(join2?.misses).length
305
+ asked: mine(join3?.asks).filter((a) => !linked.has(`${a.call.repo}|${a.call.at}`)).length,
306
+ outside: mine(join3?.outside).length,
307
+ missed: mine(join3?.misses).length
154
308
  },
155
309
  added: [...now.values()].filter((r) => !was.has(r.id)).map((r) => line(r, true)).sort(byId),
156
310
  removed: [...was.values()].filter((r) => !now.has(r.id)).map((r) => line(r, false)).sort(byId),
@@ -188,7 +342,7 @@ function linkLines(l, report, o = {}) {
188
342
  return out;
189
343
  }
190
344
  async function writeLinksIntoReport(root, repo, links, exposure = [], evidence, shared) {
191
- const file = join(factsDirOf(root), `${repo}.verify.yaml`);
345
+ const file = join2(factsDirOf(root), `${repo}.verify.yaml`);
192
346
  const text = await readFile(file, "utf8").catch(() => void 0);
193
347
  if (text === void 0)
194
348
  return;
@@ -287,8 +441,8 @@ function kindLine(byKind) {
287
441
  async function projectFactsIntoCatalog(root, repo, facts, given = {}) {
288
442
  const op = given.op ?? await loadOrgPack(orgPackDirOf(root));
289
443
  const cacheOpts = given.cache === false ? {} : { cacheRoot: root };
290
- const existing = given.existing ?? (await readCatalog(join(catalogDirOf(root), "generated"), cacheOpts)).records;
291
- const curated = await readCatalog(join(catalogDirOf(root), "curated"), cacheOpts);
444
+ const existing = given.existing ?? (await readCatalog(join2(catalogDirOf(root), "generated"), cacheOpts)).records;
445
+ const curated = await readCatalog(join2(catalogDirOf(root), "curated"), cacheOpts);
292
446
  const everyTarget = (await listQuestions(root, { step: TARGETS_STEP })).questions;
293
447
  const answered = everyTarget.filter((q) => q.repo === repo);
294
448
  const repoType = estateRepos(op).find((r) => r.id === repo)?.type;
@@ -327,6 +481,7 @@ async function projectFactsIntoCatalog(root, repo, facts, given = {}) {
327
481
  op,
328
482
  existing,
329
483
  answered,
484
+ everyTarget,
330
485
  targets,
331
486
  ruled,
332
487
  estate,
@@ -350,7 +505,7 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
350
505
  }
351
506
  try {
352
507
  const op = await loadOrgPack(orgPackDirOf(root));
353
- const generated = join(catalogDirOf(root), "generated");
508
+ const generated = join2(catalogDirOf(root), "generated");
354
509
  const existing = await readCatalog(generated, { cacheRoot: root });
355
510
  if (isPrototypeRepo(op, repo)) {
356
511
  for (const n of prototypeLeftOut({ repo, facts, existing: [], op, decisions: [] }).notes)
@@ -372,7 +527,8 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
372
527
  }
373
528
  const rerun = `atticus verify ${repo} --write`;
374
529
  await writeRepoContracts(root, repo, o.dir, facts, (n) => io.err(n));
375
- const { answered, targets, ruled, estate, result, diff, links, evidenceProblems, sharedMaps } = await projectFactsIntoCatalog(root, repo, facts, { op, existing: existing.records });
530
+ await writeRepoSpecs(root, repo, o.dir, facts, (n) => io.err(n));
531
+ const { answered, everyTarget, targets, ruled, estate, result, diff, links, evidenceProblems, sharedMaps } = await projectFactsIntoCatalog(root, repo, facts, { op, existing: existing.records });
376
532
  for (const p of evidenceProblems)
377
533
  io.err(p);
378
534
  for (const i of result.invalid)
@@ -396,7 +552,7 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
396
552
  const files = {};
397
553
  for (const f of flows)
398
554
  for (const p of flowFiles(f)) {
399
- const text = await readFile(join(o.dir, ...p.split("/")), "utf8").catch(() => void 0);
555
+ const text = await readFile(join2(o.dir, ...p.split("/")), "utf8").catch(() => void 0);
400
556
  if (text !== void 0)
401
557
  files[p] = specFileHash(text);
402
558
  }
@@ -424,7 +580,10 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
424
580
  const asked = new Set([...loose, ...ambiguous].filter((id) => targets[id] === void 0 && !answered.some((q) => q.state === "answered" && q.id === targetId(facts, repo, id))));
425
581
  const drafted = groupedTargetDrafts(facts, result.records, op, result.join?.asks, {
426
582
  ask: asked,
427
- split: splitTargetGroups(answered)
583
+ split: splitTargetGroups(answered),
584
+ // ADR 0162 (F8): the suggestions read the estate's facts and the earlier answers.
585
+ estate: estate.repos,
586
+ questions: everyTarget
428
587
  });
429
588
  for (const t of drafted) {
430
589
  const r = await raiseQuestions(root, [t.draft], {
@@ -439,6 +598,19 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
439
598
  lines.push(t.factIds.length > 1 ? `${t.factIds.length} calls go the same way and name no target the estate has: asked once, ${q.id}: ${q.question} One answer names the target of all of them. Answer it: atticus questions answer ${q.id} --option <n>, then ${rerun}.` : named.has(t.factId) ? `A call names a target the estate doesn't have, and more than one entry serves it: asked ${q.id}: ${q.question} Answer it: atticus questions answer ${q.id} --option <n>, then ${rerun}.` : `A call names no target: asked ${q.id}: ${q.question} Answer it: atticus questions answer ${q.id} --option <n>, then ${rerun}.`);
440
599
  }
441
600
  }
601
+ for (const t of topicQuestionDrafts(repo, result.records)) {
602
+ const r = await raiseQuestions(root, [t.draft], {
603
+ step: TOPICS_STEP_ID,
604
+ repo,
605
+ command: o.command,
606
+ rerun,
607
+ at
608
+ });
609
+ for (const q of r.raised) {
610
+ raised.push(q);
611
+ lines.push(`No repo of the estate serves the other side of ${t.topic}: asked ${q.id}: ${q.question} If another team or a vendor owns it, name them: atticus questions answer ${q.id} --target <system or team id> (it goes under the system's topics in the profile, for review), then ${rerun}.`);
612
+ }
613
+ }
442
614
  for (const s of staleTargetQuestions({
443
615
  repo,
444
616
  facts,
@@ -455,6 +627,50 @@ async function writeFactsIntoCatalog(root, repo, facts, o, io) {
455
627
  });
456
628
  lines.push(`Retired ${s.id}: ${s.why}.`);
457
629
  }
630
+ const reopened = /* @__PURE__ */ new Set();
631
+ const unsettled = /* @__PURE__ */ new Map();
632
+ for (const m of result.answerMisses ?? []) {
633
+ const callerFacts = m.call.repo === repo ? facts : estate.repos.find((x) => x.repo === m.call.repo)?.facts;
634
+ const q = callerFacts ? answeredQuestionOfCall(m.call.repo, callerFacts, everyTarget, m.call.fact) : void 0;
635
+ if (!q || reopened.has(q.id))
636
+ continue;
637
+ if (answerReconfirmed(q))
638
+ continue;
639
+ const named2 = repoOfTarget(op, m.target);
640
+ if (!unsettled.has(named2))
641
+ unsettled.set(named2, await readNotSettled(root, named2));
642
+ const notYet = unsettled.get(named2);
643
+ if (notYet) {
644
+ lines.push(`${m.target} is read, but ${notYet}: ${q.id}'s answer is checked against it once the read is whole and fresh.`);
645
+ continue;
646
+ }
647
+ reopened.add(q.id);
648
+ const why = `${m.target} is read now, and no route of it serves the call: ${m.message} (${m.call.at})`;
649
+ await reopenQuestion(root, q.id, { why, at });
650
+ lines.push(`Asked again ${q.id}: ${why}. Answer it again: atticus questions answer ${q.id} --option <n> | --target <id>, then atticus verify ${m.call.repo} --write.`);
651
+ }
652
+ const typeOf = new Map(estateRepos(op).map((r) => [r.id, r.type]));
653
+ for (const offer of answerRuleOffers({
654
+ repos: [{ repo, facts }, ...estate.repos].map((r) => ({
655
+ ...r,
656
+ ...typeOf.get(r.repo) ? { type: typeOf.get(r.repo) } : {}
657
+ })),
658
+ questions: everyTarget.filter((q) => !reopened.has(q.id))
659
+ }))
660
+ if (offer.repos.includes(repo))
661
+ lines.push(offer.line);
662
+ const termed = await termsWrite(root, repo, {
663
+ op,
664
+ terms: result.terms,
665
+ repos: [{ repo, facts }, ...estate.repos],
666
+ join: result.join,
667
+ command: o.command,
668
+ rerun,
669
+ at,
670
+ dirOf: (r) => r === repo ? Promise.resolve(o.dir) : checkoutOf(root, r)
671
+ });
672
+ raised.push(...termed.raised);
673
+ lines.push(...termed.lines);
458
674
  const byKind = countByKind(diff);
459
675
  io.out(`Wrote the catalog for ${repo}: ${written.written} files written, ${written.removed} removed, ${written.unchanged} unchanged.`);
460
676
  io.out(diffIsEmpty(diff) ? " No catalog changes." : ` Records: ${kindLine(byKind)}.`);
@@ -509,15 +725,15 @@ function targetId(facts, repo, id) {
509
725
  const q = f ? targetQuestionFor(f) : void 0;
510
726
  return q ? questionId({ step: TARGETS_STEP, repo, ...q }) : void 0;
511
727
  }
512
- function joinLines(repo, join2, notes = [], o = {}) {
513
- if (!join2)
728
+ function joinLines(repo, join3, notes = [], o = {}) {
729
+ if (!join3)
514
730
  return [...notes];
515
731
  const out = [...notes];
516
- const mine = join2.joins.filter((j) => j.call.repo === repo && j.call.repo !== j.entry.repo);
517
- const into = join2.joins.filter((j) => j.entry.repo === repo && j.call.repo !== repo);
732
+ const mine = join3.joins.filter((j) => j.call.repo === repo && j.call.repo !== j.entry.repo);
733
+ const into = join3.joins.filter((j) => j.entry.repo === repo && j.call.repo !== repo);
518
734
  if (mine.length || into.length)
519
735
  out.push(`Joined across repos: ${mine.length} of ${repo}'s calls to the entries that serve them, ${into.length} calls of other repos into ${repo}, each citing both ends.`);
520
- const guessed = join2.joins.filter((j) => j.call.repo === repo && j.inferred);
736
+ const guessed = join3.joins.filter((j) => j.call.repo === repo && j.inferred);
521
737
  if (guessed.length) {
522
738
  const own = guessed.filter((j) => j.inferred.within === "repo").length;
523
739
  const where = [
@@ -533,16 +749,16 @@ function joinLines(repo, join2, notes = [], o = {}) {
533
749
  out.push(` ${j.call.at} ${what}${named} \u2192 ${j.entry.component}${there}`);
534
750
  }
535
751
  }
536
- for (const m of join2.misses)
752
+ for (const m of join3.misses)
537
753
  out.push(`Not joined: ${m.message} (${m.call.at}).`);
538
- for (const x of join2.exposure ?? [])
754
+ for (const x of join3.exposure ?? [])
539
755
  out.push(`Exposure: ${x.message}.`);
540
- for (const g of join2.gaps.slice(0, 10))
756
+ for (const g of join3.gaps.slice(0, 10))
541
757
  out.push(`Field gap: ${g.message}.`);
542
758
  return out;
543
759
  }
544
760
  async function renderRepoMap(root, repo, io) {
545
- const records = (await readCatalog(join(catalogDirOf(root), "generated"), { cacheRoot: root })).records;
761
+ const records = (await readCatalog(join2(catalogDirOf(root), "generated"), { cacheRoot: root })).records;
546
762
  const spec = await readRepoSpec(root, repo, { cacheRoot: root });
547
763
  const ofRepo = records.some((r) => r.kind === "Component" && r.repo === repo);
548
764
  if (!ofRepo && spec.flows.length === 0) {
@@ -550,7 +766,7 @@ async function renderRepoMap(root, repo, io) {
550
766
  return void 0;
551
767
  }
552
768
  let trust;
553
- const report = join(factsDirOf(root), `${repo}.verify.yaml`);
769
+ const report = join2(factsDirOf(root), `${repo}.verify.yaml`);
554
770
  if (existsSync(report)) {
555
771
  try {
556
772
  trust = trustOf((0, import_yaml.parse)(await readFile(report, "utf8")));
@@ -564,6 +780,7 @@ async function renderRepoMap(root, repo, io) {
564
780
  const url = manifest?.url && manifest.url !== "." && !manifest.url.startsWith("./") ? manifest.url : void 0;
565
781
  const codeLink = codeLinkerFor(url ? { url } : { dir: adopted ? "" : posix(relative(root, baseClonePath(root, repo))) });
566
782
  const rel = `${mapRelOf(root)}/${repo}`;
783
+ const kept = await factsOf(root, repo);
567
784
  const files = renderMap({
568
785
  repo,
569
786
  records,
@@ -579,17 +796,19 @@ async function renderRepoMap(root, repo, io) {
579
796
  } : {},
580
797
  // What the repo is built on (ADR 0124 addendum A-framework): read from the facts, since no
581
798
  // catalog record holds a framework.
582
- ...builtOnOf(await factsOf(root, repo)),
799
+ ...builtOnOf(kept),
800
+ // ADR 0163: the organisation's terms it writes, read from the facts as the frameworks are.
801
+ ...termsOfFacts(kept),
583
802
  questions: open.map((q) => ({ id: q.id, question: q.question, evidence: q.evidence })),
584
803
  paths: { map: rel, questions: questionsRelOf(root), specs: specRelOf(root, repo) },
585
804
  codeLink
586
805
  });
587
- const dir = join(mapDirOf(root), repo);
806
+ const dir = join2(mapDirOf(root), repo);
588
807
  for (const old of await listFiles(dir))
589
808
  if (!(old in files))
590
- await rm(join(dir, ...old.split("/")), { force: true });
809
+ await rm(join2(dir, ...old.split("/")), { force: true });
591
810
  for (const [path, text] of Object.entries(files)) {
592
- const full = join(dir, ...path.split("/"));
811
+ const full = join2(dir, ...path.split("/"));
593
812
  const now = await readFile(full, "utf8").catch(() => void 0);
594
813
  if (now !== text)
595
814
  await writeFileAtomic(full, text);
@@ -599,7 +818,7 @@ async function renderRepoMap(root, repo, io) {
599
818
  return paths;
600
819
  }
601
820
  async function factsOf(root, repo) {
602
- const text = await readFile(join(factsDirOf(root), `${repo}.jsonl`), "utf8").catch(() => void 0);
821
+ const text = await readFile(join2(factsDirOf(root), `${repo}.jsonl`), "utf8").catch(() => void 0);
603
822
  if (text === void 0)
604
823
  return [];
605
824
  const p = parseFacts(text);
@@ -617,6 +836,18 @@ function builtOnOf(facts) {
617
836
  const gaps = frameworkGaps(facts).map((g) => ({ framework: g.framework, question: g.question }));
618
837
  return { frameworks: { built, ...gaps.length ? { gaps } : {} } };
619
838
  }
839
+ function termsOfFacts(facts) {
840
+ const terms = facts.flatMap((f) => f.kind === "term" ? [
841
+ {
842
+ term: f.term,
843
+ value: f.value,
844
+ role: f.role,
845
+ cite: { path: f.cite.file, line: f.cite.line, commit: f.commit },
846
+ ...f.meaning ? { meaning: { path: f.meaning.file, line: f.meaning.line, commit: f.commit } } : {}
847
+ }
848
+ ] : []);
849
+ return terms.length ? { terms } : {};
850
+ }
620
851
  async function listFiles(dir) {
621
852
  const out = [];
622
853
  const walk = async (d, prefix) => {
@@ -628,7 +859,7 @@ async function listFiles(dir) {
628
859
  }
629
860
  for (const e of entries)
630
861
  if (e.isDirectory())
631
- await walk(join(d, e.name), `${prefix}${e.name}/`);
862
+ await walk(join2(d, e.name), `${prefix}${e.name}/`);
632
863
  else
633
864
  out.push(`${prefix}${e.name}`);
634
865
  };
@@ -655,5 +886,6 @@ export {
655
886
  projectFactsIntoCatalog,
656
887
  sharedLines,
657
888
  sharedReport,
889
+ termsOfFacts,
658
890
  writeFactsIntoCatalog
659
891
  };
@@ -0,0 +1,48 @@
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
+ benchFactsCommand,
8
+ benchFetch,
9
+ benchRepos,
10
+ benchResults,
11
+ benchRun,
12
+ benchSurvey,
13
+ benchVerify
14
+ } from "./chunk-DGKNOPSE.js";
15
+ import "./chunk-NELU7LSL.js";
16
+ import "./chunk-7A7IG7OA.js";
17
+ import "./chunk-Z46OXTBE.js";
18
+ import "./chunk-XKJRPVJO.js";
19
+ import "./chunk-PQW7PYUR.js";
20
+ import "./chunk-SKMHS4CL.js";
21
+ import "./chunk-EV4TEFOD.js";
22
+ import "./chunk-6N2GUZMZ.js";
23
+ import "./chunk-T6ESD5KM.js";
24
+ import "./chunk-3LU6YCSQ.js";
25
+ import "./chunk-L7I5PKGD.js";
26
+ import "./chunk-CAN3EBE5.js";
27
+ import "./chunk-IILZ7J3L.js";
28
+ import "./chunk-TEBBD4XH.js";
29
+ import "./chunk-XPWSNKF3.js";
30
+ import "./chunk-WIMOJMAK.js";
31
+ import "./chunk-5V5BJACL.js";
32
+ import "./chunk-GVFUEGGM.js";
33
+ import "./chunk-XNRPCI23.js";
34
+ import "./chunk-XZJE6WIT.js";
35
+ import "./chunk-FMRMTI7W.js";
36
+ import "./chunk-BKFGGJKA.js";
37
+ import "./chunk-JMOLB347.js";
38
+ import "./chunk-MMB2OHUY.js";
39
+ import "./chunk-TV45EUGM.js";
40
+ export {
41
+ benchFactsCommand,
42
+ benchFetch,
43
+ benchRepos,
44
+ benchResults,
45
+ benchRun,
46
+ benchSurvey,
47
+ benchVerify
48
+ };