@jinn-network/client 0.1.2 → 0.1.3-canary.2d6b2676

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 (995) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/CONTRIBUTING.md +8 -2
  3. package/README.md +68 -42
  4. package/deployments/deployment-jinn-mvi-l1-sepolia-fast.json +36 -0
  5. package/deployments/deployment-jinn-mvi-l1-sepolia.json +36 -0
  6. package/deployments/deployment-jinn-mvi-l2-baseSepolia.json +12 -0
  7. package/deployments/deployment-phase1b-mech-baseSepolia-fast.json +3 -3
  8. package/deployments/deployment-stolas-l2-baseSepolia-fast.json +1 -1
  9. package/dist/adapters/adapter.d.ts +7 -7
  10. package/dist/adapters/claim-registry/client.d.ts +9 -0
  11. package/dist/adapters/claim-registry/client.js +22 -2
  12. package/dist/adapters/claim-registry/client.js.map +1 -1
  13. package/dist/adapters/local/adapter.d.ts +4 -4
  14. package/dist/adapters/local/adapter.js +10 -10
  15. package/dist/adapters/local/adapter.js.map +1 -1
  16. package/dist/adapters/mech/adapter.d.ts +8 -6
  17. package/dist/adapters/mech/adapter.js +159 -95
  18. package/dist/adapters/mech/adapter.js.map +1 -1
  19. package/dist/adapters/mech/contracts.d.ts +8 -6
  20. package/dist/adapters/mech/contracts.js +119 -15
  21. package/dist/adapters/mech/contracts.js.map +1 -1
  22. package/dist/adapters/mech/ipfs.d.ts +66 -12
  23. package/dist/adapters/mech/ipfs.js +165 -30
  24. package/dist/adapters/mech/ipfs.js.map +1 -1
  25. package/dist/adapters/mech/safe-revert.d.ts +39 -0
  26. package/dist/adapters/mech/safe-revert.js +130 -0
  27. package/dist/adapters/mech/safe-revert.js.map +1 -0
  28. package/dist/adapters/mech/safe.js +48 -22
  29. package/dist/adapters/mech/safe.js.map +1 -1
  30. package/dist/adapters/mech/types.d.ts +8 -0
  31. package/dist/adapters/mech/types.js.map +1 -1
  32. package/dist/agent/agent-ws.d.ts +55 -0
  33. package/dist/agent/agent-ws.js +288 -0
  34. package/dist/agent/agent-ws.js.map +1 -0
  35. package/dist/agent/auto-mode-detect.d.ts +6 -0
  36. package/dist/agent/auto-mode-detect.js +44 -0
  37. package/dist/agent/auto-mode-detect.js.map +1 -0
  38. package/dist/agent/operator-claude.d.ts +22 -0
  39. package/dist/agent/operator-claude.js +130 -0
  40. package/dist/agent/operator-claude.js.map +1 -0
  41. package/dist/api/admin-endpoint.d.ts +12 -0
  42. package/dist/api/admin-endpoint.js +71 -0
  43. package/dist/api/admin-endpoint.js.map +1 -0
  44. package/dist/api/bootstrap-endpoint.d.ts +16 -0
  45. package/dist/api/bootstrap-endpoint.js +78 -0
  46. package/dist/api/bootstrap-endpoint.js.map +1 -0
  47. package/dist/api/events-endpoint.d.ts +9 -0
  48. package/dist/api/events-endpoint.js +46 -0
  49. package/dist/api/events-endpoint.js.map +1 -0
  50. package/dist/api/fleet-build.d.ts +1 -1
  51. package/dist/api/fleet-build.js +17 -8
  52. package/dist/api/fleet-build.js.map +1 -1
  53. package/dist/api/gather-status.js +6 -2
  54. package/dist/api/gather-status.js.map +1 -1
  55. package/dist/api/handshake.d.ts +17 -0
  56. package/dist/api/handshake.js +28 -0
  57. package/dist/api/handshake.js.map +1 -0
  58. package/dist/api/history-build.d.ts +2 -2
  59. package/dist/api/history-build.js +3 -3
  60. package/dist/api/history-build.js.map +1 -1
  61. package/dist/api/peers.js +21 -6
  62. package/dist/api/peers.js.map +1 -1
  63. package/dist/api/portfolio-v0-build.d.ts +16 -10
  64. package/dist/api/portfolio-v0-build.js +36 -31
  65. package/dist/api/portfolio-v0-build.js.map +1 -1
  66. package/dist/api/portfolio-v0-doctor.js +1 -1
  67. package/dist/api/portfolio-v0-doctor.js.map +1 -1
  68. package/dist/api/rewards-build.js +3 -8
  69. package/dist/api/rewards-build.js.map +1 -1
  70. package/dist/api/server.d.ts +55 -1
  71. package/dist/api/server.js +243 -17
  72. package/dist/api/server.js.map +1 -1
  73. package/dist/api/setup-endpoints.d.ts +34 -0
  74. package/dist/api/setup-endpoints.js +188 -0
  75. package/dist/api/setup-endpoints.js.map +1 -0
  76. package/dist/api/status-build.d.ts +10 -2
  77. package/dist/api/status-build.js +44 -9
  78. package/dist/api/status-build.js.map +1 -1
  79. package/dist/api/status-rollup-build.d.ts +46 -1
  80. package/dist/api/status-rollup-build.js +168 -5
  81. package/dist/api/status-rollup-build.js.map +1 -1
  82. package/dist/api/ui-token.d.ts +5 -0
  83. package/dist/api/ui-token.js +36 -0
  84. package/dist/api/ui-token.js.map +1 -0
  85. package/dist/build-info.d.ts +32 -0
  86. package/dist/build-info.js +69 -0
  87. package/dist/build-info.js.map +1 -0
  88. package/dist/build-info.json +6 -0
  89. package/dist/build-meta.json +1 -1
  90. package/dist/cli/command.d.ts +9 -0
  91. package/dist/cli/commands/balance.d.ts +7 -0
  92. package/dist/cli/commands/balance.js +38 -32
  93. package/dist/cli/commands/balance.js.map +1 -1
  94. package/dist/cli/commands/bootstrap.d.ts +13 -1
  95. package/dist/cli/commands/bootstrap.js +150 -132
  96. package/dist/cli/commands/bootstrap.js.map +1 -1
  97. package/dist/cli/commands/claim-rewards.js +14 -2
  98. package/dist/cli/commands/claim-rewards.js.map +1 -1
  99. package/dist/cli/commands/conformance.d.ts +12 -0
  100. package/dist/cli/commands/conformance.js +140 -0
  101. package/dist/cli/commands/conformance.js.map +1 -0
  102. package/dist/cli/commands/create.d.ts +22 -0
  103. package/dist/cli/commands/create.js +226 -0
  104. package/dist/cli/commands/create.js.map +1 -0
  105. package/dist/cli/commands/doctor.d.ts +34 -1
  106. package/dist/cli/commands/doctor.js +138 -123
  107. package/dist/cli/commands/doctor.js.map +1 -1
  108. package/dist/cli/commands/fleet-scale.d.ts +19 -1
  109. package/dist/cli/commands/fleet-scale.js +379 -361
  110. package/dist/cli/commands/fleet-scale.js.map +1 -1
  111. package/dist/cli/commands/fleet.d.ts +7 -0
  112. package/dist/cli/commands/fleet.js +39 -33
  113. package/dist/cli/commands/fleet.js.map +1 -1
  114. package/dist/cli/commands/fund-requirements.d.ts +14 -1
  115. package/dist/cli/commands/fund-requirements.js +183 -174
  116. package/dist/cli/commands/fund-requirements.js.map +1 -1
  117. package/dist/cli/commands/harnesses.d.ts +18 -0
  118. package/dist/cli/commands/harnesses.js +208 -0
  119. package/dist/cli/commands/harnesses.js.map +1 -0
  120. package/dist/cli/commands/history.d.ts +10 -1
  121. package/dist/cli/commands/history.js +68 -59
  122. package/dist/cli/commands/history.js.map +1 -1
  123. package/dist/cli/commands/init.js +4 -1
  124. package/dist/cli/commands/init.js.map +1 -1
  125. package/dist/cli/commands/integrations.d.ts +13 -0
  126. package/dist/cli/commands/{plugin-install.js → integrations.js} +240 -33
  127. package/dist/cli/commands/integrations.js.map +1 -0
  128. package/dist/cli/commands/logs.d.ts +6 -1
  129. package/dist/cli/commands/logs.js +77 -70
  130. package/dist/cli/commands/logs.js.map +1 -1
  131. package/dist/cli/commands/migrate-agent-id.d.ts +26 -0
  132. package/dist/cli/commands/migrate-agent-id.js +165 -0
  133. package/dist/cli/commands/migrate-agent-id.js.map +1 -0
  134. package/dist/cli/commands/quickstart.d.ts +51 -1
  135. package/dist/cli/commands/quickstart.js +514 -296
  136. package/dist/cli/commands/quickstart.js.map +1 -1
  137. package/dist/cli/commands/rewards.d.ts +7 -0
  138. package/dist/cli/commands/rewards.js +46 -40
  139. package/dist/cli/commands/rewards.js.map +1 -1
  140. package/dist/cli/commands/run.d.ts +14 -1
  141. package/dist/cli/commands/run.js +233 -91
  142. package/dist/cli/commands/run.js.map +1 -1
  143. package/dist/cli/commands/solver-nets.js +207 -0
  144. package/dist/cli/commands/solver-nets.js.map +1 -0
  145. package/dist/cli/commands/solver-plugins.d.ts +9 -0
  146. package/dist/cli/commands/solver-plugins.js +184 -0
  147. package/dist/cli/commands/solver-plugins.js.map +1 -0
  148. package/dist/cli/commands/status.d.ts +10 -0
  149. package/dist/cli/commands/status.js +97 -34
  150. package/dist/cli/commands/status.js.map +1 -1
  151. package/dist/cli/commands/tasks.js +365 -0
  152. package/dist/cli/commands/tasks.js.map +1 -0
  153. package/dist/cli/commands/ui.d.ts +3 -0
  154. package/dist/cli/commands/ui.js +45 -0
  155. package/dist/cli/commands/ui.js.map +1 -0
  156. package/dist/cli/commands/update.d.ts +5 -0
  157. package/dist/cli/commands/update.js +110 -105
  158. package/dist/cli/commands/update.js.map +1 -1
  159. package/dist/cli/commands/version.js +3 -1
  160. package/dist/cli/commands/version.js.map +1 -1
  161. package/dist/cli/commands/withdraw.d.ts +21 -1
  162. package/dist/cli/commands/withdraw.js +175 -159
  163. package/dist/cli/commands/withdraw.js.map +1 -1
  164. package/dist/cli/execution-context.d.ts +1 -1
  165. package/dist/cli/execution-context.js +4 -3
  166. package/dist/cli/execution-context.js.map +1 -1
  167. package/dist/cli/help.js +8 -1
  168. package/dist/cli/help.js.map +1 -1
  169. package/dist/cli/index.d.ts +7 -0
  170. package/dist/cli/index.js +24 -6
  171. package/dist/cli/index.js.map +1 -1
  172. package/dist/cli/open-browser.d.ts +1 -0
  173. package/dist/cli/open-browser.js +18 -0
  174. package/dist/cli/open-browser.js.map +1 -0
  175. package/dist/cli/password.d.ts +3 -3
  176. package/dist/cli/password.js +6 -6
  177. package/dist/cli/password.js.map +1 -1
  178. package/dist/config.d.ts +1232 -53
  179. package/dist/config.js +558 -24
  180. package/dist/config.js.map +1 -1
  181. package/dist/conformance/checks/artifacts.d.ts +37 -0
  182. package/dist/conformance/checks/artifacts.js +110 -0
  183. package/dist/conformance/checks/artifacts.js.map +1 -0
  184. package/dist/conformance/checks/envelope-schema.d.ts +17 -0
  185. package/dist/conformance/checks/envelope-schema.js +36 -0
  186. package/dist/conformance/checks/envelope-schema.js.map +1 -0
  187. package/dist/conformance/checks/hash-signature.d.ts +26 -0
  188. package/dist/conformance/checks/hash-signature.js +70 -0
  189. package/dist/conformance/checks/hash-signature.js.map +1 -0
  190. package/dist/conformance/checks/payload.d.ts +19 -0
  191. package/dist/conformance/checks/payload.js +52 -0
  192. package/dist/conformance/checks/payload.js.map +1 -0
  193. package/dist/conformance/checks/secret-scrub.d.ts +33 -0
  194. package/dist/conformance/checks/secret-scrub.js +118 -0
  195. package/dist/conformance/checks/secret-scrub.js.map +1 -0
  196. package/dist/conformance/checks/source-runtime.d.ts +43 -0
  197. package/dist/conformance/checks/source-runtime.js +68 -0
  198. package/dist/conformance/checks/source-runtime.js.map +1 -0
  199. package/dist/conformance/checks/source-static.d.ts +61 -0
  200. package/dist/conformance/checks/source-static.js +311 -0
  201. package/dist/conformance/checks/source-static.js.map +1 -0
  202. package/dist/conformance/checks/trajectory-chain.d.ts +18 -0
  203. package/dist/conformance/checks/trajectory-chain.js +51 -0
  204. package/dist/conformance/checks/trajectory-chain.js.map +1 -0
  205. package/dist/conformance/checks/trajectory-profile.d.ts +17 -0
  206. package/dist/conformance/checks/trajectory-profile.js +51 -0
  207. package/dist/conformance/checks/trajectory-profile.js.map +1 -0
  208. package/dist/conformance/checks/trajectory-schema.d.ts +20 -0
  209. package/dist/conformance/checks/trajectory-schema.js +40 -0
  210. package/dist/conformance/checks/trajectory-schema.js.map +1 -0
  211. package/dist/conformance/checks/verdict.d.ts +44 -0
  212. package/dist/conformance/checks/verdict.js +122 -0
  213. package/dist/conformance/checks/verdict.js.map +1 -0
  214. package/dist/conformance/harness.d.ts +32 -0
  215. package/dist/conformance/harness.js +227 -0
  216. package/dist/conformance/harness.js.map +1 -0
  217. package/dist/conformance/types.d.ts +88 -0
  218. package/dist/conformance/types.js +31 -0
  219. package/dist/conformance/types.js.map +1 -0
  220. package/dist/corpus/acquire.d.ts +37 -0
  221. package/dist/corpus/acquire.js +155 -0
  222. package/dist/corpus/acquire.js.map +1 -0
  223. package/dist/corpus/cache.d.ts +14 -0
  224. package/dist/corpus/cache.js +18 -0
  225. package/dist/corpus/cache.js.map +1 -0
  226. package/dist/corpus/fetch.d.ts +9 -0
  227. package/dist/corpus/fetch.js +24 -0
  228. package/dist/corpus/fetch.js.map +1 -0
  229. package/dist/corpus/index.d.ts +16 -0
  230. package/dist/corpus/index.js +78 -0
  231. package/dist/corpus/index.js.map +1 -0
  232. package/dist/corpus/query.d.ts +17 -0
  233. package/dist/corpus/query.js +108 -0
  234. package/dist/corpus/query.js.map +1 -0
  235. package/dist/corpus/route-resolver.d.ts +16 -0
  236. package/dist/corpus/route-resolver.js +20 -0
  237. package/dist/corpus/route-resolver.js.map +1 -0
  238. package/dist/corpus/types.d.ts +108 -0
  239. package/dist/corpus/types.js +50 -0
  240. package/dist/corpus/types.js.map +1 -0
  241. package/dist/daemon/balance-topup-loop.js +2 -1
  242. package/dist/daemon/balance-topup-loop.js.map +1 -1
  243. package/dist/daemon/creator.d.ts +5 -5
  244. package/dist/daemon/creator.js +8 -11
  245. package/dist/daemon/creator.js.map +1 -1
  246. package/dist/daemon/daemon.d.ts +84 -29
  247. package/dist/daemon/daemon.js +181 -63
  248. package/dist/daemon/daemon.js.map +1 -1
  249. package/dist/daemon/delivery-watcher.js +34 -4
  250. package/dist/daemon/delivery-watcher.js.map +1 -1
  251. package/dist/daemon/jinn-claim-loop-canonical.d.ts +207 -0
  252. package/dist/daemon/jinn-claim-loop-canonical.js +296 -0
  253. package/dist/daemon/jinn-claim-loop-canonical.js.map +1 -0
  254. package/dist/daemon/jinn-claim-loop-mock.d.ts +61 -0
  255. package/dist/daemon/jinn-claim-loop-mock.js +122 -0
  256. package/dist/daemon/jinn-claim-loop-mock.js.map +1 -0
  257. package/dist/daemon/jinn-claim-loop.d.ts +123 -0
  258. package/dist/daemon/jinn-claim-loop.js +256 -0
  259. package/dist/daemon/jinn-claim-loop.js.map +1 -0
  260. package/dist/daemon/reward-claim-loop.d.ts +2 -0
  261. package/dist/daemon/reward-claim-loop.js +32 -27
  262. package/dist/daemon/reward-claim-loop.js.map +1 -1
  263. package/dist/dashboard/assets/index-Bxlk5qpa.js +68 -0
  264. package/dist/dashboard/assets/index-DQ3u_vP5.css +32 -0
  265. package/dist/dashboard/index.html +18 -74
  266. package/dist/earning/agent-wallet-binding.d.ts +133 -0
  267. package/dist/earning/agent-wallet-binding.js +202 -0
  268. package/dist/earning/agent-wallet-binding.js.map +1 -0
  269. package/dist/earning/bootstrap.d.ts +64 -0
  270. package/dist/earning/bootstrap.js +325 -32
  271. package/dist/earning/bootstrap.js.map +1 -1
  272. package/dist/earning/contracts.d.ts +323 -0
  273. package/dist/earning/contracts.js +276 -0
  274. package/dist/earning/contracts.js.map +1 -1
  275. package/dist/earning/evidence-simhash.d.ts +1 -1
  276. package/dist/earning/funding-plan.d.ts +90 -0
  277. package/dist/earning/funding-plan.js +203 -0
  278. package/dist/earning/funding-plan.js.map +1 -0
  279. package/dist/earning/migrate-agent-id.d.ts +130 -0
  280. package/dist/earning/migrate-agent-id.js +257 -0
  281. package/dist/earning/migrate-agent-id.js.map +1 -0
  282. package/dist/earning/orphan-sweep.d.ts +14 -0
  283. package/dist/earning/orphan-sweep.js +63 -2
  284. package/dist/earning/orphan-sweep.js.map +1 -1
  285. package/dist/earning/reconcile.d.ts +2 -0
  286. package/dist/earning/reconcile.js +30 -0
  287. package/dist/earning/reconcile.js.map +1 -1
  288. package/dist/earning/stolas-claim.d.ts +86 -6
  289. package/dist/earning/stolas-claim.js +123 -9
  290. package/dist/earning/stolas-claim.js.map +1 -1
  291. package/dist/earning/store.d.ts +39 -0
  292. package/dist/earning/store.js +72 -1
  293. package/dist/earning/store.js.map +1 -1
  294. package/dist/earning/testnet-setup-migration.d.ts +32 -0
  295. package/dist/earning/testnet-setup-migration.js +214 -0
  296. package/dist/earning/testnet-setup-migration.js.map +1 -0
  297. package/dist/earning/types.d.ts +53 -9
  298. package/dist/earning/types.js +51 -2
  299. package/dist/earning/types.js.map +1 -1
  300. package/dist/earning/viem-clients.d.ts +20 -0
  301. package/dist/earning/viem-clients.js +32 -1
  302. package/dist/earning/viem-clients.js.map +1 -1
  303. package/dist/erc8004/abis.d.ts +381 -0
  304. package/dist/erc8004/abis.js +238 -0
  305. package/dist/erc8004/abis.js.map +1 -0
  306. package/dist/erc8004/addresses.d.ts +40 -0
  307. package/dist/erc8004/addresses.js +64 -0
  308. package/dist/erc8004/addresses.js.map +1 -0
  309. package/dist/erc8004/identity.d.ts +202 -0
  310. package/dist/erc8004/identity.js +305 -0
  311. package/dist/erc8004/identity.js.map +1 -0
  312. package/dist/erc8004/index.d.ts +13 -0
  313. package/dist/erc8004/index.js +20 -0
  314. package/dist/erc8004/index.js.map +1 -0
  315. package/dist/erc8004/reputation.d.ts +349 -0
  316. package/dist/erc8004/reputation.js +464 -0
  317. package/dist/erc8004/reputation.js.map +1 -0
  318. package/dist/erc8004/subgraph.d.ts +46 -0
  319. package/dist/erc8004/subgraph.js +37 -0
  320. package/dist/erc8004/subgraph.js.map +1 -0
  321. package/dist/erc8004/validation.d.ts +145 -0
  322. package/dist/erc8004/validation.js +219 -0
  323. package/dist/erc8004/validation.js.map +1 -0
  324. package/dist/errors/persisted-bootstrap-error.d.ts +4 -0
  325. package/dist/errors/persisted-bootstrap-error.js +50 -0
  326. package/dist/errors/persisted-bootstrap-error.js.map +1 -0
  327. package/dist/events/emitter.d.ts +12 -0
  328. package/dist/events/emitter.js +23 -0
  329. package/dist/events/emitter.js.map +1 -0
  330. package/dist/events/ring-buffer.d.ts +25 -0
  331. package/dist/events/ring-buffer.js +46 -0
  332. package/dist/events/ring-buffer.js.map +1 -0
  333. package/dist/events/types.d.ts +42 -0
  334. package/dist/events/types.js +28 -0
  335. package/dist/events/types.js.map +1 -0
  336. package/dist/harnesses/capability/index.d.ts +82 -0
  337. package/dist/harnesses/capability/index.js +12 -0
  338. package/dist/harnesses/capability/index.js.map +1 -0
  339. package/dist/harnesses/capability/scoped-rpc.d.ts +12 -0
  340. package/dist/harnesses/capability/scoped-rpc.js +34 -0
  341. package/dist/harnesses/capability/scoped-rpc.js.map +1 -0
  342. package/dist/harnesses/capability/scoped-secrets.d.ts +8 -0
  343. package/dist/harnesses/capability/scoped-secrets.js +10 -0
  344. package/dist/harnesses/capability/scoped-secrets.js.map +1 -0
  345. package/dist/harnesses/capability/scoped-signer.d.ts +46 -0
  346. package/dist/harnesses/capability/scoped-signer.js +73 -0
  347. package/dist/harnesses/capability/scoped-signer.js.map +1 -0
  348. package/dist/harnesses/engine/canonical-json.d.ts +1 -0
  349. package/dist/harnesses/engine/canonical-json.js +66 -0
  350. package/dist/harnesses/engine/canonical-json.js.map +1 -0
  351. package/dist/{restorer → harnesses}/engine/claim.d.ts +7 -7
  352. package/dist/{restorer → harnesses}/engine/claim.js +14 -7
  353. package/dist/harnesses/engine/claim.js.map +1 -0
  354. package/dist/{restorer → harnesses}/engine/delivery.d.ts +3 -1
  355. package/dist/{restorer → harnesses}/engine/delivery.js +8 -8
  356. package/dist/harnesses/engine/delivery.js.map +1 -0
  357. package/dist/harnesses/engine/engine.d.ts +341 -0
  358. package/dist/harnesses/engine/engine.js +1203 -0
  359. package/dist/harnesses/engine/engine.js.map +1 -0
  360. package/dist/harnesses/engine/envelope-assembly.d.ts +72 -0
  361. package/dist/harnesses/engine/envelope-assembly.js +60 -0
  362. package/dist/harnesses/engine/envelope-assembly.js.map +1 -0
  363. package/dist/harnesses/engine/packaging.d.ts +87 -0
  364. package/dist/{restorer → harnesses}/engine/packaging.js +83 -57
  365. package/dist/harnesses/engine/packaging.js.map +1 -0
  366. package/dist/harnesses/engine/persistence.d.ts +172 -0
  367. package/dist/{restorer → harnesses}/engine/persistence.js +78 -71
  368. package/dist/harnesses/engine/persistence.js.map +1 -0
  369. package/dist/harnesses/engine/recovery.d.ts +22 -0
  370. package/dist/{restorer → harnesses}/engine/recovery.js +5 -5
  371. package/dist/harnesses/engine/recovery.js.map +1 -0
  372. package/dist/harnesses/engine/registry.d.ts +53 -0
  373. package/dist/harnesses/engine/registry.js +62 -0
  374. package/dist/harnesses/engine/registry.js.map +1 -0
  375. package/dist/{restorer → harnesses}/engine/signing.d.ts +1 -1
  376. package/dist/{restorer → harnesses}/engine/signing.js +1 -1
  377. package/dist/harnesses/engine/signing.js.map +1 -0
  378. package/dist/{restorer → harnesses}/engine/state.d.ts +8 -8
  379. package/dist/{restorer → harnesses}/engine/state.js +23 -23
  380. package/dist/harnesses/engine/state.js.map +1 -0
  381. package/dist/harnesses/engine/validate-manifest.d.ts +23 -0
  382. package/dist/harnesses/engine/validate-manifest.js +49 -0
  383. package/dist/harnesses/engine/validate-manifest.js.map +1 -0
  384. package/dist/harnesses/engine/verification-stub.d.ts +18 -0
  385. package/dist/harnesses/engine/verification-stub.js +18 -0
  386. package/dist/harnesses/engine/verification-stub.js.map +1 -0
  387. package/dist/harnesses/external-impls/index.d.ts +3 -0
  388. package/dist/harnesses/external-impls/index.js +2 -0
  389. package/dist/harnesses/external-impls/index.js.map +1 -0
  390. package/dist/harnesses/external-impls/loader.d.ts +50 -0
  391. package/dist/harnesses/external-impls/loader.js +139 -0
  392. package/dist/harnesses/external-impls/loader.js.map +1 -0
  393. package/dist/harnesses/external-impls/package-hash.d.ts +26 -0
  394. package/dist/harnesses/external-impls/package-hash.js +102 -0
  395. package/dist/harnesses/external-impls/package-hash.js.map +1 -0
  396. package/dist/harnesses/external-impls/types.d.ts +42 -0
  397. package/dist/harnesses/external-impls/types.js +10 -0
  398. package/dist/harnesses/external-impls/types.js.map +1 -0
  399. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
  400. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js +159 -0
  401. package/dist/harnesses/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
  402. package/dist/harnesses/impls/claude-code-learner/harness.d.ts +22 -0
  403. package/dist/harnesses/impls/claude-code-learner/harness.js +44 -0
  404. package/dist/harnesses/impls/claude-code-learner/harness.js.map +1 -0
  405. package/dist/harnesses/impls/claude-code-learner/harvest.d.ts +19 -0
  406. package/dist/harnesses/impls/claude-code-learner/harvest.js +146 -0
  407. package/dist/harnesses/impls/claude-code-learner/harvest.js.map +1 -0
  408. package/dist/harnesses/impls/claude-code-learner/index.d.ts +14 -0
  409. package/dist/harnesses/impls/claude-code-learner/index.js +13 -0
  410. package/dist/harnesses/impls/claude-code-learner/index.js.map +1 -0
  411. package/dist/harnesses/impls/claude-code-learner/plugin-path.d.ts +14 -0
  412. package/dist/harnesses/impls/claude-code-learner/plugin-path.js +30 -0
  413. package/dist/harnesses/impls/claude-code-learner/plugin-path.js.map +1 -0
  414. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +19 -0
  415. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -0
  416. package/dist/harnesses/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
  417. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
  418. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
  419. package/dist/harnesses/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
  420. package/dist/harnesses/impls/claude-code-learner/types.d.ts +102 -0
  421. package/dist/harnesses/impls/claude-code-learner/types.js.map +1 -0
  422. package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.d.ts +1 -1
  423. package/dist/harnesses/impls/claude-mcp-hyperliquid/api-wallet.js.map +1 -0
  424. package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.d.ts +16 -14
  425. package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/index.js +62 -61
  426. package/dist/harnesses/impls/claude-mcp-hyperliquid/index.js.map +1 -0
  427. package/dist/harnesses/impls/claude-mcp-hyperliquid/mcp-tools.js.map +1 -0
  428. package/dist/harnesses/impls/claude-mcp-hyperliquid/safety-rails.js.map +1 -0
  429. package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
  430. package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
  431. package/dist/harnesses/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -0
  432. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.d.ts +11 -11
  433. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/index.js +26 -16
  434. package/dist/harnesses/impls/claude-mcp-prediction/index.js.map +1 -0
  435. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.js +1 -1
  436. package/dist/harnesses/impls/claude-mcp-prediction/mcp-tools.js.map +1 -0
  437. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.d.ts +2 -2
  438. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/prompt.js +5 -5
  439. package/dist/harnesses/impls/claude-mcp-prediction/prompt.js.map +1 -0
  440. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
  441. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js +21 -0
  442. package/dist/harnesses/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -0
  443. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/types.d.ts +3 -3
  444. package/dist/harnesses/impls/claude-mcp-prediction/types.js +6 -0
  445. package/dist/harnesses/impls/claude-mcp-prediction/types.js.map +1 -0
  446. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.d.ts +36 -0
  447. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/index.js +22 -15
  448. package/dist/harnesses/impls/claude-mcp-prediction-apy/index.js.map +1 -0
  449. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.js +1 -1
  450. package/dist/harnesses/impls/claude-mcp-prediction-apy/mcp-tools.js.map +1 -0
  451. package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.d.ts +7 -0
  452. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/prompt.js +5 -5
  453. package/dist/harnesses/impls/claude-mcp-prediction-apy/prompt.js.map +1 -0
  454. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -0
  455. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js +19 -0
  456. package/dist/harnesses/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -0
  457. package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/types.d.ts +1 -1
  458. package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js +6 -0
  459. package/dist/harnesses/impls/claude-mcp-prediction-apy/types.js.map +1 -0
  460. package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
  461. package/dist/{restorer/impls/claude-mcp-prediction/session-orchestrator.js → harnesses/impls/claude-mcp-shared/single-session-orchestrator.js} +85 -16
  462. package/dist/harnesses/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
  463. package/dist/harnesses/impls/evaluation-context.d.ts +23 -0
  464. package/dist/harnesses/impls/evaluation-context.js +25 -0
  465. package/dist/harnesses/impls/evaluation-context.js.map +1 -0
  466. package/dist/harnesses/impls/index.d.ts +74 -0
  467. package/dist/{restorer → harnesses}/impls/index.js +32 -7
  468. package/dist/harnesses/impls/index.js.map +1 -0
  469. package/dist/harnesses/impls/legacy-claude/index.d.ts +66 -0
  470. package/dist/{restorer → harnesses}/impls/legacy-claude/index.js +47 -19
  471. package/dist/harnesses/impls/legacy-claude/index.js.map +1 -0
  472. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.d.ts +2 -2
  473. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/canonical-metrics.js +2 -2
  474. package/dist/harnesses/impls/portfolio-v0-evaluator/canonical-metrics.js.map +1 -0
  475. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/availability.js.map +1 -0
  476. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.d.ts +1 -1
  477. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/consistency.js +1 -1
  478. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/consistency.js.map +1 -0
  479. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.d.ts +2 -2
  480. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/eligibility.js +2 -2
  481. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/eligibility.js.map +1 -0
  482. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.d.ts +2 -2
  483. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/integrity.js +2 -2
  484. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/integrity.js.map +1 -0
  485. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.d.ts +2 -2
  486. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/spec.js +2 -2
  487. package/dist/harnesses/impls/portfolio-v0-evaluator/checks/spec.js.map +1 -0
  488. package/dist/harnesses/impls/portfolio-v0-evaluator/index.d.ts +44 -0
  489. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/index.js +217 -88
  490. package/dist/harnesses/impls/portfolio-v0-evaluator/index.js.map +1 -0
  491. package/dist/harnesses/impls/portfolio-v0-evaluator/score.js.map +1 -0
  492. package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.d.ts +1 -1
  493. package/dist/harnesses/impls/portfolio-v0-evaluator/types.js.map +1 -0
  494. package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.d.ts +10 -8
  495. package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/index.js +15 -8
  496. package/dist/harnesses/impls/prediction-apy-v0-baseline/index.js.map +1 -0
  497. package/dist/harnesses/impls/prediction-apy-v0-baseline/strategy.js.map +1 -0
  498. package/dist/harnesses/impls/prediction-apy-v0-baseline/types.js.map +1 -0
  499. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +6 -0
  500. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js +11 -0
  501. package/dist/harnesses/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +1 -0
  502. package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/index.d.ts +9 -9
  503. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js +346 -0
  504. package/dist/harnesses/impls/prediction-apy-v0-evaluator/index.js.map +1 -0
  505. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +16 -0
  506. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js +22 -0
  507. package/dist/harnesses/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -0
  508. package/dist/harnesses/impls/prediction-apy-v0-evaluator/score.js.map +1 -0
  509. package/dist/harnesses/impls/prediction-apy-v0-evaluator/types.js.map +1 -0
  510. package/dist/harnesses/impls/prediction-v0-baseline/index.d.ts +33 -0
  511. package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/index.js +25 -16
  512. package/dist/harnesses/impls/prediction-v0-baseline/index.js.map +1 -0
  513. package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.d.ts +2 -2
  514. package/dist/{restorer → harnesses}/impls/prediction-v0-baseline/strategy.js +2 -2
  515. package/dist/harnesses/impls/prediction-v0-baseline/strategy.js.map +1 -0
  516. package/dist/harnesses/impls/prediction-v0-baseline/types.d.ts +7 -0
  517. package/dist/harnesses/impls/prediction-v0-baseline/types.js.map +1 -0
  518. package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.d.ts +2 -2
  519. package/dist/harnesses/impls/prediction-v0-evaluator/canonical-metrics.js.map +1 -0
  520. package/dist/harnesses/impls/prediction-v0-evaluator/checks/availability.js.map +1 -0
  521. package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.d.ts +1 -1
  522. package/dist/harnesses/impls/prediction-v0-evaluator/checks/eligibility.js.map +1 -0
  523. package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.d.ts +15 -0
  524. package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/integrity.js +12 -12
  525. package/dist/harnesses/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -0
  526. package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.d.ts +2 -2
  527. package/dist/harnesses/impls/prediction-v0-evaluator/checks/spec.js.map +1 -0
  528. package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/index.d.ts +10 -10
  529. package/dist/harnesses/impls/prediction-v0-evaluator/index.js +342 -0
  530. package/dist/harnesses/impls/prediction-v0-evaluator/index.js.map +1 -0
  531. package/dist/harnesses/impls/prediction-v0-evaluator/score.js.map +1 -0
  532. package/dist/harnesses/impls/prediction-v0-evaluator/types.js +2 -0
  533. package/dist/harnesses/impls/prediction-v0-evaluator/types.js.map +1 -0
  534. package/dist/harnesses/manifest/index.d.ts +3 -0
  535. package/dist/harnesses/manifest/index.js +3 -0
  536. package/dist/harnesses/manifest/index.js.map +1 -0
  537. package/dist/harnesses/manifest/load.d.ts +7 -0
  538. package/dist/harnesses/manifest/load.js +49 -0
  539. package/dist/harnesses/manifest/load.js.map +1 -0
  540. package/dist/harnesses/manifest/types.d.ts +75 -0
  541. package/dist/harnesses/manifest/types.js +8 -0
  542. package/dist/harnesses/manifest/types.js.map +1 -0
  543. package/dist/harnesses/manifest/verify.d.ts +15 -0
  544. package/dist/harnesses/manifest/verify.js +53 -0
  545. package/dist/harnesses/manifest/verify.js.map +1 -0
  546. package/dist/harnesses/types.d.ts +263 -0
  547. package/dist/{restorer → harnesses}/types.js +3 -3
  548. package/dist/harnesses/types.js.map +1 -0
  549. package/dist/index.d.ts +1 -1
  550. package/dist/main.d.ts +5 -2
  551. package/dist/main.js +793 -96
  552. package/dist/main.js.map +1 -1
  553. package/dist/mcp/acquire-artifact.d.ts +39 -0
  554. package/dist/mcp/acquire-artifact.js +163 -0
  555. package/dist/mcp/acquire-artifact.js.map +1 -0
  556. package/dist/mcp/operator-server.d.ts +21 -4
  557. package/dist/mcp/operator-server.js +505 -30
  558. package/dist/mcp/operator-server.js.map +1 -1
  559. package/dist/mcp/search-artifacts.d.ts +31 -0
  560. package/dist/mcp/search-artifacts.js +40 -0
  561. package/dist/mcp/search-artifacts.js.map +1 -0
  562. package/dist/mcp/server.d.ts +4 -4
  563. package/dist/mcp/server.js +110 -64
  564. package/dist/mcp/server.js.map +1 -1
  565. package/dist/observability/emit-event.d.ts +2 -2
  566. package/dist/observability/emit-event.js +2 -2
  567. package/dist/observability/emit-event.js.map +1 -1
  568. package/dist/operator-errors.js +4 -5
  569. package/dist/operator-errors.js.map +1 -1
  570. package/dist/plugins/digest.d.ts +1 -0
  571. package/dist/plugins/digest.js +28 -0
  572. package/dist/plugins/digest.js.map +1 -0
  573. package/dist/plugins/index.d.ts +6 -0
  574. package/dist/plugins/index.js +6 -0
  575. package/dist/plugins/index.js.map +1 -0
  576. package/dist/plugins/manifest.d.ts +7 -0
  577. package/dist/plugins/manifest.js +22 -0
  578. package/dist/plugins/manifest.js.map +1 -0
  579. package/dist/plugins/registry.d.ts +9 -0
  580. package/dist/plugins/registry.js +24 -0
  581. package/dist/plugins/registry.js.map +1 -0
  582. package/dist/plugins/resolvers.d.ts +2 -0
  583. package/dist/plugins/resolvers.js +87 -0
  584. package/dist/plugins/resolvers.js.map +1 -0
  585. package/dist/plugins/types.d.ts +39 -0
  586. package/dist/plugins/types.js +2 -0
  587. package/dist/plugins/types.js.map +1 -0
  588. package/dist/plugins/validator.d.ts +3 -0
  589. package/dist/plugins/validator.js +44 -0
  590. package/dist/plugins/validator.js.map +1 -0
  591. package/dist/preflight/claude-auth.d.ts +11 -11
  592. package/dist/preflight/claude-auth.js +18 -32
  593. package/dist/preflight/claude-auth.js.map +1 -1
  594. package/dist/runner/claude.d.ts +3 -3
  595. package/dist/runner/claude.js +62 -26
  596. package/dist/runner/claude.js.map +1 -1
  597. package/dist/runner/runner.d.ts +29 -2
  598. package/dist/runner/simple.d.ts +2 -2
  599. package/dist/runner/simple.js +2 -2
  600. package/dist/runner/simple.js.map +1 -1
  601. package/dist/scripts/fix-node-pty.mjs +62 -0
  602. package/dist/setup-mode.d.ts +34 -0
  603. package/dist/setup-mode.js +49 -0
  604. package/dist/setup-mode.js.map +1 -0
  605. package/dist/solver-nets/registry.d.ts +33 -0
  606. package/dist/solver-nets/registry.js +66 -0
  607. package/dist/solver-nets/registry.js.map +1 -0
  608. package/dist/solver-types/constants.js.map +1 -0
  609. package/dist/solver-types/index.d.ts +38 -0
  610. package/dist/solver-types/index.js +57 -0
  611. package/dist/solver-types/index.js.map +1 -0
  612. package/dist/solver-types/learner-loop-test.d.ts +2 -0
  613. package/dist/solver-types/learner-loop-test.js +39 -0
  614. package/dist/solver-types/learner-loop-test.js.map +1 -0
  615. package/dist/solver-types/portfolio-v0.d.ts +2 -0
  616. package/dist/solver-types/portfolio-v0.js +13 -0
  617. package/dist/solver-types/portfolio-v0.js.map +1 -0
  618. package/dist/solver-types/prediction-apy-v0-auto.d.ts +21 -0
  619. package/dist/solver-types/prediction-apy-v0-auto.js +80 -0
  620. package/dist/solver-types/prediction-apy-v0-auto.js.map +1 -0
  621. package/dist/{intents → solver-types}/prediction-apy-v0-template.d.ts +2 -2
  622. package/dist/{intents → solver-types}/prediction-apy-v0-template.js +2 -2
  623. package/dist/solver-types/prediction-apy-v0-template.js.map +1 -0
  624. package/dist/solver-types/prediction-apy-v0.d.ts +3 -0
  625. package/dist/solver-types/prediction-apy-v0.js +25 -0
  626. package/dist/solver-types/prediction-apy-v0.js.map +1 -0
  627. package/dist/{intents → solver-types}/prediction-v0-auto.d.ts +17 -7
  628. package/dist/{intents → solver-types}/prediction-v0-auto.js +41 -8
  629. package/dist/solver-types/prediction-v0-auto.js.map +1 -0
  630. package/dist/{intents → solver-types}/prediction-v0-template.d.ts +9 -9
  631. package/dist/{intents → solver-types}/prediction-v0-template.js +10 -10
  632. package/dist/solver-types/prediction-v0-template.js.map +1 -0
  633. package/dist/solver-types/prediction-v0.d.ts +3 -0
  634. package/dist/{intents/kinds → solver-types}/prediction-v0.js +11 -6
  635. package/dist/solver-types/prediction-v0.js.map +1 -0
  636. package/dist/solver-types/solver-type.d.ts +55 -0
  637. package/dist/solver-types/solver-type.js +6 -0
  638. package/dist/solver-types/solver-type.js.map +1 -0
  639. package/dist/store/store.d.ts +97 -21
  640. package/dist/store/store.js +228 -45
  641. package/dist/store/store.js.map +1 -1
  642. package/dist/tasks/posting-service.d.ts +22 -0
  643. package/dist/tasks/posting-service.js +143 -0
  644. package/dist/tasks/posting-service.js.map +1 -0
  645. package/dist/tasks/signing.d.ts +4 -0
  646. package/dist/tasks/signing.js +18 -0
  647. package/dist/tasks/signing.js.map +1 -0
  648. package/dist/tasks/sources.d.ts +46 -0
  649. package/dist/tasks/sources.js +42 -0
  650. package/dist/tasks/sources.js.map +1 -0
  651. package/dist/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
  652. package/dist/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
  653. package/dist/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
  654. package/dist/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
  655. package/dist/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
  656. package/dist/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
  657. package/dist/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
  658. package/dist/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  659. package/dist/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  660. package/dist/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  661. package/dist/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  662. package/dist/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  663. package/dist/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  664. package/dist/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  665. package/dist/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  666. package/dist/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
  667. package/dist/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
  668. package/dist/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
  669. package/dist/templates/harnesses/evaluator/README.md.tmpl +36 -0
  670. package/dist/templates/harnesses/evaluator/gitignore.tmpl +3 -0
  671. package/dist/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
  672. package/dist/templates/harnesses/evaluator/package.json.tmpl +26 -0
  673. package/dist/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
  674. package/dist/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
  675. package/dist/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
  676. package/dist/templates/harnesses/forecaster/README.md.tmpl +25 -0
  677. package/dist/templates/harnesses/forecaster/gitignore.tmpl +5 -0
  678. package/dist/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
  679. package/dist/templates/harnesses/forecaster/package.json.tmpl +26 -0
  680. package/dist/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
  681. package/dist/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
  682. package/dist/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
  683. package/dist/trajectory/collector.d.ts +49 -0
  684. package/dist/trajectory/collector.js +86 -0
  685. package/dist/trajectory/collector.js.map +1 -0
  686. package/dist/trajectory/emit.d.ts +27 -0
  687. package/dist/trajectory/emit.js +40 -0
  688. package/dist/trajectory/emit.js.map +1 -0
  689. package/dist/trajectory/hash-chain.d.ts +18 -0
  690. package/dist/trajectory/hash-chain.js +23 -0
  691. package/dist/trajectory/hash-chain.js.map +1 -0
  692. package/dist/trajectory/index.d.ts +22 -0
  693. package/dist/trajectory/index.js +23 -0
  694. package/dist/trajectory/index.js.map +1 -0
  695. package/dist/trajectory/schema.d.ts +14 -14
  696. package/dist/trajectory/secret-scrub.d.ts +32 -0
  697. package/dist/trajectory/secret-scrub.js +51 -0
  698. package/dist/trajectory/secret-scrub.js.map +1 -0
  699. package/dist/trajectory/span-profile.d.ts +27 -0
  700. package/dist/trajectory/span-profile.js +51 -0
  701. package/dist/trajectory/span-profile.js.map +1 -0
  702. package/dist/trajectory/wrappers/http.d.ts +37 -0
  703. package/dist/trajectory/wrappers/http.js +85 -0
  704. package/dist/trajectory/wrappers/http.js.map +1 -0
  705. package/dist/trajectory/wrappers/mcp.d.ts +17 -0
  706. package/dist/trajectory/wrappers/mcp.js +58 -0
  707. package/dist/trajectory/wrappers/mcp.js.map +1 -0
  708. package/dist/trajectory/wrappers/subprocess.d.ts +32 -0
  709. package/dist/trajectory/wrappers/subprocess.js +70 -0
  710. package/dist/trajectory/wrappers/subprocess.js.map +1 -0
  711. package/dist/tx-retry.js +23 -9
  712. package/dist/tx-retry.js.map +1 -1
  713. package/dist/types/envelope.d.ts +1619 -0
  714. package/dist/types/envelope.js +121 -0
  715. package/dist/types/envelope.js.map +1 -0
  716. package/dist/types/index.d.ts +4 -4
  717. package/dist/types/index.js +4 -4
  718. package/dist/types/index.js.map +1 -1
  719. package/dist/types/payloads/index.d.ts +11 -0
  720. package/dist/types/payloads/index.js +46 -0
  721. package/dist/types/payloads/index.js.map +1 -0
  722. package/dist/types/payloads/portfolio-v0.d.ts +481 -0
  723. package/dist/types/payloads/portfolio-v0.js +94 -0
  724. package/dist/types/payloads/portfolio-v0.js.map +1 -0
  725. package/dist/types/payloads/prediction-apy-v0.d.ts +231 -0
  726. package/dist/types/payloads/prediction-apy-v0.js +63 -0
  727. package/dist/types/payloads/prediction-apy-v0.js.map +1 -0
  728. package/dist/types/payloads/prediction-v0.d.ts +262 -0
  729. package/dist/types/payloads/prediction-v0.js +73 -0
  730. package/dist/types/payloads/prediction-v0.js.map +1 -0
  731. package/dist/types/portfolio.d.ts +31 -698
  732. package/dist/types/portfolio.js +20 -110
  733. package/dist/types/portfolio.js.map +1 -1
  734. package/dist/types/prediction-apy.d.ts +26 -366
  735. package/dist/types/prediction-apy.js +12 -68
  736. package/dist/types/prediction-apy.js.map +1 -1
  737. package/dist/types/prediction.d.ts +40 -416
  738. package/dist/types/prediction.js +9 -83
  739. package/dist/types/prediction.js.map +1 -1
  740. package/dist/types/task-document.d.ts +498 -0
  741. package/dist/types/task-document.js +69 -0
  742. package/dist/types/task-document.js.map +1 -0
  743. package/dist/types/task.d.ts +455 -0
  744. package/dist/types/task.js +58 -0
  745. package/dist/types/task.js.map +1 -0
  746. package/dist/types/window.d.ts +12 -0
  747. package/dist/types/window.js +6 -0
  748. package/dist/types/window.js.map +1 -0
  749. package/dist/util/path-safety.d.ts +21 -0
  750. package/dist/util/path-safety.js +28 -0
  751. package/dist/util/path-safety.js.map +1 -0
  752. package/dist/util/redact-rpc-urls.d.ts +5 -0
  753. package/dist/util/redact-rpc-urls.js +9 -0
  754. package/dist/util/redact-rpc-urls.js.map +1 -0
  755. package/dist/venues/hyperliquid/account-value.d.ts +1 -1
  756. package/dist/venues/hyperliquid/account-value.js +1 -1
  757. package/dist/x402/acquire.d.ts +14 -3
  758. package/dist/x402/acquire.js +28 -11
  759. package/dist/x402/acquire.js.map +1 -1
  760. package/dist/x402/handler.d.ts +15 -3
  761. package/dist/x402/handler.js +67 -24
  762. package/dist/x402/handler.js.map +1 -1
  763. package/package.json +38 -13
  764. package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
  765. package/plugins/claude-code-learner/AGENTS.md +30 -0
  766. package/plugins/claude-code-learner/CLAUDE.md +31 -0
  767. package/plugins/claude-code-learner/README.md +58 -0
  768. package/plugins/claude-code-learner/agents/analyst.md +69 -0
  769. package/plugins/claude-code-learner/agents/consolidator.md +95 -0
  770. package/plugins/claude-code-learner/agents/explorer.md +54 -0
  771. package/plugins/claude-code-learner/agents/planner.md +88 -0
  772. package/plugins/claude-code-learner/agents/promoter.md +114 -0
  773. package/plugins/claude-code-learner/agents/step-worker.md +48 -0
  774. package/plugins/claude-code-learner/agents/strategist.md +86 -0
  775. package/plugins/claude-code-learner/hooks/hooks.json +16 -0
  776. package/plugins/claude-code-learner/hooks/session-start +38 -0
  777. package/plugins/claude-code-learner/skills/coordinator/SKILL.md +111 -0
  778. package/plugins/claude-code-learner/skills/debrief/SKILL.md +63 -0
  779. package/plugins/claude-code-learner/skills/execute/SKILL.md +87 -0
  780. package/plugins/claude-code-learner/skills/improve/SKILL.md +53 -0
  781. package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +49 -0
  782. package/plugins/claude-code-learner/skills/orient/SKILL.md +71 -0
  783. package/plugins/claude-code-learner/skills/plan/SKILL.md +50 -0
  784. package/plugins/claude-code-learner/skills/strategize/SKILL.md +53 -0
  785. package/plugins/jinn-prediction-plugin/.claude-plugin/plugin.json +89 -0
  786. package/plugins/jinn-prediction-plugin/mcp/polymarket-server.mjs +2 -0
  787. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-solution.schema.json +12 -0
  788. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-task.schema.json +25 -0
  789. package/plugins/jinn-prediction-plugin/schemas/prediction-v0-verdict.schema.json +11 -0
  790. package/plugins/jinn-prediction-plugin/skills/base-rate-forecasting/SKILL.md +3 -0
  791. package/plugins/jinn-prediction-plugin/skills/calibration/SKILL.md +3 -0
  792. package/skills/jinn-operator/SKILL.md +120 -101
  793. package/templates/harnesses/alternative-harness/README.md.tmpl +44 -0
  794. package/templates/harnesses/alternative-harness/gitignore.tmpl +3 -0
  795. package/templates/harnesses/alternative-harness/jinn.manifest.json.tmpl +22 -0
  796. package/templates/harnesses/alternative-harness/package.json.tmpl +26 -0
  797. package/templates/harnesses/alternative-harness/src/coordinator.ts.tmpl +50 -0
  798. package/templates/harnesses/alternative-harness/src/harness.ts.tmpl +31 -0
  799. package/templates/harnesses/alternative-harness/src/index.ts.tmpl +44 -0
  800. package/templates/harnesses/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  801. package/templates/harnesses/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  802. package/templates/harnesses/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  803. package/templates/harnesses/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  804. package/templates/harnesses/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  805. package/templates/harnesses/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  806. package/templates/harnesses/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  807. package/templates/harnesses/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  808. package/templates/harnesses/alternative-harness/test/coordinator.test.ts.tmpl +53 -0
  809. package/templates/harnesses/alternative-harness/test/unit.test.ts.tmpl +55 -0
  810. package/templates/harnesses/alternative-harness/tsconfig.json.tmpl +16 -0
  811. package/templates/harnesses/evaluator/README.md.tmpl +36 -0
  812. package/templates/harnesses/evaluator/gitignore.tmpl +3 -0
  813. package/templates/harnesses/evaluator/jinn.manifest.json.tmpl +22 -0
  814. package/templates/harnesses/evaluator/package.json.tmpl +26 -0
  815. package/templates/harnesses/evaluator/src/index.ts.tmpl +35 -0
  816. package/templates/harnesses/evaluator/test/unit.test.ts.tmpl +49 -0
  817. package/templates/harnesses/evaluator/tsconfig.json.tmpl +16 -0
  818. package/templates/harnesses/forecaster/README.md.tmpl +25 -0
  819. package/templates/harnesses/forecaster/gitignore.tmpl +5 -0
  820. package/templates/harnesses/forecaster/jinn.manifest.json.tmpl +22 -0
  821. package/templates/harnesses/forecaster/package.json.tmpl +26 -0
  822. package/templates/harnesses/forecaster/src/index.ts.tmpl +33 -0
  823. package/templates/harnesses/forecaster/test/unit.test.ts.tmpl +42 -0
  824. package/templates/harnesses/forecaster/tsconfig.json.tmpl +16 -0
  825. package/dist/bin/jinn-mcp.d.ts +0 -2
  826. package/dist/bin/jinn-mcp.js +0 -10
  827. package/dist/bin/jinn-mcp.js.map +0 -1
  828. package/dist/cli/commands/intents.d.ts +0 -17
  829. package/dist/cli/commands/intents.js +0 -489
  830. package/dist/cli/commands/intents.js.map +0 -1
  831. package/dist/cli/commands/plugin-install.js.map +0 -1
  832. package/dist/cli/commands/submit-intent.js +0 -245
  833. package/dist/cli/commands/submit-intent.js.map +0 -1
  834. package/dist/cli/intent-registry-access.d.ts +0 -62
  835. package/dist/cli/intent-registry-access.js +0 -165
  836. package/dist/cli/intent-registry-access.js.map +0 -1
  837. package/dist/discovery/registry.d.ts +0 -97
  838. package/dist/discovery/registry.js +0 -177
  839. package/dist/discovery/registry.js.map +0 -1
  840. package/dist/discovery/subgraph.d.ts +0 -37
  841. package/dist/discovery/subgraph.js +0 -87
  842. package/dist/discovery/subgraph.js.map +0 -1
  843. package/dist/intents/kinds/constants.js.map +0 -1
  844. package/dist/intents/kinds/index.d.ts +0 -28
  845. package/dist/intents/kinds/index.js +0 -50
  846. package/dist/intents/kinds/index.js.map +0 -1
  847. package/dist/intents/kinds/portfolio-v0.d.ts +0 -2
  848. package/dist/intents/kinds/portfolio-v0.js +0 -13
  849. package/dist/intents/kinds/portfolio-v0.js.map +0 -1
  850. package/dist/intents/kinds/prediction-apy-v0.d.ts +0 -3
  851. package/dist/intents/kinds/prediction-apy-v0.js +0 -21
  852. package/dist/intents/kinds/prediction-apy-v0.js.map +0 -1
  853. package/dist/intents/kinds/prediction-v0.d.ts +0 -3
  854. package/dist/intents/kinds/prediction-v0.js.map +0 -1
  855. package/dist/intents/kinds/spec-kind.d.ts +0 -38
  856. package/dist/intents/kinds/spec-kind.js +0 -6
  857. package/dist/intents/kinds/spec-kind.js.map +0 -1
  858. package/dist/intents/posting-service.d.ts +0 -26
  859. package/dist/intents/posting-service.js +0 -218
  860. package/dist/intents/posting-service.js.map +0 -1
  861. package/dist/intents/prediction-apy-v0-auto.d.ts +0 -11
  862. package/dist/intents/prediction-apy-v0-auto.js +0 -46
  863. package/dist/intents/prediction-apy-v0-auto.js.map +0 -1
  864. package/dist/intents/prediction-apy-v0-template.js.map +0 -1
  865. package/dist/intents/prediction-v0-auto.js.map +0 -1
  866. package/dist/intents/prediction-v0-template.js.map +0 -1
  867. package/dist/intents/sources.d.ts +0 -39
  868. package/dist/intents/sources.js +0 -42
  869. package/dist/intents/sources.js.map +0 -1
  870. package/dist/restorer/engine/canonical-json.d.ts +0 -18
  871. package/dist/restorer/engine/canonical-json.js +0 -59
  872. package/dist/restorer/engine/canonical-json.js.map +0 -1
  873. package/dist/restorer/engine/claim.js.map +0 -1
  874. package/dist/restorer/engine/delivery.js.map +0 -1
  875. package/dist/restorer/engine/engine.d.ts +0 -213
  876. package/dist/restorer/engine/engine.js +0 -769
  877. package/dist/restorer/engine/engine.js.map +0 -1
  878. package/dist/restorer/engine/manifest-assembly.d.ts +0 -67
  879. package/dist/restorer/engine/manifest-assembly.js +0 -79
  880. package/dist/restorer/engine/manifest-assembly.js.map +0 -1
  881. package/dist/restorer/engine/packaging.d.ts +0 -87
  882. package/dist/restorer/engine/packaging.js.map +0 -1
  883. package/dist/restorer/engine/persistence.d.ts +0 -170
  884. package/dist/restorer/engine/persistence.js.map +0 -1
  885. package/dist/restorer/engine/recovery.d.ts +0 -22
  886. package/dist/restorer/engine/recovery.js.map +0 -1
  887. package/dist/restorer/engine/registry.d.ts +0 -62
  888. package/dist/restorer/engine/registry.js +0 -73
  889. package/dist/restorer/engine/registry.js.map +0 -1
  890. package/dist/restorer/engine/signing.js.map +0 -1
  891. package/dist/restorer/engine/state.js.map +0 -1
  892. package/dist/restorer/impls/claude-mcp-hyperliquid/api-wallet.js.map +0 -1
  893. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +0 -1
  894. package/dist/restorer/impls/claude-mcp-hyperliquid/mcp-tools.js.map +0 -1
  895. package/dist/restorer/impls/claude-mcp-hyperliquid/safety-rails.js.map +0 -1
  896. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +0 -1
  897. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +0 -1
  898. package/dist/restorer/impls/claude-mcp-prediction/mcp-tools.js.map +0 -1
  899. package/dist/restorer/impls/claude-mcp-prediction/prompt.js.map +0 -1
  900. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +0 -1
  901. package/dist/restorer/impls/claude-mcp-prediction/types.js +0 -6
  902. package/dist/restorer/impls/claude-mcp-prediction/types.js.map +0 -1
  903. package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +0 -34
  904. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +0 -1
  905. package/dist/restorer/impls/claude-mcp-prediction-apy/mcp-tools.js.map +0 -1
  906. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.d.ts +0 -7
  907. package/dist/restorer/impls/claude-mcp-prediction-apy/prompt.js.map +0 -1
  908. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +0 -128
  909. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +0 -1
  910. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js +0 -6
  911. package/dist/restorer/impls/claude-mcp-prediction-apy/types.js.map +0 -1
  912. package/dist/restorer/impls/evaluation-context.d.ts +0 -16
  913. package/dist/restorer/impls/evaluation-context.js +0 -18
  914. package/dist/restorer/impls/evaluation-context.js.map +0 -1
  915. package/dist/restorer/impls/index.d.ts +0 -46
  916. package/dist/restorer/impls/index.js.map +0 -1
  917. package/dist/restorer/impls/legacy-claude/index.d.ts +0 -52
  918. package/dist/restorer/impls/legacy-claude/index.js.map +0 -1
  919. package/dist/restorer/impls/portfolio-v0-evaluator/canonical-metrics.js.map +0 -1
  920. package/dist/restorer/impls/portfolio-v0-evaluator/checks/availability.js.map +0 -1
  921. package/dist/restorer/impls/portfolio-v0-evaluator/checks/consistency.js.map +0 -1
  922. package/dist/restorer/impls/portfolio-v0-evaluator/checks/eligibility.js.map +0 -1
  923. package/dist/restorer/impls/portfolio-v0-evaluator/checks/integrity.js.map +0 -1
  924. package/dist/restorer/impls/portfolio-v0-evaluator/checks/spec.js.map +0 -1
  925. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +0 -44
  926. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +0 -1
  927. package/dist/restorer/impls/portfolio-v0-evaluator/score.js.map +0 -1
  928. package/dist/restorer/impls/portfolio-v0-evaluator/types.js.map +0 -1
  929. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +0 -1
  930. package/dist/restorer/impls/prediction-apy-v0-baseline/strategy.js.map +0 -1
  931. package/dist/restorer/impls/prediction-apy-v0-baseline/types.js.map +0 -1
  932. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.d.ts +0 -6
  933. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js +0 -11
  934. package/dist/restorer/impls/prediction-apy-v0-evaluator/canonical-metrics.js.map +0 -1
  935. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +0 -208
  936. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +0 -1
  937. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +0 -7
  938. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +0 -29
  939. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +0 -1
  940. package/dist/restorer/impls/prediction-apy-v0-evaluator/score.js.map +0 -1
  941. package/dist/restorer/impls/prediction-apy-v0-evaluator/types.js.map +0 -1
  942. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +0 -31
  943. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +0 -1
  944. package/dist/restorer/impls/prediction-v0-baseline/strategy.js.map +0 -1
  945. package/dist/restorer/impls/prediction-v0-baseline/types.d.ts +0 -7
  946. package/dist/restorer/impls/prediction-v0-baseline/types.js.map +0 -1
  947. package/dist/restorer/impls/prediction-v0-evaluator/canonical-metrics.js.map +0 -1
  948. package/dist/restorer/impls/prediction-v0-evaluator/checks/availability.js.map +0 -1
  949. package/dist/restorer/impls/prediction-v0-evaluator/checks/eligibility.js.map +0 -1
  950. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +0 -13
  951. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +0 -1
  952. package/dist/restorer/impls/prediction-v0-evaluator/checks/spec.js.map +0 -1
  953. package/dist/restorer/impls/prediction-v0-evaluator/index.js +0 -234
  954. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +0 -1
  955. package/dist/restorer/impls/prediction-v0-evaluator/score.js.map +0 -1
  956. package/dist/restorer/impls/prediction-v0-evaluator/types.js.map +0 -1
  957. package/dist/restorer/types.d.ts +0 -194
  958. package/dist/restorer/types.js.map +0 -1
  959. package/dist/types/desired-state.d.ts +0 -94
  960. package/dist/types/desired-state.js +0 -36
  961. package/dist/types/desired-state.js.map +0 -1
  962. /package/dist/cli/commands/{plugin-install.d.ts → solver-nets.d.ts} +0 -0
  963. /package/dist/cli/commands/{submit-intent.d.ts → tasks.d.ts} +0 -0
  964. /package/dist/{restorer/impls/prediction-apy-v0-baseline → harnesses/impls/claude-code-learner}/types.js +0 -0
  965. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/api-wallet.js +0 -0
  966. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.d.ts +0 -0
  967. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/mcp-tools.js +0 -0
  968. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.d.ts +0 -0
  969. /package/dist/{restorer → harnesses}/impls/claude-mcp-hyperliquid/safety-rails.js +0 -0
  970. /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction/mcp-tools.d.ts +0 -0
  971. /package/dist/{restorer → harnesses}/impls/claude-mcp-prediction-apy/mcp-tools.d.ts +0 -0
  972. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.d.ts +0 -0
  973. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/checks/availability.js +0 -0
  974. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.d.ts +0 -0
  975. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/score.js +0 -0
  976. /package/dist/{restorer → harnesses}/impls/portfolio-v0-evaluator/types.js +0 -0
  977. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.d.ts +0 -0
  978. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/strategy.js +0 -0
  979. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-baseline/types.d.ts +0 -0
  980. /package/dist/{restorer/impls/prediction-apy-v0-evaluator → harnesses/impls/prediction-apy-v0-baseline}/types.js +0 -0
  981. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.d.ts +0 -0
  982. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/score.js +0 -0
  983. /package/dist/{restorer → harnesses}/impls/prediction-apy-v0-evaluator/types.d.ts +0 -0
  984. /package/dist/{restorer/impls/prediction-v0-baseline → harnesses/impls/prediction-apy-v0-evaluator}/types.js +0 -0
  985. /package/dist/{restorer/impls/prediction-v0-evaluator → harnesses/impls/prediction-v0-baseline}/types.js +0 -0
  986. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/canonical-metrics.js +0 -0
  987. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.d.ts +0 -0
  988. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/availability.js +0 -0
  989. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/eligibility.js +0 -0
  990. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/checks/spec.js +0 -0
  991. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.d.ts +0 -0
  992. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/score.js +0 -0
  993. /package/dist/{restorer → harnesses}/impls/prediction-v0-evaluator/types.d.ts +0 -0
  994. /package/dist/{intents/kinds → solver-types}/constants.d.ts +0 -0
  995. /package/dist/{intents/kinds → solver-types}/constants.js +0 -0
