@fased/fased 0.1.64 → 0.1.66

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 (905) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +0 -0
  3. package/README.md +16 -9
  4. package/assets/avatar-placeholder.svg +0 -0
  5. package/assets/chrome-extension/README.md +0 -0
  6. package/assets/chrome-extension/background-utils.js +0 -0
  7. package/assets/chrome-extension/background.js +0 -0
  8. package/assets/chrome-extension/icons/icon128.png +0 -0
  9. package/assets/chrome-extension/icons/icon16.png +0 -0
  10. package/assets/chrome-extension/icons/icon32.png +0 -0
  11. package/assets/chrome-extension/icons/icon48.png +0 -0
  12. package/assets/chrome-extension/manifest.json +0 -0
  13. package/assets/chrome-extension/options-validation.js +0 -0
  14. package/assets/chrome-extension/options.html +0 -0
  15. package/assets/chrome-extension/options.js +0 -0
  16. package/config/official-external-plugin-catalog.json +0 -0
  17. package/config/sat-runtime.env +0 -0
  18. package/config/signer-policies/README.md +10 -1
  19. package/config/signer-protocol-v2.json +2 -0
  20. package/dist/acp/client.js +2 -2
  21. package/dist/acp/secret-file.js +2 -2
  22. package/dist/agents/agent-scope.js +2 -2
  23. package/dist/agents/apply-patch.js +8 -8
  24. package/dist/agents/auth-profiles/paths.js +2 -2
  25. package/dist/agents/auth-profiles/store.js +4 -4
  26. package/dist/agents/bash-tools.shared.js +2 -2
  27. package/dist/agents/cli-credentials.js +4 -4
  28. package/dist/agents/docs-path.js +3 -3
  29. package/dist/agents/embedded-pi-mcp.js +4 -4
  30. package/dist/agents/identity-avatar.js +3 -3
  31. package/dist/agents/identity-file.js +2 -2
  32. package/dist/agents/openai-codex-app-server.js +5 -5
  33. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  34. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  35. package/dist/agents/pi-model-discovery.js +6 -6
  36. package/dist/agents/pi-project-settings.js +3 -3
  37. package/dist/agents/sandbox/fs-bridge.js +2 -2
  38. package/dist/agents/session-dirs.js +4 -4
  39. package/dist/agents/session-write-lock.js +13 -13
  40. package/dist/agents/shell-utils.js +5 -5
  41. package/dist/agents/skills/bundled-dir.js +4 -4
  42. package/dist/agents/skills/local-loader.js +6 -6
  43. package/dist/agents/skills/plugin-skills.js +2 -2
  44. package/dist/agents/skills/trust.js +6 -6
  45. package/dist/agents/skills/workspace.js +22 -22
  46. package/dist/agents/skills-install-download.js +7 -7
  47. package/dist/agents/skills-install-plan.js +2 -2
  48. package/dist/agents/skills-install.js +2 -2
  49. package/dist/agents/skills-status.js +2 -2
  50. package/dist/agents/subagent-depth.js +2 -2
  51. package/dist/agents/system-prompt-params.js +2 -2
  52. package/dist/agents/workspace.js +22 -22
  53. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  54. package/dist/auto-reply/reply/agent-runner.js +2 -2
  55. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  56. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  57. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  58. package/dist/auto-reply/reply/session.js +3 -3
  59. package/dist/auto-reply/skill-commands.js +3 -3
  60. package/dist/auto-reply/status.js +6 -6
  61. package/dist/brand.js +1 -1
  62. package/dist/browser/chrome.executables.js +3 -3
  63. package/dist/browser/chrome.js +3 -3
  64. package/dist/browser/chrome.profile-decoration.js +6 -6
  65. package/dist/browser/profiles-service.js +2 -2
  66. package/dist/browser/server-context.js +2 -2
  67. package/dist/browser/trash.js +4 -4
  68. package/dist/build-info.json +3 -3
  69. package/dist/bundled/boot-md/HOOK.md +0 -0
  70. package/dist/bundled/bootstrap-extra-files/HOOK.md +0 -0
  71. package/dist/bundled/command-logger/HOOK.md +0 -0
  72. package/dist/bundled/session-memory/HOOK.md +0 -0
  73. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  74. package/dist/canvas-host/a2ui/index.html +0 -0
  75. package/dist/canvas-host/server.js +4 -4
  76. package/dist/capabilities/catalog.js +3 -3
  77. package/dist/channels/plugins/catalog.js +3 -3
  78. package/dist/cli/browser-cli-extension.js +6 -6
  79. package/dist/cli/command-format.js +2 -2
  80. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  81. package/dist/cli/dns-cli.js +9 -9
  82. package/dist/cli/gateway-cli/dev.js +5 -5
  83. package/dist/cli/gateway-cli/run.js +2 -2
  84. package/dist/cli/hooks-cli.js +5 -5
  85. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  86. package/dist/cli/memory-cli.js +7 -7
  87. package/dist/cli/nodes-media-utils.js +2 -2
  88. package/dist/cli/plugins-cli.js +2 -2
  89. package/dist/cli/secrets-cli.js +3 -3
  90. package/dist/cli/windows-argv.js +2 -2
  91. package/dist/commands/dashboard-link.js +3 -3
  92. package/dist/commands/doctor-install.js +5 -5
  93. package/dist/commands/doctor-memory-search.js +2 -2
  94. package/dist/commands/doctor-platform-notes.js +2 -2
  95. package/dist/commands/doctor-sandbox.js +2 -2
  96. package/dist/commands/doctor-state-integrity.js +23 -23
  97. package/dist/commands/doctor-workspace.js +3 -3
  98. package/dist/commands/doctor.js +3 -3
  99. package/dist/commands/managed-up.js +2 -2
  100. package/dist/commands/onboard-auth.credentials.js +3 -3
  101. package/dist/commands/onboarding/plugin-install.js +2 -2
  102. package/dist/commands/sessions-cleanup.js +2 -2
  103. package/dist/commands/signal-install.js +6 -6
  104. package/dist/commands/status-all/channels.js +2 -2
  105. package/dist/commands/wallet.js +10 -10
  106. package/dist/config/cache-utils.js +2 -2
  107. package/dist/config/includes.js +5 -5
  108. package/dist/config/io.js +2 -2
  109. package/dist/config/paths.js +3 -3
  110. package/dist/config/sat-runtime-ids.js +3 -3
  111. package/dist/config/sessions/disk-budget.js +6 -6
  112. package/dist/config/sessions/paths.js +2 -2
  113. package/dist/config/sessions/store.js +17 -17
  114. package/dist/config/sessions/transcript.js +4 -4
  115. package/dist/config/talk.js +2 -2
  116. package/dist/control-ui/apple-touch-icon.png +0 -0
  117. package/dist/control-ui/assets/{app-bR-fO5ty.js → app-DYxADzeH.js} +5 -5
  118. package/dist/control-ui/assets/{index-ckCxHwjy.js → index-vw_10Zeo.js} +3 -3
  119. package/dist/control-ui/assets/{mining-BgHFh0ei.js → mining-Dg-3ll0F.js} +69 -69
  120. package/dist/control-ui/boot-watchdog.js +0 -0
  121. package/dist/control-ui/fased-logo.svg +0 -0
  122. package/dist/control-ui/favicon-32.png +0 -0
  123. package/dist/control-ui/favicon.ico +0 -0
  124. package/dist/control-ui/favicon.svg +0 -0
  125. package/dist/control-ui/index.html +1 -1
  126. package/dist/control-ui/manifest.webmanifest +0 -0
  127. package/dist/control-ui/version.json +1 -1
  128. package/dist/cron/service/store.js +2 -2
  129. package/dist/cron/store.js +6 -6
  130. package/dist/daemon/systemd-system.js +5 -5
  131. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  132. package/dist/export-html/template.css +0 -0
  133. package/dist/export-html/template.html +0 -0
  134. package/dist/export-html/template.js +0 -0
  135. package/dist/export-html/vendor/highlight.min.js +0 -0
  136. package/dist/export-html/vendor/marked.min.js +0 -0
  137. package/dist/extensions/sat-mining/src/rpc-read.js +59 -20
  138. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  139. package/dist/extensions/sat-mining/src/solana-submit.js +396 -9
  140. package/dist/extensions/sat-mining/src/submission-ledger.js +24 -4
  141. package/dist/federation/marketplace-delivery-outbox.js +5 -5
  142. package/dist/federation/marketplace-settlement-ledger.js +4 -4
  143. package/dist/gateway/a2a-task-store.js +22 -22
  144. package/dist/gateway/control-ui-boot-check.js +6 -6
  145. package/dist/gateway/control-ui-login.js +7 -7
  146. package/dist/gateway/control-ui.js +9 -9
  147. package/dist/gateway/federation-marketplace-run-store.js +14 -14
  148. package/dist/gateway/hooks-mapping.js +4 -4
  149. package/dist/gateway/server-discovery.js +2 -2
  150. package/dist/gateway/server-http.js +4 -4
  151. package/dist/gateway/server-methods/chat.js +3 -3
  152. package/dist/gateway/server-methods/sessions.js +6 -6
  153. package/dist/gateway/server-methods/usage.js +2 -2
  154. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  155. package/dist/gateway/session-utils.fs.js +24 -24
  156. package/dist/gateway/session-utils.js +6 -6
  157. package/dist/hooks/bundled-dir.js +4 -4
  158. package/dist/hooks/gmail-setup-utils.js +6 -6
  159. package/dist/hooks/import-url.js +2 -2
  160. package/dist/hooks/loader.js +4 -4
  161. package/dist/hooks/workspace.js +7 -7
  162. package/dist/infra/archive.js +17 -17
  163. package/dist/infra/boundary-file-read.js +2 -2
  164. package/dist/infra/boundary-path.js +15 -15
  165. package/dist/infra/brew.js +2 -2
  166. package/dist/infra/control-ui-assets.js +14 -14
  167. package/dist/infra/device-auth-store.js +8 -8
  168. package/dist/infra/device-identity.js +8 -8
  169. package/dist/infra/dotenv.js +2 -2
  170. package/dist/infra/exec-approvals.js +8 -8
  171. package/dist/infra/exec-command-resolution.js +4 -4
  172. package/dist/infra/exec-safe-bin-trust.js +2 -2
  173. package/dist/infra/fased-root.js +5 -5
  174. package/dist/infra/fs-safe.js +14 -14
  175. package/dist/infra/gateway-lock.js +11 -11
  176. package/dist/infra/git-commit.js +5 -5
  177. package/dist/infra/git-root.js +4 -4
  178. package/dist/infra/hosted-runtime-artifact.js +3 -3
  179. package/dist/infra/is-main.js +2 -2
  180. package/dist/infra/json-file.js +7 -7
  181. package/dist/infra/managed-runtime-bootstrap.js +6 -6
  182. package/dist/infra/outbound/delivery-queue.js +16 -16
  183. package/dist/infra/path-env.js +3 -3
  184. package/dist/infra/ports-lsof.js +4 -4
  185. package/dist/infra/provider-usage.auth.js +3 -3
  186. package/dist/infra/safe-open-sync.js +2 -2
  187. package/dist/infra/session-cost-usage.js +9 -9
  188. package/dist/infra/shell-env.js +2 -2
  189. package/dist/infra/state-migrations.fs.js +6 -6
  190. package/dist/infra/state-migrations.js +23 -23
  191. package/dist/infra/tmp-fased-dir.js +6 -6
  192. package/dist/infra/widearea-dns.js +3 -3
  193. package/dist/infra/wsl.js +2 -2
  194. package/dist/line/accounts.js +2 -2
  195. package/dist/line/download.js +2 -2
  196. package/dist/logging/config.js +3 -3
  197. package/dist/logging/logger.js +7 -7
  198. package/dist/managed/federation.js +3 -3
  199. package/dist/managed/tunnel.js +3 -3
  200. package/dist/media/store.js +13 -13
  201. package/dist/media-understanding/runner.js +3 -3
  202. package/dist/memory/embeddings.js +2 -2
  203. package/dist/memory/internal.js +10 -10
  204. package/dist/memory/manager-sync-ops.js +7 -7
  205. package/dist/memory/repair-executor.js +17 -17
  206. package/dist/node-host/invoke-system-run-plan.js +8 -8
  207. package/dist/node-host/invoke.js +2 -2
  208. package/dist/node-host/runner.js +3 -3
  209. package/dist/pairing/pairing-store.js +3 -3
  210. package/dist/plugin-sdk/{audio-preflight-BYxAt775.js → audio-preflight-BFLoas5R.js} +1 -1
  211. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  212. package/dist/plugin-sdk/{chunk-items-DIRHG2gJ.js → chunk-items-TErs62MC.js} +1 -1
  213. package/dist/plugin-sdk/command-status.js +1 -1
  214. package/dist/plugin-sdk/{config-schema-BOT7kHb6.js → config-schema-BPnaDBwZ.js} +63 -8
  215. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  216. package/dist/plugin-sdk/discord.d.ts +3 -3
  217. package/dist/plugin-sdk/file-lock.js +10 -10
  218. package/dist/plugin-sdk/index.d.ts +4 -4
  219. package/dist/plugin-sdk/index.js +1 -1
  220. package/dist/plugin-sdk/json-store.js +6 -6
  221. package/dist/plugin-sdk/{monitor-BCFDaqJ-.js → monitor-FuBPk-AL.js} +3 -3
  222. package/dist/plugin-sdk/{monitor-BgbjRiPM.js → monitor-sW6dQdX1.js} +3 -3
  223. package/dist/plugin-sdk/{openresponses-http-DFf87SMM.js → openresponses-http-CVZq0H-P.js} +1 -1
  224. package/dist/plugin-sdk/{pairing-message-CS-9BHug.d.ts → pairing-message-L6L6L2YF.d.ts} +1 -1
  225. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  226. package/dist/plugin-sdk/sat-runtime.d.ts +69 -2
  227. package/dist/plugin-sdk/sat-runtime.js +1 -1
  228. package/dist/plugin-sdk/{slack-BUTt8cxK.js → slack-BZISDxDd.js} +3 -3
  229. package/dist/plugin-sdk/slack.d.ts +3 -3
  230. package/dist/plugin-sdk/{sticker-cache-D0wHVqjt.js → sticker-cache-B0aPv6Lg.js} +2 -2
  231. package/dist/plugin-sdk/{telegram-actions-CC_qN4v0.js → telegram-actions-H3gePEn6.js} +2 -2
  232. package/dist/plugin-sdk/telegram.d.ts +3 -3
  233. package/dist/plugin-sdk/{tmp-fased-dir-xOTGlzBE.d.ts → tmp-fased-dir-d1CmFAnJ.d.ts} +1 -1
  234. package/dist/plugin-sdk/{types-C3avNytw.d.ts → types-DUjYaWB2.d.ts} +3 -3
  235. package/dist/plugin-sdk/{types-DWfbSAaM.d.ts → types-xWjHXl1z.d.ts} +1 -1
  236. package/dist/plugin-sdk/{web-BXsJ1vqe.js → web-JwP9PAZR.js} +1 -1
  237. package/dist/plugin-sdk/whatsapp.d.ts +3 -3
  238. package/dist/plugins/bundled-dir.js +3 -3
  239. package/dist/plugins/discovery.js +11 -11
  240. package/dist/plugins/loader.js +13 -13
  241. package/dist/plugins/manifest-registry.js +2 -2
  242. package/dist/plugins/manifest.js +4 -4
  243. package/dist/plugins/path-safety.js +3 -3
  244. package/dist/plugins/status-cache.js +9 -9
  245. package/dist/plugins/update.js +3 -3
  246. package/dist/plugins/web-search-install-catalog.js +3 -3
  247. package/dist/secrets/apply.js +16 -16
  248. package/dist/secrets/audit.js +11 -11
  249. package/dist/secrets/shared.js +9 -9
  250. package/dist/security/scan-paths.js +2 -2
  251. package/dist/shared/config-eval.js +2 -2
  252. package/dist/shared/pid-alive.js +2 -2
  253. package/dist/tasks/standing-orders.js +5 -5
  254. package/dist/tasks/task-flow-registry.js +5 -5
  255. package/dist/tasks/task-registry.js +5 -5
  256. package/dist/tasks/workflow-definitions.js +6 -6
  257. package/dist/telegram/token.js +5 -5
  258. package/dist/utils.js +5 -5
  259. package/dist/wallet/external-submission-ledger.js +14 -14
  260. package/dist/wallet/local-socket-signer-protocol.js +52 -0
  261. package/dist/wallet/providers/local-socket-signer-adapter.js +3 -2
  262. package/dist/wallet/signer-network-admin.js +9 -3
  263. package/dist/wallet/signer-protocol-v2.generated.js +2 -0
  264. package/dist/wallet/solana-network-discovery.js +113 -0
  265. package/dist/wallet/turnkey-reviewed-state.js +14 -14
  266. package/dist/wallet/wallet-approval-auth.js +3 -3
  267. package/dist/wallet/wallet-atomic-state.js +12 -12
  268. package/dist/wallet/wallet-audit-log.js +5 -5
  269. package/dist/wallet/wallet-inbound-events.js +3 -3
  270. package/dist/wallet/wallet-observability.js +5 -5
  271. package/dist/wallet/wallet-policy.js +8 -6
  272. package/dist/wallet/wallet-provider-registry.js +7 -7
  273. package/dist/wallet/wallet-runtime-config.js +3 -3
  274. package/dist/wallet/wallet-secrets-store.js +22 -22
  275. package/dist/wallet/wallet-send-approvals.js +21 -21
  276. package/dist/wallet/wallet-send-execution-ledger.js +3 -3
  277. package/dist/wallet/wallet-settlement-links.js +3 -3
  278. package/dist/wallet/wallet-standard-review.js +14 -14
  279. package/dist/web/accounts.js +3 -3
  280. package/dist/web/auth-store.js +18 -18
  281. package/dist/web/session.js +4 -4
  282. package/dist/wizard/host-security-capability.js +3 -3
  283. package/dist/wizard/onboarding.host-security.js +3 -3
  284. package/dist/wizard/onboarding.js +17 -15
  285. package/dist/wizard/onboarding.wallet.js +27 -27
  286. package/docs/reference/templates/AGENTS.dev.md +0 -0
  287. package/docs/reference/templates/AGENTS.md +0 -0
  288. package/docs/reference/templates/BOOT.md +0 -0
  289. package/docs/reference/templates/BOOTSTRAP.md +0 -0
  290. package/docs/reference/templates/HEARTBEAT.md +0 -0
  291. package/docs/reference/templates/IDENTITY.dev.md +0 -0
  292. package/docs/reference/templates/IDENTITY.md +0 -0
  293. package/docs/reference/templates/SOUL.dev.md +0 -0
  294. package/docs/reference/templates/SOUL.md +0 -0
  295. package/docs/reference/templates/TOOLS.dev.md +0 -0
  296. package/docs/reference/templates/TOOLS.md +0 -0
  297. package/docs/reference/templates/USER.dev.md +0 -0
  298. package/docs/reference/templates/USER.md +0 -0
  299. package/extensions/acpx/fased.plugin.json +0 -0
  300. package/extensions/acpx/package.json +1 -1
  301. package/extensions/acpx/skills/acp-router/SKILL.md +0 -0
  302. package/extensions/acpx/src/config.ts +0 -0
  303. package/extensions/acpx/src/ensure.ts +0 -0
  304. package/extensions/acpx/src/mcp-readonly-tool-registry.ts +0 -0
  305. package/extensions/acpx/src/mcp-status-adapter.ts +0 -0
  306. package/extensions/acpx/src/runtime-internals/events.ts +0 -0
  307. package/extensions/acpx/src/runtime-internals/process.ts +0 -0
  308. package/extensions/acpx/src/runtime-internals/shared.ts +0 -0
  309. package/extensions/acpx/src/runtime.ts +0 -0
  310. package/extensions/acpx/src/service.ts +0 -0
  311. package/extensions/bluebubbles/README.md +0 -0
  312. package/extensions/bluebubbles/fased.plugin.json +0 -0
  313. package/extensions/bluebubbles/package.json +1 -1
  314. package/extensions/bluebubbles/src/account-resolve.ts +0 -0
  315. package/extensions/bluebubbles/src/accounts.ts +0 -0
  316. package/extensions/bluebubbles/src/actions.ts +0 -0
  317. package/extensions/bluebubbles/src/attachments.ts +0 -0
  318. package/extensions/bluebubbles/src/channel.ts +0 -0
  319. package/extensions/bluebubbles/src/chat.ts +0 -0
  320. package/extensions/bluebubbles/src/config-schema.ts +0 -0
  321. package/extensions/bluebubbles/src/history.ts +0 -0
  322. package/extensions/bluebubbles/src/media-send.ts +0 -0
  323. package/extensions/bluebubbles/src/monitor-normalize.ts +0 -0
  324. package/extensions/bluebubbles/src/monitor-processing.ts +0 -0
  325. package/extensions/bluebubbles/src/monitor-reply-cache.ts +0 -0
  326. package/extensions/bluebubbles/src/monitor-shared.ts +0 -0
  327. package/extensions/bluebubbles/src/monitor.ts +0 -0
  328. package/extensions/bluebubbles/src/multipart.ts +0 -0
  329. package/extensions/bluebubbles/src/onboarding.ts +0 -0
  330. package/extensions/bluebubbles/src/probe.ts +0 -0
  331. package/extensions/bluebubbles/src/reactions.ts +0 -0
  332. package/extensions/bluebubbles/src/request-url.ts +0 -0
  333. package/extensions/bluebubbles/src/runtime.ts +0 -0
  334. package/extensions/bluebubbles/src/send-helpers.ts +0 -0
  335. package/extensions/bluebubbles/src/send.ts +0 -0
  336. package/extensions/bluebubbles/src/targets.ts +0 -0
  337. package/extensions/bluebubbles/src/test-mocks.ts +0 -0
  338. package/extensions/bluebubbles/src/types.ts +0 -0
  339. package/extensions/copilot-proxy/README.md +0 -0
  340. package/extensions/copilot-proxy/fased.plugin.json +0 -0
  341. package/extensions/copilot-proxy/package.json +1 -1
  342. package/extensions/device-pair/fased.plugin.json +0 -0
  343. package/extensions/diagnostics-otel/fased.plugin.json +0 -0
  344. package/extensions/diagnostics-otel/package.json +1 -1
  345. package/extensions/diagnostics-otel/src/service.ts +0 -0
  346. package/extensions/fased-federation/README.md +0 -0
  347. package/extensions/fased-federation/fased.plugin.json +0 -0
  348. package/extensions/fased-federation/package.json +1 -1
  349. package/extensions/google-gemini-cli-auth/README.md +0 -0
  350. package/extensions/google-gemini-cli-auth/fased.plugin.json +0 -0
  351. package/extensions/google-gemini-cli-auth/oauth.ts +0 -0
  352. package/extensions/google-gemini-cli-auth/package.json +1 -1
  353. package/extensions/imessage/fased.plugin.json +0 -0
  354. package/extensions/imessage/package.json +1 -1
  355. package/extensions/imessage/src/channel.ts +0 -0
  356. package/extensions/imessage/src/runtime.ts +0 -0
  357. package/extensions/irc/fased.plugin.json +0 -0
  358. package/extensions/irc/package.json +1 -1
  359. package/extensions/irc/src/accounts.ts +0 -0
  360. package/extensions/irc/src/channel.ts +0 -0
  361. package/extensions/irc/src/client.ts +0 -0
  362. package/extensions/irc/src/config-schema.ts +0 -0
  363. package/extensions/irc/src/connect-options.ts +0 -0
  364. package/extensions/irc/src/control-chars.ts +0 -0
  365. package/extensions/irc/src/inbound.ts +0 -0
  366. package/extensions/irc/src/monitor.ts +0 -0
  367. package/extensions/irc/src/normalize.ts +0 -0
  368. package/extensions/irc/src/onboarding.ts +0 -0
  369. package/extensions/irc/src/policy.ts +0 -0
  370. package/extensions/irc/src/probe.ts +0 -0
  371. package/extensions/irc/src/protocol.ts +0 -0
  372. package/extensions/irc/src/runtime.ts +0 -0
  373. package/extensions/irc/src/send.ts +0 -0
  374. package/extensions/irc/src/types.ts +0 -0
  375. package/extensions/line/fased.plugin.json +0 -0
  376. package/extensions/line/package.json +1 -1
  377. package/extensions/line/src/card-command.ts +0 -0
  378. package/extensions/line/src/channel.ts +0 -0
  379. package/extensions/line/src/runtime.ts +0 -0
  380. package/extensions/llm-task/README.md +0 -0
  381. package/extensions/llm-task/fased.plugin.json +0 -0
  382. package/extensions/llm-task/package.json +1 -1
  383. package/extensions/lobster/README.md +0 -0
  384. package/extensions/lobster/SKILL.md +0 -0
  385. package/extensions/lobster/fased.plugin.json +0 -0
  386. package/extensions/lobster/package.json +1 -1
  387. package/extensions/lobster/src/test-helpers.ts +0 -0
  388. package/extensions/lobster/src/windows-spawn.ts +0 -0
  389. package/extensions/matrix/CHANGELOG.md +12 -0
  390. package/extensions/matrix/fased.plugin.json +0 -0
  391. package/extensions/matrix/package.json +1 -1
  392. package/extensions/matrix/src/actions.ts +0 -0
  393. package/extensions/matrix/src/channel.ts +0 -0
  394. package/extensions/matrix/src/config-schema.ts +0 -0
  395. package/extensions/matrix/src/directory-live.ts +0 -0
  396. package/extensions/matrix/src/group-mentions.ts +0 -0
  397. package/extensions/matrix/src/matrix/accounts.ts +0 -0
  398. package/extensions/matrix/src/matrix/actions/client.ts +0 -0
  399. package/extensions/matrix/src/matrix/actions/limits.ts +0 -0
  400. package/extensions/matrix/src/matrix/actions/messages.ts +0 -0
  401. package/extensions/matrix/src/matrix/actions/pins.ts +0 -0
  402. package/extensions/matrix/src/matrix/actions/reactions.ts +0 -0
  403. package/extensions/matrix/src/matrix/actions/room.ts +0 -0
  404. package/extensions/matrix/src/matrix/actions/summary.ts +0 -0
  405. package/extensions/matrix/src/matrix/actions/types.ts +0 -0
  406. package/extensions/matrix/src/matrix/actions.ts +0 -0
  407. package/extensions/matrix/src/matrix/active-client.ts +0 -0
  408. package/extensions/matrix/src/matrix/client/config.ts +0 -0
  409. package/extensions/matrix/src/matrix/client/create-client.ts +0 -0
  410. package/extensions/matrix/src/matrix/client/logging.ts +0 -0
  411. package/extensions/matrix/src/matrix/client/runtime.ts +0 -0
  412. package/extensions/matrix/src/matrix/client/shared.ts +0 -0
  413. package/extensions/matrix/src/matrix/client/storage.ts +0 -0
  414. package/extensions/matrix/src/matrix/client/types.ts +0 -0
  415. package/extensions/matrix/src/matrix/client-bootstrap.ts +0 -0
  416. package/extensions/matrix/src/matrix/client.ts +0 -0
  417. package/extensions/matrix/src/matrix/credentials.ts +0 -0
  418. package/extensions/matrix/src/matrix/deps.ts +0 -0
  419. package/extensions/matrix/src/matrix/format.ts +0 -0
  420. package/extensions/matrix/src/matrix/monitor/access-policy.ts +0 -0
  421. package/extensions/matrix/src/matrix/monitor/allowlist.ts +0 -0
  422. package/extensions/matrix/src/matrix/monitor/auto-join.ts +0 -0
  423. package/extensions/matrix/src/matrix/monitor/direct.ts +0 -0
  424. package/extensions/matrix/src/matrix/monitor/events.ts +0 -0
  425. package/extensions/matrix/src/matrix/monitor/handler.ts +0 -0
  426. package/extensions/matrix/src/matrix/monitor/inbound-body.ts +0 -0
  427. package/extensions/matrix/src/matrix/monitor/location.ts +0 -0
  428. package/extensions/matrix/src/matrix/monitor/media.ts +0 -0
  429. package/extensions/matrix/src/matrix/monitor/mentions.ts +0 -0
  430. package/extensions/matrix/src/matrix/monitor/replies.ts +0 -0
  431. package/extensions/matrix/src/matrix/monitor/room-info.ts +0 -0
  432. package/extensions/matrix/src/matrix/monitor/rooms.ts +0 -0
  433. package/extensions/matrix/src/matrix/monitor/threads.ts +0 -0
  434. package/extensions/matrix/src/matrix/monitor/types.ts +0 -0
  435. package/extensions/matrix/src/matrix/poll-types.ts +0 -0
  436. package/extensions/matrix/src/matrix/probe.ts +0 -0
  437. package/extensions/matrix/src/matrix/send/client.ts +0 -0
  438. package/extensions/matrix/src/matrix/send/formatting.ts +0 -0
  439. package/extensions/matrix/src/matrix/send/media.ts +0 -0
  440. package/extensions/matrix/src/matrix/send/targets.ts +0 -0
  441. package/extensions/matrix/src/matrix/send/types.ts +0 -0
  442. package/extensions/matrix/src/matrix/send-queue.ts +0 -0
  443. package/extensions/matrix/src/matrix/send.ts +0 -0
  444. package/extensions/matrix/src/onboarding.ts +0 -0
  445. package/extensions/matrix/src/outbound.ts +0 -0
  446. package/extensions/matrix/src/resolve-targets.ts +0 -0
  447. package/extensions/matrix/src/runtime.ts +0 -0
  448. package/extensions/matrix/src/tool-actions.ts +0 -0
  449. package/extensions/matrix/src/types.ts +0 -0
  450. package/extensions/mattermost/fased.plugin.json +0 -0
  451. package/extensions/mattermost/package.json +1 -1
  452. package/extensions/mattermost/src/channel.ts +0 -0
  453. package/extensions/mattermost/src/config-schema.ts +0 -0
  454. package/extensions/mattermost/src/group-mentions.ts +0 -0
  455. package/extensions/mattermost/src/mattermost/accounts.ts +0 -0
  456. package/extensions/mattermost/src/mattermost/client.ts +0 -0
  457. package/extensions/mattermost/src/mattermost/monitor-auth.ts +0 -0
  458. package/extensions/mattermost/src/mattermost/monitor-helpers.ts +0 -0
  459. package/extensions/mattermost/src/mattermost/monitor-onchar.ts +0 -0
  460. package/extensions/mattermost/src/mattermost/monitor-websocket.ts +0 -0
  461. package/extensions/mattermost/src/mattermost/monitor.ts +0 -0
  462. package/extensions/mattermost/src/mattermost/probe.ts +0 -0
  463. package/extensions/mattermost/src/mattermost/reactions.test-helpers.ts +0 -0
  464. package/extensions/mattermost/src/mattermost/reactions.ts +0 -0
  465. package/extensions/mattermost/src/mattermost/reconnect.ts +0 -0
  466. package/extensions/mattermost/src/mattermost/send.ts +0 -0
  467. package/extensions/mattermost/src/normalize.ts +0 -0
  468. package/extensions/mattermost/src/onboarding-helpers.ts +0 -0
  469. package/extensions/mattermost/src/onboarding.ts +0 -0
  470. package/extensions/mattermost/src/runtime.ts +0 -0
  471. package/extensions/mattermost/src/types.ts +0 -0
  472. package/extensions/memory-core/fased.plugin.json +0 -0
  473. package/extensions/memory-core/package.json +2 -2
  474. package/extensions/memory-lancedb/config.ts +0 -0
  475. package/extensions/memory-lancedb/fased.plugin.json +0 -0
  476. package/extensions/memory-lancedb/package.json +1 -1
  477. package/extensions/minimax-portal-auth/README.md +0 -0
  478. package/extensions/minimax-portal-auth/fased.plugin.json +0 -0
  479. package/extensions/minimax-portal-auth/oauth.ts +0 -0
  480. package/extensions/minimax-portal-auth/package.json +1 -1
  481. package/extensions/msteams/CHANGELOG.md +12 -0
  482. package/extensions/msteams/fased.plugin.json +0 -0
  483. package/extensions/msteams/package.json +1 -1
  484. package/extensions/msteams/src/attachments/download.ts +0 -0
  485. package/extensions/msteams/src/attachments/graph.ts +0 -0
  486. package/extensions/msteams/src/attachments/html.ts +0 -0
  487. package/extensions/msteams/src/attachments/payload.ts +0 -0
  488. package/extensions/msteams/src/attachments/remote-media.ts +0 -0
  489. package/extensions/msteams/src/attachments/shared.ts +0 -0
  490. package/extensions/msteams/src/attachments/types.ts +0 -0
  491. package/extensions/msteams/src/attachments.ts +0 -0
  492. package/extensions/msteams/src/channel.ts +0 -0
  493. package/extensions/msteams/src/conversation-store-fs.ts +0 -0
  494. package/extensions/msteams/src/conversation-store-memory.ts +0 -0
  495. package/extensions/msteams/src/conversation-store.ts +0 -0
  496. package/extensions/msteams/src/directory-live.ts +0 -0
  497. package/extensions/msteams/src/errors.ts +0 -0
  498. package/extensions/msteams/src/file-consent-helpers.ts +0 -0
  499. package/extensions/msteams/src/file-consent.ts +0 -0
  500. package/extensions/msteams/src/file-lock.ts +0 -0
  501. package/extensions/msteams/src/graph-chat.ts +0 -0
  502. package/extensions/msteams/src/graph-upload.ts +0 -0
  503. package/extensions/msteams/src/graph-users.ts +0 -0
  504. package/extensions/msteams/src/graph.ts +0 -0
  505. package/extensions/msteams/src/inbound.ts +0 -0
  506. package/extensions/msteams/src/media-helpers.ts +0 -0
  507. package/extensions/msteams/src/mentions.ts +0 -0
  508. package/extensions/msteams/src/messenger.ts +0 -0
  509. package/extensions/msteams/src/monitor-handler/inbound-media.ts +0 -0
  510. package/extensions/msteams/src/monitor-handler/message-handler.ts +0 -0
  511. package/extensions/msteams/src/monitor-handler.ts +0 -0
  512. package/extensions/msteams/src/monitor-types.ts +0 -0
  513. package/extensions/msteams/src/monitor.ts +0 -0
  514. package/extensions/msteams/src/onboarding.ts +0 -0
  515. package/extensions/msteams/src/outbound.ts +0 -0
  516. package/extensions/msteams/src/pending-uploads.ts +0 -0
  517. package/extensions/msteams/src/policy.ts +0 -0
  518. package/extensions/msteams/src/polls-store-memory.ts +0 -0
  519. package/extensions/msteams/src/polls.ts +0 -0
  520. package/extensions/msteams/src/probe.ts +0 -0
  521. package/extensions/msteams/src/reply-dispatcher.ts +0 -0
  522. package/extensions/msteams/src/resolve-allowlist.ts +0 -0
  523. package/extensions/msteams/src/runtime.ts +0 -0
  524. package/extensions/msteams/src/sdk-types.ts +0 -0
  525. package/extensions/msteams/src/sdk.ts +0 -0
  526. package/extensions/msteams/src/send-context.ts +0 -0
  527. package/extensions/msteams/src/send.ts +0 -0
  528. package/extensions/msteams/src/sent-message-cache.ts +0 -0
  529. package/extensions/msteams/src/storage.ts +0 -0
  530. package/extensions/msteams/src/store-fs.ts +0 -0
  531. package/extensions/msteams/src/test-runtime.ts +0 -0
  532. package/extensions/msteams/src/token-response.ts +0 -0
  533. package/extensions/msteams/src/token.ts +0 -0
  534. package/extensions/nextcloud-talk/fased.plugin.json +0 -0
  535. package/extensions/nextcloud-talk/package.json +1 -1
  536. package/extensions/nextcloud-talk/src/accounts.ts +0 -0
  537. package/extensions/nextcloud-talk/src/config-schema.ts +0 -0
  538. package/extensions/nextcloud-talk/src/format.ts +0 -0
  539. package/extensions/nextcloud-talk/src/inbound.ts +0 -0
  540. package/extensions/nextcloud-talk/src/monitor.ts +0 -0
  541. package/extensions/nextcloud-talk/src/normalize.ts +0 -0
  542. package/extensions/nextcloud-talk/src/onboarding.ts +0 -0
  543. package/extensions/nextcloud-talk/src/policy.ts +0 -0
  544. package/extensions/nextcloud-talk/src/replay-guard.ts +0 -0
  545. package/extensions/nextcloud-talk/src/room-info.ts +0 -0
  546. package/extensions/nextcloud-talk/src/runtime.ts +0 -0
  547. package/extensions/nextcloud-talk/src/send.ts +0 -0
  548. package/extensions/nextcloud-talk/src/signature.ts +0 -0
  549. package/extensions/nextcloud-talk/src/types.ts +0 -0
  550. package/extensions/nostr/CHANGELOG.md +12 -0
  551. package/extensions/nostr/README.md +0 -0
  552. package/extensions/nostr/fased.plugin.json +0 -0
  553. package/extensions/nostr/package.json +1 -1
  554. package/extensions/nostr/src/channel.ts +0 -0
  555. package/extensions/nostr/src/config-schema.ts +0 -0
  556. package/extensions/nostr/src/metrics.ts +0 -0
  557. package/extensions/nostr/src/nostr-bus.ts +0 -0
  558. package/extensions/nostr/src/nostr-profile-http.ts +0 -0
  559. package/extensions/nostr/src/nostr-profile-import.ts +0 -0
  560. package/extensions/nostr/src/nostr-profile.ts +0 -0
  561. package/extensions/nostr/src/nostr-state-store.ts +0 -0
  562. package/extensions/nostr/src/onboarding.ts +0 -0
  563. package/extensions/nostr/src/runtime.ts +0 -0
  564. package/extensions/nostr/src/seen-tracker.ts +0 -0
  565. package/extensions/nostr/src/types.ts +0 -0
  566. package/extensions/nostr/test/setup.ts +0 -0
  567. package/extensions/open-prose/README.md +0 -0
  568. package/extensions/open-prose/fased.plugin.json +0 -0
  569. package/extensions/open-prose/package.json +1 -1
  570. package/extensions/open-prose/skills/prose/LICENSE +0 -0
  571. package/extensions/open-prose/skills/prose/SKILL.md +0 -0
  572. package/extensions/open-prose/skills/prose/alt-borges.md +0 -0
  573. package/extensions/open-prose/skills/prose/alts/arabian-nights.md +0 -0
  574. package/extensions/open-prose/skills/prose/alts/borges.md +0 -0
  575. package/extensions/open-prose/skills/prose/alts/folk.md +0 -0
  576. package/extensions/open-prose/skills/prose/alts/homer.md +0 -0
  577. package/extensions/open-prose/skills/prose/alts/kafka.md +0 -0
  578. package/extensions/open-prose/skills/prose/compiler.md +0 -0
  579. package/extensions/open-prose/skills/prose/examples/01-hello-world.prose +0 -0
  580. package/extensions/open-prose/skills/prose/examples/02-research-and-summarize.prose +0 -0
  581. package/extensions/open-prose/skills/prose/examples/03-code-review.prose +0 -0
  582. package/extensions/open-prose/skills/prose/examples/04-write-and-refine.prose +0 -0
  583. package/extensions/open-prose/skills/prose/examples/05-debug-issue.prose +0 -0
  584. package/extensions/open-prose/skills/prose/examples/06-explain-codebase.prose +0 -0
  585. package/extensions/open-prose/skills/prose/examples/07-refactor.prose +0 -0
  586. package/extensions/open-prose/skills/prose/examples/08-blog-post.prose +0 -0
  587. package/extensions/open-prose/skills/prose/examples/09-research-with-agents.prose +0 -0
  588. package/extensions/open-prose/skills/prose/examples/10-code-review-agents.prose +0 -0
  589. package/extensions/open-prose/skills/prose/examples/11-skills-and-imports.prose +0 -0
  590. package/extensions/open-prose/skills/prose/examples/12-secure-agent-permissions.prose +0 -0
  591. package/extensions/open-prose/skills/prose/examples/13-variables-and-context.prose +0 -0
  592. package/extensions/open-prose/skills/prose/examples/14-composition-blocks.prose +0 -0
  593. package/extensions/open-prose/skills/prose/examples/15-inline-sequences.prose +0 -0
  594. package/extensions/open-prose/skills/prose/examples/16-parallel-reviews.prose +0 -0
  595. package/extensions/open-prose/skills/prose/examples/17-parallel-research.prose +0 -0
  596. package/extensions/open-prose/skills/prose/examples/18-mixed-parallel-sequential.prose +0 -0
  597. package/extensions/open-prose/skills/prose/examples/19-advanced-parallel.prose +0 -0
  598. package/extensions/open-prose/skills/prose/examples/20-fixed-loops.prose +0 -0
  599. package/extensions/open-prose/skills/prose/examples/21-pipeline-operations.prose +0 -0
  600. package/extensions/open-prose/skills/prose/examples/22-error-handling.prose +0 -0
  601. package/extensions/open-prose/skills/prose/examples/23-retry-with-backoff.prose +0 -0
  602. package/extensions/open-prose/skills/prose/examples/24-choice-blocks.prose +0 -0
  603. package/extensions/open-prose/skills/prose/examples/25-conditionals.prose +0 -0
  604. package/extensions/open-prose/skills/prose/examples/26-parameterized-blocks.prose +0 -0
  605. package/extensions/open-prose/skills/prose/examples/27-string-interpolation.prose +0 -0
  606. package/extensions/open-prose/skills/prose/examples/28-automated-pr-review.prose +0 -0
  607. package/extensions/open-prose/skills/prose/examples/28-gas-town.prose +0 -0
  608. package/extensions/open-prose/skills/prose/examples/29-captains-chair.prose +0 -0
  609. package/extensions/open-prose/skills/prose/examples/30-captains-chair-simple.prose +0 -0
  610. package/extensions/open-prose/skills/prose/examples/31-captains-chair-with-memory.prose +0 -0
  611. package/extensions/open-prose/skills/prose/examples/33-pr-review-autofix.prose +0 -0
  612. package/extensions/open-prose/skills/prose/examples/34-content-pipeline.prose +0 -0
  613. package/extensions/open-prose/skills/prose/examples/35-feature-factory.prose +0 -0
  614. package/extensions/open-prose/skills/prose/examples/36-bug-hunter.prose +0 -0
  615. package/extensions/open-prose/skills/prose/examples/37-the-forge.prose +0 -0
  616. package/extensions/open-prose/skills/prose/examples/38-skill-scan.prose +0 -0
  617. package/extensions/open-prose/skills/prose/examples/39-architect-by-simulation.prose +0 -0
  618. package/extensions/open-prose/skills/prose/examples/40-rlm-self-refine.prose +0 -0
  619. package/extensions/open-prose/skills/prose/examples/41-rlm-divide-conquer.prose +0 -0
  620. package/extensions/open-prose/skills/prose/examples/42-rlm-filter-recurse.prose +0 -0
  621. package/extensions/open-prose/skills/prose/examples/43-rlm-pairwise.prose +0 -0
  622. package/extensions/open-prose/skills/prose/examples/44-run-endpoint-ux-test.prose +0 -0
  623. package/extensions/open-prose/skills/prose/examples/45-plugin-release.prose +0 -0
  624. package/extensions/open-prose/skills/prose/examples/45-run-endpoint-ux-test-with-remediation.prose +0 -0
  625. package/extensions/open-prose/skills/prose/examples/46-run-endpoint-ux-test-fast.prose +0 -0
  626. package/extensions/open-prose/skills/prose/examples/46-workflow-crystallizer.prose +0 -0
  627. package/extensions/open-prose/skills/prose/examples/47-language-self-improvement.prose +0 -0
  628. package/extensions/open-prose/skills/prose/examples/48-habit-miner.prose +0 -0
  629. package/extensions/open-prose/skills/prose/examples/49-prose-run-retrospective.prose +0 -0
  630. package/extensions/open-prose/skills/prose/examples/README.md +0 -0
  631. package/extensions/open-prose/skills/prose/examples/roadmap/README.md +0 -0
  632. package/extensions/open-prose/skills/prose/examples/roadmap/iterative-refinement.prose +0 -0
  633. package/extensions/open-prose/skills/prose/examples/roadmap/parallel-review.prose +0 -0
  634. package/extensions/open-prose/skills/prose/examples/roadmap/simple-pipeline.prose +0 -0
  635. package/extensions/open-prose/skills/prose/examples/roadmap/syntax/open-prose-syntax.prose +0 -0
  636. package/extensions/open-prose/skills/prose/guidance/antipatterns.md +0 -0
  637. package/extensions/open-prose/skills/prose/guidance/patterns.md +0 -0
  638. package/extensions/open-prose/skills/prose/guidance/system-prompt.md +0 -0
  639. package/extensions/open-prose/skills/prose/help.md +0 -0
  640. package/extensions/open-prose/skills/prose/lib/README.md +0 -0
  641. package/extensions/open-prose/skills/prose/lib/calibrator.prose +0 -0
  642. package/extensions/open-prose/skills/prose/lib/cost-analyzer.prose +0 -0
  643. package/extensions/open-prose/skills/prose/lib/error-forensics.prose +0 -0
  644. package/extensions/open-prose/skills/prose/lib/inspector.prose +0 -0
  645. package/extensions/open-prose/skills/prose/lib/profiler.prose +0 -0
  646. package/extensions/open-prose/skills/prose/lib/program-improver.prose +0 -0
  647. package/extensions/open-prose/skills/prose/lib/project-memory.prose +0 -0
  648. package/extensions/open-prose/skills/prose/lib/user-memory.prose +0 -0
  649. package/extensions/open-prose/skills/prose/lib/vm-improver.prose +0 -0
  650. package/extensions/open-prose/skills/prose/primitives/session.md +0 -0
  651. package/extensions/open-prose/skills/prose/prose.md +0 -0
  652. package/extensions/open-prose/skills/prose/state/filesystem.md +0 -0
  653. package/extensions/open-prose/skills/prose/state/in-context.md +0 -0
  654. package/extensions/open-prose/skills/prose/state/postgres.md +0 -0
  655. package/extensions/open-prose/skills/prose/state/sqlite.md +0 -0
  656. package/extensions/phone-control/fased.plugin.json +0 -0
  657. package/extensions/qwen-portal-auth/README.md +0 -0
  658. package/extensions/qwen-portal-auth/fased.plugin.json +0 -0
  659. package/extensions/qwen-portal-auth/oauth.ts +0 -0
  660. package/extensions/sat-mining/fased.plugin.json +0 -0
  661. package/extensions/sat-mining/index.ts +100 -1
  662. package/extensions/sat-mining/package.json +1 -1
  663. package/extensions/sat-mining/skills/sat-mining/SKILL.md +0 -0
  664. package/extensions/sat-mining/src/audit-store.ts +45 -4
  665. package/extensions/sat-mining/src/auto-planner.ts +0 -0
  666. package/extensions/sat-mining/src/chain-time.ts +0 -0
  667. package/extensions/sat-mining/src/client.ts +13 -0
  668. package/extensions/sat-mining/src/dispute-review.ts +0 -0
  669. package/extensions/sat-mining/src/hash-spec.ts +0 -0
  670. package/extensions/sat-mining/src/planner-analytics.ts +0 -0
  671. package/extensions/sat-mining/src/planner-outcomes.ts +0 -0
  672. package/extensions/sat-mining/src/planner-policy-eval.ts +0 -0
  673. package/extensions/sat-mining/src/planner-policy.ts +0 -0
  674. package/extensions/sat-mining/src/replay.ts +0 -0
  675. package/extensions/sat-mining/src/rpc-read.ts +105 -21
  676. package/extensions/sat-mining/src/runtime.ts +2 -0
  677. package/extensions/sat-mining/src/service-read-timeout.ts +0 -0
  678. package/extensions/sat-mining/src/solana-submit.ts +593 -22
  679. package/extensions/sat-mining/src/strategy-base.ts +0 -0
  680. package/extensions/sat-mining/src/strategy-engine.ts +0 -0
  681. package/extensions/sat-mining/src/strategy-validate.ts +0 -0
  682. package/extensions/sat-mining/src/submission-ledger.ts +20 -4
  683. package/extensions/shared/resolve-target-test-helpers.ts +0 -0
  684. package/extensions/signal/fased.plugin.json +0 -0
  685. package/extensions/signal/package.json +1 -1
  686. package/extensions/signal/src/channel.ts +0 -0
  687. package/extensions/signal/src/runtime.ts +0 -0
  688. package/extensions/synology-chat/fased.plugin.json +0 -0
  689. package/extensions/synology-chat/package.json +1 -1
  690. package/extensions/synology-chat/src/accounts.ts +0 -0
  691. package/extensions/synology-chat/src/channel.ts +0 -0
  692. package/extensions/synology-chat/src/client.ts +0 -0
  693. package/extensions/synology-chat/src/runtime.ts +0 -0
  694. package/extensions/synology-chat/src/security.ts +0 -0
  695. package/extensions/synology-chat/src/types.ts +0 -0
  696. package/extensions/synology-chat/src/webhook-handler.ts +0 -0
  697. package/extensions/talk-voice/fased.plugin.json +0 -0
  698. package/extensions/thread-ownership/fased.plugin.json +0 -0
  699. package/extensions/tlon/README.md +0 -0
  700. package/extensions/tlon/fased.plugin.json +0 -0
  701. package/extensions/tlon/package.json +1 -1
  702. package/extensions/tlon/src/account-fields.ts +0 -0
  703. package/extensions/tlon/src/channel.ts +0 -0
  704. package/extensions/tlon/src/config-schema.ts +0 -0
  705. package/extensions/tlon/src/monitor/discovery.ts +0 -0
  706. package/extensions/tlon/src/monitor/history.ts +0 -0
  707. package/extensions/tlon/src/monitor/processed-messages.ts +0 -0
  708. package/extensions/tlon/src/monitor/utils.ts +0 -0
  709. package/extensions/tlon/src/onboarding.ts +0 -0
  710. package/extensions/tlon/src/runtime.ts +0 -0
  711. package/extensions/tlon/src/targets.ts +0 -0
  712. package/extensions/tlon/src/types.ts +0 -0
  713. package/extensions/tlon/src/urbit/auth.ts +0 -0
  714. package/extensions/tlon/src/urbit/base-url.ts +0 -0
  715. package/extensions/tlon/src/urbit/channel-client.ts +0 -0
  716. package/extensions/tlon/src/urbit/channel-ops.ts +0 -0
  717. package/extensions/tlon/src/urbit/context.ts +0 -0
  718. package/extensions/tlon/src/urbit/errors.ts +0 -0
  719. package/extensions/tlon/src/urbit/fetch.ts +0 -0
  720. package/extensions/tlon/src/urbit/send.ts +0 -0
  721. package/extensions/tlon/src/urbit/sse-client.ts +0 -0
  722. package/extensions/twitch/CHANGELOG.md +12 -0
  723. package/extensions/twitch/README.md +0 -0
  724. package/extensions/twitch/fased.plugin.json +0 -0
  725. package/extensions/twitch/package.json +1 -1
  726. package/extensions/twitch/src/access-control.ts +0 -0
  727. package/extensions/twitch/src/actions.ts +0 -0
  728. package/extensions/twitch/src/client-manager-registry.ts +0 -0
  729. package/extensions/twitch/src/config-schema.ts +0 -0
  730. package/extensions/twitch/src/config.ts +0 -0
  731. package/extensions/twitch/src/monitor.ts +0 -0
  732. package/extensions/twitch/src/onboarding.ts +0 -0
  733. package/extensions/twitch/src/outbound.ts +0 -0
  734. package/extensions/twitch/src/probe.ts +0 -0
  735. package/extensions/twitch/src/resolver.ts +0 -0
  736. package/extensions/twitch/src/runtime.ts +0 -0
  737. package/extensions/twitch/src/send.ts +0 -0
  738. package/extensions/twitch/src/status.ts +0 -0
  739. package/extensions/twitch/src/test-fixtures.ts +0 -0
  740. package/extensions/twitch/src/twitch-client.ts +0 -0
  741. package/extensions/twitch/src/utils/markdown.ts +0 -0
  742. package/extensions/twitch/src/utils/twitch.ts +0 -0
  743. package/extensions/twitch/test/setup.ts +0 -0
  744. package/extensions/voice-call/CHANGELOG.md +12 -0
  745. package/extensions/voice-call/README.md +0 -0
  746. package/extensions/voice-call/fased.plugin.json +0 -0
  747. package/extensions/voice-call/package.json +1 -1
  748. package/extensions/voice-call/src/allowlist.ts +0 -0
  749. package/extensions/voice-call/src/cli.ts +0 -0
  750. package/extensions/voice-call/src/core-bridge.ts +0 -0
  751. package/extensions/voice-call/src/http-headers.ts +0 -0
  752. package/extensions/voice-call/src/manager/context.ts +0 -0
  753. package/extensions/voice-call/src/manager/events.ts +0 -0
  754. package/extensions/voice-call/src/manager/lookup.ts +0 -0
  755. package/extensions/voice-call/src/manager/outbound.ts +0 -0
  756. package/extensions/voice-call/src/manager/state.ts +0 -0
  757. package/extensions/voice-call/src/manager/store.ts +0 -0
  758. package/extensions/voice-call/src/manager/timers.ts +0 -0
  759. package/extensions/voice-call/src/manager/twiml.ts +0 -0
  760. package/extensions/voice-call/src/manager.ts +0 -0
  761. package/extensions/voice-call/src/media-stream.ts +0 -0
  762. package/extensions/voice-call/src/providers/base.ts +0 -0
  763. package/extensions/voice-call/src/providers/mock.ts +0 -0
  764. package/extensions/voice-call/src/providers/plivo.ts +0 -0
  765. package/extensions/voice-call/src/providers/shared/guarded-json-api.ts +0 -0
  766. package/extensions/voice-call/src/providers/stt-openai-realtime.ts +0 -0
  767. package/extensions/voice-call/src/providers/telnyx.ts +0 -0
  768. package/extensions/voice-call/src/providers/tts-openai.ts +0 -0
  769. package/extensions/voice-call/src/providers/twilio/api.ts +0 -0
  770. package/extensions/voice-call/src/providers/twilio/webhook.ts +0 -0
  771. package/extensions/voice-call/src/providers/twilio.ts +0 -0
  772. package/extensions/voice-call/src/response-generator.ts +0 -0
  773. package/extensions/voice-call/src/runtime.ts +0 -0
  774. package/extensions/voice-call/src/telephony-audio.ts +0 -0
  775. package/extensions/voice-call/src/telephony-tts.ts +0 -0
  776. package/extensions/voice-call/src/tunnel.ts +0 -0
  777. package/extensions/voice-call/src/types.ts +0 -0
  778. package/extensions/voice-call/src/utils.ts +0 -0
  779. package/extensions/voice-call/src/voice-mapping.ts +0 -0
  780. package/extensions/voice-call/src/webhook/stale-call-reaper.ts +0 -0
  781. package/extensions/voice-call/src/webhook-security.ts +0 -0
  782. package/extensions/zalo/CHANGELOG.md +12 -0
  783. package/extensions/zalo/README.md +0 -0
  784. package/extensions/zalo/fased.plugin.json +0 -0
  785. package/extensions/zalo/package.json +1 -1
  786. package/extensions/zalo/src/accounts.ts +0 -0
  787. package/extensions/zalo/src/actions.ts +0 -0
  788. package/extensions/zalo/src/api.ts +0 -0
  789. package/extensions/zalo/src/channel.ts +0 -0
  790. package/extensions/zalo/src/config-schema.ts +0 -0
  791. package/extensions/zalo/src/group-access.ts +0 -0
  792. package/extensions/zalo/src/monitor.ts +0 -0
  793. package/extensions/zalo/src/monitor.webhook.ts +0 -0
  794. package/extensions/zalo/src/onboarding.ts +0 -0
  795. package/extensions/zalo/src/probe.ts +0 -0
  796. package/extensions/zalo/src/proxy.ts +0 -0
  797. package/extensions/zalo/src/runtime.ts +0 -0
  798. package/extensions/zalo/src/send.ts +0 -0
  799. package/extensions/zalo/src/status-issues.ts +0 -0
  800. package/extensions/zalo/src/token.ts +0 -0
  801. package/extensions/zalo/src/types.ts +0 -0
  802. package/extensions/zalouser/CHANGELOG.md +12 -0
  803. package/extensions/zalouser/README.md +0 -0
  804. package/extensions/zalouser/fased.plugin.json +0 -0
  805. package/extensions/zalouser/package.json +1 -1
  806. package/extensions/zalouser/src/accounts.ts +0 -0
  807. package/extensions/zalouser/src/channel.ts +0 -0
  808. package/extensions/zalouser/src/config-schema.ts +0 -0
  809. package/extensions/zalouser/src/monitor.ts +0 -0
  810. package/extensions/zalouser/src/onboarding.ts +0 -0
  811. package/extensions/zalouser/src/probe.ts +0 -0
  812. package/extensions/zalouser/src/runtime.ts +0 -0
  813. package/extensions/zalouser/src/send.ts +0 -0
  814. package/extensions/zalouser/src/status-issues.ts +0 -0
  815. package/extensions/zalouser/src/tool.ts +0 -0
  816. package/extensions/zalouser/src/types.ts +0 -0
  817. package/extensions/zalouser/src/zca.ts +0 -0
  818. package/install.sh +15 -16
  819. package/package.json +1 -1
  820. package/scripts/fased-launcher-runtime.mjs +0 -0
  821. package/scripts/fased-managed-updater.mjs +1 -1
  822. package/scripts/fased-signer-network-hosting.sh +18 -7
  823. package/scripts/fased-signer-owner-policy.mjs +13 -1
  824. package/scripts/run-node.mjs +0 -0
  825. package/scripts/start-managed.sh +4 -0
  826. package/shared/sat-hash-v1.json +0 -0
  827. package/skills/1password/SKILL.md +0 -0
  828. package/skills/1password/references/cli-examples.md +0 -0
  829. package/skills/1password/references/get-started.md +0 -0
  830. package/skills/apple-notes/SKILL.md +0 -0
  831. package/skills/apple-reminders/SKILL.md +0 -0
  832. package/skills/bear-notes/SKILL.md +0 -0
  833. package/skills/blogwatcher/SKILL.md +0 -0
  834. package/skills/blucli/SKILL.md +0 -0
  835. package/skills/bluebubbles/SKILL.md +0 -0
  836. package/skills/camsnap/SKILL.md +0 -0
  837. package/skills/canvas/SKILL.md +0 -0
  838. package/skills/clawhub/SKILL.md +0 -0
  839. package/skills/coding-agent/SKILL.md +0 -0
  840. package/skills/diagram-maker/SKILL.md +0 -0
  841. package/skills/diagram-maker/references/excalidraw-patterns.md +0 -0
  842. package/skills/diagram-maker/references/svg-template.md +0 -0
  843. package/skills/discord/SKILL.md +0 -0
  844. package/skills/eightctl/SKILL.md +0 -0
  845. package/skills/food-order/SKILL.md +0 -0
  846. package/skills/gemini/SKILL.md +0 -0
  847. package/skills/gh-issues/SKILL.md +0 -0
  848. package/skills/gifgrep/SKILL.md +0 -0
  849. package/skills/github/SKILL.md +0 -0
  850. package/skills/gog/SKILL.md +0 -0
  851. package/skills/goplaces/SKILL.md +0 -0
  852. package/skills/healthcheck/SKILL.md +0 -0
  853. package/skills/himalaya/SKILL.md +0 -0
  854. package/skills/himalaya/references/configuration.md +0 -0
  855. package/skills/himalaya/references/message-composition.md +0 -0
  856. package/skills/imsg/SKILL.md +0 -0
  857. package/skills/mcporter/SKILL.md +0 -0
  858. package/skills/model-usage/SKILL.md +0 -0
  859. package/skills/model-usage/references/codexbar-cli.md +0 -0
  860. package/skills/model-usage/scripts/model_usage.py +0 -0
  861. package/skills/model-usage/scripts/test_model_usage.py +0 -0
  862. package/skills/nano-banana-pro/SKILL.md +0 -0
  863. package/skills/nano-pdf/SKILL.md +0 -0
  864. package/skills/node-connect/SKILL.md +0 -0
  865. package/skills/node-inspect-debugger/SKILL.md +0 -0
  866. package/skills/notion/SKILL.md +0 -0
  867. package/skills/obsidian/SKILL.md +0 -0
  868. package/skills/openai-image-gen/SKILL.md +0 -0
  869. package/skills/openai-image-gen/scripts/gen.py +0 -0
  870. package/skills/openai-image-gen/scripts/test_gen.py +0 -0
  871. package/skills/openai-whisper/SKILL.md +0 -0
  872. package/skills/openai-whisper-api/SKILL.md +0 -0
  873. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -0
  874. package/skills/opencode/SKILL.md +0 -0
  875. package/skills/openhue/SKILL.md +0 -0
  876. package/skills/oracle/SKILL.md +0 -0
  877. package/skills/ordercli/SKILL.md +0 -0
  878. package/skills/peekaboo/SKILL.md +0 -0
  879. package/skills/python-debugpy/SKILL.md +0 -0
  880. package/skills/sag/SKILL.md +0 -0
  881. package/skills/session-logs/SKILL.md +0 -0
  882. package/skills/sherpa-onnx-tts/SKILL.md +0 -0
  883. package/skills/skill-creator/SKILL.md +0 -0
  884. package/skills/skill-creator/license.txt +0 -0
  885. package/skills/skill-creator/scripts/init_skill.py +0 -0
  886. package/skills/skill-creator/scripts/package_skill.py +0 -0
  887. package/skills/skill-creator/scripts/quick_validate.py +0 -0
  888. package/skills/skill-creator/scripts/test_package_skill.py +0 -0
  889. package/skills/skill-creator/scripts/test_quick_validate.py +0 -0
  890. package/skills/skill-workshop/SKILL.md +0 -0
  891. package/skills/slack/SKILL.md +0 -0
  892. package/skills/songsee/SKILL.md +0 -0
  893. package/skills/sonoscli/SKILL.md +0 -0
  894. package/skills/spotify-player/SKILL.md +0 -0
  895. package/skills/summarize/SKILL.md +0 -0
  896. package/skills/things-mac/SKILL.md +0 -0
  897. package/skills/tmux/SKILL.md +0 -0
  898. package/skills/trello/SKILL.md +0 -0
  899. package/skills/video-frames/SKILL.md +0 -0
  900. package/skills/video-frames/scripts/frame.sh +0 -0
  901. package/skills/voice-call/SKILL.md +0 -0
  902. package/skills/wacli/SKILL.md +0 -0
  903. package/skills/wallet-actions/SKILL.md +0 -0
  904. package/skills/weather/SKILL.md +0 -0
  905. package/skills/xurl/SKILL.md +0 -0
