@fased/fased 0.1.66 → 0.1.68

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 (175) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +4 -0
  3. package/config/signer-protocol-v2.json +4 -0
  4. package/dist/brand.js +1 -1
  5. package/dist/build-info.json +3 -3
  6. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  7. package/dist/cli/program/register.wallet.js +33 -2
  8. package/dist/commands/onboard.js +0 -8
  9. package/dist/commands/wallet.js +485 -58
  10. package/dist/control-ui/assets/{app-DYxADzeH.js → app-DyPTS0oM.js} +1526 -1526
  11. package/dist/control-ui/assets/{index-vw_10Zeo.js → index-Cu13yYHr.js} +3 -3
  12. package/dist/control-ui/assets/{wallet-DvStR_AT.js → wallet-ByKBcYhm.js} +272 -188
  13. package/dist/control-ui/index.html +1 -1
  14. package/dist/control-ui/version.json +1 -1
  15. package/dist/gateway/server-http.js +349 -47
  16. package/dist/infra/runtime-guard.js +16 -0
  17. package/dist/plugin-sdk/{actions-DRu135h0.js → actions-B-Vwj64K.js} +3 -3
  18. package/dist/plugin-sdk/{allow-list-DyAxs4yw.js → allow-list-Bf45HfoP.js} +1 -1
  19. package/dist/plugin-sdk/{audio-preflight-BFLoas5R.js → audio-preflight-_FVQjR1r.js} +26 -25
  20. package/dist/plugin-sdk/{audit-C5d2z5U1.js → audit-CUULWG22.js} +1 -1
  21. package/dist/plugin-sdk/{channel-access-configure-DaI5wevh.js → channel-access-configure-BoUsC-Ys.js} +1 -1
  22. package/dist/plugin-sdk/{channel-adapters.discord-BS4S4Svh.js → channel-adapters.discord-DSiR4X2Y.js} +1 -1
  23. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  24. package/dist/plugin-sdk/channel-plugin-common.js +1 -1
  25. package/dist/plugin-sdk/{chunk-CyoyqpbG.js → chunk-CBpl-AiQ.js} +1 -1
  26. package/dist/plugin-sdk/{chunk-items-TErs62MC.js → chunk-items-LH4uKSnh.js} +1 -1
  27. package/dist/plugin-sdk/command-status.js +26 -25
  28. package/dist/plugin-sdk/{commands-registry-BfqdEWdF.js → commands-registry-G5KXSi_y.js} +1 -1
  29. package/dist/plugin-sdk/{config-schema-BPnaDBwZ.js → config-schema-DjU_uD-6.js} +192 -94
  30. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  31. package/dist/plugin-sdk/{diagnostic-DLL_zekv.js → diagnostic-sYs6Agr-.js} +1 -1
  32. package/dist/plugin-sdk/{directory-live-CSuYxdwk.js → directory-live-BXMpuYAF.js} +1 -1
  33. package/dist/plugin-sdk/{directory-live-Dw7ZgC9_.js → directory-live-Rn1BzPof.js} +1 -1
  34. package/dist/plugin-sdk/discord.d.ts +4 -4
  35. package/dist/plugin-sdk/discord.js +20 -20
  36. package/dist/plugin-sdk/{draft-stream-controls-BqchW1vi.js → draft-stream-controls-CMNdKSx-.js} +1 -1
  37. package/dist/plugin-sdk/{guilds-CDhRIX57.js → guilds-Dkwl0yHv.js} +1 -1
  38. package/dist/plugin-sdk/{handle-action-hvwapMKg.js → handle-action-CRdM6B-8.js} +15 -15
  39. package/dist/plugin-sdk/index.d.ts +16 -16
  40. package/dist/plugin-sdk/index.js +28 -27
  41. package/dist/plugin-sdk/{login-Ca583Okc.js → login-D7WnK8-P.js} +1 -1
  42. package/dist/plugin-sdk/{login-qr-CGciBSNP.js → login-qr-CRueOKZK.js} +2 -114
  43. package/dist/plugin-sdk/{markdown-tables-DCOXEUfZ.js → markdown-tables-d7GlUs5R.js} +1 -1
  44. package/dist/plugin-sdk/{media-CAdQF5TG.js → media-BAoaxCrt.js} +1 -1
  45. package/dist/plugin-sdk/{monitor-FuBPk-AL.js → monitor-DUMMbG4h.js} +34 -33
  46. package/dist/plugin-sdk/{monitor-sW6dQdX1.js → monitor-DXIM16Hj.js} +44 -43
  47. package/dist/plugin-sdk/{openresponses-http-CVZq0H-P.js → openresponses-http-C8lKwta1.js} +26 -25
  48. package/dist/plugin-sdk/{outbound-attachment-QqTnIhZL.js → outbound-attachment-CyXM3cAv.js} +1 -1
  49. package/dist/plugin-sdk/{outbound-BgVDdHxx.js → outbound-zB6llMGW.js} +6 -6
  50. package/dist/plugin-sdk/{pairing-message-L6L6L2YF.d.ts → pairing-message-mKO92L-M.d.ts} +1 -1
  51. package/dist/plugin-sdk/{pairing-store-BChahgI2.js → pairing-store-B6J2C0vP.js} +1 -1
  52. package/dist/plugin-sdk/{pi-model-discovery-runtime-DxTMz_XF.js → pi-model-discovery-runtime-6JzLw9Gk.js} +1 -1
  53. package/dist/plugin-sdk/{probe-CJb5uR8B.js → probe-BM7Oe40M.js} +2 -2
  54. package/dist/plugin-sdk/{probe-l_whvGLY.js → probe-CMPksimh.js} +1 -1
  55. package/dist/plugin-sdk/{probe-BFroeK3g.js → probe-oVp12D6L.js} +1 -1
  56. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  57. package/dist/plugin-sdk/{pw-ai-natjh3rm.js → pw-ai-DJ_gTc4M.js} +1 -1
  58. package/dist/plugin-sdk/qr-image-B4MlMG4N.js +115 -0
  59. package/dist/plugin-sdk/{replies-ChYo5ZQM.js → replies-CY-V0Zob.js} +3 -3
  60. package/dist/plugin-sdk/{resolve-channels-87LZrFk_.js → resolve-channels-1HtDcMqh.js} +2 -2
  61. package/dist/plugin-sdk/{resolve-channels-_-nV-EK2.js → resolve-channels-CU72Qh2j.js} +1 -1
  62. package/dist/plugin-sdk/{resolve-outbound-target-D-KGgHJZ.js → resolve-outbound-target-nQSBVYz9.js} +2 -2
  63. package/dist/plugin-sdk/{resolve-route-C8tvQm8Z.js → resolve-route-Dufnu2cT.js} +1 -1
  64. package/dist/plugin-sdk/{resolve-users-DN9VQBwv.js → resolve-users-Bk_ss2vC.js} +1 -1
  65. package/dist/plugin-sdk/{resolve-users-V6dHh_2B.js → resolve-users-IevCOk4W.js} +2 -2
  66. package/dist/plugin-sdk/{runtime-2B9_WKoI.js → runtime-CXSQwMaR.js} +1 -1
  67. package/dist/plugin-sdk/{runtime-dependency-DczkvPxn.js → runtime-dependency-nup8niQL.js} +9 -9
  68. package/dist/plugin-sdk/sat-runtime.d.ts +18 -2
  69. package/dist/plugin-sdk/sat-runtime.js +26 -25
  70. package/dist/plugin-sdk/{send-DCO441U7.js → send-BXBS_mRK.js} +8 -8
  71. package/dist/plugin-sdk/{send-CFzGKJXo.js → send-D-HfKQZm.js} +4 -4
  72. package/dist/plugin-sdk/{send-B6KkGKZD.js → send-D1j12ZgX.js} +5 -5
  73. package/dist/plugin-sdk/{send-q9HXrSwK.js → send-DWKm6yay.js} +10 -10
  74. package/dist/plugin-sdk/{send-gDoGA-7e.js → send-Di1Jit3L.js} +7 -7
  75. package/dist/plugin-sdk/{skill-commands-FKEPLS7T.js → skill-commands-iJtvpqgb.js} +2 -2
  76. package/dist/plugin-sdk/{slack-BZISDxDd.js → slack-B-nOOLM0.js} +45 -44
  77. package/dist/plugin-sdk/{slack-actions-DhbMcp8M.js → slack-actions-BzUEszJa.js} +10 -10
  78. package/dist/plugin-sdk/slack.d.ts +4 -4
  79. package/dist/plugin-sdk/slack.js +6 -6
  80. package/dist/plugin-sdk/{sticker-cache-B0aPv6Lg.js → sticker-cache-BLiId8Em.js} +2 -2
  81. package/dist/plugin-sdk/{tables-B3jr0Pvq.js → tables-_1W36GII.js} +2 -2
  82. package/dist/plugin-sdk/{targets-CtSbTxYX.js → targets-DDbNnLnB.js} +2 -2
  83. package/dist/plugin-sdk/{telegram-actions-H3gePEn6.js → telegram-actions-1X9A32Dn.js} +30 -29
  84. package/dist/plugin-sdk/telegram.d.ts +4 -4
  85. package/dist/plugin-sdk/telegram.js +3 -3
  86. package/dist/plugin-sdk/{thread-bindings.lifecycle-QbkNl-m6.js → thread-bindings.lifecycle-Y9T3CQGf.js} +3 -3
  87. package/dist/plugin-sdk/{thread-bindings.state-D9hg_M1c.js → thread-bindings.state-D2oOWDpv.js} +1 -1
  88. package/dist/plugin-sdk/{tmp-fased-dir-d1CmFAnJ.d.ts → tmp-fased-dir-BkpWlGUe.d.ts} +7 -1
  89. package/dist/plugin-sdk/{types-DUjYaWB2.d.ts → types-B-zL9gSv.d.ts} +1 -1
  90. package/dist/plugin-sdk/{types-xWjHXl1z.d.ts → types-DtCOO_hW.d.ts} +1 -1
  91. package/dist/plugin-sdk/{web-JwP9PAZR.js → web-BvjNyYBz.js} +33 -32
  92. package/dist/plugin-sdk/{whatsapp-actions-Bj_rOncr.js → whatsapp-actions-Blu9-eX-.js} +9 -9
  93. package/dist/plugin-sdk/{whatsapp-heartbeat-B1WHkJIg.js → whatsapp-heartbeat-DjmQM7hq.js} +2 -2
  94. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  95. package/dist/plugin-sdk/whatsapp.js +7 -7
  96. package/dist/plugin-sdk/{wsl-J-HscWxS.js → wsl-CTvIWvZz.js} +1 -1
  97. package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-BCDlgtls.d.ts} +63 -63
  98. package/dist/wallet/local-socket-signer-lifecycle.js +29 -1
  99. package/dist/wallet/local-socket-signer-protocol.js +27 -0
  100. package/dist/wallet/providers/local-socket-signer-adapter.js +8 -0
  101. package/dist/wallet/signer-network-admin.js +11 -118
  102. package/dist/wallet/signer-protocol-v2.generated.js +4 -0
  103. package/dist/wallet/solana-assets.js +9 -3
  104. package/dist/wallet/solana-rpc-read-fetch.js +65 -0
  105. package/dist/wallet/wallet-status.js +7 -0
  106. package/dist/web/login-qr.js +1 -1
  107. package/dist/wizard/onboarding.js +61 -61
  108. package/extensions/acpx/package.json +1 -1
  109. package/extensions/bluebubbles/package.json +1 -1
  110. package/extensions/copilot-proxy/package.json +1 -1
  111. package/extensions/diagnostics-otel/package.json +1 -1
  112. package/extensions/fased-federation/package.json +1 -1
  113. package/extensions/google-gemini-cli-auth/package.json +1 -1
  114. package/extensions/imessage/package.json +1 -1
  115. package/extensions/irc/package.json +1 -1
  116. package/extensions/line/package.json +1 -1
  117. package/extensions/llm-task/package.json +1 -1
  118. package/extensions/lobster/package.json +1 -1
  119. package/extensions/matrix/CHANGELOG.md +12 -0
  120. package/extensions/matrix/package.json +1 -1
  121. package/extensions/mattermost/package.json +1 -1
  122. package/extensions/memory-core/package.json +2 -2
  123. package/extensions/memory-lancedb/package.json +1 -1
  124. package/extensions/minimax-portal-auth/package.json +1 -1
  125. package/extensions/msteams/CHANGELOG.md +12 -0
  126. package/extensions/msteams/package.json +1 -1
  127. package/extensions/nextcloud-talk/package.json +1 -1
  128. package/extensions/nostr/CHANGELOG.md +12 -0
  129. package/extensions/nostr/package.json +1 -1
  130. package/extensions/open-prose/package.json +1 -1
  131. package/extensions/sat-mining/package.json +1 -1
  132. package/extensions/signal/package.json +1 -1
  133. package/extensions/synology-chat/package.json +1 -1
  134. package/extensions/tlon/package.json +1 -1
  135. package/extensions/twitch/CHANGELOG.md +12 -0
  136. package/extensions/twitch/package.json +1 -1
  137. package/extensions/voice-call/CHANGELOG.md +12 -0
  138. package/extensions/voice-call/package.json +1 -1
  139. package/extensions/zalo/CHANGELOG.md +12 -0
  140. package/extensions/zalo/package.json +1 -1
  141. package/extensions/zalouser/CHANGELOG.md +12 -0
  142. package/extensions/zalouser/package.json +1 -1
  143. package/fased.mjs +14 -1
  144. package/install.sh +16 -10
  145. package/package.json +6 -1
  146. package/scripts/fased-managed-updater.mjs +10 -2
  147. package/scripts/fased-signer-wallet-import-hosting.sh +78 -0
  148. package/scripts/install-managed-runtime.mjs +10 -7
  149. /package/dist/plugin-sdk/{active-listener-B_NMtgPL.js → active-listener-p9Ooc1qj.js} +0 -0
  150. /package/dist/plugin-sdk/{blocks-input-Bg-8S2pl.js → blocks-input-DiZaqaN7.js} +0 -0
  151. /package/dist/plugin-sdk/{channel-access-CcFRdRPO.js → channel-access-B0aZBSd2.js} +0 -0
  152. /package/dist/plugin-sdk/{channel-activity-DBDMQ3yI.js → channel-activity-F07DjroV.js} +0 -0
  153. /package/dist/plugin-sdk/{channel-core-CFRs8LPy.js → channel-core-DoF4X04L.js} +0 -0
  154. /package/dist/plugin-sdk/{client-pI228AVT.js → client-DLY-kWF_.js} +0 -0
  155. /package/dist/plugin-sdk/{command-poll-backoff-yJU83wEq.js → command-poll-backoff-NAePk3eL.js} +0 -0
  156. /package/dist/plugin-sdk/{date-time-uUevHscU.js → date-time-ChY_tHoG.js} +0 -0
  157. /package/dist/plugin-sdk/{draft-stream-loop-CrOPfV3F.js → draft-stream-loop-DMBwjjd1.js} +0 -0
  158. /package/dist/plugin-sdk/{fetch-BtmoPIlf.js → fetch-B0v6OTUZ.js} +0 -0
  159. /package/dist/plugin-sdk/{filesystem-manager-DoI8IBNF.js → filesystem-manager-BzuIJ9K9.js} +0 -0
  160. /package/dist/plugin-sdk/{gateway-registry-DZDsqicG.js → gateway-registry-Bgl2GFgy.js} +0 -0
  161. /package/dist/plugin-sdk/{inbound-context-DrAcXE0y.js → inbound-context-CQnfFFQ9.js} +0 -0
  162. /package/dist/plugin-sdk/{pi-model-discovery-BX_JLcEJ.js → pi-model-discovery-BHNVyRny.js} +0 -0
  163. /package/dist/plugin-sdk/{polls-DKQXVfJp.js → polls-DXd67TD8.js} +0 -0
  164. /package/dist/plugin-sdk/{proxy-DWpYcsvR.js → proxy-CLRUdShp.js} +0 -0
  165. /package/dist/plugin-sdk/{qmd-manager-CgRaTxUq.js → qmd-manager-B8Vnu0ND.js} +0 -0
  166. /package/dist/plugin-sdk/{render-e7fENCYH.js → render-DrBfVs0u.js} +0 -0
  167. /package/dist/plugin-sdk/{reply-reference-Bqk-7HXE.js → reply-reference-BnAk5Wjb.js} +0 -0
  168. /package/dist/plugin-sdk/{retry-policy-C6SjKjQA.js → retry-policy-CXh1owkc.js} +0 -0
  169. /package/dist/plugin-sdk/{sandbox-paths-Dx2lUqCu.js → sandbox-paths-Bzh1CuZc.js} +0 -0
  170. /package/dist/plugin-sdk/{session-DHD4ZKyG.js → session-iuGR_rdi.js} +0 -0
  171. /package/dist/plugin-sdk/{shared-CBgp_GBw.js → shared-D1AD2Ejn.js} +0 -0
  172. /package/dist/plugin-sdk/{target-errors-Ckufe179.js → target-errors-DfS1sLR9.js} +0 -0
  173. /package/dist/plugin-sdk/{tool-loop-detection-Bp8bPJLs.js → tool-loop-detection-sDZl27w7.js} +0 -0
  174. /package/dist/plugin-sdk/{ui-Be8cLHIS.js → ui-GQDYm_jw.js} +0 -0
  175. /package/dist/plugin-sdk/{with-timeout-ckWB8rTo.js → with-timeout-CVV8tytk.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,24 @@ This changelog starts with the public Fased Agent release line. Required
4
4
  third-party and copied-code notices are kept in [LICENSE](./LICENSE) and
5
5
  [THIRD_PARTY_NOTICES.md](./THIRD_PARTY_NOTICES.md).
6
6
 
7
+ ## 0.1.68
8
+
9
+ - Unify signer-owned Agent, Mining, and Vault creation around one explicit role
10
+ and one primary Solana RPC across terminal onboarding, CLI, Control UI, Local,
11
+ and Hosting, with automatic signer network activation and role-safe readiness.
12
+ - Add encrypted native recovery, advanced owner-only raw export, guarded Mining
13
+ archive/replacement, receive QR, RPC editing, and hardened verified Hosting
14
+ installation without exposing signer custody controls to Gateway.
15
+ - Bridge managed Local updates from v0.1.67 with a legacy schema-v1 app layer,
16
+ while Hosting and current clients select the commit-bound schema-v2 app and
17
+ signer through the unified attested release manifest.
18
+
19
+ ## 0.1.67
20
+
21
+ - Reject native Windows npm installs at package selection and fail closed at
22
+ the launcher and central runtime guard; Windows Local remains supported
23
+ through Ubuntu on WSL2.
24
+
7
25
  ## 0.1.66
8
26
 
9
27
  - Keep normal wallet onboarding to wallet role plus one primary Solana RPC,
package/README.md CHANGED
@@ -65,6 +65,10 @@ Ubuntu shell. Do not run the Fased installer in PowerShell, Command Prompt, Git
65
65
  Bash, or native Windows Node.js. Fased wallet signing requires Unix sockets and
66
66
  therefore runs through WSL2 on Windows.
67
67
 
68
+ The published npm package also rejects native Windows. If npm reports
69
+ `EBADPLATFORM`, open Ubuntu in WSL2 and install or run Fased there; do not force
70
+ the package installation with npm platform overrides.
71
+
68
72
  ```bash
69
73
  curl -fsSL https://raw.githubusercontent.com/fased-ai/fased/main/install.sh | bash -s -- --local
70
74
  ```
@@ -27,6 +27,9 @@
27
27
  "signerOwnedSuccessorRotation",
28
28
  "permanentRetiredWalletPolicies",
29
29
  "signerOwnedRPC",
30
+ "applicationNetworkBootstrap",
31
+ "signerOwnedEncryptedRecovery",
32
+ "signerOwnedRawExport",
30
33
  "typedSolanaTransactions",
31
34
  "typedA2aPaymentMemos",
32
35
  "typedA2aRefundMemos",
@@ -63,6 +66,7 @@
63
66
  "ambiguousBroadcastReconciliation",
64
67
  "signerOwnedKeys",
65
68
  "signerOwnedRPC",
69
+ "applicationNetworkBootstrap",
66
70
  "typedSolanaTransactions",
67
71
  "typedA2aPaymentMemos",
68
72
  "typedA2aRefundMemos",
package/dist/brand.js CHANGED
@@ -2,7 +2,7 @@
2
2
  const FASED_BRAND_NAME = "Fased";
3
3
  const FASED_AGENT_NAME = "Fased Agent";
4
4
  const FASED_CONTROL_NAME = "Fased Control";
5
- const FASED_PRODUCT_VERSION = "0.1.66";
5
+ const FASED_PRODUCT_VERSION = "0.1.68";
6
6
  const FASED_DISPLAY_VERSION = `v${FASED_PRODUCT_VERSION}`;
7
7
  function formatFasedDisplayLine() {
8
8
  return `${FASED_AGENT_NAME} ${FASED_DISPLAY_VERSION}`;
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.66",
3
- "commit": "4a1606b787409476e2f47ef3638ad69214142253",
4
- "builtAt": "2026-07-19T11:51:33.655Z"
2
+ "version": "0.1.68",
3
+ "commit": "ad0d395fdae5c0fbbbda8ad932b32276558b2cf2",
4
+ "builtAt": "2026-07-20T01:36:18.679Z"
5
5
  }
@@ -1 +1 @@
1
- ea284d3fdfd1710a7c7bfcae7f6d61cf7ebb9ecfd90bdd9bd001ebae170a4f5d
1
+ eb11c388af36ee3609b0db82a4da72350ca90ba7a06fec9f82f02a1db6307bfd
@@ -1,6 +1,6 @@
1
1
  import { defaultRuntime } from "../../runtime.js";
2
2
  import { runCommandWithRuntime } from "../cli-utils.js";
3
- import { walletCanaryCommand, walletInboundListCommand, walletInboundPollCommand, walletInboundReconcileCommand, walletLegacyMigrationFinalizeCommand, walletLimitOrdersConfigureCommand, walletMigrateCommand, walletPolicyProfileApplyCommand, walletProviderConfigureCommand, walletRoleSetCommand, walletRotateKeysCommand, walletSetupCommand, walletSignerDoctorCommand, walletSignerServeCommand, walletStatusCommand } from "../../commands/wallet.js";
3
+ import { walletCanaryCommand, walletInboundListCommand, walletInboundPollCommand, walletInboundReconcileCommand, walletLegacyMigrationFinalizeCommand, walletLimitOrdersConfigureCommand, walletMigrateCommand, walletPolicyProfileApplyCommand, walletProviderConfigureCommand, walletRawExportCommand, walletRecoveryExportCommand, walletRecoveryImportCommand, walletRoleSetCommand, walletRotateKeysCommand, walletSetupCommand, walletSignerDoctorCommand, walletSignerServeCommand, walletStatusCommand } from "../../commands/wallet.js";
4
4
 
5
5
  //#region src/cli/program/register.wallet.ts
6
6
  function resolvePublicWalletSetupChain(raw) {
@@ -17,7 +17,36 @@ function registerWalletCommands(program) {
17
17
  const wallet = program.command("wallet").description("Wallet providers, native signer, and policy status").action(() => {
18
18
  wallet.help({ error: true });
19
19
  });
20
- wallet.command("setup").description("Create a signer-owned Solana wallet or configure a supported provider").option("--mode <mode>", "local-signer-create|local-signer-import|local-signer|turnkey|alchemy").option("--chain <chain>", "solana", "solana").option("--wallet-id <id>", "Named wallet id (examples: agent, mining, vault)").option("--wallet-name <value>", "Friendly wallet display name (for UI/skills/plugins)").option("--role <role>", "Permanent signer role: agent|mining|vault").option("--api-key <value>", "Alchemy API key").option("--rpc-url <url>", "Solana RPC URL").option("--turnkey-api-public-key <value>", "Turnkey API public key (turnkey mode)").option("--turnkey-api-private-key <value>", "Turnkey API private key (turnkey mode)").option("--turnkey-organization-id <value>", "Turnkey organization ID (turnkey mode)").option("--turnkey-policy-id <value>", "Turnkey policy ID (turnkey mode)").option("--turnkey-base-url <value>", "Turnkey base URL override (turnkey mode)").option("--enable-limit-orders", "Legacy alias: configure Gateway Jupiter Swap API access (Trigger is signer-owned)", false).option("--disable-limit-orders", "Remove stored Gateway Jupiter Swap API key", false).option("--jupiter-api-key <value>", "Jupiter API key for Gateway swap crafting only").option("--non-interactive", "Do not prompt; require mode/inputs", false).option("--no-doctor", "Skip signer doctor in local-signer mode", false).option("--json", "Print JSON output", false).action(async (opts) => {
20
+ const recovery = wallet.command("recovery").description("Signer-owned encrypted recovery");
21
+ recovery.command("export").description("Create an Argon2id + authenticated-encryption recovery package").requiredOption("--wallet-id <id>", "Registered signer-owned wallet id").requiredOption("--output <absolute-path>", "New owner-only recovery package path").action(async (opts) => {
22
+ await runCommandWithRuntime(defaultRuntime, async () => {
23
+ await walletRecoveryExportCommand(defaultRuntime, {
24
+ walletId: String(opts.walletId),
25
+ output: String(opts.output)
26
+ });
27
+ });
28
+ });
29
+ recovery.command("import").description("Restore an encrypted signer recovery package into a new Local wallet").requiredOption("--wallet-id <id>", "New registered signer-owned wallet id").requiredOption("--wallet-name <name>", "Wallet display name").requiredOption("--role <role>", "Permanent signer role: agent|mining|vault").requiredOption("--file <absolute-path>", "Owner-only encrypted recovery package").requiredOption("--rpc-url <url>", "One primary Solana RPC URL").action(async (opts) => {
30
+ await runCommandWithRuntime(defaultRuntime, async () => {
31
+ await walletRecoveryImportCommand(defaultRuntime, {
32
+ walletId: String(opts.walletId),
33
+ walletName: String(opts.walletName),
34
+ role: String(opts.role),
35
+ recoveryFile: String(opts.file),
36
+ rpcUrl: String(opts.rpcUrl)
37
+ });
38
+ });
39
+ });
40
+ recovery.command("export-raw").description("Advanced: export a raw Solana keypair and reduce signer custody protection").requiredOption("--wallet-id <id>", "Registered signer-owned wallet id").requiredOption("--output <absolute-path>", "New owner-only raw keypair path").requiredOption("--acknowledge-custody-reduction", "Confirm that raw export makes the wallet key portable").action(async (opts) => {
41
+ await runCommandWithRuntime(defaultRuntime, async () => {
42
+ await walletRawExportCommand(defaultRuntime, {
43
+ walletId: String(opts.walletId),
44
+ output: String(opts.output),
45
+ acknowledgeCustodyReduction: Boolean(opts.acknowledgeCustodyReduction)
46
+ });
47
+ });
48
+ });
49
+ wallet.command("setup").description("Create a signer-owned Solana wallet or configure a supported provider").option("--mode <mode>", "local-signer-create|local-signer-import|local-signer-recovery-import|local-signer|turnkey|alchemy").option("--chain <chain>", "solana", "solana").option("--wallet-id <id>", "Named wallet id (examples: agent, mining, vault)").option("--wallet-name <value>", "Friendly wallet display name (for UI/skills/plugins)").option("--role <role>", "Permanent signer role: agent|mining|vault").option("--import-file <absolute-path>", "Owner-only Solana keypair JSON for local-signer-import; secret is passed by file descriptor, never argv/env").option("--recovery-file <absolute-path>", "Owner-only encrypted package for local-signer-recovery-import").option("--api-key <value>", "Alchemy API key").option("--rpc-url <url>", "Solana RPC URL").option("--turnkey-api-public-key <value>", "Turnkey API public key (turnkey mode)").option("--turnkey-api-private-key <value>", "Turnkey API private key (turnkey mode)").option("--turnkey-organization-id <value>", "Turnkey organization ID (turnkey mode)").option("--turnkey-policy-id <value>", "Turnkey policy ID (turnkey mode)").option("--turnkey-base-url <value>", "Turnkey base URL override (turnkey mode)").option("--enable-limit-orders", "Legacy alias: configure Gateway Jupiter Swap API access (Trigger is signer-owned)", false).option("--disable-limit-orders", "Remove stored Gateway Jupiter Swap API key", false).option("--jupiter-api-key <value>", "Jupiter API key for Gateway swap crafting only").option("--non-interactive", "Do not prompt; require mode/inputs", false).option("--no-doctor", "Skip signer doctor in local-signer mode", false).option("--json", "Print JSON output", false).action(async (opts) => {
21
50
  await runCommandWithRuntime(defaultRuntime, async () => {
22
51
  await walletSetupCommand(defaultRuntime, {
23
52
  mode: typeof opts.mode === "string" ? opts.mode : undefined,
@@ -27,6 +56,8 @@ function registerWalletCommands(program) {
27
56
  role: typeof opts.role === "string" ? opts.role : undefined,
28
57
  apiKey: typeof opts.apiKey === "string" ? opts.apiKey : undefined,
29
58
  rpcUrl: typeof opts.rpcUrl === "string" ? opts.rpcUrl : undefined,
59
+ importFile: typeof opts.importFile === "string" ? opts.importFile : undefined,
60
+ recoveryFile: typeof opts.recoveryFile === "string" ? opts.recoveryFile : undefined,
30
61
  turnkeyApiPublicKey: typeof opts.turnkeyApiPublicKey === "string" ? opts.turnkeyApiPublicKey : undefined,
31
62
  turnkeyApiPrivateKey: typeof opts.turnkeyApiPrivateKey === "string" ? opts.turnkeyApiPrivateKey : undefined,
32
63
  turnkeyOrganizationId: typeof opts.turnkeyOrganizationId === "string" ? opts.turnkeyOrganizationId : undefined,
@@ -56,14 +56,6 @@ async function onboardCommand(opts, runtime = defaultRuntime) {
56
56
  const repairScope = normalizedOpts.resetScope ?? "auth+sessions";
57
57
  await handleOnboardingRepair(repairScope, runtime);
58
58
  }
59
- if (process.platform === "win32") {
60
- runtime.log([
61
- "Windows detected — FasedAgent runs great on WSL2!",
62
- "Native Windows might be trickier.",
63
- "Quick setup: wsl --install (one command, one reboot)",
64
- "Guide: https://docs.fased.ai/windows"
65
- ].join("\n"));
66
- }
67
59
  const previousSuppressOverwrite = process.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG;
68
60
  process.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG = "1";
69
61
  try {