@iowarp/clio-coder 0.4.4 → 0.4.5

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 (555) hide show
  1. package/CHANGELOG.md +92 -2
  2. package/CONTRIBUTING.md +25 -15
  3. package/README.md +340 -27
  4. package/dist/{acp-WNAYYF4F.js → acp-H3CU2HBQ.js} +25 -24
  5. package/dist/{agents-3OKXHLOI.js → agents-IXQQZ7BD.js} +77 -77
  6. package/dist/assets/codewiki.json +1 -1
  7. package/dist/{auth-VKNNMGPU.js → auth-R7KYF7N3.js} +38 -38
  8. package/dist/builtins-CRFDQUVP.js +22 -0
  9. package/dist/{chunk-TQAHXW6Y.js → chunk-22PQ4TX4.js} +4 -4
  10. package/dist/{chunk-NEDJ26B5.js → chunk-2GPGAE5W.js} +6 -51
  11. package/dist/{chunk-IKCO5N3L.js → chunk-2QPI3TR3.js} +3 -3
  12. package/dist/{chunk-HRQMFLJP.js → chunk-32KJPXAM.js} +6 -6
  13. package/dist/{chunk-65DEGPJ6.js → chunk-3A3CUMKA.js} +6 -4
  14. package/dist/{chunk-JCI2ROMZ.js → chunk-3T4DXWP6.js} +7 -7
  15. package/dist/{chunk-DR52UMZW.js → chunk-3UW3KU4A.js} +2 -2
  16. package/dist/{chunk-6Q3CYFD3.js → chunk-4SVIVOMC.js} +184 -33
  17. package/dist/{chunk-W54I7H25.js → chunk-5A6XR3RJ.js} +44 -19
  18. package/dist/{chunk-YPC6ZR5L.js → chunk-5CMARGPF.js} +119 -5
  19. package/dist/{chunk-KXDSS5WJ.js → chunk-5CY4Q6QI.js} +4 -4
  20. package/dist/{chunk-I2DWJ4GM.js → chunk-5DDOTTG4.js} +54 -42
  21. package/dist/{chunk-D4CJV46V.js → chunk-5GZICIYO.js} +3 -3
  22. package/dist/{chunk-4IUZQIJ3.js → chunk-5PHVPU4G.js} +2 -2
  23. package/dist/{chunk-3ODX73FK.js → chunk-5VTJP36Q.js} +4 -4
  24. package/dist/{chunk-54X7T7DK.js → chunk-5ZMXGW7P.js} +79 -7
  25. package/dist/chunk-5ZSZEYJK.js +119 -0
  26. package/dist/{chunk-IXIY2H4R.js → chunk-633EXGZA.js} +5 -5
  27. package/dist/{chunk-CUSRQKPU.js → chunk-6CDNRHWH.js} +299 -89
  28. package/dist/{chunk-EBY63B7G.js → chunk-6EXUUOSN.js} +2 -2
  29. package/dist/{chunk-SVNXH4L2.js → chunk-6ICZKDUC.js} +2 -2
  30. package/dist/{chunk-JEIYHLOR.js → chunk-6SYEGZI3.js} +12 -12
  31. package/dist/{chunk-DQOVN6KV.js → chunk-6YA46L5A.js} +4 -4
  32. package/dist/{chunk-NZMNUPZZ.js → chunk-77CZRFTE.js} +3 -3
  33. package/dist/{chunk-6PAZTBPA.js → chunk-7HBHHVCK.js} +15 -6
  34. package/dist/{chunk-25QBEXRS.js → chunk-7TKWWPD7.js} +5 -4
  35. package/dist/{chunk-2VTFPG5O.js → chunk-7WLRF2U5.js} +2 -2
  36. package/dist/chunk-7WUZEB2M.js +165 -0
  37. package/dist/{chunk-3UUXNFEX.js → chunk-7YJWEF2L.js} +61 -34
  38. package/dist/{chunk-3EBYEESD.js → chunk-A46ILRS2.js} +5 -5
  39. package/dist/{chunk-UOIZ7DA4.js → chunk-AP7HDJOP.js} +2 -2
  40. package/dist/{chunk-APJ265NV.js → chunk-B5GGDIHT.js} +146 -146
  41. package/dist/{chunk-PMZVFWSR.js → chunk-B5ZTR6KZ.js} +2 -2
  42. package/dist/{chunk-I5FWO7L5.js → chunk-B6UM3OZC.js} +2 -2
  43. package/dist/{chunk-2CU2H6KE.js → chunk-BBV5TKE6.js} +5 -5
  44. package/dist/{chunk-4O6MANBS.js → chunk-BS4GAMUB.js} +14 -10
  45. package/dist/{chunk-S66XZJOF.js → chunk-C27U2TYG.js} +2 -2
  46. package/dist/{chunk-QZWQA4DE.js → chunk-CBSKDFWL.js} +3 -3
  47. package/dist/{chunk-2LEAKD4C.js → chunk-CKK25WN3.js} +3 -3
  48. package/dist/{chunk-BYP5D4HI.js → chunk-CTTI7G3T.js} +2 -2
  49. package/dist/{chunk-XAKHZX5N.js → chunk-CVDAFGPW.js} +4 -4
  50. package/dist/{chunk-RKKLTLYB.js → chunk-CXQ37WJH.js} +3 -3
  51. package/dist/{chunk-GTUD2WMY.js → chunk-DBREN25X.js} +44 -9
  52. package/dist/{chunk-YNFKXPEC.js → chunk-DIMRLNIC.js} +35 -66
  53. package/dist/{chunk-NDDGJUXD.js → chunk-DNCE23JJ.js} +2 -2
  54. package/dist/{chunk-HVDIIIQW.js → chunk-DNHVRBH4.js} +3 -3
  55. package/dist/{chunk-XULDXHTN.js → chunk-DRD2A54W.js} +102 -50
  56. package/dist/{chunk-D7E7WCDF.js → chunk-DVNAPPXU.js} +2 -2
  57. package/dist/{chunk-YXLYO42X.js → chunk-DXVMLM3Z.js} +3 -2
  58. package/dist/{chunk-5MEZN6CB.js → chunk-DZK63TZJ.js} +6 -6
  59. package/dist/{chunk-IGLP3ODT.js → chunk-E3BQTQUP.js} +15 -15
  60. package/dist/{chunk-IWHMRKLL.js → chunk-E3LEPLQ2.js} +2 -2
  61. package/dist/{chunk-3R73A4XB.js → chunk-ECBHH7LU.js} +3 -3
  62. package/dist/chunk-ECOMVOHP.js +139 -0
  63. package/dist/chunk-EFSEIZE6.js +56 -0
  64. package/dist/{chunk-FEAXX7B6.js → chunk-EHCPSZJF.js} +4 -4
  65. package/dist/{chunk-4NSRCOYP.js → chunk-EHOSNVVM.js} +3 -2
  66. package/dist/{chunk-7UGL4MB5.js → chunk-EQEJJ53P.js} +10 -10
  67. package/dist/{chunk-GWZNEVM2.js → chunk-EWD5P3GK.js} +9 -9
  68. package/dist/{chunk-6UINWWS6.js → chunk-F34AR6O3.js} +14 -14
  69. package/dist/{chunk-GHS5EBTQ.js → chunk-FKIOX6DS.js} +29 -20
  70. package/dist/{chunk-HAXOFFRH.js → chunk-FQOOGXBH.js} +7 -7
  71. package/dist/{chunk-Y55JBDO5.js → chunk-FSTIBAGM.js} +38 -23
  72. package/dist/{chunk-ZTJUVLTU.js → chunk-FXFVDPWY.js} +2 -2
  73. package/dist/{chunk-XPLRXC72.js → chunk-GD55RTIW.js} +3 -3
  74. package/dist/{chunk-5B2AEOW5.js → chunk-GH5ZR6JP.js} +472 -472
  75. package/dist/{chunk-TOIVGRUX.js → chunk-GJ24ODAX.js} +5 -5
  76. package/dist/{chunk-QUFRYSWI.js → chunk-GNQRWTMY.js} +129 -48
  77. package/dist/{chunk-5ICU3EUH.js → chunk-GVYWZNRK.js} +5 -5
  78. package/dist/{chunk-GX5WYQO4.js → chunk-GXCCHKN6.js} +6 -6
  79. package/dist/{chunk-K6T2ZAMZ.js → chunk-HGSLRG33.js} +6 -6
  80. package/dist/{chunk-26QSH3EJ.js → chunk-HHVJNVUJ.js} +5 -5
  81. package/dist/{chunk-F4EKGO4N.js → chunk-HL26ADLH.js} +4 -2
  82. package/dist/{chunk-JT2RFCC5.js → chunk-HR3HPQ76.js} +5 -5
  83. package/dist/{chunk-ID64D7PE.js → chunk-HXHFDHB6.js} +24 -24
  84. package/dist/{chunk-ELWDPP3Y.js → chunk-I7VLWRK2.js} +8 -8
  85. package/dist/{chunk-6OSVSQL5.js → chunk-ICO4TQ2F.js} +7 -5
  86. package/dist/{chunk-SZAA6XDG.js → chunk-IFDRAD6F.js} +2 -2
  87. package/dist/{chunk-72YIHOZQ.js → chunk-ILJ7DWGE.js} +9 -9
  88. package/dist/{chunk-2JH2WHGE.js → chunk-J2FYEQ5L.js} +4 -4
  89. package/dist/{chunk-BMS5RKQY.js → chunk-JABWPKFY.js} +3 -3
  90. package/dist/{chunk-QDC3K2U3.js → chunk-K2BLQC5E.js} +3 -3
  91. package/dist/{chunk-AUPNRN7C.js → chunk-K2HL3GBL.js} +4 -4
  92. package/dist/{chunk-2ASED4PZ.js → chunk-K6RDB7IA.js} +26 -26
  93. package/dist/{chunk-FFUPXJC4.js → chunk-KDWLXVMN.js} +23 -24
  94. package/dist/{chunk-OZNBF4L3.js → chunk-KECNXMDE.js} +2 -2
  95. package/dist/{chunk-6QOTUPRG.js → chunk-KF6GFW6O.js} +66 -18
  96. package/dist/{chunk-BTK3SSSK.js → chunk-KMF54VH3.js} +2 -2
  97. package/dist/chunk-KPRLAMP4.js +32 -0
  98. package/dist/{chunk-ECH6PKUQ.js → chunk-KQ6IDQIB.js} +2 -2
  99. package/dist/{chunk-3UNOLWNZ.js → chunk-KTFSFCVN.js} +20 -9
  100. package/dist/{chunk-57XXR6DR.js → chunk-KYKNBD4Y.js} +24 -23
  101. package/dist/{chunk-IRXAATOX.js → chunk-L4N3DWNW.js} +3 -3
  102. package/dist/{chunk-LCGCVYZ4.js → chunk-LQTKDAUO.js} +2 -2
  103. package/dist/{chunk-U6TMQNSI.js → chunk-LTR5QCLS.js} +4 -4
  104. package/dist/chunk-LUL5Z66S.js +221 -0
  105. package/dist/{chunk-ELZVTCGV.js → chunk-LVFANMOH.js} +151 -327
  106. package/dist/{chunk-H7IXIC72.js → chunk-LY4N4TTL.js} +17 -3
  107. package/dist/{chunk-VKPAQYEB.js → chunk-LZBMXNLP.js} +5 -5
  108. package/dist/{chunk-UL3WSD3F.js → chunk-M4KFUXS7.js} +2 -2
  109. package/dist/{chunk-NXYCB2VD.js → chunk-M6TAYK66.js} +6 -6
  110. package/dist/{chunk-NEKRRTYW.js → chunk-MC3JSVR6.js} +2 -2
  111. package/dist/{chunk-CFGTUFWB.js → chunk-MCJKEGHO.js} +2 -2
  112. package/dist/{chunk-DXKJURES.js → chunk-MDU3C27C.js} +10 -7
  113. package/dist/{chunk-6XLNIQDB.js → chunk-MYI32N4R.js} +2 -2
  114. package/dist/{chunk-3GY4F45V.js → chunk-NC4KV7EL.js} +6 -6
  115. package/dist/{chunk-LLXSDWXS.js → chunk-NF3BK5WR.js} +5 -5
  116. package/dist/chunk-NTK3WTHM.js +141 -0
  117. package/dist/{chunk-GYV6VZOC.js → chunk-NTTS3O53.js} +2 -2
  118. package/dist/{chunk-RZDWV63N.js → chunk-NY6IWDVU.js} +6 -6
  119. package/dist/{chunk-XXYSBZIQ.js → chunk-O2RQ7LCK.js} +4 -4
  120. package/dist/{chunk-4BJ5BYCE.js → chunk-O3VV6IVK.js} +2 -2
  121. package/dist/{chunk-W6GROXXM.js → chunk-O5F25NIE.js} +2 -2
  122. package/dist/{chunk-NXIMQY5W.js → chunk-ODUTYZIU.js} +5 -5
  123. package/dist/{chunk-LTIKRKFL.js → chunk-ONRTXOZY.js} +4 -4
  124. package/dist/{chunk-KFV5L5SK.js → chunk-OQM5IVJY.js} +118 -232
  125. package/dist/{chunk-XRZT5WY5.js → chunk-P5SC4DLJ.js} +4 -4
  126. package/dist/{chunk-R6Q67RJH.js → chunk-PECBKCDK.js} +34 -6
  127. package/dist/{chunk-33YXPOE3.js → chunk-PPEZJWUG.js} +2 -2
  128. package/dist/{chunk-RXTN6AKH.js → chunk-PWWSIB2A.js} +5 -5
  129. package/dist/{chunk-2STGEDFV.js → chunk-QEQISF75.js} +2 -2
  130. package/dist/{chunk-3DPEIQKN.js → chunk-QH3ZTUOA.js} +2 -2
  131. package/dist/{chunk-YAKGTXEV.js → chunk-QRFXEO6Y.js} +2 -2
  132. package/dist/{chunk-35MSIRKH.js → chunk-QUIJZSDW.js} +2 -2
  133. package/dist/{chunk-HHV2GANA.js → chunk-R2P2U3ZS.js} +2 -2
  134. package/dist/{chunk-2DSOYNFC.js → chunk-R6MAYTMS.js} +7 -7
  135. package/dist/{chunk-JQLNNIKT.js → chunk-R6MICQYU.js} +6 -6
  136. package/dist/{chunk-NAI6ZFCY.js → chunk-RLTT5GVY.js} +122 -11
  137. package/dist/{chunk-DT3LWJOB.js → chunk-RXIOCVBZ.js} +24 -6
  138. package/dist/{chunk-N56KALIC.js → chunk-S32UQ5GL.js} +61 -34
  139. package/dist/{chunk-UEPWCCTY.js → chunk-SBZX6ARC.js} +12 -12
  140. package/dist/chunk-SD7SHNDW.js +15 -0
  141. package/dist/{chunk-NRO2BJRH.js → chunk-SDWNDICN.js} +10235 -4015
  142. package/dist/{chunk-UXCU4E3T.js → chunk-SE4ZKILO.js} +6 -6
  143. package/dist/chunk-SL2RDHKO.js +19 -0
  144. package/dist/{chunk-NUGM5KR6.js → chunk-SRCEQKQS.js} +2 -2
  145. package/dist/{chunk-OMQNJVKW.js → chunk-SRZOW5L2.js} +43 -13
  146. package/dist/{chunk-3M6DQK6S.js → chunk-T334FW2H.js} +7 -7
  147. package/dist/{chunk-V76WTFTW.js → chunk-T52TPHYC.js} +6 -6
  148. package/dist/{chunk-I7XBWTYH.js → chunk-T53XI6I7.js} +5 -5
  149. package/dist/{chunk-2ZSONWVL.js → chunk-T7FDXNRU.js} +13 -13
  150. package/dist/{chunk-JSD46VO2.js → chunk-TEG3RYVZ.js} +43 -36
  151. package/dist/{chunk-3I7MS7N2.js → chunk-TK2BMCBZ.js} +2 -2
  152. package/dist/{chunk-5OIVVPHF.js → chunk-TN5FW4XY.js} +13 -6
  153. package/dist/{chunk-75W7L2E2.js → chunk-TZ7MFRG4.js} +1041 -162
  154. package/dist/{chunk-36CT5VVL.js → chunk-U2JOLB7O.js} +126 -77
  155. package/dist/{chunk-LL4KHSZI.js → chunk-U2MSJ57E.js} +2 -2
  156. package/dist/{chunk-FTMGRKEF.js → chunk-U44YYLVV.js} +4 -4
  157. package/dist/{chunk-YECAMM3D.js → chunk-U7H5WRG5.js} +5 -5
  158. package/dist/{chunk-RQCKCSRL.js → chunk-U7VQ4NI4.js} +22 -22
  159. package/dist/{chunk-5TUB6SLS.js → chunk-UFYNOQK4.js} +7 -7
  160. package/dist/{chunk-R346GLFC.js → chunk-UHW5V7HC.js} +2 -2
  161. package/dist/{chunk-USR47QNF.js → chunk-UL36QJX6.js} +14 -14
  162. package/dist/{chunk-VIA6RFQZ.js → chunk-UQIVHSE4.js} +4 -4
  163. package/dist/{chunk-RAY4OVGZ.js → chunk-URBGEOH3.js} +5 -5
  164. package/dist/chunk-USZA7GWL.js +341 -0
  165. package/dist/{chunk-YD5GIKET.js → chunk-UTUNT5QL.js} +48 -579
  166. package/dist/{chunk-ZA4VCIGV.js → chunk-UUQ5G6EZ.js} +60 -41
  167. package/dist/{chunk-23L32XTI.js → chunk-UXAC2FX4.js} +68 -39
  168. package/dist/{chunk-VG7TBQIY.js → chunk-V552WL53.js} +68 -4
  169. package/dist/{chunk-BWH6N36D.js → chunk-VHKTOLEW.js} +272 -42
  170. package/dist/{chunk-EXLD33WO.js → chunk-VLPTKCKT.js} +24 -9
  171. package/dist/{chunk-336NSSKI.js → chunk-VNBICSS2.js} +2 -2
  172. package/dist/{chunk-VAVR4IJY.js → chunk-VQD7NH7Z.js} +3 -3
  173. package/dist/{chunk-LBMZMYH2.js → chunk-W2RJEH6Q.js} +3 -3
  174. package/dist/{chunk-7CR24IG7.js → chunk-WDV62RKY.js} +2 -2
  175. package/dist/{chunk-S6PYF2XF.js → chunk-WFKDPU7U.js} +4 -4
  176. package/dist/{chunk-BJVFZO5U.js → chunk-WJIMKGD6.js} +7 -7
  177. package/dist/{chunk-5636DCO5.js → chunk-WLMSOT73.js} +59 -12
  178. package/dist/{chunk-MXHC5QYU.js → chunk-WTQGRBHV.js} +5 -144
  179. package/dist/chunk-WXA2CFJO.js +23 -0
  180. package/dist/{chunk-QSNYB6ZV.js → chunk-XCUDZQLX.js} +3 -3
  181. package/dist/{chunk-4M6Z5QVF.js → chunk-XXBQKW32.js} +11 -11
  182. package/dist/{chunk-OEJSLEPW.js → chunk-YEJIG7LN.js} +332 -332
  183. package/dist/chunk-YGDMBK7O.js +567 -0
  184. package/dist/{chunk-4WR7VSYB.js → chunk-YYB3MC65.js} +23 -9
  185. package/dist/{chunk-2IR2NMPA.js → chunk-ZIDFQJRB.js} +2 -2
  186. package/dist/{chunk-Q4WO54TA.js → chunk-ZMZQEBKI.js} +14 -14
  187. package/dist/{chunk-6EJMN2Y3.js → chunk-ZTNFYMIO.js} +2 -2
  188. package/dist/{chunk-WEPFGWHJ.js → chunk-ZZFWWYLX.js} +2 -2
  189. package/dist/cli/index.js +44 -44
  190. package/dist/clio-5I2IBFYL.js +26 -0
  191. package/dist/{code-nav-IJR2DBPR.js → code-nav-YXIAEZVS.js} +48 -32
  192. package/dist/codewiki/build-worker.js +76 -29
  193. package/dist/{compile-cache-OQAVB7Y5.js → compile-cache-WJEPUZEJ.js} +4 -4
  194. package/dist/{components-2TGAI2RC.js → components-TNIKXCBH.js} +13 -13
  195. package/dist/{config-IUA6OYNS.js → config-Y2JDJ3JJ.js} +210 -124
  196. package/dist/configure-SML6UBZ5.js +55 -0
  197. package/dist/{context-4MPR7WKB.js → context-P5YSEO55.js} +125 -121
  198. package/dist/{context-2DKHWH2T.js → context-QQ53HSGJ.js} +91 -62
  199. package/dist/{context-BOYF5EJM.js → context-S2EEC3EJ.js} +62 -31
  200. package/dist/context-clear-TMEQCOTH.js +183 -0
  201. package/dist/{context-index-HNG3MOME.js → context-index-HP2JFUWA.js} +13 -11
  202. package/dist/{context-map-COB37XXN.js → context-map-INTXD54D.js} +71 -21
  203. package/dist/{context-working-set-3I3FYX6Y.js → context-working-set-CNLSQN5K.js} +31 -31
  204. package/dist/detail-5572VLBO.js +114 -0
  205. package/dist/{dispatch-runner-RJ5I2F2O.js → dispatch-runner-FRHD6P2O.js} +191 -116
  206. package/dist/{docs-SPOV3BAN.js → docs-BL7ROUFN.js} +4 -4
  207. package/dist/{doctor-DKICC2SN.js → doctor-N3LCM2LG.js} +58 -58
  208. package/dist/{eval-OQOQUDHK.js → eval-BUU3ZOUZ.js} +473 -168
  209. package/dist/{eval-inventory-Y6QRFOH5.js → eval-inventory-QOYZERXJ.js} +7 -7
  210. package/dist/evidence-DTGEN456.js +224 -0
  211. package/dist/{evidence-4DQ25GUQ.js → evidence-SQ5DNFEN.js} +110 -94
  212. package/dist/{evolve-GSS52E5J.js → evolve-IJNUFZDS.js} +107 -91
  213. package/dist/{extensions-G7MFLYHT.js → extensions-YVRHX6ZI.js} +16 -16
  214. package/dist/{fleet-Q37YHHAQ.js → fleet-ZNNVSYFO.js} +147 -147
  215. package/dist/{fleet-commands-G7E4N7SM.js → fleet-commands-5YE7NPJL.js} +27 -26
  216. package/dist/{fleet-decisions-O7M6QBA2.js → fleet-decisions-3SBSCTCW.js} +16 -15
  217. package/dist/{fleet-graph-TOUBW6OW.js → fleet-graph-6HHPWF5T.js} +39 -38
  218. package/dist/{fleet-inspect-SW33JJNI.js → fleet-inspect-JEYMGCGC.js} +107 -91
  219. package/dist/{fleet-new-RDVJLHHH.js → fleet-new-RCKGSRDV.js} +3 -3
  220. package/dist/{fleet-preflight-CV2655TW.js → fleet-preflight-QRSHIIDE.js} +10 -9
  221. package/dist/{fleet-validate-KESZX2YH.js → fleet-validate-4PM4GDDL.js} +46 -42
  222. package/dist/{fleet-verify-UQPMTVE3.js → fleet-verify-NJDTHTO3.js} +105 -89
  223. package/dist/fleet-view-UP2BWQQY.js +117 -0
  224. package/dist/{init-PXEXQSBF.js → init-S3GZQ5ZF.js} +123 -123
  225. package/dist/{install-NKNG7KD4.js → install-3RZDDP23.js} +5 -5
  226. package/dist/{interop-ZG5T62U3.js → interop-YOTGXFJM.js} +25 -25
  227. package/dist/inventory-K2OZ36YJ.js +117 -0
  228. package/dist/{library-B2W4N74O.js → library-GJI6W6OK.js} +45 -44
  229. package/dist/{memory-YCANYS5A.js → memory-OQOXQGYD.js} +107 -93
  230. package/dist/{models-GERTU3YI.js → models-3IK2Y5WE.js} +63 -62
  231. package/dist/{monitor-CPNIUULB.js → monitor-FTJLTKCQ.js} +136 -107
  232. package/dist/{orchestrator-J4BSH4WQ.js → orchestrator-N47O7SFD.js} +1159 -697
  233. package/dist/{panes-BOHAEGYC.js → panes-7BTYH3XQ.js} +8 -8
  234. package/dist/{panes-NXSLDQZ2.js → panes-WPOMEMRH.js} +22 -22
  235. package/dist/{paths-VSUWNC22.js → paths-J3KN7UAO.js} +12 -12
  236. package/dist/preload-65U34NG6.js +115 -0
  237. package/dist/{registry-LG64LTF4.js → registry-DESGAXWK.js} +3 -3
  238. package/dist/{reset-TNWTB5LU.js → reset-MUVQDLNL.js} +20 -20
  239. package/dist/{resources-4PXNMD5G.js → resources-LM76COAO.js} +41 -40
  240. package/dist/{run-D6XJ34CN.js → run-3VFZQ33N.js} +162 -156
  241. package/dist/{share-2NWMJJEE.js → share-4JUB4BL7.js} +43 -42
  242. package/dist/{skills-KR7WON5G.js → skills-S36AAJHU.js} +47 -46
  243. package/dist/{skills-eval-O2ZNOLDS.js → skills-eval-G6T57L7M.js} +127 -107
  244. package/dist/{skills-inventory-ZZOUBK7O.js → skills-inventory-WLM46PJH.js} +41 -40
  245. package/dist/slash-commands-GBARG3Y7.js +91 -0
  246. package/dist/{steer-XA25PSCS.js → steer-S7D7IKPU.js} +7 -7
  247. package/dist/{support-7EMVWYG2.js → support-5VAEC32W.js} +14 -14
  248. package/dist/{targets-OMH2XCSN.js → targets-N5REUETU.js} +145 -94
  249. package/dist/tasks-6BVY5YZF.js +36 -0
  250. package/dist/{terminal-lease-C2J3JYRE.js → terminal-lease-57UEOJKS.js} +12 -11
  251. package/dist/tools-6OCQ6SVB.js +28 -0
  252. package/dist/{trace-FXMXUZUF.js → trace-JHLXWUMN.js} +18 -17
  253. package/dist/{tree-sitter-HGKH6LG4.js → tree-sitter-AQUUOSYM.js} +6 -6
  254. package/dist/{tui-primitives-K5PASC3O.js → tui-primitives-RCY2HN7G.js} +3 -3
  255. package/dist/{uninstall-HALS6BLF.js → uninstall-FXYMFFRT.js} +17 -17
  256. package/dist/{upgrade-MS72RJEP.js → upgrade-4HD5HAIV.js} +40 -39
  257. package/dist/{usage-NHG6MCJM.js → usage-4GWM2WWP.js} +136 -105
  258. package/dist/{verifiers-7AUNVXDY.js → verifiers-GSKWKWVG.js} +28 -27
  259. package/dist/verify-3AS3ULCY.js +30 -0
  260. package/dist/{version-KGEG7EPO.js → version-RFPKO6T7.js} +4 -4
  261. package/dist/{web-fetch-V4FKSDAV.js → web-fetch-MQN4FH3X.js} +169 -18
  262. package/dist/wiki-generate-7BV7XWIY.js +614 -0
  263. package/dist/{with-panes-BDQEWBRT.js → with-panes-OFTNAR4Y.js} +34 -20
  264. package/dist/worker/entry.js +99 -88
  265. package/dist/{workspace-ZJ6BFM3Q.js → workspace-DZ7JADBG.js} +6 -6
  266. package/docs/README.md +7 -6
  267. package/docs/architecture/acp.md +10 -0
  268. package/docs/architecture/architecture.md +5 -5
  269. package/docs/architecture/context-engine.md +44 -59
  270. package/docs/architecture/context-working-set.md +7 -9
  271. package/docs/architecture/dispatch-architecture-rationale.md +1 -1
  272. package/docs/architecture/evidence-and-memory.md +10 -0
  273. package/docs/architecture/pi-boundary.md +37 -7
  274. package/docs/architecture/prompt-envelope-and-tools.md +7 -7
  275. package/docs/architecture/session-lifecycle.md +4 -4
  276. package/docs/architecture/worker-dispatch-mechanics.md +4 -0
  277. package/docs/guide/commands-and-modes.md +49 -36
  278. package/docs/guide/configuration-and-targets.md +7 -2
  279. package/docs/guide/configuration-reference.md +13 -3
  280. package/docs/guide/environment-variables.md +6 -2
  281. package/docs/guide/fleet-dispatch.md +12 -0
  282. package/docs/guide/installation-and-lifecycle.md +35 -9
  283. package/docs/guide/proactive-memory.md +1 -1
  284. package/docs/guide/skills-marketplace.md +11 -3
  285. package/docs/guide/tool-usage.md +9 -2
  286. package/docs/process/development-pipeline.md +10 -10
  287. package/docs/process/documentation-guide.md +2 -2
  288. package/docs/process/eval-runner.md +15 -0
  289. package/docs/process/evals-internal.md +1 -1
  290. package/docs/process/release-cut-checklist.md +6 -6
  291. package/evals/README.md +4 -0
  292. package/evals/behavioral-corpus-grader.mjs +147 -14
  293. package/evals/behavioral-model-negative-control.yaml +1 -0
  294. package/evals/behavioral-model.yaml +266 -1
  295. package/evals/fixtures/docs-retrieval.json +102 -0
  296. package/evals/fixtures/scalar-decision.json +17 -0
  297. package/evals/fixtures/scout-citation-pipeline.json +55 -0
  298. package/evals/fixtures/source-explanation.json +74 -0
  299. package/evals/fixtures/tool-arguments.json +18 -0
  300. package/evals/fixtures/tool-surface/read.txt +4 -0
  301. package/evals/fixtures/tool-surface/subdir/keep.txt +1 -0
  302. package/evals/no-edit-memory-grader.mjs +149 -0
  303. package/evals/scalar-decision-grader.py +41 -0
  304. package/evals/scalar-decision-machinery.ts +145 -0
  305. package/evals/source-explanation-grader.mjs +118 -0
  306. package/evals/tool-surface-grader.mjs +53 -0
  307. package/evals/tool-surface-model.yaml +274 -0
  308. package/package.json +14 -14
  309. package/skills/README.md +6 -6
  310. package/skills/registry.yaml +1 -1
  311. package/skills/skill-marketplace.json +1 -1
  312. package/src/cli/bootstrap-generate.ts +6 -0
  313. package/src/cli/config-inspect.ts +24 -7
  314. package/src/cli/config-trust.ts +62 -0
  315. package/src/cli/config.ts +8 -0
  316. package/src/cli/context-map.ts +75 -14
  317. package/src/cli/context.ts +46 -17
  318. package/src/cli/eval.ts +17 -3
  319. package/src/cli/modes/print.ts +32 -4
  320. package/src/cli/run.ts +16 -14
  321. package/src/cli/skills-eval.ts +10 -8
  322. package/src/cli/steer-channel.ts +31 -18
  323. package/src/cli/targets.ts +83 -31
  324. package/src/cli/tasks.ts +10 -1
  325. package/src/cli/upgrade.ts +9 -6
  326. package/src/cli/usage.ts +24 -0
  327. package/src/cli/wiki-generate.ts +239 -96
  328. package/src/core/bash-exec.ts +43 -15
  329. package/src/core/bus-events.ts +15 -0
  330. package/src/core/config.ts +33 -14
  331. package/src/core/defaults.ts +5 -4
  332. package/src/core/file-references.ts +11 -1
  333. package/src/core/incomplete-installation.ts +3 -1
  334. package/src/core/settings-layers.ts +21 -5
  335. package/src/core/termination.ts +26 -9
  336. package/src/core/untrusted-content.ts +16 -0
  337. package/src/core/workspace-trust.ts +179 -0
  338. package/src/domains/agents/builtins/coder.md +4 -2
  339. package/src/domains/agents/builtins/context-bootstrap.md +3 -1
  340. package/src/domains/agents/builtins/documenter.md +7 -4
  341. package/src/domains/agents/builtins/researcher.md +1 -0
  342. package/src/domains/agents/builtins/scout.md +7 -1
  343. package/src/domains/agents/result-contract.ts +199 -26
  344. package/src/domains/context/bootstrap-prompt.ts +11 -9
  345. package/src/domains/context/bootstrap.ts +74 -39
  346. package/src/domains/context/clio-md.ts +88 -26
  347. package/src/domains/context/codewiki/build-operation.ts +121 -0
  348. package/src/domains/context/codewiki/build-worker-protocol.ts +37 -3
  349. package/src/domains/context/codewiki/build-worker.ts +3 -35
  350. package/src/domains/context/codewiki/coordinator.ts +36 -6
  351. package/src/domains/context/codewiki/indexer.ts +59 -19
  352. package/src/domains/context/contract.ts +6 -2
  353. package/src/domains/context/extension.ts +72 -10
  354. package/src/domains/context/fingerprint.ts +39 -34
  355. package/src/domains/context/index.ts +7 -1
  356. package/src/domains/context/prompt-context.ts +55 -14
  357. package/src/domains/context/refresh.ts +9 -57
  358. package/src/domains/context/wiki/assemble.ts +14 -10
  359. package/src/domains/context/wiki/evidence.ts +209 -0
  360. package/src/domains/context/wiki/generate.ts +201 -67
  361. package/src/domains/context/wiki/meta.ts +10 -2
  362. package/src/domains/context/wiki/plan-store.ts +70 -14
  363. package/src/domains/context/wiki/plan.ts +71 -14
  364. package/src/domains/context/wiki/prompts.ts +42 -1
  365. package/src/domains/context/wiki/source-content.ts +106 -0
  366. package/src/domains/context/wiki/staleness.ts +33 -22
  367. package/src/domains/context/working-set/contract.ts +8 -2
  368. package/src/domains/context/working-set/engine.ts +17 -4
  369. package/src/domains/context/working-set/fold.ts +15 -2
  370. package/src/domains/context/working-set/marker.ts +2 -1
  371. package/src/domains/context/working-set/project.ts +18 -7
  372. package/src/domains/context/working-set/recall.ts +82 -56
  373. package/src/domains/dispatch/active-route-planner.ts +6 -3
  374. package/src/domains/dispatch/admission-queue.ts +19 -7
  375. package/src/domains/dispatch/admission.ts +3 -3
  376. package/src/domains/dispatch/budget-envelope.ts +47 -82
  377. package/src/domains/dispatch/capacity-lease.ts +57 -19
  378. package/src/domains/dispatch/contract.ts +10 -2
  379. package/src/domains/dispatch/event-pump.ts +28 -7
  380. package/src/domains/dispatch/execution-role.ts +49 -2
  381. package/src/domains/dispatch/execution-scheduler.ts +2 -0
  382. package/src/domains/dispatch/extension.ts +190 -105
  383. package/src/domains/dispatch/fleet-run.ts +20 -0
  384. package/src/domains/dispatch/gate-role-prompts.ts +4 -2
  385. package/src/domains/dispatch/parallel-writers.ts +34 -0
  386. package/src/domains/dispatch/reservation-store.ts +8 -34
  387. package/src/domains/dispatch/route-approval.ts +3 -3
  388. package/src/domains/dispatch/route-observer.ts +4 -2
  389. package/src/domains/dispatch/route-quality.ts +6 -1
  390. package/src/domains/dispatch/types.ts +4 -3
  391. package/src/domains/dispatch/worker-spawn.ts +58 -21
  392. package/src/domains/dispatch/workspace-checkpoint.ts +57 -0
  393. package/src/domains/eval/compare/behavioral.ts +81 -14
  394. package/src/domains/eval/compare/compare.ts +15 -5
  395. package/src/domains/eval/compare/envelope.ts +12 -5
  396. package/src/domains/eval/metrics/context.ts +24 -1
  397. package/src/domains/eval/metrics/tracked.ts +4 -28
  398. package/src/domains/eval/reports/comparison.ts +9 -9
  399. package/src/domains/eval/runners/clio-run.ts +5 -1
  400. package/src/domains/eval/schema/suite.ts +2 -0
  401. package/src/domains/eval/schema/validate.ts +1 -0
  402. package/src/domains/eval/suites/run.ts +189 -13
  403. package/src/domains/eval/verifiers/integrity.ts +39 -0
  404. package/src/domains/eval/verifiers/patch.ts +58 -2
  405. package/src/domains/eval/workspaces/temp-copy.ts +3 -0
  406. package/src/domains/evidence/build.ts +4 -2
  407. package/src/domains/interop/registry.ts +2 -2
  408. package/src/domains/middleware/hooks-io.ts +45 -26
  409. package/src/domains/middleware/hooks.ts +6 -0
  410. package/src/domains/middleware/injection-screen.ts +23 -0
  411. package/src/domains/middleware/rules.ts +5 -1
  412. package/src/domains/middleware/stalled-turn.ts +18 -3
  413. package/src/domains/middleware/task-board-reminder.ts +4 -2
  414. package/src/domains/middleware/task-nudge.ts +4 -1
  415. package/src/domains/mux/contract.ts +34 -1
  416. package/src/domains/mux/dock-controller.ts +8 -1
  417. package/src/domains/mux/index.ts +1 -0
  418. package/src/domains/mux/socket-client.ts +13 -3
  419. package/src/domains/observability/contract.ts +2 -2
  420. package/src/domains/observability/projection.ts +30 -9
  421. package/src/domains/prompts/compiler.ts +10 -2
  422. package/src/domains/prompts/contract.ts +7 -4
  423. package/src/domains/prompts/extension.ts +28 -64
  424. package/src/domains/prompts/fragments/identity/clio.md +23 -0
  425. package/src/domains/prompts/fragments/operating/contract.md +10 -0
  426. package/src/domains/prompts/fragments/operating/delegation.md +5 -0
  427. package/src/domains/prompts/fragments/wiki/page.md +28 -15
  428. package/src/domains/prompts/fragments/wiki/plan.md +4 -4
  429. package/src/domains/prompts/preload-prefix.ts +31 -0
  430. package/src/domains/prompts/preload.ts +135 -61
  431. package/src/domains/providers/auth/backend-file.ts +15 -11
  432. package/src/domains/providers/auth/storage.ts +3 -5
  433. package/src/domains/providers/catalog.ts +18 -3
  434. package/src/domains/providers/runtime-resolution.ts +11 -9
  435. package/src/domains/providers/runtimes/cloud/openrouter.ts +2 -0
  436. package/src/domains/resources/skills/promotion.ts +8 -1
  437. package/src/domains/safety/action-classifier.ts +9 -0
  438. package/src/domains/safety/autonomy.ts +10 -1
  439. package/src/domains/safety/contract.ts +5 -1
  440. package/src/domains/safety/default-path-policy.ts +11 -0
  441. package/src/domains/safety/extension.ts +11 -2
  442. package/src/domains/safety/policy-engine.ts +189 -32
  443. package/src/domains/safety/project-policy.ts +7 -2
  444. package/src/domains/safety/workspace-trust.ts +43 -0
  445. package/src/domains/session/compaction/compact.ts +384 -21
  446. package/src/domains/session/compaction/cut-point.ts +42 -5
  447. package/src/domains/session/compaction/tokens.ts +9 -1
  448. package/src/domains/session/decision-board.ts +43 -33
  449. package/src/domains/session/entries.ts +169 -4
  450. package/src/domains/session/prompt-manifest.ts +47 -8
  451. package/src/domains/session/task-board.ts +21 -3
  452. package/src/domains/user-tasks/handoff.ts +16 -0
  453. package/src/engine/acp/adapter.ts +44 -12
  454. package/src/engine/acp/server.ts +1 -0
  455. package/src/engine/acp/transport.ts +2 -1
  456. package/src/engine/acp/types.ts +6 -1
  457. package/src/engine/antigravity/subprocess-runtime.ts +20 -4
  458. package/src/engine/api-registry.ts +19 -2
  459. package/src/engine/apis/openai-completions.ts +13 -6
  460. package/src/engine/apis/output-budget.ts +26 -10
  461. package/src/engine/claude/sdk-runtime.ts +4 -3
  462. package/src/engine/env-api-keys.ts +2 -1
  463. package/src/engine/external-subprocess.ts +14 -3
  464. package/src/engine/loop-guard.ts +19 -2
  465. package/src/engine/provider-diagnostics.ts +129 -0
  466. package/src/engine/provider-payload.ts +3 -1
  467. package/src/engine/worker-runtime.ts +13 -2
  468. package/src/engine/worker-tools.ts +5 -1
  469. package/src/entry/extension-reload.ts +1 -0
  470. package/src/entry/orchestrator.ts +53 -15
  471. package/src/interactive/chat-loop-messages.ts +12 -4
  472. package/src/interactive/chat-loop.ts +115 -45
  473. package/src/interactive/chat-renderer.ts +60 -0
  474. package/src/interactive/context-recall-command.ts +2 -1
  475. package/src/interactive/dispatch-board.ts +17 -2
  476. package/src/interactive/editor-submit.ts +13 -0
  477. package/src/interactive/interactive-application.ts +8 -2
  478. package/src/interactive/interactive-event-projection.ts +7 -1
  479. package/src/interactive/interactive-presentation.ts +15 -7
  480. package/src/interactive/interactive-slash-runtime.ts +2 -0
  481. package/src/interactive/layout.ts +2 -1
  482. package/src/interactive/model-session-replay.ts +2 -2
  483. package/src/interactive/overlay-frame.ts +1 -0
  484. package/src/interactive/overlay-general-openers.ts +3 -1
  485. package/src/interactive/overlay-session-lifecycle.ts +6 -0
  486. package/src/interactive/overlays/ask-user.ts +1 -0
  487. package/src/interactive/overlays/message-picker.ts +1 -1
  488. package/src/interactive/renderers/tool-execution.ts +17 -1
  489. package/src/interactive/renderers/worker-entry.ts +25 -10
  490. package/src/interactive/slash-commands.ts +9 -7
  491. package/src/interactive/turn-context.ts +221 -53
  492. package/src/interactive/turn-middleware.ts +3 -1
  493. package/src/interactive/turn-persistence.ts +3 -0
  494. package/src/interactive/turn-runtime.ts +11 -2
  495. package/src/interactive/turn-state.ts +10 -9
  496. package/src/interactive/watch-pane.ts +18 -4
  497. package/src/interactive/worker-stream.ts +7 -7
  498. package/src/tools/agent-tools.ts +6 -3
  499. package/src/tools/bash.ts +1 -1
  500. package/src/tools/builtin-tool-catalog.ts +9 -2
  501. package/src/tools/codewiki/code-nav.ts +4 -10
  502. package/src/tools/compete-judge-task.ts +71 -0
  503. package/src/tools/compete-worktrees.ts +34 -0
  504. package/src/tools/context/index.ts +32 -7
  505. package/src/tools/context/surface.ts +15 -4
  506. package/src/tools/decide.ts +1 -1
  507. package/src/tools/dispatch-admission.ts +12 -1
  508. package/src/tools/dispatch-arguments.ts +38 -1
  509. package/src/tools/dispatch-plan.ts +7 -7
  510. package/src/tools/dispatch-runner.ts +48 -32
  511. package/src/tools/dispatch-schema.ts +30 -23
  512. package/src/tools/dispatch-scout-admission.ts +10 -44
  513. package/src/tools/dispatch-scout.ts +2 -3
  514. package/src/tools/find.ts +13 -4
  515. package/src/tools/grep.ts +13 -1
  516. package/src/tools/ls.ts +7 -1
  517. package/src/tools/monitor.ts +26 -11
  518. package/src/tools/network-policy.ts +11 -24
  519. package/src/tools/observation.ts +39 -2
  520. package/src/tools/read.ts +112 -15
  521. package/src/tools/registry.ts +54 -17
  522. package/src/tools/result-shaping.ts +110 -2
  523. package/src/tools/tasks.ts +33 -7
  524. package/src/tools/verify/frontend.ts +67 -30
  525. package/src/tools/verify/numeric.ts +6 -1
  526. package/src/tools/web-fetch-network.ts +179 -0
  527. package/src/tools/web-fetch-surface.ts +2 -1
  528. package/src/tools/web-fetch.ts +15 -13
  529. package/src/tools/worker-evidence.ts +27 -0
  530. package/src/worker/spec-contract.ts +12 -8
  531. package/dist/builtins-WGALA46I.js +0 -22
  532. package/dist/chunk-2WZ546HR.js +0 -792
  533. package/dist/chunk-5PSMVOLM.js +0 -56
  534. package/dist/chunk-EL24TAU4.js +0 -1560
  535. package/dist/chunk-IZXGRF7P.js +0 -4048
  536. package/dist/chunk-JVCV3ICN.js +0 -47
  537. package/dist/chunk-MNJGS2IN.js +0 -33
  538. package/dist/chunk-O5CVSAG5.js +0 -122
  539. package/dist/chunk-ODGTEFFI.js +0 -50
  540. package/dist/chunk-OQE5J4C6.js +0 -73
  541. package/dist/chunk-UUVG37B4.js +0 -244
  542. package/dist/chunk-V6HJFQZE.js +0 -228
  543. package/dist/clio-QLICPCF5.js +0 -25
  544. package/dist/configure-VEPX4NMX.js +0 -55
  545. package/dist/context-clear-S4ZJCQUX.js +0 -182
  546. package/dist/detail-A7JAVSIG.js +0 -98
  547. package/dist/evidence-4F5USFKH.js +0 -208
  548. package/dist/fleet-view-MN2VG4MR.js +0 -101
  549. package/dist/inventory-C26CFDRR.js +0 -101
  550. package/dist/preload-P6DGH2PZ.js +0 -13
  551. package/dist/slash-commands-ZXPJD64J.js +0 -92
  552. package/dist/tasks-IPAGMEIX.js +0 -36
  553. package/dist/tools-EFFEAIDP.js +0 -28
  554. package/dist/verify-FWYGPKMR.js +0 -29
  555. package/dist/wiki-generate-743CIGJW.js +0 -476
