@jinn-network/client 0.1.2 → 0.1.3-canary.262e5cda

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 (812) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/CONTRIBUTING.md +8 -2
  3. package/README.md +38 -14
  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 +2 -2
  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 +2 -2
  14. package/dist/adapters/local/adapter.js +8 -8
  15. package/dist/adapters/local/adapter.js.map +1 -1
  16. package/dist/adapters/mech/adapter.d.ts +3 -4
  17. package/dist/adapters/mech/adapter.js +86 -50
  18. package/dist/adapters/mech/adapter.js.map +1 -1
  19. package/dist/adapters/mech/contracts.d.ts +6 -4
  20. package/dist/adapters/mech/contracts.js +118 -14
  21. package/dist/adapters/mech/contracts.js.map +1 -1
  22. package/dist/adapters/mech/ipfs.d.ts +61 -6
  23. package/dist/adapters/mech/ipfs.js +159 -26
  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 +47 -21
  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 +5 -1
  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/peers.js +20 -5
  59. package/dist/api/peers.js.map +1 -1
  60. package/dist/api/portfolio-v0-build.d.ts +6 -0
  61. package/dist/api/portfolio-v0-build.js +6 -1
  62. package/dist/api/portfolio-v0-build.js.map +1 -1
  63. package/dist/api/rewards-build.js +3 -8
  64. package/dist/api/rewards-build.js.map +1 -1
  65. package/dist/api/server.d.ts +54 -0
  66. package/dist/api/server.js +239 -13
  67. package/dist/api/server.js.map +1 -1
  68. package/dist/api/setup-endpoints.d.ts +34 -0
  69. package/dist/api/setup-endpoints.js +188 -0
  70. package/dist/api/setup-endpoints.js.map +1 -0
  71. package/dist/api/status-build.d.ts +9 -1
  72. package/dist/api/status-build.js +44 -9
  73. package/dist/api/status-build.js.map +1 -1
  74. package/dist/api/status-rollup-build.d.ts +46 -1
  75. package/dist/api/status-rollup-build.js +168 -5
  76. package/dist/api/status-rollup-build.js.map +1 -1
  77. package/dist/api/ui-token.d.ts +5 -0
  78. package/dist/api/ui-token.js +36 -0
  79. package/dist/api/ui-token.js.map +1 -0
  80. package/dist/build-info.d.ts +32 -0
  81. package/dist/build-info.js +69 -0
  82. package/dist/build-info.js.map +1 -0
  83. package/dist/build-info.json +6 -0
  84. package/dist/build-meta.json +1 -1
  85. package/dist/cli/command.d.ts +9 -0
  86. package/dist/cli/commands/balance.d.ts +7 -0
  87. package/dist/cli/commands/balance.js +38 -32
  88. package/dist/cli/commands/balance.js.map +1 -1
  89. package/dist/cli/commands/bootstrap.d.ts +13 -1
  90. package/dist/cli/commands/bootstrap.js +150 -132
  91. package/dist/cli/commands/bootstrap.js.map +1 -1
  92. package/dist/cli/commands/claim-rewards.js +14 -2
  93. package/dist/cli/commands/claim-rewards.js.map +1 -1
  94. package/dist/cli/commands/conformance.d.ts +12 -0
  95. package/dist/cli/commands/conformance.js +140 -0
  96. package/dist/cli/commands/conformance.js.map +1 -0
  97. package/dist/cli/commands/create.d.ts +36 -0
  98. package/dist/cli/commands/create.js +374 -0
  99. package/dist/cli/commands/create.js.map +1 -0
  100. package/dist/cli/commands/doctor.d.ts +34 -1
  101. package/dist/cli/commands/doctor.js +136 -121
  102. package/dist/cli/commands/doctor.js.map +1 -1
  103. package/dist/cli/commands/fleet-scale.d.ts +19 -1
  104. package/dist/cli/commands/fleet-scale.js +379 -361
  105. package/dist/cli/commands/fleet-scale.js.map +1 -1
  106. package/dist/cli/commands/fleet.d.ts +7 -0
  107. package/dist/cli/commands/fleet.js +39 -33
  108. package/dist/cli/commands/fleet.js.map +1 -1
  109. package/dist/cli/commands/fund-requirements.d.ts +14 -1
  110. package/dist/cli/commands/fund-requirements.js +183 -174
  111. package/dist/cli/commands/fund-requirements.js.map +1 -1
  112. package/dist/cli/commands/history.d.ts +10 -1
  113. package/dist/cli/commands/history.js +66 -57
  114. package/dist/cli/commands/history.js.map +1 -1
  115. package/dist/cli/commands/impls.d.ts +18 -0
  116. package/dist/cli/commands/impls.js +208 -0
  117. package/dist/cli/commands/impls.js.map +1 -0
  118. package/dist/cli/commands/init.js +4 -1
  119. package/dist/cli/commands/init.js.map +1 -1
  120. package/dist/cli/commands/intents.js +13 -9
  121. package/dist/cli/commands/intents.js.map +1 -1
  122. package/dist/cli/commands/logs.d.ts +6 -1
  123. package/dist/cli/commands/logs.js +77 -70
  124. package/dist/cli/commands/logs.js.map +1 -1
  125. package/dist/cli/commands/migrate-agent-id.d.ts +26 -0
  126. package/dist/cli/commands/migrate-agent-id.js +165 -0
  127. package/dist/cli/commands/migrate-agent-id.js.map +1 -0
  128. package/dist/cli/commands/plug-ins.d.ts +34 -0
  129. package/dist/cli/commands/plug-ins.js +282 -0
  130. package/dist/cli/commands/plug-ins.js.map +1 -0
  131. package/dist/cli/commands/plugin-install.d.ts +10 -0
  132. package/dist/cli/commands/plugin-install.js +226 -14
  133. package/dist/cli/commands/plugin-install.js.map +1 -1
  134. package/dist/cli/commands/rewards.d.ts +7 -0
  135. package/dist/cli/commands/rewards.js +46 -40
  136. package/dist/cli/commands/rewards.js.map +1 -1
  137. package/dist/cli/commands/run.d.ts +14 -1
  138. package/dist/cli/commands/run.js +232 -90
  139. package/dist/cli/commands/run.js.map +1 -1
  140. package/dist/cli/commands/status.d.ts +10 -0
  141. package/dist/cli/commands/status.js +97 -34
  142. package/dist/cli/commands/status.js.map +1 -1
  143. package/dist/cli/commands/submit-intent.js +33 -6
  144. package/dist/cli/commands/submit-intent.js.map +1 -1
  145. package/dist/cli/commands/ui.js +45 -0
  146. package/dist/cli/commands/ui.js.map +1 -0
  147. package/dist/cli/commands/update.d.ts +5 -0
  148. package/dist/cli/commands/update.js +102 -97
  149. package/dist/cli/commands/update.js.map +1 -1
  150. package/dist/cli/commands/version.js +3 -1
  151. package/dist/cli/commands/version.js.map +1 -1
  152. package/dist/cli/commands/withdraw.d.ts +21 -1
  153. package/dist/cli/commands/withdraw.js +175 -159
  154. package/dist/cli/commands/withdraw.js.map +1 -1
  155. package/dist/cli/execution-context.d.ts +1 -1
  156. package/dist/cli/execution-context.js +2 -1
  157. package/dist/cli/execution-context.js.map +1 -1
  158. package/dist/cli/help.js +7 -0
  159. package/dist/cli/help.js.map +1 -1
  160. package/dist/cli/index.d.ts +7 -0
  161. package/dist/cli/index.js +18 -2
  162. package/dist/cli/index.js.map +1 -1
  163. package/dist/cli/intent-registry-access.d.ts +33 -1
  164. package/dist/cli/intent-registry-access.js +40 -2
  165. package/dist/cli/intent-registry-access.js.map +1 -1
  166. package/dist/cli/open-browser.d.ts +1 -0
  167. package/dist/cli/open-browser.js +18 -0
  168. package/dist/cli/open-browser.js.map +1 -0
  169. package/dist/cli/password.d.ts +3 -3
  170. package/dist/cli/password.js +5 -5
  171. package/dist/cli/password.js.map +1 -1
  172. package/dist/config.d.ts +883 -11
  173. package/dist/config.js +435 -4
  174. package/dist/config.js.map +1 -1
  175. package/dist/conformance/checks/artifacts.d.ts +37 -0
  176. package/dist/conformance/checks/artifacts.js +110 -0
  177. package/dist/conformance/checks/artifacts.js.map +1 -0
  178. package/dist/conformance/checks/envelope-schema.d.ts +17 -0
  179. package/dist/conformance/checks/envelope-schema.js +36 -0
  180. package/dist/conformance/checks/envelope-schema.js.map +1 -0
  181. package/dist/conformance/checks/hash-signature.d.ts +26 -0
  182. package/dist/conformance/checks/hash-signature.js +70 -0
  183. package/dist/conformance/checks/hash-signature.js.map +1 -0
  184. package/dist/conformance/checks/payload.d.ts +19 -0
  185. package/dist/conformance/checks/payload.js +52 -0
  186. package/dist/conformance/checks/payload.js.map +1 -0
  187. package/dist/conformance/checks/secret-scrub.d.ts +33 -0
  188. package/dist/conformance/checks/secret-scrub.js +118 -0
  189. package/dist/conformance/checks/secret-scrub.js.map +1 -0
  190. package/dist/conformance/checks/source-runtime.d.ts +43 -0
  191. package/dist/conformance/checks/source-runtime.js +68 -0
  192. package/dist/conformance/checks/source-runtime.js.map +1 -0
  193. package/dist/conformance/checks/source-static.d.ts +61 -0
  194. package/dist/conformance/checks/source-static.js +311 -0
  195. package/dist/conformance/checks/source-static.js.map +1 -0
  196. package/dist/conformance/checks/trajectory-chain.d.ts +18 -0
  197. package/dist/conformance/checks/trajectory-chain.js +51 -0
  198. package/dist/conformance/checks/trajectory-chain.js.map +1 -0
  199. package/dist/conformance/checks/trajectory-profile.d.ts +17 -0
  200. package/dist/conformance/checks/trajectory-profile.js +51 -0
  201. package/dist/conformance/checks/trajectory-profile.js.map +1 -0
  202. package/dist/conformance/checks/trajectory-schema.d.ts +20 -0
  203. package/dist/conformance/checks/trajectory-schema.js +40 -0
  204. package/dist/conformance/checks/trajectory-schema.js.map +1 -0
  205. package/dist/conformance/checks/verdict.d.ts +44 -0
  206. package/dist/conformance/checks/verdict.js +122 -0
  207. package/dist/conformance/checks/verdict.js.map +1 -0
  208. package/dist/conformance/harness.d.ts +32 -0
  209. package/dist/conformance/harness.js +228 -0
  210. package/dist/conformance/harness.js.map +1 -0
  211. package/dist/conformance/types.d.ts +88 -0
  212. package/dist/conformance/types.js +31 -0
  213. package/dist/conformance/types.js.map +1 -0
  214. package/dist/corpus/acquire.d.ts +37 -0
  215. package/dist/corpus/acquire.js +155 -0
  216. package/dist/corpus/acquire.js.map +1 -0
  217. package/dist/corpus/cache.d.ts +14 -0
  218. package/dist/corpus/cache.js +18 -0
  219. package/dist/corpus/cache.js.map +1 -0
  220. package/dist/corpus/fetch.d.ts +9 -0
  221. package/dist/corpus/fetch.js +24 -0
  222. package/dist/corpus/fetch.js.map +1 -0
  223. package/dist/corpus/index.d.ts +16 -0
  224. package/dist/corpus/index.js +78 -0
  225. package/dist/corpus/index.js.map +1 -0
  226. package/dist/corpus/query.d.ts +17 -0
  227. package/dist/corpus/query.js +108 -0
  228. package/dist/corpus/query.js.map +1 -0
  229. package/dist/corpus/route-resolver.d.ts +16 -0
  230. package/dist/corpus/route-resolver.js +20 -0
  231. package/dist/corpus/route-resolver.js.map +1 -0
  232. package/dist/corpus/types.d.ts +107 -0
  233. package/dist/corpus/types.js +50 -0
  234. package/dist/corpus/types.js.map +1 -0
  235. package/dist/daemon/balance-topup-loop.js +2 -1
  236. package/dist/daemon/balance-topup-loop.js.map +1 -1
  237. package/dist/daemon/creator.d.ts +2 -2
  238. package/dist/daemon/creator.js +2 -2
  239. package/dist/daemon/creator.js.map +1 -1
  240. package/dist/daemon/daemon.d.ts +70 -15
  241. package/dist/daemon/daemon.js +159 -41
  242. package/dist/daemon/daemon.js.map +1 -1
  243. package/dist/daemon/delivery-watcher.js +31 -1
  244. package/dist/daemon/delivery-watcher.js.map +1 -1
  245. package/dist/daemon/jinn-claim-loop-canonical.d.ts +207 -0
  246. package/dist/daemon/jinn-claim-loop-canonical.js +296 -0
  247. package/dist/daemon/jinn-claim-loop-canonical.js.map +1 -0
  248. package/dist/daemon/jinn-claim-loop-mock.d.ts +61 -0
  249. package/dist/daemon/jinn-claim-loop-mock.js +122 -0
  250. package/dist/daemon/jinn-claim-loop-mock.js.map +1 -0
  251. package/dist/daemon/jinn-claim-loop.d.ts +123 -0
  252. package/dist/daemon/jinn-claim-loop.js +256 -0
  253. package/dist/daemon/jinn-claim-loop.js.map +1 -0
  254. package/dist/daemon/reward-claim-loop.d.ts +2 -0
  255. package/dist/daemon/reward-claim-loop.js +32 -27
  256. package/dist/daemon/reward-claim-loop.js.map +1 -1
  257. package/dist/dashboard/assets/index-Bxlk5qpa.js +68 -0
  258. package/dist/dashboard/assets/index-DQ3u_vP5.css +32 -0
  259. package/dist/dashboard/index.html +18 -74
  260. package/dist/earning/agent-wallet-binding.d.ts +133 -0
  261. package/dist/earning/agent-wallet-binding.js +202 -0
  262. package/dist/earning/agent-wallet-binding.js.map +1 -0
  263. package/dist/earning/bootstrap.d.ts +64 -0
  264. package/dist/earning/bootstrap.js +325 -32
  265. package/dist/earning/bootstrap.js.map +1 -1
  266. package/dist/earning/contracts.d.ts +323 -0
  267. package/dist/earning/contracts.js +276 -0
  268. package/dist/earning/contracts.js.map +1 -1
  269. package/dist/earning/funding-plan.d.ts +90 -0
  270. package/dist/earning/funding-plan.js +203 -0
  271. package/dist/earning/funding-plan.js.map +1 -0
  272. package/dist/earning/migrate-agent-id.d.ts +130 -0
  273. package/dist/earning/migrate-agent-id.js +257 -0
  274. package/dist/earning/migrate-agent-id.js.map +1 -0
  275. package/dist/earning/orphan-sweep.d.ts +14 -0
  276. package/dist/earning/orphan-sweep.js +63 -2
  277. package/dist/earning/orphan-sweep.js.map +1 -1
  278. package/dist/earning/reconcile.d.ts +2 -0
  279. package/dist/earning/reconcile.js +30 -0
  280. package/dist/earning/reconcile.js.map +1 -1
  281. package/dist/earning/stolas-claim.d.ts +86 -6
  282. package/dist/earning/stolas-claim.js +123 -9
  283. package/dist/earning/stolas-claim.js.map +1 -1
  284. package/dist/earning/store.d.ts +39 -0
  285. package/dist/earning/store.js +72 -1
  286. package/dist/earning/store.js.map +1 -1
  287. package/dist/earning/testnet-setup-migration.d.ts +32 -0
  288. package/dist/earning/testnet-setup-migration.js +214 -0
  289. package/dist/earning/testnet-setup-migration.js.map +1 -0
  290. package/dist/earning/types.d.ts +53 -9
  291. package/dist/earning/types.js +51 -2
  292. package/dist/earning/types.js.map +1 -1
  293. package/dist/earning/viem-clients.d.ts +20 -0
  294. package/dist/earning/viem-clients.js +32 -1
  295. package/dist/earning/viem-clients.js.map +1 -1
  296. package/dist/erc8004/abis.d.ts +381 -0
  297. package/dist/erc8004/abis.js +238 -0
  298. package/dist/erc8004/abis.js.map +1 -0
  299. package/dist/erc8004/addresses.d.ts +40 -0
  300. package/dist/erc8004/addresses.js +64 -0
  301. package/dist/erc8004/addresses.js.map +1 -0
  302. package/dist/erc8004/identity.d.ts +202 -0
  303. package/dist/erc8004/identity.js +305 -0
  304. package/dist/erc8004/identity.js.map +1 -0
  305. package/dist/erc8004/index.d.ts +13 -0
  306. package/dist/erc8004/index.js +20 -0
  307. package/dist/erc8004/index.js.map +1 -0
  308. package/dist/erc8004/reputation.d.ts +349 -0
  309. package/dist/erc8004/reputation.js +464 -0
  310. package/dist/erc8004/reputation.js.map +1 -0
  311. package/dist/erc8004/subgraph.d.ts +46 -0
  312. package/dist/erc8004/subgraph.js +37 -0
  313. package/dist/erc8004/subgraph.js.map +1 -0
  314. package/dist/erc8004/validation.d.ts +145 -0
  315. package/dist/erc8004/validation.js +219 -0
  316. package/dist/erc8004/validation.js.map +1 -0
  317. package/dist/errors/persisted-bootstrap-error.d.ts +4 -0
  318. package/dist/errors/persisted-bootstrap-error.js +50 -0
  319. package/dist/errors/persisted-bootstrap-error.js.map +1 -0
  320. package/dist/events/emitter.d.ts +12 -0
  321. package/dist/events/emitter.js +23 -0
  322. package/dist/events/emitter.js.map +1 -0
  323. package/dist/events/ring-buffer.d.ts +25 -0
  324. package/dist/events/ring-buffer.js +46 -0
  325. package/dist/events/ring-buffer.js.map +1 -0
  326. package/dist/events/types.d.ts +42 -0
  327. package/dist/events/types.js +28 -0
  328. package/dist/events/types.js.map +1 -0
  329. package/dist/index.d.ts +1 -1
  330. package/dist/intents/kinds/index.d.ts +10 -0
  331. package/dist/intents/kinds/index.js +7 -0
  332. package/dist/intents/kinds/index.js.map +1 -1
  333. package/dist/intents/kinds/learner-loop-test.d.ts +2 -0
  334. package/dist/intents/kinds/learner-loop-test.js +39 -0
  335. package/dist/intents/kinds/learner-loop-test.js.map +1 -0
  336. package/dist/intents/kinds/prediction-apy-v0.js +5 -1
  337. package/dist/intents/kinds/prediction-apy-v0.js.map +1 -1
  338. package/dist/intents/kinds/prediction-v0.js +5 -0
  339. package/dist/intents/kinds/prediction-v0.js.map +1 -1
  340. package/dist/intents/kinds/spec-kind.d.ts +18 -1
  341. package/dist/intents/posting-service.d.ts +3 -5
  342. package/dist/intents/posting-service.js +16 -50
  343. package/dist/intents/posting-service.js.map +1 -1
  344. package/dist/intents/prediction-apy-v0-auto.d.ts +12 -2
  345. package/dist/intents/prediction-apy-v0-auto.js +27 -2
  346. package/dist/intents/prediction-apy-v0-auto.js.map +1 -1
  347. package/dist/intents/prediction-v0-auto.d.ts +14 -4
  348. package/dist/intents/prediction-v0-auto.js +29 -5
  349. package/dist/intents/prediction-v0-auto.js.map +1 -1
  350. package/dist/intents/signing.d.ts +13 -0
  351. package/dist/intents/signing.js +27 -0
  352. package/dist/intents/signing.js.map +1 -0
  353. package/dist/intents/sources.d.ts +12 -5
  354. package/dist/intents/sources.js +11 -11
  355. package/dist/intents/sources.js.map +1 -1
  356. package/dist/main.d.ts +5 -2
  357. package/dist/main.js +792 -66
  358. package/dist/main.js.map +1 -1
  359. package/dist/mcp/acquire-artifact.d.ts +39 -0
  360. package/dist/mcp/acquire-artifact.js +163 -0
  361. package/dist/mcp/acquire-artifact.js.map +1 -0
  362. package/dist/mcp/operator-server.d.ts +20 -3
  363. package/dist/mcp/operator-server.js +500 -25
  364. package/dist/mcp/operator-server.js.map +1 -1
  365. package/dist/mcp/search-artifacts.d.ts +31 -0
  366. package/dist/mcp/search-artifacts.js +40 -0
  367. package/dist/mcp/search-artifacts.js.map +1 -0
  368. package/dist/mcp/server.js +103 -58
  369. package/dist/mcp/server.js.map +1 -1
  370. package/dist/observability/emit-event.d.ts +1 -1
  371. package/dist/observability/emit-event.js.map +1 -1
  372. package/dist/operator-errors.js +4 -5
  373. package/dist/operator-errors.js.map +1 -1
  374. package/dist/preflight/claude-auth.d.ts +11 -11
  375. package/dist/preflight/claude-auth.js +18 -32
  376. package/dist/preflight/claude-auth.js.map +1 -1
  377. package/dist/restorer/capability/index.d.ts +82 -0
  378. package/dist/restorer/capability/index.js +12 -0
  379. package/dist/restorer/capability/index.js.map +1 -0
  380. package/dist/restorer/capability/scoped-rpc.d.ts +12 -0
  381. package/dist/restorer/capability/scoped-rpc.js +34 -0
  382. package/dist/restorer/capability/scoped-rpc.js.map +1 -0
  383. package/dist/restorer/capability/scoped-secrets.d.ts +8 -0
  384. package/dist/restorer/capability/scoped-secrets.js +10 -0
  385. package/dist/restorer/capability/scoped-secrets.js.map +1 -0
  386. package/dist/restorer/capability/scoped-signer.d.ts +46 -0
  387. package/dist/restorer/capability/scoped-signer.js +73 -0
  388. package/dist/restorer/capability/scoped-signer.js.map +1 -0
  389. package/dist/restorer/engine/canonical-json.d.ts +0 -17
  390. package/dist/restorer/engine/canonical-json.js +56 -49
  391. package/dist/restorer/engine/canonical-json.js.map +1 -1
  392. package/dist/restorer/engine/claim.js +8 -1
  393. package/dist/restorer/engine/claim.js.map +1 -1
  394. package/dist/restorer/engine/delivery.d.ts +2 -0
  395. package/dist/restorer/engine/delivery.js +2 -2
  396. package/dist/restorer/engine/delivery.js.map +1 -1
  397. package/dist/restorer/engine/engine.d.ts +143 -26
  398. package/dist/restorer/engine/engine.js +485 -104
  399. package/dist/restorer/engine/engine.js.map +1 -1
  400. package/dist/restorer/engine/envelope-assembly.d.ts +65 -0
  401. package/dist/restorer/engine/envelope-assembly.js +60 -0
  402. package/dist/restorer/engine/envelope-assembly.js.map +1 -0
  403. package/dist/restorer/engine/packaging.d.ts +30 -30
  404. package/dist/restorer/engine/packaging.js +73 -47
  405. package/dist/restorer/engine/packaging.js.map +1 -1
  406. package/dist/restorer/engine/persistence.d.ts +7 -7
  407. package/dist/restorer/engine/persistence.js +4 -4
  408. package/dist/restorer/engine/persistence.js.map +1 -1
  409. package/dist/restorer/engine/registry.d.ts +24 -13
  410. package/dist/restorer/engine/registry.js +16 -13
  411. package/dist/restorer/engine/registry.js.map +1 -1
  412. package/dist/restorer/engine/validate-manifest.d.ts +23 -0
  413. package/dist/restorer/engine/validate-manifest.js +49 -0
  414. package/dist/restorer/engine/validate-manifest.js.map +1 -0
  415. package/dist/restorer/engine/verification-stub.d.ts +18 -0
  416. package/dist/restorer/engine/verification-stub.js +18 -0
  417. package/dist/restorer/engine/verification-stub.js.map +1 -0
  418. package/dist/restorer/external-impls/index.d.ts +3 -0
  419. package/dist/restorer/external-impls/index.js +2 -0
  420. package/dist/restorer/external-impls/index.js.map +1 -0
  421. package/dist/restorer/external-impls/loader.d.ts +49 -0
  422. package/dist/restorer/external-impls/loader.js +138 -0
  423. package/dist/restorer/external-impls/loader.js.map +1 -0
  424. package/dist/restorer/external-impls/package-hash.d.ts +26 -0
  425. package/dist/restorer/external-impls/package-hash.js +102 -0
  426. package/dist/restorer/external-impls/package-hash.js.map +1 -0
  427. package/dist/restorer/external-impls/types.d.ts +42 -0
  428. package/dist/restorer/external-impls/types.js +10 -0
  429. package/dist/restorer/external-impls/types.js.map +1 -0
  430. package/dist/restorer/impls/claude-code-learner/adapters/claude-code.d.ts +38 -0
  431. package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js +200 -0
  432. package/dist/restorer/impls/claude-code-learner/adapters/claude-code.js.map +1 -0
  433. package/dist/restorer/impls/claude-code-learner/harvest.d.ts +19 -0
  434. package/dist/restorer/impls/claude-code-learner/harvest.js +146 -0
  435. package/dist/restorer/impls/claude-code-learner/harvest.js.map +1 -0
  436. package/dist/restorer/impls/claude-code-learner/index.d.ts +15 -0
  437. package/dist/restorer/impls/claude-code-learner/index.js +14 -0
  438. package/dist/restorer/impls/claude-code-learner/index.js.map +1 -0
  439. package/dist/restorer/impls/claude-code-learner/mcp-config.d.ts +48 -0
  440. package/dist/restorer/impls/claude-code-learner/mcp-config.js +52 -0
  441. package/dist/restorer/impls/claude-code-learner/mcp-config.js.map +1 -0
  442. package/dist/restorer/impls/claude-code-learner/plugin-path.d.ts +14 -0
  443. package/dist/restorer/impls/claude-code-learner/plugin-path.js +30 -0
  444. package/dist/restorer/impls/claude-code-learner/plugin-path.js.map +1 -0
  445. package/dist/restorer/impls/claude-code-learner/restorer.d.ts +38 -0
  446. package/dist/restorer/impls/claude-code-learner/restorer.js +73 -0
  447. package/dist/restorer/impls/claude-code-learner/restorer.js.map +1 -0
  448. package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.d.ts +19 -0
  449. package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js +111 -0
  450. package/dist/restorer/impls/claude-code-learner/test-utils/fake-plugin-outputs.js.map +1 -0
  451. package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.d.ts +22 -0
  452. package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js +35 -0
  453. package/dist/restorer/impls/claude-code-learner/test-utils/noop-adapter.js.map +1 -0
  454. package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.d.ts +20 -0
  455. package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js +34 -0
  456. package/dist/restorer/impls/claude-code-learner/test-utils/synthetic-session.js.map +1 -0
  457. package/dist/restorer/impls/claude-code-learner/types.d.ts +99 -0
  458. package/dist/restorer/impls/claude-code-learner/types.js +2 -0
  459. package/dist/restorer/impls/claude-code-learner/types.js.map +1 -0
  460. package/dist/restorer/impls/claude-code-learner/wrapper.d.ts +49 -0
  461. package/dist/restorer/impls/claude-code-learner/wrapper.js +144 -0
  462. package/dist/restorer/impls/claude-code-learner/wrapper.js.map +1 -0
  463. package/dist/restorer/impls/claude-mcp-hyperliquid/index.d.ts +2 -2
  464. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js +2 -2
  465. package/dist/restorer/impls/claude-mcp-hyperliquid/index.js.map +1 -1
  466. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.d.ts +7 -0
  467. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js +38 -0
  468. package/dist/restorer/impls/claude-mcp-hyperliquid/session-orchestrator.js.map +1 -1
  469. package/dist/restorer/impls/claude-mcp-prediction/index.d.ts +2 -2
  470. package/dist/restorer/impls/claude-mcp-prediction/index.js +12 -2
  471. package/dist/restorer/impls/claude-mcp-prediction/index.js.map +1 -1
  472. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.d.ts +9 -2
  473. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js +9 -125
  474. package/dist/restorer/impls/claude-mcp-prediction/session-orchestrator.js.map +1 -1
  475. package/dist/restorer/impls/claude-mcp-prediction-apy/index.d.ts +2 -2
  476. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js +9 -2
  477. package/dist/restorer/impls/claude-mcp-prediction-apy/index.js.map +1 -1
  478. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.d.ts +10 -0
  479. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js +10 -119
  480. package/dist/restorer/impls/claude-mcp-prediction-apy/session-orchestrator.js.map +1 -1
  481. package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.d.ts +84 -0
  482. package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js +206 -0
  483. package/dist/restorer/impls/claude-mcp-shared/single-session-orchestrator.js.map +1 -0
  484. package/dist/restorer/impls/evaluation-context.d.ts +11 -4
  485. package/dist/restorer/impls/evaluation-context.js +9 -2
  486. package/dist/restorer/impls/evaluation-context.js.map +1 -1
  487. package/dist/restorer/impls/index.d.ts +46 -1
  488. package/dist/restorer/impls/index.js +38 -0
  489. package/dist/restorer/impls/index.js.map +1 -1
  490. package/dist/restorer/impls/legacy-claude/index.d.ts +13 -1
  491. package/dist/restorer/impls/legacy-claude/index.js +2 -0
  492. package/dist/restorer/impls/legacy-claude/index.js.map +1 -1
  493. package/dist/restorer/impls/portfolio-v0-evaluator/index.d.ts +4 -4
  494. package/dist/restorer/impls/portfolio-v0-evaluator/index.js +184 -55
  495. package/dist/restorer/impls/portfolio-v0-evaluator/index.js.map +1 -1
  496. package/dist/restorer/impls/prediction-apy-v0-baseline/index.d.ts +1 -1
  497. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js +8 -1
  498. package/dist/restorer/impls/prediction-apy-v0-baseline/index.js.map +1 -1
  499. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.d.ts +3 -3
  500. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js +153 -15
  501. package/dist/restorer/impls/prediction-apy-v0-evaluator/index.js.map +1 -1
  502. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.d.ts +14 -5
  503. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js +16 -23
  504. package/dist/restorer/impls/prediction-apy-v0-evaluator/parse-submission.js.map +1 -1
  505. package/dist/restorer/impls/prediction-v0-baseline/index.d.ts +1 -1
  506. package/dist/restorer/impls/prediction-v0-baseline/index.js +16 -7
  507. package/dist/restorer/impls/prediction-v0-baseline/index.js.map +1 -1
  508. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.d.ts +5 -3
  509. package/dist/restorer/impls/prediction-v0-evaluator/checks/integrity.js.map +1 -1
  510. package/dist/restorer/impls/prediction-v0-evaluator/index.d.ts +2 -2
  511. package/dist/restorer/impls/prediction-v0-evaluator/index.js +175 -67
  512. package/dist/restorer/impls/prediction-v0-evaluator/index.js.map +1 -1
  513. package/dist/restorer/manifest/index.d.ts +3 -0
  514. package/dist/restorer/manifest/index.js +3 -0
  515. package/dist/restorer/manifest/index.js.map +1 -0
  516. package/dist/restorer/manifest/load.d.ts +7 -0
  517. package/dist/restorer/manifest/load.js +49 -0
  518. package/dist/restorer/manifest/load.js.map +1 -0
  519. package/dist/restorer/manifest/types.d.ts +75 -0
  520. package/dist/restorer/manifest/types.js +8 -0
  521. package/dist/restorer/manifest/types.js.map +1 -0
  522. package/dist/restorer/manifest/verify.d.ts +15 -0
  523. package/dist/restorer/manifest/verify.js +53 -0
  524. package/dist/restorer/manifest/verify.js.map +1 -0
  525. package/dist/restorer/plug-ins/index.d.ts +14 -0
  526. package/dist/restorer/plug-ins/index.js +11 -0
  527. package/dist/restorer/plug-ins/index.js.map +1 -0
  528. package/dist/restorer/plug-ins/loader.d.ts +27 -0
  529. package/dist/restorer/plug-ins/loader.js +101 -0
  530. package/dist/restorer/plug-ins/loader.js.map +1 -0
  531. package/dist/restorer/plug-ins/manifest.d.ts +7 -0
  532. package/dist/restorer/plug-ins/manifest.js +97 -0
  533. package/dist/restorer/plug-ins/manifest.js.map +1 -0
  534. package/dist/restorer/plug-ins/registry.d.ts +24 -0
  535. package/dist/restorer/plug-ins/registry.js +17 -0
  536. package/dist/restorer/plug-ins/registry.js.map +1 -0
  537. package/dist/restorer/plug-ins/serialise.d.ts +29 -0
  538. package/dist/restorer/plug-ins/serialise.js +29 -0
  539. package/dist/restorer/plug-ins/serialise.js.map +1 -0
  540. package/dist/restorer/plug-ins/types.d.ts +77 -0
  541. package/dist/restorer/plug-ins/types.js +10 -0
  542. package/dist/restorer/plug-ins/types.js.map +1 -0
  543. package/dist/restorer/types.d.ts +66 -11
  544. package/dist/restorer/types.js.map +1 -1
  545. package/dist/runner/claude.d.ts +3 -3
  546. package/dist/runner/claude.js +57 -21
  547. package/dist/runner/claude.js.map +1 -1
  548. package/dist/runner/runner.d.ts +29 -2
  549. package/dist/runner/simple.d.ts +2 -2
  550. package/dist/runner/simple.js +2 -2
  551. package/dist/runner/simple.js.map +1 -1
  552. package/dist/scripts/fix-node-pty.mjs +62 -0
  553. package/dist/setup-mode.d.ts +34 -0
  554. package/dist/setup-mode.js +49 -0
  555. package/dist/setup-mode.js.map +1 -0
  556. package/dist/store/store.d.ts +79 -3
  557. package/dist/store/store.js +189 -6
  558. package/dist/store/store.js.map +1 -1
  559. package/dist/templates/plug-in/hook/README.md.tmpl +24 -0
  560. package/dist/templates/plug-in/hook/gitignore.tmpl +3 -0
  561. package/dist/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
  562. package/dist/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
  563. package/dist/templates/plug-in/hook/package.json.tmpl +14 -0
  564. package/dist/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
  565. package/dist/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
  566. package/dist/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
  567. package/dist/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
  568. package/dist/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
  569. package/dist/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
  570. package/dist/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
  571. package/dist/templates/plug-in/memory-backend/README.md.tmpl +33 -0
  572. package/dist/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
  573. package/dist/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
  574. package/dist/templates/plug-in/memory-backend/package.json.tmpl +19 -0
  575. package/dist/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
  576. package/dist/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
  577. package/dist/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
  578. package/dist/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
  579. package/dist/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
  580. package/dist/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
  581. package/dist/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
  582. package/dist/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
  583. package/dist/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
  584. package/dist/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
  585. package/dist/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
  586. package/dist/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
  587. package/dist/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
  588. package/dist/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
  589. package/dist/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
  590. package/dist/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
  591. package/dist/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
  592. package/dist/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
  593. package/dist/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
  594. package/dist/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
  595. package/dist/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
  596. package/dist/templates/restorer/alternative-harness/README.md.tmpl +44 -0
  597. package/dist/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
  598. package/dist/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
  599. package/dist/templates/restorer/alternative-harness/package.json.tmpl +26 -0
  600. package/dist/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
  601. package/dist/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
  602. package/dist/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
  603. package/dist/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  604. package/dist/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  605. package/dist/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  606. package/dist/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  607. package/dist/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  608. package/dist/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  609. package/dist/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  610. package/dist/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  611. package/dist/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
  612. package/dist/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
  613. package/dist/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
  614. package/dist/templates/restorer/evaluator/README.md.tmpl +36 -0
  615. package/dist/templates/restorer/evaluator/gitignore.tmpl +3 -0
  616. package/dist/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
  617. package/dist/templates/restorer/evaluator/package.json.tmpl +26 -0
  618. package/dist/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
  619. package/dist/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
  620. package/dist/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
  621. package/dist/templates/restorer/forecaster/README.md.tmpl +25 -0
  622. package/dist/templates/restorer/forecaster/gitignore.tmpl +5 -0
  623. package/dist/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
  624. package/dist/templates/restorer/forecaster/package.json.tmpl +26 -0
  625. package/dist/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
  626. package/dist/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
  627. package/dist/templates/restorer/forecaster/tsconfig.json.tmpl +16 -0
  628. package/dist/trajectory/collector.d.ts +49 -0
  629. package/dist/trajectory/collector.js +86 -0
  630. package/dist/trajectory/collector.js.map +1 -0
  631. package/dist/trajectory/emit.d.ts +27 -0
  632. package/dist/trajectory/emit.js +40 -0
  633. package/dist/trajectory/emit.js.map +1 -0
  634. package/dist/trajectory/hash-chain.d.ts +18 -0
  635. package/dist/trajectory/hash-chain.js +23 -0
  636. package/dist/trajectory/hash-chain.js.map +1 -0
  637. package/dist/trajectory/index.d.ts +22 -0
  638. package/dist/trajectory/index.js +23 -0
  639. package/dist/trajectory/index.js.map +1 -0
  640. package/dist/trajectory/schema.d.ts +14 -14
  641. package/dist/trajectory/secret-scrub.d.ts +32 -0
  642. package/dist/trajectory/secret-scrub.js +51 -0
  643. package/dist/trajectory/secret-scrub.js.map +1 -0
  644. package/dist/trajectory/span-profile.d.ts +27 -0
  645. package/dist/trajectory/span-profile.js +51 -0
  646. package/dist/trajectory/span-profile.js.map +1 -0
  647. package/dist/trajectory/wrappers/http.d.ts +37 -0
  648. package/dist/trajectory/wrappers/http.js +85 -0
  649. package/dist/trajectory/wrappers/http.js.map +1 -0
  650. package/dist/trajectory/wrappers/mcp.d.ts +17 -0
  651. package/dist/trajectory/wrappers/mcp.js +58 -0
  652. package/dist/trajectory/wrappers/mcp.js.map +1 -0
  653. package/dist/trajectory/wrappers/subprocess.d.ts +32 -0
  654. package/dist/trajectory/wrappers/subprocess.js +70 -0
  655. package/dist/trajectory/wrappers/subprocess.js.map +1 -0
  656. package/dist/tx-retry.js +23 -9
  657. package/dist/tx-retry.js.map +1 -1
  658. package/dist/types/desired-state.d.ts +211 -21
  659. package/dist/types/desired-state.js +26 -15
  660. package/dist/types/desired-state.js.map +1 -1
  661. package/dist/types/envelope.d.ts +1473 -0
  662. package/dist/types/envelope.js +114 -0
  663. package/dist/types/envelope.js.map +1 -0
  664. package/dist/types/index.d.ts +4 -4
  665. package/dist/types/index.js +4 -4
  666. package/dist/types/index.js.map +1 -1
  667. package/dist/types/intent.d.ts +276 -0
  668. package/dist/types/intent.js +74 -0
  669. package/dist/types/intent.js.map +1 -0
  670. package/dist/types/payloads/index.d.ts +11 -0
  671. package/dist/types/payloads/index.js +46 -0
  672. package/dist/types/payloads/index.js.map +1 -0
  673. package/dist/types/payloads/portfolio-v0.d.ts +481 -0
  674. package/dist/types/payloads/portfolio-v0.js +94 -0
  675. package/dist/types/payloads/portfolio-v0.js.map +1 -0
  676. package/dist/types/payloads/prediction-apy-v0.d.ts +231 -0
  677. package/dist/types/payloads/prediction-apy-v0.js +63 -0
  678. package/dist/types/payloads/prediction-apy-v0.js.map +1 -0
  679. package/dist/types/payloads/prediction-v0.d.ts +262 -0
  680. package/dist/types/payloads/prediction-v0.js +73 -0
  681. package/dist/types/payloads/prediction-v0.js.map +1 -0
  682. package/dist/types/portfolio.d.ts +23 -685
  683. package/dist/types/portfolio.js +16 -106
  684. package/dist/types/portfolio.js.map +1 -1
  685. package/dist/types/prediction-apy.d.ts +9 -344
  686. package/dist/types/prediction-apy.js +9 -65
  687. package/dist/types/prediction-apy.js.map +1 -1
  688. package/dist/types/prediction.d.ts +25 -396
  689. package/dist/types/prediction.js +5 -79
  690. package/dist/types/prediction.js.map +1 -1
  691. package/dist/types/window.d.ts +12 -0
  692. package/dist/types/window.js +6 -0
  693. package/dist/types/window.js.map +1 -0
  694. package/dist/util/path-safety.d.ts +22 -0
  695. package/dist/util/path-safety.js +29 -0
  696. package/dist/util/path-safety.js.map +1 -0
  697. package/dist/util/redact-rpc-urls.d.ts +5 -0
  698. package/dist/util/redact-rpc-urls.js +9 -0
  699. package/dist/util/redact-rpc-urls.js.map +1 -0
  700. package/dist/x402/acquire.d.ts +14 -3
  701. package/dist/x402/acquire.js +28 -11
  702. package/dist/x402/acquire.js.map +1 -1
  703. package/dist/x402/handler.d.ts +15 -3
  704. package/dist/x402/handler.js +67 -24
  705. package/dist/x402/handler.js.map +1 -1
  706. package/package.json +36 -11
  707. package/plugins/claude-code-learner/.claude-plugin/plugin.json +9 -0
  708. package/plugins/claude-code-learner/AGENTS.md +30 -0
  709. package/plugins/claude-code-learner/CLAUDE.md +31 -0
  710. package/plugins/claude-code-learner/README.md +58 -0
  711. package/plugins/claude-code-learner/agents/analyst.md +69 -0
  712. package/plugins/claude-code-learner/agents/consolidator.md +95 -0
  713. package/plugins/claude-code-learner/agents/explorer.md +54 -0
  714. package/plugins/claude-code-learner/agents/planner.md +88 -0
  715. package/plugins/claude-code-learner/agents/promoter.md +114 -0
  716. package/plugins/claude-code-learner/agents/step-worker.md +48 -0
  717. package/plugins/claude-code-learner/agents/strategist.md +86 -0
  718. package/plugins/claude-code-learner/hooks/hooks.json +16 -0
  719. package/plugins/claude-code-learner/hooks/session-start +49 -0
  720. package/plugins/claude-code-learner/skills/coordinator/SKILL.md +131 -0
  721. package/plugins/claude-code-learner/skills/debrief/SKILL.md +71 -0
  722. package/plugins/claude-code-learner/skills/execute/SKILL.md +91 -0
  723. package/plugins/claude-code-learner/skills/improve/SKILL.md +57 -0
  724. package/plugins/claude-code-learner/skills/memory-consolidation/SKILL.md +57 -0
  725. package/plugins/claude-code-learner/skills/orient/SKILL.md +82 -0
  726. package/plugins/claude-code-learner/skills/plan/SKILL.md +54 -0
  727. package/plugins/claude-code-learner/skills/strategize/SKILL.md +63 -0
  728. package/skills/jinn-operator/SKILL.md +84 -35
  729. package/templates/plug-in/hook/README.md.tmpl +24 -0
  730. package/templates/plug-in/hook/gitignore.tmpl +3 -0
  731. package/templates/plug-in/hook/hooks/event.sh.tmpl +15 -0
  732. package/templates/plug-in/hook/jinn-plugin.json.tmpl +16 -0
  733. package/templates/plug-in/hook/package.json.tmpl +14 -0
  734. package/templates/plug-in/hook/test/manifest.test.ts.tmpl +21 -0
  735. package/templates/plug-in/mcp-tool/README.md.tmpl +26 -0
  736. package/templates/plug-in/mcp-tool/gitignore.tmpl +4 -0
  737. package/templates/plug-in/mcp-tool/jinn-plugin.json.tmpl +16 -0
  738. package/templates/plug-in/mcp-tool/package.json.tmpl +19 -0
  739. package/templates/plug-in/mcp-tool/src/server.ts.tmpl +17 -0
  740. package/templates/plug-in/mcp-tool/test/server.test.ts.tmpl +18 -0
  741. package/templates/plug-in/memory-backend/README.md.tmpl +33 -0
  742. package/templates/plug-in/memory-backend/gitignore.tmpl +4 -0
  743. package/templates/plug-in/memory-backend/jinn-plugin.json.tmpl +16 -0
  744. package/templates/plug-in/memory-backend/package.json.tmpl +19 -0
  745. package/templates/plug-in/memory-backend/src/server.ts.tmpl +23 -0
  746. package/templates/plug-in/memory-backend/test/server.test.ts.tmpl +17 -0
  747. package/templates/plug-in/phase-agent-override/README.md.tmpl +30 -0
  748. package/templates/plug-in/phase-agent-override/agents/agent.md.tmpl +26 -0
  749. package/templates/plug-in/phase-agent-override/gitignore.tmpl +3 -0
  750. package/templates/plug-in/phase-agent-override/jinn-plugin.json.tmpl +17 -0
  751. package/templates/plug-in/phase-agent-override/package.json.tmpl +14 -0
  752. package/templates/plug-in/phase-agent-override/test/manifest.test.ts.tmpl +24 -0
  753. package/templates/plug-in/skill-bundle/.claude-plugin/plugin.json.tmpl +5 -0
  754. package/templates/plug-in/skill-bundle/README.md.tmpl +28 -0
  755. package/templates/plug-in/skill-bundle/gitignore.tmpl +3 -0
  756. package/templates/plug-in/skill-bundle/jinn-plugin.json.tmpl +15 -0
  757. package/templates/plug-in/skill-bundle/package.json.tmpl +14 -0
  758. package/templates/plug-in/skill-bundle/skills/example/SKILL.md.tmpl +14 -0
  759. package/templates/plug-in/skill-bundle/test/manifest.test.ts.tmpl +21 -0
  760. package/templates/plug-in/topic-explorer/README.md.tmpl +24 -0
  761. package/templates/plug-in/topic-explorer/agents/explorer.md.tmpl +26 -0
  762. package/templates/plug-in/topic-explorer/gitignore.tmpl +3 -0
  763. package/templates/plug-in/topic-explorer/jinn-plugin.json.tmpl +17 -0
  764. package/templates/plug-in/topic-explorer/package.json.tmpl +14 -0
  765. package/templates/plug-in/topic-explorer/test/manifest.test.ts.tmpl +22 -0
  766. package/templates/restorer/alternative-harness/README.md.tmpl +44 -0
  767. package/templates/restorer/alternative-harness/gitignore.tmpl +3 -0
  768. package/templates/restorer/alternative-harness/jinn.manifest.json.tmpl +22 -0
  769. package/templates/restorer/alternative-harness/package.json.tmpl +26 -0
  770. package/templates/restorer/alternative-harness/src/coordinator.ts.tmpl +50 -0
  771. package/templates/restorer/alternative-harness/src/harness.ts.tmpl +31 -0
  772. package/templates/restorer/alternative-harness/src/index.ts.tmpl +44 -0
  773. package/templates/restorer/alternative-harness/src/mock-harness.ts.tmpl +41 -0
  774. package/templates/restorer/alternative-harness/src/phases/debrief.ts.tmpl +28 -0
  775. package/templates/restorer/alternative-harness/src/phases/execute.ts.tmpl +33 -0
  776. package/templates/restorer/alternative-harness/src/phases/improve.ts.tmpl +31 -0
  777. package/templates/restorer/alternative-harness/src/phases/memory.ts.tmpl +31 -0
  778. package/templates/restorer/alternative-harness/src/phases/orient.ts.tmpl +21 -0
  779. package/templates/restorer/alternative-harness/src/phases/plan.ts.tmpl +25 -0
  780. package/templates/restorer/alternative-harness/src/phases/strategize.ts.tmpl +29 -0
  781. package/templates/restorer/alternative-harness/test/coordinator.test.ts.tmpl +52 -0
  782. package/templates/restorer/alternative-harness/test/unit.test.ts.tmpl +54 -0
  783. package/templates/restorer/alternative-harness/tsconfig.json.tmpl +16 -0
  784. package/templates/restorer/evaluator/README.md.tmpl +36 -0
  785. package/templates/restorer/evaluator/gitignore.tmpl +3 -0
  786. package/templates/restorer/evaluator/jinn.manifest.json.tmpl +22 -0
  787. package/templates/restorer/evaluator/package.json.tmpl +26 -0
  788. package/templates/restorer/evaluator/src/index.ts.tmpl +35 -0
  789. package/templates/restorer/evaluator/test/unit.test.ts.tmpl +48 -0
  790. package/templates/restorer/evaluator/tsconfig.json.tmpl +16 -0
  791. package/templates/restorer/forecaster/README.md.tmpl +25 -0
  792. package/templates/restorer/forecaster/gitignore.tmpl +5 -0
  793. package/templates/restorer/forecaster/jinn.manifest.json.tmpl +22 -0
  794. package/templates/restorer/forecaster/package.json.tmpl +26 -0
  795. package/templates/restorer/forecaster/src/index.ts.tmpl +33 -0
  796. package/templates/restorer/forecaster/test/unit.test.ts.tmpl +41 -0
  797. package/templates/restorer/forecaster/tsconfig.json.tmpl +16 -0
  798. package/dist/bin/jinn-mcp.d.ts +0 -2
  799. package/dist/bin/jinn-mcp.js +0 -10
  800. package/dist/bin/jinn-mcp.js.map +0 -1
  801. package/dist/cli/commands/quickstart.js +0 -330
  802. package/dist/cli/commands/quickstart.js.map +0 -1
  803. package/dist/discovery/registry.d.ts +0 -97
  804. package/dist/discovery/registry.js +0 -177
  805. package/dist/discovery/registry.js.map +0 -1
  806. package/dist/discovery/subgraph.d.ts +0 -37
  807. package/dist/discovery/subgraph.js +0 -87
  808. package/dist/discovery/subgraph.js.map +0 -1
  809. package/dist/restorer/engine/manifest-assembly.d.ts +0 -67
  810. package/dist/restorer/engine/manifest-assembly.js +0 -79
  811. package/dist/restorer/engine/manifest-assembly.js.map +0 -1
  812. /package/dist/cli/commands/{quickstart.d.ts → ui.d.ts} +0 -0
