@ashlr/hub 3.4.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/CHANGELOG.md +107 -1
  2. package/README.md +3 -0
  3. package/dist/build-identity.json +2 -2
  4. package/dist/cli/index.js +11 -0
  5. package/dist/cli/index.js.map +1 -1
  6. package/dist/cli/local-runtime.js +40 -9
  7. package/dist/cli/local-runtime.js.map +1 -1
  8. package/dist/core/fleet/external-skill-audit.js +1 -1
  9. package/dist/core/fleet/external-skill-audit.js.map +1 -1
  10. package/dist/core/local-eval/classify.d.ts +57 -0
  11. package/dist/core/local-eval/classify.js +121 -0
  12. package/dist/core/local-eval/classify.js.map +1 -0
  13. package/dist/core/local-eval/configuration.d.ts +37 -0
  14. package/dist/core/local-eval/configuration.js +171 -0
  15. package/dist/core/local-eval/configuration.js.map +1 -0
  16. package/dist/core/local-eval/index.d.ts +15 -0
  17. package/dist/core/local-eval/index.js +16 -0
  18. package/dist/core/local-eval/index.js.map +1 -0
  19. package/dist/core/local-eval/main.d.ts +31 -0
  20. package/dist/core/local-eval/main.js +174 -0
  21. package/dist/core/local-eval/main.js.map +1 -0
  22. package/dist/core/local-eval/report.d.ts +25 -0
  23. package/dist/core/local-eval/report.js +157 -0
  24. package/dist/core/local-eval/report.js.map +1 -0
  25. package/dist/core/local-eval/runner.d.ts +55 -0
  26. package/dist/core/local-eval/runner.js +290 -0
  27. package/dist/core/local-eval/runner.js.map +1 -0
  28. package/dist/core/local-eval/tasks.d.ts +22 -0
  29. package/dist/core/local-eval/tasks.js +303 -0
  30. package/dist/core/local-eval/tasks.js.map +1 -0
  31. package/dist/core/local-eval/trace.d.ts +67 -0
  32. package/dist/core/local-eval/trace.js +309 -0
  33. package/dist/core/local-eval/trace.js.map +1 -0
  34. package/dist/core/local-eval/types.d.ts +262 -0
  35. package/dist/core/local-eval/types.js +23 -0
  36. package/dist/core/local-eval/types.js.map +1 -0
  37. package/dist/core/local-runtime/llama/anthropic-proxy-host.d.ts +68 -0
  38. package/dist/core/local-runtime/llama/anthropic-proxy-host.js +120 -0
  39. package/dist/core/local-runtime/llama/anthropic-proxy-host.js.map +1 -0
  40. package/dist/core/local-runtime/llama/anthropic-proxy-process.d.ts +15 -0
  41. package/dist/core/local-runtime/llama/anthropic-proxy-process.js +21 -0
  42. package/dist/core/local-runtime/llama/anthropic-proxy-process.js.map +1 -0
  43. package/dist/core/local-runtime/llama/anthropic-proxy.d.ts +2 -1
  44. package/dist/core/local-runtime/llama/anthropic-proxy.js +14 -6
  45. package/dist/core/local-runtime/llama/anthropic-proxy.js.map +1 -1
  46. package/dist/core/local-runtime/llama/anthropic-shim.d.ts +33 -0
  47. package/dist/core/local-runtime/llama/anthropic-shim.js +59 -0
  48. package/dist/core/local-runtime/llama/anthropic-shim.js.map +1 -1
  49. package/dist/core/local-runtime/llama/config.d.ts +123 -6
  50. package/dist/core/local-runtime/llama/config.js +196 -6
  51. package/dist/core/local-runtime/llama/config.js.map +1 -1
  52. package/dist/core/local-runtime/llama/index.d.ts +15 -0
  53. package/dist/core/local-runtime/llama/index.js +13 -0
  54. package/dist/core/local-runtime/llama/index.js.map +1 -1
  55. package/dist/core/local-runtime/llama/paths.d.ts +17 -0
  56. package/dist/core/local-runtime/llama/paths.js +25 -0
  57. package/dist/core/local-runtime/llama/paths.js.map +1 -1
  58. package/dist/core/local-runtime/llama/proxy-invocation.d.ts +101 -0
  59. package/dist/core/local-runtime/llama/proxy-invocation.js +134 -0
  60. package/dist/core/local-runtime/llama/proxy-invocation.js.map +1 -0
  61. package/dist/core/local-runtime/llama/proxy-launchd.d.ts +83 -0
  62. package/dist/core/local-runtime/llama/proxy-launchd.js +216 -0
  63. package/dist/core/local-runtime/llama/proxy-launchd.js.map +1 -0
  64. package/dist/core/local-runtime/llama/shapes.d.ts +2 -1
  65. package/dist/core/local-runtime/llama/shapes.js +2 -1
  66. package/dist/core/local-runtime/llama/shapes.js.map +1 -1
  67. package/dist/core/verse/adapters/claude.js +16 -0
  68. package/dist/core/verse/adapters/claude.js.map +1 -1
  69. package/dist/core/verse/adapters/codex.js +60 -2
  70. package/dist/core/verse/adapters/codex.js.map +1 -1
  71. package/dist/core/verse/adapters/grok.js +13 -0
  72. package/dist/core/verse/adapters/grok.js.map +1 -1
  73. package/dist/core/verse/control-api.d.ts +8 -9
  74. package/dist/core/verse/control-api.js +14 -114
  75. package/dist/core/verse/control-api.js.map +1 -1
  76. package/dist/core/verse/github-api.d.ts +50 -0
  77. package/dist/core/verse/github-api.js +211 -0
  78. package/dist/core/verse/github-api.js.map +1 -0
  79. package/dist/core/verse/github-proposal.d.ts +64 -0
  80. package/dist/core/verse/github-proposal.js +186 -0
  81. package/dist/core/verse/github-proposal.js.map +1 -0
  82. package/dist/core/verse/github-repo.d.ts +104 -0
  83. package/dist/core/verse/github-repo.js +476 -0
  84. package/dist/core/verse/github-repo.js.map +1 -0
  85. package/dist/core/verse/github-types.d.ts +174 -0
  86. package/dist/core/verse/github-types.js +31 -0
  87. package/dist/core/verse/github-types.js.map +1 -0
  88. package/dist/core/verse/mcp-cli-health.d.ts +149 -0
  89. package/dist/core/verse/mcp-cli-health.js +227 -0
  90. package/dist/core/verse/mcp-cli-health.js.map +1 -0
  91. package/dist/core/verse/mcp-control-api.d.ts +68 -0
  92. package/dist/core/verse/mcp-control-api.js +322 -0
  93. package/dist/core/verse/mcp-control-api.js.map +1 -0
  94. package/dist/core/verse/mcp-mutation.d.ts +187 -0
  95. package/dist/core/verse/mcp-mutation.js +471 -0
  96. package/dist/core/verse/mcp-mutation.js.map +1 -0
  97. package/dist/core/verse/mcp-scope.d.ts +114 -0
  98. package/dist/core/verse/mcp-scope.js +149 -0
  99. package/dist/core/verse/mcp-scope.js.map +1 -0
  100. package/dist/core/verse/mcp-seat-view.d.ts +197 -0
  101. package/dist/core/verse/mcp-seat-view.js +322 -0
  102. package/dist/core/verse/mcp-seat-view.js.map +1 -0
  103. package/dist/core/verse/path-guard.d.ts +115 -0
  104. package/dist/core/verse/path-guard.js +171 -0
  105. package/dist/core/verse/path-guard.js.map +1 -0
  106. package/dist/core/verse/seats.js +30 -2
  107. package/dist/core/verse/seats.js.map +1 -1
  108. package/dist/core/verse/session-engine.js +60 -1
  109. package/dist/core/verse/session-engine.js.map +1 -1
  110. package/dist/core/verse/session-store.js +20 -0
  111. package/dist/core/verse/session-store.js.map +1 -1
  112. package/dist/core/verse/types.d.ts +225 -1
  113. package/dist/core/verse/types.js +26 -0
  114. package/dist/core/verse/types.js.map +1 -1
  115. package/dist/core/verse/verse-api.d.ts +16 -1
  116. package/dist/core/verse/verse-api.js +338 -16
  117. package/dist/core/verse/verse-api.js.map +1 -1
  118. package/dist/core/verse/workspaces.d.ts +130 -0
  119. package/dist/core/verse/workspaces.js +501 -0
  120. package/dist/core/verse/workspaces.js.map +1 -0
  121. package/dist/core/web/api.js +23 -0
  122. package/dist/core/web/api.js.map +1 -1
  123. package/dist/core/web/public/next/assets/App-BbVoUCIi.js +7 -0
  124. package/dist/core/web/public/next/assets/App-BbVoUCIi.js.map +1 -0
  125. package/dist/core/web/public/next/assets/App-Cgi6j1Gk.css +1 -0
  126. package/dist/core/web/public/next/assets/ApprovalsSection-BW9iVjUa.js +2 -0
  127. package/dist/core/web/public/next/assets/ApprovalsSection-BW9iVjUa.js.map +1 -0
  128. package/dist/core/web/public/next/assets/ApprovalsSection-Su-NUTis.css +1 -0
  129. package/dist/core/web/public/next/assets/AutonomySection-CRqHUhED.js +2 -0
  130. package/dist/core/web/public/next/assets/AutonomySection-CRqHUhED.js.map +1 -0
  131. package/dist/core/web/public/next/assets/AutonomySection-Cpk_oEhc.css +1 -0
  132. package/dist/core/web/public/next/assets/ChatSection-5irrh6Jw.js +80 -0
  133. package/dist/core/web/public/next/assets/ChatSection-5irrh6Jw.js.map +1 -0
  134. package/dist/core/web/public/next/assets/ChatSection-LQiAn6Eu.css +1 -0
  135. package/dist/core/web/public/next/assets/ConfirmDialog-CXevY3Au.js +2 -0
  136. package/dist/core/web/public/next/assets/ConfirmDialog-CXevY3Au.js.map +1 -0
  137. package/dist/core/web/public/next/assets/{ConfirmDialog-cYuivhCX.css → ConfirmDialog-Dx15x0Ho.css} +1 -1
  138. package/dist/core/web/public/next/assets/Dialog-Bn0CgEGz.js +2 -0
  139. package/dist/core/web/public/next/assets/Dialog-Bn0CgEGz.js.map +1 -0
  140. package/dist/core/web/public/next/assets/Dialog-tQ8kFulD.css +1 -0
  141. package/dist/core/web/public/next/assets/DiffViewer-C8HHTnVE.css +1 -0
  142. package/dist/core/web/public/next/assets/DiffViewer-QKyisN2L.js +7 -0
  143. package/dist/core/web/public/next/assets/DiffViewer-QKyisN2L.js.map +1 -0
  144. package/dist/core/web/public/next/assets/{MutationTokenDialog-jWLLCxWn.css → MutationTokenDialog-CrfJ0PdD.css} +1 -1
  145. package/dist/core/web/public/next/assets/MutationTokenDialog-DbSHPy3w.js +2 -0
  146. package/dist/core/web/public/next/assets/MutationTokenDialog-DbSHPy3w.js.map +1 -0
  147. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-C-PCgCzo.js +7 -0
  148. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-C-PCgCzo.js.map +1 -0
  149. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-CM_8pJs6.css +1 -0
  150. package/dist/core/web/public/next/assets/RouteErrorBoundary-Dw8ZjmkS.js +2 -0
  151. package/dist/core/web/public/next/assets/RouteErrorBoundary-Dw8ZjmkS.js.map +1 -0
  152. package/dist/core/web/public/next/assets/RouteErrorBoundary-ekyMXAK8.css +1 -0
  153. package/dist/core/web/public/next/assets/SettingsSection-BII7TTSD.css +1 -0
  154. package/dist/core/web/public/next/assets/SettingsSection-CWxtTNlD.js +2 -0
  155. package/dist/core/web/public/next/assets/SettingsSection-CWxtTNlD.js.map +1 -0
  156. package/dist/core/web/public/next/assets/UniverseConsoleApp-Bk5HipM0.js +2 -0
  157. package/dist/core/web/public/next/assets/UniverseConsoleApp-Bk5HipM0.js.map +1 -0
  158. package/dist/core/web/public/next/assets/UniverseConsoleApp-Dh7A-hLD.css +1 -0
  159. package/dist/core/web/public/next/assets/UniverseView-Bqa8DH57.css +1 -0
  160. package/dist/core/web/public/next/assets/UniverseView-D8k9q0ce.js +9 -0
  161. package/dist/core/web/public/next/assets/UniverseView-D8k9q0ce.js.map +1 -0
  162. package/dist/core/web/public/next/assets/UsageSection-B2E06ZH1.js +2 -0
  163. package/dist/core/web/public/next/assets/UsageSection-B2E06ZH1.js.map +1 -0
  164. package/dist/core/web/public/next/assets/UsageSection-DwgNOYvi.css +1 -0
  165. package/dist/core/web/public/next/assets/VerseConsoleApp-CRfZUV-T.js +3 -0
  166. package/dist/core/web/public/next/assets/VerseConsoleApp-CRfZUV-T.js.map +1 -0
  167. package/dist/core/web/public/next/assets/VerseConsoleApp-D2E3mU9a.css +1 -0
  168. package/dist/core/web/public/next/assets/charts-CsrtT4rk.css +1 -0
  169. package/dist/core/web/public/next/assets/charts-DSUpczxG.js +2 -0
  170. package/dist/core/web/public/next/assets/charts-DSUpczxG.js.map +1 -0
  171. package/dist/core/web/public/next/assets/fleet-model-ClBbQ0Uj.js +2 -0
  172. package/dist/core/web/public/next/assets/fleet-model-ClBbQ0Uj.js.map +1 -0
  173. package/dist/core/web/public/next/assets/format-BNYWGJat.js +2 -0
  174. package/dist/core/web/public/next/assets/format-BNYWGJat.js.map +1 -0
  175. package/dist/core/web/public/next/assets/global-C4jfYHrj.js +2 -0
  176. package/dist/core/web/public/next/assets/global-C4jfYHrj.js.map +1 -0
  177. package/dist/core/web/public/next/assets/global-D463gG1X.css +1 -0
  178. package/dist/core/web/public/next/assets/icons-BxOX8-XB.js +2 -0
  179. package/dist/core/web/public/next/assets/icons-BxOX8-XB.js.map +1 -0
  180. package/dist/core/web/public/next/assets/index-BMRIET7F.js +11 -0
  181. package/dist/core/web/public/next/assets/index-BMRIET7F.js.map +1 -0
  182. package/dist/core/web/public/next/assets/queries-AxnVa02h.js +2 -0
  183. package/dist/core/web/public/next/assets/queries-AxnVa02h.js.map +1 -0
  184. package/dist/core/web/public/next/assets/use-guarded-action-BO6c94Wp.js +2 -0
  185. package/dist/core/web/public/next/assets/use-guarded-action-BO6c94Wp.js.map +1 -0
  186. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js +2 -0
  187. package/dist/core/web/public/next/assets/verse-model-CvtK6vP6.js.map +1 -0
  188. package/dist/core/web/public/next/assets/workspace-model-cE4LkKpE.js +2 -0
  189. package/dist/core/web/public/next/assets/workspace-model-cE4LkKpE.js.map +1 -0
  190. package/dist/core/web/public/next/index.html +1 -1
  191. package/dist/release-dependency-inventory.json +1 -1
  192. package/docs/README.md +4 -0
  193. package/node_modules/marked/README.md +8 -0
  194. package/node_modules/marked/bin/main.js +12 -11
  195. package/node_modules/marked/lib/marked.d.ts +88 -25
  196. package/node_modules/marked/lib/marked.esm.js +50 -44
  197. package/node_modules/marked/lib/marked.esm.js.map +3 -3
  198. package/node_modules/marked/lib/marked.umd.js +50 -44
  199. package/node_modules/marked/lib/marked.umd.js.map +3 -3
  200. package/node_modules/marked/man/marked.1 +1 -1
  201. package/node_modules/marked/package.json +21 -21
  202. package/package.json +13 -8
  203. package/dist/cli/activation.d.ts +0 -41
  204. package/dist/cli/activation.js +0 -485
  205. package/dist/cli/activation.js.map +0 -1
  206. package/dist/core/fleet/generated-repair-resolution.d.ts +0 -36
  207. package/dist/core/fleet/generated-repair-resolution.js +0 -245
  208. package/dist/core/fleet/generated-repair-resolution.js.map +0 -1
  209. package/dist/core/local-runtime/llama/port.d.ts +0 -17
  210. package/dist/core/local-runtime/llama/port.js +0 -47
  211. package/dist/core/local-runtime/llama/port.js.map +0 -1
  212. package/dist/core/local-runtime/llama/proxy-host.d.ts +0 -54
  213. package/dist/core/local-runtime/llama/proxy-host.js +0 -159
  214. package/dist/core/local-runtime/llama/proxy-host.js.map +0 -1
  215. package/dist/core/local-runtime/llama/proxy-process.d.ts +0 -148
  216. package/dist/core/local-runtime/llama/proxy-process.js +0 -250
  217. package/dist/core/local-runtime/llama/proxy-process.js.map +0 -1
  218. package/dist/core/local-runtime/llama/proxy-record.d.ts +0 -40
  219. package/dist/core/local-runtime/llama/proxy-record.js +0 -133
  220. package/dist/core/local-runtime/llama/proxy-record.js.map +0 -1
  221. package/dist/core/local-runtime/llama/proxy-supervisor.d.ts +0 -118
  222. package/dist/core/local-runtime/llama/proxy-supervisor.js +0 -511
  223. package/dist/core/local-runtime/llama/proxy-supervisor.js.map +0 -1
  224. package/dist/core/web/public/next/assets/App-BCKqSppK.css +0 -1
  225. package/dist/core/web/public/next/assets/App-LuILXjWG.js +0 -16
  226. package/dist/core/web/public/next/assets/App-LuILXjWG.js.map +0 -1
  227. package/dist/core/web/public/next/assets/ApprovalsSection-B_Xor8JH.js +0 -2
  228. package/dist/core/web/public/next/assets/ApprovalsSection-B_Xor8JH.js.map +0 -1
  229. package/dist/core/web/public/next/assets/ApprovalsSection-CRP59wSb.css +0 -1
  230. package/dist/core/web/public/next/assets/AutonomySection-BB8RD-tv.css +0 -1
  231. package/dist/core/web/public/next/assets/AutonomySection-BEwITtPJ.js +0 -2
  232. package/dist/core/web/public/next/assets/AutonomySection-BEwITtPJ.js.map +0 -1
  233. package/dist/core/web/public/next/assets/ChatSection-DrxqhBPK.css +0 -1
  234. package/dist/core/web/public/next/assets/ChatSection-bRAzlMth.js +0 -77
  235. package/dist/core/web/public/next/assets/ChatSection-bRAzlMth.js.map +0 -1
  236. package/dist/core/web/public/next/assets/ConfirmDialog-BqkZdPs_.js +0 -2
  237. package/dist/core/web/public/next/assets/ConfirmDialog-BqkZdPs_.js.map +0 -1
  238. package/dist/core/web/public/next/assets/Dialog-CPmedg4S.js +0 -2
  239. package/dist/core/web/public/next/assets/Dialog-CPmedg4S.js.map +0 -1
  240. package/dist/core/web/public/next/assets/Dialog-DxN7RgB5.css +0 -1
  241. package/dist/core/web/public/next/assets/DiffViewer-DmPJbeM_.js +0 -7
  242. package/dist/core/web/public/next/assets/DiffViewer-DmPJbeM_.js.map +0 -1
  243. package/dist/core/web/public/next/assets/DiffViewer-hN7X6wGT.css +0 -1
  244. package/dist/core/web/public/next/assets/Epistemic-DiyMyeaN.css +0 -1
  245. package/dist/core/web/public/next/assets/Epistemic-M3SxLHjq.js +0 -2
  246. package/dist/core/web/public/next/assets/Epistemic-M3SxLHjq.js.map +0 -1
  247. package/dist/core/web/public/next/assets/Meter-CGBsbXUX.css +0 -1
  248. package/dist/core/web/public/next/assets/Meter-D_X7c9U3.js +0 -2
  249. package/dist/core/web/public/next/assets/Meter-D_X7c9U3.js.map +0 -1
  250. package/dist/core/web/public/next/assets/MutationTokenDialog-Ba5ZHu-8.js +0 -2
  251. package/dist/core/web/public/next/assets/MutationTokenDialog-Ba5ZHu-8.js.map +0 -1
  252. package/dist/core/web/public/next/assets/RefreshIndicator-O7jUBOmX.css +0 -1
  253. package/dist/core/web/public/next/assets/RefreshIndicator-vHGpmyzb.js +0 -2
  254. package/dist/core/web/public/next/assets/RefreshIndicator-vHGpmyzb.js.map +0 -1
  255. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-B5g6JEVk.js +0 -7
  256. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-B5g6JEVk.js.map +0 -1
  257. package/dist/core/web/public/next/assets/ResourcePoolConsoleApp-DLl4DbGG.css +0 -1
  258. package/dist/core/web/public/next/assets/RouteErrorBoundary-BIpdnxp-.css +0 -1
  259. package/dist/core/web/public/next/assets/RouteErrorBoundary-CroxuKoi.js +0 -2
  260. package/dist/core/web/public/next/assets/RouteErrorBoundary-CroxuKoi.js.map +0 -1
  261. package/dist/core/web/public/next/assets/SettingsSection-DGJMdUh2.css +0 -1
  262. package/dist/core/web/public/next/assets/SettingsSection-p-7FCGfn.js +0 -2
  263. package/dist/core/web/public/next/assets/SettingsSection-p-7FCGfn.js.map +0 -1
  264. package/dist/core/web/public/next/assets/Skeleton-4qq4HuJO.js +0 -2
  265. package/dist/core/web/public/next/assets/Skeleton-4qq4HuJO.js.map +0 -1
  266. package/dist/core/web/public/next/assets/Skeleton-D2JaTXyv.css +0 -1
  267. package/dist/core/web/public/next/assets/StatusBadge-BbEdqEGn.js +0 -2
  268. package/dist/core/web/public/next/assets/StatusBadge-BbEdqEGn.js.map +0 -1
  269. package/dist/core/web/public/next/assets/StatusBadge-TpDqZf6K.css +0 -1
  270. package/dist/core/web/public/next/assets/TableView-R6Yeztp1.css +0 -1
  271. package/dist/core/web/public/next/assets/TableView-nyYs7Sv1.js +0 -2
  272. package/dist/core/web/public/next/assets/TableView-nyYs7Sv1.js.map +0 -1
  273. package/dist/core/web/public/next/assets/UniverseConsoleApp-CiZZxRPV.css +0 -1
  274. package/dist/core/web/public/next/assets/UniverseConsoleApp-DjTpQUrA.js +0 -2
  275. package/dist/core/web/public/next/assets/UniverseConsoleApp-DjTpQUrA.js.map +0 -1
  276. package/dist/core/web/public/next/assets/UniverseView-BtApwayT.js +0 -9
  277. package/dist/core/web/public/next/assets/UniverseView-BtApwayT.js.map +0 -1
  278. package/dist/core/web/public/next/assets/UniverseView-gBxl6yum.css +0 -1
  279. package/dist/core/web/public/next/assets/UsageSection-Db99N6ao.js +0 -2
  280. package/dist/core/web/public/next/assets/UsageSection-Db99N6ao.js.map +0 -1
  281. package/dist/core/web/public/next/assets/UsageSection-UUYDidOg.css +0 -1
  282. package/dist/core/web/public/next/assets/VerseConsoleApp-COa3J2dO.js +0 -3
  283. package/dist/core/web/public/next/assets/VerseConsoleApp-COa3J2dO.js.map +0 -1
  284. package/dist/core/web/public/next/assets/VerseConsoleApp-mOAXvWa6.css +0 -1
  285. package/dist/core/web/public/next/assets/fleet-model-DXCfVtNW.js +0 -2
  286. package/dist/core/web/public/next/assets/fleet-model-DXCfVtNW.js.map +0 -1
  287. package/dist/core/web/public/next/assets/format-fggwu_Rs.js +0 -2
  288. package/dist/core/web/public/next/assets/format-fggwu_Rs.js.map +0 -1
  289. package/dist/core/web/public/next/assets/global-BeRYd1Bu.css +0 -1
  290. package/dist/core/web/public/next/assets/global-CNVapoV1.js +0 -2
  291. package/dist/core/web/public/next/assets/global-CNVapoV1.js.map +0 -1
  292. package/dist/core/web/public/next/assets/index-BkUlX2Se.js +0 -51
  293. package/dist/core/web/public/next/assets/index-BkUlX2Se.js.map +0 -1
  294. package/dist/core/web/public/next/assets/index-YNTgDG2b.js +0 -2
  295. package/dist/core/web/public/next/assets/index-YNTgDG2b.js.map +0 -1
  296. package/dist/core/web/public/next/assets/queries-C9XS4SYq.js +0 -2
  297. package/dist/core/web/public/next/assets/queries-C9XS4SYq.js.map +0 -1
  298. package/dist/core/web/public/next/assets/use-guarded-action-Bqa2v0a-.css +0 -1
  299. package/dist/core/web/public/next/assets/use-guarded-action-Bql1nA-z.js +0 -2
  300. package/dist/core/web/public/next/assets/use-guarded-action-Bql1nA-z.js.map +0 -1
  301. package/dist/core/web/public/next/assets/verse-model-IrNQKtER.js +0 -2
  302. package/dist/core/web/public/next/assets/verse-model-IrNQKtER.js.map +0 -1
  303. package/node_modules/which/CHANGELOG.md +0 -166
  304. /package/node_modules/marked/{LICENSE.md → LICENSE} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/core/local-eval/report.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Running one trial, and running a whole set of them.