package/dist/config.js CHANGED
@@ -13,11 +13,11 @@
13
13
  * Router claims: JINN_ROUTER_CLAIM_DELIVERY_VERSION=v1|v2 overrides chain default
14
14
  * (mainnet V1, testnet V2) for JinnRouter claimDelivery encoding.
15
15
  */
16
- import { existsSync, readFileSync } from 'node:fs';
16
+ import { copyFileSync, existsSync, readFileSync, writeFileSync } from 'node:fs';
17
17
  import { homedir } from 'node:os';
18
18
  import { join } from 'node:path';
19
19
  import { z } from 'zod';
20
- import { DesiredStateSchema, parseDesiredState } from './types/desired-state.js';
20
+ import { TaskSchema, parseTask } from './types/task.js';
21
21
  // ── Schema ──────────────────────────────────────────────────────────────────
22
22
  export const JinnConfigSchema = z.object({
23
23
  /**
@@ -35,6 +35,13 @@ export const JinnConfigSchema = z.object({
35
35
  */
36
36
  rpcUrl: z.string().optional(),
37
37
  archiveRpcUrl: z.string().optional(),
38
+ /**
39
+ * Optional L2 proof/archive RPC endpoint for canonical cross-chain canaries.
40
+ * The daemon can use its normal rpcUrl for writes while proof construction
41
+ * uses this endpoint for historical eth_getProof at OP dispute-game blocks.
42
+ * Env: JINN_L2_PROOF_RPC_URL.
43
+ */
44
+ l2ProofRpcUrl: z.string().url().optional(),
38
45
  /** Earning state directory */
39
46
  earningDir: z.string().default(join(homedir(), '.jinn-client', 'earning')),
40
47
  /** SQLite database path */
@@ -56,6 +63,16 @@ export const JinnConfigSchema = z.object({
56
63
  balanceTopupIntervalMs: z.number().int().min(0).default(300_000),
57
64
  /** HTTP API port */
58
65
  apiPort: z.number().int().positive().default(7331),
66
+ /**
67
+ * Bind host for the HTTP API server. Defaults to `127.0.0.1` so the daemon
68
+ * is unreachable across the network out of the box — operators who need
69
+ * LAN access (or who terminate TLS in front of the daemon) opt in via this
70
+ * knob or `JINN_API_BIND_HOST`. Cost-mutating routes (`POST /artifacts`,
71
+ * `POST /v1/artifacts/acquire`) require a bearer token regardless; the
72
+ * bind host is the outer firewall.
73
+ * Env: JINN_API_BIND_HOST.
74
+ */
75
+ apiBindHost: z.string().optional(),
59
76
  /** Path to claude CLI binary */
60
77
  claudePath: z.string().default('claude'),
61
78
  /** Model for restoration/evaluation agent */
@@ -78,8 +95,8 @@ export const JinnConfigSchema = z.object({
78
95
  subgraphUrl: z.string().optional(),
79
96
  /** This node's public HTTP endpoint (for 8004 registration) */
80
97
  nodeEndpoint: z.string().optional(),
81
- /** Desired states to create and restore. Empty by default; testnet auto-intents fill the loop. */
82
- desiredStates: z.array(DesiredStateSchema).default([]),
98
+ /** Tasks to create and solve. Empty by default; enabled SolverNet generators fill the loop. */
99
+ tasks: z.array(TaskSchema).default([]),
83
100
  /** IPFS upload endpoint */
84
101
  ipfsRegistryUrl: z.string().default('https://registry.autonolas.tech'),
85
102
  /** IPFS read endpoint */
@@ -94,6 +111,83 @@ export const JinnConfigSchema = z.object({
94
111
  testnetStolasDeploymentPath: z.string().optional(),
95
112
  /** Optional Base Sepolia ClaimRegistry deployment artifact path */
96
113
  testnetClaimRegistryDeploymentPath: z.string().optional(),
114
+ /**
115
+ * Optional deployment artifact for the v0 MVI L1 stack
116
+ * (deployment-jinn-mvi-l1-{network}{,-fast}.json). Provides addresses for
117
+ * JINN, Timelock, JinnGovernor, JinnDistributor, and Messenger.
118
+ * When set the daemon enables the cross-chain JINN claim loop.
119
+ */
120
+ jinnMviL1DeploymentPath: z.string().optional(),
121
+ /**
122
+ * Optional deployment artifact for the v0 MVI L2 emitter
123
+ * (deployment-jinn-mvi-l2-{network}.json). Provides the
124
+ * JinnClaimEmitter address on the measurement chain (Base / Base Sepolia).
125
+ */
126
+ jinnMviL2DeploymentPath: z.string().optional(),
127
+ // ── Cross-chain claim loop (Phase B / jinn-mono-7x5) ─────────────────────
128
+ /**
129
+ * RPC endpoint for the L1 governance chain (Ethereum / Sepolia) where the
130
+ * JinnDistributor lives. Required when jinnDistributorAddress is set.
131
+ * Env: JINN_ETHEREUM_RPC_URL.
132
+ */
133
+ ethereumRpcUrl: z.string().url().optional(),
134
+ /**
135
+ * Optional archive RPC endpoint for the L1 governance chain. Used for
136
+ * historical block lookups when constructing canonical-mode proofs.
137
+ * Env: JINN_ETHEREUM_ARCHIVE_RPC_URL.
138
+ */
139
+ ethereumArchiveRpcUrl: z.string().url().optional(),
140
+ /**
141
+ * L1 network used by the cross-chain claim loop. 'sepolia' tracks Base
142
+ * Sepolia testnet; 'ethereum' tracks Base mainnet. Defaults to 'sepolia'
143
+ * during Phase 1b. Env: JINN_L1_NETWORK.
144
+ */
145
+ jinnL1Network: z.enum(['sepolia', 'ethereum']).default('sepolia'),
146
+ /**
147
+ * JinnDistributor address on the L1 governance chain. Setting this enables
148
+ * the cross-chain claim loop. When set, ethereumRpcUrl MUST also be set.
149
+ * Resolved from jinnMviL1DeploymentPath when omitted; otherwise a manual
150
+ * override. Env: JINN_DISTRIBUTOR_ADDRESS.
151
+ */
152
+ jinnDistributorAddress: z
153
+ .string()
154
+ .regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
155
+ .optional(),
156
+ /**
157
+ * JinnClaimEmitter address on the L2 measurement chain (Base / Base
158
+ * Sepolia). Resolved from jinnMviL2DeploymentPath when omitted.
159
+ * Env: JINN_CLAIM_EMITTER_ADDRESS.
160
+ */
161
+ jinnClaimEmitterAddress: z
162
+ .string()
163
+ .regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
164
+ .optional(),
165
+ /**
166
+ * Messenger address on the L1 governance chain. Resolved from
167
+ * jinnMviL1DeploymentPath when omitted.
168
+ * Env: JINN_MESSENGER_ADDRESS.
169
+ */
170
+ jinnMessengerAddress: z
171
+ .string()
172
+ .regex(/^0x[0-9a-fA-F]{40}$/, 'must be a 0x-prefixed 20-byte address')
173
+ .optional(),
174
+ /**
175
+ * Messenger mode driving proof construction. `mock` submits MockMessenger
176
+ * fixtures — required for automated Sepolia burn-in (`runOnce`). `canonical`
177
+ * builds OP-Stack storage proofs for verifier-only checks; scheduled daemon
178
+ * ticks **skip** canonical mode (multi-day finality) — use
179
+ * `tsx scripts/verify-canonical-canary.ts` after finality instead. Defaults
180
+ * to `canonical`.
181
+ * Env: JINN_MESSENGER_MODE.
182
+ */
183
+ jinnMessengerMode: z.enum(['canonical', 'mock']).default('canonical'),
184
+ /**
185
+ * How often the daemon ticks the cross-chain JINN claim loop (ms). Default
186
+ * 3 600 000 (1 hour) — well below mainnet challenge windows while
187
+ * minimising RPC/gas churn. Set to 0 to disable when the address is set.
188
+ * Env: JINN_CLAIM_LOOP_INTERVAL_MS.
189
+ */
190
+ jinnClaimLoopIntervalMs: z.number().int().min(0).default(60 * 60 * 1000),
97
191
  /** Staking mode: 'standard' uses stOLAS (no OLAS needed), 'self-bond' uses operator-provided OLAS. */
98
192
  stakingMode: z.enum(['standard', 'self-bond']).default('standard'),
99
193
  /** Number of services to bootstrap and run. */
@@ -112,23 +206,120 @@ export const JinnConfigSchema = z.object({
112
206
  .regex(/^\d+$/, 'must be a non-negative integer string')
113
207
  .optional(),
114
208
  /**
115
- * Operator-controlled impl dispatch for the restorer engine.
116
- *
117
- * Wired by daemon (jinn-mono-bv5); engine consumes via RestorerImplRegistry config.
118
- *
119
- * byKind: explicit spec.kind → impl name mapping (highest priority)
120
- * default: fallback impl name when no kind-specific match is found
121
- * disabled: impl names to exclude from dispatch entirely
209
+ * Optional gas runway override for bootstrap/top-up targets (wei string).
210
+ * Used by Docker testnet acceptance to match the bundled faucet budget.
211
+ * Env: JINN_MIN_EOA_GAS_WEI
212
+ */
213
+ minEoaGasWei: z
214
+ .string()
215
+ .regex(/^\d+$/, 'must be a non-negative integer string')
216
+ .optional(),
217
+ /**
218
+ * Optional Safe ETH target override for bootstrap/top-up targets (wei string).
219
+ * Env: JINN_MIN_SAFE_ETH_WEI
122
220
  */
123
- restorers: z
221
+ minSafeEthWei: z
222
+ .string()
223
+ .regex(/^\d+$/, 'must be a non-negative integer string')
224
+ .optional(),
225
+ /**
226
+ * prediction.v0 auto-generator submission window (ms). Default 600000 (10 min).
227
+ * Docker acceptance gate sets 120000 to keep cycles tight.
228
+ * Env: JINN_PREDICTION_V0_WINDOW_MS
229
+ */
230
+ predictionV0WindowMs: z.number().int().positive().optional(),
231
+ /**
232
+ * prediction.v0 auto-generator gap from window end → resolveTs (ms).
233
+ * Default 300000 (5 min). Docker acceptance gate sets 60000.
234
+ * Env: JINN_PREDICTION_V0_RESOLVE_GAP_MS
235
+ */
236
+ predictionV0ResolveGapMs: z.number().int().positive().optional(),
237
+ /**
238
+ * Operator-controlled Harness inventory.
239
+ */
240
+ harnesses: z
124
241
  .object({
125
- byKind: z.record(z.string()).optional(),
126
242
  default: z.string().optional(),
127
243
  disabled: z.array(z.string()).optional(),
244
+ /**
245
+ * Operator-supplied external harness impls.
246
+ *
247
+ * Each entry points the daemon at a manifest-bearing package on disk
248
+ * (typically inside `node_modules/`); `client/src/main.ts` invokes
249
+ * `loadExternalImpl()` for each entry at boot, validates the manifest
250
+ * against `trustedImplSigners`, and registers the resulting impl in
251
+ * the harness registry. See
252
+ * `docs/superpowers/plans/2026-04-30-plug-in-surface-path-2-foundation.md`
253
+ * step 5.7-5.8.
254
+ */
255
+ externalImpls: z
256
+ .array(z.object({
257
+ name: z.string(),
258
+ entry: z.string(),
259
+ package: z.string().optional(),
260
+ /**
261
+ * Optional pinned version. When set, the loader rejects the
262
+ * impl if its manifest's `version` does not match this string
263
+ * exactly — guards against silent upgrades of an on-disk
264
+ * package without an explicit operator config change
265
+ * (Finding 10).
266
+ */
267
+ version: z.string().optional(),
268
+ }))
269
+ .optional(),
128
270
  })
129
271
  .optional(),
272
+ /** SolverNet activation, canonical SolverPlugin, and Harness selection. */
273
+ solverNets: z.record(z.object({
274
+ enabled: z.boolean().default(true),
275
+ solverType: z.string(),
276
+ canonicalPlugin: z.union([
277
+ z.string(),
278
+ z.object({
279
+ name: z.string().optional(),
280
+ source: z.string(),
281
+ version: z.string().optional(),
282
+ }),
283
+ ]),
284
+ harness: z.string().default('claude-code-learner'),
285
+ plugins: z.array(z.union([
286
+ z.string(),
287
+ z.object({
288
+ name: z.string().optional(),
289
+ source: z.string(),
290
+ version: z.string().optional(),
291
+ }),
292
+ ])).default([]),
293
+ taskGenerator: z.object({
294
+ enabled: z.boolean().default(true),
295
+ }).default({ enabled: true }),
296
+ })).default({
297
+ prediction: {
298
+ enabled: true,
299
+ solverType: 'prediction.v0',
300
+ canonicalPlugin: 'bundled:jinn-prediction-plugin',
301
+ harness: 'claude-code-learner',
302
+ plugins: [],
303
+ taskGenerator: { enabled: true },
304
+ },
305
+ }),
130
306
  /**
131
- * Restoration engine durable directories (per-intent work + impl state).
307
+ * Trusted ed25519 publishers for external harness impls. The daemon
308
+ * refuses to load any external impl whose manifest signature is not
309
+ * verifiable against one of these public keys.
310
+ *
311
+ * `publicKey` is base64-encoded raw ed25519. `label` is operator-facing
312
+ * provenance only.
313
+ */
314
+ trustedImplSigners: z
315
+ .array(z.object({
316
+ alg: z.literal('ed25519'),
317
+ publicKey: z.string(),
318
+ label: z.string().optional(),
319
+ }))
320
+ .optional(),
321
+ /**
322
+ * Restoration engine durable directories (per-task work + impl state).
132
323
  * Defaults under ~/.jinn-client/engine/. Env: JINN_ENGINE_WORKING_DIR_ROOT,
133
324
  * JINN_ENGINE_IMPL_STATE_DIR_ROOT.
134
325
  */
@@ -138,6 +329,83 @@ export const JinnConfigSchema = z.object({
138
329
  implStateDirRoot: z.string().optional(),
139
330
  })
140
331
  .optional(),
332
+ /**
333
+ * Operator-local artifact serving configuration (Phase A.1, jinn-mono-vy37.1).
334
+ *
335
+ * Per spec/2026-04-30-phase-a-umbrella.md §1, restoration artifact bytes
336
+ * stay on the operator's filesystem (served_artifacts) and are dispensed
337
+ * via the operator's HTTP API with x402 gating when `priceUsdc > 0`. The
338
+ * envelope's `artifact.access.endpoint` field tells consumers where to
339
+ * fetch each artifact; `priceUsdc` declares the asking price.
340
+ *
341
+ * `publicEndpoint` is the externally-reachable base URL that gets stamped
342
+ * into every artifact descriptor. `defaultPriceUsdc` is the fallback price
343
+ * when neither OUTPUTS.json nor `perArtifactTypePrice` provides a value.
344
+ * `perArtifactTypePrice` lets operators charge per artifactType.
345
+ *
346
+ * Resolution precedence in `uploadArtifacts`:
347
+ * OUTPUTS.json `access.priceUsdc` > `perArtifactTypePrice[artifactType]`
348
+ * > `defaultPriceUsdc`.
349
+ *
350
+ * Env overrides:
351
+ * JINN_OPERATOR_PUBLIC_ENDPOINT
352
+ * JINN_OPERATOR_DEFAULT_PRICE_USDC
353
+ */
354
+ operator: z
355
+ .object({
356
+ publicEndpoint: z.string().url(),
357
+ defaultPriceUsdc: z
358
+ .string()
359
+ .regex(/^\d+(\.\d+)?$/, 'must be a non-negative decimal string')
360
+ .default('0'),
361
+ perArtifactTypePrice: z
362
+ .record(z.string(), z.string().regex(/^\d+(\.\d+)?$/, 'must be a non-negative decimal string'))
363
+ .default({}),
364
+ })
365
+ .optional(),
366
+ /**
367
+ * Run idempotent legacy migrations at daemon startup (jinn-mono-jgp:
368
+ * backfill `agent_id` on `complete` services that pre-date j07).
369
+ *
370
+ * Defaults to true — the migrations are no-ops on already-migrated
371
+ * fleets and cheap on Base. Operators on a flaky RPC or with locked
372
+ * funds can set this to false and run `jinn migrate-agent-id`
373
+ * explicitly.
374
+ *
375
+ * Env: JINN_RUN_LEGACY_MIGRATIONS=0|1.
376
+ */
377
+ runLegacyMigrations: z.boolean().default(true),
378
+ /**
379
+ * ERC-8004 Identity Registry contract address on the configured chain.
380
+ * Pre-rebuild config key (PR #37 cleanup left it in place). The post-rebuild
381
+ * client (jinn-mono-j07/3zk) reads the address from
382
+ * `client/src/erc8004/identity.ts` constants and from
383
+ * `EarningState.identity_registry_address`; this config key is currently
384
+ * unused but kept for backwards-compat with operator config files.
385
+ * Env: JINN_IDENTITY_REGISTRY_ADDRESS
386
+ */
387
+ identityRegistryAddress: z.string().optional(),
388
+ /**
389
+ * ERC-8004 Validation Registry contract address on the configured chain.
390
+ * Pre-rebuild config key. The post-rebuild client (jinn-mono-9jg) reads the
391
+ * address from `client/src/erc8004/addresses.ts:VALIDATION_REGISTRY_ADDRESSES`;
392
+ * this config key is currently unused but kept for backwards-compat.
393
+ * Env: JINN_VALIDATION_REGISTRY_ADDRESS
394
+ */
395
+ validationRegistryAddress: z.string().optional(),
396
+ /**
397
+ * Whether to enable the read-only reputation surface (query-time flag).
398
+ * Pre-rebuild config key. The post-rebuild client (jinn-mono-2ff/yg4) is
399
+ * always constructed when `agent_id` is set; this flag is currently unused
400
+ * but kept for backwards-compat.
401
+ * Env: JINN_REPUTATION_ENABLED
402
+ */
403
+ reputationEnabled: z.boolean().default(false),
404
+ }).refine((cfg) => !cfg.jinnDistributorAddress || !!cfg.ethereumRpcUrl, {
405
+ message: 'ethereumRpcUrl must be set when jinnDistributorAddress is configured ' +
406
+ '(env JINN_ETHEREUM_RPC_URL or config field). The cross-chain claim loop ' +
407
+ 'cannot reach the L1 governance chain without it.',
408
+ path: ['ethereumRpcUrl'],
141
409
  });
142
410
  const DEFAULT_ENGINE = {
143
411
  workingDirRoot: join(homedir(), '.jinn-client', 'engine', 'work'),
@@ -156,6 +424,101 @@ export class ConfigLoadError extends Error {
156
424
  this.details = details;
157
425
  }
158
426
  }
427
+ function isRecord(value) {
428
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
429
+ }
430
+ function timestampForBackup(date = new Date()) {
431
+ return date.toISOString().replace(/[:.]/g, '-');
432
+ }
433
+ function solverNetSlugFor(solverType) {
434
+ if (solverType === 'prediction.v0')
435
+ return 'prediction';
436
+ if (solverType === 'prediction.apy.v0')
437
+ return 'prediction-apy';
438
+ if (solverType === 'portfolio.v0')
439
+ return 'portfolio';
440
+ return solverType.replace(/[^a-zA-Z0-9]+/g, '-').replace(/^-+|-+$/g, '') || 'default';
441
+ }
442
+ function defaultCanonicalPluginFor(solverType) {
443
+ if (solverType === 'prediction.v0')
444
+ return 'bundled:jinn-prediction-plugin';
445
+ return `bundled:${solverType.replace(/[^a-zA-Z0-9._-]+/g, '-')}-plugin`;
446
+ }
447
+ function normalizeSolverNetPlugin(plugin, solverType) {
448
+ if (typeof plugin === 'string' && plugin.length > 0) {
449
+ return plugin.startsWith('bundled:')
450
+ || plugin.startsWith('file:')
451
+ || plugin.startsWith('path:')
452
+ || plugin.startsWith('npm:')
453
+ || plugin.startsWith('git:')
454
+ || plugin.startsWith('github:')
455
+ || plugin.startsWith('claude:')
456
+ ? plugin
457
+ : `bundled:${plugin}`;
458
+ }
459
+ if (isRecord(plugin))
460
+ return plugin;
461
+ return defaultCanonicalPluginFor(solverType);
462
+ }
463
+ export function migrateHarnessConfigFileValues(values) {
464
+ const next = { ...values };
465
+ let changed = false;
466
+ const solverNetsInput = next['solverNets'];
467
+ const solverNets = {};
468
+ if (Array.isArray(solverNetsInput)) {
469
+ for (const item of solverNetsInput) {
470
+ if (!isRecord(item) || typeof item['solverType'] !== 'string')
471
+ continue;
472
+ const solverType = item['solverType'];
473
+ const slug = typeof item['name'] === 'string' ? item['name'] : solverNetSlugFor(solverType);
474
+ solverNets[slug] = {
475
+ enabled: item['enabled'] !== false,
476
+ solverType,
477
+ canonicalPlugin: normalizeSolverNetPlugin(item['canonicalPlugin'] ?? item['plugin'], solverType),
478
+ harness: typeof item['harness'] === 'string'
479
+ ? item['harness']
480
+ : 'claude-code-learner',
481
+ plugins: Array.isArray(item['plugins']) ? item['plugins'] : [],
482
+ taskGenerator: isRecord(item['taskGenerator']) ? item['taskGenerator'] : { enabled: true },
483
+ };
484
+ }
485
+ changed = true;
486
+ }
487
+ else if (isRecord(solverNetsInput)) {
488
+ for (const [name, item] of Object.entries(solverNetsInput)) {
489
+ if (!isRecord(item) || typeof item['solverType'] !== 'string') {
490
+ solverNets[name] = item;
491
+ continue;
492
+ }
493
+ const solverType = item['solverType'];
494
+ solverNets[name] = {
495
+ enabled: item['enabled'] !== false,
496
+ solverType,
497
+ canonicalPlugin: normalizeSolverNetPlugin(item['canonicalPlugin'] ?? item['plugin'], solverType),
498
+ harness: typeof item['harness'] === 'string'
499
+ ? item['harness']
500
+ : 'claude-code-learner',
501
+ plugins: Array.isArray(item['plugins']) ? item['plugins'] : [],
502
+ taskGenerator: isRecord(item['taskGenerator']) ? item['taskGenerator'] : { enabled: true },
503
+ };
504
+ }
505
+ }
506
+ if (!solverNets['prediction']) {
507
+ solverNets['prediction'] = {
508
+ enabled: true,
509
+ solverType: 'prediction.v0',
510
+ canonicalPlugin: normalizeSolverNetPlugin(undefined, 'prediction.v0'),
511
+ harness: 'claude-code-learner',
512
+ plugins: [],
513
+ taskGenerator: { enabled: true },
514
+ };
515
+ changed = true;
516
+ }
517
+ if (Object.keys(solverNets).length > 0) {
518
+ next['solverNets'] = solverNets;
519
+ }
520
+ return { values: next, changed };
521
+ }
159
522
  // ── Loader ──────────────────────────────────────────────────────────────────
160
523
  /**
161
524
  * Load config with resolution: env > config file > defaults.
@@ -178,6 +541,14 @@ export function loadConfig(configPath) {
178
541
  cause: error instanceof Error ? error.message : String(error),
179
542
  });
180
543
  }
544
+ const migrated = migrateHarnessConfigFileValues(fileValues);
545
+ if (migrated.changed) {
546
+ const backupPath = `${filePath}.bak.${timestampForBackup()}`;
547
+ copyFileSync(filePath, backupPath);
548
+ writeFileSync(filePath, JSON.stringify(migrated.values, null, 2) + '\n', 'utf-8');
549
+ fileValues = migrated.values;
550
+ console.error(`[config] Migrated ${filePath}; backup written to ${backupPath}`);
551
+ }
181
552
  console.error(`[config] Loaded ${filePath}`);
182
553
  }
183
554
  else if (configPath) {
@@ -190,6 +561,8 @@ export function loadConfig(configPath) {
190
561
  const merged = { ...fileValues };
191
562
  if (env['JINN_NETWORK'])
192
563
  merged.network = env['JINN_NETWORK'];
564
+ if (env['JINN_L2_PROOF_RPC_URL'])
565
+ merged.l2ProofRpcUrl = env['JINN_L2_PROOF_RPC_URL'];
193
566
  if (env['JINN_EARNING_DIR'])
194
567
  merged.earningDir = env['JINN_EARNING_DIR'];
195
568
  if (env['JINN_DB_PATH'])
@@ -203,6 +576,8 @@ export function loadConfig(configPath) {
203
576
  merged.balanceTopupIntervalMs = Number.parseInt(env['JINN_BALANCE_TOPUP_INTERVAL_MS'], 10);
204
577
  if (env['JINN_API_PORT'])
205
578
  merged.apiPort = parseInt(env['JINN_API_PORT'], 10);
579
+ if (env['JINN_API_BIND_HOST'])
580
+ merged.apiBindHost = env['JINN_API_BIND_HOST'];
206
581
  if (env['JINN_CLAUDE_PATH'])
207
582
  merged.claudePath = env['JINN_CLAUDE_PATH'];
208
583
  if (env['JINN_CLAUDE_MODEL'])
@@ -228,6 +603,27 @@ export function loadConfig(configPath) {
228
603
  if (env['JINN_TESTNET_CLAIM_REGISTRY_DEPLOYMENT']) {
229
604
  merged.testnetClaimRegistryDeploymentPath = env['JINN_TESTNET_CLAIM_REGISTRY_DEPLOYMENT'];
230
605
  }
606
+ if (env['JINN_MVI_L1_DEPLOYMENT'])
607
+ merged.jinnMviL1DeploymentPath = env['JINN_MVI_L1_DEPLOYMENT'];
608
+ if (env['JINN_MVI_L2_DEPLOYMENT'])
609
+ merged.jinnMviL2DeploymentPath = env['JINN_MVI_L2_DEPLOYMENT'];
610
+ if (env['JINN_ETHEREUM_RPC_URL'])
611
+ merged.ethereumRpcUrl = env['JINN_ETHEREUM_RPC_URL'];
612
+ if (env['JINN_ETHEREUM_ARCHIVE_RPC_URL'])
613
+ merged.ethereumArchiveRpcUrl = env['JINN_ETHEREUM_ARCHIVE_RPC_URL'];
614
+ if (env['JINN_L1_NETWORK'])
615
+ merged.jinnL1Network = env['JINN_L1_NETWORK'];
616
+ if (env['JINN_DISTRIBUTOR_ADDRESS'])
617
+ merged.jinnDistributorAddress = env['JINN_DISTRIBUTOR_ADDRESS'];
618
+ if (env['JINN_CLAIM_EMITTER_ADDRESS'])
619
+ merged.jinnClaimEmitterAddress = env['JINN_CLAIM_EMITTER_ADDRESS'];
620
+ if (env['JINN_MESSENGER_ADDRESS'])
621
+ merged.jinnMessengerAddress = env['JINN_MESSENGER_ADDRESS'];
622
+ if (env['JINN_MESSENGER_MODE'])
623
+ merged.jinnMessengerMode = env['JINN_MESSENGER_MODE'];
624
+ if (env['JINN_CLAIM_LOOP_INTERVAL_MS'] !== undefined) {
625
+ merged.jinnClaimLoopIntervalMs = parseInt(env['JINN_CLAIM_LOOP_INTERVAL_MS'], 10);
626
+ }
231
627
  if (env['JINN_STAKING_MODE'])
232
628
  merged.stakingMode = env['JINN_STAKING_MODE'];
233
629
  if (env['JINN_TARGET_SERVICES'])
@@ -236,9 +632,53 @@ export function loadConfig(configPath) {
236
632
  const v = env['JINN_DEBUG'].trim().toLowerCase();
237
633
  merged.debug = v === '1' || v === 'true' || v === 'yes';
238
634
  }
635
+ if (env['JINN_RUN_LEGACY_MIGRATIONS'] !== undefined) {
636
+ const v = env['JINN_RUN_LEGACY_MIGRATIONS'].trim().toLowerCase();
637
+ merged.runLegacyMigrations =
638
+ !(v === '0' || v === 'false' || v === 'no' || v === '');
639
+ }
239
640
  if (env['JINN_MASTER_ETH_DAILY_WEI']) {
240
641
  merged.masterEthDailyEstimateWei = env['JINN_MASTER_ETH_DAILY_WEI'].trim();
241
642
  }
643
+ if (env['JINN_MIN_EOA_GAS_WEI']) {
644
+ merged.minEoaGasWei = env['JINN_MIN_EOA_GAS_WEI'].trim();
645
+ }
646
+ if (env['JINN_MIN_SAFE_ETH_WEI']) {
647
+ merged.minSafeEthWei = env['JINN_MIN_SAFE_ETH_WEI'].trim();
648
+ }
649
+ if (env['JINN_PREDICTION_V0_WINDOW_MS']) {
650
+ const parsed = Number(env['JINN_PREDICTION_V0_WINDOW_MS'].trim());
651
+ if (Number.isFinite(parsed) && parsed > 0)
652
+ merged.predictionV0WindowMs = parsed;
653
+ }
654
+ if (env['JINN_PREDICTION_V0_RESOLVE_GAP_MS']) {
655
+ const parsed = Number(env['JINN_PREDICTION_V0_RESOLVE_GAP_MS'].trim());
656
+ if (Number.isFinite(parsed) && parsed > 0)
657
+ merged.predictionV0ResolveGapMs = parsed;
658
+ }
659
+ if (env['JINN_IDENTITY_REGISTRY_ADDRESS'])
660
+ merged.identityRegistryAddress = env['JINN_IDENTITY_REGISTRY_ADDRESS'];
661
+ if (env['JINN_VALIDATION_REGISTRY_ADDRESS'])
662
+ merged.validationRegistryAddress = env['JINN_VALIDATION_REGISTRY_ADDRESS'];
663
+ if (env['JINN_REPUTATION_ENABLED'] !== undefined) {
664
+ const rv = env['JINN_REPUTATION_ENABLED'].trim().toLowerCase();
665
+ merged.reputationEnabled = rv === '1' || rv === 'true' || rv === 'yes';
666
+ }
667
+ if (env['JINN_OPERATOR_PUBLIC_ENDPOINT'] ||
668
+ env['JINN_OPERATOR_DEFAULT_PRICE_USDC']) {
669
+ const prevOp = typeof merged['operator'] === 'object' && merged['operator'] !== null
670
+ ? merged['operator']
671
+ : {};
672
+ merged['operator'] = {
673
+ ...prevOp,
674
+ ...(env['JINN_OPERATOR_PUBLIC_ENDPOINT']
675
+ ? { publicEndpoint: env['JINN_OPERATOR_PUBLIC_ENDPOINT'] }
676
+ : {}),
677
+ ...(env['JINN_OPERATOR_DEFAULT_PRICE_USDC']
678
+ ? { defaultPriceUsdc: env['JINN_OPERATOR_DEFAULT_PRICE_USDC'] }
679
+ : {}),
680
+ };
681
+ }
242
682
  if (env['JINN_ENGINE_WORKING_DIR_ROOT'] || env['JINN_ENGINE_IMPL_STATE_DIR_ROOT']) {
243
683
  const prev = typeof merged['engine'] === 'object' && merged['engine'] !== null
244
684
  ? merged['engine']
@@ -266,18 +706,18 @@ export function loadConfig(configPath) {
266
706
  if (env['JINN_ARCHIVE_RPC_URL']) {
267
707
  merged.archiveRpcUrl = env['JINN_ARCHIVE_RPC_URL'];
268
708
  }
269
- // desiredStates from env points to a JSON file
270
- if (env['JINN_DESIRED_STATES']) {
271
- const statesPath = env['JINN_DESIRED_STATES'];
272
- if (!existsSync(statesPath)) {
273
- throw new ConfigLoadError('desired_states_file_not_found', `JINN_DESIRED_STATES file not found: ${statesPath}`, { path: statesPath });
709
+ // tasks from env points to a JSON file
710
+ if (env['JINN_TASKS']) {
711
+ const tasksPath = env['JINN_TASKS'];
712
+ if (!existsSync(tasksPath)) {
713
+ throw new ConfigLoadError('tasks_file_not_found', `JINN_TASKS file not found: ${tasksPath}`, { path: tasksPath });
274
714
  }
275
715
  try {
276
- merged.desiredStates = JSON.parse(readFileSync(statesPath, 'utf-8'));
716
+ merged.tasks = JSON.parse(readFileSync(tasksPath, 'utf-8'));
277
717
  }
278
718
  catch (error) {
279
- throw new ConfigLoadError('desired_states_json_invalid', `Invalid JSON in JINN_DESIRED_STATES file: ${statesPath}`, {
280
- path: statesPath,
719
+ throw new ConfigLoadError('tasks_json_invalid', `Invalid JSON in JINN_TASKS file: ${tasksPath}`, {
720
+ path: tasksPath,
281
721
  cause: error instanceof Error ? error.message : String(error),
282
722
  });
283
723
  }
@@ -300,8 +740,8 @@ export function loadConfig(configPath) {
300
740
  return {
301
741
  ...parsed,
302
742
  rpcUrl: parsed.rpcUrl ?? defaultRpcUrl,
303
- // parseDesiredState assigns a UUID to any entry missing an id
304
- desiredStates: parsed.desiredStates.map(parseDesiredState),
743
+ // parseTask assigns a UUID to any entry missing an id
744
+ tasks: parsed.tasks.map(parseTask),
305
745
  engine: {
306
746
  workingDirRoot: parsed.engine?.workingDirRoot ?? DEFAULT_ENGINE.workingDirRoot,
307
747
  implStateDirRoot: parsed.engine?.implStateDirRoot ?? DEFAULT_ENGINE.implStateDirRoot,
@@ -315,4 +755,98 @@ export function getConfigPathFromArgs(argv = process.argv) {
315
755
  const idx = argv.indexOf('--config');
316
756
  return idx >= 0 && argv[idx + 1] ? argv[idx + 1] : undefined;
317
757
  }
758
+ // ── Config provenance ────────────────────────────────────────────────────────
759
+ /**
760
+ * Env var names that map to JinnConfig fields (excluding password and
761
+ * security-sensitive vars that must never be surfaced even redacted).
762
+ *
763
+ * The list mirrors the `merged.*` assignments in `loadConfig` above.
764
+ * JINN_PASSWORD is intentionally absent — never list it.
765
+ */
766
+ const TRACKED_ENV_VARS = [
767
+ 'JINN_NETWORK',
768
+ 'JINN_EARNING_DIR',
769
+ 'JINN_DB_PATH',
770
+ 'JINN_POLL_INTERVAL_MS',
771
+ 'JINN_REWARD_CLAIM_INTERVAL_MS',
772
+ 'JINN_BALANCE_TOPUP_INTERVAL_MS',
773
+ 'JINN_API_PORT',
774
+ 'JINN_API_BIND_HOST',
775
+ 'JINN_CLAUDE_PATH',
776
+ 'JINN_CLAUDE_MODEL',
777
+ 'JINN_RUNTIME_MODE',
778
+ 'JINN_PEERS',
779
+ 'JINN_SUBGRAPH_URL',
780
+ 'JINN_NODE_ENDPOINT',
781
+ 'JINN_IPFS_REGISTRY_URL',
782
+ 'JINN_IPFS_GATEWAY_URL',
783
+ 'JINN_TESTNET_L2_DEPLOYMENT',
784
+ 'JINN_TESTNET_TOKEN_DEPLOYMENT',
785
+ 'JINN_TESTNET_MECH_DEPLOYMENT',
786
+ 'JINN_TESTNET_CLAIM_REGISTRY_DEPLOYMENT',
787
+ 'JINN_L2_PROOF_RPC_URL',
788
+ 'JINN_MVI_L1_DEPLOYMENT',
789
+ 'JINN_MVI_L2_DEPLOYMENT',
790
+ 'JINN_ETHEREUM_RPC_URL',
791
+ 'JINN_ETHEREUM_ARCHIVE_RPC_URL',
792
+ 'JINN_L1_NETWORK',
793
+ 'JINN_DISTRIBUTOR_ADDRESS',
794
+ 'JINN_CLAIM_EMITTER_ADDRESS',
795
+ 'JINN_MESSENGER_ADDRESS',
796
+ 'JINN_MESSENGER_MODE',
797
+ 'JINN_CLAIM_LOOP_INTERVAL_MS',
798
+ 'JINN_STAKING_MODE',
799
+ 'JINN_TARGET_SERVICES',
800
+ 'JINN_DEBUG',
801
+ 'JINN_RUN_LEGACY_MIGRATIONS',
802
+ 'JINN_MASTER_ETH_DAILY_WEI',
803
+ 'JINN_MIN_EOA_GAS_WEI',
804
+ 'JINN_MIN_SAFE_ETH_WEI',
805
+ 'JINN_PREDICTION_V0_WINDOW_MS',
806
+ 'JINN_PREDICTION_V0_RESOLVE_GAP_MS',
807
+ 'JINN_IDENTITY_REGISTRY_ADDRESS',
808
+ 'JINN_VALIDATION_REGISTRY_ADDRESS',
809
+ 'JINN_REPUTATION_ENABLED',
810
+ 'JINN_RPC_URL',
811
+ 'BASE_RPC_URL',
812
+ 'BASE_SEPOLIA_RPC_URL',
813
+ 'JINN_ARCHIVE_RPC_URL',
814
+ 'JINN_TASKS',
815
+ 'JINN_ENGINE_WORKING_DIR_ROOT',
816
+ 'JINN_ENGINE_IMPL_STATE_DIR_ROOT',
817
+ 'JINN_OPERATOR_PUBLIC_ENDPOINT',
818
+ 'JINN_OPERATOR_DEFAULT_PRICE_USDC',
819
+ 'JINN_BUILD_COMMIT',
820
+ ];
821
+ /**
822
+ * Build a structured provenance block describing how the config was resolved.
823
+ *
824
+ * Pass the same `configPath` you passed to `loadConfig`, and the resulting
825
+ * `JinnConfig`. The helper inspects `process.env` to discover which tracked
826
+ * env vars were set; it never reads their values.
827
+ *
828
+ * @param configPath — the explicit config file path passed to `loadConfig`,
829
+ * or undefined if the default path was used.
830
+ * @param config — the resolved `JinnConfig` returned by `loadConfig`.
831
+ * @param env — defaults to `process.env`; inject in tests.
832
+ */
833
+ export function buildConfigProvenance(configPath, config, env = process.env) {
834
+ const filePath = configPath ?? DEFAULT_CONFIG_PATH;
835
+ const configLoaded = existsSync(filePath);
836
+ const envOverrides = {};
837
+ for (const name of TRACKED_ENV_VARS) {
838
+ if (env[name] !== undefined) {
839
+ envOverrides[name] = 'set';
840
+ }
841
+ }
842
+ return {
843
+ configPath: configLoaded ? filePath : null,
844
+ configLoaded,
845
+ network: config.network,
846
+ earningDir: config.earningDir,
847
+ dbPath: config.dbPath,
848
+ runtimeMode: config.runtimeMode ?? null,
849
+ envOverrides,
850
+ };
851
+ }
318
852
  //# sourceMappingURL=config.js.map