@fased/fased 0.1.49 → 0.1.51

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 (337) hide show
  1. package/dist/acp/client.js +2 -2
  2. package/dist/acp/secret-file.js +2 -2
  3. package/dist/agents/agent-scope.js +2 -2
  4. package/dist/agents/apply-patch.js +8 -8
  5. package/dist/agents/auth-profiles/paths.js +2 -2
  6. package/dist/agents/auth-profiles/store.js +2 -2
  7. package/dist/agents/bash-tools.shared.js +2 -2
  8. package/dist/agents/cli-credentials.js +4 -4
  9. package/dist/agents/current-model-catalog.js +45 -0
  10. package/dist/agents/docs-path.js +3 -3
  11. package/dist/agents/embedded-pi-mcp.js +4 -4
  12. package/dist/agents/identity-avatar.js +3 -3
  13. package/dist/agents/identity-file.js +2 -2
  14. package/dist/agents/model-catalog-source.js +28 -3
  15. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  16. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  17. package/dist/agents/pi-model-discovery.js +6 -6
  18. package/dist/agents/pi-project-settings.js +3 -3
  19. package/dist/agents/provider-id.js +1 -1
  20. package/dist/agents/sandbox/fs-bridge.js +2 -2
  21. package/dist/agents/session-dirs.js +4 -4
  22. package/dist/agents/session-write-lock.js +13 -13
  23. package/dist/agents/shell-utils.js +5 -5
  24. package/dist/agents/skills/bundled-dir.js +4 -4
  25. package/dist/agents/skills/local-loader.js +6 -6
  26. package/dist/agents/skills/plugin-skills.js +2 -2
  27. package/dist/agents/skills/workspace.js +13 -13
  28. package/dist/agents/skills-install-download.js +7 -7
  29. package/dist/agents/skills-install-plan.js +2 -2
  30. package/dist/agents/skills-install.js +2 -2
  31. package/dist/agents/skills-status.js +2 -2
  32. package/dist/agents/subagent-depth.js +2 -2
  33. package/dist/agents/system-prompt-params.js +2 -2
  34. package/dist/agents/workspace.js +22 -22
  35. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  36. package/dist/auto-reply/reply/agent-runner.js +2 -2
  37. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  38. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  39. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  40. package/dist/auto-reply/reply/session.js +3 -3
  41. package/dist/auto-reply/skill-commands.js +3 -3
  42. package/dist/auto-reply/status.js +6 -6
  43. package/dist/brand.js +1 -1
  44. package/dist/browser/chrome.executables.js +3 -3
  45. package/dist/browser/chrome.js +3 -3
  46. package/dist/browser/chrome.profile-decoration.js +6 -6
  47. package/dist/browser/profiles-service.js +2 -2
  48. package/dist/browser/server-context.js +2 -2
  49. package/dist/browser/trash.js +4 -4
  50. package/dist/build-info.json +3 -3
  51. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  52. package/dist/canvas-host/server.js +4 -4
  53. package/dist/capabilities/catalog.js +3 -3
  54. package/dist/channels/plugins/catalog.js +3 -3
  55. package/dist/cli/browser-cli-extension.js +6 -6
  56. package/dist/cli/command-format.js +2 -2
  57. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  58. package/dist/cli/dns-cli.js +9 -9
  59. package/dist/cli/gateway-cli/dev.js +5 -5
  60. package/dist/cli/gateway-cli/run.js +2 -2
  61. package/dist/cli/hooks-cli.js +5 -5
  62. package/dist/cli/lightweight/gateway-runtime-probe.js +50 -0
  63. package/dist/cli/memory-cli.js +7 -7
  64. package/dist/cli/nodes-media-utils.js +2 -2
  65. package/dist/cli/plugins-cli.js +2 -2
  66. package/dist/cli/secrets-cli.js +3 -3
  67. package/dist/cli/update-cli/update-command.js +120 -0
  68. package/dist/cli/windows-argv.js +2 -2
  69. package/dist/commands/dashboard-link.js +3 -3
  70. package/dist/commands/doctor-install.js +5 -5
  71. package/dist/commands/doctor-memory-search.js +2 -2
  72. package/dist/commands/doctor-platform-notes.js +2 -2
  73. package/dist/commands/doctor-sandbox.js +2 -2
  74. package/dist/commands/doctor-state-integrity.js +23 -23
  75. package/dist/commands/doctor-workspace.js +3 -3
  76. package/dist/commands/doctor.js +3 -3
  77. package/dist/commands/managed-up.js +2 -2
  78. package/dist/commands/onboard-auth.credentials.js +3 -3
  79. package/dist/commands/onboarding/plugin-install.js +2 -2
  80. package/dist/commands/sessions-cleanup.js +2 -2
  81. package/dist/commands/signal-install.js +6 -6
  82. package/dist/commands/status-all/channels.js +2 -2
  83. package/dist/commands/wallet.js +47 -47
  84. package/dist/config/cache-utils.js +2 -2
  85. package/dist/config/includes.js +5 -5
  86. package/dist/config/io.js +2 -2
  87. package/dist/config/paths.js +3 -3
  88. package/dist/config/sat-runtime-ids.js +3 -3
  89. package/dist/config/sessions/disk-budget.js +6 -6
  90. package/dist/config/sessions/paths.js +2 -2
  91. package/dist/config/sessions/store.js +17 -17
  92. package/dist/config/sessions/transcript.js +4 -4
  93. package/dist/config/talk.js +2 -2
  94. package/dist/control-ui/assets/{app-6iCry787.js → app-wJm5kuje.js} +4 -4
  95. package/dist/control-ui/assets/{chat-model-ref-C6CFR-GR.js → chat-model-ref-Cs2TTOtF.js} +2 -2
  96. package/dist/control-ui/assets/{index-CNFgocD9.js → index-vTDTf5Zv.js} +3 -3
  97. package/dist/control-ui/assets/{providers-WTJ1kMKy.js → providers-C0DEXi8e.js} +2 -2
  98. package/dist/control-ui/index.html +1 -1
  99. package/dist/cron/service/store.js +2 -2
  100. package/dist/cron/store.js +6 -6
  101. package/dist/daemon/systemd-system.js +5 -5
  102. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  103. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  104. package/dist/gateway/control-ui-boot-check.js +6 -6
  105. package/dist/gateway/control-ui-login.js +7 -7
  106. package/dist/gateway/control-ui.js +9 -9
  107. package/dist/gateway/hooks-mapping.js +4 -4
  108. package/dist/gateway/probe-payload.js +14 -0
  109. package/dist/gateway/probe.js +8 -4
  110. package/dist/gateway/server-discovery.js +2 -2
  111. package/dist/gateway/server-http-lazy.js +2 -4
  112. package/dist/gateway/server-http.js +6 -8
  113. package/dist/gateway/server-methods/chat.js +3 -3
  114. package/dist/gateway/server-methods/models.js +3 -2
  115. package/dist/gateway/server-methods/sessions.js +6 -6
  116. package/dist/gateway/server-methods/usage.js +2 -2
  117. package/dist/gateway/server.impl.js +3 -3
  118. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  119. package/dist/gateway/session-utils.fs.js +24 -24
  120. package/dist/gateway/session-utils.js +6 -6
  121. package/dist/hooks/bundled-dir.js +4 -4
  122. package/dist/hooks/gmail-setup-utils.js +6 -6
  123. package/dist/hooks/import-url.js +2 -2
  124. package/dist/hooks/loader.js +4 -4
  125. package/dist/hooks/workspace.js +7 -7
  126. package/dist/infra/archive.js +17 -17
  127. package/dist/infra/boundary-file-read.js +2 -2
  128. package/dist/infra/boundary-path.js +15 -15
  129. package/dist/infra/brew.js +2 -2
  130. package/dist/infra/control-ui-assets.js +14 -14
  131. package/dist/infra/device-auth-store.js +8 -8
  132. package/dist/infra/device-identity.js +8 -8
  133. package/dist/infra/dotenv.js +2 -2
  134. package/dist/infra/exec-approvals.js +8 -8
  135. package/dist/infra/exec-command-resolution.js +4 -4
  136. package/dist/infra/exec-safe-bin-trust.js +2 -2
  137. package/dist/infra/fased-root.js +5 -5
  138. package/dist/infra/fs-safe.js +14 -14
  139. package/dist/infra/gateway-lock.js +11 -11
  140. package/dist/infra/git-commit.js +5 -5
  141. package/dist/infra/git-root.js +4 -4
  142. package/dist/infra/hosted-runtime-artifact.js +3 -3
  143. package/dist/infra/is-main.js +2 -2
  144. package/dist/infra/json-file.js +7 -7
  145. package/dist/infra/outbound/delivery-queue.js +16 -16
  146. package/dist/infra/path-env.js +3 -3
  147. package/dist/infra/ports-lsof.js +4 -4
  148. package/dist/infra/provider-usage.auth.js +3 -3
  149. package/dist/infra/safe-open-sync.js +2 -2
  150. package/dist/infra/session-cost-usage.js +9 -9
  151. package/dist/infra/shell-env.js +2 -2
  152. package/dist/infra/state-migrations.fs.js +6 -6
  153. package/dist/infra/state-migrations.js +23 -23
  154. package/dist/infra/tmp-fased-dir.js +6 -6
  155. package/dist/infra/widearea-dns.js +3 -3
  156. package/dist/infra/wsl.js +2 -2
  157. package/dist/light-update-precheck.js +1 -1
  158. package/dist/light-update-status.js +1 -1
  159. package/dist/line/accounts.js +2 -2
  160. package/dist/line/download.js +2 -2
  161. package/dist/logging/config.js +3 -3
  162. package/dist/logging/logger.js +7 -7
  163. package/dist/managed/federation.js +3 -3
  164. package/dist/managed/tunnel.js +3 -3
  165. package/dist/media/store.js +13 -13
  166. package/dist/media-understanding/runner.js +3 -3
  167. package/dist/memory/embeddings.js +2 -2
  168. package/dist/memory/internal.js +10 -10
  169. package/dist/memory/manager-sync-ops.js +7 -7
  170. package/dist/memory/repair-executor.js +17 -17
  171. package/dist/node-host/invoke-system-run-plan.js +8 -8
  172. package/dist/node-host/invoke.js +2 -2
  173. package/dist/node-host/runner.js +3 -3
  174. package/dist/pairing/pairing-store.js +3 -3
  175. package/dist/plugin-sdk/{accounts-B5fY9hZy.js → accounts-BfdIB9Ud.js} +1 -1
  176. package/dist/plugin-sdk/{actions-D-9SsSEy.js → actions-DHN_x97P.js} +2 -2
  177. package/dist/plugin-sdk/{active-listener-BH7rDR47.js → active-listener-CIP_Ht8d.js} +1 -1
  178. package/dist/plugin-sdk/{audio-preflight-4faayz5S.js → audio-preflight-CKGhXtyV.js} +26 -26
  179. package/dist/plugin-sdk/{audit-BQfsboqd.js → audit-Cmg38KPG.js} +1 -1
  180. package/dist/plugin-sdk/{channel-access-CDZ-cJPq.js → channel-access-JHDguu4T.js} +1 -1
  181. package/dist/plugin-sdk/{channel-access-configure-DlpuhlH6.js → channel-access-configure-B8mwKp-Z.js} +1 -1
  182. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  183. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  184. package/dist/plugin-sdk/{chunk-items-Cyc4Kl6A.js → chunk-items-iKdlZyWZ.js} +1 -1
  185. package/dist/plugin-sdk/{chunk-CZuCyS7k.js → chunk-oJRyTNTL.js} +1 -1
  186. package/dist/plugin-sdk/command-status.js +26 -26
  187. package/dist/plugin-sdk/{commands-registry-COIbIjGO.js → commands-registry-Cjo7OjIf.js} +2 -2
  188. package/dist/plugin-sdk/{common-LMHJe8KW.js → common-Dx4sUa9f.js} +1 -1
  189. package/dist/plugin-sdk/{config-ZMbTT0kM.js → config-DdS0zHiU.js} +79 -3
  190. package/dist/plugin-sdk/{config-schema-Cku0a8Tm.js → config-schema-BJQEjMPz.js} +2001 -449
  191. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  192. package/dist/plugin-sdk/discord.d.ts +4 -4
  193. package/dist/plugin-sdk/discord.js +19 -19
  194. package/dist/plugin-sdk/{handle-action-C8ZZfORB.js → handle-action-wR0x9b0c.js} +13 -13
  195. package/dist/plugin-sdk/{helpers-vfzH9tBn.js → helpers-DkauqZNP.js} +1 -1
  196. package/dist/plugin-sdk/{image-ops-BnOmQA5d.js → image-ops-DmSjpAeh.js} +1 -1
  197. package/dist/plugin-sdk/index.d.ts +18 -18
  198. package/dist/plugin-sdk/index.js +28 -28
  199. package/dist/plugin-sdk/json-store.js +6 -6
  200. package/dist/plugin-sdk/{login-C73Wpiw8.js → login-DB9LIbi8.js} +3 -3
  201. package/dist/plugin-sdk/{login-qr-CRKHA7i8.js → login-qr-CDhMa-c7.js} +3 -3
  202. package/dist/plugin-sdk/{manager-CHYhpKHn.js → manager-DGZsMQWR.js} +2 -2
  203. package/dist/plugin-sdk/{markdown-tables-B84dPWNG.js → markdown-tables-BX7JXDUV.js} +1 -1
  204. package/dist/plugin-sdk/{media-4daDcNER.js → media-DyzsScOp.js} +2 -2
  205. package/dist/plugin-sdk/{monitor-DJhU-J5u.js → monitor-B91PZ2mD.js} +31 -31
  206. package/dist/plugin-sdk/{monitor-CChc6bQV.js → monitor-BH9rTJFq.js} +30 -30
  207. package/dist/plugin-sdk/{openresponses-http-Dvyczr35.js → openresponses-http-CmBLZ9bH.js} +26 -26
  208. package/dist/plugin-sdk/{optional-runtime-dependency-BFpqaCzp.js → optional-runtime-dependency-DaMkPVe_.js} +1 -1
  209. package/dist/plugin-sdk/{outbound-C1xBxfNb.js → outbound-X-m2mBZn.js} +6 -6
  210. package/dist/plugin-sdk/{outbound-attachment-DvcxPP7b.js → outbound-attachment-M0NCUSG-.js} +2 -2
  211. package/dist/plugin-sdk/{pairing-message-DWXHX-jt.d.ts → pairing-message-BaQiXKLE.d.ts} +1 -1
  212. package/dist/plugin-sdk/{pairing-message-DpYT614h.js → pairing-message-hnmpJlW2.js} +1 -1
  213. package/dist/plugin-sdk/{pairing-store-CprpGco9.js → pairing-store-DyghUm9G.js} +2 -2
  214. package/dist/plugin-sdk/{pi-model-discovery-BQ6fFRBA.js → pi-model-discovery-ReorOh7W.js} +1 -1
  215. package/dist/plugin-sdk/{pi-model-discovery-runtime-BF_89lVj.js → pi-model-discovery-runtime-C-CHZo03.js} +2 -2
  216. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  217. package/dist/plugin-sdk/{pw-ai-xgpIbHOr.js → pw-ai-D_gli3_r.js} +3 -3
  218. package/dist/plugin-sdk/{replies-AzJ6U6Ut.js → replies-Djyehmcu.js} +2 -2
  219. package/dist/plugin-sdk/{resolve-outbound-target-COo_TR7B.js → resolve-outbound-target-Chznq8rS.js} +1 -1
  220. package/dist/plugin-sdk/{resolve-route-CZFzHOIe.js → resolve-route-Ce08Fx-G.js} +1 -1
  221. package/dist/plugin-sdk/{retry-policy-BSdqqXsI.js → retry-policy-eS25atAo.js} +1 -1
  222. package/dist/plugin-sdk/{runtime-CeoGffDi.js → runtime-Cv3gX3Wc.js} +3 -3
  223. package/dist/plugin-sdk/{runtime-dependency-Cvbs0GXf.js → runtime-dependency-p_iKbESf.js} +2 -2
  224. package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
  225. package/dist/plugin-sdk/sat-runtime.js +5 -5
  226. package/dist/plugin-sdk/{send-B_-UtG9F.js → send-B3RAELvw.js} +6 -6
  227. package/dist/plugin-sdk/{send-C0Q1u7N1.js → send-BuPGxx3-.js} +8 -8
  228. package/dist/plugin-sdk/{send-CGE7OgsA.js → send-C-jaxZJG.js} +5 -5
  229. package/dist/plugin-sdk/{send-DCxAv7bV.js → send-CSob7dn9.js} +6 -6
  230. package/dist/plugin-sdk/{send-DVpCBUuL.js → send-CsLJsIvv.js} +7 -7
  231. package/dist/plugin-sdk/{session-ETYBbhLn.js → session-DKJGakm1.js} +2 -2
  232. package/dist/plugin-sdk/{skill-commands-BQL6TBIv.js → skill-commands-BqpZG5nW.js} +2 -2
  233. package/dist/plugin-sdk/{slack-Bs_4uivd.js → slack-CQqN9uBH.js} +38 -38
  234. package/dist/plugin-sdk/{slack-actions-CBPZkfTS.js → slack-actions-DlbVH5SS.js} +11 -11
  235. package/dist/plugin-sdk/slack.d.ts +4 -4
  236. package/dist/plugin-sdk/slack.js +9 -9
  237. package/dist/plugin-sdk/{sticker-cache-BBZMp-oQ.js → sticker-cache-CDyt2ZMh.js} +3 -3
  238. package/dist/plugin-sdk/{tables-B-G7Bb0l.js → tables-Cij4iAXw.js} +1 -1
  239. package/dist/plugin-sdk/{targets-D8UaoWHd.js → targets-VrYeAmeT.js} +1 -1
  240. package/dist/plugin-sdk/{telegram-actions-BARLx9zc.js → telegram-actions-ZwUBOkwa.js} +29 -29
  241. package/dist/plugin-sdk/telegram.d.ts +4 -4
  242. package/dist/plugin-sdk/telegram.js +8 -8
  243. package/dist/plugin-sdk/{thread-bindings.lifecycle-DwYKCLLq.js → thread-bindings.lifecycle-BWIzwpPM.js} +3 -3
  244. package/dist/plugin-sdk/{thread-bindings.state-BNWfHA0f.js → thread-bindings.state-CpAQrGco.js} +2 -2
  245. package/dist/plugin-sdk/{tmp-fased-dir-Be1wBhVz.d.ts → tmp-fased-dir-DLba1ePP.d.ts} +1 -1
  246. package/dist/plugin-sdk/{types-CXLEOrJX.d.ts → types-CKR2Lvsa.d.ts} +1 -1
  247. package/dist/plugin-sdk/{types-CJGVZX6j.d.ts → types-NR-f-rw-.d.ts} +3 -3
  248. package/dist/plugin-sdk/{wallet-status-Coekn_SJ.js → wallet-status-ClmXigGN.js} +3 -3
  249. package/dist/plugin-sdk/{web-BwolzGVF.js → web-BK2j9z6c.js} +31 -31
  250. package/dist/plugin-sdk/{whatsapp-actions-CSvf6eev.js → whatsapp-actions-CaenMy79.js} +13 -13
  251. package/dist/plugin-sdk/{whatsapp-heartbeat-Bw7OtTe6.js → whatsapp-heartbeat-Cr9K5Sil.js} +2 -2
  252. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  253. package/dist/plugin-sdk/whatsapp.js +12 -12
  254. package/dist/plugin-sdk/{wsl-By1Mc-oS.js → wsl-D_I-iL4U.js} +3 -3
  255. package/dist/plugin-sdk/{zod-schema.providers-core-TI6sL-6B.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +75 -75
  256. package/dist/plugins/bundled-dir.js +3 -3
  257. package/dist/plugins/discovery.js +11 -11
  258. package/dist/plugins/loader.js +13 -13
  259. package/dist/plugins/manifest-registry.js +2 -2
  260. package/dist/plugins/manifest.js +4 -4
  261. package/dist/plugins/path-safety.js +3 -3
  262. package/dist/plugins/status-cache.js +10 -10
  263. package/dist/plugins/update.js +3 -3
  264. package/dist/plugins/web-search-install-catalog.js +3 -3
  265. package/dist/providers/refresh.js +1 -1
  266. package/dist/providers/refreshed-model-capabilities.js +1935 -406
  267. package/dist/providers/registry.js +13 -2
  268. package/dist/secrets/apply.js +16 -16
  269. package/dist/secrets/audit.js +11 -11
  270. package/dist/secrets/shared.js +9 -9
  271. package/dist/security/scan-paths.js +2 -2
  272. package/dist/shared/config-eval.js +2 -2
  273. package/dist/shared/pid-alive.js +2 -2
  274. package/dist/tasks/standing-orders.js +5 -5
  275. package/dist/tasks/task-flow-registry.js +5 -5
  276. package/dist/tasks/task-registry.js +5 -5
  277. package/dist/tasks/workflow-definitions.js +6 -6
  278. package/dist/telegram/token.js +5 -5
  279. package/dist/utils.js +5 -5
  280. package/dist/wallet/local-socket-signer-broker.js +16 -16
  281. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  282. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  283. package/dist/wallet/wallet-approval-auth.js +5 -5
  284. package/dist/wallet/wallet-audit-log.js +5 -5
  285. package/dist/wallet/wallet-custody.js +21 -21
  286. package/dist/wallet/wallet-inbound-events.js +5 -5
  287. package/dist/wallet/wallet-observability.js +5 -5
  288. package/dist/wallet/wallet-policy.js +9 -9
  289. package/dist/wallet/wallet-provider-registry.js +7 -7
  290. package/dist/wallet/wallet-runtime-config.js +3 -3
  291. package/dist/wallet/wallet-secrets-store.js +22 -22
  292. package/dist/wallet/wallet-send-approvals.js +5 -5
  293. package/dist/wallet/wallet-settlement-links.js +5 -5
  294. package/dist/web/accounts.js +3 -3
  295. package/dist/web/auth-store.js +18 -18
  296. package/dist/web/session.js +4 -4
  297. package/dist/wizard/host-security-capability.js +2 -2
  298. package/dist/wizard/onboarding.host-security.js +7 -7
  299. package/dist/wizard/onboarding.js +7 -7
  300. package/dist/wizard/onboarding.wallet.js +44 -44
  301. package/extensions/acpx/package.json +1 -1
  302. package/extensions/bluebubbles/package.json +1 -1
  303. package/extensions/copilot-proxy/package.json +1 -1
  304. package/extensions/diagnostics-otel/package.json +1 -1
  305. package/extensions/fased-federation/package.json +1 -1
  306. package/extensions/google-gemini-cli-auth/package.json +1 -1
  307. package/extensions/imessage/package.json +1 -1
  308. package/extensions/irc/package.json +1 -1
  309. package/extensions/line/package.json +1 -1
  310. package/extensions/llm-task/package.json +1 -1
  311. package/extensions/lobster/package.json +1 -1
  312. package/extensions/matrix/CHANGELOG.md +12 -0
  313. package/extensions/matrix/package.json +1 -1
  314. package/extensions/mattermost/package.json +1 -1
  315. package/extensions/memory-core/package.json +2 -2
  316. package/extensions/memory-lancedb/package.json +1 -1
  317. package/extensions/minimax-portal-auth/package.json +1 -1
  318. package/extensions/msteams/CHANGELOG.md +12 -0
  319. package/extensions/msteams/package.json +1 -1
  320. package/extensions/nextcloud-talk/package.json +1 -1
  321. package/extensions/nostr/CHANGELOG.md +12 -0
  322. package/extensions/nostr/package.json +1 -1
  323. package/extensions/open-prose/package.json +1 -1
  324. package/extensions/sat-mining/package.json +1 -1
  325. package/extensions/signal/package.json +1 -1
  326. package/extensions/synology-chat/package.json +1 -1
  327. package/extensions/tlon/package.json +1 -1
  328. package/extensions/twitch/CHANGELOG.md +12 -0
  329. package/extensions/twitch/package.json +1 -1
  330. package/extensions/voice-call/CHANGELOG.md +12 -0
  331. package/extensions/voice-call/package.json +1 -1
  332. package/extensions/zalo/CHANGELOG.md +12 -0
  333. package/extensions/zalo/package.json +1 -1
  334. package/extensions/zalouser/CHANGELOG.md +12 -0
  335. package/extensions/zalouser/package.json +1 -1
  336. package/package.json +1 -1
  337. package/scripts/start-managed.sh +14 -0
@@ -3,7 +3,7 @@ import { WalletProviderError } from "../wallet-provider-adapter.js";
3
3
  import { buildCreateAssociatedTokenAccountIdempotentInstruction, buildTransferCheckedInstruction, deriveAssociatedTokenAddress, toTransactionInstruction } from "../solana-spl-transfer.js";
4
4
  import { walletDiagnosticErrorString } from "../wallet-redaction.js";
5
5
  import { createRequire } from "node:module";
6
- import syncFs from "node:fs";
6
+ import fs from "node:fs";
7
7
  import { createDecipheriv, randomUUID, scryptSync } from "node:crypto";
8
8
 
9
9
  //#region src/wallet/providers/embedded-keystore-adapter.ts
@@ -118,7 +118,7 @@ var EmbeddedKeystoreAdapter = class {
118
118
  details: "missing embedded keystore config (FASED_WALLET_KEYSTORE_PATH, FASED_WALLET_PASSPHRASE, FASED_WALLET_[EMBEDDED_KEYSTORE_]RPC_URL)"
119
119
  };
120
120
  }
