@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
@@ -7,7 +7,7 @@ import { resolveWalletProviderId } from "../../../wallet/wallet-provider-resolve
7
7
  import { createSignerReviewApprovalRequest } from "../../../wallet/wallet-send-approvals.js";
8
8
  import "../../../plugin-sdk/sat-runtime.js";
9
9
  import { SAT_BOND_INSTRUCTION_DISCRIMINATORS, SAT_INSTRUCTION_DISCRIMINATORS, SAT_PROTOCOL_CONSTANTS, resolveSatGenesisProfileContract } from "./protocol-contract.js";
10
- import { inspectSatCycle, inspectSatCycleRegistryMeta, inspectSatMinerCyclesByAddress } from "./rpc-read.js";
10
+ import { inspectSatAddressLookupTable, inspectSatChainSlot, inspectSatCycle, inspectSatCycleRegistryMeta, inspectSatMinerCyclesByAddress } from "./rpc-read.js";
11
11
  import { decodeHash32 } from "./hash-spec.js";
12
12
  import { resolveSatSignerCodec } from "./signer-codec-manifest.js";
13
13
  import { buildSatSubmissionOperationKey, claimSatSubmission, digestSatSubmissionIntent, updateSatSubmission, waitForSatSubmissionLease } from "./submission-ledger.js";
@@ -49,6 +49,8 @@ const MINING_STAKE_SEED = "mining_stake";
49
49
  const TOKEN_PROGRAM_ID = "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA";
50
50
  const ASSOCIATED_TOKEN_PROGRAM_ID = "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL";
51
51
  const SLOT_HASHES_SYSVAR_ID = "SysvarS1otHashes111111111111111111111111111";
52
+ const SAT_DISTRIBUTION_LOOKUP_MIN_MINERS = 16;
53
+ const SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE = 20;
52
54
  const IX = SAT_INSTRUCTION_DISCRIMINATORS;
53
55
  const BOND_IX = SAT_BOND_INSTRUCTION_DISCRIMINATORS;
54
56
  const VAULT_BOND_ACTIONS = new Set([
@@ -256,6 +258,7 @@ async function buildLocalSignerInstructionRequest(params) {
256
258
  isSigner: key.isSigner,
257
259
  isWritable: key.isWritable
258
260
  })),
261
+ ...params.spec.addressLookupTables?.length ? { addressLookupTables: params.spec.addressLookupTables } : {},
259
262
  ...context ? { context } : {}
260
263
  };
261
264
  }
@@ -290,8 +293,9 @@ async function requireTypedSatSignerCapabilities(socketPath, intentType) {
290
293
  "signerOwnedStateRecheck",
291
294
  "durableReviewAuthorization"
292
295
  ].filter((feature) => !features.has(feature)) : [];
293
- if (result.ready !== true || protocol?.current !== 2 || typeof protocol.min !== "number" || protocol.min > 2 || typeof protocol.max !== "number" || protocol.max < 2 || !capabilities?.intentTypes?.includes(intentType) || missingFeatures.length > 0 || intentType === "solana.vaultBondAction" && !features.has("typedVaultBondActions") || missingVaultReviewFeatures.length > 0 || missingStates.length > 0) {
294
- throw new Error(`local-socket-signer does not support the required typed SAT protocol-v2 contract${missingFeatures.length > 0 ? `; missing features: ${missingFeatures.join(", ")}` : ""}${missingVaultReviewFeatures.length > 0 ? `; missing reviewed Vault features: ${missingVaultReviewFeatures.join(", ")}` : ""}${missingStates.length > 0 ? `; missing states: ${missingStates.join(", ")}` : ""}`);
296
+ const missingLookupFeatures = intentType === "solana.satLookupTable" && !features.has("typedSATAddressLookupTables") ? ["typedSATAddressLookupTables"] : [];
297
+ if (result.ready !== true || protocol?.current !== 2 || typeof protocol.min !== "number" || protocol.min > 2 || typeof protocol.max !== "number" || protocol.max < 2 || !capabilities?.intentTypes?.includes(intentType) || missingFeatures.length > 0 || missingLookupFeatures.length > 0 || intentType === "solana.vaultBondAction" && !features.has("typedVaultBondActions") || missingVaultReviewFeatures.length > 0 || missingStates.length > 0) {
298
+ throw new Error(`local-socket-signer does not support the required typed SAT protocol-v2 contract${missingFeatures.length > 0 ? `; missing features: ${missingFeatures.join(", ")}` : ""}${missingVaultReviewFeatures.length > 0 ? `; missing reviewed Vault features: ${missingVaultReviewFeatures.join(", ")}` : ""}${missingLookupFeatures.length > 0 ? `; missing SAT lookup features: ${missingLookupFeatures.join(", ")}` : ""}${missingStates.length > 0 ? `; missing states: ${missingStates.join(", ")}` : ""}`);
295
299
  }
296
300
  }
