@fased/fased 0.1.62 → 0.1.65

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 (342) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/README.md +44 -29
  3. package/config/dependency-ownership.json +1 -1
  4. package/config/signer-policies/README.md +58 -0
  5. package/config/signer-policies/agent.json.template +32 -0
  6. package/config/signer-policies/mining.json.template +69 -0
  7. package/config/signer-policies/network.json.template +5 -0
  8. package/config/signer-policies/vault.json.template +70 -0
  9. package/config/signer-protocol-v2.json +78 -0
  10. package/config/typescript-noemit-baseline.json +680 -0
  11. package/dist/agents/auth-profiles/store.js +267 -31
  12. package/dist/agents/bash-tools.exec.js +10 -4
  13. package/dist/agents/current-model-catalog.js +3 -3
  14. package/dist/agents/memory-search.js +7 -1
  15. package/dist/agents/model-catalog-access.js +1 -2
  16. package/dist/agents/model-catalog-snapshot.js +1 -1
  17. package/dist/agents/model-catalog-source.js +1 -1
  18. package/dist/agents/model-metadata.js +1 -1
  19. package/dist/agents/model-selection.js +2 -28
  20. package/dist/agents/models-config.providers.js +6 -6
  21. package/dist/agents/pi-embedded-runner/compact.js +15 -7
  22. package/dist/agents/pi-embedded-runner/model.js +1 -1
  23. package/dist/agents/pi-embedded-runner/run/attempt.js +24 -13
  24. package/dist/agents/pi-embedded-runner/run.js +2 -0
  25. package/dist/agents/pi-embedded-runner/tool-split.js +40 -2
  26. package/dist/agents/pi-tool-definition-adapter.js +16 -1
  27. package/dist/agents/pi-tools.js +2 -1
  28. package/dist/agents/sandbox/config.js +1 -1
  29. package/dist/agents/sandbox/context.js +27 -2
  30. package/dist/agents/skills/env-overrides.js +38 -28
  31. package/dist/agents/skills/trust.js +93 -0
  32. package/dist/agents/skills/workspace.js +128 -0
  33. package/dist/agents/skills-clawhub.js +36 -11
  34. package/dist/agents/skills-marketplace-scan.js +49 -0
  35. package/dist/agents/tools/marketplace-offer-draft-tool.js +1 -1
  36. package/dist/agents/tools/mining-tool.js +1 -1
  37. package/dist/agents/tools/session-status-tool.js +1 -1
  38. package/dist/agents/tools/wallet-action-tool.js +172 -36
  39. package/dist/agents/tools/wallet-skill-policy.js +65 -23
  40. package/dist/agents/tools/wallet-tool.js +7 -11
  41. package/dist/auto-reply/reply/directive-handling.fast-lane.js +2 -1
  42. package/dist/auto-reply/reply/directive-handling.impl.js +2 -1
  43. package/dist/auto-reply/reply/directive-handling.model.js +2 -1
  44. package/dist/auto-reply/reply/directive-handling.persist.js +2 -2
  45. package/dist/auto-reply/reply/get-reply-directives-apply.js +2 -0
  46. package/dist/auto-reply/reply/get-reply-inline-actions.js +25 -1
  47. package/dist/auto-reply/reply/model-selection.js +7 -4
  48. package/dist/auto-reply/reply/session-reset-model.js +4 -4
  49. package/dist/brand.js +1 -1
  50. package/dist/build-info.json +3 -3
  51. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  52. package/dist/channel-web.js +2 -2
  53. package/dist/cli/gateway-cli/run.js +8 -0
  54. package/dist/cli/program/command-registry.js +1 -1
  55. package/dist/cli/program/register.onboard.js +2 -3
  56. package/dist/cli/program/register.wallet.js +16 -123
  57. package/dist/cli/providers-cli.js +1 -1
  58. package/dist/cli/sat-cli.js +129 -2
  59. package/dist/cli/update-cli/update-command.js +260 -11
  60. package/dist/commands/auth-choice.apply.api-providers.js +3 -3
  61. package/dist/commands/doctor-config-flow.js +1 -1
  62. package/dist/commands/doctor-legacy-config.js +2 -13
  63. package/dist/commands/model-picker.js +6 -6
  64. package/dist/commands/models/auth.js +1 -1
  65. package/dist/commands/onboard-auth.config-gateways.js +1 -1
  66. package/dist/commands/onboard-auth.credentials.js +32 -8
  67. package/dist/commands/onboard-non-interactive/local/wallet-config.js +28 -27
  68. package/dist/commands/onboard-non-interactive/local.js +5 -1
  69. package/dist/commands/wallet.js +568 -1911
  70. package/dist/config/config.js +2 -2
  71. package/dist/config/io.js +64 -2
  72. package/dist/config/schema.help.js +8 -7
  73. package/dist/config/schema.labels.js +5 -4
  74. package/dist/config/zod-schema.agent-runtime.js +1 -0
  75. package/dist/config/zod-schema.js +5 -0
  76. package/dist/control-ui/assets/{app-DLil9VO1.js → app-MaQnPa5G.js} +1511 -1555
  77. package/dist/control-ui/assets/{config-CU5Zi8Dh.js → config-LeImukCW.js} +10 -10
  78. package/dist/control-ui/assets/{federation-D10Q4eP_.js → federation-DgA9e-Pn.js} +364 -422
  79. package/dist/control-ui/assets/{index-DdE_NIXo.js → index-D4YMr1fA.js} +3 -3
  80. package/dist/control-ui/assets/mining-commit-DFpB_4JN.js +2 -0
  81. package/dist/control-ui/assets/{mining-BdhMn18r.js → mining-qMYs4aD-.js} +70 -50
  82. package/dist/control-ui/assets/{open-external-url-DwSiwMPl.js → open-external-url-ulF1B-sA.js} +3 -3
  83. package/dist/control-ui/assets/{providers-QMn4w2_f.js → providers-CIx9fxc6.js} +2 -2
  84. package/dist/control-ui/assets/{wallet-C2g294QT.js → wallet-DvStR_AT.js} +259 -377
  85. package/dist/control-ui/index.html +1 -1
  86. package/dist/control-ui/version.json +1 -1
  87. package/dist/daemon/systemd-system.js +56 -50
  88. package/dist/extensions/sat-mining/src/protocol-contract.js +43 -3
  89. package/dist/extensions/sat-mining/src/rpc-read.js +291 -84
  90. package/dist/extensions/sat-mining/src/sat-bond-layout.js +5 -2
  91. package/dist/extensions/sat-mining/src/signer-codec-manifest.js +406 -0
  92. package/dist/extensions/sat-mining/src/solana-submit.js +1274 -390
  93. package/dist/extensions/sat-mining/src/submission-ledger.js +349 -0
  94. package/dist/federation/auto-connect.js +98 -8
  95. package/dist/federation/marketplace-capability-adapter.js +33 -7
  96. package/dist/federation/marketplace-delivery-outbox.js +196 -0
  97. package/dist/federation/marketplace-delivery.js +351 -215
  98. package/dist/federation/marketplace-direct-payment.js +272 -141
  99. package/dist/federation/marketplace-escrow.js +607 -249
  100. package/dist/federation/marketplace-settlement-ledger.js +352 -0
  101. package/dist/federation/offers.js +9 -7
  102. package/dist/federation/peer-auth-v2.js +529 -0
  103. package/dist/gateway/a2a-http.js +425 -96
  104. package/dist/gateway/a2a-settlement.js +259 -153
  105. package/dist/gateway/a2a-task-store.js +524 -0
  106. package/dist/gateway/auth.js +38 -2
  107. package/dist/gateway/config-reload.js +46 -33
  108. package/dist/gateway/durable-capacity.js +31 -0
  109. package/dist/gateway/federation-http.js +540 -135
  110. package/dist/gateway/federation-marketplace-run-store.js +397 -0
  111. package/dist/gateway/federation-marketplace.js +535 -230
  112. package/dist/gateway/mutating-admin-rpc-rate-limit.js +5 -0
  113. package/dist/gateway/security-path.js +1 -1
  114. package/dist/gateway/server-http.js +1084 -1205
  115. package/dist/gateway/server-methods/models.js +1 -1
  116. package/dist/gateway/server-methods/secrets.js +40 -0
  117. package/dist/gateway/server-methods.js +1 -2
  118. package/dist/gateway/server-reload-handlers.js +196 -66
  119. package/dist/gateway/server-runtime-config.js +1 -1
  120. package/dist/gateway/server-secrets-runtime.js +288 -0
  121. package/dist/gateway/server.impl.js +73 -42
  122. package/dist/gateway/sessions-patch.js +3 -5
  123. package/dist/index.js +4 -2
  124. package/dist/infra/fasedhub.js +64 -1
  125. package/dist/infra/local-source-paired-update.js +538 -0
  126. package/dist/infra/restart.js +41 -10
  127. package/dist/infra/update-runner.js +96 -0
  128. package/dist/light-update-status.js +11 -11
  129. package/dist/memory/backend-config.js +2 -1
  130. package/dist/memory/session-files.js +16 -2
  131. package/dist/plugin-sdk/{accounts-DxblobYM.js → accounts-Brn3-uWN.js} +1 -1
  132. package/dist/plugin-sdk/{actions-D4UNimWa.js → actions-DRu135h0.js} +2 -2
  133. package/dist/plugin-sdk/{active-listener-CFuy106s.js → active-listener-B_NMtgPL.js} +1 -1
  134. package/dist/plugin-sdk/{audio-preflight-Bwi2Oq03.js → audio-preflight-I4IngVlJ.js} +27 -27
  135. package/dist/plugin-sdk/{audit-Cs0K7LBp.js → audit-C5d2z5U1.js} +1 -1
  136. package/dist/plugin-sdk/{channel-access-D5aHoTY8.js → channel-access-CcFRdRPO.js} +1 -1
  137. package/dist/plugin-sdk/{channel-access-configure-Dvch9mMQ.js → channel-access-configure-DaI5wevh.js} +1 -1
  138. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  139. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  140. package/dist/plugin-sdk/{chunk-B0FUGc5A.js → chunk-CyoyqpbG.js} +1 -1
  141. package/dist/plugin-sdk/{chunk-items-DzT4L4Ty.js → chunk-items-DLQ6_lLK.js} +1 -1
  142. package/dist/plugin-sdk/command-status.d.ts +2 -2
  143. package/dist/plugin-sdk/command-status.js +27 -27
  144. package/dist/plugin-sdk/{commands-registry-DmDRhRAU.js → commands-registry-BfqdEWdF.js} +2 -2
  145. package/dist/plugin-sdk/{common-CfUOowOp.js → common-HCcXU-NR.js} +1 -1
  146. package/dist/plugin-sdk/{config-mxULv0fQ.js → config-DlWVeLFB.js} +7113 -6877
  147. package/dist/plugin-sdk/{config-schema-BrkmtFxB.js → config-schema-D_8FVI1C.js} +6798 -3695
  148. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  149. package/dist/plugin-sdk/discord.d.ts +6 -6
  150. package/dist/plugin-sdk/discord.js +19 -19
  151. package/dist/plugin-sdk/file-lock.js +35 -4
  152. package/dist/plugin-sdk/{filesystem-manager-ZoHU8oA7.js → filesystem-manager-DoI8IBNF.js} +1 -1
  153. package/dist/plugin-sdk/{group-mentions-BHRff6j8.d.ts → group-mentions-q3hUTCt7.d.ts} +1 -1
  154. package/dist/plugin-sdk/{handle-action-DbVCF9HZ.js → handle-action-hvwapMKg.js} +13 -13
  155. package/dist/plugin-sdk/{helpers-BXbdgs5H.js → helpers-DMBU4oTo.js} +1 -1
  156. package/dist/plugin-sdk/{image-ops-D7jPxaph.js → image-ops-DQi0n_Tt.js} +1 -1
  157. package/dist/plugin-sdk/index.d.ts +21 -39
  158. package/dist/plugin-sdk/index.js +29 -29
  159. package/dist/plugin-sdk/{login-BRxww6nv.js → login-Ca583Okc.js} +3 -3
  160. package/dist/plugin-sdk/{login-qr-DJXsk9XH.js → login-qr-CGciBSNP.js} +3 -3
  161. package/dist/plugin-sdk/{manager-Y2S_5IlI.js → manager-BegWxNYX.js} +4 -4
  162. package/dist/plugin-sdk/{markdown-tables-DHLFQqaF.js → markdown-tables-DCOXEUfZ.js} +1 -1
  163. package/dist/plugin-sdk/{media-Czo4carg.js → media-CAdQF5TG.js} +47 -47
  164. package/dist/plugin-sdk/{memory-search-DTjIMw8J.js → memory-search-CrFPOeTH.js} +4 -1
  165. package/dist/plugin-sdk/{monitor-M_ta2lMc.js → monitor-B4KF4Kpo.js} +31 -31
  166. package/dist/plugin-sdk/{monitor-wYVncM9w.js → monitor-Bb6x1KAG.js} +32 -32
  167. package/dist/plugin-sdk/{openresponses-http-B2GmeSt4.js → openresponses-http-DCTO8JkL.js} +27 -27
  168. package/dist/plugin-sdk/{optional-runtime-dependency-DdMbxS24.js → optional-runtime-dependency-0dznm3ZO.js} +1 -1
  169. package/dist/plugin-sdk/{outbound-Db8mRN6P.js → outbound-BgVDdHxx.js} +6 -6
  170. package/dist/plugin-sdk/{outbound-attachment-BqFjcypb.js → outbound-attachment-QqTnIhZL.js} +2 -2
  171. package/dist/plugin-sdk/{pairing-message-B3GC_7CD.js → pairing-message-D0CoLHRJ.js} +1 -1
  172. package/dist/plugin-sdk/{pairing-message-B3bHYGaw.d.ts → pairing-message-DHPDFZbC.d.ts} +2 -2
  173. package/dist/plugin-sdk/{pairing-store-CQikgIbw.js → pairing-store-BChahgI2.js} +2 -2
  174. package/dist/plugin-sdk/{pi-model-discovery-CY3m5zJP.js → pi-model-discovery-BX_JLcEJ.js} +1 -1
  175. package/dist/plugin-sdk/{pi-model-discovery-runtime-DSh1T2pn.js → pi-model-discovery-runtime-DxTMz_XF.js} +2 -2
  176. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  177. package/dist/plugin-sdk/{pw-ai-AFUqn-tQ.js → pw-ai-natjh3rm.js} +3 -3
  178. package/dist/plugin-sdk/{qmd-manager-DSyx77KY.js → qmd-manager-CgRaTxUq.js} +1 -1
  179. package/dist/plugin-sdk/{query-expansion-CAI2kKLQ.js → query-expansion-BG3FgzF7.js} +14 -3
  180. package/dist/plugin-sdk/{replies-Fzh9PhXl.js → replies-ChYo5ZQM.js} +2 -2
  181. package/dist/plugin-sdk/{resolve-outbound-target-KpF3co6T.js → resolve-outbound-target-D-KGgHJZ.js} +1 -1
  182. package/dist/plugin-sdk/{resolve-route-CDl74O19.js → resolve-route-C8tvQm8Z.js} +1 -1
  183. package/dist/plugin-sdk/{retry-policy-D4uiqUOG.js → retry-policy-C6SjKjQA.js} +1 -1
  184. package/dist/plugin-sdk/{runtime-Bb6KRnCC.js → runtime-2B9_WKoI.js} +8 -3
  185. package/dist/plugin-sdk/{runtime-dependency-DLDmB94f.js → runtime-dependency-DczkvPxn.js} +2 -2
  186. package/dist/plugin-sdk/sat-runtime.d.ts +565 -309
  187. package/dist/plugin-sdk/sat-runtime.js +29 -29
  188. package/dist/plugin-sdk/{send-C4k4JuJN.js → send-B6KkGKZD.js} +6 -6
  189. package/dist/plugin-sdk/{send-D-uDKGIq.js → send-CFzGKJXo.js} +6 -6
  190. package/dist/plugin-sdk/{send-Du8ykP1k.js → send-DCO441U7.js} +8 -8
  191. package/dist/plugin-sdk/{send-5nFktR1n.js → send-gDoGA-7e.js} +5 -5
  192. package/dist/plugin-sdk/{send-Bfzf11VY.js → send-q9HXrSwK.js} +7 -7
  193. package/dist/plugin-sdk/{session-CS-Td9EM.js → session-DHD4ZKyG.js} +2 -2
  194. package/dist/plugin-sdk/{skill-commands-CFAlXWHk.js → skill-commands-FKEPLS7T.js} +201 -26
  195. package/dist/plugin-sdk/{slack-CxE1mfzj.js → slack-BHmvqgjH.js} +39 -39
  196. package/dist/plugin-sdk/{slack-actions-BcMkNv1Z.js → slack-actions-DhbMcp8M.js} +11 -11
  197. package/dist/plugin-sdk/slack.d.ts +6 -6
  198. package/dist/plugin-sdk/slack.js +9 -9
  199. package/dist/plugin-sdk/{sticker-cache-CGzGWu00.js → sticker-cache-By5AcorL.js} +3 -3
  200. package/dist/plugin-sdk/{tables-bFXyRpkx.js → tables-B3jr0Pvq.js} +1 -1
  201. package/dist/plugin-sdk/{targets-DH7a9lKB.js → targets-CtSbTxYX.js} +1 -1
  202. package/dist/plugin-sdk/{telegram-actions-DaEcYQ8r.js → telegram-actions-DGnBz1YT.js} +30 -30
  203. package/dist/plugin-sdk/telegram.d.ts +6 -6
  204. package/dist/plugin-sdk/telegram.js +8 -8
  205. package/dist/plugin-sdk/{thread-bindings.lifecycle-CgOvvdw8.js → thread-bindings.lifecycle-QbkNl-m6.js} +3 -3
  206. package/dist/plugin-sdk/{thread-bindings.state-CQpk44Hq.js → thread-bindings.state-D9hg_M1c.js} +2 -2
  207. package/dist/plugin-sdk/tmp-fased-dir-EJGTmL1Q.d.ts +486 -0
  208. package/dist/plugin-sdk/{types-vcJrC_uv.d.ts → types-BdwdFCD6.d.ts} +2 -3
  209. package/dist/plugin-sdk/{types-DFAW-n1J.d.ts → types-BrCpYMxn.d.ts} +2 -2
  210. package/dist/plugin-sdk/{types-DyhXnYUr.d.ts → types-D0kDG8l0.d.ts} +3 -2
  211. package/dist/plugin-sdk/{types.plugin-_fbu40Re.d.ts → types.plugin-BcSBq42x.d.ts} +8 -3
  212. package/dist/plugin-sdk/{web-CInY-lCv.js → web-DUJwrTYs.js} +32 -32
  213. package/dist/plugin-sdk/{whatsapp-actions-BtSc2CBv.js → whatsapp-actions-Bj_rOncr.js} +13 -13
  214. package/dist/plugin-sdk/{whatsapp-heartbeat-Bg9TuYzl.js → whatsapp-heartbeat-B1WHkJIg.js} +2 -2
  215. package/dist/plugin-sdk/whatsapp.d.ts +13 -13
  216. package/dist/plugin-sdk/whatsapp.js +12 -12
  217. package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
  218. package/dist/plugin-sdk/{zod-schema.providers-core-BEbNizPe.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +61 -61
  219. package/dist/providers/refresh.js +1 -1
  220. package/dist/providers/registry.js +1 -1
  221. package/dist/secrets/apply.js +1 -1
  222. package/dist/secrets/runtime.js +1 -1
  223. package/dist/wallet/external-submission-ledger.js +376 -0
  224. package/dist/wallet/legacy-embedded-keystore.js +40 -0
  225. package/dist/wallet/local-socket-signer-archive.js +30 -0
  226. package/dist/wallet/local-socket-signer-lifecycle.js +97 -0
  227. package/dist/wallet/local-socket-signer-policy.js +166 -0
  228. package/dist/wallet/local-socket-signer-protocol.js +578 -117
  229. package/dist/wallet/native-signer-wallet-id.js +25 -0
  230. package/dist/wallet/providers/alchemy-adapter.js +3 -0
  231. package/dist/wallet/providers/local-socket-signer-adapter.js +380 -105
  232. package/dist/wallet/providers/turnkey-adapter.js +292 -34
  233. package/dist/wallet/providers/wallet-standard-adapter.js +100 -0
  234. package/dist/wallet/signer-network-admin.js +184 -0
  235. package/dist/wallet/signer-protocol-v2.generated.js +92 -0
  236. package/dist/wallet/solana-bond-signing.js +157 -69
  237. package/dist/wallet/solana-reviewed-transaction.js +375 -0
  238. package/dist/wallet/solana-swap.js +520 -64
  239. package/dist/wallet/solana-transaction-inspection.js +106 -4
  240. package/dist/wallet/solana-trigger.js +658 -320
  241. package/dist/wallet/turnkey-reviewed-state.js +370 -0
  242. package/dist/wallet/wallet-approval-auth.js +17 -28
  243. package/dist/wallet/wallet-atomic-state.js +53 -0
  244. package/dist/wallet/wallet-canary.js +0 -1
  245. package/dist/wallet/wallet-inbound-events.js +16 -11
  246. package/dist/wallet/wallet-policy-simulation.js +1 -1
  247. package/dist/wallet/wallet-policy.js +93 -37
  248. package/dist/wallet/wallet-provider-capabilities.js +28 -4
  249. package/dist/wallet/wallet-provider-registry.js +57 -44
  250. package/dist/wallet/wallet-provider-resolver.js +62 -63
  251. package/dist/wallet/wallet-runtime-config.js +28 -41
  252. package/dist/wallet/wallet-secrets-store.js +22 -0
  253. package/dist/wallet/wallet-send-approvals.js +1891 -589
  254. package/dist/wallet/wallet-send-execution-ledger.js +292 -0
  255. package/dist/wallet/wallet-settlement-links.js +14 -13
  256. package/dist/wallet/wallet-standard-review.js +353 -0
  257. package/dist/wallet/wallet-status.js +0 -9
  258. package/dist/wallet/wallet-task-ledger.js +16 -2
  259. package/dist/web/auto-reply/heartbeat-runner.js +1 -1
  260. package/dist/web/auto-reply/monitor.js +2 -2
  261. package/dist/wizard/host-security-capability.js +14 -23
  262. package/dist/wizard/onboarding.finalize.js +63 -184
  263. package/dist/wizard/onboarding.host-security.js +117 -1367
  264. package/dist/wizard/onboarding.js +172 -217
  265. package/dist/wizard/onboarding.wallet.js +232 -785
  266. package/extensions/acpx/package.json +1 -1
  267. package/extensions/bluebubbles/package.json +1 -1
  268. package/extensions/copilot-proxy/package.json +1 -1
  269. package/extensions/diagnostics-otel/package.json +1 -1
  270. package/extensions/fased-federation/package.json +1 -1
  271. package/extensions/google-gemini-cli-auth/package.json +1 -1
  272. package/extensions/imessage/package.json +1 -1
  273. package/extensions/irc/package.json +1 -1
  274. package/extensions/line/package.json +1 -1
  275. package/extensions/llm-task/package.json +1 -1
  276. package/extensions/lobster/package.json +1 -1
  277. package/extensions/matrix/CHANGELOG.md +18 -0
  278. package/extensions/matrix/package.json +1 -1
  279. package/extensions/mattermost/package.json +1 -1
  280. package/extensions/memory-core/package.json +2 -2
  281. package/extensions/memory-lancedb/package.json +1 -1
  282. package/extensions/minimax-portal-auth/package.json +1 -1
  283. package/extensions/msteams/CHANGELOG.md +18 -0
  284. package/extensions/msteams/package.json +1 -1
  285. package/extensions/nextcloud-talk/package.json +1 -1
  286. package/extensions/nostr/CHANGELOG.md +18 -0
  287. package/extensions/nostr/package.json +1 -1
  288. package/extensions/open-prose/package.json +1 -1
  289. package/extensions/sat-mining/index.ts +587 -154
  290. package/extensions/sat-mining/package.json +1 -1
  291. package/extensions/sat-mining/signer-codec-schema.v1.json +374 -0
  292. package/extensions/sat-mining/src/audit-store.ts +91 -5
  293. package/extensions/sat-mining/src/claim-service.ts +85 -14
  294. package/extensions/sat-mining/src/client.ts +13 -0
  295. package/extensions/sat-mining/src/config.ts +9 -0
  296. package/extensions/sat-mining/src/cycle-progress.ts +16 -8
  297. package/extensions/sat-mining/src/epoch-service.ts +9 -5
  298. package/extensions/sat-mining/src/gateway-runner.ts +21 -1
  299. package/extensions/sat-mining/src/protocol-contract.ts +45 -1
  300. package/extensions/sat-mining/src/recovery-service.ts +312 -0
  301. package/extensions/sat-mining/src/round-watcher.ts +391 -81
  302. package/extensions/sat-mining/src/rpc-read.ts +431 -106
  303. package/extensions/sat-mining/src/runtime.ts +16 -0
  304. package/extensions/sat-mining/src/sat-bond-layout.ts +6 -0
  305. package/extensions/sat-mining/src/signer-codec-manifest.ts +429 -0
  306. package/extensions/sat-mining/src/solana-submit.ts +1544 -436
  307. package/extensions/sat-mining/src/submission-ledger.ts +434 -0
  308. package/extensions/signal/package.json +1 -1
  309. package/extensions/synology-chat/package.json +1 -1
  310. package/extensions/tlon/package.json +1 -1
  311. package/extensions/twitch/CHANGELOG.md +18 -0
  312. package/extensions/twitch/package.json +1 -1
  313. package/extensions/voice-call/CHANGELOG.md +18 -0
  314. package/extensions/voice-call/package.json +1 -1
  315. package/extensions/zalo/CHANGELOG.md +18 -0
  316. package/extensions/zalo/package.json +1 -1
  317. package/extensions/zalouser/CHANGELOG.md +18 -0
  318. package/extensions/zalouser/package.json +1 -1
  319. package/install.sh +4951 -0
  320. package/package.json +23 -5
  321. package/scripts/fased-host-updater.mjs +1421 -0
  322. package/scripts/fased-host-updaterctl.mjs +186 -0
  323. package/scripts/fased-managed-service.sh +36 -0
  324. package/scripts/fased-managed-updater.mjs +3065 -156
  325. package/scripts/fased-signer-enroll-hosting.sh +275 -0
  326. package/scripts/fased-signer-network-hosting.sh +143 -0
  327. package/scripts/fased-signer-owner-policy.mjs +1442 -0
  328. package/scripts/fased-signer-policy-hosting.sh +50 -0
  329. package/scripts/fased-signer-policy-local.sh +26 -0
  330. package/scripts/hosted-release-manifest.mjs +185 -0
  331. package/scripts/install-fased-signerd.sh +183 -108
  332. package/scripts/install-managed-runtime.mjs +212 -10
  333. package/scripts/managed-runtime-layout.mjs +75 -3
  334. package/scripts/migrate-hosted-signer-v2.mjs +58 -0
  335. package/scripts/start-managed.sh +173 -360
  336. package/dist/control-ui/assets/mining-commit-R-6nu87p.js +0 -2
  337. package/dist/plugin-sdk/tmp-fased-dir-CS6zsYEE.d.ts +0 -77
  338. package/dist/wallet/local-socket-signer-broker.js +0 -224
  339. package/dist/wallet/local-socket-signer-custody.js +0 -42
  340. package/dist/wallet/providers/embedded-keystore-adapter.js +0 -402
  341. package/dist/wallet/providers/privy-adapter.js +0 -80
  342. package/dist/wallet/wallet-custody.js +0 -1836
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/sat-mining",
3
- "version": "0.1.62",
3
+ "version": "0.1.65",
4
4
  "private": true,
5
5
  "description": "SAT mining plugin scaffold for FasedAgent",
6
6
  "type": "module",
@@ -0,0 +1,374 @@
1
+ {
2
+ "version": 1,
3
+ "codecs": [
4
+ {
5
+ "action": "initializeCycle",
6
+ "family": "main",
7
+ "contractKey": "initializeCycle",
8
+ "discriminator": 38,
9
+ "dataLength": 105,
10
+ "accountShape": "SW,-W,-W,--",
11
+ "variable": ""
12
+ },
13
+ {
14
+ "action": "validatorAttestation",
15
+ "family": "main",
16
+ "contractKey": "submitValidatorAttestation",
17
+ "discriminator": 45,
18
+ "dataLength": 161,
19
+ "accountShape": "SW,-W,-W,-W,--",
20
+ "variable": ""
21
+ },
22
+ {
23
+ "action": "openDispute",
24
+ "family": "main",
25
+ "contractKey": "openDispute",
26
+ "discriminator": 46,
27
+ "dataLength": 89,
28
+ "accountShape": "SW,-W,-W,-W,--",
29
+ "variable": ""
30
+ },
31
+ {
32
+ "action": "resolveDispute",
33
+ "family": "main",
34
+ "contractKey": "resolveDispute",
35
+ "discriminator": 48,
36
+ "dataLength": 57,
37
+ "accountShape": "SW,--,-W,-W",
38
+ "variable": ""
39
+ },
40
+ {
41
+ "action": "republishEpochRoots",
42
+ "family": "main",
43
+ "contractKey": "republishEpochRoots",
44
+ "discriminator": 49,
45
+ "dataLength": 105,
46
+ "accountShape": "SW,--,-W",
47
+ "variable": ""
48
+ },
49
+ {
50
+ "action": "topUpRegistryReserve",
51
+ "family": "main",
52
+ "contractKey": "topUpRegistryReserve",
53
+ "discriminator": 84,
54
+ "dataLength": 9,
55
+ "accountShape": "SW,-W,--",
56
+ "variable": ""
57
+ },
58
+ {
59
+ "action": "openCycle",
60
+ "family": "main",
61
+ "contractKey": "openCycle",
62
+ "discriminator": 56,
63
+ "dataLength": 9,
64
+ "accountShape": "SW,-W,-W,-W,-W,-W,--,-W",
65
+ "variable": ""
66
+ },
67
+ {
68
+ "action": "initMinerCapital",
69
+ "family": "main",
70
+ "contractKey": "initMinerCapital",
71
+ "discriminator": 36,
72
+ "dataLength": 33,
73
+ "accountShape": "SW,-W,--",
74
+ "variable": ""
75
+ },
76
+ {
77
+ "action": "depositMinerCapital",
78
+ "family": "main",
79
+ "contractKey": "depositMinerCapital",
80
+ "discriminator": 37,
81
+ "dataLength": 9,
82
+ "accountShape": "SW,-W,--",
83
+ "variable": ""
84
+ },
85
+ {
86
+ "action": "withdrawMinerCapital",
87
+ "family": "main",
88
+ "contractKey": "withdrawMinerCapital",
89
+ "discriminator": 67,
90
+ "dataLength": 9,
91
+ "accountShape": "SW,-W,--",
92
+ "variable": ""
93
+ },
94
+ {
95
+ "action": "setActiveCommit",
96
+ "family": "main",
97
+ "contractKey": "setActiveCommit",
98
+ "discriminator": 68,
99
+ "dataLength": 9,
100
+ "accountShape": "SW,-W",
101
+ "variable": ""
102
+ },
103
+ {
104
+ "action": "commitCycle",
105
+ "family": "main",
106
+ "contractKey": "commitCycle",
107
+ "discriminator": 89,
108
+ "dataLength": 41,
109
+ "accountShape": "SW,-W,-W,-W,--",
110
+ "variable": ""
111
+ },
112
+ {
113
+ "action": "closeCommitPhase",
114
+ "family": "main",
115
+ "contractKey": "closeCommitPhase",
116
+ "discriminator": 90,
117
+ "dataLength": 9,
118
+ "accountShape": "S-,-W",
119
+ "variable": ""
120
+ },
121
+ {
122
+ "action": "sealCycleEntropy",
123
+ "family": "main",
124
+ "contractKey": "sealCycleEntropy",
125
+ "discriminator": 91,
126
+ "dataLength": 9,
127
+ "accountShape": "S-,-W,-W,--",
128
+ "variable": ""
129
+ },
130
+ {
131
+ "action": "releaseUnrevealedCommit",
132
+ "family": "main",
133
+ "contractKey": "releaseUnrevealedCommit",
134
+ "discriminator": 93,
135
+ "dataLength": 41,
136
+ "accountShape": "S-,-W,-W,-W,-W,-W",
137
+ "variable": ""
138
+ },
139
+ {
140
+ "action": "abortEmptyCycle",
141
+ "family": "main",
142
+ "contractKey": "abortEmptyCycle",
143
+ "discriminator": 94,
144
+ "dataLength": 9,
145
+ "accountShape": "S-,-W,-W",
146
+ "variable": ""
147
+ },
148
+ {
149
+ "action": "revealCycle",
150
+ "family": "main",
151
+ "contractKey": "revealCycle",
152
+ "discriminator": 92,
153
+ "dataLength": 145,
154
+ "accountShape": "SW,-W,-W,-W,-W,-W,-W,-W,-W,--",
155
+ "variable": ""
156
+ },
157
+ {
158
+ "action": "settleCyclePage",
159
+ "family": "main",
160
+ "contractKey": "settleCyclePage",
161
+ "discriminator": 63,
162
+ "dataLength": 25,
163
+ "accountShape": "SW,--,-W,--,--,-W,-W,-W,--,--,-W,-W",
164
+ "variable": "minerCycles"
165
+ },
166
+ {
167
+ "action": "finalizeCycleSettlement",
168
+ "family": "main",
169
+ "contractKey": "finalizeCycleSettlement",
170
+ "discriminator": 64,
171
+ "dataLength": 9,
172
+ "accountShape": "SW,-W,-W,-W,-W,-W,--,-W,-W",
173
+ "variable": "registryPages"
174
+ },
175
+ {
176
+ "action": "scoreCyclePage",
177
+ "family": "main",
178
+ "contractKey": "scoreCyclePage",
179
+ "discriminator": 65,
180
+ "dataLength": 25,
181
+ "accountShape": "SW,--,--,--,-W,-W,--,-W,-W",
182
+ "variable": "minerCycles"
183
+ },
184
+ {
185
+ "action": "distributeCyclePage",
186
+ "family": "main",
187
+ "contractKey": "distributeCyclePage",
188
+ "discriminator": 66,
189
+ "dataLength": 25,
190
+ "accountShape": "SW,-W,--,-W,--,-W,--,-W,-W,-W",
191
+ "variable": "minerCyclePairs"
192
+ },
193
+ {
194
+ "action": "claimCycleRewards",
195
+ "family": "main",
196
+ "contractKey": "claimCycleRewards",
197
+ "discriminator": 59,
198
+ "dataLength": 9,
199
+ "accountShape": "SW,-W,-W,-W,-W,-W,-W,-W,-W,-W,--,--,--,--,-W",
200
+ "variable": ""
201
+ },
202
+ {
203
+ "action": "claimCycleRewardsBatch",
204
+ "family": "main",
205
+ "contractKey": "claimCycleRewardsBatch",
206
+ "discriminator": 62,
207
+ "dataLength": -1,
208
+ "accountShape": "SW,--,-W,-W,-W,-W,-W,-W",
209
+ "variable": "claimBatch"
210
+ },
211
+ {
212
+ "action": "claimProtocolTreasury",
213
+ "family": "main",
214
+ "contractKey": "claimProtocolTreasury",
215
+ "discriminator": 77,
216
+ "dataLength": 1,
217
+ "accountShape": "SW,--,-W,-W,-W,-W,-W,-W,-W,-W,--,--,--,--",
218
+ "variable": ""
219
+ },
220
+ {
221
+ "action": "refillRegistryReserveFromTreasury",
222
+ "family": "main",
223
+ "contractKey": "refillRegistryReserveFromTreasury",
224
+ "discriminator": 88,
225
+ "dataLength": 9,
226
+ "accountShape": "SW,-W,-W,-W,--",
227
+ "variable": ""
228
+ },
229
+ {
230
+ "action": "claimProtocolDistributorSat",
231
+ "family": "main",
232
+ "contractKey": "claimProtocolDistributorSat",
233
+ "discriminator": 85,
234
+ "dataLength": 1,
235
+ "accountShape": "SW,--,-W,-W,-W,-W,-W,-W,--,--,--,--,--",
236
+ "variable": ""
237
+ },
238
+ {
239
+ "action": "retargetUnlock",
240
+ "family": "main",
241
+ "contractKey": "retargetUnlock",
242
+ "discriminator": 60,
243
+ "dataLength": 9,
244
+ "accountShape": "SW,-W,--,-W",
245
+ "variable": ""
246
+ },
247
+ {
248
+ "action": "closeResolvedMinerCycleState",
249
+ "family": "main",
250
+ "contractKey": "closeResolvedMinerCycleState",
251
+ "discriminator": 69,
252
+ "dataLength": 9,
253
+ "accountShape": "SW,--,-W,-W,-W,-W",
254
+ "variable": ""
255
+ },
256
+ {
257
+ "action": "closeResolvedCycleRegistryPage",
258
+ "family": "main",
259
+ "contractKey": "closeResolvedCycleRegistryPage",
260
+ "discriminator": 70,
261
+ "dataLength": 17,
262
+ "accountShape": "SW,--,-W,-W,-W",
263
+ "variable": ""
264
+ },
265
+ {
266
+ "action": "closeResolvedCycleArtifacts",
267
+ "family": "main",
268
+ "contractKey": "closeResolvedCycleArtifacts",
269
+ "discriminator": 71,
270
+ "dataLength": 9,
271
+ "accountShape": "SW,-W,-W,-W,-W",
272
+ "variable": ""
273
+ },
274
+ {
275
+ "action": "compactPendingCycleRange",
276
+ "family": "main",
277
+ "contractKey": "compactPendingCycleRange",
278
+ "discriminator": 75,
279
+ "dataLength": 25,
280
+ "accountShape": "SW,-W",
281
+ "variable": "compactCycles"
282
+ },
283
+ {
284
+ "action": "updateBondTierPolicy",
285
+ "family": "bond",
286
+ "contractKey": "updateTierPolicy",
287
+ "discriminator": 1,
288
+ "dataLength": 65,
289
+ "accountShape": "SW,-W",
290
+ "variable": ""
291
+ },
292
+ {
293
+ "action": "openBondPosition",
294
+ "family": "bond",
295
+ "contractKey": "openBondPosition",
296
+ "discriminator": 2,
297
+ "dataLength": 9,
298
+ "accountShape": "SW,--,-W,-W,-W,-W,--,--,--",
299
+ "variable": ""
300
+ },
301
+ {
302
+ "action": "increaseBondPosition",
303
+ "family": "bond",
304
+ "contractKey": "increaseBondPosition",
305
+ "discriminator": 3,
306
+ "dataLength": 9,
307
+ "accountShape": "SW,--,-W,-W,-W,-W,--,--,--",
308
+ "variable": ""
309
+ },
310
+ {
311
+ "action": "requestBondUnlock",
312
+ "family": "bond",
313
+ "contractKey": "requestBondUnlock",
314
+ "discriminator": 4,
315
+ "dataLength": 1,
316
+ "accountShape": "SW,--,-W,-W,-W",
317
+ "variable": ""
318
+ },
319
+ {
320
+ "action": "cancelBondUnlock",
321
+ "family": "bond",
322
+ "contractKey": "cancelBondUnlock",
323
+ "discriminator": 5,
324
+ "dataLength": 1,
325
+ "accountShape": "SW,--,-W,-W,-W",
326
+ "variable": ""
327
+ },
328
+ {
329
+ "action": "finalizeBondUnlock",
330
+ "family": "bond",
331
+ "contractKey": "finalizeBondUnlock",
332
+ "discriminator": 6,
333
+ "dataLength": 1,
334
+ "accountShape": "SW,--,-W,-W,-W,-W,-W,-W,--,--,--",
335
+ "variable": ""
336
+ },
337
+ {
338
+ "action": "syncBondStakingRewards",
339
+ "family": "bond",
340
+ "contractKey": "syncStakingRewards",
341
+ "discriminator": 8,
342
+ "dataLength": 1,
343
+ "accountShape": "-W,--,--",
344
+ "variable": ""
345
+ },
346
+ {
347
+ "action": "syncBondStakingPosition",
348
+ "family": "bond",
349
+ "contractKey": "syncStakingPosition",
350
+ "discriminator": 9,
351
+ "dataLength": 1,
352
+ "accountShape": "SW,--,-W,-W,--,--",
353
+ "variable": ""
354
+ },
355
+ {
356
+ "action": "claimBondStakingRewards",
357
+ "family": "bond",
358
+ "contractKey": "claimStakingRewards",
359
+ "discriminator": 10,
360
+ "dataLength": 1,
361
+ "accountShape": "SW,--,-W,-W,--,-W,-W,-W,--,--,--",
362
+ "variable": ""
363
+ },
364
+ {
365
+ "action": "claimUnallocatedStakingRewards",
366
+ "family": "bond",
367
+ "contractKey": "claimUnallocatedStakingRewards",
368
+ "discriminator": 11,
369
+ "dataLength": 1,
370
+ "accountShape": "SW,-W,-W,-W,--,-W,--,--,--",
371
+ "variable": ""
372
+ }
373
+ ]
374
+ }
@@ -77,6 +77,7 @@ export type SatMiningRecentAction = {
77
77
  cycleId?: number | null;
78
78
  txHash: string | null;
79
79
  status: "success" | "failure";
80
+ complete?: boolean;
80
81
  message?: string | null;
81
82
  at: string;
82
83
  };
@@ -293,6 +294,11 @@ export type SatPersistedSettlementPageParticipants = {
293
294
  participants: string[];
294
295
  };
295
296
 
297
+ export type SatPersistedSettlementPageLookupTable = {
298
+ cacheKey: string;
299
+ lookupTableAddress: string;
300
+ };
301
+
296
302
  export type SatPersistedLastKnownStatus = {
297
303
  walletId: string | null;
298
304
  currentSolBalanceLamports: string | null;
@@ -316,7 +322,7 @@ export type SatPersistedLastKnownStatus = {
316
322
  export type SatPersistedChainTime = SatChainTimeState;
317
323
 
318
324
  type SatRuntimeStoreFile = {
319
- version: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
325
+ version: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;
320
326
  recentActions: SatMiningRecentAction[];
321
327
  archivedFailures?: SatMiningRecentAction[];
322
328
  plannerHistory?: SatPlannerOutcomeMemory[];
@@ -325,6 +331,7 @@ type SatRuntimeStoreFile = {
325
331
  roundExecution?: SatPersistedRoundExecution[];
326
332
  claimBacklog?: SatClaimBacklogEntry[];
327
333
  settlementPageParticipants?: SatPersistedSettlementPageParticipants[];
334
+ settlementPageLookupTables?: SatPersistedSettlementPageLookupTable[];
328
335
  workers?: Partial<Record<SatMiningWorkerName, SatMiningWorkerState>>;
329
336
  lastKnownStatus?: SatPersistedLastKnownStatus | null;
330
337
  chainTime?: SatPersistedChainTime | null;
@@ -346,6 +353,7 @@ type SatRuntimeSummary = {
346
353
  roundExecution: SatPersistedRoundExecution[];
347
354
  claimBacklog: SatClaimBacklogEntry[];
348
355
  settlementPageParticipants: SatPersistedSettlementPageParticipants[];
356
+ settlementPageLookupTables: SatPersistedSettlementPageLookupTable[];
349
357
  workers: Partial<Record<SatMiningWorkerName, SatMiningWorkerState>>;
350
358
  lastKnownStatus: SatPersistedLastKnownStatus | null;
351
359
  chainTime: SatPersistedChainTime | null;
@@ -617,6 +625,7 @@ function isValidSatRecentAction(entry: unknown): entry is SatMiningRecentAction
617
625
  (typeof candidate.cycleId === "number" && Number.isFinite(candidate.cycleId))) &&
618
626
  (candidate.txHash == null || typeof candidate.txHash === "string") &&
619
627
  (candidate.status === "success" || candidate.status === "failure") &&
628
+ (candidate.complete == null || typeof candidate.complete === "boolean") &&
620
629
  Number.isFinite(atMs)
621
630
  );
622
631
  }
@@ -727,8 +736,46 @@ function normalizeSatRoundExecutionState(
727
736
  if (!execution || typeof execution !== "object") {
728
737
  return null;
729
738
  }
739
+ const commitmentHex =
740
+ typeof execution.commitmentHex === "string" && /^[0-9a-f]{64}$/i.test(execution.commitmentHex)
741
+ ? execution.commitmentHex.toLowerCase()
742
+ : null;
743
+ const revealNonceBase64 = (() => {
744
+ if (typeof execution.revealNonceBase64 !== "string") {
745
+ return null;
746
+ }
747
+ try {
748
+ return Buffer.from(execution.revealNonceBase64, "base64").length === 32
749
+ ? execution.revealNonceBase64
750
+ : null;
751
+ } catch {
752
+ return null;
753
+ }
754
+ })();
755
+ const allocationFp =
756
+ Array.isArray(execution.allocationFp) &&
757
+ execution.allocationFp.length === 25 &&
758
+ execution.allocationFp.every(
759
+ (value) => Number.isSafeInteger(value) && value >= 0 && value <= 0xffff_ffff,
760
+ ) &&
761
+ execution.allocationFp.reduce((sum, value) => sum + value, 0) === 1_000_000
762
+ ? [...execution.allocationFp]
763
+ : null;
764
+ const commitLamports =
765
+ typeof execution.commitLamports === "number" &&
766
+ Number.isSafeInteger(execution.commitLamports) &&
767
+ execution.commitLamports > 0
768
+ ? execution.commitLamports
769
+ : null;
730
770
  return {
731
771
  openRoundSubmitted: execution.openRoundSubmitted === true,
772
+ commitSubmitted: execution.commitSubmitted === true,
773
+ commitmentHex,
774
+ revealNonceBase64,
775
+ allocationFp,
776
+ commitLamports,
777
+ entropyTargetPinned: execution.entropyTargetPinned === true,
778
+ entropySealed: execution.entropySealed === true,
732
779
  participationSubmitted: execution.participationSubmitted === true,
733
780
  epochFinalized: execution.epochFinalized === true,
734
781
  crankSubmitted: execution.crankSubmitted === true,
@@ -752,7 +799,10 @@ function trimSatRoundExecution(
752
799
  if (!parsedRoundKey || !execution) {
753
800
  continue;
754
801
  }
755
- if (!execution.participationSubmitted || execution.claimSubmitted) {
802
+ if (
803
+ (!execution.commitSubmitted && !execution.participationSubmitted) ||
804
+ execution.claimSubmitted
805
+ ) {
756
806
  continue;
757
807
  }
758
808
  deduped.set(entry.roundKey, {
@@ -870,6 +920,25 @@ function trimSettlementPageParticipants(
870
920
  return [...deduped.values()].slice(0, SAT_SETTLEMENT_PAGE_PARTICIPANT_CACHE_LIMIT);
871
921
  }
872
922
 
923
+ function trimSettlementPageLookupTables(
924
+ entries: readonly SatPersistedSettlementPageLookupTable[] | null | undefined,
925
+ ): SatPersistedSettlementPageLookupTable[] {
926
+ if (!Array.isArray(entries) || SAT_SETTLEMENT_PAGE_PARTICIPANT_CACHE_LIMIT <= 0) {
927
+ return [];
928
+ }
929
+ const deduped = new Map<string, SatPersistedSettlementPageLookupTable>();
930
+ for (const entry of entries) {
931
+ const cacheKey = typeof entry?.cacheKey === "string" ? entry.cacheKey.trim() : "";
932
+ const lookupTableAddress =
933
+ typeof entry?.lookupTableAddress === "string" ? entry.lookupTableAddress.trim() : "";
934
+ if (!cacheKey || !lookupTableAddress) {
935
+ continue;
936
+ }
937
+ deduped.set(cacheKey, { cacheKey, lookupTableAddress });
938
+ }
939
+ return [...deduped.values()].slice(0, SAT_SETTLEMENT_PAGE_PARTICIPANT_CACHE_LIMIT);
940
+ }
941
+
873
942
  function emptySatRuntimeSummary(): SatRuntimeSummary {
874
943
  return {
875
944
  recentActions: [],
@@ -880,6 +949,7 @@ function emptySatRuntimeSummary(): SatRuntimeSummary {
880
949
  roundExecution: [],
881
950
  claimBacklog: [],
882
951
  settlementPageParticipants: [],
952
+ settlementPageLookupTables: [],
883
953
  workers: normalizeSatWorkers(undefined),
884
954
  lastKnownStatus: null,
885
955
  chainTime: null,
@@ -907,6 +977,7 @@ function normalizeSatRuntimeSummary(parsed: Partial<SatRuntimeStoreFile>): SatRu
907
977
  roundExecution: trimSatRoundExecution(parsed.roundExecution),
908
978
  claimBacklog: trimSatClaimBacklog(parsed.claimBacklog),
909
979
  settlementPageParticipants: trimSettlementPageParticipants(parsed.settlementPageParticipants),
980
+ settlementPageLookupTables: trimSettlementPageLookupTables(parsed.settlementPageLookupTables),
910
981
  workers: normalizeSatWorkers(parsed.workers),
911
982
  lastKnownStatus: normalizeSatLastKnownStatus(parsed.lastKnownStatus),
912
983
  chainTime: normalizeSatChainTime(parsed.chainTime),
@@ -930,7 +1001,7 @@ async function persistSatRuntimeSummary(
930
1001
  summary: SatRuntimeSummary,
931
1002
  ): Promise<void> {
932
1003
  const payload: SatRuntimeStoreFile = {
933
- version: 10,
1004
+ version: 12,
934
1005
  recentActions: summary.recentActions,
935
1006
  archivedFailures: [],
936
1007
  plannerHistory: summary.plannerHistory,
@@ -939,6 +1010,7 @@ async function persistSatRuntimeSummary(
939
1010
  roundExecution: summary.roundExecution,
940
1011
  claimBacklog: summary.claimBacklog,
941
1012
  settlementPageParticipants: summary.settlementPageParticipants,
1013
+ settlementPageLookupTables: summary.settlementPageLookupTables,
942
1014
  workers: normalizeSatWorkers(summary.workers),
943
1015
  lastKnownStatus: normalizeSatLastKnownStatus(summary.lastKnownStatus),
944
1016
  chainTime: normalizeSatChainTime(summary.chainTime),
@@ -1051,7 +1123,9 @@ export async function readSatRecentActions(filePath: string): Promise<SatMiningR
1051
1123
  parsed.version !== 7 &&
1052
1124
  parsed.version !== 8 &&
1053
1125
  parsed.version !== 9 &&
1054
- parsed.version !== 10) ||
1126
+ parsed.version !== 10 &&
1127
+ parsed.version !== 11 &&
1128
+ parsed.version !== 12) ||
1055
1129
  !Array.isArray(parsed.recentActions)
1056
1130
  ) {
1057
1131
  return [];
@@ -1076,7 +1150,9 @@ export async function readSatRuntimeSummary(filePath: string): Promise<SatRuntim
1076
1150
  parsed.version !== 7 &&
1077
1151
  parsed.version !== 8 &&
1078
1152
  parsed.version !== 9 &&
1079
- parsed.version !== 10) ||
1153
+ parsed.version !== 10 &&
1154
+ parsed.version !== 11 &&
1155
+ parsed.version !== 12) ||
1080
1156
  !Array.isArray(parsed.recentActions)
1081
1157
  ) {
1082
1158
  return emptySatRuntimeSummary();
@@ -1111,6 +1187,12 @@ export async function readSatRuntimeSummary(filePath: string): Promise<SatRuntim
1111
1187
  (Array.isArray(parsed.settlementPageParticipants)
1112
1188
  ? parsed.settlementPageParticipants.length
1113
1189
  : 0);
1190
+ const hadSettlementPageLookupTables = Array.isArray(parsed.settlementPageLookupTables);
1191
+ const hadStaleSettlementPageLookupTables =
1192
+ normalized.settlementPageLookupTables.length !==
1193
+ (Array.isArray(parsed.settlementPageLookupTables)
1194
+ ? parsed.settlementPageLookupTables.length
1195
+ : 0);
1114
1196
  const hadWorkers =
1115
1197
  parsed.workers != null &&
1116
1198
  typeof parsed.workers === "object" &&
@@ -1132,6 +1214,8 @@ export async function readSatRuntimeSummary(filePath: string): Promise<SatRuntim
1132
1214
  hadStaleClaimBacklog ||
1133
1215
  !hadSettlementPageParticipants ||
1134
1216
  hadStaleSettlementPageParticipants ||
1217
+ !hadSettlementPageLookupTables ||
1218
+ hadStaleSettlementPageLookupTables ||
1135
1219
  !hadWorkers ||
1136
1220
  !hadLastKnownStatus ||
1137
1221
  !hadChainTime
@@ -1427,6 +1511,7 @@ export async function writeSatRecentActions(
1427
1511
  roundExecution?: readonly SatPersistedRoundExecution[];
1428
1512
  claimBacklog?: readonly SatClaimBacklogEntry[];
1429
1513
  settlementPageParticipants?: readonly SatPersistedSettlementPageParticipants[];
1514
+ settlementPageLookupTables?: readonly SatPersistedSettlementPageLookupTable[];
1430
1515
  workers?: Partial<Record<SatMiningWorkerName, SatMiningWorkerState>>;
1431
1516
  lastKnownStatus?: SatPersistedLastKnownStatus | null;
1432
1517
  chainTime?: SatPersistedChainTime | null;
@@ -1452,6 +1537,7 @@ export async function writeSatRecentActions(
1452
1537
  roundExecution: trimSatRoundExecution(summary?.roundExecution),
1453
1538
  claimBacklog: trimSatClaimBacklog(summary?.claimBacklog),
1454
1539
  settlementPageParticipants: trimSettlementPageParticipants(summary?.settlementPageParticipants),
1540
+ settlementPageLookupTables: trimSettlementPageLookupTables(summary?.settlementPageLookupTables),
1455
1541
  workers: normalizeSatWorkers(summary?.workers),
1456
1542
  lastKnownStatus: normalizeSatLastKnownStatus(summary?.lastKnownStatus),
1457
1543
  chainTime: normalizeSatChainTime(summary?.chainTime),