@fased/fased 0.1.62 → 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 +32 -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/agents/auth-profiles/store.js +267 -31
- package/dist/agents/bash-tools.exec.js +10 -4
- package/dist/agents/current-model-catalog.js +3 -3
- 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/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-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/skills/env-overrides.js +38 -28
- package/dist/agents/skills/trust.js +93 -0
- package/dist/agents/skills/workspace.js +128 -0
- package/dist/agents/skills-clawhub.js +36 -11
- package/dist/agents/skills-marketplace-scan.js +49 -0
- 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/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/session-reset-model.js +4 -4
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/channel-web.js +2 -2
- package/dist/cli/gateway-cli/run.js +8 -0
- 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/update-cli/update-command.js +260 -11
- package/dist/commands/auth-choice.apply.api-providers.js +3 -3
- package/dist/commands/doctor-config-flow.js +1 -1
- package/dist/commands/doctor-legacy-config.js +2 -13
- 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 +32 -8
- 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/wallet.js +568 -1911
- package/dist/config/config.js +2 -2
- package/dist/config/io.js +64 -2
- package/dist/config/schema.help.js +8 -7
- package/dist/config/schema.labels.js +5 -4
- package/dist/config/zod-schema.agent-runtime.js +1 -0
- package/dist/config/zod-schema.js +5 -0
- package/dist/control-ui/assets/{app-DLil9VO1.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-DdE_NIXo.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/daemon/systemd-system.js +56 -50
- 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 +5 -2
- 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/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/mutating-admin-rpc-rate-limit.js +5 -0
- package/dist/gateway/security-path.js +1 -1
- package/dist/gateway/server-http.js +1084 -1205
- package/dist/gateway/server-methods/models.js +1 -1
- package/dist/gateway/server-methods/secrets.js +40 -0
- 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/sessions-patch.js +3 -5
- package/dist/index.js +4 -2
- package/dist/infra/fasedhub.js +64 -1
- package/dist/infra/local-source-paired-update.js +538 -0
- package/dist/infra/restart.js +41 -10
- package/dist/infra/update-runner.js +96 -0
- package/dist/light-update-status.js +11 -11
- package/dist/memory/backend-config.js +2 -1
- package/dist/memory/session-files.js +16 -2
- 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-Bwi2Oq03.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-DzT4L4Ty.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-BrkmtFxB.js → config-schema-BOT7kHb6.js} +6779 -3696
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +6 -6
- 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 +21 -39
- package/dist/plugin-sdk/index.js +29 -29
- 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-M_ta2lMc.js → monitor-BCFDaqJ-.js} +31 -31
- package/dist/plugin-sdk/{monitor-wYVncM9w.js → monitor-BgbjRiPM.js} +32 -32
- package/dist/plugin-sdk/{openresponses-http-B2GmeSt4.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-B3bHYGaw.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-CxE1mfzj.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 +6 -6
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-CGzGWu00.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-DaEcYQ8r.js → telegram-actions-CC_qN4v0.js} +30 -30
- package/dist/plugin-sdk/telegram.d.ts +6 -6
- 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-vcJrC_uv.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-DFAW-n1J.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-CInY-lCv.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 +13 -13
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-C4DGFkOd.js → wsl-J-HscWxS.js} +3 -3
- package/dist/plugin-sdk/{zod-schema.providers-core-BEbNizPe.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +61 -61
- package/dist/providers/refresh.js +1 -1
- package/dist/providers/registry.js +1 -1
- package/dist/secrets/apply.js +1 -1
- package/dist/secrets/runtime.js +1 -1
- 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 +380 -105
- 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 +17 -28
- package/dist/wallet/wallet-atomic-state.js +53 -0
- package/dist/wallet/wallet-canary.js +0 -1
- package/dist/wallet/wallet-inbound-events.js +16 -11
- package/dist/wallet/wallet-policy-simulation.js +1 -1
- package/dist/wallet/wallet-policy.js +90 -36
- package/dist/wallet/wallet-provider-capabilities.js +28 -4
- package/dist/wallet/wallet-provider-registry.js +57 -44
- package/dist/wallet/wallet-provider-resolver.js +62 -63
- package/dist/wallet/wallet-runtime-config.js +28 -41
- package/dist/wallet/wallet-secrets-store.js +22 -0
- package/dist/wallet/wallet-send-approvals.js +1891 -589
- package/dist/wallet/wallet-send-execution-ledger.js +292 -0
- package/dist/wallet/wallet-settlement-links.js +14 -13
- 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/auto-reply/heartbeat-runner.js +1 -1
- package/dist/web/auto-reply/monitor.js +2 -2
- package/dist/wizard/host-security-capability.js +14 -23
- package/dist/wizard/onboarding.finalize.js +63 -184
- package/dist/wizard/onboarding.host-security.js +117 -1367
- package/dist/wizard/onboarding.js +172 -217
- package/dist/wizard/onboarding.wallet.js +232 -785
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/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 +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/install.sh +4955 -0
- package/package.json +23 -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 +183 -108
- 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-CS6zsYEE.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{
|
|
1
|
+
import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{_ as r,a as i,i as a,p as o,r as s,t as c,v as l,y as u}from"./open-external-url-ulF1B-sA.js";var d={all:e`
|
|
2
2
|
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
3
3
|
<rect x="3" y="3" width="7" height="7"></rect>
|
|
4
4
|
<rect x="14" y="3" width="7" height="7"></rect>
|
|
@@ -186,7 +186,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
186
186
|
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"></path>
|
|
187
187
|
<polyline points="14 2 14 8 20 8"></polyline>
|
|
188
188
|
</svg>
|
|
189
|
-
`},f=[{key:`env`,label:`Environment`},{key:`update`,label:`Updates`},{key:`agents`,label:`Agents`},{key:`acp`,label:`ACP Runtime`},{key:`auth`,label:`Authentication`},{key:`channels`,label:`Channels`},{key:`bindings`,label:`Bindings`},{key:`broadcast`,label:`Broadcast`},{key:`messages`,label:`Messages`},{key:`commands`,label:`Commands`},{key:`hooks`,label:`Hooks`},{key:`skills`,label:`Skills`},{key:`tools`,label:`Tools`},{key:`gateway`,label:`Gateway`},{key:`nodeHost`,label:`Node Host`},{key:`wizard`,label:`Setup Wizard`}],p=new Set(`agents.approvals.auth.audio.canvasHost.channels.commands.cron.discovery.env.federation.browser.diagnostics.hooks.logging.media.memory.meta.messages.mcp.models.plugins.session.skills.talk.tools.update.ui.wallet.web.wizard`.split(`.`)),m=[`api-key`,`oauth`,`token`],h=[`api_key`,`oauth`,`token`],g=`__all__`;function _(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function v(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[]}function y(e){return d[e]??d.default}function b(e){switch(e){case`auth`:case`models`:return[{label:`Providers`,tab:`providers`,detail:`Add model APIs, auth profiles, and default model choices.`}];case`agents`:return[{label:`Agents`,tab:`agents`,detail:`Create Agents and attach models, skills, services, channels, memory, and cron.`}];case`acp`:return[{label:`Debug`,tab:`debug`,detail:`Inspect ACPX bridge state, guarded wrappers, sessions, and runtime diagnostics.`},{label:`Extensions`,tab:`plugins`,detail:`Install, enable, and inspect ACP backend plugins such as acpx.`},{label:`Agents`,tab:`agents`,detail:`Normal Agent coordination, models, memory, tools, and tasks live on the Agent page.`},{label:`Channels`,tab:`channels`,detail:`Thread routing and channel-specific ACP spawn behavior live with channel routes.`}];case`skills`:return[{label:`Skills`,tab:`skills`,detail:`Install, enable, configure API keys, and review skill readiness.`}];case`commands`:case`messages`:case`channels`:return[{label:`Channels`,tab:`channels`,detail:`Connect apps, route accounts to Agents, and review command parity.`}];case`bindings`:return[{label:`Channels`,tab:`channels`,detail:`Manage normal channel account routing and default Agent routes.`},{label:`Agents`,tab:`agents`,detail:`Review which inbound channel routes and task bindings belong to each Agent.`}];case`broadcast`:return[{label:`Channels`,tab:`channels`,detail:`Manage normal channel access, account routing, and group safety first.`},{label:`Agents`,tab:`agents`,detail:`Review and configure the Agents that can participate in multi-Agent replies.`}];case`hooks`:return[{label:`Tasks`,tab:`cron`,detail:`Use task policies and schedules for normal Agent automations.`},{label:`Agents`,tab:`agents`,detail:`Enable Agent-owned memory behavior and coordination settings.`},{label:`Extensions`,tab:`plugins`,detail:`Developer hook packs and lifecycle integrations belong with Extensions.`}];case`session`:return[{label:`Agents`,tab:`agents`,detail:`Enable memory hooks and review Agent setup.`},{label:`Memory`,tab:`memory`,detail:`Read-only memory diagnostics and archive health.`}];case`memory`:return[{label:`Memory`,tab:`memory`,detail:`Read-only memory diagnostics and archive health.`},{label:`Agents`,tab:`agents`,detail:`Enable or disable session-memory for an Agent.`}];case`plugins`:return[{label:`Extensions`,tab:`plugins`,detail:`Runtime plugin lifecycle, trust, dependency, and scanner diagnostics.`}];case`cron`:return[{label:`Tasks`,tab:`cron`,detail:`Create scheduled tasks, filters, runs, and delivery state.`}];case`gateway`:return[{label:`Overview`,tab:`overview`,detail:`Gateway endpoint, auth status, connection health, uptime, and high-level cards.`},{label:`Debug`,tab:`debug`,detail:`Startup timings, event logs, admin RPC, command catalog, and runtime diagnostics.`}];case`wizard`:return[{label:`Overview`,tab:`overview`,detail:`Post-onboarding status, gateway health, and next setup actions.`},{label:`Agents`,tab:`agents`,detail:`Continue normal setup after onboarding: models, channels, memory, skills, services, and tasks.`},{label:`Debug`,tab:`debug`,detail:`Gateway startup, wizard/runtime diagnostics, and repair surfaces.`}];case`diagnostics`:return[{label:`Debug`,tab:`debug`,detail:`Read diagnostics stability, startup, event logs, admin RPC, and runtime state.`},{label:`Overview`,tab:`overview`,detail:`Use normal health cards before enabling verbose diagnostics.`}];case`logging`:return[{label:`Logs`,tab:`logs`,detail:`Read, filter, follow, and export gateway file logs.`},{label:`Debug`,tab:`debug`,detail:`Inspect runtime health, event logs, startup diagnostics, and admin surfaces.`}];case`wallet`:return[{label:`Wallet`,tab:`wallet`,detail:`Review balances, approvals, policy, passkeys,
|
|
189
|
+
`},f=[{key:`env`,label:`Environment`},{key:`update`,label:`Updates`},{key:`agents`,label:`Agents`},{key:`acp`,label:`ACP Runtime`},{key:`auth`,label:`Authentication`},{key:`channels`,label:`Channels`},{key:`bindings`,label:`Bindings`},{key:`broadcast`,label:`Broadcast`},{key:`messages`,label:`Messages`},{key:`commands`,label:`Commands`},{key:`hooks`,label:`Hooks`},{key:`skills`,label:`Skills`},{key:`tools`,label:`Tools`},{key:`gateway`,label:`Gateway`},{key:`nodeHost`,label:`Node Host`},{key:`wizard`,label:`Setup Wizard`}],p=new Set(`agents.approvals.auth.audio.canvasHost.channels.commands.cron.discovery.env.federation.browser.diagnostics.hooks.logging.media.memory.meta.messages.mcp.models.plugins.session.skills.talk.tools.update.ui.wallet.web.wizard`.split(`.`)),m=[`api-key`,`oauth`,`token`],h=[`api_key`,`oauth`,`token`],g=`__all__`;function _(e){return!e||typeof e!=`object`||Array.isArray(e)?null:e}function v(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[]}function y(e){return d[e]??d.default}function b(e){switch(e){case`auth`:case`models`:return[{label:`Providers`,tab:`providers`,detail:`Add model APIs, auth profiles, and default model choices.`}];case`agents`:return[{label:`Agents`,tab:`agents`,detail:`Create Agents and attach models, skills, services, channels, memory, and cron.`}];case`acp`:return[{label:`Debug`,tab:`debug`,detail:`Inspect ACPX bridge state, guarded wrappers, sessions, and runtime diagnostics.`},{label:`Extensions`,tab:`plugins`,detail:`Install, enable, and inspect ACP backend plugins such as acpx.`},{label:`Agents`,tab:`agents`,detail:`Normal Agent coordination, models, memory, tools, and tasks live on the Agent page.`},{label:`Channels`,tab:`channels`,detail:`Thread routing and channel-specific ACP spawn behavior live with channel routes.`}];case`skills`:return[{label:`Skills`,tab:`skills`,detail:`Install, enable, configure API keys, and review skill readiness.`}];case`commands`:case`messages`:case`channels`:return[{label:`Channels`,tab:`channels`,detail:`Connect apps, route accounts to Agents, and review command parity.`}];case`bindings`:return[{label:`Channels`,tab:`channels`,detail:`Manage normal channel account routing and default Agent routes.`},{label:`Agents`,tab:`agents`,detail:`Review which inbound channel routes and task bindings belong to each Agent.`}];case`broadcast`:return[{label:`Channels`,tab:`channels`,detail:`Manage normal channel access, account routing, and group safety first.`},{label:`Agents`,tab:`agents`,detail:`Review and configure the Agents that can participate in multi-Agent replies.`}];case`hooks`:return[{label:`Tasks`,tab:`cron`,detail:`Use task policies and schedules for normal Agent automations.`},{label:`Agents`,tab:`agents`,detail:`Enable Agent-owned memory behavior and coordination settings.`},{label:`Extensions`,tab:`plugins`,detail:`Developer hook packs and lifecycle integrations belong with Extensions.`}];case`session`:return[{label:`Agents`,tab:`agents`,detail:`Enable memory hooks and review Agent setup.`},{label:`Memory`,tab:`memory`,detail:`Read-only memory diagnostics and archive health.`}];case`memory`:return[{label:`Memory`,tab:`memory`,detail:`Read-only memory diagnostics and archive health.`},{label:`Agents`,tab:`agents`,detail:`Enable or disable session-memory for an Agent.`}];case`plugins`:return[{label:`Extensions`,tab:`plugins`,detail:`Runtime plugin lifecycle, trust, dependency, and scanner diagnostics.`}];case`cron`:return[{label:`Tasks`,tab:`cron`,detail:`Create scheduled tasks, filters, runs, and delivery state.`}];case`gateway`:return[{label:`Overview`,tab:`overview`,detail:`Gateway endpoint, auth status, connection health, uptime, and high-level cards.`},{label:`Debug`,tab:`debug`,detail:`Startup timings, event logs, admin RPC, command catalog, and runtime diagnostics.`}];case`wizard`:return[{label:`Overview`,tab:`overview`,detail:`Post-onboarding status, gateway health, and next setup actions.`},{label:`Agents`,tab:`agents`,detail:`Continue normal setup after onboarding: models, channels, memory, skills, services, and tasks.`},{label:`Debug`,tab:`debug`,detail:`Gateway startup, wizard/runtime diagnostics, and repair surfaces.`}];case`diagnostics`:return[{label:`Debug`,tab:`debug`,detail:`Read diagnostics stability, startup, event logs, admin RPC, and runtime state.`},{label:`Overview`,tab:`overview`,detail:`Use normal health cards before enabling verbose diagnostics.`}];case`logging`:return[{label:`Logs`,tab:`logs`,detail:`Read, filter, follow, and export gateway file logs.`},{label:`Debug`,tab:`debug`,detail:`Inspect runtime health, event logs, startup diagnostics, and admin surfaces.`}];case`wallet`:return[{label:`Wallet`,tab:`wallet`,detail:`Review balances, approvals, signer policy, passkeys, and wallet health.`},{label:`Mining`,tab:`mining`,detail:`Review the singleton SAT mining wallet and mining operations.`},{label:`Network`,tab:`federation`,detail:`Review Fased Network and bond wallet status.`}];case`federation`:return[{label:`Network`,tab:`federation`,detail:`Review Fased Network, marketplace, receipts, and bonded operations.`},{label:`Wallet`,tab:`wallet`,detail:`Review wallet policy and approvals used by network operations.`}];case`browser`:return[{label:`Services`,tab:`services`,detail:`Enable the browser/media runtime.`},{label:`Agents`,tab:`agents`,detail:`Grant browser tools to an Agent.`},{label:`Debug`,tab:`debug`,detail:`Inspect browser runtime failures, gateway events, and service health.`}];case`nodeHost`:return[{label:`Nodes`,tab:`nodes`,detail:`Pair devices, inspect live node status, command catalogs, and exec approvals.`},{label:`Services`,tab:`services`,detail:`Enable browser/media services before exposing them through a node host.`},{label:`Debug`,tab:`debug`,detail:`Inspect node-host, browser proxy, and gateway runtime failures.`}];case`tools`:case`canvasHost`:return[{label:`Services`,tab:`services`,detail:`Connect service APIs, web/search, browser/media, and custom integrations.`},{label:`Agents`,tab:`agents`,detail:`Grant service tools to an Agent.`}];case`web`:return[{label:`Channels`,tab:`channels`,detail:`Web-client login, heartbeat, and reconnect policy for QR/web channels.`},{label:`Debug`,tab:`debug`,detail:`Run operator-approved web login diagnostics.`}];default:return[]}}function x(t,n,r){return e`
|
|
190
190
|
<a
|
|
191
191
|
class=${r}
|
|
192
192
|
href=${o(t.tab,n.basePath??``)}
|
|
@@ -209,8 +209,8 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
209
209
|
</div>
|
|
210
210
|
`:n===`wallet`?e`
|
|
211
211
|
<div class="callout warn">
|
|
212
|
-
Wallet config is advanced plumbing. Use Wallet for balances, approvals, policy,
|
|
213
|
-
|
|
212
|
+
Wallet config is advanced plumbing. Use Wallet for balances, approvals, signer policy, and
|
|
213
|
+
passkeys; use Mining for the singleton <span class="mono">@wallet:mining</span> lifecycle; use
|
|
214
214
|
Network for bond wallet and Fased Network state. Private-key import/export, signer cleanup, and
|
|
215
215
|
mining-wallet deletion stay in onboarding or CLI.
|
|
216
216
|
</div>
|
|
@@ -300,7 +300,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
300
300
|
`})}
|
|
301
301
|
</div>
|
|
302
302
|
</section>
|
|
303
|
-
`}function T(e,t){return r[e]||{label:t?.title??u(e),description:t?.description??``}}function E(e){let{key:t,schema:n,uiHints:r}=e;if(!n||i(n)!==`object`||!n.properties)return[];let a=Object.entries(n.properties).map(([e,n])=>{let i=l([t,e],r);return{key:e,label:i?.label??n.title??u(e),description:i?.help??n.description??``,order:i?.order??50}});return a.sort((e,t)=>e.order===t.order?e.key.localeCompare(t.key):e.order-t.order),a}function ee(e,t){if(!e||!t)return[];let n=[];function r(e,t,i){if(e===t)return;if(typeof e!=typeof t){n.push({path:i,from:e,to:t});return}if(typeof e!=`object`||!e||t===null){e!==t&&n.push({path:i,from:e,to:t});return}if(Array.isArray(e)&&Array.isArray(t)){JSON.stringify(e)!==JSON.stringify(t)&&n.push({path:i,from:e,to:t});return}let a=e,o=t,s=new Set([...Object.keys(a),...Object.keys(o)]);for(let e of s)r(a[e],o[e],i?`${i}.${e}`:e)}return r(e,t,``),n}function D(e,t=40){let n;try{n=JSON.stringify(e)??String(e)}catch{n=String(e)}return n.length<=t?n:n.slice(0,t-3)+`...`}function O(e){let t=_(e)??{},n=_(t.auth)??{},r=_(n.profiles)??{},i=_(n.order)??{},a=_((_(t.models)??{}).providers)??{},o=_((_(t.gateway)??{}).auth),s=o&&typeof o.mode==`string`?o.mode:null,c=new Set([...Object.keys(a),...Object.keys(i),...Object.values(r).map(e=>{let t=_(e);return t&&typeof t.provider==`string`?t.provider.trim():``}).filter(Boolean)]),l=Array.from(c).toSorted((e,t)=>e.localeCompare(t)).map(e=>{let t=_(a[e]),n=[];for(let[t,i]of Object.entries(r)){let r=_(i);if((r&&typeof r.provider==`string`?r.provider.trim():``)!==e)continue;let a=r&&typeof r.mode==`string`?r.mode:`unknown`,o=a===`api_key`||a===`oauth`||a===`token`?a:`unknown`;n.push({id:t,mode:o,email:r&&typeof r.email==`string`&&r.email.trim()||void 0})}return{id:e,modelCount:Array.isArray(t?.models)?t.models.length:0,authMode:t&&typeof t.auth==`string`?t.auth:null,hasApiKey:!!(t&&`apiKey`in t),profiles:n,orderedProfileIds:v(i[e])}}),u={api_key:0,oauth:0,token:0,unknown:0};for(let e of l)for(let t of e.profiles)u[t.mode]+=1;return{gatewayAuthMode:s,totalProfiles:Object.keys(r).length,totalProviders:l.length,profileModeCounts:u,providers:l}}function k(e){switch(e){case`api_key`:return`api-key`;case`oauth`:return`oauth`;case`token`:return`token`;default:return null}}function A(e){return e===`oauth`||e===`token`?e:`api_key`}function te(e){return e.trim()||void 0}function ne(e){return/^[^\s@]+@[^\s@]+$/.test(e)}function j(e,t){let n=e.get(t);return typeof n==`string`?n.trim():``}function M(e,t){let n=e.indexOf(`:`);return n<0?!0:e.slice(0,n)===t}function N(e){return Object.values(e).some(Boolean)}function P(e,t){let n=e.elements.namedItem(t);return n instanceof HTMLInputElement||n instanceof HTMLSelectElement?n:null}function F(e){(e instanceof HTMLInputElement||e instanceof HTMLSelectElement)&&e.setCustomValidity(``)}function I(e,t){let n=null;for(let r of[`id`,`provider`,`mode`,`email`]){let i=P(e,r);if(!i)continue;let a=t[r]??``;i.setCustomValidity(a),!n&&a&&(n=i)}n?.reportValidity()}function L(e){let t=new Set;(e.authMode===`api-key`||e.authMode===`oauth`||e.authMode===`token`)&&t.add(e.authMode),e.hasApiKey&&t.add(`api-key`);for(let n of e.profiles){let e=k(n.mode);e&&t.add(e)}return m.filter(e=>t.has(e))}function R(e,t){let n=new Set(e.profiles.map(e=>e.id)),r=e.orderedProfileIds.filter(e=>n.has(e)),i=e.profiles.map(e=>e.id).filter(e=>e!==t&&!r.includes(e));return n.has(t)?[t,...r.filter(e=>e!==t),...i]:[...r,...i]}function z(e){let t=new Map(e.profiles.map(e=>[e.id,e])),n=e.orderedProfileIds.map(e=>t.get(e)??null).filter(e=>!!e),r=e.profiles.filter(t=>!e.orderedProfileIds.includes(t.id));return[...n,...r]}function B(e){let t={},n={};for(let r of e.providers){let e=r.profiles.map(e=>e.id),i=r.orderedProfileIds.filter(t=>e.includes(t)),a=e.filter(e=>!i.includes(e));(i.length>0||a.length>0)&&(n[r.id]=[...i,...a]);for(let e of r.profiles)t[e.id]={provider:r.id,mode:A(e.mode),email:e.email}}return{profiles:t,order:n}}function V(e,t){let n=t.id.trim(),r=t.provider.trim();if(!n||!r)return e;let i=e.profiles[n],a={...e.profiles};a[n]={provider:r,mode:A(t.mode),email:te(t.email??``)};let o=Object.fromEntries(Object.entries(e.order).map(([e,t])=>[e,[...t]])),s=o[r]??[],c=i&&i.provider===r?s.indexOf(n):-1;for(let[e,t]of Object.entries(o))o[e]=t.filter(e=>e!==n);let l=o[r]??[];c>=0?l.splice(Math.min(c,l.length),0,n):l.push(n),o[r]=l;for(let[e,t]of Object.entries(o))t.length===0&&delete o[e];return{profiles:a,order:o}}function H(e,t){if(!e.profiles[t])return e;let n={...e.profiles};delete n[t];let r={};for(let[n,i]of Object.entries(e.order)){let e=i.filter(e=>e!==t);e.length>0&&(r[n]=e)}return{profiles:n,order:r}}function U(e,t,n,r){if(!e.profiles[n]||e.profiles[n]?.provider!==t)return e;let i=Object.entries(e.profiles).filter(([,e])=>e.provider===t).map(([e])=>e),a=[...(e.order[t]??[]).filter(e=>i.includes(e)),...i.filter(n=>!(e.order[t]??[]).includes(n))],o=a.indexOf(n);if(o<0)return e;let s=r===`up`?o-1:o+1;if(s<0||s>=a.length)return e;let c=[...a];return[c[o],c[s]]=[c[s],c[o]],{profiles:{...e.profiles},order:{...e.order,[t]:c}}}function W(e,t,n){let r=t.id.trim(),i=t.provider.trim(),a=t.mode.trim(),o=t.email?.trim()??``,s={};return r?/\s/.test(r)?s.id=`Profile id cannot contain spaces.`:r!==n&&e.profiles[r]&&(s.id=`Profile id already exists.`):s.id=`Profile id is required.`,i?/\s/.test(i)&&(s.provider=`Provider id cannot contain spaces.`):s.provider=`Provider is required.`,h.includes(a)||(s.mode=`Select a supported auth mode.`),o&&!ne(o)&&(s.email=`Enter a valid email address.`),r&&i&&!s.id&&!s.provider&&!M(r,i)&&(s.provider=`Provider should match the profile id prefix "${r.split(`:`,1)[0]}".`),s}function G(e){switch(e){case`ok`:case`static`:return`chip chip-ok`;case`expiring`:return`chip chip-warn`;case`expired`:case`missing`:return`chip chip-danger`;default:return`chip`}}function K(e){if(typeof e!=`number`||!Number.isFinite(e))return null;if(e<=0)return`now`;let t=Math.ceil(e/6e4);if(t<60)return`${t}m`;let n=Math.ceil(t/60);return n<48?`${n}h`:`${Math.ceil(n/24)}d`}function q(e){if(e.unusableKind===`disabled`)return e.unusableReason?`disabled: ${e.unusableReason}`:`disabled`;if(e.unusableKind===`cooldown`){let t=K(e.remainingMs);return t?`cooldown · ${t}`:`cooldown`}switch(e.status){case`ok`:{let t=K(e.remainingMs);return t?`ok · ${t}`:`ok`}case`expiring`:{let t=K(e.remainingMs);return t?`expiring · ${t}`:`expiring`}case`refresh-required`:return`refresh required · sign in or test the provider`;case`expired`:return`expired`;case`missing`:return`missing`;case`static`:return`static`;default:return`unknown`}}function J(e){let t=e.provider.trim(),n=e.profileId.trim();return t?e.mode===`token`?`pnpm fased models auth paste-token --provider ${t} --profile-id ${n||`${t}:manual`}`:`pnpm fased models auth login --provider ${t}`:`pnpm fased models auth login`}function re(e){return e===`api_key`||e===`token`}function ie(e){return e===`token`?`Save token`:`Save API key`}function ae(e){return e===`oauth`}function Y(e){switch(e){case`success`:return`callout info`;case`warn`:return`callout warn`;case`danger`:return`callout danger`;default:return`callout info`}}function oe(e,t){if(!e)return`Run sign-in`;switch(t?.stepType){case`note`:case`action`:return t.hasUrl?`Open browser…`:`Reading step…`;case`confirm`:return`Awaiting confirm…`;case`text`:return`Awaiting text…`;case`select`:case`multiselect`:return`Awaiting choice…`;default:return`Signing in…`}}function X(e){switch(e?.stepType){case`note`:case`action`:return e.hasUrl?`browser step`:`instruction step`;case`confirm`:return`confirmation`;case`text`:return`text input`;case`select`:return`single choice`;case`multiselect`:return`multiple choice`;default:return null}}function Z(e){return!!(e?.actionKind===`interactive`&&!e.active&&e.retryable)}function se(e){return!!(e?.actionKind===`interactive`&&e.url)}function Q(e){if(!e)return null;let t=[e.provider,e.profileId].filter(Boolean).join(` · `)||`provider auth`;switch(e.actionKind){case`interactive`:return e.active?`${t} sign-in is in progress.`:e.tone===`success`?`${t} sign-in completed.`:e.tone===`warn`?`${t} sign-in stopped before completion.`:e.tone===`danger`?`${t} sign-in needs attention.`:`${t} sign-in updated.`;case`store`:return e.active?`${t} credential update is running.`:e.tone===`success`?`${t} credential was updated.`:e.tone===`danger`?`${t} credential update failed.`:`${t} credential update changed state.`;case`clear`:return e.active?`${t} credential clear is running.`:e.tone===`success`?`${t} credential was cleared.`:e.tone===`warn`?`${t} had no stored credential to clear.`:e.tone===`danger`?`${t} credential clear failed.`:`${t} credential clear changed state.`;default:return t}}function $(e){if(!e)return[];if(e.actionKind===`interactive`){if(e.active)switch(e.stepType){case`note`:case`action`:return e.hasUrl?[`Finish the provider page in your browser, then return here for the next prompt.`,`Keep this Config card open so the next step stays visible.`]:[`Read the instruction fully, then return here to continue.`,`Keep this Config card open so the next step stays visible.`];case`confirm`:return[`Approve the confirmation prompt to keep the sign-in flow moving.`,e.hasUrl?`If needed, reopen the sign-in page from this card before confirming.`:`Return here after confirming to continue.`];case`text`:return[`Paste the requested code or value exactly into the prompt dialog.`,`Submit the prompt, then return here for the next step.`];case`select`:case`multiselect`:return[`Choose the option that matches the provider account or workspace you want.`,`If the choices look wrong, cancel and restart before storing the wrong profile.`];default:return[`Follow the current prompt, then return here for the next step.`]}if(e.tone===`success`)return[`Check the refreshed runtime status below to confirm the provider is now usable.`,`If you need a different account, rerun sign-in from this same profile.`];if(e.tone===`warn`)return[`Use Retry sign-in to continue from this profile.`,e.url?`Use Open sign-in page again if the provider browser page was already opened.`:`Restart the sign-in flow from this profile when you are ready.`];if(e.tone===`danger`)return[`Review the error detail, then retry sign-in from this profile.`,`If the browser flow keeps failing, use the terminal command fallback below.`]}return e.actionKind===`store`?e.tone===`danger`?[`Paste the credential again and verify the selected provider/profile.`,`If needed, clear the credential first to start from a clean state.`]:[`Check the refreshed runtime status below to confirm the stored credential is now active.`]:e.actionKind===`clear`?e.tone===`danger`?[`Retry the clear action if you still need to remove the stored credential.`,`If the profile looks wrong, update it in the config form first.`]:[`Check the refreshed runtime status below to confirm the profile no longer has a stored credential.`]:[]}function ce(e,t){return e?.providers.find(e=>e.provider===t)??null}function le(e,t,n){return ce(e,t)?.profiles.find(e=>e.profileId===n)??null}function ue(n,r,i,a){let o=e=>{a.onSectionChange(e),a.onSubsectionChange(null)},c=n.providers.length>0,l=a.authAction,u=Q(l),d=$(l),f=a.activeSection===`auth`,p=a.activeSection===`models`,m=B(n),g=(i?Object.entries(i.sourceCounts).toSorted((e,t)=>e[0].localeCompare(t[0])):[]).slice(0,4),_=i?.providers.filter(e=>!e.configured).slice(0,6).map(e=>e.provider).join(`, `)??``,v=e=>{a.onFormPatch([`auth`,`profiles`],e.profiles),a.onFormPatch([`auth`,`order`],e.order)},y=(e,t)=>{e.preventDefault();let n=e.currentTarget,r=new FormData(n),i={id:t,provider:j(r,`provider`),mode:j(r,`mode`),email:j(r,`email`)},a=W(m,i,t);if(N(a)){I(n,a);return}v(V(m,i))},b=e=>{e.preventDefault();let t=e.currentTarget,n=new FormData(t),r={id:j(n,`id`),provider:j(n,`provider`),mode:j(n,`mode`),email:j(n,`email`)},i=W(m,r);if(N(i)){I(t,i);return}v(V(m,r)),t.reset()},x=(e,t,n,r)=>{if(typeof window>`u`)return;let i=n===`token`?`token`:`API key`,o=window.prompt(`Paste ${e} ${i} for ${t}`,``)?.trim();o&&a.onStoreProfileCredential({profileId:t,provider:e,mode:n,secret:o,...r?{email:r}:{}})},S=e=>{typeof window<`u`&&!window.confirm(`Clear the stored credential for "${e}"?`)||a.onClearProfileCredential(e)},C=(e,t)=>{a.onRunInteractiveProfileAuth({profileId:t,provider:e})},w=e=>{!e?.url||typeof window>`u`||s(e.url)};return e`
|
|
303
|
+
`}function T(e,t){return a[e]||{label:t?.title??l(e),description:t?.description??``}}function E(e){let{key:t,schema:n,uiHints:i}=e;if(!n||u(n)!==`object`||!n.properties)return[];let a=Object.entries(n.properties).map(([e,n])=>{let a=r([t,e],i);return{key:e,label:a?.label??n.title??l(e),description:a?.help??n.description??``,order:a?.order??50}});return a.sort((e,t)=>e.order===t.order?e.key.localeCompare(t.key):e.order-t.order),a}function ee(e,t){if(!e||!t)return[];let n=[];function r(e,t,i){if(e===t)return;if(typeof e!=typeof t){n.push({path:i,from:e,to:t});return}if(typeof e!=`object`||!e||t===null){e!==t&&n.push({path:i,from:e,to:t});return}if(Array.isArray(e)&&Array.isArray(t)){JSON.stringify(e)!==JSON.stringify(t)&&n.push({path:i,from:e,to:t});return}let a=e,o=t,s=new Set([...Object.keys(a),...Object.keys(o)]);for(let e of s)r(a[e],o[e],i?`${i}.${e}`:e)}return r(e,t,``),n}function D(e,t=40){let n;try{n=JSON.stringify(e)??String(e)}catch{n=String(e)}return n.length<=t?n:n.slice(0,t-3)+`...`}function O(e){let t=_(e)??{},n=_(t.auth)??{},r=_(n.profiles)??{},i=_(n.order)??{},a=_((_(t.models)??{}).providers)??{},o=_((_(t.gateway)??{}).auth),s=o&&typeof o.mode==`string`?o.mode:null,c=new Set([...Object.keys(a),...Object.keys(i),...Object.values(r).map(e=>{let t=_(e);return t&&typeof t.provider==`string`?t.provider.trim():``}).filter(Boolean)]),l=Array.from(c).toSorted((e,t)=>e.localeCompare(t)).map(e=>{let t=_(a[e]),n=[];for(let[t,i]of Object.entries(r)){let r=_(i);if((r&&typeof r.provider==`string`?r.provider.trim():``)!==e)continue;let a=r&&typeof r.mode==`string`?r.mode:`unknown`,o=a===`api_key`||a===`oauth`||a===`token`?a:`unknown`;n.push({id:t,mode:o,email:r&&typeof r.email==`string`&&r.email.trim()||void 0})}return{id:e,modelCount:Array.isArray(t?.models)?t.models.length:0,authMode:t&&typeof t.auth==`string`?t.auth:null,hasApiKey:!!(t&&`apiKey`in t),profiles:n,orderedProfileIds:v(i[e])}}),u={api_key:0,oauth:0,token:0,unknown:0};for(let e of l)for(let t of e.profiles)u[t.mode]+=1;return{gatewayAuthMode:s,totalProfiles:Object.keys(r).length,totalProviders:l.length,profileModeCounts:u,providers:l}}function k(e){switch(e){case`api_key`:return`api-key`;case`oauth`:return`oauth`;case`token`:return`token`;default:return null}}function A(e){return e===`oauth`||e===`token`?e:`api_key`}function te(e){return e.trim()||void 0}function ne(e){return/^[^\s@]+@[^\s@]+$/.test(e)}function j(e,t){let n=e.get(t);return typeof n==`string`?n.trim():``}function M(e,t){let n=e.indexOf(`:`);return n<0?!0:e.slice(0,n)===t}function N(e){return Object.values(e).some(Boolean)}function P(e,t){let n=e.elements.namedItem(t);return n instanceof HTMLInputElement||n instanceof HTMLSelectElement?n:null}function F(e){(e instanceof HTMLInputElement||e instanceof HTMLSelectElement)&&e.setCustomValidity(``)}function I(e,t){let n=null;for(let r of[`id`,`provider`,`mode`,`email`]){let i=P(e,r);if(!i)continue;let a=t[r]??``;i.setCustomValidity(a),!n&&a&&(n=i)}n?.reportValidity()}function L(e){let t=new Set;(e.authMode===`api-key`||e.authMode===`oauth`||e.authMode===`token`)&&t.add(e.authMode),e.hasApiKey&&t.add(`api-key`);for(let n of e.profiles){let e=k(n.mode);e&&t.add(e)}return m.filter(e=>t.has(e))}function R(e,t){let n=new Set(e.profiles.map(e=>e.id)),r=e.orderedProfileIds.filter(e=>n.has(e)),i=e.profiles.map(e=>e.id).filter(e=>e!==t&&!r.includes(e));return n.has(t)?[t,...r.filter(e=>e!==t),...i]:[...r,...i]}function z(e){let t=new Map(e.profiles.map(e=>[e.id,e])),n=e.orderedProfileIds.map(e=>t.get(e)??null).filter(e=>!!e),r=e.profiles.filter(t=>!e.orderedProfileIds.includes(t.id));return[...n,...r]}function B(e){let t={},n={};for(let r of e.providers){let e=r.profiles.map(e=>e.id),i=r.orderedProfileIds.filter(t=>e.includes(t)),a=e.filter(e=>!i.includes(e));(i.length>0||a.length>0)&&(n[r.id]=[...i,...a]);for(let e of r.profiles)t[e.id]={provider:r.id,mode:A(e.mode),email:e.email}}return{profiles:t,order:n}}function V(e,t){let n=t.id.trim(),r=t.provider.trim();if(!n||!r)return e;let i=e.profiles[n],a={...e.profiles};a[n]={provider:r,mode:A(t.mode),email:te(t.email??``)};let o=Object.fromEntries(Object.entries(e.order).map(([e,t])=>[e,[...t]])),s=o[r]??[],c=i&&i.provider===r?s.indexOf(n):-1;for(let[e,t]of Object.entries(o))o[e]=t.filter(e=>e!==n);let l=o[r]??[];c>=0?l.splice(Math.min(c,l.length),0,n):l.push(n),o[r]=l;for(let[e,t]of Object.entries(o))t.length===0&&delete o[e];return{profiles:a,order:o}}function H(e,t){if(!e.profiles[t])return e;let n={...e.profiles};delete n[t];let r={};for(let[n,i]of Object.entries(e.order)){let e=i.filter(e=>e!==t);e.length>0&&(r[n]=e)}return{profiles:n,order:r}}function U(e,t,n,r){if(!e.profiles[n]||e.profiles[n]?.provider!==t)return e;let i=Object.entries(e.profiles).filter(([,e])=>e.provider===t).map(([e])=>e),a=[...(e.order[t]??[]).filter(e=>i.includes(e)),...i.filter(n=>!(e.order[t]??[]).includes(n))],o=a.indexOf(n);if(o<0)return e;let s=r===`up`?o-1:o+1;if(s<0||s>=a.length)return e;let c=[...a];return[c[o],c[s]]=[c[s],c[o]],{profiles:{...e.profiles},order:{...e.order,[t]:c}}}function W(e,t,n){let r=t.id.trim(),i=t.provider.trim(),a=t.mode.trim(),o=t.email?.trim()??``,s={};return r?/\s/.test(r)?s.id=`Profile id cannot contain spaces.`:r!==n&&e.profiles[r]&&(s.id=`Profile id already exists.`):s.id=`Profile id is required.`,i?/\s/.test(i)&&(s.provider=`Provider id cannot contain spaces.`):s.provider=`Provider is required.`,h.includes(a)||(s.mode=`Select a supported auth mode.`),o&&!ne(o)&&(s.email=`Enter a valid email address.`),r&&i&&!s.id&&!s.provider&&!M(r,i)&&(s.provider=`Provider should match the profile id prefix "${r.split(`:`,1)[0]}".`),s}function G(e){switch(e){case`ok`:case`static`:return`chip chip-ok`;case`expiring`:return`chip chip-warn`;case`expired`:case`missing`:return`chip chip-danger`;default:return`chip`}}function K(e){if(typeof e!=`number`||!Number.isFinite(e))return null;if(e<=0)return`now`;let t=Math.ceil(e/6e4);if(t<60)return`${t}m`;let n=Math.ceil(t/60);return n<48?`${n}h`:`${Math.ceil(n/24)}d`}function q(e){if(e.unusableKind===`disabled`)return e.unusableReason?`disabled: ${e.unusableReason}`:`disabled`;if(e.unusableKind===`cooldown`){let t=K(e.remainingMs);return t?`cooldown · ${t}`:`cooldown`}switch(e.status){case`ok`:{let t=K(e.remainingMs);return t?`ok · ${t}`:`ok`}case`expiring`:{let t=K(e.remainingMs);return t?`expiring · ${t}`:`expiring`}case`refresh-required`:return`refresh required · sign in or test the provider`;case`expired`:return`expired`;case`missing`:return`missing`;case`static`:return`static`;default:return`unknown`}}function J(e){let t=e.provider.trim(),n=e.profileId.trim();return t?e.mode===`token`?`pnpm fased models auth paste-token --provider ${t} --profile-id ${n||`${t}:manual`}`:`pnpm fased models auth login --provider ${t}`:`pnpm fased models auth login`}function re(e){return e===`api_key`||e===`token`}function ie(e){return e===`token`?`Save token`:`Save API key`}function ae(e){return e===`oauth`}function Y(e){switch(e){case`success`:return`callout info`;case`warn`:return`callout warn`;case`danger`:return`callout danger`;default:return`callout info`}}function oe(e,t){if(!e)return`Run sign-in`;switch(t?.stepType){case`note`:case`action`:return t.hasUrl?`Open browser…`:`Reading step…`;case`confirm`:return`Awaiting confirm…`;case`text`:return`Awaiting text…`;case`select`:case`multiselect`:return`Awaiting choice…`;default:return`Signing in…`}}function X(e){switch(e?.stepType){case`note`:case`action`:return e.hasUrl?`browser step`:`instruction step`;case`confirm`:return`confirmation`;case`text`:return`text input`;case`select`:return`single choice`;case`multiselect`:return`multiple choice`;default:return null}}function Z(e){return!!(e?.actionKind===`interactive`&&!e.active&&e.retryable)}function se(e){return!!(e?.actionKind===`interactive`&&e.url)}function Q(e){if(!e)return null;let t=[e.provider,e.profileId].filter(Boolean).join(` · `)||`provider auth`;switch(e.actionKind){case`interactive`:return e.active?`${t} sign-in is in progress.`:e.tone===`success`?`${t} sign-in completed.`:e.tone===`warn`?`${t} sign-in stopped before completion.`:e.tone===`danger`?`${t} sign-in needs attention.`:`${t} sign-in updated.`;case`store`:return e.active?`${t} credential update is running.`:e.tone===`success`?`${t} credential was updated.`:e.tone===`danger`?`${t} credential update failed.`:`${t} credential update changed state.`;case`clear`:return e.active?`${t} credential clear is running.`:e.tone===`success`?`${t} credential was cleared.`:e.tone===`warn`?`${t} had no stored credential to clear.`:e.tone===`danger`?`${t} credential clear failed.`:`${t} credential clear changed state.`;default:return t}}function $(e){if(!e)return[];if(e.actionKind===`interactive`){if(e.active)switch(e.stepType){case`note`:case`action`:return e.hasUrl?[`Finish the provider page in your browser, then return here for the next prompt.`,`Keep this Config card open so the next step stays visible.`]:[`Read the instruction fully, then return here to continue.`,`Keep this Config card open so the next step stays visible.`];case`confirm`:return[`Approve the confirmation prompt to keep the sign-in flow moving.`,e.hasUrl?`If needed, reopen the sign-in page from this card before confirming.`:`Return here after confirming to continue.`];case`text`:return[`Paste the requested code or value exactly into the prompt dialog.`,`Submit the prompt, then return here for the next step.`];case`select`:case`multiselect`:return[`Choose the option that matches the provider account or workspace you want.`,`If the choices look wrong, cancel and restart before storing the wrong profile.`];default:return[`Follow the current prompt, then return here for the next step.`]}if(e.tone===`success`)return[`Check the refreshed runtime status below to confirm the provider is now usable.`,`If you need a different account, rerun sign-in from this same profile.`];if(e.tone===`warn`)return[`Use Retry sign-in to continue from this profile.`,e.url?`Use Open sign-in page again if the provider browser page was already opened.`:`Restart the sign-in flow from this profile when you are ready.`];if(e.tone===`danger`)return[`Review the error detail, then retry sign-in from this profile.`,`If the browser flow keeps failing, use the terminal command fallback below.`]}return e.actionKind===`store`?e.tone===`danger`?[`Paste the credential again and verify the selected provider/profile.`,`If needed, clear the credential first to start from a clean state.`]:[`Check the refreshed runtime status below to confirm the stored credential is now active.`]:e.actionKind===`clear`?e.tone===`danger`?[`Retry the clear action if you still need to remove the stored credential.`,`If the profile looks wrong, update it in the config form first.`]:[`Check the refreshed runtime status below to confirm the profile no longer has a stored credential.`]:[]}function ce(e,t){return e?.providers.find(e=>e.provider===t)??null}function le(e,t,n){return ce(e,t)?.profiles.find(e=>e.profileId===n)??null}function ue(n,r,i,a){let o=e=>{a.onSectionChange(e),a.onSubsectionChange(null)},s=n.providers.length>0,l=a.authAction,u=Q(l),d=$(l),f=a.activeSection===`auth`,p=a.activeSection===`models`,m=B(n),g=(i?Object.entries(i.sourceCounts).toSorted((e,t)=>e[0].localeCompare(t[0])):[]).slice(0,4),_=i?.providers.filter(e=>!e.configured).slice(0,6).map(e=>e.provider).join(`, `)??``,v=e=>{a.onFormPatch([`auth`,`profiles`],e.profiles),a.onFormPatch([`auth`,`order`],e.order)},y=(e,t)=>{e.preventDefault();let n=e.currentTarget,r=new FormData(n),i={id:t,provider:j(r,`provider`),mode:j(r,`mode`),email:j(r,`email`)},a=W(m,i,t);if(N(a)){I(n,a);return}v(V(m,i))},b=e=>{e.preventDefault();let t=e.currentTarget,n=new FormData(t),r={id:j(n,`id`),provider:j(n,`provider`),mode:j(n,`mode`),email:j(n,`email`)},i=W(m,r);if(N(i)){I(t,i);return}v(V(m,r)),t.reset()},x=(e,t,n,r)=>{if(typeof window>`u`)return;let i=n===`token`?`token`:`API key`,o=window.prompt(`Paste ${e} ${i} for ${t}`,``)?.trim();o&&a.onStoreProfileCredential({profileId:t,provider:e,mode:n,secret:o,...r?{email:r}:{}})},S=e=>{typeof window<`u`&&!window.confirm(`Clear the stored credential for "${e}"?`)||a.onClearProfileCredential(e)},C=(e,t)=>{a.onRunInteractiveProfileAuth({profileId:t,provider:e})},w=e=>{!e?.url||typeof window>`u`||c(e.url)};return e`
|
|
304
304
|
<section class="card" style="margin-bottom: 16px;">
|
|
305
305
|
<div class="row" style="justify-content: space-between; gap: 12px; align-items: flex-start;">
|
|
306
306
|
<div>
|
|
@@ -403,7 +403,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
403
403
|
</div>
|
|
404
404
|
`:t}
|
|
405
405
|
|
|
406
|
-
${
|
|
406
|
+
${s?e`
|
|
407
407
|
<div class="list" style="margin-top: 12px;">
|
|
408
408
|
${n.providers.map(n=>{let i=z(n),o=ce(r,n.id);return e`
|
|
409
409
|
<div class="list-item">
|
|
@@ -835,7 +835,7 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
835
835
|
</div>
|
|
836
836
|
</form>
|
|
837
837
|
</section>
|
|
838
|
-
`}function de(r){let
|
|
838
|
+
`}function de(r){let a=r.valid==null?`unknown`:r.valid?`valid`:`invalid`,o=s(r.schema),c=o.schema?o.unsupportedPaths.length>0:!1,l=o.schema&&u(o.schema)===`object`&&o.schema.properties?{...o.schema,properties:Object.fromEntries(Object.entries(o.schema.properties).filter(([e])=>!p.has(e)))}:o.schema,d=r.activeSection&&!p.has(r.activeSection)?r.activeSection:null,m=l?.properties??{},h=f.filter(e=>!p.has(e.key)&&e.key in m),_=new Set(f.map(e=>e.key)),v=Object.keys(m).filter(e=>!_.has(e)).map(e=>({key:e,label:T(e,m[e]).label})),b=[...h,...v],x=d&&l&&u(l)===`object`?l.properties?.[d]:void 0,k=d?T(d,x):null,A=d?E({key:d,schema:x,uiHints:r.uiHints}):[],te=r.formMode===`form`&&!!d&&A.length>0,ne=r.activeSubsection===g,j=r.searchQuery||ne?null:r.activeSubsection??A[0]?.key??null,M=r.formMode===`form`?ee(r.originalValue,r.formValue):[],N=r.formMode===`raw`&&r.raw!==r.originalRaw,P=r.formMode===`form`?M.length>0:N,F=!!r.formValue&&!r.loading&&!!o.schema,I=r.connected&&!r.saving&&P&&(r.formMode===`raw`?!0:F),L=r.connected&&!r.applying&&!r.updating&&P&&(r.formMode===`raw`?!0:F),R=r.formMode===`form`?O(r.formValue??r.originalValue):null,z=R&&(d===`auth`||d===`models`)?R:null,B=P?`dirty`:a===`valid`?`valid`:a===`invalid`?`invalid`:`unknown`,V=P?`Unsaved changes`:a===`valid`?`Config valid`:a===`invalid`?`Config invalid`:`Config status unknown`;return e`
|
|
839
839
|
<div class="config-layout">
|
|
840
840
|
<!-- Sidebar -->
|
|
841
841
|
<aside class="config-sidebar">
|
|
@@ -1025,8 +1025,8 @@ import{a as e,r as t,t as n}from"./icons-D3-vEvih.js";import{a as r,b as i,i as
|
|
|
1025
1025
|
<div class="config-loading__spinner"></div>
|
|
1026
1026
|
<span>Loading schema…</span>
|
|
1027
1027
|
</div>
|
|
1028
|
-
`:d===null?w({sections:b,schemaProps:m,props:r}):
|
|
1029
|
-
${
|
|
1028
|
+
`:d===null?w({sections:b,schemaProps:m,props:r}):i({schema:l,uiHints:r.uiHints,value:r.formValue,disabled:r.loading||!r.formValue,unsupportedPaths:o.unsupportedPaths,onPatch:r.onFormPatch,searchQuery:r.searchQuery,activeSection:d,activeSubsection:j})}
|
|
1029
|
+
${c&&d!==null?e`
|
|
1030
1030
|
<div class="callout danger" style="margin-top: 12px">
|
|
1031
1031
|
Form view can't safely edit some fields. Use Raw to avoid losing config entries.
|
|
1032
1032
|
</div>
|
|
@@ -1050,4 +1050,4 @@ ${JSON.stringify(r.issues,null,2)}</pre
|
|
|
1050
1050
|
</main>
|
|
1051
1051
|
</div>
|
|
1052
1052
|
`}export{z as buildOrderedProviderProfiles,R as buildPreferredProviderOrder,J as buildProviderAuthActionCommand,$ as buildProviderAuthActionGuidance,Q as buildProviderAuthActionSummary,B as buildProviderAuthState,O as buildProviderAuthSummary,Y as calloutClassForProviderAuthActionTone,se as canReopenProviderAuthActionUrl,Z as canRetryProviderAuthAction,q as formatProviderAuthRuntimeStatus,oe as labelForInteractiveProviderAuthAction,X as labelForProviderAuthActionStep,U as moveProviderAuthProfile,H as removeProviderAuthProfile,de as renderConfig,L as resolveEditableProviderAuthModes,le as resolveProviderAuthLiveProfileStatus,V as upsertProviderAuthProfile,W as validateProviderAuthProfileDraft};
|
|
1053
|
-
//# sourceMappingURL=config-
|
|
1053
|
+
//# sourceMappingURL=config-LeImukCW.js.map
|