@fased/fased 0.1.56 → 0.1.58
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/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 +2 -2
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- package/dist/agents/current-model-catalog.js +5 -2
- 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/model-catalog-snapshot.js +124 -0
- package/dist/agents/model-catalog-status.js +6 -1
- package/dist/agents/openai-codex-app-server.js +35 -10
- package/dist/agents/openai-codex-runtime-component.js +39 -0
- package/dist/agents/pi-embedded-runner/compact.js +1 -1
- package/dist/agents/pi-embedded-runner/extra-params.js +28 -16
- package/dist/agents/pi-embedded-runner/run/attempt.js +1 -1
- package/dist/agents/pi-embedded-runner/session-manager-init.js +5 -20
- 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/provider-extension-catalog-manifest.js +2 -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/local-loader.js +6 -6
- package/dist/agents/skills/plugin-skills.js +2 -2
- package/dist/agents/skills/workspace.js +13 -13
- 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-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/session-status-tool.js +1 -1
- 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/post-compaction-audit.js +3 -3
- package/dist/auto-reply/reply/post-compaction-context.js +3 -3
- 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/capabilities/install.js +43 -0
- 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/components-cli.js +9 -31
- 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 +2 -2
- package/dist/cli/hooks-cli.js +6 -6
- 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 +5 -5
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/update-cli/update-command.js +50 -12
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/agent.js +1 -1
- package/dist/commands/auth-choice.apply.openai.js +9 -0
- package/dist/commands/auth-choice.apply.plugin-provider.js +1 -1
- package/dist/commands/dashboard-link.js +3 -3
- package/dist/commands/doctor-install.js +5 -5
- 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/onboard-auth.credentials.js +3 -3
- package/dist/commands/onboard-channels.js +1 -1
- package/dist/commands/onboarding/plugin-install.js +4 -4
- 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 +47 -47
- package/dist/config/cache-utils.js +2 -2
- package/dist/config/includes.js +5 -5
- package/dist/config/io.js +2 -2
- package/dist/config/paths.js +3 -3
- package/dist/config/sat-runtime-ids.js +3 -3
- 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/control-ui/assets/{app-D7TXyNRi.js → app-CpgQGqe6.js} +1689 -1689
- package/dist/control-ui/assets/{index-BmSBom-w.js → index-DiBBflpv.js} +3 -3
- 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 +5 -5
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
- 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/hooks-mapping.js +4 -4
- package/dist/gateway/protocol/schema/agents-models-skills.js +43 -1
- package/dist/gateway/server-discovery.js +2 -2
- package/dist/gateway/server-http.js +4 -4
- package/dist/gateway/server-methods/chat.js +3 -3
- package/dist/gateway/server-methods/hooks.js +1 -1
- package/dist/gateway/server-methods/models.js +12 -5
- package/dist/gateway/server-methods/plugins-marketplace.js +3 -3
- package/dist/gateway/server-methods/services.js +1 -1
- package/dist/gateway/server-methods/sessions.js +7 -7
- package/dist/gateway/server-methods/usage.js +2 -2
- package/dist/gateway/server.impl.js +3 -3
- 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 +1 -1
- 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/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/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/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/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/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/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/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-DzWlKv1U.js → accounts-BJuN64m-.js} +1 -1
- package/dist/plugin-sdk/{actions-BplQVLL6.js → actions-DaEvM9Bl.js} +2 -2
- package/dist/plugin-sdk/{active-listener-x4MLhYUw.js → active-listener-B8Kuanet.js} +1 -1
- package/dist/plugin-sdk/{agent-scope-BbgPlhtw.js → agent-scope-CCjfjKoO.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-G8h3Sn8_.js → audio-preflight-D7tCO0EH.js} +31 -31
- package/dist/plugin-sdk/{audit-CWknklvI.js → audit-CVWH4BVP.js} +1 -1
- package/dist/plugin-sdk/{channel-access-a9Dnfw7-.js → channel-access-CH9FAS-I.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-CD4QDN5E.js → channel-access-configure-CI0je66H.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
- package/dist/plugin-sdk/channel-plugin-common.js +5 -5
- package/dist/plugin-sdk/{chunk-B8EZkwiT.js → chunk-01oBnQjh.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-CEPklxGe.js → chunk-items-D2zDJ8q8.js} +1 -1
- package/dist/plugin-sdk/command-status.js +31 -31
- package/dist/plugin-sdk/{commands-registry-BfEa4tFA.js → commands-registry-ckg4fhYa.js} +2 -2
- package/dist/plugin-sdk/{common-CbfckC19.js → common-zHvdO8ly.js} +1 -1
- package/dist/plugin-sdk/{config-Bt5GhnA-.js → config-DrhYEiCM.js} +1128 -3
- package/dist/plugin-sdk/{config-schema-B9DKr6J5.js → config-schema-BtjeV5Hm.js} +1765 -1412
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +3 -3
- package/dist/plugin-sdk/discord.js +22 -22
- package/dist/plugin-sdk/{filesystem-manager-BGGGrkiN.js → filesystem-manager-ZoHU8oA7.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-xBqok6yR.js → fs-safe-g4g7GT02.js} +2 -2
- package/dist/plugin-sdk/{handle-action-DbzZFYnG.js → handle-action-5dhYpMbP.js} +17 -17
- package/dist/plugin-sdk/{helpers-CluGKuIV.js → helpers-E9aafRzA.js} +1 -1
- package/dist/plugin-sdk/{image-ops-CUaLtIFj.js → image-ops-D2U9ctmu.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +5 -5
- package/dist/plugin-sdk/index.js +33 -33
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-DJuHYDiK.js → login-hql0fNuL.js} +3 -3
- package/dist/plugin-sdk/{login-qr-CbHL5ayf.js → login-qr-DJJ0svux.js} +4 -4
- package/dist/plugin-sdk/{manager-oHAvZCT3.js → manager-ciNnAMBn.js} +4 -4
- package/dist/plugin-sdk/{markdown-tables-Mkx7k92Y.js → markdown-tables-BKxbua_h.js} +1 -1
- package/dist/plugin-sdk/{media-CA8sTmVE.js → media-DUIZ6x9H.js} +4 -4
- package/dist/plugin-sdk/{memory-search-VFll-AIb.js → memory-search-DTjIMw8J.js} +1 -1
- package/dist/plugin-sdk/{monitor-CZrN9pev.js → monitor-CNSGw4uQ.js} +35 -35
- package/dist/plugin-sdk/{monitor-CmwGqNyV.js → monitor-D-giXewh.js} +38 -38
- package/dist/plugin-sdk/{openresponses-http-CWOd4war.js → openresponses-http-dbTd8UMk.js} +31 -31
- package/dist/plugin-sdk/{optional-runtime-dependency-DKmk9PZa.js → optional-runtime-dependency-CKsJL1PD.js} +1 -1
- package/dist/plugin-sdk/{outbound-0oN9IfNw.js → outbound-DhGrjRft.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-DdVkqUzE.js → outbound-attachment-DAF8huFz.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-ClqhfCUk.js → pairing-message-BsJVvXkb.js} +1 -1
- package/dist/plugin-sdk/{pairing-message-BMkkS038.d.ts → pairing-message-C403mq4K.d.ts} +1 -1
- package/dist/plugin-sdk/{pairing-store-B01mCSct.js → pairing-store-DwM-BNbj.js} +2 -2
- package/dist/plugin-sdk/{path-alias-guards-BJZD5JMJ.js → path-alias-guards-DjgDArrp.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-Buz0JC1Y.js → pi-model-discovery-DkIdlJvJ.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DuwuoteY.js → pi-model-discovery-runtime-Cv7okUMt.js} +3 -3
- package/dist/plugin-sdk/{probe--7xtfzMm.js → probe-CJb5uR8B.js} +1 -1
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
- package/dist/plugin-sdk/{pw-ai-B0domrii.js → pw-ai-Dxd87W3J.js} +6 -6
- package/dist/plugin-sdk/{qmd-manager-CFFeM4Fl.js → qmd-manager-DSyx77KY.js} +1 -1
- package/dist/plugin-sdk/{replies-1macZ1mZ.js → replies-Bx61SvAC.js} +2 -2
- package/dist/plugin-sdk/{reply-prefix-ClpxvL_w.js → reply-prefix-CeVw7Mn2.js} +1 -1
- package/dist/plugin-sdk/{probe-xY3Ky0Tx.js → resolve-channels-_-nV-EK2.js} +3 -2
- package/dist/plugin-sdk/{resolve-outbound-target-BdH6LUoW.js → resolve-outbound-target-bc-FpPZg.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-CkNIKKEW.js → resolve-route-D0eBYPtb.js} +2 -2
- package/dist/plugin-sdk/{retry-policy-9ybIh4Fq.js → retry-policy-HTrC4zfC.js} +1 -1
- package/dist/plugin-sdk/{runtime-Dy420wBu.js → runtime-BVkIrYLQ.js} +4 -4
- package/dist/plugin-sdk/{runtime-dependency-CIw9t7-k.js → runtime-dependency-B2PqMdBu.js} +13 -13
- package/dist/plugin-sdk/{sandbox-paths-w64tYl0v.js → sandbox-paths-Dx2lUqCu.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
- package/dist/plugin-sdk/sat-runtime.js +31 -31
- package/dist/plugin-sdk/{send-J4JWKP62.js → send-BGDGzxUu.js} +6 -6
- package/dist/plugin-sdk/{send-BQUtCJFW.js → send-C3QWSYLR.js} +8 -8
- package/dist/plugin-sdk/{send-Dqes9tdU.js → send-DT2egZNK.js} +7 -7
- package/dist/plugin-sdk/{send-2VcOMTN5.js → send-DgzZUx2i.js} +5 -5
- package/dist/plugin-sdk/{send-DPJIIYAs.js → send-KJy3ajA3.js} +6 -6
- package/dist/plugin-sdk/{session-C_n2S5ub.js → session-BCIEFOu1.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-B7wx9ax8.js → skill-commands-CyIkcR8P.js} +4 -4
- package/dist/plugin-sdk/{slack-BouRQG-W.js → slack-DjKNh2uh.js} +47 -47
- package/dist/plugin-sdk/{slack-actions-CasHVtiq.js → slack-actions-CeM9LWDp.js} +14 -14
- package/dist/plugin-sdk/slack.d.ts +3 -3
- package/dist/plugin-sdk/slack.js +12 -12
- package/dist/plugin-sdk/{sticker-cache-BvGEUas3.js → sticker-cache-DcWzQ2wx.js} +3 -3
- package/dist/plugin-sdk/{tables-CjlQJV4r.js → tables-B2iehyjG.js} +1 -1
- package/dist/plugin-sdk/{targets-QfP164Dh.js → targets-BPket0SF.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-CwYjV6Db.js → telegram-actions-Cx_HWVht.js} +34 -34
- package/dist/plugin-sdk/telegram.d.ts +3 -3
- package/dist/plugin-sdk/telegram.js +9 -9
- package/dist/plugin-sdk/{thread-bindings.lifecycle-DU4iX_Jr.js → thread-bindings.lifecycle-CYH69SIw.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-BgYWFjNF.js → thread-bindings.state-BN6461WG.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-BdFQvrvw.d.ts → tmp-fased-dir-Ouj58axY.d.ts} +1 -1
- package/dist/plugin-sdk/{types-BYDL6dQj.d.ts → types-B4hj6HgR.d.ts} +1 -1
- package/dist/plugin-sdk/{types-CLIvQaVg.d.ts → types-dWZFX1fk.d.ts} +2 -2
- package/dist/plugin-sdk/{web-D0yENDve.js → web-vR-oNiBv.js} +36 -36
- package/dist/plugin-sdk/{whatsapp-actions-BT2nPLyo.js → whatsapp-actions-BYNf8ceY.js} +16 -16
- package/dist/plugin-sdk/{whatsapp-heartbeat-CiABSZ6G.js → whatsapp-heartbeat-DZwa8MF0.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +3 -3
- package/dist/plugin-sdk/whatsapp.js +13 -13
- package/dist/plugin-sdk/{wsl-B_ojyEtC.js → wsl-WGtdw_6h.js} +3 -3
- package/dist/plugins/bundled-dir.js +3 -3
- package/dist/plugins/discovery.js +11 -11
- package/dist/plugins/lifecycle.js +1 -1
- package/dist/plugins/loader.js +13 -13
- package/dist/plugins/manifest-registry.js +28 -2
- package/dist/plugins/manifest.js +6 -4
- package/dist/plugins/marketplace.js +1 -1
- package/dist/plugins/path-safety.js +3 -3
- package/dist/plugins/status-cache.js +9 -9
- package/dist/plugins/update.js +4 -4
- package/dist/plugins/web-search-install-catalog.js +3 -3
- package/dist/providers/openai-codex-model-discovery.js +11 -1
- package/dist/providers/runtime-model-catalog.js +2 -2
- package/dist/secrets/apply.js +16 -16
- package/dist/secrets/audit.js +11 -11
- 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/local-socket-signer-broker.js +16 -16
- package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
- package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
- package/dist/wallet/wallet-approval-auth.js +5 -5
- package/dist/wallet/wallet-audit-log.js +5 -5
- package/dist/wallet/wallet-custody.js +21 -21
- package/dist/wallet/wallet-inbound-events.js +5 -5
- package/dist/wallet/wallet-observability.js +5 -5
- package/dist/wallet/wallet-policy.js +9 -9
- package/dist/wallet/wallet-provider-registry.js +7 -7
- package/dist/wallet/wallet-runtime-config.js +3 -3
- package/dist/wallet/wallet-secrets-store.js +22 -22
- package/dist/wallet/wallet-send-approvals.js +5 -5
- package/dist/wallet/wallet-settlement-links.js +5 -5
- package/dist/web/accounts.js +3 -3
- package/dist/web/auth-store.js +18 -18
- package/dist/web/session.js +4 -4
- package/dist/wizard/host-security-capability.js +2 -2
- package/dist/wizard/onboarding.finalize.js +1 -1
- package/dist/wizard/onboarding.host-security.js +7 -7
- package/dist/wizard/onboarding.js +7 -7
- package/dist/wizard/onboarding.wallet.js +44 -44
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +12 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +12 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +12 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/signal/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +12 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +12 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +12 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +12 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/dist/plugin-sdk/resolve-channels-CwB2_019.js +0 -4
- /package/dist/plugin-sdk/{resolve-users-Cxb5wpAQ.js → resolve-users-DN9VQBwv.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-CpgQGqe6.js","./icons-D3-vEvih.js","./open-external-url-DwSiwMPl.js","./marketplace-order-evidence-DkR0ZRHa.js","./mining-commit-R-6nu87p.js","./chat-model-ref-Djkv93yn.js","./task-ledger-source-route-C-yTp0QU.js","./wallet-policy-C3ZS66Rl.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={"entry-loaded":10,"app-import-start":20,"app-imported":30,"custom-element-defined":40,connected:50,"first-updated":60,rendered:70,"boot-failed":100};function t(t,n){if(typeof window>`u`)return;let r=window.__FASED_CONTROL_UI_BOOT=window.__FASED_CONTROL_UI_BOOT??{},i=e[r.stage]??0;e[t]<i&&r.stage!==`boot-failed`||(r.stage=t,r.detail=n??``,r.updatedAt=Date.now(),typeof r.mark==`function`&&r.mark(t,n),typeof window.dispatchEvent==`function`&&typeof CustomEvent==`function`&&window.dispatchEvent(new CustomEvent(`fased-control-ui-boot`,{detail:{stage:t,detail:n??``}})))}var n=`modulepreload`,r=function(e,t){return new URL(e,t).href},i={},a=function(e,t,a){let o=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),s=document.querySelector(`meta[property=csp-nonce]`),c=s?.nonce||s?.getAttribute(`nonce`);function l(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function u(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,new URL(`../../../src/node/plugins/importAnalysisBuild.ts`,import.meta.url)).href}o=l(t.map(t=>{if(t=r(t,a),t=u(t),t in i)return;i[t]=!0;let o=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let r=e[n];if(r.href===t&&(!o||r.rel===`stylesheet`))return}let s=document.createElement(`link`);if(s.rel=o?`stylesheet`:n,o||(s.as=`script`),s.crossOrigin=``,s.href=t,c&&s.setAttribute(`nonce`,c),document.head.appendChild(s),o)return new Promise((e,n)=>{s.addEventListener(`load`,e),s.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function s(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return o.then(t=>{for(let e of t||[])e.status===`rejected`&&s(e.reason);return e().catch(s)})};function o(e){let n=e instanceof Error?e.stack??e.message:String(e);t(`boot-failed`,n||`Unknown dashboard boot error.`);let r=document.querySelector(`fased-app`);if(!r)return;r.innerHTML=``;let i=document.createElement(`style`);i.textContent=`
|
|
3
3
|
body {
|
|
4
4
|
margin: 0;
|
|
@@ -57,5 +57,5 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./app-D7TXyNRi.js","./
|
|
|
57
57
|
font-weight: 650;
|
|
58
58
|
cursor: pointer;
|
|
59
59
|
}
|
|
60
|
-
`;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-
|
|
61
|
-
//# sourceMappingURL=index-
|
|
60
|
+
`;let a=document.createElement(`div`);a.className=`boot-page`;let o=document.createElement(`section`);o.className=`boot-card`;let s=document.createElement(`h1`);s.className=`boot-title`,s.textContent=`Dashboard bundle could not load`;let c=document.createElement(`p`);c.className=`boot-desc`,c.textContent=`The gateway page loaded, but the browser could not start the dashboard bundle. Reload first. If it keeps happening after an update, clear this site's browser data and sign in again.`;let l=document.createElement(`div`);l.className=`boot-error`,l.textContent=n||`Unknown dashboard boot error.`;let u=document.createElement(`button`);u.className=`boot-button`,u.textContent=`Reload`,u.addEventListener(`click`,()=>window.location.reload()),o.append(s,c,l,u),a.append(o),r.append(i,a)}t(`entry-loaded`),t(`app-import-start`),a(()=>import(`./app-CpgQGqe6.js`).then(()=>t(`app-imported`)),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url).catch(o);export{t as n,a as t};
|
|
61
|
+
//# sourceMappingURL=index-DiBBflpv.js.map
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
<link rel="icon" type="image/png" sizes="32x32" href="./favicon-32.png" />
|
|
15
15
|
<link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon.png" />
|
|
16
16
|
<script data-fased-boot-watchdog src="./boot-watchdog.js" defer></script>
|
|
17
|
-
<script type="module" crossorigin src="./assets/index-
|
|
17
|
+
<script type="module" crossorigin src="./assets/index-DiBBflpv.js"></script>
|
|
18
18
|
<link rel="stylesheet" crossorigin href="./assets/index-RwVraC3c.css">
|
|
19
19
|
</head>
|
|
20
20
|
<body>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":"0.1.
|
|
1
|
+
{"version":"0.1.58"}
|
|
@@ -5,7 +5,7 @@ import { inferLegacyName, normalizeOptionalText } from "./normalize.js";
|
|
|
5
5
|
import { normalizeCronStaggerMs, resolveDefaultCronStaggerMs } from "../stagger.js";
|
|
6
6
|
import { loadCronStore, saveCronStore } from "../store.js";
|
|
7
7
|
import { recomputeNextRuns } from "./jobs.js";
|
|
8
|
-
import
|
|
8
|
+
import fs from "node:fs";
|
|
9
9
|
|
|
10
10
|
//#region src/cron/service/store.ts
|
|
11
11
|
function buildDeliveryPatchFromLegacyPayload(payload) {
|
|
@@ -179,7 +179,7 @@ function stripLegacyTopLevelFields(raw) {
|
|
|
179
179
|
}
|
|
180
180
|
async function getFileMtimeMs(path) {
|
|
181
181
|
try {
|
|
182
|
-
const stats = await
|
|
182
|
+
const stats = await fs.promises.stat(path);
|
|
183
183
|
return stats.mtimeMs;
|
|
184
184
|
} catch {
|
|
185
185
|
return null;
|
package/dist/cron/store.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { expandHomePrefix } from "../infra/home-dir.js";
|
|
2
2
|
import { CONFIG_DIR } from "../utils.js";
|
|
3
|
-
import
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import JSON5 from "json5";
|
|
6
6
|
|
|
@@ -19,7 +19,7 @@ function resolveCronStorePath(storePath) {
|
|
|
19
19
|
}
|
|
20
20
|
async function loadCronStore(storePath) {
|
|
21
21
|
try {
|
|
22
|
-
const raw = await
|
|
22
|
+
const raw = await fs.promises.readFile(storePath, "utf-8");
|
|
23
23
|
let parsed;
|
|
24
24
|
try {
|
|
25
25
|
parsed = JSON5.parse(raw);
|
|
@@ -45,14 +45,14 @@ async function loadCronStore(storePath) {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
async function saveCronStore(storePath, store) {
|
|
48
|
-
await
|
|
48
|
+
await fs.promises.mkdir(path.dirname(storePath), { recursive: true });
|
|
49
49
|
const { randomBytes } = await import("node:crypto");
|
|
50
50
|
const tmp = `${storePath}.${process.pid}.${randomBytes(8).toString("hex")}.tmp`;
|
|
51
51
|
const json = JSON.stringify(store, null, 2);
|
|
52
|
-
await
|
|
53
|
-
await
|
|
52
|
+
await fs.promises.writeFile(tmp, json, "utf-8");
|
|
53
|
+
await fs.promises.rename(tmp, storePath);
|
|
54
54
|
try {
|
|
55
|
-
await
|
|
55
|
+
await fs.promises.copyFile(storePath, `${storePath}.bak`);
|
|
56
56
|
} catch {}
|
|
57
57
|
}
|
|
58
58
|
|
|
@@ -4,7 +4,7 @@ import { parseSystemdShow } from "./systemd.js";
|
|
|
4
4
|
import { existsSync } from "node:fs";
|
|
5
5
|
import os from "node:os";
|
|
6
6
|
import path from "node:path";
|
|
7
|
-
import fs from "node:fs/promises";
|
|
7
|
+
import fs$1 from "node:fs/promises";
|
|
8
8
|
import { spawn } from "node:child_process";
|
|
9
9
|
|
|
10
10
|
//#region src/daemon/systemd-system.ts
|
|
@@ -26,7 +26,7 @@ function buildHostedSystemctlControlArgs(action) {
|
|
|
26
26
|
}
|
|
27
27
|
async function readHostedSystemdCommand(unitPath) {
|
|
28
28
|
try {
|
|
29
|
-
const content = await fs.readFile(unitPath, "utf8");
|
|
29
|
+
const content = await fs$1.readFile(unitPath, "utf8");
|
|
30
30
|
let workingDirectory = "";
|
|
31
31
|
let execStart = "";
|
|
32
32
|
const environment = {};
|
|
@@ -150,7 +150,7 @@ function buildHostedSystemdUnit(params) {
|
|
|
150
150
|
return lines.join("\n");
|
|
151
151
|
}
|
|
152
152
|
async function runHelper(unit, runAsUser) {
|
|
153
|
-
await fs.access(INSTALL_HELPER);
|
|
153
|
+
await fs$1.access(INSTALL_HELPER);
|
|
154
154
|
await new Promise((resolve, reject) => {
|
|
155
155
|
const child = spawn("sudo", [
|
|
156
156
|
"-n",
|
|
@@ -205,8 +205,8 @@ async function installHostedSystemdService(params) {
|
|
|
205
205
|
`${SERVICE_NAME}.service`
|
|
206
206
|
]).catch(() => undefined);
|
|
207
207
|
const userUnit = path.join(os.homedir(), ".config", "systemd", "user", `${SERVICE_NAME}.service`);
|
|
208
|
-
await fs.rm(userUnit, { force: true }).catch(() => undefined);
|
|
209
|
-
await fs.rm(`${userUnit}.d`, {
|
|
208
|
+
await fs$1.rm(userUnit, { force: true }).catch(() => undefined);
|
|
209
|
+
await fs$1.rm(`${userUnit}.d`, {
|
|
210
210
|
recursive: true,
|
|
211
211
|
force: true
|
|
212
212
|
}).catch(() => undefined);
|
|
@@ -3,7 +3,7 @@ import { normalizeAccountId } from "../../routing/account-id.js";
|
|
|
3
3
|
import { resolveAgentIdFromSessionKey } from "../../routing/session-key.js";
|
|
4
4
|
import { loadJsonFile, saveJsonFile } from "../../infra/json-file.js";
|
|
5
5
|
import { DEFAULT_THREAD_BINDING_IDLE_TIMEOUT_MS, DEFAULT_THREAD_BINDING_MAX_AGE_MS, RECENT_UNBOUND_WEBHOOK_ECHO_WINDOW_MS, THREAD_BINDINGS_VERSION } from "./thread-bindings.types.js";
|
|
6
|
-
import
|
|
6
|
+
import fs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
|
|
9
9
|
//#region src/discord/monitor/thread-bindings.state.ts
|
|
@@ -320,7 +320,7 @@ function shouldPersistBindingMutations() {
|
|
|
320
320
|
if (shouldPersistAnyBindingState()) {
|
|
321
321
|
return true;
|
|
322
322
|
}
|
|
323
|
-
return
|
|
323
|
+
return fs.existsSync(resolveThreadBindingsPath());
|
|
324
324
|
}
|
|
325
325
|
function saveBindingsToDisk(params = {}) {
|
|
326
326
|
if (!params.force && !shouldPersistAnyBindingState()) {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { SAT_RUNTIME_DEFAULTS } from "../../../config/sat-runtime-ids.js";
|
|
2
2
|
import "../../../plugin-sdk/sat-runtime.js";
|
|
3
|
-
import
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
6
6
|
//#region extensions/sat-mining/src/sat-bond-layout.ts
|
|
@@ -162,7 +162,7 @@ function resolveLayoutPath(env = process.env) {
|
|
|
162
162
|
path.resolve(import.meta.dirname, "..", "..", "..", "..", "..", "token", "sat", "bond-api", "bond-position-layout.json")
|
|
163
163
|
];
|
|
164
164
|
for (const candidate of candidates) {
|
|
165
|
-
if (candidate &&
|
|
165
|
+
if (candidate && fs.existsSync(candidate)) {
|
|
166
166
|
return candidate;
|
|
167
167
|
}
|
|
168
168
|
}
|
|
@@ -178,7 +178,7 @@ function resolvePolicyLayoutPath(env = process.env) {
|
|
|
178
178
|
path.resolve(import.meta.dirname, "..", "..", "..", "..", "..", "token", "sat", "bond-api", "bond-tier-policy-layout.json")
|
|
179
179
|
];
|
|
180
180
|
for (const candidate of candidates) {
|
|
181
|
-
if (candidate &&
|
|
181
|
+
if (candidate && fs.existsSync(candidate)) {
|
|
182
182
|
return candidate;
|
|
183
183
|
}
|
|
184
184
|
}
|
|
@@ -194,7 +194,7 @@ function resolveStakingDistributorLayoutPath(env = process.env) {
|
|
|
194
194
|
path.resolve(import.meta.dirname, "..", "..", "..", "..", "..", "token", "sat", "bond-api", "bond-staking-distributor-layout.json")
|
|
195
195
|
];
|
|
196
196
|
for (const candidate of candidates) {
|
|
197
|
-
if (candidate &&
|
|
197
|
+
if (candidate && fs.existsSync(candidate)) {
|
|
198
198
|
return candidate;
|
|
199
199
|
}
|
|
200
200
|
}
|
|
@@ -210,7 +210,7 @@ function resolveStakingPositionLayoutPath(env = process.env) {
|
|
|
210
210
|
path.resolve(import.meta.dirname, "..", "..", "..", "..", "..", "token", "sat", "bond-api", "bond-staking-position-layout.json")
|
|
211
211
|
];
|
|
212
212
|
for (const candidate of candidates) {
|
|
213
|
-
if (candidate &&
|
|
213
|
+
if (candidate && fs.existsSync(candidate)) {
|
|
214
214
|
return candidate;
|
|
215
215
|
}
|
|
216
216
|
}
|
|
@@ -224,7 +224,7 @@ function loadSatBondLayout(env = process.env) {
|
|
|
224
224
|
}
|
|
225
225
|
const layoutPath = resolveLayoutPath(env);
|
|
226
226
|
if (layoutPath) {
|
|
227
|
-
const loaded = JSON.parse(
|
|
227
|
+
const loaded = JSON.parse(fs.readFileSync(layoutPath, "utf-8"));
|
|
228
228
|
cachedLayout = {
|
|
229
229
|
mode,
|
|
230
230
|
value: loaded
|
|
@@ -244,7 +244,7 @@ function loadSatBondPolicyLayout(env = process.env) {
|
|
|
244
244
|
}
|
|
245
245
|
const layoutPath = resolvePolicyLayoutPath(env);
|
|
246
246
|
if (layoutPath) {
|
|
247
|
-
cachedPolicyLayout = JSON.parse(
|
|
247
|
+
cachedPolicyLayout = JSON.parse(fs.readFileSync(layoutPath, "utf-8"));
|
|
248
248
|
return cachedPolicyLayout;
|
|
249
249
|
}
|
|
250
250
|
cachedPolicyLayout = DEDICATED_FALLBACK_POLICY_LAYOUT;
|
|
@@ -257,7 +257,7 @@ function loadSatBondStakingDistributorLayout(env = process.env) {
|
|
|
257
257
|
}
|
|
258
258
|
const layoutPath = resolveStakingDistributorLayoutPath(env);
|
|
259
259
|
if (layoutPath) {
|
|
260
|
-
cachedStakingDistributorLayout = JSON.parse(
|
|
260
|
+
cachedStakingDistributorLayout = JSON.parse(fs.readFileSync(layoutPath, "utf-8"));
|
|
261
261
|
return cachedStakingDistributorLayout;
|
|
262
262
|
}
|
|
263
263
|
cachedStakingDistributorLayout ??= DEDICATED_FALLBACK_STAKING_DISTRIBUTOR_LAYOUT;
|
|
@@ -270,7 +270,7 @@ function loadSatBondStakingPositionLayout(env = process.env) {
|
|
|
270
270
|
}
|
|
271
271
|
const layoutPath = resolveStakingPositionLayoutPath(env);
|
|
272
272
|
if (layoutPath) {
|
|
273
|
-
cachedStakingPositionLayout = JSON.parse(
|
|
273
|
+
cachedStakingPositionLayout = JSON.parse(fs.readFileSync(layoutPath, "utf-8"));
|
|
274
274
|
return cachedStakingPositionLayout;
|
|
275
275
|
}
|
|
276
276
|
cachedStakingPositionLayout ??= DEDICATED_FALLBACK_STAKING_POSITION_LAYOUT;
|
|
@@ -2,7 +2,7 @@ import { openBoundaryFileSync } from "../infra/boundary-file-read.js";
|
|
|
2
2
|
import { isWithinDir } from "../infra/path-safety.js";
|
|
3
3
|
import { normalizeControlUiBasePath } from "./control-ui-shared.js";
|
|
4
4
|
import { resolveControlUiRootSync } from "../infra/control-ui-assets.js";
|
|
5
|
-
import
|
|
5
|
+
import fs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
8
8
|
//#region src/gateway/control-ui-boot-check.ts
|
|
@@ -189,7 +189,7 @@ function readControlUiBootAsset(params) {
|
|
|
189
189
|
};
|
|
190
190
|
}
|
|
191
191
|
try {
|
|
192
|
-
const body =
|
|
192
|
+
const body = fs.readFileSync(safeFile.fd);
|
|
193
193
|
return {
|
|
194
194
|
check: {
|
|
195
195
|
url: params.url,
|
|
@@ -200,7 +200,7 @@ function readControlUiBootAsset(params) {
|
|
|
200
200
|
text: body.toString("utf8")
|
|
201
201
|
};
|
|
202
202
|
} finally {
|
|
203
|
-
|
|
203
|
+
fs.closeSync(safeFile.fd);
|
|
204
204
|
}
|
|
205
205
|
}
|
|
206
206
|
function resolveBootCheckRoot(rootState) {
|
|
@@ -231,7 +231,7 @@ function resolveBootCheckRoot(rootState) {
|
|
|
231
231
|
return {
|
|
232
232
|
ok: true,
|
|
233
233
|
root,
|
|
234
|
-
rootReal:
|
|
234
|
+
rootReal: fs.realpathSync(root)
|
|
235
235
|
};
|
|
236
236
|
} catch (error) {
|
|
237
237
|
if (isExpectedSafePathError(error)) {
|
|
@@ -268,9 +268,9 @@ function resolveControlUiBootCheck(params) {
|
|
|
268
268
|
}
|
|
269
269
|
let html = "";
|
|
270
270
|
try {
|
|
271
|
-
html =
|
|
271
|
+
html = fs.readFileSync(safeIndex.fd, "utf8");
|
|
272
272
|
} finally {
|
|
273
|
-
|
|
273
|
+
fs.closeSync(safeIndex.fd);
|
|
274
274
|
}
|
|
275
275
|
const entryJsUrl = extractHtmlScriptAssetUrls(html, indexUrl)[0] ?? null;
|
|
276
276
|
const entry = entryJsUrl == null ? {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveStateDir } from "../config/paths.js";
|
|
2
2
|
import { safeEqualSecret } from "../security/secret-equal.js";
|
|
3
3
|
import { isTrustedProxyAddress } from "./net.js";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { createHash, createHmac, randomBytes } from "node:crypto";
|
|
7
7
|
|
|
@@ -512,10 +512,10 @@ var ControlUiLoginService = class {
|
|
|
512
512
|
}
|
|
513
513
|
readState() {
|
|
514
514
|
try {
|
|
515
|
-
if (!
|
|
515
|
+
if (!fs.existsSync(this.statePath)) {
|
|
516
516
|
return buildEmptyState();
|
|
517
517
|
}
|
|
518
|
-
const raw =
|
|
518
|
+
const raw = fs.readFileSync(this.statePath, "utf8");
|
|
519
519
|
return normalizeState(safeJsonParse(raw));
|
|
520
520
|
} catch {
|
|
521
521
|
return buildEmptyState();
|
|
@@ -525,13 +525,13 @@ var ControlUiLoginService = class {
|
|
|
525
525
|
if (!this.state) {
|
|
526
526
|
return;
|
|
527
527
|
}
|
|
528
|
-
|
|
528
|
+
fs.mkdirSync(path.dirname(this.statePath), { recursive: true });
|
|
529
529
|
const tmpPath = `${this.statePath}.${process.pid}.${Date.now()}.tmp`;
|
|
530
530
|
const body = `${JSON.stringify(this.state, null, 2)}\n`;
|
|
531
|
-
|
|
532
|
-
|
|
531
|
+
fs.writeFileSync(tmpPath, body, { mode: 384 });
|
|
532
|
+
fs.renameSync(tmpPath, this.statePath);
|
|
533
533
|
try {
|
|
534
|
-
|
|
534
|
+
fs.chmodSync(this.statePath, 384);
|
|
535
535
|
} catch {}
|
|
536
536
|
}
|
|
537
537
|
};
|
|
@@ -8,7 +8,7 @@ import { resolveControlUiRootSync } from "../infra/control-ui-assets.js";
|
|
|
8
8
|
import { DEFAULT_ASSISTANT_IDENTITY, resolveAssistantIdentity } from "./assistant-identity.js";
|
|
9
9
|
import { CONTROL_UI_BOOTSTRAP_CONFIG_PATH } from "./control-ui-contract.js";
|
|
10
10
|
import { buildControlUiCspHeader } from "./control-ui-csp.js";
|
|
11
|
-
import
|
|
11
|
+
import fs from "node:fs";
|
|
12
12
|
import path from "node:path";
|
|
13
13
|
|
|
14
14
|
//#region src/gateway/control-ui.ts
|
|
@@ -152,10 +152,10 @@ function handleControlUiAvatarRequest(req, res, opts) {
|
|
|
152
152
|
res.end();
|
|
153
153
|
return true;
|
|
154
154
|
}
|
|
155
|
-
serveResolvedFile(res, safeAvatar.path,
|
|
155
|
+
serveResolvedFile(res, safeAvatar.path, fs.readFileSync(safeAvatar.fd));
|
|
156
156
|
return true;
|
|
157
157
|
} finally {
|
|
158
|
-
|
|
158
|
+
fs.closeSync(safeAvatar.fd);
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
function respondNotFound(res) {
|
|
@@ -318,7 +318,7 @@ function handleControlUiHttpRequest(req, res, opts) {
|
|
|
318
318
|
}
|
|
319
319
|
const rootReal = (() => {
|
|
320
320
|
try {
|
|
321
|
-
return
|
|
321
|
+
return fs.realpathSync(root);
|
|
322
322
|
} catch (error) {
|
|
323
323
|
if (isExpectedSafePathError(error)) {
|
|
324
324
|
return null;
|
|
@@ -364,13 +364,13 @@ function handleControlUiHttpRequest(req, res, opts) {
|
|
|
364
364
|
return true;
|
|
365
365
|
}
|
|
366
366
|
if (path.basename(safeFile.path) === "index.html") {
|
|
367
|
-
serveResolvedIndexHtml(res,
|
|
367
|
+
serveResolvedIndexHtml(res, fs.readFileSync(safeFile.fd, "utf8"));
|
|
368
368
|
return true;
|
|
369
369
|
}
|
|
370
|
-
serveResolvedFile(res, safeFile.path,
|
|
370
|
+
serveResolvedFile(res, safeFile.path, fs.readFileSync(safeFile.fd));
|
|
371
371
|
return true;
|
|
372
372
|
} finally {
|
|
373
|
-
|
|
373
|
+
fs.closeSync(safeFile.fd);
|
|
374
374
|
}
|
|
375
375
|
}
|
|
376
376
|
if (STATIC_ASSET_EXTENSIONS.has(path.extname(fileRel).toLowerCase())) {
|
|
@@ -387,10 +387,10 @@ function handleControlUiHttpRequest(req, res, opts) {
|
|
|
387
387
|
res.end();
|
|
388
388
|
return true;
|
|
389
389
|
}
|
|
390
|
-
serveResolvedIndexHtml(res,
|
|
390
|
+
serveResolvedIndexHtml(res, fs.readFileSync(safeIndex.fd, "utf8"));
|
|
391
391
|
return true;
|
|
392
392
|
} finally {
|
|
393
|
-
|
|
393
|
+
fs.closeSync(safeIndex.fd);
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
respondNotFound(res);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { CONFIG_PATH } from "../config/paths.js";
|
|
2
2
|
import "../config/config.js";
|
|
3
3
|
import { importFileModule, resolveFunctionModuleExport } from "../hooks/module-loader.js";
|
|
4
|
-
import
|
|
4
|
+
import fs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
|
|
7
7
|
//#region src/gateway/hooks-mapping.ts
|
|
@@ -301,8 +301,8 @@ function escapesBase(baseDir, candidate) {
|
|
|
301
301
|
}
|
|
302
302
|
function safeRealpathSync(candidate) {
|
|
303
303
|
try {
|
|
304
|
-
const nativeRealpath =
|
|
305
|
-
return nativeRealpath ? nativeRealpath(candidate) :
|
|
304
|
+
const nativeRealpath = fs.realpathSync.native;
|
|
305
|
+
return nativeRealpath ? nativeRealpath(candidate) : fs.realpathSync(candidate);
|
|
306
306
|
} catch {
|
|
307
307
|
return null;
|
|
308
308
|
}
|
|
@@ -310,7 +310,7 @@ function safeRealpathSync(candidate) {
|
|
|
310
310
|
function resolveExistingAncestor(candidate) {
|
|
311
311
|
let current = path.resolve(candidate);
|
|
312
312
|
while (true) {
|
|
313
|
-
if (
|
|
313
|
+
if (fs.existsSync(current)) {
|
|
314
314
|
return current;
|
|
315
315
|
}
|
|
316
316
|
const parent = path.dirname(current);
|
|
@@ -21,6 +21,18 @@ const ModelChoiceSchema = Type.Object({
|
|
|
21
21
|
Type.Literal("provider-index"),
|
|
22
22
|
Type.Literal("manifest")
|
|
23
23
|
])),
|
|
24
|
+
available: Type.Optional(Type.Boolean()),
|
|
25
|
+
runnable: Type.Optional(Type.Boolean()),
|
|
26
|
+
recommended: Type.Optional(Type.Boolean()),
|
|
27
|
+
assignedRoles: Type.Optional(Type.Array(Type.Union([
|
|
28
|
+
Type.Literal("primary"),
|
|
29
|
+
Type.Literal("fallback"),
|
|
30
|
+
Type.Literal("cheapCheck"),
|
|
31
|
+
Type.Literal("strong"),
|
|
32
|
+
Type.Literal("escalation"),
|
|
33
|
+
Type.Literal("coding"),
|
|
34
|
+
Type.Literal("summarizer")
|
|
35
|
+
]))),
|
|
24
36
|
metadata: Type.Optional(Type.Object({
|
|
25
37
|
ref: NonEmptyString,
|
|
26
38
|
provider: NonEmptyString,
|
|
@@ -252,7 +264,37 @@ const ModelsListParamsSchema = Type.Object({
|
|
|
252
264
|
sessionKey: Type.Optional(NonEmptyString),
|
|
253
265
|
includeMetadata: Type.Optional(Type.Boolean())
|
|
254
266
|
}, { additionalProperties: false });
|
|
255
|
-
const ModelsListResultSchema = Type.Object({
|
|
267
|
+
const ModelsListResultSchema = Type.Object({
|
|
268
|
+
models: Type.Array(ModelChoiceSchema),
|
|
269
|
+
generatedAt: Type.Optional(NonEmptyString),
|
|
270
|
+
agentId: Type.Optional(NonEmptyString),
|
|
271
|
+
providers: Type.Optional(Type.Array(Type.Object({
|
|
272
|
+
id: NonEmptyString,
|
|
273
|
+
label: NonEmptyString,
|
|
274
|
+
routes: Type.Array(NonEmptyString),
|
|
275
|
+
credentialRoutes: Type.Array(Type.Object({
|
|
276
|
+
id: NonEmptyString,
|
|
277
|
+
label: NonEmptyString,
|
|
278
|
+
authMode: NonEmptyString
|
|
279
|
+
}, { additionalProperties: false })),
|
|
280
|
+
available: Type.Integer({ minimum: 0 }),
|
|
281
|
+
recommended: Type.Integer({ minimum: 0 }),
|
|
282
|
+
assigned: Type.Integer({ minimum: 0 })
|
|
283
|
+
}, { additionalProperties: false }))),
|
|
284
|
+
assignments: Type.Optional(Type.Array(Type.Object({
|
|
285
|
+
role: Type.Union([
|
|
286
|
+
Type.Literal("primary"),
|
|
287
|
+
Type.Literal("fallback"),
|
|
288
|
+
Type.Literal("cheapCheck"),
|
|
289
|
+
Type.Literal("strong"),
|
|
290
|
+
Type.Literal("escalation"),
|
|
291
|
+
Type.Literal("coding"),
|
|
292
|
+
Type.Literal("summarizer")
|
|
293
|
+
]),
|
|
294
|
+
ref: NonEmptyString,
|
|
295
|
+
available: Type.Boolean()
|
|
296
|
+
}, { additionalProperties: false })))
|
|
297
|
+
}, { additionalProperties: false });
|
|
256
298
|
const ModelsCatalogStatusParamsSchema = Type.Object({}, { additionalProperties: false });
|
|
257
299
|
const ModelsCatalogStatusProviderSchema = Type.Object({
|
|
258
300
|
provider: NonEmptyString,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { runExec } from "../process/exec.js";
|
|
2
2
|
import { getTailnetHostname } from "../infra/tailscale.js";
|
|
3
|
-
import
|
|
3
|
+
import fs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
6
6
|
//#region src/gateway/server-discovery.ts
|
|
@@ -20,7 +20,7 @@ function resolveBonjourCliPath(opts = {}) {
|
|
|
20
20
|
if (envPath) {
|
|
21
21
|
return envPath;
|
|
22
22
|
}
|
|
23
|
-
const statSync = opts.statSync ??
|
|
23
|
+
const statSync = opts.statSync ?? fs.statSync;
|
|
24
24
|
const isFile = (candidate) => {
|
|
25
25
|
try {
|
|
26
26
|
return statSync(candidate).isFile();
|
|
@@ -51,7 +51,7 @@ import { buildGatewayProbePayload } from "./probe-payload.js";
|
|
|
51
51
|
import { canonicalizePathVariant } from "./security-path.js";
|
|
52
52
|
import { handleToolsInvokeHttpRequest } from "./tools-invoke-http.js";
|
|
53
53
|
import { authorizeGatewayConnect, isLocalDirectRequest } from "./auth.js";
|
|
54
|
-
import
|
|
54
|
+
import fs from "node:fs";
|
|
55
55
|
import path from "node:path";
|
|
56
56
|
import { createServer } from "node:http";
|
|
57
57
|
import { createServer as createServer$1 } from "node:https";
|
|
@@ -2102,7 +2102,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
|
|
|
2102
2102
|
const sourcePath = path.join(resolveStateDir(env), "federation", "access-token.json");
|
|
2103
2103
|
const managed = (env.FASED_GATEWAY_MODE ?? "").trim().toLowerCase() === "managed";
|
|
2104
2104
|
const configured = resolveConfiguredFederationStatus(env);
|
|
2105
|
-
if (!
|
|
2105
|
+
if (!fs.existsSync(sourcePath)) {
|
|
2106
2106
|
return {
|
|
2107
2107
|
managed,
|
|
2108
2108
|
sourcePath,
|
|
@@ -2114,7 +2114,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
|
|
|
2114
2114
|
}
|
|
2115
2115
|
let rawText = "";
|
|
2116
2116
|
try {
|
|
2117
|
-
rawText =
|
|
2117
|
+
rawText = fs.readFileSync(sourcePath, "utf-8");
|
|
2118
2118
|
} catch {
|
|
2119
2119
|
return {
|
|
2120
2120
|
managed,
|
|
@@ -2163,7 +2163,7 @@ async function readLocalFederationStatus(env = process.env, fetchImpl = fetch) {
|
|
|
2163
2163
|
const lifecycle = Number.isFinite(expiresAtMs) ? expiresAtMs > Date.now() ? "active" : "expired" : "invalid";
|
|
2164
2164
|
let fileUpdatedAt;
|
|
2165
2165
|
try {
|
|
2166
|
-
fileUpdatedAt =
|
|
2166
|
+
fileUpdatedAt = fs.statSync(sourcePath).mtime.toISOString();
|
|
2167
2167
|
} catch {
|
|
2168
2168
|
fileUpdatedAt = undefined;
|
|
2169
2169
|
}
|
|
@@ -30,7 +30,7 @@ import { parseMessageWithAttachments } from "../chat-attachments.js";
|
|
|
30
30
|
import { injectTimestamp, timestampOptsFromConfig } from "./agent-timestamp.js";
|
|
31
31
|
import { normalizeRpcAttachmentsToChatAttachments } from "./attachment-normalize.js";
|
|
32
32
|
import { appendInjectedAssistantMessageToTranscript } from "./chat-transcript-inject.js";
|
|
33
|
-
import
|
|
33
|
+
import fs from "node:fs";
|
|
34
34
|
import path from "node:path";
|
|
35
35
|
|
|
36
36
|
//#region src/gateway/server-methods/chat.ts
|
|
@@ -321,7 +321,7 @@ function resolveTranscriptPath(params) {
|
|
|
321
321
|
}
|
|
322
322
|
function transcriptHasIdempotencyKey(transcriptPath, idempotencyKey) {
|
|
323
323
|
try {
|
|
324
|
-
const lines =
|
|
324
|
+
const lines = fs.readFileSync(transcriptPath, "utf-8").split(/\r?\n/);
|
|
325
325
|
for (const line of lines) {
|
|
326
326
|
if (!line.trim()) {
|
|
327
327
|
continue;
|
|
@@ -349,7 +349,7 @@ function appendAssistantTranscriptMessage(params) {
|
|
|
349
349
|
error: "transcript path not resolved"
|
|
350
350
|
};
|
|
351
351
|
}
|
|
352
|
-
if (!
|
|
352
|
+
if (!fs.existsSync(transcriptPath)) {
|
|
353
353
|
if (!params.createIfMissing) {
|
|
354
354
|
return {
|
|
355
355
|
ok: false,
|
|
@@ -3,9 +3,9 @@ import { loadConfig, writeConfigFile } from "../../config/io.js";
|
|
|
3
3
|
import "../../config/config.js";
|
|
4
4
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
5
5
|
import "../protocol/index.js";
|
|
6
|
+
import { buildPluginStatusReport } from "../../plugins/status.js";
|
|
6
7
|
import { completeTaskRunByRunId, createRunningTaskRun, failTaskRunByRunId } from "../../tasks/task-executor.js";
|
|
7
8
|
import { applyHookMappings, resolveHookMappings } from "../hooks-mapping.js";
|
|
8
|
-
import { buildPluginStatusReport } from "../../plugins/status.js";
|
|
9
9
|
import { loadWorkspaceHookEntries } from "../../hooks/workspace.js";
|
|
10
10
|
import { buildWorkspaceHookStatus } from "../../hooks/hooks-status.js";
|
|
11
11
|
import { randomBytes, randomUUID } from "node:crypto";
|
|
@@ -12,7 +12,6 @@ import "../../config/config.js";
|
|
|
12
12
|
import { resolveProfileUnusableUntilForDisplay } from "../../agents/auth-profiles/usage.js";
|
|
13
13
|
import "../../agents/auth-profiles.js";
|
|
14
14
|
import { deriveModelMetadata } from "../../agents/model-metadata.js";
|
|
15
|
-
import { resolveAuthenticatedModelCatalog } from "../../agents/authenticated-model-catalog.js";
|
|
16
15
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
17
16
|
import { formatValidationErrors, validateModelsAuthClearParams, validateModelsAuthConfigureParams, validateModelsAuthInteractiveStartParams, validateModelsAuthStatusParams, validateModelsAuthStoreParams, validateModelsCatalogStatusParams, validateModelsListParams } from "../protocol/index.js";
|
|
18
17
|
import { loadProviderExtensionCatalogIndex } from "../../agents/provider-extension-catalog-index.js";
|
|
@@ -23,6 +22,7 @@ import { configureLmStudioProvider, configureOllamaProvider, configureVllmProvid
|
|
|
23
22
|
import { applyAuthChoice } from "../../commands/auth-choice.apply.js";
|
|
24
23
|
import "../../commands/auth-choice.js";
|
|
25
24
|
import { CustomApiError, applyCustomApiConfig, detectCustomApiCompatibility } from "../../commands/onboard-custom.js";
|
|
25
|
+
import { resolveCanonicalModelCatalogSnapshot } from "../../agents/model-catalog-snapshot.js";
|
|
26
26
|
import { resolveProviderAuthOverview } from "../../commands/models/list.auth-overview.js";
|
|
27
27
|
import { probeConfiguredModelProviderHealth } from "../../providers/health.js";
|
|
28
28
|
import { WizardSession } from "../../wizard/session.js";
|
|
@@ -854,16 +854,17 @@ const modelsHandlers = {
|
|
|
854
854
|
}) : defaultAgentId;
|
|
855
855
|
const agentDir = resolveAgentDir(cfg, authAgentId);
|
|
856
856
|
const store = ensureAuthProfileStore(agentDir);
|
|
857
|
-
const
|
|
857
|
+
const snapshot = await resolveCanonicalModelCatalogSnapshot({
|
|
858
858
|
cfg,
|
|
859
859
|
store,
|
|
860
860
|
catalog,
|
|
861
861
|
defaultProvider: DEFAULT_PROVIDER,
|
|
862
|
+
agentId: authAgentId,
|
|
862
863
|
agentDir
|
|
863
864
|
});
|
|
864
865
|
const providerFilter = typeof params.provider === "string" && params.provider.trim() ? normalizeProviderId(params.provider) : "";
|
|
865
|
-
const modelSource = params.all === true || params.available === true ?
|
|
866
|
-
const models = providerFilter ? modelSource.filter((model) => normalizeProviderId(model.provider) === providerFilter) : modelSource;
|
|
866
|
+
const modelSource = params.all === true || params.available === true ? snapshot.models : snapshot.models.filter((model) => model.runnable);
|
|
867
|
+
const models = providerFilter ? modelSource.filter((model) => normalizeProviderId(model.provider) === providerFilter || normalizeProviderId(model.metadata.publicProviderId) === providerFilter) : modelSource;
|
|
867
868
|
const payloadModels = params.includeMetadata === true ? models.map((model) => ({
|
|
868
869
|
...model,
|
|
869
870
|
metadata: model.metadata ?? deriveModelMetadata({
|
|
@@ -871,7 +872,13 @@ const modelsHandlers = {
|
|
|
871
872
|
cfg
|
|
872
873
|
})
|
|
873
874
|
})) : models;
|
|
874
|
-
respond(true, {
|
|
875
|
+
respond(true, {
|
|
876
|
+
models: payloadModels.toSorted((left, right) => left.provider.localeCompare(right.provider) || (left.metadata?.recommendationRank ?? Number.MAX_SAFE_INTEGER) - (right.metadata?.recommendationRank ?? Number.MAX_SAFE_INTEGER) || left.name.localeCompare(right.name)),
|
|
877
|
+
generatedAt: snapshot.generatedAt,
|
|
878
|
+
agentId: snapshot.agentId,
|
|
879
|
+
providers: providerFilter ? snapshot.providers.filter((provider) => [provider.id, ...provider.routes].map(normalizeProviderId).includes(providerFilter)) : snapshot.providers,
|
|
880
|
+
assignments: providerFilter ? snapshot.assignments.filter((assignment) => models.some((model) => `${model.provider}/${model.id}` === assignment.ref)) : snapshot.assignments
|
|
881
|
+
}, undefined);
|
|
875
882
|
} catch (err) {
|
|
876
883
|
respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, String(err)));
|
|
877
884
|
}
|
|
@@ -4,13 +4,13 @@ import { clearPluginManifestRegistryCache } from "../../plugins/manifest-registr
|
|
|
4
4
|
import { installPluginFromNpmSpec } from "../../plugins/install.js";
|
|
5
5
|
import { loadConfig, writeConfigFile } from "../../config/io.js";
|
|
6
6
|
import "../../config/config.js";
|
|
7
|
+
import { buildNpmResolutionInstallFields } from "../../plugins/installs.js";
|
|
7
8
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
8
9
|
import { validatePluginsMarketplaceAdminRpcGrantSetParams, validatePluginsMarketplaceInfoParams, validatePluginsMarketplaceInstallParams, validatePluginsMarketplaceListParams, validatePluginsMarketplaceRestartParams, validatePluginsMarketplaceRuntimeHelperSetParams, validatePluginsMarketplaceUninstallParams, validatePluginsMarketplaceUpdateParams, validatePluginsMarketplaceUpdatePreviewParams } from "../protocol/index.js";
|
|
9
|
-
import { resolveChannelPluginExpectedPluginIds } from "../../channels/plugins/catalog.js";
|
|
10
|
-
import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
|
|
11
|
-
import { buildNpmResolutionInstallFields } from "../../plugins/installs.js";
|
|
12
10
|
import { executePluginUninstallLifecycle, executePluginUpdateLifecycle, finalizeInstalledPluginConfig } from "../../plugins/lifecycle.js";
|
|
11
|
+
import { resolveChannelPluginExpectedPluginIds } from "../../channels/plugins/catalog.js";
|
|
13
12
|
import { buildPluginMarketplaceReport, resolvePluginMarketplaceEntry } from "../../plugins/marketplace.js";
|
|
13
|
+
import { scheduleGatewaySigusr1Restart } from "../../infra/restart.js";
|
|
14
14
|
import { assertValidParams } from "./validation.js";
|
|
15
15
|
import { buildPluginMarketplaceUpdateReview, formatPluginMarketplaceUpdateReviewWarnings } from "../../plugins/marketplace-update-review.js";
|
|
16
16
|
import { setPluginAdminRpcActionGrant, setPluginRuntimeSessionReadGrant } from "../../plugins/runtime-helper-grants.js";
|
|
@@ -2,8 +2,8 @@ import { loadConfig } from "../../config/io.js";
|
|
|
2
2
|
import "../../config/config.js";
|
|
3
3
|
import { ErrorCodes, errorShape } from "../protocol/schema/error-codes.js";
|
|
4
4
|
import "../protocol/index.js";
|
|
5
|
-
import { formatForLog } from "../ws-log.js";
|
|
6
5
|
import { buildCapabilityReadinessReport } from "../../capabilities/catalog.js";
|
|
6
|
+
import { formatForLog } from "../ws-log.js";
|
|
7
7
|
import { runGmailSetup } from "../../hooks/gmail-ops.js";
|
|
8
8
|
import { listConfiguredWebSearchProviders, runWebSearch } from "../../web-search/runtime.js";
|
|
9
9
|
|