@@ -27,6 +27,8 @@ import {
27
27
  SAT_PROTOCOL_CONSTANTS,
28
28
  } from "./protocol-contract.js";
29
29
  import {
30
+ inspectSatAddressLookupTable,
31
+ inspectSatChainSlot,
30
32
  inspectSatCycle,
31
33
  inspectSatCycleRegistryMeta,
32
34
  inspectSatMinerCyclesByAddress,
@@ -74,6 +76,8 @@ const MINING_STAKE_SEED = "mining_stake";
74
76
  const TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
75
77
  const ASSOCIATED_TOKEN_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
76
78
  const SLOT_HASHES_SYSVAR_ID = "SysvarS1otHashes111111111111111111111111111";
79
+ const SAT_DISTRIBUTION_LOOKUP_MIN_MINERS = 16;
80
+ const SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE = 20;
77
81
 
78
82
  const IX = SAT_INSTRUCTION_DISCRIMINATORS;
79
83
 
@@ -324,12 +328,32 @@ export async function resolveSatValidatorAuthority(_config: SatMiningConfig) {
324
328
  type SatInstructionSubmitSpec = {
325
329
  data: Buffer;
326
330
  programId?: string;
331
+ addressLookupTables?: string[];
332
+ manageAddressLookupTable?: {
333
+ lookupTableAddress?: string;
334
+ cycleId: number;
335
+ pageIndex: number;
336
+ onLookupTableResolved?: (lookupTableAddress: string) => Promise<void>;
337
+ };
327
338
  accountResolver: (
328
339
  solana: SolanaModuleLike,
329
340
  signer: import("@solana/web3.js").PublicKey,
330
341
  ) => Promise<SolanaAccountMeta[] | SatResolvedInstruction>;
331
342
  };
332
343
 
344
+ type SatInstructionSubmitResult = {
345
+ txHash: string;
346
+ signer: string;
347
+ signerState: SatSignerOperation["state"];
348
+ requestId: string;
349
+ transactionVersion: "legacy" | "v0";
350
+ lookupTableAddress?: string;
351
+ lookupTableCreated?: boolean;
352
+ lookupTableExtended?: boolean;
353
+ lookupTableAddressCount?: number;
354
+ lookupTableTransactionHashes?: string[];
355
+ };
356
+
333
357
  async function prepareLocalSignerSubmitContext(cfg: FasedAgentConfig, env: NodeJS.ProcessEnv) {
334
358
  const effectiveEnv = resolveSatEffectiveEnv(cfg, env);
335
359
  const solana = await loadSolanaWeb3();
@@ -375,6 +399,9 @@ async function buildLocalSignerInstructionRequest(params: {
375
399
  isSigner: key.isSigner,
376
400
  isWritable: key.isWritable,
377
401
  })),
402
+ ...(params.spec.addressLookupTables?.length
403
+ ? { addressLookupTables: params.spec.addressLookupTables }
404
+ : {}),
378
405
  ...(context ? { context } : {}),
379
406
  };
380
407
  }