@@ -0,0 +1,203 @@
1
+ /**
2
+ * Read-only funding plan for the fleet bootstrap state machine.
3
+ *
4
+ * `jinn fund-requirements` (and other inspection callers) need to learn
5
+ * "what funding gates are blocking us right now?" without mutating any
6
+ * state. Specifically: never write to the fleet store, never request
7
+ * faucet funds, never send any chain transactions, never advance the
8
+ * bootstrap state machine.
9
+ *
10
+ * The mutating counterpart lives in `FleetBootstrapper.bootstrap()` and
11
+ * is invoked by `jinn bootstrap`/`jinn run`.
12
+ *
13
+ * See: docs/reviews/2026-04-28-operator-experience-audit.md (W1).
14
+ */
15
+ import { getAddress } from 'viem';
16
+ import { applyChainGasOverrides, getChainConfig, } from './contracts.js';
17
+ import { FleetStateStore } from './store.js';
18
+ import { decryptMnemonic, deriveMasterAddress } from './wallet.js';
19
+ import { isOperationalServiceStep } from './types.js';
20
+ import { createJinnPublicClient } from './viem-clients.js';
21
+ const SELF_BOND_ETH_PER_SERVICE = 30000000000000000n; // 0.03 ETH
22
+ const STANDARD_MASTER_BOOTSTRAP_MULTIPLIER = 2n;
23
+ const addr = (value) => getAddress(value);
24
+ async function safeGetBalance(client, address) {
25
+ try {
26
+ return await client.getBalance({ address });
27
+ }
28
+ catch {
29
+ return null;
30
+ }
31
+ }
32
+ /**
33
+ * Compute the read-only funding plan. Pure function over disk + chain reads.
34
+ *
35
+ * Guarantees (these are part of the contract relied on by `jinn fund-requirements`):
36
+ * - Never writes to the fleet state file or keystore.
37
+ * - Never requests faucet funds.
38
+ * - Never sends any chain transactions.
39
+ *
40
+ * If a password is provided and a mnemonic keystore exists, the master
41
+ * address is derived from the keystore for funding evaluation. If the
42
+ * password is missing, wrong, or no keystore exists, the plan still
43
+ * returns whatever it can learn from disk + chain reads, with a partial
44
+ * flag and machine-readable reasons.
45
+ */
46
+ export async function planFleetFunding(options = {}) {
47
+ const chain = options.chain ?? 'base';
48
+ const stakingMode = options.stakingMode ?? 'standard';
49
+ const targetServices = options.targetServices ?? 1;
50
+ const reasons = [];
51
+ const storeFactory = options.storeFactory ?? ((dir) => new FleetStateStore(dir));
52
+ const store = storeFactory(options.earningDir);
53
+ const chainConfigResolver = options.chainConfigResolver ?? getChainConfig;
54
+ const config = applyChainGasOverrides(chainConfigResolver(chain, {
55
+ testnetL2DeploymentPath: options.testnetL2DeploymentPath,
56
+ testnetL2TokenDeploymentPath: options.testnetL2TokenDeploymentPath,
57
+ testnetMechDeploymentPath: options.testnetMechDeploymentPath,
58
+ testnetStolasDeploymentPath: options.testnetStolasDeploymentPath,
59
+ testnetClaimRegistryDeploymentPath: options.testnetClaimRegistryDeploymentPath,
60
+ }), {
61
+ minEoaGasWei: options.minEoaGasWei,
62
+ minSafeEthWei: options.minSafeEthWei,
63
+ });
64
+ if (options.rpcUrl) {
65
+ config.rpcUrl = options.rpcUrl;
66
+ }
67
+ const publicClientFactory = options.publicClientFactory ?? ((url, net) => createJinnPublicClient(url, net));
68
+ const publicClient = publicClientFactory(config.rpcUrl, chain);
69
+ // Read-only fleet state probe. We deliberately call `tryLoadExisting`
70
+ // (never `load`) — `load` writes a default file when the state is
71
+ // missing, which would be a mutation.
72
+ const fleetState = await store.tryLoadExisting();
73
+ if (!fleetState) {
74
+ reasons.push('fleet_state_missing');
75
+ }
76
+ // Resolve master address: prefer persisted state, then derive from
77
+ // keystore + password if available, otherwise mark partial.
78
+ let masterAddress = null;
79
+ if (fleetState?.master_address) {
80
+ masterAddress = addr(fleetState.master_address);
81
+ }
82
+ else if (store.hasMnemonicKeystore()) {
83
+ if (options.password) {
84
+ try {
85
+ const ks = await store.loadMnemonicKeystore();
86
+ const mnemonic = await decryptMnemonic(ks, options.password);
87
+ masterAddress = addr(deriveMasterAddress(mnemonic));
88
+ }
89
+ catch {
90
+ reasons.push('password_invalid');
91
+ }
92
+ }
93
+ else {
94
+ reasons.push('password_missing');
95
+ }
96
+ }
97
+ else {
98
+ reasons.push('no_keystore');
99
+ }
100
+ // No master => no useful master-level evaluation possible.
101
+ if (!masterAddress) {
102
+ return {
103
+ satisfied: false,
104
+ partial: true,
105
+ reasons,
106
+ safes: [],
107
+ fleetState: fleetState ?? undefined,
108
+ };
109
+ }
110
+ // Master ETH probe.
111
+ const masterBalance = await safeGetBalance(publicClient, masterAddress);
112
+ if (masterBalance === null) {
113
+ reasons.push('rpc_unreachable');
114
+ return {
115
+ satisfied: false,
116
+ partial: true,
117
+ reasons,
118
+ safes: [],
119
+ fleetState: fleetState ?? undefined,
120
+ };
121
+ }
122
+ let systemEth = masterBalance;
123
+ if (stakingMode === 'self-bond' && fleetState) {
124
+ for (const svc of fleetState.services) {
125
+ if (svc.agent_address) {
126
+ const bal = await safeGetBalance(publicClient, addr(svc.agent_address));
127
+ if (bal === null) {
128
+ reasons.push('rpc_unreachable');
129
+ }
130
+ else {
131
+ systemEth += bal;
132
+ }
133
+ }
134
+ if (svc.safe_address) {
135
+ const bal = await safeGetBalance(publicClient, addr(svc.safe_address));
136
+ if (bal === null) {
137
+ reasons.push('rpc_unreachable');
138
+ }
139
+ else {
140
+ systemEth += bal;
141
+ }
142
+ }
143
+ }
144
+ }
145
+ const completedCount = fleetState?.services.filter((svc) => isOperationalServiceStep(svc.step)).length ?? 0;
146
+ const standardFleetAlreadyComplete = stakingMode === 'standard' && completedCount >= targetServices;
147
+ const standardFleetHasInProgressServices = stakingMode === 'standard' && (fleetState?.services.length ?? 0) > 0;
148
+ const requiredMasterEth = stakingMode === 'standard'
149
+ ? (standardFleetAlreadyComplete
150
+ ? 0n
151
+ : config.minEoaGasEth * (standardFleetHasInProgressServices ? 1n : STANDARD_MASTER_BOOTSTRAP_MULTIPLIER))
152
+ : SELF_BOND_ETH_PER_SERVICE * BigInt(targetServices);
153
+ let master;
154
+ if (systemEth < requiredMasterEth) {
155
+ const shortfall = requiredMasterEth - systemEth;
156
+ master = {
157
+ master_address: masterAddress,
158
+ eth_required: shortfall.toString(),
159
+ eth_balance: masterBalance.toString(),
160
+ };
161
+ }
162
+ // Per-Safe probes for completed services (parity with the existing
163
+ // mech-fee runtime probe in fund-requirements). Only emitted when
164
+ // master-level funding is satisfied — same as the prior behaviour.
165
+ const safes = [];
166
+ if (!master && fleetState) {
167
+ for (const svc of fleetState.services) {
168
+ if (!isOperationalServiceStep(svc.step) || !svc.safe_address)
169
+ continue;
170
+ const safeAddr = addr(svc.safe_address);
171
+ const bal = await safeGetBalance(publicClient, safeAddr);
172
+ if (bal === null) {
173
+ reasons.push('rpc_unreachable');
174
+ continue;
175
+ }
176
+ if (bal >= config.minSafeEth)
177
+ continue;
178
+ safes.push({
179
+ serviceIndex: svc.index,
180
+ safeAddress: safeAddr,
181
+ haveWei: bal.toString(),
182
+ needWei: (config.minSafeEth - bal).toString(),
183
+ asset: 'native',
184
+ reason: `Service ${svc.index} Safe needs native ETH to pay mech fees (each evaluation job sends 99 wei). ` +
185
+ `The daemon's balance-topup-loop auto-refills from master at runtime; funding it manually is ` +
186
+ `required only when running CLI verbs (submit-intent, acceptance gate) outside the daemon.`,
187
+ });
188
+ }
189
+ }
190
+ // Deduplicate reasons (rpc_unreachable can be appended multiple times).
191
+ const uniqueReasons = Array.from(new Set(reasons));
192
+ const partial = uniqueReasons.length > 0;
193
+ const satisfied = !master && safes.length === 0 && !partial;
194
+ return {
195
+ satisfied,
196
+ partial,
197
+ reasons: uniqueReasons,
198
+ master,
199
+ safes,
200
+ fleetState: fleetState ?? undefined,
201
+ };
202
+ }
203
+ //# sourceMappingURL=funding-plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"funding-plan.js","sourceRoot":"","sources":["../../src/earning/funding-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Legacy backfill: ERC-8004 IdentityRegistry mint for `complete` services
3
+ * that pre-date jinn-mono-j07.
4
+ *
5
+ * j07 added an `agent_registered` step to the bootstrap state machine,
6
+ * slotted between `mech_deployed` and `complete`. Operators that completed
7
+ * bootstrap BEFORE j07 landed have `state == 'complete' && agent_id == null`
8
+ * and are stuck — they cannot publish per-execution metadata via
9
+ * `setMetadata` (jinn-mono-3zk wires that, but it is gated on a non-null
10
+ * `agent_id`).
11
+ *
12
+ * This module detects such services and runs the agent-registration mint
13
+ * idempotently for each. It is safe to re-run: services that already have
14
+ * an `agent_id` are skipped, and a chain-side lookup recovers the existing
15
+ * agentId for any operator whose state file was lost but whose Safe still
16
+ * owns the NFT (per the entity-model decision record §4.1, the operator
17
+ * agent NFT is stable across executions / re-stakes — we MUST never
18
+ * mint a duplicate).
19
+ *
20
+ * Wired in two places:
21
+ * - daemon startup (`main.ts` after `bootstrap`), gated by
22
+ * `runLegacyMigrations` config flag (default true)
23
+ * - explicit CLI subcommand `jinn migrate-agent-id`
24
+ *
25
+ * Tracked as jinn-mono-jgp.
26
+ */
27
+ import { type Address, type PublicClient, type WalletClient } from 'viem';
28
+ import { type ChainConfig } from './contracts.js';
29
+ import { FleetStateStore } from './store.js';
30
+ import { type JinnOnchainNetwork } from './viem-clients.js';
31
+ import { deriveAgentSigner } from './wallet.js';
32
+ import type { ServiceState } from './types.js';
33
+ export interface MigrateAgentIdsDeps {
34
+ /** Persistence layer for fleet state. */
35
+ stateStore: FleetStateStore;
36
+ /** Resolved chain config (identity registry, RPC URL, chain ID). */
37
+ config: ChainConfig;
38
+ /** Network the chain config is for. */
39
+ network: JinnOnchainNetwork;
40
+ /** Decrypted HD mnemonic for the master wallet (used to derive agent signers). */
41
+ mnemonic: string;
42
+ /**
43
+ * Optional override for the public client (tests). Defaults to a fresh
44
+ * client built from `config.rpcUrl` + `network`.
45
+ */
46
+ publicClient?: PublicClient;
47
+ /**
48
+ * Optional factory for wallet clients (tests). Defaults to the production
49
+ * `createJinnWalletClient`. Receives the agent EOA private-key account.
50
+ */
51
+ walletClientFactory?: (account: ReturnType<typeof deriveAgentSigner>) => WalletClient;
52
+ /**
53
+ * Lower bound for the `Registered` event scan. Mainnet/testnet defaults are
54
+ * adequate; tests override to keep mocks compact. The scan walks forward
55
+ * from this block to `latest` in chunks.
56
+ */
57
+ scanFromBlock?: bigint;
58
+ /**
59
+ * Block-range chunk size for the `getLogs` scan. Defaults to 9_999n
60
+ * (under typical RPC limits like Alchemy's 10k cap).
61
+ */
62
+ scanChunkSize?: bigint;
63
+ }
64
+ export interface MigrateAgentIdsFailure {
65
+ service: ServiceState;
66
+ error: string;
67
+ }
68
+ export interface MigrateAgentIdsResult {
69
+ /** Services that were successfully migrated this run (state file updated). */
70
+ migrated: ServiceState[];
71
+ /** Services with `state == 'complete'` and `agent_id` already populated. */
72
+ skipped: ServiceState[];
73
+ /** Services that failed migration; the rest of the run continues. */
74
+ failed: MigrateAgentIdsFailure[];
75
+ }
76
+ /**
77
+ * Scan past `Registered(uint256 indexed agentId, string agentURI, address indexed owner)`
78
+ * events on the IdentityRegistry, filtered by indexed `owner`, and return
79
+ * the most recent agentId minted for that owner (or null if none).
80
+ *
81
+ * This is the duplicate-mint guard: per DR §4.1, the operator agent NFT
82
+ * is stable across executions and survives Safe rotation. If an
83
+ * operator's state file lost the `agent_id` (e.g. corrupted backup),
84
+ * we MUST recover the existing token rather than minting a new one.
85
+ *
86
+ * The scan uses the indexed `owner` topic so the RPC can return only
87
+ * matching logs cheaply. We chunk by `scanChunkSize` to stay under
88
+ * provider log-limit caps. The mint is one-shot per owner in our flow,
89
+ * so we expect 0 or 1 hits.
90
+ */
91
+ export declare function findAgentIdForOwner(publicClient: PublicClient, identityRegistry: Address, owner: Address, options?: {
92
+ fromBlock?: bigint;
93
+ chunkSize?: bigint;
94
+ }): Promise<{
95
+ agentId: string;
96
+ agentURI: string;
97
+ txHash: string;
98
+ } | null>;
99
+ /**
100
+ * Backfill `agent_id` on every service whose state is `complete` but
101
+ * which has no persisted agentId.
102
+ *
103
+ * Behaviour:
104
+ * - `state == 'complete' && agent_id == null` → migrated (recover existing
105
+ * NFT from chain if the agent EOA already owns one, else mint a new one).
106
+ * - `state == 'complete' && agent_id != null` → skipped.
107
+ * - any other step → ignored (the normal `stepRegisterAgent` path handles
108
+ * them when bootstrap resumes).
109
+ *
110
+ * Failures are isolated per service; one mint reverting does not abort
111
+ * the rest of the migration.
112
+ */
113
+ export declare function migrateAgentIds(deps: MigrateAgentIdsDeps): Promise<MigrateAgentIdsResult>;
114
+ /**
115
+ * Convenience wrapper: build deps from a config-shaped object + password
116
+ * and run the migration. Used by main.ts (daemon startup) and the CLI
117
+ * subcommand. Tests call `migrateAgentIds` directly with mocked deps.
118
+ */
119
+ export interface RunLegacyAgentIdMigrationOptions {
120
+ earningDir: string;
121
+ network: JinnOnchainNetwork;
122
+ rpcUrl: string;
123
+ password: string;
124
+ testnetL2DeploymentPath?: string;
125
+ testnetL2TokenDeploymentPath?: string;
126
+ testnetMechDeploymentPath?: string;
127
+ testnetStolasDeploymentPath?: string;
128
+ testnetClaimRegistryDeploymentPath?: string;
129
+ }
130
+ export declare function runLegacyAgentIdMigration(options: RunLegacyAgentIdMigrationOptions): Promise<MigrateAgentIdsResult>;
@@ -0,0 +1,257 @@
1
+ /**
2
+ * Legacy backfill: ERC-8004 IdentityRegistry mint for `complete` services
3
+ * that pre-date jinn-mono-j07.
4
+ *
5
+ * j07 added an `agent_registered` step to the bootstrap state machine,
6
+ * slotted between `mech_deployed` and `complete`. Operators that completed
7
+ * bootstrap BEFORE j07 landed have `state == 'complete' && agent_id == null`
8
+ * and are stuck — they cannot publish per-execution metadata via
9
+ * `setMetadata` (jinn-mono-3zk wires that, but it is gated on a non-null
10
+ * `agent_id`).
11
+ *
12
+ * This module detects such services and runs the agent-registration mint
13
+ * idempotently for each. It is safe to re-run: services that already have
14
+ * an `agent_id` are skipped, and a chain-side lookup recovers the existing
15
+ * agentId for any operator whose state file was lost but whose Safe still
16
+ * owns the NFT (per the entity-model decision record §4.1, the operator
17
+ * agent NFT is stable across executions / re-stakes — we MUST never
18
+ * mint a duplicate).
19
+ *
20
+ * Wired in two places:
21
+ * - daemon startup (`main.ts` after `bootstrap`), gated by
22
+ * `runLegacyMigrations` config flag (default true)
23
+ * - explicit CLI subcommand `jinn migrate-agent-id`
24
+ *
25
+ * Tracked as jinn-mono-jgp.
26
+ */
27
+ import { decodeEventLog, encodeFunctionData, getAddress, parseAbiItem, } from 'viem';
28
+ import { EVENT_TOPICS, IDENTITY_REGISTRY_ABI, IDENTITY_REGISTRY_ADDRESSES, getChainConfig, } from './contracts.js';
29
+ import { FleetStateStore } from './store.js';
30
+ import { createJinnPublicClient, createJinnWalletClient, } from './viem-clients.js';
31
+ import { decryptMnemonic, deriveAgentSigner, } from './wallet.js';
32
+ import { viemSendTransactionWithRetry, waitForTransactionReceiptWithRetry, } from '../tx-retry.js';
33
+ const REGISTERED_TOPIC = EVENT_TOPICS.Registered;
34
+ /**
35
+ * Typed `Registered` event item for `publicClient.getLogs({ event, args })`.
36
+ * The runtime topic hash is identical to `EVENT_TOPICS.Registered` (both are
37
+ * `keccak256(stringToBytes('Registered(uint256,string,address)'))`).
38
+ */
39
+ const REGISTERED_EVENT = parseAbiItem('event Registered(uint256 indexed agentId, string agentURI, address indexed owner)');
40
+ /**
41
+ * Scan past `Registered(uint256 indexed agentId, string agentURI, address indexed owner)`
42
+ * events on the IdentityRegistry, filtered by indexed `owner`, and return
43
+ * the most recent agentId minted for that owner (or null if none).
44
+ *
45
+ * This is the duplicate-mint guard: per DR §4.1, the operator agent NFT
46
+ * is stable across executions and survives Safe rotation. If an
47
+ * operator's state file lost the `agent_id` (e.g. corrupted backup),
48
+ * we MUST recover the existing token rather than minting a new one.
49
+ *
50
+ * The scan uses the indexed `owner` topic so the RPC can return only
51
+ * matching logs cheaply. We chunk by `scanChunkSize` to stay under
52
+ * provider log-limit caps. The mint is one-shot per owner in our flow,
53
+ * so we expect 0 or 1 hits.
54
+ */
55
+ export async function findAgentIdForOwner(publicClient, identityRegistry, owner, options = {}) {
56
+ const fromBlock = options.fromBlock ?? 0n;
57
+ const chunkSize = options.chunkSize ?? 9999n;
58
+ const latest = await publicClient.getBlockNumber();
59
+ for (let start = fromBlock; start <= latest; start += chunkSize + 1n) {
60
+ const end = start + chunkSize > latest ? latest : start + chunkSize;
61
+ const logs = await publicClient.getLogs({
62
+ address: identityRegistry,
63
+ event: REGISTERED_EVENT,
64
+ args: { owner },
65
+ fromBlock: start,
66
+ toBlock: end,
67
+ });
68
+ for (const log of logs) {
69
+ const args = log.args;
70
+ if (args.agentId === undefined)
71
+ continue;
72
+ return {
73
+ agentId: args.agentId.toString(),
74
+ agentURI: args.agentURI ?? '',
75
+ txHash: log.transactionHash ?? '',
76
+ };
77
+ }
78
+ }
79
+ return null;
80
+ }
81
+ /**
82
+ * Parse `agentId` from a fresh `IdentityRegistry.register()` receipt.
83
+ * Mirrors `FleetBootstrapper.parseAgentIdFromReceipt` (private) so we
84
+ * don't have to re-export the bootstrap class for tests.
85
+ */
86
+ function parseAgentIdFromReceipt(receipt, identityRegistry) {
87
+ const target = identityRegistry.toLowerCase();
88
+ for (const log of receipt.logs) {
89
+ if (log.address.toLowerCase() !== target)
90
+ continue;
91
+ if (log.topics[0] !== REGISTERED_TOPIC)
92
+ continue;
93
+ try {
94
+ const decoded = decodeEventLog({
95
+ abi: IDENTITY_REGISTRY_ABI,
96
+ data: log.data,
97
+ topics: log.topics,
98
+ strict: false,
99
+ });
100
+ if (decoded.eventName !== 'Registered')
101
+ continue;
102
+ if (!('agentId' in decoded.args))
103
+ continue;
104
+ return {
105
+ agentId: decoded.args.agentId.toString(),
106
+ agentURI: 'agentURI' in decoded.args ? String(decoded.args.agentURI ?? '') : '',
107
+ };
108
+ }
109
+ catch {
110
+ // Not a matching event
111
+ }
112
+ }
113
+ return null;
114
+ }
115
+ /**
116
+ * Mint a fresh ERC-8004 agent NFT for the agent EOA derived at the
117
+ * given fleet service index. Used only when the chain-side lookup
118
+ * confirms no existing token. Returns the parsed agentId + tx hash.
119
+ *
120
+ * Mirrors `FleetBootstrapper.stepRegisterAgent` (private), but does
121
+ * NOT mutate the persisted `step` — the migration writes only to the
122
+ * agent_id / agent_uri / identity_registry_address / agent_registered_tx
123
+ * fields and leaves `step` at `complete` so the daemon picks up
124
+ * normally.
125
+ */
126
+ async function mintAgentNftForOwner(publicClient, walletClient, account, identityRegistry) {
127
+ const agentURI = '';
128
+ const data = encodeFunctionData({
129
+ abi: IDENTITY_REGISTRY_ABI,
130
+ functionName: 'register',
131
+ args: [agentURI],
132
+ });
133
+ const txHash = await viemSendTransactionWithRetry(walletClient, publicClient, {
134
+ account: account,
135
+ to: identityRegistry,
136
+ data,
137
+ });
138
+ const receipt = await waitForTransactionReceiptWithRetry(publicClient, txHash);
139
+ if (receipt.status !== 'success') {
140
+ throw new Error(`IdentityRegistry.register() tx reverted (tx: ${txHash})`);
141
+ }
142
+ const parsed = parseAgentIdFromReceipt(receipt, identityRegistry);
143
+ if (parsed === null) {
144
+ throw new Error(`IdentityRegistry.register() succeeded but Registered event was not found (tx: ${txHash})`);
145
+ }
146
+ return { agentId: parsed.agentId, agentURI: parsed.agentURI, txHash };
147
+ }
148
+ /**
149
+ * Backfill `agent_id` on every service whose state is `complete` but
150
+ * which has no persisted agentId.
151
+ *
152
+ * Behaviour:
153
+ * - `state == 'complete' && agent_id == null` → migrated (recover existing
154
+ * NFT from chain if the agent EOA already owns one, else mint a new one).
155
+ * - `state == 'complete' && agent_id != null` → skipped.
156
+ * - any other step → ignored (the normal `stepRegisterAgent` path handles
157
+ * them when bootstrap resumes).
158
+ *
159
+ * Failures are isolated per service; one mint reverting does not abort
160
+ * the rest of the migration.
161
+ */
162
+ export async function migrateAgentIds(deps) {
163
+ const { stateStore, config, network, mnemonic } = deps;
164
+ const identityRegistry = config.identityRegistry
165
+ ?? IDENTITY_REGISTRY_ADDRESSES[config.chainId];
166
+ if (!identityRegistry) {
167
+ throw new Error(`IdentityRegistry address not configured for chainId=${config.chainId}; ` +
168
+ `update IDENTITY_REGISTRY_ADDRESSES in earning/contracts.ts.`);
169
+ }
170
+ const registryAddr = getAddress(identityRegistry);
171
+ const publicClient = deps.publicClient ?? createJinnPublicClient(config.rpcUrl, network);
172
+ const state = await stateStore.load(network);
173
+ const migrated = [];
174
+ const skipped = [];
175
+ const failed = [];
176
+ for (const svc of state.services) {
177
+ if (svc.step !== 'complete')
178
+ continue;
179
+ if (svc.agent_id) {
180
+ skipped.push(svc);
181
+ continue;
182
+ }
183
+ try {
184
+ const agentSigner = deriveAgentSigner(mnemonic, svc.index);
185
+ const agentEoa = getAddress(agentSigner.address);
186
+ // 1. Duplicate-mint guard: scan chain for an existing Registered
187
+ // event whose `owner` is this agent EOA. If found, recover
188
+ // instead of minting (DR §4.1).
189
+ const existing = await findAgentIdForOwner(publicClient, registryAddr, agentEoa, {
190
+ fromBlock: deps.scanFromBlock,
191
+ chunkSize: deps.scanChunkSize,
192
+ });
193
+ let agentId;
194
+ let agentURI;
195
+ let txHash;
196
+ if (existing) {
197
+ console.error(`[migrate-agent-id] Service ${svc.index}: recovered existing agentId=${existing.agentId} ` +
198
+ `for agent EOA ${agentEoa} (tx=${existing.txHash || 'unknown'}); no mint needed.`);
199
+ agentId = existing.agentId;
200
+ agentURI = existing.agentURI;
201
+ txHash = existing.txHash;
202
+ }
203
+ else {
204
+ console.error(`[migrate-agent-id] Service ${svc.index}: minting ERC-8004 agent NFT ` +
205
+ `(IdentityRegistry=${registryAddr}, agentEOA=${agentEoa})`);
206
+ const walletClient = deps.walletClientFactory?.(agentSigner)
207
+ ?? createJinnWalletClient(config.rpcUrl, network, agentSigner);
208
+ const minted = await mintAgentNftForOwner(publicClient, walletClient, agentSigner, registryAddr);
209
+ agentId = minted.agentId;
210
+ agentURI = minted.agentURI;
211
+ txHash = minted.txHash;
212
+ console.error(`[migrate-agent-id] Service ${svc.index}: minted agentId=${agentId} (tx=${txHash})`);
213
+ }
214
+ // Persist immediately. We deliberately leave `step: 'complete'` —
215
+ // the migration's job is purely to backfill the agent fields, not
216
+ // to rewind the state machine. The daemon (main.ts) reads agent_id
217
+ // from the loaded state and wires the IdentityPublisher accordingly.
218
+ await stateStore.updateService(svc.index, {
219
+ agent_id: agentId,
220
+ agent_uri: agentURI,
221
+ identity_registry_address: registryAddr,
222
+ agent_registered_tx: txHash || null,
223
+ // Keep safe_bound_to_agent at its persisted value (default false);
224
+ // setAgentWallet is tracked by jinn-mono-aev.
225
+ });
226
+ const refreshed = (await stateStore.load(network)).services.find(s => s.index === svc.index);
227
+ if (refreshed) {
228
+ migrated.push(refreshed);
229
+ }
230
+ }
231
+ catch (err) {
232
+ const message = err instanceof Error ? err.message : String(err);
233
+ console.error(`[migrate-agent-id] Service ${svc.index}: migration failed — ${message}`);
234
+ failed.push({ service: svc, error: message });
235
+ }
236
+ }
237
+ return { migrated, skipped, failed };
238
+ }
239
+ export async function runLegacyAgentIdMigration(options) {
240
+ const stateStore = new FleetStateStore(options.earningDir);
241
+ const config = getChainConfig(options.network, {
242
+ testnetL2DeploymentPath: options.testnetL2DeploymentPath,
243
+ testnetL2TokenDeploymentPath: options.testnetL2TokenDeploymentPath,
244
+ testnetMechDeploymentPath: options.testnetMechDeploymentPath,
245
+ testnetStolasDeploymentPath: options.testnetStolasDeploymentPath,
246
+ testnetClaimRegistryDeploymentPath: options.testnetClaimRegistryDeploymentPath,
247
+ });
248
+ config.rpcUrl = options.rpcUrl;
249
+ const mnemonic = await decryptMnemonic(await stateStore.loadMnemonicKeystore(), options.password);
250
+ return migrateAgentIds({
251
+ stateStore,
252
+ config,
253
+ network: options.network,
254
+ mnemonic,
255
+ });
256
+ }
257
+ //# sourceMappingURL=migrate-agent-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate-agent-id.js","sourceRoot":"","sources":["../../src/earning/migrate-agent-id.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,13 @@ import type { PublicClient } from 'viem';
14
14
  * address that will no longer be tracked so we can sweep it first.