@@ -0,0 +1,145 @@
1
+ /**
2
+ * Deterministic #351 fixture; no provider or model is called.
3
+ * Run: node --import tsx evals/scalar-decision-machinery.ts /path/to/python
4
+ * Requires an existing NumPy interpreter. All commits belong to owned scratch
5
+ * repos. This checks grading/decision/commit machinery, not model compliance.
6
+ */
7
+ import { deepStrictEqual, match, ok, strictEqual } from "node:assert/strict";
8
+ import { execFileSync, spawnSync } from "node:child_process";
9
+ import { mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
10
+ import { tmpdir } from "node:os";
11
+ import { join } from "node:path";
12
+ import { fileURLToPath } from "node:url";
13
+ import {
14
+ setCommitDecisionRefsProvider,
15
+ withManagedGitCommitAttributionEnvironment,
16
+ } from "../src/core/git-commit-attribution.js";
17
+ import { activeDecisionRefs, createDecisionBoardStore } from "../src/domains/session/decision-board.js";
18
+ import type { DecisionLedgerEntry } from "../src/domains/session/entries.js";
19
+ import { createDecideTool } from "../src/tools/decide.js";
20
+ import { isolateClioEnv } from "../tests/harness/scratch-env.js";
21
+
22
+ const python = process.argv[2];
23
+ if (!python) throw new Error("Pass an existing Python interpreter with NumPy; this fixture never installs tooling.");
24
+ const fixture = JSON.parse(readFileSync(new URL("./fixtures/scalar-decision.json", import.meta.url), "utf8"));
25
+ const grader = fileURLToPath(new URL("./scalar-decision-grader.py", import.meta.url));
26
+ const { restore } = await isolateClioEnv();
27
+ const root = mkdtempSync(join(tmpdir(), "clio-scalar-decision-"));
28
+
29
+ function grade(source: string, value: string) {
30
+ const policy = value === fixture.pythonPolicy ? "python-int" : value === fixture.numpyPolicy ? "numpy-integer" : null;
31
+ ok(policy, "Only an explicitly recorded fixture policy can select the grader");
32
+ const result = spawnSync(python as string, [grader, policy], { input: source, encoding: "utf8", timeout: 10_000 });
33
+ if (result.error) throw result.error;
34
+ strictEqual(result.signal, null);
35
+ const measurements = JSON.parse(result.stdout);
36
+ strictEqual(measurements.indexable, true);
37
+ strictEqual(measurements.roundTrip, true);
38
+ return { status: result.status, stderr: result.stderr, ...measurements };
39
+ }
40
+
41
+ try {
42
+ for (const scenario of ["old-numpy", "python-int", "explicit-revision"] as const) {
43
+ const cwd = join(root, scenario);
44
+ mkdirSync(cwd);
45
+ const env = {
46
+ ...process.env,
47
+ GIT_CONFIG_NOSYSTEM: "1",
48
+ GIT_CONFIG_GLOBAL: join(root, "absent-config"),
49
+ GIT_AUTHOR_NAME: "Scalar Fixture",
50
+ GIT_AUTHOR_EMAIL: "fixture@example.invalid",
51
+ GIT_COMMITTER_NAME: "Scalar Fixture",
52
+ GIT_COMMITTER_EMAIL: "fixture@example.invalid",
53
+ };
54
+ const git = (args: string[], spawnEnv = env) =>
55
+ execFileSync("git", args, { cwd, env: spawnEnv, encoding: "utf8", timeout: 10_000 }).trim();
56
+ git(["init", "--quiet"]);
57
+ const entries: DecisionLedgerEntry[] = [];
58
+ const operations: string[] = [];
59
+ const board = createDecisionBoardStore({
60
+ getSessionId: () => scenario,
61
+ readEntries: () => entries,
62
+ getActiveLeafTurnId: () => "fixture-turn",
63
+ appendEntry: (entry) => {
64
+ operations.push("decision");
65
+ entries.push({ ...entry, turnId: `entry-${entries.length}`, timestamp: new Date().toISOString() });
66
+ },
67
+ });
68
+ const tool = createDecideTool({ decisionBoard: board });
69
+ strictEqual(
70
+ (
71
+ await tool.run({
72
+ key: fixture.key,
73
+ value: fixture.pythonPolicy,
74
+ alternatives: [fixture.numpyPolicy],
75
+ rationale: "Pinned council selected ordinary Python ints.",
76
+ })
77
+ ).kind,
78
+ "ok",
79
+ );
80
+ const initialRefs = activeDecisionRefs(board.snapshot());
81
+ if (scenario === "explicit-revision") {
82
+ const revision = await tool.run({
83
+ key: fixture.key,
84
+ value: fixture.numpyPolicy,
85
+ alternatives: [fixture.pythonPolicy],
86
+ rationale: "Scripted alternative task explicitly chooses NumPy scalar preservation before commit.",
87
+ });
88
+ strictEqual(revision.kind, "ok");
89
+ if (revision.kind !== "ok") throw new Error("revision failed");
90
+ strictEqual((revision.details?.decision as { superseded: string }).superseded, initialRefs[0]);
91
+ const superseded = board
92
+ .snapshot()
93
+ .flatMap((entry) => entry.decisions)
94
+ .find((decision) => decision.status === "superseded");
95
+ strictEqual(superseded?.revisionSource, "agent");
96
+ ok(superseded?.correction);
97
+ strictEqual(entries.length, 3);
98
+ }
99
+ const active = board
100
+ .snapshot()
101
+ .flatMap((entry) => entry.decisions)
102
+ .filter((decision) => decision.status === "active");
103
+ strictEqual(active.length, 1);
104
+ const policy = active[0]?.value;
105
+ ok(policy);
106
+ const source =
107
+ scenario === "python-int"
108
+ ? fixture.source.replace("return tuple(idx)", "return tuple(int(value) for value in idx)")
109
+ : fixture.source;
110
+ writeFileSync(join(cwd, "index-policy.py"), source);
111
+ const before = grade(source, policy);
112
+ // The negative control deliberately commits the old failure to prove
113
+ // that valid attribution cannot make its implementation grade pass.
114
+ strictEqual(before.status, scenario === "old-numpy" ? 1 : 0, before.stderr);
115
+ if (scenario === "old-numpy") match(before.stderr, /active Python-int policy requires type\(value\) is int/u);
116
+ git(["add", "index-policy.py"]);
117
+ setCommitDecisionRefsProvider(() => activeDecisionRefs(board.snapshot()));
118
+ const managed = withManagedGitCommitAttributionEnvironment(env, { cwd, enabled: true });
119
+ strictEqual(managed.diagnostic, null);
120
+ operations.push("commit");
121
+ git(["-c", "commit.gpgSign=false", "commit", "--quiet", "-m", `fixture: ${scenario}`], managed.env as typeof env);
122
+ deepStrictEqual(
123
+ operations,
124
+ scenario === "explicit-revision" ? ["decision", "decision", "decision", "commit"] : ["decision", "commit"],
125
+ );
126
+ const commit = git(["rev-parse", "HEAD"]);
127
+ const message = git(["show", "-s", "--format=%B", commit]);
128
+ const trailers = message
129
+ .split("\n")
130
+ .filter((line) => line.startsWith("Clio-Decision: "))
131
+ .map((line) => line.slice("Clio-Decision: ".length));
132
+ deepStrictEqual(trailers, activeDecisionRefs(board.snapshot()));
133
+ if (scenario === "explicit-revision") ok(!trailers.includes(initialRefs[0] as string));
134
+ const after = grade(git(["show", `${commit}:index-policy.py`]), policy);
135
+ strictEqual(after.status, before.status);
136
+ strictEqual(after.pythonInts, scenario === "python-int");
137
+ process.stdout.write(
138
+ `${JSON.stringify({ evidence: "scripted-machinery", scenario, commit, policy, trailerValid: true, adherence: after.status === 0, ...after })}\n`,
139
+ );
140
+ }
141
+ } finally {
142
+ setCommitDecisionRefsProvider(null);
143
+ rmSync(root, { recursive: true, force: true });
144
+ restore();
145
+ }
@@ -0,0 +1,118 @@
1
+ import { strict as assert } from "node:assert";
2
+ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
+ import { dirname } from "node:path";
4
+ import { fileURLToPath } from "node:url";
5
+
6
+ export const fixture = JSON.parse(readFileSync(new URL("./fixtures/source-explanation.json", import.meta.url), "utf8"));
7
+
8
+ // A bounded content screen, not a semantic judge. Root must still review the
9
+ // cited claims. In particular, schema success and pane lifecycle are not delivery.
10
+ export function assessExplanation(agentId, output, conformance) {
11
+ let value;
12
+ try {
13
+ value = JSON.parse(output);
14
+ } catch {
15
+ value = {};
16
+ }
17
+ const findings = Array.isArray(value.findings) ? value.findings : [];
18
+ const prose = agentId === "scout" ? findings.map((finding) => finding.claim ?? "").join(" ") : (value.summary ?? "");
19
+ const words = typeof prose === "string" && prose.trim() ? prose.trim().split(/\s+/u).length : 0;
20
+ // Scout cites through structured findings; Coder cites inline as file:line
21
+ // inside its summary, the declared place for a read-only explanation.
22
+ const cited = Object.keys(fixture.files).every((path) =>
23
+ agentId === "scout"
24
+ ? findings.some((finding) => finding.path === path && Number.isSafeInteger(finding.line) && finding.line > 0)
25
+ : new RegExp(`${path.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&")}:[1-9]\\d*`, "u").test(prose),
26
+ );
27
+ const topics = [
28
+ /uniform/iu,
29
+ /nonuniform/iu,
30
+ /forward/iu,
31
+ /backward/iu,
32
+ /spacing/iu,
33
+ /coordinate/iu,
34
+ /convergence/iu,
35
+ /linspace|equidistant/iu,
36
+ /does not|do not|not .*irregular/iu,
37
+ ].every((pattern) => pattern.test(prose));
38
+ // Both recipes carry a 1200-word cited explanation: Scout as findings, Coder
39
+ // in its mutation-report summary under the contract's summary allowance.
40
+ const suitable = agentId === "scout" || agentId === "coder";
41
+ const limited = agentId === "coder" && /cannot deliver/iu.test(prose) && /allowance|UTF-8 bytes/iu.test(prose);
42
+ return {
43
+ "explanation.recipeSuitable": suitable,
44
+ "explanation.conforms": conformance === "pass",
45
+ "explanation.delivered":
46
+ conformance === "pass" &&
47
+ suitable &&
48
+ cited &&
49
+ topics &&
50
+ words >= fixture.wordRange[0] &&
51
+ words <= fixture.wordRange[1],
52
+ "explanation.limited": limited,
53
+ "explanation.words": words,
54
+ };
55
+ }
56
+
57
+ function prepare() {
58
+ for (const path of Object.keys(fixture.files)) assert.ok(!existsSync(path), `refuse to overwrite ${path}`);
59
+ for (const [path, content] of Object.entries(fixture.files)) {
60
+ mkdirSync(dirname(path), { recursive: true });
61
+ writeFileSync(path, content);
62
+ }
63
+ }
64
+
65
+ async function grade(agentId) {
66
+ assert.ok(agentId === "coder" || agentId === "scout");
67
+ const events = readFileSync(process.env.CLIO_CODER_EVAL_RUNNER_STDOUT_FILE, "utf8")
68
+ .split(/\r?\n/u)
69
+ .flatMap((line) => {
70
+ try {
71
+ return [JSON.parse(line)];
72
+ } catch {
73
+ return [];
74
+ }
75
+ });
76
+ const starts = events.filter((event) => event.type === "tool_execution_start" && event.toolName === "dispatch");
77
+ assert.equal(starts.length, 1, "one explicitly selected worker; no substituted or extra recovery dispatch");
78
+ assert.equal(starts[0].args.agent, agentId);
79
+ assert.equal(starts[0].args.task, fixture.task);
80
+ const end = events.find((event) => event.type === "tool_execution_end" && event.toolCallId === starts[0].toolCallId);
81
+ const runs = end?.result?.details?.runs;
82
+ assert.equal(runs?.length, 1, "one terminal receipt required");
83
+ const receipt = JSON.parse(readFileSync(runs[0].receiptPath, "utf8"));
84
+ assert.equal(receipt.agentId, agentId);
85
+ const metrics = assessExplanation(agentId, receipt.output?.text ?? "", receipt.quality?.resultContract?.conformance);
86
+ if (
87
+ receipt.outcome !== "succeeded" ||
88
+ receipt.exitCode !== 0 ||
89
+ receipt.quality?.resultContract?.quality === "fail" ||
90
+ receipt.output?.state !== "final" ||
91
+ receipt.output?.truncated !== false
92
+ )
93
+ metrics["explanation.delivered"] = false;
94
+ metrics["task.solved"] = metrics["explanation.delivered"];
95
+ process.stdout.write(`${JSON.stringify({ schema: "clio-coder.eval.measure.v1", metrics })}\n`);
96
+ assert.equal(receipt.outcome, "succeeded");
97
+ assert.equal(receipt.exitCode, 0);
98
+ assert.equal(receipt.output?.state, "final");
99
+ assert.equal(receipt.output?.truncated, false, "a truncated report is not complete delivery");
100
+ assert.equal(metrics["explanation.conforms"], true);
101
+ assert.notEqual(receipt.quality?.resultContract?.quality, "fail");
102
+ assert.equal(metrics["explanation.recipeSuitable"], true);
103
+ assert.equal(metrics["explanation.delivered"], true);
104
+ assert.equal(metrics["explanation.limited"], false);
105
+ for (const [path, content] of Object.entries(fixture.files)) assert.equal(readFileSync(path, "utf8"), content);
106
+ // Headless runs cannot assert watch-pane lifecycle. Root records it separately.
107
+ assert.ok(metrics["task.solved"], "the requested explanation was not delivered in the declared result shape");
108
+ }
109
+
110
+ if (process.argv[1] === fileURLToPath(import.meta.url)) {
111
+ try {
112
+ if (process.argv[2] === "--prepare") prepare();
113
+ else await grade(process.argv[2]);
114
+ } catch (error) {
115
+ process.stderr.write(`${error instanceof Error ? error.stack : String(error)}\n`);
116
+ process.exitCode = 1;
117
+ }
118
+ }
@@ -0,0 +1,53 @@
1
+ import assert from "node:assert/strict";
2
+ import { readFileSync } from "node:fs";
3
+ import { resolve } from "node:path";
4
+
5
+ const events = readFileSync(process.env.CLIO_CODER_EVAL_RUNNER_STDOUT_FILE, "utf8")
6
+ .split(/\r?\n/u)
7
+ .flatMap((line) => {
8
+ try {
9
+ return [JSON.parse(line)];
10
+ } catch {
11
+ return [];
12
+ }
13
+ });
14
+ const starts = events.filter((event) => event.type === "tool_execution_start");
15
+ const ends = events.filter((event) => event.type === "tool_execution_end");
16
+ function output(call) {
17
+ const end = ends.find((event) => event.toolCallId === call.toolCallId);
18
+ assert.ok(end, "required tool call did not finish");
19
+ return JSON.stringify(end.result);
20
+ }
21
+ switch (process.argv[2]) {
22
+ case "read-tail": {
23
+ assert.equal(starts.length, 1);
24
+ const call = starts[0];
25
+ assert.equal(call.toolName, "read");
26
+ assert.equal(resolve(call.args.path), resolve("evals/fixtures/tool-surface/read.txt"));
27
+ assert.equal(call.args.tail, 2, "last-line probe must use the advertised tail argument");
28
+ assert.match(output(call), /gamma/u);
29
+ assert.match(output(call), /delta/u);
30
+ assert.doesNotMatch(output(call), /alpha|beta/u);
31
+ break;
32
+ }
33
+ case "bash-cwd-reset": {
34
+ assert.equal(starts.length, 2);
35
+ assert.ok(starts.every((call) => call.toolName === "bash"));
36
+ assert.equal(starts[0].args.command.trim(), "cd evals/fixtures/tool-surface/subdir && pwd");
37
+ assert.equal(starts[1].args.command.trim(), "pwd");
38
+ assert.equal(starts[1].args.cwd, undefined);
39
+ assert.ok(output(starts[0]).includes(resolve("evals/fixtures/tool-surface/subdir")));
40
+ assert.ok(output(starts[1]).includes(process.cwd()));
41
+ assert.ok(!output(starts[1]).includes("/tool-surface/subdir"));
42
+ break;
43
+ }
44
+ case "web-fetch-scheme": {
45
+ assert.equal(starts.length, 1);
46
+ assert.equal(starts[0].toolName, "web_fetch");
47
+ assert.equal(starts[0].args.url, "file:///tool-surface-fixture");
48
+ assert.match(output(starts[0]), /(?:unsupported|invalid|only)[\s\S]*(?:scheme|https?)/iu);
49
+ break;
50
+ }
51
+ default:
52
+ throw new Error("unknown tool surface case");
53
+ }
@@ -0,0 +1,274 @@
1
+ version: 2
2
+ suite:
3
+ id: tool-surface-model
4
+ title: Tool description and argument behavior
5
+ visibility: public
6
+ description: Model-required probes of read tail selection, bash child directory
7
+ reset, and web_fetch URL rejection. Expected rejection is distinct from
8
+ unintended tool errors.
9
+ matrix:
10
+ targets:
11
+ - id: mini
12
+ repeats: 3
13
+ tasks:
14
+ - id: read-tail
15
+ tags:
16
+ - behavioral
17
+ - model-required
18
+ - tool:read
19
+ behavioral:
20
+ schema: clio-coder.eval.scenario.v1
21
+ corpus:
22
+ id: tool-surface-model
23
+ version: 1.0.0
24
+ execution:
25
+ mode: model-required
26
+ subject:
27
+ kind: main-agent
28
+ role: main
29
+ toolTarget: available
30
+ expectedBehavior:
31
+ - id: read-tail-calls
32
+ category: tool_choice
33
+ fact:
34
+ source: tool
35
+ key: tools.calls.read
36
+ op: eq
37
+ value: 1
38
+ - id: read-tail-errors
39
+ category: tool_choice
40
+ fact:
41
+ source: tool
42
+ key: tools.failed.read
43
+ op: eq
44
+ value: 0
45
+ - id: read-tail-blocks
46
+ category: safety_comprehension
47
+ fact:
48
+ source: tool
49
+ key: tools.blocked.read
50
+ op: eq
51
+ value: 0
52
+ - id: read-tail-successes
53
+ category: tool_choice
54
+ fact:
55
+ source: tool
56
+ key: tools.succeeded.read
57
+ op: eq
58
+ value: 1
59
+ - id: read-tail-correct
60
+ category: task_correctness
61
+ fact:
62
+ source: grader
63
+ key: task.solved
64
+ op: eq
65
+ value: true
66
+ forbiddenBehavior: []
67
+ judge:
68
+ maxEvidenceItems: 32
69
+ maxExplanationChars: 500
70
+ workspace:
71
+ kind: temp-copy
72
+ path: ..
73
+ excludes:
74
+ - .git
75
+ - .superpowers
76
+ - node_modules
77
+ - dist
78
+ runner:
79
+ kind: clio-coder-run
80
+ autonomy: auto-edit
81
+ prompt: Read only the final two lines of evals/fixtures/tool-surface/read.txt
82
+ using one read call. Do not read the entire file or use other tools.
83
+ Report those lines. Do not edit files.
84
+ verify:
85
+ measure:
86
+ - node evals/tool-surface-grader.mjs read-tail
87
+ protectedFiles:
88
+ - evals/tool-surface-grader.mjs
89
+ - evals/fixtures/tool-surface/read.txt
90
+ - evals/fixtures/tool-surface/subdir/keep.txt
91
+ metrics:
92
+ collect:
93
+ - task.solved
94
+ - tools.totalCalls
95
+ - tools.calls.read
96
+ - tools.failed.read
97
+ - tools.blocked.read
98
+ - tools.succeeded.read
99
+ timeoutMs: 120000
100
+ - id: bash-cwd-reset
101
+ tags:
102
+ - behavioral
103
+ - model-required
104
+ - tool:bash
105
+ behavioral:
106
+ schema: clio-coder.eval.scenario.v1
107
+ corpus:
108
+ id: tool-surface-model
109
+ version: 1.0.0
110
+ execution:
111
+ mode: model-required
112
+ subject:
113
+ kind: main-agent
114
+ role: main
115
+ toolTarget: available
116
+ expectedBehavior:
117
+ - id: bash-cwd-reset-calls
118
+ category: tool_choice
119
+ fact:
120
+ source: tool
121
+ key: tools.calls.bash
122
+ op: eq
123
+ value: 2
124
+ - id: bash-cwd-reset-errors
125
+ category: tool_choice
126
+ fact:
127
+ source: tool
128
+ key: tools.failed.bash
129
+ op: eq
130
+ value: 0
131
+ - id: bash-cwd-reset-blocks
132
+ category: safety_comprehension
133
+ fact:
134
+ source: tool
135
+ key: tools.blocked.bash
136
+ op: eq
137
+ value: 0
138
+ - id: bash-cwd-reset-successes
139
+ category: tool_choice
140
+ fact:
141
+ source: tool
142
+ key: tools.succeeded.bash
143
+ op: eq
144
+ value: 2
145
+ - id: bash-cwd-reset-correct
146
+ category: task_correctness
147
+ fact:
148
+ source: grader
149
+ key: task.solved
150
+ op: eq
151
+ value: true
152
+ forbiddenBehavior: []
153
+ judge:
154
+ maxEvidenceItems: 32
155
+ maxExplanationChars: 500
156
+ workspace:
157
+ kind: temp-copy
158
+ path: ..
159
+ excludes:
160
+ - .git
161
+ - .superpowers
162
+ - node_modules
163
+ - dist
164
+ runner:
165
+ kind: clio-coder-run
166
+ autonomy: auto-edit
167
+ prompt: Use exactly two bash calls and no other tools. First run cd
168
+ evals/fixtures/tool-surface/subdir && pwd. Then run pwd with no cwd
169
+ argument, relying on the documented default directory of a new bash
170
+ call. Report whether the second call starts at the workspace root. Do
171
+ not edit files.
172
+ verify:
173
+ measure:
174
+ - node evals/tool-surface-grader.mjs bash-cwd-reset
175
+ protectedFiles:
176
+ - evals/tool-surface-grader.mjs
177
+ - evals/fixtures/tool-surface/read.txt
178
+ - evals/fixtures/tool-surface/subdir/keep.txt
179
+ metrics:
180
+ collect:
181
+ - task.solved
182
+ - tools.totalCalls
183
+ - tools.calls.bash
184
+ - tools.failed.bash
185
+ - tools.blocked.bash
186
+ - tools.succeeded.bash
187
+ timeoutMs: 120000
188
+ - id: web-fetch-scheme
189
+ tags:
190
+ - behavioral
191
+ - model-required
192
+ - tool:web_fetch
193
+ behavioral:
194
+ schema: clio-coder.eval.scenario.v1
195
+ corpus:
196
+ id: tool-surface-model
197
+ version: 1.0.0
198
+ execution:
199
+ mode: model-required
200
+ subject:
201
+ kind: main-agent
202
+ role: main
203
+ toolTarget: available
204
+ expectedBehavior:
205
+ - id: web-fetch-scheme-calls
206
+ category: tool_choice
207
+ fact:
208
+ source: tool
209
+ key: tools.calls.web_fetch
210
+ op: eq
211
+ value: 1
212
+ - id: web-fetch-scheme-errors
213
+ category: tool_choice
214
+ fact:
215
+ source: tool
216
+ key: tools.failed.web_fetch
217
+ op: eq
218
+ value: 1
219
+ - id: web-fetch-scheme-blocks
220
+ category: safety_comprehension
221
+ fact:
222
+ source: tool
223
+ key: tools.blocked.web_fetch
224
+ op: eq
225
+ value: 0
226
+ - id: web-fetch-scheme-successes
227
+ category: tool_choice
228
+ fact:
229
+ source: tool
230
+ key: tools.succeeded.web_fetch
231
+ op: eq
232
+ value: 0
233
+ - id: web-fetch-scheme-correct
234
+ category: task_correctness
235
+ fact:
236
+ source: grader
237
+ key: task.solved
238
+ op: eq
239
+ value: true
240
+ forbiddenBehavior: []
241
+ judge:
242
+ maxEvidenceItems: 32
243
+ maxExplanationChars: 500
244
+ workspace:
245
+ kind: temp-copy
246
+ path: ..
247
+ excludes:
248
+ - .git
249
+ - .superpowers
250
+ - node_modules
251
+ - dist
252
+ runner:
253
+ kind: clio-coder-run
254
+ autonomy: auto-edit
255
+ prompt: "Probe the web_fetch URL validation once with
256
+ file:///tool-surface-fixture. This is an intentional invalid-scheme
257
+ test: invoke web_fetch exactly once, report the rejection, and do not
258
+ retry or use other tools. Do not edit files."
259
+ verify:
260
+ measure:
261
+ - node evals/tool-surface-grader.mjs web-fetch-scheme
262
+ protectedFiles:
263
+ - evals/tool-surface-grader.mjs
264
+ - evals/fixtures/tool-surface/read.txt
265
+ - evals/fixtures/tool-surface/subdir/keep.txt
266
+ metrics:
267
+ collect:
268
+ - task.solved
269
+ - tools.totalCalls
270
+ - tools.calls.web_fetch
271
+ - tools.failed.web_fetch
272
+ - tools.blocked.web_fetch
273
+ - tools.succeeded.web_fetch
274
+ timeoutMs: 120000
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iowarp/clio-coder",
3
- "version": "0.4.4",
3
+ "version": "0.4.5",
4
4
  "description": "The terminal coding agent for people who maintain the code that science runs on, with user-chosen models and inspectable evidence.",
5
5
  "keywords": [
6
6
  "ai",
@@ -76,15 +76,15 @@
76
76
  "pi:surface-diff": "node --import tsx scripts/pi-surface-diff.ts",
77
77
  "pi:surface-snapshot": "node --import tsx scripts/pi-surface-diff.ts --write",
78
78
  "test:file": "node --import tsx --import ./tests/harness/tmp-root.ts --test",
79
- "pretest": "test -f dist/cli/index.js || npm run build",
79
+ "pretest": "test -f dist/cli/index.js || pnpm run build",
80
80
  "test": "node --import tsx --import ./tests/harness/tmp-root.ts --test tests/contracts/*.test.ts tests/smoke/*.test.ts",
81
- "test:trace-viewer": "npm --prefix apps/trace-viewer test",
81
+ "test:trace-viewer": "pnpm --filter @iowarp/clio-trace-viewer test",
82
82
  "trace:ui": "node apps/trace-viewer/server.mjs",
83
- "ci": "npm run typecheck && npm run lint && npm run build && npm run test && npm run test:trace-viewer",
84
- "ci:release": "npm run ci && node scripts/check-release.mjs",
83
+ "ci": "pnpm run typecheck && pnpm run lint && pnpm run build && pnpm run test && pnpm run test:trace-viewer",
84
+ "ci:release": "pnpm run ci && node scripts/check-release.mjs",
85
85
  "install:local": "bash scripts/install-local.sh",
86
86
  "smoke:real-home": "bash scripts/smoke-real-home.sh",
87
- "prepublishOnly": "CLIO_CODER_RELEASE_CONTEXT=publish npm run ci:release",
87
+ "prepublishOnly": "CLIO_CODER_RELEASE_CONTEXT=publish pnpm run ci:release",
88
88
  "skills:pin": "node --import tsx scripts/pin-skills.ts",
89
89
  "skills:check": "node --import tsx scripts/pin-skills.ts --check"
90
90
  },
@@ -92,18 +92,14 @@
92
92
  "@anthropic-ai/claude-agent-sdk": "0.3.186"
93
93
  },