@@ -399,7 +426,7 @@ const REQUIRED_SAT_SIGNER_FEATURES = [
399
426
 
400
427
  async function requireTypedSatSignerCapabilities(
401
428
  socketPath: string,
402
- intentType: "solana.satAction" | "solana.vaultBondAction",
429
+ intentType: "solana.satAction" | "solana.satLookupTable" | "solana.vaultBondAction",
403
430
  ) {
404
431
  const result = await callLocalSocketSigner<{
405
432
  ready?: boolean;
@@ -428,6 +455,10 @@ async function requireTypedSatSignerCapabilities(
428
455
  "durableReviewAuthorization",
429
456
  ].filter((feature) => !features.has(feature))
430
457
  : [];
458
+ const missingLookupFeatures =
459
+ intentType === "solana.satLookupTable" && !features.has("typedSATAddressLookupTables")
460
+ ? ["typedSATAddressLookupTables"]
461
+ : [];
431
462
  if (
432
463
  result.ready !== true ||
433
464
  protocol?.current !== 2 ||
@@ -437,6 +468,7 @@ async function requireTypedSatSignerCapabilities(
437
468
  protocol.max < 2 ||
438
469
  !capabilities?.intentTypes?.includes(intentType) ||
439
470
  missingFeatures.length > 0 ||
471
+ missingLookupFeatures.length > 0 ||
440
472
  (intentType === "solana.vaultBondAction" && !features.has("typedVaultBondActions")) ||
441
473
  missingVaultReviewFeatures.length > 0 ||
442
474
  missingStates.length > 0
@@ -445,8 +477,10 @@ async function requireTypedSatSignerCapabilities(
445
477
  `local-socket-signer does not support the required typed SAT protocol-v2 contract${
446
478
  missingFeatures.length > 0 ? `; missing features: ${missingFeatures.join(", ")}` : ""
447
479
  }${missingVaultReviewFeatures.length > 0 ? `; missing reviewed Vault features: ${missingVaultReviewFeatures.join(", ")}` : ""}${
448
- missingStates.length > 0 ? `; missing states: ${missingStates.join(", ")}` : ""
449
- }`,
480
+ missingLookupFeatures.length > 0
481
+ ? `; missing SAT lookup features: ${missingLookupFeatures.join(", ")}`
482
+ : ""
483
+ }${missingStates.length > 0 ? `; missing states: ${missingStates.join(", ")}` : ""}`,
450
484
  );
451
485
  }
452
486
  }
@@ -495,6 +529,14 @@ function signerStateForLedger(state: SatSignerOperation["state"]): SatSubmission
495
529
  return state;
496
530
  }
497
531
 
532
+ type SatLookupTableAction = "create" | "extend" | "deactivate" | "close";
533
+
534
+ function assertSatLookupTableAction(value: string): asserts value is SatLookupTableAction {
535
+ if (value !== "create" && value !== "extend" && value !== "deactivate" && value !== "close") {
536
+ throw new Error(`unsupported SAT lookup-table action ${value}`);
537
+ }
538
+ }
539
+
498
540
  class SatSubmissionUnresolvedError extends Error {
499
541
  readonly requestId: string;
500
542
  readonly signature?: string;
@@ -513,35 +555,71 @@ class SatSubmissionUnresolvedError extends Error {
513
555
  }
514
556
  }
515
557
 
558
+ class SatSubmissionDefinitiveFailureError extends Error {
559
+ constructor(message: string) {
560
+ super(message);
561
+ this.name = "SatSubmissionDefinitiveFailureError";
562
+ }
563
+ }
564
+
516
565
  async function executeTypedSatIntent(params: {
517
566
  socketPath: string;
518
567
  walletId: string;
519
- action: SatSignerAction | "cleanupBatch";
568
+ action: SatSignerAction | "cleanupBatch" | "create" | "extend" | "deactivate" | "close";
520
569
  instruction?: Awaited<ReturnType<typeof buildLocalSignerInstructionRequest>>;
521
570
  instructions?: Array<Awaited<ReturnType<typeof buildLocalSignerInstructionRequest>>>;
571
+ lookupTable?: {
572
+ address: string;
573
+ cycleId: string;
574
+ pageIndex: string;
575
+ recentSlot?: string;
576
+ addresses?: string[];
577
+ parent?: Awaited<ReturnType<typeof buildLocalSignerInstructionRequest>>;
578
+ };
522
579
  cluster: "local" | "devnet" | "mainnet-beta";
523
580
  env: NodeJS.ProcessEnv;
524
581
  }) {
525
- const isVaultBond = params.action !== "cleanupBatch" && VAULT_BOND_ACTIONS.has(params.action);
526
- const intentType = isVaultBond ? "solana.vaultBondAction" : "solana.satAction";
582
+ const isLookupTable = params.lookupTable != null;
583
+ const isVaultBond =
584
+ !isLookupTable &&
585
+ params.action !== "cleanupBatch" &&
586
+ VAULT_BOND_ACTIONS.has(params.action as SatSignerAction);
587
+ const intentType = isLookupTable
588
+ ? "solana.satLookupTable"
589
+ : isVaultBond
590
+ ? "solana.vaultBondAction"
591
+ : "solana.satAction";
527
592
  await requireTypedSatSignerCapabilities(params.socketPath, intentType);
528
- const intent = isVaultBond
593
+ const intent = isLookupTable
529
594
  ? (() => {
530
- if (!params.instruction || params.instructions) {
531
- throw new Error("typed Vault bond execution requires exactly one semantic instruction");
595
+ if (params.instruction || params.instructions || !params.lookupTable) {
596
+ throw new Error("typed SAT lookup-table execution accepts only semantic lookup details");
532
597
  }
598
+ const action = params.action;
599
+ assertSatLookupTableAction(action);
533
600
  return {
534
- type: "solana.vaultBondAction" as const,
535
- cluster: params.cluster,
536
- ...params.instruction,
601
+ type: "solana.satLookupTable" as const,
602
+ action,
603
+ lookupTable: params.lookupTable,
537
604
  };
538
605
  })()
539
- : {
540
- type: "solana.satAction" as const,
541
- action: params.action,
542
- ...(params.instruction ?? {}),
543
- ...(params.instructions ? { instructions: params.instructions } : {}),
544
- };
606
+ : isVaultBond
607
+ ? (() => {
608
+ if (!params.instruction || params.instructions) {
609
+ throw new Error("typed Vault bond execution requires exactly one semantic instruction");
610
+ }
611
+ return {
612
+ type: "solana.vaultBondAction" as const,
613
+ cluster: params.cluster,
614
+ ...params.instruction,
615
+ };
616
+ })()
617
+ : {
618
+ type: "solana.satAction" as const,
619
+ action: params.action,
620
+ ...(params.instruction ?? {}),
621
+ ...(params.instructions ? { instructions: params.instructions } : {}),
622
+ };
545
623
  const policy = await callLocalSocketSigner<{ hash: string }>(params.socketPath, {
546
624
  op: "v2.policy.get",
547
625
  walletId: params.walletId,
@@ -560,6 +638,7 @@ async function executeTypedSatIntent(params: {
560
638
  operationKey,
561
639
  intentDigest,
562
640
  action: params.action,
641
+ allowFailedRetry: isLookupTable,
563
642
  env: params.env,
564
643
  });
565
644
  if (!claim.claimed) {
@@ -574,6 +653,7 @@ async function executeTypedSatIntent(params: {
574
653
  operationKey,
575
654
  intentDigest,
576
655
  action: params.action,
656
+ allowFailedRetry: isLookupTable,
577
657
  env: params.env,
578
658
  owner: claim.owner,
579
659
  });
@@ -841,7 +921,9 @@ async function executeTypedSatIntent(params: {
841
921
  env: params.env,
842
922
  });
843
923
  if (operation.state === "failed") {
844
- throw new Error(operation.error || `SAT signer operation ${requestId} failed`);
924
+ throw new SatSubmissionDefinitiveFailureError(
925
+ operation.error || `SAT signer operation ${requestId} failed`,
926
+ );
845
927
  }
846
928
  if (operation.state !== "confirmed" || !operation.signature) {
847
929
  throw new SatSubmissionUnresolvedError({
@@ -854,14 +936,403 @@ async function executeTypedSatIntent(params: {
854
936
  return { ...operation, signature: operation.signature };
855
937
  }
856
938
 
939
+ type SatLookupSubmitContext = Awaited<ReturnType<typeof prepareLocalSignerSubmitContext>> & {
940
+ walletId: string;
941
+ };
942
+
943
+ function assertSatLookupTableEnabled(env: NodeJS.ProcessEnv): void {
944
+ if (String(env.FASED_SAT_ENABLE_ALT_V0 ?? "").trim() !== "1") {
945
+ throw new Error("SAT ALT/v0 support is disabled; set FASED_SAT_ENABLE_ALT_V0=1");
946
+ }
947
+ }
948
+
949
+ async function executeTypedSatLookupOperation(params: {
950
+ context: SatLookupSubmitContext;
951
+ cfg: FasedAgentConfig;
952
+ action: "create" | "extend" | "deactivate" | "close";
953
+ address: string;
954
+ cycleId: number;
955
+ pageIndex: number;
956
+ recentSlot?: number;
957
+ addresses?: string[];
958
+ parent?: Awaited<ReturnType<typeof buildLocalSignerInstructionRequest>>;
959
+ }) {
960
+ return await executeTypedSatIntent({
961
+ socketPath: params.context.socketPath,
962
+ walletId: params.context.walletId,
963
+ action: params.action,
964
+ lookupTable: {
965
+ address: params.address,
966
+ cycleId: String(params.cycleId),
967
+ pageIndex: String(params.pageIndex),
968
+ ...(params.recentSlot == null ? {} : { recentSlot: String(params.recentSlot) }),
969
+ ...(params.addresses?.length ? { addresses: params.addresses } : {}),
970
+ ...(params.parent ? { parent: params.parent } : {}),
971
+ },
972
+ cluster: resolveSatCluster(params.cfg),
973
+ env: params.context.effectiveEnv,
974
+ });
975
+ }
976
+
977
+ async function readValidatedSatLookupTable(params: {
978
+ config: SatMiningConfig;
979
+ address: string;
980
+ authority: string;
981
+ }) {
982
+ const state = await inspectSatAddressLookupTable(params.config, { address: params.address });
983
+ if (!state) {
984
+ return null;
985
+ }
986
+ if (state.authority !== params.authority) {
987
+ throw new Error("SAT distribution lookup table is not controlled by the Mining signer");
988
+ }
989
+ if (!state.active) {
990
+ throw new Error("SAT distribution lookup table is not active");
991
+ }
992
+ return state;
993
+ }
994
+
995
+ async function waitForSatLookupTable(params: {
996
+ config: SatMiningConfig;
997
+ address: string;
998
+ authority: string;
999
+ requireNextSlot: boolean;
1000
+ }) {
1001
+ let lastError: unknown;
1002
+ for (let attempt = 0; attempt < 24; attempt += 1) {
1003
+ try {
1004
+ const state = await readValidatedSatLookupTable(params);
1005
+ if (state) {
1006
+ const currentSlot = await inspectSatChainSlot(params.config);
1007
+ if (!params.requireNextSlot || currentSlot > state.lastExtendedSlot) {
1008
+ return state;
1009
+ }
1010
+ }
1011
+ } catch (error) {
1012
+ lastError = error;
1013
+ }
1014
+ await new Promise((resolve) => setTimeout(resolve, 250));
1015
+ }
1016
+ throw new Error(
1017
+ `SAT distribution lookup table did not become active for use within 6s${
1018
+ lastError instanceof Error ? `: ${lastError.message}` : ""
1019
+ }`,
1020
+ );
1021
+ }
1022
+
1023
+ const SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW = 128;
1024
+
1025
+ function recoverSatLookupTableRecentSlot(params: {
1026
+ context: SatLookupSubmitContext;
1027
+ lookupTable: string;
1028
+ currentSlot: number;
1029
+ }): number | undefined {
1030
+ const oldestSlot = Math.max(0, params.currentSlot - SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW);
1031
+ for (let recentSlot = params.currentSlot; recentSlot >= oldestSlot; recentSlot -= 1) {
1032
+ const [, derivedAddress] = params.context.solana.AddressLookupTableProgram.createLookupTable({
1033
+ authority: params.context.signer,
1034
+ payer: params.context.signer,
1035
+ recentSlot,
1036
+ });
1037
+ if (derivedAddress.toBase58() === params.lookupTable) {
1038
+ return recentSlot;
1039
+ }
1040
+ }
1041
+ return undefined;
1042
+ }
1043
+
1044
+ type SatLookupBinding = {
1045
+ cycleId: string;
1046
+ pageIndex: string;
1047
+ address?: string;
1048
+ bound: boolean;
1049
+ mutationRequestId?: string;
1050
+ mutationState?: SatSignerOperation["state"];
1051
+ };
1052
+
1053
+ async function readReconciledSatLookupBinding(params: {
1054
+ context: SatLookupSubmitContext;
1055
+ cycleId: number;
1056
+ pageIndex: number;
1057
+ }): Promise<SatLookupBinding> {
1058
+ const request = { cycleId: String(params.cycleId), pageIndex: String(params.pageIndex) };
1059
+ const readBinding = async () =>
1060
+ await callLocalSocketSigner<SatLookupBinding>(params.context.socketPath, {
1061
+ op: "v2.satLookup.binding.get",
1062
+ walletId: params.context.walletId,
1063
+ request,
1064
+ });
1065
+ const binding = await readBinding();
1066
+ if (
1067
+ binding.cycleId !== request.cycleId ||
1068
+ binding.pageIndex !== request.pageIndex ||
1069
+ binding.bound !== Boolean(binding.address) ||
1070
+ Boolean(binding.mutationRequestId) !== Boolean(binding.mutationState)
1071
+ ) {
1072
+ throw new Error("signer returned an invalid SAT lookup-table binding");
1073
+ }
1074
+ if (binding.mutationState === "reserved") {
1075
+ throw new Error("SAT lookup-table mutation is already in progress");
1076
+ }
1077
+ if (
1078
+ (binding.mutationState === "broadcast" || binding.mutationState === "unknown") &&
1079
+ binding.mutationRequestId
1080
+ ) {
1081
+ const operation = assertSatSignerOperationIdentity(
1082
+ await callLocalSocketSigner<SatSignerOperation>(params.context.socketPath, {
1083
+ op: "v2.operation.reconcile",
1084
+ walletId: params.context.walletId,
1085
+ request: { requestId: binding.mutationRequestId },
1086
+ }),
1087
+ binding.mutationRequestId,
1088
+ );
1089
+ if (
1090
+ operation.state === "reserved" ||
1091
+ operation.state === "broadcast" ||
1092
+ operation.state === "unknown"
1093
+ ) {
1094
+ throw new SatSubmissionUnresolvedError({
1095
+ requestId: operation.requestId,
1096
+ state: operation.state,
1097
+ signature: operation.signature,
1098
+ detail: operation.error,
1099
+ });
1100
+ }
1101
+ const reconciled = await readBinding();
1102
+ if (
1103
+ reconciled.cycleId !== request.cycleId ||
1104
+ reconciled.pageIndex !== request.pageIndex ||
1105
+ reconciled.bound !== Boolean(reconciled.address) ||
1106
+ Boolean(reconciled.mutationRequestId) !== Boolean(reconciled.mutationState)
1107
+ ) {
1108
+ throw new Error("signer returned an invalid reconciled SAT lookup-table binding");
1109
+ }
1110
+ return reconciled;
1111
+ }
1112
+ return binding;
1113
+ }
1114
+
1115
+ async function ensureSatDistributionLookupTable(params: {
1116
+ context: SatLookupSubmitContext;
1117
+ cfg: FasedAgentConfig;
1118
+ config: SatMiningConfig;
1119
+ lookupTableAddress?: string;
1120
+ cycleId: number;
1121
+ pageIndex: number;
1122
+ addresses: string[];
1123
+ parent: Awaited<ReturnType<typeof buildLocalSignerInstructionRequest>>;
1124
+ onLookupTableResolved?: (lookupTableAddress: string) => Promise<void>;
1125
+ }) {
1126
+ assertSatLookupTableEnabled(params.context.effectiveEnv);
1127
+ const desiredAddresses = [...new Set(params.addresses.map((entry) => entry.trim()))].filter(
1128
+ Boolean,
1129
+ );
1130
+ if (desiredAddresses.length === 0 || desiredAddresses.length > 256) {
1131
+ throw new Error("SAT distribution lookup table requires 1-256 exact account addresses");
1132
+ }
1133
+ const signerBinding = await readReconciledSatLookupBinding({
1134
+ context: params.context,
1135
+ cycleId: params.cycleId,
1136
+ pageIndex: params.pageIndex,
1137
+ });
1138
+ let lookupTable = signerBinding.address?.trim() || "";
1139
+ if (signerBinding.bound && lookupTable) {
1140
+ await params.onLookupTableResolved?.(lookupTable);
1141
+ }
1142
+ let state = lookupTable
1143
+ ? await readValidatedSatLookupTable({
1144
+ config: params.config,
1145
+ address: lookupTable,
1146
+ authority: params.context.signerAddress,
1147
+ })
1148
+ : null;
1149
+
1150
+ if (lookupTable && state) {
1151
+ await params.onLookupTableResolved?.(lookupTable);
1152
+ }
1153
+ let created = false;
1154
+ const transactionHashes: string[] = [];
1155
+ let createRecentSlot: number | undefined;
1156
+ const attemptedCreateAddresses = new Set<string>();
1157
+ if (lookupTable && !state) {
1158
+ const currentSlot = await inspectSatChainSlot(params.config);
1159
+ createRecentSlot = recoverSatLookupTableRecentSlot({
1160
+ context: params.context,
1161
+ lookupTable,
1162
+ currentSlot,
1163
+ });
1164
+ if (createRecentSlot == null) {
1165
+ if (signerBinding.bound) {
1166
+ throw new Error(
1167
+ "SAT distribution lookup table identity is not recoverable within the signer freshness window",
1168
+ );
1169
+ }
1170
+ // The signer clears a create binding only after two independent RPC
1171
+ // origins prove both blockhash expiry and table absence. Discard the
1172
+ // stale Gateway cache so the next exact workflow attempt can derive and
1173
+ // persist a fresh signer-owned table identity.
1174
+ lookupTable = "";
1175
+ } else {
1176
+ attemptedCreateAddresses.add(lookupTable);
1177
+ await params.onLookupTableResolved?.(lookupTable);
1178
+ }
1179
+ }
1180
+ while (!state) {
1181
+ if (!lookupTable || createRecentSlot == null) {
1182
+ const currentSlot = await inspectSatChainSlot(params.config);
1183
+ const oldestSlot = Math.max(0, currentSlot - SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW);
1184
+ let selected = false;
1185
+ for (
1186
+ let recentSlot = Math.max(0, currentSlot - 1);
1187
+ recentSlot >= oldestSlot;
1188
+ recentSlot -= 1
1189
+ ) {
1190
+ const [, derivedAddress] =
1191
+ params.context.solana.AddressLookupTableProgram.createLookupTable({
1192
+ authority: params.context.signer,
1193
+ payer: params.context.signer,
1194
+ recentSlot,
1195
+ });
1196
+ const candidate = derivedAddress.toBase58();
1197
+ if (attemptedCreateAddresses.has(candidate)) {
1198
+ continue;
1199
+ }
1200
+ attemptedCreateAddresses.add(candidate);
1201
+ const existingCandidate = await readValidatedSatLookupTable({
1202
+ config: params.config,
1203
+ address: candidate,
1204
+ authority: params.context.signerAddress,
1205
+ });
1206
+ if (existingCandidate) {
1207
+ continue;
1208
+ }
1209
+ lookupTable = candidate;
1210
+ createRecentSlot = recentSlot;
1211
+ // Persist each deterministic candidate before its first possible
1212
+ // broadcast. Signer reverse binding prevents two page identities from
1213
+ // ever sharing one address; a collision advances to the next fresh slot.
1214
+ await params.onLookupTableResolved?.(lookupTable);
1215
+ selected = true;
1216
+ break;
1217
+ }
1218
+ if (!selected) {
1219
+ throw new Error(
1220
+ "SAT distribution lookup table has no free signer-owned address in the freshness window",
1221
+ );
1222
+ }
1223
+ }
1224
+ try {
1225
+ const submitted = await executeTypedSatLookupOperation({
1226
+ context: params.context,
1227
+ cfg: params.cfg,
1228
+ action: "create",
1229
+ address: lookupTable,
1230
+ cycleId: params.cycleId,
1231
+ pageIndex: params.pageIndex,
1232
+ recentSlot: createRecentSlot,
1233
+ parent: params.parent,
1234
+ });
1235
+ transactionHashes.push(submitted.signature);
1236
+ created = true;
1237
+ } catch (error) {
1238
+ if (
1239
+ error instanceof SatSubmissionDefinitiveFailureError &&
1240
+ error.message.includes("address is already bound to another cycle and page")
1241
+ ) {
1242
+ lookupTable = "";
1243
+ createRecentSlot = undefined;
1244
+ continue;
1245
+ }
1246
+ if (
1247
+ error instanceof SatSubmissionUnresolvedError ||
1248
+ error instanceof SatSubmissionDefinitiveFailureError
1249
+ ) {
1250
+ throw error;
1251
+ }
1252
+ try {
1253
+ state = await waitForSatLookupTable({
1254
+ config: params.config,
1255
+ address: lookupTable,
1256
+ authority: params.context.signerAddress,
1257
+ requireNextSlot: false,
1258
+ });
1259
+ } catch {
1260
+ throw error;
1261
+ }
1262
+ }
1263
+ state ??= await waitForSatLookupTable({
1264
+ config: params.config,
1265
+ address: lookupTable,
1266
+ authority: params.context.signerAddress,
1267
+ requireNextSlot: false,
1268
+ });
1269
+ break;
1270
+ }
1271
+ if (!state) {
1272
+ throw new Error("SAT distribution lookup table was not found at the confirmed commitment");
1273
+ }
1274
+ const existing = new Set(state.addresses);
1275
+ const missing = desiredAddresses.filter((entry) => !existing.has(entry));
1276
+ for (let offset = 0; offset < missing.length; offset += SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE) {
1277
+ const addresses = missing.slice(offset, offset + SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE);
1278
+ try {
1279
+ const submitted = await executeTypedSatLookupOperation({
1280
+ context: params.context,
1281
+ cfg: params.cfg,
1282
+ action: "extend",
1283
+ address: lookupTable,
1284
+ cycleId: params.cycleId,
1285
+ pageIndex: params.pageIndex,
1286
+ addresses,
1287
+ parent: params.parent,
1288
+ });
1289
+ transactionHashes.push(submitted.signature);
1290
+ } catch (error) {
1291
+ if (error instanceof SatSubmissionUnresolvedError) {
1292
+ throw error;
1293
+ }
1294
+ const concurrentState = await waitForSatLookupTable({
1295
+ config: params.config,
1296
+ address: lookupTable,
1297
+ authority: params.context.signerAddress,
1298
+ requireNextSlot: false,
1299
+ }).catch(() => null);
1300
+ if (
1301
+ !concurrentState ||
1302
+ addresses.some((address) => !concurrentState.addresses.includes(address))
1303
+ ) {
1304
+ throw error;
1305
+ }
1306
+ }
1307
+ }
1308
+ const ready = await waitForSatLookupTable({
1309
+ config: params.config,
1310
+ address: lookupTable,
1311
+ authority: params.context.signerAddress,
1312
+ requireNextSlot: true,
1313
+ });
1314
+ for (const address of desiredAddresses) {
1315
+ if (!ready.addresses.includes(address)) {
1316
+ throw new Error(`SAT distribution lookup table did not persist required account ${address}`);
1317
+ }
1318
+ }
1319
+ return {
1320
+ lookupTable,
1321
+ created,
1322
+ extended: missing.length > 0,
1323
+ addressCount: ready.addresses.length,
1324
+ transactionHashes,
1325
+ };
1326
+ }
1327
+
857
1328
  async function submitInstructionViaLocalSigner(
858
1329
  params: {
859
1330
  cfg: FasedAgentConfig;
860
1331
  env: NodeJS.ProcessEnv;
861
1332
  } & SatInstructionSubmitSpec,
862
- ) {
1333
+ ): Promise<SatInstructionSubmitResult> {
863
1334
  const context = await prepareLocalSignerSubmitContext(params.cfg, params.env);
864
- const request = await buildLocalSignerInstructionRequest({
1335
+ const baseRequest = await buildLocalSignerInstructionRequest({
865
1336
  solana: context.solana,
866
1337
  signer: context.signer,
867
1338
  env: context.effectiveEnv,
@@ -870,6 +1341,23 @@ async function submitInstructionViaLocalSigner(
870
1341
  if (!context.walletId) {
871
1342
  throw new Error("typed SAT signing requires an explicit mining walletId");
872
1343
  }
1344
+ let managedLookupTable: Awaited<ReturnType<typeof ensureSatDistributionLookupTable>> | undefined;
1345
+ if (params.manageAddressLookupTable) {
1346
+ managedLookupTable = await ensureSatDistributionLookupTable({
1347
+ context: { ...context, walletId: context.walletId },
1348
+ cfg: params.cfg,
1349
+ config: params.cfg as unknown as SatMiningConfig,
1350
+ lookupTableAddress: params.manageAddressLookupTable.lookupTableAddress,
1351
+ cycleId: params.manageAddressLookupTable.cycleId,
1352
+ pageIndex: params.manageAddressLookupTable.pageIndex,
1353
+ addresses: baseRequest.keys.filter((key) => !key.isSigner).map((key) => key.pubkey),
1354
+ parent: baseRequest,
1355
+ onLookupTableResolved: params.manageAddressLookupTable.onLookupTableResolved,
1356
+ });
1357
+ }
1358
+ const request = managedLookupTable
1359
+ ? { ...baseRequest, addressLookupTables: [managedLookupTable.lookupTable] }
1360
+ : baseRequest;
873
1361
  const submitted = await executeTypedSatIntent({
874
1362
  socketPath: context.socketPath,
875
1363
  walletId: context.walletId,
@@ -883,6 +1371,20 @@ async function submitInstructionViaLocalSigner(
883
1371
  signer: context.signerAddress,
884
1372
  signerState: submitted.state,
885
1373
  requestId: submitted.requestId,
1374
+ ...(request.addressLookupTables?.length
1375
+ ? {
1376
+ transactionVersion: "v0" as const,
1377
+ lookupTableAddress: request.addressLookupTables[0],
1378
+ }
1379
+ : { transactionVersion: "legacy" as const }),
1380
+ ...(managedLookupTable
1381
+ ? {
1382
+ lookupTableCreated: managedLookupTable.created,
1383
+ lookupTableExtended: managedLookupTable.extended,
1384
+ lookupTableAddressCount: managedLookupTable.addressCount,
1385
+ lookupTableTransactionHashes: managedLookupTable.transactionHashes,
1386
+ }
1387
+ : {}),
886
1388
  };
887
1389
  }
888
1390
 
@@ -901,6 +1403,8 @@ async function submitInstruction(
901
1403
  env: effectiveEnv,
902
1404
  data: params.data,
903
1405
  programId: params.programId,
1406
+ addressLookupTables: params.addressLookupTables,
1407
+ manageAddressLookupTable: params.manageAddressLookupTable,
904
1408
  accountResolver: params.accountResolver,
905
1409
  });
906
1410
  }
@@ -2702,13 +3206,35 @@ export async function submitSatScoreCyclePage(
2702
3206
 
2703
3207
  export async function submitSatDistributeCyclePage(
2704
3208
  _config: SatMiningConfig,
2705
- params: { cycleId: number; pageIndex: number; chunkIndex: number; minerCycleAccounts?: string[] },
3209
+ params: {
3210
+ cycleId: number;
3211
+ pageIndex: number;
3212
+ chunkIndex: number;
3213
+ minerCycleAccounts?: string[];
3214
+ lookupTableAddress?: string;
3215
+ onLookupTableResolved?: (lookupTableAddress: string) => Promise<void>;
3216
+ },
2706
3217
  ) {
2707
3218
  const cfg = loadConfigForSatRuntime(_config);
3219
+ const lookupTableAddress = params.lookupTableAddress?.trim() ?? "";
3220
+ const requiresLookupTable =
3221
+ (params.minerCycleAccounts?.length ?? 0) >= SAT_DISTRIBUTION_LOOKUP_MIN_MINERS;
2708
3222
  return submitInstruction({
2709
3223
  cfg,
2710
3224
  env: process.env,
2711
3225
  data: buildDistributeCyclePageData(params),
3226
+ ...(lookupTableAddress || requiresLookupTable
3227
+ ? {
3228
+ manageAddressLookupTable: {
3229
+ cycleId: params.cycleId,
3230
+ pageIndex: params.pageIndex,
3231
+ ...(lookupTableAddress ? { lookupTableAddress } : {}),
3232
+ ...(params.onLookupTableResolved
3233
+ ? { onLookupTableResolved: params.onLookupTableResolved }
3234
+ : {}),
3235
+ },
3236
+ }
3237
+ : {}),
2712
3238
  accountResolver: async (solana, signer) => {
2713
3239
  const programId = new solana.PublicKey(SAT_PROGRAM_ID());
2714
3240
  const [satCycleState] = solana.PublicKey.findProgramAddressSync(
@@ -2798,6 +3324,51 @@ export async function submitSatDistributeCyclePage(
2798
3324
  });
2799
3325
  }
2800
3326
 
3327
+ export async function submitSatCleanupDistributionLookupTable(
3328
+ _config: SatMiningConfig,
3329
+ params: {
3330
+ cycleId: number;
3331
+ pageIndex: number;
3332
+ action: "deactivate" | "close";
3333
+ },
3334
+ ) {
3335
+ const cfg = loadConfigForSatRuntime(_config);
3336
+ const context = await prepareLocalSignerSubmitContext(cfg, process.env);
3337
+ assertSatLookupTableEnabled(context.effectiveEnv);
3338
+ if (!context.walletId) {
3339
+ throw new Error("typed SAT lookup-table cleanup requires an explicit mining walletId");
3340
+ }
3341
+ const binding = await readReconciledSatLookupBinding({
3342
+ context: { ...context, walletId: context.walletId },
3343
+ cycleId: params.cycleId,
3344
+ pageIndex: params.pageIndex,
3345
+ });
3346
+ const lookupTable = binding.address?.trim() ?? "";
3347
+ if (
3348
+ binding.cycleId !== String(params.cycleId) ||
3349
+ binding.pageIndex !== String(params.pageIndex) ||
3350
+ !binding.bound ||
3351
+ !lookupTable
3352
+ ) {
3353
+ throw new Error("SAT distribution lookup table is not bound to this wallet, cycle, and page");
3354
+ }
3355
+ const submitted = await executeTypedSatLookupOperation({
3356
+ context: { ...context, walletId: context.walletId },
3357
+ cfg,
3358
+ action: params.action,
3359
+ address: lookupTable,
3360
+ cycleId: params.cycleId,
3361
+ pageIndex: params.pageIndex,
3362
+ });
3363
+ return {
3364
+ lookupTable,
3365
+ action: params.action,
3366
+ transactionHashes: [submitted.signature],
3367
+ signerState: submitted.state,
3368
+ requestId: submitted.requestId,
3369
+ };
3370
+ }
3371
+
2801
3372
  export async function submitSatClaimCycleRewards(
2802
3373
  _config: SatMiningConfig,
2803
3374
  params: { cycleId: number },