297
301
  async function reconcileTypedSatOperation(params) {
@@ -320,6 +324,11 @@ function assertSatSignerOperationIdentity(operation, requestId) {
320
324
  function signerStateForLedger(state) {
321
325
  return state;
322
326
  }
327
+ function assertSatLookupTableAction(value) {
328
+ if (value !== "create" && value !== "extend" && value !== "deactivate" && value !== "close") {
329
+ throw new Error(`unsupported SAT lookup-table action ${value}`);
330
+ }
331
+ }
323
332
  var SatSubmissionUnresolvedError = class extends Error {
324
333
  constructor(params) {
325
334
  super(`SAT signer operation ${params.requestId} remains ${params.state}${params.signature ? ` with signature ${params.signature}` : ""}; it is unresolved and must be reconciled with the same idempotency key before any new submission${params.detail ? ` (${params.detail})` : ""}`);
@@ -328,11 +337,29 @@ var SatSubmissionUnresolvedError = class extends Error {
328
337
  this.signature = params.signature;
329
338
  }
330
339
  };
340
+ var SatSubmissionDefinitiveFailureError = class extends Error {
341
+ constructor(message) {
342
+ super(message);
343
+ this.name = "SatSubmissionDefinitiveFailureError";
344
+ }
345
+ };
331
346
  async function executeTypedSatIntent(params) {
332
- const isVaultBond = params.action !== "cleanupBatch" && VAULT_BOND_ACTIONS.has(params.action);
333
- const intentType = isVaultBond ? "solana.vaultBondAction" : "solana.satAction";
347
+ const isLookupTable = params.lookupTable != null;
348
+ const isVaultBond = !isLookupTable && params.action !== "cleanupBatch" && VAULT_BOND_ACTIONS.has(params.action);
349
+ const intentType = isLookupTable ? "solana.satLookupTable" : isVaultBond ? "solana.vaultBondAction" : "solana.satAction";
334
350
  await requireTypedSatSignerCapabilities(params.socketPath, intentType);
335
- const intent = isVaultBond ? (() => {
351
+ const intent = isLookupTable ? (() => {
352
+ if (params.instruction || params.instructions || !params.lookupTable) {
353
+ throw new Error("typed SAT lookup-table execution accepts only semantic lookup details");
354
+ }
355
+ const action = params.action;
356
+ assertSatLookupTableAction(action);
357
+ return {
358
+ type: "solana.satLookupTable",
359
+ action,
360
+ lookupTable: params.lookupTable
361
+ };
362
+ })() : isVaultBond ? (() => {
336
363
  if (!params.instruction || params.instructions) {
337
364
  throw new Error("typed Vault bond execution requires exactly one semantic instruction");
338
365
  }
@@ -364,6 +391,7 @@ async function executeTypedSatIntent(params) {
364
391
  operationKey,
365
392
  intentDigest,
366
393
  action: params.action,
394
+ allowFailedRetry: isLookupTable,
367
395
  env: params.env
368
396
  });
369
397
  if (!claim.claimed) {
@@ -378,6 +406,7 @@ async function executeTypedSatIntent(params) {
378
406
  operationKey,
379
407
  intentDigest,
380
408
  action: params.action,
409
+ allowFailedRetry: isLookupTable,
381
410
  env: params.env,
382
411
  owner: claim.owner
383
412
  });
@@ -622,7 +651,7 @@ async function executeTypedSatIntent(params) {
622
651
  env: params.env
623
652
  });
624
653
  if (operation.state === "failed") {
625
- throw new Error(operation.error || `SAT signer operation ${requestId} failed`);
654
+ throw new SatSubmissionDefinitiveFailureError(operation.error || `SAT signer operation ${requestId} failed`);
626
655
  }
627
656
  if (operation.state !== "confirmed" || !operation.signature) {
628
657
  throw new SatSubmissionUnresolvedError({
@@ -637,9 +666,288 @@ async function executeTypedSatIntent(params) {
637
666
  signature: operation.signature
638
667
  };
639
668
  }
669
+ function assertSatLookupTableEnabled(env) {
670
+ if (String(env.FASED_SAT_ENABLE_ALT_V0 ?? "").trim() !== "1") {
671
+ throw new Error("SAT ALT/v0 support is disabled; set FASED_SAT_ENABLE_ALT_V0=1");
672
+ }
673
+ }
674
+ async function executeTypedSatLookupOperation(params) {
675
+ return await executeTypedSatIntent({
676
+ socketPath: params.context.socketPath,
677
+ walletId: params.context.walletId,
678
+ action: params.action,
679
+ lookupTable: {
680
+ address: params.address,
681
+ cycleId: String(params.cycleId),
682
+ pageIndex: String(params.pageIndex),
683
+ ...params.recentSlot == null ? {} : { recentSlot: String(params.recentSlot) },
684
+ ...params.addresses?.length ? { addresses: params.addresses } : {},
685
+ ...params.parent ? { parent: params.parent } : {}
686
+ },
687
+ cluster: resolveSatCluster(params.cfg),
688
+ env: params.context.effectiveEnv
689
+ });
690
+ }
691
+ async function readValidatedSatLookupTable(params) {
692
+ const state = await inspectSatAddressLookupTable(params.config, { address: params.address });
693
+ if (!state) {
694
+ return null;
695
+ }
696
+ if (state.authority !== params.authority) {
697
+ throw new Error("SAT distribution lookup table is not controlled by the Mining signer");
698
+ }
699
+ if (!state.active) {
700
+ throw new Error("SAT distribution lookup table is not active");
701
+ }
702
+ return state;
703
+ }
704
+ async function waitForSatLookupTable(params) {
705
+ let lastError;
706
+ for (let attempt = 0; attempt < 24; attempt += 1) {
707
+ try {
708
+ const state = await readValidatedSatLookupTable(params);
709
+ if (state) {
710
+ const currentSlot = await inspectSatChainSlot(params.config);
711
+ if (!params.requireNextSlot || currentSlot > state.lastExtendedSlot) {
712
+ return state;
713
+ }
714
+ }
715
+ } catch (error) {
716
+ lastError = error;
717
+ }
718
+ await new Promise((resolve) => setTimeout(resolve, 250));
719
+ }
720
+ throw new Error(`SAT distribution lookup table did not become active for use within 6s${lastError instanceof Error ? `: ${lastError.message}` : ""}`);
721
+ }
722
+ const SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW = 128;
723
+ function recoverSatLookupTableRecentSlot(params) {
724
+ const oldestSlot = Math.max(0, params.currentSlot - SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW);
725
+ for (let recentSlot = params.currentSlot; recentSlot >= oldestSlot; recentSlot -= 1) {
726
+ const [, derivedAddress] = params.context.solana.AddressLookupTableProgram.createLookupTable({
727
+ authority: params.context.signer,
728
+ payer: params.context.signer,
729
+ recentSlot
730
+ });
731
+ if (derivedAddress.toBase58() === params.lookupTable) {
732
+ return recentSlot;
733
+ }
734
+ }
735
+ return undefined;
736
+ }
737
+ async function readReconciledSatLookupBinding(params) {
738
+ const request = {
739
+ cycleId: String(params.cycleId),
740
+ pageIndex: String(params.pageIndex)
741
+ };
742
+ const readBinding = async () => await callLocalSocketSigner(params.context.socketPath, {
743
+ op: "v2.satLookup.binding.get",
744
+ walletId: params.context.walletId,
745
+ request
746
+ });
747
+ const binding = await readBinding();
748
+ if (binding.cycleId !== request.cycleId || binding.pageIndex !== request.pageIndex || binding.bound !== Boolean(binding.address) || Boolean(binding.mutationRequestId) !== Boolean(binding.mutationState)) {
749
+ throw new Error("signer returned an invalid SAT lookup-table binding");
750
+ }
751
+ if (binding.mutationState === "reserved") {
752
+ throw new Error("SAT lookup-table mutation is already in progress");
753
+ }
754
+ if ((binding.mutationState === "broadcast" || binding.mutationState === "unknown") && binding.mutationRequestId) {
755
+ const operation = assertSatSignerOperationIdentity(await callLocalSocketSigner(params.context.socketPath, {
756
+ op: "v2.operation.reconcile",
757
+ walletId: params.context.walletId,
758
+ request: { requestId: binding.mutationRequestId }
759
+ }), binding.mutationRequestId);
760
+ if (operation.state === "reserved" || operation.state === "broadcast" || operation.state === "unknown") {
761
+ throw new SatSubmissionUnresolvedError({
762
+ requestId: operation.requestId,
763
+ state: operation.state,
764
+ signature: operation.signature,
765
+ detail: operation.error
766
+ });
767
+ }
768
+ const reconciled = await readBinding();
769
+ if (reconciled.cycleId !== request.cycleId || reconciled.pageIndex !== request.pageIndex || reconciled.bound !== Boolean(reconciled.address) || Boolean(reconciled.mutationRequestId) !== Boolean(reconciled.mutationState)) {
770
+ throw new Error("signer returned an invalid reconciled SAT lookup-table binding");
771
+ }
772
+ return reconciled;
773
+ }
774
+ return binding;
775
+ }
776
+ async function ensureSatDistributionLookupTable(params) {
777
+ assertSatLookupTableEnabled(params.context.effectiveEnv);
778
+ const desiredAddresses = [...new Set(params.addresses.map((entry) => entry.trim()))].filter(Boolean);
779
+ if (desiredAddresses.length === 0 || desiredAddresses.length > 256) {
780
+ throw new Error("SAT distribution lookup table requires 1-256 exact account addresses");
781
+ }
782
+ const signerBinding = await readReconciledSatLookupBinding({
783
+ context: params.context,
784
+ cycleId: params.cycleId,
785
+ pageIndex: params.pageIndex
786
+ });
787
+ let lookupTable = signerBinding.address?.trim() || "";
788
+ if (signerBinding.bound && lookupTable) {
789
+ await params.onLookupTableResolved?.(lookupTable);
790
+ }
791
+ let state = lookupTable ? await readValidatedSatLookupTable({
792
+ config: params.config,
793
+ address: lookupTable,
794
+ authority: params.context.signerAddress
795
+ }) : null;
796
+ if (lookupTable && state) {
797
+ await params.onLookupTableResolved?.(lookupTable);
798
+ }
799
+ let created = false;
800
+ const transactionHashes = [];
801
+ let createRecentSlot;
802
+ const attemptedCreateAddresses = new Set();
803
+ if (lookupTable && !state) {
804
+ const currentSlot = await inspectSatChainSlot(params.config);
805
+ createRecentSlot = recoverSatLookupTableRecentSlot({
806
+ context: params.context,
807
+ lookupTable,
808
+ currentSlot
809
+ });
810
+ if (createRecentSlot == null) {
811
+ if (signerBinding.bound) {
812
+ throw new Error("SAT distribution lookup table identity is not recoverable within the signer freshness window");
813
+ }
814
+ lookupTable = "";
815
+ } else {
816
+ attemptedCreateAddresses.add(lookupTable);
817
+ await params.onLookupTableResolved?.(lookupTable);
818
+ }
819
+ }
820
+ while (!state) {
821
+ if (!lookupTable || createRecentSlot == null) {
822
+ const currentSlot = await inspectSatChainSlot(params.config);
823
+ const oldestSlot = Math.max(0, currentSlot - SAT_LOOKUP_TABLE_CREATE_SLOT_WINDOW);
824
+ let selected = false;
825
+ for (let recentSlot = Math.max(0, currentSlot - 1); recentSlot >= oldestSlot; recentSlot -= 1) {
826
+ const [, derivedAddress] = params.context.solana.AddressLookupTableProgram.createLookupTable({
827
+ authority: params.context.signer,
828
+ payer: params.context.signer,
829
+ recentSlot
830
+ });
831
+ const candidate = derivedAddress.toBase58();
832
+ if (attemptedCreateAddresses.has(candidate)) {
833
+ continue;
834
+ }
835
+ attemptedCreateAddresses.add(candidate);
836
+ const existingCandidate = await readValidatedSatLookupTable({
837
+ config: params.config,
838
+ address: candidate,
839
+ authority: params.context.signerAddress
840
+ });
841
+ if (existingCandidate) {
842
+ continue;
843
+ }
844
+ lookupTable = candidate;
845
+ createRecentSlot = recentSlot;
846
+ await params.onLookupTableResolved?.(lookupTable);
847
+ selected = true;
848
+ break;
849
+ }
850
+ if (!selected) {
851
+ throw new Error("SAT distribution lookup table has no free signer-owned address in the freshness window");
852
+ }
853
+ }
854
+ try {
855
+ const submitted = await executeTypedSatLookupOperation({
856
+ context: params.context,
857
+ cfg: params.cfg,
858
+ action: "create",
859
+ address: lookupTable,
860
+ cycleId: params.cycleId,
861
+ pageIndex: params.pageIndex,
862
+ recentSlot: createRecentSlot,
863
+ parent: params.parent
864
+ });
865
+ transactionHashes.push(submitted.signature);
866
+ created = true;
867
+ } catch (error) {
868
+ if (error instanceof SatSubmissionDefinitiveFailureError && error.message.includes("address is already bound to another cycle and page")) {
869
+ lookupTable = "";
870
+ createRecentSlot = undefined;
871
+ continue;
872
+ }
873
+ if (error instanceof SatSubmissionUnresolvedError || error instanceof SatSubmissionDefinitiveFailureError) {
874
+ throw error;
875
+ }
876
+ try {
877
+ state = await waitForSatLookupTable({
878
+ config: params.config,
879
+ address: lookupTable,
880
+ authority: params.context.signerAddress,
881
+ requireNextSlot: false
882
+ });
883
+ } catch {
884
+ throw error;
885
+ }
886
+ }
887
+ state ??= await waitForSatLookupTable({
888
+ config: params.config,
889
+ address: lookupTable,
890
+ authority: params.context.signerAddress,
891
+ requireNextSlot: false
892
+ });
893
+ break;
894
+ }
895
+ if (!state) {
896
+ throw new Error("SAT distribution lookup table was not found at the confirmed commitment");
897
+ }
898
+ const existing = new Set(state.addresses);
899
+ const missing = desiredAddresses.filter((entry) => !existing.has(entry));
900
+ for (let offset = 0; offset < missing.length; offset += SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE) {
901
+ const addresses = missing.slice(offset, offset + SAT_LOOKUP_TABLE_EXTEND_CHUNK_SIZE);
902
+ try {
903
+ const submitted = await executeTypedSatLookupOperation({
904
+ context: params.context,
905
+ cfg: params.cfg,
906
+ action: "extend",
907
+ address: lookupTable,
908
+ cycleId: params.cycleId,
909
+ pageIndex: params.pageIndex,
910
+ addresses,
911
+ parent: params.parent
912
+ });
913
+ transactionHashes.push(submitted.signature);
914
+ } catch (error) {
915
+ if (error instanceof SatSubmissionUnresolvedError) {
916
+ throw error;
917
+ }
918
+ const concurrentState = await waitForSatLookupTable({
919
+ config: params.config,
920
+ address: lookupTable,
921
+ authority: params.context.signerAddress,
922
+ requireNextSlot: false
923
+ }).catch(() => null);
924
+ if (!concurrentState || addresses.some((address) => !concurrentState.addresses.includes(address))) {
925
+ throw error;
926
+ }
927
+ }
928
+ }
929
+ const ready = await waitForSatLookupTable({
930
+ config: params.config,
931
+ address: lookupTable,
932
+ authority: params.context.signerAddress,
933
+ requireNextSlot: true
934
+ });
935
+ for (const address of desiredAddresses) {
936
+ if (!ready.addresses.includes(address)) {
937
+ throw new Error(`SAT distribution lookup table did not persist required account ${address}`);
938
+ }
939
+ }
940
+ return {
941
+ lookupTable,
942
+ created,
943
+ extended: missing.length > 0,
944
+ addressCount: ready.addresses.length,
945
+ transactionHashes
946
+ };
947
+ }
640
948
  async function submitInstructionViaLocalSigner(params) {
641
949
  const context = await prepareLocalSignerSubmitContext(params.cfg, params.env);
642
- const request = await buildLocalSignerInstructionRequest({
950
+ const baseRequest = await buildLocalSignerInstructionRequest({
643
951
  solana: context.solana,
644
952
  signer: context.signer,
645
953
  env: context.effectiveEnv,
@@ -648,6 +956,27 @@ async function submitInstructionViaLocalSigner(params) {
648
956
  if (!context.walletId) {
649
957
  throw new Error("typed SAT signing requires an explicit mining walletId");
650
958
  }
959
+ let managedLookupTable;
960
+ if (params.manageAddressLookupTable) {
961
+ managedLookupTable = await ensureSatDistributionLookupTable({
962
+ context: {
963
+ ...context,
964
+ walletId: context.walletId
965
+ },
966
+ cfg: params.cfg,
967
+ config: params.cfg,
968
+ lookupTableAddress: params.manageAddressLookupTable.lookupTableAddress,
969
+ cycleId: params.manageAddressLookupTable.cycleId,
970
+ pageIndex: params.manageAddressLookupTable.pageIndex,
971
+ addresses: baseRequest.keys.filter((key) => !key.isSigner).map((key) => key.pubkey),
972
+ parent: baseRequest,
973
+ onLookupTableResolved: params.manageAddressLookupTable.onLookupTableResolved
974
+ });
975
+ }
976
+ const request = managedLookupTable ? {
977
+ ...baseRequest,
978
+ addressLookupTables: [managedLookupTable.lookupTable]
979
+ } : baseRequest;
651
980
  const submitted = await executeTypedSatIntent({
652
981
  socketPath: context.socketPath,
653
982
  walletId: context.walletId,
@@ -660,7 +989,17 @@ async function submitInstructionViaLocalSigner(params) {
660
989
  txHash: submitted.signature,
661
990
  signer: context.signerAddress,
662
991
  signerState: submitted.state,
663
- requestId: submitted.requestId
992
+ requestId: submitted.requestId,
993
+ ...request.addressLookupTables?.length ? {
994
+ transactionVersion: "v0",
995
+ lookupTableAddress: request.addressLookupTables[0]
996
+ } : { transactionVersion: "legacy" },
997
+ ...managedLookupTable ? {
998
+ lookupTableCreated: managedLookupTable.created,
999
+ lookupTableExtended: managedLookupTable.extended,
1000
+ lookupTableAddressCount: managedLookupTable.addressCount,
1001
+ lookupTableTransactionHashes: managedLookupTable.transactionHashes
1002
+ } : {}
664
1003
  };
665
1004
  }
666
1005
  async function submitInstruction(params) {
@@ -673,6 +1012,8 @@ async function submitInstruction(params) {
673
1012
  env: effectiveEnv,
674
1013
  data: params.data,
675
1014
  programId: params.programId,
1015
+ addressLookupTables: params.addressLookupTables,
1016
+ manageAddressLookupTable: params.manageAddressLookupTable,
676
1017
  accountResolver: params.accountResolver
677
1018
  });
678
1019
  }
@@ -2530,10 +2871,18 @@ async function submitSatScoreCyclePage(_config, params) {
2530
2871
  }
2531
2872
  async function submitSatDistributeCyclePage(_config, params) {
2532
2873
  const cfg = loadConfigForSatRuntime(_config);
2874
+ const lookupTableAddress = params.lookupTableAddress?.trim() ?? "";
2875
+ const requiresLookupTable = (params.minerCycleAccounts?.length ?? 0) >= SAT_DISTRIBUTION_LOOKUP_MIN_MINERS;
2533
2876
  return submitInstruction({
2534
2877
  cfg,
2535
2878
  env: process.env,
2536
2879
  data: buildDistributeCyclePageData(params),
2880
+ ...lookupTableAddress || requiresLookupTable ? { manageAddressLookupTable: {
2881
+ cycleId: params.cycleId,
2882
+ pageIndex: params.pageIndex,
2883
+ ...lookupTableAddress ? { lookupTableAddress } : {},
2884
+ ...params.onLookupTableResolved ? { onLookupTableResolved: params.onLookupTableResolved } : {}
2885
+ } } : {},
2537
2886
  accountResolver: async (solana, signer) => {
2538
2887
  const programId = new solana.PublicKey(SAT_PROGRAM_ID());
2539
2888
  const [satCycleState] = solana.PublicKey.findProgramAddressSync([Buffer.from(SAT_CYCLE_STATE_SEED), encodeU64(params.cycleId)], programId);
@@ -2635,6 +2984,44 @@ async function submitSatDistributeCyclePage(_config, params) {
2635
2984
  }
2636
2985
  });
2637
2986
  }
2987
+ async function submitSatCleanupDistributionLookupTable(_config, params) {
2988
+ const cfg = loadConfigForSatRuntime(_config);
2989
+ const context = await prepareLocalSignerSubmitContext(cfg, process.env);
2990
+ assertSatLookupTableEnabled(context.effectiveEnv);
2991
+ if (!context.walletId) {
2992
+ throw new Error("typed SAT lookup-table cleanup requires an explicit mining walletId");
2993
+ }
2994
+ const binding = await readReconciledSatLookupBinding({
2995
+ context: {
2996
+ ...context,
2997
+ walletId: context.walletId
2998
+ },
2999
+ cycleId: params.cycleId,
3000
+ pageIndex: params.pageIndex
3001
+ });
3002
+ const lookupTable = binding.address?.trim() ?? "";
3003
+ if (binding.cycleId !== String(params.cycleId) || binding.pageIndex !== String(params.pageIndex) || !binding.bound || !lookupTable) {
3004
+ throw new Error("SAT distribution lookup table is not bound to this wallet, cycle, and page");
3005
+ }
3006
+ const submitted = await executeTypedSatLookupOperation({
3007
+ context: {
3008
+ ...context,
3009
+ walletId: context.walletId
3010
+ },
3011
+ cfg,
3012
+ action: params.action,
3013
+ address: lookupTable,
3014
+ cycleId: params.cycleId,
3015
+ pageIndex: params.pageIndex
3016
+ });
3017
+ return {
3018
+ lookupTable,
3019
+ action: params.action,
3020
+ transactionHashes: [submitted.signature],
3021
+ signerState: submitted.state,
3022
+ requestId: submitted.requestId
3023
+ };
3024
+ }
2638
3025
  async function submitSatClaimCycleRewards(_config, params) {
2639
3026
  const cfg = loadConfigForSatRuntime(_config);
2640
3027
  return submitInstruction({
@@ -63,7 +63,7 @@ function buildSatSubmissionOperationKey(intent) {
63
63
  action: candidate.action,
64
64
  keys: candidate.keys
65
65
  };
66
- }) : intent.keys;
66
+ }) : intent.keys ?? intent.lookupTable;
67
67
  return `${action}:${sha256(JSON.stringify(canonicalize(accountShape))).slice(0, 24)}`;
68
68
  }
69
69
  function normalizeStateKey(value) {
@@ -223,13 +223,33 @@ async function claimSatSubmission(params) {
223
223
  walletId: params.walletId,
224
224
  env
225
225
  });
226
- const requestId = buildSatSubmissionRequestId(params);
227
226
  const owner = params.owner ?? `${process.pid}:${randomUUID()}`;
228
227
  return await withSatSubmissionLedgerLock(filePath, async () => {
229
228
  const ledger = await readLedger(filePath);
229
+ let operationKey = params.operationKey;
230
+ let requestId = buildSatSubmissionRequestId({
231
+ ...params,
232
+ operationKey
233
+ });
234
+ if (params.allowFailedRetry) {
235
+ for (let retry = 1; retry <= 32; retry += 1) {
236
+ const prior = ledger.records[requestId];
237
+ if (!prior || prior.state !== "failed") {
238
+ break;
239
+ }
240
+ operationKey = `${params.operationKey}:retry:${retry}`;
241
+ requestId = buildSatSubmissionRequestId({
242
+ ...params,
243
+ operationKey
244
+ });
245
+ if (retry === 32 && ledger.records[requestId]?.state === "failed") {
246
+ throw new Error("SAT submission exhausted its safe pre-broadcast retry limit");
247
+ }
248
+ }
249
+ }
230
250
  const existing = ledger.records[requestId];
231
251
  if (existing) {
232
- if (existing.intentDigest !== params.intentDigest || existing.walletId !== params.walletId || existing.workflowId !== params.workflowId || existing.operationKey !== params.operationKey) {
252
+ if (existing.intentDigest !== params.intentDigest || existing.walletId !== params.walletId || existing.workflowId !== params.workflowId || existing.operationKey !== operationKey) {
233
253
  throw new Error(`SAT idempotency collision for ${requestId}: the workflow key is already bound to a different immutable intent digest`);
234
254
  }
235
255
  if (leaseIsLive(existing.lease) && existing.lease?.owner !== owner) {
@@ -261,7 +281,7 @@ async function claimSatSubmission(params) {
261
281
  const record = {
262
282
  requestId,
263
283
  workflowId: params.workflowId,
264
- operationKey: params.operationKey,
284
+ operationKey,
265
285
  intentDigest: params.intentDigest,
266
286
  walletId: params.walletId,
267
287
  action: params.action,
@@ -3,7 +3,7 @@ import { resolveProcessScopedMap } from "../shared/process-scoped-map.js";
3
3
  import { acquireFileLock, withFileLock } from "../plugin-sdk/file-lock.js";
4
4
  import "../infra/file-lock.js";
5
5
  import { serializeWalletState, writeWalletStateFileAtomically } from "../wallet/wallet-atomic-state.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { createHash } from "node:crypto";
9
9
 
@@ -85,17 +85,17 @@ function readMarketplaceDeliveryOutbox(params) {
85
85
  return null;
86
86
  }
87
87
  const filePath = recordPath(deliveryId, params.env ?? process.env);
88
- if (!syncFs.existsSync(filePath)) {
88
+ if (!fs.existsSync(filePath)) {
89
89
  return null;
90
90
  }
91
91
  try {
92
- return validateRecord(JSON.parse(syncFs.readFileSync(filePath, "utf8")), deliveryId);
92
+ return validateRecord(JSON.parse(fs.readFileSync(filePath, "utf8")), deliveryId);
93
93
  } catch (error) {
94
94
  throw new Error("marketplace delivery outbox is unreadable; refusing to resend", { cause: error });
95
95
  }
96
96
  }
97
97
  function writeRecord(record, env) {
98
- syncFs.mkdirSync(outboxDirectory(env), {
98
+ fs.mkdirSync(outboxDirectory(env), {
99
99
  recursive: true,
100
100
  mode: 448
101
101
  });
@@ -109,7 +109,7 @@ async function reserveMarketplaceDelivery(params) {
109
109
  throw new Error("marketplace delivery identity is incomplete");
110
110
  }
111
111
  const intentDigest = marketplaceDeliveryIntentDigest(params.intent);
112
- syncFs.mkdirSync(outboxDirectory(env), {
112
+ fs.mkdirSync(outboxDirectory(env), {
113
113
  recursive: true,
114
114
  mode: 448
115
115
  });
@@ -3,7 +3,7 @@ import { acquireFileLock } from "../plugin-sdk/file-lock.js";
3
3
  import "../infra/file-lock.js";
4
4
  import { ensureWalletStateDir } from "../wallet/wallet-runtime-config.js";
5
5
  import { serializeWalletState, writeWalletStateFileAtomically } from "../wallet/wallet-atomic-state.js";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import path from "node:path";
8
8
  import { createHash } from "node:crypto";
9
9
 
@@ -119,11 +119,11 @@ function lockTarget(orderId, env) {
119
119
  }
120
120
  function readEntry(orderId, env) {
121
121
  const filePath = entryPath(orderId, env);
122
- if (!syncFs.existsSync(filePath)) {
122
+ if (!fs.existsSync(filePath)) {
123
123
  return null;
124
124
  }
125
125
  try {
126
- const value = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
126
+ const value = JSON.parse(fs.readFileSync(filePath, "utf8"));
127
127
  if (value.version !== 1 || value.orderId !== orderId || typeof value.phase !== "string" || !PHASES.has(value.phase) || !value.actions || Array.isArray(value.actions) || typeof value.actions !== "object" || typeof value.createdAt !== "string" || typeof value.updatedAt !== "string") {
128
128
  throw new Error("invalid shape");
129
129
  }
@@ -148,7 +148,7 @@ function readEntry(orderId, env) {
148
148
  }
149
149
  }
150
150
  function writeEntry(entry, env) {
151
- syncFs.mkdirSync(stateDirectory(env), {
151
+ fs.mkdirSync(stateDirectory(env), {
152
152
  recursive: true,
153
153
  mode: 448
154
154
  });