@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.
- package/CHANGELOG.md +43 -0
- package/README.md +38 -30
- package/config/dependency-ownership.json +1 -1
- package/config/signer-policies/README.md +49 -0
- package/config/signer-policies/agent.json.template +32 -0
- package/config/signer-policies/mining.json.template +69 -0
- package/config/signer-policies/network.json.template +5 -0
- package/config/signer-policies/vault.json.template +70 -0
- package/config/signer-protocol-v2.json +76 -0
- package/config/typescript-noemit-baseline.json +680 -0
- package/dist/acp/client.js +2 -2
- package/dist/acp/secret-file.js +2 -2
- package/dist/agents/agent-scope.js +2 -2
- package/dist/agents/apply-patch.js +8 -8
- package/dist/agents/auth-profiles/paths.js +2 -2
- package/dist/agents/auth-profiles/store.js +269 -33
- package/dist/agents/bash-tools.exec.js +10 -4
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- package/dist/agents/current-model-catalog.js +3 -3
- package/dist/agents/docs-path.js +3 -3
- package/dist/agents/embedded-pi-mcp.js +4 -4
- package/dist/agents/identity-avatar.js +3 -3
- package/dist/agents/identity-file.js +2 -2
- package/dist/agents/memory-search.js +7 -1
- package/dist/agents/model-catalog-access.js +1 -2
- package/dist/agents/model-catalog-snapshot.js +1 -1
- package/dist/agents/model-catalog-source.js +1 -1
- package/dist/agents/model-metadata.js +1 -1
- package/dist/agents/model-selection.js +2 -28
- package/dist/agents/models-config.providers.js +6 -6
- package/dist/agents/openai-codex-app-server.js +5 -5
- package/dist/agents/pi-embedded-runner/compact.js +15 -7
- package/dist/agents/pi-embedded-runner/model.js +1 -1
- package/dist/agents/pi-embedded-runner/run/attempt.js +24 -13
- package/dist/agents/pi-embedded-runner/run.js +2 -0
- package/dist/agents/pi-embedded-runner/tool-split.js +40 -2
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
- package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
- package/dist/agents/pi-model-discovery.js +6 -6
- package/dist/agents/pi-project-settings.js +3 -3
- package/dist/agents/pi-tool-definition-adapter.js +16 -1
- package/dist/agents/pi-tools.js +2 -1
- package/dist/agents/sandbox/config.js +1 -1
- package/dist/agents/sandbox/context.js +27 -2
- package/dist/agents/sandbox/fs-bridge.js +2 -2
- package/dist/agents/session-dirs.js +4 -4
- package/dist/agents/session-write-lock.js +13 -13
- package/dist/agents/shell-utils.js +5 -5
- package/dist/agents/skills/bundled-dir.js +4 -4
- package/dist/agents/skills/env-overrides.js +38 -28
- package/dist/agents/skills/local-loader.js +6 -6
- package/dist/agents/skills/plugin-skills.js +2 -2
- package/dist/agents/skills/trust.js +93 -0
- package/dist/agents/skills/workspace.js +141 -13
- package/dist/agents/skills-clawhub.js +36 -11
- package/dist/agents/skills-install-download.js +7 -7
- package/dist/agents/skills-install-plan.js +2 -2
- package/dist/agents/skills-install.js +2 -2
- package/dist/agents/skills-marketplace-scan.js +49 -0
- package/dist/agents/skills-status.js +2 -2
- package/dist/agents/subagent-depth.js +2 -2
- package/dist/agents/system-prompt-params.js +2 -2
- package/dist/agents/tools/marketplace-offer-draft-tool.js +1 -1
- package/dist/agents/tools/mining-tool.js +1 -1
- package/dist/agents/tools/session-status-tool.js +1 -1
- package/dist/agents/tools/wallet-action-tool.js +172 -36
- package/dist/agents/tools/wallet-skill-policy.js +65 -23
- package/dist/agents/tools/wallet-tool.js +7 -11
- package/dist/agents/workspace.js +22 -22
- package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
- package/dist/auto-reply/reply/agent-runner.js +2 -2
- package/dist/auto-reply/reply/commands-export-session.js +7 -7
- package/dist/auto-reply/reply/directive-handling.fast-lane.js +2 -1
- package/dist/auto-reply/reply/directive-handling.impl.js +2 -1
- package/dist/auto-reply/reply/directive-handling.model.js +2 -1
- package/dist/auto-reply/reply/directive-handling.persist.js +2 -2
- package/dist/auto-reply/reply/get-reply-directives-apply.js +2 -0
- package/dist/auto-reply/reply/get-reply-inline-actions.js +25 -1
- package/dist/auto-reply/reply/model-selection.js +7 -4
- package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
- package/dist/auto-reply/reply/post-compaction-context.js +3 -3
- package/dist/auto-reply/reply/session-reset-model.js +4 -4
- package/dist/auto-reply/reply/session.js +3 -3
- package/dist/auto-reply/skill-commands.js +3 -3
- package/dist/auto-reply/status.js +6 -6
- package/dist/brand.js +1 -1
- package/dist/browser/chrome.executables.js +3 -3
- package/dist/browser/chrome.js +3 -3
- package/dist/browser/chrome.profile-decoration.js +6 -6
- package/dist/browser/profiles-service.js +2 -2
- package/dist/browser/server-context.js +2 -2
- package/dist/browser/trash.js +4 -4
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/canvas-host/server.js +4 -4
- package/dist/capabilities/catalog.js +3 -3
- package/dist/channel-web.js +2 -2
- package/dist/channels/plugins/catalog.js +3 -3
- package/dist/cli/browser-cli-extension.js +6 -6
- package/dist/cli/command-format.js +2 -2
- package/dist/cli/cron-cli/register.cron-simple.js +2 -2
- package/dist/cli/dns-cli.js +9 -9
- package/dist/cli/gateway-cli/dev.js +5 -5
- package/dist/cli/gateway-cli/run.js +10 -2
- package/dist/cli/hooks-cli.js +5 -5
- package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
- package/dist/cli/memory-cli.js +7 -7
- package/dist/cli/nodes-media-utils.js +2 -2
- package/dist/cli/plugins-cli.js +2 -2
- package/dist/cli/program/command-registry.js +1 -1
- package/dist/cli/program/register.onboard.js +2 -3
- package/dist/cli/program/register.wallet.js +16 -123
- package/dist/cli/providers-cli.js +1 -1
- package/dist/cli/sat-cli.js +129 -2
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/update-cli/update-command.js +260 -11
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/auth-choice.apply.api-providers.js +3 -3
- package/dist/commands/dashboard-link.js +3 -3
- package/dist/commands/doctor-config-flow.js +1 -1
- package/dist/commands/doctor-install.js +5 -5
- package/dist/commands/doctor-legacy-config.js +2 -13
- package/dist/commands/doctor-memory-search.js +2 -2
- package/dist/commands/doctor-platform-notes.js +2 -2
- package/dist/commands/doctor-sandbox.js +2 -2
- package/dist/commands/doctor-state-integrity.js +23 -23
- package/dist/commands/doctor-workspace.js +3 -3
- package/dist/commands/doctor.js +3 -3
- package/dist/commands/managed-up.js +2 -2
- package/dist/commands/model-picker.js +6 -6
- package/dist/commands/models/auth.js +1 -1
- package/dist/commands/onboard-auth.config-gateways.js +1 -1
- package/dist/commands/onboard-auth.credentials.js +35 -11
- package/dist/commands/onboard-non-interactive/local/wallet-config.js +28 -27
- package/dist/commands/onboard-non-interactive/local.js +5 -1
- package/dist/commands/onboarding/plugin-install.js +2 -2
- package/dist/commands/sessions-cleanup.js +2 -2
- package/dist/commands/signal-install.js +6 -6
- package/dist/commands/status-all/channels.js +2 -2
- package/dist/commands/wallet.js +570 -1913
- package/dist/config/cache-utils.js +2 -2
- package/dist/config/config.js +2 -2
- package/dist/config/includes.js +5 -5
- package/dist/config/io.js +66 -4
- package/dist/config/paths.js +3 -3
- package/dist/config/sat-runtime-ids.js +3 -3
- package/dist/config/schema.help.js +8 -7
- package/dist/config/schema.labels.js +5 -4
- package/dist/config/sessions/disk-budget.js +6 -6
- package/dist/config/sessions/paths.js +2 -2
- package/dist/config/sessions/store.js +17 -17
- package/dist/config/sessions/transcript.js +4 -4
- package/dist/config/talk.js +2 -2
- package/dist/config/zod-schema.agent-runtime.js +1 -0
- package/dist/config/zod-schema.js +5 -0
- package/dist/control-ui/assets/{app-BXA4gPvN.js → app-bR-fO5ty.js} +1511 -1555
- package/dist/control-ui/assets/{config-CU5Zi8Dh.js → config-LeImukCW.js} +10 -10
- package/dist/control-ui/assets/{federation-D10Q4eP_.js → federation-DgA9e-Pn.js} +364 -422
- package/dist/control-ui/assets/{index-D2QbJhVg.js → index-ckCxHwjy.js} +3 -3
- package/dist/control-ui/assets/{mining-BdhMn18r.js → mining-BgHFh0ei.js} +134 -114
- package/dist/control-ui/assets/mining-commit-DFpB_4JN.js +2 -0
- package/dist/control-ui/assets/{open-external-url-DwSiwMPl.js → open-external-url-ulF1B-sA.js} +3 -3
- package/dist/control-ui/assets/{providers-QMn4w2_f.js → providers-CIx9fxc6.js} +2 -2
- package/dist/control-ui/assets/{wallet-C2g294QT.js → wallet-DvStR_AT.js} +259 -377
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -1
- package/dist/cron/service/store.js +2 -2
- package/dist/cron/store.js +6 -6
- package/dist/daemon/systemd-system.js +60 -54
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/extensions/sat-mining/src/protocol-contract.js +43 -3
- package/dist/extensions/sat-mining/src/rpc-read.js +235 -67
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +14 -11
- package/dist/extensions/sat-mining/src/signer-codec-manifest.js +406 -0
- package/dist/extensions/sat-mining/src/solana-submit.js +1038 -397
- package/dist/extensions/sat-mining/src/submission-ledger.js +349 -0
- package/dist/federation/auto-connect.js +98 -8
- package/dist/federation/marketplace-capability-adapter.js +33 -7
- package/dist/federation/marketplace-delivery-outbox.js +196 -0
- package/dist/federation/marketplace-delivery.js +351 -215
- package/dist/federation/marketplace-direct-payment.js +272 -141
- package/dist/federation/marketplace-escrow.js +607 -249
- package/dist/federation/marketplace-settlement-ledger.js +352 -0
- package/dist/federation/offers.js +9 -7
- package/dist/federation/peer-auth-v2.js +529 -0
- package/dist/gateway/a2a-http.js +425 -96
- package/dist/gateway/a2a-settlement.js +259 -153
- package/dist/gateway/a2a-task-store.js +524 -0
- package/dist/gateway/auth.js +38 -2
- package/dist/gateway/config-reload.js +46 -33
- package/dist/gateway/control-ui-boot-check.js +6 -6
- package/dist/gateway/control-ui-login.js +7 -7
- package/dist/gateway/control-ui.js +9 -9
- package/dist/gateway/durable-capacity.js +31 -0
- package/dist/gateway/federation-http.js +540 -135
- package/dist/gateway/federation-marketplace-run-store.js +397 -0
- package/dist/gateway/federation-marketplace.js +535 -230
- package/dist/gateway/hooks-mapping.js +4 -4
- package/dist/gateway/mutating-admin-rpc-rate-limit.js +5 -0
- package/dist/gateway/security-path.js +1 -1
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +1088 -1209
- package/dist/gateway/server-methods/chat.js +3 -3
- package/dist/gateway/server-methods/models.js +1 -1
- package/dist/gateway/server-methods/secrets.js +40 -0
- package/dist/gateway/server-methods/sessions.js +6 -6
- package/dist/gateway/server-methods/usage.js +2 -2
- package/dist/gateway/server-methods.js +1 -2
- package/dist/gateway/server-reload-handlers.js +196 -66
- package/dist/gateway/server-runtime-config.js +1 -1
- package/dist/gateway/server-secrets-runtime.js +288 -0
- package/dist/gateway/server.impl.js +73 -42
- package/dist/gateway/session-compaction-checkpoints.js +4 -4
- package/dist/gateway/session-utils.fs.js +24 -24
- package/dist/gateway/session-utils.js +6 -6
- package/dist/gateway/sessions-patch.js +3 -5
- package/dist/hooks/bundled-dir.js +4 -4
- package/dist/hooks/gmail-setup-utils.js +6 -6
- package/dist/hooks/import-url.js +2 -2
- package/dist/hooks/loader.js +4 -4
- package/dist/hooks/workspace.js +7 -7
- package/dist/index.js +4 -2
- package/dist/infra/archive.js +17 -17
- package/dist/infra/boundary-file-read.js +2 -2
- package/dist/infra/boundary-path.js +15 -15
- package/dist/infra/brew.js +2 -2
- package/dist/infra/control-ui-assets.js +14 -14
- package/dist/infra/device-auth-store.js +8 -8
- package/dist/infra/device-identity.js +8 -8
- package/dist/infra/dotenv.js +2 -2
- package/dist/infra/exec-approvals.js +8 -8
- package/dist/infra/exec-command-resolution.js +4 -4
- package/dist/infra/exec-safe-bin-trust.js +2 -2
- package/dist/infra/fased-root.js +5 -5
- package/dist/infra/fasedhub.js +64 -1
- package/dist/infra/fs-safe.js +14 -14
- package/dist/infra/gateway-lock.js +11 -11
- package/dist/infra/git-commit.js +5 -5
- package/dist/infra/git-root.js +4 -4
- package/dist/infra/hosted-runtime-artifact.js +3 -3
- package/dist/infra/is-main.js +2 -2
- package/dist/infra/json-file.js +7 -7
- package/dist/infra/local-source-paired-update.js +538 -0
- package/dist/infra/managed-runtime-bootstrap.js +6 -6
- package/dist/infra/outbound/delivery-queue.js +16 -16
- package/dist/infra/path-env.js +3 -3
- package/dist/infra/ports-lsof.js +4 -4
- package/dist/infra/provider-usage.auth.js +3 -3
- package/dist/infra/restart.js +41 -10
- package/dist/infra/safe-open-sync.js +2 -2
- package/dist/infra/session-cost-usage.js +9 -9
- package/dist/infra/shell-env.js +2 -2
- package/dist/infra/state-migrations.fs.js +6 -6
- package/dist/infra/state-migrations.js +23 -23
- package/dist/infra/tmp-fased-dir.js +6 -6
- package/dist/infra/update-runner.js +96 -0
- package/dist/infra/widearea-dns.js +3 -3
- package/dist/infra/wsl.js +2 -2
- package/dist/light-update-status.js +11 -11
- package/dist/line/accounts.js +2 -2
- package/dist/line/download.js +2 -2
- package/dist/logging/config.js +3 -3
- package/dist/logging/logger.js +7 -7
- package/dist/managed/federation.js +3 -3
- package/dist/managed/tunnel.js +3 -3
- package/dist/media/store.js +13 -13
- package/dist/media-understanding/runner.js +3 -3
- package/dist/memory/backend-config.js +2 -1
- package/dist/memory/embeddings.js +2 -2
- package/dist/memory/internal.js +10 -10
- package/dist/memory/manager-sync-ops.js +7 -7
- package/dist/memory/repair-executor.js +17 -17
- package/dist/memory/session-files.js +16 -2
- package/dist/node-host/invoke-system-run-plan.js +8 -8
- package/dist/node-host/invoke.js +2 -2
- package/dist/node-host/runner.js +3 -3
- package/dist/pairing/pairing-store.js +3 -3
- package/dist/plugin-sdk/{accounts-DxblobYM.js → accounts-Brn3-uWN.js} +1 -1
- package/dist/plugin-sdk/{actions-D4UNimWa.js → actions-DRu135h0.js} +2 -2
- package/dist/plugin-sdk/{active-listener-CFuy106s.js → active-listener-B_NMtgPL.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-Bv0hUOWL.js → audio-preflight-BYxAt775.js} +27 -27
- package/dist/plugin-sdk/{audit-Cs0K7LBp.js → audit-C5d2z5U1.js} +1 -1
- package/dist/plugin-sdk/{channel-access-D5aHoTY8.js → channel-access-CcFRdRPO.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-Dvch9mMQ.js → channel-access-configure-DaI5wevh.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
- package/dist/plugin-sdk/channel-plugin-common.js +4 -4
- package/dist/plugin-sdk/{chunk-B0FUGc5A.js → chunk-CyoyqpbG.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-Bk--NU3E.js → chunk-items-DIRHG2gJ.js} +1 -1
- package/dist/plugin-sdk/command-status.d.ts +2 -2
- package/dist/plugin-sdk/command-status.js +27 -27
- package/dist/plugin-sdk/{commands-registry-DmDRhRAU.js → commands-registry-BfqdEWdF.js} +2 -2
- package/dist/plugin-sdk/{common-CfUOowOp.js → common-HCcXU-NR.js} +1 -1
- package/dist/plugin-sdk/{config-mxULv0fQ.js → config-DlWVeLFB.js} +7113 -6877
- package/dist/plugin-sdk/{config-schema-CGW6J3Pv.js → config-schema-BOT7kHb6.js} +6779 -3696
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +5 -5
- package/dist/plugin-sdk/discord.js +19 -19
- package/dist/plugin-sdk/file-lock.js +35 -4
- package/dist/plugin-sdk/{filesystem-manager-ZoHU8oA7.js → filesystem-manager-DoI8IBNF.js} +1 -1
- package/dist/plugin-sdk/{group-mentions-BHRff6j8.d.ts → group-mentions-q3hUTCt7.d.ts} +1 -1
- package/dist/plugin-sdk/{handle-action-DbVCF9HZ.js → handle-action-hvwapMKg.js} +13 -13
- package/dist/plugin-sdk/{helpers-BXbdgs5H.js → helpers-DMBU4oTo.js} +1 -1
- package/dist/plugin-sdk/{image-ops-D7jPxaph.js → image-ops-DQi0n_Tt.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +9 -27
- package/dist/plugin-sdk/index.js +29 -29
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-BRxww6nv.js → login-Ca583Okc.js} +3 -3
- package/dist/plugin-sdk/{login-qr-DJXsk9XH.js → login-qr-CGciBSNP.js} +3 -3
- package/dist/plugin-sdk/{manager-Y2S_5IlI.js → manager-BegWxNYX.js} +4 -4
- package/dist/plugin-sdk/{markdown-tables-DHLFQqaF.js → markdown-tables-DCOXEUfZ.js} +1 -1
- package/dist/plugin-sdk/{media-Czo4carg.js → media-CAdQF5TG.js} +47 -47
- package/dist/plugin-sdk/{memory-search-DTjIMw8J.js → memory-search-CrFPOeTH.js} +4 -1
- package/dist/plugin-sdk/{monitor-B9Cmt_Je.js → monitor-BCFDaqJ-.js} +31 -31
- package/dist/plugin-sdk/{monitor-B71iwAgC.js → monitor-BgbjRiPM.js} +32 -32
- package/dist/plugin-sdk/{openresponses-http-Du4GMmwo.js → openresponses-http-DFf87SMM.js} +27 -27
- package/dist/plugin-sdk/{optional-runtime-dependency-DdMbxS24.js → optional-runtime-dependency-0dznm3ZO.js} +1 -1
- package/dist/plugin-sdk/{outbound-Db8mRN6P.js → outbound-BgVDdHxx.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-BqFjcypb.js → outbound-attachment-QqTnIhZL.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-CS-9BHug.d.ts} +2 -2
- package/dist/plugin-sdk/{pairing-message-B3GC_7CD.js → pairing-message-D0CoLHRJ.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-CQikgIbw.js → pairing-store-BChahgI2.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-CY3m5zJP.js → pi-model-discovery-BX_JLcEJ.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DSh1T2pn.js → pi-model-discovery-runtime-DxTMz_XF.js} +2 -2
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{pw-ai-AFUqn-tQ.js → pw-ai-natjh3rm.js} +3 -3
- package/dist/plugin-sdk/{qmd-manager-DSyx77KY.js → qmd-manager-CgRaTxUq.js} +1 -1
- package/dist/plugin-sdk/{query-expansion-CAI2kKLQ.js → query-expansion-BG3FgzF7.js} +14 -3
- package/dist/plugin-sdk/{replies-Fzh9PhXl.js → replies-ChYo5ZQM.js} +2 -2
- package/dist/plugin-sdk/{resolve-outbound-target-KpF3co6T.js → resolve-outbound-target-D-KGgHJZ.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-CDl74O19.js → resolve-route-C8tvQm8Z.js} +1 -1
- package/dist/plugin-sdk/{retry-policy-D4uiqUOG.js → retry-policy-C6SjKjQA.js} +1 -1
- package/dist/plugin-sdk/{runtime-Bb6KRnCC.js → runtime-2B9_WKoI.js} +8 -3
- package/dist/plugin-sdk/{runtime-dependency-DLDmB94f.js → runtime-dependency-DczkvPxn.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +549 -309
- package/dist/plugin-sdk/sat-runtime.js +29 -29
- package/dist/plugin-sdk/{send-C4k4JuJN.js → send-B6KkGKZD.js} +6 -6
- package/dist/plugin-sdk/{send-D-uDKGIq.js → send-CFzGKJXo.js} +6 -6
- package/dist/plugin-sdk/{send-Du8ykP1k.js → send-DCO441U7.js} +8 -8
- package/dist/plugin-sdk/{send-5nFktR1n.js → send-gDoGA-7e.js} +5 -5
- package/dist/plugin-sdk/{send-Bfzf11VY.js → send-q9HXrSwK.js} +7 -7
- package/dist/plugin-sdk/{session-CS-Td9EM.js → session-DHD4ZKyG.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-CFAlXWHk.js → skill-commands-FKEPLS7T.js} +201 -26
- package/dist/plugin-sdk/{slack-D_bbE6Yd.js → slack-BUTt8cxK.js} +39 -39
- package/dist/plugin-sdk/{slack-actions-BcMkNv1Z.js → slack-actions-DhbMcp8M.js} +11 -11
- package/dist/plugin-sdk/slack.d.ts +5 -5
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-Dqo9nRhi.js → sticker-cache-D0wHVqjt.js} +3 -3
- package/dist/plugin-sdk/{tables-bFXyRpkx.js → tables-B3jr0Pvq.js} +1 -1
- package/dist/plugin-sdk/{targets-DH7a9lKB.js → targets-CtSbTxYX.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-Cnag7JTH.js → telegram-actions-CC_qN4v0.js} +30 -30
- package/dist/plugin-sdk/telegram.d.ts +5 -5
- package/dist/plugin-sdk/telegram.js +8 -8
- package/dist/plugin-sdk/{thread-bindings.lifecycle-CgOvvdw8.js → thread-bindings.lifecycle-QbkNl-m6.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-CQpk44Hq.js → thread-bindings.state-D9hg_M1c.js} +2 -2
- package/dist/plugin-sdk/tmp-fased-dir-xOTGlzBE.d.ts +486 -0
- package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-C3avNytw.d.ts} +3 -4
- package/dist/plugin-sdk/{types-DyhXnYUr.d.ts → types-D0kDG8l0.d.ts} +3 -2
- package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-DWfbSAaM.d.ts} +2 -2
- package/dist/plugin-sdk/{types.plugin-_fbu40Re.d.ts → types.plugin-BcSBq42x.d.ts} +8 -3
- package/dist/plugin-sdk/{web-BInKQkc4.js → web-BXsJ1vqe.js} +32 -32
- package/dist/plugin-sdk/{whatsapp-actions-BtSc2CBv.js → whatsapp-actions-Bj_rOncr.js} +13 -13
- package/dist/plugin-sdk/{whatsapp-heartbeat-Bg9TuYzl.js → whatsapp-heartbeat-B1WHkJIg.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +5 -5
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
- package/dist/plugins/bundled-dir.js +3 -3
- package/dist/plugins/discovery.js +11 -11
- package/dist/plugins/loader.js +13 -13
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/plugins/manifest.js +4 -4
- package/dist/plugins/path-safety.js +3 -3
- package/dist/plugins/status-cache.js +9 -9
- package/dist/plugins/update.js +3 -3
- package/dist/plugins/web-search-install-catalog.js +3 -3
- package/dist/providers/refresh.js +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/secrets/apply.js +17 -17
- package/dist/secrets/audit.js +11 -11
- package/dist/secrets/runtime.js +1 -1
- package/dist/secrets/shared.js +9 -9
- package/dist/security/scan-paths.js +2 -2
- package/dist/shared/config-eval.js +2 -2
- package/dist/shared/pid-alive.js +2 -2
- package/dist/tasks/standing-orders.js +5 -5
- package/dist/tasks/task-flow-registry.js +5 -5
- package/dist/tasks/task-registry.js +5 -5
- package/dist/tasks/workflow-definitions.js +6 -6
- package/dist/telegram/token.js +5 -5
- package/dist/utils.js +5 -5
- package/dist/wallet/external-submission-ledger.js +376 -0
- package/dist/wallet/legacy-embedded-keystore.js +40 -0
- package/dist/wallet/local-socket-signer-archive.js +30 -0
- package/dist/wallet/local-socket-signer-lifecycle.js +97 -0
- package/dist/wallet/local-socket-signer-policy.js +166 -0
- package/dist/wallet/local-socket-signer-protocol.js +561 -118
- package/dist/wallet/native-signer-wallet-id.js +25 -0
- package/dist/wallet/providers/alchemy-adapter.js +3 -0
- package/dist/wallet/providers/local-socket-signer-adapter.js +382 -107
- package/dist/wallet/providers/turnkey-adapter.js +292 -34
- package/dist/wallet/providers/wallet-standard-adapter.js +100 -0
- package/dist/wallet/signer-network-admin.js +184 -0
- package/dist/wallet/signer-protocol-v2.generated.js +90 -0
- package/dist/wallet/solana-bond-signing.js +157 -69
- package/dist/wallet/solana-reviewed-transaction.js +375 -0
- package/dist/wallet/solana-swap.js +520 -64
- package/dist/wallet/solana-transaction-inspection.js +106 -4
- package/dist/wallet/solana-trigger.js +658 -320
- package/dist/wallet/turnkey-reviewed-state.js +370 -0
- package/dist/wallet/wallet-approval-auth.js +20 -31
- package/dist/wallet/wallet-atomic-state.js +53 -0
- package/dist/wallet/wallet-audit-log.js +5 -5
- package/dist/wallet/wallet-canary.js +0 -1
- package/dist/wallet/wallet-inbound-events.js +19 -14
- package/dist/wallet/wallet-observability.js +5 -5
- package/dist/wallet/wallet-policy-simulation.js +1 -1
- package/dist/wallet/wallet-policy.js +95 -41
- package/dist/wallet/wallet-provider-capabilities.js +28 -4
- package/dist/wallet/wallet-provider-registry.js +64 -51
- package/dist/wallet/wallet-provider-resolver.js +62 -63
- package/dist/wallet/wallet-runtime-config.js +31 -44
- package/dist/wallet/wallet-secrets-store.js +44 -22
- package/dist/wallet/wallet-send-approvals.js +1894 -592
- package/dist/wallet/wallet-send-execution-ledger.js +292 -0
- package/dist/wallet/wallet-settlement-links.js +17 -16
- package/dist/wallet/wallet-standard-review.js +353 -0
- package/dist/wallet/wallet-status.js +0 -9
- package/dist/wallet/wallet-task-ledger.js +16 -2
- package/dist/web/accounts.js +3 -3
- package/dist/web/auth-store.js +18 -18
- package/dist/web/auto-reply/heartbeat-runner.js +1 -1
- package/dist/web/auto-reply/monitor.js +2 -2
- package/dist/web/session.js +4 -4
- package/dist/wizard/host-security-capability.js +15 -24
- package/dist/wizard/onboarding.finalize.js +63 -184
- package/dist/wizard/onboarding.host-security.js +118 -1368
- package/dist/wizard/onboarding.js +180 -242
- package/dist/wizard/onboarding.wallet.js +323 -829
- 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 +18 -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 +18 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +18 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/index.ts +498 -153
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/sat-mining/signer-codec-schema.v1.json +374 -0
- package/extensions/sat-mining/src/audit-store.ts +50 -5
- package/extensions/sat-mining/src/claim-service.ts +85 -14
- package/extensions/sat-mining/src/config.ts +9 -0
- package/extensions/sat-mining/src/cycle-progress.ts +16 -8
- package/extensions/sat-mining/src/epoch-service.ts +9 -5
- package/extensions/sat-mining/src/gateway-runner.ts +21 -1
- package/extensions/sat-mining/src/protocol-contract.ts +45 -1
- package/extensions/sat-mining/src/recovery-service.ts +312 -0
- package/extensions/sat-mining/src/round-watcher.ts +391 -81
- package/extensions/sat-mining/src/rpc-read.ts +330 -89
- package/extensions/sat-mining/src/runtime.ts +14 -0
- package/extensions/sat-mining/src/sat-bond-layout.ts +6 -0
- package/extensions/sat-mining/src/signer-codec-manifest.ts +429 -0
- package/extensions/sat-mining/src/solana-submit.ts +1199 -428
- package/extensions/sat-mining/src/submission-ledger.ts +433 -0
- 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 +18 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +18 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +18 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +18 -0
- package/extensions/zalouser/package.json +1 -1
- package/install.sh +4955 -0
- package/package.json +24 -5
- package/scripts/fased-host-updater.mjs +1421 -0
- package/scripts/fased-host-updaterctl.mjs +186 -0
- package/scripts/fased-managed-service.sh +36 -0
- package/scripts/fased-managed-updater.mjs +3065 -156
- package/scripts/fased-signer-enroll-hosting.sh +275 -0
- package/scripts/fased-signer-network-hosting.sh +143 -0
- package/scripts/fased-signer-owner-policy.mjs +1430 -0
- package/scripts/fased-signer-policy-hosting.sh +50 -0
- package/scripts/fased-signer-policy-local.sh +26 -0
- package/scripts/hosted-release-manifest.mjs +185 -0
- package/scripts/install-fased-signerd.sh +217 -0
- package/scripts/install-managed-runtime.mjs +212 -10
- package/scripts/managed-runtime-layout.mjs +75 -3
- package/scripts/migrate-hosted-signer-v2.mjs +58 -0
- package/scripts/start-managed.sh +169 -360
- package/dist/control-ui/assets/mining-commit-R-6nu87p.js +0 -2
- package/dist/plugin-sdk/tmp-fased-dir-BdFQvrvw.d.ts +0 -77
- package/dist/wallet/local-socket-signer-broker.js +0 -224
- package/dist/wallet/local-socket-signer-custody.js +0 -42
- package/dist/wallet/providers/embedded-keystore-adapter.js +0 -402
- package/dist/wallet/providers/privy-adapter.js +0 -80
- package/dist/wallet/wallet-custody.js +0 -1836
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-ledger-source-route-C-yTp0QU.js";import{a as i,c as a,t as o}from"./wallet-policy-C3ZS66Rl.js";var s=8,c=9n,l=11n;function u(e){let t=e.status?.approvalAuth?.mode??`none`,n=e.status?.approvalAuth?.ready??!1,r=e.status?.approvalAuth?.passkeyCount??0;return t===`webauthn`?!n||r<=0?{summary:`Not ready`,detail:`Enroll one passkey in this browser before wallet sends
|
|
1
|
+
import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-ledger-source-route-C-yTp0QU.js";import{a as i,c as a,t as o}from"./wallet-policy-C3ZS66Rl.js";var s=8,c=9n,l=11n;function u(e){let t=e.status?.approvalAuth?.mode??`none`,n=e.status?.approvalAuth?.ready??!1,r=e.status?.approvalAuth?.passkeyCount??0;return t===`webauthn`?!n||r<=0?{summary:`Not ready`,detail:`Enroll one passkey in this browser before wallet sends or policy changes.`,enableVisible:!1,enableLabel:`Passkey approval enabled`,enableDisabled:!0,enrollVisible:!0,enrollLabel:e.passkeyBusy?`Enrolling...`:`Enroll passkey`,enrollDisabled:e.settingsBusy||e.passkeyBusy}:{summary:`Ready`,detail:`Wallet Control Passkey is ready for sends and policy changes.`,enableVisible:!1,enableLabel:`Passkey approval ready`,enableDisabled:!0,enrollVisible:!1,enrollLabel:e.passkeyBusy?`Adding passkey...`:`Add passkey`,enrollDisabled:e.settingsBusy||e.passkeyBusy}:{summary:`Not ready`,detail:`Enable Wallet Control Passkey before approving sends or policy changes.`,enableVisible:!0,enableLabel:e.settingsBusy?`Enabling...`:`Enable passkey approval`,enableDisabled:e.settingsBusy||e.passkeyBusy,enrollVisible:!1,enrollLabel:`Enroll passkey`,enrollDisabled:!0}}function d(e){return{mode:`manual`,submitLabel:`Create Approval Request`,detail:`Direct user Send is always reviewed/manual. Confirm creates a pending wallet approval request below, and passkey approval happens on Approve when enabled.`}}function f(t){return e`
|
|
2
2
|
<span class="wallet-help" role="img" tabindex="0" aria-label=${t} data-tooltip=${t}>
|
|
3
3
|
<svg viewBox="0 0 24 24" aria-hidden="true">
|
|
4
4
|
<circle cx="12" cy="12" r="10" />
|
|
@@ -6,7 +6,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
6
6
|
<path d="M12 17h.01" />
|
|
7
7
|
</svg>
|
|
8
8
|
</span>
|
|
9
|
-
`}function p(e){return e?.policy?.directSigning?{label:`Automation on`,detail:`This selected wallet can execute approved background actions when
|
|
9
|
+
`}function p(e){return e?.policy?.directSigning?{label:`Automation on`,detail:`This selected wallet can execute approved typed background actions when signer policy and caps allow it.`,operatorDetail:`These caps belong to the selected wallet. They are not SAT mining cycle limits, and they do not override signer or role restrictions.`}:{label:`Automation off`,detail:`This selected wallet is manual-first. Reviewed Wallet UI sends can still be approved, but background actions cannot execute.`,operatorDetail:`These caps belong to the selected wallet. They are not SAT mining cycle limits, and they do not override signer or role restrictions.`}}function m(e){return String(e.miningProfile?.walletId||e.miningStatus?.walletId||e.miningReadiness?.selectedWalletId||``).trim()||null}function h(e){return typeof e==`string`&&e.trim().length>0}function g(e){return e.id.startsWith(`solana-`)||e.name.toLowerCase().startsWith(`solana `)||e.addresses?.solana?`solana`:null}function ee(e){return!e||g(e),[`solana`]}function _(e,t){let n=String(t??``).trim();if(n)return e.find(e=>e.id===n)}function v(e){if(!e)return`No grant`;let t=Array.isArray(e.actions)?e.actions.map(e=>String(e)).filter(Boolean):[],n=Array.isArray(e.chains)?e.chains.map(e=>String(e)).filter(Boolean):[],r=Array.isArray(e.walletIds)?e.walletIds.map(e=>String(e)).filter(Boolean):[],i=[e.autonomous===!0?`autonomous`:null,e.cron===!0?`cron`:null].filter(Boolean).join(`, `);return[t.length>0?t.join(`, `):`actions unspecified`,r.length>0?`wallets ${r.join(`, `)}`:`wallet unspecified`,n.length>0?n.join(`, `):`chain unspecified`,i].filter(Boolean).join(` · `)}function y(e){return e?[e.actions?.length?e.actions.join(`, `):`actions unspecified`,e.chains?.length?e.chains.join(`, `):`chain unspecified`,[e.autonomous?`autonomous requested`:null,e.cron?`cron requested`:null].filter(Boolean).join(`, `)].filter(Boolean).join(` · `):`No marketplace wallet request recorded`}function b(e){let t=(typeof e?.metadata?.purpose==`string`?e.metadata.purpose:typeof e?.metadata?.role==`string`?e.metadata.role:``).toLowerCase();if(t===`agent`)return`agent`;if(t===`vault`)return`vault`;if(t===`mining`)return`mining`}function x(e,t){if(!e)return!1;let n=b(e);return n&&n!==`agent`?!1:e.id===String(t??``).trim()||n===`agent`}function S(e){let t=e.status?.approvalAuth?.mode??`none`,n=e.status?.approvalAuth?.ready??!1,r=String(e.defaultWalletId??``).trim()||null,i=_(e.namedWallets,r),a=e.namedWallets.filter(e=>x(e,r)),o=i&&x(i,r)?i:void 0,s=String(e.miningProfile?.walletId||e.miningStatus?.walletId||e.miningReadiness?.selectedWalletId||``).trim()||null,c=_(e.namedWallets,s),l=String(e.federationBond?.walletId??``).trim()||null,u=_(e.namedWallets,l);return{admin:e.status?t===`webauthn`&&n?{title:`Wallet Control Passkey`,summary:`Ready`,detail:`Use this passkey for reviewed sends and policy changes.`,tone:`success`}:t===`webauthn`?{title:`Wallet Control Passkey`,summary:`Not ready`,detail:`Enroll one passkey before reviewed wallet sends or policy changes.`,tone:`warn`}:{title:`Wallet Control Passkey`,summary:`Not ready`,detail:`Wallet control currently relies on the signed-in session. Add a passkey before approving reviewed sends.`,tone:`warn`}:{title:`Wallet Control Passkey`,summary:`Wallet approval state unavailable`,detail:`Refresh the wallet surface before changing operator roles.`,tone:`neutral`},agent:o?{title:`Agent wallets`,summary:a.length>1?`${o.name} + ${a.length-1}`:o.name,detail:a.length>1?`Multiple Agent wallets can be selected by explicit @wallet:<id> handles. If no @wallet:<id> is specified, approved wallet actions use the primary Agent wallet fallback.`:`If no @wallet:<id> is specified, approved wallet actions use this default Agent wallet.`,tone:`success`,walletId:o.id}:a.length>0?{title:`Agent wallets`,summary:`${a.length} set · no primary`,detail:`Agent wallets can be selected by explicit @wallet:<id> handles. Set one default Agent wallet if approved actions should have a fallback.`,tone:`warn`,walletId:a[0]?.id}:r?{title:`Agent wallets`,summary:r,detail:`An Agent wallet is configured but not present in this wallet list right now. Refresh or repair the registry before paid Fased Network or skill wallet work.`,tone:`warn`,walletId:r}:{title:`Agent wallets`,summary:`Not set`,detail:`Mark at least one Agent wallet before paid Fased Network tasks, payment evidence, or skill wallet actions use a clear operator wallet.`,tone:`warn`},mining:c?{title:`SAT Mining`,summary:c.name,detail:`SAT mining uses the singleton @wallet:mining wallet for capital, cycle history, and restart recovery. Keep it separate from Agent wallets.`,tone:`success`,walletId:c.id}:s?{title:`SAT Mining`,summary:s,detail:`SAT runtime points at @wallet:mining, but that wallet is not visible in the current wallet list. Refresh mining and wallet state before SAT mining.`,tone:`warn`,walletId:s}:{title:`SAT Mining`,summary:`Not configured`,detail:`Create or import @wallet:mining in onboarding or CLI if you want SAT participation. Mining is optional and should not be assumed by Fased Network join.`,tone:`neutral`},bond:u?{title:`Fased Network Bond`,summary:u.name,detail:e.federationBond?.status===`active`?`This wallet currently holds the active SAT bond for Fased Network. Tier ${e.federationBond?.tier??`none`} · quota ${e.federationBond?.quotaBand??`standard`}.`:`This wallet is configured for Fased Network bond. Use the Fased Network page to open, increase, unlock, or re-prove the SAT bond.`,tone:e.federationBond?.status===`active`?`success`:e.federationBond?.status===`unlocking`?`warn`:`neutral`,walletId:u.id}:l?{title:`Fased Network Bond`,summary:l,detail:`A Fased Network bond Vault is configured but not visible in the current wallet list. Refresh wallet state or repair the local wallet registry before changing bond posture.`,tone:`warn`,walletId:l}:{title:`Fased Network Bond`,summary:`Not set`,detail:`Select a Vault wallet on Fased Network before longer-lived bond capital if you want bonded network access.`,tone:`neutral`},sharedWalletWarning:c&&a.some(e=>e.id===c.id)?`Agent and Mining wallets must stay separate. This singleton mining wallet is also marked Agent; use a dedicated Agent wallet and clear the Agent default before wallet work.`:null,miningWalletId:s,bondWalletId:l}}function C(e,t){return[]}function te(r,i,a){if(r!==String(i?.walletId??``).trim())return t;let o=i?.status??`none`,s=o===`active`?`bond-active`:o===`unlocking`?`bond-unlocking`:`bond`,c=o===`active`?`Fased Network bond active`:o===`unlocking`?`Fased Network bond unlocking`:`Fased Network bond wallet`;return e`
|
|
10
10
|
<button
|
|
11
11
|
type="button"
|
|
12
12
|
class="wallet-status-icon wallet-status-icon--button"
|
|
@@ -17,16 +17,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
17
17
|
>
|
|
18
18
|
${n.shield}
|
|
19
19
|
</button>
|
|
20
|
-
`}function
|
|
21
|
-
<span
|
|
22
|
-
class="wallet-status-icon"
|
|
23
|
-
data-state=${o?`vault-split-unlocked`:`vault-split-locked`}
|
|
24
|
-
title=${o?`Split-key window is open${i?.unlock?.expiresAt?` until ${N(i.unlock.expiresAt)}`:``}.`:`Split-key security is active and locked.`}
|
|
25
|
-
aria-label=${o?`Vault split-key unlocked`:`Vault split-key locked`}
|
|
26
|
-
>
|
|
27
|
-
${o?n.unlock:n.lock}
|
|
28
|
-
</span>
|
|
29
|
-
`:t;return e`
|
|
20
|
+
`}function ne(r){let{role:i}=r;if(i===`mining`)return t;if(i===`vault`)return e`
|
|
30
21
|
<span
|
|
31
22
|
class="wallet-status-icon"
|
|
32
23
|
data-state="vault-manual"
|
|
@@ -35,22 +26,21 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
35
26
|
>
|
|
36
27
|
${n.hand}
|
|
37
28
|
</span>
|
|
38
|
-
|
|
39
|
-
`}if(r.automationEnabled===void 0)return t;let c=r.automationEnabled;return e`
|
|
29
|
+
`;if(r.automationEnabled===void 0)return t;let a=r.automationEnabled;return e`
|
|
40
30
|
<span
|
|
41
31
|
class="wallet-status-icon"
|
|
42
|
-
data-state=${
|
|
43
|
-
title=${
|
|
44
|
-
aria-label=${
|
|
32
|
+
data-state=${a?`agent-auto-on`:`agent-auto-off`}
|
|
33
|
+
title=${a?`Agent auto policy is on. Background sends can run within approval policy, caps, allowlists, and skill grants.`:`Agent auto policy is off. Sends require manual approval.`}
|
|
34
|
+
aria-label=${a?`Agent auto on`:`Agent auto off`}
|
|
45
35
|
>
|
|
46
|
-
${
|
|
36
|
+
${a?n.zap:n.hand}
|
|
47
37
|
</span>
|
|
48
|
-
`}function
|
|
38
|
+
`}function w(t,n){let r=t.toLowerCase()===`ready`;return e`
|
|
49
39
|
<span class="wallet-lock-chip" data-state=${r?`unlocked`:`locked`} title=${n}>
|
|
50
40
|
<span class="wallet-lock-chip__dot"></span>
|
|
51
41
|
${r?`Ready`:`Not ready`}
|
|
52
42
|
</span>
|
|
53
|
-
`}function
|
|
43
|
+
`}function re(r){return r?.automation?.satSweep?.enabled?e`
|
|
54
44
|
<span
|
|
55
45
|
class="wallet-status-icon"
|
|
56
46
|
data-role="sweep-on"
|
|
@@ -58,18 +48,34 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
58
48
|
>
|
|
59
49
|
${n.arrowDown}
|
|
60
50
|
</span>
|
|
61
|
-
`:t}function
|
|
51
|
+
`:t}function ie(r){return r.walletId===r.props.walletDetailsWalletId?(r.role===`agent`?[r.props.policyCapsEnabled?{dataRole:`policy-on`,title:`Caps active`,icon:n.shield}:null,r.props.recurringTransferEnabled?{dataRole:`policy-on`,title:`Recurring send active`,icon:n.send}:null,r.props.policySkillsEnabled?{dataRole:`policy-on`,title:`Skill wallet access gate is active. Individual skills still need explicit Wallet > Skill Grants.`,icon:n.spark}:null]:r.role===`vault`?[r.props.policyCapsEnabled?{dataRole:`policy-on`,title:`Vault caps active`,icon:n.shield}:null]:[]).filter(e=>e!==null).map(t=>e`
|
|
62
52
|
<span class="wallet-status-icon" data-role=${t.dataRole} title=${t.title}>
|
|
63
53
|
${t.icon}
|
|
64
54
|
</span>
|
|
65
|
-
`):t}function
|
|
55
|
+
`):t}function T(e,t){let n=e===String(t.defaultWalletId??``).trim(),r=!n&&e===m(t),i=b(_(t.namedWallets,e)),a=!!(i&&i!==`agent`);return{label:n?`Clear`:`Primary`,disabled:t.settingsBusy||r||a,title:r?`Agent and Mining wallets must stay separate. Create a dedicated Agent wallet instead.`:a?`Wallet purpose is permanent. Create a new Agent wallet instead of changing this wallet.`:n?`Clear this wallet as the primary Agent wallet. Existing Agent roles stay unchanged.`:`Make this wallet the primary Agent fallback. Other Agent wallets can still be selected by @wallet handle.`}}function E(e,t){if(e===m(t))return`mining`;let n=_(t.namedWallets,e);return b(n)===`mining`?`mining`:x(n,t.defaultWalletId)?`agent`:`vault`}function D(e){switch(e){case`mining`:return 0;case`vault`:return 1;case`agent`:return 2}}function O(e,t){let n=String(t.defaultWalletId??``).trim();return e.toSorted((e,r)=>{let i=E(e.id,t),a=E(r.id,t),o=D(i)-D(a);if(o!==0)return o;if(i===`agent`&&a===`agent`){if(e.id===n&&r.id!==n)return-1;if(r.id===n&&e.id!==n)return 1}return e.name.localeCompare(r.name)||e.id.localeCompare(r.id)})}function k(e){let t=String(e??``).trim();if(!t)return`0`;try{let e=BigInt(t),n=100000000000n,r=e/n,i=(e%n).toString().padStart(11,`0`).replace(/0+$/,``).slice(0,6);return i?`${r}.${i}`:`${r}`}catch{return`0`}}function A(e){let t=String(e??``).trim();if(!t||!/^\d+(\.\d{0,11})?$/.test(t))return`0`;let[n,r=``]=t.split(`.`);return(BigInt(n||`0`)*100000000000n+BigInt((r+`00000000000`).slice(0,11)||`0`)).toString()}function j(e,t,n={}){try{let t=BigInt(e),r=10n**9n,i=t/r,a=(t%r).toString().padStart(9,`0`).replace(/0+$/,``),o=a?`${i.toString()}.${a}`:i.toString();return n.hideUnit?o:`${o} SOL`}catch{return`—`}}function M(e,t=`n/a`){return typeof e==`string`?e.trim()||t:typeof e==`number`||typeof e==`boolean`||typeof e==`bigint`?String(e):t}function N(e){return M(e,`n/a`).toLowerCase()===`solana`?`SOL`:M(e,`n/a`)}function P(e){if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`bigint`)return null;let t=String(e).trim().toLowerCase();return t===`solana`||t===`sol`?`solana`:null}function F(e,t){if(typeof e!=`string`&&typeof e!=`number`&&typeof e!=`bigint`)return`n/a`;let n=String(e).trim();if(!n)return`n/a`;let r=P(t);if(!r)return n;try{return j(n,r)}catch{return n}}function I(e,t){let n=String(e??``).trim();if(!n||typeof t!=`number`||!Number.isFinite(t)||t<0)return null;try{let e=10n**BigInt(t),r=BigInt(n),i=r/e,a=(r%e).toString().padStart(t,`0`).replace(/0+$/,``);if(!a)return i.toString();let o=a.slice(0,6).replace(/0+$/,``);return o?`${i.toString()}.${o}`:i.toString()}catch{return null}}function L(e,t){return typeof e[t]==`string`?String(e[t]).trim():``}function R(e,t){let n=e[t];if(typeof n==`number`&&Number.isFinite(n))return n;if(typeof n==`string`&&n.trim()){let e=Number(n);return Number.isFinite(e)?e:null}return null}function z(e){let t=e.trim();if(!/^[0-9]+(\.[0-9]+)?$/.test(t))return t;let n=Number(t);return Number.isFinite(n)?n>0&&n<1e-6?`<0.000001`:new Intl.NumberFormat(`en-US`,{minimumFractionDigits:0,maximumFractionDigits:Math.abs(n)>=1?2:6}).format(n):t}function ae(e){let t=P(e.details.chain),n=L(e.details,`program`);if(t===`solana`&&n){let t=Array.isArray(e.balances?.assets?.solana)?e.balances.assets.solana.find(e=>!e.isNative&&e.program===n):void 0,r=L(e.details,`assetSymbol`)||t?.symbol||`SPL`,i=we({isNative:!1,program:n,symbol:r,name:L(e.details,`assetName`)||t?.name||``})?`SPL`:r,a=L(e.details,`amountDisplay`);if(a)return`${z(a)} ${i}`;let o=R(e.details,`assetDecimals`)??t?.decimals,s=I(M(e.details.amount,``),o);if(s)return`${z(s)} ${i}`;let c=M(e.details.amount,``);return c?`${c} raw ${i}`:`n/a`}return F(e.details.amount,t)}function B(e){return{name:String(e.payload.assetName??``).trim()||null,symbol:String(e.payload.assetSymbol??``).trim()||null,program:String(e.payload.program??``).trim()||null}}function oe(e){if(e.request.payload.actionKind===`solana_swap`){let t=String(e.request.payload.inputSymbol??``).trim()||`SOL`,n=String(e.request.payload.outputSymbol??``).trim()||(e.request.payload.outputMint?Ce(e.request.payload.outputMint):`token`),r=typeof e.request.payload.inputDecimals==`number`&&Number.isFinite(e.request.payload.inputDecimals)?e.request.payload.inputDecimals:Number(c),i=String(e.request.payload.amountDisplay??``).trim()||I(e.request.payload.amount,r)||``;return{amountValueText:i?`${Y(i)} ${t}`:F(e.request.payload.amount,e.request.payload.chain),assetPrimaryText:`${t} -> ${n}`,assetSecondaryText:e.request.payload.routeLabel?`Jupiter · ${e.request.payload.routeLabel}`:`Jupiter swap`,name:String(e.request.payload.outputName??``).trim()||null,symbol:n,program:e.request.payload.outputMint??null,usesFallbackIdentity:!1}}let t=B(e.request),n=t.program,r=n&&Array.isArray(e.balances?.assets?.solana)?e.balances.assets.solana.find(e=>e.program===n):void 0,i=t.symbol??r?.symbol??null,a=t.name??r?.name??null,o=we({isNative:!1,program:n??``,symbol:i??``,name:a??``}),s=String(e.request.payload.amountDisplay??``).trim()||I(e.request.payload.amount,r?.decimals)||``;return s?{amountValueText:Y(s),assetPrimaryText:o?i:a??i??n,assetSecondaryText:!o&&i&&a&&i!==a?i:null,name:a,symbol:i,program:n,usesFallbackIdentity:o}:{amountValueText:F(e.request.payload.amount,e.request.payload.chain),assetPrimaryText:o?i:a??i??n,assetSecondaryText:!o&&i&&a&&i!==a?i:null,name:a,symbol:i,program:n,usesFallbackIdentity:o}}function se(e){let t=String(e.request.payload.walletId??``).trim(),n=String(e.request.payload.walletName??``).trim(),r=e.request.payload.chain,i=_(e.namedWallets,t)??(n?e.namedWallets.find(e=>e.name.trim().toLowerCase()===n.toLowerCase()):void 0),a=i&&J(i,r)||null;return{fromLabel:i?.name?.trim()||n||t||null,fromAddress:a,toAddress:String(e.request.payload.to??``).trim()||null}}function ce(n){let r=n.request.approvalDiff??n.request.simulation?.diff;if(!r)return t;let i=r.fromWalletName||n.endpoints.fromLabel||(r.fromWalletId?`@wallet:${r.fromWalletId}`:`wallet`),a=r.amountDisplay||n.display.amountValueText||r.amount||`amount`,o=r.token||n.display.assetPrimaryText||r.mint||r.chain,s=r.to||n.endpoints.toAddress||`destination`,c=[r.source,r.skillId?`skill ${r.skillId}`:``,r.taskId?`task ${r.taskId}`:``].filter(Boolean).join(` · `);return e`
|
|
66
56
|
<div class="wallet-approval-diff">
|
|
67
57
|
<span>Spend <strong>${a}</strong> ${o?e`<span>${o}</span>`:t}</span>
|
|
68
58
|
<span>from <strong>${i}</strong> <span class="muted">(${r.fromRole})</span></span>
|
|
69
59
|
<span>to <span class="mono">${X(s,8,6)}</span></span>
|
|
70
60
|
${c?e`<span class="muted">triggered by ${c}</span>`:t}
|
|
71
61
|
</div>
|
|
72
|
-
`}function
|
|
62
|
+
`}function V(e){return e&&typeof e==`object`&&!Array.isArray(e)?e:null}function H(e){if(typeof e==`string`)return e.trim()||null;if(typeof e==`number`&&Number.isFinite(e))return String(e);if(typeof e==`boolean`)return e?`yes`:`no`;if(Array.isArray(e)){let t=e.map(e=>H(e)).filter(Boolean);return t.length>0?t.join(`, `):null}return null}function le(n){let r=V(n.payload.signerSemanticIntent),i=H(r?.type);if(!r||!i)return t;let a=[],o=(e,t)=>{let n=H(t);n&&a.push({label:e,value:n})},s=[];if(i.startsWith(`solana.jupiter.`)){let e=V(r.jupiter),t=V(e?.trigger);if(o(`Owner`,e?.owner),o(`Input mint`,e?.inputMint),o(`Output mint`,e?.outputMint),o(`Input amount`,e?.inputAmount),o(`Maximum input`,e?.maxInputAmount),o(`Minimum output`,e?.minimumOutputAmount),o(`Fee ceiling (lamports)`,e?.maxFeeLamports),o(`Source token account`,e?.sourceTokenAccount),o(`Destination token account`,e?.destinationTokenAccount),o(`Programs`,e?.programs),o(`Trigger operation`,t?.operation),o(`Trigger program`,t?.program),o(`Trigger order ID`,t?.order),o(`Trigger mint`,t?.triggerMint),o(`Condition`,t?.condition),o(`Target price (USD)`,t?.targetPriceUsd),o(`Slippage (bps)`,t?.slippageBps),o(`Order expiry`,t?.expiresAt),o(`Expected order state`,t?.expectedOrderState),i.includes(`.trigger.`)){let n=H(t?.operation);s=(n===`create`?[[`input mint`,e?.inputMint],[`output mint`,e?.outputMint],[`exact input amount`,e?.inputAmount],[`trigger mint`,t?.triggerMint],[`condition`,t?.condition],[`target price`,t?.targetPriceUsd],[`slippage`,t?.slippageBps],[`order expiry`,t?.expiresAt],[`expected new state`,t?.expectedOrderState]]:n===`cancel`?[[`order ID`,t?.order],[`refund mint`,e?.outputMint],[`minimum refund`,e?.minimumOutputAmount],[`refund destination`,e?.destinationTokenAccount],[`expected open state`,t?.expectedOrderState]]:[[`operation`,t?.operation]]).filter(e=>H(e[1])===null).map(e=>String(e[0]));let r=[[`vault`,t?.vault],[`external request ID`,t?.requestId],[`source token account`,e?.sourceTokenAccount],...n===`create`?[[`destination token account`,e?.destinationTokenAccount]]:[]].filter(e=>H(e[1])!==null).map(e=>String(e[0]));s.push(...r.map(e=>`remove caller-provided ${e}`))}}else if(i===`solana.nativeTransfer`)o(`Destination`,r.destination),o(`Lamports`,r.lamports);else if(i===`solana.splTransferChecked`)o(`Token program`,r.tokenProgram),o(`Mint`,r.mint),o(`Destination`,r.destination),o(`Amount`,r.amount);else if(i===`solana.vaultBondAction`){let e=V(r.context);o(`Cluster`,r.cluster),o(`Vault action`,r.action),o(`Program`,r.programId),o(`Target authority`,e?.targetAuthority),o(`Dispute authority`,e?.disputeAuthority),o(`Interval start cycle`,e?.intervalStartCycleId),o(`Registry page`,e?.registryPageIndex),o(`Miner authorities`,e?.minerAuthorities),o(`Front cycle IDs`,e?.frontCycleIds),o(`Back cycle IDs`,e?.backCycleIds)}else if(i===`federation.bondChallenge`){let e=V(r.federation);o(`Challenge ID`,e?.challengeId),o(`Bond ID`,e?.bondId),o(`Bond tier`,e?.tier),o(`Bond amount`,e?.amountRaw),o(`Federation handle`,e?.handle),o(`Node ID`,e?.nodeId),o(`Token ID`,e?.tokenId),o(`Federation origin`,e?.federationOrigin),o(`Challenge expiry`,e?.expiresAt)}return e`
|
|
63
|
+
<div class="wallet-approval-diff" style="margin-top: 6px;">
|
|
64
|
+
<span><strong>Signer intent</strong> <span class="mono">${i}</span></span>
|
|
65
|
+
${a.map(t=>e`
|
|
66
|
+
<span>
|
|
67
|
+
${t.label}:
|
|
68
|
+
<span class="mono" style="overflow-wrap: anywhere;">${t.value}</span>
|
|
69
|
+
</span>
|
|
70
|
+
`)}
|
|
71
|
+
${s.length>0?e`
|
|
72
|
+
<span class="muted">
|
|
73
|
+
Invalid or incomplete signer binding: ${s.join(`, `)}. Do not
|
|
74
|
+
approve this Trigger review.
|
|
75
|
+
</span>
|
|
76
|
+
`:t}
|
|
77
|
+
</div>
|
|
78
|
+
`}function U(e){return e.replace(/\.0+$/,``).replace(/(\.\d*?)0+$/,`$1`)}function W(e,t){let n=String(e??``).trim();if(!n)return`0`;try{let e=t===`SOL`?c:l,r=Number(n)/10**Number(e);if(!Number.isFinite(r))return`0`;let i=Math.abs(r);return t===`SAT`?U(i>=1e3?r.toFixed(1):i>=1?r.toFixed(2):r.toFixed(3)):i>=1||i>=.01?U(r.toFixed(2)):i>0?`<0.01`:`0`}catch{return n}}function G(e,t){let n=String(e??``).trim();if(!n)return`—`;let r=RegExp(`\\s*${t}$`,`i`);return n.replace(r,``).trim()||`0`}function K(e){return String(e.miningProfile?.walletId??e.miningStatus?.walletId??e.miningReadiness?.selectedWalletId??``).trim()}function q(e,t,n){if(typeof e.balances?.solana==`string`&&e.balances.solana.trim())return Y(G(j(e.balances.solana,`solana`),`SOL`));if(n){let e=String(t.miningReadiness?.balances.solBalanceDisplay??``).trim();if(e)return Y(G(e,`SOL`));let n=String(t.miningStatus?.currentSolBalanceLamports??``).trim();if(n)return Y(W(n,`SOL`))}return e.addresses?.solana?t.balancesLoading?`Loading`:`0`:t.balancesLoading?`Loading`:`—`}function J(e,t){return e&&e.addresses?.solana||``}function ue(e,t){return!e||t?.walletId!==e.id?[]:Array.isArray(t.assets?.solana)?t.assets.solana:[]}function de(e,t){if(!e)return[];let n=[],r=K(t)===e.id,i=ue(e,t.balances);if(i.length>0)for(let e of i)n.push({id:e.id,chain:`solana`,symbol:e.symbol,name:e.name,amountDisplay:e.amountDisplay,amountRaw:e.amountRaw,decimals:e.decimals,isNative:e.isNative,program:e.program,tokenProgramId:e.tokenProgramId,address:e.address,logoUri:e.logoUri,verificationStatus:e.verificationStatus,priceUsd:e.priceUsd,valueUsd:e.valueUsd,tags:e.tags});else n.push({id:`solana:native`,chain:`solana`,symbol:`SOL`,name:`Solana`,amountDisplay:q(e,t,r),amountRaw:e.balances?.solana,isNative:!0,address:e.addresses?.solana});return n}function Y(e){let t=e.trim();if(!t||t===`—`||t.toLowerCase()===`loading`)return e;let n=Number.parseFloat(t.replaceAll(`,`,``));return Number.isFinite(n)?n>0&&n<.01?`<0.01`:new Intl.NumberFormat(`en-US`,{minimumFractionDigits:0,maximumFractionDigits:2}).format(n):e}function fe(e){let t=e.mint?.trim();if(!t)return``;let n=e.drafts[t]?.[e.field];if(n!==void 0)return(e.drafts[t]?.decimals??-1)<0?I(n,e.decimals)??n:n;let r=e.settings?.policy.solana.tokenCaps?.[t]?.[e.field];return I(r,e.decimals)??``}function pe(e,t,n,r,i){let a=t?.trim();if(!a)return;let o=e.policySolanaTokenCaps[a],s=o&&o.decimals<0?{decimals:n,maxPerTx:I(o.maxPerTx,n)??``,maxDaily:I(o.maxDaily,n)??``}:o??{decimals:n};e.onPolicyDraftChange({solanaTokenCaps:{...e.policySolanaTokenCaps,[a]:{...s,decimals:n,[r]:i}}})}function me(e){let t=e.policyTokenCapMint.trim();if(!t)return;let n=Number.parseInt(e.policyTokenCapDecimals.trim(),10),r=Number.isFinite(n)?Math.max(0,Math.min(18,n)):0;e.onPolicyDraftChange({solanaTokenCaps:{...e.policySolanaTokenCaps,[t]:{decimals:r,maxPerTx:e.policyTokenCapMaxPerTx.trim(),maxDaily:e.policyTokenCapMaxDaily.trim()}},tokenCapMint:``,tokenCapDecimals:``,tokenCapMaxPerTx:``,tokenCapMaxDaily:``})}function he(e){let t=[],n=new Set;for(let r of e.selectedWalletTokens){let e=r.program?.trim();if(r.isNative||!e||n.has(e))continue;let i=X(e,2,2),a=String(r.symbol||``).trim(),o=!a||a===`Token`||a.includes(`...`)||a.includes(`…`)||a.length>8?i:a;n.add(e),t.push({key:e,label:o,detail:i,mint:e,decimals:r.decimals??0,logo:_e(r,20)})}let r=new Set([...Object.keys(e.props.settings?.policy.solana.tokenCaps??{}),...Object.keys(e.props.policySolanaTokenCaps??{})]);for(let i of r){let r=i.trim();!r||n.has(r)||(n.add(r),t.push({key:r,label:X(r,2,2),detail:X(r,2,2),mint:r,decimals:e.props.policySolanaTokenCaps[r]?.decimals??-1}))}return t}function ge(n){let{props:r,settings:i,policyDisplay:a,cardRole:o,selectedWalletId:s,cardWalletCanSpendSolana:c,selectedWalletTokens:l,canEditPolicy:u}=n,d=r.policyCapsEnabled===!0,p=he({props:r,selectedWalletTokens:l});return e`
|
|
73
79
|
<div class="field">
|
|
74
80
|
<div class="wallet-spend-limit-row" style="align-items: end;">
|
|
75
81
|
<label class="field">
|
|
@@ -114,7 +120,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
114
120
|
<input
|
|
115
121
|
aria-label="Daily SOL cap"
|
|
116
122
|
placeholder="5.0"
|
|
117
|
-
.value=${r.policySolMaxDaily||a?.solana.maxDaily.human.split(` `)[0]||
|
|
123
|
+
.value=${r.policySolMaxDaily||a?.solana.maxDaily.human.split(` `)[0]||j(i.policy.solana.maxDaily,`solana`,{hideUnit:!0})}
|
|
118
124
|
?disabled=${r.settingsBusy||!u}
|
|
119
125
|
@input=${e=>r.onPolicyDraftChange({solMaxDaily:e.target.value})}
|
|
120
126
|
/>
|
|
@@ -127,7 +133,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
127
133
|
<input
|
|
128
134
|
aria-label="Per transaction SOL cap"
|
|
129
135
|
placeholder="1.0"
|
|
130
|
-
.value=${r.policySolMaxPerTx||a?.solana.maxPerTx.human.split(` `)[0]||
|
|
136
|
+
.value=${r.policySolMaxPerTx||a?.solana.maxPerTx.human.split(` `)[0]||j(i.policy.solana.maxPerTx,`solana`,{hideUnit:!0})}
|
|
131
137
|
?disabled=${r.settingsBusy||!u}
|
|
132
138
|
@input=${e=>r.onPolicyDraftChange({solMaxPerTx:e.target.value})}
|
|
133
139
|
/>
|
|
@@ -144,9 +150,9 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
144
150
|
<input
|
|
145
151
|
aria-label=${`Daily cap for ${t.label}`}
|
|
146
152
|
placeholder="0"
|
|
147
|
-
.value=${
|
|
153
|
+
.value=${fe({drafts:r.policySolanaTokenCaps,settings:i,mint:t.mint,field:`maxDaily`,decimals:t.decimals})}
|
|
148
154
|
?disabled=${r.settingsBusy||!u}
|
|
149
|
-
@input=${e=>
|
|
155
|
+
@input=${e=>pe(r,t.mint,t.decimals,`maxDaily`,e.target.value)}
|
|
150
156
|
/>
|
|
151
157
|
</label>
|
|
152
158
|
<label class="field wallet-cap-field">
|
|
@@ -157,9 +163,9 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
157
163
|
<input
|
|
158
164
|
aria-label=${`Per transaction cap for ${t.label}`}
|
|
159
165
|
placeholder="0"
|
|
160
|
-
.value=${
|
|
166
|
+
.value=${fe({drafts:r.policySolanaTokenCaps,settings:i,mint:t.mint,field:`maxPerTx`,decimals:t.decimals})}
|
|
161
167
|
?disabled=${r.settingsBusy||!u}
|
|
162
|
-
@input=${e=>
|
|
168
|
+
@input=${e=>pe(r,t.mint,t.decimals,`maxPerTx`,e.target.value)}
|
|
163
169
|
/>
|
|
164
170
|
</label>
|
|
165
171
|
</div>
|
|
@@ -187,7 +193,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
187
193
|
${r.policyTokenSearchLoading?`Searching...`:`Search`}
|
|
188
194
|
</button>
|
|
189
195
|
</div>
|
|
190
|
-
${r.policyTokenSearchError?e`<div class="wallet-
|
|
196
|
+
${r.policyTokenSearchError?e`<div class="wallet-security-note error" style="margin-top: 8px;">${r.policyTokenSearchError}</div>`:t}
|
|
191
197
|
${(r.policyTokenSearchResults??[]).length>0?e`
|
|
192
198
|
<div class="wallet-token-list" style="margin-top: 8px;">
|
|
193
199
|
${(r.policyTokenSearchResults??[]).map(n=>e`
|
|
@@ -256,7 +262,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
256
262
|
<button
|
|
257
263
|
class="btn"
|
|
258
264
|
?disabled=${r.settingsBusy||!u||!(r.policyTokenCapMint??``).trim()}
|
|
259
|
-
@click=${()=>
|
|
265
|
+
@click=${()=>me(r)}
|
|
260
266
|
>
|
|
261
267
|
Add
|
|
262
268
|
</button>
|
|
@@ -279,32 +285,32 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
279
285
|
</details>
|
|
280
286
|
`:t}
|
|
281
287
|
</div>
|
|
282
|
-
`}function
|
|
288
|
+
`}function _e(t,n=28){let r=t.symbol.trim().slice(0,1).toUpperCase()||`?`,i=`width:${n}px;height:${n}px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:rgba(255,255,255,0.08);color:rgba(255,255,255,0.92);font-weight:600;font-size:0.8em;overflow:hidden;flex-shrink:0;`;return t.logoUri?e`<span style=${i}
|
|
283
289
|
><img
|
|
284
290
|
src=${t.logoUri}
|
|
285
291
|
alt=${`${t.symbol} logo`}
|
|
286
292
|
style=${`width:${n}px;height:${n}px;object-fit:cover;display:block;`}
|
|
287
293
|
@error=${e=>{let t=e.currentTarget,n=t?.parentElement;t&&n&&(t.style.display=`none`,n.textContent=r)}}
|
|
288
294
|
/></span
|
|
289
|
-
>`:e`<span style=${i}>${r}</span>`}function
|
|
295
|
+
>`:e`<span style=${i}>${r}</span>`}function ve(e,t){let n=de(e,t);if(n.length===0)return{options:n};let r=String(t.sendCreateForm.assetId??``).trim(),i=t.sendCreateForm.chain;return{selected:n.find(e=>e.id===r)??n.find(e=>e.chain===i&&e.isNative)??n.find(e=>e.chain===i)??n[0],options:n}}function ye(e){switch(e){case`send_requested`:return`Request created`;case`send_approved`:return`Approved`;case`send_rejected`:return`Rejected`;case`send_executed`:return`Executed`;case`send_failed`:return`Failed`;default:return e.replace(/_/g,` `)}}function be(e){let t=L(e.details??{},`actionKind`);return t===`solana_limit_order`?e.action===`send_executed`?`Limit order created`:e.action===`send_failed`?`Limit order failed`:`Limit order request`:t===`solana_limit_cancel`?e.action===`send_executed`?`Limit order cancelled`:e.action===`send_failed`?`Cancel failed`:`Cancel request`:ye(e.action)}function xe(e){switch(e){case`pending`:return n.loader;case`approved`:return n.check;case`executed`:return n.send;case`failed`:case`rejected`:case`expired`:return n.x;default:return n.fileText}}function Se(e){switch(e){case`send_requested`:return n.penLine;case`send_approved`:return n.check;case`send_rejected`:return n.x;case`send_executed`:return n.send;case`send_failed`:return n.bug;default:return n.fileText}}function X(e,t=8,n=6){let r=e.trim();return r?r.length<=t+n+1?r:`${r.slice(0,t)}...${r.slice(-n)}`:`—`}function Ce(e){let t=e.trim();return t?t.length<=12?t:`${t.slice(0,4)}…${t.slice(-4)}`:`TOKEN`}function we(e){if(!e||e.isNative||!e.program)return!1;let t=Ce(e.program);return String(e.symbol??``).trim().toUpperCase()===t.toUpperCase()&&String(e.name??``).trim()===`Token ${t}`}async function Te(e){let t=e.trim();if(!(!t||typeof navigator>`u`||!navigator.clipboard))try{await navigator.clipboard.writeText(t)}catch{}}function Ee(e){return e.replace(/[^a-zA-Z0-9_-]/g,`-`)||`wallet`}function De(e,t,n){if(typeof document>`u`)return;let r=document.getElementById(e);if(!r)return;let i=r.dataset.revealed===`true`;r.textContent=i?t:n,r.dataset.revealed=i?`false`:`true`}function Oe(r,i){let a=r.trim();return a?e`<button
|
|
290
296
|
type="button"
|
|
291
297
|
class="wallet-copy-btn"
|
|
292
298
|
title=${`Copy ${i}`}
|
|
293
299
|
aria-label=${`Copy ${i}`}
|
|
294
|
-
@click=${()=>void
|
|
300
|
+
@click=${()=>void Te(a)}
|
|
295
301
|
>
|
|
296
302
|
<span class="wallet-copy-btn__icon">${n.copy}</span>
|
|
297
|
-
</button>`:t}function
|
|
303
|
+
</button>`:t}function ke(n){let r=String(n.value??``).trim();if(!r)return t;let i=n.display.trim()||X(r);return e`<button
|
|
298
304
|
type="button"
|
|
299
305
|
class=${`wallet-copy-text ${n.className??``}`.trim()}
|
|
300
306
|
data-copied="false"
|
|
301
307
|
title=${n.title??`Copy ${n.label}`}
|
|
302
308
|
aria-label=${`Copy ${n.label}`}
|
|
303
|
-
@click=${e=>{
|
|
309
|
+
@click=${e=>{Te(r).then(()=>{let t=e.currentTarget;if(!t)return;let n=t.querySelector(`.wallet-copy-popover`);t.dataset.copied=`true`,n&&(n.textContent=`Copied`),window.setTimeout(()=>{n&&(n.textContent=`Copy`),t.dataset.copied=`false`},1200)})}}
|
|
304
310
|
>
|
|
305
311
|
<span class="wallet-copy-text__label">${i}</span>
|
|
306
312
|
<span class="wallet-copy-popover" aria-hidden="true">Copy</span>
|
|
307
|
-
</button>`}function
|
|
313
|
+
</button>`}function Ae(t,r){let i=`${t}: ${r}`;return e`<button
|
|
308
314
|
type="button"
|
|
309
315
|
class="wallet-icon-btn"
|
|
310
316
|
title=${i}
|
|
@@ -320,7 +326,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
320
326
|
aria-label=${i}
|
|
321
327
|
>
|
|
322
328
|
<span class="wallet-copy-btn__icon">${n.externalLink}</span>
|
|
323
|
-
</a>`:t}function Q(e,t,n){let r=String(n??``).trim();return!r||!e?null:t===`tx`?`https://solscan.io/tx/${encodeURIComponent(r)}`:`https://solscan.io/account/${encodeURIComponent(r)}`}function
|
|
329
|
+
</a>`:t}function Q(e,t,n){let r=String(n??``).trim();return!r||!e?null:t===`tx`?`https://solscan.io/tx/${encodeURIComponent(r)}`:`https://solscan.io/account/${encodeURIComponent(r)}`}function je(t,n,r=`neutral`,i={}){let a=i.title??t,o=e`<div class="wallet-balance-pill__value">${n}</div>`;return i.onClick?e`<button
|
|
324
330
|
type="button"
|
|
325
331
|
class="wallet-balance-pill wallet-balance-pill--button"
|
|
326
332
|
data-tone=${r}
|
|
@@ -333,10 +339,10 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
333
339
|
<span class="wallet-meta-row__label">${n.label}</span>
|
|
334
340
|
<span class="wallet-meta-row__value mono">${n.value}</span>
|
|
335
341
|
<span class="wallet-meta-row__actions">
|
|
336
|
-
${n.rawValue&&n.copyLabel?
|
|
342
|
+
${n.rawValue&&n.copyLabel?Oe(n.rawValue,n.copyLabel):t}
|
|
337
343
|
${Z(n.href,`Open ${n.label}`)}
|
|
338
344
|
</span>
|
|
339
|
-
</div>`}function
|
|
345
|
+
</div>`}function Me(n){let r=n.skillGrantDraft,i=n.skillGrantRows.find(e=>e.skillId===r.skillId)??n.skillGrantRows[0],o=(r.walletIds??``).split(`,`).map(e=>e.trim()).filter(Boolean),s=n.skillGrantBusy||!r.skillId.trim()||r.actions.length===0||o.length===0;return e`
|
|
340
346
|
<div id="wallet-skill-grants" class="card wallet-panel">
|
|
341
347
|
<div class="wallet-panel__head">
|
|
342
348
|
<div>
|
|
@@ -351,7 +357,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
351
357
|
${n.skillGrantsError?e`<div class="callout danger" style="margin-top: 12px;">${n.skillGrantsError}</div>`:t}
|
|
352
358
|
${n.skillGrantsMessage?e`<div class="callout success" style="margin-top: 12px;">${n.skillGrantsMessage}</div>`:t}
|
|
353
359
|
${n.skillGrantRows.length===0?e`
|
|
354
|
-
<div class="wallet-
|
|
360
|
+
<div class="wallet-security-note" style="margin-top: 12px">
|
|
355
361
|
No reviewed wallet-capable skills or existing wallet grants found yet.
|
|
356
362
|
</div>
|
|
357
363
|
`:e`
|
|
@@ -499,15 +505,15 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
499
505
|
</div>
|
|
500
506
|
`}
|
|
501
507
|
</div>
|
|
502
|
-
`}function
|
|
508
|
+
`}function Ne(n){let r=n.status,i=u(n);return e`
|
|
503
509
|
<div class="wallet-top-grid">
|
|
504
510
|
<div id="wallet-admin-control" class="card wallet-top-card">
|
|
505
511
|
<div class="wallet-top-card__head">
|
|
506
512
|
<div>
|
|
507
513
|
<div class="wallet-top-card__title-row">
|
|
508
514
|
<div class="card-title">Wallet Control Passkey</div>
|
|
509
|
-
${
|
|
510
|
-
${
|
|
515
|
+
${Ae(`Wallet Control Passkey`,`${i.detail} Use a device passkey such as Touch ID, Windows Hello, a phone passkey, or a supported security key.`)}
|
|
516
|
+
${w(i.summary,i.detail)}
|
|
511
517
|
</div>
|
|
512
518
|
</div>
|
|
513
519
|
</div>
|
|
@@ -537,27 +543,28 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
537
543
|
</button>
|
|
538
544
|
`:t}
|
|
539
545
|
</div>
|
|
540
|
-
<div class="wallet-
|
|
541
|
-
|
|
546
|
+
<div class="wallet-security-note" style="margin-top: 10px;">
|
|
547
|
+
Protects Gateway policy and administration changes. Native signer
|
|
548
|
+
wallets use a separate signer-owned WebAuthn credential for each exact
|
|
549
|
+
reviewed send.
|
|
542
550
|
</div>
|
|
543
551
|
${!i.enableVisible&&!i.enrollVisible?e`
|
|
544
552
|
<details class="wallet-advanced-box">
|
|
545
553
|
<summary>Manage passkey</summary>
|
|
546
554
|
${(r?.approvalAuth?.passkeys?.length??0)>0?e`
|
|
547
|
-
<div class="wallet-
|
|
555
|
+
<div class="wallet-security-device-list">
|
|
548
556
|
${r.approvalAuth.passkeys.map(t=>e`
|
|
549
|
-
<div class="wallet-
|
|
557
|
+
<div class="wallet-security-device-row">
|
|
550
558
|
<div>
|
|
551
559
|
<div>Label: ${t.label||`Wallet passkey`}</div>
|
|
552
|
-
<div class="wallet-
|
|
560
|
+
<div class="wallet-security-note">
|
|
553
561
|
Credential ID <span class="mono">${X(t.id)}</span>
|
|
554
562
|
· added ${new Date(t.createdAt).toLocaleString()}
|
|
555
563
|
</div>
|
|
556
564
|
</div>
|
|
557
565
|
<button
|
|
558
566
|
class="btn small"
|
|
559
|
-
|
|
560
|
-
?disabled=${n.passkeyBusy||!n.onDeletePasskey||s}
|
|
567
|
+
?disabled=${n.passkeyBusy||!n.onDeletePasskey}
|
|
561
568
|
@click=${()=>n.onDeletePasskey?.(t.id)}
|
|
562
569
|
>
|
|
563
570
|
Remove passkey
|
|
@@ -565,19 +572,14 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
565
572
|
</div>
|
|
566
573
|
`)}
|
|
567
574
|
</div>
|
|
568
|
-
${s?e`
|
|
569
|
-
<div class="wallet-custody-note" style="margin-top: 10px;">
|
|
570
|
-
${c}
|
|
571
|
-
</div>
|
|
572
|
-
`:t}
|
|
573
575
|
`:t}
|
|
574
576
|
</details>
|
|
575
577
|
`:t}
|
|
576
578
|
${n.passkeyError?e`<div class="callout danger">${n.passkeyError}</div>`:t}
|
|
577
579
|
</div>
|
|
578
580
|
</div>
|
|
579
|
-
`}function
|
|
580
|
-
${
|
|
581
|
+
`}function Pe(e){switch(e){case`send_executed`:case`send_approved`:return`success`;case`send_failed`:case`send_rejected`:return`danger`;case`send_requested`:return`warn`;default:return`neutral`}}function Fe(a){let c=a.status,l=a.settings,u=S(a),d=!!(a.error||a.settingsError||a.actionMessage||a.settingsMessage||u.sharedWalletWarning),p=a.auditEntries.filter(e=>[`send_requested`,`send_approved`,`send_rejected`,`send_executed`,`send_failed`].includes(e.action)).slice(0,48),m=p.length,h=Math.max(1,Math.ceil(m/s)),g=Math.min(Math.max(a.activityPage,1),h),v=(g-1)*s,y=p.slice(v,v+s),b=c?.capabilities?.canEditPolicy??!0,x=c?.capabilities?.canSend??!0,C=c?.policyDisplay,w=_(a.namedWallets,a.walletDetailsWalletId),T=O(a.namedWallets,a),D={enabled:!1,mode:`all`,percentage:100,minRaw:`1`,keepRaw:`0`,...a.miningProfile?.automation?.satSweep},j=a.namedWallets.filter(e=>e.id!==w?.id&&!!e.addresses?.solana),F=D.destinationAddress||!D.destinationWalletId?`external`:`wallet`,I=String(a.expandedWalletId??``).trim(),R=a.expandedPanel??``,z=(typeof window<`u`&&window.location.hash.replace(/^#/,``)===`wallet-skill-grants`?`skill-grants`:typeof window<`u`&&[`wallet-access`,`wallet-admin-control`].includes(window.location.hash.replace(/^#/,``))?`access`:null)??a.mainPanel??`wallets`,B=(a.providers??[]).filter(e=>(e.id===`local-socket-signer`||e.id===`turnkey`)&&e.operationsImplemented&&e.capabilities.operations.createWallet),V=a.createProvider??B[0]?.id??`local-socket-signer`,H=B.find(e=>e.id===V),U=!!(H?.enabled&&H.health.ok&&(!H.capabilities.requiresCredentials||H.credentialsConfigured)),W=e=>{if(a.onMainPanelChange?.(e),typeof window>`u`)return;let t=new URL(window.location.href);t.hash=e===`skill-grants`?`wallet-skill-grants`:e===`access`?`wallet-access`:``,window.history.replaceState({},``,t.toString())};return e`
|
|
582
|
+
${Ie(a)}
|
|
581
583
|
<style>
|
|
582
584
|
.wallet-dashboard {
|
|
583
585
|
display: grid;
|
|
@@ -805,31 +807,16 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
805
807
|
line-height: 1;
|
|
806
808
|
font-weight: 560;
|
|
807
809
|
}
|
|
808
|
-
.wallet-
|
|
809
|
-
display: grid;
|
|
810
|
-
gap: 12px;
|
|
811
|
-
}
|
|
812
|
-
.wallet-custody-fields {
|
|
813
|
-
display: grid;
|
|
814
|
-
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
815
|
-
gap: 12px;
|
|
816
|
-
}
|
|
817
|
-
.wallet-custody-actions {
|
|
818
|
-
display: flex;
|
|
819
|
-
flex-wrap: wrap;
|
|
820
|
-
gap: 10px;
|
|
821
|
-
align-items: center;
|
|
822
|
-
}
|
|
823
|
-
.wallet-custody-note {
|
|
810
|
+
.wallet-security-note {
|
|
824
811
|
color: var(--muted);
|
|
825
812
|
font-size: 13px;
|
|
826
813
|
line-height: 1.5;
|
|
827
814
|
}
|
|
828
|
-
.wallet-
|
|
815
|
+
.wallet-security-device-list {
|
|
829
816
|
display: grid;
|
|
830
817
|
gap: 10px;
|
|
831
818
|
}
|
|
832
|
-
.wallet-
|
|
819
|
+
.wallet-security-device-row {
|
|
833
820
|
display: flex;
|
|
834
821
|
justify-content: space-between;
|
|
835
822
|
gap: 12px;
|
|
@@ -838,17 +825,6 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
838
825
|
border-radius: 12px;
|
|
839
826
|
padding: 10px 12px;
|
|
840
827
|
}
|
|
841
|
-
.wallet-custody-remember {
|
|
842
|
-
display: inline-flex;
|
|
843
|
-
align-items: center;
|
|
844
|
-
gap: 8px;
|
|
845
|
-
color: var(--muted);
|
|
846
|
-
font-size: 13px;
|
|
847
|
-
}
|
|
848
|
-
.wallet-custody-stored {
|
|
849
|
-
color: var(--ok);
|
|
850
|
-
font-size: 12px;
|
|
851
|
-
}
|
|
852
828
|
.wallet-inline-badges {
|
|
853
829
|
display: inline-flex;
|
|
854
830
|
align-items: center;
|
|
@@ -1567,7 +1543,34 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1567
1543
|
font-size: 12px;
|
|
1568
1544
|
line-height: 1.45;
|
|
1569
1545
|
}
|
|
1546
|
+
.wallet-create-panel {
|
|
1547
|
+
border: 1px solid var(--border);
|
|
1548
|
+
border-radius: 12px;
|
|
1549
|
+
background: var(--surface-muted);
|
|
1550
|
+
padding: 10px 12px;
|
|
1551
|
+
}
|
|
1552
|
+
.wallet-create-panel > summary {
|
|
1553
|
+
cursor: pointer;
|
|
1554
|
+
color: var(--text-strong);
|
|
1555
|
+
font-weight: 700;
|
|
1556
|
+
}
|
|
1557
|
+
.wallet-create-grid {
|
|
1558
|
+
display: grid;
|
|
1559
|
+
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
1560
|
+
gap: 10px;
|
|
1561
|
+
margin-top: 12px;
|
|
1562
|
+
}
|
|
1563
|
+
.wallet-create-actions {
|
|
1564
|
+
align-items: center;
|
|
1565
|
+
display: flex;
|
|
1566
|
+
flex-wrap: wrap;
|
|
1567
|
+
gap: 10px;
|
|
1568
|
+
grid-column: 1 / -1;
|
|
1569
|
+
}
|
|
1570
1570
|
@media (max-width: 720px) {
|
|
1571
|
+
.wallet-create-grid {
|
|
1572
|
+
grid-template-columns: 1fr;
|
|
1573
|
+
}
|
|
1571
1574
|
.wallet-spend-limit-row {
|
|
1572
1575
|
grid-template-columns: 1fr;
|
|
1573
1576
|
}
|
|
@@ -1714,13 +1717,9 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1714
1717
|
.wallet-meta-row {
|
|
1715
1718
|
grid-template-columns: minmax(54px, auto) minmax(0, 1fr) auto;
|
|
1716
1719
|
}
|
|
1717
|
-
.wallet-custody-fields {
|
|
1718
|
-
grid-template-columns: 1fr;
|
|
1719
|
-
}
|
|
1720
1720
|
}
|
|
1721
1721
|
</style>
|
|
1722
1722
|
<section id="wallet-dashboard" class="wallet-dashboard">
|
|
1723
|
-
${t}
|
|
1724
1723
|
${d?e`
|
|
1725
1724
|
<div class="wallet-message-stack">
|
|
1726
1725
|
${a.error?e`<div class="callout danger">${a.error}</div>`:t}
|
|
@@ -1735,29 +1734,37 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1735
1734
|
<button
|
|
1736
1735
|
class="btn"
|
|
1737
1736
|
role="tab"
|
|
1738
|
-
aria-selected=${
|
|
1739
|
-
@click=${()=>
|
|
1737
|
+
aria-selected=${z===`wallets`?`true`:`false`}
|
|
1738
|
+
@click=${()=>W(`wallets`)}
|
|
1740
1739
|
>
|
|
1741
1740
|
Wallets
|
|
1742
1741
|
</button>
|
|
1743
1742
|
<button
|
|
1744
1743
|
class="btn"
|
|
1745
1744
|
role="tab"
|
|
1746
|
-
aria-selected=${
|
|
1747
|
-
@click=${()=>
|
|
1745
|
+
aria-selected=${z===`access`?`true`:`false`}
|
|
1746
|
+
@click=${()=>W(`access`)}
|
|
1748
1747
|
>
|
|
1749
1748
|
Access
|
|
1750
1749
|
</button>
|
|
1751
1750
|
<button
|
|
1752
1751
|
class="btn"
|
|
1753
1752
|
role="tab"
|
|
1754
|
-
aria-selected=${
|
|
1755
|
-
@click=${()=>
|
|
1753
|
+
aria-selected=${z===`skill-grants`?`true`:`false`}
|
|
1754
|
+
@click=${()=>W(`skill-grants`)}
|
|
1756
1755
|
>
|
|
1757
1756
|
Skill Grants
|
|
1758
1757
|
</button>
|
|
1759
|
-
${
|
|
1758
|
+
${z===`wallets`?e`
|
|
1760
1759
|
<span class="wallet-main-tabs__spacer"></span>
|
|
1760
|
+
<button
|
|
1761
|
+
class="btn small"
|
|
1762
|
+
?disabled=${a.settingsBusy}
|
|
1763
|
+
@click=${a.onAttachWalletStandardVault}
|
|
1764
|
+
title="Attach a Solana Wallet Standard account. Wallet discovery cannot prove hardware backing; verify a reserve account on its device."
|
|
1765
|
+
>
|
|
1766
|
+
Attach Wallet Standard Vault
|
|
1767
|
+
</button>
|
|
1761
1768
|
<button
|
|
1762
1769
|
class="btn small"
|
|
1763
1770
|
?disabled=${a.loading||a.balancesLoading}
|
|
@@ -1767,19 +1774,77 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1767
1774
|
</button>
|
|
1768
1775
|
`:t}
|
|
1769
1776
|
</div>
|
|
1770
|
-
${
|
|
1777
|
+
${z===`skill-grants`?Me(a):z===`access`?Ne(a):e`<div id="wallet-wallets" class="wallet-wallets-section">
|
|
1778
|
+
<details class="wallet-create-panel">
|
|
1779
|
+
<summary>Create a signer-owned wallet</summary>
|
|
1780
|
+
<div class="wallet-create-grid">
|
|
1781
|
+
<label class="field">
|
|
1782
|
+
<span>Name</span>
|
|
1783
|
+
<input
|
|
1784
|
+
.value=${a.createName??``}
|
|
1785
|
+
placeholder="Primary Agent wallet"
|
|
1786
|
+
autocomplete="off"
|
|
1787
|
+
@input=${e=>a.onCreateNameChange?.(e.target.value)}
|
|
1788
|
+
/>
|
|
1789
|
+
</label>
|
|
1790
|
+
<label class="field">
|
|
1791
|
+
<span>Permanent wallet ID</span>
|
|
1792
|
+
<input
|
|
1793
|
+
.value=${a.createId??``}
|
|
1794
|
+
placeholder=${V===`local-socket-signer`?`agent-primary (required)`:`optional local label`}
|
|
1795
|
+
autocomplete="off"
|
|
1796
|
+
@input=${e=>a.onCreateIdChange?.(e.target.value)}
|
|
1797
|
+
/>
|
|
1798
|
+
</label>
|
|
1799
|
+
<label class="field">
|
|
1800
|
+
<span>Custody provider</span>
|
|
1801
|
+
<select
|
|
1802
|
+
.value=${V}
|
|
1803
|
+
@change=${e=>a.onCreateProviderChange?.(e.target.value)}
|
|
1804
|
+
>
|
|
1805
|
+
${B.map(t=>e`
|
|
1806
|
+
<option value=${t.id}>
|
|
1807
|
+
${t.label||(t.id===`local-socket-signer`?`Native Go signer`:`Turnkey`)}
|
|
1808
|
+
</option>
|
|
1809
|
+
`)}
|
|
1810
|
+
</select>
|
|
1811
|
+
</label>
|
|
1812
|
+
<label class="field">
|
|
1813
|
+
<span>Wallet role</span>
|
|
1814
|
+
<select
|
|
1815
|
+
.value=${a.createRole??`agent`}
|
|
1816
|
+
@change=${e=>a.onCreateRoleChange?.(e.target.value)}
|
|
1817
|
+
>
|
|
1818
|
+
<option value="agent">Agent — capped automation</option>
|
|
1819
|
+
<option value="vault">Vault — reviewed operations only</option>
|
|
1820
|
+
</select>
|
|
1821
|
+
</label>
|
|
1822
|
+
<div class="wallet-create-actions">
|
|
1823
|
+
<button
|
|
1824
|
+
class="btn primary"
|
|
1825
|
+
?disabled=${a.settingsBusy||!U}
|
|
1826
|
+
@click=${a.onCreateWallet}
|
|
1827
|
+
>
|
|
1828
|
+
${a.settingsBusy?`Creating...`:`Create wallet`}
|
|
1829
|
+
</button>
|
|
1830
|
+
<span class="muted">
|
|
1831
|
+
${H?H.enabled?H.health.ok?H.capabilities.requiresCredentials&&!H.credentialsConfigured?`Configure restricted provider credentials before creating a wallet.`:V===`local-socket-signer`?`The Go signer generates the key; Node receives only the public address.`:`Turnkey creates the account under the configured restrictive policy.`:H.health.details||`Provider health check failed.`:`Enable this provider in Wallet Access first.`:`No production wallet-creation provider is available.`}
|
|
1832
|
+
</span>
|
|
1833
|
+
</div>
|
|
1834
|
+
</div>
|
|
1835
|
+
</details>
|
|
1771
1836
|
${a.balancesError?e`<div class="callout danger">${a.balancesError}</div>`:t}
|
|
1772
1837
|
<div class="wallet-grid">
|
|
1773
|
-
${
|
|
1838
|
+
${T.map(r=>{let s=q(r,a,K(a)===r.id),c=String(a.balanceWalletId??``).trim(),u=r.id===I&&R===`balance`,d=r.id===I&&R===`security`,f=((u||d)&&r.id===(c||a.balances?.walletId)?de(r,a).filter(e=>e.chain===`solana`):[]).filter(e=>!e.isNative),p=r.addresses?.solana||``,m=`wallet-address-${Ee(r.id)}`,h=s,g=E(r.id,a),_=g===`agent`&&r.id===a.walletDetailsWalletId&&l?l.policy.directSigning:void 0,v=r.id===a.walletDetailsWalletId?l?.signerPolicy:void 0,y=r.providerId!==`local-socket-signer`||v?.state===`acknowledged`,S=ee(r).includes(`solana`),w=g===`mining`?[{id:`sweep`,label:`Sweep`,title:`Mining-only sweep after SAT claims.`}]:g===`agent`?[{id:`caps`,label:`Caps`,title:`Limits used by chat, scheduled sends, swaps, and approved automation.`},{id:`schedule`,label:`Send`,title:`One Agent-wallet recurring send policy shared by chat and Wallet UI.`},{id:`automation`,label:`Auto`,title:`Stop or resume background wallet execution for this Agent wallet.`},{id:`skills`,label:`Skills`,title:`Allow reviewed skills to use this Agent wallet after separate skill grants.`}]:[{id:`caps`,label:`Caps`,title:`Vault guardrails for reviewed Wallet UI sends only.`}],T=a.policyPanel&&w.some(e=>e.id===a.policyPanel)?a.policyPanel:w[0]?.id??`caps`,O=i(a.recurringTransferCron??``),M=String(a.recurringTransferMint??``).trim(),N=M?`token`:`SOL`,P=e=>a.onPolicyDraftChange({recurringTransferCron:o({every:e.every??O.every,unit:e.unit??O.unit,time:e.time??O.time})});return e`
|
|
1774
1839
|
<div class="wallet-card" title=${r.id}>
|
|
1775
1840
|
<div class="wallet-card__header">
|
|
1776
1841
|
<div class="wallet-card__identity">
|
|
1777
1842
|
<div class="wallet-card__title-row">
|
|
1778
1843
|
<div class="wallet-card__title">${r.name}</div>
|
|
1779
|
-
${
|
|
1780
|
-
${g===`mining`?
|
|
1781
|
-
|
|
1782
|
-
${
|
|
1844
|
+
${te(r.id,a.federationBond,a.onNavigate)}
|
|
1845
|
+
${g===`mining`?re(a.miningProfile):t}
|
|
1846
|
+
${ie({walletId:r.id,role:g,props:a})}
|
|
1847
|
+
${ne({role:g,automationEnabled:_})}
|
|
1783
1848
|
</div>
|
|
1784
1849
|
<div class="wallet-card__address-row">
|
|
1785
1850
|
${p?e`
|
|
@@ -1803,17 +1868,17 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1803
1868
|
class="wallet-icon-btn"
|
|
1804
1869
|
title="Show wallet address"
|
|
1805
1870
|
aria-label="Show wallet address"
|
|
1806
|
-
@click=${()=>
|
|
1871
|
+
@click=${()=>De(m,`******`,p)}
|
|
1807
1872
|
>
|
|
1808
1873
|
<span class="wallet-copy-btn__icon">${n.eye}</span>
|
|
1809
1874
|
</button>
|
|
1810
|
-
${
|
|
1875
|
+
${Oe(p,`wallet address`)}
|
|
1811
1876
|
${Z(Q(`solana`,`address`,p),`Open wallet address`)}
|
|
1812
1877
|
</span>
|
|
1813
1878
|
`:e`
|
|
1814
1879
|
<span class="muted">No wallet address</span>
|
|
1815
1880
|
`}
|
|
1816
|
-
${
|
|
1881
|
+
${ke({value:`@wallet:${r.id}`,display:`@wallet:${r.id}`,label:`wallet handle`,title:g===`mining`?`Copy wallet handle. Mining wallets are reserved for SAT mining and SAT sweep.`:`Copy wallet handle for approved chat, skill, plugin, or scheduled wallet actions.`,className:`mono wallet-card__handle`})}
|
|
1817
1882
|
</div>
|
|
1818
1883
|
</div>
|
|
1819
1884
|
<div class="row" style="gap: 8px;">
|
|
@@ -1827,10 +1892,11 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1827
1892
|
</div>
|
|
1828
1893
|
<div class="wallet-card__balance-row">
|
|
1829
1894
|
<div class="wallet-card__balance-main">
|
|
1830
|
-
${
|
|
1895
|
+
${je(`SOL`,h,`neutral`,{title:`Solana`,onClick:r.addresses?.solana?()=>(a.onWalletBalanceWalletChange??a.onWalletDetailsWalletChange)(r.id):void 0})}
|
|
1831
1896
|
<button
|
|
1832
1897
|
class="btn small primary wallet-card__send-btn"
|
|
1833
|
-
?disabled=${!x}
|
|
1898
|
+
?disabled=${!x||!y}
|
|
1899
|
+
title=${y?`Send from this wallet`:`Receive-only: open Policy and complete signer activation first`}
|
|
1834
1900
|
@click=${()=>a.onSendModalOpen(r.id)}
|
|
1835
1901
|
>
|
|
1836
1902
|
Send
|
|
@@ -1855,13 +1921,13 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1855
1921
|
<button
|
|
1856
1922
|
class="btn small"
|
|
1857
1923
|
style="display: inline-flex; gap: 8px; align-items: center;"
|
|
1858
|
-
?disabled=${!x}
|
|
1924
|
+
?disabled=${!x||!y}
|
|
1859
1925
|
@click=${()=>a.onSendModalOpen(r.id,n.id)}
|
|
1860
1926
|
>
|
|
1861
|
-
${
|
|
1927
|
+
${_e(n,20)}
|
|
1862
1928
|
<span>${n.symbol}</span>
|
|
1863
1929
|
<span class="muted"
|
|
1864
|
-
>${
|
|
1930
|
+
>${Y(n.amountDisplay)}</span
|
|
1865
1931
|
>
|
|
1866
1932
|
</button>
|
|
1867
1933
|
${n.program?Z(Q(`solana`,`address`,n.program),`Open ${n.symbol} mint`):t}
|
|
@@ -1875,40 +1941,48 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1875
1941
|
<div class="muted" style="font-size: 0.85em">Balance loaded. No SPL token balances detected.</div>
|
|
1876
1942
|
`:t}
|
|
1877
1943
|
</div>
|
|
1878
|
-
${d
|
|
1944
|
+
${d?e`
|
|
1879
1945
|
<div id="wallet-security-card" class="wallet-card-security">
|
|
1880
1946
|
<div class="wallet-policy-tabs" role="tablist" aria-label="Wallet policy sections">
|
|
1881
|
-
${
|
|
1947
|
+
${w.map(t=>e`
|
|
1882
1948
|
<button
|
|
1883
1949
|
type="button"
|
|
1884
1950
|
class="wallet-policy-tab"
|
|
1885
|
-
data-active=${
|
|
1951
|
+
data-active=${T===t.id?`true`:`false`}
|
|
1886
1952
|
title=${t.title}
|
|
1887
1953
|
role="tab"
|
|
1888
|
-
aria-selected=${
|
|
1954
|
+
aria-selected=${T===t.id?`true`:`false`}
|
|
1889
1955
|
@click=${()=>a.onPolicyPanelChange?.(t.id)}
|
|
1890
1956
|
>
|
|
1891
1957
|
${t.label}
|
|
1892
1958
|
</button>
|
|
1893
1959
|
`)}
|
|
1894
1960
|
</div>
|
|
1895
|
-
${
|
|
1896
|
-
<div
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1961
|
+
${v?e`
|
|
1962
|
+
<div
|
|
1963
|
+
class="callout ${v.state===`acknowledged`?`success`:`warn`}"
|
|
1964
|
+
style="margin-top: 10px"
|
|
1965
|
+
data-testid="wallet-signer-policy-status"
|
|
1966
|
+
>
|
|
1967
|
+
<strong>Native signer policy: ${v.state}</strong>
|
|
1968
|
+
${v.state===`locked`?e`
|
|
1969
|
+
<div>
|
|
1970
|
+
This wallet cannot send, swap, mine, bond, or execute wallet-capable skills until a host
|
|
1971
|
+
administrator installs an owner-reviewed policy and the signer acknowledges its exact hash.
|
|
1972
|
+
</div>
|
|
1973
|
+
`:t}
|
|
1974
|
+
${v.version&&v.hash?e`
|
|
1975
|
+
<div>
|
|
1976
|
+
Version ${v.version} ·
|
|
1977
|
+
<span class="mono" style="overflow-wrap: anywhere"
|
|
1978
|
+
>${v.hash}</span
|
|
1979
|
+
>
|
|
1980
|
+
</div>
|
|
1981
|
+
`:t}
|
|
1982
|
+
${v.guidance?e`<div>${v.guidance}</div>`:t}
|
|
1909
1983
|
</div>
|
|
1910
1984
|
`:t}
|
|
1911
|
-
${g===`mining`?
|
|
1985
|
+
${g===`mining`?T===`sweep`?e`
|
|
1912
1986
|
<div class="field">
|
|
1913
1987
|
<div class="wallet-card-security__grid">
|
|
1914
1988
|
<label class="field">
|
|
@@ -1919,13 +1993,13 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1919
1993
|
>
|
|
1920
1994
|
<option
|
|
1921
1995
|
value="disabled"
|
|
1922
|
-
?selected=${!
|
|
1996
|
+
?selected=${!D.enabled}
|
|
1923
1997
|
>
|
|
1924
1998
|
Off
|
|
1925
1999
|
</option>
|
|
1926
2000
|
<option
|
|
1927
2001
|
value="enabled"
|
|
1928
|
-
?selected=${
|
|
2002
|
+
?selected=${D.enabled}
|
|
1929
2003
|
>
|
|
1930
2004
|
On
|
|
1931
2005
|
</option>
|
|
@@ -1934,38 +2008,38 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1934
2008
|
<label class="field">
|
|
1935
2009
|
<span>Destination</span>
|
|
1936
2010
|
<select
|
|
1937
|
-
?disabled=${a.settingsBusy||!
|
|
1938
|
-
@change=${e=>{let t=e.currentTarget.value;a.onMiningSatSweepChange?.(t===`__external__`?{destinationWalletId:void 0,destinationAddress:
|
|
2011
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
2012
|
+
@change=${e=>{let t=e.currentTarget.value;a.onMiningSatSweepChange?.(t===`__external__`?{destinationWalletId:void 0,destinationAddress:D.destinationAddress??``}:{destinationWalletId:t||void 0,destinationAddress:void 0})}}
|
|
1939
2013
|
>
|
|
1940
2014
|
<option
|
|
1941
2015
|
value="__external__"
|
|
1942
|
-
?selected=${
|
|
2016
|
+
?selected=${F===`external`}
|
|
1943
2017
|
>
|
|
1944
2018
|
External
|
|
1945
2019
|
</option>
|
|
1946
|
-
${
|
|
2020
|
+
${j.map(t=>e`
|
|
1947
2021
|
<option
|
|
1948
2022
|
value=${t.id}
|
|
1949
|
-
?selected=${
|
|
2023
|
+
?selected=${D.destinationWalletId===t.id}
|
|
1950
2024
|
>
|
|
1951
2025
|
${t.name}
|
|
1952
2026
|
</option>
|
|
1953
2027
|
`)}
|
|
1954
2028
|
</select>
|
|
1955
2029
|
</label>
|
|
1956
|
-
${
|
|
2030
|
+
${F===`external`?e`
|
|
1957
2031
|
<label class="field">
|
|
1958
2032
|
<span>Address</span>
|
|
1959
2033
|
<input
|
|
1960
2034
|
type="text"
|
|
1961
|
-
.value=${
|
|
1962
|
-
?disabled=${a.settingsBusy||!
|
|
2035
|
+
.value=${D.destinationAddress??``}
|
|
2036
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
1963
2037
|
@change=${e=>a.onMiningSatSweepChange?.({destinationAddress:e.currentTarget.value.trim()||void 0,destinationWalletId:void 0})}
|
|
1964
2038
|
placeholder="Solana address"
|
|
1965
2039
|
/>
|
|
1966
2040
|
</label>
|
|
1967
2041
|
`:t}
|
|
1968
|
-
${
|
|
2042
|
+
${D.mode===`percentage`?e`
|
|
1969
2043
|
<label class="field">
|
|
1970
2044
|
<span>Percent</span>
|
|
1971
2045
|
<input
|
|
@@ -1973,8 +2047,8 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1973
2047
|
min="1"
|
|
1974
2048
|
max="100"
|
|
1975
2049
|
step="1"
|
|
1976
|
-
.value=${String(
|
|
1977
|
-
?disabled=${a.settingsBusy||!
|
|
2050
|
+
.value=${String(D.percentage??100)}
|
|
2051
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
1978
2052
|
@change=${e=>a.onMiningSatSweepChange?.({percentage:Math.max(1,Math.min(100,Number(e.currentTarget.value)||100))})}
|
|
1979
2053
|
/>
|
|
1980
2054
|
</label>
|
|
@@ -1982,18 +2056,18 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
1982
2056
|
<label class="field">
|
|
1983
2057
|
<span>Amount</span>
|
|
1984
2058
|
<select
|
|
1985
|
-
?disabled=${a.settingsBusy||!
|
|
2059
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
1986
2060
|
@change=${e=>a.onMiningSatSweepChange?.({mode:e.currentTarget.value===`percentage`?`percentage`:`all`})}
|
|
1987
2061
|
>
|
|
1988
2062
|
<option
|
|
1989
2063
|
value="all"
|
|
1990
|
-
?selected=${
|
|
2064
|
+
?selected=${D.mode!==`percentage`}
|
|
1991
2065
|
>
|
|
1992
2066
|
All
|
|
1993
2067
|
</option>
|
|
1994
2068
|
<option
|
|
1995
2069
|
value="percentage"
|
|
1996
|
-
?selected=${
|
|
2070
|
+
?selected=${D.mode===`percentage`}
|
|
1997
2071
|
>
|
|
1998
2072
|
%
|
|
1999
2073
|
</option>
|
|
@@ -2004,9 +2078,9 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2004
2078
|
<input
|
|
2005
2079
|
type="text"
|
|
2006
2080
|
inputmode="decimal"
|
|
2007
|
-
.value=${
|
|
2008
|
-
?disabled=${a.settingsBusy||!
|
|
2009
|
-
@change=${e=>a.onMiningSatSweepChange?.({minRaw:
|
|
2081
|
+
.value=${k(D.minRaw??`1`)}
|
|
2082
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
2083
|
+
@change=${e=>a.onMiningSatSweepChange?.({minRaw:A(e.currentTarget.value)})}
|
|
2010
2084
|
placeholder="1"
|
|
2011
2085
|
/>
|
|
2012
2086
|
</label>
|
|
@@ -2015,23 +2089,17 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2015
2089
|
<input
|
|
2016
2090
|
type="text"
|
|
2017
2091
|
inputmode="decimal"
|
|
2018
|
-
.value=${
|
|
2019
|
-
?disabled=${a.settingsBusy||!
|
|
2020
|
-
@change=${e=>a.onMiningSatSweepChange?.({keepRaw:
|
|
2092
|
+
.value=${k(D.keepRaw??`0`)}
|
|
2093
|
+
?disabled=${a.settingsBusy||!D.enabled||!a.onMiningSatSweepChange}
|
|
2094
|
+
@change=${e=>a.onMiningSatSweepChange?.({keepRaw:A(e.currentTarget.value)})}
|
|
2021
2095
|
placeholder="0"
|
|
2022
2096
|
/>
|
|
2023
2097
|
</label>
|
|
2024
2098
|
</div>
|
|
2025
2099
|
</div>
|
|
2026
2100
|
`:t:e`
|
|
2027
|
-
${
|
|
2028
|
-
|
|
2029
|
-
`:t}
|
|
2030
|
-
${j===`custody`&&g===`vault`&&T?e`
|
|
2031
|
-
<div class="callout warn">This wallet has no local signer key yet.</div>
|
|
2032
|
-
`:t}
|
|
2033
|
-
${l&&j===`caps`?ye({props:a,settings:l,policyDisplay:te,cardRole:g,selectedWalletId:r.id,cardWalletCanSpendSolana:D,selectedWalletTokens:f,canEditPolicy:b}):t}
|
|
2034
|
-
${g===`agent`&&j===`schedule`?e`
|
|
2101
|
+
${l&&T===`caps`?ge({props:a,settings:l,policyDisplay:C,cardRole:g,selectedWalletId:r.id,cardWalletCanSpendSolana:S,selectedWalletTokens:f,canEditPolicy:b}):t}
|
|
2102
|
+
${g===`agent`&&T===`schedule`?e`
|
|
2035
2103
|
<div class="field">
|
|
2036
2104
|
<div class="wallet-card-security__grid">
|
|
2037
2105
|
<label class="field">
|
|
@@ -2063,7 +2131,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2063
2131
|
@input=${e=>a.onPolicyDraftChange({recurringTransferMint:e.currentTarget.value})}
|
|
2064
2132
|
/>
|
|
2065
2133
|
</label>
|
|
2066
|
-
${
|
|
2134
|
+
${M?e`
|
|
2067
2135
|
<label class="field">
|
|
2068
2136
|
<span>Decimals</span>
|
|
2069
2137
|
<input
|
|
@@ -2100,7 +2168,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2100
2168
|
<label class="field">
|
|
2101
2169
|
<span>Minimum</span>
|
|
2102
2170
|
<input
|
|
2103
|
-
placeholder=${`0.01 ${
|
|
2171
|
+
placeholder=${`0.01 ${N}`}
|
|
2104
2172
|
.value=${a.recurringTransferMinAmount}
|
|
2105
2173
|
?disabled=${a.settingsBusy||!b}
|
|
2106
2174
|
@input=${e=>a.onPolicyDraftChange({recurringTransferMinAmount:e.currentTarget.value})}
|
|
@@ -2109,7 +2177,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2109
2177
|
<label class="field">
|
|
2110
2178
|
<span>Keep</span>
|
|
2111
2179
|
<input
|
|
2112
|
-
placeholder=${`0 ${
|
|
2180
|
+
placeholder=${`0 ${N}`}
|
|
2113
2181
|
.value=${a.recurringTransferKeepAmount}
|
|
2114
2182
|
?disabled=${a.settingsBusy||!b}
|
|
2115
2183
|
@input=${e=>a.onPolicyDraftChange({recurringTransferKeepAmount:e.currentTarget.value})}
|
|
@@ -2119,7 +2187,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2119
2187
|
<label class="field">
|
|
2120
2188
|
<span>Amount</span>
|
|
2121
2189
|
<input
|
|
2122
|
-
placeholder=${`0.1 ${
|
|
2190
|
+
placeholder=${`0.1 ${N}`}
|
|
2123
2191
|
.value=${a.recurringTransferAmount}
|
|
2124
2192
|
?disabled=${a.settingsBusy||!b}
|
|
2125
2193
|
@input=${e=>a.onPolicyDraftChange({recurringTransferAmount:e.currentTarget.value})}
|
|
@@ -2133,17 +2201,17 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2133
2201
|
min="1"
|
|
2134
2202
|
step="1"
|
|
2135
2203
|
placeholder="1"
|
|
2136
|
-
.value=${
|
|
2204
|
+
.value=${O.every}
|
|
2137
2205
|
?disabled=${a.settingsBusy||!b}
|
|
2138
|
-
@input=${e=>
|
|
2206
|
+
@input=${e=>P({every:e.currentTarget.value})}
|
|
2139
2207
|
/>
|
|
2140
2208
|
</label>
|
|
2141
2209
|
<label class="field">
|
|
2142
2210
|
<span>Unit</span>
|
|
2143
2211
|
<select
|
|
2144
|
-
.value=${
|
|
2212
|
+
.value=${O.unit}
|
|
2145
2213
|
?disabled=${a.settingsBusy||!b}
|
|
2146
|
-
@change=${e=>
|
|
2214
|
+
@change=${e=>P({unit:e.currentTarget.value})}
|
|
2147
2215
|
>
|
|
2148
2216
|
<option value="minutes">minutes</option>
|
|
2149
2217
|
<option value="hours">hours</option>
|
|
@@ -2151,14 +2219,14 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2151
2219
|
<option value="months">months</option>
|
|
2152
2220
|
</select>
|
|
2153
2221
|
</label>
|
|
2154
|
-
${
|
|
2222
|
+
${O.unit===`days`||O.unit===`months`?e`
|
|
2155
2223
|
<label class="field">
|
|
2156
2224
|
<span>At</span>
|
|
2157
2225
|
<input
|
|
2158
2226
|
type="time"
|
|
2159
|
-
.value=${
|
|
2227
|
+
.value=${O.time}
|
|
2160
2228
|
?disabled=${a.settingsBusy||!b}
|
|
2161
|
-
@input=${e=>
|
|
2229
|
+
@input=${e=>P({time:e.currentTarget.value})}
|
|
2162
2230
|
/>
|
|
2163
2231
|
</label>
|
|
2164
2232
|
`:t}
|
|
@@ -2188,14 +2256,14 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2188
2256
|
${a.settingsBusy?`Saving...`:`Save`}
|
|
2189
2257
|
</button>
|
|
2190
2258
|
</div>
|
|
2191
|
-
${
|
|
2192
|
-
<div class="wallet-
|
|
2259
|
+
${O.custom?e`
|
|
2260
|
+
<div class="wallet-security-note" style="margin-top: 8px">
|
|
2193
2261
|
Existing custom schedule is preserved until you edit Every, Unit, or At.
|
|
2194
2262
|
</div>
|
|
2195
2263
|
`:t}
|
|
2196
2264
|
</div>
|
|
2197
2265
|
`:t}
|
|
2198
|
-
${g===`agent`&&
|
|
2266
|
+
${g===`agent`&&T===`automation`?e`
|
|
2199
2267
|
${e`
|
|
2200
2268
|
<div class="field">
|
|
2201
2269
|
<div class="wallet-spend-limit-row">
|
|
@@ -2221,7 +2289,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2221
2289
|
</div>
|
|
2222
2290
|
`}
|
|
2223
2291
|
`:t}
|
|
2224
|
-
${g===`agent`&&
|
|
2292
|
+
${g===`agent`&&T===`skills`?e`
|
|
2225
2293
|
${e`
|
|
2226
2294
|
<div class="field">
|
|
2227
2295
|
<div class="wallet-spend-limit-row">
|
|
@@ -2247,186 +2315,6 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2247
2315
|
</div>
|
|
2248
2316
|
`}
|
|
2249
2317
|
`:t}
|
|
2250
|
-
${g===`vault`&&j===`custody`?e`
|
|
2251
|
-
<div class="wallet-card-security__actions">
|
|
2252
|
-
${_.mode===`single-key`?e`
|
|
2253
|
-
<button
|
|
2254
|
-
class="btn primary"
|
|
2255
|
-
?disabled=${(a.actionBusy??!1)||!a.onInitializeCustody||T||!O}
|
|
2256
|
-
@click=${()=>a.onInitializeCustody?.()}
|
|
2257
|
-
>
|
|
2258
|
-
${a.actionBusy?`Working...`:`Enable security`}
|
|
2259
|
-
</button>
|
|
2260
|
-
${O?t:e`
|
|
2261
|
-
<span class="wallet-card-security__note"> Wallet Control Passkey required first. </span>
|
|
2262
|
-
`}
|
|
2263
|
-
`:e`
|
|
2264
|
-
<label
|
|
2265
|
-
class="field"
|
|
2266
|
-
style="max-width: 140px; margin: 0;"
|
|
2267
|
-
>
|
|
2268
|
-
<span>Unlock</span>
|
|
2269
|
-
<select
|
|
2270
|
-
.value=${a.custodyUnlockMinutes??`manual`}
|
|
2271
|
-
?disabled=${a.actionBusy??!1}
|
|
2272
|
-
@change=${e=>a.onCustodyUnlockMinutesChange?.(e.currentTarget.value)}
|
|
2273
|
-
>
|
|
2274
|
-
<option value="manual">Until lock</option>
|
|
2275
|
-
<option value="15">15 min</option>
|
|
2276
|
-
<option value="60">60 min</option>
|
|
2277
|
-
</select>
|
|
2278
|
-
</label>
|
|
2279
|
-
<button
|
|
2280
|
-
class="btn primary"
|
|
2281
|
-
?disabled=${(a.actionBusy??!1)||!a.onUnlockCustody||!O}
|
|
2282
|
-
@click=${()=>a.onUnlockCustody?.()}
|
|
2283
|
-
>
|
|
2284
|
-
${y?`Extend`:`Unlock`}
|
|
2285
|
-
</button>
|
|
2286
|
-
<button
|
|
2287
|
-
class="btn"
|
|
2288
|
-
?disabled=${(a.actionBusy??!1)||!y||!a.onLockCustody}
|
|
2289
|
-
@click=${()=>a.onLockCustody?.()}
|
|
2290
|
-
>
|
|
2291
|
-
Lock
|
|
2292
|
-
</button>
|
|
2293
|
-
<button
|
|
2294
|
-
class="btn"
|
|
2295
|
-
?disabled=${(a.actionBusy??!1)||!a.onEnrollCustodyDevice||!O}
|
|
2296
|
-
@click=${()=>a.onEnrollCustodyDevice?.()}
|
|
2297
|
-
>
|
|
2298
|
-
Add device
|
|
2299
|
-
</button>
|
|
2300
|
-
`}
|
|
2301
|
-
</div>
|
|
2302
|
-
${_.mode===`single-key`?t:e`
|
|
2303
|
-
<div class="wallet-card-security__note">
|
|
2304
|
-
${w}
|
|
2305
|
-
</div>
|
|
2306
|
-
<div class="wallet-card-security__actions">
|
|
2307
|
-
<button
|
|
2308
|
-
class="btn danger"
|
|
2309
|
-
title="Turns this wallet back to normal local-signer mode. Requires Wallet Control Passkey plus this wallet's device share or recovery share."
|
|
2310
|
-
?disabled=${(a.actionBusy??!1)||!a.onDisableCustody||!O}
|
|
2311
|
-
@click=${()=>a.onDisableCustody?.(r.id)}
|
|
2312
|
-
>
|
|
2313
|
-
Disable security
|
|
2314
|
-
</button>
|
|
2315
|
-
</div>
|
|
2316
|
-
`}
|
|
2317
|
-
${a.custodyRecoveryShare?.trim()?e`
|
|
2318
|
-
<div class="field">
|
|
2319
|
-
<span>New recovery share</span>
|
|
2320
|
-
<textarea readonly rows="3"
|
|
2321
|
-
>${a.custodyRecoveryShare}</textarea
|
|
2322
|
-
>
|
|
2323
|
-
<div class="wallet-card-security__actions">
|
|
2324
|
-
<button
|
|
2325
|
-
class="btn"
|
|
2326
|
-
?disabled=${(a.actionBusy??!1)||!a.onDownloadRecoveryKit}
|
|
2327
|
-
@click=${()=>a.onDownloadRecoveryKit?.()}
|
|
2328
|
-
>
|
|
2329
|
-
Download recovery kit
|
|
2330
|
-
</button>
|
|
2331
|
-
<button
|
|
2332
|
-
class="btn"
|
|
2333
|
-
?disabled=${(a.actionBusy??!1)||!a.onPrintRecoveryKit}
|
|
2334
|
-
@click=${()=>a.onPrintRecoveryKit?.()}
|
|
2335
|
-
>
|
|
2336
|
-
Print
|
|
2337
|
-
</button>
|
|
2338
|
-
</div>
|
|
2339
|
-
</div>
|
|
2340
|
-
`:t}
|
|
2341
|
-
${a.custodyEnrolledDeviceShare?.trim()?e`
|
|
2342
|
-
<div class="field">
|
|
2343
|
-
<span>New device share</span>
|
|
2344
|
-
<textarea readonly rows="3"
|
|
2345
|
-
>${a.custodyEnrolledDeviceShare}</textarea
|
|
2346
|
-
>
|
|
2347
|
-
<div class="wallet-card-security__actions">
|
|
2348
|
-
<button
|
|
2349
|
-
class="btn"
|
|
2350
|
-
?disabled=${(a.actionBusy??!1)||!a.onDownloadEnrolledDeviceShare}
|
|
2351
|
-
@click=${()=>a.onDownloadEnrolledDeviceShare?.()}
|
|
2352
|
-
>
|
|
2353
|
-
Download device share
|
|
2354
|
-
</button>
|
|
2355
|
-
</div>
|
|
2356
|
-
</div>
|
|
2357
|
-
`:t}
|
|
2358
|
-
${E.length>0?e`
|
|
2359
|
-
<div class="field">
|
|
2360
|
-
<span>Enrolled devices</span>
|
|
2361
|
-
<div class="wallet-custody-device-list">
|
|
2362
|
-
${E.map(t=>e`
|
|
2363
|
-
<div class="wallet-custody-device-row">
|
|
2364
|
-
<div>
|
|
2365
|
-
<div>${t.label||t.id}</div>
|
|
2366
|
-
<div class="wallet-card-security__note mono">
|
|
2367
|
-
${X(t.id)} ·
|
|
2368
|
-
${new Date(t.createdAt).toLocaleString()}
|
|
2369
|
-
</div>
|
|
2370
|
-
</div>
|
|
2371
|
-
<button
|
|
2372
|
-
class="btn small"
|
|
2373
|
-
?disabled=${(a.actionBusy??!1)||E.length<=1||!a.onRevokeCustodyDevice}
|
|
2374
|
-
@click=${()=>a.onRevokeCustodyDevice?.(t.id)}
|
|
2375
|
-
>
|
|
2376
|
-
Revoke
|
|
2377
|
-
</button>
|
|
2378
|
-
</div>
|
|
2379
|
-
`)}
|
|
2380
|
-
</div>
|
|
2381
|
-
</div>
|
|
2382
|
-
`:t}
|
|
2383
|
-
${_.mode===`single-key`?t:e`
|
|
2384
|
-
<details class="wallet-advanced-box">
|
|
2385
|
-
<summary>Recovery and device transfer</summary>
|
|
2386
|
-
<div class="wallet-recovery-grid">
|
|
2387
|
-
<label class="field">
|
|
2388
|
-
<span>Temporary device share</span>
|
|
2389
|
-
<input
|
|
2390
|
-
.value=${a.custodyDeviceShare??``}
|
|
2391
|
-
@input=${e=>a.onCustodyDeviceShareChange?.(e.target.value)}
|
|
2392
|
-
placeholder="Paste only for recovery or moving devices"
|
|
2393
|
-
/>
|
|
2394
|
-
</label>
|
|
2395
|
-
<label class="field">
|
|
2396
|
-
<span>Recovery share</span>
|
|
2397
|
-
<input
|
|
2398
|
-
.value=${a.custodyRecoveryInput??``}
|
|
2399
|
-
@input=${e=>a.onCustodyRecoveryInputChange?.(e.target.value)}
|
|
2400
|
-
placeholder="Paste offline recovery share"
|
|
2401
|
-
/>
|
|
2402
|
-
</label>
|
|
2403
|
-
</div>
|
|
2404
|
-
<div class="wallet-card-security__actions">
|
|
2405
|
-
<button
|
|
2406
|
-
class="btn"
|
|
2407
|
-
?disabled=${(a.actionBusy??!1)||!a.onRecoverCustody}
|
|
2408
|
-
@click=${()=>a.onRecoverCustody?.()}
|
|
2409
|
-
>
|
|
2410
|
-
${a.actionBusy?`Working...`:`Recover here`}
|
|
2411
|
-
</button>
|
|
2412
|
-
<button
|
|
2413
|
-
class="btn"
|
|
2414
|
-
?disabled=${(a.actionBusy??!1)||!a.custodyDeviceShareStored||!a.onForgetCustodyDeviceShare}
|
|
2415
|
-
@click=${()=>a.onForgetCustodyDeviceShare?.()}
|
|
2416
|
-
>
|
|
2417
|
-
Forget stored share
|
|
2418
|
-
</button>
|
|
2419
|
-
<button
|
|
2420
|
-
class="btn"
|
|
2421
|
-
?disabled=${(a.actionBusy??!1)||!a.custodyDeviceShare?.trim()||!a.onDownloadDeviceShare}
|
|
2422
|
-
@click=${()=>a.onDownloadDeviceShare?.()}
|
|
2423
|
-
>
|
|
2424
|
-
Download device share
|
|
2425
|
-
</button>
|
|
2426
|
-
</div>
|
|
2427
|
-
</details>
|
|
2428
|
-
`}
|
|
2429
|
-
`:t}
|
|
2430
2318
|
`}
|
|
2431
2319
|
</div>
|
|
2432
2320
|
`:t}
|
|
@@ -2443,9 +2331,9 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2443
2331
|
<div>
|
|
2444
2332
|
<div class="card-title wallet-title-with-help">
|
|
2445
2333
|
<span>Wallet Approvals</span>
|
|
2446
|
-
${f(`
|
|
2334
|
+
${f(`Reviewed sends, Vault actions, and federation signatures appear here. Approve triggers the signer-owned passkey ceremony and executes only the exact prepared operation.`)}
|
|
2447
2335
|
</div>
|
|
2448
|
-
|
|
2336
|
+
<div class="card-sub">Pending and recent reviewed wallet operations.</div>
|
|
2449
2337
|
</div>
|
|
2450
2338
|
<div class="row" style="gap: 8px; flex-wrap: wrap;">
|
|
2451
2339
|
${[`pending`,`approved`,`executed`,`failed`,`all`].map(t=>e`
|
|
@@ -2475,7 +2363,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2475
2363
|
<div>Created</div>
|
|
2476
2364
|
<div>Action</div>
|
|
2477
2365
|
</div>
|
|
2478
|
-
${a.approvals.map(n=>{let i=
|
|
2366
|
+
${a.approvals.map(n=>{let i=oe({request:n,balances:a.balances}),o=se({request:n,namedWallets:a.namedWallets}),s=Array.isArray(n.payload.routeProgramIds)?n.payload.routeProgramIds.map(e=>String(e).trim()).filter(Boolean):[];return e`
|
|
2479
2367
|
<div
|
|
2480
2368
|
id=${r(`wallet-approval`,n.id)}
|
|
2481
2369
|
class="table-row"
|
|
@@ -2486,14 +2374,15 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2486
2374
|
<div class="muted" style="font-size: 0.8em; margin-top: 4px;">
|
|
2487
2375
|
expires ${new Date(n.expiresAt).toLocaleString()}
|
|
2488
2376
|
</div>
|
|
2489
|
-
${
|
|
2377
|
+
${ce({request:n,display:i,endpoints:o})}
|
|
2378
|
+
${le(n)}
|
|
2490
2379
|
</div>
|
|
2491
2380
|
<div>
|
|
2492
2381
|
<div class="row" style="gap: 8px; align-items: center;">
|
|
2493
2382
|
<span
|
|
2494
2383
|
style="width: 16px; height: 16px; display: inline-flex; color: ${n.status===`failed`||n.status===`rejected`||n.status===`expired`?`rgba(248,113,113,0.95)`:n.status===`executed`||n.status===`approved`?`rgba(104,211,145,0.95)`:`rgba(96,165,250,0.95)`};"
|
|
2495
2384
|
>
|
|
2496
|
-
${
|
|
2385
|
+
${xe(n.status)}
|
|
2497
2386
|
</span>
|
|
2498
2387
|
<span style="font-size: 0.9em; font-weight: 600; text-transform: lowercase;">
|
|
2499
2388
|
${n.status}
|
|
@@ -2597,7 +2486,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2597
2486
|
</div>
|
|
2598
2487
|
`}
|
|
2599
2488
|
</div>
|
|
2600
|
-
${
|
|
2489
|
+
${z===`wallets`?e`<div class="card wallet-activity-card" style="grid-column: 1 / -1;">
|
|
2601
2490
|
<div class="wallet-activity-card__head">
|
|
2602
2491
|
<div>
|
|
2603
2492
|
<div class="card-title">Wallet Activity</div>
|
|
@@ -2630,12 +2519,12 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2630
2519
|
</div>
|
|
2631
2520
|
</div>
|
|
2632
2521
|
<div class="wallet-activity-list">
|
|
2633
|
-
${y.map(n=>{let r=n.details??{},i=
|
|
2522
|
+
${y.map(n=>{let r=n.details??{},i=P(r.chain),o=i===`solana`?L(r,`program`):``,s=ae({details:r,balances:a.balances}),c=M(r.to,`n/a`),l=M(r.txHash||r.txId,``),u=M(r.reason,``),d=M(r.orderId,``),f=M(r.vaultPubkey,``),p=M(r.executionProvider,``),m=Pe(n.action);return e`
|
|
2634
2523
|
<div class="wallet-activity-item" data-tone=${m}>
|
|
2635
2524
|
<div class="wallet-activity-item__head">
|
|
2636
2525
|
<div class="wallet-activity-item__title">
|
|
2637
|
-
<span style="color: ${m===`danger`?`var(--danger)`:m===`success`?`var(--ok)`:m===`warn`?`var(--warn)`:`var(--muted)`};">${
|
|
2638
|
-
<span>${
|
|
2526
|
+
<span style="color: ${m===`danger`?`var(--danger)`:m===`success`?`var(--ok)`:m===`warn`?`var(--warn)`:`var(--muted)`};">${Se(n.action)}</span>
|
|
2527
|
+
<span>${be(n)}</span>
|
|
2639
2528
|
</div>
|
|
2640
2529
|
<div class="wallet-activity-item__time">
|
|
2641
2530
|
${new Date(n.at).toLocaleString()}
|
|
@@ -2643,7 +2532,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2643
2532
|
</div>
|
|
2644
2533
|
<div class="wallet-activity-item__facts">
|
|
2645
2534
|
${o?t:e`<span class="wallet-status-chip"
|
|
2646
|
-
>${i?
|
|
2535
|
+
>${i?N(i):`n/a`}</span
|
|
2647
2536
|
>`}
|
|
2648
2537
|
<span class="wallet-status-chip">${s}</span>
|
|
2649
2538
|
${p?e`<span class="wallet-status-chip">${p}</span>`:t}
|
|
@@ -2668,7 +2557,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2668
2557
|
</div>
|
|
2669
2558
|
`:t}
|
|
2670
2559
|
</section>
|
|
2671
|
-
`}function
|
|
2560
|
+
`}function Ie(n){if(!n.sendModalVisible)return t;let r=n.status?.capabilities?.canSend??!0,i=n.namedWallets.find(e=>e.id===n.sendCreateForm.walletId),{selected:a,options:o}=ve(i,n),s=[...new Set(o.map(e=>e.chain))],c=a?.chain??s[0]??n.sendCreateForm.chain,l=s.includes(n.sendCreateForm.chain)?n.sendCreateForm.chain:c,u=J(i,l),d=a&&a.chain===l?a:void 0,f=d?.symbol||`SOL`,p=i?`${i.name} (@wallet:${i.id})`:`Default wallet`;return e`
|
|
2672
2561
|
<div class="modal-overlay" @click=${n.onSendModalClose}>
|
|
2673
2562
|
<div class="modal-card card" @click=${e=>e.stopPropagation()}>
|
|
2674
2563
|
<div class="row" style="justify-content: space-between; align-items: center; margin-bottom: 16px;">
|
|
@@ -2684,13 +2573,6 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2684
2573
|
<button class="btn small" @click=${n.onSendModalClose}>Close</button>
|
|
2685
2574
|
</div>
|
|
2686
2575
|
|
|
2687
|
-
${h?e`
|
|
2688
|
-
<div class="callout warn" style="margin-bottom: 16px">
|
|
2689
|
-
This wallet is locked. You can create the approval request now, but it must be unlocked with
|
|
2690
|
-
passkey before approval can sign and broadcast.
|
|
2691
|
-
</div>
|
|
2692
|
-
`:t}
|
|
2693
|
-
|
|
2694
2576
|
<div class="wallet-send-form-grid">
|
|
2695
2577
|
<div class="wallet-send-column">
|
|
2696
2578
|
<label class="field wallet-send-field">
|
|
@@ -2702,7 +2584,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2702
2584
|
>
|
|
2703
2585
|
${o.map(t=>e`
|
|
2704
2586
|
<option value=${t.id} ?selected=${t.id===d?.id}>
|
|
2705
|
-
${t.symbol}${t.name&&t.name!==t.symbol?` · ${t.name}`:``} · ${
|
|
2587
|
+
${t.symbol}${t.name&&t.name!==t.symbol?` · ${t.name}`:``} · ${Y(t.amountDisplay)}
|
|
2706
2588
|
</option>
|
|
2707
2589
|
`)}
|
|
2708
2590
|
</select>
|
|
@@ -2846,5 +2728,5 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{n as r}from"./task-
|
|
|
2846
2728
|
}
|
|
2847
2729
|
}
|
|
2848
2730
|
</style>
|
|
2849
|
-
`}export{u as describeAdminControlShortcut,
|
|
2850
|
-
//# sourceMappingURL=wallet-
|
|
2731
|
+
`}export{u as describeAdminControlShortcut,T as describeAgentDefaultAction,p as describeWalletAutomationPolicySummary,C as describeWalletRoleBadges,d as describeWalletSendFlow,h as hasWalletBalanceValue,O as orderWalletsForDisplay,Fe as renderWallet,m as resolveActiveMiningWalletId,S as resolveOperatorWalletRoles};
|
|
2732
|
+
//# sourceMappingURL=wallet-DvStR_AT.js.map
|