@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
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Capability handles passed to a {@link Harness} via
3
+ * {@link HarnessContext}. The daemon mints these per-call and
4
+ * enforces the impl's manifest allow-list before delegating to the
5
+ * underlying signer / RPC client.
6
+ *
7
+ * Spec: `spec/2026-05-executor-trust-boundary.md` §3.
8
+ */
9
+ import type { Address, Hex } from 'viem';
10
+ /**
11
+ * EIP-712 typed-data signing payload. Mirrors viem's signTypedData
12
+ * input but with `account` removed — the daemon binds the signer to
13
+ * its master EOA before delegation.
14
+ */
15
+ export interface SignTypedDataArgs {
16
+ domain: {
17
+ name?: string;
18
+ version?: string;
19
+ chainId?: number;
20
+ verifyingContract?: Address;
21
+ };
22
+ types: Record<string, Array<{
23
+ name: string;
24
+ type: string;
25
+ }>>;
26
+ primaryType: string;
27
+ message: Record<string, unknown>;
28
+ }
29
+ /**
30
+ * Allow-listed transaction shape. Each call's `(chainId, to, selector)`
31
+ * triple must match the impl's manifest capability allow-list; the
32
+ * daemon refuses calls outside the list.
33
+ */
34
+ export interface SendAllowedCallArgs {
35
+ to: Address;
36
+ data: Hex;
37
+ value?: bigint;
38
+ }
39
+ /**
40
+ * Scoped signer — an impl never sees a raw private key. The daemon
41
+ * issues this handle per `run()` call, validates each request against
42
+ * the manifest allow-list, and discards it on return.
43
+ */
44
+ export interface ScopedSigner {
45
+ /** EOA address the daemon will sign as. Read-only. */
46
+ readonly address: Address;
47
+ /** Sign EIP-712 typed data for an allow-listed domain. */
48
+ signTypedData(args: SignTypedDataArgs): Promise<Hex>;
49
+ /** Send a tx whose (chainId, to, selector) is on the impl allow-list. */
50
+ sendAllowedCall(call: SendAllowedCallArgs): Promise<Hex>;
51
+ }
52
+ /**
53
+ * Scoped RPC — read-only subset of viem's PublicClient interface.
54
+ * The daemon enforces method allow-list, rate limiting, and chain
55
+ * filtering per `spec/2026-05-executor-trust-boundary.md` §3.3.
56
+ */
57
+ export interface ScopedRpc {
58
+ readContract(args: {
59
+ address: Address;
60
+ abi: readonly unknown[];
61
+ functionName: string;
62
+ args?: readonly unknown[];
63
+ }): Promise<unknown>;
64
+ getBlockNumber(): Promise<bigint>;
65
+ getBalance(args: {
66
+ address: Address;
67
+ }): Promise<bigint>;
68
+ getCode(args: {
69
+ address: Address;
70
+ }): Promise<Hex | undefined>;
71
+ getChainId(): Promise<number>;
72
+ }
73
+ /**
74
+ * Per-impl secret bag. Populated by the impl's own `onEnable` flow
75
+ * and persisted under `implStateDir/<impl>/secrets/`. Read-only.
76
+ */
77
+ export type ScopedSecrets = Readonly<Record<string, string>>;
78
+ export { createScopedSigner } from './scoped-signer.js';
79
+ export type { CapabilityAllowEntry, CreateScopedSignerArgs, TypedDataAllowEntry, } from './scoped-signer.js';
80
+ export { createScopedRpc } from './scoped-rpc.js';
81
+ export type { CreateScopedRpcArgs } from './scoped-rpc.js';
82
+ export { freezeSecrets } from './scoped-secrets.js';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Capability handles passed to a {@link Harness} via
3
+ * {@link HarnessContext}. The daemon mints these per-call and
4
+ * enforces the impl's manifest allow-list before delegating to the
5
+ * underlying signer / RPC client.
6
+ *
7
+ * Spec: `spec/2026-05-executor-trust-boundary.md` §3.
8
+ */
9
+ export { createScopedSigner } from './scoped-signer.js';
10
+ export { createScopedRpc } from './scoped-rpc.js';
11
+ export { freezeSecrets } from './scoped-secrets.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/harnesses/capability/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Scoped RPC constructor — wraps an upstream public RPC client and
3
+ * enforces a chain-id allow-list before delegating.
4
+ */
5
+ import type { ScopedRpc } from './index.js';
6
+ export interface CreateScopedRpcArgs {
7
+ /** A viem PublicClient (or compatible read-only RPC) the daemon owns. */
8
+ upstream: ScopedRpc;
9
+ /** Chain ids this impl is allowed to read. Empty array = none. */
10
+ chainIdAllowList: readonly number[];
11
+ }
12
+ export declare function createScopedRpc({ upstream, chainIdAllowList, }: CreateScopedRpcArgs): ScopedRpc;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Scoped RPC constructor — wraps an upstream public RPC client and
3
+ * enforces a chain-id allow-list before delegating.
4
+ */
5
+ export function createScopedRpc({ upstream, chainIdAllowList, }) {
6
+ async function ensureChainAllowed() {
7
+ const chainId = await upstream.getChainId();
8
+ if (!chainIdAllowList.includes(chainId)) {
9
+ throw new Error(`chain ${chainId} not in allow-list ${JSON.stringify(chainIdAllowList)}`);
10
+ }
11
+ }
12
+ return {
13
+ async readContract(args) {
14
+ await ensureChainAllowed();
15
+ return upstream.readContract(args);
16
+ },
17
+ async getBlockNumber() {
18
+ await ensureChainAllowed();
19
+ return upstream.getBlockNumber();
20
+ },
21
+ async getBalance(args) {
22
+ await ensureChainAllowed();
23
+ return upstream.getBalance(args);
24
+ },
25
+ async getCode(args) {
26
+ await ensureChainAllowed();
27
+ return upstream.getCode(args);
28
+ },
29
+ async getChainId() {
30
+ return upstream.getChainId();
31
+ },
32
+ };
33
+ }
34
+ //# sourceMappingURL=scoped-rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-rpc.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-rpc.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAWH,MAAM,UAAU,eAAe,CAAC,EAC9B,QAAQ,EACR,gBAAgB,GACI;IACpB,KAAK,UAAU,kBAAkB;QAC/B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC5C,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,SAAS,OAAO,sBAAsB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,YAAY,CAAC,IAAI;YACrB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACrC,CAAC;QACD,KAAK,CAAC,cAAc;YAClB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,cAAc,EAAE,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,UAAU,CAAC,IAAI;YACnB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,IAAI;YAChB,MAAM,kBAAkB,EAAE,CAAC;YAC3B,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;QACD,KAAK,CAAC,UAAU;YACd,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;QAC/B,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Scoped secrets helper — produces a read-only view over a secrets
3
+ * bag. The daemon stores the underlying map and re-issues a fresh
4
+ * frozen view per `run()` call so revoked secrets stop reaching impls
5
+ * promptly.
6
+ */
7
+ import type { ScopedSecrets } from './index.js';
8
+ export declare function freezeSecrets(source: Record<string, string>): ScopedSecrets;
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Scoped secrets helper — produces a read-only view over a secrets
3
+ * bag. The daemon stores the underlying map and re-issues a fresh
4
+ * frozen view per `run()` call so revoked secrets stop reaching impls
5
+ * promptly.
6
+ */
7
+ export function freezeSecrets(source) {
8
+ return Object.freeze({ ...source });
9
+ }
10
+ //# sourceMappingURL=scoped-secrets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-secrets.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-secrets.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,UAAU,aAAa,CAAC,MAA8B;IAC1D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Scoped signer constructor — Phase 1 implementation. The (chainId,
3
+ * to, selector) allow-list is enforced before `sendAllowedCall`
4
+ * delegates, and the EIP-712 domain allow-list is enforced before
5
+ * `signTypedData` delegates. Actual transaction signing is wired in a
6
+ * follow-up plan (the daemon plan that owns the wallet); the typed-data
7
+ * delegation hits the master account immediately.
8
+ *
9
+ * Spec: `spec/2026-05-executor-trust-boundary.md` §3.
10
+ */
11
+ import type { Account, Address, Hex } from 'viem';
12
+ import type { ScopedSigner } from './index.js';
13
+ export interface CapabilityAllowEntry {
14
+ chainId: number;
15
+ to: Address;
16
+ /** Lower-case 4-byte selector with `0x` prefix (e.g. `0xdeadbeef`). */
17
+ selector: Hex;
18
+ }
19
+ /**
20
+ * EIP-712 typed-data domain allow-list entry. See
21
+ * `client/src/harnesses/manifest/types.ts:TypedDataAllowEntry` and
22
+ * the manifest-schema field `capabilities.signer.typedDataDomains`.
23
+ *
24
+ * - `chainId` MUST match exactly.
25
+ * - `verifyingContract` / `name` / `version` match only when set on
26
+ * the entry; an unset field on the entry means "any value".
27
+ */
28
+ export interface TypedDataAllowEntry {
29
+ chainId: number;
30
+ name?: string;
31
+ version?: string;
32
+ verifyingContract?: Address;
33
+ }
34
+ export interface CreateScopedSignerArgs {
35
+ account: Account;
36
+ allowList: readonly CapabilityAllowEntry[];
37
+ /**
38
+ * Domain allow-list for `signTypedData`. The daemon refuses any
39
+ * `signTypedData` call whose domain does not match an entry here.
40
+ * Default-deny: an empty array means EVERY `signTypedData` call
41
+ * throws (matches the "no typedDataDomains in the manifest" case).
42
+ */
43
+ typedDataAllowList: readonly TypedDataAllowEntry[];
44
+ chainId: number;
45
+ }
46
+ export declare function createScopedSigner({ account, allowList, typedDataAllowList, chainId, }: CreateScopedSignerArgs): ScopedSigner;
@@ -0,0 +1,73 @@
1
+ /**
2
+ * Scoped signer constructor — Phase 1 implementation. The (chainId,
3
+ * to, selector) allow-list is enforced before `sendAllowedCall`
4
+ * delegates, and the EIP-712 domain allow-list is enforced before
5
+ * `signTypedData` delegates. Actual transaction signing is wired in a
6
+ * follow-up plan (the daemon plan that owns the wallet); the typed-data
7
+ * delegation hits the master account immediately.
8
+ *
9
+ * Spec: `spec/2026-05-executor-trust-boundary.md` §3.
10
+ */
11
+ function eqLowerOrUndef(a, b) {
12
+ if (a === undefined || b === undefined)
13
+ return false;
14
+ return a.toLowerCase() === b.toLowerCase();
15
+ }
16
+ function matchesEntry(entry, domain) {
17
+ if (domain.chainId !== entry.chainId)
18
+ return false;
19
+ if (entry.verifyingContract !== undefined) {
20
+ if (!domain.verifyingContract)
21
+ return false;
22
+ if (!eqLowerOrUndef(entry.verifyingContract, domain.verifyingContract)) {
23
+ return false;
24
+ }
25
+ }
26
+ if (entry.name !== undefined) {
27
+ if (domain.name !== entry.name)
28
+ return false;
29
+ }
30
+ if (entry.version !== undefined) {
31
+ if (domain.version !== entry.version)
32
+ return false;
33
+ }
34
+ return true;
35
+ }
36
+ export function createScopedSigner({ account, allowList, typedDataAllowList, chainId, }) {
37
+ return {
38
+ get address() {
39
+ return account.address;
40
+ },
41
+ async signTypedData(args) {
42
+ // Default-deny: empty allow-list refuses everything. Operators
43
+ // who need typed-data signing MUST declare a
44
+ // `capabilities.signer.typedDataDomains` entry on the manifest.
45
+ // Finding 3.
46
+ const allowed = typedDataAllowList.some((entry) => matchesEntry(entry, args.domain));
47
+ if (!allowed) {
48
+ throw new Error(`signTypedData domain not in allow-list (chainId=${args.domain.chainId ?? 'unspecified'}, ` +
49
+ `verifyingContract=${args.domain.verifyingContract ?? 'unspecified'})`);
50
+ }
51
+ if (typeof account.signTypedData !== 'function') {
52
+ throw new Error('master account does not support signTypedData');
53
+ }
54
+ return account.signTypedData(args);
55
+ },
56
+ async sendAllowedCall(call) {
57
+ const selector = call.data.slice(0, 10).toLowerCase();
58
+ const entry = allowList.find((e) => e.chainId === chainId &&
59
+ e.to.toLowerCase() === call.to.toLowerCase() &&
60
+ e.selector.toLowerCase() === selector);
61
+ if (!entry) {
62
+ const haveContract = allowList.some((e) => e.chainId === chainId && e.to.toLowerCase() === call.to.toLowerCase());
63
+ if (!haveContract) {
64
+ throw new Error(`to ${call.to} not in allow-list for chain ${chainId}`);
65
+ }
66
+ throw new Error(`selector ${selector} not in allow-list for ${call.to} on chain ${chainId}`);
67
+ }
68
+ // Phase 1: shape only — actual signing is wired in the daemon plan.
69
+ throw new Error('sendAllowedCall is allow-list-validated but signing is wired in the daemon plan');
70
+ },
71
+ };
72
+ }
73
+ //# sourceMappingURL=scoped-signer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoped-signer.js","sourceRoot":"","sources":["../../../src/harnesses/capability/scoped-signer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function canonicalJson(value: unknown): string;
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Canonical JSON serialisation — RFC 8785 JCS.
3
+ *
4
+ * Uses the `canonicalize` npm package (≈30 LOC, zero deps) so third-party
5
+ * verifiers can reproduce our signing input with any standard JCS library.
6
+ *
7
+ * Rules per RFC 8785:
8
+ * - Object keys sorted lexicographically by UTF-16 code-unit order.
9
+ * - No insignificant whitespace.
10
+ * - I-JSON number formatting per ECMAScript `Number.prototype.toString(10)`
11
+ * (integer-preferred; scientific notation when |x| ≥ 1e21 or |x| < 5e-7;
12
+ * -0 serialises as 0).
13
+ * - String escape rules per JSON spec (control chars as \\uXXXX; only ", \
14
+ * and control chars must be escaped).
15
+ * - `undefined` values in objects are dropped (matches JSON.stringify).
16
+ * - `NaN` / `Infinity` serialise to `null` (matches JSON.stringify).
17
+ *
18
+ * BigInt is **not** supported — JCS is a canonicalization of standard JSON,
19
+ * which has no BigInt type. Callers must convert BigInt to string or number
20
+ * before calling. Passing BigInt throws.
21
+ *
22
+ * Used for manifest signing: produce a deterministic byte string that two
23
+ * independent parties can reproduce from the same object graph.
24
+ */
25
+ import { createRequire } from 'node:module';
26
+ const require = createRequire(import.meta.url);
27
+ const canonicalize = require('canonicalize');
28
+ /**
29
+ * Recursively replace NaN / ±Infinity with null so that canonicalize does not
30
+ * throw — matching the JSON.stringify behaviour that the rest of the codebase
31
+ * expects. BigInt is intentionally left unhandled so that canonicalize throws
32
+ * a clear error when a caller passes one.
33
+ */
34
+ function coerceNonFinite(value) {
35
+ if (typeof value === 'number' && !isFinite(value))
36
+ return null;
37
+ if (Array.isArray(value))
38
+ return value.map(coerceNonFinite);
39
+ if (value !== null && typeof value === 'object') {
40
+ // Preserve toJSON() — canonicalize would otherwise call it itself;
41
+ // by pre-processing we must not strip it. Invoke it here and recurse
42
+ // on its return value so NaN/Infinity inside toJSON results are still
43
+ // coerced.
44
+ const toJson = value.toJSON;
45
+ if (typeof toJson === 'function') {
46
+ return coerceNonFinite(toJson.call(value));
47
+ }
48
+ const out = {};
49
+ for (const [k, v] of Object.entries(value))
50
+ out[k] = coerceNonFinite(v);
51
+ return out;
52
+ }
53
+ return value;
54
+ }
55
+ export function canonicalJson(value) {
56
+ const coerced = coerceNonFinite(value);
57
+ const result = canonicalize(coerced);
58
+ if (result === undefined) {
59
+ // canonicalize returns undefined for top-level undefined input (matches
60
+ // JSON.stringify). Match Jinn's previous behaviour: emit "null" so the
61
+ // return type is always a string.
62
+ return 'null';
63
+ }
64
+ return result;
65
+ }
66
+ //# sourceMappingURL=canonical-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"canonical-json.js","sourceRoot":"","sources":["../../../src/harnesses/engine/canonical-json.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,YAAY,GAAG,OAAO,CAAC,cAAc,CAA2C,CAAC;AAEvF;;;;;GAKG;AACH,SAAS,eAAe,CAAC,KAAc;IACrC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC/D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,WAAW;QACX,MAAM,MAAM,GAAI,KAAoC,CAAC,MAAM,CAAC;QAC5D,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,GAAG,GAA4B,EAAE,CAAC;QACxC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACxE,OAAO,GAAG,CAAC;IACb,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,wEAAwE;QACxE,uEAAuE;QACvE,kCAAkC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Two-layer claim orchestration for the restorer engine.
2
+ * Two-layer claim orchestration for the harness engine.
3
3
  *