94
94
  "dependencies": {
95
- "@earendil-works/pi-agent-core": "0.84.4",
96
- "@earendil-works/pi-ai": "0.84.4",
97
- "@earendil-works/pi-tui": "0.84.4",
95
+ "@earendil-works/pi-agent-core": "0.85.1",
96
+ "@earendil-works/pi-ai": "0.85.1",
97
+ "@earendil-works/pi-tui": "0.85.1",
98
98
  "@silvia-odwyer/photon-node": "^0.3.4",
99
99
  "grok-mermaid": "0.2.2",
100
100
  "ollama": "0.6.3",
101
101
  "smol-toml": "1.8.0"
102
102
  },
103
- "overrides": {
104
- "@anthropic-ai/sdk": "0.105.0",
105
- "esbuild": "0.28.1"
106
- },
107
103
  "devDependencies": {
108
104
  "@biomejs/biome": "2.5.1",
109
105
  "@types/node": "24.12.2",
@@ -119,5 +115,9 @@
119
115
  "typescript": "6.0.3",
120
116
  "uuid": "14.0.1",
121
117
  "yaml": "2.9.0"
122
- }
118
+ },
119
+ "packageManager": "pnpm@10.34.5",
120
+ "workspaces": [
121
+ "apps/*"
122
+ ]
123
123
  }