3
+ *
4
+ * THREE RULES THIS FILE ENFORCES, each learned the hard way here:
5
+ *
6
+ * 1. NEVER PIPE A COMMAND WHOSE STATUS MATTERS. `vitest ... | tail` reports
7
+ * tail's exit code, and has already made a failing run look green in this
8
+ * repository. Every child process below is spawned with its output
9
+ * captured to a buffer and a file, and the status read from the child
10
+ * itself. Nothing in this harness is piped.
11
+ * 2. EVERY TRIAL IS ISOLATED. Fixtures are rebuilt from source into a fresh
12
+ * directory per trial, so trial 3 cannot inherit trial 2's half-finished
13
+ * edit and the order trials run in cannot change the result.
14
+ * 3. THE AGENT CANNOT REACH ITS OWN GRADER. The checker is written one level
15
+ * ABOVE the directory the agent is given, which Claude Code confines its
16
+ * file tools to.
17
+ */
18
+ import type { TaskSpec, TrialResult, TrialTokens } from './types.js';
19
+ export interface RunTrialOptions {
20
+ readonly task: TaskSpec;
21
+ readonly trial: number;
22
+ /** Fresh directory for this trial. Created; must not already hold state. */
23
+ readonly trialDir: string;
24
+ readonly baseUrl: string;
25
+ readonly model: string;
26
+ readonly agentCli: string;
27
+ /** Wall-clock budget for the agent turn. */
28
+ readonly timeoutMs: number;
29
+ /**
30
+ * Insert the tracing proxy in front of `baseUrl`. Default on.
31
+ *
32
+ * Off is for proving the instrument innocent: if a result differs with
33
+ * tracing on and off, the instrument is the finding, not the model.
34
+ */
35
+ readonly trace?: boolean;
36
+ }
37
+ /**
38
+ * How many files differ between two snapshots.
39
+ *
40
+ * Counts additions, deletions and modifications alike. Returning a count rather
41
+ * than a diff is deliberate: `turnIntegrity` wants exactly this number, and it
42
+ * is the one fact that decides whether a completion claim was supported.
43
+ */
44
+ export declare function countChanges(before: Map<string, string>, after: Map<string, string>): number;
45
+ /** Pull the fields we report out of the agent CLI's result JSON. */
46
+ export declare function parseAgentResult(stdout: string): {
47
+ finalMessage: string;
48
+ tokens: TrialTokens;
49
+ turns: number | null;
50
+ stopReason: string | null;
51
+ terminalReason: string | null;
52
+ isError: boolean;
53
+ };
54
+ /** Run one task once, end to end, and return a fully classified result. */
55
+ export declare function runTrial(opts: RunTrialOptions): Promise<TrialResult>;
@@ -0,0 +1,290 @@
1
+ /**
2
+ * Running one trial, and running a whole set of them.
3
+ *
4
+ * THREE RULES THIS FILE ENFORCES, each learned the hard way here:
5
+ *
6
+ * 1. NEVER PIPE A COMMAND WHOSE STATUS MATTERS. `vitest ... | tail` reports
7
+ * tail's exit code, and has already made a failing run look green in this
8
+ * repository. Every child process below is spawned with its output
9
+ * captured to a buffer and a file, and the status read from the child
10
+ * itself. Nothing in this harness is piped.
11
+ * 2. EVERY TRIAL IS ISOLATED. Fixtures are rebuilt from source into a fresh
12
+ * directory per trial, so trial 3 cannot inherit trial 2's half-finished
13
+ * edit and the order trials run in cannot change the result.
14
+ * 3. THE AGENT CANNOT REACH ITS OWN GRADER. The checker is written one level
15
+ * ABOVE the directory the agent is given, which Claude Code confines its
16
+ * file tools to.
17
+ */
18
+ import { spawn } from 'node:child_process';
19
+ import { createHash } from 'node:crypto';
20
+ import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises';
21
+ import { dirname, join, relative } from 'node:path';
22
+ import { classifyTrial } from './classify.js';
23
+ import { diagnoseTimeout, startTrace } from './trace.js';
24
+ /** Directories that are never part of a fixture's observable state. */
25
+ const SNAPSHOT_IGNORE = new Set(['.git', 'node_modules', '.claude']);
26
+ /**
27
+ * Spawn a child, capture both streams in full, and return its REAL status.
28
+ *
29
+ * `timeoutMs` is enforced here rather than with the `timeout` binary, which
30
+ * does not exist on this machine — a fact discovered when an invocation exited
31
+ * 127 and would have been read as a model failure by a harness that only
32
+ * checked for "not zero".
33
+ */
34
+ function runChild(cmd, args, opts) {
35
+ return new Promise((resolve) => {
36
+ const child = spawn(cmd, [...args], {
37
+ cwd: opts.cwd,
38
+ env: opts.env ?? process.env,
39
+ stdio: ['ignore', 'pipe', 'pipe'],
40
+ // Own process group, so a timeout kills the agent's children too rather
41
+ // than orphaning a model request that keeps a runtime slot busy.
42
+ detached: true,
43
+ });
44
+ let stdout = '';
45
+ let stderr = '';
46
+ let timedOut = false;
47
+ child.stdout?.on('data', (c) => { stdout += c.toString('utf8'); });
48
+ child.stderr?.on('data', (c) => { stderr += c.toString('utf8'); });
49
+ const timer = opts.timeoutMs
50
+ ? setTimeout(() => {
51
+ timedOut = true;
52
+ try {
53
+ opts.onTimeout?.();
54
+ }
55
+ catch { /* forensics must never block the kill */ }
56
+ try {
57
+ process.kill(-child.pid, 'SIGKILL');
58
+ }
59
+ catch {
60
+ child.kill('SIGKILL');
61
+ }
62
+ }, opts.timeoutMs)
63
+ : null;
64
+ const finish = (status) => {
65
+ if (timer)
66
+ clearTimeout(timer);
67
+ resolve({ status, stdout, stderr, timedOut });
68
+ };
69
+ child.on('error', () => finish(null));
70
+ child.on('close', (code) => finish(code));
71
+ });
72
+ }
73
+ /** Content hash of every file under `dir`, keyed by relative path. */
74
+ async function snapshot(dir) {
75
+ const out = new Map();
76
+ const walk = async (current) => {
77
+ let entries;
78
+ try {
79
+ entries = await readdir(current, { withFileTypes: true });
80
+ }
81
+ catch {
82
+ return;
83
+ }
84
+ for (const entry of entries) {
85
+ if (SNAPSHOT_IGNORE.has(entry.name))
86
+ continue;
87
+ const full = join(current, entry.name);
88
+ if (entry.isDirectory()) {
89
+ await walk(full);
90
+ continue;
91
+ }
92
+ try {
93
+ const buf = await readFile(full);
94
+ out.set(relative(dir, full), createHash('sha256').update(buf).digest('hex'));
95
+ }
96
+ catch {
97
+ /* unreadable files are not observable state */
98
+ }
99
+ }
100
+ };
101
+ await walk(dir);
102
+ return out;
103
+ }
104
+ /**
105
+ * How many files differ between two snapshots.
106
+ *
107
+ * Counts additions, deletions and modifications alike. Returning a count rather
108
+ * than a diff is deliberate: `turnIntegrity` wants exactly this number, and it
109
+ * is the one fact that decides whether a completion claim was supported.
110
+ */
111
+ export function countChanges(before, after) {
112
+ let changed = 0;
113
+ for (const [path, hash] of before) {
114
+ if (after.get(path) !== hash)
115
+ changed += 1;
116
+ }
117
+ for (const path of after.keys()) {
118
+ if (!before.has(path))
119
+ changed += 1;
120
+ }
121
+ return changed;
122
+ }
123
+ /** Pull the fields we report out of the agent CLI's result JSON. */
124
+ export function parseAgentResult(stdout) {
125
+ const empty = { input: 0, output: 0, cacheRead: 0, cacheCreation: 0 };
126
+ let parsed;
127
+ try {
128
+ parsed = JSON.parse(stdout);
129
+ }
130
+ catch {
131
+ return {
132
+ finalMessage: '', tokens: empty, turns: null,
133
+ stopReason: null, terminalReason: null, isError: true,
134
+ };
135
+ }
136
+ const usage = (parsed['usage'] ?? {});
137
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : 0);
138
+ const str = (v) => (typeof v === 'string' ? v : null);
139
+ return {
140
+ finalMessage: typeof parsed['result'] === 'string' ? parsed['result'] : '',
141
+ tokens: {
142
+ input: num(usage['input_tokens']),
143
+ output: num(usage['output_tokens']),
144
+ cacheRead: num(usage['cache_read_input_tokens']),
145
+ cacheCreation: num(usage['cache_creation_input_tokens']),
146
+ },
147
+ turns: typeof parsed['num_turns'] === 'number' ? parsed['num_turns'] : null,
148
+ stopReason: str(parsed['stop_reason']),
149
+ terminalReason: str(parsed['terminal_reason']),
150
+ isError: parsed['is_error'] === true,
151
+ };
152
+ }
153
+ /** Write a task's fixture into `trialDir`, with the checker out of reach. */
154
+ async function materialise(task, trialDir) {
155
+ const work = join(trialDir, 'work');
156
+ await rm(trialDir, { recursive: true, force: true });
157
+ await mkdir(work, { recursive: true });
158
+ for (const [path, contents] of Object.entries(task.files)) {
159
+ const target = join(work, path);
160
+ await mkdir(dirname(target), { recursive: true });
161
+ await writeFile(target, contents, 'utf8');
162
+ }
163
+ // Fixtures are ESM. Without this, `import './total.js'` fails for reasons
164
+ // that have nothing to do with the agent under test.
165
+ await writeFile(join(work, 'package.json'), JSON.stringify({ type: 'module' }, null, 2), 'utf8');
166
+ await writeFile(join(trialDir, 'check.mjs'), task.check, 'utf8');
167
+ return work;
168
+ }
169
+ /** Run one task once, end to end, and return a fully classified result. */
170
+ export async function runTrial(opts) {
171
+ const { task, trialDir } = opts;
172
+ const work = await materialise(task, trialDir);
173
+ const before = await snapshot(work);
174
+ const args = [
175
+ '-p', task.prompt,
176
+ // --bare keeps hooks, plugins, CLAUDE.md, auto-memory and keychain reads
177
+ // out of the measurement. Without it the harness would be scoring this
178
+ // machine's configuration as much as the model.
179
+ '--bare',
180
+ '--model', opts.model,
181
+ '--output-format', 'json',
182
+ '--permission-mode', 'bypassPermissions',
183
+ '--permission-prompts', 'none',
184
+ '--no-session-persistence',
185
+ '--strict-mcp-config', '--mcp-config', '{"mcpServers":{}}',
186
+ ];
187
+ // The agent talks to the tracer, and the tracer talks to whatever the run was
188
+ // pointed at. A trial that produces no result JSON is otherwise a black box:
189
+ // the CLI emits its usage and turn count once, at the end, so a kill at the
190
+ // budget records zero tokens and zero turns no matter how much work happened.
191
+ //
192
+ // The tracer is an OBSERVER, so failing to start one must not fail the trial
193
+ // it was only watching. A benchmark that dies because its instrument could
194
+ // not bind a port has turned the instrument into the experiment.
195
+ let trace = null;
196
+ if (opts.trace !== false) {
197
+ try {
198
+ trace = await startTrace({ upstream: opts.baseUrl, captureDir: join(trialDir, 'wire') });
199
+ }
200
+ catch {
201
+ trace = null;
202
+ }
203
+ }
204
+ const agentBaseUrl = trace?.baseUrl ?? opts.baseUrl;
205
+ // Read at the kill, not after it: see `onTimeout`.
206
+ let traceAtTimeout = null;
207
+ const started = Date.now();
208
+ let agent;
209
+ try {
210
+ agent = await runChild(opts.agentCli, args, {
211
+ cwd: work,
212
+ env: {
213
+ ...process.env,
214
+ ANTHROPIC_BASE_URL: agentBaseUrl,
215
+ ANTHROPIC_API_KEY: 'local-eval',
216
+ CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: '1',
217
+ },
218
+ timeoutMs: opts.timeoutMs,
219
+ onTimeout: () => { traceAtTimeout = trace?.snapshot() ?? null; },
220
+ });
221
+ }
222
+ finally {
223
+ await trace?.close().catch(() => undefined);
224
+ }
225
+ const wallMs = Date.now() - started;
226
+ const finalTrace = traceAtTimeout ?? trace?.snapshot() ?? null;
227
+ const timeoutDiagnosis = agent.timedOut && finalTrace ? diagnoseTimeout(finalTrace) : null;
228
+ if (finalTrace) {
229
+ await writeFile(join(trialDir, 'wire.summary.json'), JSON.stringify({ trace: finalTrace, timeoutDiagnosis }, null, 2), 'utf8');
230
+ }
231
+ // Kept for forensics: a pass rate you cannot drill into is not evidence.
232
+ await writeFile(join(trialDir, 'agent.stdout.json'), agent.stdout, 'utf8');
233
+ await writeFile(join(trialDir, 'agent.stderr.log'), agent.stderr, 'utf8');
234
+ const parsed = parseAgentResult(agent.stdout);
235
+ const after = await snapshot(work);
236
+ const changedFiles = countChanges(before, after);
237
+ // The check runs from the trial root so `check.mjs` can read ./work, and its
238
+ // status is read from the child — never through a pipe.
239
+ let verifyExit = null;
240
+ let verifyOutput = '';
241
+ if (!agent.timedOut) {
242
+ // `verify` is a full argv INCLUDING the binary, so the head is the command
243
+ // and the tail is its arguments. Passing the whole array as arguments ran
244
+ // `node node check.mjs`, which fails with MODULE_NOT_FOUND — and scored a
245
+ // flawless answer as `wrong-edit`. A harness bug that only ever moves the
246
+ // pass rate DOWN is the most expensive kind: it looks like a model result.
247
+ const [checkBin, ...checkArgs] = task.verify;
248
+ const check = await runChild(checkBin, checkArgs, { cwd: trialDir, timeoutMs: 60_000 });
249
+ verifyExit = check.status;
250
+ verifyOutput = check.stdout + check.stderr;
251
+ await writeFile(join(trialDir, 'verify.log'), verifyOutput, 'utf8');
252
+ }
253
+ const verdict = classifyTrial({
254
+ expectation: task.expectation,
255
+ timedOut: agent.timedOut,
256
+ agentExit: agent.status,
257
+ agentReportedError: parsed.isError,
258
+ stopReason: parsed.stopReason,
259
+ terminalReason: parsed.terminalReason,
260
+ finalMessage: parsed.finalMessage,
261
+ changedFiles,
262
+ verifyExit,
263
+ diagnostics: `${agent.stderr}\n${verifyOutput}`,
264
+ });
265
+ const firstFailLine = verifyOutput.split('\n').find((l) => l.startsWith('FAIL:')) ?? '';
266
+ return {
267
+ taskId: task.id,
268
+ trial: opts.trial,
269
+ mode: verdict.mode,
270
+ passed: verdict.passed,
271
+ wallMs,
272
+ tokens: parsed.tokens,
273
+ agentExit: agent.status,
274
+ verifyExit,
275
+ changedFiles,
276
+ claim: verdict.claim,
277
+ integrity: verdict.integrity,
278
+ turns: parsed.turns,
279
+ // A timeout's note is its diagnosis. "killed at the wall-clock budget"
280
+ // restates the classification and explains nothing; the whole reason the
281
+ // tracer exists is so this line names a thing to go and fix.
282
+ note: firstFailLine
283
+ || (agent.timedOut
284
+ ? (timeoutDiagnosis ? `${timeoutDiagnosis.kind}: ${timeoutDiagnosis.detail}` : 'killed at the wall-clock budget (untraced)')
285
+ : ''),
286
+ timeoutDiagnosis,
287
+ trace: finalTrace,
288
+ };
289
+ }
290
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/core/local-eval/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The task set.
3
+ *
4
+ * SELECTION RULE. Every task here is a shape of work the local seat is actually
5
+ * asked to do and that a one-line fix does not exercise. Toy fixes were the
6
+ * whole sample before this file existed, and they are the reason nobody could
7
+ * say what the local seat's success rate was: a single-line `a + b` → `a * b`
8
+ * is passed by any model that can use the Edit tool at all, so it discriminates
9
+ * nothing. Each task below fails for a DIFFERENT reason, which is what makes
10
+ * the failure-mode column worth reading.
11
+ *
12
+ * EVERY CHECK IS A COMMAND. No task is graded by asking a model whether the
13
+ * answer looks right. Each `check` is a Node script whose exit code is the
14
+ * verdict, and it lives above the agent's working directory so the agent cannot
15
+ * edit its own grader.
16
+ *
17
+ * FIXTURES ARE PURE ESM WITH NO DEPENDENCIES. A trial must not depend on
18
+ * `npm install` completing, because a network hiccup would then read as a model
19
+ * regression. `node --test` and `node:assert` ship with the runtime.
20
+ */
21
+ import type { TaskSpec } from './types.js';
22
+ export declare const TASKS: readonly TaskSpec[];