@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
@@ -0,0 +1,31 @@
1
+ /** Git helpers for the pilot orchestrator, factored out so their fail-loud
2
+ * behaviour is unit-testable with an injected runner (the orchestrator's own
3
+ * I/O is validated by dry-run + smoke, per the pilot plan). */
4
+ export type CmdRunner = (cmd: string, args: string[], opts?: {
5
+ cwd?: string;
6
+ }) => Promise<{
7
+ stdout: string;
8
+ stderr: string;
9
+ exitCode: number;
10
+ }>;
11
+ /** A git base-checkout step (clone/checkout) exited non-zero. The base repo is
12
+ * unusable, so the INSTANCE is ungradeable — it MUST NOT silently proceed into
13
+ * an empty repo where both arms score `passed:false` (that mis-attributes an
14
+ * environment failure to the agent and understates the resolve rate). Caught at
15
+ * run-pilot's per-instance boundary, which skips the instance and continues. */
16
+ export declare class GitStepError extends Error {
17
+ readonly step: 'clone' | 'checkout';
18
+ readonly exitCode: number;
19
+ readonly detail: string;
20
+ constructor(step: 'clone' | 'checkout', exitCode: number, detail: string);
21
+ }
22
+ /** Clone `repo` into `baseDir` and check out `baseCommit`, FAIL-LOUD on a
23
+ * non-zero exit from either step. A 404'd/renamed repo or an unfetchable commit
24
+ * must throw here rather than leave an empty/wrong checkout that both arms then
25
+ * "solve" into empty patches. */
26
+ export declare function prepareBaseCheckout(run: CmdRunner, repo: string, baseCommit: string, baseDir: string): Promise<void>;
27
+ /** Recover the working-tree patch, INCLUDING new (untracked) files: `git add -A`
28
+ * stages everything, then `git diff --cached` emits the full diff. A plain
29
+ * `git diff` misses untracked files, so a fix that ADDS a file would look like
30
+ * an empty patch (a spurious not-resolved). */
31
+ export declare function recoverPatch(run: CmdRunner, cwd: string): Promise<string>;
@@ -0,0 +1,42 @@
1
+ /** Git helpers for the pilot orchestrator, factored out so their fail-loud
2
+ * behaviour is unit-testable with an injected runner (the orchestrator's own
3
+ * I/O is validated by dry-run + smoke, per the pilot plan). */
4
+ /** A git base-checkout step (clone/checkout) exited non-zero. The base repo is
5
+ * unusable, so the INSTANCE is ungradeable — it MUST NOT silently proceed into
6
+ * an empty repo where both arms score `passed:false` (that mis-attributes an
7
+ * environment failure to the agent and understates the resolve rate). Caught at
8
+ * run-pilot's per-instance boundary, which skips the instance and continues. */
9
+ export class GitStepError extends Error {
10
+ step;
11
+ exitCode;
12
+ detail;
13
+ constructor(step, exitCode, detail) {
14
+ super(`git ${step} failed (exit ${exitCode})${detail ? `: ${detail}` : ''}`);
15
+ this.step = step;
16
+ this.exitCode = exitCode;
17
+ this.detail = detail;
18
+ this.name = 'GitStepError';
19
+ }
20
+ }
21
+ /** Clone `repo` into `baseDir` and check out `baseCommit`, FAIL-LOUD on a
22
+ * non-zero exit from either step. A 404'd/renamed repo or an unfetchable commit
23
+ * must throw here rather than leave an empty/wrong checkout that both arms then
24
+ * "solve" into empty patches. */
25
+ export async function prepareBaseCheckout(run, repo, baseCommit, baseDir) {
26
+ const clone = await run('git', ['clone', `https://github.com/${repo}.git`, baseDir]);
27
+ if (clone.exitCode !== 0)
28
+ throw new GitStepError('clone', clone.exitCode, clone.stderr.trim().slice(0, 300));
29
+ const checkout = await run('git', ['checkout', baseCommit], { cwd: baseDir });
30
+ if (checkout.exitCode !== 0)
31
+ throw new GitStepError('checkout', checkout.exitCode, checkout.stderr.trim().slice(0, 300));
32
+ }
33
+ /** Recover the working-tree patch, INCLUDING new (untracked) files: `git add -A`
34
+ * stages everything, then `git diff --cached` emits the full diff. A plain
35
+ * `git diff` misses untracked files, so a fix that ADDS a file would look like
36
+ * an empty patch (a spurious not-resolved). */
37
+ export async function recoverPatch(run, cwd) {
38
+ await run('git', ['add', '-A'], { cwd });
39
+ const diff = await run('git', ['diff', '--cached'], { cwd });
40
+ return diff.stdout;
41
+ }
42
+ //# sourceMappingURL=repo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repo.js","sourceRoot":"","sources":["../../src/pilot/repo.ts"],"names":[],"mappings":"AAAA;;gEAEgE;AAQhE;;;;iFAIiF;AACjF,MAAM,OAAO,YAAa,SAAQ,KAAK;IAE1B;IACA;IACA;IAHX,YACW,IAA0B,EAC1B,QAAgB,EAChB,MAAc;QAEvB,KAAK,CAAC,OAAO,IAAI,iBAAiB,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAJpE,SAAI,GAAJ,IAAI,CAAsB;QAC1B,aAAQ,GAAR,QAAQ,CAAQ;QAChB,WAAM,GAAN,MAAM,CAAQ;QAGvB,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED;;;kCAGkC;AAClC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,GAAc,EACd,IAAY,EACZ,UAAkB,EAClB,OAAe;IAEf,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,sBAAsB,IAAI,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrF,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7G,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9E,IAAI,QAAQ,CAAC,QAAQ,KAAK,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3H,CAAC;AAED;;;gDAGgD;AAChD,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAc,EAAE,GAAW;IAC5D,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC"}
@@ -0,0 +1,22 @@
1
+ export interface Arm {
2
+ name: 'A' | 'B';
3
+ skills: string[];
4
+ }
5
+ export interface SolveTokens {
6
+ inputTokens: number;
7
+ outputTokens: number;
8
+ cacheReadTokens: number;
9
+ reasoningTokens: number;
10
+ }
11
+ /** The jinn-agent argv for one solve. Arm A = empty loadout enforced via
12
+ * --ignore-rules (no memory/AGENTS.md/preloaded-skill leakage, spike §3.1);
13
+ * arm B = arm A + `-s <skill>` for each loadout skill. When `provider`/`model`
14
+ * are supplied they pin the inference endpoint for this invocation (e.g.
15
+ * `openai-codex` + `gpt-5.4-mini`) without touching the global config default. */
16
+ export declare function buildSolveArgs(arm: Arm, prompt: string, opts: {
17
+ maxTurns: number;
18
+ provider?: string;
19
+ model?: string;
20
+ }): string[];
21
+ export declare function parseSessionTokens(exportLine: string): SolveTokens;
22
+ export declare function extractSessionId(stderr: string): string | null;
@@ -0,0 +1,37 @@
1
+ /** The jinn-agent argv for one solve. Arm A = empty loadout enforced via
2
+ * --ignore-rules (no memory/AGENTS.md/preloaded-skill leakage, spike §3.1);
3
+ * arm B = arm A + `-s <skill>` for each loadout skill. When `provider`/`model`
4
+ * are supplied they pin the inference endpoint for this invocation (e.g.
5
+ * `openai-codex` + `gpt-5.4-mini`) without touching the global config default. */
6
+ export function buildSolveArgs(arm, prompt, opts) {
7
+ const base = ['chat', '-q', prompt, '-Q', '--yolo', '--ignore-rules'];
8
+ const endpoint = [
9
+ ...(opts.provider ? ['--provider', opts.provider] : []),
10
+ ...(opts.model ? ['-m', opts.model] : []),
11
+ ];
12
+ const skills = arm.skills.flatMap((s) => ['-s', s]);
13
+ return [...base, ...endpoint, ...skills, '--pass-session-id', '--max-turns', String(opts.maxTurns)];
14
+ }
15
+ export function parseSessionTokens(exportLine) {
16
+ const o = JSON.parse(exportLine);
17
+ const num = (k) => {
18
+ const v = o[k];
19
+ if (typeof v !== 'number')
20
+ throw new Error(`session export missing numeric token field '${k}'`);
21
+ return v;
22
+ };
23
+ const optNum = (k) => (typeof o[k] === 'number' ? o[k] : 0);
24
+ return {
25
+ inputTokens: num('input_tokens'),
26
+ outputTokens: num('output_tokens'),
27
+ cacheReadTokens: optNum('cache_read_tokens'),
28
+ // Reasoning models (e.g. gpt-5.4-mini) report reasoning tokens separately;
29
+ // they are billed at the output rate. Absent for non-reasoning models → 0.
30
+ reasoningTokens: optNum('reasoning_tokens'),
31
+ };
32
+ }
33
+ export function extractSessionId(stderr) {
34
+ const m = stderr.match(/session_id:\s*(\S+)/);
35
+ return m ? m[1] : null;
36
+ }
37
+ //# sourceMappingURL=solve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solve.js","sourceRoot":"","sources":["../../src/pilot/solve.ts"],"names":[],"mappings":"AAGA;;;;mFAImF;AACnF,MAAM,UAAU,cAAc,CAC5B,GAAQ,EACR,MAAc,EACd,IAA6D;IAE7D,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1C,CAAC;IACF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,MAAM,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAA4B,CAAC;IAC5D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,GAAG,CAAC,CAAC;QAChG,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACxF,OAAO;QACL,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC;QAChC,YAAY,EAAE,GAAG,CAAC,eAAe,CAAC;QAClC,eAAe,EAAE,MAAM,CAAC,mBAAmB,CAAC;QAC5C,2EAA2E;QAC3E,2EAA2E;QAC3E,eAAe,EAAE,MAAM,CAAC,kBAAkB,CAAC;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAc;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC9C,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,35 @@
1
+ export interface SolveOutcome {
2
+ instance_id: string;
3
+ arm: 'A' | 'B';
4
+ repeat: number;
5
+ passed: boolean | null;
6
+ costUsd: number;
7
+ }
8
+ export interface PilotReport {
9
+ n: number;
10
+ armA: {
11
+ resolveRate: number;
12
+ };
13
+ armB: {
14
+ resolveRate: number;
15
+ };
16
+ bothSolveTasks: number;
17
+ excluded: number;
18
+ quality: {
19
+ lowerBound: number;
20
+ nonInferior: boolean;
21
+ deltaPP: number;
22
+ };
23
+ /** `n` is the both-solve NON-ZERO cost-diff count the Wilcoxon actually uses;
24
+ * `underpowered` marks n below its one-sided minimum-rejectable size (~5), so a
25
+ * tiny-n verdict is not mistaken for a powered one. */
26
+ cost: {
27
+ verdict: 'lower' | 'not-lower' | 'inconclusive';
28
+ medianDeltaUsd: number;
29
+ n: number;
30
+ underpowered: boolean;
31
+ };
32
+ }
33
+ export declare function tallyPilot(outcomes: SolveOutcome[], opts: {
34
+ rng: () => number;
35
+ }): PilotReport;
@@ -0,0 +1,61 @@
1
+ import { nonInferiorityVerdict, pairedCostVerdict } from '../eval/capability-stats.js';
2
+ /** One-sided Wilcoxon signed-rank cannot reject below ~5 non-zero diffs
3
+ * (1/2^n ≥ α for n < 5), so a 'lower'/'not-lower' verdict on fewer is unpowered. */
4
+ const WILCOXON_MIN_REJECTABLE_N = 5;
5
+ export function tallyPilot(outcomes, opts) {
6
+ const byTask = new Map();
7
+ for (const o of outcomes)
8
+ (byTask.get(o.instance_id) ?? byTask.set(o.instance_id, []).get(o.instance_id)).push(o);
9
+ const rates = [];
10
+ const costDiffs = [];
11
+ let excluded = 0;
12
+ let aPassTot = 0, aTot = 0, bPassTot = 0, bTot = 0, bothSolve = 0;
13
+ for (const [, os] of byTask) {
14
+ const A = os.filter((o) => o.arm === 'A');
15
+ const B = os.filter((o) => o.arm === 'B');
16
+ const gradedA = A.filter((o) => o.passed !== null);
17
+ const gradedB = B.filter((o) => o.passed !== null);
18
+ if (gradedA.length === 0 || gradedB.length === 0) {
19
+ excluded++;
20
+ continue;
21
+ }
22
+ const pA = gradedA.filter((o) => o.passed === true).length / gradedA.length;
23
+ const pB = gradedB.filter((o) => o.passed === true).length / gradedB.length;
24
+ rates.push({ pA, pB });
25
+ aPassTot += gradedA.filter((o) => o.passed === true).length;
26
+ aTot += gradedA.length;
27
+ bPassTot += gradedB.filter((o) => o.passed === true).length;
28
+ bTot += gradedB.length;
29
+ // both-solve cost: mean cost on the repeats where BOTH arms passed (like-for-like)
30
+ if (pA > 0 && pB > 0) {
31
+ const meanCost = (xs, pass) => {
32
+ const f = xs.filter((o) => o.passed === pass);
33
+ return f.length ? f.reduce((s, o) => s + o.costUsd, 0) / f.length : NaN;
34
+ };
35
+ const ca = meanCost(gradedA, true), cb = meanCost(gradedB, true);
36
+ if (Number.isFinite(ca) && Number.isFinite(cb)) {
37
+ costDiffs.push(cb - ca);
38
+ bothSolve++;
39
+ }
40
+ }
41
+ }
42
+ const stockBaseRate = aTot > 0 ? aPassTot / aTot : 0;
43
+ const ni = rates.length
44
+ ? nonInferiorityVerdict(rates, { rng: opts.rng, stockBaseRate: Math.max(stockBaseRate, 1e-9) })
45
+ : { pass: false, lowerBound: NaN, relativeRegression: NaN, reasons: ['no gradeable pairs'] };
46
+ // pilot scale — small both-solve sets are expected; minN:1 lets the cost verdict go live rather than always 'inconclusive'.
47
+ // The verdict is still surfaced with its n + an `underpowered` flag so a tiny-n read isn't mistaken for a powered one.
48
+ const cost = pairedCostVerdict(costDiffs, { minN: 1 });
49
+ const median = (xs) => { if (!xs.length)
50
+ return NaN; const s = [...xs].sort((a, b) => a - b); const m = s.length >> 1; return s.length % 2 ? s[m] : (s[m - 1] + s[m]) / 2; };
51
+ return {
52
+ n: rates.length + excluded,
53
+ armA: { resolveRate: stockBaseRate },
54
+ armB: { resolveRate: bTot > 0 ? bPassTot / bTot : 0 },
55
+ bothSolveTasks: bothSolve,
56
+ excluded,
57
+ quality: { lowerBound: ni.lowerBound, nonInferior: ni.pass, deltaPP: 100 * ((bTot > 0 ? bPassTot / bTot : 0) - stockBaseRate) },
58
+ cost: { verdict: cost.verdict, medianDeltaUsd: median(costDiffs), n: cost.n, underpowered: cost.n < WILCOXON_MIN_REJECTABLE_N },
59
+ };
60
+ }
61
+ //# sourceMappingURL=tally.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tally.js","sourceRoot":"","sources":["../../src/pilot/tally.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "claude-code-learner",
3
3
  "description": "Generic learning agent plugin — runs a goal through a seven-phase pipeline (Orient → Strategize → Plan → Execute → Debrief → Improve → Memory consolidation) and self-improves between runs by mutating its own state directory.",
