@jinn-network/client 0.1.8 → 0.1.9-canary.023faefb

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 (733) hide show
  1. package/CONTRIBUTING.md +2 -2
  2. package/README.md +6 -0
  3. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  4. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +23 -3
  5. package/deployments/deployment-task-coordinator-router-v3-baseSepolia-fast.json +34 -6
  6. package/dist/adapters/mech/adapter.d.ts +31 -1
  7. package/dist/adapters/mech/adapter.js +126 -53
  8. package/dist/adapters/mech/adapter.js.map +1 -1
  9. package/dist/adapters/mech/contracts.d.ts +174 -13
  10. package/dist/adapters/mech/contracts.js +99 -49
  11. package/dist/adapters/mech/contracts.js.map +1 -1
  12. package/dist/adapters/mech/safe-revert.d.ts +4 -0
  13. package/dist/adapters/mech/safe-revert.js +5 -1
  14. package/dist/adapters/mech/safe-revert.js.map +1 -1
  15. package/dist/adapters/mech/safe.js +77 -1
  16. package/dist/adapters/mech/safe.js.map +1 -1
  17. package/dist/adapters/mech/types.d.ts +5 -130
  18. package/dist/adapters/mech/types.js +9 -65
  19. package/dist/adapters/mech/types.js.map +1 -1
  20. package/dist/adapters/mech/verdict-code.js +1 -1
  21. package/dist/adapters/mech/verdict-code.js.map +1 -1
  22. package/dist/api/bootstrap-endpoint.d.ts +19 -3
  23. package/dist/api/bootstrap-endpoint.js +4 -0
  24. package/dist/api/bootstrap-endpoint.js.map +1 -1
  25. package/dist/api/discovery-endpoint.d.ts +1 -0
  26. package/dist/api/discovery-endpoint.js +24 -0
  27. package/dist/api/discovery-endpoint.js.map +1 -1
  28. package/dist/api/fleet-build.d.ts +1 -7
  29. package/dist/api/fleet-build.js +0 -7
  30. package/dist/api/fleet-build.js.map +1 -1
  31. package/dist/api/gather-status.d.ts +26 -17
  32. package/dist/api/gather-status.js +62 -520
  33. package/dist/api/gather-status.js.map +1 -1
  34. package/dist/api/harness-auth-status-endpoint.d.ts +21 -0
  35. package/dist/api/harness-auth-status-endpoint.js +17 -0
  36. package/dist/api/harness-auth-status-endpoint.js.map +1 -0
  37. package/dist/api/launcher-endpoints.js +6 -1
  38. package/dist/api/launcher-endpoints.js.map +1 -1
  39. package/dist/api/launcher-status.d.ts +2 -0
  40. package/dist/api/launcher-status.js.map +1 -1
  41. package/dist/api/launcher-tasks.d.ts +47 -0
  42. package/dist/api/launcher-tasks.js +88 -3
  43. package/dist/api/launcher-tasks.js.map +1 -1
  44. package/dist/api/loop-completion-build.d.ts +79 -0
  45. package/dist/api/loop-completion-build.js +154 -0
  46. package/dist/api/loop-completion-build.js.map +1 -0
  47. package/dist/api/operator-artifacts-endpoint.js +1 -1
  48. package/dist/api/operator-artifacts-endpoint.js.map +1 -1
  49. package/dist/api/portfolio-v0-build.d.ts +2 -1
  50. package/dist/api/portfolio-v0-build.js +5 -7
  51. package/dist/api/portfolio-v0-build.js.map +1 -1
  52. package/dist/api/prediction-v1-build.d.ts +2 -2
  53. package/dist/api/prediction-v1-build.js +5 -7
  54. package/dist/api/prediction-v1-build.js.map +1 -1
  55. package/dist/api/rewards-build.d.ts +8 -1
  56. package/dist/api/rewards-build.js +32 -4
  57. package/dist/api/rewards-build.js.map +1 -1
  58. package/dist/api/rewards-endpoint.d.ts +12 -0
  59. package/dist/api/rewards-endpoint.js +46 -0
  60. package/dist/api/rewards-endpoint.js.map +1 -0
  61. package/dist/api/server.d.ts +6 -16
  62. package/dist/api/server.js +29 -26
  63. package/dist/api/server.js.map +1 -1
  64. package/dist/api/setup-endpoints.d.ts +45 -0
  65. package/dist/api/setup-endpoints.js +271 -52
  66. package/dist/api/setup-endpoints.js.map +1 -1
  67. package/dist/api/solvernets-endpoints.js +4 -1
  68. package/dist/api/solvernets-endpoints.js.map +1 -1
  69. package/dist/api/status-build.d.ts +71 -94
  70. package/dist/api/status-build.js +11 -77
  71. package/dist/api/status-build.js.map +1 -1
  72. package/dist/api/status-rollup-build.d.ts +0 -4
  73. package/dist/api/status-rollup-build.js +0 -4
  74. package/dist/api/status-rollup-build.js.map +1 -1
  75. package/dist/api/stop-hook.d.ts +1 -1
  76. package/dist/api/stop-hook.js +1 -1
  77. package/dist/api/stop-hook.js.map +1 -1
  78. package/dist/api/task-run-routing.d.ts +1 -1
  79. package/dist/api/task-runs-build.d.ts +2 -2
  80. package/dist/api/task-runs-build.js +5 -7
  81. package/dist/api/task-runs-build.js.map +1 -1
  82. package/dist/bin/jinn-distil-mcp.js +813 -0
  83. package/dist/bin/jinn-layer.js +12568 -0
  84. package/dist/build-info.json +4 -4
  85. package/dist/build-meta.json +1 -1
  86. package/dist/captures/distil-export.d.ts +54 -0
  87. package/dist/captures/distil-export.js +135 -0
  88. package/dist/captures/distil-export.js.map +1 -0
  89. package/dist/captures/ingest.d.ts +21 -0
  90. package/dist/captures/ingest.js +144 -0
  91. package/dist/captures/ingest.js.map +1 -0
  92. package/dist/captures/live-publisher.d.ts +9 -0
  93. package/dist/captures/live-publisher.js +5 -3
  94. package/dist/captures/live-publisher.js.map +1 -1
  95. package/dist/captures/publish.d.ts +15 -0
  96. package/dist/captures/publish.js +17 -7
  97. package/dist/captures/publish.js.map +1 -1
  98. package/dist/cli/commands/codedigest-revert-check.js +6 -2
  99. package/dist/cli/commands/codedigest-revert-check.js.map +1 -1
  100. package/dist/cli/commands/doctor.d.ts +3 -0
  101. package/dist/cli/commands/doctor.js +36 -4
  102. package/dist/cli/commands/doctor.js.map +1 -1
  103. package/dist/cli/commands/eval.d.ts +87 -0
  104. package/dist/cli/commands/eval.js +481 -0
  105. package/dist/cli/commands/eval.js.map +1 -0
  106. package/dist/cli/commands/rewards.d.ts +2 -0
  107. package/dist/cli/commands/rewards.js +39 -10
  108. package/dist/cli/commands/rewards.js.map +1 -1
  109. package/dist/cli/commands/solver-nets.js +68 -0
  110. package/dist/cli/commands/solver-nets.js.map +1 -1
  111. package/dist/cli/commands/status.js +0 -1
  112. package/dist/cli/commands/status.js.map +1 -1
  113. package/dist/cli/commands/update.js +8 -0
  114. package/dist/cli/commands/update.js.map +1 -1
  115. package/dist/cli/commands/version.js +4 -0
  116. package/dist/cli/commands/version.js.map +1 -1
  117. package/dist/cli/execution-context.js +2 -1
  118. package/dist/cli/execution-context.js.map +1 -1
  119. package/dist/cli/index.js +2 -0
  120. package/dist/cli/index.js.map +1 -1
  121. package/dist/cli/introspection-context.js +0 -3
  122. package/dist/cli/introspection-context.js.map +1 -1
  123. package/dist/config.d.ts +158 -541
  124. package/dist/config.js +190 -197
  125. package/dist/config.js.map +1 -1
  126. package/dist/contracts/abis.d.ts +100 -0
  127. package/dist/contracts/abis.js +58 -0
  128. package/dist/contracts/abis.js.map +1 -0
  129. package/dist/contracts/addresses.d.ts +36 -0
  130. package/dist/contracts/addresses.js +60 -0
  131. package/dist/contracts/addresses.js.map +1 -0
  132. package/dist/corpus/acquire.d.ts +7 -6
  133. package/dist/corpus/acquire.js +10 -10
  134. package/dist/corpus/acquire.js.map +1 -1
  135. package/dist/corpus/fetch-artifact.d.ts +21 -0
  136. package/dist/corpus/fetch-artifact.js +33 -0
  137. package/dist/corpus/fetch-artifact.js.map +1 -0
  138. package/dist/corpus/index.d.ts +2 -2
  139. package/dist/corpus/onchain-query.d.ts +0 -1
  140. package/dist/corpus/onchain-query.js +2 -5
  141. package/dist/corpus/onchain-query.js.map +1 -1
  142. package/dist/corpus/route-resolver.d.ts +3 -3
  143. package/dist/corpus/route-resolver.js +3 -3
  144. package/dist/daemon/ai-units-gate.d.ts +6 -6
  145. package/dist/daemon/ai-units-gate.js +11 -10
  146. package/dist/daemon/ai-units-gate.js.map +1 -1
  147. package/dist/daemon/balance-topup-loop.js +27 -9
  148. package/dist/daemon/balance-topup-loop.js.map +1 -1
  149. package/dist/daemon/checkpoint-loop.js +2 -2
  150. package/dist/daemon/creator.d.ts +1 -0
  151. package/dist/daemon/creator.js +39 -25
  152. package/dist/daemon/creator.js.map +1 -1
  153. package/dist/daemon/daemon.d.ts +15 -10
  154. package/dist/daemon/daemon.js +95 -41
  155. package/dist/daemon/daemon.js.map +1 -1
  156. package/dist/daemon/delivery-watcher.d.ts +9 -0
  157. package/dist/daemon/delivery-watcher.js +24 -1
  158. package/dist/daemon/delivery-watcher.js.map +1 -1
  159. package/dist/daemon/eviction-loop.d.ts +7 -0
  160. package/dist/daemon/eviction-loop.js +19 -3
  161. package/dist/daemon/eviction-loop.js.map +1 -1
  162. package/dist/daemon/join-applier.d.ts +35 -0
  163. package/dist/daemon/join-applier.js +49 -0
  164. package/dist/daemon/join-applier.js.map +1 -0
  165. package/dist/daemon/loop-heartbeat.d.ts +89 -0
  166. package/dist/daemon/loop-heartbeat.js +75 -0
  167. package/dist/daemon/loop-heartbeat.js.map +1 -0
  168. package/dist/{api/peers.js → daemon/peer-sync.js} +3 -1
  169. package/dist/daemon/peer-sync.js.map +1 -0
  170. package/dist/daemon/reward-claim-loop.js +28 -10
  171. package/dist/daemon/reward-claim-loop.js.map +1 -1
  172. package/dist/daemon/skip-log-dedup.d.ts +1 -1
  173. package/dist/daemon/skip-log-dedup.js +3 -0
  174. package/dist/daemon/skip-log-dedup.js.map +1 -1
  175. package/dist/daemon/spend-cap-gate.d.ts +0 -6
  176. package/dist/daemon/spend-cap-gate.js +1 -8
  177. package/dist/daemon/spend-cap-gate.js.map +1 -1
  178. package/dist/daemon/watchdog-loop.d.ts +84 -0
  179. package/dist/daemon/watchdog-loop.js +91 -0
  180. package/dist/daemon/watchdog-loop.js.map +1 -0
  181. package/dist/dashboard/assets/index-B_5Cb-ZH.js +161 -0
  182. package/dist/dashboard/assets/index-D7rvJRNa.css +1 -0
  183. package/dist/dashboard/index.html +2 -2
  184. package/dist/discovery/http.d.ts +17 -0
  185. package/dist/discovery/http.js +378 -26
  186. package/dist/discovery/http.js.map +1 -1
  187. package/dist/discovery/onchain.js +174 -10
  188. package/dist/discovery/onchain.js.map +1 -1
  189. package/dist/discovery/types.d.ts +149 -0
  190. package/dist/discovery/types.js +40 -0
  191. package/dist/discovery/types.js.map +1 -1
  192. package/dist/discovery/with-fallback.js +24 -0
  193. package/dist/discovery/with-fallback.js.map +1 -1
  194. package/dist/earning/bootstrap-run.d.ts +25 -0
  195. package/dist/earning/bootstrap-run.js +315 -0
  196. package/dist/earning/bootstrap-run.js.map +1 -0
  197. package/dist/earning/bootstrap.d.ts +31 -11
  198. package/dist/earning/bootstrap.js +123 -212
  199. package/dist/earning/bootstrap.js.map +1 -1
  200. package/dist/earning/contracts.d.ts +2 -232
  201. package/dist/earning/contracts.js +16 -205
  202. package/dist/earning/contracts.js.map +1 -1
  203. package/dist/earning/faucet-topup-store.d.ts +41 -0
  204. package/dist/earning/faucet-topup-store.js +89 -0
  205. package/dist/earning/faucet-topup-store.js.map +1 -0
  206. package/dist/earning/faucet.d.ts +1 -1
  207. package/dist/earning/faucet.js +2 -2
  208. package/dist/earning/faucet.js.map +1 -1
  209. package/dist/earning/safe-adapter.js +12 -45
  210. package/dist/earning/safe-adapter.js.map +1 -1
  211. package/dist/earning/steps/context.d.ts +42 -0
  212. package/dist/earning/steps/context.js +4 -0
  213. package/dist/earning/steps/context.js.map +1 -0
  214. package/dist/earning/steps/fleet-identity-register.d.ts +4 -0
  215. package/dist/earning/steps/fleet-identity-register.js +65 -0
  216. package/dist/earning/steps/fleet-identity-register.js.map +1 -0
  217. package/dist/earning/steps/fleet-safe-deploy.d.ts +4 -0
  218. package/dist/earning/steps/fleet-safe-deploy.js +62 -0
  219. package/dist/earning/steps/fleet-safe-deploy.js.map +1 -0
  220. package/dist/earning/steps/fleet-safe-predict.d.ts +4 -0
  221. package/dist/earning/steps/fleet-safe-predict.js +18 -0
  222. package/dist/earning/steps/fleet-safe-predict.js.map +1 -0
  223. package/dist/earning/steps/receipt-parsing.d.ts +12 -0
  224. package/dist/earning/steps/receipt-parsing.js +71 -0
  225. package/dist/earning/steps/receipt-parsing.js.map +1 -0
  226. package/dist/earning/stolas-claim.js +8 -8
  227. package/dist/earning/stolas-claim.js.map +1 -1
  228. package/dist/earning/{jinn-rewards.d.ts → stolas-staking.d.ts} +4 -8
  229. package/dist/earning/{jinn-rewards.js → stolas-staking.js} +6 -10
  230. package/dist/earning/stolas-staking.js.map +1 -0
  231. package/dist/earning/testnet-setup-migration.d.ts +1 -0
  232. package/dist/earning/testnet-setup-migration.js +7 -2
  233. package/dist/earning/testnet-setup-migration.js.map +1 -1
  234. package/dist/earning/types.d.ts +1 -1
  235. package/dist/earning/types.js +1 -1
  236. package/dist/earning/types.js.map +1 -1
  237. package/dist/earning/viem-clients.d.ts +3 -19
  238. package/dist/earning/viem-clients.js +4 -31
  239. package/dist/earning/viem-clients.js.map +1 -1
  240. package/dist/erc8004/addresses.d.ts +6 -5
  241. package/dist/erc8004/addresses.js +7 -5
  242. package/dist/erc8004/addresses.js.map +1 -1
  243. package/dist/erc8004/identity.d.ts +12 -1
  244. package/dist/erc8004/identity.js +31 -0
  245. package/dist/erc8004/identity.js.map +1 -1
  246. package/dist/erc8004/index.d.ts +1 -1
  247. package/dist/erc8004/index.js +1 -1
  248. package/dist/erc8004/index.js.map +1 -1
  249. package/dist/eval/capability-slate.d.ts +54 -0
  250. package/dist/eval/capability-slate.js +116 -0
  251. package/dist/eval/capability-slate.js.map +1 -0
  252. package/dist/eval/capability-stats.d.ts +39 -0
  253. package/dist/eval/capability-stats.js +123 -0
  254. package/dist/eval/capability-stats.js.map +1 -0
  255. package/dist/eval/contested-band.d.ts +18 -0
  256. package/dist/eval/contested-band.js +19 -0
  257. package/dist/eval/contested-band.js.map +1 -0
  258. package/dist/eval/corpus-index.d.ts +21 -0
  259. package/dist/eval/corpus-index.js +55 -0
  260. package/dist/eval/corpus-index.js.map +1 -0
  261. package/dist/eval/disjointness.d.ts +26 -0
  262. package/dist/eval/disjointness.js +67 -0
  263. package/dist/eval/disjointness.js.map +1 -0
  264. package/dist/eval/eval-harness-run.d.ts +63 -0
  265. package/dist/eval/eval-harness-run.js +123 -0
  266. package/dist/eval/eval-harness-run.js.map +1 -0
  267. package/dist/eval/mcnemar-power.d.ts +14 -0
  268. package/dist/eval/mcnemar-power.js +40 -0
  269. package/dist/eval/mcnemar-power.js.map +1 -0
  270. package/dist/eval/orchestrator.d.ts +224 -0
  271. package/dist/eval/orchestrator.js +250 -0
  272. package/dist/eval/orchestrator.js.map +1 -0
  273. package/dist/eval/paired.d.ts +68 -0
  274. package/dist/eval/paired.js +93 -0
  275. package/dist/eval/paired.js.map +1 -0
  276. package/dist/eval/resolve-slate-tasks.d.ts +35 -0
  277. package/dist/eval/resolve-slate-tasks.js +56 -0
  278. package/dist/eval/resolve-slate-tasks.js.map +1 -0
  279. package/dist/eval/screen-discovery.d.ts +22 -0
  280. package/dist/eval/screen-discovery.js +71 -0
  281. package/dist/eval/screen-discovery.js.map +1 -0
  282. package/dist/eval/screen-progress.d.ts +41 -0
  283. package/dist/eval/screen-progress.js +60 -0
  284. package/dist/eval/screen-progress.js.map +1 -0
  285. package/dist/eval/screen-runner.d.ts +30 -0
  286. package/dist/eval/screen-runner.js +289 -0
  287. package/dist/eval/screen-runner.js.map +1 -0
  288. package/dist/eval/screen.d.ts +107 -0
  289. package/dist/eval/screen.js +159 -0
  290. package/dist/eval/screen.js.map +1 -0
  291. package/dist/eval/slope.d.ts +29 -0
  292. package/dist/eval/slope.js +46 -0
  293. package/dist/eval/slope.js.map +1 -0
  294. package/dist/eval/train-sequence.d.ts +35 -0
  295. package/dist/eval/train-sequence.js +59 -0
  296. package/dist/eval/train-sequence.js.map +1 -0
  297. package/dist/eval/wilson.d.ts +45 -0
  298. package/dist/eval/wilson.js +48 -0
  299. package/dist/eval/wilson.js.map +1 -0
  300. package/dist/events/types.d.ts +1 -1
  301. package/dist/events/types.js +1 -1
  302. package/dist/events/types.js.map +1 -1
  303. package/dist/harnesses/auth-source.d.ts +51 -0
  304. package/dist/harnesses/auth-source.js +155 -0
  305. package/dist/harnesses/auth-source.js.map +1 -0
  306. package/dist/harnesses/engine/canonical-json.js +5 -3
  307. package/dist/harnesses/engine/canonical-json.js.map +1 -1
  308. package/dist/harnesses/engine/engine.d.ts +34 -1
  309. package/dist/harnesses/engine/engine.js +91 -11
  310. package/dist/harnesses/engine/engine.js.map +1 -1
  311. package/dist/harnesses/engine/packaging.js +5 -5
  312. package/dist/harnesses/engine/packaging.js.map +1 -1
  313. package/dist/harnesses/engine/persistence.d.ts +19 -61
  314. package/dist/harnesses/engine/persistence.js +28 -0
  315. package/dist/harnesses/engine/persistence.js.map +1 -1
  316. package/dist/harnesses/impls/_evaluator-base.d.ts +48 -0
  317. package/dist/harnesses/impls/_evaluator-base.js +35 -0
  318. package/dist/harnesses/impls/_evaluator-base.js.map +1 -0
  319. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +1 -1
  320. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js +1 -1
  321. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -1
  322. package/dist/harnesses/impls/claude-mcp-prediction/index.d.ts +2 -3
  323. package/dist/harnesses/impls/claude-mcp-prediction/index.js +29 -99
  324. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -1
  325. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js +4 -21
  326. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -1
  327. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.d.ts +2 -0
  328. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +1 -1
  329. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
  330. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js +30 -79
  331. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -1
  332. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js +4 -19
  333. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -1
  334. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +2 -0
  335. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +1 -1
  336. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
  337. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.d.ts +39 -0
  338. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js +62 -0
  339. package/dist/harnesses/impls/claude-mcp-shared/mcp-server-script.js.map +1 -0
  340. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.d.ts +40 -0
  341. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js +44 -0
  342. package/dist/harnesses/impls/claude-mcp-shared/mcp-server.js.map +1 -0
  343. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.d.ts +56 -0
  344. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js +79 -0
  345. package/dist/harnesses/impls/claude-mcp-shared/single-session-harness.js.map +1 -0
  346. package/dist/harnesses/impls/hermes-agent/adapter.d.ts +2 -0
  347. package/dist/harnesses/impls/hermes-agent/adapter.js +8 -5
  348. package/dist/harnesses/impls/hermes-agent/adapter.js.map +1 -1
  349. package/dist/harnesses/impls/hermes-agent/bootstrap.d.ts +1 -0
  350. package/dist/harnesses/impls/hermes-agent/bootstrap.js +6 -1
  351. package/dist/harnesses/impls/hermes-agent/bootstrap.js.map +1 -1
  352. package/dist/harnesses/impls/hermes-agent/harness.d.ts +25 -3
  353. package/dist/harnesses/impls/hermes-agent/harness.js +89 -5
  354. package/dist/harnesses/impls/hermes-agent/harness.js.map +1 -1
  355. package/dist/harnesses/impls/index.d.ts +2 -0
  356. package/dist/harnesses/impls/index.js +10 -1
  357. package/dist/harnesses/impls/index.js.map +1 -1
  358. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.d.ts +34 -0
  359. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js +111 -0
  360. package/dist/harnesses/impls/jinn-repo-evaluator/eval-runner.js.map +1 -0
  361. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.d.ts +24 -0
  362. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js +19 -0
  363. package/dist/harnesses/impls/jinn-repo-evaluator/evaluator.js.map +1 -0
  364. package/dist/harnesses/impls/jinn-repo-evaluator/harness.d.ts +64 -0
  365. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js +125 -0
  366. package/dist/harnesses/impls/jinn-repo-evaluator/harness.js.map +1 -0
  367. package/dist/harnesses/impls/jinn-repo-evaluator/repro.d.ts +32 -0
  368. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js +73 -0
  369. package/dist/harnesses/impls/jinn-repo-evaluator/repro.js.map +1 -0
  370. package/dist/harnesses/impls/learner/adapters/claude-code.js +5 -0
  371. package/dist/harnesses/impls/learner/adapters/claude-code.js.map +1 -1
  372. package/dist/harnesses/impls/learner/adapters/codex-code.d.ts +11 -1
  373. package/dist/harnesses/impls/learner/adapters/codex-code.js +130 -15
  374. package/dist/harnesses/impls/learner/adapters/codex-code.js.map +1 -1
  375. package/dist/harnesses/impls/learner/harness.d.ts +29 -1
  376. package/dist/harnesses/impls/learner/harness.js +85 -1
  377. package/dist/harnesses/impls/learner/harness.js.map +1 -1
  378. package/dist/harnesses/impls/learner/harvest.d.ts +2 -0
  379. package/dist/harnesses/impls/learner/harvest.js +51 -1
  380. package/dist/harnesses/impls/learner/harvest.js.map +1 -1
  381. package/dist/harnesses/impls/learner/plugin-path.js +1 -0
  382. package/dist/harnesses/impls/learner/plugin-path.js.map +1 -1
  383. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +5 -15
  384. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js +10 -29
  385. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -1
  386. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.d.ts +5 -15
  387. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +10 -23
  388. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  389. package/dist/harnesses/impls/prediction-v0-evaluator/index.d.ts +5 -15
  390. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +10 -25
  391. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -1
  392. package/dist/harnesses/impls/stub.d.ts +2 -2
  393. package/dist/harnesses/impls/stub.js +2 -2
  394. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js +8 -0
  395. package/dist/harnesses/impls/swe-rebench-v2-evaluator/eval-runner.js.map +1 -1
  396. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js +3 -1
  397. package/dist/harnesses/impls/swe-rebench-v2-evaluator/harness.js.map +1 -1
  398. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.d.ts +2 -2
  399. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js +3 -1
  400. package/dist/harnesses/impls/swe-rebench-v2-evaluator/index.js.map +1 -1
  401. package/dist/harnesses/readiness-registry.d.ts +16 -0
  402. package/dist/harnesses/readiness-registry.js +28 -6
  403. package/dist/harnesses/readiness-registry.js.map +1 -1
  404. package/dist/harnesses/types.d.ts +26 -0
  405. package/dist/learner/revert-decision.d.ts +16 -1
  406. package/dist/learner/revert-decision.js +38 -18
  407. package/dist/learner/revert-decision.js.map +1 -1
  408. package/dist/learner/revert-stats.d.ts +14 -0
  409. package/dist/learner/revert-stats.js +42 -0
  410. package/dist/learner/revert-stats.js.map +1 -1
  411. package/dist/learner/verification-gate.d.ts +53 -0
  412. package/dist/learner/verification-gate.js +80 -0
  413. package/dist/learner/verification-gate.js.map +1 -0
  414. package/dist/local-provider-url.d.ts +3 -0
  415. package/dist/local-provider-url.js +28 -0
  416. package/dist/local-provider-url.js.map +1 -0
  417. package/dist/main.js +188 -566
  418. package/dist/main.js.map +1 -1
  419. package/dist/mcp/acquire-artifact.d.ts +3 -3
  420. package/dist/mcp/acquire-artifact.js +3 -3
  421. package/dist/mcp/operator-server.js +1 -1
  422. package/dist/mcp/operator-server.js.map +1 -1
  423. package/dist/mcp/server.js +5 -6
  424. package/dist/mcp/server.js.map +1 -1
  425. package/dist/monitoring/net-liveness.d.ts +143 -0
  426. package/dist/monitoring/net-liveness.js +301 -0
  427. package/dist/monitoring/net-liveness.js.map +1 -0
  428. package/dist/observability/emit-event.d.ts +1 -1
  429. package/dist/observability/emit-event.js +0 -4
  430. package/dist/observability/emit-event.js.map +1 -1
  431. package/dist/observability/progress.d.ts +11 -0
  432. package/dist/observability/progress.js +16 -0
  433. package/dist/observability/progress.js.map +1 -0
  434. package/dist/pilot/cost.d.ts +19 -0
  435. package/dist/pilot/cost.js +31 -0
  436. package/dist/pilot/cost.js.map +1 -0
  437. package/dist/pilot/instance.d.ts +20 -0
  438. package/dist/pilot/instance.js +19 -0
  439. package/dist/pilot/instance.js.map +1 -0
  440. package/dist/pilot/repo.d.ts +31 -0
  441. package/dist/pilot/repo.js +42 -0
  442. package/dist/pilot/repo.js.map +1 -0
  443. package/dist/pilot/solve.d.ts +22 -0
  444. package/dist/pilot/solve.js +37 -0
  445. package/dist/pilot/solve.js.map +1 -0
  446. package/dist/pilot/tally.d.ts +35 -0
  447. package/dist/pilot/tally.js +61 -0
  448. package/dist/pilot/tally.js.map +1 -0
  449. package/dist/plugins/learner/.claude-plugin/plugin.json +1 -1
  450. package/dist/plugins/learner/.codex-plugin/plugin.json +1 -1
  451. package/dist/plugins/learner/hooks/session-start +30 -1
  452. package/dist/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  453. package/dist/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  454. package/dist/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  455. package/dist/plugins/local-trace-distiller/.mcp.json +8 -0
  456. package/dist/plugins/local-trace-distiller/README.md +27 -0
  457. package/dist/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  458. package/dist/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  459. package/dist/preflight/deployment-readiness.d.ts +127 -0
  460. package/dist/preflight/deployment-readiness.js +308 -0
  461. package/dist/preflight/deployment-readiness.js.map +1 -0
  462. package/dist/preflight/pidfile-liveness.d.ts +7 -1
  463. package/dist/preflight/pidfile-liveness.js +14 -0
  464. package/dist/preflight/pidfile-liveness.js.map +1 -1
  465. package/dist/preflight/rpc-network.d.ts +10 -3
  466. package/dist/preflight/rpc-network.js +46 -13
  467. package/dist/preflight/rpc-network.js.map +1 -1
  468. package/dist/preflight/stable-cwd.d.ts +29 -0
  469. package/dist/preflight/stable-cwd.js +98 -0
  470. package/dist/preflight/stable-cwd.js.map +1 -0
  471. package/dist/rpc/transport.d.ts +43 -5
  472. package/dist/rpc/transport.js +131 -30
  473. package/dist/rpc/transport.js.map +1 -1
  474. package/dist/scripts/swe-rebench-v2-seed-pool.json +2 -1
  475. package/dist/solver-nets/registry.d.ts +19 -0
  476. package/dist/solver-nets/registry.js +95 -66
  477. package/dist/solver-nets/registry.js.map +1 -1
  478. package/dist/solver-types/_jinn-repo-pool.d.ts +27 -0
  479. package/dist/solver-types/_jinn-repo-pool.js +27 -0
  480. package/dist/solver-types/_jinn-repo-pool.js.map +1 -0
  481. package/dist/solver-types/_swe-rebench-v2-held-out-slate.d.ts +76 -0
  482. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js +156 -0
  483. package/dist/solver-types/_swe-rebench-v2-held-out-slate.js.map +1 -0
  484. package/dist/solver-types/_swe-rebench-v2-pool-recovery.d.ts +81 -0
  485. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js +116 -0
  486. package/dist/solver-types/_swe-rebench-v2-pool-recovery.js.map +1 -0
  487. package/dist/solver-types/_swe-rebench-v2-state.d.ts +9 -0
  488. package/dist/solver-types/_swe-rebench-v2-state.js +14 -0
  489. package/dist/solver-types/_swe-rebench-v2-state.js.map +1 -1
  490. package/dist/solver-types/_swe-rebench-v2-validated-pool.d.ts +30 -0
  491. package/dist/solver-types/_swe-rebench-v2-validated-pool.js +40 -0
  492. package/dist/solver-types/_swe-rebench-v2-validated-pool.js.map +1 -1
  493. package/dist/solver-types/index.js +2 -0
  494. package/dist/solver-types/index.js.map +1 -1
  495. package/dist/solver-types/jinn-repo-admit.d.ts +17 -0
  496. package/dist/solver-types/jinn-repo-admit.js +16 -0
  497. package/dist/solver-types/jinn-repo-admit.js.map +1 -0
  498. package/dist/solver-types/jinn-repo-auto.d.ts +60 -0
  499. package/dist/solver-types/jinn-repo-auto.js +163 -0
  500. package/dist/solver-types/jinn-repo-auto.js.map +1 -0
  501. package/dist/solver-types/jinn-repo-definition.d.ts +15 -0
  502. package/dist/solver-types/jinn-repo-definition.js +34 -0
  503. package/dist/solver-types/jinn-repo-definition.js.map +1 -0
  504. package/dist/solver-types/jinn-repo-extract.d.ts +16 -0
  505. package/dist/solver-types/jinn-repo-extract.js +32 -0
  506. package/dist/solver-types/jinn-repo-extract.js.map +1 -0
  507. package/dist/solver-types/jinn-repo.d.ts +21 -0
  508. package/dist/solver-types/jinn-repo.js +23 -0
  509. package/dist/solver-types/jinn-repo.js.map +1 -0
  510. package/dist/solver-types/learner-loop-test.js +1 -1
  511. package/dist/solver-types/learner-loop-test.js.map +1 -1
  512. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v1.json +20 -0
  513. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.json +19 -0
  514. package/dist/solver-types/slates/held-out-slate.swe-rebench-v2.v2.screening-report.json +628 -0
  515. package/dist/solver-types/solver-type.d.ts +8 -0
  516. package/dist/solver-types/swe-rebench-v2.d.ts +2 -0
  517. package/dist/solver-types/swe-rebench-v2.js +115 -10
  518. package/dist/solver-types/swe-rebench-v2.js.map +1 -1
  519. package/dist/solvernets/launched-record-dispatcher.d.ts +5 -0
  520. package/dist/solvernets/launched-record-dispatcher.js +14 -1
  521. package/dist/solvernets/launched-record-dispatcher.js.map +1 -1
  522. package/dist/solvernets/registry-client-erc8004.js +29 -37
  523. package/dist/solvernets/registry-client-erc8004.js.map +1 -1
  524. package/dist/solvernets/registry-client.d.ts +6 -0
  525. package/dist/solvernets/store.d.ts +1 -1
  526. package/dist/solvernets/store.js +8 -3
  527. package/dist/solvernets/store.js.map +1 -1
  528. package/dist/spend/ai-units-config.d.ts +10 -0
  529. package/dist/spend/ai-units-config.js +7 -1
  530. package/dist/spend/ai-units-config.js.map +1 -1
  531. package/dist/spend/ai-units.d.ts +51 -0
  532. package/dist/spend/ai-units.js +73 -0
  533. package/dist/spend/ai-units.js.map +1 -1
  534. package/dist/spend/credential.d.ts +2 -2
  535. package/dist/spend/credential.js +9 -3
  536. package/dist/spend/credential.js.map +1 -1
  537. package/dist/spend/record.js +12 -5
  538. package/dist/spend/record.js.map +1 -1
  539. package/dist/spend/spend-cap.d.ts +10 -0
  540. package/dist/spend/spend-cap.js +13 -0
  541. package/dist/spend/spend-cap.js.map +1 -0
  542. package/dist/spend/usage.js +39 -3
  543. package/dist/spend/usage.js.map +1 -1
  544. package/dist/store/store.d.ts +106 -5
  545. package/dist/store/store.js +194 -8
  546. package/dist/store/store.js.map +1 -1
  547. package/dist/trajectory/emit.d.ts +6 -0
  548. package/dist/trajectory/emit.js +9 -1
  549. package/dist/trajectory/emit.js.map +1 -1
  550. package/dist/trajectory/harness-bundle-schema.d.ts +1 -1
  551. package/dist/trajectory/harness-bundle-schema.js +1 -1
  552. package/dist/trajectory/harness-bundle-schema.js.map +1 -1
  553. package/dist/trajectory/processors/identity-scrub.js +22 -3
  554. package/dist/trajectory/processors/identity-scrub.js.map +1 -1
  555. package/dist/trajectory/schema.d.ts +1 -1
  556. package/dist/trajectory/schema.js +1 -1
  557. package/dist/trajectory/schema.js.map +1 -1
  558. package/dist/trajectory/scrub/build.d.ts +46 -0
  559. package/dist/trajectory/scrub/build.js +76 -0
  560. package/dist/trajectory/scrub/build.js.map +1 -0
  561. package/dist/trajectory/scrub/emit-scrub.d.ts +41 -0
  562. package/dist/trajectory/scrub/emit-scrub.js +88 -0
  563. package/dist/trajectory/scrub/emit-scrub.js.map +1 -0
  564. package/dist/trajectory/scrub/key-policy.d.ts +20 -0
  565. package/dist/trajectory/scrub/key-policy.js +43 -0
  566. package/dist/trajectory/scrub/key-policy.js.map +1 -0
  567. package/dist/trajectory/scrub/layer2.d.ts +23 -0
  568. package/dist/trajectory/scrub/layer2.js +33 -0
  569. package/dist/trajectory/scrub/layer2.js.map +1 -0
  570. package/dist/trajectory/scrub/ml-pii-stage.d.ts +24 -0
  571. package/dist/trajectory/scrub/ml-pii-stage.js +43 -0
  572. package/dist/trajectory/scrub/ml-pii-stage.js.map +1 -0
  573. package/dist/trajectory/scrub/openredaction-stage.d.ts +178 -0
  574. package/dist/trajectory/scrub/openredaction-stage.js +269 -0
  575. package/dist/trajectory/scrub/openredaction-stage.js.map +1 -0
  576. package/dist/trajectory/scrub/pii-build.d.ts +31 -0
  577. package/dist/trajectory/scrub/pii-build.js +64 -0
  578. package/dist/trajectory/scrub/pii-build.js.map +1 -0
  579. package/dist/trajectory/scrub/pipeline.d.ts +37 -0
  580. package/dist/trajectory/scrub/pipeline.js +83 -0
  581. package/dist/trajectory/scrub/pipeline.js.map +1 -0
  582. package/dist/trajectory/scrub/plain-patterns-stage.d.ts +31 -0
  583. package/dist/trajectory/scrub/plain-patterns-stage.js +85 -0
  584. package/dist/trajectory/scrub/plain-patterns-stage.js.map +1 -0
  585. package/dist/trajectory/scrub/secretlint-stage.d.ts +35 -0
  586. package/dist/trajectory/scrub/secretlint-stage.js +250 -0
  587. package/dist/trajectory/scrub/secretlint-stage.js.map +1 -0
  588. package/dist/trajectory/scrub/transformers-detector.d.ts +35 -0
  589. package/dist/trajectory/scrub/transformers-detector.js +68 -0
  590. package/dist/trajectory/scrub/transformers-detector.js.map +1 -0
  591. package/dist/trajectory/scrub/types.d.ts +25 -0
  592. package/dist/trajectory/scrub/types.js +2 -0
  593. package/dist/trajectory/scrub/types.js.map +1 -0
  594. package/dist/trajectory/transcript-parsers/types.d.ts +1 -1
  595. package/dist/trajectory/transcript-parsers/types.js +1 -1
  596. package/dist/trajectory/transcript-parsers/types.js.map +1 -1
  597. package/dist/trajectory/transcript-watcher.d.ts +26 -0
  598. package/dist/trajectory/transcript-watcher.js +33 -0
  599. package/dist/trajectory/transcript-watcher.js.map +1 -1
  600. package/dist/tx-retry.d.ts +12 -0
  601. package/dist/tx-retry.js +41 -12
  602. package/dist/tx-retry.js.map +1 -1
  603. package/dist/types/envelope.d.ts +1 -1
  604. package/dist/types/envelope.js +1 -1
  605. package/dist/types/envelope.js.map +1 -1
  606. package/dist/types/payloads/index.d.ts +1 -1
  607. package/dist/types/payloads/index.js +7 -1
  608. package/dist/types/payloads/index.js.map +1 -1
  609. package/dist/types/payloads/portfolio-v0.d.ts +1 -1
  610. package/dist/types/payloads/portfolio-v0.js +1 -1
  611. package/dist/types/payloads/portfolio-v0.js.map +1 -1
  612. package/dist/types/payloads/prediction-apy-v0.d.ts +1 -1
  613. package/dist/types/payloads/prediction-apy-v0.js +1 -1
  614. package/dist/types/payloads/prediction-apy-v0.js.map +1 -1
  615. package/dist/types/payloads/prediction-v0.d.ts +1 -1
  616. package/dist/types/payloads/prediction-v0.js +1 -1
  617. package/dist/types/payloads/prediction-v0.js.map +1 -1
  618. package/dist/types/portfolio.d.ts +1 -1
  619. package/dist/types/portfolio.js +1 -1
  620. package/dist/types/portfolio.js.map +1 -1
  621. package/dist/types/prediction-apy.d.ts +1 -1
  622. package/dist/types/prediction-apy.js +1 -1
  623. package/dist/types/prediction-apy.js.map +1 -1
  624. package/dist/types/prediction.d.ts +1 -1
  625. package/dist/types/prediction.js +1 -1
  626. package/dist/types/prediction.js.map +1 -1
  627. package/dist/types/session-provenance.d.ts +1 -1
  628. package/dist/types/session-provenance.js +1 -1
  629. package/dist/types/session-provenance.js.map +1 -1
  630. package/dist/types/skill-artifact.d.ts +442 -0
  631. package/dist/types/skill-artifact.js +137 -0
  632. package/dist/types/skill-artifact.js.map +1 -0
  633. package/dist/types/task-document.d.ts +315 -1
  634. package/dist/types/task-document.js +9 -1
  635. package/dist/types/task-document.js.map +1 -1
  636. package/dist/types/task-run-read-model.d.ts +21 -0
  637. package/dist/types/task-run-read-model.js +2 -0
  638. package/dist/types/task-run-read-model.js.map +1 -0
  639. package/dist/types/task-run.d.ts +75 -0
  640. package/dist/types/task-run.js +2 -0
  641. package/dist/types/task-run.js.map +1 -0
  642. package/dist/types/task.d.ts +29 -1
  643. package/dist/types/task.js +1 -1
  644. package/dist/types/task.js.map +1 -1
  645. package/dist/types/window.d.ts +1 -1
  646. package/dist/types/window.js +1 -1
  647. package/dist/types/window.js.map +1 -1
  648. package/dist/util/redact-rpc-urls.d.ts +1 -1
  649. package/dist/util/redact-rpc-urls.js +57 -2
  650. package/dist/util/redact-rpc-urls.js.map +1 -1
  651. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.d.ts +1 -1
  652. package/dist/vendor/@jinn-network/sdk/dist/checkpoint.js +1 -1
  653. package/dist/vendor/@jinn-network/sdk/dist/contracts.d.ts +3 -2
  654. package/dist/vendor/@jinn-network/sdk/dist/contracts.js +49 -0
  655. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.d.ts +44 -0
  656. package/dist/vendor/@jinn-network/sdk/dist/jinn-repo.js +25 -0
  657. package/dist/vendor/@jinn-network/sdk/dist/json-schema.d.ts +1 -1
  658. package/dist/vendor/@jinn-network/sdk/dist/json-schema.js +1 -1
  659. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.d.ts +38 -0
  660. package/dist/vendor/@jinn-network/sdk/dist/payloads/jinn-repo.js +22 -0
  661. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.d.ts +1 -1
  662. package/dist/vendor/@jinn-network/sdk/dist/payloads/prediction-v1.js +1 -1
  663. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.d.ts +1 -1
  664. package/dist/vendor/@jinn-network/sdk/dist/payloads/session-derived.js +1 -1
  665. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.d.ts +109 -2
  666. package/dist/vendor/@jinn-network/sdk/dist/payloads/swe-rebench-v2.js +26 -2
  667. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.d.ts +1 -1
  668. package/dist/vendor/@jinn-network/sdk/dist/prediction-v1.js +1 -1
  669. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.d.ts +4 -0
  670. package/dist/vendor/@jinn-network/sdk/dist/solvernets/jinn-repo.js +2 -0
  671. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.d.ts +1 -1
  672. package/dist/vendor/@jinn-network/sdk/dist/solvernets/manifest-schema.js +1 -1
  673. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.d.ts +65 -0
  674. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2-held-out-slate.js +123 -0
  675. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.d.ts +2 -2
  676. package/dist/vendor/@jinn-network/sdk/dist/solvernets/swe-rebench-v2.js +1 -1
  677. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.d.ts +1 -1
  678. package/dist/vendor/@jinn-network/sdk/dist/swe-rebench-v2.js +1 -1
  679. package/dist/vendor/@jinn-network/sdk/package.json +9 -1
  680. package/docker-compose.yml +3 -2
  681. package/package.json +43 -28
  682. package/plugins/jinn-repo-runtime/.claude-plugin/plugin.json +5 -0
  683. package/plugins/jinn-repo-runtime/.codex-plugin/plugin.json +39 -0
  684. package/plugins/jinn-repo-runtime/README.md +27 -0
  685. package/plugins/jinn-repo-runtime/hooks/hooks.json +16 -0
  686. package/plugins/jinn-repo-runtime/hooks/session-start +73 -0
  687. package/plugins/jinn-repo-runtime/jinn.plugin.json +11 -0
  688. package/plugins/jinn-repo-runtime/skills/task/SKILL.md +92 -0
  689. package/plugins/learner/.claude-plugin/plugin.json +1 -1
  690. package/plugins/learner/.codex-plugin/plugin.json +1 -1
  691. package/plugins/learner/hooks/session-start +30 -1
  692. package/plugins/learner/skills/learn/consolidator-prompt.md +4 -0
  693. package/plugins/local-trace-distiller/.claude-plugin/plugin.json +9 -0
  694. package/plugins/local-trace-distiller/.codex-plugin/plugin.json +41 -0
  695. package/plugins/local-trace-distiller/.mcp.json +8 -0
  696. package/plugins/local-trace-distiller/README.md +27 -0
  697. package/plugins/local-trace-distiller/jinn.plugin.json +36 -0
  698. package/plugins/local-trace-distiller/skills/distill/SKILL.md +51 -0
  699. package/plugins/swe-rebench-v2-runtime/hooks/hooks.json +16 -0
  700. package/plugins/swe-rebench-v2-runtime/hooks/session-start +74 -0
  701. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +0 -55
  702. package/deployments/deployment-jinn-mvi-l1-sepolia.json +0 -55
  703. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +0 -13
  704. package/deployments/deployment-jinn-testnet-faucet-baseSepolia-fast.json +0 -15
  705. package/dist/api/peers.js.map +0 -1
  706. package/dist/daemon/jinn-claim-loop-canonical.d.ts +0 -207
  707. package/dist/daemon/jinn-claim-loop-canonical.js +0 -296
  708. package/dist/daemon/jinn-claim-loop-canonical.js.map +0 -1
  709. package/dist/daemon/jinn-claim-loop-mock.d.ts +0 -61
  710. package/dist/daemon/jinn-claim-loop-mock.js +0 -122
  711. package/dist/daemon/jinn-claim-loop-mock.js.map +0 -1
  712. package/dist/daemon/jinn-claim-loop-wiring.d.ts +0 -33
  713. package/dist/daemon/jinn-claim-loop-wiring.js +0 -40
  714. package/dist/daemon/jinn-claim-loop-wiring.js.map +0 -1
  715. package/dist/daemon/jinn-claim-loop.d.ts +0 -130
  716. package/dist/daemon/jinn-claim-loop.js +0 -328
  717. package/dist/daemon/jinn-claim-loop.js.map +0 -1
  718. package/dist/dashboard/assets/index-CzKxvMcU.css +0 -32
  719. package/dist/dashboard/assets/index-yVemxHot.js +0 -351
  720. package/dist/earning/jinn-rewards.js.map +0 -1
  721. package/dist/scripts/donation-consumption-acceptance.d.ts +0 -85
  722. package/dist/scripts/donation-consumption-acceptance.js +0 -1382
  723. package/dist/scripts/donation-consumption-acceptance.js.map +0 -1
  724. package/dist/x402/acquire.d.ts +0 -17
  725. package/dist/x402/acquire.js +0 -49
  726. package/dist/x402/acquire.js.map +0 -1
  727. package/dist/x402/facilitator.d.ts +0 -11
  728. package/dist/x402/facilitator.js +0 -52
  729. package/dist/x402/facilitator.js.map +0 -1
  730. package/dist/x402/handler.d.ts +0 -27
  731. package/dist/x402/handler.js +0 -236
  732. package/dist/x402/handler.js.map +0 -1
  733. /package/dist/{api/peers.d.ts → daemon/peer-sync.d.ts} +0 -0
