@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,6 +1,6 @@
1
1
  import { shortenHomePath } from "../utils.js";
2
2
  import { DEFAULT_AGENTS_FILENAME } from "../agents/workspace.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import path from "node:path";
5
5
 
6
6
  //#region src/commands/doctor-workspace.ts
@@ -16,13 +16,13 @@ async function shouldSuggestMemorySystem(workspaceDir) {
16
16
  const memoryPaths = [path.join(workspaceDir, "MEMORY.md"), path.join(workspaceDir, "memory.md")];
17
17
  for (const memoryPath of memoryPaths) {
18
18
  try {
19
- await fs.promises.access(memoryPath);
19
+ await syncFs.promises.access(memoryPath);
20
20
  return false;
21
21
  } catch {}
22
22
  }
23
23
  const agentsPath = path.join(workspaceDir, DEFAULT_AGENTS_FILENAME);
24
24
  try {
25
- const content = await fs.promises.readFile(agentsPath, "utf-8");
25
+ const content = await syncFs.promises.readFile(agentsPath, "utf-8");
26
26
  if (/memory\.md/i.test(content)) {
27
27
  return false;
28
28
  }
@@ -37,7 +37,7 @@ import { maybeRepairUiProtocolFreshness } from "./doctor-ui.js";
37
37
  import { maybeOfferUpdateBeforeDoctor } from "./doctor-update.js";
38
38
  import { MEMORY_SYSTEM_PROMPT, shouldSuggestMemorySystem } from "./doctor-workspace.js";
39
39
  import { noteWorkspaceStatus } from "./doctor-workspace-status.js";
40
- import fs from "node:fs";
40
+ import syncFs from "node:fs";
41
41
  import { intro, outro } from "@clack/prompts";
42
42
 
43
43
  //#region src/commands/doctor.ts
@@ -83,7 +83,7 @@ async function doctorCommand(runtime = defaultRuntime, options = {}) {
83
83
  `Fix: run ${formatCliCommand("fased configure")} and set Gateway mode (local/remote).`,
84
84
  `Or set directly: ${formatCliCommand("fased config set gateway.mode local")}`
85
85
  ];
86
- if (!fs.existsSync(configPath)) {
86
+ if (!syncFs.existsSync(configPath)) {
87
87
  lines.push(`Missing config: run ${formatCliCommand("fased setup")} first.`);
88
88
  }
89
89
  note$1(lines.join("\n"), "Gateway");
@@ -233,7 +233,7 @@ async function doctorCommand(runtime = defaultRuntime, options = {}) {
233
233
  await writeConfigFile(cfg);
234
234
  logConfigUpdated(runtime);
235
235
  const backupPath = `${CONFIG_PATH}.bak`;
236
- if (fs.existsSync(backupPath)) {
236
+ if (syncFs.existsSync(backupPath)) {
237
237
  runtime.log(`Backup: ${shortenHomePath(backupPath)}`);
238
238
  }
239
239
  } else if (configResult.hasPendingChanges) {
@@ -2,7 +2,7 @@ import { defaultRuntime } from "../runtime.js";
2
2
  import { readManagedFederationTokenSummary } from "../managed/federation.js";
3
3
  import { readManagedReservationSummaries } from "../managed/tunnel.js";
4
4
  import { fileURLToPath } from "node:url";
5
- import fs from "node:fs";
5
+ import syncFs from "node:fs";
6
6
  import path from "node:path";
7
7
  import { spawn } from "node:child_process";
8
8
 
@@ -44,7 +44,7 @@ function resolveManagedScriptPath() {
44
44
  candidates.push(cwdCandidate);
45
45
  }
46
46
  for (const candidate of candidates) {
47
- if (fs.existsSync(candidate)) {
47
+ if (syncFs.existsSync(candidate)) {
48
48
  return candidate;
49
49
  }
50
50
  }
@@ -1,4 +1,8 @@
1
1
  import { resolveAgentModelPrimaryValue } from "../config/model-input.js";
2
+ import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../agents/defaults.js";
3
+ import { ensureAuthProfileStore } from "../agents/auth-profiles/store.js";
4
+ import { listProfilesForProvider } from "../agents/auth-profiles/profiles.js";
5
+ import "../agents/auth-profiles.js";
2
6
  import { CLOUDFLARE_AI_GATEWAY_MODEL_REFS } from "../providers/cloudflare-ai-gateway-shared.js";
3
7
  import { HUGGINGFACE_MODEL_REFS } from "../providers/huggingface-models.js";
4
8
  import { OPENCODE_ZEN_MODEL_REFS } from "../providers/opencode-zen-shared.js";
@@ -7,10 +11,6 @@ import { VENICE_MODEL_REFS } from "../providers/venice-models.js";
7
11
  import { VERCEL_AI_GATEWAY_MODEL_REFS } from "../providers/vercel-ai-gateway-models.js";
8
12
  import { LITELLM_MODEL_REFS } from "../providers/litellm-models.js";
9
13
  import { BYTEPLUS_CODING_MODEL_REFS, BYTEPLUS_MODEL_REFS, COPILOT_PROXY_MODEL_REFS, GITHUB_COPILOT_MODEL_REFS, GOOGLE_API_MODEL_REFS, GOOGLE_GEMINI_CLI_MODEL_REFS, MISTRAL_MODEL_REFS, OPENAI_API_MODEL_REFS, OPENAI_SIGN_IN_MODEL_REFS, OPENROUTER_MODEL_REFS, QIANFAN_MODEL_REFS, SYNTHETIC_MODEL_REFS, VOLCENGINE_CODING_MODEL_REFS, VOLCENGINE_MODEL_REFS, XAI_MODEL_REFS, XIAOMI_MODEL_REFS, ZAI_MODEL_REFS, isStandardProviderCatalogEntry, isStandardProviderModelRef } from "../providers/registry.js";
10
- import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../agents/defaults.js";
11
- import { ensureAuthProfileStore } from "../agents/auth-profiles/store.js";
12
- import { listProfilesForProvider } from "../agents/auth-profiles/profiles.js";
13
- import "../agents/auth-profiles.js";
14
14
  import { getCustomProviderApiKey, resolveEnvApiKey } from "../agents/model-auth.js";
15
15
  import { buildAllowedModelSet, buildModelAliasIndex, modelKey, normalizeProviderId, resolveConfiguredModelRef } from "../agents/model-selection.js";
16
16
  import { formatModelFeatureList } from "../agents/model-metadata.js";
@@ -284,8 +284,8 @@ async function promptDefaultModel(params) {
284
284
  defaultProvider: DEFAULT_PROVIDER,
285
285
  store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false })
286
286
  }) : null;
287
- if (scoped && (scoped.allowedCatalog.length > 0 || scoped.usableCatalog.length > 0)) {
288
- models = scoped.allowedCatalog.length > 0 ? scoped.allowedCatalog : scoped.usableCatalog;
287
+ if (scoped) {
288
+ models = scoped.allowAny ? scoped.usableCatalog : scoped.allowedCatalog;
289
289
  } else {
290
290
  const { allowedCatalog } = buildAllowedModelSet({
291
291
  cfg,
@@ -1,10 +1,10 @@
1
1
  import { resolveDefaultAgentWorkspaceDir } from "../../agents/workspace.js";
2
2
  import { resolveAgentDir, resolveAgentWorkspaceDir, resolveDefaultAgentId } from "../../agents/agent-scope.js";
3
- import { ANTHROPIC_PROVIDER_MANIFEST } from "../../providers/registry.js";
4
3
  import { formatCliCommand } from "../../cli/command-format.js";
5
4
  import { upsertAuthProfile } from "../../agents/auth-profiles/profiles.js";
6
5
  import { parseDurationMs } from "../../cli/parse-duration.js";
7
6
  import "../../agents/auth-profiles.js";
7
+ import { ANTHROPIC_PROVIDER_MANIFEST } from "../../providers/registry.js";
8
8
  import { normalizeProviderId } from "../../agents/model-selection.js";
9
9
  import { stylePromptHint, stylePromptMessage } from "../../terminal/prompt-style.js";
10
10
  import { openUrl } from "../onboard-helpers.js";
@@ -1,6 +1,6 @@
1
1
  import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF, CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, buildCloudflareAiGatewayModelDefinition, resolveCloudflareAiGatewayBaseUrl } from "../providers/cloudflare-ai-gateway-shared.js";
2
- import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/vercel-ai-gateway-models.js";
3
2
  import "../agents/cloudflare-ai-gateway.js";
3
+ import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/vercel-ai-gateway-models.js";
4
4
  import { applyAgentDefaultModelPrimary, applyProviderConfigWithDefaultModels } from "./onboard-auth.config-shared.js";
5
5
  import "./onboard-auth.credentials.js";
6
6
 
@@ -1,17 +1,17 @@
1
1
  import { resolveStateDir } from "../config/paths.js";
2
- import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/cloudflare-ai-gateway-shared.js";
3
- import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../providers/huggingface-models.js";
4
- import { TOGETHER_DEFAULT_MODEL_REF } from "../providers/together-models.js";
5
- import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/vercel-ai-gateway-models.js";
6
- import "../providers/registry.js";
7
2
  import { DEFAULT_SECRET_PROVIDER_ALIAS, coerceSecretRef } from "../config/types.secrets.js";
8
3
  import { normalizeSecretInput } from "../utils/normalize-secret-input.js";
9
4
  import { resolveFasedAgentAgentDir } from "../agents/agent-paths.js";
10
5
  import { upsertAuthProfile } from "../agents/auth-profiles/profiles.js";
11
6
  import "../agents/auth-profiles.js";
7
+ import { CLOUDFLARE_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/cloudflare-ai-gateway-shared.js";
8
+ import { HUGGINGFACE_DEFAULT_MODEL_REF } from "../providers/huggingface-models.js";
9
+ import { TOGETHER_DEFAULT_MODEL_REF } from "../providers/together-models.js";
10
+ import { VERCEL_AI_GATEWAY_DEFAULT_MODEL_REF } from "../providers/vercel-ai-gateway-models.js";
11
+ import "../providers/registry.js";
12
12
  import { PROVIDER_ENV_VARS } from "../secrets/provider-env-vars.js";
13
13
  import { MISTRAL_DEFAULT_MODEL_REF, XAI_DEFAULT_MODEL_REF } from "./onboard-auth.models.js";
14
- import fs from "node:fs";
14
+ import syncFs from "node:fs";
15
15
  import path from "node:path";
16
16
 
17
17
  //#region src/commands/onboard-auth.credentials.ts
@@ -71,10 +71,32 @@ function buildApiKeyCredential(provider, input, metadata, options) {
71
71
  ...metadata ? { metadata } : {}
72
72
  };
73
73
  }
74
+ function assertValidOAuthCredentialInput(provider, creds) {
75
+ if (typeof provider !== "string" || !provider.trim()) {
76
+ throw new Error("OAuth credential provider must be a non-empty string.");
77
+ }
78
+ if (!creds || typeof creds !== "object" || typeof creds.access !== "string" || !creds.access.trim() || typeof creds.refresh !== "string" || !creds.refresh.trim() || typeof creds.expires !== "number" || !Number.isFinite(creds.expires)) {
79
+ throw new Error("OAuth credentials must include valid access, refresh, and expiry fields.");
80
+ }
81
+ for (const field of [
82
+ "email",
83
+ "clientId",
84
+ "enterpriseUrl",
85
+ "projectId",
86
+ "accountId"
87
+ ]) {
88
+ if (creds[field] !== undefined && typeof creds[field] !== "string") {
89
+ throw new Error(`OAuth credential ${field} must be a string when provided.`);
90
+ }
91
+ }
92
+ if (creds.availableModelIds !== undefined && (!Array.isArray(creds.availableModelIds) || !creds.availableModelIds.every((modelId) => typeof modelId === "string" && modelId.trim().length > 0))) {
93
+ throw new Error("OAuth credential availableModelIds must contain non-empty strings.");
94
+ }
95
+ }
74
96
  /** Resolve real path, returning null if the target doesn't exist. */
75
97
  function safeRealpathSync(dir) {
76
98
  try {
77
- return fs.realpathSync(path.resolve(dir));
99
+ return syncFs.realpathSync(path.resolve(dir));
78
100
  } catch {
79
101
  return null;
80
102
  }
@@ -87,7 +109,7 @@ function resolveSiblingAgentDirs(primaryAgentDir) {
87
109
  const agentsRoot = looksLikeStandardLayout ? candidateAgentsRoot : path.join(resolveStateDir(), "agents");
88
110
  const entries = (() => {
89
111
  try {
90
- return fs.readdirSync(agentsRoot, { withFileTypes: true });
112
+ return syncFs.readdirSync(agentsRoot, { withFileTypes: true });
91
113
  } catch {
92
114
  return [];
93
115
  }
@@ -105,14 +127,16 @@ function resolveSiblingAgentDirs(primaryAgentDir) {
105
127
  return result;
106
128
  }
107
129
  async function writeOAuthCredentials(provider, creds, agentDir, options) {
130
+ assertValidOAuthCredentialInput(provider, creds);
131
+ const canonicalProvider = provider.trim();
108
132
  const email = typeof creds.email === "string" && creds.email.trim() ? creds.email.trim() : "default";
109
- const profileId = `${provider}:${email}`;
133
+ const profileId = `${canonicalProvider}:${email}`;
110
134
  const resolvedAgentDir = path.resolve(resolveAuthAgentDir(agentDir));
111
135
  const targetAgentDirs = options?.syncSiblingAgents ? resolveSiblingAgentDirs(resolvedAgentDir) : [resolvedAgentDir];
112
136
  const credential = {
137
+ ...creds,
113
138
  type: "oauth",
114
- provider,
115
- ...creds
139
+ provider: canonicalProvider
116
140
  };
117
141
  upsertAuthProfile({
118
142
  profileId,
@@ -1,3 +1,4 @@
1
+ import { LEGACY_EMBEDDED_KEYSTORE_MIGRATION_MESSAGE, hasLegacyEmbeddedKeystoreMaterialHint } from "../../../wallet/legacy-embedded-keystore.js";
1
2
  import { WALLET_PROVIDER_IDS, readWalletProviderRegistry, setWalletProvidersEnabled } from "../../../wallet/wallet-provider-registry.js";
2
3
 
3
4
  //#region src/commands/onboard-non-interactive/local/wallet-config.ts
@@ -79,11 +80,10 @@ function parseWalletRuntime(raw) {
79
80
  }
80
81
  function parseWalletProviderId(raw) {
81
82
  switch ((raw ?? "").trim()) {
82
- case "embedded-keystore":
83
83
  case "local-socket-signer":
84
84
  case "alchemy":
85
85
  case "turnkey":
86
- case "privy": return raw;
86
+ case "wallet-standard": return raw;
87
87
  default: return null;
88
88
  }
89
89
  }
@@ -103,7 +103,10 @@ function hasConfiguredWalletMaterial(registry) {
103
103
  const LOCAL_SIGNER_ENV_KEYS = [
104
104
  "FASED_WALLET_LOCAL_SIGNER_SOCKET",
105
105
  "FASED_WALLET_LOCAL_SIGNER_BACKEND_SOCKET",
106
+ "FASED_WALLET_LOCAL_SIGNER_CONTROL_SOCKET",
106
107
  "FASED_WALLET_SIGNER_STATE_DIR",
108
+ "FASED_WALLET_LOCAL_SIGNER_STATE_DB",
109
+ "FASED_WALLET_LOCAL_SIGNER_MASTER_KEY",
107
110
  "FASED_WALLET_LOCAL_SIGNER_RUN_AS_USER",
108
111
  "FASED_WALLET_LOCAL_SIGNER_BIN",
109
112
  "FASED_WALLET_PASSPHRASE_FILE"
@@ -140,31 +143,14 @@ function setConfigEnvVar(config, key, value) {
140
143
  };
141
144
  }
142
145
  function applyHostedLocalSignerDefaults(base) {
143
- const signerUser = String(process.env.FASED_SIGNER_USER ?? "fased-signer").trim();
144
- if (!signerUser) {
145
- return base;
146
- }
147
- const appHome = String(process.env.HOME ?? "/home/app").trim() || "/home/app";
148
- const signerHome = `/home/${signerUser}`;
149
- const defaults = {
150
- FASED_WALLET_LOCAL_SIGNER_SOCKET: `${appHome}/.fased/wallet/local-signer.sock`,
151
- FASED_WALLET_LOCAL_SIGNER_BACKEND_SOCKET: `${signerHome}/.fased/wallet/local-signer.sock`,
152
- FASED_WALLET_SIGNER_STATE_DIR: `${signerHome}/.fased/wallet`,
153
- FASED_WALLET_LOCAL_SIGNER_RUN_AS_USER: signerUser,
154
- FASED_WALLET_LOCAL_SIGNER_BIN: `${signerHome}/.fased/bin/fased-signerd`,
155
- FASED_WALLET_PASSPHRASE_FILE: `${signerHome}/.fased/wallet/passphrase`
156
- };
146
+ const appSocket = "/run/fased-signerd/app.sock";
157
147
  let next = base;
158
- for (const [key, value] of Object.entries(defaults)) {
159
- const existing = String(process.env[key] ?? base.env?.vars?.[key] ?? "").trim();
160
- if (existing) {
161
- process.env[key] = existing;
162
- next = setConfigEnvVar(next, key, existing);
163
- continue;
164
- }
165
- process.env[key] = value;
166
- next = setConfigEnvVar(next, key, value);
148
+ for (const key of LOCAL_SIGNER_ENV_KEYS) {
149
+ delete process.env[key];
150
+ next = setConfigEnvVar(next, key, undefined);
167
151
  }
152
+ process.env.FASED_WALLET_LOCAL_SIGNER_SOCKET = appSocket;
153
+ next = setConfigEnvVar(next, "FASED_WALLET_LOCAL_SIGNER_SOCKET", appSocket);
168
154
  return next;
169
155
  }
170
156
  function applyNonInteractiveWalletConfig(params) {
@@ -172,6 +158,21 @@ function applyNonInteractiveWalletConfig(params) {
172
158
  const current = nextConfig.wallet?.runtime;
173
159
  const managedMode = isManagedGatewayMode(opts);
174
160
  const registry = readWalletProviderRegistry(process.env);
161
+ const requestedLegacyProvider = String(opts.walletDefaultProvider ?? "").trim() === "embedded-keystore" || typeof opts.walletProviders === "string" && opts.walletProviders.split(",").some((entry) => entry.trim() === "embedded-keystore");
162
+ if (requestedLegacyProvider || nextConfig.wallet?.provider?.id === "embedded-keystore" || registry.providers["embedded-keystore"]?.enabled || registry.wallets.some((wallet) => wallet.providerId === "embedded-keystore") || hasLegacyEmbeddedKeystoreMaterialHint({
163
+ ...process.env,
164
+ ...nextConfig.env?.vars
165
+ })) {
166
+ runtime.error(LEGACY_EMBEDDED_KEYSTORE_MIGRATION_MESSAGE);
167
+ runtime.exit(1);
168
+ return nextConfig;
169
+ }
170
+ const requestedPrivyProvider = String(opts.walletDefaultProvider ?? "").trim() === "privy" || typeof opts.walletProviders === "string" && opts.walletProviders.split(",").some((entry) => entry.trim() === "privy");
171
+ if (requestedPrivyProvider || nextConfig.wallet?.provider?.id === "privy" || registry.wallets.some((wallet) => wallet.providerId === "privy")) {
172
+ runtime.error("Privy wallet creation and signing are unavailable; use the Go signer, Turnkey, or Wallet Standard.");
173
+ runtime.exit(1);
174
+ return nextConfig;
175
+ }
175
176
  const configuredWalletMaterial = hasConfiguredWalletMaterial(registry);
176
177
  const enabled = opts.walletEnabled ?? (current?.enabled === false ? false : Boolean(current?.enabled && configuredWalletMaterial));
177
178
  if (!enabled) {
@@ -196,7 +197,7 @@ function applyNonInteractiveWalletConfig(params) {
196
197
  }
197
198
  const existingEnabledProviders = WALLET_PROVIDER_IDS.filter((providerId) => registry.providers[providerId]?.enabled);
198
199
  const defaultProviderFromConfig = parseWalletProviderId(nextConfig.wallet?.provider?.id);
199
- const defaultProvider = defaultProviderFromOption ?? (defaultProviderFromConfig === "embedded-keystore" ? "local-socket-signer" : defaultProviderFromConfig) ?? providersFromOption?.[0] ?? "local-socket-signer";
200
+ const defaultProvider = defaultProviderFromOption ?? defaultProviderFromConfig ?? providersFromOption?.[0] ?? "local-socket-signer";
200
201
  const enabledProviders = providersFromOption ? [...providersFromOption] : existingEnabledProviders.length > 0 ? [...existingEnabledProviders] : [defaultProvider];
201
202
  if (!enabledProviders.includes(defaultProvider)) {
202
203
  enabledProviders.unshift(defaultProvider);
@@ -234,7 +235,7 @@ function applyNonInteractiveWalletConfig(params) {
234
235
  const authMode = current?.auth?.mode === "jwt-bootstrap" || current?.auth?.mode === "static-token-compat" ? current.auth.mode : selfHostEnabled && runtimeSource === "external-docker" ? "jwt-bootstrap" : "static-token-compat";
235
236
  const authBootstrapUrl = current?.auth?.bootstrapUrl?.trim() || undefined;
236
237
  const sourceRef = current?.source?.ref?.trim() || undefined;
237
- const directSigning = opts.walletDirectSigning ?? current?.policy?.directSigning ?? managedMode;
238
+ const directSigning = opts.walletDirectSigning ?? current?.policy?.directSigning ?? false;
238
239
  const toolAccessMode = parseToolAccessMode(opts.walletToolAccessMode) ?? current?.toolAccess?.mode ?? "owner-only";
239
240
  if (!toolAccessMode) {
240
241
  runtime.error("Invalid --wallet-tool-access-mode (use owner-only|allowlist|all).");
@@ -73,7 +73,11 @@ async function runNonInteractiveOnboardingLocal(params) {
73
73
  return;
74
74
  }
75
75
  if (opts.hostProfile === "hosting" && !hostSecurityCapable && opts.hostMaintenanceSession !== true) {
76
- runtime.error(["Hosted non-interactive onboarding requires a root-started installer session.", `Re-run ${formatCliCommand("./install.sh")} from root and select a hosting profile there, or use the explicit hosted installer flags from root.`].join("\n"));
76
+ runtime.error([
77
+ "Hosted non-interactive onboarding requires a root-started installer session.",
78
+ "Start from the provider root console with the exact tagged, attested Hosting command and --release vX.Y.Z.",
79
+ "Never run the app-owned checkout with sudo or as root."
80
+ ].join("\n"));
77
81
  runtime.exit(1);
78
82
  return;
79
83
  }
@@ -7,7 +7,7 @@ import { loadFasedAgentPlugins } from "../../plugins/loader.js";
7
7
  import { createPluginLoaderLogger } from "../../plugins/logger.js";
8
8
  import { finalizeInstalledPluginConfig } from "../../plugins/lifecycle.js";
9
9
  import { resolveChannelPluginExpectedPluginIds } from "../../channels/plugins/catalog.js";
10
- import fs from "node:fs";
10
+ import syncFs from "node:fs";
11
11
  import path from "node:path";
12
12
 
13
13
  //#region src/commands/onboarding/plugin-install.ts
@@ -29,7 +29,7 @@ function resolveLocalPath(entry, workspaceDir) {
29
29
  candidates.add(path.resolve(packageRoot, raw));
30
30
  }
31
31
  for (const candidate of candidates) {
32
- if (fs.existsSync(candidate)) {
32
+ if (syncFs.existsSync(candidate)) {
33
33
  return candidate;
34
34
  }
35
35
  }
@@ -7,7 +7,7 @@ import { capEntryCount, loadSessionStore, pruneStaleEntries, resolveMaintenanceC
7
7
  import "../config/sessions.js";
8
8
  import { resolveSessionStoreTargets } from "./session-store-targets.js";
9
9
  import { SESSION_AGE_PAD, SESSION_KEY_PAD, SESSION_MODEL_PAD, formatSessionAgeCell, formatSessionFlagsCell, formatSessionKeyCell, formatSessionModelCell, resolveSessionDisplayDefaults, resolveSessionDisplayModel, toSessionDisplayRows } from "./sessions-table.js";
10
- import fs from "node:fs";
10
+ import syncFs from "node:fs";
11
11
 
12
12
  //#region src/commands/sessions-cleanup.ts
13
13
  const ACTION_PAD = 12;
@@ -65,7 +65,7 @@ function pruneMissingTranscriptEntries(params) {
65
65
  continue;
66
66
  }
67
67
  const transcriptPath = resolveSessionFilePath(entry.sessionId, entry, sessionPathOpts);
68
- if (!fs.existsSync(transcriptPath)) {
68
+ if (!syncFs.existsSync(transcriptPath)) {
69
69
  delete params.store[key];
70
70
  removed += 1;
71
71
  params.onPruned?.(key);
@@ -5,7 +5,7 @@ import { resolveBrewExecutable } from "../infra/brew.js";
5
5
  import { createWriteStream } from "node:fs";
6
6
  import os from "node:os";
7
7
  import path from "node:path";
8
- import fs$1 from "node:fs/promises";
8
+ import fs from "node:fs/promises";
9
9
  import { pipeline } from "node:stream/promises";
10
10
  import { request } from "node:https";
11
11
 
@@ -79,7 +79,7 @@ async function findSignalCliBinary(root) {
79
79
  if (depth > 3) {
80
80
  return;
81
81
  }
82
- const entries = await fs$1.readdir(dir, { withFileTypes: true }).catch(() => []);
82
+ const entries = await fs.readdir(dir, { withFileTypes: true }).catch(() => []);
83
83
  for (const entry of entries) {
84
84
  const full = path.join(dir, entry.name);
85
85
  if (entry.isDirectory()) {
@@ -103,7 +103,7 @@ async function resolveBrewSignalCliPath(brewExe) {
103
103
  const prefix = result.stdout.trim();
104
104
  const candidate = path.join(prefix, "bin", "signal-cli");
105
105
  try {
106
- await fs$1.access(candidate);
106
+ await fs.access(candidate);
107
107
  return candidate;
108
108
  } catch {
109
109
  return findSignalCliBinary(prefix);
@@ -172,12 +172,12 @@ async function installSignalCliFromRelease(runtime) {
172
172
  error: "No compatible release asset found for this platform."
173
173
  };
174
174
  }
175
- const tmpDir = await fs$1.mkdtemp(path.join(os.tmpdir(), "fased-signal-"));
175
+ const tmpDir = await fs.mkdtemp(path.join(os.tmpdir(), "fased-signal-"));
176
176
  const archivePath = path.join(tmpDir, asset.name);
177
177
  runtime.log(`Downloading signal-cli ${version} (${asset.name})…`);
178
178
  await downloadToFile(asset.browser_download_url, archivePath);
179
179
  const installRoot = path.join(CONFIG_DIR, "tools", "signal-cli", version);
180
- await fs$1.mkdir(installRoot, { recursive: true });
180
+ await fs.mkdir(installRoot, { recursive: true });
181
181
  if (!looksLikeArchive(asset.name.toLowerCase())) {
182
182
  return {
183
183
  ok: false,
@@ -200,7 +200,7 @@ async function installSignalCliFromRelease(runtime) {
200
200
  error: `signal-cli binary not found after extracting ${asset.name}`
201
201
  };
202
202
  }
203
- await fs$1.chmod(cliPath, 493).catch(() => {});
203
+ await fs.chmod(cliPath, 493).catch(() => {});
204
204
  return {
205
205
  ok: true,
206
206
  cliPath,
@@ -4,7 +4,7 @@ import { formatTimeAgo } from "../../infra/format-time/format-relative.js";
4
4
  import { resolveChannelDefaultAccountId } from "../../channels/plugins/helpers.js";
5
5
  import { buildChannelAccountSnapshot, formatChannelAllowFrom } from "../../channels/account-summary.js";
6
6
  import "./format.js";
7
- import fs from "node:fs";
7
+ import syncFs from "node:fs";
8
8
 
9
9
  //#region src/commands/status-all/channels.ts
10
10
  const asRecord = (value) => value && typeof value === "object" ? value : {};
@@ -27,7 +27,7 @@ function existsSyncMaybe(p) {
27
27
  return null;
28
28
  }
29
29
  try {
30
- return fs.existsSync(path);
30
+ return syncFs.existsSync(path);
31
31
  } catch {
32
32
  return null;
33
33
  }