@fased/fased 0.1.61 → 0.1.64

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 (514) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/README.md +38 -30
  3. package/config/dependency-ownership.json +1 -1
  4. package/config/signer-policies/README.md +49 -0
  5. package/config/signer-policies/agent.json.template +32 -0
  6. package/config/signer-policies/mining.json.template +69 -0
  7. package/config/signer-policies/network.json.template +5 -0
  8. package/config/signer-policies/vault.json.template +70 -0
  9. package/config/signer-protocol-v2.json +76 -0
  10. package/config/typescript-noemit-baseline.json +680 -0
  11. package/dist/acp/client.js +2 -2
  12. package/dist/acp/secret-file.js +2 -2
  13. package/dist/agents/agent-scope.js +2 -2
  14. package/dist/agents/apply-patch.js +8 -8
  15. package/dist/agents/auth-profiles/paths.js +2 -2
  16. package/dist/agents/auth-profiles/store.js +269 -33
  17. package/dist/agents/bash-tools.exec.js +10 -4
  18. package/dist/agents/bash-tools.shared.js +2 -2
  19. package/dist/agents/cli-credentials.js +4 -4
  20. package/dist/agents/current-model-catalog.js +3 -3
  21. package/dist/agents/docs-path.js +3 -3
  22. package/dist/agents/embedded-pi-mcp.js +4 -4
  23. package/dist/agents/identity-avatar.js +3 -3
  24. package/dist/agents/identity-file.js +2 -2
  25. package/dist/agents/memory-search.js +7 -1
  26. package/dist/agents/model-catalog-access.js +1 -2
  27. package/dist/agents/model-catalog-snapshot.js +1 -1
  28. package/dist/agents/model-catalog-source.js +1 -1
  29. package/dist/agents/model-metadata.js +1 -1
  30. package/dist/agents/model-selection.js +2 -28
  31. package/dist/agents/models-config.providers.js +6 -6
  32. package/dist/agents/openai-codex-app-server.js +5 -5
  33. package/dist/agents/pi-embedded-runner/compact.js +15 -7
  34. package/dist/agents/pi-embedded-runner/model.js +1 -1
  35. package/dist/agents/pi-embedded-runner/run/attempt.js +24 -13
  36. package/dist/agents/pi-embedded-runner/run.js +2 -0
  37. package/dist/agents/pi-embedded-runner/tool-split.js +40 -2
  38. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  39. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  40. package/dist/agents/pi-model-discovery.js +6 -6
  41. package/dist/agents/pi-project-settings.js +3 -3
  42. package/dist/agents/pi-tool-definition-adapter.js +16 -1
  43. package/dist/agents/pi-tools.js +2 -1
  44. package/dist/agents/sandbox/config.js +1 -1
  45. package/dist/agents/sandbox/context.js +27 -2
  46. package/dist/agents/sandbox/fs-bridge.js +2 -2
  47. package/dist/agents/session-dirs.js +4 -4
  48. package/dist/agents/session-write-lock.js +13 -13
  49. package/dist/agents/shell-utils.js +5 -5
  50. package/dist/agents/skills/bundled-dir.js +4 -4
  51. package/dist/agents/skills/env-overrides.js +38 -28
  52. package/dist/agents/skills/local-loader.js +6 -6
  53. package/dist/agents/skills/plugin-skills.js +2 -2
  54. package/dist/agents/skills/trust.js +93 -0
  55. package/dist/agents/skills/workspace.js +141 -13
  56. package/dist/agents/skills-clawhub.js +36 -11
  57. package/dist/agents/skills-install-download.js +7 -7
  58. package/dist/agents/skills-install-plan.js +2 -2
  59. package/dist/agents/skills-install.js +2 -2
  60. package/dist/agents/skills-marketplace-scan.js +49 -0
  61. package/dist/agents/skills-status.js +2 -2
  62. package/dist/agents/subagent-depth.js +2 -2
  63. package/dist/agents/system-prompt-params.js +2 -2
  64. package/dist/agents/tools/marketplace-offer-draft-tool.js +1 -1
  65. package/dist/agents/tools/mining-tool.js +1 -1
  66. package/dist/agents/tools/session-status-tool.js +1 -1
  67. package/dist/agents/tools/wallet-action-tool.js +172 -36
  68. package/dist/agents/tools/wallet-skill-policy.js +65 -23
  69. package/dist/agents/tools/wallet-tool.js +7 -11
  70. package/dist/agents/workspace.js +22 -22
  71. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  72. package/dist/auto-reply/reply/agent-runner.js +2 -2
  73. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  74. package/dist/auto-reply/reply/directive-handling.fast-lane.js +2 -1
  75. package/dist/auto-reply/reply/directive-handling.impl.js +2 -1
  76. package/dist/auto-reply/reply/directive-handling.model.js +2 -1
  77. package/dist/auto-reply/reply/directive-handling.persist.js +2 -2
  78. package/dist/auto-reply/reply/get-reply-directives-apply.js +2 -0
  79. package/dist/auto-reply/reply/get-reply-inline-actions.js +25 -1
  80. package/dist/auto-reply/reply/model-selection.js +7 -4
  81. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  82. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  83. package/dist/auto-reply/reply/session-reset-model.js +4 -4
  84. package/dist/auto-reply/reply/session.js +3 -3
  85. package/dist/auto-reply/skill-commands.js +3 -3
  86. package/dist/auto-reply/status.js +6 -6
  87. package/dist/brand.js +1 -1
  88. package/dist/browser/chrome.executables.js +3 -3
  89. package/dist/browser/chrome.js +3 -3
  90. package/dist/browser/chrome.profile-decoration.js +6 -6
  91. package/dist/browser/profiles-service.js +2 -2
  92. package/dist/browser/server-context.js +2 -2
  93. package/dist/browser/trash.js +4 -4
  94. package/dist/build-info.json +3 -3
  95. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  96. package/dist/canvas-host/server.js +4 -4
  97. package/dist/capabilities/catalog.js +3 -3
  98. package/dist/channel-web.js +2 -2
  99. package/dist/channels/plugins/catalog.js +3 -3
  100. package/dist/cli/browser-cli-extension.js +6 -6
  101. package/dist/cli/command-format.js +2 -2
  102. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  103. package/dist/cli/dns-cli.js +9 -9
  104. package/dist/cli/gateway-cli/dev.js +5 -5
  105. package/dist/cli/gateway-cli/run.js +10 -2
  106. package/dist/cli/hooks-cli.js +5 -5
  107. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  108. package/dist/cli/memory-cli.js +7 -7
  109. package/dist/cli/nodes-media-utils.js +2 -2
  110. package/dist/cli/plugins-cli.js +2 -2
  111. package/dist/cli/program/command-registry.js +1 -1
  112. package/dist/cli/program/register.onboard.js +2 -3
  113. package/dist/cli/program/register.wallet.js +16 -123
  114. package/dist/cli/providers-cli.js +1 -1
  115. package/dist/cli/sat-cli.js +129 -2
  116. package/dist/cli/secrets-cli.js +3 -3
  117. package/dist/cli/update-cli/update-command.js +260 -11
  118. package/dist/cli/windows-argv.js +2 -2
  119. package/dist/commands/auth-choice.apply.api-providers.js +3 -3
  120. package/dist/commands/dashboard-link.js +3 -3
  121. package/dist/commands/doctor-config-flow.js +1 -1
  122. package/dist/commands/doctor-install.js +5 -5
  123. package/dist/commands/doctor-legacy-config.js +2 -13
  124. package/dist/commands/doctor-memory-search.js +2 -2
  125. package/dist/commands/doctor-platform-notes.js +2 -2
  126. package/dist/commands/doctor-sandbox.js +2 -2
  127. package/dist/commands/doctor-state-integrity.js +23 -23
  128. package/dist/commands/doctor-workspace.js +3 -3
  129. package/dist/commands/doctor.js +3 -3
  130. package/dist/commands/managed-up.js +2 -2
  131. package/dist/commands/model-picker.js +6 -6
  132. package/dist/commands/models/auth.js +1 -1
  133. package/dist/commands/onboard-auth.config-gateways.js +1 -1
  134. package/dist/commands/onboard-auth.credentials.js +35 -11
  135. package/dist/commands/onboard-non-interactive/local/wallet-config.js +28 -27
  136. package/dist/commands/onboard-non-interactive/local.js +5 -1
  137. package/dist/commands/onboarding/plugin-install.js +2 -2
  138. package/dist/commands/sessions-cleanup.js +2 -2
  139. package/dist/commands/signal-install.js +6 -6
  140. package/dist/commands/status-all/channels.js +2 -2
  141. package/dist/commands/wallet.js +570 -1913
  142. package/dist/config/cache-utils.js +2 -2
  143. package/dist/config/config.js +2 -2
  144. package/dist/config/includes.js +5 -5
  145. package/dist/config/io.js +66 -4
  146. package/dist/config/paths.js +3 -3
  147. package/dist/config/sat-runtime-ids.js +3 -3
  148. package/dist/config/schema.help.js +8 -7
  149. package/dist/config/schema.labels.js +5 -4
  150. package/dist/config/sessions/disk-budget.js +6 -6
  151. package/dist/config/sessions/paths.js +2 -2
  152. package/dist/config/sessions/store.js +17 -17
  153. package/dist/config/sessions/transcript.js +4 -4
  154. package/dist/config/talk.js +2 -2
  155. package/dist/config/zod-schema.agent-runtime.js +1 -0
  156. package/dist/config/zod-schema.js +5 -0
  157. package/dist/control-ui/assets/{app-BXA4gPvN.js → app-bR-fO5ty.js} +1511 -1555
  158. package/dist/control-ui/assets/{config-CU5Zi8Dh.js → config-LeImukCW.js} +10 -10
  159. package/dist/control-ui/assets/{federation-D10Q4eP_.js → federation-DgA9e-Pn.js} +364 -422
  160. package/dist/control-ui/assets/{index-D2QbJhVg.js → index-ckCxHwjy.js} +3 -3
  161. package/dist/control-ui/assets/{mining-BdhMn18r.js → mining-BgHFh0ei.js} +134 -114
  162. package/dist/control-ui/assets/mining-commit-DFpB_4JN.js +2 -0
  163. package/dist/control-ui/assets/{open-external-url-DwSiwMPl.js → open-external-url-ulF1B-sA.js} +3 -3
  164. package/dist/control-ui/assets/{providers-QMn4w2_f.js → providers-CIx9fxc6.js} +2 -2
  165. package/dist/control-ui/assets/{wallet-C2g294QT.js → wallet-DvStR_AT.js} +259 -377
  166. package/dist/control-ui/index.html +1 -1
  167. package/dist/control-ui/version.json +1 -1
  168. package/dist/cron/service/store.js +2 -2
  169. package/dist/cron/store.js +6 -6
  170. package/dist/daemon/systemd-system.js +60 -54
  171. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  172. package/dist/extensions/sat-mining/src/protocol-contract.js +43 -3
  173. package/dist/extensions/sat-mining/src/rpc-read.js +235 -67
  174. package/dist/extensions/sat-mining/src/sat-bond-layout.js +14 -11
  175. package/dist/extensions/sat-mining/src/signer-codec-manifest.js +406 -0
  176. package/dist/extensions/sat-mining/src/solana-submit.js +1038 -397
  177. package/dist/extensions/sat-mining/src/submission-ledger.js +349 -0
  178. package/dist/federation/auto-connect.js +98 -8
  179. package/dist/federation/marketplace-capability-adapter.js +33 -7
  180. package/dist/federation/marketplace-delivery-outbox.js +196 -0
  181. package/dist/federation/marketplace-delivery.js +351 -215
  182. package/dist/federation/marketplace-direct-payment.js +272 -141
  183. package/dist/federation/marketplace-escrow.js +607 -249
  184. package/dist/federation/marketplace-settlement-ledger.js +352 -0
  185. package/dist/federation/offers.js +9 -7
  186. package/dist/federation/peer-auth-v2.js +529 -0
  187. package/dist/gateway/a2a-http.js +425 -96
  188. package/dist/gateway/a2a-settlement.js +259 -153
  189. package/dist/gateway/a2a-task-store.js +524 -0
  190. package/dist/gateway/auth.js +38 -2
  191. package/dist/gateway/config-reload.js +46 -33
  192. package/dist/gateway/control-ui-boot-check.js +6 -6
  193. package/dist/gateway/control-ui-login.js +7 -7
  194. package/dist/gateway/control-ui.js +9 -9
  195. package/dist/gateway/durable-capacity.js +31 -0
  196. package/dist/gateway/federation-http.js +540 -135
  197. package/dist/gateway/federation-marketplace-run-store.js +397 -0
  198. package/dist/gateway/federation-marketplace.js +535 -230
  199. package/dist/gateway/hooks-mapping.js +4 -4
  200. package/dist/gateway/mutating-admin-rpc-rate-limit.js +5 -0
  201. package/dist/gateway/security-path.js +1 -1
  202. package/dist/gateway/server-discovery.js +2 -2
  203. package/dist/gateway/server-http.js +1088 -1209
  204. package/dist/gateway/server-methods/chat.js +3 -3
  205. package/dist/gateway/server-methods/models.js +1 -1
  206. package/dist/gateway/server-methods/secrets.js +40 -0
  207. package/dist/gateway/server-methods/sessions.js +6 -6
  208. package/dist/gateway/server-methods/usage.js +2 -2
  209. package/dist/gateway/server-methods.js +1 -2
  210. package/dist/gateway/server-reload-handlers.js +196 -66
  211. package/dist/gateway/server-runtime-config.js +1 -1
  212. package/dist/gateway/server-secrets-runtime.js +288 -0
  213. package/dist/gateway/server.impl.js +73 -42
  214. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  215. package/dist/gateway/session-utils.fs.js +24 -24
  216. package/dist/gateway/session-utils.js +6 -6
  217. package/dist/gateway/sessions-patch.js +3 -5
  218. package/dist/hooks/bundled-dir.js +4 -4
  219. package/dist/hooks/gmail-setup-utils.js +6 -6
  220. package/dist/hooks/import-url.js +2 -2
  221. package/dist/hooks/loader.js +4 -4
  222. package/dist/hooks/workspace.js +7 -7
  223. package/dist/index.js +4 -2
  224. package/dist/infra/archive.js +17 -17
  225. package/dist/infra/boundary-file-read.js +2 -2
  226. package/dist/infra/boundary-path.js +15 -15
  227. package/dist/infra/brew.js +2 -2
  228. package/dist/infra/control-ui-assets.js +14 -14
  229. package/dist/infra/device-auth-store.js +8 -8
  230. package/dist/infra/device-identity.js +8 -8
  231. package/dist/infra/dotenv.js +2 -2
  232. package/dist/infra/exec-approvals.js +8 -8
  233. package/dist/infra/exec-command-resolution.js +4 -4
  234. package/dist/infra/exec-safe-bin-trust.js +2 -2
  235. package/dist/infra/fased-root.js +5 -5
  236. package/dist/infra/fasedhub.js +64 -1
  237. package/dist/infra/fs-safe.js +14 -14
  238. package/dist/infra/gateway-lock.js +11 -11
  239. package/dist/infra/git-commit.js +5 -5
  240. package/dist/infra/git-root.js +4 -4
  241. package/dist/infra/hosted-runtime-artifact.js +3 -3
  242. package/dist/infra/is-main.js +2 -2
  243. package/dist/infra/json-file.js +7 -7
  244. package/dist/infra/local-source-paired-update.js +538 -0
  245. package/dist/infra/managed-runtime-bootstrap.js +6 -6
  246. package/dist/infra/outbound/delivery-queue.js +16 -16
  247. package/dist/infra/path-env.js +3 -3
  248. package/dist/infra/ports-lsof.js +4 -4
  249. package/dist/infra/provider-usage.auth.js +3 -3
  250. package/dist/infra/restart.js +41 -10
  251. package/dist/infra/safe-open-sync.js +2 -2
  252. package/dist/infra/session-cost-usage.js +9 -9
  253. package/dist/infra/shell-env.js +2 -2
  254. package/dist/infra/state-migrations.fs.js +6 -6
  255. package/dist/infra/state-migrations.js +23 -23
  256. package/dist/infra/tmp-fased-dir.js +6 -6
  257. package/dist/infra/update-runner.js +96 -0
  258. package/dist/infra/widearea-dns.js +3 -3
  259. package/dist/infra/wsl.js +2 -2
  260. package/dist/light-update-status.js +11 -11
  261. package/dist/line/accounts.js +2 -2
  262. package/dist/line/download.js +2 -2
  263. package/dist/logging/config.js +3 -3
  264. package/dist/logging/logger.js +7 -7
  265. package/dist/managed/federation.js +3 -3
  266. package/dist/managed/tunnel.js +3 -3
  267. package/dist/media/store.js +13 -13
  268. package/dist/media-understanding/runner.js +3 -3
  269. package/dist/memory/backend-config.js +2 -1
  270. package/dist/memory/embeddings.js +2 -2
  271. package/dist/memory/internal.js +10 -10
  272. package/dist/memory/manager-sync-ops.js +7 -7
  273. package/dist/memory/repair-executor.js +17 -17
  274. package/dist/memory/session-files.js +16 -2
  275. package/dist/node-host/invoke-system-run-plan.js +8 -8
  276. package/dist/node-host/invoke.js +2 -2
  277. package/dist/node-host/runner.js +3 -3
  278. package/dist/pairing/pairing-store.js +3 -3
  279. package/dist/plugin-sdk/{accounts-DxblobYM.js → accounts-Brn3-uWN.js} +1 -1
  280. package/dist/plugin-sdk/{actions-D4UNimWa.js → actions-DRu135h0.js} +2 -2
  281. package/dist/plugin-sdk/{active-listener-CFuy106s.js → active-listener-B_NMtgPL.js} +1 -1
  282. package/dist/plugin-sdk/{audio-preflight-Bv0hUOWL.js → audio-preflight-BYxAt775.js} +27 -27
  283. package/dist/plugin-sdk/{audit-Cs0K7LBp.js → audit-C5d2z5U1.js} +1 -1
  284. package/dist/plugin-sdk/{channel-access-D5aHoTY8.js → channel-access-CcFRdRPO.js} +1 -1
  285. package/dist/plugin-sdk/{channel-access-configure-Dvch9mMQ.js → channel-access-configure-DaI5wevh.js} +1 -1
  286. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  287. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  288. package/dist/plugin-sdk/{chunk-B0FUGc5A.js → chunk-CyoyqpbG.js} +1 -1
  289. package/dist/plugin-sdk/{chunk-items-Bk--NU3E.js → chunk-items-DIRHG2gJ.js} +1 -1
  290. package/dist/plugin-sdk/command-status.d.ts +2 -2
  291. package/dist/plugin-sdk/command-status.js +27 -27
  292. package/dist/plugin-sdk/{commands-registry-DmDRhRAU.js → commands-registry-BfqdEWdF.js} +2 -2
  293. package/dist/plugin-sdk/{common-CfUOowOp.js → common-HCcXU-NR.js} +1 -1
  294. package/dist/plugin-sdk/{config-mxULv0fQ.js → config-DlWVeLFB.js} +7113 -6877
  295. package/dist/plugin-sdk/{config-schema-CGW6J3Pv.js → config-schema-BOT7kHb6.js} +6779 -3696
  296. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  297. package/dist/plugin-sdk/discord.d.ts +5 -5
  298. package/dist/plugin-sdk/discord.js +19 -19
  299. package/dist/plugin-sdk/file-lock.js +35 -4
  300. package/dist/plugin-sdk/{filesystem-manager-ZoHU8oA7.js → filesystem-manager-DoI8IBNF.js} +1 -1
  301. package/dist/plugin-sdk/{group-mentions-BHRff6j8.d.ts → group-mentions-q3hUTCt7.d.ts} +1 -1
  302. package/dist/plugin-sdk/{handle-action-DbVCF9HZ.js → handle-action-hvwapMKg.js} +13 -13
  303. package/dist/plugin-sdk/{helpers-BXbdgs5H.js → helpers-DMBU4oTo.js} +1 -1
  304. package/dist/plugin-sdk/{image-ops-D7jPxaph.js → image-ops-DQi0n_Tt.js} +1 -1
  305. package/dist/plugin-sdk/index.d.ts +9 -27
  306. package/dist/plugin-sdk/index.js +29 -29
  307. package/dist/plugin-sdk/json-store.js +6 -6
  308. package/dist/plugin-sdk/{login-BRxww6nv.js → login-Ca583Okc.js} +3 -3
  309. package/dist/plugin-sdk/{login-qr-DJXsk9XH.js → login-qr-CGciBSNP.js} +3 -3
  310. package/dist/plugin-sdk/{manager-Y2S_5IlI.js → manager-BegWxNYX.js} +4 -4
  311. package/dist/plugin-sdk/{markdown-tables-DHLFQqaF.js → markdown-tables-DCOXEUfZ.js} +1 -1
  312. package/dist/plugin-sdk/{media-Czo4carg.js → media-CAdQF5TG.js} +47 -47
  313. package/dist/plugin-sdk/{memory-search-DTjIMw8J.js → memory-search-CrFPOeTH.js} +4 -1
  314. package/dist/plugin-sdk/{monitor-B9Cmt_Je.js → monitor-BCFDaqJ-.js} +31 -31
  315. package/dist/plugin-sdk/{monitor-B71iwAgC.js → monitor-BgbjRiPM.js} +32 -32
  316. package/dist/plugin-sdk/{openresponses-http-Du4GMmwo.js → openresponses-http-DFf87SMM.js} +27 -27
  317. package/dist/plugin-sdk/{optional-runtime-dependency-DdMbxS24.js → optional-runtime-dependency-0dznm3ZO.js} +1 -1
  318. package/dist/plugin-sdk/{outbound-Db8mRN6P.js → outbound-BgVDdHxx.js} +6 -6
  319. package/dist/plugin-sdk/{outbound-attachment-BqFjcypb.js → outbound-attachment-QqTnIhZL.js} +2 -2
  320. package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-CS-9BHug.d.ts} +2 -2
  321. package/dist/plugin-sdk/{pairing-message-B3GC_7CD.js → pairing-message-D0CoLHRJ.js} +1 -1
  322. package/dist/plugin-sdk/{pairing-store-CQikgIbw.js → pairing-store-BChahgI2.js} +2 -2
  323. package/dist/plugin-sdk/{pi-model-discovery-CY3m5zJP.js → pi-model-discovery-BX_JLcEJ.js} +1 -1
  324. package/dist/plugin-sdk/{pi-model-discovery-runtime-DSh1T2pn.js → pi-model-discovery-runtime-DxTMz_XF.js} +2 -2
  325. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  326. package/dist/plugin-sdk/{pw-ai-AFUqn-tQ.js → pw-ai-natjh3rm.js} +3 -3
  327. package/dist/plugin-sdk/{qmd-manager-DSyx77KY.js → qmd-manager-CgRaTxUq.js} +1 -1
  328. package/dist/plugin-sdk/{query-expansion-CAI2kKLQ.js → query-expansion-BG3FgzF7.js} +14 -3
  329. package/dist/plugin-sdk/{replies-Fzh9PhXl.js → replies-ChYo5ZQM.js} +2 -2
  330. package/dist/plugin-sdk/{resolve-outbound-target-KpF3co6T.js → resolve-outbound-target-D-KGgHJZ.js} +1 -1
  331. package/dist/plugin-sdk/{resolve-route-CDl74O19.js → resolve-route-C8tvQm8Z.js} +1 -1
  332. package/dist/plugin-sdk/{retry-policy-D4uiqUOG.js → retry-policy-C6SjKjQA.js} +1 -1
  333. package/dist/plugin-sdk/{runtime-Bb6KRnCC.js → runtime-2B9_WKoI.js} +8 -3
  334. package/dist/plugin-sdk/{runtime-dependency-DLDmB94f.js → runtime-dependency-DczkvPxn.js} +2 -2
  335. package/dist/plugin-sdk/sat-runtime.d.ts +549 -309
  336. package/dist/plugin-sdk/sat-runtime.js +29 -29
  337. package/dist/plugin-sdk/{send-C4k4JuJN.js → send-B6KkGKZD.js} +6 -6
  338. package/dist/plugin-sdk/{send-D-uDKGIq.js → send-CFzGKJXo.js} +6 -6
  339. package/dist/plugin-sdk/{send-Du8ykP1k.js → send-DCO441U7.js} +8 -8
  340. package/dist/plugin-sdk/{send-5nFktR1n.js → send-gDoGA-7e.js} +5 -5
  341. package/dist/plugin-sdk/{send-Bfzf11VY.js → send-q9HXrSwK.js} +7 -7
  342. package/dist/plugin-sdk/{session-CS-Td9EM.js → session-DHD4ZKyG.js} +2 -2
  343. package/dist/plugin-sdk/{skill-commands-CFAlXWHk.js → skill-commands-FKEPLS7T.js} +201 -26
  344. package/dist/plugin-sdk/{slack-D_bbE6Yd.js → slack-BUTt8cxK.js} +39 -39
  345. package/dist/plugin-sdk/{slack-actions-BcMkNv1Z.js → slack-actions-DhbMcp8M.js} +11 -11
  346. package/dist/plugin-sdk/slack.d.ts +5 -5
  347. package/dist/plugin-sdk/slack.js +9 -9
  348. package/dist/plugin-sdk/{sticker-cache-Dqo9nRhi.js → sticker-cache-D0wHVqjt.js} +3 -3
  349. package/dist/plugin-sdk/{tables-bFXyRpkx.js → tables-B3jr0Pvq.js} +1 -1
  350. package/dist/plugin-sdk/{targets-DH7a9lKB.js → targets-CtSbTxYX.js} +1 -1
  351. package/dist/plugin-sdk/{telegram-actions-Cnag7JTH.js → telegram-actions-CC_qN4v0.js} +30 -30
  352. package/dist/plugin-sdk/telegram.d.ts +5 -5
  353. package/dist/plugin-sdk/telegram.js +8 -8
  354. package/dist/plugin-sdk/{thread-bindings.lifecycle-CgOvvdw8.js → thread-bindings.lifecycle-QbkNl-m6.js} +3 -3
  355. package/dist/plugin-sdk/{thread-bindings.state-CQpk44Hq.js → thread-bindings.state-D9hg_M1c.js} +2 -2
  356. package/dist/plugin-sdk/tmp-fased-dir-xOTGlzBE.d.ts +486 -0
  357. package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-C3avNytw.d.ts} +3 -4
  358. package/dist/plugin-sdk/{types-DyhXnYUr.d.ts → types-D0kDG8l0.d.ts} +3 -2
  359. package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-DWfbSAaM.d.ts} +2 -2
  360. package/dist/plugin-sdk/{types.plugin-_fbu40Re.d.ts → types.plugin-BcSBq42x.d.ts} +8 -3
  361. package/dist/plugin-sdk/{web-BInKQkc4.js → web-BXsJ1vqe.js} +32 -32
  362. package/dist/plugin-sdk/{whatsapp-actions-BtSc2CBv.js → whatsapp-actions-Bj_rOncr.js} +13 -13
  363. package/dist/plugin-sdk/{whatsapp-heartbeat-Bg9TuYzl.js → whatsapp-heartbeat-B1WHkJIg.js} +2 -2
  364. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  365. package/dist/plugin-sdk/whatsapp.js +12 -12
  366. package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
  367. package/dist/plugins/bundled-dir.js +3 -3
  368. package/dist/plugins/discovery.js +11 -11
  369. package/dist/plugins/loader.js +13 -13
  370. package/dist/plugins/manifest-registry.js +2 -2
  371. package/dist/plugins/manifest.js +4 -4
  372. package/dist/plugins/path-safety.js +3 -3
  373. package/dist/plugins/status-cache.js +9 -9
  374. package/dist/plugins/update.js +3 -3
  375. package/dist/plugins/web-search-install-catalog.js +3 -3
  376. package/dist/providers/refresh.js +1 -1
  377. package/dist/providers/registry.js +1 -1
  378. package/dist/secrets/apply.js +17 -17
  379. package/dist/secrets/audit.js +11 -11
  380. package/dist/secrets/runtime.js +1 -1
  381. package/dist/secrets/shared.js +9 -9
  382. package/dist/security/scan-paths.js +2 -2
  383. package/dist/shared/config-eval.js +2 -2
  384. package/dist/shared/pid-alive.js +2 -2
  385. package/dist/tasks/standing-orders.js +5 -5
  386. package/dist/tasks/task-flow-registry.js +5 -5
  387. package/dist/tasks/task-registry.js +5 -5
  388. package/dist/tasks/workflow-definitions.js +6 -6
  389. package/dist/telegram/token.js +5 -5
  390. package/dist/utils.js +5 -5
  391. package/dist/wallet/external-submission-ledger.js +376 -0
  392. package/dist/wallet/legacy-embedded-keystore.js +40 -0
  393. package/dist/wallet/local-socket-signer-archive.js +30 -0
  394. package/dist/wallet/local-socket-signer-lifecycle.js +97 -0
  395. package/dist/wallet/local-socket-signer-policy.js +166 -0
  396. package/dist/wallet/local-socket-signer-protocol.js +561 -118
  397. package/dist/wallet/native-signer-wallet-id.js +25 -0
  398. package/dist/wallet/providers/alchemy-adapter.js +3 -0
  399. package/dist/wallet/providers/local-socket-signer-adapter.js +382 -107
  400. package/dist/wallet/providers/turnkey-adapter.js +292 -34
  401. package/dist/wallet/providers/wallet-standard-adapter.js +100 -0
  402. package/dist/wallet/signer-network-admin.js +184 -0
  403. package/dist/wallet/signer-protocol-v2.generated.js +90 -0
  404. package/dist/wallet/solana-bond-signing.js +157 -69
  405. package/dist/wallet/solana-reviewed-transaction.js +375 -0
  406. package/dist/wallet/solana-swap.js +520 -64
  407. package/dist/wallet/solana-transaction-inspection.js +106 -4
  408. package/dist/wallet/solana-trigger.js +658 -320
  409. package/dist/wallet/turnkey-reviewed-state.js +370 -0
  410. package/dist/wallet/wallet-approval-auth.js +20 -31
  411. package/dist/wallet/wallet-atomic-state.js +53 -0
  412. package/dist/wallet/wallet-audit-log.js +5 -5
  413. package/dist/wallet/wallet-canary.js +0 -1
  414. package/dist/wallet/wallet-inbound-events.js +19 -14
  415. package/dist/wallet/wallet-observability.js +5 -5
  416. package/dist/wallet/wallet-policy-simulation.js +1 -1
  417. package/dist/wallet/wallet-policy.js +95 -41
  418. package/dist/wallet/wallet-provider-capabilities.js +28 -4
  419. package/dist/wallet/wallet-provider-registry.js +64 -51
  420. package/dist/wallet/wallet-provider-resolver.js +62 -63
  421. package/dist/wallet/wallet-runtime-config.js +31 -44
  422. package/dist/wallet/wallet-secrets-store.js +44 -22
  423. package/dist/wallet/wallet-send-approvals.js +1894 -592
  424. package/dist/wallet/wallet-send-execution-ledger.js +292 -0
  425. package/dist/wallet/wallet-settlement-links.js +17 -16
  426. package/dist/wallet/wallet-standard-review.js +353 -0
  427. package/dist/wallet/wallet-status.js +0 -9
  428. package/dist/wallet/wallet-task-ledger.js +16 -2
  429. package/dist/web/accounts.js +3 -3
  430. package/dist/web/auth-store.js +18 -18
  431. package/dist/web/auto-reply/heartbeat-runner.js +1 -1
  432. package/dist/web/auto-reply/monitor.js +2 -2
  433. package/dist/web/session.js +4 -4
  434. package/dist/wizard/host-security-capability.js +15 -24
  435. package/dist/wizard/onboarding.finalize.js +63 -184
  436. package/dist/wizard/onboarding.host-security.js +118 -1368
  437. package/dist/wizard/onboarding.js +180 -242
  438. package/dist/wizard/onboarding.wallet.js +323 -829
  439. package/extensions/acpx/package.json +1 -1
  440. package/extensions/bluebubbles/package.json +1 -1
  441. package/extensions/copilot-proxy/package.json +1 -1
  442. package/extensions/diagnostics-otel/package.json +1 -1
  443. package/extensions/fased-federation/package.json +1 -1
  444. package/extensions/google-gemini-cli-auth/package.json +1 -1
  445. package/extensions/imessage/package.json +1 -1
  446. package/extensions/irc/package.json +1 -1
  447. package/extensions/line/package.json +1 -1
  448. package/extensions/llm-task/package.json +1 -1
  449. package/extensions/lobster/package.json +1 -1
  450. package/extensions/matrix/CHANGELOG.md +18 -0
  451. package/extensions/matrix/package.json +1 -1
  452. package/extensions/mattermost/package.json +1 -1
  453. package/extensions/memory-core/package.json +2 -2
  454. package/extensions/memory-lancedb/package.json +1 -1
  455. package/extensions/minimax-portal-auth/package.json +1 -1
  456. package/extensions/msteams/CHANGELOG.md +18 -0
  457. package/extensions/msteams/package.json +1 -1
  458. package/extensions/nextcloud-talk/package.json +1 -1
  459. package/extensions/nostr/CHANGELOG.md +18 -0
  460. package/extensions/nostr/package.json +1 -1
  461. package/extensions/open-prose/package.json +1 -1
  462. package/extensions/sat-mining/index.ts +498 -153
  463. package/extensions/sat-mining/package.json +1 -1
  464. package/extensions/sat-mining/signer-codec-schema.v1.json +374 -0
  465. package/extensions/sat-mining/src/audit-store.ts +50 -5
  466. package/extensions/sat-mining/src/claim-service.ts +85 -14
  467. package/extensions/sat-mining/src/config.ts +9 -0
  468. package/extensions/sat-mining/src/cycle-progress.ts +16 -8
  469. package/extensions/sat-mining/src/epoch-service.ts +9 -5
  470. package/extensions/sat-mining/src/gateway-runner.ts +21 -1
  471. package/extensions/sat-mining/src/protocol-contract.ts +45 -1
  472. package/extensions/sat-mining/src/recovery-service.ts +312 -0
  473. package/extensions/sat-mining/src/round-watcher.ts +391 -81
  474. package/extensions/sat-mining/src/rpc-read.ts +330 -89
  475. package/extensions/sat-mining/src/runtime.ts +14 -0
  476. package/extensions/sat-mining/src/sat-bond-layout.ts +6 -0
  477. package/extensions/sat-mining/src/signer-codec-manifest.ts +429 -0
  478. package/extensions/sat-mining/src/solana-submit.ts +1199 -428
  479. package/extensions/sat-mining/src/submission-ledger.ts +433 -0
  480. package/extensions/signal/package.json +1 -1
  481. package/extensions/synology-chat/package.json +1 -1
  482. package/extensions/tlon/package.json +1 -1
  483. package/extensions/twitch/CHANGELOG.md +18 -0
  484. package/extensions/twitch/package.json +1 -1
  485. package/extensions/voice-call/CHANGELOG.md +18 -0
  486. package/extensions/voice-call/package.json +1 -1
  487. package/extensions/zalo/CHANGELOG.md +18 -0
  488. package/extensions/zalo/package.json +1 -1
  489. package/extensions/zalouser/CHANGELOG.md +18 -0
  490. package/extensions/zalouser/package.json +1 -1
  491. package/install.sh +4955 -0
  492. package/package.json +24 -5
  493. package/scripts/fased-host-updater.mjs +1421 -0
  494. package/scripts/fased-host-updaterctl.mjs +186 -0
  495. package/scripts/fased-managed-service.sh +36 -0
  496. package/scripts/fased-managed-updater.mjs +3065 -156
  497. package/scripts/fased-signer-enroll-hosting.sh +275 -0
  498. package/scripts/fased-signer-network-hosting.sh +143 -0
  499. package/scripts/fased-signer-owner-policy.mjs +1430 -0
  500. package/scripts/fased-signer-policy-hosting.sh +50 -0
  501. package/scripts/fased-signer-policy-local.sh +26 -0
  502. package/scripts/hosted-release-manifest.mjs +185 -0
  503. package/scripts/install-fased-signerd.sh +217 -0
  504. package/scripts/install-managed-runtime.mjs +212 -10
  505. package/scripts/managed-runtime-layout.mjs +75 -3
  506. package/scripts/migrate-hosted-signer-v2.mjs +58 -0
  507. package/scripts/start-managed.sh +169 -360
  508. package/dist/control-ui/assets/mining-commit-R-6nu87p.js +0 -2
  509. package/dist/plugin-sdk/tmp-fased-dir-BdFQvrvw.d.ts +0 -77
  510. package/dist/wallet/local-socket-signer-broker.js +0 -224
  511. package/dist/wallet/local-socket-signer-custody.js +0 -42
  512. package/dist/wallet/providers/embedded-keystore-adapter.js +0 -402
  513. package/dist/wallet/providers/privy-adapter.js +0 -80
  514. package/dist/wallet/wallet-custody.js +0 -1836