121
- if (!syncFs.existsSync(this.keystorePath)) {
121
+ if (!fs.existsSync(this.keystorePath)) {
122
122
  return {
123
123
  ok: false,
124
124
  provider: this.id,
@@ -128,7 +128,7 @@ var EmbeddedKeystoreAdapter = class {
128
128
  };
129
129
  }
130
130
  try {
131
- const raw = await syncFs.promises.readFile(this.keystorePath, "utf8");
131
+ const raw = await fs.promises.readFile(this.keystorePath, "utf8");
132
132
  if (detectKeystoreType(raw) !== "solana-envelope") {
133
133
  throw new Error("keystore file is not a Solana keystore envelope");
134
134
  }
@@ -165,7 +165,7 @@ var EmbeddedKeystoreAdapter = class {
165
165
  return result;
166
166
  }
167
167
  try {
168
- const raw = await syncFs.promises.readFile(this.keystorePath, "utf8");
168
+ const raw = await fs.promises.readFile(this.keystorePath, "utf8");
169
169
  const type = detectKeystoreType(raw);
170
170
  if (type === "solana-envelope") {
171
171
  if (this.supportsChain("solana")) {
@@ -375,7 +375,7 @@ var EmbeddedKeystoreAdapter = class {
375
375
  });
376
376
  }
377
377
  this.solanaKeypairPromise ??= (async () => {
378
- const raw = await syncFs.promises.readFile(this.keystorePath, "utf8");
378
+ const raw = await fs.promises.readFile(this.keystorePath, "utf8");
379
379
  const envelope = parseSolanaKeystoreEnvelope(raw);
380
380
  if (!envelope) {
381
381
  throw new WalletProviderError({
@@ -4,7 +4,7 @@ import { WalletProviderError } from "../wallet-provider-adapter.js";
4
4
  import { buildCreateAssociatedTokenAccountIdempotentInstruction, buildTransferCheckedInstruction, deriveAssociatedTokenAddress } from "../solana-spl-transfer.js";
5
5
  import { redactWalletDiagnosticText, walletDiagnosticErrorMessage, walletDiagnosticErrorString } from "../wallet-redaction.js";
6
6
  import { parseLocalSocketSignerResponseEnvelope, validateLocalSocketSignerResult } from "../local-socket-signer-protocol.js";
7
- import syncFs from "node:fs";
7
+ import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import net from "node:net";
10
10
 
@@ -29,7 +29,7 @@ function signerTimeoutFor(payload) {
29
29
  function assertSecureLocalSignerSocket(socketPath) {
30
30
  let stat;
31
31
  try {
32
- stat = syncFs.lstatSync(socketPath);
32
+ stat = fs.lstatSync(socketPath);
33
33
  } catch (err) {
34
34
  throw new WalletProviderError({
35
35
  code: "wallet_provider_unavailable",
@@ -1,5 +1,5 @@
1
1
  import { ensureWalletStateDir } from "./wallet-runtime-config.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { createHash, createPublicKey, randomBytes, timingSafeEqual, verify } from "node:crypto";
5
5
 
@@ -163,7 +163,7 @@ function normalizeState(input) {
163
163
  }
164
164
  function loadState(env = process.env) {
165
165
  const statePath = resolveStatePath(env);
166
- if (!syncFs.existsSync(statePath)) {
166
+ if (!fs.existsSync(statePath)) {
167
167
  return {
168
168
  version: 2,
169
169
  passkeys: [],
@@ -172,7 +172,7 @@ function loadState(env = process.env) {
172
172
  };
173
173
  }
174
174
  try {
175
- const raw = syncFs.readFileSync(statePath, "utf8");
175
+ const raw = fs.readFileSync(statePath, "utf8");
176
176
  return normalizeState(JSON.parse(raw));
177
177
  } catch {
178
178
  return {
@@ -185,12 +185,12 @@ function loadState(env = process.env) {
185
185
  }
186
186
  function saveState(state, env = process.env) {
187
187
  const statePath = resolveStatePath(env);
188
- syncFs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, {
188
+ fs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, {
189
189
  encoding: "utf8",
190
190
  mode: 384
191
191
  });
192
192
  try {
193
- syncFs.chmodSync(statePath, 384);
193
+ fs.chmodSync(statePath, 384);
194
194
  } catch {}
195
195
  }
196
196
  function pruneState(state) {
@@ -1,5 +1,5 @@
1
1
  import { ensureWalletStateDir } from "./wallet-runtime-config.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import { randomBytes } from "node:crypto";
4
4
 
5
5
  //#region src/wallet/wallet-audit-log.ts
@@ -15,22 +15,22 @@ function appendWalletAuditEntry(params) {
15
15
  actor: params.actor?.trim() || "system",
16
16
  details: params.details ?? {}
17
17
  };
18
- syncFs.appendFileSync(paths.auditLogPath, `${JSON.stringify(entry)}\n`, {
18
+ fs.appendFileSync(paths.auditLogPath, `${JSON.stringify(entry)}\n`, {
19
19
  encoding: "utf8",
20
20
  mode: 384
21
21
  });
22
22
  try {
23
- syncFs.chmodSync(paths.auditLogPath, 384);
23
+ fs.chmodSync(paths.auditLogPath, 384);
24
24
  } catch {}
25
25
  return entry;
26
26
  }
27
27
  function readWalletAuditEntries(params) {
28
28
  const paths = ensureWalletStateDir(params?.env ?? process.env);
29
- if (!syncFs.existsSync(paths.auditLogPath)) {
29
+ if (!fs.existsSync(paths.auditLogPath)) {
30
30
  return [];
31
31
  }
32
32
  const limit = Math.max(1, Math.min(500, params?.limit ?? 100));
33
- const raw = syncFs.readFileSync(paths.auditLogPath, "utf8");
33
+ const raw = fs.readFileSync(paths.auditLogPath, "utf8");
34
34
  const lines = raw.split("\n").map((line) => line.trim()).filter(Boolean);
35
35
  const out = [];
36
36
  for (let i = lines.length - 1; i >= 0; i -= 1) {
@@ -6,7 +6,7 @@ import { walletDiagnosticErrorMessage } from "./wallet-redaction.js";
6
6
  import { resolveWalletProviderId } from "./wallet-provider-resolver.js";
7
7
  import { consumeWalletApprovalGrant, resolveWalletApprovalAuthMode } from "./wallet-approval-auth.js";
8
8
  import { lockLocalSignerCustody, unlockLocalSignerCustody } from "./local-socket-signer-custody.js";
9
- import syncFs from "node:fs";
9
+ import fs from "node:fs";
10
10
  import path from "node:path";
11
11
  import { createHash, randomBytes, timingSafeEqual } from "node:crypto";
12
12
 
@@ -164,33 +164,33 @@ function resolveCustodyShareStatePath(walletId, env = process.env) {
164
164
  }
165
165
  function locateCustodyStatePath(walletId, env = process.env) {
166
166
  const scopedPath = resolveCustodyStatePath(walletId, env);
167
- if (syncFs.existsSync(scopedPath)) {
167
+ if (fs.existsSync(scopedPath)) {
168
168
  return scopedPath;
169
169
  }
170
170
  const legacyPath = resolveLegacyCustodyStatePath(env);
171
- return syncFs.existsSync(legacyPath) ? legacyPath : scopedPath;
171
+ return fs.existsSync(legacyPath) ? legacyPath : scopedPath;
172
172
  }
173
173
  function locateCustodyShareStatePath(walletId, env = process.env) {
174
174
  const scopedPath = resolveCustodyShareStatePath(walletId, env);
175
- if (syncFs.existsSync(scopedPath)) {
175
+ if (fs.existsSync(scopedPath)) {
176
176
  return scopedPath;
177
177
  }
178
178
  const legacyPath = resolveLegacyCustodyShareStatePath(env);
179
- return syncFs.existsSync(legacyPath) ? legacyPath : scopedPath;
179
+ return fs.existsSync(legacyPath) ? legacyPath : scopedPath;
180
180
  }
181
181
  function listCustodyStateTargets(env = process.env) {
182
182
  const walletPaths = ensureWalletStateDir(env);
183
183
  const custodyRoot = path.join(walletPaths.rootDir, "custody");
184
184
  const targets = new Set();
185
- if (syncFs.existsSync(custodyRoot)) {
186
- for (const entry of syncFs.readdirSync(custodyRoot, { withFileTypes: true })) {
185
+ if (fs.existsSync(custodyRoot)) {
186
+ for (const entry of fs.readdirSync(custodyRoot, { withFileTypes: true })) {
187
187
  if (entry.isDirectory() && entry.name.trim()) {
188
188
  targets.add(entry.name.trim());
189
189
  }
190
190
  }
191
191
  }
192
192
  const out = [...targets];
193
- if (syncFs.existsSync(resolveLegacyCustodyStatePath(env)) || out.length === 0) {
193
+ if (fs.existsSync(resolveLegacyCustodyStatePath(env)) || out.length === 0) {
194
194
  out.push(undefined);
195
195
  }
196
196
  return out;
@@ -525,11 +525,11 @@ function resolveWalletCustodyScope(params) {
525
525
  }
526
526
  function loadShareState(walletId, env = process.env) {
527
527
  const filePath = locateCustodyShareStatePath(walletId, env);
528
- if (!syncFs.existsSync(filePath)) {
528
+ if (!fs.existsSync(filePath)) {
529
529
  return null;
530
530
  }
531
531
  try {
532
- const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
532
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
533
533
  if (parsed.version === 1 && parsed.scheme === "xor-3of3-v1" && typeof parsed.secretBytes === "number" && parsed.secretBytes > 0 && typeof parsed.hotShare === "string" && typeof parsed.coldShare === "string" && typeof parsed.deviceShareHash === "string" && typeof parsed.secretChecksum === "string" && typeof parsed.createdAt === "string" && typeof parsed.updatedAt === "string") {
534
534
  const hot = decodeBase64Share(parsed.hotShare);
535
535
  const cold = decodeBase64Share(parsed.coldShare);
@@ -596,16 +596,16 @@ function loadShareState(walletId, env = process.env) {
596
596
  }
597
597
  function saveShareState(state, walletId, env = process.env) {
598
598
  const filePath = resolveCustodyShareStatePath(walletId, env);
599
- syncFs.mkdirSync(path.dirname(filePath), {
599
+ fs.mkdirSync(path.dirname(filePath), {
600
600
  recursive: true,
601
601
  mode: 448
602
602
  });
603
- syncFs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
603
+ fs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
604
604
  encoding: "utf8",
605
605
  mode: 384
606
606
  });
607
607
  try {
608
- syncFs.chmodSync(filePath, 384);
608
+ fs.chmodSync(filePath, 384);
609
609
  } catch {}
610
610
  }
611
611
  function deleteWalletCustodyCeremony(params) {
@@ -620,11 +620,11 @@ function deleteWalletCustodyCeremony(params) {
620
620
  role: "vault"
621
621
  };
622
622
  const statePath = locateCustodyShareStatePath(scope.walletId, env);
623
- const existed = syncFs.existsSync(statePath);
623
+ const existed = fs.existsSync(statePath);
624
624
  if (existed) {
625
- syncFs.rmSync(statePath, { force: true });
625
+ fs.rmSync(statePath, { force: true });
626
626
  try {
627
- syncFs.rmdirSync(path.dirname(statePath));
627
+ fs.rmdirSync(path.dirname(statePath));
628
628
  } catch {}
629
629
  }
630
630
  return {
@@ -1015,14 +1015,14 @@ function revokeWalletCustodyDevice(params) {
1015
1015
  }
1016
1016
  function loadState(walletId, env = process.env) {
1017
1017
  const filePath = locateCustodyStatePath(walletId, env);
1018
- if (!syncFs.existsSync(filePath)) {
1018
+ if (!fs.existsSync(filePath)) {
1019
1019
  return {
1020
1020
  version: 1,
1021
1021
  unlockSessions: []
1022
1022
  };
1023
1023
  }
1024
1024
  try {
1025
- const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
1025
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
1026
1026
  if (parsed.version !== 1 || !Array.isArray(parsed.unlockSessions)) {
1027
1027
  return {
1028
1028
  version: 1,
@@ -1065,16 +1065,16 @@ function loadState(walletId, env = process.env) {
1065
1065
  }
1066
1066
  function saveState(state, walletId, env = process.env) {
1067
1067
  const filePath = resolveCustodyStatePath(walletId, env);
1068
- syncFs.mkdirSync(path.dirname(filePath), {
1068
+ fs.mkdirSync(path.dirname(filePath), {
1069
1069
  recursive: true,
1070
1070
  mode: 448
1071
1071
  });
1072
- syncFs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
1072
+ fs.writeFileSync(filePath, `${JSON.stringify(state, null, 2)}\n`, {
1073
1073
  encoding: "utf8",
1074
1074
  mode: 384
1075
1075
  });
1076
1076
  try {
1077
- syncFs.chmodSync(filePath, 384);
1077
+ fs.chmodSync(filePath, 384);
1078
1078
  } catch {}
1079
1079
  }
1080
1080
  function pruneState(state) {
@@ -4,7 +4,7 @@ import { buildWalletProviderCapabilityMatrix, providerSupportsChainOperation } f
4
4
  import { walletDiagnosticErrorString } from "./wallet-redaction.js";
5
5
  import { createWalletProviderAdapter, resolveWalletProviderId } from "./wallet-provider-resolver.js";
6
6
  import { appendWalletAuditEntry, readWalletAuditEntries } from "./wallet-audit-log.js";
7
- import syncFs from "node:fs";
7
+ import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import { randomBytes } from "node:crypto";
10
10
 
@@ -174,11 +174,11 @@ function normalizeLedger(raw) {
174
174
  }
175
175
  function readLedger(env = process.env) {
176
176
  const filePath = inboundLedgerPath(env);
177
- if (!syncFs.existsSync(filePath)) {
177
+ if (!fs.existsSync(filePath)) {
178
178
  return defaultLedger();
179
179
  }
180
180
  try {
181
- const parsed = JSON.parse(syncFs.readFileSync(filePath, "utf8"));
181
+ const parsed = JSON.parse(fs.readFileSync(filePath, "utf8"));
182
182
  return normalizeLedger(parsed);
183
183
  } catch {
184
184
  return defaultLedger();
@@ -191,12 +191,12 @@ function writeLedger(ledger, env = process.env) {
191
191
  version: 1,
192
192
  updatedAt: nowIso()
193
193
  };
194
- syncFs.writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\n`, {
194
+ fs.writeFileSync(filePath, `${JSON.stringify(payload, null, 2)}\n`, {
195
195
  encoding: "utf8",
196
196
  mode: 384
197
197
  });
198
198
  try {
199
- syncFs.chmodSync(filePath, 384);
199
+ fs.chmodSync(filePath, 384);
200
200
  } catch {}
201
201
  }
202
202
  function findWalletById(env, walletId) {
@@ -1,5 +1,5 @@
1
1
  import { ensureWalletStateDir } from "./wallet-runtime-config.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
 
4
4
  //#region src/wallet/wallet-observability.ts
5
5
  const OBSERVABILITY_FILENAME = "observability.v1.json";
@@ -37,11 +37,11 @@ function sanitizeBucket(input) {
37
37
  }
38
38
  function readSnapshot(env) {
39
39
  const file = observabilityPath(env);
40
- if (!syncFs.existsSync(file)) {
40
+ if (!fs.existsSync(file)) {
41
41
  return makeDefaultSnapshot();
42
42
  }
43
43
  try {
44
- const parsed = JSON.parse(syncFs.readFileSync(file, "utf8"));
44
+ const parsed = JSON.parse(fs.readFileSync(file, "utf8"));
45
45
  if (parsed?.version !== 1) {
46
46
  return makeDefaultSnapshot();
47
47
  }
@@ -60,12 +60,12 @@ function readSnapshot(env) {
60
60
  }
61
61
  function writeSnapshot(env, snapshot) {
62
62
  const file = observabilityPath(env);
63
- syncFs.writeFileSync(file, `${JSON.stringify(snapshot, null, 2)}\n`, {
63
+ fs.writeFileSync(file, `${JSON.stringify(snapshot, null, 2)}\n`, {
64
64
  mode: 384,
65
65
  encoding: "utf8"
66
66
  });
67
67
  try {
68
- syncFs.chmodSync(file, 384);
68
+ fs.chmodSync(file, 384);
69
69
  } catch {}
70
70
  }
71
71
  function incrementWalletObservabilityCounter(params) {
@@ -2,7 +2,7 @@ import { ensureWalletStateDir, resolveWalletRuntimeConfig } from "./wallet-runti
2
2
  import { readWalletProviderRegistry, resolveWalletUserRole } from "./wallet-provider-registry.js";
3
3
  import { assertValidSolanaAddress } from "./solana-address.js";
4
4
  import { tryResolveSatRuntimeIds } from "../config/sat-runtime-ids.js";
5
- import syncFs from "node:fs";
5
+ import fs from "node:fs";
6
6
  import path from "node:path";
7
7
 
8
8
  //#region src/wallet/wallet-policy.ts
@@ -51,11 +51,11 @@ function normalizeWalletUsageBucket(raw) {
51
51
  }
52
52
  function loadLedger(paths) {
53
53
  const fallback = defaultWalletUsageLedger();
54
- if (!syncFs.existsSync(paths.dailyUsagePath)) {
54
+ if (!fs.existsSync(paths.dailyUsagePath)) {
55
55
  return fallback;
56
56
  }
57
57
  try {
58
- const raw = syncFs.readFileSync(paths.dailyUsagePath, "utf8");
58
+ const raw = fs.readFileSync(paths.dailyUsagePath, "utf8");
59
59
  const parsed = JSON.parse(raw);
60
60
  if (parsed && parsed.version === 2 && typeof parsed.date === "string") {
61
61
  const walletsRaw = parsed.wallets && typeof parsed.wallets === "object" && !Array.isArray(parsed.wallets) ? parsed.wallets : {};
@@ -87,9 +87,9 @@ function loadLedger(paths) {
87
87
  return fallback;
88
88
  }
89
89
  function writeLedger(paths, ledger) {
90
- syncFs.writeFileSync(paths.dailyUsagePath, `${JSON.stringify(ledger, null, 2)}\n`, { mode: 384 });
90
+ fs.writeFileSync(paths.dailyUsagePath, `${JSON.stringify(ledger, null, 2)}\n`, { mode: 384 });
91
91
  try {
92
- syncFs.chmodSync(paths.dailyUsagePath, 384);
92
+ fs.chmodSync(paths.dailyUsagePath, 384);
93
93
  } catch {}
94
94
  }
95
95
  function resolveWalletUsageBucket(ledger, walletId) {
@@ -344,11 +344,11 @@ function readWalletPolicyState(env = process.env) {
344
344
  updatedAt: nowIso(),
345
345
  wallets: {}
346
346
  };
347
- if (!syncFs.existsSync(statePath)) {
347
+ if (!fs.existsSync(statePath)) {
348
348
  return fallback;
349
349
  }
350
350
  try {
351
- const raw = syncFs.readFileSync(statePath, "utf8");
351
+ const raw = fs.readFileSync(statePath, "utf8");
352
352
  const parsed = JSON.parse(raw);
353
353
  if (parsed.version !== 1) {
354
354
  return fallback;
@@ -374,9 +374,9 @@ function readWalletPolicyState(env = process.env) {
374
374
  function writeWalletPolicyState(state, env = process.env) {
375
375
  const paths = ensureWalletStateDir(env);
376
376
  const statePath = resolveWalletPolicyStatePath(paths);
377
- syncFs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, { mode: 384 });
377
+ fs.writeFileSync(statePath, `${JSON.stringify(state, null, 2)}\n`, { mode: 384 });
378
378
  try {
379
- syncFs.chmodSync(statePath, 384);
379
+ fs.chmodSync(statePath, 384);
380
380
  } catch {}
381
381
  }
382
382
  function buildResolvedPolicyFromDefaults(defaults) {
@@ -1,6 +1,6 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
2
  import { ensureWalletStateDir } from "./wallet-runtime-config.js";
3
- import syncFs from "node:fs";
3
+ import fs from "node:fs";
4
4
  import path from "node:path";
5
5
  import { randomBytes } from "node:crypto";
6
6
 
@@ -159,12 +159,12 @@ function buildMiningDeleteBlockedMessage(details) {
159
159
  }
160
160
  function readSatMiningRuntimeDeletionDetails(walletId, env) {
161
161
  const runtimeStorePath = path.join(resolveStateDir(env), "sat-mining", "wallets", normalizeSatWalletStateKey(walletId), "runtime-store.json");
162
- if (!syncFs.existsSync(runtimeStorePath)) {
162
+ if (!fs.existsSync(runtimeStorePath)) {
163
163
  return null;
164
164
  }
165
165
  let parsed;
166
166
  try {
167
- parsed = JSON.parse(syncFs.readFileSync(runtimeStorePath, "utf8"));
167
+ parsed = JSON.parse(fs.readFileSync(runtimeStorePath, "utf8"));
168
168
  } catch {
169
169
  return null;
170
170
  }
@@ -383,11 +383,11 @@ function normalizeRegistry(raw) {
383
383
  }
384
384
  function readWalletProviderRegistry(env = process.env) {
385
385
  const file = registryPath(env);
386
- if (!syncFs.existsSync(file)) {
386
+ if (!fs.existsSync(file)) {
387
387
  return makeDefaultRegistry();
388
388
  }
389
389
  try {
390
- const parsed = JSON.parse(syncFs.readFileSync(file, "utf8"));
390
+ const parsed = JSON.parse(fs.readFileSync(file, "utf8"));
391
391
  const normalized = normalizeRegistry(parsed);
392
392
  if (normalized.changed) {
393
393
  writeWalletProviderRegistry(normalized.registry, env);
@@ -404,12 +404,12 @@ function writeWalletProviderRegistry(registry, env = process.env) {
404
404
  version: 1,
405
405
  updatedAt: nowIso()
406
406
  };
407
- syncFs.writeFileSync(file, `${JSON.stringify(payload, null, 2)}\n`, {
407
+ fs.writeFileSync(file, `${JSON.stringify(payload, null, 2)}\n`, {
408
408
  encoding: "utf8",
409
409
  mode: REGISTRY_FILE_MODE
410
410
  });
411
411
  try {
412
- syncFs.chmodSync(file, REGISTRY_FILE_MODE);
412
+ fs.chmodSync(file, REGISTRY_FILE_MODE);
413
413
  } catch {}
414
414
  }
415
415
  function setWalletProviderEnabled(params) {
@@ -1,5 +1,5 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/wallet/wallet-runtime-config.ts
@@ -94,12 +94,12 @@ function resolveWalletStatePaths(env = process.env) {
94
94
  }
95
95
  function ensureWalletStateDir(env = process.env) {
96
96
  const paths = resolveWalletStatePaths(env);
97
- syncFs.mkdirSync(paths.rootDir, {
97
+ fs.mkdirSync(paths.rootDir, {
98
98
  recursive: true,
99
99
  mode: 448
100
100
  });
101
101
  try {
102
- syncFs.chmodSync(paths.rootDir, 448);
102
+ fs.chmodSync(paths.rootDir, 448);
103
103
  } catch {}
104
104
  return paths;
105
105
  }
@@ -1,5 +1,5 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
- import syncFs from "node:fs";
2
+ import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
5
5
 
@@ -12,12 +12,12 @@ const WALLET_RPC_SECRET_FILENAME = "wallet-rpc.v1.enc.json";
12
12
  const MASTER_KEY_FILENAME = "master.key";
13
13
  function ensureSecretsDir(env = process.env) {
14
14
  const dir = path.join(resolveStateDir(env), "secrets");
15
- syncFs.mkdirSync(dir, {
15
+ fs.mkdirSync(dir, {
16
16
  recursive: true,
17
17
  mode: SECRETS_DIR_MODE
18
18
  });
19
19
  try {
20
- syncFs.chmodSync(dir, SECRETS_DIR_MODE);
20
+ fs.chmodSync(dir, SECRETS_DIR_MODE);
21
21
  } catch {}
22
22
  return dir;
23
23
  }
@@ -37,20 +37,20 @@ function resolveWalletProviderSecretPath(providerId, env = process.env) {
37
37
  }
38
38
  function readOrCreateMasterKey(env = process.env) {
39
39
  const keyPath = resolveMasterKeyPath(env);
40
- if (syncFs.existsSync(keyPath)) {
41
- const raw = syncFs.readFileSync(keyPath, "utf8").trim();
40
+ if (fs.existsSync(keyPath)) {
41
+ const raw = fs.readFileSync(keyPath, "utf8").trim();
42
42
  const parsed = Buffer.from(raw, "hex");
43
43
  if (parsed.length === MASTER_KEY_BYTES) {
44
44
  return parsed;
45
45
  }
46
46
  }
47
47
  const key = randomBytes(MASTER_KEY_BYTES);
48
- syncFs.writeFileSync(keyPath, `${key.toString("hex")}\n`, {
48
+ fs.writeFileSync(keyPath, `${key.toString("hex")}\n`, {
49
49
  mode: SECRET_FILE_MODE,
50
50
  encoding: "utf8"
51
51
  });
52
52
  try {
53
- syncFs.chmodSync(keyPath, SECRET_FILE_MODE);
53
+ fs.chmodSync(keyPath, SECRET_FILE_MODE);
54
54
  } catch {}
55
55
  return key;
56
56
  }
@@ -197,12 +197,12 @@ function saveWalletRpcSecret(input, env = process.env) {
197
197
  };
198
198
  const encrypted = encryptPayload(record, env);
199
199
  const secretPath = resolveWalletRpcSecretPath(env, input.providerId);
200
- syncFs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
200
+ fs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
201
201
  mode: SECRET_FILE_MODE,
202
202
  encoding: "utf8"
203
203
  });
204
204
  try {
205
- syncFs.chmodSync(secretPath, SECRET_FILE_MODE);
205
+ fs.chmodSync(secretPath, SECRET_FILE_MODE);
206
206
  } catch {}
207
207
  return record;
208
208
  }
@@ -230,23 +230,23 @@ function saveWalletProviderSecret(input, env = process.env) {
230
230
  };
231
231
  const encrypted = encryptProviderPayload(record, env);
232
232
  const secretPath = resolveWalletProviderSecretPath(providerId, env);
233
- syncFs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
233
+ fs.writeFileSync(secretPath, `${JSON.stringify(encrypted, null, 2)}\n`, {
234
234
  mode: SECRET_FILE_MODE,
235
235
  encoding: "utf8"
236
236
  });
237
237
  try {
238
- syncFs.chmodSync(secretPath, SECRET_FILE_MODE);
238
+ fs.chmodSync(secretPath, SECRET_FILE_MODE);
239
239
  } catch {}
240
240
  return record;
241
241
  }
242
242
  function loadWalletRpcSecret(env = process.env, options) {
243
243
  const candidatePaths = options?.providerId ? [resolveWalletRpcSecretPath(env, options.providerId), resolveWalletRpcSecretPath(env)] : [resolveWalletRpcSecretPath(env)];
244
244
  for (const secretPath of candidatePaths) {
245
- if (!syncFs.existsSync(secretPath)) {
245
+ if (!fs.existsSync(secretPath)) {
246
246
  continue;
247
247
  }
248
248
  try {
249
- const parsed = JSON.parse(syncFs.readFileSync(secretPath, "utf8"));
249
+ const parsed = JSON.parse(fs.readFileSync(secretPath, "utf8"));
250
250
  const decrypted = decryptPayload(parsed, env);
251
251
  if (decrypted) {
252
252
  return decrypted;
@@ -257,11 +257,11 @@ function loadWalletRpcSecret(env = process.env, options) {
257
257
  }
258
258
  function loadWalletProviderSecret(providerId, env = process.env) {
259
259
  const secretPath = resolveWalletProviderSecretPath(providerId, env);
260
- if (!syncFs.existsSync(secretPath)) {
260
+ if (!fs.existsSync(secretPath)) {
261
261
  return null;
262
262
  }
263
263
  try {
264
- const parsed = JSON.parse(syncFs.readFileSync(secretPath, "utf8"));
264
+ const parsed = JSON.parse(fs.readFileSync(secretPath, "utf8"));
265
265
  const value = decryptProviderPayload(parsed, env);
266
266
  if (!value || value.providerId !== providerId) {
267
267
  return null;
@@ -274,13 +274,13 @@ function loadWalletProviderSecret(providerId, env = process.env) {
274
274
  function deleteWalletRpcSecret(env = process.env) {
275
275
  const dir = ensureSecretsDir(env);
276
276
  const legacyPath = resolveWalletRpcSecretPath(env);
277
- const candidatePaths = [legacyPath, ...syncFs.readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isFile() && /^wallet-rpc-[a-z0-9-]+\.v1\.enc\.json$/i.test(entry.name)).map((entry) => path.join(dir, entry.name))];
277
+ const candidatePaths = [legacyPath, ...fs.readdirSync(dir, { withFileTypes: true }).filter((entry) => entry.isFile() && /^wallet-rpc-[a-z0-9-]+\.v1\.enc\.json$/i.test(entry.name)).map((entry) => path.join(dir, entry.name))];
278
278
  const removedPaths = [];
279
279
  for (const secretPath of candidatePaths) {
280
- if (!syncFs.existsSync(secretPath)) {
280
+ if (!fs.existsSync(secretPath)) {
281
281
  continue;
282
282
  }
283
- syncFs.rmSync(secretPath, { force: true });
283
+ fs.rmSync(secretPath, { force: true });
284
284
  removedPaths.push(secretPath);
285
285
  }
286
286
  return {
@@ -291,13 +291,13 @@ function deleteWalletRpcSecret(env = process.env) {
291
291
  }
292
292
  function deleteWalletRpcSecretForProvider(providerId, env = process.env) {
293
293
  const secretPath = resolveWalletRpcSecretPath(env, providerId);
294
- if (!syncFs.existsSync(secretPath)) {
294
+ if (!fs.existsSync(secretPath)) {
295
295
  return {
296
296
  removed: false,
297
297
  path: secretPath
298
298
  };
299
299
  }
300
- syncFs.rmSync(secretPath, { force: true });
300
+ fs.rmSync(secretPath, { force: true });
301
301
  return {
302
302
  removed: true,
303
303
  path: secretPath
@@ -305,13 +305,13 @@ function deleteWalletRpcSecretForProvider(providerId, env = process.env) {
305
305
  }
306
306
  function deleteWalletProviderSecret(providerId, env = process.env) {
307
307
  const secretPath = resolveWalletProviderSecretPath(providerId, env);
308
- if (!syncFs.existsSync(secretPath)) {
308
+ if (!fs.existsSync(secretPath)) {
309
309
  return {
310
310
  removed: false,
311
311
  path: secretPath
312
312
  };
313
313
  }
314
- syncFs.rmSync(secretPath, { force: true });
314
+ fs.rmSync(secretPath, { force: true });
315
315
  return {
316
316
  removed: true,
317
317
  path: secretPath
@@ -16,7 +16,7 @@ import { enforceWalletCustodyForAutonomousSend, withWalletCustodySigningMaterial
16
16
  import { simulateWalletPolicy } from "./wallet-policy-simulation.js";
17
17
  import { getWalletSettlementLinkByRequestId, markWalletSettlementLinkOutcome, upsertWalletSettlementLink } from "./wallet-settlement-links.js";
18
18
  import { syncWalletApprovalTask, walletApprovalTaskId } from "./wallet-task-ledger.js";
19
- import syncFs from "node:fs";
19
+ import fs from "node:fs";
20
20
  import { randomBytes } from "node:crypto";
21
21
  import { setTimeout } from "node:timers/promises";
22
22
 
@@ -316,14 +316,14 @@ async function executeWalletSendWithRetry(params) {
316
316
  }
317
317
  function loadFile(env = process.env) {
318
318
  const paths = ensureWalletStateDir(env);
319
- if (!syncFs.existsSync(paths.sendApprovalsPath)) {
319
+ if (!fs.existsSync(paths.sendApprovalsPath)) {
320
320
  return {
321
321
  version: 1,
322
322
  requests: []
323
323
  };
324
324
  }
325
325
  try {
326
- const parsed = JSON.parse(syncFs.readFileSync(paths.sendApprovalsPath, "utf8"));
326
+ const parsed = JSON.parse(fs.readFileSync(paths.sendApprovalsPath, "utf8"));
327
327
  if (parsed?.version === 1 && Array.isArray(parsed.requests)) {
328
328
  return {
329
329
  version: 1,
@@ -338,12 +338,12 @@ function loadFile(env = process.env) {
338
338
  }
339
339
  function saveFile(file, env = process.env) {
340
340
  const paths = ensureWalletStateDir(env);
341
- syncFs.writeFileSync(paths.sendApprovalsPath, `${JSON.stringify(file, null, 2)}\n`, {
341
+ fs.writeFileSync(paths.sendApprovalsPath, `${JSON.stringify(file, null, 2)}\n`, {
342
342
  encoding: "utf8",
343
343
  mode: 384
344
344
  });
345
345
  try {
346
- syncFs.chmodSync(paths.sendApprovalsPath, 384);
346
+ fs.chmodSync(paths.sendApprovalsPath, 384);
347
347
  } catch {}
348
348
  }
349
349
  function markExpired(file) {