@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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/diagnostics-otel",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent diagnostics OpenTelemetry exporter",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/fased-federation",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "Fased federation adapter package scaffold (A2A + admission helpers)",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/google-gemini-cli-auth",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent Gemini CLI OAuth provider plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/imessage",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent iMessage channel plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/irc",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent IRC channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/line",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent LINE channel plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/llm-task",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent JSON-only LLM task plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/lobster",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "Lobster workflow tool plugin (typed pipelines + resumable approvals)",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/matrix",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Matrix channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/mattermost",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Mattermost channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@fased/memory-core",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent core memory search plugin",
6
6
  "type": "module",
7
7
  "peerDependencies": {
8
- "@fased/fased": "^0.1.66"
8
+ "@fased/fased": "^0.1.68"
9
9
  },
10
10
  "fased": {
11
11
  "extensions": [
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/memory-lancedb",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent LanceDB-backed long-term memory plugin with auto-recall/capture",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/minimax-portal-auth",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent MiniMax Portal OAuth provider plugin",
6
6
  "type": "module",
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/msteams",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Microsoft Teams channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/nextcloud-talk",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Nextcloud Talk channel plugin",
5
5
  "type": "module",
6
6
  "fased": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/nostr",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Nostr channel plugin for NIP-04 encrypted DMs",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/open-prose",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "OpenProse VM skill pack plugin (slash command + telemetry).",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/sat-mining",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "SAT mining plugin scaffold for FasedAgent",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/signal",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "private": true,
5
5
  "description": "FasedAgent Signal channel plugin",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/synology-chat",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "Synology Chat channel plugin for FasedAgent",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/tlon",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Tlon/Urbit channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/twitch",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Twitch channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/voice-call",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent voice-call plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/zalo",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Zalo channel plugin",
5
5
  "type": "module",
6
6
  "dependencies": {
@@ -1,5 +1,17 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.68
4
+
5
+ ### Changes
6
+
7
+ - Version alignment with core FasedAgent release numbers.
8
+
9
+ ## 0.1.67
10
+
11
+ ### Changes
12
+
13
+ - Version alignment with core FasedAgent release numbers.
14
+
3
15
  ## 0.1.66
4
16
 
5
17
  ### Changes
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/zalouser",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "FasedAgent Zalo Personal Account plugin via zca-cli",
5
5
  "type": "module",
6
6
  "dependencies": {
package/fased.mjs CHANGED
@@ -2,7 +2,20 @@
2
2
 
3
3
  import module from "node:module";
4
4
  import { fileURLToPath } from "node:url";
5
- import { reexecWithSupportedNodeIfNeeded } from "./scripts/fased-launcher-runtime.mjs";
5
+
6
+ if (process.platform === "win32") {
7
+ console.error(
8
+ [
9
+ "Native Windows is not a supported Fased runtime.",
10
+ "Install Ubuntu in WSL2, enable systemd, and run Fased inside the Ubuntu shell.",
11
+ "PowerShell is supported only for installing WSL2 or connecting to a remote Linux VPS.",
12
+ "Guide: https://docs.fased.ai/platforms/windows",
13
+ ].join("\n"),
14
+ );
15
+ process.exit(1);
16
+ }
17
+
18
+ const { reexecWithSupportedNodeIfNeeded } = await import("./scripts/fased-launcher-runtime.mjs");
6
19
 
7
20
  reexecWithSupportedNodeIfNeeded({ selfPath: fileURLToPath(import.meta.url) });
8
21
 
package/install.sh CHANGED
@@ -37,15 +37,14 @@ fi
37
37
 
38
38
  if [[ "$install_entry_is_stream" -eq 1 && "$install_entry_hosting" -eq 1 ]]; then
39
39
  echo "Refusing streamed VPS Hosting execution." >&2
40
- echo "Download and verify the exact tagged install.sh before execution:" >&2
41
- echo " https://docs.fased.ai/install/vps" >&2
40
+ echo "Download and verify an exact tagged release installer before running --hosting or --repair-hosting." >&2
42
41
  exit 1
43
42
  fi
44
43
 
45
- # A Hosting request always enters the attest-and-extract bootstrap unless it is
44
+ # A Hosting file request enters the attest-and-extract bootstrap unless it is
46
45
  # the exact inner invocation carrying the root-owned verified bundle marker.
47
- # Streamed Hosting was rejected above; standalone Hosting must be downloaded
48
- # and verified before execution.
46
+ # Streamed Hosting was rejected above; streamed execution reaches this block
47
+ # only for the non-root Local bootstrap.
49
48
  if [[ "$install_entry_is_stream" -eq 1 || \
50
49
  ( "$install_entry_hosting" -eq 1 && -z "$install_entry_verified_bundle" ) ]]; then
51
50
  install_repo_url="${FASED_INSTALL_REPO:-https://github.com/fased-ai/fased.git}"
@@ -98,6 +97,10 @@ if [[ "$install_entry_is_stream" -eq 1 || \
98
97
  esac
99
98
  done
100
99
 
100
+ if [[ "$hosting_bootstrap" -eq 1 && "$hosting_repair_bootstrap" -eq 0 && -z "$hosting_release" ]]; then
101
+ hosting_release="latest"
102
+ fi
103
+
101
104
  bootstrap_as_root() {
102
105
  if [[ "$(id -u)" -eq 0 ]]; then
103
106
  "$@"
@@ -175,11 +178,10 @@ if [[ "$install_entry_is_stream" -eq 1 || \
175
178
  echo "Refusing a caller-supplied verified bundle marker." >&2
176
179
  exit 1
177
180
  fi
178
- if [[ -z "$hosting_release" ]]; then
179
- echo "VPS Hosting requires an explicit tagged release." >&2
180
- echo "Pass --release vX.Y.Z (recommended) or --release latest." >&2
181
+ [[ -n "$hosting_release" ]] || {
182
+ echo "VPS Hosting release resolution failed before verification." >&2
181
183
  exit 1
182
- fi
184
+ }
183
185
 
184
186
  install_hosting_bootstrap_tools() {
185
187
  [[ "$auto_install" -eq 1 ]] || return 0
@@ -4241,7 +4243,8 @@ ensure_host_boundary_accounts() {
4241
4243
  rm -f \
4242
4244
  "/etc/sudoers.d/fased-install-${target_user}" \
4243
4245
  "/etc/sudoers.d/fased-host-maintenance-${target_user}" \
4244
- "/etc/sudoers.d/fased-gateway-${target_user}-maintenance"
4246
+ "/etc/sudoers.d/fased-gateway-${target_user}-maintenance" \
4247
+ "/etc/sudoers.d/fased-signer-wallet-import-${target_user}"
4245
4248
  if need_cmd sudo && runuser -u "$target_user" -- sudo -n true >/dev/null 2>&1; then
4246
4249
  echo "Hosting security boundary cannot use an app account with passwordless sudo: $target_user" >&2
4247
4250
  echo "Remove custom sudoers access for this dedicated account, then rerun the exact tagged repair from the provider root console." >&2
@@ -4289,6 +4292,7 @@ install_host_signer_and_updater_services() {
4289
4292
  install -m 0755 -o root -g root "$FASED_DIR/scripts/fased-signer-enroll-hosting.sh" /usr/local/sbin/fased-signer-enroll
4290
4293
  install -m 0755 -o root -g root "$FASED_DIR/scripts/fased-signer-policy-hosting.sh" /usr/local/sbin/fased-signer-policy
4291
4294
  install -m 0755 -o root -g root "$FASED_DIR/scripts/fased-signer-network-hosting.sh" /usr/local/sbin/fased-signer-network
4295
+ install -m 0755 -o root -g root "$FASED_DIR/scripts/fased-signer-wallet-import-hosting.sh" /usr/local/sbin/fased-signer-wallet-import
4292
4296
  install -m 0644 -o root -g root "$FASED_DIR/config/signer-policies/README.md" /usr/local/share/fased/signer-policies/README.md
4293
4297
  install -m 0644 -o root -g root "$FASED_DIR/config/signer-policies/agent.json.template" /usr/local/share/fased/signer-policies/agent.json.template
4294
4298
  install -m 0644 -o root -g root "$FASED_DIR/config/signer-policies/mining.json.template" /usr/local/share/fased/signer-policies/mining.json.template
@@ -4358,6 +4362,7 @@ EOF
4358
4362
  sync -f /usr/local/sbin/fased-signer-enroll
4359
4363
  sync -f /usr/local/sbin/fased-signer-policy
4360
4364
  sync -f /usr/local/sbin/fased-signer-network
4365
+ sync -f /usr/local/sbin/fased-signer-wallet-import
4361
4366
  sync -f /usr/local/share/fased/signer-policies/README.md
4362
4367
  sync -f /usr/local/share/fased/signer-policies/agent.json.template
4363
4368
  sync -f /usr/local/share/fased/signer-policies/mining.json.template
@@ -4631,6 +4636,7 @@ assert_verified_hosting_root_source() {
4631
4636
  scripts/fased-host-updaterctl.mjs \
4632
4637
  scripts/fased-signer-enroll-hosting.sh \
4633
4638
  scripts/fased-signer-network-hosting.sh \
4639
+ scripts/fased-signer-wallet-import-hosting.sh \
4634
4640
  scripts/fased-signer-policy-hosting.sh; do
4635
4641
  local asset_path="$canonical_source/$privileged_asset"
4636
4642
  [[ -f "$asset_path" && ! -L "$asset_path" ]] || {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fased/fased",
3
- "version": "0.1.66",
3
+ "version": "0.1.68",
4
4
  "description": "Fased Agent self-hosted AI gateway with channels, tools, plugins, and operator modules",
5
5
  "keywords": [
6
6
  "ai-agent",
@@ -46,6 +46,7 @@
46
46
  "scripts/fased-host-updaterctl.mjs",
47
47
  "scripts/fased-signer-enroll-hosting.sh",
48
48
  "scripts/fased-signer-network-hosting.sh",
49
+ "scripts/fased-signer-wallet-import-hosting.sh",
49
50
  "scripts/fased-signer-owner-policy.mjs",
50
51
  "scripts/fased-signer-policy-hosting.sh",
51
52
  "scripts/fased-signer-policy-local.sh",
@@ -81,6 +82,10 @@
81
82
  "!extensions/runtime-openai/",
82
83
  "!extensions/runtime-speech/"
83
84
  ],
85
+ "os": [
86
+ "linux",
87
+ "darwin"
88
+ ],
84
89
  "type": "module",
85
90
  "main": "dist/index.js",
86
91
  "exports": {
@@ -291,7 +291,9 @@ async function downloadToFile(url, destination, timeoutMs) {
291
291
  cache: "no-store",
292
292
  });
293
293
  if (!response.ok || !response.body) {
294
- throw new Error(`Download failed (${response.status}): ${url}`);
294
+ const error = new Error(`Download failed (${response.status}): ${url}`);
295
+ error.statusCode = response.status;
296
+ throw error;
295
297
  }
296
298
  await fsp.mkdir(path.dirname(destination), { recursive: true });
297
299
  await pipeline(
@@ -3372,7 +3374,7 @@ async function updateManagedRuntime(options) {
3372
3374
  try {
3373
3375
  let unifiedRelease = null;
3374
3376
  let unifiedReleasePath = null;
3375
- if (existingManifest.profile === "hosting") {
3377
+ try {
3376
3378
  unifiedReleasePath = path.join(temporaryRoot, "fased-hosted-release-v2.json");
3377
3379
  await measureStage(timings, "unified release manifest", async () => {
3378
3380
  await downloadToFile(
@@ -3387,6 +3389,12 @@ async function updateManagedRuntime(options) {
3387
3389
  await readHostedReleaseManifestV2(unifiedReleasePath, { version: targetVersion })
3388
3390
  ).manifest;
3389
3391
  });
3392
+ } catch (error) {
3393
+ if (existingManifest.profile === "hosting" || error?.statusCode !== 404) {
3394
+ throw error;
3395
+ }
3396
+ unifiedReleasePath = null;
3397
+ unifiedRelease = null;
3390
3398
  }
3391
3399
  const appArtifact = unifiedRelease?.application?.linux?.[arch]?.artifact;
3392
3400
  const assetName =
@@ -0,0 +1,78 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+
4
+ umask 077
5
+ PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
6
+ export PATH
7
+
8
+ if [[ "${EUID}" != "0" ]]; then
9
+ echo "Hosted signer wallet import requires the VPS provider root console." >&2
10
+ exit 1
11
+ fi
12
+
13
+ wallet_id=""
14
+ locked_role=""
15
+ while [[ $# -gt 0 ]]; do
16
+ case "$1" in
17
+ --wallet-id)
18
+ [[ $# -ge 2 ]] || { echo "missing --wallet-id value" >&2; exit 64; }
19
+ wallet_id="$2"
20
+ shift 2
21
+ ;;
22
+ --locked-role)
23
+ [[ $# -ge 2 ]] || { echo "missing --locked-role value" >&2; exit 64; }
24
+ locked_role="$2"
25
+ shift 2
26
+ ;;
27
+ *)
28
+ echo "unsupported hosted wallet-import argument" >&2
29
+ exit 64
30
+ ;;
31
+ esac
32
+ done
33
+
34
+ [[ "$wallet_id" =~ ^[a-z0-9_]{1,64}$ ]] || {
35
+ echo "wallet id must already be normalized lowercase letters, numbers, or underscores" >&2
36
+ exit 64
37
+ }
38
+ case "$locked_role" in
39
+ agent|mining|vault) ;;
40
+ *) echo "locked role must be agent, mining, or vault" >&2; exit 64 ;;
41
+ esac
42
+
43
+ signer_bin="/opt/fased/signer/fased-signerd"
44
+ control_socket="/run/fased-signerd/control.sock"
45
+ runuser_bin="/usr/sbin/runuser"
46
+ env_bin="/usr/bin/env"
47
+ stat_bin="/usr/bin/stat"
48
+ signer_user="fased-signer"
49
+
50
+ for executable in "$signer_bin" "$runuser_bin" "$env_bin" "$stat_bin"; do
51
+ [[ -f "$executable" && -x "$executable" && ! -L "$executable" ]] || {
52
+ echo "required hosted signer executable is missing or unsafe" >&2
53
+ exit 1
54
+ }
55
+ read -r owner mode <<<"$($stat_bin -Lc '%u %a' "$executable")"
56
+ [[ "$owner" == "0" && $((8#$mode & 8#22)) -eq 0 ]] || {
57
+ echo "required hosted signer executable is not root-owned and non-writable" >&2
58
+ exit 1
59
+ }
60
+ done
61
+
62
+ [[ -S "$control_socket" && ! -L "$control_socket" ]] || {
63
+ echo "hosted signer control socket is unavailable" >&2
64
+ exit 1
65
+ }
66
+
67
+ # The root-console caller supplies only a new wallet id, an immutable role, and
68
+ # one keypair on stdin. The signer creates a deny-all policy and refuses
69
+ # replacement. The app/Gateway account has no sudo rule for this helper.
70
+ exec "$runuser_bin" -u "$signer_user" -- \
71
+ "$env_bin" -i \
72
+ HOME=/var/lib/fased-signerd \
73
+ LANG=C.UTF-8 \
74
+ PATH=/usr/bin:/bin:/usr/sbin:/sbin \
75
+ "$signer_bin" admin wallet import \
76
+ --control-socket "$control_socket" \
77
+ --wallet-id "$wallet_id" \
78
+ --locked-role "$locked_role"
@@ -220,15 +220,15 @@ export async function installManagedRuntime(params, dependencyOverrides = {}) {
220
220
  ...dependencyOverrides,
221
221
  };
222
222
  const paths = resolveManagedRuntimePaths(params);
223
+ const profile = normalizeManagedProfile(params.profile);
223
224
  const existingManifest = readManagedInstallManifest(paths.manifestPath);
224
225
  const version = await assertManagedRuntime(params.packageRoot);
225
226
  const metadata = await readHostedRuntimeMetadata(params.packageRoot);
226
- const hostedRelease = await readHostedReleaseBinding(params.packageRoot, metadata, version);
227
- if (
228
- normalizeManagedProfile(params.profile) === "hosting" &&
229
- params.hostTransactionId &&
230
- !hostedRelease
231
- ) {
227
+ const hostedRelease =
228
+ profile === "hosting"
229
+ ? await readHostedReleaseBinding(params.packageRoot, metadata, version)
230
+ : null;
231
+ if (profile === "hosting" && params.hostTransactionId && !hostedRelease) {
232
232
  throw new Error(
233
233
  "Maintained Hosting requires an attested unified app and signer release manifest.",
234
234
  );
@@ -399,7 +399,10 @@ export async function rollbackManagedRuntime(params) {
399
399
  const previousVersion = await assertManagedRuntime(previousRoot);
400
400
  const currentVersion = await readPackageVersion(currentRoot);
401
401
  const metadata = await readHostedRuntimeMetadata(previousRoot);
402
- const hostedRelease = await readHostedReleaseBinding(previousRoot, metadata, previousVersion);
402
+ const hostedRelease =
403
+ normalizeManagedProfile(manifest.profile) === "hosting"
404
+ ? await readHostedReleaseBinding(previousRoot, metadata, previousVersion)
405
+ : null;
403
406
 
404
407
  await atomicSymlink(currentRoot, paths.previousLink);
405
408
  await atomicSymlink(previousRoot, paths.currentLink);