15
15
  */
16
16
  export declare function previousSafeBeingAbandoned(svc: ServiceState, patch: Partial<ServiceState>): string | null;
17
+ /** An ERC-20 token to sweep from the abandoned Safe. */
18
+ export interface Erc20SweepToken {
19
+ /** Checksummed token contract address. */
20
+ address: string;
21
+ /** Human-readable symbol for log messages. */
22
+ symbol: string;
23
+ }
17
24
  export interface SweepOrphanedServiceFundsParams {
18
25
  rpcUrl: string;
19
26
  network: JinnOnchainNetwork;
@@ -25,6 +32,13 @@ export interface SweepOrphanedServiceFundsParams {
25
32
  agentAddress: string;
26
33
  abandonedSafeAddress: string;
27
34
  minAgentReserveWei: bigint;
35
+ /**
36
+ * ERC-20 tokens to sweep from the abandoned Safe (e.g. OLAS bond).
37
+ * Each token with a non-zero balance on the Safe will be transferred
38
+ * to `masterAddress` via Safe.execTransaction. If omitted, no ERC-20
39
+ * sweep is attempted.
40
+ */
41
+ erc20Tokens?: Erc20SweepToken[];
28
42
  }
29
43
  /**
30
44
  * Sweep ETH from an abandoned deployed Safe (via Safe.execTransaction) and excess