4
- "version": "0.1.0",
4
+ "version": "0.2.0",
5
5
  "author": {
6
6
  "name": "Jinn Network",
7
7
  "url": "https://github.com/Jinn-Network/mono"
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "claude-code-learner",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Generic learning agent plugin - runs a goal through a seven-phase pipeline and self-improves between runs by mutating its own state directory.",
5
5
  "author": {
6
6
  "name": "Jinn Network",
@@ -35,4 +35,33 @@ fi
35
35
  git config user.name "claude-code-learner"
36
36
  git config user.email "claude-code-learner@local"
37
37
 
38
- echo "session-start: implStateDir ready at $(pwd) (HEAD=$(git rev-parse HEAD))"
38
+ # Operational readiness goes to STDERR. Claude Code parses a SessionStart hook's
39
+ # STDOUT as JSON for `hookSpecificOutput`; any stray stdout would break that parse,
40
+ # so stdout below carries nothing but the additionalContext payload.
41
+ echo "session-start: implStateDir ready at $(pwd) (HEAD=$(git rev-parse HEAD))" >&2
42
+
43
+ # Steer skill-selection toward this plugin's OWN learn loop. This is the agnostic,
44
+ # plugin-owned mechanism: the learner plugin asserts its own behaviour from its own
45
+ # SessionStart hook, without any other plugin or the harness prompt knowing it exists.
46
+ #
47
+ # It is delivered via the documented `hookSpecificOutput.additionalContext` contract,
48
+ # which is injected into the model's context at session start. The previous plain
49
+ # `echo` was logged as a hook event (visible to the harness via --include-hook-events)
50
+ # but NEVER entered the model context — which is why, despite the learn skill being
51
+ # projected and available, the model kept selecting a direct-solve skill and the loop
52
+ # ran 0% of the time. (Verified: additionalContext reaches the model in headless
53
+ # `-p` / stream-json mode on claude 2.1.x.)
54
+ #
55
+ # MODE-AWARE (extends the original train-only steer for the held-out exam): in
56
+ # `frozen` mode the harness freeze-fences implStateDir, so running the learn loop's
57
+ # Improve/Memory phases would WRITE implStateDir and trip the fence → the eval
58
+ # aborts with a violation. The frozen steer therefore tells the model to CONSULT
59
+ # the accumulated knowledge (read-only) and solve directly — which is exactly how
60
+ # prior learning should raise the frozen score — and to NOT run the loop or modify
61
+ # implStateDir. `JINN_HARNESS_MODE` is set by the harness adapter (default train).
62
+ if [[ "${JINN_HARNESS_MODE:-train}" == "frozen" ]]; then
63
+ STEER="This is a FROZEN evaluation run. Before solving, CONSULT the accumulated learner knowledge under implStateDir (notes/, skills/, strategies/, patterns/, tests/) and apply any relevant strategy or pattern to this task. Then solve the task and call submit_typed_payload. Do NOT run the learn loop (no Orient/Improve/Memory phases) and do NOT create, edit, or commit anything under implStateDir — the harness verifies implStateDir is unchanged and will discard this run if it is modified."
64
+ else
65
+ STEER="A seven-phase self-improvement loop is available as the learn skill (claude-code-learner:learn): Orient, Strategize, Plan, Execute, Debrief, Improve, then Memory consolidation. For this session your FIRST action MUST be to invoke the learn skill (via the Skill tool) and run the full loop end-to-end, instead of solving the task directly or selecting another skill first. The Execute phase still performs the actual task work and still calls submit_typed_payload; the surrounding phases capture reusable strategy and persist it to implStateDir so future runs improve. Do not skip the loop."
66
+ fi
67
+ printf '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"%s"}}\n' "$STEER"
@@ -18,6 +18,10 @@ Anything that writes to `implStateDir` happens here, including:
18
18
  - **Unused skills / hooks / tools** — anything not invoked in the last N runs (default 20; check policy override). Move to `implStateDir/.archive/<ts>/` or delete per policy.
19
19
  - **Regressed promotions** — revert an Improve commit only when it actually made things worse. There are two triggers; act on either:
20
20
  1. **Qualitative trigger** — if the trend in `analysisPath` (the Debrief signal) indicates a recent change made things worse, `git revert <commit-sha>` it. Be specific: revert the exact commit identified, not a bulk rollback. The target sha is `improvePromotionsDir/<n>.json`'s `implStateDirShaAfter`.
21
+ > The graded score (Tier 2) lowers the variance of the keep/revert decision only.
22
+ > It never overrules the binary verdict, and it MUST NOT be used to size on-chain
23
+ > reward — that path is gated on the withheld-test challenge (#1019, design §5.5).
24
+
21
25
  2. **Quantitative trigger (#764)** — for each candidate Improve commit on recent `implStateDir` git history (the commits since `implStateDirShaBefore`, identified from each `improvePromotionsDir/<n>.json` `implStateDirShaAfter`), ask the network-truth indexer whether the commit's per-codeDigest pass rate is significantly worse than its parent's. **Do not hand-roll the codeDigest hash or the statistics — shell out to the CLI**, which exports each commit's tree (`git archive`, no `.git`) and hashes it the way production stamps codeDigest, then runs the documented test:
22
26
 
23
27
  ```bash
@@ -0,0 +1,9 @@
1
+ {
2
+ "name": "local-trace-distiller",
3
+ "description": "Local trace distillation tools and workflow for deriving experimental skills from private session traces.",
4
+ "version": "0.1.0",
5
+ "author": {
6
+ "name": "Jinn Network",
7
+ "url": "https://github.com/Jinn-Network/mono"
8
+ }
9
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "local-trace-distiller",
3
+ "version": "0.1.0",
4
+ "description": "Local trace distillation tools and skill workflow for deriving experimental skills from private session traces.",
5
+ "author": {
6
+ "name": "Jinn Network",
7
+ "url": "https://github.com/Jinn-Network/mono"
8
+ },
9
+ "homepage": "https://github.com/Jinn-Network/mono",
10
+ "repository": "https://github.com/Jinn-Network/mono",
11
+ "license": "MIT",
12
+ "keywords": [
13
+ "jinn",
14
+ "distill",
15
+ "traces",
16
+ "skills",
17
+ "mcp"
18
+ ],
19
+ "skills": "./skills/",
20
+ "mcpServers": "./.mcp.json",
21
+ "interface": {
22
+ "displayName": "Local Trace Distiller",
23
+ "shortDescription": "Derive experimental skills from local traces",
24
+ "longDescription": "Searches local captured session traces, clusters recurring patterns, and runs the existing Jinn distillation flow using the user's selected LLM provider.",
25
+ "developerName": "Jinn Network",
26
+ "category": "Coding",
27
+ "capabilities": [
28
+ "Interactive",
29
+ "Read",
30
+ "Write"
31
+ ],
32
+ "websiteURL": "https://github.com/Jinn-Network/mono",
33
+ "privacyPolicyURL": "https://github.com/Jinn-Network/mono",
34
+ "termsOfServiceURL": "https://github.com/Jinn-Network/mono",
35
+ "defaultPrompt": [
36
+ "Use /distill to derive an experimental skill from local traces."
37
+ ],
38
+ "brandColor": "#2563EB",
39
+ "screenshots": []
40
+ }
41
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "mcpServers": {
3
+ "jinn-local-distil": {
4
+ "command": "jinn-distil-mcp",
5
+ "args": []
6
+ }
7
+ }
8
+ }
@@ -0,0 +1,27 @@
1
+ # local-trace-distiller
2
+
3
+ Local trace distillation plugin for deriving experimental skills from private session traces.
4
+
5
+ ## Components
6
+
7
+ - `skills/distill/SKILL.md` — `/distill` workflow. No argument defaults to `this`; `all` runs a capped cluster-first scan.
8
+ - `.mcp.json` — launches `jinn-distil-mcp`.
9
+ - `jinn-distil-mcp` tools:
10
+ - `distill_trace_search` — compact local trace cards.
11
+ - `distill_trace_read` — scoped trace reads with full-transcript gating.
12
+ - `distill_trace_cluster` — cheap repeated-signal candidate discovery.
13
+ - `distill_local` — confirmed local run through `jinn-layer distil`.
14
+
15
+ ## Local Capture Source
16
+
17
+ Stop-hook captures are exported as `CapturedTask` JSON under:
18
+
19
+ ```text
20
+ ~/.jinn-client/harness-layer/captures
21
+ ```
22
+
23
+ Set `JINN_LAYER_CAPTURES_DIR` to override the directory. The MCP server and `jinn-layer distil` use the same directory, so agents can search traces and then invoke the existing distillation flow without a second data path.
24
+
25
+ ## Status
26
+
27
+ Generated skills are marked experimental and should be improved through user feedback before they are treated as stable. Public marketplace listing is intentionally out of scope for this version.
@@ -0,0 +1,36 @@
1
+ {
2
+ "name": "@jinn-network/local-trace-distiller",
3
+ "version": "0.1.0",
4
+ "description": "Local trace distillation plugin. Searches private captures, clusters candidate skill opportunities, and invokes the existing Jinn skill distiller locally.",
5
+ "jinn": {
6
+ "supports": [
7
+ "jinn.local-distil"
8
+ ],
9
+ "capabilities": {
10
+ "tools": {
11
+ "jinn-local-distil": [
12
+ "distill_trace_search",
13
+ "distill_trace_read",
14
+ "distill_trace_cluster",
15
+ "distill_local",
16
+ "distill_feedback_record"
17
+ ]
18
+ }
19
+ },
20
+ "mcpServers": {
21
+ "jinn-local-distil": {
22
+ "command": "jinn-distil-mcp",
23
+ "tools": [
24
+ "distill_trace_search",
25
+ "distill_trace_read",
26
+ "distill_trace_cluster",
27
+ "distill_local",
28
+ "distill_feedback_record"
29
+ ]
30
+ }
31
+ },
32
+ "skills": [
33
+ "skills/distill/SKILL.md"
34
+ ]
35
+ }
36
+ }
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: distill
3
+ description: Use local trace tools to derive experimental skills from private session traces. Trigger on /distill, "distill this", "distill all", or requests to turn repeated local work into a reusable skill.
4
+ tools: distill_trace_search, distill_trace_read, distill_trace_cluster, distill_local, distill_feedback_record
5
+ ---
6
+
7
+ # Local Trace Distill
8
+
9
+ Use this skill to help the user turn local work traces into experimental skills using the existing Jinn distillation methodology.
10
+
11
+ ## Arguments
12
+
13
+ - No argument means `this`: focus on the current or most recent session.
14
+ - `this`, `current`, or `recent`: inspect the most recent local trace cards, choose the best match for the current session, then distill only that trace unless the user chooses a broader set.
15
+ - `all`: run a capped, cheap scan over local trace cards, cluster recurring signals, present candidates, and ask the user which candidate to distill.
16
+ - A trace id, session id, or candidate trace list: inspect those traces and distill only the selected traces.
17
+
18
+ ## Tool Workflow
19
+
20
+ 1. Start with `distill_trace_search`, using compact cards. Do not read full transcripts first.
21
+ 2. For `all`, call `distill_trace_cluster` with a conservative cap. Default to `limit: 50` unless the user requested a different cap.
22
+ 3. Read only what is needed:
23
+ - Use `mode: "summary"` for orientation.
24
+ - Use `mode: "tool_calls"` to understand commands and edits.
25
+ - Use `mode: "transcript_excerpt"` with a query when one section matters.
26
+ - Use `mode: "full_transcript"` only when the skill cannot be safely derived from smaller reads, and set `allowFullTranscript: true` only after deciding it is necessary.
27
+ 4. Before calling `distill_local`, summarize the proposed source traces and the likely skill opportunity in one short paragraph.
28
+ 5. Call `distill_local` with `confirm: true` only after the user explicitly approves the run or has already requested an execution form such as "distill this now".
29
+ 6. Pass selected `traceIds` or `sessionIds` whenever the user chose a candidate. Avoid distilling every capture unless the user asked for `all` and then approved that broad run.
30
+
31
+ ## Distillation Methodology
32
+
33
+ Reuse the existing Jinn distillation methodology rather than inventing a new prompt:
34
+
35
+ - Prefer evaluator/user-accepted successful traces for success patterns.
36
+ - Use failed or abandoned traces only for concrete lessons and failure avoidances.
37
+ - Keep the skill grounded in repeated evidence when available; label single-trace outputs as experimental.
38
+ - Preserve provenance through the generated skill metadata.
39
+ - Run through the existing scrub, contamination, structure, and package gates via `distill_local`.
40
+
41
+ ## User Feedback Loop
42
+
43
+ Generated skills are experimental. After a later session uses one, ask the user whether it helped, hurt, was mixed, or went unused. If the user gives feedback, call `distill_feedback_record` with the skill name, verdict, session id if known, and only user-approved notes or accepted changes. Convert accepted feedback into a targeted skill improvement instead of accumulating broad notes.
44
+
45
+ ## Future Marketplace
46
+
47
+ Do not list local skills publicly in this version. Later versions may let users publish useful skills to a marketplace for others to use and pay for, but that requires explicit user approval and a separate publish flow.
48
+
49
+ ## Privacy
50
+
51
+ Local traces are private by default. Do not export trace content or generated skills to a remote marketplace or shared corpus unless the user explicitly asks for that future publish flow.
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Deployment-readiness preflight (issue #958).
3
+ *
4
+ * Hosted deploys have no boot-time guard that the environment is fit to run;
5
+ * misconfig fails silently or mid-run. This module adds a set of checks that
6
+ * answer "is this environment fit to run the daemon?" and a boot gate that
7
+ * **fails loud — but only in a deployment context**.
8
+ *
9
+ * Load-bearing constraint: a plain local `jinn run` (no `JINN_STATE_DIR`,
10
+ * running as the user) must NEVER be newly gated. The
11
+ * fail-loud boot gate fires only when `isDeploymentContext()` is true; outside
12
+ * that, every check is advisory (surfaced in `doctor`, never boot-fatal). The
13
+ * `doctor` command runs all checks regardless of context.
14
+ *
15
+ * The checks compose existing primitives where possible:
16
+ * - `writable_volume` — the one genuinely new primitive (write+fsync+unlink probe)
17
+ * - `state_on_volume` — assert resolved state lives on the configured volume
18
+ * - `credentials_resolvable` — reuses `detectAuthContext`; presence-only, NEVER echoes secrets
19
+ * - `agent_cli_non_root` — uid 0 is unfit (the agent CLI refuses to run as root)
20
+ *
21
+ * Every check is side-effect-light and NEVER throws — a failure becomes a
22
+ * structured fail result, not an exception. The aggregate is the safe caller
23
+ * surface; the gate adds the fail-loud envelope on top.
24
+ */
25
+ import { type EnvelopeSinks } from '../errors/envelope.js';
26
+ import { detectAuthContext as defaultDetectAuthContext, type AuthContext } from './claude-auth.js';
27
+ export interface DeploymentCheckResult {
28
+ name: 'writable_volume' | 'state_on_volume' | 'credentials_resolvable' | 'agent_cli_non_root';
29
+ ok: boolean;
30
+ detail: string;
31
+ remedy?: string;
32
+ }
33
+ /** Inputs that come from the resolved config / process — never secret values. */
34
+ export interface DeploymentReadinessInputs {
35
+ /** `config.stateDir` — the volume root, when set (S3, JINN_STATE_DIR). */
36
+ stateDir: string | undefined;
37
+ /** `config.earningDir` — the resolved earning/state directory. */
38
+ earningDir: string;
39
+ /**
40
+ * `config.runtimeMode` — a persisted runtime mode (`'docker-compose'` /
41
+ * `'container'`) declared by the operator (via `jinn auth --mode` or the app
42
+ * setup) rather than via env / `/.dockerenv`. Threaded into
43
+ * `detectAuthContext` as `configuredMode` so a config-declared compose /
44
+ * container operator is detected as a deployment context (and the boot gate
45
+ * arms) even with no `JINN_RUNTIME_MODE` env var and no `/.dockerenv`.
46
+ * `undefined` leaves detection on env / filesystem signals only — preserving
47
+ * the bare-local regression guarantee.
48
+ */
49
+ runtimeMode: AuthContext | undefined;
50
+ }
51
+ /** Injectable dependencies — tests pass doubles; production uses the defaults. */
52
+ export interface DeploymentReadinessDeps {
53
+ env: NodeJS.ProcessEnv;
54
+ /** `process.getuid` (undefined on platforms without it, e.g. Windows). */
55
+ getuid: (() => number) | undefined;
56
+ detectAuthContext: typeof defaultDetectAuthContext;
57
+ }
58
+ export interface DeploymentReadinessReport {
59
+ /** True when we are in a deployment context (gate is armed). */
60
+ deployment: boolean;
61
+ /** The auth context detected for this run. */
62
+ authContext: AuthContext;
63
+ checks: DeploymentCheckResult[];
64
+ /**
65
+ * True when the daemon must refuse to boot: deployment context AND at least
66
+ * one HARD check failed. Always false outside a deployment context.
67
+ */
68
+ bootFatal: boolean;
69
+ }
70
+ /**
71
+ * Deployment context = `JINN_STATE_DIR` set OR `config.stateDir` set OR the
72
+ * auth context is a container / docker-compose. A plain local operator (bare
73
+ * context, no state-dir) is NOT a deployment context, so the boot gate stays
74
+ * disarmed for them.
75
+ */
76
+ export declare function isDeploymentContext(input: {
77
+ env: NodeJS.ProcessEnv;
78
+ authContext: AuthContext;
79
+ stateDir: string | undefined;
80
+ }): boolean;
81
+ /**
82
+ * Attempt to write + fsync + unlink a temp file under `dir`. ok when it
83
+ * succeeds; structured fail (never throws) on EACCES / EROFS / ENOSPC / missing
84
+ * dir / any other fs error.
85
+ */
86
+ export declare function checkWritableVolume(dir: string): Promise<DeploymentCheckResult>;
87
+ /**
88
+ * In a deployment context, assert resolved state lives on the configured
89
+ * volume — i.e. `stateDir` is set AND `earningDir` resolves under it. Advisory
90
+ * (always ok) outside a deployment context.
91
+ */
92
+ export declare function checkStateOnVolume(input: {
93
+ deployment: boolean;
94
+ stateDir: string | undefined;
95
+ earningDir: string;
96
+ }): DeploymentCheckResult;
97
+ /**
98
+ * Presence-only credential check. In a bare context the operator authenticates
99
+ * the agent CLI interactively (claude session auth), so credentials are not
100
+ * env-resolvable and that is fine. In a container / compose context there is no
101
+ * interactive login, so SOME agent-CLI auth signal must be present in the env.
102
+ *
103
+ * NEVER returns or logs a secret value — only presence + context.
104
+ */
105
+ export declare function checkCredentialsResolvable(input: {
106
+ context: AuthContext;
107
+ env: NodeJS.ProcessEnv;
108
+ }): DeploymentCheckResult;
109
+ /**
110
+ * ok when uid !== 0 (or no getuid on the platform). Fail when running as root —
111
+ * the agent CLI refuses to run as root, so a root daemon is unfit. Never throws.
112
+ */
113
+ export declare function checkAgentCliNonRoot(getuid: (() => number) | undefined): DeploymentCheckResult;
114
+ /**
115
+ * Run every deployment-readiness check and assemble a report. Detects the
116
+ * deployment context internally and decides `bootFatal` accordingly. Never
117
+ * throws — each check degrades to a structured fail.
118
+ */
119
+ export declare function runDeploymentReadinessChecks(inputs: DeploymentReadinessInputs, deps: DeploymentReadinessDeps): Promise<DeploymentReadinessReport>;
120
+ /**
121
+ * Boot gate for `jinn run`. Runs the readiness aggregate; in a deployment
122
+ * context, fail loud (emit `invalid_invocation` envelope + non-zero exit) when
123
+ * a hard check fails. Outside a deployment context, log advisories for any
124
+ * failing check and proceed. Mirrors `applyPidfileLivenessGate`'s contract:
125
+ * `emitEnvelope` does not return in production (it `process.exit`s).
126
+ */
127
+ export declare function applyDeploymentReadinessGate(inputs: DeploymentReadinessInputs, deps: DeploymentReadinessDeps, sinks?: EnvelopeSinks): Promise<void>;