@@ -1,5 +1,6 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import type { EnvelopeProjection, EnvelopeProjectionQuery } from '../corpus/types.js';
3
+ import type { TaskRunReadModel } from '../types/task-run-read-model.js';
3
4
  import type { TxSubmissionKey, TxSubmissionLedgerEntry } from '../tx-retry.js';
4
5
  export interface ActivityEventInput {
5
6
  ts: string | null;
@@ -211,6 +212,12 @@ export declare class Store {
211
212
  */
212
213
  private hasLegacyDesiredStateId;
213
214
  constructor(dbPath: string);
215
+ /**
216
+ * Read-only task-run view for the status/build endpoints (#1584). Returns a
217
+ * `TaskRunReadModel` backed by the engine persistence layer, keeping the
218
+ * concrete `TaskRunPersistence` construction out of `api/`.
219
+ */
220
+ taskRunReadModel(): TaskRunReadModel;
214
221
  /** Older request-first DBs keyed artifacts by desired_state_id before Task-native IDs landed. */
215
222
  private ensureArtifactsTaskColumns;
216
223
  /** Older on-disk DBs predate `peer_catalog_id` on network_artifacts. */
@@ -277,6 +284,13 @@ export declare class Store {
277
284
  before?: string;
278
285
  }): Array<{
279
286
  taskId: string;
287
+ /**
288
+ * On-chain decimal taskId (#579), decoded from the `TaskCreated` event.
289
+ * DISTINCT from `taskId`, which is the off-chain task-document id. The
290
+ * launcher's on-chain status chip keys its indexer lookup on this. Empty
291
+ * string when no on-chain id was recorded (pre-migration / lost event).
292
+ */
293
+ protocolTaskId: string;
280
294
  taskCid: string;
281
295
  solverType: string | null;
282
296
  requestId: string;
@@ -344,6 +358,39 @@ export declare class Store {
344
358
  * Issue #815.
345
359
  */
346
360
  aiUnitsThisWeek(credentialId: string, now?: Date): number;
361
+ /**
362
+ * Actual-spend accumulator for the current 6h UTC block (issue #1004).
363
+ *
364
+ * Sums `COALESCE(actual_cost_usd_micros, estimated_cost_usd_micros, 0)`
365
+ * over rows whose `claim_status` is `'claimed'` or `'delivered'`:
366
+ * - delivered rows contribute the real harvested cost (`actual_*`),
367
+ * - in-flight claimed rows contribute their estimate so a burst of
368
+ * concurrent claims cannot slip the cap before any of them deliver,
369
+ * - failed claims (status `'claim_failed'`) are excluded.
370
+ *
371
+ * `estimated` is true iff the summed figure includes any estimate-backed
372
+ * cost: an in-flight `claimed` row with no `actual_cost_usd_micros` yet,
373
+ * OR a `delivered` row whose actual cost is itself a heuristic
374
+ * (`actual_cost_estimated = 1` — a telemetry-less harness such as Hermes).
375
+ * It is false only when every contributing row is harvested actual
376
+ * telemetry. The gate surfaces this so an estimate-backed figure is not
377
+ * presented as metered. Block boundaries mirror `aiUnitsThisBlock`.
378
+ */
379
+ usdMicrosThisBlock(credentialId: string, now?: Date): {
380
+ usdMicros: number;
381
+ estimated: boolean;
382
+ };
383
+ /**
384
+ * Actual-spend accumulator for the trailing 7-day rolling window from
385
+ * `now` (issue #1004). Same COALESCE + claim_status filter + `estimated`
386
+ * semantics as {@link usdMicrosThisBlock}.
387
+ */
388
+ usdMicrosThisWeek(credentialId: string, now?: Date): {
389
+ usdMicros: number;
390
+ estimated: boolean;
391
+ };
392
+ /** Shared COALESCE-sum + estimate-flag query for the USD accumulators. */
393
+ private sumUsdMicros;
347
394
  /**
348
395
  * True iff an `ai_units_cap_reached` row exists for the given
349
396
  * (credentialId, window, blockId). Used by the daemon to hydrate the
@@ -357,12 +404,22 @@ export declare class Store {
357
404
  hasAiUnitsCapReachedFor(credentialId: string, window: 'block' | 'week', blockId: string): boolean;
358
405
  /**
359
406
  * Mark the per-request `claimed` row as `delivered` and record
360
- * `actual_cost_usd_micros`. The `ai_units` projection captured at
361
- * claim time is intentionally NOT recomputed the issue spec says
362
- * "estimates are the gate input, never recomputed". Idempotent: a
363
- * no-op when no `claimed` row exists.
407
+ * `actual_cost_usd_micros` (issue #1004 the gate's accumulator now
408
+ * reads this column via COALESCE, so a delivered row's real harvested
409
+ * cost replaces its claim-time estimate in the running total). The
410
+ * `ai_units` projection captured at claim time is intentionally NOT
411
+ * recomputed — it remains the per-task estimate for the legacy unit
412
+ * surfaces. For subscription credentials the resulting USD figure is a
413
+ * *proxy* budget, not an exact bound on the provider's plan quota.
414
+ *
415
+ * `actualCostEstimated` (issue #1004, AC4) records whether the actual
416
+ * cost is itself a heuristic — true for a telemetry-less harness such as
417
+ * Hermes whose `harvestHarnessUsage` falls back to an a-priori estimate,
418
+ * false when the figure is harvested telemetry. The gate reads it so a
419
+ * delivered-but-heuristic row reports `estimated: true` rather than being
420
+ * presented as metered. Idempotent: a no-op when no `claimed` row exists.
364
421
  */
365
- finalizeClaimDelivered(requestId: string, actualCostUsdMicros: number): void;
422
+ finalizeClaimDelivered(requestId: string, actualCostUsdMicros: number, actualCostEstimated: boolean): void;
366
423
  /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
367
424
  getActivityEventsAfterId(afterId: number, limit: number): ActivityEventRow[];
368
425
  /**
@@ -384,6 +441,7 @@ export declare class Store {
384
441
  getLastEventAtForService(serviceIndex: number): string | null;
385
442
  getActivityCountsForService(serviceIndex: number): Record<string, number>;
386
443
  recordRewardClaim(claim: RewardClaimInput): void;
444
+ getClaimedRewardsLast24hWei(): string;
387
445
  getClaimedRewardsByService(): Record<number, {
388
446
  total: string;
389
447
  lastAt: string;
@@ -499,6 +557,49 @@ export declare class Store {
499
557
  queryEnvelopeProjections(query?: EnvelopeProjectionQuery): EnvelopeProjection[];
500
558
  saveErc8004Anchor(input: Erc8004AnchorInput): void;
501
559
  listErc8004AnchorsByEnvelopeCids(envelopeCids: readonly string[]): Erc8004AnchorRow[];
560
+ /**
561
+ * Upsert one held-out eval result (issue #818). PK is
562
+ * `(checkpoint_cid, slate_version, instance_id)` so a re-run overwrites.
563
+ * `passed` is null for `unscorable` rows.
564
+ */
565
+ recordEvalResult(args: EvalResultRecord): void;
566
+ /**
567
+ * Aggregate the eval results for a (checkpoint, slate version):
568
+ * `scorable` = rows with `unscorable = 0`; `passed` = scorable rows with
569
+ * `passed = 1`. Unscorable rows are counted separately and never enter the
570
+ * denominator. A checkpoint with no rows yields all-zero (the orchestrator
571
+ * reads this to detect a not-yet-evaluated parent).
572
+ */
573
+ getEvalAggregate(checkpoint_cid: string, slate_version: string): EvalAggregate;
574
+ /**
575
+ * Distinct `slate_hash` values recorded for a (checkpoint, slate version).
576
+ * The eval orchestrator reads this to detect slate-content drift under a
577
+ * stable version label — the held-out exam is only an honest before/after
578
+ * when the parent and child were scored on the SAME slate content (defeating
579
+ * confounder #1, task-selection). Empty when the checkpoint has no rows.
580
+ */
581
+ getEvalSlateHashes(checkpoint_cid: string, slate_version: string): string[];
582
+ /** Per-task eval results for a (checkpoint, slate version), ordered by instance_id. */
583
+ getEvalResults(checkpoint_cid: string, slate_version: string): EvalResultRow[];
502
584
  close(): void;
503
585
  }
586
+ export interface EvalResultRecord {
587
+ checkpoint_cid: string;
588
+ slate_hash: string;
589
+ slate_version: string;
590
+ instance_id: string;
591
+ /** Pass/fail; ignored (stored NULL) when `unscorable` is true. */
592
+ passed: boolean | null;
593
+ unscorable: boolean;
594
+ code_digest: string;
595
+ run_at_ms: number;
596
+ test_log_excerpt?: string | null;
597
+ }
598
+ /** A persisted eval result read back from the store (same shape as the record written). */
599
+ export type EvalResultRow = EvalResultRecord;
600
+ export interface EvalAggregate {
601
+ passed: number;
602
+ scorable: number;
603
+ unscorable: number;
604
+ }
504
605
  export {};
@@ -1,7 +1,7 @@
1
1
  import Database from 'better-sqlite3';
2
2
  import { mkdirSync } from 'node:fs';
3
3
  import { dirname } from 'node:path';
4
- import { TASK_RUNS_SCHEMA } from '../harnesses/engine/persistence.js';
4
+ import { TASK_RUNS_SCHEMA, TaskRunPersistence } from '../harnesses/engine/persistence.js';
5
5
  import { normalizeEnvelopeRole } from '../types/envelope.js';
6
6
  function readClaimPolicyMaxClaims(taskPayload) {
7
7
  if (!taskPayload)
@@ -288,6 +288,25 @@ CREATE TABLE IF NOT EXISTS capture_spans (
288
288
  );
289
289
  CREATE INDEX IF NOT EXISTS capture_spans_session ON capture_spans (session_id);
290
290
 
291
+ -- Held-out checkpoint eval results (issue #818). One row per
292
+ -- (checkpoint, slate version, instance). Scores are only comparable WITHIN a
293
+ -- slate version; slate_hash is stored so a version-bump / hash-drift is
294
+ -- detectable. passed is nullable: an unscorable row (Docker down, disk
295
+ -- floor) carries passed = NULL and is EXCLUDED from the denominator -- never
296
+ -- coerced to a fail.
297
+ CREATE TABLE IF NOT EXISTS eval_results (
298
+ checkpoint_cid TEXT NOT NULL,
299
+ slate_hash TEXT NOT NULL,
300
+ slate_version TEXT NOT NULL,
301
+ instance_id TEXT NOT NULL,
302
+ passed INTEGER,
303
+ unscorable INTEGER NOT NULL DEFAULT 0,
304
+ code_digest TEXT NOT NULL,
305
+ run_at_ms INTEGER NOT NULL,
306
+ test_log_excerpt TEXT,
307
+ PRIMARY KEY (checkpoint_cid, slate_version, instance_id)
308
+ );
309
+
291
310
  `;
292
311
  export class Store {
293
312
  /** Exposed for engine persistence layer — treat as package-internal. */
@@ -320,6 +339,14 @@ export class Store {
320
339
  this.backfillActivityEvents();
321
340
  this.recordLegacyRestorationIntentsIgnored();
322
341
  }
342
+ /**
343
+ * Read-only task-run view for the status/build endpoints (#1584). Returns a
344
+ * `TaskRunReadModel` backed by the engine persistence layer, keeping the
345
+ * concrete `TaskRunPersistence` construction out of `api/`.
346
+ */
347
+ taskRunReadModel() {
348
+ return new TaskRunPersistence(this.db);
349
+ }
323
350
  /** Older request-first DBs keyed artifacts by desired_state_id before Task-native IDs landed. */
324
351
  ensureArtifactsTaskColumns() {
325
352
  const cols = this.db.prepare(`PRAGMA table_info(artifacts)`).all();
@@ -400,6 +427,12 @@ export class Store {
400
427
  addActivityColumn('claim_status', 'claim_status TEXT');
401
428
  addActivityColumn('estimated_cost_usd_micros', 'estimated_cost_usd_micros INTEGER');
402
429
  addActivityColumn('actual_cost_usd_micros', 'actual_cost_usd_micros INTEGER');
430
+ // Issue #1004 (AC4): whether actual_cost_usd_micros is estimate-backed
431
+ // (1) or harvested telemetry (0/null). A telemetry-less harness such as
432
+ // Hermes still writes a NON-null actual cost via finalizeClaimDelivered,
433
+ // so the column distinguishes a heuristic figure from a metered one. The
434
+ // gate's estimated flag reads this so a heuristic is not shown as metered.
435
+ addActivityColumn('actual_cost_estimated', 'actual_cost_estimated INTEGER');
403
436
  this.db.exec(`CREATE INDEX IF NOT EXISTS idx_activity_events_credential ON activity_events (credential_id, ts)`);
404
437
  // Per-request lookup for the completion-time update path that fills
405
438
  // actualCostUsdMicros / sets claim_status='delivered'.
@@ -684,6 +717,7 @@ export class Store {
684
717
  });
685
718
  return {
686
719
  taskId,
720
+ protocolTaskId,
687
721
  taskCid,
688
722
  solverType: r.solver_type,
689
723
  requestId: r.request_id,
@@ -913,6 +947,56 @@ export class Store {
913
947
  AND claim_status IN ('claimed', 'delivered')`).get({ cid: credentialId, weekStart });
914
948
  return row.total ?? 0;
915
949
  }
950
+ /**
951
+ * Actual-spend accumulator for the current 6h UTC block (issue #1004).
952
+ *
953
+ * Sums `COALESCE(actual_cost_usd_micros, estimated_cost_usd_micros, 0)`
954
+ * over rows whose `claim_status` is `'claimed'` or `'delivered'`:
955
+ * - delivered rows contribute the real harvested cost (`actual_*`),
956
+ * - in-flight claimed rows contribute their estimate so a burst of
957
+ * concurrent claims cannot slip the cap before any of them deliver,
958
+ * - failed claims (status `'claim_failed'`) are excluded.
959
+ *
960
+ * `estimated` is true iff the summed figure includes any estimate-backed
961
+ * cost: an in-flight `claimed` row with no `actual_cost_usd_micros` yet,
962
+ * OR a `delivered` row whose actual cost is itself a heuristic
963
+ * (`actual_cost_estimated = 1` — a telemetry-less harness such as Hermes).
964
+ * It is false only when every contributing row is harvested actual
965
+ * telemetry. The gate surfaces this so an estimate-backed figure is not
966
+ * presented as metered. Block boundaries mirror `aiUnitsThisBlock`.
967
+ */
968
+ usdMicrosThisBlock(credentialId, now = new Date()) {
969
+ const startOfDay = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate());
970
+ const sinceDayStart = now.getTime() - startOfDay;
971
+ const sixHoursMs = 6 * 60 * 60 * 1_000;
972
+ const blocksIn = Math.min(Math.floor(sinceDayStart / sixHoursMs), 3);
973
+ const blockStart = new Date(startOfDay + blocksIn * sixHoursMs).toISOString();
974
+ const blockEnd = new Date(startOfDay + (blocksIn + 1) * sixHoursMs).toISOString();
975
+ return this.sumUsdMicros(credentialId, blockStart, blockEnd);
976
+ }
977
+ /**
978
+ * Actual-spend accumulator for the trailing 7-day rolling window from
979
+ * `now` (issue #1004). Same COALESCE + claim_status filter + `estimated`
980
+ * semantics as {@link usdMicrosThisBlock}.
981
+ */
982
+ usdMicrosThisWeek(credentialId, now = new Date()) {
983
+ const weekStart = new Date(now.getTime() - 7 * 24 * 60 * 60 * 1_000).toISOString();
984
+ return this.sumUsdMicros(credentialId, weekStart, undefined);
985
+ }
986
+ /** Shared COALESCE-sum + estimate-flag query for the USD accumulators. */
987
+ sumUsdMicros(credentialId, fromIso, toIso) {
988
+ const upper = toIso ? 'AND ts < @to' : '';
989
+ const row = this.db
990
+ .prepare(`SELECT
991
+ COALESCE(SUM(COALESCE(actual_cost_usd_micros, estimated_cost_usd_micros, 0)), 0) AS total,
992
+ COALESCE(SUM(CASE WHEN actual_cost_usd_micros IS NULL OR actual_cost_estimated = 1 THEN 1 ELSE 0 END), 0) AS estimatedRows
993
+ FROM activity_events
994
+ WHERE credential_id = @cid
995
+ AND ts IS NOT NULL AND ts >= @from ${upper}
996
+ AND claim_status IN ('claimed', 'delivered')`)
997
+ .get({ cid: credentialId, from: fromIso, to: toIso });
998
+ return { usdMicros: row.total ?? 0, estimated: (row.estimatedRows ?? 0) > 0 };
999
+ }
916
1000
  /**
917
1001
  * True iff an `ai_units_cap_reached` row exists for the given
918
1002
  * (credentialId, window, blockId). Used by the daemon to hydrate the
@@ -935,16 +1019,31 @@ export class Store {
935
1019
  }
936
1020
  /**
937
1021
  * Mark the per-request `claimed` row as `delivered` and record
938
- * `actual_cost_usd_micros`. The `ai_units` projection captured at
939
- * claim time is intentionally NOT recomputed the issue spec says
940
- * "estimates are the gate input, never recomputed". Idempotent: a
941
- * no-op when no `claimed` row exists.
1022
+ * `actual_cost_usd_micros` (issue #1004 the gate's accumulator now
1023
+ * reads this column via COALESCE, so a delivered row's real harvested
1024
+ * cost replaces its claim-time estimate in the running total). The
1025
+ * `ai_units` projection captured at claim time is intentionally NOT
1026
+ * recomputed — it remains the per-task estimate for the legacy unit
1027
+ * surfaces. For subscription credentials the resulting USD figure is a
1028
+ * *proxy* budget, not an exact bound on the provider's plan quota.
1029
+ *
1030
+ * `actualCostEstimated` (issue #1004, AC4) records whether the actual
1031
+ * cost is itself a heuristic — true for a telemetry-less harness such as
1032
+ * Hermes whose `harvestHarnessUsage` falls back to an a-priori estimate,
1033
+ * false when the figure is harvested telemetry. The gate reads it so a
1034
+ * delivered-but-heuristic row reports `estimated: true` rather than being
1035
+ * presented as metered. Idempotent: a no-op when no `claimed` row exists.
942
1036
  */
943
- finalizeClaimDelivered(requestId, actualCostUsdMicros) {
1037
+ finalizeClaimDelivered(requestId, actualCostUsdMicros, actualCostEstimated) {
944
1038
  this.db.prepare(`UPDATE activity_events
945
1039
  SET claim_status = 'delivered',
946
- actual_cost_usd_micros = @actual
947
- WHERE request_id = @req AND claim_status = 'claimed'`).run({ req: requestId, actual: actualCostUsdMicros });
1040
+ actual_cost_usd_micros = @actual,
1041
+ actual_cost_estimated = @estimated
1042
+ WHERE request_id = @req AND claim_status = 'claimed'`).run({
1043
+ req: requestId,
1044
+ actual: actualCostUsdMicros,
1045
+ estimated: actualCostEstimated ? 1 : 0,
1046
+ });
948
1047
  }
949
1048
  /** Newer events first, then ascending id for `jinn logs --follow` (oldest in batch printed first in caller). */
950
1049
  getActivityEventsAfterId(afterId, limit) {
@@ -1095,6 +1194,20 @@ export class Store {
1095
1194
  asset: claim.asset ?? 'reward',
1096
1195
  });
1097
1196
  }
1197
+ getClaimedRewardsLast24hWei() {
1198
+ const cutoff = new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString();
1199
+ const rows = this.db.prepare(`SELECT amount_wei FROM reward_claims WHERE ts >= ?`).all(cutoff);
1200
+ let total = 0n;
1201
+ for (const row of rows) {
1202
+ try {
1203
+ total += BigInt(row.amount_wei);
1204
+ }
1205
+ catch {
1206
+ /* ignore malformed legacy rows */
1207
+ }
1208
+ }
1209
+ return total.toString();
1210
+ }
1098
1211
  getClaimedRewardsByService() {
1099
1212
  const rows = this.db.prepare(`SELECT id, service_index, amount_wei, ts, tx_hash FROM reward_claims ORDER BY id ASC`).all();
1100
1213
  const out = {};
@@ -1819,6 +1932,79 @@ export class Store {
1819
1932
  anchoredAt: r.anchored_at,
1820
1933
  }));
1821
1934
  }
1935
+ /**
1936
+ * Upsert one held-out eval result (issue #818). PK is
1937
+ * `(checkpoint_cid, slate_version, instance_id)` so a re-run overwrites.
1938
+ * `passed` is null for `unscorable` rows.
1939
+ */
1940
+ recordEvalResult(args) {
1941
+ this.db
1942
+ .prepare(`INSERT INTO eval_results
1943
+ (checkpoint_cid, slate_hash, slate_version, instance_id, passed, unscorable, code_digest, run_at_ms, test_log_excerpt)
1944
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)
1945
+ ON CONFLICT(checkpoint_cid, slate_version, instance_id) DO UPDATE SET
1946
+ slate_hash = excluded.slate_hash,
1947
+ passed = excluded.passed,
1948
+ unscorable = excluded.unscorable,
1949
+ code_digest = excluded.code_digest,
1950
+ run_at_ms = excluded.run_at_ms,
1951
+ test_log_excerpt = excluded.test_log_excerpt`)
1952
+ .run(args.checkpoint_cid, args.slate_hash, args.slate_version, args.instance_id, args.unscorable ? null : args.passed ? 1 : 0, args.unscorable ? 1 : 0, args.code_digest, args.run_at_ms, args.test_log_excerpt ?? null);
1953
+ }
1954
+ /**
1955
+ * Aggregate the eval results for a (checkpoint, slate version):
1956
+ * `scorable` = rows with `unscorable = 0`; `passed` = scorable rows with
1957
+ * `passed = 1`. Unscorable rows are counted separately and never enter the
1958
+ * denominator. A checkpoint with no rows yields all-zero (the orchestrator
1959
+ * reads this to detect a not-yet-evaluated parent).
1960
+ */
1961
+ getEvalAggregate(checkpoint_cid, slate_version) {
1962
+ const row = this.db
1963
+ .prepare(`SELECT
1964
+ COALESCE(SUM(CASE WHEN unscorable = 0 AND passed = 1 THEN 1 ELSE 0 END), 0) AS passed,
1965
+ COALESCE(SUM(CASE WHEN unscorable = 0 THEN 1 ELSE 0 END), 0) AS scorable,
1966
+ COALESCE(SUM(CASE WHEN unscorable = 1 THEN 1 ELSE 0 END), 0) AS unscorable
1967
+ FROM eval_results
1968
+ WHERE checkpoint_cid = ? AND slate_version = ?`)
1969
+ .get(checkpoint_cid, slate_version);
1970
+ return { passed: row.passed, scorable: row.scorable, unscorable: row.unscorable };
1971
+ }
1972
+ /**
1973
+ * Distinct `slate_hash` values recorded for a (checkpoint, slate version).
1974
+ * The eval orchestrator reads this to detect slate-content drift under a
1975
+ * stable version label — the held-out exam is only an honest before/after
1976
+ * when the parent and child were scored on the SAME slate content (defeating
1977
+ * confounder #1, task-selection). Empty when the checkpoint has no rows.
1978
+ */
1979
+ getEvalSlateHashes(checkpoint_cid, slate_version) {
1980
+ const rows = this.db
1981
+ .prepare(`SELECT DISTINCT slate_hash
1982
+ FROM eval_results
1983
+ WHERE checkpoint_cid = ? AND slate_version = ?
1984
+ ORDER BY slate_hash`)
1985
+ .all(checkpoint_cid, slate_version);
1986
+ return rows.map((r) => r.slate_hash);
1987
+ }
1988
+ /** Per-task eval results for a (checkpoint, slate version), ordered by instance_id. */
1989
+ getEvalResults(checkpoint_cid, slate_version) {
1990
+ const rows = this.db
1991
+ .prepare(`SELECT checkpoint_cid, slate_hash, slate_version, instance_id, passed, unscorable, code_digest, run_at_ms, test_log_excerpt
1992
+ FROM eval_results
1993
+ WHERE checkpoint_cid = ? AND slate_version = ?
1994
+ ORDER BY instance_id`)
1995
+ .all(checkpoint_cid, slate_version);
1996
+ return rows.map((r) => ({
1997
+ checkpoint_cid: r.checkpoint_cid,
1998
+ slate_hash: r.slate_hash,
1999
+ slate_version: r.slate_version,
2000
+ instance_id: r.instance_id,
2001
+ passed: r.passed === null ? null : r.passed === 1,
2002
+ unscorable: r.unscorable === 1,
2003
+ code_digest: r.code_digest,
2004
+ run_at_ms: r.run_at_ms,
2005
+ test_log_excerpt: r.test_log_excerpt,
2006
+ }));
2007
+ }
1822
2008
  close() {
1823
2009
  this.db.close();
1824
2010
  }