@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.
- package/CHANGELOG.md +18 -0
- package/README.md +4 -0
- package/config/signer-protocol-v2.json +4 -0
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli/program/register.wallet.js +33 -2
- package/dist/commands/onboard.js +0 -8
- package/dist/commands/wallet.js +485 -58
- package/dist/control-ui/assets/{app-DYxADzeH.js → app-DyPTS0oM.js} +1526 -1526
- package/dist/control-ui/assets/{index-vw_10Zeo.js → index-Cu13yYHr.js} +3 -3
- package/dist/control-ui/assets/{wallet-DvStR_AT.js → wallet-ByKBcYhm.js} +272 -188
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -1
- package/dist/gateway/server-http.js +349 -47
- package/dist/infra/runtime-guard.js +16 -0
- package/dist/plugin-sdk/{actions-DRu135h0.js → actions-B-Vwj64K.js} +3 -3
- package/dist/plugin-sdk/{allow-list-DyAxs4yw.js → allow-list-Bf45HfoP.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-BFLoas5R.js → audio-preflight-_FVQjR1r.js} +26 -25
- package/dist/plugin-sdk/{audit-C5d2z5U1.js → audit-CUULWG22.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-DaI5wevh.js → channel-access-configure-BoUsC-Ys.js} +1 -1
- package/dist/plugin-sdk/{channel-adapters.discord-BS4S4Svh.js → channel-adapters.discord-DSiR4X2Y.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
- package/dist/plugin-sdk/channel-plugin-common.js +1 -1
- package/dist/plugin-sdk/{chunk-CyoyqpbG.js → chunk-CBpl-AiQ.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-TErs62MC.js → chunk-items-LH4uKSnh.js} +1 -1
- package/dist/plugin-sdk/command-status.js +26 -25
- package/dist/plugin-sdk/{commands-registry-BfqdEWdF.js → commands-registry-G5KXSi_y.js} +1 -1
- package/dist/plugin-sdk/{config-schema-BPnaDBwZ.js → config-schema-DjU_uD-6.js} +192 -94
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/{diagnostic-DLL_zekv.js → diagnostic-sYs6Agr-.js} +1 -1
- package/dist/plugin-sdk/{directory-live-CSuYxdwk.js → directory-live-BXMpuYAF.js} +1 -1
- package/dist/plugin-sdk/{directory-live-Dw7ZgC9_.js → directory-live-Rn1BzPof.js} +1 -1
- package/dist/plugin-sdk/discord.d.ts +4 -4
- package/dist/plugin-sdk/discord.js +20 -20
- package/dist/plugin-sdk/{draft-stream-controls-BqchW1vi.js → draft-stream-controls-CMNdKSx-.js} +1 -1
- package/dist/plugin-sdk/{guilds-CDhRIX57.js → guilds-Dkwl0yHv.js} +1 -1
- package/dist/plugin-sdk/{handle-action-hvwapMKg.js → handle-action-CRdM6B-8.js} +15 -15
- package/dist/plugin-sdk/index.d.ts +16 -16
- package/dist/plugin-sdk/index.js +28 -27
- package/dist/plugin-sdk/{login-Ca583Okc.js → login-D7WnK8-P.js} +1 -1
- package/dist/plugin-sdk/{login-qr-CGciBSNP.js → login-qr-CRueOKZK.js} +2 -114
- package/dist/plugin-sdk/{markdown-tables-DCOXEUfZ.js → markdown-tables-d7GlUs5R.js} +1 -1
- package/dist/plugin-sdk/{media-CAdQF5TG.js → media-BAoaxCrt.js} +1 -1
- package/dist/plugin-sdk/{monitor-FuBPk-AL.js → monitor-DUMMbG4h.js} +34 -33
- package/dist/plugin-sdk/{monitor-sW6dQdX1.js → monitor-DXIM16Hj.js} +44 -43
- package/dist/plugin-sdk/{openresponses-http-CVZq0H-P.js → openresponses-http-C8lKwta1.js} +26 -25
- package/dist/plugin-sdk/{outbound-attachment-QqTnIhZL.js → outbound-attachment-CyXM3cAv.js} +1 -1
- package/dist/plugin-sdk/{outbound-BgVDdHxx.js → outbound-zB6llMGW.js} +6 -6
- package/dist/plugin-sdk/{pairing-message-L6L6L2YF.d.ts → pairing-message-mKO92L-M.d.ts} +1 -1
- package/dist/plugin-sdk/{pairing-store-BChahgI2.js → pairing-store-B6J2C0vP.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DxTMz_XF.js → pi-model-discovery-runtime-6JzLw9Gk.js} +1 -1
- package/dist/plugin-sdk/{probe-CJb5uR8B.js → probe-BM7Oe40M.js} +2 -2
- package/dist/plugin-sdk/{probe-l_whvGLY.js → probe-CMPksimh.js} +1 -1
- package/dist/plugin-sdk/{probe-BFroeK3g.js → probe-oVp12D6L.js} +1 -1
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
- package/dist/plugin-sdk/{pw-ai-natjh3rm.js → pw-ai-DJ_gTc4M.js} +1 -1
- package/dist/plugin-sdk/qr-image-B4MlMG4N.js +115 -0
- package/dist/plugin-sdk/{replies-ChYo5ZQM.js → replies-CY-V0Zob.js} +3 -3
- package/dist/plugin-sdk/{resolve-channels-87LZrFk_.js → resolve-channels-1HtDcMqh.js} +2 -2
- package/dist/plugin-sdk/{resolve-channels-_-nV-EK2.js → resolve-channels-CU72Qh2j.js} +1 -1
- package/dist/plugin-sdk/{resolve-outbound-target-D-KGgHJZ.js → resolve-outbound-target-nQSBVYz9.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-C8tvQm8Z.js → resolve-route-Dufnu2cT.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-DN9VQBwv.js → resolve-users-Bk_ss2vC.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-V6dHh_2B.js → resolve-users-IevCOk4W.js} +2 -2
- package/dist/plugin-sdk/{runtime-2B9_WKoI.js → runtime-CXSQwMaR.js} +1 -1
- package/dist/plugin-sdk/{runtime-dependency-DczkvPxn.js → runtime-dependency-nup8niQL.js} +9 -9
- package/dist/plugin-sdk/sat-runtime.d.ts +18 -2
- package/dist/plugin-sdk/sat-runtime.js +26 -25
- package/dist/plugin-sdk/{send-DCO441U7.js → send-BXBS_mRK.js} +8 -8
- package/dist/plugin-sdk/{send-CFzGKJXo.js → send-D-HfKQZm.js} +4 -4
- package/dist/plugin-sdk/{send-B6KkGKZD.js → send-D1j12ZgX.js} +5 -5
- package/dist/plugin-sdk/{send-q9HXrSwK.js → send-DWKm6yay.js} +10 -10
- package/dist/plugin-sdk/{send-gDoGA-7e.js → send-Di1Jit3L.js} +7 -7
- package/dist/plugin-sdk/{skill-commands-FKEPLS7T.js → skill-commands-iJtvpqgb.js} +2 -2
- package/dist/plugin-sdk/{slack-BZISDxDd.js → slack-B-nOOLM0.js} +45 -44
- package/dist/plugin-sdk/{slack-actions-DhbMcp8M.js → slack-actions-BzUEszJa.js} +10 -10
- package/dist/plugin-sdk/slack.d.ts +4 -4
- package/dist/plugin-sdk/slack.js +6 -6
- package/dist/plugin-sdk/{sticker-cache-B0aPv6Lg.js → sticker-cache-BLiId8Em.js} +2 -2
- package/dist/plugin-sdk/{tables-B3jr0Pvq.js → tables-_1W36GII.js} +2 -2
- package/dist/plugin-sdk/{targets-CtSbTxYX.js → targets-DDbNnLnB.js} +2 -2
- package/dist/plugin-sdk/{telegram-actions-H3gePEn6.js → telegram-actions-1X9A32Dn.js} +30 -29
- package/dist/plugin-sdk/telegram.d.ts +4 -4
- package/dist/plugin-sdk/telegram.js +3 -3
- package/dist/plugin-sdk/{thread-bindings.lifecycle-QbkNl-m6.js → thread-bindings.lifecycle-Y9T3CQGf.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-D9hg_M1c.js → thread-bindings.state-D2oOWDpv.js} +1 -1
- package/dist/plugin-sdk/{tmp-fased-dir-d1CmFAnJ.d.ts → tmp-fased-dir-BkpWlGUe.d.ts} +7 -1
- package/dist/plugin-sdk/{types-DUjYaWB2.d.ts → types-B-zL9gSv.d.ts} +1 -1
- package/dist/plugin-sdk/{types-xWjHXl1z.d.ts → types-DtCOO_hW.d.ts} +1 -1
- package/dist/plugin-sdk/{web-JwP9PAZR.js → web-BvjNyYBz.js} +33 -32
- package/dist/plugin-sdk/{whatsapp-actions-Bj_rOncr.js → whatsapp-actions-Blu9-eX-.js} +9 -9
- package/dist/plugin-sdk/{whatsapp-heartbeat-B1WHkJIg.js → whatsapp-heartbeat-DjmQM7hq.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +9 -9
- package/dist/plugin-sdk/whatsapp.js +7 -7
- package/dist/plugin-sdk/{wsl-J-HscWxS.js → wsl-CTvIWvZz.js} +1 -1
- package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-BCDlgtls.d.ts} +63 -63
- package/dist/wallet/local-socket-signer-lifecycle.js +29 -1
- package/dist/wallet/local-socket-signer-protocol.js +27 -0
- package/dist/wallet/providers/local-socket-signer-adapter.js +8 -0
- package/dist/wallet/signer-network-admin.js +11 -118
- package/dist/wallet/signer-protocol-v2.generated.js +4 -0
- package/dist/wallet/solana-assets.js +9 -3
- package/dist/wallet/solana-rpc-read-fetch.js +65 -0
- package/dist/wallet/wallet-status.js +7 -0
- package/dist/web/login-qr.js +1 -1
- package/dist/wizard/onboarding.js +61 -61
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/fased.mjs +14 -1
- package/install.sh +16 -10
- package/package.json +6 -1
- package/scripts/fased-managed-updater.mjs +10 -2
- package/scripts/fased-signer-wallet-import-hosting.sh +78 -0
- package/scripts/install-managed-runtime.mjs +10 -7
- /package/dist/plugin-sdk/{active-listener-B_NMtgPL.js → active-listener-p9Ooc1qj.js} +0 -0
- /package/dist/plugin-sdk/{blocks-input-Bg-8S2pl.js → blocks-input-DiZaqaN7.js} +0 -0
- /package/dist/plugin-sdk/{channel-access-CcFRdRPO.js → channel-access-B0aZBSd2.js} +0 -0
- /package/dist/plugin-sdk/{channel-activity-DBDMQ3yI.js → channel-activity-F07DjroV.js} +0 -0
- /package/dist/plugin-sdk/{channel-core-CFRs8LPy.js → channel-core-DoF4X04L.js} +0 -0
- /package/dist/plugin-sdk/{client-pI228AVT.js → client-DLY-kWF_.js} +0 -0
- /package/dist/plugin-sdk/{command-poll-backoff-yJU83wEq.js → command-poll-backoff-NAePk3eL.js} +0 -0
- /package/dist/plugin-sdk/{date-time-uUevHscU.js → date-time-ChY_tHoG.js} +0 -0
- /package/dist/plugin-sdk/{draft-stream-loop-CrOPfV3F.js → draft-stream-loop-DMBwjjd1.js} +0 -0
- /package/dist/plugin-sdk/{fetch-BtmoPIlf.js → fetch-B0v6OTUZ.js} +0 -0
- /package/dist/plugin-sdk/{filesystem-manager-DoI8IBNF.js → filesystem-manager-BzuIJ9K9.js} +0 -0
- /package/dist/plugin-sdk/{gateway-registry-DZDsqicG.js → gateway-registry-Bgl2GFgy.js} +0 -0
- /package/dist/plugin-sdk/{inbound-context-DrAcXE0y.js → inbound-context-CQnfFFQ9.js} +0 -0
- /package/dist/plugin-sdk/{pi-model-discovery-BX_JLcEJ.js → pi-model-discovery-BHNVyRny.js} +0 -0
- /package/dist/plugin-sdk/{polls-DKQXVfJp.js → polls-DXd67TD8.js} +0 -0
- /package/dist/plugin-sdk/{proxy-DWpYcsvR.js → proxy-CLRUdShp.js} +0 -0
- /package/dist/plugin-sdk/{qmd-manager-CgRaTxUq.js → qmd-manager-B8Vnu0ND.js} +0 -0
- /package/dist/plugin-sdk/{render-e7fENCYH.js → render-DrBfVs0u.js} +0 -0
- /package/dist/plugin-sdk/{reply-reference-Bqk-7HXE.js → reply-reference-BnAk5Wjb.js} +0 -0
- /package/dist/plugin-sdk/{retry-policy-C6SjKjQA.js → retry-policy-CXh1owkc.js} +0 -0
- /package/dist/plugin-sdk/{sandbox-paths-Dx2lUqCu.js → sandbox-paths-Bzh1CuZc.js} +0 -0
- /package/dist/plugin-sdk/{session-DHD4ZKyG.js → session-iuGR_rdi.js} +0 -0
- /package/dist/plugin-sdk/{shared-CBgp_GBw.js → shared-D1AD2Ejn.js} +0 -0
- /package/dist/plugin-sdk/{target-errors-Ckufe179.js → target-errors-DfS1sLR9.js} +0 -0
- /package/dist/plugin-sdk/{tool-loop-detection-Bp8bPJLs.js → tool-loop-detection-sDZl27w7.js} +0 -0
- /package/dist/plugin-sdk/{ui-Be8cLHIS.js → ui-GQDYm_jw.js} +0 -0
- /package/dist/plugin-sdk/{with-timeout-ckWB8rTo.js → with-timeout-CVV8tytk.js} +0 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fased/memory-core",
|
|
3
|
-
"version": "0.1.
|
|
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.
|
|
8
|
+
"@fased/fased": "^0.1.68"
|
|
9
9
|
},
|
|
10
10
|
"fased": {
|
|
11
11
|
"extensions": [
|
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
|
-
|
|
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
|
|
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
|
|
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;
|
|
48
|
-
#
|
|
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
|
-
|
|
179
|
-
echo "VPS Hosting
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
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 =
|
|
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);
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|