4
4
  * §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
5
5
  *
@@ -29,8 +29,8 @@ export interface MarketplaceClaimer {
29
29
  claimRequest(requestId: string): Promise<void>;
30
30
  }
31
31
  /**
32
- * Parameters describing a single intent's timing window.
33
- * Extracted from PersistedIntent for testability (no DB dependency).
32
+ * Parameters describing a single task's timing window.
33
+ * Extracted from PersistedTaskRun for testability (no DB dependency).
34
34
  */
35
35
  export interface ClaimWindow {
36
36
  requestId: string;
@@ -43,15 +43,15 @@ export interface ClaimResult {
43
43
  registryClaimWasFresh: boolean;
44
44
  }
45
45
  /**
46
- * Execute the two-layer claim for a single intent.
46
+ * Execute the two-layer claim for a single task.
47
47
  *
48
48
  * // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
49
49
  * // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
50
- * // is preferred because: (a) ClaimRegistry revert is fast and signals "another restorer
50
+ * // is preferred because: (a) ClaimRegistry revert is fast and signals "another harness
51
51
  * // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
52
52
  * // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
53
53
  *
54
- * @param claimWindow - Timing data for the intent (requestId, windowStartTs).
54
+ * @param claimWindow - Timing data for the task (requestId, windowStartTs).
55
55
  * @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
56
56
  * @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
57
57
  * @returns ClaimResult on success.
@@ -59,7 +59,7 @@ export interface ClaimResult {
59
59
  */
60
60
  export declare function executeTwoLayerClaim(claimWindow: ClaimWindow, registryClient: ClaimRegistryClient, marketplaceClaimer: MarketplaceClaimer): Promise<ClaimResult>;
61
61
  /**
62
- * Release the ClaimRegistry claim for an intent that was CLAIMED but whose
62
+ * Release the ClaimRegistry claim for an task that was CLAIMED but whose
63
63
  * work window has not yet started (windowStartTs not reached).
64
64
  *
65
65
  * Used during graceful engine shutdown. No-op if we don't hold the claim.
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Two-layer claim orchestration for the restorer engine.
2
+ * Two-layer claim orchestration for the harness engine.
3
3
  *
4
4
  * §6.1, §9.1, §9.2 of spec/2026-04-17-portfolio-v0-design.md
5
5
  *
@@ -22,15 +22,15 @@
22
22
  */
23
23
  // ── Two-layer claim ───────────────────────────────────────────────────────────
24
24
  /**
25
- * Execute the two-layer claim for a single intent.
25
+ * Execute the two-layer claim for a single task.
26
26
  *
27
27
  * // Claim ordering: ClaimRegistry FIRST (cheap coordination lock), marketplace SECOND.
28
28
  * // Spec §6.1 lists them in opposite order but doesn't enforce sequencing — registry-first
29
- * // is preferred because: (a) ClaimRegistry revert is fast and signals "another restorer
29
+ * // is preferred because: (a) ClaimRegistry revert is fast and signals "another harness
30
30
  * // is on it" cleanly; (b) marketplace claim is more expensive (Safe tx + actual gas);
31
31
  * // (c) we release ClaimRegistry on marketplace failure to avoid leaking a stale claim.
32
32
  *
33
- * @param claimWindow - Timing data for the intent (requestId, windowStartTs).
33
+ * @param claimWindow - Timing data for the task (requestId, windowStartTs).
34
34
  * @param registryClient - ClaimRegistryClient for the deployed ClaimRegistry contract.
35
35
  * @param marketplaceClaimer - Adapter whose claimRequest() performs the marketplace claim.
36
36
  * @returns ClaimResult on success.
@@ -45,7 +45,14 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
45
45
  if (!alreadyClaimed) {
46
46
  const result = await registryClient.claimJob(requestIdHex);
47
47
  if (!result.claimed) {
48
- throw new Error(`[claim-orchestration] ClaimRegistry claim failed for ${claimWindow.requestId} — another operator may hold the claim`);
48
+ const detail = result.reason === 'lost-race' && result.competitor
49
+ ? `lost claim race to ${result.competitor}`
50
+ : result.reason === 'lost-race'
51
+ ? 'lost claim race to another operator'
52
+ : result.reason === 'ineligible'
53
+ ? 'eligibility checker rejected'
54
+ : `tx reverted${result.reason ? ` (${result.reason})` : ''}`;
55
+ throw new Error(`[claim-orchestration] ClaimRegistry claim failed for ${claimWindow.requestId} — ${detail}`);
49
56
  }
50
57
  registryClaimWasFresh = true;
51
58
  }
@@ -61,7 +68,7 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
61
68
  // (only if we placed it fresh; pre-existing claims are not ours to release here)
62
69
  // TODO(v0 trade-off): on the resume path (weAlreadyClaimed = true, registryClaimWasFresh = false)
63
70
  // we do NOT release the ClaimRegistry claim here. Releasing on a transient marketplace failure
64
- // would forfeit our coordination lock and let a competing restorer take it. The downside is that
71
+ // would forfeit our coordination lock and let a competing harness take it. The downside is that
65
72
  // on a *persistent* failure the claim sits locked until TTL expiry (owner-configured per-deployment).
66
73
  // Distinguishing transient vs. permanent failures is non-trivial; for v0 we accept the TTL wait.
67
74
  // Future: inspect the marketplace error type and release only on permanent failures.
@@ -81,7 +88,7 @@ export async function executeTwoLayerClaim(claimWindow, registryClient, marketpl
81
88
  }
82
89
  // ── Graceful release ──────────────────────────────────────────────────────────
83
90
  /**
84
- * Release the ClaimRegistry claim for an intent that was CLAIMED but whose
91
+ * Release the ClaimRegistry claim for an task that was CLAIMED but whose
85
92
  * work window has not yet started (windowStartTs not reached).
86
93
  *
87
94
  * Used during graceful engine shutdown. No-op if we don't hold the claim.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claim.js","sourceRoot":"","sources":["../../../src/harnesses/engine/claim.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Restorer engine — mech delivery + JinnRouter.claimDelivery.
2
+ * Harness engine — mech delivery + JinnRouter.claimDelivery.
3
3
  *
4
4
  * §6.1 DELIVERING phase.
5
5
  *
@@ -10,6 +10,7 @@
10
10
  * is the keccak256 hash of the signed manifest (from manifest assembly).
11
11
  */
12
12
  import type { Hex, PublicClient, WalletClient, Address } from 'viem';
13
+ import type { EvictionRecoveryConfig } from '../../adapters/mech/types.js';
13
14
  export interface DeliveryDeps {
14
15
  publicClient: PublicClient;
15
16
  walletClient: WalletClient;
@@ -18,6 +19,7 @@ export interface DeliveryDeps {
18
19
  routerAddress: Address;
19
20
  /** v1 or v2 claimDelivery encoding — matches chain config */
20
21
  claimDeliveryVariant: 'v1' | 'v2';
22
+ evictionRecovery?: EvictionRecoveryConfig;
21
23
  }
22
24
  /**
23
25
  * Callback invoked after deliverToMarketplace lands on-chain but BEFORE
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Restorer engine — mech delivery + JinnRouter.claimDelivery.
2
+ * Harness engine — mech delivery + JinnRouter.claimDelivery.
3
3
  *
4
4
  * §6.1 DELIVERING phase.
5
5
  *
@@ -34,16 +34,16 @@ export async function deliverAndClaim(requestId, manifestCid, evidenceHash, deps
34
34
  let deliveryTxHash;
35
35
  if (preExistingDeliveryTxHash) {
36
36
  // Recovery path: deliverToMarketplace already landed on a previous run.
37
- console.log(`[restorer-engine] deliverToMarketplace already done (recovery), tx=${preExistingDeliveryTxHash}`);
37
+ console.log(`[harness-engine] deliverToMarketplace already done (recovery), tx=${preExistingDeliveryTxHash}`);
38
38
  deliveryTxHash = preExistingDeliveryTxHash;
39
39
  }
40
40
  else {
41
41
  // 1. Convert manifest CID to 32-byte digest for on-chain delivery data
42
42
  const deliveryDigest = cidToDigestHex(manifestCid);
43
43
  // 2. deliverToMarketplace via Safe
44
- console.log(`[restorer-engine] deliverToMarketplace requestId=${requestId}`);
45
- deliveryTxHash = await callDeliverToMarketplace(deps.publicClient, deps.walletClient, deps.safeAddress, deps.mechContractAddress, [requestId], [deliveryDigest]);
46
- console.log(`[restorer-engine] deliverToMarketplace tx=${deliveryTxHash}`);
44
+ console.log(`[harness-engine] deliverToMarketplace requestId=${requestId}`);
45
+ deliveryTxHash = await callDeliverToMarketplace(deps.publicClient, deps.walletClient, deps.safeAddress, deps.mechContractAddress, [requestId], [deliveryDigest], deps.evictionRecovery);
46
+ console.log(`[harness-engine] deliverToMarketplace tx=${deliveryTxHash}`);
47
47
  // Persist the tx hash before proceeding to claimDelivery. If the process
48
48
  // crashes between here and the COMPLETE transition, recovery will read this
49
49
  // hash and skip the deliver step.
@@ -52,12 +52,12 @@ export async function deliverAndClaim(requestId, manifestCid, evidenceHash, deps
52
52
  }
53
53
  }
54
54
  // 3. claimDelivery on JinnRouter
55
- console.log(`[restorer-engine] claimDelivery requestId=${requestId}`);
55
+ console.log(`[harness-engine] claimDelivery requestId=${requestId}`);
56
56
  const claimTxHash = await claimDelivery(deps.publicClient, deps.walletClient, deps.safeAddress, deps.routerAddress, requestId, {
57
57
  variant: deps.claimDeliveryVariant,
58
58
  evidenceHash: deps.claimDeliveryVariant === 'v2' ? evidenceHash : undefined,
59
- });
60
- console.log(`[restorer-engine] claimDelivery tx=${claimTxHash}`);
59
+ }, deps.evictionRecovery);
60
+ console.log(`[harness-engine] claimDelivery tx=${claimTxHash}`);
61
61
  return { deliveryTxHash, claimTxHash };
62
62
  }
63
63
  //# sourceMappingURL=delivery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/harnesses/engine/delivery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,EACL,cAAc,GACf,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,wBAAwB,EACxB,aAAa,GACd,MAAM,kCAAkC,CAAC;AA8B1C;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAc,EACd,WAAmB,EACnB,YAAiB,EACjB,IAAkB,EAClB,yBAA+B,EAC/B,kBAAuC;IAEvC,IAAI,cAAmB,CAAC;IAExB,IAAI,yBAAyB,EAAE,CAAC;QAC9B,wEAAwE;QACxE,OAAO,CAAC,GAAG,CAAC,qEAAqE,yBAAyB,EAAE,CAAC,CAAC;QAC9G,cAAc,GAAG,yBAAyB,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,uEAAuE;QACvE,MAAM,cAAc,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;QAEnD,mCAAmC;QACnC,OAAO,CAAC,GAAG,CAAC,mDAAmD,SAAS,EAAE,CAAC,CAAC;QAC5E,cAAc,GAAG,MAAM,wBAAwB,CAC7C,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,mBAAmB,EACxB,CAAC,SAAS,CAAC,EACX,CAAC,cAAc,CAAC,EAChB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,4CAA4C,cAAc,EAAE,CAAC,CAAC;QAE1E,yEAAyE;QACzE,4EAA4E;QAC5E,kCAAkC;QAClC,IAAI,kBAAkB,EAAE,CAAC;YACvB,MAAM,kBAAkB,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,iCAAiC;IACjC,OAAO,CAAC,GAAG,CAAC,4CAA4C,SAAS,EAAE,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,MAAM,aAAa,CACrC,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,SAAS,EACT;QACE,OAAO,EAAE,IAAI,CAAC,oBAAoB;QAClC,YAAY,EAAE,IAAI,CAAC,oBAAoB,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS;KAC5E,EACD,IAAI,CAAC,gBAAgB,CACtB,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IAEhE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AACzC,CAAC"}