@@ -1,402 +0,0 @@
1
- import { fetchSolanaMintInfoViaRpc } from "../solana-assets.js";
2
- import { WalletProviderError } from "../wallet-provider-adapter.js";
3
- import { buildCreateAssociatedTokenAccountIdempotentInstruction, buildTransferCheckedInstruction, deriveAssociatedTokenAddress, toTransactionInstruction } from "../solana-spl-transfer.js";
4
- import { walletDiagnosticErrorString } from "../wallet-redaction.js";
5
- import { createRequire } from "node:module";
6
- import fs from "node:fs";
7
- import { createDecipheriv, randomUUID, scryptSync } from "node:crypto";
8
-
9
- //#region src/wallet/providers/embedded-keystore-adapter.ts
10
- const require = createRequire(import.meta.url);
11
- let solanaModulePromise = null;
12
- async function loadSolanaWeb3() {
13
- solanaModulePromise ??= (async () => {
14
- try {
15
- return require("@solana/web3.js");
16
- } catch {
17
- throw new WalletProviderError({
18
- code: "wallet_provider_invalid_config",
19
- message: "embedded-keystore Solana support requires optional '@solana/web3.js'. Run 'pnpm install' in the Fased repository to enable Solana."
20
- });
21
- }
22
- })();
23
- return solanaModulePromise;
24
- }
25
- function normalizeChains(chains) {
26
- const out = new Set();
27
- for (const chain of chains) {
28
- if (chain === "solana") {
29
- out.add(chain);
30
- }
31
- }
32
- return out.size > 0 ? [...out] : ["solana"];
33
- }
34
- function parseAmountLamports(raw) {
35
- const text = (raw ?? "").trim();
36
- if (!text) {
37
- return undefined;
38
- }
39
- try {
40
- return BigInt(text);
41
- } catch {
42
- throw new WalletProviderError({
43
- code: "wallet_provider_invalid_config",
44
- message: `invalid amount (expected lamports integer): ${text}`
45
- });
46
- }
47
- }
48
- function parseSolanaKeystoreEnvelope(raw) {
49
- try {
50
- const parsed = JSON.parse(raw);
51
- if (parsed.kind !== "fased-solana-keypair" || parsed.version !== 1 || parsed.kdf !== "scrypt" || parsed.cipher !== "aes-256-gcm") {
52
- return null;
53
- }
54
- if (typeof parsed.salt !== "string" || typeof parsed.iv !== "string" || typeof parsed.authTag !== "string" || typeof parsed.ciphertext !== "string" || typeof parsed.publicKey !== "string") {
55
- return null;
56
- }
57
- return parsed;
58
- } catch {
59
- return null;
60
- }
61
- }
62
- function decryptSolanaKeypairEnvelope(envelope, passphrase) {
63
- const salt = Buffer.from(envelope.salt, "base64url");
64
- const iv = Buffer.from(envelope.iv, "base64url");
65
- const authTag = Buffer.from(envelope.authTag, "base64url");
66
- const ciphertext = Buffer.from(envelope.ciphertext, "base64url");
67
- const key = scryptSync(passphrase, salt, 32);
68
- const decipher = createDecipheriv("aes-256-gcm", key, iv);
69
- decipher.setAuthTag(authTag);
70
- const plaintext = Buffer.concat([decipher.update(ciphertext), decipher.final()]);
71
- if (plaintext.length !== 64) {
72
- throw new WalletProviderError({
73
- code: "wallet_provider_invalid_config",
74
- message: "invalid Solana keystore secret length"
75
- });
76
- }
77
- return Uint8Array.from(plaintext);
78
- }
79
- function detectKeystoreType(raw) {
80
- return parseSolanaKeystoreEnvelope(raw) ? "solana-envelope" : "unknown";
81
- }
82
- var EmbeddedKeystoreAdapter = class {
83
- constructor(options) {
84
- this.id = "embedded-keystore";
85
- this.displayName = "Embedded Encrypted Keystore";
86
- this.prepared = new Map();
87
- this.solanaKeypairPromise = null;
88
- this.solanaConnectionPromise = null;
89
- const env = options.env ?? process.env;
90
- this.chains = normalizeChains(options.chains);
91
- this.keystorePath = options.credentials?.keystorePath?.trim() || String(env.FASED_WALLET_KEYSTORE_PATH ?? "").trim() || "";
92
- this.passphrase = options.credentials?.passphrase?.trim() || String(env.FASED_WALLET_PASSPHRASE ?? "").trim() || "";
93
- this.rpcUrl = options.credentials?.rpcUrl?.trim() || String(env.FASED_WALLET_EMBEDDED_KEYSTORE_RPC_URL ?? "").trim() || String(env.FASED_WALLET_RPC_URL ?? "").trim() || "";
94
- this.defaultSolanaAddress = String(env.FASED_WALLET_KEYSTORE_DEFAULT_SOLANA_ADDRESS ?? "").trim() || undefined;
95
- this.capabilities = {
96
- custodyModel: "self-hosted",
97
- supportsCreateWallet: false,
98
- supportsPrepare: true,
99
- supportsSend: true,
100
- supportsRotateKeys: false,
101
- supportsResetKeys: false,
102
- supportsPasskeyGate: false,
103
- supportedExecutionModes: ["manual", "autonomous"],
104
- supportedChains: [...this.chains]
105
- };
106
- }
107
- supportsChain(chain) {
108
- return this.capabilities.supportedChains.includes(chain);
109
- }
110
- async health() {
111
- const configured = Boolean(this.keystorePath && this.passphrase && this.rpcUrl);
112
- if (!configured) {
113
- return {
114
- ok: false,
115
- provider: this.id,
116
- configured: false,
117
- checkedAt: new Date().toISOString(),
118
- details: "missing embedded keystore config (FASED_WALLET_KEYSTORE_PATH, FASED_WALLET_PASSPHRASE, FASED_WALLET_[EMBEDDED_KEYSTORE_]RPC_URL)"
119
- };
120
- }
121
- if (!fs.existsSync(this.keystorePath)) {
122
- return {
123
- ok: false,
124
- provider: this.id,
125
- configured: true,
126
- checkedAt: new Date().toISOString(),
127
- details: `keystore file not found: ${this.keystorePath}`
128
- };
129
- }
130
- try {
131
- const raw = await fs.promises.readFile(this.keystorePath, "utf8");
132
- if (detectKeystoreType(raw) !== "solana-envelope") {
133
- throw new Error("keystore file is not a Solana keystore envelope");
134
- }
135
- const [address, lamports] = await Promise.all([this.getSolanaAddress(), this.getSolanaBalanceLamports()]);
136
- return {
137
- ok: true,
138
- provider: this.id,
139
- configured: true,
140
- checkedAt: new Date().toISOString(),
141
- details: `keystore unlocked (solana address=${address}, lamports=${lamports})`
142
- };
143
- } catch (err) {
144
- return {
145
- ok: false,
146
- provider: this.id,
147
- configured: true,
148
- checkedAt: new Date().toISOString(),
149
- details: `embedded keystore check failed: ${walletDiagnosticErrorString(err)}`
150
- };
151
- }
152
- }
153
- async createWallet() {
154
- throw new WalletProviderError({
155
- code: "wallet_provider_not_implemented",
156
- message: "Use `fased wallet keystore init` to create an embedded keystore"
157
- });
158
- }
159
- async getAddresses() {
160
- const result = {};
161
- if (!this.keystorePath || !this.passphrase) {
162
- if (this.supportsChain("solana")) {
163
- result.solana = this.defaultSolanaAddress;
164
- }
165
- return result;
166
- }
167
- try {
168
- const raw = await fs.promises.readFile(this.keystorePath, "utf8");
169
- const type = detectKeystoreType(raw);
170
- if (type === "solana-envelope") {
171
- if (this.supportsChain("solana")) {
172
- result.solana = await this.getSolanaAddress();
173
- }
174
- }
175
- return result;
176
- } catch {
177
- if (this.supportsChain("solana")) {
178
- result.solana = this.defaultSolanaAddress;
179
- }
180
- return result;
181
- }
182
- }
183
- async getBalance(chain) {
184
- if (chain === "solana") {
185
- this.ensureSolanaChain(chain);
186
- const address = await this.getSolanaAddress();
187
- const lamports = await this.getSolanaBalanceLamports();
188
- return {
189
- ok: true,
190
- chain,
191
- address,
192
- balance: String(lamports),
193
- unit: "lamports"
194
- };
195
- }
196
- this.ensureSolanaChain(chain);
197
- throw new WalletProviderError({
198
- code: "wallet_provider_unsupported_chain",
199
- message: "embedded-keystore supports Solana only"
200
- });
201
- }
202
- async prepareTx(request) {
203
- if (request.chain === "solana") {
204
- this.ensureSolanaChain(request.chain);
205
- if (request.program) {
206
- throw new WalletProviderError({
207
- code: "wallet_provider_not_implemented",
208
- message: "embedded-keystore Solana program calls are not implemented yet"
209
- });
210
- }
211
- if (!request.to?.trim()) {
212
- throw new WalletProviderError({
213
- code: "wallet_provider_invalid_config",
214
- message: "embedded-keystore prepareTx requires `to` for Solana transfer"
215
- });
216
- }
217
- const from = await this.getSolanaAddress();
218
- const lamports = parseAmountLamports(request.amount) ?? 0n;
219
- const preparedId = randomUUID();
220
- this.prepared.set(preparedId, { solana: {
221
- to: request.to.trim(),
222
- lamports,
223
- from
224
- } });
225
- return {
226
- ok: true,
227
- chain: "solana",
228
- preparedId,
229
- signer: from,
230
- metadata: {
231
- kind: "native-transfer",
232
- to: request.to.trim(),
233
- lamports: lamports.toString()
234
- }
235
- };
236
- }
237
- this.ensureSolanaChain(request.chain);
238
- throw new WalletProviderError({
239
- code: "wallet_provider_unsupported_chain",
240
- message: "embedded-keystore supports Solana only"
241
- });
242
- }
243
- async sendTx(request) {
244
- if (request.chain === "solana") {
245
- this.ensureSolanaChain(request.chain);
246
- if (request.program?.trim()) {
247
- const mint = request.program.trim();
248
- const destinationOwner = request.to?.trim();
249
- const amountRaw = request.amount?.trim();
250
- if (!destinationOwner || !amountRaw) {
251
- throw new WalletProviderError({
252
- code: "wallet_provider_invalid_config",
253
- message: "embedded-keystore SPL send requires destination and amount"
254
- });
255
- }
256
- if (!this.rpcUrl) {
257
- throw new WalletProviderError({
258
- code: "wallet_provider_invalid_config",
259
- message: "embedded-keystore missing RPC URL"
260
- });
261
- }
262
- const mintInfo = await fetchSolanaMintInfoViaRpc({
263
- rpcUrl: this.rpcUrl,
264
- mint
265
- });
266
- if (!mintInfo) {
267
- throw new WalletProviderError({
268
- code: "wallet_provider_unavailable",
269
- message: "failed to resolve SPL mint metadata from Solana RPC"
270
- });
271
- }
272
- const [connection, keypair] = await Promise.all([this.getSolanaConnection(), this.getSolanaKeypair()]);
273
- const authority = keypair.publicKey.toBase58();
274
- const sourceTokenAccount = await deriveAssociatedTokenAddress({
275
- owner: authority,
276
- mint,
277
- tokenProgramId: mintInfo.tokenProgramId
278
- });
279
- const destinationTokenAccount = await deriveAssociatedTokenAddress({
280
- owner: destinationOwner,
281
- mint,
282
- tokenProgramId: mintInfo.tokenProgramId
283
- });
284
- const tx = new (await (loadSolanaWeb3())).Transaction();
285
- tx.add(await toTransactionInstruction(await buildCreateAssociatedTokenAccountIdempotentInstruction({
286
- payer: authority,
287
- owner: destinationOwner,
288
- mint,
289
- tokenProgramId: mintInfo.tokenProgramId
290
- })));
291
- tx.add(await toTransactionInstruction(buildTransferCheckedInstruction({
292
- sourceTokenAccount,
293
- mint,
294
- destinationTokenAccount,
295
- authority,
296
- amountRaw,
297
- decimals: mintInfo.decimals,
298
- tokenProgramId: mintInfo.tokenProgramId
299
- })));
300
- const { blockhash } = await connection.getLatestBlockhash();
301
- tx.recentBlockhash = blockhash;
302
- tx.feePayer = keypair.publicKey;
303
- const txHash = await connection.sendTransaction(tx, [keypair]);
304
- await connection.confirmTransaction(txHash);
305
- return {
306
- ok: true,
307
- chain: "solana",
308
- txHash,
309
- signer: authority
310
- };
311
- }
312
- let prepared = request.preparedId ? this.prepared.get(request.preparedId) : undefined;
313
- if (!prepared?.solana) {
314
- const next = await this.prepareTx(request);
315
- prepared = this.prepared.get(next.preparedId);
316
- }
317
- if (!prepared?.solana) {
318
- throw new WalletProviderError({
319
- code: "wallet_provider_unavailable",
320
- message: "failed to resolve embedded keystore Solana transaction"
321
- });
322
- }
323
- const solana = await loadSolanaWeb3();
324
- const [connection, keypair] = await Promise.all([this.getSolanaConnection(), this.getSolanaKeypair()]);
325
- const tx = new solana.Transaction();
326
- tx.add(solana.SystemProgram.transfer({
327
- fromPubkey: keypair.publicKey,
328
- toPubkey: new solana.PublicKey(prepared.solana.to),
329
- lamports: Number(prepared.solana.lamports)
330
- }));
331
- const { blockhash } = await connection.getLatestBlockhash();
332
- tx.recentBlockhash = blockhash;
333
- tx.feePayer = keypair.publicKey;
334
- const txHash = await connection.sendTransaction(tx, [keypair]);
335
- await connection.confirmTransaction(txHash);
336
- return {
337
- ok: true,
338
- chain: "solana",
339
- txHash,
340
- signer: prepared.solana.from
341
- };
342
- }
343
- this.ensureSolanaChain(request.chain);
344
- throw new WalletProviderError({
345
- code: "wallet_provider_unsupported_chain",
346
- message: "embedded-keystore supports Solana only"
347
- });
348
- }
349
- ensureSolanaChain(chain) {
350
- if (chain !== "solana" || !this.supportsChain(chain)) {
351
- throw new WalletProviderError({
352
- code: "wallet_provider_unsupported_chain",
353
- message: "embedded-keystore currently supports Solana only when configured with a Solana keystore"
354
- });
355
- }
356
- }
357
- async getSolanaConnection() {
358
- if (!this.rpcUrl) {
359
- throw new WalletProviderError({
360
- code: "wallet_provider_invalid_config",
361
- message: "embedded-keystore missing RPC URL"
362
- });
363
- }
364
- this.solanaConnectionPromise ??= (async () => {
365
- const solana = await loadSolanaWeb3();
366
- return new solana.Connection(this.rpcUrl);
367
- })();
368
- return this.solanaConnectionPromise;
369
- }
370
- async getSolanaKeypair() {
371
- if (!this.keystorePath || !this.passphrase) {
372
- throw new WalletProviderError({
373
- code: "wallet_provider_invalid_config",
374
- message: "embedded-keystore missing keystore path or passphrase"
375
- });
376
- }
377
- this.solanaKeypairPromise ??= (async () => {
378
- const raw = await fs.promises.readFile(this.keystorePath, "utf8");
379
- const envelope = parseSolanaKeystoreEnvelope(raw);
380
- if (!envelope) {
381
- throw new WalletProviderError({
382
- code: "wallet_provider_invalid_config",
383
- message: "embedded-keystore file is not a Solana keystore envelope"
384
- });
385
- }
386
- const secretKey = decryptSolanaKeypairEnvelope(envelope, this.passphrase);
387
- const solana = await loadSolanaWeb3();
388
- return solana.Keypair.fromSecretKey(secretKey);
389
- })();
390
- return this.solanaKeypairPromise;
391
- }
392
- async getSolanaAddress() {
393
- return (await this.getSolanaKeypair()).publicKey.toBase58();
394
- }
395
- async getSolanaBalanceLamports() {
396
- const [conn, kp] = await Promise.all([this.getSolanaConnection(), this.getSolanaKeypair()]);
397
- return conn.getBalance(kp.publicKey);
398
- }
399
- };
400
-
401
- //#endregion
402
- export { EmbeddedKeystoreAdapter };
@@ -1,80 +0,0 @@
1
- import { WalletProviderError } from "../wallet-provider-adapter.js";
2
-
3
- //#region src/wallet/providers/privy-adapter.ts
4
- var PrivyAdapter = class {
5
- constructor(options) {
6
- this.id = "privy";
7
- this.displayName = "Privy Wallet";
8
- this.credentials = options.credentials;
9
- this.capabilities = {
10
- custodyModel: "provider-managed",
11
- supportsCreateWallet: true,
12
- supportsPrepare: false,
13
- supportsSend: false,
14
- supportsRotateKeys: false,
15
- supportsResetKeys: false,
16
- supportsPasskeyGate: false,
17
- supportedExecutionModes: ["manual"],
18
- supportedChains: ["solana"]
19
- };
20
- }
21
- supportsChain(chain) {
22
- return chain === "solana";
23
- }
24
- async health() {
25
- const configured = Boolean(this.credentials.appId && this.credentials.appSecret);
26
- return {
27
- ok: configured,
28
- provider: this.id,
29
- configured,
30
- checkedAt: new Date().toISOString(),
31
- details: configured ? "Privy adapter configured for Solana wallet discovery." : "Privy adapter is missing app credentials."
32
- };
33
- }
34
- async createWallet() {
35
- throw new WalletProviderError({
36
- code: "wallet_provider_not_implemented",
37
- message: "Privy wallet creation is not implemented in the Solana-only wallet runtime"
38
- });
39
- }
40
- async getAddresses() {
41
- return this.credentials.defaultSolanaAddress ? { solana: this.credentials.defaultSolanaAddress } : {};
42
- }
43
- async getBalance(chain) {
44
- if (!this.supportsChain(chain)) {
45
- throw new WalletProviderError({
46
- code: "wallet_provider_unsupported_chain",
47
- message: "Privy adapter supports Solana only"
48
- });
49
- }
50
- const address = this.credentials.defaultSolanaAddress?.trim();
51
- if (!address) {
52
- throw new WalletProviderError({
53
- code: "wallet_provider_invalid_config",
54
- message: "Privy wallet has no Solana address configured"
55
- });
56
- }
57
- return {
58
- ok: true,
59
- chain: "solana",
60
- address,
61
- balance: "0",
62
- unit: "lamports"
63
- };
64
- }
65
- async prepareTx(_request) {
66
- throw new WalletProviderError({
67
- code: "wallet_provider_not_implemented",
68
- message: "Privy transaction preparation is not implemented in the Solana-only wallet runtime"
69
- });
70
- }
71
- async sendTx(_request) {
72
- throw new WalletProviderError({
73
- code: "wallet_provider_not_implemented",
74
- message: "Privy transaction sending is not implemented in the Solana-only wallet runtime"
75
- });
76
- }
77
- };
78
-
79
- //#endregion
80
- export { PrivyAdapter };