@fased/fased 0.1.54 → 0.1.56
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/config/capability-catalog.json +12 -0
- package/dist/acp/client.js +2 -2
- package/dist/acp/secret-file.js +2 -2
- package/dist/agents/agent-scope.js +2 -2
- package/dist/agents/apply-patch.js +8 -8
- package/dist/agents/auth-profiles/paths.js +2 -2
- package/dist/agents/auth-profiles/store.js +2 -2
- package/dist/agents/authenticated-model-catalog.js +28 -0
- package/dist/agents/bash-tools.exec-host-node.js +1 -1
- package/dist/agents/bash-tools.exec.js +1 -1
- package/dist/agents/bash-tools.shared.js +2 -2
- package/dist/agents/cli-credentials.js +4 -4
- package/dist/agents/copilot-dynamic-headers.js +37 -0
- package/dist/agents/current-model-catalog.js +9 -13
- 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-normalized.js +1 -0
- package/dist/agents/model-catalog-source.js +2 -2
- package/dist/agents/model-catalog.js +1 -1
- package/dist/agents/model-metadata.js +58 -9
- package/dist/agents/openai-codex-app-server.js +499 -0
- package/dist/agents/pi-embedded-runner/compact.js +3 -3
- package/dist/agents/pi-embedded-runner/extra-params.js +168 -79
- package/dist/agents/pi-embedded-runner/model.js +62 -1
- package/dist/agents/pi-embedded-runner/moonshot-stream-wrappers.js +46 -0
- package/dist/agents/pi-embedded-runner/openai-stream-wrappers.js +221 -0
- package/dist/agents/pi-embedded-runner/run/attempt.js +6 -4
- package/dist/agents/pi-embedded-runner/run.js +5 -2
- package/dist/agents/pi-embedded-runner/utils.js +1 -1
- package/dist/agents/pi-embedded-runner.js +1 -1
- package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
- package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
- package/dist/agents/pi-model-discovery.js +6 -6
- package/dist/agents/pi-project-settings.js +3 -3
- package/dist/agents/pi-tools.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/discord-actions-messaging.js +1 -1
- package/dist/agents/tools/message-tool.js +1 -1
- package/dist/agents/tools/session-status-tool.js +3 -3
- package/dist/agents/tools/slack-actions.js +1 -1
- package/dist/agents/tools/tts-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/commands-models.js +1 -1
- package/dist/auto-reply/reply/directive-handling.impl.js +4 -1
- package/dist/auto-reply/reply/dispatch-acp.js +1 -1
- package/dist/auto-reply/reply/dispatch-from-config.js +1 -1
- package/dist/auto-reply/reply/get-reply-run.js +20 -2
- package/dist/auto-reply/reply/model-selection.js +1 -1
- package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
- package/dist/auto-reply/reply/post-compaction-context.js +3 -3
- package/dist/auto-reply/reply/session-reset-model.js +1 -1
- package/dist/auto-reply/reply/session.js +3 -3
- package/dist/auto-reply/skill-commands.js +3 -3
- package/dist/auto-reply/status.js +7 -7
- package/dist/auto-reply/thinking.js +1 -1
- package/dist/brand.js +1 -1
- package/dist/browser/cdp.helpers.js +2 -2
- package/dist/browser/chrome.executables.js +3 -3
- package/dist/browser/chrome.js +5 -5
- package/dist/browser/chrome.profile-decoration.js +6 -6
- package/dist/browser/extension-relay.js +7 -7
- 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/channels/plugins/catalog.js +3 -3
- package/dist/cli/browser-cli-extension.js +6 -6
- package/dist/cli/command-format.js +2 -2
- package/dist/cli/cron-cli/register.cron-add.js +1 -1
- 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 +5 -5
- package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
- package/dist/cli/memory-cli.js +7 -7
- package/dist/cli/nodes-media-utils.js +2 -2
- package/dist/cli/plugins-cli.js +2 -2
- package/dist/cli/program/register.agent.js +1 -1
- package/dist/cli/providers-cli.js +3 -2
- package/dist/cli/secrets-cli.js +3 -3
- package/dist/cli/windows-argv.js +2 -2
- package/dist/commands/agent.js +22 -3
- package/dist/commands/auth-choice.apply.api-providers.js +3 -8
- package/dist/commands/auth-choice.apply.openai.js +13 -7
- package/dist/commands/auth-choice.model-check.js +1 -2
- package/dist/commands/configure.gateway-auth.js +14 -16
- package/dist/commands/dashboard-link.js +3 -3
- package/dist/commands/doctor-config-flow.js +1 -1
- package/dist/commands/doctor-install.js +5 -5
- package/dist/commands/doctor-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/hosted-dashboard-probe.js +3 -3
- package/dist/commands/managed-up.js +2 -2
- package/dist/commands/model-picker.js +27 -8
- package/dist/commands/models/list.probe.js +1 -1
- package/dist/commands/models/list.registry.js +13 -17
- package/dist/commands/models/list.status-command.js +2 -2
- package/dist/commands/onboard-auth.config-core.js +1 -1
- package/dist/commands/onboard-auth.config-litellm.js +21 -21
- package/dist/commands/onboard-auth.credentials.js +3 -4
- package/dist/commands/onboard-auth.js +0 -1
- package/dist/commands/onboarding/plugin-install.js +2 -2
- package/dist/commands/openai-codex-model-default.js +28 -5
- 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/config/zod-schema.agent-defaults.js +6 -2
- package/dist/config/zod-schema.agent-runtime.js +6 -2
- package/dist/config/zod-schema.core.js +6 -2
- package/dist/control-ui/assets/{app-BKlu6OKz.js → app-D7TXyNRi.js} +1548 -1540
- package/dist/control-ui/assets/chat-model-ref-Djkv93yn.js +2 -0
- package/dist/control-ui/assets/{index-nrFcGMv-.js → index-BmSBom-w.js} +3 -3
- package/dist/control-ui/assets/{providers-BQFrRqym.js → providers-Cc89iMdx.js} +5 -5
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/version.json +1 -0
- package/dist/cron/isolated-agent/run.js +6 -2
- package/dist/cron/service/jobs.js +11 -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/gateway-plugin.js +2 -2
- package/dist/discord/monitor/thread-bindings.state.js +2 -2
- package/dist/discord/voice/manager.js +1 -1
- package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
- package/dist/gateway/client.js +4 -4
- 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 +11 -9
- package/dist/gateway/hooks-mapping.js +4 -4
- package/dist/gateway/protocol/schema/agents-models-skills.js +66 -4
- 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/models.js +8 -8
- package/dist/gateway/server-methods/sessions.js +8 -8
- package/dist/gateway/server-methods/tts.js +2 -2
- package/dist/gateway/server-methods/usage.js +2 -2
- package/dist/gateway/server-model-catalog.js +3 -0
- 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 +27 -24
- 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/update-runner.js +31 -3
- package/dist/infra/widearea-dns.js +3 -3
- package/dist/infra/wsl.js +2 -2
- package/dist/light-update-status.js +1 -1
- 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/inventory.js +19 -2
- 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-DW9OS5Ll.js → accounts-DzWlKv1U.js} +1 -1
- package/dist/plugin-sdk/{actions-DQUXohRr.js → actions-BplQVLL6.js} +4 -4
- package/dist/plugin-sdk/{active-listener-BZQWZPF7.js → active-listener-x4MLhYUw.js} +1 -1
- package/dist/plugin-sdk/{allow-list-BYeKk0Sy.js → allow-list-DyAxs4yw.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-t4mmHsI2.js → audio-preflight-G8h3Sn8_.js} +43 -47
- package/dist/plugin-sdk/{audit-BZk_6Buw.js → audit-CWknklvI.js} +1 -1
- package/dist/plugin-sdk/{channel-access-CN5HiWdb.js → channel-access-a9Dnfw7-.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-B7Kkvx9K.js → channel-access-configure-CD4QDN5E.js} +1 -1
- package/dist/plugin-sdk/{channel-adapters.discord-IOZP8Cv5.js → channel-adapters.discord-BS4S4Svh.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-B2ffJ-LR.js → chunk-B8EZkwiT.js} +1 -1
- package/dist/plugin-sdk/{chunk-items-jOdkyP53.js → chunk-items-CEPklxGe.js} +1 -1
- package/dist/plugin-sdk/command-status.d.ts +2 -2
- package/dist/plugin-sdk/command-status.js +43 -47
- package/dist/plugin-sdk/{commands-registry-BWb4NcfW.js → commands-registry-BfEa4tFA.js} +2 -2
- package/dist/plugin-sdk/{common-C4XrB73N.js → common-CbfckC19.js} +1 -1
- package/dist/plugin-sdk/{config-rySyVtKs.js → config-Bt5GhnA-.js} +105 -73
- package/dist/plugin-sdk/{config-schema-BaybPPrJ.js → config-schema-B9DKr6J5.js} +96239 -81587
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/device-pair.js +2 -3
- package/dist/plugin-sdk/{diagnostic-Dfn1iERm.js → diagnostic-DLL_zekv.js} +3 -3
- package/dist/plugin-sdk/{directory-live-DatqU-eS.js → directory-live-CSuYxdwk.js} +1 -1
- package/dist/plugin-sdk/{directory-live-ClwN5KKq.js → directory-live-Dw7ZgC9_.js} +1 -1
- package/dist/plugin-sdk/discord.d.ts +5 -5
- package/dist/plugin-sdk/discord.js +31 -32
- package/dist/plugin-sdk/{draft-stream-controls-D4Tb_iS_.js → draft-stream-controls-BqchW1vi.js} +1 -1
- package/dist/plugin-sdk/{fetch-guard-BuYrl6q2.js → fetch-guard-CeG6u6ld.js} +1 -1
- package/dist/plugin-sdk/{filesystem-manager-B9DDPgfU.js → filesystem-manager-BGGGrkiN.js} +2 -2
- package/dist/plugin-sdk/{fs-safe-BG-VzVkL.js → fs-safe-xBqok6yR.js} +1 -1
- package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BHRff6j8.d.ts} +1 -1
- package/dist/plugin-sdk/{guilds-BeT3iHHJ.js → guilds-CDhRIX57.js} +1 -1
- package/dist/plugin-sdk/{handle-action-CGF-Qnp0.js → handle-action-DbzZFYnG.js} +24 -25
- package/dist/plugin-sdk/{helpers-DgRMfCnT.js → helpers-CluGKuIV.js} +1 -1
- package/dist/plugin-sdk/{image-ops-CcBfoMLW.js → image-ops-CUaLtIFj.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +8 -8
- package/dist/plugin-sdk/index.js +47 -51
- package/dist/plugin-sdk/json-store.js +6 -6
- package/dist/plugin-sdk/{login-DpDQyM7r.js → login-DJuHYDiK.js} +3 -3
- package/dist/plugin-sdk/{login-qr-COaSAPY5.js → login-qr-CbHL5ayf.js} +3 -3
- package/dist/plugin-sdk/{manager-Cqz30lA3.js → manager-oHAvZCT3.js} +7 -7
- package/dist/plugin-sdk/{markdown-tables-BOG5sSQQ.js → markdown-tables-Mkx7k92Y.js} +1 -1
- package/dist/plugin-sdk/{media-Bu-nJpPs.js → media-CA8sTmVE.js} +4 -4
- package/dist/plugin-sdk/{monitor-II_NIq3G.js → monitor-CZrN9pev.js} +51 -55
- package/dist/plugin-sdk/{monitor-DL6oEVo8.js → monitor-CmwGqNyV.js} +61 -65
- package/dist/plugin-sdk/{openresponses-http-vkHBBpGY.js → openresponses-http-CWOd4war.js} +43 -47
- package/dist/plugin-sdk/{optional-runtime-dependency-DEojVNfv.js → optional-runtime-dependency-DKmk9PZa.js} +1 -1
- package/dist/plugin-sdk/{outbound-mf2y6KuY.js → outbound-0oN9IfNw.js} +9 -9
- package/dist/plugin-sdk/{outbound-attachment-ivAHpWnn.js → outbound-attachment-DdVkqUzE.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-CvJ6Qa1Q.d.ts → pairing-message-BMkkS038.d.ts} +2 -2
- package/dist/plugin-sdk/{pairing-message-CqYG12t-.js → pairing-message-ClqhfCUk.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-D-21Sphe.js → pairing-store-B01mCSct.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-B6gD1clF.js → pi-model-discovery-Buz0JC1Y.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-3yDxS3ro.js → pi-model-discovery-runtime-DuwuoteY.js} +2 -2
- package/dist/plugin-sdk/{probe-Cyb-DGA3.js → probe--7xtfzMm.js} +3 -3
- package/dist/plugin-sdk/{probe-Dlk0Jxpw.js → probe-BFroeK3g.js} +1 -1
- package/dist/plugin-sdk/{probe-D8JAILir.js → probe-l_whvGLY.js} +1 -1
- package/dist/plugin-sdk/{resolve-channels-zEnvugag.js → probe-xY3Ky0Tx.js} +3 -4
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
- package/dist/plugin-sdk/{pw-ai-CMplwiwf.js → pw-ai-B0domrii.js} +6 -8
- package/dist/plugin-sdk/{qmd-manager-DCUE21Kj.js → qmd-manager-CFFeM4Fl.js} +3 -3
- package/dist/plugin-sdk/{query-expansion-Zr9qQixm.js → query-expansion-CAI2kKLQ.js} +1 -1
- package/dist/plugin-sdk/{replies-wiI4veI7.js → replies-1macZ1mZ.js} +4 -4
- package/dist/plugin-sdk/{resolve-channels-ChWKWtA9.js → resolve-channels-87LZrFk_.js} +2 -2
- package/dist/plugin-sdk/resolve-channels-CwB2_019.js +4 -0
- package/dist/plugin-sdk/{resolve-outbound-target-bm9RUK5q.js → resolve-outbound-target-BdH6LUoW.js} +2 -2
- package/dist/plugin-sdk/{resolve-route-ekGNc6os.js → resolve-route-CkNIKKEW.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-BTvjQuui.js → resolve-users-Cxb5wpAQ.js} +1 -1
- package/dist/plugin-sdk/{resolve-users-CTzoruIZ.js → resolve-users-V6dHh_2B.js} +2 -2
- package/dist/plugin-sdk/{retry-policy-BvlC2SPh.js → retry-policy-9ybIh4Fq.js} +1 -1
- package/dist/plugin-sdk/{runtime-ClSakPxR.js → runtime-Dy420wBu.js} +3 -3
- package/dist/plugin-sdk/{runtime-dependency-yAWxH4El.js → runtime-dependency-CIw9t7-k.js} +123 -15
- package/dist/plugin-sdk/{sandbox-paths-lj7_EVuA.js → sandbox-paths-w64tYl0v.js} +1 -1
- package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
- package/dist/plugin-sdk/sat-runtime.js +44 -10
- package/dist/plugin-sdk/{send-D264hFVb.js → send-2VcOMTN5.js} +9 -9
- package/dist/plugin-sdk/{send-CgyS75Av.js → send-BQUtCJFW.js} +10 -10
- package/dist/plugin-sdk/{send-D58yEeH4.js → send-DPJIIYAs.js} +6 -6
- package/dist/plugin-sdk/{send-C7x6gzSl.js → send-Dqes9tdU.js} +13 -13
- package/dist/plugin-sdk/{send-DrAtUGLM.js → send-J4JWKP62.js} +8 -8
- package/dist/plugin-sdk/{session-DyMtb5YQ.js → session-C_n2S5ub.js} +3 -3
- package/dist/plugin-sdk/{skill-commands-Q80wCyry.js → skill-commands-B7wx9ax8.js} +102 -102
- package/dist/plugin-sdk/{slack-C-I6q3NB.js → slack-BouRQG-W.js} +64 -68
- package/dist/plugin-sdk/{slack-actions-dGE_t_Un.js → slack-actions-CasHVtiq.js} +20 -21
- package/dist/plugin-sdk/slack.d.ts +5 -5
- package/dist/plugin-sdk/slack.js +13 -13
- package/dist/plugin-sdk/{ssrf-BZG8Ztod.js → ssrf-fG4UHKBw.js} +180 -2
- package/dist/plugin-sdk/{sticker-cache-DCrDTYIi.js → sticker-cache-BvGEUas3.js} +3 -3
- package/dist/plugin-sdk/{tables-0mhUOh5v.js → tables-CjlQJV4r.js} +2 -2
- package/dist/plugin-sdk/{device-pairing-D2Yq-_U6.js → tailscale-status-DwpNdO3Z.js} +104 -2
- package/dist/plugin-sdk/{targets-znKHngSk.js → targets-QfP164Dh.js} +2 -2
- package/dist/plugin-sdk/{telegram-actions-GBYY8-x9.js → telegram-actions-CwYjV6Db.js} +48 -52
- package/dist/plugin-sdk/telegram.d.ts +5 -5
- package/dist/plugin-sdk/telegram.js +11 -11
- package/dist/plugin-sdk/{thread-bindings.lifecycle-ClzPBK70.js → thread-bindings.lifecycle-DU4iX_Jr.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-Ha01nmrq.js → thread-bindings.state-BgYWFjNF.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-C_xfeEN9.d.ts → tmp-fased-dir-BdFQvrvw.d.ts} +2 -2
- package/dist/plugin-sdk/{types-DV5TNhMK.d.ts → types-BYDL6dQj.d.ts} +2 -2
- package/dist/plugin-sdk/{types-BI2njxWJ.d.ts → types-CLIvQaVg.d.ts} +39 -5
- package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-DyhXnYUr.d.ts} +1 -1
- package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-_fbu40Re.d.ts} +8 -5
- package/dist/plugin-sdk/{web-CJMfhGFY.js → web-D0yENDve.js} +52 -56
- package/dist/plugin-sdk/{whatsapp-actions-0ZbGo5ZV.js → whatsapp-actions-BT2nPLyo.js} +18 -19
- package/dist/plugin-sdk/{whatsapp-heartbeat-DGTsuvQ8.js → whatsapp-heartbeat-CiABSZ6G.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +5 -5
- package/dist/plugin-sdk/whatsapp.js +14 -14
- package/dist/plugin-sdk/{wsl-D5jDUlms.js → wsl-B_ojyEtC.js} +53 -53
- package/dist/plugins/bundled-dir.js +3 -3
- package/dist/plugins/discovery.js +11 -11
- package/dist/plugins/loader.js +13 -13
- package/dist/plugins/manifest-registry.js +2 -2
- package/dist/plugins/manifest.js +4 -4
- package/dist/plugins/path-safety.js +3 -3
- package/dist/plugins/runtime/index.js +1 -1
- package/dist/plugins/status-cache.js +9 -9
- package/dist/plugins/update.js +3 -3
- package/dist/plugins/web-search-install-catalog.js +3 -3
- package/dist/providers/github-copilot-model-discovery.js +51 -0
- package/dist/providers/litellm-models.js +1 -1
- package/dist/providers/openai-codex-model-discovery.js +166 -0
- package/dist/providers/refresh.js +311 -67
- package/dist/providers/registry.js +16 -6
- package/dist/providers/runtime-model-catalog.js +250 -0
- 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/model-thinking.js +54 -4
- 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/bot-message-context.js +1 -1
- 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.host-security.js +7 -7
- package/dist/wizard/onboarding.js +31 -13
- 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 +2 -1
- package/dist/control-ui/assets/chat-model-ref-B9sWop67.js +0 -2
- package/dist/plugin-sdk/ip-C70a-YlD.js +0 -181
- package/dist/plugin-sdk/tailscale-status-ClsquRGs.js +0 -104
- package/dist/plugin-sdk/wallet-status-CyovJojz.js +0 -11944
- package/dist/plugin-sdk/ws-CocpWGhl.js +0 -114
- /package/dist/plugin-sdk/{blocks-input-Dcitfh7h.js → blocks-input-Bg-8S2pl.js} +0 -0
- /package/dist/plugin-sdk/{channel-activity-Cg1xRoc2.js → channel-activity-DBDMQ3yI.js} +0 -0
- /package/dist/plugin-sdk/{channel-core-BOkyXXLa.js → channel-core-CFRs8LPy.js} +0 -0
- /package/dist/plugin-sdk/{client-D2N7hqVu.js → client-pI228AVT.js} +0 -0
- /package/dist/plugin-sdk/{command-poll-backoff-NAePk3eL.js → command-poll-backoff-yJU83wEq.js} +0 -0
- /package/dist/plugin-sdk/{date-time-CE3Uer3C.js → date-time-uUevHscU.js} +0 -0
- /package/dist/plugin-sdk/{diagnostic-session-state-HO94DMou.js → diagnostic-session-state-DqgfGYqZ.js} +0 -0
- /package/dist/plugin-sdk/{draft-stream-loop-CKyHn8IX.js → draft-stream-loop-CrOPfV3F.js} +0 -0
- /package/dist/plugin-sdk/{fetch-Cu-ahkie.js → fetch-BtmoPIlf.js} +0 -0
- /package/dist/plugin-sdk/{gateway-registry-DFsoY6C0.js → gateway-registry-DZDsqicG.js} +0 -0
- /package/dist/plugin-sdk/{inbound-context-BFnIdcqI.js → inbound-context-DrAcXE0y.js} +0 -0
- /package/dist/plugin-sdk/{internal-qo16nNU1.js → internal-CG_nHo-2.js} +0 -0
- /package/dist/plugin-sdk/{memory-search-C3C0bD2H.js → memory-search-VFll-AIb.js} +0 -0
- /package/dist/plugin-sdk/{pairing-token-N_6Jbt1L.js → pairing-token-Cs3BRKc0.js} +0 -0
- /package/dist/plugin-sdk/{path-alias-guards-Dg3gU-MA.js → path-alias-guards-BJZD5JMJ.js} +0 -0
- /package/dist/plugin-sdk/{polls-DQrR-qT3.js → polls-DKQXVfJp.js} +0 -0
- /package/dist/plugin-sdk/{proxy-7xs_rsnV.js → proxy-DWpYcsvR.js} +0 -0
- /package/dist/plugin-sdk/{qmd-scope-D1sSG_Rx.js → qmd-scope-CdX34VCV.js} +0 -0
- /package/dist/plugin-sdk/{redact-identifier-Q3tkvxhm.js → redact-identifier-Lt7t3l7S.js} +0 -0
- /package/dist/plugin-sdk/{redact-sensitive-url-dPvnFFsK.js → redact-sensitive-url-g-ukZjwA.js} +0 -0
- /package/dist/plugin-sdk/{render-Bwu_WxwA.js → render-e7fENCYH.js} +0 -0
- /package/dist/plugin-sdk/{reply-prefix-Bqzm6DC1.js → reply-prefix-ClpxvL_w.js} +0 -0
- /package/dist/plugin-sdk/{reply-reference-BkbK_DWT.js → reply-reference-Bqk-7HXE.js} +0 -0
- /package/dist/plugin-sdk/{secure-random-Bl-AVLVb.js → secure-random-BIkG-k4s.js} +0 -0
- /package/dist/plugin-sdk/{shared-clhhbWN3.js → shared-CBgp_GBw.js} +0 -0
- /package/dist/plugin-sdk/{target-errors-C_SVKoEv.js → target-errors-Ckufe179.js} +0 -0
- /package/dist/plugin-sdk/{targets-BDvvnlph.js → targets-CoMJ1ry1.js} +0 -0
- /package/dist/plugin-sdk/{tokens-BvtlOzVP.js → tokens-BbnqfVuu.js} +0 -0
- /package/dist/plugin-sdk/{tool-loop-detection-CWphm1k_.js → tool-loop-detection-Bp8bPJLs.js} +0 -0
- /package/dist/plugin-sdk/{ui-e020ouhJ.js → ui-Be8cLHIS.js} +0 -0
- /package/dist/plugin-sdk/{with-timeout-BYrRAYFV.js → with-timeout-ckWB8rTo.js} +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import{createRequire as e}from"node:module";import t from"node:process";import n,{constants as r}from"node:fs";import i from"node:path";import a from"node:fs/promises";import{fileURLToPath as o}from"node:url";import{execFile as s,execFileSync as c,spawn as l}from"node:child_process";import{isDeepStrictEqual as u,promisify as d}from"node:util";import{Logger as f}from"tslog";import p from"node:os";import m from"json5";import h,{Chalk as g}from"chalk";import _ from"node:crypto";import v from"dotenv";import"jszip";import"tar";import{getOAuthProviders as ee}from"@mariozechner/pi-ai/oauth";import te from"ajv";import{z as y}from"zod";function ne(e){return!e||e===`--`?!1:e.startsWith(`-`)?/^-\d+(?:\.\d+)?$/.test(e):!0}function re(e,t){let n=e.slice(2);for(let e of n){if(e===`--`)break;if(e===t)return!0}return!1}function ie(e,t){let n=e.slice(2);for(let e=0;e<n.length;e+=1){let r=n[e];if(r===`--`)break;if(r===t){let t=n[e+1];return ne(t)?t:null}if(r.startsWith(`${t}=`))return r.slice(t.length+1)||null}}const ae=`fased`,oe=new Set([ae]),se=/^(?:((?:pnpm|npm|bunx|npx)\s+))?(fased)\b/;function ce(e=process.argv){let t=e[1];if(!t)return ae;let n=i.basename(t).trim();return oe.has(n)?n:ae}function le(e,t=ce()){return!e.trim()||!se.test(e)?e:e.replace(se,(e,n)=>`${n??``}${t}`)}const ue=/^[a-z0-9][a-z0-9_-]{0,63}$/i;function de(e){return e?ue.test(e):!1}function fe(e){let t=e?.trim();return!t||t.toLowerCase()===`default`||!de(t)?null:t}const pe=/^(?:pnpm|npm|bunx|npx)\s+fased\b|^fased\b|^node\s+scripts\/run-node\.mjs\b/,me=/(?:^|\s)--profile(?:\s|=|$)/,he=/(?:^|\s)--dev(?:\s|$)/;function ge(e=process.argv){let t=ce(e),r=e[1];if(!r||i.basename(r).trim()!==`run-node.mjs`)return t;let a=i.resolve(process.cwd(),`scripts`,`run-node.mjs`);return n.existsSync(a)?`node scripts/run-node.mjs`:t}function _e(e,t=process.env){let n=ce(),r=ge(),i=le(e,n);r!==n&&pe.test(i)&&(i=i.replace(pe,r));let a=fe(t.FASED_PROFILE);return!a||!pe.test(i)||me.test(i)||he.test(i)?i:i.replace(pe,e=>`${e} --profile ${a}`)}const ve=new Set([`fased`,`@fased/fased`]);async function ye(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t);return typeof n.name==`string`?n.name:null}catch{return null}}function be(e){try{let t=n.readFileSync(i.join(e,`package.json`),`utf-8`),r=JSON.parse(t);return typeof r.name==`string`?r.name:null}catch{return null}}async function xe(e,t=12){for(let n of Ce(e,t)){let e=await ye(n);if(e&&ve.has(e))return n}return null}function Se(e,t=12){for(let n of Ce(e,t)){let e=be(n);if(e&&ve.has(e))return n}return null}function*Ce(e,t){let n=i.resolve(e);for(let e=0;e<t;e+=1){yield n;let e=i.dirname(n);if(e===n)break;n=e}}function we(e){let t=i.resolve(e),r=[i.dirname(t)];try{let e=n.realpathSync(t);e!==t&&r.push(i.dirname(e))}catch{}let a=t.split(i.sep),o=a.lastIndexOf(`.bin`);if(o>0&&a[o-1]===`node_modules`){let e=i.basename(t),n=a.slice(0,o).join(i.sep);r.push(i.join(n,e))}return r}async function Te(e){for(let t of De(e)){let e=await xe(t);if(e)return e}return null}function Ee(e){for(let t of De(e)){let e=Se(t);if(e)return e}return null}function De(e){let t=[];return e.moduleUrl&&t.push(i.dirname(o(e.moduleUrl))),e.argv1&&t.push(...we(e.argv1)),e.cwd&&t.push(e.cwd),t}const b=`/tmp/fased`,Oe=n.constants.W_OK|n.constants.X_OK;function ke(e,t){return typeof e==`object`&&!!e&&`code`in e&&e.code===t}function Ae(e={}){let t=e.accessSync??n.accessSync,r=e.chmodSync??n.chmodSync,a=e.lstatSync??n.lstatSync,o=e.mkdirSync??n.mkdirSync,s=e.warn??(e=>console.warn(e)),c=e.getuid??(()=>{try{return typeof process.getuid==`function`?process.getuid():void 0}catch{return}}),l=e.tmpdir??p.tmpdir,u=c(),d=e=>u===void 0?!0:!(typeof e.uid==`number`&&e.uid!==u||typeof e.mode==`number`&&e.mode&18),f=()=>{let e=l(),t=u===void 0?`fased`:`fased-${u}`;return i.join(e,t)},m=e=>e.isDirectory()&&!e.isSymbolicLink()&&d(e),h=e=>{try{return m(a(e))?(t(e,Oe),`available`):`invalid`}catch(e){return ke(e,`ENOENT`)?`missing`:`invalid`}},g=e=>{try{let t=a(e);return!t.isDirectory()||t.isSymbolicLink()||u!==void 0&&typeof t.uid==`number`&&t.uid!==u||typeof t.mode!=`number`||!(t.mode&18)?!1:(r(e,448),s(`[fased] tightened permissions on temp dir: ${e}`),h(e)===`available`)}catch{return!1}},_=()=>{let e=f(),t=h(e);if(t===`available`)return e;if(t===`invalid`){if(g(e))return e;throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`)}try{o(e,{recursive:!0,mode:448}),r(e,448)}catch{throw Error(`Unable to create fallback FasedAgent temp dir: ${e}`)}if(h(e)!==`available`&&!g(e))throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`);return e},v=h(b);if(v===`available`)return b;if(v===`invalid`)return g(b)?b:_();try{return t(`/tmp`,Oe),o(b,{recursive:!0,mode:448}),r(b,448),h(b)!==`available`&&!g(b)?_():b}catch{return _()}}function je(e){return e?.trim()||void 0}function Me(e=process.env,t=p.homedir){let n=Ne(e,t);return n?i.resolve(n):void 0}function Ne(e,t){let n=je(e.FASED_HOME);if(n){if(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`)){let r=je(e.HOME)??je(e.USERPROFILE)??Pe(t);return r?n.replace(/^~(?=$|[\\/])/,r):void 0}return n}return je(e.HOME)||je(e.USERPROFILE)||Pe(t)}function Pe(e){try{return je(e())}catch{return}}function x(e=process.env,t=p.homedir){return Me(e,t)??i.resolve(process.cwd())}function Fe(e,t){if(!e.startsWith(`~`))return e;let n=je(t?.home)??Me(t?.env??process.env,t?.homedir??p.homedir);return n?e.replace(/^~(?=$|[\\/])/,n):e}function Ie(e=process.env){return e.FASED_NIX_MODE===`1`}Ie();const Le=`fased.json`;function Re(){return x(process.env,p.homedir)}function ze(e){return()=>x(e,p.homedir)}function Be(e=Re){return i.join(e(),`.fased`)}function Ve(e=process.env,t=ze(e)){let n=()=>x(e,t),r=e.FASED_STATE_DIR?.trim();return r?He(r,e,n):Be(n)}function He(e,t=process.env,n=ze(t)){let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Fe(r,{home:x(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}Ve();function Ue(e=process.env,t=Ve(e,ze(e))){let n=e.FASED_CONFIG_PATH?.trim();return n?He(n,e,ze(e)):i.join(t,Le)}function We(e=process.env,t=ze(e)){return Ke(e,t).find(e=>{try{return n.existsSync(e)}catch{return!1}})||Ue(e,Ve(e,t))}function Ge(e=process.env,t=Ve(e,ze(e)),r=ze(e)){let a=e.FASED_CONFIG_PATH?.trim();if(a)return He(a,e,r);let o=e.FASED_STATE_DIR?.trim(),s=[i.join(t,Le)].find(e=>{try{return n.existsSync(e)}catch{return!1}});if(s)return s;if(o)return i.join(t,Le);let c=Ve(e,r);return i.resolve(t)===i.resolve(c)?We(e,r):i.join(t,Le)}We();function Ke(e=process.env,t=ze(e)){let n=()=>x(e,t),r=e.FASED_CONFIG_PATH?.trim();if(r)return[He(r,e,n)];let a=[],o=e.FASED_STATE_DIR?.trim();if(o){let t=He(o,e,n);a.push(i.join(t,Le))}return a.push(i.join(Be(n),Le)),a}function qe(){let e=Ge();try{if(!n.existsSync(e))return;let t=n.readFileSync(e,`utf-8`),r=m.parse(t)?.logging;return!r||typeof r!=`object`||Array.isArray(r)?void 0:r}catch{return}}const Je=[`silent`,`fatal`,`error`,`warn`,`info`,`debug`,`trace`];function Ye(e){if(typeof e!=`string`)return;let t=e.trim();return Je.includes(t)?t:void 0}function Xe(e,t=`info`){return Ye(e)??t}function Ze(e){return{fatal:0,error:1,warn:2,info:3,debug:4,trace:5,silent:1/0}[e]}const S={cachedLogger:null,cachedSettings:null,cachedConsoleSettings:null,overrideSettings:null,invalidEnvLogLevelValue:null,consolePatched:!1,forceConsoleToStderr:!1,consoleTimestampPrefix:!1,consoleSubsystemFilter:null,resolvingConsoleSettings:!1,streamErrorHandlersInstalled:!1,rawConsole:null};function Qe(){let e=process.env.FASED_LOG_LEVEL,t=typeof e==`string`?e.trim():``;if(!t){S.invalidEnvLogLevelValue=null;return}let n=Ye(t);if(n)return S.invalidEnvLogLevelValue=null,n;S.invalidEnvLogLevelValue!==t&&(S.invalidEnvLogLevelValue=t,process.stderr.write(`[fased] Ignoring invalid FASED_LOG_LEVEL="${t}" (allowed: ${Je.join(`|`)}).\n`))}function $e(e){let t=process.getBuiltinModule;if(typeof t!=`function`)return null;try{let n=t(`module`),r=typeof n.createRequire==`function`?n.createRequire:null;return r?r(e):null}catch{return null}}const et=Ae();i.join(et,`fased.log`);const tt=`fased`,nt=`.log`,rt=$e(import.meta.url),it=new Set;function at(e,t){e.attachTransport(e=>{if(it.has(t))try{t(e)}catch{}})}function ot(){let e=S.overrideSettings??qe();if(!e)try{e=(rt?.(`../config/config.js`))?.loadConfig?.().logging}catch{e=void 0}let t=process.env.VITEST===`true`&&process.env.FASED_TEST_FILE_LOG!==`1`?`silent`:`info`,n=Xe(e?.level,t);return{level:Qe()??n,file:e?.file??gt(),maxFileBytes:ut(e?.maxFileBytes)}}function st(e,t){return e?e.level!==t.level||e.file!==t.file||e.maxFileBytes!==t.maxFileBytes:!0}function ct(e){let t=S.cachedSettings??ot();return S.cachedSettings||=t,t.level===`silent`?!1:Ze(e)<=Ze(t.level)}function lt(e){n.mkdirSync(i.dirname(e.file),{recursive:!0}),_t(e.file)&&vt(i.dirname(e.file));let t=dt(e.file),r=!1,a=new f({name:`fased`,minLevel:Ze(e.level),type:`hidden`});a.attachTransport(n=>{try{let i=n.date?.toISOString?.()??new Date().toISOString(),a=`${JSON.stringify({...n,time:i})}\n`,o=Buffer.byteLength(a,`utf8`),s=t+o;if(s>e.maxFileBytes){if(!r){r=!0;let t=JSON.stringify({time:new Date().toISOString(),level:`warn`,subsystem:`logging`,message:`log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}`});ft(e.file,`${t}\n`),process.stderr.write(`[fased] log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}\n`)}return}ft(e.file,a)&&(t=s)}catch{}});for(let e of it)at(a,e);return a}function ut(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):524288e3}function dt(e){try{return n.statSync(e).size}catch{return 0}}function ft(e,t){try{return n.appendFileSync(e,t,{encoding:`utf8`}),!0}catch{return!1}}function pt(){let e=ot(),t=S.cachedLogger,n=S.cachedSettings;return(!t||st(n,e))&&(S.cachedLogger=lt(e),S.cachedSettings=e),S.cachedLogger}function mt(e,t){let n=pt(),r=t?.level?Ze(t.level):void 0,i=e?JSON.stringify(e):void 0;return n.getSubLogger({name:i,minLevel:r,prefix:e?[i??``]:[]})}function ht(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function gt(){let e=ht(new Date);return i.join(et,`${tt}-${e}${nt}`)}function _t(e){let t=i.basename(e);return t.startsWith(`${tt}-`)&&t.endsWith(nt)&&t.length===`${tt}-YYYY-MM-DD${nt}`.length}function vt(e){try{let t=n.readdirSync(e,{withFileTypes:!0}),r=Date.now()-864e5;for(let a of t){if(!a.isFile()||!a.name.startsWith(`${tt}-`)||!a.name.endsWith(nt))continue;let t=i.join(e,a.name);try{n.statSync(t).mtimeMs<r&&n.rmSync(t,{force:!0})}catch{}}}catch{}}const yt={accent:`#22D3EE`,accentBright:`#67E8F9`,accentDim:`#0891B2`,info:`#93C5FD`,success:`#4ADE80`,warn:`#FACC15`,error:`#F87171`,muted:`#A3A3A3`},bt=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`,xt=process.env.NO_COLOR&&!bt?new g({level:0}):h,St=e=>xt.hex(e),Ct={accent:St(yt.accent),accentBright:St(yt.accentBright),accentDim:St(yt.accentDim),info:St(yt.info),success:xt.green,warn:xt.yellow,error:St(yt.error),muted:St(yt.muted),noteChrome:xt.gray,noteTitle:xt.bold.gray,noteHeading:xt.bold.yellow,heading:xt.bold,command:xt.green,option:xt.yellow};function wt(){return!1}const Tt=[`telegram`,`whatsapp`,`discord`,`irc`,`googlechat`,`slack`,`signal`,`imessage`],Et=[...Tt],Dt=[],Ot={imsg:`imessage`,"internet-relay-chat":`irc`,"google-chat":`googlechat`,gchat:`googlechat`},kt=e=>e?.trim().toLowerCase()||void 0;function At(e){let t=kt(e);if(!t)return null;let n=Ot[t]??t;return Tt.includes(n)?n:null}function jt(e,t,n){let r=n?` (${n})`:``,i=`[terminal] restore ${e} failed${r}: ${String(t)}`;try{process.stderr.write(`${i}\n`)}catch(e){console.error(`[terminal] restore reporting failed${r}: ${String(e)}`)}}function Mt(e,t={}){let n=t.resumeStdinIfPaused??t.resumeStdin??!1,r=process.stdin;if(r.isTTY&&typeof r.setRawMode==`function`){try{r.setRawMode(!1)}catch(t){jt(`raw mode`,t,e)}if(n&&typeof r.isPaused==`function`&&r.isPaused())try{r.resume()}catch(t){jt(`stdin resume`,t,e)}}if(process.stdout.isTTY)try{process.stdout.write(`\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l`)}catch(t){jt(`stdout reset`,t,e)}}function Nt(e=process.env){return e.VITEST!==`true`||e.FASED_TEST_RUNTIME_LOG===`1`?!0:typeof console.log.mock==`object`}function Pt(){return{log:(...e)=>{Nt()&&console.log(...e)},error:(...e)=>{console.error(...e)}}}const Ft={...Pt(),exit:e=>{throw Mt(`runtime exit`,{resumeStdinIfPaused:!1}),process.exit(e),Error(`unreachable`)}},It=RegExp(`\\x1b\\[[0-9;]*m`,`g`),Lt=RegExp(`\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\`,`g`);function Rt(e){return e.replace(Lt,``).replace(It,``)}function zt(e){return Array.from(Rt(e)).length}const Bt=$e(import.meta.url);let Vt=()=>{try{return(Bt?.(`../config/config.js`))?.loadConfig?.().logging}catch{return}};function Ht(e){return wt()?`debug`:!e&&process.env.VITEST===`true`&&process.env.FASED_TEST_CONSOLE!==`1`?`silent`:Xe(e,`info`)}function Ut(e){return e===`compact`||e===`json`||e===`pretty`?e:process.stdout.isTTY?`pretty`:`compact`}function Wt(){let e=S.overrideSettings??qe();if(!e)if(S.resolvingConsoleSettings)e=void 0;else{S.resolvingConsoleSettings=!0;try{e=Vt()}finally{S.resolvingConsoleSettings=!1}}return{level:Qe()??Ht(e?.consoleLevel),style:Ut(e?.consoleStyle)}}function Gt(e,t){return e?e.level!==t.level||e.style!==t.style:!0}function Kt(){let e=Wt(),t=S.cachedConsoleSettings;return(!t||Gt(t,e))&&(S.cachedConsoleSettings=e),S.cachedConsoleSettings}function qt(e){let t=S.consoleSubsystemFilter;return!t||t.length===0?!0:t.some(t=>e===t||e.startsWith(`${t}/`))}function Jt(e,t){return t.level===`silent`?!1:Ze(e)<=Ze(t.level)}(()=>{let e=process.getBuiltinModule;if(typeof e!=`function`)return null;try{let t=e(`util`);return typeof t.inspect==`function`?t.inspect:null}catch{return null}})();function Yt(){let e=(process.env.TERM??``).toLowerCase();return process.env.COLORTERM||process.env.TERM_PROGRAM?!0:e.length>0&&e!==`dumb`}function Xt(){let e=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`;return process.env.NO_COLOR&&!e?new g({level:0}):process.stdout.isTTY||process.stderr.isTTY||Yt()?new g({level:1}):new g({level:0})}const Zt=[`cyan`,`green`,`yellow`,`blue`,`magenta`,`red`],Qt={"gmail-watcher":`blue`},$t=[`gateway`,`channels`,`providers`],en=new Set(Tt);function tn(e,t){let n=Qt[t];if(n)return e[n];let r=0;for(let e=0;e<t.length;e+=1)r=r*31+t.charCodeAt(e)|0;return e[Zt[Math.abs(r)%Zt.length]]}function nn(e){let t=e.split(`/`).filter(Boolean),n=t.join(`/`)||e;for(;t.length>0&&$t.includes(t[0]);)t.shift();return t.length===0?n:en.has(t[0])?t[0]:t.length>2?t.slice(-2).join(`/`):t.join(`/`)}function rn(e,t){if(!t)return e;if(e.startsWith(`[`)){let n=e.indexOf(`]`);if(n>1&&e.slice(1,n).toLowerCase()===t.toLowerCase()){let t=n+1;for(;e[t]===` `;)t+=1;return e.slice(t)}}if(e.slice(0,t.length).toLowerCase()!==t.toLowerCase())return e;let n=e.slice(t.length,t.length+1);if(n!==`:`&&n!==` `)return e;let r=t.length;for(;e[r]===` `;)r+=1;for(e[r]===`:`&&(r+=1);e[r]===` `;)r+=1;return e.slice(r)}function an(e){let t=e.style===`json`?e.subsystem:nn(e.subsystem);if(e.style===`json`)return JSON.stringify({time:new Date().toISOString(),level:e.level,subsystem:t,message:e.message,...e.meta});let n=Xt(),r=`[${t}]`,i=tn(n,t),a=e.level===`error`||e.level===`fatal`?n.red:e.level===`warn`?n.yellow:e.level===`debug`||e.level===`trace`?n.gray:n.cyan,o=rn(e.message,t);return`${[e.style===`pretty`?n.gray(new Date().toISOString().slice(11,19)):S.consoleTimestampPrefix?n.gray(new Date().toISOString()):``,i(r)].filter(Boolean).join(` `)} ${a(o)}`}function on(e,t){let n=process.platform===`win32`&&process.env.GITHUB_ACTIONS===`true`?t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`?`).replace(/[\uD800-\uDFFF]/g,`?`):t,r=S.rawConsole??console;S.forceConsoleToStderr||e===`error`||e===`fatal`?(r.error??console.error)(n):e===`warn`?(r.warn??console.warn)(n):(r.log??console.log)(n)}function sn(e,t,n,r){if(t===`silent`)return;let i=e[t];typeof i==`function`&&(r&&Object.keys(r).length>0?i.call(e,r,n):i.call(e,n))}function cn(e){let t=null,n=()=>(t||=mt({subsystem:e}),t),r=(t,r,i)=>{let a=Kt(),o,s=i;if(i&&Object.keys(i).length>0){let{consoleMessage:e,...t}=i;typeof e==`string`&&(o=e),s=Object.keys(t).length>0?t:void 0}if(sn(n(),t,r,s),!Jt(t,{level:a.level})||!qt(e))return;let c=o??r;!wt()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(c)||on(t,an({level:t,subsystem:e,message:a.style===`json`?r:c,style:a.style,meta:s}))},i=t=>Jt(t,{level:Kt().level})&&qt(e),a=e=>ct(e);return{subsystem:e,isEnabled:(e,t=`any`)=>t===`console`?i(e):t===`file`?a(e):i(e)||a(e),trace:(e,t)=>r(`trace`,e,t),debug:(e,t)=>r(`debug`,e,t),info:(e,t)=>r(`info`,e,t),warn:(e,t)=>r(`warn`,e,t),error:(e,t)=>r(`error`,e,t),fatal:(e,t)=>r(`fatal`,e,t),raw:t=>{if(sn(n(),`info`,t,{raw:!0}),qt(e)){if(!wt()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(t))return;on(`info`,t)}},child:t=>cn(`${e}/${t}`)}}function ln(e){return[e.hasInput?`pipe`:e.preferInherit?`inherit`:`pipe`,`pipe`,`pipe`]}d(s);function un(e){if(process.platform!==`win32`)return e;let t=i.basename(e).toLowerCase();return i.extname(t)?e:[`npm`,`pnpm`,`yarn`,`npx`].includes(t)?`${e}.cmd`:e}function dn(e){return!1}async function fn(e,t){let n=typeof t==`number`?{timeoutMs:t}:t,{timeoutMs:r,cwd:a,input:o,env:s,noOutputTimeoutMs:c}=n,{windowsVerbatimArguments:u}=n,d=o!==void 0,f=(()=>{let t=i.basename(e[0]??``);return t===`npm`||t===`npm.cmd`||t===`npm.exe`?!0:t===`node`||t===`node.exe`?(e[1]??``).includes(`npm-cli.js`):!1})(),p=s?{...process.env,...s}:{...process.env},m=Object.fromEntries(Object.entries(p).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)]));f&&(m.NPM_CONFIG_FUND??=`false`,m.npm_config_fund??=`false`);let h=ln({hasInput:d,preferInherit:!0}),g=un(e[0]??``),_=l(g,e.slice(1),{stdio:h,cwd:a,env:m,windowsVerbatimArguments:u,...dn({resolvedCommand:g,platform:process.platform})?{shell:!0}:{}});return await new Promise((e,t)=>{let n=``,i=``,a=!1,s=!1,l=!1,u=null,f=typeof c==`number`&&Number.isFinite(c)&&c>0,p=()=>{u&&=(clearTimeout(u),null)},m=()=>{!f||a||(p(),u=setTimeout(()=>{a||(l=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`))},Math.floor(c)))},h=setTimeout(()=>{s=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`)},r);m(),d&&_.stdin&&(_.stdin.write(o??``),_.stdin.end()),_.stdout?.on(`data`,e=>{n+=e.toString(),m()}),_.stderr?.on(`data`,e=>{i+=e.toString(),m()}),_.on(`error`,e=>{a||(a=!0,clearTimeout(h),p(),t(e))}),_.on(`close`,(t,r)=>{if(a)return;a=!0,clearTimeout(h),p();let o=l?`no-output-timeout`:s?`timeout`:r==null?`exit`:`signal`;e({pid:_.pid??void 0,stdout:n,stderr:i,code:t,signal:r,killed:_.killed,termination:o,noOutputTimedOut:l})})})}async function pn(e,t,n,r=fetch){let i=new AbortController,a=setTimeout(i.abort.bind(i),Math.max(1,n));try{return await r(e,{...t,signal:i.signal})}finally{clearTimeout(a)}}async function mn(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t)?.packageManager?.split(`@`)[0]?.trim();if(n===`pnpm`||n===`bun`||n===`npm`)return n}catch{}let t=await a.readdir(e).catch(()=>[]);return t.includes(`pnpm-lock.yaml`)?`pnpm`:t.includes(`bun.lockb`)?`bun`:t.includes(`package-lock.json`)?`npm`:null}function hn(e){if(!e)return null;let t=e.trim().toLowerCase();return t===`stable`||t===`beta`||t===`dev`?t:null}function gn(e){return/(?:^|[.-])beta(?:[.-]|$)/i.test(e)}function _n(e){if(e.configChannel)return{channel:e.configChannel,source:`config`};if(e.installKind===`git`){let t=e.git?.tag;return t?{channel:gn(t)?`beta`:`stable`,source:`git-tag`}:{channel:`stable`,source:`default`}}return e.installKind,{channel:`stable`,source:`default`}}function vn(e){return e.source===`config`?`${e.channel} (config)`:e.source===`git-tag`?e.gitTag?`${e.channel} (${e.gitTag})`:`${e.channel} (tag)`:e.source===`git-branch`?e.gitBranch?`${e.channel} (${e.gitBranch})`:`${e.channel} (branch)`:`${e.channel} (default)`}function yn(e){let t=_n({configChannel:e.configChannel,installKind:e.installKind,git:e.gitTag||e.gitBranch?{tag:e.gitTag??null,branch:e.gitBranch??null}:void 0});return{channel:t.channel,source:t.source,label:vn({channel:t.channel,source:t.source,gitTag:e.gitTag??null,gitBranch:e.gitBranch??null})}}function C(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}function w(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function T(e,t=process.env,n=p.homedir){if(!e)return``;let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Fe(r,{home:x(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}function bn(e=process.env,t=p.homedir){let r=e.FASED_STATE_DIR?.trim()||e.FASED_CONFIG_DIR?.trim();if(r)return T(r);let a=i.join(x(e,t),`.fased`);try{if(n.existsSync(a))return a}catch{}return a}function xn(){return Me(process.env,p.homedir)}function Sn(){let e=xn();if(e)return process.env.FASED_HOME?.trim()?{home:e,prefix:`$FASED_HOME`}:{home:e,prefix:`~`}}function Cn(e){if(!e)return e;let t=Sn();return t?e.split(t.home).join(t.prefix):e}function wn(e){return Cn(e)}bn();function Tn(e){let t=i.dirname(e);return i.basename(t).startsWith(`@`)?i.dirname(t):t}function En(e){let t=i.resolve(e),n=`${i.sep}.fased${i.sep}install-cache${i.sep}npm-global`,r=`${n}${`${i.sep}lib${i.sep}node_modules`}`,a=t.indexOf(`${r}${i.sep}`);if(a<0)return null;let o=t.slice(0,a+n.length),s=i.join(o,`lib`,`node_modules`),c=i.join(i.dirname(o),`npm-cache`),l=Tn(t);return i.resolve(l)===i.resolve(s)?{manager:`npm`,globalRoot:s,cacheRoot:i.dirname(o),env:{npm_config_prefix:o,npm_config_cache:c}}:null}async function Dn(e){try{return await a.access(e),!0}catch{return!1}}async function On(e){return await mn(e)??`unknown`}async function kn(e){let t=await fn([`git`,`-C`,e,`rev-parse`,`--show-toplevel`],{timeoutMs:4e3}).catch(()=>null);if(!t||t.code!==0)return null;let n=t.stdout.trim();return n?i.resolve(n):null}async function An(e){let t=e.timeoutMs??6e3,n=i.resolve(e.root),r={root:n,sha:null,tag:null,branch:null,upstream:null,dirty:null,ahead:null,behind:null,fetchOk:null},a=await fn([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`HEAD`],{timeoutMs:t}).catch(()=>null);if(!a||a.code!==0)return{...r,error:a?.stderr?.trim()||`git unavailable`};let o=a.stdout.trim()||null,s=await fn([`git`,`-C`,n,`rev-parse`,`HEAD`],{timeoutMs:t}).catch(()=>null),c=s&&s.code===0?s.stdout.trim():null,l=await fn([`git`,`-C`,n,`describe`,`--tags`,`--exact-match`],{timeoutMs:t}).catch(()=>null),u=l&&l.code===0?l.stdout.trim():null,d=await fn([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`@{upstream}`],{timeoutMs:t}).catch(()=>null),f=d&&d.code===0?d.stdout.trim():null,p=await fn([`git`,`-C`,n,`status`,`--porcelain`,`--`,`:!dist/control-ui/`],{timeoutMs:t}).catch(()=>null),m=p&&p.code===0?p.stdout.trim().length>0:null,h=e.fetch?await fn([`git`,`-C`,n,`fetch`,`--quiet`,`--prune`],{timeoutMs:t}).then(e=>e.code===0).catch(()=>!1):null,g=f&&f.length>0?await fn([`git`,`-C`,n,`rev-list`,`--left-right`,`--count`,`HEAD...${f}`],{timeoutMs:t}).catch(()=>null):null,_=g&&g.code===0?(e=>{let t=e.trim().split(/\s+/);if(t.length<2)return null;let n=Number.parseInt(t[0]??``,10),r=Number.parseInt(t[1]??``,10);return!Number.isFinite(n)||!Number.isFinite(r)?null:{ahead:n,behind:r}})(g.stdout):null;return{root:n,sha:c,tag:u,branch:o,upstream:f,dirty:m,ahead:_?.ahead??null,behind:_?.behind??null,fetchOk:h}}async function jn(e){try{return(await a.stat(e)).mtimeMs}catch{return null}}function Mn(e){let t=e.root;return e.manager===`pnpm`?{lockfilePath:i.join(t,`pnpm-lock.yaml`),markerPath:i.join(t,`node_modules`,`.modules.yaml`)}:e.manager===`bun`?{lockfilePath:i.join(t,`bun.lockb`),markerPath:i.join(t,`node_modules`)}:e.manager===`npm`?{lockfilePath:i.join(t,`package-lock.json`),markerPath:i.join(t,`node_modules`)}:{lockfilePath:null,markerPath:null}}async function Nn(e){let{lockfilePath:t,markerPath:n}=Mn({root:i.resolve(e.root),manager:e.manager});if(!t||!n)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`unknown package manager`};let r=await Dn(t),a=await Dn(n);if(!r)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`lockfile missing`};if(!a)return{manager:e.manager,status:`missing`,lockfilePath:t,markerPath:n,reason:`node_modules marker missing`};let o=await jn(t),s=await jn(n);return!o||!s?{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n}:o>s+1e3?{manager:e.manager,status:`stale`,lockfilePath:t,markerPath:n,reason:`lockfile newer than install marker`}:{manager:e.manager,status:`ok`,lockfilePath:t,markerPath:n}}async function Pn(e){let t=await Fn({tag:`latest`,timeoutMs:e?.timeoutMs});return{latestVersion:t.version,error:t.error}}async function Fn(e){let t=e?.timeoutMs??3500,n=e.tag;try{let e=await pn(`https://registry.npmjs.org/%40fased%2Ffased/${encodeURIComponent(n)}`,{},Math.max(250,t));if(!e.ok)return{tag:n,version:null,error:`HTTP ${e.status}`};let r=await e.json();return{tag:n,version:typeof r?.version==`string`?r.version:null}}catch(e){return{tag:n,version:null,error:String(e)}}}function In(e,t){let n=Ln(e),r=Ln(t);return!n||!r?null:n.major===r.major?n.minor===r.minor?n.patch===r.patch?zn(n.prerelease,r.prerelease):n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1}function Ln(e){if(!e)return null;let t=Rn(e.trim()),n=/^v?([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(t);if(!n)return null;let[,r,i,a,o]=n;return!r||!i||!a?null:{major:Number.parseInt(r,10),minor:Number.parseInt(i,10),patch:Number.parseInt(a,10),prerelease:o?o.split(`.`).filter(Boolean):null}}function Rn(e){let t=e.trim(),n=/^([vV]?[0-9]+\.[0-9]+\.[0-9]+)\.beta(?:\.([0-9A-Za-z.-]+))?$/.exec(t);if(!n)return t;let r=n[1],i=n[2];return i?`${r}-beta.${i}`:`${r}-beta`}function zn(e,t){if(!e?.length&&!t?.length)return 0;if(!e?.length)return 1;if(!t?.length)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n==null&&i==null)return 0;if(n==null)return-1;if(i==null)return 1;if(n===i)continue;let a=/^[0-9]+$/.test(n),o=/^[0-9]+$/.test(i);return a&&o?Number.parseInt(n,10)<Number.parseInt(i,10)?-1:1:a&&!o?-1:!a&&o?1:n<i?-1:1}return 0}async function Bn(e){let t=e.timeoutMs??6e3,n=e.root?i.resolve(e.root):null;if(!n)return{root:null,installKind:`unknown`,packageManager:`unknown`,registry:e.includeRegistry?await Pn({timeoutMs:t}):void 0};let r=await kn(n),a=r&&i.resolve(r)===n,o=a?`git`:`package`,s=!a&&En(n)?`npm`:await On(n);return{root:n,installKind:o,packageManager:s,git:a?await An({root:n,timeoutMs:t,fetch:!!e.fetchGit}):void 0,deps:await Nn({root:n,manager:s}),registry:e.includeRegistry?await Pn({timeoutMs:t}):void 0}}const Vn=new Set([`fased`,`@fased/fased`]),Hn=[`../package.json`,`../../package.json`,`../../../package.json`,`./package.json`],Un=[`../build-info.json`,`../../build-info.json`,`./build-info.json`];function Wn(t,n,r={}){try{let i=e(t);for(let e of n)try{let t=i(e),n=t.version?.trim();if(!n||r.requirePackageName&&!Vn.has(t.name??``))continue;return n}catch{}return null}catch{return null}}function Gn(...e){for(let t of e){let e=t?.trim();if(e)return e}}function Kn(e){return Wn(e,Hn,{requirePackageName:!0})}function qn(e){return Wn(e,Un)}function Jn(e){return Kn(e)||qn(e)}function Yn(e=process.env,t=`dev`){return Gn(e.FASED_VERSION,e.FASED_SERVICE_VERSION,e.npm_package_version)??t}const Xn=typeof __FASED_VERSION__==`string`&&__FASED_VERSION__||process.env.FASED_BUNDLED_VERSION||Jn(import.meta.url)||`0.0.0`;function Zn(e,t={}){let n=e.registry?.latestVersion??null,r=n?In(Xn,n):null,i=r!=null&&r<0,a=(t.channel==null||t.channel===`dev`)&&e.installKind===`git`&&typeof e.git?.behind==`number`?e.git.behind:null,o=a!=null&&a>0;return{available:o||i,hasGitUpdate:o,hasRegistryUpdate:i,latestVersion:i?n:null,gitBehind:a}}function Qn(e,t={}){let n=Zn(e,t);if(!n.available)return null;let r=[];return n.hasGitUpdate&&n.gitBehind!=null&&r.push(`git behind ${n.gitBehind}`),n.hasRegistryUpdate&&n.latestVersion&&r.push(`npm ${n.latestVersion}`),`Update available${r.length>0?` (${r.join(` · `)})`:``}. Run: ${_e(`fased update`)}`}function $n(e,t={}){let n=[],r=()=>{if(e.registry?.latestVersion){let t=In(Xn,e.registry.latestVersion);t===0?n.push(`npm latest ${e.registry.latestVersion}`):t!=null&&t<0?n.push(`npm update ${e.registry.latestVersion}`):n.push(`npm latest ${e.registry.latestVersion} (local newer)`);return}e.registry?.error&&n.push(`npm latest unknown`)};if(e.installKind===`git`&&e.git){if(t.channel&&t.channel!==`dev`)n.push(`${t.channel} channel`),e.git.dirty===!0&&n.push(`dirty`);else{let t=e.git.branch?`git ${e.git.branch}`:`git`;n.push(t),e.git.upstream&&n.push(`↔ ${e.git.upstream}`),e.git.dirty===!0&&n.push(`dirty`),e.git.behind!=null&&e.git.ahead!=null&&(e.git.behind===0&&e.git.ahead===0?n.push(`up to date`):e.git.behind>0&&e.git.ahead===0?n.push(`behind ${e.git.behind}`):e.git.behind===0&&e.git.ahead>0?n.push(`ahead ${e.git.ahead}`):e.git.behind>0&&e.git.ahead>0&&n.push(`diverged (ahead ${e.git.ahead}, behind ${e.git.behind})`)),e.git.fetchOk===!1&&n.push(`fetch failed`)}r()}else n.push(e.packageManager===`unknown`?`pkg`:e.packageManager),r();return e.deps&&(e.deps.status===`ok`&&n.push(`deps ok`),e.deps.status===`missing`&&n.push(`deps missing`),e.deps.status===`stale`&&n.push(`deps stale`)),`Update: ${n.join(` · `)}`}function er(e){return e?.trim()||void 0}function tr(e){let t=e?.commands?.ownerDisplay;return t===`hash`?{ownerDisplay:`hash`,ownerDisplaySecret:er(e?.commands?.ownerDisplaySecret)}:{ownerDisplay:t,ownerDisplaySecret:void 0}}function nr(e,t=()=>_.randomBytes(32).toString(`hex`)){let n=tr(e);if(n.ownerDisplay!==`hash`||n.ownerDisplaySecret)return{config:e};let r=t();return{config:{...e,commands:{...e.commands,ownerDisplay:`hash`,ownerDisplaySecret:r}},generatedSecret:r}}var rr={blockedEverywhereKeys:`NODE_OPTIONS.NODE_PATH.PYTHONHOME.PYTHONPATH.PERL5LIB.PERL5OPT.RUBYLIB.RUBYOPT.BASH_ENV.ENV.BROWSER.GIT_EDITOR.GIT_EXTERNAL_DIFF.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_EXEC_PATH.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SEQUENCE_EDITOR.GIT_TEMPLATE_DIR.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.CC.CXX.CARGO_BUILD_RUSTC.CARGO_BUILD_RUSTC_WRAPPER.RUSTC_WRAPPER.CMAKE_C_COMPILER.CMAKE_CXX_COMPILER.SHELL.SHELLOPTS.PS4.GCONV_PATH.IFS.SSLKEYLOGFILE.JAVA_OPTS.JAVA_TOOL_OPTIONS._JAVA_OPTIONS.JDK_JAVA_OPTIONS.PYTHONBREAKPOINT.DOTNET_STARTUP_HOOKS.DOTNET_ADDITIONAL_DEPS.GLIBC_TUNABLES.MAVEN_OPTS.MAKEFLAGS.MFLAGS.SBT_OPTS.GRADLE_OPTS.ANT_OPTS.HGRCPATH.EXINIT.VIMINIT.MYVIMRC.GVIMINIT.LUA_INIT.LUA_INIT_5_1.LUA_INIT_5_2.LUA_INIT_5_3.LUA_INIT_5_4.EMACSLOADPATH.RUBYSHELL.GIT_HOOK_PATH.SVN_EDITOR.SVN_SSH.BZR_EDITOR.BZR_SSH.BZR_PLUGIN_PATH.SUDO_ASKPASS.JULIA_EDITOR.CONFIG_SITE.CONFIG_SHELL.CMAKE_TOOLCHAIN_FILE.CATALINA_OPTS.CORECLR_PROFILER.HELM_PLUGINS.PACKER_PLUGIN_PATH.VAGRANT_VAGRANTFILE.ERL_AFLAGS.ERL_FLAGS.ERL_ZFLAGS.ELIXIR_ERL_OPTIONS.R_ENVIRON.R_PROFILE.R_ENVIRON_USER.R_PROFILE_USER.HOSTALIASES`.split(`.`),blockedOverrideOnlyKeys:`HOME.GRADLE_USER_HOME.ZDOTDIR.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SSH_COMMAND.GIT_SSH.GIT_PROXY_COMMAND.GIT_ASKPASS.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.SSH_ASKPASS.LESSOPEN.LESSCLOSE.PAGER.MANPAGER.GIT_PAGER.EDITOR.VISUAL.FCEDIT.SUDO_EDITOR.PROMPT_COMMAND.HISTFILE.PERL5DB.PERL5DBCMD.OPENSSL_CONF.OPENSSL_ENGINES.PYTHONSTARTUP.WGETRC.CURL_HOME.CLASSPATH.CFLAGS.CGO_CFLAGS.CGO_LDFLAGS.GOFLAGS.MAKEFLAGS.MFLAGS.CORECLR_PROFILER_PATH.PHPRC.PHP_INI_SCAN_DIR.DENO_DIR.BUN_CONFIG_REGISTRY.YARN_RC_FILENAME.HTTP_PROXY.HTTPS_PROXY.ALL_PROXY.NO_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NODE_EXTRA_CA_CERTS.SSL_CERT_FILE.SSL_CERT_DIR.REQUESTS_CA_BUNDLE.CURL_CA_BUNDLE.DOCKER_HOST.DOCKER_TLS_VERIFY.DOCKER_CERT_PATH.PIP_INDEX_URL.PIP_PYPI_URL.PIP_EXTRA_INDEX_URL.PIP_CONFIG_FILE.PIP_FIND_LINKS.PIP_TRUSTED_HOST.UV_INDEX.UV_INDEX_URL.UV_PYTHON.UV_EXTRA_INDEX_URL.UV_DEFAULT_INDEX.DOCKER_CONTEXT.LIBRARY_PATH.LDFLAGS.CPATH.C_INCLUDE_PATH.CPLUS_INCLUDE_PATH.OBJC_INCLUDE_PATH.GOPROXY.GONOSUMCHECK.GONOSUMDB.GONOPROXY.GOPRIVATE.GOENV.GOPATH.HGRCPATH.PYTHONUSERBASE.RUSTC_WRAPPER.RUSTFLAGS.CARGO_HOME.VIRTUAL_ENV.LUA_PATH.LUA_CPATH.GEM_HOME.GEM_PATH.BUNDLE_GEMFILE.COMPOSER_HOME.CARGO_BUILD_RUSTC_WRAPPER.XDG_CONFIG_HOME.XDG_CONFIG_DIRS.AWS_CONFIG_FILE.KUBECONFIG.GOOGLE_APPLICATION_CREDENTIALS.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.HELM_HOME.ANSIBLE_CONFIG.ANSIBLE_LIBRARY.ANSIBLE_CALLBACK_PLUGINS.ANSIBLE_COLLECTIONS_PATH.ANSIBLE_CONNECTION_PLUGINS.ANSIBLE_FILTER_PLUGINS.ANSIBLE_INVENTORY_PLUGINS.ANSIBLE_LOOKUP_PLUGINS.ANSIBLE_MODULE_UTILS.ANSIBLE_REMOTE_TEMP.ANSIBLE_ROLES_PATH.ANSIBLE_STRATEGY_PLUGINS.R_LIBS_USER.TF_CLI_CONFIG_FILE.TF_PLUGIN_CACHE_DIR.AMQP_URL.AWS_ACCESS_KEY_ID.AWS_CONTAINER_CREDENTIALS_FULL_URI.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.AWS_SECRET_ACCESS_KEY.AWS_SECURITY_TOKEN.AWS_SESSION_TOKEN.AZURE_CLIENT_ID.AZURE_CLIENT_SECRET.DATABASE_URL.GH_TOKEN.GITHUB_TOKEN.GITLAB_TOKEN.MONGODB_URI.NODE_AUTH_TOKEN.NPM_TOKEN.REDIS_URL.SSH_AUTH_SOCK`.split(`.`),allowedInheritedOverrideOnlyKeys:`ALL_PROXY.AWS_CONFIG_FILE.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.CURL_CA_BUNDLE.DOCKER_CERT_PATH.DOCKER_CONTEXT.DOCKER_HOST.DOCKER_TLS_VERIFY.GIT_PAGER.GOOGLE_APPLICATION_CREDENTIALS.GRADLE_USER_HOME.HISTFILE.HOME.HTTPS_PROXY.HTTP_PROXY.KUBECONFIG.MANPAGER.NODE_EXTRA_CA_CERTS.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.PAGER.REQUESTS_CA_BUNDLE.SSH_AUTH_SOCK.SSL_CERT_DIR.SSL_CERT_FILE.ZDOTDIR`.split(`.`),blockedOverridePrefixes:[`GIT_CONFIG_`,`NPM_CONFIG_`,`CARGO_REGISTRIES_`,`TF_VAR_`],blockedPrefixes:[`DYLD_`,`LD_`,`BASH_FUNC_`]};const ir=/^[A-Za-z_][A-Za-z0-9_]*$/,ar=rr;function or(e){return Array.from(new Set(Array.from(e,e=>e.toUpperCase()))).toSorted((e,t)=>e.localeCompare(t))}const sr=or(ar.blockedEverywhereKeys??ar.blockedKeys??[]),cr=or(ar.blockedOverrideOnlyKeys??ar.blockedOverrideKeys??[]),lr=new Set(or(ar.allowedInheritedOverrideOnlyKeys??[])),ur=or([...sr,...cr.filter(e=>!lr.has(e))]),dr=Object.freeze(sr),fr=Object.freeze(or(ar.blockedPrefixes)),pr=Object.freeze(ur),mr=Object.freeze(or(ar.blockedPrefixes)),hr=Object.freeze(cr),gr=Object.freeze(or(ar.blockedOverridePrefixes??[]));Object.freeze([`TERM`,`LANG`,`LC_ALL`,`LC_CTYPE`,`LC_MESSAGES`,`COLORTERM`,`NO_COLOR`,`FORCE_COLOR`]);const _r=new Set(dr),vr=new Set(pr),yr=new Set(hr);function br(e,t){let n=e.trim();return!n||t?.portable&&!ir.test(n)?null:n}function xr(e){let t=br(e);if(!t)return!1;let n=t.toUpperCase();return _r.has(n)?!0:fr.some(e=>n.startsWith(e))}function Sr(e){let t=br(e);if(!t)return!1;let n=t.toUpperCase();return vr.has(n)?!0:mr.some(e=>n.startsWith(e))}function Cr(e){let t=br(e);if(!t)return!1;let n=t.toUpperCase();return yr.has(n)?!0:gr.some(e=>n.startsWith(e))}function wr(e){let t=e?.baseEnv??process.env,n=e?.overrides??void 0,r=e?.blockPathOverrides??!0,i={};for(let[e,n]of Object.entries(t)){if(typeof n!=`string`)continue;let t=br(e,{portable:!0});!t||Sr(t)||(i[t]=n)}if(!n)return i;for(let[e,t]of Object.entries(n)){if(typeof t!=`string`)continue;let n=br(e,{portable:!0});if(!n)continue;let a=n.toUpperCase();r&&a===`PATH`||xr(a)||Cr(a)||(i[n]=t)}return i}const Tr=new Set(`ALL_PROXY.ANTHROPIC_API_KEY.ANTHROPIC_OAUTH_TOKEN.BROWSER_EXECUTABLE_PATH.FASED_AGENT_DIR.FASED_ALLOW_INSECURE_PRIVATE_WS.FASED_ALLOW_PROJECT_LOCAL_BIN.FASED_BROWSER_EXECUTABLE_PATH.FASED_BROWSER_CONTROL_MODULE.FASED_BUNDLED_HOOKS_DIR.FASED_BUNDLED_PLUGINS_DIR.FASED_BUNDLED_SKILLS_DIR.FASED_CACHE_TRACE.FASED_CACHE_TRACE_FILE.FASED_CACHE_TRACE_MESSAGES.FASED_CACHE_TRACE_PROMPT.FASED_CACHE_TRACE_SYSTEM.FASED_CONFIG_PATH.FASED_GATEWAY_PASSWORD.FASED_GATEWAY_PORT.FASED_GATEWAY_SECRET.FASED_GATEWAY_TOKEN.FASED_GATEWAY_URL.FASED_HOME.FASED_LIVE_ANTHROPIC_KEY.FASED_LIVE_ANTHROPIC_KEYS.FASED_LIVE_GEMINI_KEY.FASED_LIVE_OPENAI_KEY.FASED_MPM_CATALOG_PATHS.FASED_NODE_EXEC_FALLBACK.FASED_NODE_EXEC_HOST.FASED_OAUTH_DIR.FASED_PINNED_PYTHON.FASED_PINNED_WRITE_PYTHON.FASED_PLUGIN_CATALOG_PATHS.FASED_PROFILE.FASED_RAW_STREAM.FASED_RAW_STREAM_PATH.FASED_SHOW_SECRETS.FASED_SKIP_BROWSER_CONTROL_SERVER.FASED_STATE_DIR.FASED_TEST_TAILSCALE_BINARY.HTTP_PROXY.HTTPS_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.OPENAI_API_KEY.OPENAI_API_KEYS.PI_CODING_AGENT_DIR.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH.UV_PYTHON`.split(`.`)),Er=[`_BASE_URL`],Dr=[`ANTHROPIC_API_KEY_`,`CLAWHUB_`,`FASED_CLAWHUB_`,`FASEDHUB_`,`FASED_DISABLE_`,`FASED_SKIP_`,`FASED_UPDATE_`,`OPENAI_API_KEY_`];function Or(e){return xr(e)||Cr(e)}function kr(e){return!1}function Ar(e){let t=e.toUpperCase();return Or(t)||Tr.has(t)||Dr.some(e=>t.startsWith(e))||Er.some(e=>t.endsWith(e))}function jr(e){let t;try{t=n.readFileSync(e.filePath,`utf8`)}catch(t){return e.quiet||(t&&typeof t==`object`&&`code`in t?String(t.code):void 0)!==`ENOENT`&&console.warn(`[dotenv] Failed to read ${e.filePath}: ${String(t)}`),null}let r;try{r=v.parse(t)}catch(t){return e.quiet||console.warn(`[dotenv] Failed to parse ${e.filePath}: ${String(t)}`),null}let i=[];for(let[t,n]of Object.entries(r)){let r=br(t,{portable:!0});!r||e.shouldBlockKey(r)||i.push({key:r,value:n})}return{filePath:e.filePath,entries:i}}function Mr(e,t){let n=jr({filePath:e,shouldBlockKey:Ar,quiet:t?.quiet??!0});if(n)for(let{key:e,value:t}of n.entries)process.env[e]===void 0&&(process.env[e]=t)}function Nr(e){let t=new Set(Object.keys(process.env)),n=new Map,r=new Map;for(let i of e)for(let{key:e,value:a}of i.entries){if(t.has(e))continue;let o=r.get(e);if(o){if(o.value!==a){let t=`${o.filePath}\u0000${i.filePath}`,r=n.get(t);r?r.keys.add(e):n.set(t,{keptPath:o.filePath,ignoredPath:i.filePath,keys:new Set([e])})}continue}r.set(e,{value:a,filePath:i.filePath}),process.env[e]===void 0&&(process.env[e]=a)}for(let e of n.values()){let t=[...e.keys].toSorted();t.length!==0&&console.warn(`[dotenv] Conflicting values in ${e.keptPath} and ${e.ignoredPath} for ${t.join(`, `)}; keeping ${e.keptPath}.`)}}function Pr(e){let t=e?.quiet??!0,n=e?.stateEnvPath??i.join(bn(process.env),`.env`),r=i.join(x(process.env,p.homedir),`.fased`,`.env`),a=process.env.FASED_STATE_DIR?.trim()!==void 0&&i.resolve(n)!==i.resolve(r),o=[jr({filePath:n,shouldBlockKey:kr,quiet:t})];a||o.push(jr({filePath:i.join(x(process.env,p.homedir),`.config`,`fased`,`gateway.env`),shouldBlockKey:kr,quiet:t})),Nr(o.filter(e=>e!==null))}function Fr(e){let t=e?.quiet??!0;Mr(i.join(process.cwd(),`.env`),{quiet:t}),Pr({quiet:t})}const Ir=[`true`,`1`,`yes`,`on`],Lr=[`false`,`0`,`no`,`off`],Rr=new Set(Ir),zr=new Set(Lr);function Br(e,t={}){if(typeof e==`boolean`)return e;if(typeof e!=`string`)return;let n=e.trim().toLowerCase();if(!n)return;let r=t.truthy??Ir,i=t.falsy??Lr,a=r===Ir?Rr:new Set(r),o=i===Lr?zr:new Set(i);if(a.has(n))return!0;if(o.has(n))return!1}function Vr(e){return Br(e)===!0}const Hr=15e3;let Ur;function Wr(e){let t=wr({baseEnv:e}),n=p.homedir().trim();return n?t.HOME=n:delete t.HOME,delete t.ZDOTDIR,t}function Gr(e){return typeof e!=`number`||!Number.isFinite(e)?Hr:Math.max(0,e)}function Kr(){if(Ur!==void 0)return Ur;try{let e=n.readFileSync(`/etc/shells`,`utf8`).split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&i.isAbsolute(e));Ur=new Set(e)}catch{Ur=null}return Ur}function qr(e){return!i.isAbsolute(e)||i.normalize(e)!==e?!1:Kr()?.has(e)===!0}function Jr(e){let t=e.SHELL?.trim();return t&&qr(t)?t:`/bin/sh`}function Yr(e){return e.exec(e.shell,[`-l`,`-c`,`env -0`],{encoding:`buffer`,timeout:e.timeoutMs,maxBuffer:2097152,env:e.env,stdio:[`ignore`,`pipe`,`pipe`]})}function Xr(e){let t=new Map,n=e.toString(`utf8`).split(`\0`);for(let e of n){if(!e)continue;let n=e.indexOf(`=`);if(n<=0)continue;let r=e.slice(0,n),i=e.slice(n+1);r&&t.set(r,i)}return t}function Zr(e){let t=e.exec??c,n=Gr(e.timeoutMs),r=Jr(e.env),i=Wr(e.env);try{return{ok:!0,shellEnv:Xr(Yr({shell:r,env:i,exec:t,timeoutMs:n}))}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function Qr(e){let t=e.logger??console;if(!e.enabled)return{ok:!0,applied:[],skippedReason:`disabled`};if(e.expectedKeys.some(t=>!!e.env[t]?.trim()))return{ok:!0,applied:[],skippedReason:`already-has-keys`};let n=Zr({env:e.env,timeoutMs:e.timeoutMs,exec:e.exec});if(!n.ok)return t.warn(`[fased] shell env fallback failed: ${n.error}`),{ok:!1,error:n.error,applied:[]};let r=[];for(let t of e.expectedKeys){if(e.env[t]?.trim())continue;let i=n.shellEnv.get(t);i?.trim()&&(e.env[t]=i,r.push(t))}return{ok:!0,applied:r}}function $r(e){return Vr(e.FASED_LOAD_SHELL_ENV)}function ei(e){return Vr(e.FASED_DEFER_SHELL_ENV_FALLBACK)}function ti(e){let t=e.FASED_SHELL_ENV_TIMEOUT_MS?.trim();if(!t)return Hr;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):Hr}const ni=new Set([`ENOENT`,`ENOTDIR`]),ri=/^\.\.(?:[\\/]|$)/u;function ii(e){let t=i.win32.normalize(e);return t.startsWith(`\\\\?\\`)&&(t=t.slice(4),t.toUpperCase().startsWith(`UNC\\`)&&(t=`\\\\${t.slice(4)}`)),t.replaceAll(`/`,`\\`).toLowerCase()}function ai(e){return!!(e&&typeof e==`object`&&`code`in e)}function oi(e){return ai(e)&&typeof e.code==`string`&&ni.has(e.code)}function si(e,t){let n=i.resolve(e),r=i.resolve(t);if(process.platform===`win32`){let e=ii(n),t=ii(r),a=i.win32.relative(e,t);return a===``||!ri.test(a)&&!i.win32.isAbsolute(a)}let a=i.relative(n,r);return a===``||!ri.test(a)&&!i.isAbsolute(a)}r.O_WRONLY|r.O_CREAT|r.O_TRUNC|(process.platform!==`win32`&&`O_NOFOLLOW`in r?r.O_NOFOLLOW:0);function ci(e,t){let n=i.resolve(e),r=i.resolve(t),a=i.relative(n,r);return a===``||!a.startsWith(`..${i.sep}`)&&a!==`..`&&!i.isAbsolute(a)}$e(import.meta.url),String.raw`\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD)\b\s*[=:]\s*(["']?)([^\s"'\\]+)\1`,String.raw`"(?:apiKey|token|secret|password|passwd|accessToken|refreshToken)"\s*:\s*"([^"]+)"`,String.raw`--(?:api[-_]?key|token|secret|password|passwd)\s+(["']?)([^\s"']+)\1`,String.raw`Authorization\s*[:=]\s*Bearer\s+([A-Za-z0-9._\-+=]+)`,String.raw`\bBearer\s+([A-Za-z0-9._\-+=]{18,})\b`,String.raw`-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]+?-----END [A-Z ]*PRIVATE KEY-----`,String.raw`\b(sk-[A-Za-z0-9_-]{8,})\b`,String.raw`\b(ghp_[A-Za-z0-9]{20,})\b`,String.raw`\b(github_pat_[A-Za-z0-9_]{20,})\b`,String.raw`\b(xox[baprs]-[A-Za-z0-9-]{10,})\b`,String.raw`\b(xapp-[A-Za-z0-9-]{10,})\b`,String.raw`\b(gsk_[A-Za-z0-9_-]{10,})\b`,String.raw`\b(AIza[0-9A-Za-z\-_]{20,})\b`,String.raw`\b(pplx-[A-Za-z0-9_-]{10,})\b`,String.raw`\b(npm_[A-Za-z0-9]{10,})\b`,String.raw`\bbot(\d{6,}:[A-Za-z0-9_-]{20,})\b`,String.raw`\b(\d{6,}:[A-Za-z0-9_-]{20,})\b`,Object.freeze({allowFinalSymlinkForUnlink:!1,allowFinalHardlinkForUnlink:!1}),Object.freeze({allowFinalSymlinkForUnlink:!0,allowFinalHardlinkForUnlink:!0});function li(e){let t=i.resolve(e.rootPath),n=i.resolve(e.absolutePath),r=e.rootCanonicalPath?i.resolve(e.rootCanonicalPath):mi(t),a=si(t,n),o=di({absolutePath:n,outsideLexicalCanonicalPath:a?void 0:mi(n)});if(fi({skipLexicalRootCheck:e.skipLexicalRootCheck,lexicalInside:a,canonicalOutsideLexicalPath:o,rootCanonicalPath:r,boundaryLabel:e.boundaryLabel,rootPath:t,absolutePath:n}),!a){let i=o;return vi({boundaryLabel:e.boundaryLabel,rootCanonicalPath:r,candidatePath:i,absolutePath:n}),pi({absolutePath:n,canonicalPath:i,rootPath:t,rootCanonicalPath:r,kind:hi(n,!1)})}return ui({params:e,absolutePath:n,rootPath:t,rootCanonicalPath:r})}function ui(e){let t=i.relative(e.rootPath,e.absolutePath).split(i.sep).filter(Boolean),r=e.params.policy?.allowFinalSymlinkForUnlink===!0,a=e.rootCanonicalPath,o=e.rootPath,s=!1;for(let c=0;c<t.length;c+=1){let l=t[c]??``,u=c===t.length-1;o=i.join(o,l);let d;try{d=n.lstatSync(o)}catch(n){if(oi(n)){let n=t.slice(c);a=i.resolve(a,...n),vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}throw n}if(!d.isSymbolicLink()){a=i.resolve(a,l),vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});continue}if(r&&u){s=!0,a=i.resolve(a,l),vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}let f=Ci(o);if(!si(e.rootCanonicalPath,f))throw bi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,symlinkPath:o});a=f,o=f}vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});let c=hi(e.absolutePath,s);return pi({absolutePath:e.absolutePath,canonicalPath:a,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,kind:c})}function di(e){return e.outsideLexicalCanonicalPath??e.absolutePath}function fi(e){if(!(e.skipLexicalRootCheck||e.lexicalInside)&&!si(e.rootCanonicalPath,e.canonicalOutsideLexicalPath))throw yi({boundaryLabel:e.boundaryLabel,rootPath:e.rootPath,absolutePath:e.absolutePath})}function pi(e){return{absolutePath:e.absolutePath,canonicalPath:e.canonicalPath,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,relativePath:_i(e.rootCanonicalPath,e.canonicalPath),exists:e.kind.exists,kind:e.kind.kind}}function mi(e){let t=i.resolve(e),r=t,a=[];for(;!Si(r)&&!n.existsSync(r);){a.unshift(i.basename(r));let e=i.dirname(r);if(e===r)break;r=e}if(!n.existsSync(r))return t;try{let e=i.resolve(n.realpathSync(r));return a.length===0?e:i.resolve(e,...a)}catch{return t}}function hi(e,t){try{return{exists:!0,kind:gi(t?n.lstatSync(e):n.statSync(e))}}catch(e){if(oi(e))return{exists:!1,kind:`missing`};throw e}}function gi(e){return e.isFile()?`file`:e.isDirectory()?`directory`:e.isSymbolicLink()?`symlink`:`other`}function _i(e,t){let n=i.relative(i.resolve(e),i.resolve(t));return!n||n===`.`||n.startsWith(`..`)||i.isAbsolute(n)?``:n}function vi(e){if(!si(e.rootCanonicalPath,e.candidatePath))throw Error(`Path resolves outside ${e.boundaryLabel} (${xi(e.rootCanonicalPath)}): ${xi(e.absolutePath)}`)}function yi(e){return Error(`Path escapes ${e.boundaryLabel} (${xi(e.rootPath)}): ${xi(e.absolutePath)}`)}function bi(e){return Error(`Symlink escapes ${e.boundaryLabel} (${xi(e.rootCanonicalPath)}): ${xi(e.symlinkPath)}`)}function xi(e){let t=p.homedir();return e.startsWith(t)?`~${e.slice(t.length)}`:e}function Si(e){return i.parse(e).root===e}function Ci(e){try{return i.resolve(n.realpathSync(e))}catch(t){if(!oi(t))throw t;let r=n.readlinkSync(e);return mi(i.resolve(i.dirname(e),r))}}function wi(e){return e===0||e===0n}function Ti(e,t,n=process.platform){return e.ino===t.ino?e.dev===t.dev?!0:n===`win32`&&(wi(e.dev)||wi(t.dev)):!1}function Ei(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`ENOENT`||t===`ENOTDIR`||t===`ELOOP`}function Di(e,t){return Ti(e,t)}function Oi(e){let t=e.ioFs??n,r=t.constants.O_RDONLY|(typeof t.constants.O_NOFOLLOW==`number`?t.constants.O_NOFOLLOW:0),i=null;try{if(e.rejectPathSymlink&&t.lstatSync(e.filePath).isSymbolicLink())return{ok:!1,reason:`validation`};let n=e.resolvedPath??t.realpathSync(e.filePath),a=t.lstatSync(n);if(!a.isFile()||e.rejectHardlinks&&a.nlink>1||e.maxBytes!==void 0&&a.size>e.maxBytes)return{ok:!1,reason:`validation`};i=t.openSync(n,r);let o=t.fstatSync(i);if(!o.isFile()||e.rejectHardlinks&&o.nlink>1||e.maxBytes!==void 0&&o.size>e.maxBytes||!Di(a,o))return{ok:!1,reason:`validation`};let s={ok:!0,path:n,fd:i,stat:o};return i=null,s}catch(e){return Ei(e)?{ok:!1,reason:`path`,error:e}:{ok:!1,reason:`io`,error:e}}finally{i!==null&&t.closeSync(i)}}function ki(e){return typeof e.openSync==`function`&&typeof e.closeSync==`function`&&typeof e.fstatSync==`function`&&typeof e.lstatSync==`function`&&typeof e.realpathSync==`function`&&typeof e.readFileSync==`function`&&typeof e.constants==`object`&&e.constants!==null}function Ai(e){let t=e.ioFs??n,r=i.resolve(e.absolutePath),a,o;try{let t=li({absolutePath:r,rootPath:e.rootPath,rootCanonicalPath:e.rootRealPath,boundaryLabel:e.boundaryLabel,skipLexicalRootCheck:e.skipLexicalRootCheck});a=t.canonicalPath,o=t.rootCanonicalPath}catch(e){return{ok:!1,reason:`validation`,error:e}}let s=Oi({filePath:r,resolvedPath:a,rejectHardlinks:e.rejectHardlinks??!0,maxBytes:e.maxBytes,ioFs:t});return s.ok?{ok:!0,path:s.path,fd:s.fd,stat:s.stat,rootRealPath:o}:s}const ji=`fased.plugin.json`,Mi=[ji];function E(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[]}function Ni(e){if(!w(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e)continue;let i=E(r);i.length!==0&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Pi(e){if(!w(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=typeof n==`string`?n.trim():``,i=typeof r==`string`?r.trim():``;!e||!i||(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Fi(e){if(!w(e))return;let t=E(e.memoryEmbeddingProviders),n=E(e.speechProviders),r=E(e.realtimeTranscriptionProviders),i=E(e.realtimeVoiceProviders),a=E(e.mediaUnderstandingProviders),o=E(e.imageGenerationProviders),s=E(e.videoGenerationProviders),c=E(e.musicGenerationProviders),l=E(e.webFetchProviders),u=E(e.webSearchProviders),d=E(e.tools),f={...t.length>0?{memoryEmbeddingProviders:t}:{},...n.length>0?{speechProviders:n}:{},...r.length>0?{realtimeTranscriptionProviders:r}:{},...i.length>0?{realtimeVoiceProviders:i}:{},...a.length>0?{mediaUnderstandingProviders:a}:{},...o.length>0?{imageGenerationProviders:o}:{},...s.length>0?{videoGenerationProviders:s}:{},...c.length>0?{musicGenerationProviders:c}:{},...l.length>0?{webFetchProviders:l}:{},...u.length>0?{webSearchProviders:u}:{},...d.length>0?{tools:d}:{}};return Object.keys(f).length>0?f:void 0}function Ii(e){if(!w(e))return;let t=E(e.modelPrefixes),n=E(e.modelPatterns),r={...t.length>0?{modelPrefixes:t}:{},...n.length>0?{modelPatterns:n}:{}};return Object.keys(r).length>0?r:void 0}function Li(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!w(n))continue;let e=typeof n.provider==`string`?n.provider.trim():``,r=typeof n.method==`string`?n.method.trim():``,i=typeof n.choiceId==`string`?n.choiceId.trim():``;if(!e||!r||!i)continue;let a=typeof n.choiceLabel==`string`?n.choiceLabel.trim():``,o=typeof n.choiceHint==`string`?n.choiceHint.trim():``,s=typeof n.assistantPriority==`number`&&Number.isFinite(n.assistantPriority)?n.assistantPriority:void 0,c=n.assistantVisibility===`manual-only`||n.assistantVisibility===`visible`?n.assistantVisibility:void 0,l=E(n.deprecatedChoiceIds),u=typeof n.groupId==`string`?n.groupId.trim():``,d=typeof n.groupLabel==`string`?n.groupLabel.trim():``,f=typeof n.groupHint==`string`?n.groupHint.trim():``,p=typeof n.optionKey==`string`?n.optionKey.trim():``,m=typeof n.cliFlag==`string`?n.cliFlag.trim():``,h=typeof n.cliOption==`string`?n.cliOption.trim():``,g=typeof n.cliDescription==`string`?n.cliDescription.trim():``,_=E(n.onboardingScopes).filter(e=>e===`text-inference`||e===`image-generation`);t.push({provider:e,method:r,choiceId:i,...a?{choiceLabel:a}:{},...o?{choiceHint:o}:{},...s===void 0?{}:{assistantPriority:s},...c?{assistantVisibility:c}:{},...l.length>0?{deprecatedChoiceIds:l}:{},...u?{groupId:u}:{},...d?{groupLabel:d}:{},...f?{groupHint:f}:{},...p?{optionKey:p}:{},...m?{cliFlag:m}:{},...h?{cliOption:h}:{},...g?{cliDescription:g}:{},..._.length>0?{onboardingScopes:_}:{}})}return t.length>0?t:void 0}function Ri(e){if(!w(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e||!w(r))continue;let i=w(r.schema)?r.schema:null;if(!i)continue;let a=w(r.uiHints)?r.uiHints:void 0,o=typeof r.label==`string`?r.label.trim():``,s=typeof r.description==`string`?r.description.trim():``,c=E(r.preferOver);t[e]={schema:i,...a?{uiHints:a}:{},...o?{label:o}:{},...s?{description:s}:{},...c.length>0?{preferOver:c}:{}}}return Object.keys(t).length>0?t:void 0}function zi(e){for(let t of Mi){let r=i.join(e,t);if(n.existsSync(r))return r}return i.join(e,ji)}function Bi(e){let t=zi(e),r=Ai({absolutePath:t,rootPath:e,boundaryLabel:`plugin root`});if(!r.ok)return r.reason===`path`?{ok:!1,error:`plugin manifest not found: ${t}`,manifestPath:t}:{ok:!1,error:`unsafe plugin manifest path: ${t} (${r.reason})`,manifestPath:t};let i;try{i=m.parse(n.readFileSync(r.fd,`utf-8`))}catch(e){return{ok:!1,error:`failed to parse plugin manifest: ${String(e)}`,manifestPath:t}}finally{n.closeSync(r.fd)}if(!w(i))return{ok:!1,error:`plugin manifest must be an object`,manifestPath:t};let a=typeof i.id==`string`?i.id.trim():``;if(!a)return{ok:!1,error:`plugin manifest requires id`,manifestPath:t};let o=w(i.configSchema)?i.configSchema:null;if(!o)return{ok:!1,error:`plugin manifest requires configSchema`,manifestPath:t};let s=i.enabledByDefault===!0,c=E(i.legacyPluginIds),l=E(i.autoEnableWhenConfiguredProviders),u=typeof i.kind==`string`?i.kind:void 0,d=typeof i.name==`string`?i.name.trim():void 0,f=typeof i.description==`string`?i.description.trim():void 0,p=typeof i.version==`string`?i.version.trim():void 0,h=E(i.channels),g=E(i.providers),_=Ii(i.modelSupport),v=Ni(i.providerAuthEnvVars),ee=Pi(i.providerAuthAliases),te=Li(i.providerAuthChoices),y=E(i.skills),ne=Fi(i.contracts),re=Ri(i.channelConfigs),ie;return w(i.uiHints)&&(ie=i.uiHints),{ok:!0,manifest:{id:a,configSchema:o,...s?{enabledByDefault:s}:{},...c.length>0?{legacyPluginIds:c}:{},...l.length>0?{autoEnableWhenConfiguredProviders:l}:{},kind:u,channels:h,providers:g,modelSupport:_,providerAuthEnvVars:v,providerAuthAliases:ee,providerAuthChoices:te,skills:y,name:d,description:f,version:p,uiHints:ie,contracts:ne,channelConfigs:re},manifestPath:t}}const Vi=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`];function Hi(e){if(e)return e.fased}const Ui={memory:`memory-core`};function Wi(e){return Ui[e]}function Gi(e,t){let n={entry:!1,install:!1,allowlist:!1,loadPath:!1,memorySlot:!1},r=e.plugins??{},i=r.entries;if(i&&t in i){let{[t]:e,...r}=i;i=Object.keys(r).length>0?r:void 0,n.entry=!0}let a=r.installs,o=a?.[t];if(a&&t in a){let{[t]:e,...r}=a;a=Object.keys(r).length>0?r:void 0,n.install=!0}let s=r.allow;Array.isArray(s)&&s.includes(t)&&(s=s.filter(e=>e!==t),s.length===0&&(s=void 0),n.allowlist=!0);let c=r.load;if(o?.source===`path`&&o.sourcePath){let e=o.sourcePath,t=c?.paths;if(Array.isArray(t)&&t.includes(e)){let r=t.filter(t=>t!==e);c=r.length>0?{...c,paths:r}:void 0,n.loadPath=!0}}let l=r.slots;l?.memory===t&&(l={...l,memory:Wi(`memory`)},n.memorySlot=!0),l&&Object.keys(l).length===0&&(l=void 0);let u={...r,entries:i,installs:a,allow:s,load:c,slots:l};return u.entries===void 0&&delete u.entries,u.installs===void 0&&delete u.installs,u.allow===void 0&&delete u.allow,u.load===void 0&&delete u.load,u.slots===void 0&&delete u.slots,{config:{...e,plugins:Object.keys(u).length>0?u:void 0},actions:n}}const Ki=new Set([`__proto__`,`prototype`,`constructor`]);function qi(e){return Ki.has(e)}const Ji=`main`,Yi=/^[a-z0-9][a-z0-9_-]{0,63}$/i,Xi=/[^a-z0-9_-]+/g,Zi=/^-+/,Qi=/-+$/;function D(e){let t=(e??``).trim();return t?Yi.test(t)?t.toLowerCase():t.toLowerCase().replace(Xi,`-`).replace(Zi,``).replace(Qi,``).slice(0,64)||Ji:Ji}var $i=class extends Error{constructor(e){super(ia(e)),this.name=`DuplicateAgentDirError`,this.duplicates=e}};function ea(e){let t=i.resolve(e);return process.platform===`darwin`||process.platform===`win32`?t.toLowerCase():t}function ta(e){let t=new Set,n=Array.isArray(e.agents?.list)?e.agents?.list:[],r=n.find(e=>e?.default)?.id??n[0]?.id??Ji;t.add(D(r));for(let e of n)e?.id&&t.add(D(e.id));let i=e.bindings;if(Array.isArray(i))for(let e of i){let n=e?.agentId;typeof n==`string`&&n.trim()&&t.add(D(n))}return[...t]}function na(e,t,n){let r=D(t),a=(Array.isArray(e.agents?.list)?e.agents?.list.find(e=>D(e.id)===r)?.agentDir:void 0)?.trim();if(a)return T(a);let o=n?.env??process.env,s=Ve(o,n?.homedir??(()=>x(o,p.homedir)));return i.join(s,`agents`,r,`agent`)}function ra(e,t){let n=new Map;for(let r of ta(e)){let i=na(e,r,t),a=ea(i),o=n.get(a);o?o.agentIds.push(r):n.set(a,{agentDir:i,agentIds:[r]})}return[...n.values()].filter(e=>e.agentIds.length>1)}function ia(e){return[`Duplicate agentDir detected (multi-agent config).`,`Each agent must have a unique agentDir; sharing it causes auth/session state collisions and token invalidation.`,``,`Conflicts:`,...e.map(e=>`- ${e.agentDir}: ${e.agentIds.map(e=>`"${e}"`).join(`, `)}`),``,`Fix: remove the shared agents.list[].agentDir override (or give each agent its own directory).`,`If you want to share credentials, copy auth-profiles.json instead of sharing the entire agentDir.`].join(`
|
|
2
|
-
`)}async function aa(e,t){let n=`${e}.bak`;await t.unlink(`${n}.4`).catch(()=>{});for(let e=3;e>=1;--e)await t.rename(`${n}.${e}`,`${n}.${e+1}`).catch(()=>{});await t.rename(n,`${n}.1`).catch(()=>{})}function oa(e){if(typeof e==`string`)return e.trim()||void 0;if(!(!e||typeof e!=`object`))return e.primary?.trim()||void 0}const O=[`off`,`minimal`,`low`,`medium`,`high`],sa=[...O,`xhigh`],ca=[`openai/gpt-5.6`,`openai/gpt-5.6-terra`,`openai/gpt-5.6-luna`,`openai/gpt-5.5`,`openai/gpt-5.4`,`openai/gpt-5.4-mini`,`openai/gpt-5.4-nano`,`openai-codex/gpt-5.6-sol`,`openai-codex/gpt-5.6-terra`,`openai-codex/gpt-5.6-luna`,`openai-codex/gpt-5.5`,`openai-codex/gpt-5.4`,`openai-codex/gpt-5.4-mini`,`openai-codex/gpt-5.3-codex-spark`,`github-copilot/gpt-5.5`,`github-copilot/gpt-5.4`,`github-copilot/gpt-5.4-mini`,`github-copilot/gpt-5.3-codex-spark`],la=new Set(ca.map(e=>e.toLowerCase())),ua=new Set(ca.map(e=>e.split(`/`)[1]?.toLowerCase()).filter(e=>!!e));function da(e){if(!e)return``;let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t}function fa(e){if(!e)return;let t=e.trim().toLowerCase(),n=t.replace(/[\s_-]+/g,``);if(n===`xhigh`||n===`extrahigh`)return`xhigh`;if(t===`off`)return`off`;if([`on`,`enable`,`enabled`].includes(t))return`low`;if([`min`,`minimal`].includes(t))return`minimal`;if([`low`,`thinkhard`,`think-hard`,`think_hard`].includes(t))return`low`;if([`mid`,`med`,`medium`,`thinkharder`,`think-harder`,`harder`].includes(t))return`medium`;if([`high`,`ultra`,`ultrathink`,`think-hard`,`thinkhardest`,`highest`,`max`].includes(t))return`high`;if(t===`think`)return`minimal`}function pa(e,t){let n=t?.trim().toLowerCase();if(!n)return!1;let r=e?.trim().toLowerCase();return r?la.has(`${r}/${n}`):ua.has(n)}function ma(e){let t=new Set,n=[];for(let r of e??[]){let e=fa(r);!e||t.has(e)||(t.add(e),n.push(e))}return n}function ha(e,t){return pa(e,t)?[...sa]:[...O]}function ga(e){let t=e?.trim().toLowerCase()??``;return t.includes(`fable-5`)||t.includes(`opus-4-8`)||t.includes(`opus-4.8`)||t.includes(`opus-4-6`)||t.includes(`opus-4.6`)||t.includes(`opus-4-7`)||t.includes(`opus-4.7`)||t.includes(`sonnet-5`)||t.includes(`sonnet-4-6`)||t.includes(`sonnet-4.6`)||t.includes(`sonnet-4-7`)||t.includes(`sonnet-4.7`)}function _a(e,t){let n=da(e);return n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?{thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:n===`anthropic`?{thinkingMode:ga(t)?`anthropic-adaptive`:`anthropic-thinking-budget`,reasoningBudgetSupported:!ga(t)}:n===`google`||n===`google-gemini-cli`?{thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:n===`zai`?{thinkingMode:`zai-binary`,reasoningBudgetSupported:!1}:n===`qwen`||n===`qwen-coding-plan`?{thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}:n===`moonshot`||n===`kimi-coding`?{thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}:{thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}}function va(e,t){let n=da(e),r=t?.trim().toLowerCase()??``;return!n||!r?!1:n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?/^gpt-5(?:[.-]|$)/.test(r):n===`anthropic`?r.startsWith(`claude-`)||r.includes(`claude-`):n===`google`||n===`google-gemini-cli`?r.startsWith(`gemini-`):n===`zai`?r.startsWith(`glm-`):n===`qwen`||n===`qwen-coding-plan`?r.includes(`qwen`):n===`moonshot`||n===`kimi-coding`?r.includes(`kimi`):n===`minimax`||n===`minimax-cn`?r.includes(`minimax-m2`):[`openrouter`,`vercel-ai-gateway`,`opencode`,`huggingface`,`venice`,`together`,`synthetic`,`litellm`].includes(n)?/(gpt-5|claude-|gemini-|grok-|qwen|kimi|glm-|deepseek-r1|reasoning|thinking)/.test(r):!1}function ya(e){let t=ma(e.capabilities?.thinkingLevels),n=t.length>0||typeof e.capabilities?.thinkingMode==`string`||typeof e.capabilities?.defaultThinkingLevel==`string`;if(e.capabilities?.fixedReasoning===!0&&!n||!(e.reasoning===!0||e.reasoning!==!1&&va(e.provider,e.model))&&!n)return null;let r=_a(e.provider,e.model),i=r.thinkingMode===`zai-binary`?[`off`,`low`]:ha(e.provider,e.model),a=t.length>0?t:i,o=fa(e.capabilities?.defaultThinkingLevel);return{thinkingLevels:a,defaultThinkingLevel:o&&a.includes(o)?o:a.includes(`low`)?`low`:a[0]??`off`,thinkingMode:e.capabilities?.thinkingMode??r.thinkingMode,reasoningBudgetSupported:e.capabilities?.reasoningBudgetSupported??r.reasoningBudgetSupported}}const ba=`cloudflare-ai-gateway`,xa=`claude-sonnet-5`;`${ba}${xa}`;const Sa={input:0,output:0,cacheRead:0,cacheWrite:0},Ca={tools:!0,json:!0},wa={thinkingLevels:[...O],defaultThinkingLevel:`low`,reasoningBudgetSupported:!0},Ta=[{id:xa,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],cost:Sa,contextWindow:1e6,maxTokens:128e3,capabilities:{...Ca,...wa,thinkingMode:`anthropic-adaptive`}},{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],cost:Sa,contextWindow:1e6,maxTokens:128e3,capabilities:{...Ca,...wa,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1}},{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],cost:Sa,contextWindow:2e5,maxTokens:64e3,capabilities:{...Ca,...wa,thinkingMode:`anthropic-thinking-budget`}}],Ea=Ta.map(e=>e.id).map(e=>`${ba}/${e}`);function Da(e){let t=e?.id?.trim()||xa,n=Ta.find(e=>e.id===t)??Ta[0];return{id:t,name:e?.name??n.name,api:`anthropic-messages`,reasoning:e?.reasoning??n.reasoning,input:e?.input??[...n.input],cost:{...n.cost},contextWindow:n.contextWindow,maxTokens:n.maxTokens,capabilities:n.capabilities?{...n.capabilities}:void 0}}function Oa(e=ba){return Object.fromEntries(Ta.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const ka=`openai/gpt-oss-120b`;`${ka}`;const k={tools:!0,json:!0},Aa=[{id:ka,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.15,output:.75,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:1.69,output:3.38,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V4-Flash`,name:`DeepSeek V4 Flash`,reasoning:!1,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:.14,output:.28,cacheRead:0,cacheWrite:0},capabilities:k},{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:204800,maxTokens:8192,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},capabilities:k},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:8192,cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3.6-35B-A3B`,name:`Qwen3.6 35B A3B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.15,output:.95,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3 Coder Next`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},capabilities:{tools:!0,json:!1}},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:1.3,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.14,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-4-26B-A4B-it`,name:`Gemma 4 26B A4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.13,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.1,output:.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.269,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen3 VL 235B A22B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:8192,cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.09,output:.58,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:0,cacheWrite:0},capabilities:{tools:!1,json:!0}},{id:`inclusionAI/Ling-2.6-1T`,name:`Ling 2.6 1T`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},capabilities:k}],ja=Aa.map(e=>e.id).map(e=>`huggingface/${e}`);function Ma(e){return{...e.capabilities?{...e.capabilities}:{},...e.reasoning?{fixedReasoning:!0}:{}}}function Na(e){let t=Ma(e);return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:t}}function Pa(e=`huggingface`){return Object.fromEntries(Aa.map(t=>[`${e}/${t.id}`.toLowerCase(),Ma(t)]))}const Fa=`default`;`${Fa}`;const Ia=[{id:Fa,name:`LiteLLM proxy default`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,cost:{input:0,output:0,cacheRead:0,cacheWrite:0},capabilities:{}}],La=Ia.map(e=>e.id).map(e=>`litellm/${e}`);function Ra(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:!1},capabilities:e.capabilities?{...e.capabilities}:void 0}}function za(e=`litellm`){return Object.fromEntries(Ia.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Ba=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`,`gpt-5.3-codex-spark`,`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`minimax-m2.7`,`glm-5.2`,`kimi-k2.6`],Va=Ba.map(e=>`opencode/${e}`);function Ha(e){let t=e.trim().toLowerCase();return t.startsWith(`claude-`)?{provider:`anthropic`,model:t}:t.startsWith(`gemini-`)?{provider:`google`,model:t}:t.startsWith(`glm-`)?{provider:`zai`,model:t}:t.startsWith(`kimi-`)?{provider:`moonshot`,model:t}:t.startsWith(`qwen`)?{provider:`qwen`,model:t}:t.startsWith(`gpt-`)?{provider:`openai`,model:t}:{provider:`opencode`,model:t}}function Ua(e){let t=Ha(e),n=ya({provider:t.provider,model:t.model,reasoning:!0});return{tools:!0,json:!0,...n?{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}:{}}}function Wa(e){return Object.fromEntries(e.map(e=>[e,Ua(e.replace(/^opencode\//,``))]))}const Ga=`hf:MiniMaxAI/MiniMax-M2.5`;`${Ga}`;const Ka={input:0,output:0,cacheRead:0,cacheWrite:0},A={tools:!0,json:!0},qa=[{id:`hf:zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,capabilities:A},{id:Ga,name:`MiniMax M2.5`,reasoning:!1,input:[`text`],contextWindow:191488,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-4.7-Flash`,name:`GLM-4.7 Flash`,reasoning:!1,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4`,name:`NVIDIA Nemotron 3 Super 120B`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-4.7`,name:`GLM-4.7`,reasoning:!1,input:[`text`],contextWindow:202752,maxTokens:65536,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:159e3,maxTokens:8192,capabilities:A},{id:`hf:openai/gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:nvidia/Kimi-K2.5-NVFP4`,name:`Kimi K2.5 NVFP4`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3 235B A22B Thinking 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A}],Ja=qa.map(e=>e.id);function Ya(e){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:{...Ka},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function Xa(e=`synthetic`){return Object.fromEntries(qa.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Za=`moonshotai/Kimi-K2.6`;`${Za}`;const j={tools:!0,json:!0},Qa={tools:!1,json:!1},$a=[{id:Za,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:16384,cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:1.2},capabilities:{...j,video:!0}},{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:2.8,cacheRead:.5,cacheWrite:2.8},capabilities:j},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.3},capabilities:j},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1.4,output:4.4,cacheRead:1.4,cacheWrite:1.4},capabilities:j},{id:`zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1,output:3.2,cacheRead:1,cacheWrite:1},capabilities:j},{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,reasoning:!0,input:[`text`],contextWindow:1e6,maxTokens:32768,cost:{input:.5,output:3,cacheRead:.5,cacheWrite:.5},capabilities:Qa},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.6,output:3.6,cacheRead:.6,cacheWrite:.6},capabilities:j},{id:`Qwen/Qwen3.5-9B`,name:`Qwen3.5 9B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.1,output:.15,cacheRead:.1,cacheWrite:.1},capabilities:j},{id:`openai/gpt-oss-120b`,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},capabilities:j},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.05,output:.2,cacheRead:.05,cacheWrite:.05},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:512e3,maxTokens:32768,cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:2.1},capabilities:j},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:32768,cost:{input:3,output:7,cacheRead:3,cacheWrite:3},capabilities:Qa},{id:`deepseek-ai/DeepSeek-V3.1`,name:`DeepSeek V3.1`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:32768,cost:{input:.6,output:1.7,cacheRead:.6,cacheWrite:.6},capabilities:Qa},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct FP8`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:32768,cost:{input:2,output:2,cacheRead:2,cacheWrite:2},capabilities:j},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.6,cacheRead:.2,cacheWrite:.2},capabilities:j},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:1.2,cacheRead:.5,cacheWrite:.5},capabilities:Qa},{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B Instruct Turbo`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.88,output:.88,cacheRead:.88,cacheWrite:.88},capabilities:j},{id:`essentialai/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:.15,cacheWrite:.15},capabilities:j},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.5,cacheRead:.2,cacheWrite:.2},capabilities:j},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:.06,cacheWrite:.06},capabilities:{tools:!1,json:!0}}],eo=$a.map(e=>e.id).map(e=>`together/${e}`);function to(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function no(e=`together`){return Object.fromEntries($a.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const ro=`zai-org-glm-5-1`;`${ro}`;const M={thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},N={tools:!0,json:!0},io={tools:!0,json:!1},ao=[{id:ro,name:`GLM 5.1`,reasoning:!0,input:[`text`],cost:{input:1.75,output:5.5,cacheRead:.325,cacheWrite:0},contextWindow:2e5,maxTokens:24e3,capabilities:{...N,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`venice-uncensored-1-2`,name:`Venice Uncensored 1.2`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.9,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:N},{id:`qwen-3-6-plus`,name:`Qwen 3.6 Plus Uncensored`,reasoning:!0,input:[`text`,`image`],cost:{input:.625,output:3.75,cacheRead:.0625,cacheWrite:.78},contextWindow:1e6,maxTokens:65536,capabilities:{...N,video:!0,fixedReasoning:!0}},{id:`qwen3-5-397b-a17b`,name:`Qwen 3.5 397B`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768,capabilities:{...N,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`qwen3-235b-a22b-thinking-2507`,name:`Qwen 3 235B A22B Thinking`,reasoning:!0,input:[`text`],cost:{input:.45,output:3.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...N,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`qwen3-coder-480b-a35b-instruct-turbo`,name:`Qwen 3 Coder 480B Turbo`,reasoning:!1,input:[`text`],cost:{input:.35,output:1.5,cacheRead:.04,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:N},{id:`qwen3-vl-235b-a22b`,name:`Qwen3 VL 235B`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384,capabilities:N},{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],cost:{input:1.73,output:3.796,cacheRead:.33,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...N,fixedReasoning:!0}},{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,input:[`text`],cost:{input:.17,output:.35,cacheRead:.028,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...N,fixedReasoning:!0}},{id:`kimi-k2-6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],cost:{input:.85,output:4.655,cacheRead:.22,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...N,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,reasoning:!0,input:[`text`,`image`],cost:{input:6,output:30,cacheRead:.6,cacheWrite:7.5},contextWindow:1e6,maxTokens:128e3,capabilities:{...N,fixedReasoning:!0}},{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,reasoning:!0,input:[`text`,`image`],cost:{input:3.6,output:18,cacheRead:.36,cacheWrite:4.5},contextWindow:1e6,maxTokens:64e3,capabilities:{...N,fixedReasoning:!0}},{id:`openai-gpt-55`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],cost:{input:6.25,output:37.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`openai-gpt-55-pro`,name:`GPT-5.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:37.5,output:225,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`medium`,...M}},{id:`openai-gpt-54`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],cost:{input:3.13,output:18.8,cacheRead:.313,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`openai-gpt-54-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],cost:{input:.9375,output:5.625,cacheRead:.09375,cacheWrite:0},contextWindow:4e5,maxTokens:128e3,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`gemini-3-1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.5,cacheWrite:.5},contextWindow:1e6,maxTokens:32768,capabilities:{...N,audio:!0,video:!0,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`grok-4-20`,name:`Grok 4.20`,reasoning:!0,input:[`text`,`image`],cost:{input:1.42,output:2.83,cacheRead:.23,cacheWrite:0},contextWindow:2e6,maxTokens:128e3,capabilities:{...N,fixedReasoning:!0}},{id:`minimax-m27`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],cost:{input:.375,output:1.5,cacheRead:.075,cacheWrite:0},contextWindow:198e3,maxTokens:32768,capabilities:{...io,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`openai-gpt-oss-120b`,name:`OpenAI GPT OSS 120B`,reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...io,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`google-gemma-4-31b-it`,name:`Google Gemma 4 31B Instruct`,reasoning:!0,input:[`text`,`image`],cost:{input:.175,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192,capabilities:{...N,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:.75,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...N,thinkingLevels:[`off`,`high`],defaultThinkingLevel:`high`,...M}}],oo=ao.map(e=>e.id).map(e=>`venice/${e}`);function so(e){let t=e.capabilities,n=!!t?.thinkingLevels?.length;return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:n},capabilities:t?{...t}:void 0}}function co(e=`venice`){return Object.fromEntries(ao.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const lo=[{id:`openai/gpt-5.5`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`web-search`,`implicit-caching`,`file-input`,`vision`]},{id:`openai/gpt-5.4`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-mini`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-nano`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`web-search`,`vision`,`file-input`]},{id:`anthropic/claude-fable-5`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-opus-4.8`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-sonnet-5`,contextWindow:1e6,maxTokens:128e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-haiku-4.5`,contextWindow:2e5,maxTokens:64e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`]},{id:`google/gemini-3.5-flash`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-pro-preview`,contextWindow:1e6,maxTokens:64e3,tags:[`file-input`,`tool-use`,`reasoning`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-flash-lite`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-4.3`,contextWindow:1e6,maxTokens:1e6,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-build-0.1`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`,`implicit-caching`]},{id:`mistral/mistral-medium-3.5`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`minimax/minimax-m2.7`,contextWindow:204800,maxTokens:131e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`]},{id:`minimax/minimax-m2.7-highspeed`,contextWindow:204800,maxTokens:131100,tags:[`reasoning`,`tool-use`,`implicit-caching`,`vision`]},{id:`moonshotai/kimi-k2.6`,contextWindow:262e3,maxTokens:262e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`]}],uo=lo.map(e=>e.id),fo=uo.map(e=>`vercel-ai-gateway/${e}`),po={anthropic:`Anthropic`,google:`Google`,minimax:`MiniMax`,mistral:`Mistral`,moonshotai:`Moonshot`,openai:`OpenAI`,xai:`xAI`};function mo(e){let t=e.trim().replace(/^vercel-ai-gateway\//,``).toLowerCase();return lo.find(e=>e.id.toLowerCase()===t)}function ho(e){let[t,...n]=e.trim().replace(/^vercel-ai-gateway\//,``).split(`/`),r=n.join(`/`);switch(t){case`anthropic`:return{provider:`anthropic`,model:r};case`google`:return{provider:`google`,model:r};case`minimax`:return{provider:`minimax`,model:r};case`moonshotai`:return{provider:`moonshot`,model:r};case`openai`:return{provider:`openai`,model:r};case`xai`:return{provider:`xai`,model:r};default:return{provider:`vercel-ai-gateway`,model:e}}}function go(e){let t=mo(e);if(!t)return;let n=new Set(t.tags.map(e=>e.toLowerCase())),r=ho(t.id),i=n.has(`reasoning`)?ya({provider:r.provider,model:r.model,reasoning:!0}):null;return{tools:n.has(`tool-use`),...i?{thinkingLevels:i.thinkingLevels,defaultThinkingLevel:i.defaultThinkingLevel,thinkingMode:i.thinkingMode,reasoningBudgetSupported:i.reasoningBudgetSupported}:{}}}function _o(e){return Object.fromEntries(e.flatMap(e=>{let t=go(e);return t?[[e,t]]:[]}))}function vo(e){let[t,...n]=e.split(`/`),r=po[t??``]??t,i=n.join(`/`);return!r||!i?e:`${r} ${i.replace(/\bapi\b/gi,`API`).replace(/\bgpt\b/gi,`GPT`).replace(/\bxai\b/gi,`xAI`).replace(/[._-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}`}function yo(e){let t=mo(e),n=new Set(t?.tags.map(e=>e.toLowerCase())??[]),r=go(e);return{id:e,name:vo(e),reasoning:n.has(`reasoning`),input:n.has(`vision`)?[`text`,`image`]:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:t?.contextWindow??2e5,maxTokens:t?.maxTokens??8192,api:`openai-completions`,...r?{capabilities:r}:{}}}const bo={tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},xo={...bo,audio:!0,video:!0},So=[{id:`mimo-v2.5-pro`,name:`Xiaomi MiMo V2.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:bo},{id:`mimo-v2.5`,name:`Xiaomi MiMo V2.5`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:xo},{id:`mimo-v2-pro`,name:`Xiaomi MiMo V2 Pro`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:bo},{id:`mimo-v2-omni`,name:`Xiaomi MiMo V2 Omni`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:128e3,capabilities:xo},{id:`mimo-v2-flash`,name:`Xiaomi MiMo V2 Flash`,reasoning:!0,input:[`text`],cost:{input:.11,output:.32,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:64e3,capabilities:bo}],Co=So.map(e=>e.id);function wo(e){let t=So.find(t=>t.id===e);if(!t)throw Error(`Unknown Xiaomi model: ${e}`);return{...t,input:[...t.input],cost:{...t.cost},capabilities:t.capabilities?{...t.capabilities}:void 0}}function To(e=`xiaomi`){return Object.fromEntries(So.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Eo=`openai.anthropic.chutes.ollama.lmstudio.vllm.minimax.moonshot.google.xai.mistral.volcengine.byteplus.openrouter.qwen.zai.qianfan.copilot.ai-gateway.opencode-zen.xiaomi.synthetic.together.huggingface.venice.litellm.cloudflare-ai-gateway.custom`.split(`.`);new Map(Eo.map((e,t)=>[e,t]));const Do=`openai`,Oo=`openai-codex`,ko=`anthropic`,Ao=`chutes`,jo=`ollama`,Mo=`lmstudio`,No=`vllm`,Po=`minimax`,Fo=`minimax-cn`,Io=`minimax-portal`,P=`moonshot`,Lo=`kimi-coding`,Ro=`google`,zo=`google-gemini-cli`,Bo=`mistral`,Vo=`volcengine`,Ho=`volcengine-coding`,Uo=`volcengine-plan`,Wo=`byteplus`,Go=`byteplus-coding`,Ko=`byteplus-plan`,qo=`openrouter`,Jo=`qwen`,Yo=`qwen-coding-plan`,Xo=`qianfan`,Zo=`github-copilot`,Qo=`copilot-proxy`,$o=`vercel-ai-gateway`,es=`opencode`,ts=`xiaomi`,ns=`synthetic`,rs=`together`,is=`huggingface`,as=`venice`,os=`litellm`,ss=`custom`,cs=[`gpt-5.6`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`],ls=[`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`],us=[`gpt-5.3-codex`,`gpt-5.3-codex-spark`,`gpt-5.4`,`gpt-5.4-mini`],ds=cs.map(e=>`${Do}/${e}`),fs=ls.map(e=>`${Oo}/${e}`),ps=[`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`].map(e=>`${ko}/${e}`),ms=[`google/gemma-4-31B-turbo-TEE`,`Qwen/Qwen3-32B-TEE`,`deepseek-ai/DeepSeek-V3.2-TEE`,`zai-org/GLM-5.1-TEE`,`moonshotai/Kimi-K2.6-TEE`,`Qwen/Qwen3.6-27B-TEE`,`Qwen/Qwen3.5-397B-A17B-TEE`,`zai-org/GLM-5-TEE`,`Qwen/Qwen3-235B-A22B-Thinking-2507-TEE`,`zai-org/GLM-5.2-TEE`],hs=ms.map(e=>`${Ao}/${e}`),gs=[],_s=[],vs=[],ys=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`],bs=ys.map(e=>`${Po}/${e}`),xs=ys.map(e=>`${Fo}/${e}`),Ss=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`].map(e=>`${Io}/${e}`),Cs=[`kimi-k2.6`,`kimi-k2.5`].map(e=>`${P}/${e}`),ws=[`kimi-for-coding`].map(e=>`${Lo}/${e}`),Ts=[`gemini-3.5-flash`,`gemini-3.1-pro-preview`,`gemini-3-flash-preview`,`gemini-3.1-flash-lite`],Es=Ts.map(e=>`${Ro}/${e}`),Ds=Ts.map(e=>`${zo}/${e}`),Os=[`grok-4.5`,`grok-4.3`,`grok-build-0.1`].map(e=>`xai/${e}`),ks=[`mistral-medium-3.5`,`mistral-small-2603`,`mistral-large-2512`,`devstral-2512`,`ministral-14b-2512`,`ministral-8b-2512`,`ministral-3b-2512`].map(e=>`${Bo}/${e}`),As=[`doubao-seed-2-0-pro-260215`,`doubao-seed-2-0-lite-260215`,`doubao-seed-2-0-mini-260215`,`doubao-seed-2-0-code-preview-260215`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Vo}/${e}`),js=[`ark-code-latest`,`doubao-seed-2.0-code`,`doubao-seed-2.0-pro`,`doubao-seed-2.0-lite`,`doubao-seed-code`,`minimax-m2.5`,`glm-4.7`,`deepseek-v3.2`,`kimi-k2.5`].flatMap(e=>[`${Ho}/${e}`,`${Uo}/${e}`]),Ms=[`seed-2-0-pro-260328`,`seed-2-0-lite-260228`,`seed-2-0-mini-260215`,`seed-2-0-code-preview-260328`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Wo}/${e}`),Ns=[`ark-code-latest`,`dola-seed-2.0-pro`,`dola-seed-2.0-lite`,`dola-seed-2.0-code`,`bytedance-seed-code`,`glm-5.1`,`glm-4.7`,`kimi-k2.5`,`gpt-oss-120b`].flatMap(e=>[`${Go}/${e}`,`${Ko}/${e}`]),Ps=`openai/gpt-5.6-sol,openai/gpt-5.6-terra,openai/gpt-5.6-luna,openai/gpt-5.5,openai/gpt-5.4,openai/gpt-5.4-mini,openai/gpt-5.4-nano,anthropic/claude-fable-5,anthropic/claude-opus-4.8,anthropic/claude-sonnet-5,anthropic/claude-haiku-4.5,google/gemini-3.5-flash,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google/gemini-3.1-flash-lite,x-ai/grok-4.5,x-ai/grok-4.3,x-ai/grok-build-0.1,mistralai/mistral-medium-3-5,mistralai/mistral-small-2603,mistralai/mistral-large-2512,mistralai/devstral-2512,qwen/qwen3.7-max,qwen/qwen3.7-plus,qwen/qwen3.6-flash,z-ai/glm-5.2,deepseek/deepseek-v4-pro,deepseek/deepseek-v4-flash,minimax/minimax-m2.7,moonshotai/kimi-k2.6`.split(`,`).map(e=>`${qo}/${e}`),Fs=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`].map(e=>`${Jo}/${e}`),Is=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`,`deepseek-v4-pro`,`deepseek-v4-flash`,`kimi-k2.7-code`,`glm-5.2`,`MiniMax-M2.5`].map(e=>`${Yo}/${e}`),Ls=[`glm-5.2`,`glm-5.1`,`glm-5`,`glm-5-turbo`,`glm-5v-turbo`,`glm-4.7`,`glm-4.7-flashx`,`glm-4.7-flash`].map(e=>`zai/${e}`),Rs={tools:!0,json:!0,thinkingLevels:[`off`,`low`],defaultThinkingLevel:`low`,thinkingMode:`zai-binary`,reasoningBudgetSupported:!1},zs=Object.fromEntries(Ls.map(e=>[e,e.endsWith(`/glm-5v-turbo`)?{...Rs,video:!0}:Rs])),Bs=[`ernie-5.1`,`ernie-5.0`,`ernie-5.0-thinking-latest`,`ernie-5.0-thinking-preview`,`ernie-x1.1-preview`,`ernie-x1.1`,`ernie-x1-turbo-32k`,`deepseek-v4-pro`,`deepseek-v4-flash`,`deepseek-v3.2-think`,`deepseek-v3.2`].map(e=>`${Xo}/${e}`),Vs=new Set([`qianfan/ernie-5.1`,`qianfan/ernie-5.0`,`qianfan/ernie-5.0-thinking-latest`,`qianfan/ernie-5.0-thinking-preview`,`qianfan/ernie-x1.1-preview`,`qianfan/ernie-x1.1`,`qianfan/ernie-x1-turbo-32k`]),Hs=new Set([`qianfan/deepseek-v4-pro`,`qianfan/deepseek-v4-flash`,`qianfan/deepseek-v3.2-think`,`qianfan/deepseek-v3.2`]),Us=Object.fromEntries(Bs.map(e=>[e,{tools:!0,json:!0,...Vs.has(e)?{fixedReasoning:!0}:Hs.has(e)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!0}:{}}])),Ws=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-4.1`,`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`,`claude-haiku-4.5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`grok-build-0.1`],Gs=Ws.map(e=>`${Zo}/${e}`),Ks=[...Ws],qs=Ks.map(e=>`${Qo}/${e}`);`${Zo}`;const Js=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`]),Ys=new Set([`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`]),Xs=new Set([`claude-haiku-4.5`]),Zs=new Set([`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`]);function Qs(e){return Object.fromEntries(e.map(e=>{let t=e.slice(e.indexOf(`/`)+1);return[e,{tools:!0,json:!0,...Js.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:Ys.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:Xs.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:Zs.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{}}]}))}const $s={...Qs(Gs),...Qs(qs)},ec=_o(fo),tc=Wa(Va),nc=Co.map(e=>`${ts}/${e}`);`${ts}`;const rc=To(ts),ic=Ja.map(e=>`${ns}/${e}`);`${ns}`;const ac=Xa(ns),oc=no(rs),sc=Pa(is),cc=co(as),lc=za(os),uc=Oa(ba),dc=[];function fc(e){let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{route:e.slice(0,t).trim(),model:e.slice(t+1).trim()}}function pc(e,t){let n=t.trim().toLowerCase(),r=(e,r)=>n.startsWith(`${e}/`)?{provider:r,model:t.slice(e.length+1)}:null;return r(`openai`,Do)??r(`anthropic`,ko)??r(`google`,Ro)??r(`x-ai`,`xai`)??r(`xai`,`xai`)??r(`mistralai`,Bo)??r(`minimax`,Po)??r(`qwen`,Jo)??r(`moonshotai`,P)??r(`z-ai`,`zai`)??r(`zai-org`,`zai`)??r(`glm`,`zai`)??{provider:n.includes(`claude-`)||n.includes(`claude_`)?ko:n.includes(`gemini-`)?Ro:n.includes(`qwen`)?Jo:n.includes(`kimi`)?P:n.includes(`glm-`)?`zai`:e,model:t}}function mc(e){let t=pc(e.route,e.model),n=ya({provider:t.provider,model:t.model,reasoning:e.reasoning});if(n)return{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}}function hc(e){let t=fc(e);if(t)return mc({route:t.route,model:t.model})}function gc(e){return Object.fromEntries(e.map(e=>[e.toLowerCase(),hc(e)??{}]))}function F(e,t){let n=gc(e);for(let[e,r]of Object.entries(t))n[e.toLowerCase()]={...n[e.toLowerCase()],...r};return n}const _c=[...O],vc={"anthropic/claude-fable-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-opus-4-8":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-sonnet-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-haiku-4-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}},yc=Object.fromEntries(ms.map(e=>[`${Ao}/${e}`,{tools:!0,json:!0,...mc({route:Ao,model:e,reasoning:!0}),...e===`moonshotai/Kimi-K2.6-TEE`?{video:!0}:{}}])),bc=[...O],xc=Object.fromEntries([...bs,...xs,...Ss].map(e=>[e,{tools:!0,thinkingLevels:bc,defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}])),Sc=Object.fromEntries([...Cs,...ws].map(e=>[e,{tools:!0,...e===`${P}/kimi-k2.6`?{video:!0}:{},thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}])),Cc=Object.fromEntries([...Es,...Ds].map(e=>[e,{tools:!0,json:!0,audio:!0,video:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}])),wc={"xai/grok-4.5":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-4.3":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-build-0.1":{tools:!0,json:!0}},Tc=[`off`,`high`],Ec=Object.fromEntries(ks.map(e=>[e,{tools:!0,json:!0,...e===`mistral/mistral-medium-3.5`||e===`mistral/mistral-small-2603`?{thinkingLevels:[...Tc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),Dc=[`minimal`,`low`,`medium`,`high`],Oc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),kc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Ac=Object.fromEntries([...As,...js].map(e=>[e,{tools:!0,json:!0,...Oc.has(e)?{thinkingLevels:[...Dc],defaultThinkingLevel:`medium`,thinkingMode:`volcengine-reasoning-effort`,reasoningBudgetSupported:!1}:{},...kc.has(e)?{video:!0}:{}}])),jc=[`off`,`high`],Mc=new Set([`byteplus/seed-2-0-pro-260328`,`byteplus/seed-2-0-lite-260228`,`byteplus/seed-2-0-mini-260215`,`byteplus/seed-2-0-code-preview-260328`,`byteplus-coding/dola-seed-2.0-pro`,`byteplus-plan/dola-seed-2.0-pro`,`byteplus-coding/dola-seed-2.0-lite`,`byteplus-plan/dola-seed-2.0-lite`,`byteplus-coding/dola-seed-2.0-code`,`byteplus-plan/dola-seed-2.0-code`,`byteplus-coding/bytedance-seed-code`,`byteplus-plan/bytedance-seed-code`]),Nc=Object.fromEntries([...Ms,...Ns].map(e=>[e,{tools:!0,json:!0,...Mc.has(e)?{thinkingLevels:[...jc],defaultThinkingLevel:`high`,thinkingMode:`byteplus-thinking-type`,reasoningBudgetSupported:!1}:{}}])),Pc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`]),Fc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`,`openrouter/qwen/qwen3.7-max`,`openrouter/qwen/qwen3.7-plus`,`openrouter/qwen/qwen3.6-flash`]),Ic=new Set([`openrouter/mistralai/mistral-medium-3-5`,`openrouter/mistralai/mistral-small-2603`]),Lc=new Set([`openrouter/minimax/minimax-m2.7`]),Rc=new Set([`openrouter/deepseek/deepseek-v4-pro`,`openrouter/deepseek/deepseek-v4-flash`]),zc=new Set([`openrouter/openai/gpt-5.6-sol`,`openrouter/openai/gpt-5.6-terra`,`openrouter/openai/gpt-5.6-luna`,`openrouter/openai/gpt-5.5`,`openrouter/openai/gpt-5.4`,`openrouter/openai/gpt-5.4-mini`,`openrouter/openai/gpt-5.4-nano`]),Bc=new Set([`openrouter/x-ai/grok-4.5`,`openrouter/x-ai/grok-4.3`]),Vc=Object.fromEntries(Ps.map(e=>[e,{tools:!0,json:!0,...Pc.has(e)?{audio:!0}:{},...Fc.has(e)?{video:!0}:{},...Ic.has(e)?{thinkingLevels:[...Tc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Lc.has(e)?{thinkingLevels:[...bc],defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}:{},...Rc.has(e)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}:{},...zc.has(e)?{thinkingLevels:[...sa],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Bc.has(e)?{thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),Hc=new Set([`qwen-coding-plan/kimi-k2.7-code`,`qwen-coding-plan/glm-5.2`,`qwen-coding-plan/MiniMax-M2.5`]),Uc=Object.fromEntries([...Fs,...Is].map(e=>[e,{tools:!0,json:!0,...Hc.has(e)?{}:{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}}])),Wc=[{id:`openai`,label:`OpenAI`,priority:1,hint:`OpenAI sign-in + API key`,methods:[{id:`openai-codex`,route:Oo,kind:`oauth`,label:`Sign in`,hint:`Open the OpenAI sign-in URL, finish login in the browser, then Fased completes the OAuth flow.`},{id:`openai-api-key`,route:Do,kind:`api-key`,label:`API key`}],models:{recommended:[...ds,...fs],routeRules:{[Do]:[`${Do}/*`],[Oo]:[`${Oo}/*`]}},modelCapabilities:gc([...ds,...fs])},{id:`anthropic`,label:`Anthropic`,priority:2,hint:`Claude Code OAuth + setup-token + API key`,methods:[{id:`anthropic-oauth`,route:ko,kind:`oauth`,label:`Sign in (Claude Code)`,hint:`Claude or Console account; Pro, Max, Team, Enterprise, or Console access`,buttonLabel:`Sign in`},{id:`token`,route:ko,kind:`token`,label:`Token (setup-token)`,hint:"run `claude setup-token` elsewhere, then paste the token here",buttonLabel:`Paste token`},{id:`apiKey`,route:ko,kind:`api-key`,label:`API key`}],models:{recommended:[...ps],routeRules:{[ko]:[`${ko}/*`]}},modelCapabilities:F(ps,vc)},{id:`chutes`,label:`Chutes`,priority:3,hint:`Sign in + API key`,methods:[{id:`chutes`,route:Ao,kind:`oauth`,label:`Sign in`,hint:`Requires a Chutes OAuth app client id. Enter the cid, then Fased generates the Chutes sign-in URL.`,buttonLabel:`Sign in`},{id:`chutes-api-key`,route:Ao,kind:`api-key`,label:`API key`}],models:{recommended:[...hs],routeRules:{[Ao]:[`${Ao}/*`]}},modelCapabilities:F(hs,yc)},{id:`ollama`,label:`Ollama`,priority:4,hint:`Local, cloud, or hybrid Ollama through the native API`,modelProviderIds:[jo],methods:[{id:`ollama`,route:jo,kind:`manual`,label:`Ollama native URL + model`,hint:`Use the native Ollama base URL, for example http://127.0.0.1:11434. Do not use /v1.`,buttonLabel:`Configure`}],models:{recommended:gs,dynamic:!0,operatorCatalog:!0,routeRules:{[jo]:[`${jo}/*`]}},modelCapabilities:gc(gs)},{id:`lmstudio`,label:`LM Studio`,priority:4,hint:`Local LM Studio server on localhost:1234`,modelProviderIds:[Mo],methods:[{id:`lmstudio`,route:Mo,kind:`manual`,label:`LM Studio URL + model`,hint:`Use http://127.0.0.1:1234/v1, optional API token, and a model key from LM Studio.`,buttonLabel:`Configure`}],models:{recommended:_s,dynamic:!0,operatorCatalog:!0,routeRules:{[Mo]:[`${Mo}/*`]}},modelCapabilities:gc(_s)},{id:`vllm`,label:`vLLM-compatible`,priority:4,hint:`OpenAI-compatible local server: vLLM, SGLang, TGI, LocalAI, or FastChat`,modelProviderIds:[No],methods:[{id:`vllm`,route:No,kind:`manual`,label:`vLLM-compatible URL + model`,hint:`Enter the /v1 base URL, API key or local placeholder, and served model ID for vLLM, SGLang, TGI, LocalAI, or FastChat.`,buttonLabel:`Configure`}],models:{recommended:vs,dynamic:!0,operatorCatalog:!0,routeRules:{[No]:[`${No}/*`]}},modelCapabilities:gc(vs)},{id:`minimax`,label:`MiniMax`,priority:5,hint:`MiniMax OAuth + API key`,modelProviderIds:[Po,Fo,Io],methods:[{id:`minimax-portal`,route:Io,kind:`oauth`,label:`Sign in`,hint:`Global or CN endpoint; uses MiniMax portal sign-in`,setupRequirement:`Requires MiniMax portal/coding-plan access. Choose Global or CN, then open the approval URL and approve before the code expires.`,buttonLabel:`Sign in`},{id:`minimax-api`,route:Po,kind:`api-key`,label:`API key`},{id:`minimax-api-key-cn`,route:Fo,kind:`api-key`,label:`API key (CN)`,hint:`China endpoint (api.minimaxi.com)`},{id:`minimax-api-lightning`,route:Po,configProviderId:`minimax-lightning`,statusRoute:Po,kind:`api-key`,label:`Highspeed API key`,hint:`Fast M2.7 tier`}],models:{recommended:[...bs,...xs,...Ss],routeRules:{[Po]:[`${Po}/*`],[Fo]:[`${Fo}/*`],[Io]:[`${Io}/*`]}},modelCapabilities:F([...bs,...xs,...Ss],xc)},{id:`moonshot`,label:`Moonshot AI`,priority:6,hint:`Kimi API + Kimi Code`,modelProviderIds:[P,Lo],methods:[{id:`moonshot-api-key`,route:P,kind:`api-key`,label:`Kimi API key (.ai)`,hint:`Kimi Open Platform endpoint (api.moonshot.ai)`},{id:`moonshot-api-key-cn`,route:P,configProviderId:`moonshot-cn`,statusRoute:P,kind:`api-key`,label:`Kimi API key (.cn)`,hint:`China endpoint (api.moonshot.cn)`},{id:`kimi-code-api-key`,route:Lo,kind:`api-key`,label:`Kimi Code API key (subscription)`,hint:`Kimi Code membership endpoint (api.kimi.com/coding)`}],models:{recommended:[...Cs,...ws],routeRules:{[P]:[`${P}/*`],[Lo]:[`${Lo}/*`]}},modelCapabilities:F([...Cs,...ws],Sc)},{id:`google`,label:`Google`,priority:7,hint:`Gemini API key + OAuth`,routeAliases:[`gemini`],modelProviderIds:[Ro,`gemini`,zo],methods:[{id:`gemini-api-key`,route:Ro,kind:`api-key`,label:`Gemini API key`},{id:`google-gemini-cli`,route:zo,kind:`oauth`,label:`Sign in (Gemini CLI)`,hint:`Unofficial flow; review account-risk warning before use`,setupRequirement:`Requires gemini-cli installed on the gateway machine, or GEMINI_CLI_OAUTH_CLIENT_ID set before sign-in.`}],models:{recommended:[...Es,...Ds],routeRules:{[Ro]:[`${Ro}/*`,`gemini/*`],[zo]:[`${zo}/*`]}},modelCapabilities:F([...Es,...Ds],Cc)},{id:`xai`,label:`xAI (Grok)`,priority:8,hint:`Grok API key or xAI account sign-in`,methods:[{id:`xai-oauth`,route:`xai`,kind:`oauth`,label:`xAI sign-in`,hint:`Browser sign-in for eligible xAI/Grok accounts`,buttonLabel:`Sign in`},{id:`xai-device-code`,route:`xai`,kind:`device`,label:`xAI device code`,hint:`Remote-friendly sign-in for eligible xAI/Grok accounts`,buttonLabel:`Device code`},{id:`xai-api-key`,route:`xai`,kind:`api-key`,label:`xAI API key`}],models:{recommended:[...Os],routeRules:{xai:[`xai/*`]}},modelCapabilities:F(Os,wc)},{id:`mistral`,label:`Mistral AI`,priority:9,hint:`Mistral API key`,methods:[{id:`mistral-api-key`,route:Bo,kind:`api-key`,label:`Mistral API key`}],models:{recommended:[...ks],routeRules:{[Bo]:[`${Bo}/*`]}},modelCapabilities:F(ks,Ec)},{id:`volcengine`,label:`Volcano Engine`,priority:10,hint:`Ark API key + Coding Plan`,modelProviderIds:[Vo,Ho,Uo],methods:[{id:`volcengine-api-key`,route:Vo,kind:`api-key`,label:`Volcano Engine API key`}],models:{recommended:[...As,...js],routeRules:{[Vo]:[`${Vo}/*`],[Ho]:[`${Ho}/*`],[Uo]:[`${Uo}/*`]}},modelCapabilities:F([...As,...js],Ac)},{id:`byteplus`,label:`BytePlus`,priority:11,hint:`ModelArk API key + Coding Plan`,modelProviderIds:[Wo,Go,Ko],methods:[{id:`byteplus-api-key`,route:Wo,kind:`api-key`,label:`BytePlus API key`}],models:{recommended:[...Ms,...Ns],routeRules:{[Wo]:[`${Wo}/*`],[Go]:[`${Go}/*`],[Ko]:[`${Ko}/*`]}},modelCapabilities:F([...Ms,...Ns],Nc)},{id:`openrouter`,label:`OpenRouter`,priority:12,hint:`API key`,methods:[{id:`openrouter-api-key`,route:qo,kind:`api-key`,label:`OpenRouter API key`}],models:{recommended:[...Ps],dynamic:!0,routeRules:{[qo]:[`${qo}/*`]}},modelCapabilities:F(Ps,Vc)},{id:`qwen`,label:`Qwen`,priority:14,hint:`Coding Plan + DashScope API key`,modelProviderIds:[Yo,Jo],methods:[{id:`qwen-coding-plan-api-key`,route:Yo,kind:`api-key`,label:`Coding Plan API key`,hint:`Alibaba Cloud Coding Plan endpoint (coding.dashscope.aliyuncs.com)`},{id:`qwen-api-key`,route:Jo,kind:`api-key`,label:`DashScope API key`,hint:`DashScope OpenAI-compatible endpoint (dashscope.aliyuncs.com)`}],models:{recommended:[...Is,...Fs],routeRules:{[Yo]:[`${Yo}/*`],[Jo]:[`${Jo}/*`]}},modelCapabilities:F([...Is,...Fs],Uc)},{id:`zai`,label:`Z.AI`,priority:15,hint:`GLM Coding Plan / Global / CN`,modelProviderIds:[`zai`],methods:[{id:`zai-coding-global`,route:`zai`,configProviderId:`zai-coding-global`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-Global`,hint:`GLM Coding Plan Global (api.z.ai)`},{id:`zai-coding-cn`,route:`zai`,configProviderId:`zai-coding-cn`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-CN`,hint:`GLM Coding Plan CN (open.bigmodel.cn)`},{id:`zai-global`,route:`zai`,configProviderId:`zai`,kind:`api-key`,label:`Global`,hint:`Z.AI Global (api.z.ai)`},{id:`zai-cn`,route:`zai`,configProviderId:`zai-cn`,statusRoute:`zai`,kind:`api-key`,label:`CN`,hint:`Z.AI CN (open.bigmodel.cn)`}],models:{recommended:[...Ls],routeRules:{zai:[`zai/*`]}},modelCapabilities:F(Ls,zs)},{id:`qianfan`,label:`Qianfan`,priority:16,hint:`Baidu Qianfan API key`,methods:[{id:`qianfan-api-key`,route:Xo,kind:`api-key`,label:`Qianfan API key`}],models:{recommended:[...Bs],routeRules:{[Xo]:[`${Xo}/*`]}},modelCapabilities:F(Bs,Us)},{id:`copilot`,label:`Copilot`,priority:17,hint:`GitHub device login + local proxy`,modelProviderIds:[Zo,Qo],methods:[{id:`github-copilot`,route:Zo,kind:`device`,label:`GitHub sign in`,hint:`GitHub OAuth device flow; requires an active Copilot subscription`,buttonLabel:`Sign in`},{id:`copilot-proxy`,route:Qo,kind:`device`,label:`Proxy sign in`,hint:`Local VS Code Copilot Proxy bridge`,buttonLabel:`Configure`}],models:{recommended:[...Gs,...qs],dynamic:!0,routeRules:{[Zo]:[`${Zo}/*`],[Qo]:[`${Qo}/*`]}},modelCapabilities:F([...Gs,...qs],$s)},{id:`ai-gateway`,label:`Vercel AI`,priority:18,hint:`API key`,modelProviderIds:[$o],methods:[{id:`ai-gateway-api-key`,route:$o,kind:`api-key`,label:`Vercel AI API key`}],models:{recommended:[...fo],dynamic:!0,routeRules:{[$o]:[`${$o}/*`]}},modelCapabilities:F(fo,ec)},{id:`opencode-zen`,label:`OpenCode Zen`,priority:19,hint:`API key`,modelProviderIds:[es],methods:[{id:`opencode-zen`,route:es,kind:`api-key`,label:`OpenCode Zen API key`,hint:`Sign in to OpenCode Zen, then paste the API key`}],models:{recommended:[...Va],dynamic:!0,routeRules:{[es]:[`${es}/*`]}},modelCapabilities:F(Va,tc)},{id:`xiaomi`,label:`Xiaomi`,priority:20,hint:`MiMo API key`,modelProviderIds:[ts],methods:[{id:`xiaomi-api-key`,route:ts,kind:`api-key`,label:`Xiaomi API key`,hint:`Create an API key in the Xiaomi MiMo API Open Platform`}],models:{recommended:[...nc],routeRules:{[ts]:[`${ts}/*`]}},modelCapabilities:F(nc,rc)},{id:`synthetic`,label:`Synthetic`,priority:21,hint:`Anthropic-compatible API key`,modelProviderIds:[ns],methods:[{id:`synthetic-api-key`,route:ns,kind:`api-key`,label:`Synthetic API key`,hint:`Create an API key in Synthetic`}],models:{recommended:[...ic],routeRules:{[ns]:[`${ns}/*`]}},modelCapabilities:F(ic,ac)},{id:`together`,label:`Together AI`,priority:22,hint:`API key`,modelProviderIds:[rs],methods:[{id:`together-api-key`,route:rs,kind:`api-key`,label:`Together AI API key`,hint:`Create an API key in Together AI`}],models:{recommended:[...eo],routeRules:{[rs]:[`${rs}/*`]}},modelCapabilities:F(eo,oc)},{id:`huggingface`,label:`Hugging Face`,priority:23,hint:`Inference Providers token`,modelProviderIds:[is],methods:[{id:`huggingface-api-key`,route:is,kind:`api-key`,label:`Hugging Face token`,hint:`Create a fine-grained token with Inference Providers access`}],models:{recommended:[...ja],dynamic:!0,routeRules:{[is]:[`${is}/*`]}},modelCapabilities:sc},{id:`venice`,label:`Venice AI`,priority:24,hint:`Privacy-focused API key`,modelProviderIds:[as],methods:[{id:`venice-api-key`,route:as,kind:`api-key`,label:`Venice AI API key`,hint:`Create an API key in Venice settings`}],models:{recommended:[...oo],dynamic:!0,routeRules:{[as]:[`${as}/*`]}},modelCapabilities:cc},{id:`litellm`,label:`LiteLLM`,priority:25,hint:`OpenAI-compatible LLM proxy`,modelProviderIds:[os],methods:[{id:`litellm-api-key`,route:os,kind:`api-key`,label:`LiteLLM API key`,hint:`LiteLLM Proxy virtual key or master key plus /v1 base URL`}],models:{recommended:[...La],dynamic:!0,operatorCatalog:!0,routeRules:{[os]:[`${os}/*`]}},modelCapabilities:lc},{id:`cloudflare-ai-gateway`,label:`Cloudflare AI`,priority:26,hint:`Anthropic through Cloudflare AI`,modelProviderIds:[ba],methods:[{id:`cloudflare-ai-gateway-api-key`,route:ba,kind:`manual`,label:`Cloudflare AI API key`,hint:`Requires Cloudflare Account ID, Gateway ID, and Anthropic provider API key`,buttonLabel:`Configure`}],models:{recommended:[...Ea],routeRules:{[ba]:[`${ba}/*`]}},modelCapabilities:uc},{id:`custom`,label:`Custom Provider`,priority:27,hint:`OpenAI or Anthropic-compatible endpoint outside the built-in provider cards`,modelProviderIds:[ss],methods:[{id:`custom-api-key`,route:ss,kind:`manual`,label:`Custom Provider`,hint:`Requires base URL, endpoint compatibility, model ID, and optional API key. Use this for SGLang or other compatible endpoints when the vLLM-compatible shortcut does not fit.`,buttonLabel:`Configure`}],models:{recommended:dc,dynamic:!0,operatorCatalog:!0,routeRules:{[ss]:[`${ss}/*`]}},modelCapabilities:gc(dc)}];new Map(Wc.map(e=>[e.id,e])),new Map(Wc.flatMap(e=>[...e.methods.map(t=>[t.route,e]),...(e.routeAliases??[]).map(t=>[t,e]),...(e.modelProviderIds??[]).map(t=>[t,e])])),new Set(Wc.flatMap(e=>e.models.recommended.map(e=>e.toLowerCase()))),new Map(Wc.flatMap(e=>Object.entries(e.modelCapabilities??{}).map(([e,t])=>[e.toLowerCase(),t]))),new Set([...ls,...us]),i.resolve(i.dirname(o(import.meta.url)),`../../docs/reference/templates`);function Gc(e=process.env,t=p.homedir){let n=x(e,t),r=e.FASED_PROFILE?.trim();return r&&r.toLowerCase()!==`default`?i.join(n,`.fased`,`workspace-${r}`):i.join(n,`.fased`,`workspace`)}Gc();let Kc=null;function qc(){return Kc??=cn(`agent-scope`),Kc}function Jc(e){return e.replace(/\0/g,``)}let Yc=!1;function Xc(e){let t=e.agents?.list;return Array.isArray(t)?t.filter(e=>!!(e&&typeof e==`object`)):[]}function Zc(e){let t=Xc(e);if(t.length===0)return Ji;let n=t.filter(e=>e?.default);n.length>1&&!Yc&&(Yc=!0,qc().warn(`Multiple agents marked default=true; using the first entry as default.`));let r=(n[0]??t[0])?.id?.trim();return D(r||Ji)}function Qc(e,t){let n=D(t);return Xc(e).find(e=>D(e.id)===n)}function $c(e,t){let n=Qc(e,D(t));if(n)return{name:typeof n.name==`string`?n.name:void 0,workspace:typeof n.workspace==`string`?n.workspace:void 0,agentDir:typeof n.agentDir==`string`?n.agentDir:void 0,activeModelProvider:typeof n.activeModelProvider==`string`?n.activeModelProvider:void 0,modelProviders:n.modelProviders&&typeof n.modelProviders==`object`?n.modelProviders:void 0,model:typeof n.model==`string`||n.model&&typeof n.model==`object`?n.model:void 0,taskModels:n.taskModels&&typeof n.taskModels==`object`?n.taskModels:void 0,thinkingDefault:n.thinkingDefault,verboseDefault:e.agents?.defaults?.verboseDefault,reasoningDefault:n.reasoningDefault,fastModeDefault:n.fastModeDefault,skills:Array.isArray(n.skills)?n.skills:void 0,memorySearch:n.memorySearch,humanDelay:n.humanDelay,heartbeat:n.heartbeat,identity:n.identity,groupChat:n.groupChat,subagents:typeof n.subagents==`object`&&n.subagents?n.subagents:void 0,sandbox:n.sandbox,tools:n.tools}}function el(e,t){let n=D(t),r=$c(e,n)?.workspace?.trim();if(r)return Jc(T(r));let a=Zc(e),o=e.agents?.defaults?.workspace?.trim();if(n===a)return Jc(o?T(o):Gc(process.env));if(o)return Jc(i.join(T(o),n));let s=Ve(process.env);return Jc(i.join(s,`workspace-${n}`))}const tl=`default`,nl=/^\$\{([A-Z][A-Z0-9_]{0,127})\}$/;function rl(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function il(e){return!rl(e)||Object.keys(e).length!==3?!1:(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.provider==`string`&&e.provider.trim().length>0&&typeof e.id==`string`&&e.id.trim().length>0}function al(e){return rl(e)?(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.id==`string`&&e.id.trim().length>0&&e.provider===void 0:!1}function ol(e,t=tl){if(typeof e!=`string`)return null;let n=nl.exec(e.trim());return n?{source:`env`,provider:t.trim()||tl,id:n[1]}:null}function sl(e,t){if(il(e))return e;if(al(e)){let n=e.source===`env`?t?.env??tl:e.source===`file`?t?.file??tl:t?.exec??tl;return{source:e.source,provider:n,id:e.id}}return ol(e,t?.env)||null}function cl(e){let t=e.split(`.`);if(t.length!==4)return!1;let n=t.map(e=>Number(e));if(n.some(e=>!Number.isInteger(e)||e<0||e>255))return!1;let[r,i]=n;return r===10||r===127||r===0||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254}function ll(e){let t=e?.trim();if(!t)return!1;try{let e=new URL(t).hostname.toLowerCase().replace(/^\[|\]$/g,``);return e===`localhost`||e===`::1`||e===`0.0.0.0`||e.endsWith(`.local`)||e.endsWith(`.internal`)||cl(e)?!0:e.startsWith(`fc`)||e.startsWith(`fd`)||e.startsWith(`fe80:`)}catch{return!1}}const ul=[`chat.inject`,`push.test`,`web.login.start`,`web.login.wait`],dl=new Set([...Dt,`device-pair`,`phone-control`,`sat-mining`,`talk-voice`]),fl=e=>Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[];function pl(e){return typeof e==`string`&&ul.includes(e)}function ml(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=Array.isArray(t.allow)?t.allow:[],r=[];for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=e;pl(t.method)&&r.push({method:t.method,sources:fl(t.sources),requireOperatorApproval:t.requireOperatorApproval===!0})}return r}const hl=e=>{if(typeof e!=`string`)return;let t=e.trim();if(t)return t.toLowerCase()===`none`?null:t},gl=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(!n.trim())continue;if(!r||typeof r!=`object`||Array.isArray(r)){t[n]={};continue}let e=r;t[n]={enabled:typeof e.enabled==`boolean`?e.enabled:void 0,config:`config`in e?e.config:void 0,runtime:_l(e.runtime)}}return t};function _l(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.helpers&&typeof t.helpers==`object`&&!Array.isArray(t.helpers)?t.helpers:void 0;return{helpers:{sessions:{read:(n?.sessions&&typeof n.sessions==`object`&&!Array.isArray(n.sessions)?n.sessions:void 0)?.read===!0}},adminRpcActions:{allow:ml(t.adminRpcActions)}}}const vl=e=>{let t=hl(e?.slots?.memory);return{enabled:e?.enabled!==!1,allow:fl(e?.allow),deny:fl(e?.deny),loadPaths:fl(e?.load?.paths),slots:{memory:t===void 0?Wi(`memory`):t},entries:gl(e?.entries)}};function yl(e,t,n){if(!n.enabled)return{enabled:!1,reason:`plugins disabled`};if(n.deny.includes(e))return{enabled:!1,reason:`blocked by denylist`};if(n.allow.length>0&&!n.allow.includes(e))return{enabled:!1,reason:`not in allowlist`};if(n.slots.memory===e)return{enabled:!0};let r=n.entries[e];return r?.enabled===!0?{enabled:!0}:r?.enabled===!1?{enabled:!1,reason:`disabled in config`}:t===`bundled`&&dl.has(e)?{enabled:!0}:t===`bundled`?{enabled:!1,reason:`bundled (disabled by default)`}:{enabled:!0}}function bl(e,t){if(!e)return!1;let n=At(t);if(!n)return!1;let r=e.channels?.[n];return!r||typeof r!=`object`||Array.isArray(r)?!1:r.enabled===!0}function xl(e){let t=yl(e.id,e.origin,e.config);return!t.enabled&&t.reason===`bundled (disabled by default)`&&bl(e.rootConfig,e.id)?{enabled:!0}:t}function Sl(e){return e.kind===`memory`?e.slot===null?{enabled:!1,reason:`memory slot disabled`}:typeof e.slot==`string`?e.slot===e.id?{enabled:!0,selected:!0}:{enabled:!1,reason:`memory slot set to "${e.slot}"`}:e.selectedId&&e.selectedId!==e.id?{enabled:!1,reason:`memory slot already filled by "${e.selectedId}"`}:{enabled:!0,selected:!0}:{enabled:!0}}function Cl(e){try{let t=n.readdirSync(e,{withFileTypes:!0});for(let r of t){if(!r.isDirectory())continue;let t=i.join(e,r.name);if(n.existsSync(i.join(t,`fased.plugin.json`)))return!0}}catch{return!1}return!1}function wl(e={}){let t=process.env.FASED_BUNDLED_PLUGINS_DIR?.trim();if(t)return t;try{let t=i.dirname(e.execPath??process.execPath),n=i.join(t,`extensions`);if(Cl(n))return n}catch{}try{let t=e.moduleUrl??import.meta.url,n=Ee({argv1:e.argv1??process.argv[1],moduleUrl:t,cwd:e.cwd??process.cwd()});if(n){let e=i.join(n,`extensions`);if(Cl(e))return e}let r=i.dirname(o(t));for(let e=0;e<6;e+=1){let e=i.join(r,`extensions`);if(Cl(e))return e;let t=i.dirname(r);if(t===r)break;r=t}}catch{}}function Tl(e,t){return si(e,t)}function El(e,t){let r=t?.get(e);if(r)return r;try{let r=n.realpathSync(e);return t?.set(e,r),r}catch{return null}}function Dl(e){try{return n.statSync(e)}catch{return null}}function Ol(e){return(e&511).toString(8).padStart(3,`0`)}const kl=new Set([`.ts`,`.js`,`.mts`,`.cts`,`.mjs`,`.cjs`]);function Al(e){return e===void 0?process.platform===`win32`||typeof process.getuid!=`function`?null:process.getuid():e}function jl(e){let t=El(e.source),n=El(e.rootDir);return!t||!n||Tl(n,t)?null:{reason:`source_escapes_root`,sourcePath:e.source,rootPath:e.rootDir,targetPath:e.source,sourceRealPath:t,rootRealPath:n}}function Ml(e){if(process.platform===`win32`)return null;let t=[e.rootDir,e.source],n=new Set;for(let r of t){let t=i.resolve(r);if(n.has(t))continue;n.add(t);let a=Dl(r);if(!a)return{reason:`path_stat_failed`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r};let o=a.mode&511;if(o&2)return{reason:`path_world_writable`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,modeBits:o};if(e.origin!==`bundled`&&e.uid!==null&&typeof a.uid==`number`&&a.uid!==e.uid&&a.uid!==0)return{reason:`path_suspicious_ownership`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,foundUid:a.uid,expectedUid:e.uid}}return null}function Nl(e){return jl({source:e.source,rootDir:e.rootDir})||Ml({source:e.source,rootDir:e.rootDir,origin:e.origin,uid:Al(e.ownershipUid)})}function Pl(e){return e.reason===`source_escapes_root`?`blocked plugin candidate: source escapes plugin root (${e.sourcePath} -> ${e.sourceRealPath}; root=${e.rootRealPath})`:e.reason===`path_stat_failed`?`blocked plugin candidate: cannot stat path (${e.targetPath})`:e.reason===`path_world_writable`?`blocked plugin candidate: world-writable path (${e.targetPath}, mode=${Ol(e.modeBits??0)})`:`blocked plugin candidate: suspicious ownership (${e.targetPath}, uid=${e.foundUid}, expected uid=${e.expectedUid} or root)`}function Fl(e){let t=Nl({source:e.source,rootDir:e.rootDir,origin:e.origin,ownershipUid:e.ownershipUid});return t?(e.diagnostics.push({level:`warn`,source:t.targetPath,message:Pl(t)}),!0):!1}function Il(e){let t=i.extname(e);return kl.has(t)?!e.endsWith(`.d.ts`):!1}function Ll(e){let t=e.trim().toLowerCase();return!!(!t||t.endsWith(`.bak`)||t.includes(`.backup-`)||t.includes(`.disabled`))}function Rl(e){let t=Ai({absolutePath:i.join(e,`package.json`),rootPath:e,boundaryLabel:`plugin package directory`});if(!t.ok)return null;try{let e=n.readFileSync(t.fd,`utf-8`);return JSON.parse(e)}catch{return null}finally{n.closeSync(t.fd)}}function zl(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t||i.isAbsolute(t))return null;let n=t.replace(/^\.\/+/,``);return!n||n===`.`||n===`..`?null:n}function Bl(e,t){if(!Bi(t).ok)return[];let r=[e.main,e.module,...Vi],a=[],o=new Set;for(let e of r){let r=zl(e);if(!r||o.has(r))continue;o.add(r);let s=i.resolve(t,r);Tl(t,s)&&n.existsSync(s)&&Il(s)&&a.push(r)}return a}function Vl(e,t){let n=Hi(e)?.extensions;return Array.isArray(n)?n.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):t?Bl(e,t):[]}function Hl(e){let t=i.basename(e.filePath,i.extname(e.filePath)),n=e.packageName?.trim();if(!n)return t;let r=n.includes(`/`)?n.split(`/`).pop()??n:n;return e.hasMultipleExtensions?`${r}/${t}`:r}function Ul(e){let t=i.resolve(e.source);if(e.seen.has(t))return;let n=El(e.rootDir)??i.resolve(e.rootDir);if(Fl({source:t,rootDir:n,origin:e.origin,diagnostics:e.diagnostics,ownershipUid:e.ownershipUid}))return;e.seen.add(t);let r=e.manifest??null;e.candidates.push({idHint:e.idHint,source:t,rootDir:n,origin:e.origin,workspaceDir:e.workspaceDir,packageName:r?.name?.trim()||void 0,packageVersion:r?.version?.trim()||void 0,packageDescription:r?.description?.trim()||void 0,packageDir:e.packageDir,packageManifest:Hi(r??void 0)})}function Wl(e){let t=Ai({absolutePath:i.resolve(e.packageDir,e.entryPath),rootPath:e.packageDir,boundaryLabel:`plugin package directory`});if(!t.ok)return e.diagnostics.push({level:`error`,message:`extension entry escapes package directory: ${e.entryPath}`,source:e.sourceLabel}),null;let r=t.path;return n.closeSync(t.fd),r}function Gl(e){if(!n.existsSync(e.dir))return;let t=[];try{t=n.readdirSync(e.dir,{withFileTypes:!0})}catch(t){e.diagnostics.push({level:`warn`,message:`failed to read extensions dir: ${e.dir} (${String(t)})`,source:e.dir});return}for(let r of t){let t=i.join(e.dir,r.name);if(r.isFile()){if(!Il(t))continue;Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(r.name,i.extname(r.name)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir})}if(!r.isDirectory()||Ll(r.name))continue;let a=Rl(t),o=a?Vl(a,t):[];if(o.length>0){for(let n of o){let r=Wl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});r&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Hl({filePath:r,packageName:a?.name,hasMultipleExtensions:o.length>1}),source:r,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}continue}let s=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));s&&Il(s)&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:r.name,source:s,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}}function Kl(e){let t=T(e.rawPath);if(!n.existsSync(t)){e.diagnostics.push({level:`error`,message:`plugin path not found: ${t}`,source:t});return}let r=n.statSync(t);if(r.isFile()){if(!Il(t)){e.diagnostics.push({level:`error`,message:`plugin path is not a supported file: ${t}`,source:t});return}Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t,i.extname(t)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir});return}if(r.isDirectory()){let r=Rl(t),a=r?Vl(r,t):[];if(a.length>0){for(let n of a){let i=Wl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});i&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Hl({filePath:i,packageName:r?.name,hasMultipleExtensions:a.length>1}),source:i,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t})}return}let o=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));if(o&&Il(o)){Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t),source:o,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t});return}Gl({dir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen});return}}function ql(e){let t=[],n=[],r=new Set,a=e.workspaceDir?.trim(),o=e.extraPaths??[];for(let i of o){if(typeof i!=`string`)continue;let o=i.trim();o&&Kl({rawPath:o,origin:`config`,ownershipUid:e.ownershipUid,workspaceDir:a?.trim()||void 0,candidates:t,diagnostics:n,seen:r})}if(a){let o=T(a),s=[i.join(o,`.fased`,`extensions`)];for(let i of s)Gl({dir:i,origin:`workspace`,ownershipUid:e.ownershipUid,workspaceDir:o,candidates:t,diagnostics:n,seen:r})}Gl({dir:i.join(bn(),`extensions`),origin:`global`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r});let s=wl();return s&&Gl({dir:s,origin:`bundled`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r}),{candidates:t,diagnostics:n}}e(import.meta.url);const Jl=/(\d+)\.(\d+)\.(\d+)/;function Yl(e){if(!e)return null;let t=e.match(Jl);if(!t)return null;let[,n,r,i]=t;return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10)}}function Xl(e,t){return e?e.major===t.major?e.minor===t.minor?e.patch>=t.patch:e.minor>t.minor:e.major>t.major:!1}const Zl=/^>=(\d+)\.(\d+)\.(\d+)$/;function Ql(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.match(Zl);if(!n)return null;let r=`${n[1]}.${n[2]}.${n[3]}`;return Yl(r)?{raw:t,minimumLabel:r}:null}function $l(e){if(e.minHostVersion===void 0)return{ok:!0,requirement:null};let t=Ql(e.minHostVersion);if(!t)return{ok:!1,kind:`invalid`,error:`fased.install.minHostVersion must use a semver floor in the form ">=x.y.z"`};let n=e.currentVersion?.trim()||`unknown`,r=Yl(n);if(!r)return{ok:!1,kind:`unknown_host_version`,requirement:t};let i=Yl(t.minimumLabel);return!i||!Xl(r,i)?{ok:!1,kind:`incompatible`,requirement:t,currentVersion:n}:{ok:!0,requirement:t}}const eu={config:0,workspace:1,global:2,bundled:3},tu=new Map,nu=new Set;function ru(e){let t=e.FASED_PLUGIN_MANIFEST_CACHE_MS?.trim();if(t===``||t===`0`)return 0;if(!t)return 200;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):200}function iu(e){return e.FASED_DISABLE_PLUGIN_MANIFEST_CACHE?.trim()?!1:ru(e)>0}function au(e){let t=e.workspaceDir?T(e.workspaceDir):``,n=e.plugins.loadPaths.map(e=>T(e)).map(e=>e.trim()).filter(Boolean).toSorted();return`${t}::${e.hostVersion}::${JSON.stringify(n)}`}function ou(e){try{return n.statSync(e).mtimeMs}catch{return null}}function su(e){return e?.trim()||void 0}function cu(e){if(!Array.isArray(e))return;let t=e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean);return t.length>0?t:void 0}function lu(e){let t=e.packageChannel?.id?.trim();if(!t||!e.channelConfigs?.[t])return e.channelConfigs;let n=e.channelConfigs[t],r=n.label??(typeof e.packageChannel?.label==`string`?e.packageChannel.label.trim():``),i=n.description??(typeof e.packageChannel?.blurb==`string`?e.packageChannel.blurb.trim():``),a=n.preferOver??cu(e.packageChannel?.preferOver);return{...e.channelConfigs,[t]:{...n,...r?{label:r}:{},...i?{description:i}:{},...a?.length?{preferOver:a}:{}}}}function uu(e){let t=lu({channelConfigs:e.manifest.channelConfigs,packageChannel:e.candidate.packageManifest?.channel});return{id:e.manifest.id,name:su(e.manifest.name)??e.candidate.packageName,description:su(e.manifest.description)??e.candidate.packageDescription,version:su(e.manifest.version)??e.candidate.packageVersion,enabledByDefault:e.manifest.enabledByDefault===!0?!0:void 0,autoEnableWhenConfiguredProviders:e.manifest.autoEnableWhenConfiguredProviders,legacyPluginIds:e.manifest.legacyPluginIds,kind:e.manifest.kind,channels:e.manifest.channels??[],providers:e.manifest.providers??[],modelSupport:e.manifest.modelSupport,providerAuthEnvVars:e.manifest.providerAuthEnvVars,providerAuthAliases:e.manifest.providerAuthAliases,providerAuthChoices:e.manifest.providerAuthChoices,skills:e.manifest.skills??[],origin:e.candidate.origin,workspaceDir:e.candidate.workspaceDir,rootDir:e.candidate.rootDir,source:e.candidate.source,manifestPath:e.manifestPath,schemaCacheKey:e.schemaCacheKey,configSchema:e.configSchema,configUiHints:e.manifest.uiHints,contracts:e.manifest.contracts,channelConfigs:t,startupDeferConfiguredChannelFullLoadUntilAfterListen:e.candidate.packageManifest?.startup?.deferConfiguredChannelFullLoadUntilAfterListen===!0,...e.candidate.packageManifest?.channel?.id?{channelCatalogMeta:{id:e.candidate.packageManifest.channel.id,...typeof e.candidate.packageManifest.channel.label==`string`?{label:e.candidate.packageManifest.channel.label}:{},...typeof e.candidate.packageManifest.channel.blurb==`string`?{blurb:e.candidate.packageManifest.channel.blurb}:{},...e.candidate.packageManifest.channel.preferOver?{preferOver:e.candidate.packageManifest.channel.preferOver}:{}}}:{}}}function du(e){let t=vl((e.config??{}).plugins),n=e.env??process.env,r=Yn(n,Xn),a=au({workspaceDir:e.workspaceDir,plugins:t,hostVersion:r}),o=e.cache!==!1&&iu(n);if(o){let e=tu.get(a);if(e&&e.expiresAt>Date.now())return e.registry}let s=e.candidates?{candidates:e.candidates,diagnostics:e.diagnostics??[]}:ql({workspaceDir:e.workspaceDir,extraPaths:t.loadPaths}),c=[...s.diagnostics],l=s.candidates,u=[],d=new Map,f=new Map;for(let e of l){let t=Bi(e.rootDir);if(!t.ok){if(e.idHint&&nu.has(e.idHint))continue;c.push({level:`error`,message:t.error,source:t.manifestPath});continue}let n=t.manifest,a=$l({currentVersion:r,minHostVersion:e.packageManifest?.install?.minHostVersion});if(!a.ok){let t=i.join(e.packageDir??e.rootDir,`package.json`);c.push({level:a.kind===`unknown_host_version`?`warn`:`error`,pluginId:n.id,source:t,message:a.kind===`invalid`?`plugin manifest invalid | ${a.error}`:a.kind===`unknown_host_version`?`plugin requires Fased >=${a.requirement.minimumLabel}, but this host version could not be determined; skipping load`:`plugin requires Fased >=${a.requirement.minimumLabel}, but this host is ${a.currentVersion}; skipping load`});continue}e.idHint&&e.idHint!==n.id&&c.push({level:`warn`,pluginId:n.id,source:e.source,message:`plugin id mismatch (manifest uses "${n.id}", entry hints "${e.idHint}")`});let o=n.configSchema,s=ou(t.manifestPath),l=s?`${t.manifestPath}:${s}`:t.manifestPath,p=d.get(n.id);if(p){let r=El(p.candidate.rootDir,f),i=El(e.rootDir,f);if(r&&i&&r===i){eu[e.origin]<eu[p.candidate.origin]&&(u[p.recordIndex]=uu({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}),d.set(n.id,{candidate:e,recordIndex:p.recordIndex}));continue}c.push({level:`warn`,pluginId:n.id,source:e.source,message:`duplicate plugin id detected; later plugin may be overridden (${e.source})`})}else d.set(n.id,{candidate:e,recordIndex:u.length});u.push(uu({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}))}let p={plugins:u,diagnostics:c};if(o){let e=ru(n);e>0&&tu.set(a,{expiresAt:Date.now()+e,registry:p})}return p}function fu(e){let t=process,n=t[e];if(n)return n;let r=new Map;return t[e]=r,r}fu(Symbol.for(`fased.fileLockHeldLocks`)),process.env.FASED_XAI_OAUTH_CLIENT_ID?.trim();const pu=/^(?:[^~]|~0|~1)*$/;function mu(e){return e===`value`?!0:e.startsWith(`/`)?e.slice(1).split(`/`).every(e=>pu.test(e)):!1}const hu=`https://api.chutes.ai`;`${hu}`,`${hu}`,`${hu}`,new Set(ee().map(e=>e.id)),new Map([`auth_permanent`,`auth`,`billing`,`format`,`model_not_found`,`timeout`,`overloaded`,`rate_limit`,`session_expired`,`unknown`].map((e,t)=>[e,t]));const gu={id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`,`image`],contextWindow:2e5,maxTokens:4096},_u=[{id:`ark-code-latest`,name:`Ark Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`doubao-seed-2.0-code`,name:`Doubao Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-pro`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-lite`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-code`,name:`Doubao Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`minimax-m2.5`,name:`MiniMax M2.5`,reasoning:!0,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7 Coding`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`kimi-k2.5`,name:`Kimi K2.5 Coding`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3}];function vu(e,t){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:t,contextWindow:e.contextWindow,maxTokens:e.maxTokens}}const yu={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},bu=[{id:`seed-2-0-pro-260328`,name:`ByteDance Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-lite-260228`,name:`ByteDance Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-mini-260215`,name:`ByteDance Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-code-preview-260328`,name:`ByteDance Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3}];function xu(e){return vu(e,yu)}const Su=[{id:`ark-code-latest`,name:`BytePlus Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`dola-seed-2.0-pro`,name:`Dola Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-lite`,name:`Dola Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-code`,name:`Dola Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`bytedance-seed-code`,name:`ByteDance Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`glm-5.1`,name:`GLM 5.1`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3}];function Cu(){return[...Ws]}function wu(){return[...Ks]}function Tu(e){let t=e.trim().toLowerCase();return/^gpt-5(?:[.-]|$)/.test(t)?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:t===`claude-fable-5`||t===`claude-opus-4.8`||t===`claude-sonnet-5`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:t===`claude-haiku-4.5`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:t===`gemini-3.5-flash`||t===`gemini-3.1-pro`||t===`gemini-3-flash`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{tools:!0,json:!0}}function Eu(e,t){let n=e.trim();if(!n)throw Error(`Model id required`);return{id:n,name:n,api:t,reasoning:!!Tu(n).thinkingMode,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:Tu(n)}}function Du(e){return Eu(e,`openai-responses`)}function Ou(e){return Eu(e,`openai-completions`)}const ku=[{id:`google/gemma-4-31B-turbo-TEE`,name:`google/gemma-4-31B-turbo-TEE`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:65536,cost:{input:.0245,output:.0978,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B-TEE`,name:`Qwen/Qwen3-32B-TEE`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5.1-TEE`,name:`zai-org/GLM-5.1-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:1.05,output:3.5,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.6-TEE`,name:`moonshotai/Kimi-K2.6-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65535,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.6-27B-TEE`,name:`Qwen/Qwen3.6-27B-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B`,name:`Qwen/Qwen3-32B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Nemo-Instruct-2407`,name:`unsloth/Mistral-Nemo-Instruct-2407`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.02,output:.04,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3-0324-TEE`,name:`deepseek-ai/DeepSeek-V3-0324-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.25,output:1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,name:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.08,output:.55,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-120b-TEE`,name:`openai/gpt-oss-120b-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.05,output:.45,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,name:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.2-TEE`,name:`deepseek-ai/DeepSeek-V3.2-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.28,output:.42,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-TEE`,name:`zai-org/GLM-4.7-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.5-TEE`,name:`moonshotai/Kimi-K2.5-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65535,cost:{input:.45,output:2.2,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-27b-it`,name:`unsloth/gemma-3-27b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`XiaomiMiMo/MiMo-V2-Flash-TEE`,name:`XiaomiMiMo/MiMo-V2-Flash-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.09,output:.29,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,name:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.06,output:.18,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-0528-TEE`,name:`deepseek-ai/DeepSeek-R1-0528-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.45,output:2.15,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5-TEE`,name:`zai-org/GLM-5-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.95,output:3.15,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-TEE`,name:`deepseek-ai/DeepSeek-V3.1-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.2,output:.8,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,name:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.23,output:.9,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-4b-it`,name:`unsloth/gemma-3-4b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:96e3,maxTokens:96e3,cost:{input:.01,output:.03,cacheRead:0,cacheWrite:0}},{id:`MiniMaxAI/MiniMax-M2.5-TEE`,name:`MiniMaxAI/MiniMax-M2.5-TEE`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,cost:{input:.3,output:1.1,cacheRead:0,cacheWrite:0}},{id:`tngtech/DeepSeek-TNG-R1T2-Chimera`,name:`tngtech/DeepSeek-TNG-R1T2-Chimera`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.25,output:.85,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Coder-Next-TEE`,name:`Qwen/Qwen3-Coder-Next-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.12,output:.75,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-405B-FP8-TEE`,name:`NousResearch/Hermes-4-405B-FP8-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3`,name:`deepseek-ai/DeepSeek-V3`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-20b`,name:`openai/gpt-oss-20b`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-3B-Instruct`,name:`unsloth/Llama-3.2-3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Small-24B-Instruct-2501`,name:`unsloth/Mistral-Small-24B-Instruct-2501`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:32768,cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-FP8`,name:`zai-org/GLM-4.7-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-TEE`,name:`zai-org/GLM-4.6-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65536,cost:{input:.4,output:1.7,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.5-397B-A17B-TEE`,name:`Qwen/Qwen3.5-397B-A17B-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,cost:{input:.55,output:3.5,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-72B-Instruct`,name:`Qwen/Qwen2.5-72B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,name:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.02,output:.1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.8,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-FP8`,name:`zai-org/GLM-4.6-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen/Qwen3-235B-A22B-Thinking-2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.11,output:.6,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,name:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`tngtech/R1T2-Chimera-Speed`,name:`tngtech/R1T2-Chimera-Speed`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.22,output:.6,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6V`,name:`zai-org/GLM-4.6V`,reasoning:!0,input:[`text`,`image`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-VL-32B-Instruct`,name:`Qwen/Qwen2.5-VL-32B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:16384,maxTokens:16384,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-14B`,name:`Qwen/Qwen3-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-Coder-32B-Instruct`,name:`Qwen/Qwen2.5-Coder-32B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-30B-A3B`,name:`Qwen/Qwen3-30B-A3B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.06,output:.22,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-12b-it`,name:`unsloth/gemma-3-12b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.1,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-1B-Instruct`,name:`unsloth/Llama-3.2-1B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,name:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-14B`,name:`NousResearch/Hermes-4-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.01,output:.05,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3Guard-Gen-0.6B`,name:`Qwen/Qwen3Guard-Gen-0.6B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`rednote-hilab/dots.ocr`,name:`rednote-hilab/dots.ocr`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}}];function Au(e){return{...e,compat:{supportsUsageInStreaming:!1}}}const ju={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},Mu=[{id:`doubao-seed-2-0-pro-260215`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-lite-260215`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-mini-260215`,name:`Doubao Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-code-preview-260215`,name:`Doubao Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},gu,{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:4096}];function Nu(e){return vu(e,ju)}const Pu=[..._u];function Fu(e){let t=e.toLowerCase();return t.startsWith(`gpt-`)?`openai-responses`:t.startsWith(`claude-`)?`anthropic-messages`:t.startsWith(`gemini-`)?`google-generative-ai`:`openai-completions`}function Iu(e){let t=e.toLowerCase();return!(t.includes(`glm`)||t.includes(`minimax`))}const Lu={"gpt-5.5":{input:5,output:30,cacheRead:.5,cacheWrite:0},"gpt-5.5-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4":{input:2.5,output:15,cacheRead:.25,cacheWrite:0},"gpt-5.4-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4-mini":{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},"gpt-5.4-nano":{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},"gpt-5.3-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.3-codex-spark":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"claude-fable-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-8":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"gemini-3.5-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"gemini-3.1-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gemini-3-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"qwen3.7-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"qwen3.6-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"minimax-m2.7":{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},"glm-5.2":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"glm-5.1":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"kimi-k2.6":{input:.95,output:4,cacheRead:.16,cacheWrite:0},"gpt-5.1-codex":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"gemini-3-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gpt-5.1-codex-mini":{input:.25,output:2,cacheRead:.025,cacheWrite:0},"gpt-5.1":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"glm-4.7":{input:0,output:0,cacheRead:0,cacheWrite:0},"gpt-5.1-codex-max":{input:1.25,output:10,cacheRead:.125,cacheWrite:0}},Ru={input:0,output:0,cacheRead:0,cacheWrite:0},zu={"gpt-5.5":4e5,"gpt-5.5-pro":4e5,"gpt-5.4":4e5,"gpt-5.4-pro":4e5,"gpt-5.4-mini":4e5,"gpt-5.4-nano":4e5,"gpt-5.3-codex":4e5,"gpt-5.3-codex-spark":4e5,"gpt-5.2":4e5,"gpt-5.2-codex":4e5,"claude-fable-5":1e6,"claude-opus-4-8":1e6,"claude-sonnet-5":1e6,"claude-opus-4-7":1e6,"claude-opus-4-6":1e6,"claude-opus-4-5":2e5,"claude-sonnet-4-6":1e6,"claude-sonnet-4-5":1e6,"claude-haiku-4-5":2e5,"gemini-3.5-flash":1048576,"gemini-3.1-pro":1048576,"qwen3.7-plus":1e6,"qwen3.6-plus":262144,"minimax-m2.7":262144,"glm-5.2":1e6,"glm-5.1":204800,"kimi-k2.6":262144,"gpt-5.1-codex":4e5,"gemini-3-pro":1048576,"gpt-5.1-codex-mini":4e5,"gpt-5.1":4e5,"glm-4.7":204800,"gemini-3-flash":1048576,"gpt-5.1-codex-max":4e5};function Bu(e){return zu[e]??128e3}const Vu={"gpt-5.5":128e3,"gpt-5.5-pro":128e3,"gpt-5.4":128e3,"gpt-5.4-pro":128e3,"gpt-5.4-mini":128e3,"gpt-5.4-nano":128e3,"gpt-5.3-codex":128e3,"gpt-5.3-codex-spark":128e3,"gpt-5.2":128e3,"gpt-5.2-codex":128e3,"claude-fable-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-opus-4-7":128e3,"claude-opus-4-6":128e3,"claude-opus-4-5":64e3,"claude-sonnet-4-6":128e3,"claude-sonnet-4-5":64e3,"claude-haiku-4-5":64e3,"gemini-3.5-flash":65536,"gemini-3.1-pro":65536,"qwen3.7-plus":65536,"qwen3.6-plus":65536,"minimax-m2.7":65536,"glm-5.2":131072,"glm-5.1":131072,"kimi-k2.6":65536,"gpt-5.1-codex":128e3,"gemini-3-pro":65536,"gpt-5.1-codex-mini":128e3,"gpt-5.1":128e3,"glm-4.7":131072,"gemini-3-flash":65536,"gpt-5.1-codex-max":128e3};function Hu(e){return Vu[e]??8192}function Uu(e){return{id:e,name:Gu(e),api:Fu(e),reasoning:!0,input:Iu(e)?[`text`,`image`]:[`text`],cost:Lu[e]??Ru,contextWindow:Bu(e),maxTokens:Hu(e),capabilities:Ua(e)}}const Wu={"gpt-5.5":`GPT-5.5`,"gpt-5.5-pro":`GPT-5.5 Pro`,"gpt-5.4":`GPT-5.4`,"gpt-5.4-pro":`GPT-5.4 Pro`,"gpt-5.4-mini":`GPT-5.4 Mini`,"gpt-5.4-nano":`GPT-5.4 Nano`,"gpt-5.3-codex":`GPT-5.3 Codex`,"gpt-5.3-codex-spark":`GPT-5.3 Codex Spark`,"gpt-5.2":`GPT-5.2`,"gpt-5.2-codex":`GPT-5.2 Codex`,"claude-fable-5":`Claude Fable 5`,"claude-opus-4-8":`Claude Opus 4.8`,"claude-sonnet-5":`Claude Sonnet 5`,"claude-opus-4-7":`Claude Opus 4.7`,"claude-opus-4-6":`Claude Opus 4.6`,"claude-opus-4-5":`Claude Opus 4.5`,"claude-sonnet-4-6":`Claude Sonnet 4.6`,"claude-sonnet-4-5":`Claude Sonnet 4.5`,"claude-haiku-4-5":`Claude Haiku 4.5`,"gemini-3.5-flash":`Gemini 3.5 Flash`,"gemini-3.1-pro":`Gemini 3.1 Pro`,"qwen3.7-plus":`Qwen3.7 Plus`,"qwen3.6-plus":`Qwen3.6 Plus`,"minimax-m2.7":`MiniMax M2.7`,"glm-5.2":`GLM 5.2`,"glm-5.1":`GLM 5.1`,"kimi-k2.6":`Kimi K2.6`,"gpt-5.1-codex":`GPT-5.1 Codex`,"gemini-3-pro":`Gemini 3 Pro`,"gpt-5.1-codex-mini":`GPT-5.1 Codex Mini`,"gpt-5.1":`GPT-5.1`,"glm-4.7":`GLM-4.7`,"gemini-3-flash":`Gemini 3 Flash`,"gpt-5.1-codex-max":`GPT-5.1 Codex Max`};function Gu(e){return Wu[e]?Wu[e]:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Ku(){return Ba.map(Uu)}const qu={input:0,output:0,cacheRead:0,cacheWrite:0};function I(e){return{id:e.id,name:e.name??e.id,reasoning:e.reasoning??!1,input:e.input??[`text`],cost:e.cost??qu,contextWindow:e.contextWindow??2e5,maxTokens:e.maxTokens??8192,...e.api?{api:e.api}:{},...e.compat?{compat:e.compat}:{},...e.capabilities?{capabilities:e.capabilities}:{}}}const Ju=[I({id:`gpt-5.6`,name:`GPT-5.6 Sol`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:6.25}}),I({id:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:3.125}}),I({id:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:1,output:6,cacheRead:.1,cacheWrite:1.25}}),I({id:`gpt-5.5`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:0}}),I({id:`gpt-5.4`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0}}),I({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),I({id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0}})];I({id:`gpt-5.6-sol`,name:`GPT-5.6 Sol`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.5`,name:`GPT-5.5 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.4`,name:`GPT-5.4 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),I({id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,reasoning:!0,input:[`text`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`});const Yu=[I({id:`claude-fable-5`,name:`Claude Fable 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:10,output:50,cacheRead:1,cacheWrite:12.5}}),I({id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25}}),I({id:`claude-sonnet-5`,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:2,output:10,cacheRead:.2,cacheWrite:2.5}}),I({id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:64e3})],Xu=[I({id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash-Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536})];I({id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}}),I({id:`grok-build-0.1`,name:`Grok Build 0.1`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0}}),I({id:`glm-5.2`,name:`GLM-5.2`,reasoning:!0,contextWindow:1e6,maxTokens:128e3}),I({id:`glm-5.1`,name:`GLM-5.1`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5`,name:`GLM-5`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5-turbo`,name:`GLM-5 Turbo`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5v-turbo`,name:`GLM-5V Turbo`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7`,name:`GLM-4.7`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7-flashx`,name:`GLM-4.7 FlashX`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7-flash`,name:`GLM-4.7 Flash`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.7-highspeed`,name:`MiniMax M2.7 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.5`,name:`MiniMax M2.5`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.5-highspeed`,name:`MiniMax M2.5 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`kimi-k2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),I({id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:8192}),I({id:`kimi-for-coding`,name:`Kimi Coding`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),I({id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0}}),I({id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0}}),I({id:`mistral-large-2512`,name:`Mistral Large 3`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0}}),I({id:`devstral-2512`,name:`Devstral 2`,contextWindow:262144,maxTokens:262144,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}}),I({id:`ministral-14b-2512`,name:`Ministral 3 14B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0}}),I({id:`ministral-8b-2512`,name:`Ministral 3 8B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0}}),I({id:`ministral-3b-2512`,name:`Ministral 3 3B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0}}),I({id:`qwen3.7-max`,name:`qwen3.7-max`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`qwen3.7-plus`,name:`qwen3.7-plus`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`qwen3.6-flash`,name:`qwen3.6-flash`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`deepseek-v4-pro`,name:`deepseek-v4-pro`,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v4-flash`,name:`deepseek-v4-flash`,contextWindow:1e6,maxTokens:131072}),I({id:`kimi-k2.7-code`,name:`kimi-k2.7-code`,contextWindow:262144,maxTokens:32768}),I({id:`glm-5.2`,name:`glm-5.2`,contextWindow:1e6,maxTokens:128e3}),I({id:`MiniMax-M2.5`,name:`MiniMax-M2.5`,reasoning:!0,contextWindow:1e6,maxTokens:65536}),I({id:`ernie-5.1`,name:`ERNIE 5.1`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0`,name:`ERNIE 5.0`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0-thinking-latest`,name:`ERNIE 5.0 Thinking Latest`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0-thinking-preview`,name:`ERNIE 5.0 Thinking Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:119e3,maxTokens:64e3}),I({id:`ernie-x1.1-preview`,name:`ERNIE X1.1 Preview`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),I({id:`ernie-x1.1`,name:`ERNIE X1.1`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),I({id:`ernie-x1-turbo-32k`,name:`ERNIE X1 Turbo 32K`,reasoning:!0,contextWindow:32e3,maxTokens:28160}),I({id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v3.2-think`,name:`DeepSeek V3.2 Think`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),I({id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),[I({id:`auto`,name:`OpenRouter Auto`,input:[`text`,`image`],contextWindow:2e5}),I({id:`moonshotai/kimi-k2.6`,name:`MoonshotAI Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:1,output:3,cacheRead:.2,cacheWrite:0}}),I({id:`moonshotai/kimi-k2.5`,name:`MoonshotAI Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:.44,output:2,cacheRead:.22,cacheWrite:0}}),...Ju.map(e=>({...e,id:`openai/${e.id}`,name:`OpenAI ${e.name}`,api:`openai-completions`})),...Yu.map(e=>({...e,id:`anthropic/${e.id}`,name:`Anthropic ${e.name}`,api:`openai-completions`})),...Xu.map(e=>({...e,id:`google/${e.id}`,name:`Google ${e.name}`,api:`openai-completions`}))],ku.map(Au),qa.map(Ya),ao.map(so),$a.map(to),Aa.map(Na),Ku(),uo.map(yo),Ta.map(e=>Da({id:e.id})),Ia.map(Ra),I({id:`local`,name:`Local model`,input:[`text`,`image`],contextWindow:128e3,maxTokens:8192}),Cu().map(Du),wu().map(Ou),Mu.map(Nu),Pu.map(Nu),Pu.map(Nu),bu.map(xu),Su.map(xu),Su.map(xu),Co.map(e=>wo(e));const Zu=`qwen3.7-plus`;`${Zu}`,`${Zu}`;const Qu=1e6,$u=65536,ed={input:0,output:0,cacheRead:0,cacheWrite:0},td=[{id:`qwen3.7-max`,name:`Qwen3.7 Max`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:Qu,maxTokens:$u},{id:`qwen3.7-plus`,name:`Qwen3.7 Plus`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:Qu,maxTokens:$u},{id:`qwen3.6-flash`,name:`Qwen3.6 Flash`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:1e6,maxTokens:$u}];td[0],td[1],td[2];function nd(e){return e===`gemini-3.5-flash-preview`?`gemini-3.5-flash`:e===`gemini-3-pro`||e===`gemini-3-pro-preview`||e===`gemini-3.1-pro`?`gemini-3.1-pro-preview`:e===`gemini-3-flash`||e===`gemini-3.1-flash`||e===`gemini-3.1-flash-preview`?`gemini-3-flash-preview`:e===`gemini-3.1-flash-lite`||e===`gemini-3.1-flash-lite-preview`?`gemini-3.1-flash-lite`:e}const rd={"opus-4.8":`claude-opus-4-8`,"opus-4.6":`claude-opus-4-6`,"opus-4.5":`claude-opus-4-5`,"sonnet-5":`claude-sonnet-5`,"sonnet-4.6":`claude-sonnet-4-6`,"sonnet-4.5":`claude-sonnet-4-5`},id=[`gpt-5.4-codex`,`gpt-5.3-codex`];function ad(e){let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t===`opencode-zen`?`opencode`:t===`kimi-code`?`kimi-coding`:t===`moonshotai`||t===`moonshot-ai`?`moonshot`:t===`bytedance`||t===`doubao`?`volcengine`:t}function od(e){let t=e.trim();return t&&(rd[t.toLowerCase()]??t)}function sd(e,t){if(e===`anthropic`)return od(t);if(e===`vercel-ai-gateway`&&!t.includes(`/`)){if(t.toLowerCase().startsWith(`gpt-`))return`openai/${t}`;let e=od(t);if(e.startsWith(`claude-`))return`anthropic/${e}`}return e===`google`?nd(t):e===`openrouter`&&!t.includes(`/`)?`openrouter/${t}`:t}function cd(e,t){if(e!==`openai`)return!1;let n=t.trim().toLowerCase();return n?id.some(e=>n===e||n.startsWith(`${e}-`)):!1}function ld(e,t){let n=ad(e),r=sd(n,t.trim());return cd(n,r)?{provider:`openai-codex`,model:r}:{provider:n,model:r}}function ud(e,t){let n=e.trim();if(!n)return null;let r=n.indexOf(`/`);if(r===-1)return ld(t,n);let i=n.slice(0,r).trim(),a=n.slice(r+1).trim();return!i||!a?null:ld(i,a)}const dd=`elevenlabs`;function fd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function pd(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function md(e){let t=pd(e);if(t)return t;let n=sl(e);if(n)return n;if(fd(e)&&Object.keys(e).length>0)return e}function hd(e){return md(e)!==void 0}function gd(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function _d(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(n===`voiceAliases`){let e=gd(r);e&&(t.voiceAliases=e);continue}if(n===`apiKey`){let e=md(r);e&&(t.apiKey=e);continue}if(n===`voiceId`||n===`modelId`||n===`outputFormat`){let e=pd(r);e&&(t[n]=e);continue}t[n]=r}return Object.keys(t).length>0?t:void 0}function vd(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=pd(n);if(!e)continue;let i=_d(r);i&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function yd(e){let t={},n=pd(e.voiceId);n&&(t.voiceId=n);let r=gd(e.voiceAliases);r&&(t.voiceAliases=r);let i=pd(e.modelId);i&&(t.modelId=i);let a=pd(e.outputFormat);a&&(t.outputFormat=a);let o=md(e.apiKey);return o&&(t.apiKey=o),t}function bd(e){return _d({voiceId:e.voiceId,voiceAliases:e.voiceAliases,modelId:e.modelId,outputFormat:e.outputFormat,apiKey:e.apiKey})}function xd(e){let t=pd(e.provider);if(t)return t;let n=e.providers?Object.keys(e.providers):[];return n.length===1?n[0]:void 0}function Sd(e){if(!fd(e))return;let t=e,n=typeof t.provider==`string`||fd(t.providers),r={},i=yd(t);if(Object.keys(i).length>0&&Object.assign(r,i),typeof t.interruptOnSpeech==`boolean`&&(r.interruptOnSpeech=t.interruptOnSpeech),n){let e=vd(t.providers),n=pd(t.provider);if(e&&(r.providers=e),n)r.provider=n;else if(e){let t=Object.keys(e);t.length===1&&(r.provider=t[0])}return Object.keys(r).length>0?r:void 0}let a=bd(t);return a&&(r.provider=dd,r.providers={[dd]:a}),Object.keys(r).length>0?r:void 0}function Cd(e){if(!e.talk)return e;let t=Sd(e.talk);return t?{...e,talk:t}:e}function wd(e){let t=Sd(e);if(!t)return{};let n=xd(t);return n?{provider:n,config:t.providers?.[n]}:{}}function Td(e={}){let t=e.fs??n,r=e.os??p,a=e.path??i,o=r.homedir(),s=[`.profile`,`.zprofile`,`.zshrc`,`.bashrc`].map(e=>a.join(o,e));for(let e of s)if(t.existsSync(e))try{let n=t.readFileSync(e,`utf-8`).match(/(?:^|\n)\s*(?:export\s+)?ELEVENLABS_API_KEY\s*=\s*["']?([^\n"']+)["']?/)?.[1]?.trim();if(n)return n}catch{}return null}function Ed(e=process.env,t={}){return(e.ELEVENLABS_API_KEY??``).trim()||Td(t)}let Dd={warned:!1};const Od={opus:`anthropic/claude-opus-4-8`,sonnet:`anthropic/claude-sonnet-5`,gpt:`openai/gpt-5.6`,"gpt-mini":`openai/gpt-5.4-mini`,gemini:`google/gemini-3.5-flash`,"gemini-flash":`google/gemini-3-flash-preview`,"gemini-flash-lite":`google/gemini-3.1-flash-lite`},kd={input:0,output:0,cacheRead:0,cacheWrite:0},Ad=[`text`];function jd(e,t){return t||(ad(e)===`anthropic`?`anthropic-messages`:void 0)}function Md(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function Nd(e){return{input:typeof e?.input==`number`?e.input:kd.input,output:typeof e?.output==`number`?e.output:kd.output,cacheRead:typeof e?.cacheRead==`number`?e.cacheRead:kd.cacheRead,cacheWrite:typeof e?.cacheWrite==`number`?e.cacheWrite:kd.cacheWrite}}function Pd(e){let t=e.auth?.profiles??{},n=Object.entries(t).filter(([,e])=>e?.provider===`anthropic`),r=e.auth?.order?.anthropic??[];for(let e of r){let n=t[e];if(!(!n||n.provider!==`anthropic`)){if(n.mode===`api_key`)return`api_key`;if(n.mode===`oauth`||n.mode===`token`)return`oauth`}}let i=n.some(([,e])=>e?.mode===`api_key`),a=n.some(([,e])=>e?.mode===`oauth`||e?.mode===`token`);return i&&!a?`api_key`:a&&!i||process.env.ANTHROPIC_OAUTH_TOKEN?.trim()?`oauth`:process.env.ANTHROPIC_API_KEY?.trim()?`api_key`:null}function Fd(e){if(!e||typeof e!=`string`)return null;let t=e.trim();return t?Od[t.toLowerCase()]??t:null}function Id(e){if(!e)return!1;let t=ad(e.provider),n=e.model.toLowerCase();return t===`anthropic`?!0:t===`amazon-bedrock`&&n.includes(`anthropic.claude`)}function Ld(e){let t=e.messages;if(t?.ackReactionScope!==void 0)return e;let n=t?{...t}:{};return n.ackReactionScope=`group-mentions`,{...e,messages:n}}function Rd(e,t={}){let n=e.session;if(!n||n.mainKey===void 0)return e;let r=n.mainKey.trim(),i=t.warn??console.warn,a=t.warnState??Dd,o={...e,session:{...n,mainKey:`main`}};return r&&r!==`main`&&!a.warned&&(a.warned=!0,i(`session.mainKey is ignored; main session is always "main".`)),o}function zd(e){let t=Cd(e),n=Ed();if(!n)return t;let r=t.talk,i=wd(r);if(i.provider&&i.provider!==dd||hd(i.config?.apiKey)||hd(r?.apiKey))return t;let a=i.provider??dd,o={...r?.providers};o[a]={...o[a],apiKey:n};let s={...r,provider:r?.provider??a,providers:o,apiKey:n};return{...t,talk:s}}function Bd(e){return Cd(e)}function Vd(e){let t=!1,n=e,r=n.models?.providers;if(r){let e={...r};for(let[n,i]of Object.entries(r)){let r=i.models;if(!Array.isArray(r)||r.length===0)continue;let a=jd(n,i.api),o=i;a&&i.api!==a&&(t=!0,o={...o,api:a});let s=!1,c=r.map(e=>{let t=e,n=!1,r=typeof t.reasoning==`boolean`?t.reasoning:!1;t.reasoning!==r&&(n=!0);let i=t.input??[...Ad];t.input===void 0&&(n=!0);let o=Nd(t.cost);(!t.cost||t.cost.input!==o.input||t.cost.output!==o.output||t.cost.cacheRead!==o.cacheRead||t.cost.cacheWrite!==o.cacheWrite)&&(n=!0);let c=Md(t.contextWindow)?t.contextWindow:2e5;t.contextWindow!==c&&(n=!0);let l=Math.min(8192,c),u=Md(t.maxTokens)?t.maxTokens:l,d=Math.min(u,c);t.maxTokens!==d&&(n=!0);let f=t.api??a;return t.api!==f&&(n=!0),n?(s=!0,{...t,reasoning:r,input:i,cost:o,contextWindow:c,maxTokens:d,api:f}):e});if(!s){o!==i&&(e[n]=o);continue}e[n]={...o,models:c},t=!0}t&&(n={...n,models:{...n.models,providers:e}})}let i=n.agents?.defaults;if(!i)return t?n:e;let a=i.models??{};if(Object.keys(a).length===0)return t?n:e;let o={...a};for(let[e,n]of Object.entries(Od)){let r=o[n];r&&r.alias===void 0&&(o[n]={...r,alias:e},t=!0)}return t?{...n,agents:{...n.agents,defaults:{...i,models:o}}}:e}function Hd(e){let t=e.agents,n=t?.defaults,r=typeof n?.maxConcurrent==`number`&&Number.isFinite(n.maxConcurrent),i=typeof n?.subagents?.maxConcurrent==`number`&&Number.isFinite(n.subagents.maxConcurrent);if(r&&i)return e;let a=!1,o=n?{...n}:{};r||(o.maxConcurrent=4,a=!0);let s=n?.subagents?{...n.subagents}:{};return i||(s.maxConcurrent=8,a=!0),a?{...e,agents:{...t,defaults:{...o,subagents:s}}}:e}function Ud(e){let t=e.logging;return!t||t.redactSensitive?e:{...e,logging:{...t,redactSensitive:`tools`}}}function Wd(e){let t=e.agents?.defaults;if(!t)return e;let n=Pd(e);if(!n)return e;let r=!1,i={...t},a=t.contextPruning??{},o=t.heartbeat??{};if(t.contextPruning?.mode===void 0&&(i.contextPruning={...a,mode:`cache-ttl`,ttl:t.contextPruning?.ttl??`1h`},r=!0),t.heartbeat?.every===void 0&&(i.heartbeat={...o,every:n===`oauth`?`1h`:`30m`},r=!0),n===`api_key`){let e=t.models?{...t.models}:{},n=!1;for(let[t,r]of Object.entries(e)){if(!Id(ud(t,`anthropic`)))continue;let i=r??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[t]={...i,params:{...a,cacheRetention:`short`}},n=!0)}let a=Fd(oa(t.model)??void 0);if(a){let t=ud(a,`anthropic`);if(Id(t)){let r=`${t.provider}/${t.model}`,i=e[r]??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[r]={...i,params:{...a,cacheRetention:`short`}},n=!0)}}n&&(i.models=e,r=!0)}return r?{...e,agents:{...e.agents,defaults:i}}:e}function Gd(e){let t=e.agents?.defaults;if(!t)return e;let n=t?.compaction;return n?.mode?e:{...e,agents:{...e.agents,defaults:{...t,compaction:{...n,mode:`safeguard`}}}}}const Kd=/\$\{[A-Z_][A-Z0-9_]*\}/;function qd(e){return Kd.test(e)}function Jd(e,t){let n=/^[A-Z_][A-Z0-9_]*$/,r=[];for(let i=0;i<e.length;i++){if(e[i]===`$`){if(e[i+1]===`$`&&e[i+2]===`{`){let t=i+3,a=e.indexOf(`}`,t);if(a!==-1){let o=e.slice(t,a);if(n.test(o)){r.push(`\${${o}}`),i=a;continue}}}if(e[i+1]===`{`){let a=i+2,o=e.indexOf(`}`,a);if(o!==-1){let s=e.slice(a,o);if(n.test(s)){let e=t[s];if(e===void 0||e===``)return null;r.push(e),i=o;continue}}}}r.push(e[i])}return r.join(``)}function Yd(e,t,n=process.env){if(t==null)return e;if(typeof e==`string`&&typeof t==`string`)return qd(t)&&Jd(t,n)===e?t:e;if(Array.isArray(e)&&Array.isArray(t))return e.map((e,r)=>r<t.length?Yd(e,t[r],n):e);if(C(e)&&C(t)){let r={};for(let[i,a]of Object.entries(e))i in t?r[i]=Yd(a,t[i],n):r[i]=a;return r}return e}const Xd=/^[A-Z_][A-Z0-9_]*$/;var Zd=class extends Error{constructor(e,t){super(`Missing env var "${e}" referenced at config path: ${t}`),this.varName=e,this.configPath=t,this.name=`MissingEnvVarError`}};function Qd(e,t){if(e[t]!==`$`)return null;let n=e[t+1],r=e[t+2];if(n===`$`&&r===`{`){let n=t+3,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Xd.test(t))return{kind:`escaped`,name:t,end:r}}}if(n===`{`){let n=t+2,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Xd.test(t))return{kind:`substitution`,name:t,end:r}}}return null}function $d(e,t,n){if(!e.includes(`$`))return e;let r=[];for(let i=0;i<e.length;i+=1){let a=e[i];if(a!==`$`){r.push(a);continue}let o=Qd(e,i);if(o?.kind===`escaped`){r.push(`\${${o.name}}`),i=o.end;continue}if(o?.kind===`substitution`){let e=t[o.name];if(e===void 0||e===``)throw new Zd(o.name,n);r.push(e),i=o.end;continue}r.push(a)}return r.join(``)}function ef(e){if(!e.includes(`$`))return!1;for(let t=0;t<e.length;t+=1){if(e[t]!==`$`)continue;let n=Qd(e,t);if(n?.kind===`escaped`){t=n.end;continue}if(n?.kind===`substitution`)return!0}return!1}function tf(e,t,n){if(typeof e==`string`)return $d(e,t,n);if(Array.isArray(e))return e.map((e,r)=>tf(e,t,`${n}[${r}]`));if(C(e)){let r={};for(let[i,a]of Object.entries(e))r[i]=tf(a,t,n?`${n}.${i}`:i);return r}return e}function nf(e,t=process.env){return tf(e,t,``)}function rf(e){return xr(e)||Cr(e)}function af(e){let t=e?.env;if(!t)return{};let n={};if(t.vars)for(let[e,r]of Object.entries(t.vars)){if(!r)continue;let t=br(e,{portable:!0});t&&(rf(t)||(n[t]=r))}for(let[e,r]of Object.entries(t)){if(e===`shellEnv`||e===`vars`||typeof r!=`string`||!r.trim())continue;let t=br(e,{portable:!0});t&&(rf(t)||(n[t]=r))}return n}function of(e){return af(e)}function sf(e,t=process.env){let n=of(e);for(let[e,r]of Object.entries(n))t[e]?.trim()||(t[e]=r)}const cf=`$include`;var L=class extends Error{constructor(e,t,n){super(e),this.includePath=t,this.cause=n,this.name=`ConfigIncludeError`}},lf=class extends L{constructor(e){super(`Circular include detected: ${e.join(` -> `)}`,e[e.length-1]),this.chain=e,this.name=`CircularIncludeError`}};function uf(e,t){if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(C(e)&&C(t)){let n={...e};for(let e of Object.keys(t))qi(e)||(n[e]=e in n?uf(n[e],t[e]):t[e]);return n}return t}var df=class e{constructor(e,t,n){this.basePath=e,this.resolver=t,this.visited=new Set,this.depth=0,this.visited.add(i.normalize(e)),this.rootDir=i.normalize(n??i.dirname(e)),this.rootRealDir=i.normalize(ff(this.rootDir))}process(e){return Array.isArray(e)?e.map(e=>this.process(e)):C(e)?cf in e?this.processInclude(e):this.processObject(e):e}processObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=this.process(r);return t}processInclude(e){let t=e[cf],n=Object.keys(e).filter(e=>e!==cf),r=this.resolveInclude(t);if(n.length===0)return r;if(!C(r))throw new L(`Sibling keys require included content to be an object`,typeof t==`string`?t:cf);let i={};for(let t of n)i[t]=this.process(e[t]);return uf(r,i)}resolveInclude(e){if(typeof e==`string`)return this.loadFile(e);if(Array.isArray(e))return e.reduce((e,t)=>{if(typeof t!=`string`)throw new L(`Invalid $include array item: expected string, got ${typeof t}`,String(t));return uf(e,this.loadFile(t))},{});throw new L(`Invalid $include value: expected string or array of strings, got ${typeof e}`,String(e))}loadFile(e){let t=this.resolvePath(e);this.checkCircular(t),this.checkDepth(e);let n=this.readFile(e,t),r=this.parseFile(e,t,n);return this.processNested(t,r)}resolvePath(e){let t=i.dirname(this.basePath),r=i.isAbsolute(e)?e:i.resolve(t,e),a=i.normalize(r);if(!ci(this.rootDir,a))throw new L(`Include path escapes config directory: ${e} (root: ${this.rootDir})`,e);try{let t=n.realpathSync(a);if(!ci(this.rootRealDir,t))throw new L(`Include path resolves outside config directory (symlink): ${e} (root: ${this.rootDir})`,e)}catch(e){if(e instanceof L)throw e}return a}checkCircular(e){if(this.visited.has(e))throw new lf([...this.visited,e])}checkDepth(e){if(this.depth>=10)throw new L(`Maximum include depth (10) exceeded at: ${e}`,e)}readFile(e,t){try{return this.resolver.readFileWithGuards?this.resolver.readFileWithGuards({includePath:e,resolvedPath:t,rootRealDir:this.rootRealDir}):this.resolver.readFile(t)}catch(n){throw n instanceof L?n:new L(`Failed to read include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}parseFile(e,t,n){try{return this.resolver.parseJson(n)}catch(n){throw new L(`Failed to parse include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}processNested(t,n){let r=new e(t,this.resolver,this.rootDir);return r.visited=new Set([...this.visited,t]),r.depth=this.depth+1,r.process(n)}};function ff(e){try{return n.realpathSync(e)}catch{return e}}function pf(e){let t=e.ioFs??n,r=e.maxBytes??2097152;if(!ki(t))return t.readFileSync(e.resolvedPath,`utf-8`);let i=Ai({absolutePath:e.resolvedPath,rootPath:e.rootRealDir,rootRealPath:e.rootRealDir,boundaryLabel:`config directory`,skipLexicalRootCheck:!0,maxBytes:r,ioFs:t});if(!i.ok)throw i.reason===`validation`?new L(`Include file failed security checks (regular file, max ${r} bytes, no hardlinks): ${e.includePath}`,e.includePath):new L(`Failed to read include file: ${e.includePath} (resolved: ${e.resolvedPath})`,e.includePath,i.error instanceof Error?i.error:void 0);try{return t.readFileSync(i.fd,`utf-8`)}finally{t.closeSync(i.fd)}}const mf={readFile:e=>n.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:n})=>pf({includePath:e,resolvedPath:t,rootRealDir:n}),parseJson:e=>m.parse(e)};function hf(e,t,n=mf){return new df(t,n).process(e)}function gf(e){return typeof e==`string`&&e.trim().toLowerCase()||null}function _f(e){let t=gf(e);return t===`off`||t===`partial`||t===`block`||t===`progress`?t:null}function vf(e){let t=_f(e);return t?t===`progress`?`partial`:t:null}function yf(e){let t=gf(e);return t===`replace`||t===`status_final`||t===`append`?t:null}function bf(e){return e===`append`?`block`:e===`status_final`?`progress`:`partial`}function xf(e={}){let t=_f(e.streaming);return t?t===`progress`?`partial`:t:vf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function Sf(e={}){return vf(e.streaming)||vf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function Cf(e={}){let t=_f(e.streaming);if(t)return t;let n=yf(e.streamMode);return n?bf(n):(e.streaming,`partial`)}function wf(e={}){return typeof e.nativeStreaming==`boolean`?e.nativeStreaming:typeof e.streaming==`boolean`?e.streaming:!0}const Tf=/[;&|`$<>]/,Ef=/[\r\n]/,Df=/["']/,Of=/^[A-Za-z0-9._+-]+$/;function kf(e){return e.startsWith(`.`)||e.startsWith(`~`)||e.includes(`/`)||e.includes(`\\`)?!0:/^[A-Za-z]:[\\/]/.test(e)}function Af(e){if(!e)return!1;let t=e.trim();return!t||t.includes(`\0`)||Ef.test(t)||Tf.test(t)||Df.test(t)?!1:kf(t)?!0:t.startsWith(`-`)?!1:Of.test(t)}const R=e=>w(e)?e:null,z=(e,t)=>{let n=e[t];if(w(n))return n;let r={};return e[t]=r,r},B=(e,t)=>{for(let[n,r]of Object.entries(t)){if(r===void 0||qi(n))continue;let t=e[n];if(t===void 0){e[n]=r;continue}w(t)&&w(r)&&B(t,r)}},jf=e=>{let t=R(e),n=Array.isArray(t?.command)?t?.command:null;if(!n||n.length===0||typeof n[0]!=`string`||!n.every(e=>typeof e==`string`))return null;let r=n[0].trim();if(!r||!Af(r))return null;let i=n.slice(1),a=typeof t?.timeoutSeconds==`number`?t?.timeoutSeconds:void 0,o={command:r,type:`cli`};return i.length>0&&(o.args=i),a!==void 0&&(o.timeoutSeconds=a),o},Mf=e=>{let t=e?.list;return Array.isArray(t)?t:[]},Nf=e=>{let t=Mf(R(e.agents)),n=t.find(e=>w(e)&&e.default===!0&&typeof e.id==`string`&&e.id.trim()!==``);if(n)return n.id.trim();let r=R(e.routing),i=typeof r?.defaultAgentId==`string`?r.defaultAgentId.trim():``;if(i)return i;let a=t.find(e=>w(e)&&typeof e.id==`string`&&e.id.trim()!==``);return a?a.id.trim():`main`},Pf=(e,t)=>{let n=t.trim(),r=e.find(e=>w(e)&&typeof e.id==`string`&&e.id.trim()===n);if(r)return r;let i={id:n};return e.push(i),i};function Ff(e,t,n,r){let i=Array.isArray(e.bindings)?e.bindings:null;if(!i)return;let a=!1;for(let e of i){if(!w(e))continue;let t=R(e.match);t&&r(t)&&(e.match=t,a=!0)}a&&(e.bindings=i,t.push(n))}function If(e){let t=w(e.groups)?e.groups:{};return{groups:t,entry:w(t[`*`])?t[`*`]:{}}}function Lf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Rf(e){let t=R(e.owner.threadBindings);if(!t||!Lf(t,`ttlHours`))return!1;let n=t.idleHours!==void 0;return n||(t.idleHours=t.ttlHours),delete t.ttlHours,e.owner.threadBindings=t,n?e.changes.push(`Removed ${e.pathPrefix}.threadBindings.ttlHours (${e.pathPrefix}.threadBindings.idleHours already set).`):e.changes.push(`Moved ${e.pathPrefix}.threadBindings.ttlHours → ${e.pathPrefix}.threadBindings.idleHours.`),!0}const zf=[{id:`bindings.match.provider->bindings.match.channel`,describe:`Move bindings[].match.provider to bindings[].match.channel`,apply:(e,t)=>{Ff(e,t,`Moved bindings[].match.provider → bindings[].match.channel.`,e=>{if(typeof e.channel==`string`&&e.channel.trim())return!1;let t=typeof e.provider==`string`?e.provider.trim():``;return t?(e.channel=t,delete e.provider,!0):!1})}},{id:`bindings.match.accountID->bindings.match.accountId`,describe:`Move bindings[].match.accountID to bindings[].match.accountId`,apply:(e,t)=>{Ff(e,t,`Moved bindings[].match.accountID → bindings[].match.accountId.`,e=>{if(e.accountId!==void 0)return!1;let t=typeof e.accountID==`string`?e.accountID.trim():e.accountID;return t?(e.accountId=t,delete e.accountID,!0):!1})}},{id:`session.sendPolicy.rules.match.provider->match.channel`,describe:`Move session.sendPolicy.rules[].match.provider to match.channel`,apply:(e,t)=>{let n=R(e.session);if(!n)return;let r=R(n.sendPolicy);if(!r)return;let i=Array.isArray(r.rules)?r.rules:null;if(!i)return;let a=!1;for(let e of i){if(!w(e))continue;let t=R(e.match);if(!t||typeof t.channel==`string`&&t.channel.trim())continue;let n=typeof t.provider==`string`?t.provider.trim():``;n&&(t.channel=n,delete t.provider,e.match=t,a=!0)}a&&(r.rules=i,n.sendPolicy=r,e.session=n,t.push(`Moved session.sendPolicy.rules[].match.provider → match.channel.`))}},{id:`messages.queue.byProvider->byChannel`,describe:`Move messages.queue.byProvider to messages.queue.byChannel`,apply:(e,t)=>{let n=R(e.messages);if(!n)return;let r=R(n.queue);r&&r.byProvider!==void 0&&(r.byChannel===void 0?(r.byChannel=r.byProvider,t.push(`Moved messages.queue.byProvider → messages.queue.byChannel.`)):t.push(`Removed messages.queue.byProvider (messages.queue.byChannel already set).`),delete r.byProvider,n.queue=r,e.messages=n)}},{id:`providers->channels`,describe:`Move provider config sections to channels.*`,apply:(e,t)=>{let n=[`whatsapp`,`telegram`,`discord`,`slack`,`signal`,`imessage`,`msteams`].filter(t=>w(e[t]));if(n.length===0)return;let r=z(e,`channels`);for(let i of n){let n=R(e[i]);if(!n)continue;let a=z(r,i),o=Object.keys(a).length>0;B(a,n),r[i]=a,delete e[i],t.push(o?`Merged ${i} → channels.${i}.`:`Moved ${i} → channels.${i}.`)}e.channels=r}},{id:`thread-bindings.ttlHours->idleHours`,describe:`Move legacy threadBindings.ttlHours keys to threadBindings.idleHours (session + channels.discord)`,apply:(e,t)=>{let n=R(e.session);n&&(Rf({owner:n,pathPrefix:`session`,changes:t}),e.session=n);let r=R(e.channels),i=R(r?.discord);if(!r||!i)return;Rf({owner:i,pathPrefix:`channels.discord`,changes:t});let a=R(i.accounts);if(a){for(let[e,n]of Object.entries(a)){let r=R(n);r&&(Rf({owner:r,pathPrefix:`channels.discord.accounts.${e}`,changes:t}),a[e]=r)}i.accounts=a}r.discord=i,e.channels=r}},{id:`channels.streaming-keys->channels.streaming`,describe:`Normalize legacy streaming keys to channels.<provider>.streaming (Telegram/Discord/Slack)`,apply:(e,t)=>{let n=R(e.channels);if(!n)return;let r=e=>{let n=n=>{let r=e.entry.streamMode!==void 0,i=e.entry.streaming;if(!r&&typeof i!=`boolean`)return!1;let a=n(e.entry);return e.entry.streaming=a,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${a}).`)),typeof i==`boolean`&&t.push(`Normalized ${e.pathPrefix}.streaming boolean → enum (${a}).`),!0},r=e.entry.streamMode!==void 0,i=e.entry.streaming,a=e.entry.nativeStreaming;if(e.provider===`telegram`){n(xf);return}if(e.provider===`discord`){n(Sf);return}if(!r&&typeof i!=`boolean`)return;let o=Cf(e.entry),s=wf(e.entry);e.entry.streaming=o,e.entry.nativeStreaming=s,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${o}).`)),typeof i==`boolean`?t.push(`Moved ${e.pathPrefix}.streaming (boolean) → ${e.pathPrefix}.nativeStreaming (${s}).`):typeof a!=`boolean`&&r&&t.push(`Set ${e.pathPrefix}.nativeStreaming → ${s}.`)},i=e=>{let t=R(n[e]);if(!t)return;r({provider:e,entry:t,pathPrefix:`channels.${e}`});let i=R(t.accounts);if(i)for(let[t,n]of Object.entries(i)){let i=R(n);i&&r({provider:e,entry:i,pathPrefix:`channels.${e}.accounts.${t}`})}};i(`telegram`),i(`discord`),i(`slack`)}},{id:`routing.allowFrom->channels.whatsapp.allowFrom`,describe:`Move routing.allowFrom to channels.whatsapp.allowFrom`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.allowFrom;if(r===void 0)return;let i=R(e.channels),a=i?R(i.whatsapp):null;if(!a){delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,t.push(`Removed routing.allowFrom (channels.whatsapp not configured).`);return}a.allowFrom===void 0?(a.allowFrom=r,t.push(`Moved routing.allowFrom → channels.whatsapp.allowFrom.`)):t.push(`Removed routing.allowFrom (channels.whatsapp.allowFrom already set).`),delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,i.whatsapp=a,e.channels=i}},{id:`routing.groupChat.requireMention->groups.*.requireMention`,describe:`Move routing.groupChat.requireMention to channels.whatsapp/telegram/imessage groups`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.groupChat&&typeof n.groupChat==`object`?n.groupChat:null;if(!r)return;let i=r.requireMention;if(i===void 0)return;let a=z(e,`channels`),o=(e,n)=>{if(n?.requireExisting&&!w(a[e]))return;let r=a[e]&&typeof a[e]==`object`?a[e]:{},{groups:o,entry:s}=If(r);s.requireMention===void 0?(s.requireMention=i,o[`*`]=s,r.groups=o,a[e]=r,t.push(`Moved routing.groupChat.requireMention → channels.${e}.groups."*".requireMention.`)):t.push(`Removed routing.groupChat.requireMention (channels.${e}.groups."*" already set).`)};o(`whatsapp`,{requireExisting:!0}),o(`telegram`),o(`imessage`),delete r.requireMention,Object.keys(r).length===0&&delete n.groupChat,Object.keys(n).length===0&&delete e.routing,e.channels=a}},{id:`gateway.token->gateway.auth.token`,describe:`Move gateway.token to gateway.auth.token`,apply:(e,t)=>{let n=e.gateway;if(!n||typeof n!=`object`)return;let r=n.token;if(r===void 0)return;let i=n,a=i.auth&&typeof i.auth==`object`?i.auth:{};a.token===void 0?(a.token=r,a.mode||=`token`,t.push(`Moved gateway.token → gateway.auth.token.`)):t.push(`Removed gateway.token (gateway.auth.token already set).`),delete i.token,Object.keys(a).length>0&&(i.auth=a),e.gateway=i}},{id:`telegram.requireMention->channels.telegram.groups.*.requireMention`,describe:`Move telegram.requireMention to channels.telegram.groups.*.requireMention`,apply:(e,t)=>{let n=z(e,`channels`),r=n.telegram;if(!r||typeof r!=`object`)return;let i=r.requireMention;if(i===void 0)return;let{groups:a,entry:o}=If(r);o.requireMention===void 0?(o.requireMention=i,a[`*`]=o,r.groups=a,t.push(`Moved telegram.requireMention → channels.telegram.groups."*".requireMention.`)):t.push(`Removed telegram.requireMention (channels.telegram.groups."*" already set).`),delete r.requireMention,n.telegram=r,e.channels=n}}];function Bf(e){let t=jf(e.source);if(!t){e.changes.push(e.invalidMessage);return}let n=z(z(z(e.raw,`tools`),`media`),`audio`);if((Array.isArray(n.models)?n.models:[]).length===0){n.enabled=!0,n.models=[t],e.changes.push(e.movedMessage);return}e.changes.push(e.alreadySetMessage)}const Vf=[{id:`agent.model-config-v2`,describe:`Migrate legacy agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks to agent.models + model lists`,apply:(e,t)=>{let n=R(e.agent),r=R(R(e.agents)?.defaults),i=n??r;if(!i)return;let a=n?`agent`:`agents.defaults`,o=typeof i.model==`string`?String(i.model):void 0,s=typeof i.imageModel==`string`?String(i.imageModel):void 0,c=Array.isArray(i.allowedModels)?i.allowedModels.map(String):[],l=Array.isArray(i.modelFallbacks)?i.modelFallbacks.map(String):[],u=Array.isArray(i.imageModelFallbacks)?i.imageModelFallbacks.map(String):[],d=i.modelAliases&&typeof i.modelAliases==`object`?i.modelAliases:{};if(!(o||s||c.length>0||l.length>0||u.length>0||Object.keys(d).length>0))return;let f=i.models&&typeof i.models==`object`?i.models:{},p=e=>{if(typeof e!=`string`)return;let t=e.trim();t&&(f[t]||(f[t]={}))};p(o),p(s);for(let e of c)p(e);for(let e of l)p(e);for(let e of u)p(e);for(let e of Object.values(d))typeof e==`string`&&p(e);for(let[e,t]of Object.entries(d)){if(typeof t!=`string`)continue;let n=t.trim();if(!n)continue;let r=f[n]&&typeof f[n]==`object`?f[n]:{};`alias`in r||(r.alias=e,f[n]=r)}let m=i.model&&typeof i.model==`object`?i.model:null;m?(!m.primary&&o&&(m.primary=o),l.length>0&&(!Array.isArray(m.fallbacks)||m.fallbacks.length===0)&&(m.fallbacks=l),i.model=m):(o||l.length>0)&&(i.model={primary:o,fallbacks:l.length?l:[]});let h=i.imageModel&&typeof i.imageModel==`object`?i.imageModel:null;h?(!h.primary&&s&&(h.primary=s),u.length>0&&(!Array.isArray(h.fallbacks)||h.fallbacks.length===0)&&(h.fallbacks=u),i.imageModel=h):(s||u.length>0)&&(i.imageModel={primary:s,fallbacks:u.length?u:[]}),i.models=f,o!==void 0&&t.push(`Migrated ${a}.model string → ${a}.model.primary.`),l.length>0&&t.push(`Migrated ${a}.modelFallbacks → ${a}.model.fallbacks.`),s!==void 0&&t.push(`Migrated ${a}.imageModel string → ${a}.imageModel.primary.`),u.length>0&&t.push(`Migrated ${a}.imageModelFallbacks → ${a}.imageModel.fallbacks.`),c.length>0&&t.push(`Migrated ${a}.allowedModels → ${a}.models.`),Object.keys(d).length>0&&t.push(`Migrated ${a}.modelAliases → ${a}.models.*.alias.`),delete i.allowedModels,delete i.modelAliases,delete i.modelFallbacks,delete i.imageModelFallbacks}},{id:`routing.agents-v2`,describe:`Move routing.agents/defaultAgentId to agents.list`,apply:(e,t)=>{let n=R(e.routing);if(!n)return;let r=R(n.agents),i=z(e,`agents`),a=Mf(i);if(r){for(let[e,n]of Object.entries(r)){let r=String(e??``).trim(),i=R(n);if(!r||!i)continue;let o=Pf(a,r),s={...i};if(`mentionPatterns`in s){let e=s.mentionPatterns,n=z(o,`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=e,t.push(`Moved routing.agents.${r}.mentionPatterns → agents.list (id "${r}").groupChat.mentionPatterns.`)):t.push(`Removed routing.agents.${r}.mentionPatterns (agents.list groupChat mentionPatterns already set).`),delete s.mentionPatterns}let c=R(s.groupChat);c&&(B(z(o,`groupChat`),c),delete s.groupChat);let l=R(s.sandbox);if(l){let e=R(l.tools);e&&(B(z(z(z(o,`tools`),`sandbox`),`tools`),e),delete l.tools,t.push(`Moved routing.agents.${r}.sandbox.tools → agents.list (id "${r}").tools.sandbox.tools.`)),s.sandbox=l}B(o,s)}delete n.agents,t.push(`Moved routing.agents → agents.list.`)}let o=typeof n.defaultAgentId==`string`?n.defaultAgentId.trim():``;if(o){if(a.some(e=>w(e)&&e.default===!0))t.push(`Removed routing.defaultAgentId (agents.list default already set).`);else{let e=Pf(a,o);e.default=!0,t.push(`Moved routing.defaultAgentId → agents.list (id "${o}").default.`)}delete n.defaultAgentId}a.length>0&&(i.list=a),Object.keys(n).length===0&&delete e.routing}},{id:`routing.config-v2`,describe:`Move routing bindings/groupChat/queue/agentToAgent/transcribeAudio`,apply:(e,t)=>{let n=R(e.routing);if(!n)return;if(n.bindings!==void 0&&(e.bindings===void 0?(e.bindings=n.bindings,t.push(`Moved routing.bindings → bindings.`)):t.push(`Removed routing.bindings (bindings already set).`),delete n.bindings),n.agentToAgent!==void 0){let r=z(e,`tools`);r.agentToAgent===void 0?(r.agentToAgent=n.agentToAgent,t.push(`Moved routing.agentToAgent → tools.agentToAgent.`)):t.push(`Removed routing.agentToAgent (tools.agentToAgent already set).`),delete n.agentToAgent}if(n.queue!==void 0){let r=z(e,`messages`);r.queue===void 0?(r.queue=n.queue,t.push(`Moved routing.queue → messages.queue.`)):t.push(`Removed routing.queue (messages.queue already set).`),delete n.queue}let r=R(n.groupChat);if(r){let i=r.historyLimit;if(i!==void 0){let n=z(z(e,`messages`),`groupChat`);n.historyLimit===void 0?(n.historyLimit=i,t.push(`Moved routing.groupChat.historyLimit → messages.groupChat.historyLimit.`)):t.push(`Removed routing.groupChat.historyLimit (messages.groupChat.historyLimit already set).`),delete r.historyLimit}let a=r.mentionPatterns;if(a!==void 0){let n=z(z(e,`messages`),`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=a,t.push(`Moved routing.groupChat.mentionPatterns → messages.groupChat.mentionPatterns.`)):t.push(`Removed routing.groupChat.mentionPatterns (messages.groupChat.mentionPatterns already set).`),delete r.mentionPatterns}Object.keys(r).length===0?delete n.groupChat:n.groupChat=r}n.transcribeAudio!==void 0&&(Bf({raw:e,source:n.transcribeAudio,changes:t,movedMessage:`Moved routing.transcribeAudio → tools.media.audio.models.`,alreadySetMessage:`Removed routing.transcribeAudio (tools.media.audio.models already set).`,invalidMessage:`Removed routing.transcribeAudio (invalid or empty command).`}),delete n.transcribeAudio),Object.keys(n).length===0&&delete e.routing}},{id:`audio.transcription-v2`,describe:`Move audio.transcription to tools.media.audio.models`,apply:(e,t)=>{let n=R(e.audio);n?.transcription!==void 0&&(Bf({raw:e,source:n.transcription,changes:t,movedMessage:`Moved audio.transcription → tools.media.audio.models.`,alreadySetMessage:`Removed audio.transcription (tools.media.audio.models already set).`,invalidMessage:`Removed audio.transcription (invalid or empty command).`}),delete n.transcription,Object.keys(n).length===0?delete e.audio:e.audio=n)}},{id:`media.preserveFilenames-v2`,describe:`Move top-level media.preserveFilenames to channels.msteams.preserveFilenames`,apply:(e,t)=>{let n=R(e.media);if(n?.preserveFilenames===void 0)return;let r=z(z(e,`channels`),`msteams`);r.preserveFilenames===void 0?(r.preserveFilenames=n.preserveFilenames,t.push(`Moved media.preserveFilenames → channels.msteams.preserveFilenames.`)):t.push(`Removed media.preserveFilenames (channels.msteams.preserveFilenames already set).`),delete n.preserveFilenames,Object.keys(n).length===0?delete e.media:e.media=n}}],Hf=[`e`,`vm`].join(``),Uf=[`camera.snap`,`camera.clip`,`screen.record`,`calendar.add`,`contacts.add`,`reminders.add`],Wf=[{id:`gateway.nodes.generated-deny-defaults`,describe:`Remove the redundant node denylist generated by older onboarding`,apply:(e,t)=>{let n=R(e.gateway),r=R(n?.nodes),i=r?.denyCommands;!n||!r||r.allowCommands!==void 0||r.browser!==void 0||!Array.isArray(i)||i.length!==Uf.length||!i.every((e,t)=>e===Uf[t])||(delete r.denyCommands,Object.keys(r).length===0&&delete n.nodes,t.push(`Removed the redundant gateway.nodes.denyCommands defaults generated by older onboarding.`))}},{id:`models.providers.request.allowPrivateNetwork`,describe:`Mark existing private model provider base URLs as explicitly allowed`,apply:(e,t)=>{let n=R(R(e.models)?.providers);if(n)for(let[e,r]of Object.entries(n)){let n=R(r),i=typeof n?.baseUrl==`string`?n.baseUrl:``;if(!n||!ll(i))continue;let a=R(n.request)??{};a.allowPrivateNetwork===void 0&&(a.allowPrivateNetwork=!0,n.request=a,t.push(`Added models.providers.${e}.request.allowPrivateNetwork=true for existing private model endpoint.`))}}},{id:`memorySearch->agents.defaults.memorySearch`,describe:`Move top-level memorySearch to agents.defaults.memorySearch`,apply:(e,t)=>{let n=R(e.memorySearch);if(!n)return;let r=z(e,`agents`),i=z(r,`defaults`),a=R(i.memorySearch);if(!a)i.memorySearch=n,t.push(`Moved memorySearch → agents.defaults.memorySearch.`);else{let e=structuredClone(a);B(e,n),i.memorySearch=e,t.push(`Merged memorySearch → agents.defaults.memorySearch (filled missing fields from legacy; kept explicit agents.defaults values).`)}r.defaults=i,e.agents=r,delete e.memorySearch}},{id:`auth.anthropic-claude-cli-mode-oauth`,describe:`Switch anthropic:claude-cli auth profile mode to oauth`,apply:(e,t)=>{let n=R(R(e.auth)?.profiles);if(!n)return;let r=R(n[`anthropic:claude-cli`]);r&&r.mode===`token`&&(r.mode=`oauth`,t.push(`Updated auth.profiles["anthropic:claude-cli"].mode → "oauth".`))}},{id:`tools.bash->tools.exec`,describe:`Move tools.bash to tools.exec`,apply:(e,t)=>{let n=z(e,`tools`),r=R(n.bash);r&&(n.exec===void 0?(n.exec=r,t.push(`Moved tools.bash → tools.exec.`)):t.push(`Removed tools.bash (tools.exec already set).`),delete n.bash)}},{id:`wallet.solana-only-runtime`,describe:`Remove legacy wallet chain entries after Solana-only runtime migration`,apply:(e,t)=>{let n=R(e.wallet);if(!n)return;let r=R(n.keystore);if(r&&Array.isArray(r.chainSupport)){let e=r.chainSupport.some(e=>e!==`solana`),n=r.chainSupport.length===1&&r.chainSupport[0]===`solana`;(e||!n)&&(r.chainSupport=[`solana`],t.push(`Normalized wallet.keystore.chainSupport → ["solana"] (removed legacy non-Solana entries).`))}let i=R(n.runtime);if(i&&Array.isArray(i.chains)){let e=i.chains.some(e=>e!==`solana`),n=i.chains.length===1&&i.chains[0]===`solana`;(e||!n)&&(i.chains=[`solana`],t.push(`Normalized wallet.runtime.chains → ["solana"] (removed legacy non-Solana entries).`))}let a=R(i?.policy);a&&Hf in a&&(delete a[Hf],t.push(`Removed wallet.runtime.policy legacy non-Solana policy block.`))}},{id:`messages.tts.enabled->auto`,describe:`Move messages.tts.enabled to messages.tts.auto`,apply:(e,t)=>{let n=R(R(e.messages)?.tts);if(n){if(n.auto!==void 0){`enabled`in n&&(delete n.enabled,t.push(`Removed messages.tts.enabled (messages.tts.auto already set).`));return}typeof n.enabled==`boolean`&&(n.auto=n.enabled?`always`:`off`,delete n.enabled,t.push(`Moved messages.tts.enabled → messages.tts.auto (${String(n.auto)}).`))}}},{id:`agent.defaults-v2`,describe:`Move agent config to agents.defaults and tools`,apply:(e,t)=>{let n=R(e.agent);if(!n)return;let r=z(e,`agents`),i=R(r.defaults)??{},a=z(e,`tools`),o=R(n.tools);o&&(a.allow===void 0&&o.allow!==void 0&&(a.allow=o.allow,t.push(`Moved agent.tools.allow → tools.allow.`)),a.deny===void 0&&o.deny!==void 0&&(a.deny=o.deny,t.push(`Moved agent.tools.deny → tools.deny.`)));let s=R(n.elevated);s&&(a.elevated===void 0?(a.elevated=s,t.push(`Moved agent.elevated → tools.elevated.`)):t.push(`Removed agent.elevated (tools.elevated already set).`));let c=R(n.bash);c&&(a.exec===void 0?(a.exec=c,t.push(`Moved agent.bash → tools.exec.`)):t.push(`Removed agent.bash (tools.exec already set).`));let l=R(n.sandbox);if(l){let e=R(l.tools);e&&(B(z(z(a,`sandbox`),`tools`),e),delete l.tools,t.push(`Moved agent.sandbox.tools → tools.sandbox.tools.`))}let u=R(n.subagents);if(u){let e=R(u.tools);e&&(B(z(z(a,`subagents`),`tools`),e),delete u.tools,t.push(`Moved agent.subagents.tools → tools.subagents.tools.`))}let d=structuredClone(n);delete d.tools,delete d.elevated,delete d.bash,w(d.sandbox)&&delete d.sandbox.tools,w(d.subagents)&&delete d.subagents.tools,B(i,d),r.defaults=i,e.agents=r,delete e.agent,t.push(`Moved agent → agents.defaults.`)}},{id:`identity->agents.list`,describe:`Move identity to agents.list[].identity`,apply:(e,t)=>{let n=R(e.identity);if(!n)return;let r=z(e,`agents`),i=Mf(r),a=Nf(e),o=Pf(i,a);o.identity===void 0?(o.identity=n,t.push(`Moved identity → agents.list (id "${a}").identity.`)):t.push(`Removed identity (agents.list identity already set).`),r.list=i,e.agents=r,delete e.identity}}];[...zf,...Vf,...Wf];function Gf(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Kf(e){return Gf(e)&&Object.prototype.hasOwnProperty.call(e,`ttlHours`)}function qf(e){return Gf(e)?Object.values(e).some(e=>Kf(Gf(e)?e.threadBindings:void 0)):!1}const Jf=[{path:[`whatsapp`],message:`whatsapp config moved to channels.whatsapp (auto-migrated on load).`},{path:[`telegram`],message:`telegram config moved to channels.telegram (auto-migrated on load).`},{path:[`discord`],message:`discord config moved to channels.discord (auto-migrated on load).`},{path:[`slack`],message:`slack config moved to channels.slack (auto-migrated on load).`},{path:[`signal`],message:`signal config moved to channels.signal (auto-migrated on load).`},{path:[`imessage`],message:`imessage config moved to channels.imessage (auto-migrated on load).`},{path:[`msteams`],message:`msteams config moved to channels.msteams (auto-migrated on load).`},{path:[`session`,`threadBindings`],message:`session.threadBindings.ttlHours was renamed to session.threadBindings.idleHours (auto-migrated on load).`,match:e=>Kf(e)},{path:[`channels`,`discord`,`threadBindings`],message:`channels.discord.threadBindings.ttlHours was renamed to channels.discord.threadBindings.idleHours (auto-migrated on load).`,match:e=>Kf(e)},{path:[`channels`,`discord`,`accounts`],message:`channels.discord.accounts.<id>.threadBindings.ttlHours was renamed to channels.discord.accounts.<id>.threadBindings.idleHours (auto-migrated on load).`,match:e=>qf(e)},{path:[`routing`,`allowFrom`],message:`routing.allowFrom was removed; use channels.whatsapp.allowFrom instead (auto-migrated on load).`},{path:[`routing`,`bindings`],message:`routing.bindings was moved; use top-level bindings instead (auto-migrated on load).`},{path:[`routing`,`agents`],message:`routing.agents was moved; use agents.list instead (auto-migrated on load).`},{path:[`routing`,`defaultAgentId`],message:`routing.defaultAgentId was moved; use agents.list[].default instead (auto-migrated on load).`},{path:[`routing`,`agentToAgent`],message:`routing.agentToAgent was moved; use tools.agentToAgent instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`requireMention`],message:`routing.groupChat.requireMention was removed; use channels.whatsapp/telegram/imessage groups defaults (e.g. channels.whatsapp.groups."*".requireMention) instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`mentionPatterns`],message:`routing.groupChat.mentionPatterns was moved; use agents.list[].groupChat.mentionPatterns or messages.groupChat.mentionPatterns instead (auto-migrated on load).`},{path:[`routing`,`queue`],message:`routing.queue was moved; use messages.queue instead (auto-migrated on load).`},{path:[`routing`,`transcribeAudio`],message:`routing.transcribeAudio was moved; use tools.media.audio.models instead (auto-migrated on load).`},{path:[`telegram`,`requireMention`],message:`telegram.requireMention was removed; use channels.telegram.groups."*".requireMention instead (auto-migrated on load).`},{path:[`identity`],message:`identity was moved; use agents.list[].identity instead (auto-migrated on load).`},{path:[`agent`],message:`agent.* was moved; use agents.defaults (and tools.* for tool/elevated/exec settings) instead (auto-migrated on load).`},{path:[`memorySearch`],message:`top-level memorySearch was moved; use agents.defaults.memorySearch instead (auto-migrated on load).`},{path:[`tools`,`bash`],message:`tools.bash was removed; use tools.exec instead (auto-migrated on load).`},{path:[`wallet`,`runtime`,`policy`,[`e`,`vm`].join(``)],message:`wallet.runtime.policy has a legacy non-Solana policy block; Fased wallet runtime is Solana-only (auto-migrated on load).`},{path:[`wallet`,`keystore`,`chainSupport`],message:`wallet.keystore.chainSupport contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`wallet`,`runtime`,`chains`],message:`wallet.runtime.chains contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`agent`,`model`],message:`agent.model string was replaced by agents.defaults.model.primary/fallbacks and agents.defaults.models (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`imageModel`],message:`agent.imageModel string was replaced by agents.defaults.imageModel.primary/fallbacks (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`allowedModels`],message:`agent.allowedModels was replaced by agents.defaults.models (auto-migrated on load).`},{path:[`agent`,`modelAliases`],message:`agent.modelAliases was replaced by agents.defaults.models.*.alias (auto-migrated on load).`},{path:[`agent`,`modelFallbacks`],message:`agent.modelFallbacks was replaced by agents.defaults.model.fallbacks (auto-migrated on load).`},{path:[`agent`,`imageModelFallbacks`],message:`agent.imageModelFallbacks was replaced by agents.defaults.imageModel.fallbacks (auto-migrated on load).`},{path:[`messages`,`tts`,`enabled`],message:`messages.tts.enabled was replaced by messages.tts.auto (auto-migrated on load).`},{path:[`gateway`,`token`],message:`gateway.token is ignored; use gateway.auth.token instead (auto-migrated on load).`}];function Yf(e){if(!e||typeof e!=`object`)return[];let t=e,n=[];for(let e of Jf){let r=t;for(let t of e.path){if(!r||typeof r!=`object`){r=void 0;break}r=r[t]}r!==void 0&&(!e.match||e.match(r,t))&&n.push({path:e.path.join(`.`),message:e.message})}return n}function Xf(e){return C(e)?typeof e.id==`string`&&e.id.length>0:!1}function Zf(e,t,n){if(!e.every(Xf))return;let r=[...e],i=new Map;for(let[e,t]of r.entries()){if(!Xf(t))return;i.set(t.id,e)}for(let e of t){if(!Xf(e)){r.push(structuredClone(e));continue}let t=i.get(e.id);if(t===void 0){r.push(structuredClone(e)),i.set(e.id,r.length-1);continue}r[t]=Qf(r[t],e,n)}return r}function Qf(e,t,n={}){if(!C(t))return t;let r=C(e)?{...e}:{};for(let[e,i]of Object.entries(t))if(!qi(e)){if(i===null){delete r[e];continue}if(n.mergeObjectArraysById&&Array.isArray(r[e])&&Array.isArray(i)){let t=Zf(r[e],i,n);if(t){r[e]=t;continue}}if(C(i)){let t=r[e];r[e]=Qf(C(t)?t:{},i,n);continue}r[e]=i}return r}const $f=new Set,ep=e=>!e||e.length===0?$f:new Set(e);function tp(e,t){let n=new Set;for(let t of e)t.startsWith(`--`)&&n.add(t);for(let e of t)e.startsWith(`--`)&&n.add(e);return Array.from(n)}function np(e){let t=new Map;for(let n of e)if(!(!n.startsWith(`--`)||n.length<=2))for(let e=3;e<=n.length;e+=1){let r=n.slice(0,e),i=t.get(r);if(i===void 0){t.set(r,n);continue}i!==n&&t.set(r,null)}return t}function rp(e){let t=ep(e.allowedValueFlags),n=ep(e.deniedFlags),r=tp(t,n);return{minPositional:e.minPositional,maxPositional:e.maxPositional,allowedValueFlags:t,deniedFlags:n,knownLongFlags:r,knownLongFlagsSet:new Set(r),longFlagPrefixMap:np(r)}}function ip(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,rp(t)]))}ip({jq:{maxPositional:1,allowedValueFlags:[`--arg`,`--argjson`,`--argstr`],deniedFlags:[`--argfile`,`--rawfile`,`--slurpfile`,`--from-file`,`--library-path`,`-L`,`-f`]},grep:{maxPositional:0,allowedValueFlags:[`--regexp`,`--max-count`,`--after-context`,`--before-context`,`--context`,`--devices`,`--binary-files`,`--exclude`,`--include`,`--label`,`-e`,`-m`,`-A`,`-B`,`-C`,`-D`],deniedFlags:[`--file`,`--exclude-from`,`--dereference-recursive`,`--directories`,`--recursive`,`-f`,`-d`,`-r`,`-R`]},cut:{maxPositional:0,allowedValueFlags:[`--bytes`,`--characters`,`--fields`,`--delimiter`,`--output-delimiter`,`-b`,`-c`,`-f`,`-d`]},sort:{maxPositional:0,allowedValueFlags:[`--key`,`--field-separator`,`--buffer-size`,`--parallel`,`--batch-size`,`-k`,`-t`,`-S`],deniedFlags:[`--compress-program`,`--files0-from`,`--output`,`--random-source`,`--temporary-directory`,`-T`,`-o`]},uniq:{maxPositional:0,allowedValueFlags:[`--skip-fields`,`--skip-chars`,`--check-chars`,`--group`,`-f`,`-s`,`-w`]},head:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`-n`,`-c`]},tail:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`--sleep-interval`,`--max-unchanged-stats`,`--pid`,`-n`,`-c`]},tr:{minPositional:1,maxPositional:2},wc:{maxPositional:0,deniedFlags:[`--files0-from`]}});function ap(e){let t=e.trim().toLowerCase();return t.length>0?t:null}function op(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.trunc(e);return t>=0?t:void 0}function sp(e){if(!Array.isArray(e)||e.length===0)return;let t=Array.from(new Set(e.map(e=>e.trim()).filter(e=>e.length>0))).toSorted((e,t)=>e.localeCompare(t));return t.length>0?t:void 0}function cp(e){let t=op(e.minPositional),n=op(e.maxPositional);return{minPositional:t,maxPositional:t!==void 0&&n!==void 0&&n<t?t:n,allowedValueFlags:sp(e.allowedValueFlags),deniedFlags:sp(e.deniedFlags)}}function lp(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e)){let e=ap(n);e&&(t[e]=cp(r))}return t}const up=[`ash`,`bash`,`dash`,`fish`,`ksh`,`sh`,`zsh`],dp=[`cmd`],fp=[`powershell`,`pwsh`],pp=[`chrt`,`doas`,`env`,`ionice`,`nice`,`nohup`,`setsid`,`stdbuf`,`sudo`,`taskset`,`timeout`];function mp(e){let t=new Set;for(let n of e)t.add(n),t.add(`${n}.exe`);return Array.from(t)}new Set(mp(dp)),new Set(mp(fp)),new Set(mp(pp)),new Set([...up,...dp,...fp]);function hp(e){if(!Array.isArray(e))return[];let t=e.map(e=>e.trim()).filter(e=>e.length>0);return Array.from(new Set(t))}function gp(e){let t=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=lp(t.safeBinProfiles);t.safeBinProfiles=Object.keys(n).length>0?n:void 0;let r=hp(t.safeBinTrustedDirs);t.safeBinTrustedDirs=r.length>0?r:void 0};t(e.tools?.exec);let n=Array.isArray(e.agents?.list)?e.agents.list:[];for(let e of n)t(e?.tools?.exec)}const _p=/^~(?=$|[\\/])/,vp=/(dir|path|paths|file|root|workspace)$/i,yp=new Set([`paths`,`pathPrepend`]);function bp(e,t){return!_p.test(t.trim())||!e?t:vp.test(e)||yp.has(e)?T(t):t}function xp(e,t){if(typeof t==`string`)return bp(e,t);if(Array.isArray(t)){let n=!!(e&&yp.has(e));return t.map(t=>typeof t==`string`?n?bp(e,t):t:Array.isArray(t)||C(t)?xp(void 0,t):t)}if(!C(t))return t;for(let[e,n]of Object.entries(t)){let r=xp(e,n);r!==n&&(t[e]=r)}return t}function Sp(e){return!e||typeof e!=`object`||xp(void 0,e),e}function Cp(e){return typeof e==`string`&&e.trim()||null}function wp(e,t){return e?.some(e=>Cp(e)===t)===!0}function Tp(e){if(e.plugins?.enabled===!1)return null;let t=Cp(e.plugins?.slots?.memory)??`memory-core`;return t.toLowerCase()===`none`||e.plugins?.entries?.[t]?.enabled===!1||wp(e.plugins?.deny,t)?null:t}function Ep(e){let t=e.plugins?.allow,n=Array.isArray(t),r=new Set((t??[]).map(Cp).filter(e=>e!==null)),i=new Set;for(let[t,n]of Object.entries(e.plugins?.entries??{})){if(n?.enabled===!1)continue;let e=Cp(t);e&&i.add(e)}for(let t of Object.keys(e.plugins?.installs??{})){let e=Cp(t);e&&i.add(e)}let a=Tp(e);a&&(n||i.size>0)&&i.add(a);let o=new Set;for(let e of i)r.has(e)||(r.add(e),o.add(e));if(o.size===0)return{config:e,repairedPluginIds:[]};let s=[...o].toSorted((e,t)=>e.localeCompare(t)),c=[...r].toSorted((e,t)=>e.localeCompare(t));return{config:{...e,plugins:{...e.plugins,allow:c}},repairedPluginIds:s}}let Dp={};function Op(e,t){if(!C(e)||!C(t))return t;let n={...e};for(let[r,i]of Object.entries(t))i===void 0||qi(r)||(n[r]=Op(e[r],i));return n}function kp(e){return!Dp||Object.keys(Dp).length===0?e:Op(e,Dp)}const Ap=new te({allErrors:!0,strict:!1,removeAdditional:!1}),jp=new Map;function Mp(e){return!e||e.length===0?[`invalid config`]:e.map(e=>`${e.instancePath?.replace(/^\//,``).replace(/\//g,`.`)||`<root>`}: ${e.message??`invalid`}`)}function Np(e){let t=jp.get(e.cacheKey);return(!t||t.schema!==e.schema)&&(t={validate:Ap.compile(e.schema),schema:e.schema},jp.set(e.cacheKey,t)),t.validate(e.value)?{ok:!0}:{ok:!1,errors:Mp(t.validate.errors)}}const Pp=/^data:/i,Fp=/^https?:\/\//i,Ip=/^[a-z][a-z0-9+.-]*:/i,Lp=/^[a-zA-Z]:[\\/]/;function Rp(e){return Pp.test(e)}function zp(e){return Fp.test(e)}function Bp(e){return Ip.test(e)}function Vp(e){return Lp.test(e)}function Hp(e,t){let n=i.relative(e,t);return n===``?!0:!n.startsWith(`..`)&&!i.isAbsolute(n)}const Up={b:1,kb:1024,k:1024,mb:1024**2,m:1024**2,gb:1024**3,g:1024**3,tb:1024**4,t:1024**4};function Wp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid byte size (empty)`);let r=/^(\d+(?:\.\d+)?)([a-z]+)?$/.exec(n);if(!r)throw Error(`invalid byte size: ${e}`);let i=Number(r[1]);if(!Number.isFinite(i)||i<0)throw Error(`invalid byte size: ${e}`);let a=Up[(r[2]??t?.defaultUnit??`b`).toLowerCase()];if(!a)throw Error(`invalid byte size unit: ${e}`);let o=Math.round(i*a);if(!Number.isFinite(o))throw Error(`invalid byte size: ${e}`);return o}const Gp={ms:1,s:1e3,m:6e4,h:36e5,d:864e5};function Kp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid duration (empty)`);let r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(n);if(r){let n=Number(r[1]);if(!Number.isFinite(n)||n<0)throw Error(`invalid duration: ${e}`);let i=r[2]??t?.defaultUnit??`ms`,a=Math.round(n*Gp[i]);if(!Number.isFinite(a))throw Error(`invalid duration: ${e}`);return a}let i=0,a=0;for(let t of n.matchAll(/(\d+(?:\.\d+)?)(ms|s|m|h|d)/g)){let[n,r,o]=t,s=t.index??-1;if(!n||!r||!o||s<0||s!==a)throw Error(`invalid duration: ${e}`);let c=Number(r);if(!Number.isFinite(c)||c<0)throw Error(`invalid duration: ${e}`);let l=Gp[o];if(!l)throw Error(`invalid duration: ${e}`);i+=c*l,a+=n.length}if(a!==n.length||a===0)throw Error(`invalid duration: ${e}`);let o=Math.round(i);if(!Number.isFinite(o))throw Error(`invalid duration: ${e}`);return o}function qp(e){return e?.trim().toLowerCase()||void 0}function Jp(e){let t=qp(e.network);return t?t===`host`?`host`:t.startsWith(`container:`)&&e.allowContainerNamespaceJoin!==!0?`container_namespace_join`:null:null}const Yp=y.union([y.string(),y.object({primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional()}).strict()]),Xp=y.object({cheapCheck:y.string().optional(),strong:y.string().optional(),escalation:y.string().optional(),coding:y.string().optional(),summarizer:y.string().optional()}).strict(),Zp=y.object({profileId:y.string().optional(),primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional(),taskModels:Xp.optional()}).strict(),Qp=[`openai-completions`,`openai-responses`,`openai-codex-responses`,`anthropic-messages`,`google-generative-ai`,`github-copilot`,`ollama`],$p=y.union([y.literal(`allow`),y.literal(`deny`)]),em=y.union([y.literal(`direct`),y.literal(`group`),y.literal(`channel`),y.literal(`dm`)]).optional();function tm(){return y.object({default:$p.optional(),rules:y.array(y.object({action:$p,match:y.object({channel:y.string().optional(),chatType:em,keyPrefix:y.string().optional(),rawKeyPrefix:y.string().optional()}).strict().optional()}).strict()).optional()}).strict().optional()}const V=y.registry(),nm=/^[A-Z][A-Z0-9_]{0,127}$/,rm=/^[a-z][a-z0-9_-]{0,63}$/,im=/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/,am=/^[A-Za-z]:[\\/]/,om=/^\\\\[^\\]+\\[^\\]+/;function sm(e){return i.isAbsolute(e)||am.test(e)||om.test(e)}const cm=y.object({source:y.literal(`env`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().regex(nm,`Env secret reference id must match /^[A-Z][A-Z0-9_]{0,127}$/ (example: "OPENAI_API_KEY").`)}).strict(),lm=y.object({source:y.literal(`file`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().refine(mu,`File secret reference id must be an absolute JSON pointer (example: "/providers/openai/apiKey"), or "value" for singleValue mode.`)}).strict(),um=y.object({source:y.literal(`exec`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().regex(im,`Exec secret reference id must match /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/ (example: "vault/openai/api-key").`)}).strict(),dm=y.discriminatedUnion(`source`,[cm,lm,um]),H=y.union([y.string(),dm]),fm=y.object({source:y.literal(`env`),allowlist:y.array(y.string().regex(nm)).max(256).optional()}).strict(),pm=y.object({source:y.literal(`file`),path:y.string().min(1),mode:y.union([y.literal(`singleValue`),y.literal(`json`)]).optional(),timeoutMs:y.number().int().positive().max(12e4).optional(),maxBytes:y.number().int().positive().max(20*1024*1024).optional()}).strict(),mm=y.object({source:y.literal(`exec`),command:y.string().min(1).refine(e=>Af(e),`secrets.providers.*.command is unsafe.`).refine(e=>sm(e),`secrets.providers.*.command must be an absolute path.`),args:y.array(y.string().max(1024)).max(128).optional(),timeoutMs:y.number().int().positive().max(12e4).optional(),noOutputTimeoutMs:y.number().int().positive().max(12e4).optional(),maxOutputBytes:y.number().int().positive().max(20*1024*1024).optional(),jsonOnly:y.boolean().optional(),env:y.record(y.string(),y.string()).optional(),passEnv:y.array(y.string().regex(nm)).max(128).optional(),trustedDirs:y.array(y.string().min(1).refine(e=>sm(e),`trustedDirs entries must be absolute paths.`)).max(64).optional(),allowInsecurePath:y.boolean().optional(),allowSymlinkCommand:y.boolean().optional()}).strict(),hm=y.discriminatedUnion(`source`,[fm,pm,mm]),gm=y.object({providers:y.object({}).catchall(hm).optional(),defaults:y.object({env:y.string().regex(rm).optional(),file:y.string().regex(rm).optional(),exec:y.string().regex(rm).optional()}).strict().optional(),resolution:y.object({maxProviderConcurrency:y.number().int().positive().max(16).optional(),maxRefsPerProvider:y.number().int().positive().max(4096).optional(),maxBatchBytes:y.number().int().positive().max(5*1024*1024).optional()}).strict().optional()}).strict().optional(),_m=y.enum(Qp),vm=y.object({supportsStore:y.boolean().optional(),supportsDeveloperRole:y.boolean().optional(),supportsReasoningEffort:y.boolean().optional(),supportsUsageInStreaming:y.boolean().optional(),supportsStrictMode:y.boolean().optional(),maxTokensField:y.union([y.literal(`max_completion_tokens`),y.literal(`max_tokens`)]).optional(),thinkingFormat:y.union([y.literal(`openai`),y.literal(`zai`),y.literal(`qwen`)]).optional(),requiresToolResultName:y.boolean().optional(),requiresAssistantAfterToolResult:y.boolean().optional(),requiresThinkingAsText:y.boolean().optional(),requiresMistralToolIds:y.boolean().optional()}).strict().optional(),ym=y.object({tools:y.boolean().optional(),json:y.boolean().optional(),audio:y.boolean().optional(),video:y.boolean().optional(),speech:y.boolean().optional(),fixedReasoning:y.boolean().optional(),thinkingLevels:y.array(y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)])).optional(),defaultThinkingLevel:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)]).optional(),thinkingMode:y.union([y.literal(`openai-reasoning-effort`),y.literal(`anthropic-thinking-budget`),y.literal(`anthropic-adaptive`),y.literal(`google-thinking-budget`),y.literal(`xai-reasoning-effort`),y.literal(`xai-multi-agent-effort`),y.literal(`mistral-reasoning-effort`),y.literal(`volcengine-reasoning-effort`),y.literal(`byteplus-thinking-type`),y.literal(`zai-binary`),y.literal(`qwen-thinking`),y.literal(`moonshot-thinking`),y.literal(`generic-reasoning`)]).optional(),reasoningBudgetSupported:y.boolean().optional()}).strict().optional(),bm=y.object({id:y.string().min(1),name:y.string().min(1),api:_m.optional(),reasoning:y.boolean().optional(),input:y.array(y.union([y.literal(`text`),y.literal(`image`)])).optional(),cost:y.object({input:y.number().optional(),output:y.number().optional(),cacheRead:y.number().optional(),cacheWrite:y.number().optional()}).strict().optional(),contextWindow:y.number().positive().optional(),maxTokens:y.number().positive().optional(),headers:y.record(y.string(),y.string()).optional(),compat:vm,capabilities:ym}).strict(),xm=y.object({baseUrl:y.string().min(1),apiKey:H.optional().register(V),auth:y.union([y.literal(`api-key`),y.literal(`oauth`),y.literal(`token`)]).optional(),api:_m.optional(),headers:y.record(y.string(),y.string()).optional(),authHeader:y.boolean().optional(),request:y.object({allowPrivateNetwork:y.boolean().optional()}).strict().optional(),models:y.array(bm)}).strict(),Sm=y.object({mode:y.union([y.literal(`merge`),y.literal(`replace`)]).optional(),providers:y.record(y.string(),xm).optional()}).strict().optional(),Cm=y.object({mentionPatterns:y.array(y.string()).optional(),historyLimit:y.number().int().positive().optional()}).strict().optional(),U=y.object({historyLimit:y.number().int().min(0).optional()}).strict(),wm=y.object({name:y.string().optional(),theme:y.string().optional(),emoji:y.string().optional(),avatar:y.string().optional()}).strict().optional(),W=y.union([y.literal(`steer`),y.literal(`followup`),y.literal(`collect`),y.literal(`steer-backlog`),y.literal(`steer+backlog`),y.literal(`queue`),y.literal(`interrupt`)]),Tm=y.union([y.literal(`old`),y.literal(`new`),y.literal(`summarize`)]),Em=y.union([y.literal(`off`),y.literal(`first`),y.literal(`all`)]),Dm=y.union([y.literal(`never`),y.literal(`instant`),y.literal(`thinking`),y.literal(`message`)]),G=y.enum([`open`,`disabled`,`allowlist`]),K=y.enum([`pairing`,`allowlist`,`open`,`disabled`]),q=y.object({minChars:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),idleMs:y.number().int().nonnegative().optional()}).strict();y.number().int().min(0).optional(),y.number().int().min(0).optional(),y.record(y.string(),U.optional()).optional(),y.number().int().positive().optional(),y.enum([`length`,`newline`]).optional(),y.boolean().optional(),q.optional(),y.string().optional(),y.number().positive().optional();const Om=y.object({minChars:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),breakPreference:y.union([y.literal(`paragraph`),y.literal(`newline`),y.literal(`sentence`)]).optional()}).strict(),km=y.enum([`off`,`bullets`,`code`]),J=y.object({tables:km.optional()}).strict().optional(),Am=y.enum([`elevenlabs`,`openai`,`edge`]),jm=y.enum([`final`,`all`]),Mm=y.enum([`off`,`always`,`inbound`,`tagged`]),Nm=y.object({auto:Mm.optional(),enabled:y.boolean().optional(),mode:jm.optional(),provider:Am.optional(),summaryModel:y.string().optional(),modelOverrides:y.object({enabled:y.boolean().optional(),allowText:y.boolean().optional(),allowProvider:y.boolean().optional(),allowVoice:y.boolean().optional(),allowModelId:y.boolean().optional(),allowVoiceSettings:y.boolean().optional(),allowNormalization:y.boolean().optional(),allowSeed:y.boolean().optional()}).strict().optional(),elevenlabs:y.object({apiKey:y.string().optional().register(V),baseUrl:y.string().optional(),voiceId:y.string().optional(),modelId:y.string().optional(),seed:y.number().int().min(0).max(4294967295).optional(),applyTextNormalization:y.enum([`auto`,`on`,`off`]).optional(),languageCode:y.string().optional(),voiceSettings:y.object({stability:y.number().min(0).max(1).optional(),similarityBoost:y.number().min(0).max(1).optional(),style:y.number().min(0).max(1).optional(),useSpeakerBoost:y.boolean().optional(),speed:y.number().min(.5).max(2).optional()}).strict().optional()}).strict().optional(),openai:y.object({apiKey:y.string().optional().register(V),model:y.string().optional(),voice:y.string().optional()}).strict().optional(),edge:y.object({enabled:y.boolean().optional(),voice:y.string().optional(),lang:y.string().optional(),outputFormat:y.string().optional(),pitch:y.string().optional(),rate:y.string().optional(),volume:y.string().optional(),saveSubtitles:y.boolean().optional(),proxy:y.string().optional(),timeoutMs:y.number().int().min(1e3).max(12e4).optional()}).strict().optional(),prefsPath:y.string().optional(),maxTextLength:y.number().int().min(1).optional(),timeoutMs:y.number().int().min(1e3).max(12e4).optional()}).strict().optional(),Pm=y.object({mode:y.union([y.literal(`off`),y.literal(`natural`),y.literal(`custom`)]).optional(),minMs:y.number().int().nonnegative().optional(),maxMs:y.number().int().nonnegative().optional()}).strict(),Fm=y.object({noOutputTimeoutMs:y.number().int().min(1e3).optional(),noOutputTimeoutRatio:y.number().min(.05).max(.95).optional(),minMs:y.number().int().min(1e3).optional(),maxMs:y.number().int().min(1e3).optional()}).strict().optional(),Im=y.object({command:y.string(),args:y.array(y.string()).optional(),output:y.union([y.literal(`json`),y.literal(`text`),y.literal(`jsonl`)]).optional(),resumeOutput:y.union([y.literal(`json`),y.literal(`text`),y.literal(`jsonl`)]).optional(),input:y.union([y.literal(`arg`),y.literal(`stdin`)]).optional(),maxPromptArgChars:y.number().int().positive().optional(),env:y.record(y.string(),y.string()).optional(),clearEnv:y.array(y.string()).optional(),modelArg:y.string().optional(),modelAliases:y.record(y.string(),y.string()).optional(),sessionArg:y.string().optional(),sessionArgs:y.array(y.string()).optional(),resumeArgs:y.array(y.string()).optional(),sessionMode:y.union([y.literal(`always`),y.literal(`existing`),y.literal(`none`)]).optional(),sessionIdFields:y.array(y.string()).optional(),systemPromptArg:y.string().optional(),systemPromptMode:y.union([y.literal(`append`),y.literal(`replace`)]).optional(),systemPromptWhen:y.union([y.literal(`first`),y.literal(`always`),y.literal(`never`)]).optional(),imageArg:y.string().optional(),imageMode:y.union([y.literal(`repeat`),y.literal(`list`)]).optional(),serialize:y.boolean().optional(),reliability:y.object({watchdog:y.object({fresh:Fm,resume:Fm}).strict().optional()}).strict().optional()}).strict(),Lm=e=>(e??[]).map(e=>String(e).trim()).filter(Boolean),Y=e=>{e.policy===`open`&&(Lm(e.allowFrom).includes(`*`)||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path,message:e.message}))},X=e=>{e.policy===`allowlist`&&(Lm(e.allowFrom).length>0||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path,message:e.message}))},Rm=y.enum([`thread`,`top-level`]),zm=y.object({attempts:y.number().int().min(1).optional(),minDelayMs:y.number().int().min(0).optional(),maxDelayMs:y.number().int().min(0).optional(),jitter:y.number().min(0).max(1).optional()}).strict().optional(),Bm=y.object({whatsapp:W.optional(),telegram:W.optional(),discord:W.optional(),irc:W.optional(),slack:W.optional(),mattermost:W.optional(),signal:W.optional(),imessage:W.optional(),msteams:W.optional(),webchat:W.optional()}).strict().optional(),Vm=y.record(y.string(),y.number().int().nonnegative()).optional(),Hm=y.object({mode:W.optional(),byChannel:Bm,debounceMs:y.number().int().nonnegative().optional(),debounceMsByChannel:Vm,cap:y.number().int().positive().optional(),drop:Tm.optional()}).strict().optional(),Um=y.object({debounceMs:y.number().int().nonnegative().optional(),byChannel:Vm}).strict().optional(),Wm=y.object({command:y.array(y.string()).superRefine((e,t)=>{let n=e[0];Af(n)||t.addIssue({code:y.ZodIssueCode.custom,path:[0],message:`expected safe executable name or path`})}),timeoutSeconds:y.number().int().positive().optional()}).strict().optional(),Gm=y.string().regex(/^#?[0-9a-fA-F]{6}$/,`expected hex color (RRGGBB)`),Km=y.string().refine(Af,`expected safe executable name or path`),qm=tm(),Jm=y.array(y.union([y.literal(`image`),y.literal(`audio`),y.literal(`video`)])).optional(),Ym=y.object({mode:y.union([y.literal(`first`),y.literal(`all`)]).optional(),maxAttachments:y.number().int().positive().optional(),prefer:y.union([y.literal(`first`),y.literal(`last`),y.literal(`path`),y.literal(`url`)]).optional()}).strict().optional(),Xm=y.object({detectLanguage:y.boolean().optional(),punctuate:y.boolean().optional(),smartFormat:y.boolean().optional()}).strict().optional(),Zm=y.union([y.string(),y.number(),y.boolean()]),Qm=y.record(y.string(),y.record(y.string(),Zm)).optional(),$m={prompt:y.string().optional(),timeoutSeconds:y.number().int().positive().optional(),language:y.string().optional(),providerOptions:Qm,deepgram:Xm,baseUrl:y.string().optional(),headers:y.record(y.string(),y.string()).optional()},eh=y.object({provider:y.string().optional(),model:y.string().optional(),capabilities:Jm,type:y.union([y.literal(`provider`),y.literal(`cli`)]).optional(),command:y.string().optional(),args:y.array(y.string()).optional(),maxChars:y.number().int().positive().optional(),maxBytes:y.number().int().positive().optional(),...$m,profile:y.string().optional(),preferredProfile:y.string().optional()}).strict().optional(),th=y.object({enabled:y.boolean().optional(),scope:qm,maxBytes:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),...$m,attachments:Ym,models:y.array(eh).optional()}).strict().optional(),nh=y.object({models:y.array(eh).optional(),concurrency:y.number().int().positive().optional(),image:th.optional(),audio:th.optional(),video:th.optional()}).strict().optional(),rh=y.object({type:y.literal(`cli`).optional(),command:y.string().min(1),args:y.array(y.string()).optional(),timeoutSeconds:y.number().int().positive().optional()}).strict(),ih=y.object({enabled:y.boolean().optional(),scope:qm,maxLinks:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),models:y.array(rh).optional()}).strict().optional(),ah=y.union([y.boolean(),y.literal(`auto`)]),oh=y.object({native:ah.optional(),nativeSkills:ah.optional()}).strict().optional(),sh=y.object({every:y.string().optional(),activeHours:y.object({start:y.string().optional(),end:y.string().optional(),timezone:y.string().optional()}).strict().optional(),model:y.string().optional(),session:y.string().optional(),includeReasoning:y.boolean().optional(),target:y.string().optional(),directPolicy:y.union([y.literal(`allow`),y.literal(`block`)]).optional(),to:y.string().optional(),accountId:y.string().optional(),prompt:y.string().optional(),ackMaxChars:y.number().int().nonnegative().optional(),suppressToolErrorWarnings:y.boolean().optional()}).strict().superRefine((e,t)=>{if(!e.every)return;try{Kp(e.every,{defaultUnit:`m`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`every`],message:`invalid duration (use ms, s, m, h)`})}let n=e.activeHours;if(!n)return;let r=/^([01]\d|2[0-3]|24):([0-5]\d)$/,i=(e,n,i)=>{if(!e)return;if(!r.test(e)){t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (use "HH:MM" 24h format)`});return}let[a,o]=e.split(`:`),s=Number(a);if(s===24&&Number(o)!==0){t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (24:00 is the only allowed 24:xx value)`});return}s===24&&!n.allow24&&t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (start cannot be 24:00)`})};i(n.start,{allow24:!1},`start`),i(n.end,{allow24:!0},`end`)}).optional(),ch=y.object({image:y.string().optional(),containerPrefix:y.string().optional(),workdir:y.string().optional(),readOnlyRoot:y.boolean().optional(),tmpfs:y.array(y.string()).optional(),network:y.string().optional(),user:y.string().optional(),capDrop:y.array(y.string()).optional(),env:y.record(y.string(),y.string()).optional(),setupCommand:y.string().optional(),pidsLimit:y.number().int().positive().optional(),memory:y.union([y.string(),y.number()]).optional(),memorySwap:y.union([y.string(),y.number()]).optional(),cpus:y.number().positive().optional(),ulimits:y.record(y.string(),y.union([y.string(),y.number(),y.object({soft:y.number().int().nonnegative().optional(),hard:y.number().int().nonnegative().optional()}).strict()])).optional(),seccompProfile:y.string().optional(),apparmorProfile:y.string().optional(),dns:y.array(y.string()).optional(),extraHosts:y.array(y.string()).optional(),binds:y.array(y.string()).optional(),dangerouslyAllowReservedContainerTargets:y.boolean().optional(),dangerouslyAllowExternalBindSources:y.boolean().optional(),dangerouslyAllowContainerNamespaceJoin:y.boolean().optional()}).strict().superRefine((e,t)=>{if(e.binds)for(let n=0;n<e.binds.length;n+=1){let r=e.binds[n]?.trim()??``;if(!r){t.addIssue({code:y.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount entry must be a non-empty string.`});continue}let i=r.indexOf(`:`),a=(i<=0?r:r.slice(0,i)).trim();a.startsWith(`/`)||t.addIssue({code:y.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount "${r}" uses a non-absolute source path "${a}". Only absolute POSIX paths are supported for sandbox binds.`})}let n=Jp({network:e.network,allowContainerNamespaceJoin:e.dangerouslyAllowContainerNamespaceJoin===!0});n===`host`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "host" is blocked. Use "bridge" or "none" instead.`}),n===`container_namespace_join`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "container:*" is blocked by default. Use a custom bridge network, or set dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`}),e.seccompProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`seccompProfile`],message:`Sandbox security: seccomp profile "unconfined" is blocked. Use a custom seccomp profile file or omit this setting.`}),e.apparmorProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`apparmorProfile`],message:`Sandbox security: apparmor profile "unconfined" is blocked. Use a named AppArmor profile or omit this setting.`})}).optional(),lh=y.object({enabled:y.boolean().optional(),image:y.string().optional(),containerPrefix:y.string().optional(),network:y.string().optional(),cdpPort:y.number().int().positive().optional(),cdpSourceRange:y.string().optional(),vncPort:y.number().int().positive().optional(),noVncPort:y.number().int().positive().optional(),headless:y.boolean().optional(),enableNoVnc:y.boolean().optional(),allowHostControl:y.boolean().optional(),autoStart:y.boolean().optional(),autoStartTimeoutMs:y.number().int().positive().optional(),binds:y.array(y.string()).optional()}).superRefine((e,t)=>{e.network?.trim().toLowerCase()===`host`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: browser network mode "host" is blocked. Use "bridge" or a custom bridge network instead.`})}).strict().optional(),uh=y.object({idleHours:y.number().int().nonnegative().optional(),maxAgeDays:y.number().int().nonnegative().optional()}).strict().optional(),Z=y.object({allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional()}).strict().superRefine((e,t)=>{e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:y.ZodIssueCode.custom,message:`tools policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`})}).optional(),dh=y.object({enabled:y.boolean().optional(),provider:y.string().optional(),apiKey:H.optional().register(V),maxResults:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),cacheTtlMinutes:y.number().nonnegative().optional(),duckduckgo:y.object({region:y.string().optional(),safeSearch:y.union([y.literal(`strict`),y.literal(`moderate`),y.literal(`off`)]).optional()}).strict().optional(),exa:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),type:y.union([y.literal(`auto`),y.literal(`neural`),y.literal(`fast`),y.literal(`deep`),y.literal(`deep-reasoning`),y.literal(`instant`)]).optional()}).strict().optional(),firecrawl:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional()}).strict().optional(),perplexity:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),model:y.string().optional()}).strict().optional(),grok:y.object({apiKey:H.optional().register(V),model:y.string().optional(),inlineCitations:y.boolean().optional()}).strict().optional(),gemini:y.object({apiKey:H.optional().register(V),model:y.string().optional()}).strict().optional(),kimi:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),model:y.string().optional()}).strict().optional(),searxng:y.object({baseUrl:y.string().optional(),categories:y.string().optional(),language:y.string().optional()}).strict().optional(),tavily:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),includeAnswer:y.boolean().optional(),searchDepth:y.union([y.literal(`basic`),y.literal(`advanced`)]).optional(),topic:y.string().optional()}).strict().optional()}).strict().optional(),fh=y.object({enabled:y.boolean().optional(),maxChars:y.number().int().positive().optional(),maxCharsCap:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),cacheTtlMinutes:y.number().nonnegative().optional(),maxRedirects:y.number().int().nonnegative().optional(),userAgent:y.string().optional(),readability:y.boolean().optional(),firecrawl:y.object({enabled:y.boolean().optional(),apiKey:H.optional().register(V),baseUrl:y.string().optional(),onlyMainContent:y.boolean().optional(),maxAgeMs:y.number().int().nonnegative().optional(),timeoutSeconds:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),ph=y.object({search:dh,fetch:fh}).strict().optional(),mh=y.union([y.literal(`minimal`),y.literal(`coding`),y.literal(`messaging`),y.literal(`full`)]).optional();function hh(e,t,n){e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:y.ZodIssueCode.custom,message:n})}const gh=y.object({allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),profile:mh}).strict().superRefine((e,t)=>{hh(e,t,`tools.byProvider policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}),_h=y.record(y.string(),y.array(y.union([y.string(),y.number()]))).optional(),vh=y.object({enabled:y.boolean().optional(),workspaceOnly:y.boolean().optional(),allowModels:y.array(y.string()).optional()}).strict().optional(),yh=y.object({minPositional:y.number().int().nonnegative().optional(),maxPositional:y.number().int().nonnegative().optional(),allowedValueFlags:y.array(y.string()).optional(),deniedFlags:y.array(y.string()).optional()}).strict(),bh={host:y.enum([`auto`,`sandbox`,`gateway`,`node`]).optional(),security:y.enum([`deny`,`allowlist`,`full`]).optional(),ask:y.enum([`off`,`on-miss`,`always`]).optional(),node:y.string().optional(),pathPrepend:y.array(y.string()).optional(),safeBins:y.array(y.string()).optional(),safeBinTrustedDirs:y.array(y.string()).optional(),safeBinProfiles:y.record(y.string(),yh).optional(),backgroundMs:y.number().int().positive().optional(),timeoutSec:y.number().int().positive().optional(),cleanupMs:y.number().int().positive().optional(),notifyOnExit:y.boolean().optional(),notifyOnExitEmptySuccess:y.boolean().optional(),applyPatch:vh},xh=y.object({...bh,approvalRunningNoticeMs:y.number().int().nonnegative().optional()}).strict().optional(),Sh=y.object(bh).strict().optional(),Ch=y.object({workspaceOnly:y.boolean().optional()}).strict().optional(),wh=y.object({genericRepeat:y.boolean().optional(),knownPollNoProgress:y.boolean().optional(),pingPong:y.boolean().optional()}).strict().optional(),Th=y.object({enabled:y.boolean().optional(),historySize:y.number().int().positive().optional(),warningThreshold:y.number().int().positive().optional(),criticalThreshold:y.number().int().positive().optional(),globalCircuitBreakerThreshold:y.number().int().positive().optional(),detectors:wh}).strict().superRefine((e,t)=>{e.warningThreshold!==void 0&&e.criticalThreshold!==void 0&&e.warningThreshold>=e.criticalThreshold&&t.addIssue({code:y.ZodIssueCode.custom,path:[`criticalThreshold`],message:`tools.loopDetection.warningThreshold must be lower than criticalThreshold.`}),e.criticalThreshold!==void 0&&e.globalCircuitBreakerThreshold!==void 0&&e.criticalThreshold>=e.globalCircuitBreakerThreshold&&t.addIssue({code:y.ZodIssueCode.custom,path:[`globalCircuitBreakerThreshold`],message:`tools.loopDetection.criticalThreshold must be lower than globalCircuitBreakerThreshold.`})}).optional(),Eh=y.object({mode:y.union([y.literal(`off`),y.literal(`non-main`),y.literal(`all`)]).optional(),backend:y.string().optional(),workspaceAccess:y.union([y.literal(`none`),y.literal(`ro`),y.literal(`rw`)]).optional(),sessionToolsVisibility:y.union([y.literal(`spawned`),y.literal(`all`)]).optional(),scope:y.union([y.literal(`session`),y.literal(`agent`),y.literal(`shared`)]).optional(),perSession:y.boolean().optional(),workspaceRoot:y.string().optional(),docker:ch,browser:lh,prune:uh}).strict().superRefine((e,t)=>{Jp({network:e.browser?.network,allowContainerNamespaceJoin:e.docker?.dangerouslyAllowContainerNamespaceJoin===!0})===`container_namespace_join`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`browser`,`network`],message:`Sandbox security: browser network mode "container:*" is blocked by default. Set sandbox.docker.dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`})}).optional(),Dh={profile:mh,allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),byProvider:y.record(y.string(),gh).optional()},Oh=y.object({...Dh,elevated:y.object({enabled:y.boolean().optional(),allowFrom:_h}).strict().optional(),exec:xh,fs:Ch,loopDetection:Th,sandbox:y.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{hh(e,t,`agent tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),kh=y.object({enabled:y.boolean().optional(),sources:y.array(y.union([y.literal(`memory`),y.literal(`sessions`)])).optional(),extraPaths:y.array(y.string()).optional(),experimental:y.object({sessionMemory:y.boolean().optional()}).strict().optional(),provider:y.union([y.literal(`openai`),y.literal(`local`),y.literal(`gemini`),y.literal(`voyage`),y.literal(`mistral`)]).optional(),remote:y.object({baseUrl:y.string().optional(),apiKey:y.string().optional().register(V),headers:y.record(y.string(),y.string()).optional(),batch:y.object({enabled:y.boolean().optional(),wait:y.boolean().optional(),concurrency:y.number().int().positive().optional(),pollIntervalMs:y.number().int().nonnegative().optional(),timeoutMinutes:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),fallback:y.union([y.literal(`openai`),y.literal(`gemini`),y.literal(`local`),y.literal(`voyage`),y.literal(`mistral`),y.literal(`none`)]).optional(),model:y.string().optional(),local:y.object({modelPath:y.string().optional(),modelCacheDir:y.string().optional()}).strict().optional(),store:y.object({driver:y.literal(`sqlite`).optional(),path:y.string().optional(),vector:y.object({enabled:y.boolean().optional(),extensionPath:y.string().optional()}).strict().optional()}).strict().optional(),chunking:y.object({tokens:y.number().int().positive().optional(),overlap:y.number().int().nonnegative().optional()}).strict().optional(),sync:y.object({onSessionStart:y.boolean().optional(),onSearch:y.boolean().optional(),watch:y.boolean().optional(),watchDebounceMs:y.number().int().nonnegative().optional(),intervalMinutes:y.number().int().nonnegative().optional(),sessions:y.object({deltaBytes:y.number().int().nonnegative().optional(),deltaMessages:y.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),query:y.object({maxResults:y.number().int().positive().optional(),minScore:y.number().min(0).max(1).optional(),hybrid:y.object({enabled:y.boolean().optional(),vectorWeight:y.number().min(0).max(1).optional(),textWeight:y.number().min(0).max(1).optional(),candidateMultiplier:y.number().int().positive().optional(),mmr:y.object({enabled:y.boolean().optional(),lambda:y.number().min(0).max(1).optional()}).strict().optional(),temporalDecay:y.object({enabled:y.boolean().optional(),halfLifeDays:y.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),cache:y.object({enabled:y.boolean().optional(),maxEntries:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),Ah=y.object({id:y.string(),default:y.boolean().optional(),name:y.string().optional(),workspace:y.string().optional(),agentDir:y.string().optional(),activeModelProvider:y.string().optional(),modelProviders:y.record(y.string(),Zp).optional(),model:Yp.optional(),taskModels:Xp.optional(),thinkingDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)]).optional(),reasoningDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)]).optional(),fastModeDefault:y.boolean().optional(),skills:y.array(y.string()).optional(),memorySearch:kh,humanDelay:Pm.optional(),heartbeat:sh,identity:wm,groupChat:Cm,subagents:y.object({allowAgents:y.array(y.string()).optional(),requireAgentId:y.boolean().optional(),model:y.union([y.string(),y.object({primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional()}).strict()]).optional(),thinking:y.string().optional()}).strict().optional(),sandbox:Eh,tools:Oh,strictAgentic:y.object({mode:y.union([y.literal(`off`),y.literal(`warn`)]).optional()}).strict().optional()}).strict(),jh=y.object({...Dh,web:ph,media:nh,links:ih,sessions:y.object({visibility:y.enum([`self`,`tree`,`agent`,`all`]).optional()}).strict().optional(),loopDetection:Th,message:y.object({allowCrossContextSend:y.boolean().optional(),crossContext:y.object({allowWithinProvider:y.boolean().optional(),allowAcrossProviders:y.boolean().optional(),marker:y.object({enabled:y.boolean().optional(),prefix:y.string().optional(),suffix:y.string().optional()}).strict().optional()}).strict().optional(),broadcast:y.object({enabled:y.boolean().optional()}).strict().optional()}).strict().optional(),agentToAgent:y.object({enabled:y.boolean().optional(),allow:y.array(y.string()).optional()}).strict().optional(),elevated:y.object({enabled:y.boolean().optional(),allowFrom:_h}).strict().optional(),exec:Sh,fs:Ch,subagents:y.object({tools:Z}).strict().optional(),sandbox:y.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{hh(e,t,`tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),Mh=y.object({model:Yp.optional(),taskModels:Xp.optional(),imageModel:Yp.optional(),models:y.record(y.string(),y.object({alias:y.string().optional(),params:y.record(y.string(),y.unknown()).optional(),streaming:y.boolean().optional()}).strict()).optional(),workspace:y.string().optional(),repoRoot:y.string().optional(),skipBootstrap:y.boolean().optional(),bootstrapMaxChars:y.number().int().positive().optional(),bootstrapTotalMaxChars:y.number().int().positive().optional(),bootstrapPromptTruncationWarning:y.union([y.literal(`off`),y.literal(`once`),y.literal(`always`)]).optional(),userTimezone:y.string().optional(),timeFormat:y.union([y.literal(`auto`),y.literal(`12`),y.literal(`24`)]).optional(),envelopeTimezone:y.string().optional(),envelopeTimestamp:y.union([y.literal(`on`),y.literal(`off`)]).optional(),envelopeElapsed:y.union([y.literal(`on`),y.literal(`off`)]).optional(),contextTokens:y.number().int().positive().optional(),cliBackends:y.record(y.string(),Im).optional(),memorySearch:kh,contextPruning:y.object({mode:y.union([y.literal(`off`),y.literal(`cache-ttl`)]).optional(),ttl:y.string().optional(),keepLastAssistants:y.number().int().nonnegative().optional(),softTrimRatio:y.number().min(0).max(1).optional(),hardClearRatio:y.number().min(0).max(1).optional(),minPrunableToolChars:y.number().int().nonnegative().optional(),tools:y.object({allow:y.array(y.string()).optional(),deny:y.array(y.string()).optional()}).strict().optional(),softTrim:y.object({maxChars:y.number().int().nonnegative().optional(),headChars:y.number().int().nonnegative().optional(),tailChars:y.number().int().nonnegative().optional()}).strict().optional(),hardClear:y.object({enabled:y.boolean().optional(),placeholder:y.string().optional()}).strict().optional()}).strict().optional(),compaction:y.object({mode:y.union([y.literal(`default`),y.literal(`safeguard`)]).optional(),reserveTokens:y.number().int().nonnegative().optional(),keepRecentTokens:y.number().int().positive().optional(),timeoutSeconds:y.number().positive().optional(),reserveTokensFloor:y.number().int().nonnegative().optional(),maxHistoryShare:y.number().min(.1).max(.9).optional(),identifierPolicy:y.union([y.literal(`strict`),y.literal(`off`),y.literal(`custom`)]).optional(),identifierInstructions:y.string().optional(),memoryFlush:y.object({enabled:y.boolean().optional(),softThresholdTokens:y.number().int().nonnegative().optional(),prompt:y.string().optional(),systemPrompt:y.string().optional()}).strict().optional()}).strict().optional(),embeddedPi:y.object({projectSettingsPolicy:y.union([y.literal(`trusted`),y.literal(`sanitize`),y.literal(`ignore`)]).optional()}).strict().optional(),strictAgentic:y.object({mode:y.union([y.literal(`off`),y.literal(`warn`)]).optional()}).strict().optional(),skills:y.array(y.string()).optional(),thinkingDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)]).optional(),reasoningDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`)]).optional(),fastModeDefault:y.boolean().optional(),verboseDefault:y.union([y.literal(`off`),y.literal(`on`),y.literal(`full`)]).optional(),elevatedDefault:y.union([y.literal(`off`),y.literal(`on`),y.literal(`ask`),y.literal(`full`)]).optional(),blockStreamingDefault:y.union([y.literal(`off`),y.literal(`on`)]).optional(),blockStreamingBreak:y.union([y.literal(`text_end`),y.literal(`message_end`)]).optional(),blockStreamingChunk:Om.optional(),blockStreamingCoalesce:q.optional(),humanDelay:Pm.optional(),timeoutSeconds:y.number().int().positive().optional(),mediaMaxMb:y.number().positive().optional(),imageMaxDimensionPx:y.number().int().positive().optional(),typingIntervalSeconds:y.number().int().positive().optional(),typingMode:Dm.optional(),heartbeat:sh,maxConcurrent:y.number().int().positive().optional(),subagents:y.object({maxConcurrent:y.number().int().positive().optional(),maxSpawnDepth:y.number().int().min(1).max(5).optional().describe(`Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents.`),maxChildrenPerAgent:y.number().int().min(1).max(20).optional().describe(`Maximum number of active children a single agent session can spawn (default: 5).`),archiveAfterMinutes:y.number().int().positive().optional(),model:Yp.optional(),thinking:y.string().optional(),runTimeoutSeconds:y.number().int().min(0).optional(),announceTimeoutMs:y.number().int().positive().optional(),allowAgents:y.array(y.string()).optional(),requireAgentId:y.boolean().optional()}).strict().optional(),sandbox:Eh}).strict().optional(),Nh=y.object({defaults:y.lazy(()=>Mh).optional(),list:y.array(Ah).optional()}).strict().optional(),Ph=y.array(y.object({agentId:y.string(),comment:y.string().optional(),match:y.object({channel:y.string(),accountId:y.string().optional(),peer:y.object({kind:y.union([y.literal(`direct`),y.literal(`group`),y.literal(`channel`),y.literal(`dm`)]),id:y.string()}).strict().optional(),guildId:y.string().optional(),teamId:y.string().optional(),roles:y.array(y.string()).optional()}).strict()}).strict()).optional(),Fh=y.enum([`parallel`,`sequential`]),Ih=y.object({strategy:Fh.optional()}).catchall(y.array(y.string())).optional(),Lh=y.object({channel:y.string().min(1),to:y.string().min(1),accountId:y.string().optional(),threadId:y.union([y.string(),y.number()]).optional()}).strict(),Rh=y.object({enabled:y.boolean().optional(),mode:y.union([y.literal(`session`),y.literal(`targets`),y.literal(`both`)]).optional(),agentFilter:y.array(y.string()).optional(),sessionFilter:y.array(y.string()).optional(),targets:y.array(Lh).optional()}).strict().optional(),zh=y.object({exec:Rh}).strict().optional();function Bh(e){let t=e.trim();return!(!t||i.isAbsolute(t)||t.startsWith(`~`)||t.includes(`:`)||t.split(/[\\/]+/g).some(e=>e===`..`))}const Vh=y.string().refine(Bh,`module must be a safe relative path (no absolute paths)`),Hh=y.object({id:y.string().optional(),enabled:y.boolean().optional(),match:y.object({path:y.string().optional(),source:y.string().optional()}).optional(),action:y.union([y.literal(`wake`),y.literal(`agent`),y.literal(`workflow`)]).optional(),wakeMode:y.union([y.literal(`now`),y.literal(`next-heartbeat`)]).optional(),name:y.string().optional(),agentId:y.string().optional(),sessionKey:y.string().optional().register(V),messageTemplate:y.string().optional(),textTemplate:y.string().optional(),workflowDefinitionId:y.string().optional(),deliver:y.boolean().optional(),allowUnsafeExternalContent:y.boolean().optional(),channel:y.union([y.literal(`last`),y.literal(`whatsapp`),y.literal(`telegram`),y.literal(`discord`),y.literal(`irc`),y.literal(`slack`),y.literal(`signal`),y.literal(`imessage`),y.literal(`msteams`)]).optional(),to:y.string().optional(),model:y.string().optional(),thinking:y.string().optional(),timeoutSeconds:y.number().int().positive().optional(),notifyPolicy:y.union([y.literal(`silent`),y.literal(`done_only`),y.literal(`state_changes`)]).optional(),transform:y.object({module:Vh,export:y.string().optional()}).strict().optional()}).strict().optional(),Uh=y.object({event:y.string(),module:Vh,export:y.string().optional()}).strict(),Wh=y.object({enabled:y.boolean().optional(),env:y.record(y.string(),y.string()).optional()}).passthrough(),Gh=y.object({source:y.union([y.literal(`npm`),y.literal(`archive`),y.literal(`path`)]),spec:y.string().optional(),sourcePath:y.string().optional(),installPath:y.string().optional(),version:y.string().optional(),installedAt:y.string().optional(),hooks:y.array(y.string()).optional()}).strict(),Kh=y.object({enabled:y.boolean().optional(),handlers:y.array(Uh).optional(),entries:y.record(y.string(),Wh).optional(),load:y.object({extraDirs:y.array(y.string()).optional()}).strict().optional(),installs:y.record(y.string(),Gh).optional()}).strict().optional(),qh=y.object({account:y.string().optional(),project:y.string().optional(),label:y.string().optional(),topic:y.string().optional(),subscription:y.string().optional(),pushToken:y.string().optional().register(V),hookUrl:y.string().optional(),includeBody:y.boolean().optional(),maxBytes:y.number().int().positive().optional(),renewEveryMinutes:y.number().int().positive().optional(),allowUnsafeExternalContent:y.boolean().optional(),serve:y.object({bind:y.string().optional(),port:y.number().int().positive().optional(),path:y.string().optional()}).strict().optional(),tailscale:y.object({mode:y.union([y.literal(`off`),y.literal(`serve`),y.literal(`funnel`)]).optional(),path:y.string().optional(),target:y.string().optional()}).strict().optional(),model:y.string().optional(),thinking:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`)]).optional()}).strict().optional(),Jh={source:y.union([y.literal(`npm`),y.literal(`archive`),y.literal(`path`),y.literal(`clawhub`)]),spec:y.string().optional(),sourcePath:y.string().optional(),installPath:y.string().optional(),version:y.string().optional(),resolvedName:y.string().optional(),resolvedVersion:y.string().optional(),resolvedSpec:y.string().optional(),integrity:y.string().optional(),shasum:y.string().optional(),resolvedAt:y.string().optional(),installedAt:y.string().optional(),clawhubUrl:y.string().optional(),clawhubArtifactUrl:y.string().optional(),clawhubPackage:y.string().optional(),clawhubFamily:y.union([y.literal(`code-plugin`),y.literal(`bundle-plugin`)]).optional(),clawhubChannel:y.union([y.literal(`official`),y.literal(`community`),y.literal(`private`)]).optional(),artifactKind:y.union([y.literal(`legacy-zip`),y.literal(`npm-pack`),y.literal(`clawpack`)]).optional(),artifactFormat:y.union([y.literal(`zip`),y.literal(`tgz`)]).optional(),npmIntegrity:y.string().optional(),npmShasum:y.string().optional(),npmTarballName:y.string().optional(),clawpackSha256:y.string().optional(),clawpackSpecVersion:y.number().int().nonnegative().optional(),clawpackManifestSha256:y.string().optional(),clawpackSize:y.number().int().nonnegative().optional(),securityState:y.string().optional(),scanState:y.string().optional(),moderationState:y.string().optional(),readinessPhase:y.string().optional(),verificationTier:y.string().optional(),verificationSourceRepo:y.string().optional(),verificationSourceCommit:y.string().optional(),verificationHasProvenance:y.boolean().optional()},Q=y.object({showOk:y.boolean().optional(),showAlerts:y.boolean().optional(),useIndicator:y.boolean().optional()}).strict().optional(),Yh=/^[A-Za-z0-9._-]+$/,Xh=/^\[[0-9A-Fa-f:.%]+\]$/,Zh=/\s/;function Qh(e){for(let t of e){let e=t.charCodeAt(0);if(e<=31||e===127||Zh.test(t))return!0}return!1}function $h(e){if(typeof e!=`string`)return;let t=e.trim();if(!t||Qh(t)||t.startsWith(`-`)||t.includes(`/`)||t.includes(`\\`))return;let n=t.indexOf(`@`),r=t.lastIndexOf(`@`),i,a=t;if(!(n!==-1&&(n!==r||n===0||n===t.length-1||(i=t.slice(0,n),a=t.slice(n+1),!Yh.test(i))))&&!(!a||a.startsWith(`-`)||a.includes(`@`))&&!(a.includes(`:`)&&!Xh.test(a))&&!(!Yh.test(a)&&!Xh.test(a)))return i?`${i}@${a}`:a}function eg(e){return $h(e)!==void 0}const tg=/^[A-Za-z]:\//,ng=/^[A-Za-z]:$/;function rg(e){let t=e.trim();if(!t||t.includes(`\0`))return;let n=i.posix.normalize(t.replaceAll(`\\`,`/`));if(!(n.startsWith(`/`)||tg.test(n))||n===`/`)return;let r=n.endsWith(`/`)?n.slice(0,-1):n;if(!ng.test(r))return r}function ig(e){return e.split(`/`).filter(Boolean)}function ag(e){let t=rg(e);if(!t)return!1;let n=ig(t);return n.length===0?!1:n.every(e=>e===`*`||!e.includes(`*`))}const og=/^[a-z0-9_]{1,32}$/;function sg(e){let t=e.trim();return t?(t.startsWith(`/`)?t.slice(1):t).trim().toLowerCase().replace(/-/g,`_`):``}function cg(e){return e.trim()}function lg(e){let t=Array.isArray(e.commands)?e.commands:[],n=e.reservedCommands??new Set,r=e.checkReserved!==!1,i=e.checkDuplicates!==!1,a=new Set,o=[],s=[];for(let e=0;e<t.length;e+=1){let c=t[e],l=sg(String(c?.command??``));if(!l){s.push({index:e,field:`command`,message:`Telegram custom command is missing a command name.`});continue}if(!og.test(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is invalid (use a-z, 0-9, underscore; max 32 chars).`});continue}if(r&&n.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" conflicts with a native command.`});continue}if(i&&a.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is duplicated.`});continue}let u=cg(String(c?.description??``));if(!u){s.push({index:e,field:`description`,message:`Telegram custom command "/${l}" is missing a description.`});continue}i&&a.add(l),o.push({command:l,description:u})}return{commands:o,issues:s}}const ug=y.record(y.string(),Z).optional(),dg=y.union([y.string(),y.number()]).refine(e=>typeof e==`string`,{message:`Discord IDs must be strings (wrap numeric IDs in quotes).`}),fg=y.array(dg),pg=y.enum([`off`,`dm`,`group`,`all`,`allowlist`]),mg=y.union([y.array(y.string()),y.object({inlineButtons:pg.optional()}).strict()]),hg=y.object({requireMention:y.boolean().optional(),groupPolicy:G.optional(),skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),gg=y.object({requireMention:y.boolean().optional(),groupPolicy:G.optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional(),topics:y.record(y.string(),hg.optional()).optional()}).strict(),_g=y.object({command:y.string().transform(sg),description:y.string().transform(cg)}).strict(),vg=(e,t)=>{if(!e.customCommands||e.customCommands.length===0)return;let{issues:n}=lg({commands:e.customCommands,checkReserved:!1,checkDuplicates:!1});for(let e of n)t.addIssue({code:y.ZodIssueCode.custom,path:[`customCommands`,e.index,e.field],message:e.message})};function yg(e){e.streaming=xf(e),delete e.streamMode}function bg(e){e.streaming=Sf(e),delete e.streamMode}function xg(e){e.nativeStreaming=wf(e),e.streaming=Cf(e),delete e.streamMode}const Sg=y.object({name:y.string().optional(),capabilities:mg.optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,customCommands:y.array(_g).optional(),configWrites:y.boolean().optional(),dmPolicy:K.optional().default(`pairing`),botToken:y.string().optional().register(V),tokenFile:y.string().optional(),replyToMode:Em.optional(),groups:y.record(y.string(),gg.optional()).optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.union([y.string(),y.number()]).optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),blockStreaming:y.boolean().optional(),draftChunk:Om.optional(),blockStreamingCoalesce:q.optional(),streamMode:y.enum([`off`,`partial`,`block`]).optional(),mediaMaxMb:y.number().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),retry:zm,network:y.object({autoSelectFamily:y.boolean().optional(),dnsResultOrder:y.enum([`ipv4first`,`verbatim`]).optional()}).strict().optional(),proxy:y.string().optional(),webhookUrl:y.string().optional().describe(`Public HTTPS webhook URL registered with Telegram for inbound updates. This must be internet-reachable and requires channels.telegram.webhookSecret.`),webhookSecret:y.string().optional().describe(`Secret token sent to Telegram during webhook registration and verified on inbound webhook requests. Telegram returns this value for verification; this is not the gateway auth token and not the bot token.`).register(V),webhookPath:y.string().optional().describe(`Local webhook route path served by the gateway listener. Defaults to /telegram-webhook.`),webhookHost:y.string().optional().describe(`Local bind host for the webhook listener. Defaults to 127.0.0.1; keep loopback unless you intentionally expose direct ingress.`),webhookPort:y.number().int().nonnegative().optional().describe(`Local bind port for the webhook listener. Defaults to 8787; set to 0 to let the OS assign an ephemeral port.`),actions:y.object({reactions:y.boolean().optional(),sendMessage:y.boolean().optional(),deleteMessage:y.boolean().optional(),sticker:y.boolean().optional()}).strict().optional(),reactionNotifications:y.enum([`off`,`own`,`all`]).optional(),reactionLevel:y.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,linkPreview:y.boolean().optional(),responsePrefix:y.string().optional(),ackReaction:y.string().optional()}).strict(),Cg=Sg.superRefine((e,t)=>{yg(e),vg(e,t)}),wg=Sg.extend({accounts:y.record(y.string(),Cg.optional()).optional()}).superRefine((e,t)=>{if(yg(e),Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="open" requires channels.telegram.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="allowlist" requires channels.telegram.allowFrom to contain at least one sender ID`}),vg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to contain at least one sender ID`})}let n=typeof e.webhookUrl==`string`?e.webhookUrl.trim():``,r=typeof e.webhookSecret==`string`?e.webhookSecret.trim():``;if(n&&!r&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.telegram.webhookUrl requires channels.telegram.webhookSecret`,path:[`webhookSecret`]}),e.accounts)for(let[n,i]of Object.entries(e.accounts)){if(!i||i.enabled===!1)continue;let a=i.dmPolicy??e.dmPolicy,o=Array.isArray(i.allowFrom)?i.allowFrom:e.allowFrom;Y({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to include "*"`}),X({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to contain at least one sender ID`}),typeof i.webhookUrl==`string`&&i.webhookUrl.trim()&&!(typeof i.webhookSecret==`string`&&i.webhookSecret.trim())&&!r&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.telegram.accounts.*.webhookUrl requires channels.telegram.webhookSecret or channels.telegram.accounts.*.webhookSecret`,path:[`accounts`,n,`webhookSecret`]})}}),Tg=y.object({enabled:y.boolean().optional(),policy:K.optional(),allowFrom:fg.optional(),groupEnabled:y.boolean().optional(),groupChannels:fg.optional()}).strict(),Eg=y.object({allow:y.boolean().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),users:fg.optional(),roles:fg.optional(),systemPrompt:y.string().optional(),includeThreadStarter:y.boolean().optional(),autoThread:y.boolean().optional()}).strict(),Dg=y.object({slug:y.string().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),users:fg.optional(),roles:fg.optional(),channels:y.record(y.string(),Eg.optional()).optional()}).strict(),Og=y.object({components:y.object({accentColor:Gm.optional()}).strict().optional()}).strict().optional(),kg=y.object({guildId:y.string().min(1),channelId:y.string().min(1)}).strict(),Ag=y.object({enabled:y.boolean().optional(),autoJoin:y.array(kg).optional(),daveEncryption:y.boolean().optional(),decryptionFailureTolerance:y.number().int().min(0).optional(),tts:Nm.optional()}).strict().optional(),jg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,configWrites:y.boolean().optional(),token:y.string().optional().register(V),proxy:y.string().optional(),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),streamMode:y.enum([`partial`,`block`,`off`]).optional(),draftChunk:Om.optional(),maxLinesPerMessage:y.number().int().positive().optional(),mediaMaxMb:y.number().positive().optional(),retry:zm,actions:y.object({reactions:y.boolean().optional(),stickers:y.boolean().optional(),emojiUploads:y.boolean().optional(),stickerUploads:y.boolean().optional(),polls:y.boolean().optional(),permissions:y.boolean().optional(),messages:y.boolean().optional(),threads:y.boolean().optional(),pins:y.boolean().optional(),search:y.boolean().optional(),memberInfo:y.boolean().optional(),roleInfo:y.boolean().optional(),roles:y.boolean().optional(),channelInfo:y.boolean().optional(),voiceStatus:y.boolean().optional(),events:y.boolean().optional(),moderation:y.boolean().optional(),channels:y.boolean().optional(),presence:y.boolean().optional()}).strict().optional(),replyToMode:Em.optional(),dmPolicy:K.optional(),allowFrom:fg.optional(),defaultTo:y.string().optional(),dm:Tg.optional(),guilds:y.record(y.string(),Dg.optional()).optional(),heartbeat:Q,execApprovals:y.object({enabled:y.boolean().optional(),approvers:fg.optional(),agentFilter:y.array(y.string()).optional(),sessionFilter:y.array(y.string()).optional(),cleanupAfterResolve:y.boolean().optional(),target:y.enum([`dm`,`channel`,`both`]).optional()}).strict().optional(),ui:Og,slashCommand:y.object({ephemeral:y.boolean().optional()}).strict().optional(),threadBindings:y.object({enabled:y.boolean().optional(),idleHours:y.number().nonnegative().optional(),maxAgeHours:y.number().nonnegative().optional(),spawnSubagentSessions:y.boolean().optional(),spawnAcpSessions:y.boolean().optional()}).strict().optional(),intents:y.object({presence:y.boolean().optional(),guildMembers:y.boolean().optional()}).strict().optional(),voice:Ag,pluralkit:y.object({enabled:y.boolean().optional(),token:y.string().optional().register(V)}).strict().optional(),responsePrefix:y.string().optional(),ackReaction:y.string().optional(),activity:y.string().optional(),status:y.enum([`online`,`dnd`,`idle`,`invisible`]).optional(),activityType:y.union([y.literal(0),y.literal(1),y.literal(2),y.literal(3),y.literal(4),y.literal(5)]).optional(),activityUrl:y.string().url().optional()}).strict().superRefine((e,t)=>{bg(e);let n=!!(typeof e.activity==`string`&&e.activity.trim()),r=e.activityType!==void 0,i=!!(typeof e.activityUrl==`string`&&e.activityUrl.trim());(r||i)&&!n&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activity is required when activityType or activityUrl is set`,path:[`activity`]}),e.activityType===1&&!i&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activityUrl is required when activityType is 1 (Streaming)`,path:[`activityUrl`]}),i&&e.activityType!==1&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activityType must be 1 (Streaming) when activityUrl is set`,path:[`activityType`]})}),Mg=jg.extend({accounts:y.record(y.string(),jg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];if(Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="open" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="allowlist" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,a=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="open" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="allowlist" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to contain at least one sender ID`})}}),Ng=y.object({enabled:y.boolean().optional(),policy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional()}).strict().superRefine((e,t)=>{Y({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="open" requires channels.googlechat.dm.allowFrom to include "*"`}),X({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="allowlist" requires channels.googlechat.dm.allowFrom to contain at least one sender ID`})}),Pg=y.object({enabled:y.boolean().optional(),allow:y.boolean().optional(),requireMention:y.boolean().optional(),users:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),Fg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),enabled:y.boolean().optional(),configWrites:y.boolean().optional(),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),requireMention:y.boolean().optional(),groupPolicy:G.optional().default(`allowlist`),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groups:y.record(y.string(),Pg.optional()).optional(),defaultTo:y.string().optional(),serviceAccount:y.union([y.string(),y.record(y.string(),y.unknown()),dm]).optional().register(V),serviceAccountRef:dm.optional().register(V),serviceAccountFile:y.string().optional(),audienceType:y.enum([`app-url`,`project-number`]).optional(),audience:y.string().optional(),webhookPath:y.string().optional(),webhookUrl:y.string().optional(),botUser:y.string().optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streamMode:y.enum([`replace`,`status_final`,`append`]).optional().default(`replace`),mediaMaxMb:y.number().positive().optional(),replyToMode:Em.optional(),actions:y.object({reactions:y.boolean().optional()}).strict().optional(),dm:Ng.optional(),typingIndicator:y.enum([`none`,`message`,`reaction`]).optional(),responsePrefix:y.string().optional()}).strict(),Ig=Fg.extend({accounts:y.record(y.string(),Fg.optional()).optional(),defaultAccount:y.string().optional()}),Lg=y.object({enabled:y.boolean().optional(),policy:K.optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupEnabled:y.boolean().optional(),groupChannels:y.array(y.union([y.string(),y.number()])).optional(),replyToMode:Em.optional()}).strict(),Rg=y.object({enabled:y.boolean().optional(),allow:y.boolean().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,allowBots:y.boolean().optional(),users:y.array(y.union([y.string(),y.number()])).optional(),skills:y.array(y.string()).optional(),systemPrompt:y.string().optional()}).strict(),zg=y.object({historyScope:y.enum([`thread`,`channel`]).optional(),inheritParent:y.boolean().optional(),initialHistoryLimit:y.number().int().min(0).optional()}).strict(),Bg=y.object({direct:Em.optional(),group:Em.optional(),channel:Em.optional()}).strict(),Vg=y.object({name:y.string().optional(),mode:y.enum([`socket`,`http`]).optional(),signingSecret:y.string().optional().register(V),webhookPath:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,configWrites:y.boolean().optional(),botToken:y.string().optional().register(V),appToken:y.string().optional().register(V),userToken:y.string().optional().register(V),userTokenReadOnly:y.boolean().optional().default(!0),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),requireMention:y.boolean().optional(),groupPolicy:G.optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),nativeStreaming:y.boolean().optional(),streamMode:y.enum([`replace`,`status_final`,`append`]).optional(),mediaMaxMb:y.number().positive().optional(),reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:y.array(y.union([y.string(),y.number()])).optional(),replyToMode:Em.optional(),replyToModeByChatType:Bg.optional(),thread:zg.optional(),actions:y.object({reactions:y.boolean().optional(),messages:y.boolean().optional(),pins:y.boolean().optional(),search:y.boolean().optional(),permissions:y.boolean().optional(),memberInfo:y.boolean().optional(),channelInfo:y.boolean().optional(),emojiList:y.boolean().optional()}).strict().optional(),slashCommand:y.object({enabled:y.boolean().optional(),name:y.string().optional(),sessionPrefix:y.string().optional(),ephemeral:y.boolean().optional()}).strict().optional(),dmPolicy:K.optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),dm:Lg.optional(),channels:y.record(y.string(),Rg.optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional(),ackReaction:y.string().optional()}).strict().superRefine(e=>{xg(e)}),Hg=Vg.safeExtend({mode:y.enum([`socket`,`http`]).optional().default(`socket`),signingSecret:y.string().optional().register(V),webhookPath:y.string().optional().default(`/slack/events`),groupPolicy:G.optional().default(`allowlist`),accounts:y.record(y.string(),Vg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="open" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="allowlist" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to contain at least one sender ID`});let a=e.mode??`socket`;if(a===`http`&&!e.signingSecret&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.slack.mode="http" requires channels.slack.signingSecret`,path:[`signingSecret`]}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r||r.enabled===!1)continue;let i=r.mode??a,o=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,s=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="open" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to include "*"`}),X({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="allowlist" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to contain at least one sender ID`}),i===`http`&&((r.signingSecret??e.signingSecret)||t.addIssue({code:y.ZodIssueCode.custom,message:`channels.slack.accounts.*.mode="http" requires channels.slack.signingSecret or channels.slack.accounts.*.signingSecret`,path:[`accounts`,n,`signingSecret`]}))}}),Ug=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),account:y.string().optional(),httpUrl:y.string().optional(),httpHost:y.string().optional(),httpPort:y.number().int().positive().optional(),cliPath:Km.optional(),autoStart:y.boolean().optional(),startupTimeoutMs:y.number().int().min(1e3).max(12e4).optional(),receiveMode:y.union([y.literal(`on-start`),y.literal(`manual`)]).optional(),ignoreAttachments:y.boolean().optional(),ignoreStories:y.boolean().optional(),sendReadReceipts:y.boolean().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),mediaMaxMb:y.number().int().positive().optional(),reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:y.array(y.union([y.string(),y.number()])).optional(),actions:y.object({reactions:y.boolean().optional()}).strict().optional(),reactionLevel:y.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),Wg=Ug,Gg=Ug.extend({accounts:y.record(y.string(),Wg.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="open" requires channels.signal.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="allowlist" requires channels.signal.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="open" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="allowlist" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to contain at least one sender ID`})}}),Kg=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),qg=y.object({enabled:y.boolean().optional(),service:y.string().optional(),password:y.string().optional().register(V),passwordFile:y.string().optional(),register:y.boolean().optional(),registerEmail:y.string().optional()}).strict(),Jg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),host:y.string().optional(),port:y.number().int().min(1).max(65535).optional(),tls:y.boolean().optional(),nick:y.string().optional(),username:y.string().optional(),realname:y.string().optional(),password:y.string().optional().register(V),passwordFile:y.string().optional(),nickserv:qg.optional(),channels:y.array(y.string()).optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),groups:y.record(y.string(),Kg.optional()).optional(),mentionPatterns:y.array(y.string()).optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),mediaMaxMb:y.number().positive().optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict();function Yg(e,t){Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="open" requires channels.irc.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="allowlist" requires channels.irc.allowFrom to contain at least one sender ID`}),e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:y.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}const Xg=Jg.superRefine((e,t)=>{e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:y.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}),Zg=Jg.extend({accounts:y.record(y.string(),Xg.optional()).optional()}).superRefine((e,t)=>{if(Yg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="open" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="allowlist" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to contain at least one sender ID`})}}),Qg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),cliPath:Km.optional(),dbPath:y.string().optional(),remoteHost:y.string().refine(eg,`expected SSH host or user@host (no spaces/options)`).optional(),service:y.union([y.literal(`imessage`),y.literal(`sms`),y.literal(`auto`)]).optional(),region:y.string().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),includeAttachments:y.boolean().optional(),attachmentRoots:y.array(y.string().refine(ag,`expected absolute path root`)).optional(),remoteAttachmentRoots:y.array(y.string().refine(ag,`expected absolute path root`)).optional(),mediaMaxMb:y.number().int().positive().optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:y.record(y.string(),y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug}).strict().optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),$g=Qg,e_=Qg.extend({accounts:y.record(y.string(),$g.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="open" requires channels.imessage.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="allowlist" requires channels.imessage.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="open" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="allowlist" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to contain at least one sender ID`})}}),t_=y.union([y.string(),y.number()]),n_=y.object({reactions:y.boolean().optional(),edit:y.boolean().optional(),unsend:y.boolean().optional(),reply:y.boolean().optional(),sendWithEffect:y.boolean().optional(),renameGroup:y.boolean().optional(),setGroupIcon:y.boolean().optional(),addParticipant:y.boolean().optional(),removeParticipant:y.boolean().optional(),leaveGroup:y.boolean().optional(),sendAttachment:y.boolean().optional()}).strict().optional(),r_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug}).strict(),i_=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,configWrites:y.boolean().optional(),enabled:y.boolean().optional(),serverUrl:y.string().optional(),password:y.string().optional().register(V),webhookPath:y.string().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(t_).optional(),groupAllowFrom:y.array(t_).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),mediaMaxMb:y.number().int().positive().optional(),mediaLocalRoots:y.array(y.string()).optional(),sendReadReceipts:y.boolean().optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:y.record(y.string(),r_.optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),a_=i_,o_=i_.extend({accounts:y.record(y.string(),a_.optional()).optional(),actions:n_}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="open" requires channels.bluebubbles.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="allowlist" requires channels.bluebubbles.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID`})}}),s_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,replyStyle:Rm.optional()}).strict(),c_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,replyStyle:Rm.optional(),channels:y.record(y.string(),s_.optional()).optional()}).strict(),l_=y.object({enabled:y.boolean().optional(),capabilities:y.array(y.string()).optional(),dangerouslyAllowNameMatching:y.boolean().optional(),markdown:J,configWrites:y.boolean().optional(),appId:y.string().optional(),appPassword:y.string().optional().register(V),tenantId:y.string().optional(),webhook:y.object({port:y.number().int().positive().optional(),path:y.string().optional()}).strict().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.string()).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.string()).optional(),groupPolicy:G.optional().default(`allowlist`),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreamingCoalesce:q.optional(),mediaAllowHosts:y.array(y.string()).optional(),mediaAuthAllowHosts:y.array(y.string()).optional(),requireMention:y.boolean().optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),replyStyle:Rm.optional(),teams:y.record(y.string(),c_.optional()).optional(),mediaMaxMb:y.number().positive().optional(),preserveFilenames:y.boolean().optional(),sharePointSiteId:y.string().optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict().superRefine((e,t)=>{Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="open" requires channels.msteams.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="allowlist" requires channels.msteams.allowFrom to contain at least one sender ID`})}),u_=y.record(y.string(),Z).optional(),d_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:u_}).strict().optional(),f_=y.record(y.string(),d_).optional(),p_=y.object({emoji:y.string().optional(),direct:y.boolean().optional().default(!0),group:y.enum([`always`,`mentions`,`never`]).optional().default(`mentions`)}).strict().optional(),m_=y.object({enabled:y.boolean().optional(),capabilities:y.array(y.string()).optional(),markdown:J,configWrites:y.boolean().optional(),sendReadReceipts:y.boolean().optional(),messagePrefix:y.string().optional(),responsePrefix:y.string().optional(),dmPolicy:K.optional().default(`pairing`),selfChatMode:y.boolean().optional(),allowFrom:y.array(y.string()).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.string()).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:f_,ackReaction:p_,debounceMs:y.number().int().nonnegative().optional().default(0),heartbeat:Q});function h_(e){e.dmPolicy===`open`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).includes(`*`)||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}function g_(e){e.dmPolicy===`allowlist`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).length>0||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}const __=m_.extend({name:y.string().optional(),enabled:y.boolean().optional(),authDir:y.string().optional(),mediaMaxMb:y.number().int().positive().optional()}).strict(),v_=m_.extend({accounts:y.record(y.string(),__.optional()).optional(),mediaMaxMb:y.number().int().positive().optional().default(50),actions:y.object({reactions:y.boolean().optional(),sendMessage:y.boolean().optional(),polls:y.boolean().optional()}).strict().optional()}).strict().superRefine((e,t)=>{if(h_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="open" requires channels.whatsapp.allowFrom to include "*"`}),g_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="allowlist" requires channels.whatsapp.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;h_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="open" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to include "*"`}),g_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="allowlist" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to contain at least one sender ID`})}}),y_=y.record(y.string(),y.record(y.string(),y.string())).optional(),b_=y.object({defaults:y.object({groupPolicy:G.optional(),heartbeat:Q}).strict().optional(),modelByChannel:y_,whatsapp:v_.optional(),telegram:wg.optional(),discord:Mg.optional(),irc:Zg.optional(),googlechat:Ig.optional(),slack:Hg.optional(),signal:Gg.optional(),imessage:e_.optional(),bluebubbles:o_.optional(),msteams:l_.optional()}).passthrough().optional(),x_=y.object({mode:y.union([y.literal(`daily`),y.literal(`idle`)]).optional(),atHour:y.number().int().min(0).max(23).optional(),idleMinutes:y.number().int().positive().optional()}).strict(),S_=tm(),C_=y.object({scope:y.union([y.literal(`per-sender`),y.literal(`global`)]).optional(),dmScope:y.union([y.literal(`main`),y.literal(`per-peer`),y.literal(`per-channel-peer`),y.literal(`per-account-channel-peer`)]).optional(),identityLinks:y.record(y.string(),y.array(y.string())).optional(),resetTriggers:y.array(y.string()).optional(),idleMinutes:y.number().int().positive().optional(),reset:x_.optional(),resetByType:y.object({direct:x_.optional(),dm:x_.optional(),group:x_.optional(),thread:x_.optional()}).strict().optional(),resetByChannel:y.record(y.string(),x_).optional(),store:y.string().optional(),typingIntervalSeconds:y.number().int().positive().optional(),typingMode:Dm.optional(),parentForkMaxTokens:y.number().int().nonnegative().optional(),mainKey:y.string().optional(),sendPolicy:S_.optional(),agentToAgent:y.object({maxPingPongTurns:y.number().int().min(0).max(5).optional()}).strict().optional(),threadBindings:y.object({enabled:y.boolean().optional(),idleHours:y.number().nonnegative().optional(),maxAgeHours:y.number().nonnegative().optional()}).strict().optional(),maintenance:y.object({mode:y.enum([`enforce`,`warn`]).optional(),pruneAfter:y.union([y.string(),y.number()]).optional(),pruneDays:y.number().int().positive().optional(),maxEntries:y.number().int().positive().optional(),rotateBytes:y.union([y.string(),y.number()]).optional(),resetArchiveRetention:y.union([y.string(),y.number(),y.literal(!1)]).optional(),maxDiskBytes:y.union([y.string(),y.number()]).optional(),highWaterBytes:y.union([y.string(),y.number()]).optional()}).strict().superRefine((e,t)=>{if(e.pruneAfter!==void 0)try{Kp(String(e.pruneAfter).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`pruneAfter`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.rotateBytes!==void 0)try{Wp(String(e.rotateBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`rotateBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.resetArchiveRetention!==void 0&&e.resetArchiveRetention!==!1)try{Kp(String(e.resetArchiveRetention).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`resetArchiveRetention`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.maxDiskBytes!==void 0)try{Wp(String(e.maxDiskBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`maxDiskBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.highWaterBytes!==void 0)try{Wp(String(e.highWaterBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`highWaterBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}}).optional()}).strict().optional(),w_=y.object({messagePrefix:y.string().optional(),responsePrefix:y.string().optional(),groupChat:Cm,queue:Hm,inbound:Um,ackReaction:y.string().optional(),ackReactionScope:y.enum([`group-mentions`,`group-all`,`direct`,`all`]).optional(),removeAckAfterReply:y.boolean().optional(),statusReactions:y.object({enabled:y.boolean().optional(),emojis:y.object({thinking:y.string().optional(),tool:y.string().optional(),coding:y.string().optional(),web:y.string().optional(),done:y.string().optional(),error:y.string().optional(),stallSoft:y.string().optional(),stallHard:y.string().optional()}).strict().optional(),timing:y.object({debounceMs:y.number().int().min(0).optional(),stallSoftMs:y.number().int().min(0).optional(),stallHardMs:y.number().int().min(0).optional(),doneHoldMs:y.number().int().min(0).optional(),errorHoldMs:y.number().int().min(0).optional()}).strict().optional()}).strict().optional(),suppressToolErrors:y.boolean().optional(),tts:Nm}).strict().optional(),T_=y.object({native:ah.optional().default(`auto`),nativeSkills:ah.optional().default(`auto`),text:y.boolean().optional(),bash:y.boolean().optional(),bashForegroundMs:y.number().int().min(0).max(3e4).optional(),config:y.boolean().optional(),debug:y.boolean().optional(),restart:y.boolean().optional().default(!0),useAccessGroups:y.boolean().optional(),ownerAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),ownerDisplay:y.enum([`raw`,`hash`]).optional().default(`raw`),ownerDisplaySecret:y.string().optional().register(V),allowFrom:_h.optional()}).strict().optional().default(()=>({native:`auto`,nativeSkills:`auto`,restart:!0,ownerDisplay:`raw`})),E_=y.object({mode:y.literal(`efficient`).optional()}).strict().optional(),D_=y.object({browserProxy:y.object({enabled:y.boolean().optional(),allowProfiles:y.array(y.string()).optional()}).strict().optional()}).strict().optional(),O_=y.object({path:y.string(),name:y.string().optional(),pattern:y.string().optional()}).strict(),k_=y.object({enabled:y.boolean().optional(),exportDir:y.string().optional(),retentionDays:y.number().int().nonnegative().optional()}).strict(),A_=y.object({voiceId:y.string().optional(),voiceAliases:y.record(y.string(),y.string()).optional(),modelId:y.string().optional(),outputFormat:y.string().optional(),apiKey:H.optional().register(V)}).catchall(y.unknown()),j_=y.object({transcription:Wm}).strict().optional(),M_=y.object({interval:y.string().optional(),debounceMs:y.number().int().nonnegative().optional(),onBoot:y.boolean().optional(),waitForBootSync:y.boolean().optional(),embedInterval:y.string().optional(),commandTimeoutMs:y.number().int().nonnegative().optional(),updateTimeoutMs:y.number().int().nonnegative().optional(),embedTimeoutMs:y.number().int().nonnegative().optional()}).strict(),N_=y.object({maxResults:y.number().int().positive().optional(),maxSnippetChars:y.number().int().positive().optional(),maxInjectedChars:y.number().int().positive().optional(),timeoutMs:y.number().int().nonnegative().optional()}).strict(),P_=y.object({command:y.string().optional(),searchMode:y.union([y.literal(`query`),y.literal(`search`),y.literal(`vsearch`)]).optional(),includeDefaultMemory:y.boolean().optional(),paths:y.array(O_).optional(),sessions:k_.optional(),update:M_.optional(),limits:N_.optional(),scope:S_.optional()}).strict(),F_=y.object({backend:y.union([y.literal(`builtin`),y.literal(`qmd`)]).optional(),citations:y.union([y.literal(`auto`),y.literal(`on`),y.literal(`off`)]).optional(),qmd:P_.optional()}).strict().optional(),I_=y.object({enabled:y.boolean().optional(),dispatch:y.object({enabled:y.boolean().optional()}).strict().optional(),backend:y.string().optional(),defaultAgent:y.string().optional(),allowedAgents:y.array(y.string()).optional(),maxConcurrentSessions:y.number().int().positive().optional(),stream:y.object({coalesceIdleMs:y.number().int().nonnegative().optional(),maxChunkChars:y.number().int().positive().optional()}).strict().optional(),runtime:y.object({ttlMinutes:y.number().int().positive().optional(),installCommand:y.string().optional()}).strict().optional()}).strict().optional(),L_=y.string().refine(e=>{try{return Kp(e),!0}catch{return!1}},{message:`invalid duration (use ms, s, m, h, d)`}),R_=y.union([y.number().int().positive(),y.string()]).refine(e=>{try{return Wp(String(e).trim(),{defaultUnit:`b`})>0}catch{return!1}},{message:`invalid byte size`}),z_=y.object({maxBytes:R_.optional(),keepLines:y.number().int().positive().optional()}).strict(),B_=y.union([y.string(),y.number().transform((e,t)=>{let n=new Date(e);return!Number.isFinite(e)||Number.isNaN(n.getTime())?(t.addIssue({code:y.ZodIssueCode.custom,message:`invalid timestamp`}),y.NEVER):n.toISOString()})]),V_=y.union([y.literal(`per-job`),y.literal(`per-hour`),y.literal(`per-1k-rows`),y.literal(`per-api-call`),y.literal(`per-day`),y.literal(`per-month`),y.literal(`custom`)]),H_=y.object({currency:y.string().optional(),model:y.string().optional(),amount:y.number().positive().optional(),unit:V_.optional(),unitLabel:y.string().optional()}).strict().optional(),U_=y.union([y.literal(`human`),y.literal(`agent`),y.literal(`agent-approval`),y.literal(`api`),y.literal(`dataset`),y.literal(`hybrid`)]),W_=y.object({kind:y.union([y.literal(`result`),y.literal(`artifact`),y.literal(`invoice`),y.literal(`receipt`),y.literal(`tx`),y.literal(`signature`),y.literal(`manual`)]).optional(),required:y.boolean().optional(),description:y.string().optional()}).strict(),G_=y.object({allowed:y.boolean().optional(),humanApprovalRequired:y.boolean().optional(),allowedSkills:y.array(y.string()).optional(),allowedPlugins:y.array(y.string()).optional(),maxRuntimeSeconds:y.number().int().positive().optional(),maxSpendAmount:y.number().positive().optional(),maxSpendCurrency:y.string().optional()}).strict().optional(),K_=y.object({kind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),address:y.string().optional()}).strict().optional(),q_=y.object({chain:y.literal(`solana`).optional(),address:y.string().optional()}).strict().optional(),J_=y.object({currency:y.string().optional(),chain:y.literal(`solana`).optional(),assetDecimals:y.number().int().min(0).max(18).optional(),asset:K_,payee:q_}).strict().optional(),Y_=y.object({id:y.string().optional(),source:y.union([y.literal(`builtin`),y.literal(`manual`),y.literal(`skill`)]).optional(),enabled:y.boolean().optional(),title:y.string(),summary:y.string().optional(),serviceKind:y.string(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),capabilities:y.array(y.string()).optional(),pricing:H_,fulfillmentMode:U_.optional(),performer:U_.optional(),receiptRules:y.array(W_).optional(),automation:G_,paymentRails:y.array(y.string()).optional(),acceptedAssets:y.array(y.string()).optional(),paymentDefaults:J_,availability:y.string().optional(),visibility:y.string().optional(),requiredTrustOrBondTier:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),X_=y.union([y.literal(`draft`),y.literal(`open`),y.literal(`matched`),y.literal(`closed`)]),Z_=y.union([y.literal(`draft`),y.literal(`accepted`),y.literal(`funded`),y.literal(`running`),y.literal(`delivered`),y.literal(`disputed`),y.literal(`closed`),y.literal(`cancelled`)]),Q_=y.union([y.literal(`not_submitted`),y.literal(`pending`),y.literal(`accepted`),y.literal(`failed`)]),$_=y.union([y.literal(`draft`),y.literal(`requires_payment`),y.literal(`submitted`),y.literal(`verified`),y.literal(`failed`),y.literal(`cancelled`)]),ev=y.union([y.literal(`direct`),y.literal(`escrow`)]),tv=y.union([y.literal(`not_required`),y.literal(`requires_payment`),y.literal(`submitted`),y.literal(`verified`),y.literal(`settled`),y.literal(`held`),y.literal(`released`),y.literal(`failed`),y.literal(`disputed`),y.literal(`cancelled`)]),nv=y.union([y.literal(`not_applicable`),y.literal(`required`),y.literal(`funded`),y.literal(`held`),y.literal(`released`),y.literal(`refunded`),y.literal(`cancelled`),y.literal(`blocked`)]),rv=y.union([y.literal(`pending`),y.literal(`ready`),y.literal(`running`),y.literal(`delivered`),y.literal(`failed`),y.literal(`blocked`)]),iv=y.union([y.literal(`pending`),y.literal(`issued`),y.literal(`verified`),y.literal(`rejected`)]),av=y.union([y.literal(`one-time`),y.literal(`per-job`),y.literal(`per-hour`),y.literal(`per-1k-rows`),y.literal(`per-api-call`),y.literal(`per-day`),y.literal(`per-week`),y.literal(`per-month`),y.literal(`custom`)]),ov=y.union([y.literal(`not_applicable`),y.literal(`draft`),y.literal(`active`),y.literal(`past_due`),y.literal(`paused`),y.literal(`expired`),y.literal(`cancelled`),y.literal(`blocked`)]),sv=y.union([y.literal(`none`),y.literal(`manual`),y.literal(`auto-renew`),y.literal(`auto-renew-with-approval`)]),cv=y.union([y.literal(`not_required`),y.literal(`scheduled`),y.literal(`stopped`),y.literal(`blocked`)]),lv=y.object({status:ov.optional(),billingPeriod:av.optional(),maxBuyers:y.number().int().positive().optional(),remainingSlots:y.number().int().min(0).optional(),startsAt:y.string().optional(),endsAt:y.string().optional(),renewalPolicy:sv.optional(),paymentExpiresAt:y.string().optional(),deliveryStop:y.object({status:cv.optional(),reason:y.string().optional(),scheduledAt:y.string().optional(),stoppedAt:y.string().optional(),updatedAt:y.string().optional()}).strict().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),uv=y.union([y.literal(`app-inbox`),y.literal(`channel`),y.literal(`webhook`),y.literal(`websocket`),y.literal(`federation`),y.literal(`api`),y.literal(`artifact`)]),dv=y.union([y.literal(`draft`),y.literal(`ready`),y.literal(`revoked`),y.literal(`expired`),y.literal(`blocked`)]),fv=y.object({targetId:y.string().optional(),source:y.union([y.literal(`order`),y.literal(`subscription`),y.literal(`manual`)]).optional(),owner:y.union([y.literal(`buyer`),y.literal(`seller`)]).optional(),kind:uv.optional(),status:dv.optional(),label:y.string().optional(),descriptor:y.string().optional(),maskedTarget:y.string().optional(),scope:y.object({orderId:y.string().optional(),subscriptionId:y.string().optional(),serviceKind:y.string().optional(),expiresAt:y.string().optional(),maxDeliveries:y.number().int().positive().optional()}).strict().optional(),channel:y.object({provider:y.string().optional(),to:y.string().optional(),accountId:y.string().optional(),threadId:y.union([y.string(),y.number()]).optional()}).strict().optional(),webhook:y.object({url:y.string().optional(),method:y.literal(`POST`).optional(),secretRef:y.string().optional()}).strict().optional(),websocket:y.object({url:y.string().optional(),tokenRef:y.string().optional()}).strict().optional(),federation:y.object({handle:y.string().optional(),nodeEndpoint:y.string().optional()}).strict().optional(),api:y.object({url:y.string().optional(),tokenRef:y.string().optional()}).strict().optional(),artifact:y.object({artifactRef:y.string().optional()}).strict().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional(),revokedAt:y.string().optional()}).strict(),pv=y.object({intentId:y.string().optional(),status:$_.optional(),amount:y.number().optional(),currency:y.string().optional(),unit:V_.optional(),method:y.string().optional(),chain:y.literal(`solana`).optional(),assetKind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),assetAddress:y.string().optional(),assetDecimals:y.number().int().min(0).max(18).optional(),expiresInMinutes:y.number().int().positive().optional(),acceptedAssets:y.array(y.string()).optional(),payerWalletId:y.string().optional(),payeeHandle:y.string().optional(),payeeAddress:y.string().optional(),txRef:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),mv=y.object({status:nv.optional(),holdPolicy:y.union([y.literal(`none`),y.literal(`release_on_delivery`),y.literal(`manual_release`)]).optional(),releaseRequired:y.boolean().optional(),vaultWalletId:y.string().optional(),vaultWalletName:y.string().optional(),vaultAddress:y.string().optional(),fundingRequestId:y.string().optional(),fundingTxRef:y.string().optional(),fundedAt:y.string().optional(),releaseRequestId:y.string().optional(),releaseTxRef:y.string().optional(),releasedAt:y.string().optional(),refundRequestId:y.string().optional(),refundTxRef:y.string().optional(),refundedAt:y.string().optional(),cancelledAt:y.string().optional(),notes:y.string().optional(),updatedAt:y.string().optional()}).strict(),hv=y.object({mode:ev.optional(),status:tv.optional(),amount:y.number().optional(),currency:y.string().optional(),chain:y.literal(`solana`).optional(),assetKind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),assetAddress:y.string().optional(),assetDecimals:y.number().int().min(0).max(18).optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),evidenceRef:y.string().optional(),payerWalletId:y.string().optional(),payeeAddress:y.string().optional(),escrow:mv.optional(),notes:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional(),verifiedAt:y.string().optional(),settledAt:y.string().optional()}).strict(),gv=y.object({status:rv.optional(),fulfillmentMode:U_.optional(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),targetId:y.string().optional(),targetKind:uv.optional(),targetStatus:dv.optional(),targetLabel:y.string().optional(),targetMasked:y.string().optional(),target:fv.optional(),resultRef:y.string().optional(),artifactRef:y.string().optional(),notes:y.string().optional(),deliveredAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),_v=y.object({status:iv.optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),resultRef:y.string().optional(),disputeCaseId:y.string().optional(),notes:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),vv=y.object({id:y.string().optional(),source:y.union([y.literal(`manual`),y.literal(`chat`)]).optional(),enabled:y.boolean().optional(),status:X_.optional(),title:y.string(),summary:y.string().optional(),serviceKind:y.string(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),capabilities:y.array(y.string()).optional(),pricing:H_,fulfillmentMode:U_.optional(),receiptRules:y.array(W_).optional(),paymentRails:y.array(y.string()).optional(),acceptedAssets:y.array(y.string()).optional(),requiredTrustOrBondTier:y.string().optional(),visibility:y.string().optional(),expiresAt:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),yv=y.object({id:y.string().optional(),source:y.union([y.literal(`local`),y.literal(`federation`)]).optional(),status:Z_.optional(),offerId:y.string().optional(),requestId:y.string().optional(),buyerHandle:y.string().optional(),sellerHandle:y.string().optional(),sellerEndpoint:y.string().optional(),sellerOrderId:y.string().optional(),sellerSyncStatus:Q_.optional(),sellerSyncError:y.string().optional(),sellerSyncedAt:y.string().optional(),sellerAcceptedAt:y.string().optional(),serviceKind:y.string().optional(),title:y.string().optional(),pricing:H_,fulfillmentMode:U_.optional(),receiptRules:y.array(W_).optional(),paymentIntent:pv.optional(),settlement:hv.optional(),delivery:gv.optional(),subscription:lv.optional(),receipt:_v.optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),resultRef:y.string().optional(),disputeCaseId:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),bv=y.object({allowPrograms:y.array(y.string()).optional(),tokenCaps:y.record(y.string(),y.object({maxPerTx:y.string().optional(),maxDaily:y.string().optional()}).strict()).optional(),maxPerTx:y.string().optional(),maxDaily:y.string().optional()}).strict(),xv=y.object({provider:y.object({id:y.union([y.literal(`embedded-keystore`),y.literal(`local-socket-signer`),y.literal(`alchemy`),y.literal(`turnkey`),y.literal(`privy`)]).optional()}).strict().optional(),execution:y.object({mode:y.union([y.literal(`manual`),y.literal(`autonomous`)]).optional()}).strict().optional(),approvalAuth:y.object({mode:y.union([y.literal(`none`),y.literal(`webauthn`)]).optional(),challengeTtlSeconds:y.number().int().positive().optional(),grantTtlSeconds:y.number().int().positive().optional()}).strict().optional(),keystore:y.object({enabled:y.boolean().optional(),path:y.string().optional(),chainSupport:y.array(y.literal(`solana`)).optional(),autoLockSeconds:y.number().int().nonnegative().optional(),requirePasskeyForUnlock:y.boolean().optional()}).strict().optional(),runtime:y.object({enabled:y.boolean().optional(),mode:y.union([y.literal(`managed`),y.literal(`external`)]).optional(),runtime:y.union([y.literal(`external-docker`),y.literal(`external-custom`)]).optional(),external:y.object({kind:y.union([y.literal(`docker`),y.literal(`custom`)]).optional()}).strict().optional(),auth:y.object({mode:y.union([y.literal(`jwt-bootstrap`),y.literal(`static-token-compat`)]).optional(),bootstrapUrl:y.string().optional()}).strict().optional(),source:y.object({ref:y.string().optional()}).strict().optional(),chains:y.array(y.literal(`solana`)).optional(),service:y.object({host:y.string().optional(),port:y.number().int().min(1).max(65535).optional()}).strict().optional(),install:y.object({enabled:y.boolean().optional(),version:y.string().optional()}).strict().optional(),policy:y.object({capsEnabled:y.boolean().optional(),directSigning:y.boolean().optional(),skillsEnabled:y.boolean().optional(),solana:bv.optional()}).strict().optional(),toolAccess:y.object({mode:y.union([y.literal(`owner-only`),y.literal(`allowlist`),y.literal(`all`)]).optional(),allowAgents:y.array(y.string()).optional(),allowSkills:y.array(y.string()).optional(),denySkills:y.array(y.string()).optional(),allowSources:y.array(y.string()).optional()}).strict().optional()}).strict().optional()}).strict().optional(),Sv=y.object({$schema:y.string().optional(),meta:y.object({lastTouchedVersion:y.string().optional(),lastTouchedAt:B_.optional()}).strict().optional(),env:y.object({shellEnv:y.object({enabled:y.boolean().optional(),timeoutMs:y.number().int().nonnegative().optional()}).strict().optional(),vars:y.record(y.string(),y.string()).optional()}).catchall(y.string()).optional(),wizard:y.object({lastRunAt:y.string().optional(),lastRunVersion:y.string().optional(),lastRunCommit:y.string().optional(),lastRunCommand:y.string().optional(),lastRunMode:y.union([y.literal(`local`),y.literal(`remote`)]).optional()}).strict().optional(),diagnostics:y.object({enabled:y.boolean().optional(),flags:y.array(y.string()).optional(),otel:y.object({enabled:y.boolean().optional(),endpoint:y.string().optional(),protocol:y.union([y.literal(`http/protobuf`),y.literal(`grpc`)]).optional(),headers:y.record(y.string(),y.string()).optional(),serviceName:y.string().optional(),traces:y.boolean().optional(),metrics:y.boolean().optional(),logs:y.boolean().optional(),sampleRate:y.number().min(0).max(1).optional(),flushIntervalMs:y.number().int().nonnegative().optional()}).strict().optional(),prometheus:y.object({enabled:y.boolean().optional(),path:y.string().optional(),requireAuth:y.boolean().optional(),includeRuntime:y.boolean().optional()}).strict().optional(),cacheTrace:y.object({enabled:y.boolean().optional(),filePath:y.string().optional(),includeMessages:y.boolean().optional(),includePrompt:y.boolean().optional(),includeSystem:y.boolean().optional()}).strict().optional()}).strict().optional(),logging:y.object({level:y.union([y.literal(`silent`),y.literal(`fatal`),y.literal(`error`),y.literal(`warn`),y.literal(`info`),y.literal(`debug`),y.literal(`trace`)]).optional(),file:y.string().optional(),maxFileBytes:y.number().int().positive().optional(),consoleLevel:y.union([y.literal(`silent`),y.literal(`fatal`),y.literal(`error`),y.literal(`warn`),y.literal(`info`),y.literal(`debug`),y.literal(`trace`)]).optional(),consoleStyle:y.union([y.literal(`pretty`),y.literal(`compact`),y.literal(`json`)]).optional(),redactSensitive:y.union([y.literal(`off`),y.literal(`tools`)]).optional(),redactPatterns:y.array(y.string()).optional()}).strict().optional(),update:y.object({channel:y.union([y.literal(`stable`),y.literal(`beta`),y.literal(`dev`)]).optional(),checkOnStart:y.boolean().optional()}).strict().optional(),browser:y.object({enabled:y.boolean().optional(),evaluateEnabled:y.boolean().optional(),cdpUrl:y.string().optional(),remoteCdpTimeoutMs:y.number().int().nonnegative().optional(),remoteCdpHandshakeTimeoutMs:y.number().int().nonnegative().optional(),color:y.string().optional(),executablePath:y.string().optional(),headless:y.boolean().optional(),noSandbox:y.boolean().optional(),attachOnly:y.boolean().optional(),defaultProfile:y.string().optional(),snapshotDefaults:E_,profiles:y.record(y.string().regex(/^[a-z0-9-]+$/,`Profile names must be alphanumeric with hyphens only`),y.object({cdpPort:y.number().int().min(1).max(65535).optional(),cdpUrl:y.string().optional(),driver:y.union([y.literal(`clawd`),y.literal(`extension`)]).optional(),color:Gm}).strict().refine(e=>e.cdpPort||e.cdpUrl,{message:`Profile must set cdpPort or cdpUrl`})).optional()}).strict().optional(),ui:y.object({seamColor:Gm.optional(),assistant:y.object({name:y.string().max(50).optional(),avatar:y.string().max(200).optional()}).strict().optional()}).strict().optional(),auth:y.object({profiles:y.record(y.string(),y.object({provider:y.string(),mode:y.union([y.literal(`api_key`),y.literal(`oauth`),y.literal(`token`)]),email:y.string().optional()}).strict()).optional(),order:y.record(y.string(),y.array(y.string())).optional(),cooldowns:y.object({billingBackoffHours:y.number().positive().optional(),billingBackoffHoursByProvider:y.record(y.string(),y.number().positive()).optional(),overloadedBackoffMs:y.number().positive().optional(),overloadedProfileRotations:y.number().nonnegative().optional(),rateLimitedProfileRotations:y.number().nonnegative().optional(),billingMaxHours:y.number().positive().optional(),failureWindowHours:y.number().positive().optional()}).strict().optional()}).strict().optional(),acp:I_,models:Sm,nodeHost:D_,agents:Nh,tools:jh,bindings:Ph,broadcast:Ih,audio:j_,media:y.object({preserveFilenames:y.boolean().optional()}).strict().optional(),messages:w_,commands:T_,approvals:zh,session:C_,cron:y.object({enabled:y.boolean().optional(),store:y.string().optional(),maxConcurrentRuns:y.number().int().positive().optional(),webhook:y.string().url().refine(e=>/^https?:\/\//iu.test(e),`Must be an http(s) URL`).optional(),webhookToken:y.string().optional().register(V),sessionRetention:y.union([L_,y.literal(!1)]).optional(),runLog:z_.optional()}).strict().optional(),hooks:y.object({enabled:y.boolean().optional(),path:y.string().optional(),token:y.string().optional().register(V),defaultSessionKey:y.string().optional(),allowRequestSessionKey:y.boolean().optional(),allowedSessionKeyPrefixes:y.array(y.string()).optional(),allowedAgentIds:y.array(y.string()).optional(),maxBodyBytes:y.number().int().positive().optional(),presets:y.array(y.string()).optional(),transformsDir:y.string().optional(),mappings:y.array(Hh).optional(),gmail:qh,internal:Kh}).strict().optional(),web:y.object({enabled:y.boolean().optional(),heartbeatSeconds:y.number().int().positive().optional(),reconnect:y.object({initialMs:y.number().positive().optional(),maxMs:y.number().positive().optional(),factor:y.number().positive().optional(),jitter:y.number().min(0).max(1).optional(),maxAttempts:y.number().int().min(0).optional()}).strict().optional()}).strict().optional(),channels:b_,discovery:y.object({wideArea:y.object({enabled:y.boolean().optional(),domain:y.string().optional()}).strict().optional(),mdns:y.object({mode:y.enum([`off`,`minimal`,`full`]).optional()}).strict().optional()}).strict().optional(),federation:y.object({offers:y.object({manual:y.array(Y_).optional(),skill:y.array(Y_.extend({source:y.union([y.literal(`skill`)]).optional(),skillId:y.string().optional()}).strict()).optional()}).strict().optional(),marketplace:y.object({requests:y.object({manual:y.array(vv).optional()}).strict().optional(),deliveryTargets:y.object({local:y.array(fv).optional()}).strict().optional(),orders:y.object({local:y.array(yv).optional()}).strict().optional()}).strict().optional(),bond:y.object({walletId:y.string().optional()}).strict().optional()}).strict().optional(),canvasHost:y.object({enabled:y.boolean().optional(),root:y.string().optional(),port:y.number().int().positive().optional(),liveReload:y.boolean().optional()}).strict().optional(),talk:y.object({provider:y.string().optional(),providers:y.record(y.string(),A_).optional(),voiceId:y.string().optional(),voiceAliases:y.record(y.string(),y.string()).optional(),modelId:y.string().optional(),outputFormat:y.string().optional(),apiKey:H.optional().register(V),interruptOnSpeech:y.boolean().optional()}).strict().optional(),gateway:y.object({port:y.number().int().positive().optional(),channelHealthCheckMinutes:y.number().int().min(0).optional(),mode:y.union([y.literal(`local`),y.literal(`remote`)]).optional(),bind:y.union([y.literal(`auto`),y.literal(`lan`),y.literal(`loopback`),y.literal(`custom`),y.literal(`tailnet`)]).optional(),controlUi:y.object({enabled:y.boolean().optional(),basePath:y.string().optional(),root:y.string().optional(),allowedOrigins:y.array(y.string()).optional(),allowInsecureAuth:y.boolean().optional(),dangerouslyDisableDeviceAuth:y.boolean().optional(),dangerouslyAllowHostHeaderOriginFallback:y.boolean().optional()}).strict().optional(),auth:y.object({mode:y.union([y.literal(`token`),y.literal(`password`),y.literal(`trusted-proxy`)]).optional(),token:y.string().optional().register(V),password:y.string().optional().register(V),allowTailscale:y.boolean().optional(),rateLimit:y.object({maxAttempts:y.number().optional(),windowMs:y.number().optional(),lockoutMs:y.number().optional(),exemptLoopback:y.boolean().optional()}).strict().optional(),trustedProxy:y.object({userHeader:y.string().min(1,`userHeader is required for trusted-proxy mode`),requiredHeaders:y.array(y.string()).optional(),allowUsers:y.array(y.string()).optional()}).strict().optional()}).strict().optional(),trustedProxies:y.array(y.string()).optional(),tools:y.object({deny:y.array(y.string()).optional(),allow:y.array(y.string()).optional()}).strict().optional(),tailscale:y.object({mode:y.union([y.literal(`off`),y.literal(`serve`),y.literal(`funnel`)]).optional(),resetOnExit:y.boolean().optional()}).strict().optional(),remote:y.object({url:y.string().optional(),transport:y.union([y.literal(`ssh`),y.literal(`direct`)]).optional(),token:y.string().optional().register(V),password:y.string().optional().register(V),tlsFingerprint:y.string().optional(),sshTarget:y.string().optional(),sshIdentity:y.string().optional()}).strict().optional(),reload:y.object({mode:y.union([y.literal(`off`),y.literal(`restart`),y.literal(`hot`),y.literal(`hybrid`)]).optional(),debounceMs:y.number().int().min(0).optional()}).strict().optional(),tls:y.object({enabled:y.boolean().optional(),autoGenerate:y.boolean().optional(),certPath:y.string().optional(),keyPath:y.string().optional(),caPath:y.string().optional()}).optional(),http:y.object({endpoints:y.object({chatCompletions:y.object({enabled:y.boolean().optional()}).strict().optional(),responses:y.object({enabled:y.boolean().optional(),maxBodyBytes:y.number().int().positive().optional(),maxUrlParts:y.number().int().nonnegative().optional(),files:y.object({allowUrl:y.boolean().optional(),urlAllowlist:y.array(y.string()).optional(),allowedMimes:y.array(y.string()).optional(),maxBytes:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),maxRedirects:y.number().int().nonnegative().optional(),timeoutMs:y.number().int().positive().optional(),pdf:y.object({maxPages:y.number().int().positive().optional(),maxPixels:y.number().int().positive().optional(),minTextChars:y.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),images:y.object({allowUrl:y.boolean().optional(),urlAllowlist:y.array(y.string()).optional(),allowedMimes:y.array(y.string()).optional(),maxBytes:y.number().int().positive().optional(),maxRedirects:y.number().int().nonnegative().optional(),timeoutMs:y.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),securityHeaders:y.object({strictTransportSecurity:y.union([y.string(),y.literal(!1)]).optional()}).strict().optional()}).strict().optional(),nodes:y.object({browser:y.object({mode:y.union([y.literal(`auto`),y.literal(`manual`),y.literal(`off`)]).optional(),node:y.string().optional()}).strict().optional(),allowCommands:y.array(y.string()).optional(),denyCommands:y.array(y.string()).optional()}).strict().optional(),customBindHost:y.string().optional(),allowRealIpFallback:y.boolean().optional()}).strict().optional(),memory:F_,wallet:xv,secrets:gm,mcp:y.object({servers:y.record(y.string(),y.record(y.string(),y.unknown())).optional()}).strict().optional(),skills:y.object({allowBundled:y.array(y.string()).optional(),load:y.object({extraDirs:y.array(y.string()).optional(),watch:y.boolean().optional(),watchDebounceMs:y.number().int().min(0).optional()}).strict().optional(),install:y.object({preferBrew:y.boolean().optional(),nodeManager:y.union([y.literal(`npm`),y.literal(`pnpm`),y.literal(`yarn`),y.literal(`bun`)]).optional()}).strict().optional(),marketplace:y.object({allowRegistries:y.array(y.string()).optional()}).strict().optional(),entries:y.record(y.string(),y.object({enabled:y.boolean().optional(),apiKey:H.optional().register(V),env:y.record(y.string(),y.string()).optional(),config:y.record(y.string(),y.unknown()).optional()}).strict()).optional()}).strict().optional(),plugins:y.object({enabled:y.boolean().optional(),allow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),load:y.object({paths:y.array(y.string()).optional()}).strict().optional(),slots:y.object({memory:y.string().optional()}).strict().optional(),entries:y.record(y.string(),y.object({enabled:y.boolean().optional(),config:y.record(y.string(),y.unknown()).optional(),runtime:y.object({helpers:y.object({sessions:y.object({read:y.boolean().optional()}).strict().optional()}).strict().optional(),adminRpcActions:y.object({allow:y.array(y.object({method:y.union([y.literal(`chat.inject`),y.literal(`push.test`),y.literal(`web.login.start`),y.literal(`web.login.wait`)]).optional(),sources:y.array(y.string()).optional(),requireOperatorApproval:y.boolean().optional()}).strict()).optional()}).strict().optional()}).strict().optional()}).strict()).optional(),installs:y.record(y.string(),y.object(Jh).strict()).optional()}).strict().optional()}).strict().superRefine((e,t)=>{let n=e.agents?.list??[];if(n.length===0)return;let r=new Set(n.map(e=>e.id)),i=e.broadcast;if(i){for(let[e,n]of Object.entries(i))if(e!==`strategy`&&Array.isArray(n))for(let i=0;i<n.length;i+=1){let a=n[i];r.has(a)||t.addIssue({code:y.ZodIssueCode.custom,path:[`broadcast`,e,i],message:`Unknown agent id "${a}" (not in agents.list).`})}}}),Cv=new Set;function wv(e,t){let n=i.resolve(t);return Hp(n,i.resolve(n,e))}function Tv(e){let t=e.agents?.list;if(!Array.isArray(t)||t.length===0)return[];let n=[];for(let[r,i]of t.entries()){if(!i||typeof i!=`object`)continue;let t=i.identity?.avatar;if(typeof t!=`string`)continue;let a=t.trim();if(a&&!(Rp(a)||zp(a))){if(a.startsWith(`~`)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}if(Bp(a)&&!Vp(a)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}wv(a,el(e,i.id??Zc(e)))||n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must stay within the agent workspace.`})}}return n}function Ev(e){let t=Yf(e);if(t.length>0)return{ok:!1,issues:t.map(e=>({path:e.path,message:e.message}))};let n=Sv.safeParse(e);if(!n.success)return{ok:!1,issues:n.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))};let r=ra(n.data);if(r.length>0)return{ok:!1,issues:[{path:`agents.list`,message:ia(r)}]};let i=Tv(n.data);return i.length>0?{ok:!1,issues:i}:{ok:!0,config:n.data}}function Dv(e){let t=Ev(e);return t.ok?{ok:!0,config:Vd(Hd(Rd(t.config)))}:t}function Ov(e){return Av(e,{applyDefaults:!0})}function kv(e){return Av(e,{applyDefaults:!1})}function Av(e,t){let n=t.applyDefaults?Dv(e):Ev(e);if(!n.ok)return{ok:!1,issues:n.issues,warnings:[]};let r=n.config,i=[],a=[],o=w(e)&&Object.prototype.hasOwnProperty.call(e,`plugins`),s=null,c=()=>{if(s)return s;let e=du({config:r,workspaceDir:el(r,Zc(r))??void 0}),t=new Set(e.plugins.map(e=>e.id)),n=vl(r.plugins);for(let t of e.diagnostics){let e=t.pluginId?`plugins.entries.${t.pluginId}`:`plugins`;!t.pluginId&&t.message.includes(`plugin path not found`)&&(e=`plugins.load.paths`);let n=`${t.pluginId?`plugin ${t.pluginId}`:`plugin`}: ${t.message}`;t.level===`error`?i.push({path:e,message:n}):a.push({path:e,message:n})}return s={registry:e,knownIds:t,normalizedPlugins:n},s},l=new Set([`defaults`,`modelByChannel`,...Et]);if(r.channels&&w(r.channels))for(let e of Object.keys(r.channels)){let t=e.trim();if(t){if(!l.has(t)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels)l.add(e)}l.has(t)||i.push({path:`channels.${t}`,message:`unknown channel id: ${t}`})}}let u=new Set;for(let e of Et)u.add(e.toLowerCase());let d=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();if(!n){i.push({path:t,message:`heartbeat target must not be empty`});return}let r=n.toLowerCase();if(!(r===`last`||r===`none`)&&!At(n)){if(!u.has(r)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels){let t=e.trim();t&&u.add(t.toLowerCase())}}u.has(r)||i.push({path:t,message:`unknown heartbeat target: ${e}`})}};if(d(r.agents?.defaults?.heartbeat?.target,`agents.defaults.heartbeat.target`),Array.isArray(r.agents?.list))for(let[e,t]of r.agents.list.entries())d(t?.heartbeat?.target,`agents.list.${e}.heartbeat.target`);if(!o)return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a};let{registry:f,knownIds:p,normalizedPlugins:m}=c(),h=(e,t,n)=>{if(!Cv.has(t)){if(n?.warnOnly){a.push({path:e,message:`plugin not found: ${t} (stale config entry ignored; remove it from plugins config)`});return}i.push({path:e,message:`plugin not found: ${t}`})}},g=r.plugins,_=g?.entries;if(_&&w(_))for(let e of Object.keys(_))p.has(e)||h(`plugins.entries.${e}`,e,{warnOnly:!0});let v=g?.allow??[];for(let e of v)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.allow`,e);let ee=g?.deny??[];for(let e of ee)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.deny`,e);let te=m.slots.memory;typeof te==`string`&&te.trim()&&!p.has(te)&&h(`plugins.slots.memory`,te);let y=null,ne=new Set;for(let e of f.plugins){let t=e.id;if(ne.has(t))continue;ne.add(t);let n=m.entries[t],o=!!n?.config,s=xl({id:t,origin:e.origin,config:m,rootConfig:r}),c=s.enabled,l=s.reason;if(c){let n=Sl({id:t,kind:e.kind,slot:te,selectedId:y});n.enabled||(c=!1,l=n.reason),n.selected&&e.kind===`memory`&&(y=t)}if(c||o)if(e.configSchema){let r=Np({schema:e.configSchema,cacheKey:e.schemaCacheKey??e.manifestPath??t,value:n?.config??{}});if(!r.ok)for(let e of r.errors)i.push({path:`plugins.entries.${t}.config`,message:`invalid config: ${e}`})}else i.push({path:`plugins.entries.${t}`,message:`plugin schema missing for ${t}`});!c&&o&&a.push({path:`plugins.entries.${t}`,message:`plugin disabled (${l??`disabled`}) but config is present`})}return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a}}const jv=/^v?(\d+)\.(\d+)\.(\d+)(?:-(\d+))?/,Mv=/^v?(20\d{2})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?$/;function Nv(e){if(!e)return null;let t=e.trim().match(jv);if(!t)return null;let[,n,r,i,a]=t,o=e.trim().match(Mv);return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),revision:a?Number.parseInt(a,10):0,flavor:o?`calendar`:`semver`}}function Pv(e,t){let n=Nv(e),r=Nv(t);return!n||!r?null:n.flavor===r.flavor?n.major===r.major?n.minor===r.minor?n.patch===r.patch?n.revision===r.revision?0:n.revision<r.revision?-1:1:n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1:0}const Fv=[`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`ANTHROPIC_OAUTH_TOKEN`,`GEMINI_API_KEY`,`ZAI_API_KEY`,`OPENROUTER_API_KEY`,`AI_GATEWAY_API_KEY`,`MINIMAX_API_KEY`,`SYNTHETIC_API_KEY`,`ELEVENLABS_API_KEY`,`TELEGRAM_BOT_TOKEN`,`DISCORD_BOT_TOKEN`,`SLACK_BOT_TOKEN`,`SLACK_APP_TOKEN`,`FASED_GATEWAY_TOKEN`,`FASED_GATEWAY_PASSWORD`],Iv=[];function Lv(e){let t=e,n=[];for(let e of Iv){let r=!!(t.plugins?.entries&&e in t.plugins.entries),i=!!(t.plugins?.installs&&e in t.plugins.installs),a=Array.isArray(t.plugins?.allow)&&t.plugins.allow.includes(e),o=t.plugins?.slots?.memory===e;!r&&!i&&!a&&!o||(t=Gi(t,e).config,n.push(e))}return{config:t,removedPluginIds:n}}const Rv=/^(?<policyPath>[a-z0-9_.-]+)\s*=\s*"open"\s+requires\s+(?<allowPath>[a-z0-9_.-]+)(?:\s+\(or\s+[a-z0-9_.-]+\))?\s+to include "\*"$/i,zv=new Set;function Bv(e){return _.createHash(`sha256`).update(e??``).digest(`hex`)}function Vv(e,t){let n=t.match(Rv),r=n?.groups?.policyPath?.trim(),i=n?.groups?.allowPath?.trim();return!r||!i?`Config validation failed: ${e}: ${t}`:[`Config validation failed: ${e}`,``,`Configuration mismatch: ${r} is "open", but ${i} does not include "*".`,``,`Fix with:`,` fased config set ${i} '["*"]'`,``,`Or switch policy:`,` fased config set ${r} "pairing"`].join(`
|
|
2
|
+
`)}async function aa(e,t){let n=`${e}.bak`;await t.unlink(`${n}.4`).catch(()=>{});for(let e=3;e>=1;--e)await t.rename(`${n}.${e}`,`${n}.${e+1}`).catch(()=>{});await t.rename(n,`${n}.1`).catch(()=>{})}function oa(e){if(typeof e==`string`)return e.trim()||void 0;if(!(!e||typeof e!=`object`))return e.primary?.trim()||void 0}const O=[`off`,`minimal`,`low`,`medium`,`high`],sa=[...O,`xhigh`],ca=[`off`,`low`,`medium`,`high`,`xhigh`,`max`],la=[...ca,`ultra`],ua=[`openai/gpt-5.6`,`openai/gpt-5.6-terra`,`openai/gpt-5.6-luna`,`openai/gpt-5.5`,`openai/gpt-5.4`,`openai/gpt-5.4-mini`,`openai/gpt-5.4-nano`,`openai-codex/gpt-5.6-sol`,`openai-codex/gpt-5.6-terra`,`openai-codex/gpt-5.6-luna`,`openai-codex/gpt-5.5`,`openai-codex/gpt-5.4`,`openai-codex/gpt-5.4-mini`,`openai-codex/gpt-5.3-codex-spark`,`github-copilot/gpt-5.5`,`github-copilot/gpt-5.4`,`github-copilot/gpt-5.4-mini`,`github-copilot/gpt-5.3-codex-spark`],da=new Set(ua.map(e=>e.toLowerCase())),fa=new Set(ua.map(e=>e.split(`/`)[1]?.toLowerCase()).filter(e=>!!e)),pa=new Set([`openai/gpt-5.6`,`openai/gpt-5.6-sol`,`openai/gpt-5.6-terra`,`openai/gpt-5.6-luna`,`openai-codex/gpt-5.6-sol`,`openai-codex/gpt-5.6-terra`,`openai-codex/gpt-5.6-luna`].map(e=>e.toLowerCase())),ma=new Set([`gpt-5.6`,`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`]);function ha(e){if(!e)return``;let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t}function ga(e){if(!e)return;let t=e.trim().toLowerCase(),n=t.replace(/[\s_-]+/g,``);if(n===`xhigh`||n===`extrahigh`)return`xhigh`;if(t===`max`)return`max`;if(t===`ultra`)return`ultra`;if(t===`off`)return`off`;if([`on`,`enable`,`enabled`].includes(t))return`low`;if([`min`,`minimal`].includes(t))return`minimal`;if([`low`,`thinkhard`,`think-hard`,`think_hard`].includes(t))return`low`;if([`mid`,`med`,`medium`,`thinkharder`,`think-harder`,`harder`].includes(t))return`medium`;if([`high`,`ultrathink`,`think-hard`,`thinkhardest`,`highest`].includes(t))return`high`;if(t===`think`)return`minimal`}function _a(e,t){let n=t?.trim().toLowerCase();if(!n)return!1;let r=e?.trim().toLowerCase();return r?pa.has(`${r}/${n}`):ma.has(n)}function va(e,t){let n=t?.trim().toLowerCase();if(!n)return!1;let r=e?.trim().toLowerCase();return r?da.has(`${r}/${n}`):fa.has(n)}function ya(e){let t=new Set,n=[];for(let r of e??[]){let e=ga(r);!e||t.has(e)||(t.add(e),n.push(e))}return n}function ba(e,t){let n=ha(e),r=t?.trim().toLowerCase();return n===`openai-codex`&&(r===`gpt-5.6-sol`||r===`gpt-5.6-terra`)?[...la]:_a(e,t)?[...ca]:va(e,t)?[...sa]:[...O]}function xa(e){let t=e?.trim().toLowerCase()??``;return t.includes(`fable-5`)||t.includes(`opus-4-8`)||t.includes(`opus-4.8`)||t.includes(`opus-4-6`)||t.includes(`opus-4.6`)||t.includes(`opus-4-7`)||t.includes(`opus-4.7`)||t.includes(`sonnet-5`)||t.includes(`sonnet-4-6`)||t.includes(`sonnet-4.6`)||t.includes(`sonnet-4-7`)||t.includes(`sonnet-4.7`)}function Sa(e,t){let n=ha(e);return n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?{thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:n===`anthropic`?{thinkingMode:xa(t)?`anthropic-adaptive`:`anthropic-thinking-budget`,reasoningBudgetSupported:!xa(t)}:n===`google`||n===`google-gemini-cli`?{thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:n===`zai`?{thinkingMode:`zai-binary`,reasoningBudgetSupported:!1}:n===`qwen`||n===`qwen-coding-plan`?{thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}:n===`moonshot`||n===`kimi-coding`?{thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}:{thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}}function Ca(e,t){let n=ha(e),r=t?.trim().toLowerCase()??``;return!n||!r?!1:n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?/^gpt-5(?:[.-]|$)/.test(r):n===`anthropic`?r.startsWith(`claude-`)||r.includes(`claude-`):n===`google`||n===`google-gemini-cli`?r.startsWith(`gemini-`):n===`zai`?r.startsWith(`glm-`):n===`qwen`||n===`qwen-coding-plan`?r.includes(`qwen`):n===`moonshot`||n===`kimi-coding`?r.includes(`kimi`):n===`minimax`||n===`minimax-cn`?r.includes(`minimax-m2`):[`openrouter`,`vercel-ai-gateway`,`opencode`,`huggingface`,`venice`,`together`,`synthetic`,`litellm`].includes(n)?/(gpt-5|claude-|gemini-|grok-|qwen|kimi|glm-|deepseek-r1|reasoning|thinking)/.test(r):!1}function wa(e){let t=ya(e.capabilities?.thinkingLevels),n=t.length>0||typeof e.capabilities?.thinkingMode==`string`||typeof e.capabilities?.defaultThinkingLevel==`string`;if(e.capabilities?.fixedReasoning===!0&&!n||!(e.reasoning===!0||e.reasoning!==!1&&Ca(e.provider,e.model))&&!n)return null;let r=Sa(e.provider,e.model),i=r.thinkingMode===`zai-binary`?[`off`,`low`]:ba(e.provider,e.model),a=t.length>0?t:i,o=ga(e.capabilities?.defaultThinkingLevel);return{thinkingLevels:a,defaultThinkingLevel:o&&a.includes(o)?o:a.includes(`low`)?`low`:a[0]??`off`,thinkingMode:e.capabilities?.thinkingMode??r.thinkingMode,reasoningBudgetSupported:e.capabilities?.reasoningBudgetSupported??r.reasoningBudgetSupported}}const Ta=`cloudflare-ai-gateway`,Ea=`claude-sonnet-5`;`${Ta}${Ea}`;const Da={input:0,output:0,cacheRead:0,cacheWrite:0},Oa={tools:!0,json:!0},ka={thinkingLevels:[...O],defaultThinkingLevel:`low`,reasoningBudgetSupported:!0},Aa=[{id:Ea,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],cost:Da,contextWindow:1e6,maxTokens:128e3,capabilities:{...Oa,...ka,thinkingMode:`anthropic-adaptive`}},{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],cost:Da,contextWindow:1e6,maxTokens:128e3,capabilities:{...Oa,...ka,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1}},{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],cost:Da,contextWindow:2e5,maxTokens:64e3,capabilities:{...Oa,...ka,thinkingMode:`anthropic-thinking-budget`}}],ja=Aa.map(e=>e.id).map(e=>`${Ta}/${e}`);function Ma(e){let t=e?.id?.trim()||Ea,n=Aa.find(e=>e.id===t)??Aa[0];return{id:t,name:e?.name??n.name,api:`anthropic-messages`,reasoning:e?.reasoning??n.reasoning,input:e?.input??[...n.input],cost:{...n.cost},contextWindow:n.contextWindow,maxTokens:n.maxTokens,capabilities:n.capabilities?{...n.capabilities}:void 0}}function Na(e=Ta){return Object.fromEntries(Aa.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Pa=`openai/gpt-oss-120b`;`${Pa}`;const k={tools:!0,json:!0},Fa=[{id:Pa,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.15,output:.75,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:1.69,output:3.38,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V4-Flash`,name:`DeepSeek V4 Flash`,reasoning:!1,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:.14,output:.28,cacheRead:0,cacheWrite:0},capabilities:k},{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:204800,maxTokens:8192,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},capabilities:k},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:8192,cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3.6-35B-A3B`,name:`Qwen3.6 35B A3B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.15,output:.95,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3 Coder Next`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},capabilities:{tools:!0,json:!1}},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:1.3,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.14,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-4-26B-A4B-it`,name:`Gemma 4 26B A4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.13,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.1,output:.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.269,output:.4,cacheRead:0,cacheWrite:0},capabilities:k},{id:`meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen3 VL 235B A22B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:8192,cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},capabilities:k},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.09,output:.58,cacheRead:0,cacheWrite:0},capabilities:k},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:0,cacheWrite:0},capabilities:{tools:!1,json:!0}},{id:`inclusionAI/Ling-2.6-1T`,name:`Ling 2.6 1T`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},capabilities:k}],Ia=Fa.map(e=>e.id).map(e=>`huggingface/${e}`);function La(e){return{...e.capabilities?{...e.capabilities}:{},...e.reasoning?{fixedReasoning:!0}:{}}}function Ra(e){let t=La(e);return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:t}}function za(e=`huggingface`){return Object.fromEntries(Fa.map(t=>[`${e}/${t.id}`.toLowerCase(),La(t)]))}const Ba=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`,`gpt-5.3-codex-spark`,`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`minimax-m2.7`,`glm-5.2`,`kimi-k2.6`],Va=Ba.map(e=>`opencode/${e}`);function Ha(e){let t=e.trim().toLowerCase();return t.startsWith(`claude-`)?{provider:`anthropic`,model:t}:t.startsWith(`gemini-`)?{provider:`google`,model:t}:t.startsWith(`glm-`)?{provider:`zai`,model:t}:t.startsWith(`kimi-`)?{provider:`moonshot`,model:t}:t.startsWith(`qwen`)?{provider:`qwen`,model:t}:t.startsWith(`gpt-`)?{provider:`openai`,model:t}:{provider:`opencode`,model:t}}function Ua(e){let t=Ha(e),n=wa({provider:t.provider,model:t.model,reasoning:!0});return{tools:!0,json:!0,...n?{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}:{}}}function Wa(e){return Object.fromEntries(e.map(e=>[e,Ua(e.replace(/^opencode\//,``))]))}const Ga=`hf:MiniMaxAI/MiniMax-M2.5`;`${Ga}`;const Ka={input:0,output:0,cacheRead:0,cacheWrite:0},A={tools:!0,json:!0},qa=[{id:`hf:zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,capabilities:A},{id:Ga,name:`MiniMax M2.5`,reasoning:!1,input:[`text`],contextWindow:191488,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-4.7-Flash`,name:`GLM-4.7 Flash`,reasoning:!1,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:A},{id:`hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4`,name:`NVIDIA Nemotron 3 Super 120B`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:65536,capabilities:A},{id:`hf:zai-org/GLM-4.7`,name:`GLM-4.7`,reasoning:!1,input:[`text`],contextWindow:202752,maxTokens:65536,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:159e3,maxTokens:8192,capabilities:A},{id:`hf:openai/gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:A},{id:`hf:moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:nvidia/Kimi-K2.5-NVFP4`,name:`Kimi K2.5 NVFP4`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3 235B A22B Thinking 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:A},{id:`hf:Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:A}],Ja=qa.map(e=>e.id);function Ya(e){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:{...Ka},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function Xa(e=`synthetic`){return Object.fromEntries(qa.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Za=`moonshotai/Kimi-K2.6`;`${Za}`;const j={tools:!0,json:!0},Qa={tools:!1,json:!1},$a=[{id:Za,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:16384,cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:1.2},capabilities:{...j,video:!0}},{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:2.8,cacheRead:.5,cacheWrite:2.8},capabilities:j},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.3},capabilities:j},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1.4,output:4.4,cacheRead:1.4,cacheWrite:1.4},capabilities:j},{id:`zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1,output:3.2,cacheRead:1,cacheWrite:1},capabilities:j},{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,reasoning:!0,input:[`text`],contextWindow:1e6,maxTokens:32768,cost:{input:.5,output:3,cacheRead:.5,cacheWrite:.5},capabilities:Qa},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.6,output:3.6,cacheRead:.6,cacheWrite:.6},capabilities:j},{id:`Qwen/Qwen3.5-9B`,name:`Qwen3.5 9B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.1,output:.15,cacheRead:.1,cacheWrite:.1},capabilities:j},{id:`openai/gpt-oss-120b`,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},capabilities:j},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.05,output:.2,cacheRead:.05,cacheWrite:.05},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:512e3,maxTokens:32768,cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:2.1},capabilities:j},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:32768,cost:{input:3,output:7,cacheRead:3,cacheWrite:3},capabilities:Qa},{id:`deepseek-ai/DeepSeek-V3.1`,name:`DeepSeek V3.1`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:32768,cost:{input:.6,output:1.7,cacheRead:.6,cacheWrite:.6},capabilities:Qa},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct FP8`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:32768,cost:{input:2,output:2,cacheRead:2,cacheWrite:2},capabilities:j},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.6,cacheRead:.2,cacheWrite:.2},capabilities:j},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:1.2,cacheRead:.5,cacheWrite:.5},capabilities:Qa},{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B Instruct Turbo`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.88,output:.88,cacheRead:.88,cacheWrite:.88},capabilities:j},{id:`essentialai/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:.15,cacheWrite:.15},capabilities:j},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.5,cacheRead:.2,cacheWrite:.2},capabilities:j},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:.06,cacheWrite:.06},capabilities:{tools:!1,json:!0}}],eo=$a.map(e=>e.id).map(e=>`together/${e}`);function to(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function no(e=`together`){return Object.fromEntries($a.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const ro=`zai-org-glm-5-1`;`${ro}`;const M={thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},N={tools:!0,json:!0},io={tools:!0,json:!1},ao=[{id:ro,name:`GLM 5.1`,reasoning:!0,input:[`text`],cost:{input:1.75,output:5.5,cacheRead:.325,cacheWrite:0},contextWindow:2e5,maxTokens:24e3,capabilities:{...N,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`venice-uncensored-1-2`,name:`Venice Uncensored 1.2`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.9,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:N},{id:`qwen-3-6-plus`,name:`Qwen 3.6 Plus Uncensored`,reasoning:!0,input:[`text`,`image`],cost:{input:.625,output:3.75,cacheRead:.0625,cacheWrite:.78},contextWindow:1e6,maxTokens:65536,capabilities:{...N,video:!0,fixedReasoning:!0}},{id:`qwen3-5-397b-a17b`,name:`Qwen 3.5 397B`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768,capabilities:{...N,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`qwen3-235b-a22b-thinking-2507`,name:`Qwen 3 235B A22B Thinking`,reasoning:!0,input:[`text`],cost:{input:.45,output:3.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...N,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`qwen3-coder-480b-a35b-instruct-turbo`,name:`Qwen 3 Coder 480B Turbo`,reasoning:!1,input:[`text`],cost:{input:.35,output:1.5,cacheRead:.04,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:N},{id:`qwen3-vl-235b-a22b`,name:`Qwen3 VL 235B`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384,capabilities:N},{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],cost:{input:1.73,output:3.796,cacheRead:.33,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...N,fixedReasoning:!0}},{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,input:[`text`],cost:{input:.17,output:.35,cacheRead:.028,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...N,fixedReasoning:!0}},{id:`kimi-k2-6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],cost:{input:.85,output:4.655,cacheRead:.22,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...N,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,reasoning:!0,input:[`text`,`image`],cost:{input:6,output:30,cacheRead:.6,cacheWrite:7.5},contextWindow:1e6,maxTokens:128e3,capabilities:{...N,fixedReasoning:!0}},{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,reasoning:!0,input:[`text`,`image`],cost:{input:3.6,output:18,cacheRead:.36,cacheWrite:4.5},contextWindow:1e6,maxTokens:64e3,capabilities:{...N,fixedReasoning:!0}},{id:`openai-gpt-55`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],cost:{input:6.25,output:37.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`openai-gpt-55-pro`,name:`GPT-5.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:37.5,output:225,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`medium`,...M}},{id:`openai-gpt-54`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],cost:{input:3.13,output:18.8,cacheRead:.313,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`openai-gpt-54-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],cost:{input:.9375,output:5.625,cacheRead:.09375,cacheWrite:0},contextWindow:4e5,maxTokens:128e3,capabilities:{...N,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...M}},{id:`gemini-3-1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.5,cacheWrite:.5},contextWindow:1e6,maxTokens:32768,capabilities:{...N,audio:!0,video:!0,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`grok-4-20`,name:`Grok 4.20`,reasoning:!0,input:[`text`,`image`],cost:{input:1.42,output:2.83,cacheRead:.23,cacheWrite:0},contextWindow:2e6,maxTokens:128e3,capabilities:{...N,fixedReasoning:!0}},{id:`minimax-m27`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],cost:{input:.375,output:1.5,cacheRead:.075,cacheWrite:0},contextWindow:198e3,maxTokens:32768,capabilities:{...io,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`openai-gpt-oss-120b`,name:`OpenAI GPT OSS 120B`,reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...io,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`google-gemma-4-31b-it`,name:`Google Gemma 4 31B Instruct`,reasoning:!0,input:[`text`,`image`],cost:{input:.175,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192,capabilities:{...N,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...M}},{id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:.75,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...N,thinkingLevels:[`off`,`high`],defaultThinkingLevel:`high`,...M}}],oo=ao.map(e=>e.id).map(e=>`venice/${e}`);function so(e){let t=e.capabilities,n=!!t?.thinkingLevels?.length;return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:n},capabilities:t?{...t}:void 0}}function co(e=`venice`){return Object.fromEntries(ao.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const lo=[{id:`openai/gpt-5.5`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`web-search`,`implicit-caching`,`file-input`,`vision`]},{id:`openai/gpt-5.4`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-mini`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-nano`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`web-search`,`vision`,`file-input`]},{id:`anthropic/claude-fable-5`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-opus-4.8`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-sonnet-5`,contextWindow:1e6,maxTokens:128e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-haiku-4.5`,contextWindow:2e5,maxTokens:64e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`]},{id:`google/gemini-3.5-flash`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-pro-preview`,contextWindow:1e6,maxTokens:64e3,tags:[`file-input`,`tool-use`,`reasoning`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-flash-lite`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-4.3`,contextWindow:1e6,maxTokens:1e6,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-build-0.1`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`,`implicit-caching`]},{id:`mistral/mistral-medium-3.5`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`minimax/minimax-m2.7`,contextWindow:204800,maxTokens:131e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`]},{id:`minimax/minimax-m2.7-highspeed`,contextWindow:204800,maxTokens:131100,tags:[`reasoning`,`tool-use`,`implicit-caching`,`vision`]},{id:`moonshotai/kimi-k2.6`,contextWindow:262e3,maxTokens:262e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`]}],uo=lo.map(e=>e.id),fo=uo.map(e=>`vercel-ai-gateway/${e}`),po={anthropic:`Anthropic`,google:`Google`,minimax:`MiniMax`,mistral:`Mistral`,moonshotai:`Moonshot`,openai:`OpenAI`,xai:`xAI`};function mo(e){let t=e.trim().replace(/^vercel-ai-gateway\//,``).toLowerCase();return lo.find(e=>e.id.toLowerCase()===t)}function ho(e){let[t,...n]=e.trim().replace(/^vercel-ai-gateway\//,``).split(`/`),r=n.join(`/`);switch(t){case`anthropic`:return{provider:`anthropic`,model:r};case`google`:return{provider:`google`,model:r};case`minimax`:return{provider:`minimax`,model:r};case`moonshotai`:return{provider:`moonshot`,model:r};case`openai`:return{provider:`openai`,model:r};case`xai`:return{provider:`xai`,model:r};default:return{provider:`vercel-ai-gateway`,model:e}}}function go(e){let t=mo(e);if(!t)return;let n=new Set(t.tags.map(e=>e.toLowerCase())),r=ho(t.id),i=n.has(`reasoning`)?wa({provider:r.provider,model:r.model,reasoning:!0}):null;return{tools:n.has(`tool-use`),...i?{thinkingLevels:i.thinkingLevels,defaultThinkingLevel:i.defaultThinkingLevel,thinkingMode:i.thinkingMode,reasoningBudgetSupported:i.reasoningBudgetSupported}:{}}}function _o(e){return Object.fromEntries(e.flatMap(e=>{let t=go(e);return t?[[e,t]]:[]}))}function vo(e){let[t,...n]=e.split(`/`),r=po[t??``]??t,i=n.join(`/`);return!r||!i?e:`${r} ${i.replace(/\bapi\b/gi,`API`).replace(/\bgpt\b/gi,`GPT`).replace(/\bxai\b/gi,`xAI`).replace(/[._-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}`}function yo(e){let t=mo(e),n=new Set(t?.tags.map(e=>e.toLowerCase())??[]),r=go(e);return{id:e,name:vo(e),reasoning:n.has(`reasoning`),input:n.has(`vision`)?[`text`,`image`]:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:t?.contextWindow??2e5,maxTokens:t?.maxTokens??8192,api:`openai-completions`,...r?{capabilities:r}:{}}}const bo={tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},xo={...bo,audio:!0,video:!0},So=[{id:`mimo-v2.5-pro`,name:`Xiaomi MiMo V2.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:bo},{id:`mimo-v2.5`,name:`Xiaomi MiMo V2.5`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:xo},{id:`mimo-v2-pro`,name:`Xiaomi MiMo V2 Pro`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:bo},{id:`mimo-v2-omni`,name:`Xiaomi MiMo V2 Omni`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:128e3,capabilities:xo},{id:`mimo-v2-flash`,name:`Xiaomi MiMo V2 Flash`,reasoning:!0,input:[`text`],cost:{input:.11,output:.32,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:64e3,capabilities:bo}],Co=So.map(e=>e.id);function wo(e){let t=So.find(t=>t.id===e);if(!t)throw Error(`Unknown Xiaomi model: ${e}`);return{...t,input:[...t.input],cost:{...t.cost},capabilities:t.capabilities?{...t.capabilities}:void 0}}function To(e=`xiaomi`){return Object.fromEntries(So.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Eo=`default`;`${Eo}`,[{id:Eo,name:`LiteLLM proxy default`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,cost:{input:0,output:0,cacheRead:0,cacheWrite:0},capabilities:{}}].map(e=>e.id).map(e=>`litellm/${e}`);const Do=`openai.anthropic.chutes.ollama.lmstudio.vllm.minimax.moonshot.google.xai.mistral.volcengine.byteplus.openrouter.qwen.zai.qianfan.copilot.ai-gateway.opencode-zen.xiaomi.synthetic.together.huggingface.venice.litellm.cloudflare-ai-gateway.custom`.split(`.`);new Map(Do.map((e,t)=>[e,t]));const Oo=`openai`,ko=`openai-codex`,Ao=`anthropic`,jo=`chutes`,Mo=`ollama`,No=`lmstudio`,Po=`vllm`,Fo=`minimax`,Io=`minimax-cn`,Lo=`minimax-portal`,P=`moonshot`,Ro=`kimi-coding`,zo=`google`,Bo=`google-gemini-cli`,Vo=`mistral`,Ho=`volcengine`,Uo=`volcengine-coding`,Wo=`volcengine-plan`,Go=`byteplus`,Ko=`byteplus-coding`,qo=`byteplus-plan`,Jo=`openrouter`,Yo=`qwen`,Xo=`qwen-coding-plan`,Zo=`qianfan`,Qo=`github-copilot`,$o=`copilot-proxy`,es=`vercel-ai-gateway`,ts=`opencode`,ns=`xiaomi`,rs=`synthetic`,is=`together`,as=`huggingface`,os=`venice`,ss=`litellm`,cs=`custom`,ls=[`gpt-5.6`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`],us=[`gpt-5.6-sol`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`],ds=[`gpt-5.3-codex`,`gpt-5.3-codex-spark`,`gpt-5.4`,`gpt-5.4-mini`],fs=ls.map(e=>`${Oo}/${e}`),ps=us.map(e=>`${ko}/${e}`),ms=[`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`].map(e=>`${Ao}/${e}`),hs=[`google/gemma-4-31B-turbo-TEE`,`Qwen/Qwen3-32B-TEE`,`deepseek-ai/DeepSeek-V3.2-TEE`,`zai-org/GLM-5.1-TEE`,`moonshotai/Kimi-K2.6-TEE`,`Qwen/Qwen3.6-27B-TEE`,`Qwen/Qwen3.5-397B-A17B-TEE`,`zai-org/GLM-5-TEE`,`Qwen/Qwen3-235B-A22B-Thinking-2507-TEE`,`zai-org/GLM-5.2-TEE`],gs=hs.map(e=>`${jo}/${e}`),_s=[],vs=[],ys=[],bs=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`],xs=bs.map(e=>`${Fo}/${e}`),Ss=bs.map(e=>`${Io}/${e}`),Cs=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`].map(e=>`${Lo}/${e}`),ws=[`kimi-k2.6`,`kimi-k2.5`].map(e=>`${P}/${e}`),Ts=[`kimi-for-coding`].map(e=>`${Ro}/${e}`),Es=[`gemini-3.5-flash`,`gemini-3.1-pro-preview`,`gemini-3-flash-preview`,`gemini-3.1-flash-lite`],Ds=Es.map(e=>`${zo}/${e}`),Os=Es.map(e=>`${Bo}/${e}`),ks=[`grok-4.5`,`grok-4.3`,`grok-build-0.1`].map(e=>`xai/${e}`),As=[`mistral-medium-3.5`,`mistral-small-2603`,`mistral-large-2512`,`devstral-2512`,`ministral-14b-2512`,`ministral-8b-2512`,`ministral-3b-2512`].map(e=>`${Vo}/${e}`),js=[`doubao-seed-2-0-pro-260215`,`doubao-seed-2-0-lite-260215`,`doubao-seed-2-0-mini-260215`,`doubao-seed-2-0-code-preview-260215`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Ho}/${e}`),Ms=[`ark-code-latest`,`doubao-seed-2.0-code`,`doubao-seed-2.0-pro`,`doubao-seed-2.0-lite`,`doubao-seed-code`,`minimax-m2.5`,`glm-4.7`,`deepseek-v3.2`,`kimi-k2.5`].flatMap(e=>[`${Uo}/${e}`,`${Wo}/${e}`]),Ns=[`seed-2-0-pro-260328`,`seed-2-0-lite-260228`,`seed-2-0-mini-260215`,`seed-2-0-code-preview-260328`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Go}/${e}`),Ps=[`ark-code-latest`,`dola-seed-2.0-pro`,`dola-seed-2.0-lite`,`dola-seed-2.0-code`,`bytedance-seed-code`,`glm-5.1`,`glm-4.7`,`kimi-k2.5`,`gpt-oss-120b`].flatMap(e=>[`${Ko}/${e}`,`${qo}/${e}`]),Fs=`openai/gpt-5.6-sol,openai/gpt-5.6-terra,openai/gpt-5.6-luna,openai/gpt-5.5,openai/gpt-5.4,openai/gpt-5.4-mini,openai/gpt-5.4-nano,anthropic/claude-fable-5,anthropic/claude-opus-4.8,anthropic/claude-sonnet-5,anthropic/claude-haiku-4.5,google/gemini-3.5-flash,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google/gemini-3.1-flash-lite,x-ai/grok-4.5,x-ai/grok-4.3,x-ai/grok-build-0.1,mistralai/mistral-medium-3-5,mistralai/mistral-small-2603,mistralai/mistral-large-2512,mistralai/devstral-2512,qwen/qwen3.7-max,qwen/qwen3.7-plus,qwen/qwen3.6-flash,z-ai/glm-5.2,deepseek/deepseek-v4-pro,deepseek/deepseek-v4-flash,minimax/minimax-m2.7,moonshotai/kimi-k2.6`.split(`,`).map(e=>`${Jo}/${e}`),Is=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`].map(e=>`${Yo}/${e}`),Ls=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`,`deepseek-v4-pro`,`deepseek-v4-flash`,`kimi-k2.7-code`,`glm-5.2`,`MiniMax-M2.5`].map(e=>`${Xo}/${e}`),Rs=[`glm-5.2`,`glm-5.1`,`glm-5`,`glm-5-turbo`,`glm-5v-turbo`,`glm-4.7`,`glm-4.7-flashx`,`glm-4.7-flash`].map(e=>`zai/${e}`),zs={tools:!0,json:!0,thinkingLevels:[`off`,`low`],defaultThinkingLevel:`low`,thinkingMode:`zai-binary`,reasoningBudgetSupported:!1},Bs=Object.fromEntries(Rs.map(e=>[e,e.endsWith(`/glm-5v-turbo`)?{...zs,video:!0}:zs])),Vs=[`ernie-5.1`,`ernie-5.0`,`ernie-5.0-thinking-latest`,`ernie-5.0-thinking-preview`,`ernie-x1.1-preview`,`ernie-x1.1`,`ernie-x1-turbo-32k`,`deepseek-v4-pro`,`deepseek-v4-flash`,`deepseek-v3.2-think`,`deepseek-v3.2`].map(e=>`${Zo}/${e}`),Hs=new Set([`qianfan/ernie-5.1`,`qianfan/ernie-5.0`,`qianfan/ernie-5.0-thinking-latest`,`qianfan/ernie-5.0-thinking-preview`,`qianfan/ernie-x1.1-preview`,`qianfan/ernie-x1.1`,`qianfan/ernie-x1-turbo-32k`]),Us=new Set([`qianfan/deepseek-v4-pro`,`qianfan/deepseek-v4-flash`,`qianfan/deepseek-v3.2-think`,`qianfan/deepseek-v3.2`]),Ws=Object.fromEntries(Vs.map(e=>[e,{tools:!0,json:!0,...Hs.has(e)?{fixedReasoning:!0}:Us.has(e)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!0}:{}}])),Gs=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-4.1`,`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`,`claude-haiku-4.5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`grok-build-0.1`],Ks=Gs.map(e=>`${Qo}/${e}`),qs=[...Gs],Js=qs.map(e=>`${$o}/${e}`);`${Qo}`;const Ys=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`]),Xs=new Set([`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`]),Zs=new Set([`claude-haiku-4.5`]),Qs=new Set([`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`]);function $s(e){return Object.fromEntries(e.map(e=>{let t=e.slice(e.indexOf(`/`)+1);return[e,{tools:!0,json:!0,...Ys.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:Xs.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:Zs.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:Qs.has(t)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{}}]}))}const ec={...$s(Ks),...$s(Js)},tc=_o(fo),nc=Wa(Va),rc=Co.map(e=>`${ns}/${e}`);`${ns}`;const ic=To(ns),ac=Ja.map(e=>`${rs}/${e}`);`${rs}`;const oc=Xa(rs),sc=no(is),cc=za(as),lc=co(os),uc=Na(Ta),dc=[];function fc(e){let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{route:e.slice(0,t).trim(),model:e.slice(t+1).trim()}}function pc(e,t){let n=t.trim().toLowerCase(),r=(e,r)=>n.startsWith(`${e}/`)?{provider:r,model:t.slice(e.length+1)}:null;return r(`openai`,Oo)??r(`anthropic`,Ao)??r(`google`,zo)??r(`x-ai`,`xai`)??r(`xai`,`xai`)??r(`mistralai`,Vo)??r(`minimax`,Fo)??r(`qwen`,Yo)??r(`moonshotai`,P)??r(`z-ai`,`zai`)??r(`zai-org`,`zai`)??r(`glm`,`zai`)??{provider:n.includes(`claude-`)||n.includes(`claude_`)?Ao:n.includes(`gemini-`)?zo:n.includes(`qwen`)?Yo:n.includes(`kimi`)?P:n.includes(`glm-`)?`zai`:e,model:t}}function mc(e){let t=pc(e.route,e.model),n=wa({provider:t.provider,model:t.model,reasoning:e.reasoning});if(n)return{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}}function hc(e){let t=fc(e);if(t)return mc({route:t.route,model:t.model})}function gc(e){return Object.fromEntries(e.map(e=>[e.toLowerCase(),hc(e)??{}]))}function F(e,t){let n=gc(e);for(let[e,r]of Object.entries(t))n[e.toLowerCase()]={...n[e.toLowerCase()],...r};return n}const _c=[...O],vc={"anthropic/claude-fable-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-opus-4-8":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-sonnet-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-haiku-4-5":{thinkingLevels:_c,defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}},yc=Object.fromEntries(hs.map(e=>[`${jo}/${e}`,{tools:!0,json:!0,...mc({route:jo,model:e,reasoning:!0}),...e===`moonshotai/Kimi-K2.6-TEE`?{video:!0}:{}}])),bc=[...O],xc=Object.fromEntries([...xs,...Ss,...Cs].map(e=>[e,{tools:!0,thinkingLevels:bc,defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}])),Sc=Object.fromEntries([...ws,...Ts].map(e=>[e,{tools:!0,...e===`${P}/kimi-k2.6`?{video:!0}:{},thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}])),Cc=Object.fromEntries([...Ds,...Os].map(e=>[e,{tools:!0,json:!0,audio:!0,video:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}])),wc={"xai/grok-4.5":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-4.3":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-build-0.1":{tools:!0,json:!0}},Tc=[`off`,`high`],Ec=Object.fromEntries(As.map(e=>[e,{tools:!0,json:!0,...e===`mistral/mistral-medium-3.5`||e===`mistral/mistral-small-2603`?{thinkingLevels:[...Tc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),Dc=[`minimal`,`low`,`medium`,`high`],Oc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),kc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Ac=Object.fromEntries([...js,...Ms].map(e=>[e,{tools:!0,json:!0,...Oc.has(e)?{thinkingLevels:[...Dc],defaultThinkingLevel:`medium`,thinkingMode:`volcengine-reasoning-effort`,reasoningBudgetSupported:!1}:{},...kc.has(e)?{video:!0}:{}}])),jc=[`off`,`high`],Mc=new Set([`byteplus/seed-2-0-pro-260328`,`byteplus/seed-2-0-lite-260228`,`byteplus/seed-2-0-mini-260215`,`byteplus/seed-2-0-code-preview-260328`,`byteplus-coding/dola-seed-2.0-pro`,`byteplus-plan/dola-seed-2.0-pro`,`byteplus-coding/dola-seed-2.0-lite`,`byteplus-plan/dola-seed-2.0-lite`,`byteplus-coding/dola-seed-2.0-code`,`byteplus-plan/dola-seed-2.0-code`,`byteplus-coding/bytedance-seed-code`,`byteplus-plan/bytedance-seed-code`]),Nc=Object.fromEntries([...Ns,...Ps].map(e=>[e,{tools:!0,json:!0,...Mc.has(e)?{thinkingLevels:[...jc],defaultThinkingLevel:`high`,thinkingMode:`byteplus-thinking-type`,reasoningBudgetSupported:!1}:{}}])),Pc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`]),Fc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`,`openrouter/qwen/qwen3.7-max`,`openrouter/qwen/qwen3.7-plus`,`openrouter/qwen/qwen3.6-flash`]),Ic=new Set([`openrouter/mistralai/mistral-medium-3-5`,`openrouter/mistralai/mistral-small-2603`]),Lc=new Set([`openrouter/minimax/minimax-m2.7`]),Rc=new Set([`openrouter/deepseek/deepseek-v4-pro`,`openrouter/deepseek/deepseek-v4-flash`]),zc=new Set([`openrouter/openai/gpt-5.6-sol`,`openrouter/openai/gpt-5.6-terra`,`openrouter/openai/gpt-5.6-luna`,`openrouter/openai/gpt-5.5`,`openrouter/openai/gpt-5.4`,`openrouter/openai/gpt-5.4-mini`,`openrouter/openai/gpt-5.4-nano`]),Bc=new Set([`openrouter/x-ai/grok-4.5`,`openrouter/x-ai/grok-4.3`]),Vc=Object.fromEntries(Fs.map(e=>[e,{tools:!0,json:!0,...Pc.has(e)?{audio:!0}:{},...Fc.has(e)?{video:!0}:{},...Ic.has(e)?{thinkingLevels:[...Tc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Lc.has(e)?{thinkingLevels:[...bc],defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}:{},...Rc.has(e)?{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}:{},...zc.has(e)?{thinkingLevels:[...sa],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Bc.has(e)?{thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),Hc=new Set([`qwen-coding-plan/kimi-k2.7-code`,`qwen-coding-plan/glm-5.2`,`qwen-coding-plan/MiniMax-M2.5`]),Uc=Object.fromEntries([...Is,...Ls].map(e=>[e,{tools:!0,json:!0,...Hc.has(e)?{}:{thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}}])),Wc=[{id:`openai`,label:`OpenAI`,priority:1,hint:`OpenAI sign-in + API key`,methods:[{id:`openai-codex`,route:ko,kind:`oauth`,label:`ChatGPT sign-in`,hint:`Open the OpenAI sign-in URL, finish login in the browser, then Fased completes the OAuth flow.`},{id:`openai-api-key`,route:Oo,kind:`api-key`,label:`API key`}],models:{recommended:[...fs,...ps],routeRules:{[Oo]:[`${Oo}/*`],[ko]:[`${ko}/*`]}},modelCapabilities:gc([...fs,...ps])},{id:`anthropic`,label:`Anthropic`,priority:2,hint:`Claude Code OAuth + setup-token + API key`,methods:[{id:`anthropic-oauth`,route:Ao,kind:`oauth`,label:`Sign in (Claude Code)`,hint:`Claude or Console account; Pro, Max, Team, Enterprise, or Console access`,buttonLabel:`Sign in`},{id:`token`,route:Ao,kind:`token`,label:`Token (setup-token)`,hint:"run `claude setup-token` elsewhere, then paste the token here",buttonLabel:`Paste token`},{id:`apiKey`,route:Ao,kind:`api-key`,label:`API key`}],models:{recommended:[...ms],routeRules:{[Ao]:[`${Ao}/*`]}},modelCapabilities:F(ms,vc)},{id:`chutes`,label:`Chutes`,priority:3,hint:`Sign in + API key`,methods:[{id:`chutes`,route:jo,kind:`oauth`,label:`Sign in`,hint:`Requires a Chutes OAuth app client id. Enter the cid, then Fased generates the Chutes sign-in URL.`,buttonLabel:`Sign in`},{id:`chutes-api-key`,route:jo,kind:`api-key`,label:`API key`}],models:{recommended:[...gs],routeRules:{[jo]:[`${jo}/*`]}},modelCapabilities:F(gs,yc)},{id:`ollama`,label:`Ollama`,priority:4,hint:`Local, cloud, or hybrid Ollama through the native API`,modelProviderIds:[Mo],methods:[{id:`ollama`,route:Mo,kind:`manual`,label:`Ollama native URL + model`,hint:`Use the native Ollama base URL, for example http://127.0.0.1:11434. Do not use /v1.`,buttonLabel:`Configure`}],models:{recommended:_s,dynamic:!0,operatorCatalog:!0,routeRules:{[Mo]:[`${Mo}/*`]}},modelCapabilities:gc(_s)},{id:`lmstudio`,label:`LM Studio`,priority:4,hint:`Local LM Studio server on localhost:1234`,modelProviderIds:[No],methods:[{id:`lmstudio`,route:No,kind:`manual`,label:`LM Studio URL + model`,hint:`Use http://127.0.0.1:1234/v1, optional API token, and a model key from LM Studio.`,buttonLabel:`Configure`}],models:{recommended:vs,dynamic:!0,operatorCatalog:!0,routeRules:{[No]:[`${No}/*`]}},modelCapabilities:gc(vs)},{id:`vllm`,label:`vLLM-compatible`,priority:4,hint:`OpenAI-compatible local server: vLLM, SGLang, TGI, LocalAI, or FastChat`,modelProviderIds:[Po],methods:[{id:`vllm`,route:Po,kind:`manual`,label:`vLLM-compatible URL + model`,hint:`Enter the /v1 base URL, API key or local placeholder, and served model ID for vLLM, SGLang, TGI, LocalAI, or FastChat.`,buttonLabel:`Configure`}],models:{recommended:ys,dynamic:!0,operatorCatalog:!0,routeRules:{[Po]:[`${Po}/*`]}},modelCapabilities:gc(ys)},{id:`minimax`,label:`MiniMax`,priority:5,hint:`MiniMax OAuth + API key`,modelProviderIds:[Fo,Io,Lo],methods:[{id:`minimax-portal`,route:Lo,kind:`oauth`,label:`Sign in`,hint:`Global or CN endpoint; uses MiniMax portal sign-in`,setupRequirement:`Requires MiniMax portal/coding-plan access. Choose Global or CN, then open the approval URL and approve before the code expires.`,buttonLabel:`Sign in`},{id:`minimax-api`,route:Fo,kind:`api-key`,label:`API key`},{id:`minimax-api-key-cn`,route:Io,kind:`api-key`,label:`API key (CN)`,hint:`China endpoint (api.minimaxi.com)`},{id:`minimax-api-lightning`,route:Fo,configProviderId:`minimax-lightning`,statusRoute:Fo,kind:`api-key`,label:`Highspeed API key`,hint:`Fast M2.7 tier`}],models:{recommended:[...xs,...Ss,...Cs],routeRules:{[Fo]:[`${Fo}/*`],[Io]:[`${Io}/*`],[Lo]:[`${Lo}/*`]}},modelCapabilities:F([...xs,...Ss,...Cs],xc)},{id:`moonshot`,label:`Moonshot AI`,priority:6,hint:`Kimi API + Kimi Code`,modelProviderIds:[P,Ro],methods:[{id:`moonshot-api-key`,route:P,kind:`api-key`,label:`Kimi API key (.ai)`,hint:`Kimi Open Platform endpoint (api.moonshot.ai)`},{id:`moonshot-api-key-cn`,route:P,configProviderId:`moonshot-cn`,statusRoute:P,kind:`api-key`,label:`Kimi API key (.cn)`,hint:`China endpoint (api.moonshot.cn)`},{id:`kimi-code-api-key`,route:Ro,kind:`api-key`,label:`Kimi Code API key (subscription)`,hint:`Kimi Code membership endpoint (api.kimi.com/coding)`}],models:{recommended:[...ws,...Ts],routeRules:{[P]:[`${P}/*`],[Ro]:[`${Ro}/*`]}},modelCapabilities:F([...ws,...Ts],Sc)},{id:`google`,label:`Google`,priority:7,hint:`Gemini API key + OAuth`,routeAliases:[`gemini`],modelProviderIds:[zo,`gemini`,Bo],methods:[{id:`gemini-api-key`,route:zo,kind:`api-key`,label:`Gemini API key`},{id:`google-gemini-cli`,route:Bo,kind:`oauth`,label:`Sign in (Gemini CLI)`,hint:`Unofficial flow; review account-risk warning before use`,setupRequirement:`Requires gemini-cli installed on the gateway machine, or GEMINI_CLI_OAUTH_CLIENT_ID set before sign-in.`}],models:{recommended:[...Ds,...Os],routeRules:{[zo]:[`${zo}/*`,`gemini/*`],[Bo]:[`${Bo}/*`]}},modelCapabilities:F([...Ds,...Os],Cc)},{id:`xai`,label:`xAI (Grok)`,priority:8,hint:`Grok API key or xAI account sign-in`,methods:[{id:`xai-oauth`,route:`xai`,kind:`oauth`,label:`xAI sign-in`,hint:`Browser sign-in for eligible xAI/Grok accounts`,buttonLabel:`Sign in`},{id:`xai-device-code`,route:`xai`,kind:`device`,label:`xAI device code`,hint:`Remote-friendly sign-in for eligible xAI/Grok accounts`,buttonLabel:`Device code`},{id:`xai-api-key`,route:`xai`,kind:`api-key`,label:`xAI API key`}],models:{recommended:[...ks],routeRules:{xai:[`xai/*`]}},modelCapabilities:F(ks,wc)},{id:`mistral`,label:`Mistral AI`,priority:9,hint:`Mistral API key`,methods:[{id:`mistral-api-key`,route:Vo,kind:`api-key`,label:`Mistral API key`}],models:{recommended:[...As],routeRules:{[Vo]:[`${Vo}/*`]}},modelCapabilities:F(As,Ec)},{id:`volcengine`,label:`Volcano Engine`,priority:10,hint:`Ark API key + Coding Plan`,modelProviderIds:[Ho,Uo,Wo],methods:[{id:`volcengine-api-key`,route:Ho,kind:`api-key`,label:`Volcano Engine API key`}],models:{recommended:[...js,...Ms],routeRules:{[Ho]:[`${Ho}/*`],[Uo]:[`${Uo}/*`],[Wo]:[`${Wo}/*`]}},modelCapabilities:F([...js,...Ms],Ac)},{id:`byteplus`,label:`BytePlus`,priority:11,hint:`ModelArk API key + Coding Plan`,modelProviderIds:[Go,Ko,qo],methods:[{id:`byteplus-api-key`,route:Go,kind:`api-key`,label:`BytePlus API key`}],models:{recommended:[...Ns,...Ps],routeRules:{[Go]:[`${Go}/*`],[Ko]:[`${Ko}/*`],[qo]:[`${qo}/*`]}},modelCapabilities:F([...Ns,...Ps],Nc)},{id:`openrouter`,label:`OpenRouter`,priority:12,hint:`API key`,methods:[{id:`openrouter-api-key`,route:Jo,kind:`api-key`,label:`OpenRouter API key`}],models:{recommended:[...Fs],dynamic:!0,routeRules:{[Jo]:[`${Jo}/*`]}},modelCapabilities:F(Fs,Vc)},{id:`qwen`,label:`Qwen`,priority:14,hint:`Coding Plan + DashScope API key`,modelProviderIds:[Xo,Yo],methods:[{id:`qwen-coding-plan-api-key`,route:Xo,kind:`api-key`,label:`Coding Plan API key`,hint:`Alibaba Cloud Coding Plan endpoint (coding.dashscope.aliyuncs.com)`},{id:`qwen-api-key`,route:Yo,kind:`api-key`,label:`DashScope API key`,hint:`DashScope OpenAI-compatible endpoint (dashscope.aliyuncs.com)`}],models:{recommended:[...Ls,...Is],routeRules:{[Xo]:[`${Xo}/*`],[Yo]:[`${Yo}/*`]}},modelCapabilities:F([...Ls,...Is],Uc)},{id:`zai`,label:`Z.AI`,priority:15,hint:`GLM Coding Plan / Global / CN`,modelProviderIds:[`zai`],methods:[{id:`zai-coding-global`,route:`zai`,configProviderId:`zai-coding-global`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-Global`,hint:`GLM Coding Plan Global (api.z.ai)`},{id:`zai-coding-cn`,route:`zai`,configProviderId:`zai-coding-cn`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-CN`,hint:`GLM Coding Plan CN (open.bigmodel.cn)`},{id:`zai-global`,route:`zai`,configProviderId:`zai`,kind:`api-key`,label:`Global`,hint:`Z.AI Global (api.z.ai)`},{id:`zai-cn`,route:`zai`,configProviderId:`zai-cn`,statusRoute:`zai`,kind:`api-key`,label:`CN`,hint:`Z.AI CN (open.bigmodel.cn)`}],models:{recommended:[...Rs],routeRules:{zai:[`zai/*`]}},modelCapabilities:F(Rs,Bs)},{id:`qianfan`,label:`Qianfan`,priority:16,hint:`Baidu Qianfan API key`,methods:[{id:`qianfan-api-key`,route:Zo,kind:`api-key`,label:`Qianfan API key`}],models:{recommended:[...Vs],routeRules:{[Zo]:[`${Zo}/*`]}},modelCapabilities:F(Vs,Ws)},{id:`copilot`,label:`Copilot`,priority:17,hint:`GitHub device login + local proxy`,modelProviderIds:[Qo,$o],methods:[{id:`github-copilot`,route:Qo,kind:`device`,label:`GitHub sign in`,hint:`GitHub OAuth device flow; requires an active Copilot subscription`,buttonLabel:`Sign in`},{id:`copilot-proxy`,route:$o,kind:`device`,label:`Proxy sign in`,hint:`Local VS Code Copilot Proxy bridge`,buttonLabel:`Configure`}],models:{recommended:[...Ks,...Js],dynamic:!0,routeRules:{[Qo]:[`${Qo}/*`],[$o]:[`${$o}/*`]}},modelCapabilities:F([...Ks,...Js],ec)},{id:`ai-gateway`,label:`Vercel AI`,priority:18,hint:`API key`,modelProviderIds:[es],methods:[{id:`ai-gateway-api-key`,route:es,kind:`api-key`,label:`Vercel AI API key`}],models:{recommended:[...fo],dynamic:!0,routeRules:{[es]:[`${es}/*`]}},modelCapabilities:F(fo,tc)},{id:`opencode-zen`,label:`OpenCode Zen`,priority:19,hint:`API key`,modelProviderIds:[ts],methods:[{id:`opencode-zen`,route:ts,kind:`api-key`,label:`OpenCode Zen API key`,hint:`Sign in to OpenCode Zen, then paste the API key`}],models:{recommended:[...Va],dynamic:!0,routeRules:{[ts]:[`${ts}/*`]}},modelCapabilities:F(Va,nc)},{id:`xiaomi`,label:`Xiaomi`,priority:20,hint:`MiMo API key`,modelProviderIds:[ns],methods:[{id:`xiaomi-api-key`,route:ns,kind:`api-key`,label:`Xiaomi API key`,hint:`Create an API key in the Xiaomi MiMo API Open Platform`}],models:{recommended:[...rc],routeRules:{[ns]:[`${ns}/*`]}},modelCapabilities:F(rc,ic)},{id:`synthetic`,label:`Synthetic`,priority:21,hint:`Anthropic-compatible API key`,modelProviderIds:[rs],methods:[{id:`synthetic-api-key`,route:rs,kind:`api-key`,label:`Synthetic API key`,hint:`Create an API key in Synthetic`}],models:{recommended:[...ac],routeRules:{[rs]:[`${rs}/*`]}},modelCapabilities:F(ac,oc)},{id:`together`,label:`Together AI`,priority:22,hint:`API key`,modelProviderIds:[is],methods:[{id:`together-api-key`,route:is,kind:`api-key`,label:`Together AI API key`,hint:`Create an API key in Together AI`}],models:{recommended:[...eo],routeRules:{[is]:[`${is}/*`]}},modelCapabilities:F(eo,sc)},{id:`huggingface`,label:`Hugging Face`,priority:23,hint:`Inference Providers token`,modelProviderIds:[as],methods:[{id:`huggingface-api-key`,route:as,kind:`api-key`,label:`Hugging Face token`,hint:`Create a fine-grained token with Inference Providers access`}],models:{recommended:[...Ia],dynamic:!0,routeRules:{[as]:[`${as}/*`]}},modelCapabilities:cc},{id:`venice`,label:`Venice AI`,priority:24,hint:`Privacy-focused API key`,modelProviderIds:[os],methods:[{id:`venice-api-key`,route:os,kind:`api-key`,label:`Venice AI API key`,hint:`Create an API key in Venice settings`}],models:{recommended:[...oo],dynamic:!0,routeRules:{[os]:[`${os}/*`]}},modelCapabilities:lc},{id:`litellm`,label:`LiteLLM`,priority:25,hint:`OpenAI-compatible LLM proxy`,modelProviderIds:[ss],methods:[{id:`litellm-api-key`,route:ss,kind:`api-key`,label:`LiteLLM API key`,hint:`LiteLLM Proxy virtual key or master key plus /v1 base URL`}],models:{recommended:[],dynamic:!0,operatorCatalog:!0,routeRules:{[ss]:[`${ss}/*`]}},modelCapabilities:{}},{id:`cloudflare-ai-gateway`,label:`Cloudflare AI`,priority:26,hint:`Anthropic through Cloudflare AI`,modelProviderIds:[Ta],methods:[{id:`cloudflare-ai-gateway-api-key`,route:Ta,kind:`manual`,label:`Cloudflare AI API key`,hint:`Requires Cloudflare Account ID, Gateway ID, and Anthropic provider API key`,buttonLabel:`Configure`}],models:{recommended:[...ja],routeRules:{[Ta]:[`${Ta}/*`]}},modelCapabilities:uc},{id:`custom`,label:`Custom Provider`,priority:27,hint:`OpenAI or Anthropic-compatible endpoint outside the built-in provider cards`,modelProviderIds:[cs],methods:[{id:`custom-api-key`,route:cs,kind:`manual`,label:`Custom Provider`,hint:`Requires base URL, endpoint compatibility, model ID, and optional API key. Use this for SGLang or other compatible endpoints when the vLLM-compatible shortcut does not fit.`,buttonLabel:`Configure`}],models:{recommended:dc,dynamic:!0,operatorCatalog:!0,routeRules:{[cs]:[`${cs}/*`]}},modelCapabilities:gc(dc)}];new Map(Wc.map(e=>[e.id,e])),new Map(Wc.flatMap(e=>[...e.methods.map(t=>[t.route,e]),...(e.routeAliases??[]).map(t=>[t,e]),...(e.modelProviderIds??[]).map(t=>[t,e])])),new Set(Wc.flatMap(e=>e.models.recommended.map(e=>e.toLowerCase()))),new Map(Wc.flatMap(e=>Object.entries(e.modelCapabilities??{}).map(([e,t])=>[e.toLowerCase(),t]))),new Set([...us,...ds]),i.resolve(i.dirname(o(import.meta.url)),`../../docs/reference/templates`);function Gc(e=process.env,t=p.homedir){let n=x(e,t),r=e.FASED_PROFILE?.trim();return r&&r.toLowerCase()!==`default`?i.join(n,`.fased`,`workspace-${r}`):i.join(n,`.fased`,`workspace`)}Gc();let Kc=null;function qc(){return Kc??=cn(`agent-scope`),Kc}function Jc(e){return e.replace(/\0/g,``)}let Yc=!1;function Xc(e){let t=e.agents?.list;return Array.isArray(t)?t.filter(e=>!!(e&&typeof e==`object`)):[]}function Zc(e){let t=Xc(e);if(t.length===0)return Ji;let n=t.filter(e=>e?.default);n.length>1&&!Yc&&(Yc=!0,qc().warn(`Multiple agents marked default=true; using the first entry as default.`));let r=(n[0]??t[0])?.id?.trim();return D(r||Ji)}function Qc(e,t){let n=D(t);return Xc(e).find(e=>D(e.id)===n)}function $c(e,t){let n=Qc(e,D(t));if(n)return{name:typeof n.name==`string`?n.name:void 0,workspace:typeof n.workspace==`string`?n.workspace:void 0,agentDir:typeof n.agentDir==`string`?n.agentDir:void 0,activeModelProvider:typeof n.activeModelProvider==`string`?n.activeModelProvider:void 0,modelProviders:n.modelProviders&&typeof n.modelProviders==`object`?n.modelProviders:void 0,model:typeof n.model==`string`||n.model&&typeof n.model==`object`?n.model:void 0,taskModels:n.taskModels&&typeof n.taskModels==`object`?n.taskModels:void 0,thinkingDefault:n.thinkingDefault,verboseDefault:e.agents?.defaults?.verboseDefault,reasoningDefault:n.reasoningDefault,fastModeDefault:n.fastModeDefault,skills:Array.isArray(n.skills)?n.skills:void 0,memorySearch:n.memorySearch,humanDelay:n.humanDelay,heartbeat:n.heartbeat,identity:n.identity,groupChat:n.groupChat,subagents:typeof n.subagents==`object`&&n.subagents?n.subagents:void 0,sandbox:n.sandbox,tools:n.tools}}function el(e,t){let n=D(t),r=$c(e,n)?.workspace?.trim();if(r)return Jc(T(r));let a=Zc(e),o=e.agents?.defaults?.workspace?.trim();if(n===a)return Jc(o?T(o):Gc(process.env));if(o)return Jc(i.join(T(o),n));let s=Ve(process.env);return Jc(i.join(s,`workspace-${n}`))}const tl=`default`,nl=/^\$\{([A-Z][A-Z0-9_]{0,127})\}$/;function rl(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function il(e){return!rl(e)||Object.keys(e).length!==3?!1:(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.provider==`string`&&e.provider.trim().length>0&&typeof e.id==`string`&&e.id.trim().length>0}function al(e){return rl(e)?(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.id==`string`&&e.id.trim().length>0&&e.provider===void 0:!1}function ol(e,t=tl){if(typeof e!=`string`)return null;let n=nl.exec(e.trim());return n?{source:`env`,provider:t.trim()||tl,id:n[1]}:null}function sl(e,t){if(il(e))return e;if(al(e)){let n=e.source===`env`?t?.env??tl:e.source===`file`?t?.file??tl:t?.exec??tl;return{source:e.source,provider:n,id:e.id}}return ol(e,t?.env)||null}function cl(e){let t=e.split(`.`);if(t.length!==4)return!1;let n=t.map(e=>Number(e));if(n.some(e=>!Number.isInteger(e)||e<0||e>255))return!1;let[r,i]=n;return r===10||r===127||r===0||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254}function ll(e){let t=e?.trim();if(!t)return!1;try{let e=new URL(t).hostname.toLowerCase().replace(/^\[|\]$/g,``);return e===`localhost`||e===`::1`||e===`0.0.0.0`||e.endsWith(`.local`)||e.endsWith(`.internal`)||cl(e)?!0:e.startsWith(`fc`)||e.startsWith(`fd`)||e.startsWith(`fe80:`)}catch{return!1}}const ul=[`chat.inject`,`push.test`,`web.login.start`,`web.login.wait`],dl=new Set([...Dt,`device-pair`,`phone-control`,`sat-mining`,`talk-voice`]),fl=e=>Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[];function pl(e){return typeof e==`string`&&ul.includes(e)}function ml(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=Array.isArray(t.allow)?t.allow:[],r=[];for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=e;pl(t.method)&&r.push({method:t.method,sources:fl(t.sources),requireOperatorApproval:t.requireOperatorApproval===!0})}return r}const hl=e=>{if(typeof e!=`string`)return;let t=e.trim();if(t)return t.toLowerCase()===`none`?null:t},gl=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(!n.trim())continue;if(!r||typeof r!=`object`||Array.isArray(r)){t[n]={};continue}let e=r;t[n]={enabled:typeof e.enabled==`boolean`?e.enabled:void 0,config:`config`in e?e.config:void 0,runtime:_l(e.runtime)}}return t};function _l(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.helpers&&typeof t.helpers==`object`&&!Array.isArray(t.helpers)?t.helpers:void 0;return{helpers:{sessions:{read:(n?.sessions&&typeof n.sessions==`object`&&!Array.isArray(n.sessions)?n.sessions:void 0)?.read===!0}},adminRpcActions:{allow:ml(t.adminRpcActions)}}}const vl=e=>{let t=hl(e?.slots?.memory);return{enabled:e?.enabled!==!1,allow:fl(e?.allow),deny:fl(e?.deny),loadPaths:fl(e?.load?.paths),slots:{memory:t===void 0?Wi(`memory`):t},entries:gl(e?.entries)}};function yl(e,t,n){if(!n.enabled)return{enabled:!1,reason:`plugins disabled`};if(n.deny.includes(e))return{enabled:!1,reason:`blocked by denylist`};if(n.allow.length>0&&!n.allow.includes(e))return{enabled:!1,reason:`not in allowlist`};if(n.slots.memory===e)return{enabled:!0};let r=n.entries[e];return r?.enabled===!0?{enabled:!0}:r?.enabled===!1?{enabled:!1,reason:`disabled in config`}:t===`bundled`&&dl.has(e)?{enabled:!0}:t===`bundled`?{enabled:!1,reason:`bundled (disabled by default)`}:{enabled:!0}}function bl(e,t){if(!e)return!1;let n=At(t);if(!n)return!1;let r=e.channels?.[n];return!r||typeof r!=`object`||Array.isArray(r)?!1:r.enabled===!0}function xl(e){let t=yl(e.id,e.origin,e.config);return!t.enabled&&t.reason===`bundled (disabled by default)`&&bl(e.rootConfig,e.id)?{enabled:!0}:t}function Sl(e){return e.kind===`memory`?e.slot===null?{enabled:!1,reason:`memory slot disabled`}:typeof e.slot==`string`?e.slot===e.id?{enabled:!0,selected:!0}:{enabled:!1,reason:`memory slot set to "${e.slot}"`}:e.selectedId&&e.selectedId!==e.id?{enabled:!1,reason:`memory slot already filled by "${e.selectedId}"`}:{enabled:!0,selected:!0}:{enabled:!0}}function Cl(e){try{let t=n.readdirSync(e,{withFileTypes:!0});for(let r of t){if(!r.isDirectory())continue;let t=i.join(e,r.name);if(n.existsSync(i.join(t,`fased.plugin.json`)))return!0}}catch{return!1}return!1}function wl(e={}){let t=process.env.FASED_BUNDLED_PLUGINS_DIR?.trim();if(t)return t;try{let t=i.dirname(e.execPath??process.execPath),n=i.join(t,`extensions`);if(Cl(n))return n}catch{}try{let t=e.moduleUrl??import.meta.url,n=Ee({argv1:e.argv1??process.argv[1],moduleUrl:t,cwd:e.cwd??process.cwd()});if(n){let e=i.join(n,`extensions`);if(Cl(e))return e}let r=i.dirname(o(t));for(let e=0;e<6;e+=1){let e=i.join(r,`extensions`);if(Cl(e))return e;let t=i.dirname(r);if(t===r)break;r=t}}catch{}}function Tl(e,t){return si(e,t)}function El(e,t){let r=t?.get(e);if(r)return r;try{let r=n.realpathSync(e);return t?.set(e,r),r}catch{return null}}function Dl(e){try{return n.statSync(e)}catch{return null}}function Ol(e){return(e&511).toString(8).padStart(3,`0`)}const kl=new Set([`.ts`,`.js`,`.mts`,`.cts`,`.mjs`,`.cjs`]);function Al(e){return e===void 0?process.platform===`win32`||typeof process.getuid!=`function`?null:process.getuid():e}function jl(e){let t=El(e.source),n=El(e.rootDir);return!t||!n||Tl(n,t)?null:{reason:`source_escapes_root`,sourcePath:e.source,rootPath:e.rootDir,targetPath:e.source,sourceRealPath:t,rootRealPath:n}}function Ml(e){if(process.platform===`win32`)return null;let t=[e.rootDir,e.source],n=new Set;for(let r of t){let t=i.resolve(r);if(n.has(t))continue;n.add(t);let a=Dl(r);if(!a)return{reason:`path_stat_failed`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r};let o=a.mode&511;if(o&2)return{reason:`path_world_writable`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,modeBits:o};if(e.origin!==`bundled`&&e.uid!==null&&typeof a.uid==`number`&&a.uid!==e.uid&&a.uid!==0)return{reason:`path_suspicious_ownership`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,foundUid:a.uid,expectedUid:e.uid}}return null}function Nl(e){return jl({source:e.source,rootDir:e.rootDir})||Ml({source:e.source,rootDir:e.rootDir,origin:e.origin,uid:Al(e.ownershipUid)})}function Pl(e){return e.reason===`source_escapes_root`?`blocked plugin candidate: source escapes plugin root (${e.sourcePath} -> ${e.sourceRealPath}; root=${e.rootRealPath})`:e.reason===`path_stat_failed`?`blocked plugin candidate: cannot stat path (${e.targetPath})`:e.reason===`path_world_writable`?`blocked plugin candidate: world-writable path (${e.targetPath}, mode=${Ol(e.modeBits??0)})`:`blocked plugin candidate: suspicious ownership (${e.targetPath}, uid=${e.foundUid}, expected uid=${e.expectedUid} or root)`}function Fl(e){let t=Nl({source:e.source,rootDir:e.rootDir,origin:e.origin,ownershipUid:e.ownershipUid});return t?(e.diagnostics.push({level:`warn`,source:t.targetPath,message:Pl(t)}),!0):!1}function Il(e){let t=i.extname(e);return kl.has(t)?!e.endsWith(`.d.ts`):!1}function Ll(e){let t=e.trim().toLowerCase();return!!(!t||t.endsWith(`.bak`)||t.includes(`.backup-`)||t.includes(`.disabled`))}function Rl(e){let t=Ai({absolutePath:i.join(e,`package.json`),rootPath:e,boundaryLabel:`plugin package directory`});if(!t.ok)return null;try{let e=n.readFileSync(t.fd,`utf-8`);return JSON.parse(e)}catch{return null}finally{n.closeSync(t.fd)}}function zl(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t||i.isAbsolute(t))return null;let n=t.replace(/^\.\/+/,``);return!n||n===`.`||n===`..`?null:n}function Bl(e,t){if(!Bi(t).ok)return[];let r=[e.main,e.module,...Vi],a=[],o=new Set;for(let e of r){let r=zl(e);if(!r||o.has(r))continue;o.add(r);let s=i.resolve(t,r);Tl(t,s)&&n.existsSync(s)&&Il(s)&&a.push(r)}return a}function Vl(e,t){let n=Hi(e)?.extensions;return Array.isArray(n)?n.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):t?Bl(e,t):[]}function Hl(e){let t=i.basename(e.filePath,i.extname(e.filePath)),n=e.packageName?.trim();if(!n)return t;let r=n.includes(`/`)?n.split(`/`).pop()??n:n;return e.hasMultipleExtensions?`${r}/${t}`:r}function Ul(e){let t=i.resolve(e.source);if(e.seen.has(t))return;let n=El(e.rootDir)??i.resolve(e.rootDir);if(Fl({source:t,rootDir:n,origin:e.origin,diagnostics:e.diagnostics,ownershipUid:e.ownershipUid}))return;e.seen.add(t);let r=e.manifest??null;e.candidates.push({idHint:e.idHint,source:t,rootDir:n,origin:e.origin,workspaceDir:e.workspaceDir,packageName:r?.name?.trim()||void 0,packageVersion:r?.version?.trim()||void 0,packageDescription:r?.description?.trim()||void 0,packageDir:e.packageDir,packageManifest:Hi(r??void 0)})}function Wl(e){let t=Ai({absolutePath:i.resolve(e.packageDir,e.entryPath),rootPath:e.packageDir,boundaryLabel:`plugin package directory`});if(!t.ok)return e.diagnostics.push({level:`error`,message:`extension entry escapes package directory: ${e.entryPath}`,source:e.sourceLabel}),null;let r=t.path;return n.closeSync(t.fd),r}function Gl(e){if(!n.existsSync(e.dir))return;let t=[];try{t=n.readdirSync(e.dir,{withFileTypes:!0})}catch(t){e.diagnostics.push({level:`warn`,message:`failed to read extensions dir: ${e.dir} (${String(t)})`,source:e.dir});return}for(let r of t){let t=i.join(e.dir,r.name);if(r.isFile()){if(!Il(t))continue;Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(r.name,i.extname(r.name)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir})}if(!r.isDirectory()||Ll(r.name))continue;let a=Rl(t),o=a?Vl(a,t):[];if(o.length>0){for(let n of o){let r=Wl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});r&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Hl({filePath:r,packageName:a?.name,hasMultipleExtensions:o.length>1}),source:r,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}continue}let s=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));s&&Il(s)&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:r.name,source:s,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}}function Kl(e){let t=T(e.rawPath);if(!n.existsSync(t)){e.diagnostics.push({level:`error`,message:`plugin path not found: ${t}`,source:t});return}let r=n.statSync(t);if(r.isFile()){if(!Il(t)){e.diagnostics.push({level:`error`,message:`plugin path is not a supported file: ${t}`,source:t});return}Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t,i.extname(t)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir});return}if(r.isDirectory()){let r=Rl(t),a=r?Vl(r,t):[];if(a.length>0){for(let n of a){let i=Wl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});i&&Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Hl({filePath:i,packageName:r?.name,hasMultipleExtensions:a.length>1}),source:i,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t})}return}let o=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));if(o&&Il(o)){Ul({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t),source:o,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t});return}Gl({dir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen});return}}function ql(e){let t=[],n=[],r=new Set,a=e.workspaceDir?.trim(),o=e.extraPaths??[];for(let i of o){if(typeof i!=`string`)continue;let o=i.trim();o&&Kl({rawPath:o,origin:`config`,ownershipUid:e.ownershipUid,workspaceDir:a?.trim()||void 0,candidates:t,diagnostics:n,seen:r})}if(a){let o=T(a),s=[i.join(o,`.fased`,`extensions`)];for(let i of s)Gl({dir:i,origin:`workspace`,ownershipUid:e.ownershipUid,workspaceDir:o,candidates:t,diagnostics:n,seen:r})}Gl({dir:i.join(bn(),`extensions`),origin:`global`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r});let s=wl();return s&&Gl({dir:s,origin:`bundled`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r}),{candidates:t,diagnostics:n}}e(import.meta.url);const Jl=/(\d+)\.(\d+)\.(\d+)/;function Yl(e){if(!e)return null;let t=e.match(Jl);if(!t)return null;let[,n,r,i]=t;return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10)}}function Xl(e,t){return e?e.major===t.major?e.minor===t.minor?e.patch>=t.patch:e.minor>t.minor:e.major>t.major:!1}const Zl=/^>=(\d+)\.(\d+)\.(\d+)$/;function Ql(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.match(Zl);if(!n)return null;let r=`${n[1]}.${n[2]}.${n[3]}`;return Yl(r)?{raw:t,minimumLabel:r}:null}function $l(e){if(e.minHostVersion===void 0)return{ok:!0,requirement:null};let t=Ql(e.minHostVersion);if(!t)return{ok:!1,kind:`invalid`,error:`fased.install.minHostVersion must use a semver floor in the form ">=x.y.z"`};let n=e.currentVersion?.trim()||`unknown`,r=Yl(n);if(!r)return{ok:!1,kind:`unknown_host_version`,requirement:t};let i=Yl(t.minimumLabel);return!i||!Xl(r,i)?{ok:!1,kind:`incompatible`,requirement:t,currentVersion:n}:{ok:!0,requirement:t}}const eu={config:0,workspace:1,global:2,bundled:3},tu=new Map,nu=new Set;function ru(e){let t=e.FASED_PLUGIN_MANIFEST_CACHE_MS?.trim();if(t===``||t===`0`)return 0;if(!t)return 200;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):200}function iu(e){return e.FASED_DISABLE_PLUGIN_MANIFEST_CACHE?.trim()?!1:ru(e)>0}function au(e){let t=e.workspaceDir?T(e.workspaceDir):``,n=e.plugins.loadPaths.map(e=>T(e)).map(e=>e.trim()).filter(Boolean).toSorted();return`${t}::${e.hostVersion}::${JSON.stringify(n)}`}function ou(e){try{return n.statSync(e).mtimeMs}catch{return null}}function su(e){return e?.trim()||void 0}function cu(e){if(!Array.isArray(e))return;let t=e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean);return t.length>0?t:void 0}function lu(e){let t=e.packageChannel?.id?.trim();if(!t||!e.channelConfigs?.[t])return e.channelConfigs;let n=e.channelConfigs[t],r=n.label??(typeof e.packageChannel?.label==`string`?e.packageChannel.label.trim():``),i=n.description??(typeof e.packageChannel?.blurb==`string`?e.packageChannel.blurb.trim():``),a=n.preferOver??cu(e.packageChannel?.preferOver);return{...e.channelConfigs,[t]:{...n,...r?{label:r}:{},...i?{description:i}:{},...a?.length?{preferOver:a}:{}}}}function uu(e){let t=lu({channelConfigs:e.manifest.channelConfigs,packageChannel:e.candidate.packageManifest?.channel});return{id:e.manifest.id,name:su(e.manifest.name)??e.candidate.packageName,description:su(e.manifest.description)??e.candidate.packageDescription,version:su(e.manifest.version)??e.candidate.packageVersion,enabledByDefault:e.manifest.enabledByDefault===!0?!0:void 0,autoEnableWhenConfiguredProviders:e.manifest.autoEnableWhenConfiguredProviders,legacyPluginIds:e.manifest.legacyPluginIds,kind:e.manifest.kind,channels:e.manifest.channels??[],providers:e.manifest.providers??[],modelSupport:e.manifest.modelSupport,providerAuthEnvVars:e.manifest.providerAuthEnvVars,providerAuthAliases:e.manifest.providerAuthAliases,providerAuthChoices:e.manifest.providerAuthChoices,skills:e.manifest.skills??[],origin:e.candidate.origin,workspaceDir:e.candidate.workspaceDir,rootDir:e.candidate.rootDir,source:e.candidate.source,manifestPath:e.manifestPath,schemaCacheKey:e.schemaCacheKey,configSchema:e.configSchema,configUiHints:e.manifest.uiHints,contracts:e.manifest.contracts,channelConfigs:t,startupDeferConfiguredChannelFullLoadUntilAfterListen:e.candidate.packageManifest?.startup?.deferConfiguredChannelFullLoadUntilAfterListen===!0,...e.candidate.packageManifest?.channel?.id?{channelCatalogMeta:{id:e.candidate.packageManifest.channel.id,...typeof e.candidate.packageManifest.channel.label==`string`?{label:e.candidate.packageManifest.channel.label}:{},...typeof e.candidate.packageManifest.channel.blurb==`string`?{blurb:e.candidate.packageManifest.channel.blurb}:{},...e.candidate.packageManifest.channel.preferOver?{preferOver:e.candidate.packageManifest.channel.preferOver}:{}}}:{}}}function du(e){let t=vl((e.config??{}).plugins),n=e.env??process.env,r=Yn(n,Xn),a=au({workspaceDir:e.workspaceDir,plugins:t,hostVersion:r}),o=e.cache!==!1&&iu(n);if(o){let e=tu.get(a);if(e&&e.expiresAt>Date.now())return e.registry}let s=e.candidates?{candidates:e.candidates,diagnostics:e.diagnostics??[]}:ql({workspaceDir:e.workspaceDir,extraPaths:t.loadPaths}),c=[...s.diagnostics],l=s.candidates,u=[],d=new Map,f=new Map;for(let e of l){let t=Bi(e.rootDir);if(!t.ok){if(e.idHint&&nu.has(e.idHint))continue;c.push({level:`error`,message:t.error,source:t.manifestPath});continue}let n=t.manifest,a=$l({currentVersion:r,minHostVersion:e.packageManifest?.install?.minHostVersion});if(!a.ok){let t=i.join(e.packageDir??e.rootDir,`package.json`);c.push({level:a.kind===`unknown_host_version`?`warn`:`error`,pluginId:n.id,source:t,message:a.kind===`invalid`?`plugin manifest invalid | ${a.error}`:a.kind===`unknown_host_version`?`plugin requires Fased >=${a.requirement.minimumLabel}, but this host version could not be determined; skipping load`:`plugin requires Fased >=${a.requirement.minimumLabel}, but this host is ${a.currentVersion}; skipping load`});continue}e.idHint&&e.idHint!==n.id&&c.push({level:`warn`,pluginId:n.id,source:e.source,message:`plugin id mismatch (manifest uses "${n.id}", entry hints "${e.idHint}")`});let o=n.configSchema,s=ou(t.manifestPath),l=s?`${t.manifestPath}:${s}`:t.manifestPath,p=d.get(n.id);if(p){let r=El(p.candidate.rootDir,f),i=El(e.rootDir,f);if(r&&i&&r===i){eu[e.origin]<eu[p.candidate.origin]&&(u[p.recordIndex]=uu({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}),d.set(n.id,{candidate:e,recordIndex:p.recordIndex}));continue}c.push({level:`warn`,pluginId:n.id,source:e.source,message:`duplicate plugin id detected; later plugin may be overridden (${e.source})`})}else d.set(n.id,{candidate:e,recordIndex:u.length});u.push(uu({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}))}let p={plugins:u,diagnostics:c};if(o){let e=ru(n);e>0&&tu.set(a,{expiresAt:Date.now()+e,registry:p})}return p}function fu(e){let t=process,n=t[e];if(n)return n;let r=new Map;return t[e]=r,r}fu(Symbol.for(`fased.fileLockHeldLocks`)),process.env.FASED_XAI_OAUTH_CLIENT_ID?.trim();const pu=/^(?:[^~]|~0|~1)*$/;function mu(e){return e===`value`?!0:e.startsWith(`/`)?e.slice(1).split(`/`).every(e=>pu.test(e)):!1}const hu=`https://api.chutes.ai`;`${hu}`,`${hu}`,`${hu}`,new Set(ee().map(e=>e.id)),new Map([`auth_permanent`,`auth`,`billing`,`format`,`model_not_found`,`timeout`,`overloaded`,`rate_limit`,`session_expired`,`unknown`].map((e,t)=>[e,t]));const gu={id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`,`image`],contextWindow:2e5,maxTokens:4096},_u=[{id:`ark-code-latest`,name:`Ark Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`doubao-seed-2.0-code`,name:`Doubao Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-pro`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-lite`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-code`,name:`Doubao Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`minimax-m2.5`,name:`MiniMax M2.5`,reasoning:!0,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7 Coding`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`kimi-k2.5`,name:`Kimi K2.5 Coding`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3}];function vu(e,t){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:t,contextWindow:e.contextWindow,maxTokens:e.maxTokens}}const yu={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},bu=[{id:`seed-2-0-pro-260328`,name:`ByteDance Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-lite-260228`,name:`ByteDance Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-mini-260215`,name:`ByteDance Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-code-preview-260328`,name:`ByteDance Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3}];function xu(e){return vu(e,yu)}const Su=[{id:`ark-code-latest`,name:`BytePlus Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`dola-seed-2.0-pro`,name:`Dola Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-lite`,name:`Dola Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-code`,name:`Dola Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`bytedance-seed-code`,name:`ByteDance Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`glm-5.1`,name:`GLM 5.1`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3}];function Cu(){return[...Gs]}function wu(){return[...qs]}function Tu(e){let t=e.trim().toLowerCase();return/^gpt-5(?:[.-]|$)/.test(t)?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:t===`claude-fable-5`||t===`claude-opus-4.8`||t===`claude-sonnet-5`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:t===`claude-haiku-4.5`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:t===`gemini-3.5-flash`||t===`gemini-3.1-pro`||t===`gemini-3-flash`?{tools:!0,json:!0,thinkingLevels:[...O],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{tools:!0,json:!0}}function Eu(e,t){let n=e.trim();if(!n)throw Error(`Model id required`);return{id:n,name:n,api:t,reasoning:!!Tu(n).thinkingMode,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:Tu(n)}}function Du(e){return Eu(e,`openai-responses`)}function Ou(e){return Eu(e,`openai-completions`)}const ku=[{id:`google/gemma-4-31B-turbo-TEE`,name:`google/gemma-4-31B-turbo-TEE`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:65536,cost:{input:.0245,output:.0978,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B-TEE`,name:`Qwen/Qwen3-32B-TEE`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5.1-TEE`,name:`zai-org/GLM-5.1-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:1.05,output:3.5,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.6-TEE`,name:`moonshotai/Kimi-K2.6-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65535,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.6-27B-TEE`,name:`Qwen/Qwen3.6-27B-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B`,name:`Qwen/Qwen3-32B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Nemo-Instruct-2407`,name:`unsloth/Mistral-Nemo-Instruct-2407`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.02,output:.04,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3-0324-TEE`,name:`deepseek-ai/DeepSeek-V3-0324-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.25,output:1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,name:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.08,output:.55,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-120b-TEE`,name:`openai/gpt-oss-120b-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.05,output:.45,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,name:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.2-TEE`,name:`deepseek-ai/DeepSeek-V3.2-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.28,output:.42,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-TEE`,name:`zai-org/GLM-4.7-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.5-TEE`,name:`moonshotai/Kimi-K2.5-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65535,cost:{input:.45,output:2.2,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-27b-it`,name:`unsloth/gemma-3-27b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`XiaomiMiMo/MiMo-V2-Flash-TEE`,name:`XiaomiMiMo/MiMo-V2-Flash-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.09,output:.29,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,name:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.06,output:.18,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-0528-TEE`,name:`deepseek-ai/DeepSeek-R1-0528-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.45,output:2.15,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5-TEE`,name:`zai-org/GLM-5-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.95,output:3.15,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-TEE`,name:`deepseek-ai/DeepSeek-V3.1-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.2,output:.8,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,name:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.23,output:.9,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-4b-it`,name:`unsloth/gemma-3-4b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:96e3,maxTokens:96e3,cost:{input:.01,output:.03,cacheRead:0,cacheWrite:0}},{id:`MiniMaxAI/MiniMax-M2.5-TEE`,name:`MiniMaxAI/MiniMax-M2.5-TEE`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,cost:{input:.3,output:1.1,cacheRead:0,cacheWrite:0}},{id:`tngtech/DeepSeek-TNG-R1T2-Chimera`,name:`tngtech/DeepSeek-TNG-R1T2-Chimera`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.25,output:.85,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Coder-Next-TEE`,name:`Qwen/Qwen3-Coder-Next-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.12,output:.75,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-405B-FP8-TEE`,name:`NousResearch/Hermes-4-405B-FP8-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3`,name:`deepseek-ai/DeepSeek-V3`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-20b`,name:`openai/gpt-oss-20b`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-3B-Instruct`,name:`unsloth/Llama-3.2-3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Small-24B-Instruct-2501`,name:`unsloth/Mistral-Small-24B-Instruct-2501`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:32768,cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-FP8`,name:`zai-org/GLM-4.7-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-TEE`,name:`zai-org/GLM-4.6-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65536,cost:{input:.4,output:1.7,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.5-397B-A17B-TEE`,name:`Qwen/Qwen3.5-397B-A17B-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,cost:{input:.55,output:3.5,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-72B-Instruct`,name:`Qwen/Qwen2.5-72B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,name:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.02,output:.1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.8,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-FP8`,name:`zai-org/GLM-4.6-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen/Qwen3-235B-A22B-Thinking-2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.11,output:.6,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,name:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`tngtech/R1T2-Chimera-Speed`,name:`tngtech/R1T2-Chimera-Speed`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.22,output:.6,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6V`,name:`zai-org/GLM-4.6V`,reasoning:!0,input:[`text`,`image`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-VL-32B-Instruct`,name:`Qwen/Qwen2.5-VL-32B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:16384,maxTokens:16384,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-14B`,name:`Qwen/Qwen3-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-Coder-32B-Instruct`,name:`Qwen/Qwen2.5-Coder-32B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-30B-A3B`,name:`Qwen/Qwen3-30B-A3B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.06,output:.22,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-12b-it`,name:`unsloth/gemma-3-12b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.1,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-1B-Instruct`,name:`unsloth/Llama-3.2-1B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,name:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-14B`,name:`NousResearch/Hermes-4-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.01,output:.05,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3Guard-Gen-0.6B`,name:`Qwen/Qwen3Guard-Gen-0.6B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`rednote-hilab/dots.ocr`,name:`rednote-hilab/dots.ocr`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}}];function Au(e){return{...e,compat:{supportsUsageInStreaming:!1}}}const ju={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},Mu=[{id:`doubao-seed-2-0-pro-260215`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-lite-260215`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-mini-260215`,name:`Doubao Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-code-preview-260215`,name:`Doubao Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},gu,{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:4096}];function Nu(e){return vu(e,ju)}const Pu=[..._u];function Fu(e){let t=e.toLowerCase();return t.startsWith(`gpt-`)?`openai-responses`:t.startsWith(`claude-`)?`anthropic-messages`:t.startsWith(`gemini-`)?`google-generative-ai`:`openai-completions`}function Iu(e){let t=e.toLowerCase();return!(t.includes(`glm`)||t.includes(`minimax`))}const Lu={"gpt-5.5":{input:5,output:30,cacheRead:.5,cacheWrite:0},"gpt-5.5-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4":{input:2.5,output:15,cacheRead:.25,cacheWrite:0},"gpt-5.4-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4-mini":{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},"gpt-5.4-nano":{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},"gpt-5.3-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.3-codex-spark":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"claude-fable-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-8":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"gemini-3.5-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"gemini-3.1-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gemini-3-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"qwen3.7-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"qwen3.6-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"minimax-m2.7":{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},"glm-5.2":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"glm-5.1":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"kimi-k2.6":{input:.95,output:4,cacheRead:.16,cacheWrite:0},"gpt-5.1-codex":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"gemini-3-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gpt-5.1-codex-mini":{input:.25,output:2,cacheRead:.025,cacheWrite:0},"gpt-5.1":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"glm-4.7":{input:0,output:0,cacheRead:0,cacheWrite:0},"gpt-5.1-codex-max":{input:1.25,output:10,cacheRead:.125,cacheWrite:0}},Ru={input:0,output:0,cacheRead:0,cacheWrite:0},zu={"gpt-5.5":4e5,"gpt-5.5-pro":4e5,"gpt-5.4":4e5,"gpt-5.4-pro":4e5,"gpt-5.4-mini":4e5,"gpt-5.4-nano":4e5,"gpt-5.3-codex":4e5,"gpt-5.3-codex-spark":4e5,"gpt-5.2":4e5,"gpt-5.2-codex":4e5,"claude-fable-5":1e6,"claude-opus-4-8":1e6,"claude-sonnet-5":1e6,"claude-opus-4-7":1e6,"claude-opus-4-6":1e6,"claude-opus-4-5":2e5,"claude-sonnet-4-6":1e6,"claude-sonnet-4-5":1e6,"claude-haiku-4-5":2e5,"gemini-3.5-flash":1048576,"gemini-3.1-pro":1048576,"qwen3.7-plus":1e6,"qwen3.6-plus":262144,"minimax-m2.7":262144,"glm-5.2":1e6,"glm-5.1":204800,"kimi-k2.6":262144,"gpt-5.1-codex":4e5,"gemini-3-pro":1048576,"gpt-5.1-codex-mini":4e5,"gpt-5.1":4e5,"glm-4.7":204800,"gemini-3-flash":1048576,"gpt-5.1-codex-max":4e5};function Bu(e){return zu[e]??128e3}const Vu={"gpt-5.5":128e3,"gpt-5.5-pro":128e3,"gpt-5.4":128e3,"gpt-5.4-pro":128e3,"gpt-5.4-mini":128e3,"gpt-5.4-nano":128e3,"gpt-5.3-codex":128e3,"gpt-5.3-codex-spark":128e3,"gpt-5.2":128e3,"gpt-5.2-codex":128e3,"claude-fable-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-opus-4-7":128e3,"claude-opus-4-6":128e3,"claude-opus-4-5":64e3,"claude-sonnet-4-6":128e3,"claude-sonnet-4-5":64e3,"claude-haiku-4-5":64e3,"gemini-3.5-flash":65536,"gemini-3.1-pro":65536,"qwen3.7-plus":65536,"qwen3.6-plus":65536,"minimax-m2.7":65536,"glm-5.2":131072,"glm-5.1":131072,"kimi-k2.6":65536,"gpt-5.1-codex":128e3,"gemini-3-pro":65536,"gpt-5.1-codex-mini":128e3,"gpt-5.1":128e3,"glm-4.7":131072,"gemini-3-flash":65536,"gpt-5.1-codex-max":128e3};function Hu(e){return Vu[e]??8192}function Uu(e){return{id:e,name:Gu(e),api:Fu(e),reasoning:!0,input:Iu(e)?[`text`,`image`]:[`text`],cost:Lu[e]??Ru,contextWindow:Bu(e),maxTokens:Hu(e),capabilities:Ua(e)}}const Wu={"gpt-5.5":`GPT-5.5`,"gpt-5.5-pro":`GPT-5.5 Pro`,"gpt-5.4":`GPT-5.4`,"gpt-5.4-pro":`GPT-5.4 Pro`,"gpt-5.4-mini":`GPT-5.4 Mini`,"gpt-5.4-nano":`GPT-5.4 Nano`,"gpt-5.3-codex":`GPT-5.3 Codex`,"gpt-5.3-codex-spark":`GPT-5.3 Codex Spark`,"gpt-5.2":`GPT-5.2`,"gpt-5.2-codex":`GPT-5.2 Codex`,"claude-fable-5":`Claude Fable 5`,"claude-opus-4-8":`Claude Opus 4.8`,"claude-sonnet-5":`Claude Sonnet 5`,"claude-opus-4-7":`Claude Opus 4.7`,"claude-opus-4-6":`Claude Opus 4.6`,"claude-opus-4-5":`Claude Opus 4.5`,"claude-sonnet-4-6":`Claude Sonnet 4.6`,"claude-sonnet-4-5":`Claude Sonnet 4.5`,"claude-haiku-4-5":`Claude Haiku 4.5`,"gemini-3.5-flash":`Gemini 3.5 Flash`,"gemini-3.1-pro":`Gemini 3.1 Pro`,"qwen3.7-plus":`Qwen3.7 Plus`,"qwen3.6-plus":`Qwen3.6 Plus`,"minimax-m2.7":`MiniMax M2.7`,"glm-5.2":`GLM 5.2`,"glm-5.1":`GLM 5.1`,"kimi-k2.6":`Kimi K2.6`,"gpt-5.1-codex":`GPT-5.1 Codex`,"gemini-3-pro":`Gemini 3 Pro`,"gpt-5.1-codex-mini":`GPT-5.1 Codex Mini`,"gpt-5.1":`GPT-5.1`,"glm-4.7":`GLM-4.7`,"gemini-3-flash":`Gemini 3 Flash`,"gpt-5.1-codex-max":`GPT-5.1 Codex Max`};function Gu(e){return Wu[e]?Wu[e]:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Ku(){return Ba.map(Uu)}const qu={input:0,output:0,cacheRead:0,cacheWrite:0};function I(e){return{id:e.id,name:e.name??e.id,reasoning:e.reasoning??!1,input:e.input??[`text`],cost:e.cost??qu,contextWindow:e.contextWindow??2e5,maxTokens:e.maxTokens??8192,...e.api?{api:e.api}:{},...e.compat?{compat:e.compat}:{},...e.capabilities?{capabilities:e.capabilities}:{}}}const Ju=[I({id:`gpt-5.6`,name:`GPT-5.6 Sol`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:6.25}}),I({id:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:3.125}}),I({id:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-responses`,cost:{input:1,output:6,cacheRead:.1,cacheWrite:1.25}}),I({id:`gpt-5.5`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:0}}),I({id:`gpt-5.4`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0}}),I({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),I({id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0}})];I({id:`gpt-5.6-sol`,name:`GPT-5.6 Sol`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`,compat:{responsesLite:!0}}),I({id:`gpt-5.6-terra`,name:`GPT-5.6 Terra`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`,compat:{responsesLite:!0}}),I({id:`gpt-5.6-luna`,name:`GPT-5.6 Luna`,reasoning:!0,input:[`text`,`image`],contextWindow:105e4,maxTokens:128e3,api:`openai-codex-responses`,compat:{responsesLite:!0}}),I({id:`gpt-5.5`,name:`GPT-5.5 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.4`,name:`GPT-5.4 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),I({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),I({id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,reasoning:!0,input:[`text`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`});const Yu=[I({id:`claude-fable-5`,name:`Claude Fable 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:10,output:50,cacheRead:1,cacheWrite:12.5}}),I({id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:5,output:25,cacheRead:.5,cacheWrite:6.25}}),I({id:`claude-sonnet-5`,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,cost:{input:2,output:10,cacheRead:.2,cacheWrite:2.5}}),I({id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:64e3})],Xu=[I({id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),I({id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash-Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536})];I({id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}}),I({id:`grok-build-0.1`,name:`Grok Build 0.1`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0}}),I({id:`glm-5.2`,name:`GLM-5.2`,reasoning:!0,contextWindow:1e6,maxTokens:128e3}),I({id:`glm-5.1`,name:`GLM-5.1`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5`,name:`GLM-5`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5-turbo`,name:`GLM-5 Turbo`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-5v-turbo`,name:`GLM-5V Turbo`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7`,name:`GLM-4.7`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7-flashx`,name:`GLM-4.7 FlashX`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`glm-4.7-flash`,name:`GLM-4.7 Flash`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),I({id:`MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.7-highspeed`,name:`MiniMax M2.7 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.5`,name:`MiniMax M2.5`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`MiniMax-M2.5-highspeed`,name:`MiniMax M2.5 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),I({id:`kimi-k2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),I({id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:8192}),I({id:`kimi-for-coding`,name:`Kimi Coding`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),I({id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0}}),I({id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0}}),I({id:`mistral-large-2512`,name:`Mistral Large 3`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0}}),I({id:`devstral-2512`,name:`Devstral 2`,contextWindow:262144,maxTokens:262144,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}}),I({id:`ministral-14b-2512`,name:`Ministral 3 14B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0}}),I({id:`ministral-8b-2512`,name:`Ministral 3 8B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0}}),I({id:`ministral-3b-2512`,name:`Ministral 3 3B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0}}),I({id:`qwen3.7-max`,name:`qwen3.7-max`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`qwen3.7-plus`,name:`qwen3.7-plus`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`qwen3.6-flash`,name:`qwen3.6-flash`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),I({id:`deepseek-v4-pro`,name:`deepseek-v4-pro`,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v4-flash`,name:`deepseek-v4-flash`,contextWindow:1e6,maxTokens:131072}),I({id:`kimi-k2.7-code`,name:`kimi-k2.7-code`,contextWindow:262144,maxTokens:32768}),I({id:`glm-5.2`,name:`glm-5.2`,contextWindow:1e6,maxTokens:128e3}),I({id:`MiniMax-M2.5`,name:`MiniMax-M2.5`,reasoning:!0,contextWindow:1e6,maxTokens:65536}),I({id:`ernie-5.1`,name:`ERNIE 5.1`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0`,name:`ERNIE 5.0`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0-thinking-latest`,name:`ERNIE 5.0 Thinking Latest`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),I({id:`ernie-5.0-thinking-preview`,name:`ERNIE 5.0 Thinking Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:119e3,maxTokens:64e3}),I({id:`ernie-x1.1-preview`,name:`ERNIE X1.1 Preview`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),I({id:`ernie-x1.1`,name:`ERNIE X1.1`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),I({id:`ernie-x1-turbo-32k`,name:`ERNIE X1 Turbo 32K`,reasoning:!0,contextWindow:32e3,maxTokens:28160}),I({id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),I({id:`deepseek-v3.2-think`,name:`DeepSeek V3.2 Think`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),I({id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),[I({id:`auto`,name:`OpenRouter Auto`,input:[`text`,`image`],contextWindow:2e5}),I({id:`moonshotai/kimi-k2.6`,name:`MoonshotAI Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:1,output:3,cacheRead:.2,cacheWrite:0}}),I({id:`moonshotai/kimi-k2.5`,name:`MoonshotAI Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:.44,output:2,cacheRead:.22,cacheWrite:0}}),...Ju.map(e=>({...e,id:`openai/${e.id}`,name:`OpenAI ${e.name}`,api:`openai-completions`})),...Yu.map(e=>({...e,id:`anthropic/${e.id}`,name:`Anthropic ${e.name}`,api:`openai-completions`})),...Xu.map(e=>({...e,id:`google/${e.id}`,name:`Google ${e.name}`,api:`openai-completions`}))],ku.map(Au),qa.map(Ya),ao.map(so),$a.map(to),Fa.map(Ra),Ku(),uo.map(yo),Aa.map(e=>Ma({id:e.id})),Cu().map(Du),wu().map(Ou),Mu.map(Nu),Pu.map(Nu),Pu.map(Nu),bu.map(xu),Su.map(xu),Su.map(xu),Co.map(e=>wo(e));const Zu=`qwen3.7-plus`;`${Zu}`,`${Zu}`;const Qu=1e6,$u=65536,ed={input:0,output:0,cacheRead:0,cacheWrite:0},td=[{id:`qwen3.7-max`,name:`Qwen3.7 Max`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:Qu,maxTokens:$u},{id:`qwen3.7-plus`,name:`Qwen3.7 Plus`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:Qu,maxTokens:$u},{id:`qwen3.6-flash`,name:`Qwen3.6 Flash`,reasoning:!0,input:[`text`,`image`],cost:ed,contextWindow:1e6,maxTokens:$u}];td[0],td[1],td[2];function nd(e){return e===`gemini-3.5-flash-preview`?`gemini-3.5-flash`:e===`gemini-3-pro`||e===`gemini-3-pro-preview`||e===`gemini-3.1-pro`?`gemini-3.1-pro-preview`:e===`gemini-3-flash`||e===`gemini-3.1-flash`||e===`gemini-3.1-flash-preview`?`gemini-3-flash-preview`:e===`gemini-3.1-flash-lite`||e===`gemini-3.1-flash-lite-preview`?`gemini-3.1-flash-lite`:e}const rd={"opus-4.8":`claude-opus-4-8`,"opus-4.6":`claude-opus-4-6`,"opus-4.5":`claude-opus-4-5`,"sonnet-5":`claude-sonnet-5`,"sonnet-4.6":`claude-sonnet-4-6`,"sonnet-4.5":`claude-sonnet-4-5`},id=[`gpt-5.4-codex`,`gpt-5.3-codex`];function ad(e){let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t===`opencode-zen`?`opencode`:t===`kimi-code`?`kimi-coding`:t===`moonshotai`||t===`moonshot-ai`?`moonshot`:t===`bytedance`||t===`doubao`?`volcengine`:t}function od(e){let t=e.trim();return t&&(rd[t.toLowerCase()]??t)}function sd(e,t){if(e===`anthropic`)return od(t);if(e===`vercel-ai-gateway`&&!t.includes(`/`)){if(t.toLowerCase().startsWith(`gpt-`))return`openai/${t}`;let e=od(t);if(e.startsWith(`claude-`))return`anthropic/${e}`}return e===`google`?nd(t):e===`openrouter`&&!t.includes(`/`)?`openrouter/${t}`:t}function cd(e,t){if(e!==`openai`)return!1;let n=t.trim().toLowerCase();return n?id.some(e=>n===e||n.startsWith(`${e}-`)):!1}function ld(e,t){let n=ad(e),r=sd(n,t.trim());return cd(n,r)?{provider:`openai-codex`,model:r}:{provider:n,model:r}}function ud(e,t){let n=e.trim();if(!n)return null;let r=n.indexOf(`/`);if(r===-1)return ld(t,n);let i=n.slice(0,r).trim(),a=n.slice(r+1).trim();return!i||!a?null:ld(i,a)}const dd=`elevenlabs`;function fd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function pd(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function md(e){let t=pd(e);if(t)return t;let n=sl(e);if(n)return n;if(fd(e)&&Object.keys(e).length>0)return e}function hd(e){return md(e)!==void 0}function gd(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function _d(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(n===`voiceAliases`){let e=gd(r);e&&(t.voiceAliases=e);continue}if(n===`apiKey`){let e=md(r);e&&(t.apiKey=e);continue}if(n===`voiceId`||n===`modelId`||n===`outputFormat`){let e=pd(r);e&&(t[n]=e);continue}t[n]=r}return Object.keys(t).length>0?t:void 0}function vd(e){if(!fd(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=pd(n);if(!e)continue;let i=_d(r);i&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function yd(e){let t={},n=pd(e.voiceId);n&&(t.voiceId=n);let r=gd(e.voiceAliases);r&&(t.voiceAliases=r);let i=pd(e.modelId);i&&(t.modelId=i);let a=pd(e.outputFormat);a&&(t.outputFormat=a);let o=md(e.apiKey);return o&&(t.apiKey=o),t}function bd(e){return _d({voiceId:e.voiceId,voiceAliases:e.voiceAliases,modelId:e.modelId,outputFormat:e.outputFormat,apiKey:e.apiKey})}function xd(e){let t=pd(e.provider);if(t)return t;let n=e.providers?Object.keys(e.providers):[];return n.length===1?n[0]:void 0}function Sd(e){if(!fd(e))return;let t=e,n=typeof t.provider==`string`||fd(t.providers),r={},i=yd(t);if(Object.keys(i).length>0&&Object.assign(r,i),typeof t.interruptOnSpeech==`boolean`&&(r.interruptOnSpeech=t.interruptOnSpeech),n){let e=vd(t.providers),n=pd(t.provider);if(e&&(r.providers=e),n)r.provider=n;else if(e){let t=Object.keys(e);t.length===1&&(r.provider=t[0])}return Object.keys(r).length>0?r:void 0}let a=bd(t);return a&&(r.provider=dd,r.providers={[dd]:a}),Object.keys(r).length>0?r:void 0}function Cd(e){if(!e.talk)return e;let t=Sd(e.talk);return t?{...e,talk:t}:e}function wd(e){let t=Sd(e);if(!t)return{};let n=xd(t);return n?{provider:n,config:t.providers?.[n]}:{}}function Td(e={}){let t=e.fs??n,r=e.os??p,a=e.path??i,o=r.homedir(),s=[`.profile`,`.zprofile`,`.zshrc`,`.bashrc`].map(e=>a.join(o,e));for(let e of s)if(t.existsSync(e))try{let n=t.readFileSync(e,`utf-8`).match(/(?:^|\n)\s*(?:export\s+)?ELEVENLABS_API_KEY\s*=\s*["']?([^\n"']+)["']?/)?.[1]?.trim();if(n)return n}catch{}return null}function Ed(e=process.env,t={}){return(e.ELEVENLABS_API_KEY??``).trim()||Td(t)}let Dd={warned:!1};const Od={opus:`anthropic/claude-opus-4-8`,sonnet:`anthropic/claude-sonnet-5`,gpt:`openai/gpt-5.6`,"gpt-mini":`openai/gpt-5.4-mini`,gemini:`google/gemini-3.5-flash`,"gemini-flash":`google/gemini-3-flash-preview`,"gemini-flash-lite":`google/gemini-3.1-flash-lite`},kd={input:0,output:0,cacheRead:0,cacheWrite:0},Ad=[`text`];function jd(e,t){return t||(ad(e)===`anthropic`?`anthropic-messages`:void 0)}function Md(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function Nd(e){return{input:typeof e?.input==`number`?e.input:kd.input,output:typeof e?.output==`number`?e.output:kd.output,cacheRead:typeof e?.cacheRead==`number`?e.cacheRead:kd.cacheRead,cacheWrite:typeof e?.cacheWrite==`number`?e.cacheWrite:kd.cacheWrite}}function Pd(e){let t=e.auth?.profiles??{},n=Object.entries(t).filter(([,e])=>e?.provider===`anthropic`),r=e.auth?.order?.anthropic??[];for(let e of r){let n=t[e];if(!(!n||n.provider!==`anthropic`)){if(n.mode===`api_key`)return`api_key`;if(n.mode===`oauth`||n.mode===`token`)return`oauth`}}let i=n.some(([,e])=>e?.mode===`api_key`),a=n.some(([,e])=>e?.mode===`oauth`||e?.mode===`token`);return i&&!a?`api_key`:a&&!i||process.env.ANTHROPIC_OAUTH_TOKEN?.trim()?`oauth`:process.env.ANTHROPIC_API_KEY?.trim()?`api_key`:null}function Fd(e){if(!e||typeof e!=`string`)return null;let t=e.trim();return t?Od[t.toLowerCase()]??t:null}function Id(e){if(!e)return!1;let t=ad(e.provider),n=e.model.toLowerCase();return t===`anthropic`?!0:t===`amazon-bedrock`&&n.includes(`anthropic.claude`)}function Ld(e){let t=e.messages;if(t?.ackReactionScope!==void 0)return e;let n=t?{...t}:{};return n.ackReactionScope=`group-mentions`,{...e,messages:n}}function Rd(e,t={}){let n=e.session;if(!n||n.mainKey===void 0)return e;let r=n.mainKey.trim(),i=t.warn??console.warn,a=t.warnState??Dd,o={...e,session:{...n,mainKey:`main`}};return r&&r!==`main`&&!a.warned&&(a.warned=!0,i(`session.mainKey is ignored; main session is always "main".`)),o}function zd(e){let t=Cd(e),n=Ed();if(!n)return t;let r=t.talk,i=wd(r);if(i.provider&&i.provider!==dd||hd(i.config?.apiKey)||hd(r?.apiKey))return t;let a=i.provider??dd,o={...r?.providers};o[a]={...o[a],apiKey:n};let s={...r,provider:r?.provider??a,providers:o,apiKey:n};return{...t,talk:s}}function Bd(e){return Cd(e)}function Vd(e){let t=!1,n=e,r=n.models?.providers;if(r){let e={...r};for(let[n,i]of Object.entries(r)){let r=i.models;if(!Array.isArray(r)||r.length===0)continue;let a=jd(n,i.api),o=i;a&&i.api!==a&&(t=!0,o={...o,api:a});let s=!1,c=r.map(e=>{let t=e,n=!1,r=typeof t.reasoning==`boolean`?t.reasoning:!1;t.reasoning!==r&&(n=!0);let i=t.input??[...Ad];t.input===void 0&&(n=!0);let o=Nd(t.cost);(!t.cost||t.cost.input!==o.input||t.cost.output!==o.output||t.cost.cacheRead!==o.cacheRead||t.cost.cacheWrite!==o.cacheWrite)&&(n=!0);let c=Md(t.contextWindow)?t.contextWindow:2e5;t.contextWindow!==c&&(n=!0);let l=Math.min(8192,c),u=Md(t.maxTokens)?t.maxTokens:l,d=Math.min(u,c);t.maxTokens!==d&&(n=!0);let f=t.api??a;return t.api!==f&&(n=!0),n?(s=!0,{...t,reasoning:r,input:i,cost:o,contextWindow:c,maxTokens:d,api:f}):e});if(!s){o!==i&&(e[n]=o);continue}e[n]={...o,models:c},t=!0}t&&(n={...n,models:{...n.models,providers:e}})}let i=n.agents?.defaults;if(!i)return t?n:e;let a=i.models??{};if(Object.keys(a).length===0)return t?n:e;let o={...a};for(let[e,n]of Object.entries(Od)){let r=o[n];r&&r.alias===void 0&&(o[n]={...r,alias:e},t=!0)}return t?{...n,agents:{...n.agents,defaults:{...i,models:o}}}:e}function Hd(e){let t=e.agents,n=t?.defaults,r=typeof n?.maxConcurrent==`number`&&Number.isFinite(n.maxConcurrent),i=typeof n?.subagents?.maxConcurrent==`number`&&Number.isFinite(n.subagents.maxConcurrent);if(r&&i)return e;let a=!1,o=n?{...n}:{};r||(o.maxConcurrent=4,a=!0);let s=n?.subagents?{...n.subagents}:{};return i||(s.maxConcurrent=8,a=!0),a?{...e,agents:{...t,defaults:{...o,subagents:s}}}:e}function Ud(e){let t=e.logging;return!t||t.redactSensitive?e:{...e,logging:{...t,redactSensitive:`tools`}}}function Wd(e){let t=e.agents?.defaults;if(!t)return e;let n=Pd(e);if(!n)return e;let r=!1,i={...t},a=t.contextPruning??{},o=t.heartbeat??{};if(t.contextPruning?.mode===void 0&&(i.contextPruning={...a,mode:`cache-ttl`,ttl:t.contextPruning?.ttl??`1h`},r=!0),t.heartbeat?.every===void 0&&(i.heartbeat={...o,every:n===`oauth`?`1h`:`30m`},r=!0),n===`api_key`){let e=t.models?{...t.models}:{},n=!1;for(let[t,r]of Object.entries(e)){if(!Id(ud(t,`anthropic`)))continue;let i=r??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[t]={...i,params:{...a,cacheRetention:`short`}},n=!0)}let a=Fd(oa(t.model)??void 0);if(a){let t=ud(a,`anthropic`);if(Id(t)){let r=`${t.provider}/${t.model}`,i=e[r]??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[r]={...i,params:{...a,cacheRetention:`short`}},n=!0)}}n&&(i.models=e,r=!0)}return r?{...e,agents:{...e.agents,defaults:i}}:e}function Gd(e){let t=e.agents?.defaults;if(!t)return e;let n=t?.compaction;return n?.mode?e:{...e,agents:{...e.agents,defaults:{...t,compaction:{...n,mode:`safeguard`}}}}}const Kd=/\$\{[A-Z_][A-Z0-9_]*\}/;function qd(e){return Kd.test(e)}function Jd(e,t){let n=/^[A-Z_][A-Z0-9_]*$/,r=[];for(let i=0;i<e.length;i++){if(e[i]===`$`){if(e[i+1]===`$`&&e[i+2]===`{`){let t=i+3,a=e.indexOf(`}`,t);if(a!==-1){let o=e.slice(t,a);if(n.test(o)){r.push(`\${${o}}`),i=a;continue}}}if(e[i+1]===`{`){let a=i+2,o=e.indexOf(`}`,a);if(o!==-1){let s=e.slice(a,o);if(n.test(s)){let e=t[s];if(e===void 0||e===``)return null;r.push(e),i=o;continue}}}}r.push(e[i])}return r.join(``)}function Yd(e,t,n=process.env){if(t==null)return e;if(typeof e==`string`&&typeof t==`string`)return qd(t)&&Jd(t,n)===e?t:e;if(Array.isArray(e)&&Array.isArray(t))return e.map((e,r)=>r<t.length?Yd(e,t[r],n):e);if(C(e)&&C(t)){let r={};for(let[i,a]of Object.entries(e))i in t?r[i]=Yd(a,t[i],n):r[i]=a;return r}return e}const Xd=/^[A-Z_][A-Z0-9_]*$/;var Zd=class extends Error{constructor(e,t){super(`Missing env var "${e}" referenced at config path: ${t}`),this.varName=e,this.configPath=t,this.name=`MissingEnvVarError`}};function Qd(e,t){if(e[t]!==`$`)return null;let n=e[t+1],r=e[t+2];if(n===`$`&&r===`{`){let n=t+3,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Xd.test(t))return{kind:`escaped`,name:t,end:r}}}if(n===`{`){let n=t+2,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Xd.test(t))return{kind:`substitution`,name:t,end:r}}}return null}function $d(e,t,n){if(!e.includes(`$`))return e;let r=[];for(let i=0;i<e.length;i+=1){let a=e[i];if(a!==`$`){r.push(a);continue}let o=Qd(e,i);if(o?.kind===`escaped`){r.push(`\${${o.name}}`),i=o.end;continue}if(o?.kind===`substitution`){let e=t[o.name];if(e===void 0||e===``)throw new Zd(o.name,n);r.push(e),i=o.end;continue}r.push(a)}return r.join(``)}function ef(e){if(!e.includes(`$`))return!1;for(let t=0;t<e.length;t+=1){if(e[t]!==`$`)continue;let n=Qd(e,t);if(n?.kind===`escaped`){t=n.end;continue}if(n?.kind===`substitution`)return!0}return!1}function tf(e,t,n){if(typeof e==`string`)return $d(e,t,n);if(Array.isArray(e))return e.map((e,r)=>tf(e,t,`${n}[${r}]`));if(C(e)){let r={};for(let[i,a]of Object.entries(e))r[i]=tf(a,t,n?`${n}.${i}`:i);return r}return e}function nf(e,t=process.env){return tf(e,t,``)}function rf(e){return xr(e)||Cr(e)}function af(e){let t=e?.env;if(!t)return{};let n={};if(t.vars)for(let[e,r]of Object.entries(t.vars)){if(!r)continue;let t=br(e,{portable:!0});t&&(rf(t)||(n[t]=r))}for(let[e,r]of Object.entries(t)){if(e===`shellEnv`||e===`vars`||typeof r!=`string`||!r.trim())continue;let t=br(e,{portable:!0});t&&(rf(t)||(n[t]=r))}return n}function of(e){return af(e)}function sf(e,t=process.env){let n=of(e);for(let[e,r]of Object.entries(n))t[e]?.trim()||(t[e]=r)}const cf=`$include`;var L=class extends Error{constructor(e,t,n){super(e),this.includePath=t,this.cause=n,this.name=`ConfigIncludeError`}},lf=class extends L{constructor(e){super(`Circular include detected: ${e.join(` -> `)}`,e[e.length-1]),this.chain=e,this.name=`CircularIncludeError`}};function uf(e,t){if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(C(e)&&C(t)){let n={...e};for(let e of Object.keys(t))qi(e)||(n[e]=e in n?uf(n[e],t[e]):t[e]);return n}return t}var df=class e{constructor(e,t,n){this.basePath=e,this.resolver=t,this.visited=new Set,this.depth=0,this.visited.add(i.normalize(e)),this.rootDir=i.normalize(n??i.dirname(e)),this.rootRealDir=i.normalize(ff(this.rootDir))}process(e){return Array.isArray(e)?e.map(e=>this.process(e)):C(e)?cf in e?this.processInclude(e):this.processObject(e):e}processObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=this.process(r);return t}processInclude(e){let t=e[cf],n=Object.keys(e).filter(e=>e!==cf),r=this.resolveInclude(t);if(n.length===0)return r;if(!C(r))throw new L(`Sibling keys require included content to be an object`,typeof t==`string`?t:cf);let i={};for(let t of n)i[t]=this.process(e[t]);return uf(r,i)}resolveInclude(e){if(typeof e==`string`)return this.loadFile(e);if(Array.isArray(e))return e.reduce((e,t)=>{if(typeof t!=`string`)throw new L(`Invalid $include array item: expected string, got ${typeof t}`,String(t));return uf(e,this.loadFile(t))},{});throw new L(`Invalid $include value: expected string or array of strings, got ${typeof e}`,String(e))}loadFile(e){let t=this.resolvePath(e);this.checkCircular(t),this.checkDepth(e);let n=this.readFile(e,t),r=this.parseFile(e,t,n);return this.processNested(t,r)}resolvePath(e){let t=i.dirname(this.basePath),r=i.isAbsolute(e)?e:i.resolve(t,e),a=i.normalize(r);if(!ci(this.rootDir,a))throw new L(`Include path escapes config directory: ${e} (root: ${this.rootDir})`,e);try{let t=n.realpathSync(a);if(!ci(this.rootRealDir,t))throw new L(`Include path resolves outside config directory (symlink): ${e} (root: ${this.rootDir})`,e)}catch(e){if(e instanceof L)throw e}return a}checkCircular(e){if(this.visited.has(e))throw new lf([...this.visited,e])}checkDepth(e){if(this.depth>=10)throw new L(`Maximum include depth (10) exceeded at: ${e}`,e)}readFile(e,t){try{return this.resolver.readFileWithGuards?this.resolver.readFileWithGuards({includePath:e,resolvedPath:t,rootRealDir:this.rootRealDir}):this.resolver.readFile(t)}catch(n){throw n instanceof L?n:new L(`Failed to read include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}parseFile(e,t,n){try{return this.resolver.parseJson(n)}catch(n){throw new L(`Failed to parse include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}processNested(t,n){let r=new e(t,this.resolver,this.rootDir);return r.visited=new Set([...this.visited,t]),r.depth=this.depth+1,r.process(n)}};function ff(e){try{return n.realpathSync(e)}catch{return e}}function pf(e){let t=e.ioFs??n,r=e.maxBytes??2097152;if(!ki(t))return t.readFileSync(e.resolvedPath,`utf-8`);let i=Ai({absolutePath:e.resolvedPath,rootPath:e.rootRealDir,rootRealPath:e.rootRealDir,boundaryLabel:`config directory`,skipLexicalRootCheck:!0,maxBytes:r,ioFs:t});if(!i.ok)throw i.reason===`validation`?new L(`Include file failed security checks (regular file, max ${r} bytes, no hardlinks): ${e.includePath}`,e.includePath):new L(`Failed to read include file: ${e.includePath} (resolved: ${e.resolvedPath})`,e.includePath,i.error instanceof Error?i.error:void 0);try{return t.readFileSync(i.fd,`utf-8`)}finally{t.closeSync(i.fd)}}const mf={readFile:e=>n.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:n})=>pf({includePath:e,resolvedPath:t,rootRealDir:n}),parseJson:e=>m.parse(e)};function hf(e,t,n=mf){return new df(t,n).process(e)}function gf(e){return typeof e==`string`&&e.trim().toLowerCase()||null}function _f(e){let t=gf(e);return t===`off`||t===`partial`||t===`block`||t===`progress`?t:null}function vf(e){let t=_f(e);return t?t===`progress`?`partial`:t:null}function yf(e){let t=gf(e);return t===`replace`||t===`status_final`||t===`append`?t:null}function bf(e){return e===`append`?`block`:e===`status_final`?`progress`:`partial`}function xf(e={}){let t=_f(e.streaming);return t?t===`progress`?`partial`:t:vf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function Sf(e={}){return vf(e.streaming)||vf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function Cf(e={}){let t=_f(e.streaming);if(t)return t;let n=yf(e.streamMode);return n?bf(n):(e.streaming,`partial`)}function wf(e={}){return typeof e.nativeStreaming==`boolean`?e.nativeStreaming:typeof e.streaming==`boolean`?e.streaming:!0}const Tf=/[;&|`$<>]/,Ef=/[\r\n]/,Df=/["']/,Of=/^[A-Za-z0-9._+-]+$/;function kf(e){return e.startsWith(`.`)||e.startsWith(`~`)||e.includes(`/`)||e.includes(`\\`)?!0:/^[A-Za-z]:[\\/]/.test(e)}function Af(e){if(!e)return!1;let t=e.trim();return!t||t.includes(`\0`)||Ef.test(t)||Tf.test(t)||Df.test(t)?!1:kf(t)?!0:t.startsWith(`-`)?!1:Of.test(t)}const R=e=>w(e)?e:null,z=(e,t)=>{let n=e[t];if(w(n))return n;let r={};return e[t]=r,r},B=(e,t)=>{for(let[n,r]of Object.entries(t)){if(r===void 0||qi(n))continue;let t=e[n];if(t===void 0){e[n]=r;continue}w(t)&&w(r)&&B(t,r)}},jf=e=>{let t=R(e),n=Array.isArray(t?.command)?t?.command:null;if(!n||n.length===0||typeof n[0]!=`string`||!n.every(e=>typeof e==`string`))return null;let r=n[0].trim();if(!r||!Af(r))return null;let i=n.slice(1),a=typeof t?.timeoutSeconds==`number`?t?.timeoutSeconds:void 0,o={command:r,type:`cli`};return i.length>0&&(o.args=i),a!==void 0&&(o.timeoutSeconds=a),o},Mf=e=>{let t=e?.list;return Array.isArray(t)?t:[]},Nf=e=>{let t=Mf(R(e.agents)),n=t.find(e=>w(e)&&e.default===!0&&typeof e.id==`string`&&e.id.trim()!==``);if(n)return n.id.trim();let r=R(e.routing),i=typeof r?.defaultAgentId==`string`?r.defaultAgentId.trim():``;if(i)return i;let a=t.find(e=>w(e)&&typeof e.id==`string`&&e.id.trim()!==``);return a?a.id.trim():`main`},Pf=(e,t)=>{let n=t.trim(),r=e.find(e=>w(e)&&typeof e.id==`string`&&e.id.trim()===n);if(r)return r;let i={id:n};return e.push(i),i};function Ff(e,t,n,r){let i=Array.isArray(e.bindings)?e.bindings:null;if(!i)return;let a=!1;for(let e of i){if(!w(e))continue;let t=R(e.match);t&&r(t)&&(e.match=t,a=!0)}a&&(e.bindings=i,t.push(n))}function If(e){let t=w(e.groups)?e.groups:{};return{groups:t,entry:w(t[`*`])?t[`*`]:{}}}function Lf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Rf(e){let t=R(e.owner.threadBindings);if(!t||!Lf(t,`ttlHours`))return!1;let n=t.idleHours!==void 0;return n||(t.idleHours=t.ttlHours),delete t.ttlHours,e.owner.threadBindings=t,n?e.changes.push(`Removed ${e.pathPrefix}.threadBindings.ttlHours (${e.pathPrefix}.threadBindings.idleHours already set).`):e.changes.push(`Moved ${e.pathPrefix}.threadBindings.ttlHours → ${e.pathPrefix}.threadBindings.idleHours.`),!0}const zf=[{id:`bindings.match.provider->bindings.match.channel`,describe:`Move bindings[].match.provider to bindings[].match.channel`,apply:(e,t)=>{Ff(e,t,`Moved bindings[].match.provider → bindings[].match.channel.`,e=>{if(typeof e.channel==`string`&&e.channel.trim())return!1;let t=typeof e.provider==`string`?e.provider.trim():``;return t?(e.channel=t,delete e.provider,!0):!1})}},{id:`bindings.match.accountID->bindings.match.accountId`,describe:`Move bindings[].match.accountID to bindings[].match.accountId`,apply:(e,t)=>{Ff(e,t,`Moved bindings[].match.accountID → bindings[].match.accountId.`,e=>{if(e.accountId!==void 0)return!1;let t=typeof e.accountID==`string`?e.accountID.trim():e.accountID;return t?(e.accountId=t,delete e.accountID,!0):!1})}},{id:`session.sendPolicy.rules.match.provider->match.channel`,describe:`Move session.sendPolicy.rules[].match.provider to match.channel`,apply:(e,t)=>{let n=R(e.session);if(!n)return;let r=R(n.sendPolicy);if(!r)return;let i=Array.isArray(r.rules)?r.rules:null;if(!i)return;let a=!1;for(let e of i){if(!w(e))continue;let t=R(e.match);if(!t||typeof t.channel==`string`&&t.channel.trim())continue;let n=typeof t.provider==`string`?t.provider.trim():``;n&&(t.channel=n,delete t.provider,e.match=t,a=!0)}a&&(r.rules=i,n.sendPolicy=r,e.session=n,t.push(`Moved session.sendPolicy.rules[].match.provider → match.channel.`))}},{id:`messages.queue.byProvider->byChannel`,describe:`Move messages.queue.byProvider to messages.queue.byChannel`,apply:(e,t)=>{let n=R(e.messages);if(!n)return;let r=R(n.queue);r&&r.byProvider!==void 0&&(r.byChannel===void 0?(r.byChannel=r.byProvider,t.push(`Moved messages.queue.byProvider → messages.queue.byChannel.`)):t.push(`Removed messages.queue.byProvider (messages.queue.byChannel already set).`),delete r.byProvider,n.queue=r,e.messages=n)}},{id:`providers->channels`,describe:`Move provider config sections to channels.*`,apply:(e,t)=>{let n=[`whatsapp`,`telegram`,`discord`,`slack`,`signal`,`imessage`,`msteams`].filter(t=>w(e[t]));if(n.length===0)return;let r=z(e,`channels`);for(let i of n){let n=R(e[i]);if(!n)continue;let a=z(r,i),o=Object.keys(a).length>0;B(a,n),r[i]=a,delete e[i],t.push(o?`Merged ${i} → channels.${i}.`:`Moved ${i} → channels.${i}.`)}e.channels=r}},{id:`thread-bindings.ttlHours->idleHours`,describe:`Move legacy threadBindings.ttlHours keys to threadBindings.idleHours (session + channels.discord)`,apply:(e,t)=>{let n=R(e.session);n&&(Rf({owner:n,pathPrefix:`session`,changes:t}),e.session=n);let r=R(e.channels),i=R(r?.discord);if(!r||!i)return;Rf({owner:i,pathPrefix:`channels.discord`,changes:t});let a=R(i.accounts);if(a){for(let[e,n]of Object.entries(a)){let r=R(n);r&&(Rf({owner:r,pathPrefix:`channels.discord.accounts.${e}`,changes:t}),a[e]=r)}i.accounts=a}r.discord=i,e.channels=r}},{id:`channels.streaming-keys->channels.streaming`,describe:`Normalize legacy streaming keys to channels.<provider>.streaming (Telegram/Discord/Slack)`,apply:(e,t)=>{let n=R(e.channels);if(!n)return;let r=e=>{let n=n=>{let r=e.entry.streamMode!==void 0,i=e.entry.streaming;if(!r&&typeof i!=`boolean`)return!1;let a=n(e.entry);return e.entry.streaming=a,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${a}).`)),typeof i==`boolean`&&t.push(`Normalized ${e.pathPrefix}.streaming boolean → enum (${a}).`),!0},r=e.entry.streamMode!==void 0,i=e.entry.streaming,a=e.entry.nativeStreaming;if(e.provider===`telegram`){n(xf);return}if(e.provider===`discord`){n(Sf);return}if(!r&&typeof i!=`boolean`)return;let o=Cf(e.entry),s=wf(e.entry);e.entry.streaming=o,e.entry.nativeStreaming=s,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${o}).`)),typeof i==`boolean`?t.push(`Moved ${e.pathPrefix}.streaming (boolean) → ${e.pathPrefix}.nativeStreaming (${s}).`):typeof a!=`boolean`&&r&&t.push(`Set ${e.pathPrefix}.nativeStreaming → ${s}.`)},i=e=>{let t=R(n[e]);if(!t)return;r({provider:e,entry:t,pathPrefix:`channels.${e}`});let i=R(t.accounts);if(i)for(let[t,n]of Object.entries(i)){let i=R(n);i&&r({provider:e,entry:i,pathPrefix:`channels.${e}.accounts.${t}`})}};i(`telegram`),i(`discord`),i(`slack`)}},{id:`routing.allowFrom->channels.whatsapp.allowFrom`,describe:`Move routing.allowFrom to channels.whatsapp.allowFrom`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.allowFrom;if(r===void 0)return;let i=R(e.channels),a=i?R(i.whatsapp):null;if(!a){delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,t.push(`Removed routing.allowFrom (channels.whatsapp not configured).`);return}a.allowFrom===void 0?(a.allowFrom=r,t.push(`Moved routing.allowFrom → channels.whatsapp.allowFrom.`)):t.push(`Removed routing.allowFrom (channels.whatsapp.allowFrom already set).`),delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,i.whatsapp=a,e.channels=i}},{id:`routing.groupChat.requireMention->groups.*.requireMention`,describe:`Move routing.groupChat.requireMention to channels.whatsapp/telegram/imessage groups`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.groupChat&&typeof n.groupChat==`object`?n.groupChat:null;if(!r)return;let i=r.requireMention;if(i===void 0)return;let a=z(e,`channels`),o=(e,n)=>{if(n?.requireExisting&&!w(a[e]))return;let r=a[e]&&typeof a[e]==`object`?a[e]:{},{groups:o,entry:s}=If(r);s.requireMention===void 0?(s.requireMention=i,o[`*`]=s,r.groups=o,a[e]=r,t.push(`Moved routing.groupChat.requireMention → channels.${e}.groups."*".requireMention.`)):t.push(`Removed routing.groupChat.requireMention (channels.${e}.groups."*" already set).`)};o(`whatsapp`,{requireExisting:!0}),o(`telegram`),o(`imessage`),delete r.requireMention,Object.keys(r).length===0&&delete n.groupChat,Object.keys(n).length===0&&delete e.routing,e.channels=a}},{id:`gateway.token->gateway.auth.token`,describe:`Move gateway.token to gateway.auth.token`,apply:(e,t)=>{let n=e.gateway;if(!n||typeof n!=`object`)return;let r=n.token;if(r===void 0)return;let i=n,a=i.auth&&typeof i.auth==`object`?i.auth:{};a.token===void 0?(a.token=r,a.mode||=`token`,t.push(`Moved gateway.token → gateway.auth.token.`)):t.push(`Removed gateway.token (gateway.auth.token already set).`),delete i.token,Object.keys(a).length>0&&(i.auth=a),e.gateway=i}},{id:`telegram.requireMention->channels.telegram.groups.*.requireMention`,describe:`Move telegram.requireMention to channels.telegram.groups.*.requireMention`,apply:(e,t)=>{let n=z(e,`channels`),r=n.telegram;if(!r||typeof r!=`object`)return;let i=r.requireMention;if(i===void 0)return;let{groups:a,entry:o}=If(r);o.requireMention===void 0?(o.requireMention=i,a[`*`]=o,r.groups=a,t.push(`Moved telegram.requireMention → channels.telegram.groups."*".requireMention.`)):t.push(`Removed telegram.requireMention (channels.telegram.groups."*" already set).`),delete r.requireMention,n.telegram=r,e.channels=n}}];function Bf(e){let t=jf(e.source);if(!t){e.changes.push(e.invalidMessage);return}let n=z(z(z(e.raw,`tools`),`media`),`audio`);if((Array.isArray(n.models)?n.models:[]).length===0){n.enabled=!0,n.models=[t],e.changes.push(e.movedMessage);return}e.changes.push(e.alreadySetMessage)}const Vf=[{id:`agent.model-config-v2`,describe:`Migrate legacy agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks to agent.models + model lists`,apply:(e,t)=>{let n=R(e.agent),r=R(R(e.agents)?.defaults),i=n??r;if(!i)return;let a=n?`agent`:`agents.defaults`,o=typeof i.model==`string`?String(i.model):void 0,s=typeof i.imageModel==`string`?String(i.imageModel):void 0,c=Array.isArray(i.allowedModels)?i.allowedModels.map(String):[],l=Array.isArray(i.modelFallbacks)?i.modelFallbacks.map(String):[],u=Array.isArray(i.imageModelFallbacks)?i.imageModelFallbacks.map(String):[],d=i.modelAliases&&typeof i.modelAliases==`object`?i.modelAliases:{};if(!(o||s||c.length>0||l.length>0||u.length>0||Object.keys(d).length>0))return;let f=i.models&&typeof i.models==`object`?i.models:{},p=e=>{if(typeof e!=`string`)return;let t=e.trim();t&&(f[t]||(f[t]={}))};p(o),p(s);for(let e of c)p(e);for(let e of l)p(e);for(let e of u)p(e);for(let e of Object.values(d))typeof e==`string`&&p(e);for(let[e,t]of Object.entries(d)){if(typeof t!=`string`)continue;let n=t.trim();if(!n)continue;let r=f[n]&&typeof f[n]==`object`?f[n]:{};`alias`in r||(r.alias=e,f[n]=r)}let m=i.model&&typeof i.model==`object`?i.model:null;m?(!m.primary&&o&&(m.primary=o),l.length>0&&(!Array.isArray(m.fallbacks)||m.fallbacks.length===0)&&(m.fallbacks=l),i.model=m):(o||l.length>0)&&(i.model={primary:o,fallbacks:l.length?l:[]});let h=i.imageModel&&typeof i.imageModel==`object`?i.imageModel:null;h?(!h.primary&&s&&(h.primary=s),u.length>0&&(!Array.isArray(h.fallbacks)||h.fallbacks.length===0)&&(h.fallbacks=u),i.imageModel=h):(s||u.length>0)&&(i.imageModel={primary:s,fallbacks:u.length?u:[]}),i.models=f,o!==void 0&&t.push(`Migrated ${a}.model string → ${a}.model.primary.`),l.length>0&&t.push(`Migrated ${a}.modelFallbacks → ${a}.model.fallbacks.`),s!==void 0&&t.push(`Migrated ${a}.imageModel string → ${a}.imageModel.primary.`),u.length>0&&t.push(`Migrated ${a}.imageModelFallbacks → ${a}.imageModel.fallbacks.`),c.length>0&&t.push(`Migrated ${a}.allowedModels → ${a}.models.`),Object.keys(d).length>0&&t.push(`Migrated ${a}.modelAliases → ${a}.models.*.alias.`),delete i.allowedModels,delete i.modelAliases,delete i.modelFallbacks,delete i.imageModelFallbacks}},{id:`routing.agents-v2`,describe:`Move routing.agents/defaultAgentId to agents.list`,apply:(e,t)=>{let n=R(e.routing);if(!n)return;let r=R(n.agents),i=z(e,`agents`),a=Mf(i);if(r){for(let[e,n]of Object.entries(r)){let r=String(e??``).trim(),i=R(n);if(!r||!i)continue;let o=Pf(a,r),s={...i};if(`mentionPatterns`in s){let e=s.mentionPatterns,n=z(o,`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=e,t.push(`Moved routing.agents.${r}.mentionPatterns → agents.list (id "${r}").groupChat.mentionPatterns.`)):t.push(`Removed routing.agents.${r}.mentionPatterns (agents.list groupChat mentionPatterns already set).`),delete s.mentionPatterns}let c=R(s.groupChat);c&&(B(z(o,`groupChat`),c),delete s.groupChat);let l=R(s.sandbox);if(l){let e=R(l.tools);e&&(B(z(z(z(o,`tools`),`sandbox`),`tools`),e),delete l.tools,t.push(`Moved routing.agents.${r}.sandbox.tools → agents.list (id "${r}").tools.sandbox.tools.`)),s.sandbox=l}B(o,s)}delete n.agents,t.push(`Moved routing.agents → agents.list.`)}let o=typeof n.defaultAgentId==`string`?n.defaultAgentId.trim():``;if(o){if(a.some(e=>w(e)&&e.default===!0))t.push(`Removed routing.defaultAgentId (agents.list default already set).`);else{let e=Pf(a,o);e.default=!0,t.push(`Moved routing.defaultAgentId → agents.list (id "${o}").default.`)}delete n.defaultAgentId}a.length>0&&(i.list=a),Object.keys(n).length===0&&delete e.routing}},{id:`routing.config-v2`,describe:`Move routing bindings/groupChat/queue/agentToAgent/transcribeAudio`,apply:(e,t)=>{let n=R(e.routing);if(!n)return;if(n.bindings!==void 0&&(e.bindings===void 0?(e.bindings=n.bindings,t.push(`Moved routing.bindings → bindings.`)):t.push(`Removed routing.bindings (bindings already set).`),delete n.bindings),n.agentToAgent!==void 0){let r=z(e,`tools`);r.agentToAgent===void 0?(r.agentToAgent=n.agentToAgent,t.push(`Moved routing.agentToAgent → tools.agentToAgent.`)):t.push(`Removed routing.agentToAgent (tools.agentToAgent already set).`),delete n.agentToAgent}if(n.queue!==void 0){let r=z(e,`messages`);r.queue===void 0?(r.queue=n.queue,t.push(`Moved routing.queue → messages.queue.`)):t.push(`Removed routing.queue (messages.queue already set).`),delete n.queue}let r=R(n.groupChat);if(r){let i=r.historyLimit;if(i!==void 0){let n=z(z(e,`messages`),`groupChat`);n.historyLimit===void 0?(n.historyLimit=i,t.push(`Moved routing.groupChat.historyLimit → messages.groupChat.historyLimit.`)):t.push(`Removed routing.groupChat.historyLimit (messages.groupChat.historyLimit already set).`),delete r.historyLimit}let a=r.mentionPatterns;if(a!==void 0){let n=z(z(e,`messages`),`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=a,t.push(`Moved routing.groupChat.mentionPatterns → messages.groupChat.mentionPatterns.`)):t.push(`Removed routing.groupChat.mentionPatterns (messages.groupChat.mentionPatterns already set).`),delete r.mentionPatterns}Object.keys(r).length===0?delete n.groupChat:n.groupChat=r}n.transcribeAudio!==void 0&&(Bf({raw:e,source:n.transcribeAudio,changes:t,movedMessage:`Moved routing.transcribeAudio → tools.media.audio.models.`,alreadySetMessage:`Removed routing.transcribeAudio (tools.media.audio.models already set).`,invalidMessage:`Removed routing.transcribeAudio (invalid or empty command).`}),delete n.transcribeAudio),Object.keys(n).length===0&&delete e.routing}},{id:`audio.transcription-v2`,describe:`Move audio.transcription to tools.media.audio.models`,apply:(e,t)=>{let n=R(e.audio);n?.transcription!==void 0&&(Bf({raw:e,source:n.transcription,changes:t,movedMessage:`Moved audio.transcription → tools.media.audio.models.`,alreadySetMessage:`Removed audio.transcription (tools.media.audio.models already set).`,invalidMessage:`Removed audio.transcription (invalid or empty command).`}),delete n.transcription,Object.keys(n).length===0?delete e.audio:e.audio=n)}},{id:`media.preserveFilenames-v2`,describe:`Move top-level media.preserveFilenames to channels.msteams.preserveFilenames`,apply:(e,t)=>{let n=R(e.media);if(n?.preserveFilenames===void 0)return;let r=z(z(e,`channels`),`msteams`);r.preserveFilenames===void 0?(r.preserveFilenames=n.preserveFilenames,t.push(`Moved media.preserveFilenames → channels.msteams.preserveFilenames.`)):t.push(`Removed media.preserveFilenames (channels.msteams.preserveFilenames already set).`),delete n.preserveFilenames,Object.keys(n).length===0?delete e.media:e.media=n}}],Hf=[`e`,`vm`].join(``),Uf=[`camera.snap`,`camera.clip`,`screen.record`,`calendar.add`,`contacts.add`,`reminders.add`],Wf=[{id:`gateway.nodes.generated-deny-defaults`,describe:`Remove the redundant node denylist generated by older onboarding`,apply:(e,t)=>{let n=R(e.gateway),r=R(n?.nodes),i=r?.denyCommands;!n||!r||r.allowCommands!==void 0||r.browser!==void 0||!Array.isArray(i)||i.length!==Uf.length||!i.every((e,t)=>e===Uf[t])||(delete r.denyCommands,Object.keys(r).length===0&&delete n.nodes,t.push(`Removed the redundant gateway.nodes.denyCommands defaults generated by older onboarding.`))}},{id:`models.providers.request.allowPrivateNetwork`,describe:`Mark existing private model provider base URLs as explicitly allowed`,apply:(e,t)=>{let n=R(R(e.models)?.providers);if(n)for(let[e,r]of Object.entries(n)){let n=R(r),i=typeof n?.baseUrl==`string`?n.baseUrl:``;if(!n||!ll(i))continue;let a=R(n.request)??{};a.allowPrivateNetwork===void 0&&(a.allowPrivateNetwork=!0,n.request=a,t.push(`Added models.providers.${e}.request.allowPrivateNetwork=true for existing private model endpoint.`))}}},{id:`memorySearch->agents.defaults.memorySearch`,describe:`Move top-level memorySearch to agents.defaults.memorySearch`,apply:(e,t)=>{let n=R(e.memorySearch);if(!n)return;let r=z(e,`agents`),i=z(r,`defaults`),a=R(i.memorySearch);if(!a)i.memorySearch=n,t.push(`Moved memorySearch → agents.defaults.memorySearch.`);else{let e=structuredClone(a);B(e,n),i.memorySearch=e,t.push(`Merged memorySearch → agents.defaults.memorySearch (filled missing fields from legacy; kept explicit agents.defaults values).`)}r.defaults=i,e.agents=r,delete e.memorySearch}},{id:`auth.anthropic-claude-cli-mode-oauth`,describe:`Switch anthropic:claude-cli auth profile mode to oauth`,apply:(e,t)=>{let n=R(R(e.auth)?.profiles);if(!n)return;let r=R(n[`anthropic:claude-cli`]);r&&r.mode===`token`&&(r.mode=`oauth`,t.push(`Updated auth.profiles["anthropic:claude-cli"].mode → "oauth".`))}},{id:`tools.bash->tools.exec`,describe:`Move tools.bash to tools.exec`,apply:(e,t)=>{let n=z(e,`tools`),r=R(n.bash);r&&(n.exec===void 0?(n.exec=r,t.push(`Moved tools.bash → tools.exec.`)):t.push(`Removed tools.bash (tools.exec already set).`),delete n.bash)}},{id:`wallet.solana-only-runtime`,describe:`Remove legacy wallet chain entries after Solana-only runtime migration`,apply:(e,t)=>{let n=R(e.wallet);if(!n)return;let r=R(n.keystore);if(r&&Array.isArray(r.chainSupport)){let e=r.chainSupport.some(e=>e!==`solana`),n=r.chainSupport.length===1&&r.chainSupport[0]===`solana`;(e||!n)&&(r.chainSupport=[`solana`],t.push(`Normalized wallet.keystore.chainSupport → ["solana"] (removed legacy non-Solana entries).`))}let i=R(n.runtime);if(i&&Array.isArray(i.chains)){let e=i.chains.some(e=>e!==`solana`),n=i.chains.length===1&&i.chains[0]===`solana`;(e||!n)&&(i.chains=[`solana`],t.push(`Normalized wallet.runtime.chains → ["solana"] (removed legacy non-Solana entries).`))}let a=R(i?.policy);a&&Hf in a&&(delete a[Hf],t.push(`Removed wallet.runtime.policy legacy non-Solana policy block.`))}},{id:`messages.tts.enabled->auto`,describe:`Move messages.tts.enabled to messages.tts.auto`,apply:(e,t)=>{let n=R(R(e.messages)?.tts);if(n){if(n.auto!==void 0){`enabled`in n&&(delete n.enabled,t.push(`Removed messages.tts.enabled (messages.tts.auto already set).`));return}typeof n.enabled==`boolean`&&(n.auto=n.enabled?`always`:`off`,delete n.enabled,t.push(`Moved messages.tts.enabled → messages.tts.auto (${String(n.auto)}).`))}}},{id:`agent.defaults-v2`,describe:`Move agent config to agents.defaults and tools`,apply:(e,t)=>{let n=R(e.agent);if(!n)return;let r=z(e,`agents`),i=R(r.defaults)??{},a=z(e,`tools`),o=R(n.tools);o&&(a.allow===void 0&&o.allow!==void 0&&(a.allow=o.allow,t.push(`Moved agent.tools.allow → tools.allow.`)),a.deny===void 0&&o.deny!==void 0&&(a.deny=o.deny,t.push(`Moved agent.tools.deny → tools.deny.`)));let s=R(n.elevated);s&&(a.elevated===void 0?(a.elevated=s,t.push(`Moved agent.elevated → tools.elevated.`)):t.push(`Removed agent.elevated (tools.elevated already set).`));let c=R(n.bash);c&&(a.exec===void 0?(a.exec=c,t.push(`Moved agent.bash → tools.exec.`)):t.push(`Removed agent.bash (tools.exec already set).`));let l=R(n.sandbox);if(l){let e=R(l.tools);e&&(B(z(z(a,`sandbox`),`tools`),e),delete l.tools,t.push(`Moved agent.sandbox.tools → tools.sandbox.tools.`))}let u=R(n.subagents);if(u){let e=R(u.tools);e&&(B(z(z(a,`subagents`),`tools`),e),delete u.tools,t.push(`Moved agent.subagents.tools → tools.subagents.tools.`))}let d=structuredClone(n);delete d.tools,delete d.elevated,delete d.bash,w(d.sandbox)&&delete d.sandbox.tools,w(d.subagents)&&delete d.subagents.tools,B(i,d),r.defaults=i,e.agents=r,delete e.agent,t.push(`Moved agent → agents.defaults.`)}},{id:`identity->agents.list`,describe:`Move identity to agents.list[].identity`,apply:(e,t)=>{let n=R(e.identity);if(!n)return;let r=z(e,`agents`),i=Mf(r),a=Nf(e),o=Pf(i,a);o.identity===void 0?(o.identity=n,t.push(`Moved identity → agents.list (id "${a}").identity.`)):t.push(`Removed identity (agents.list identity already set).`),r.list=i,e.agents=r,delete e.identity}}];[...zf,...Vf,...Wf];function Gf(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Kf(e){return Gf(e)&&Object.prototype.hasOwnProperty.call(e,`ttlHours`)}function qf(e){return Gf(e)?Object.values(e).some(e=>Kf(Gf(e)?e.threadBindings:void 0)):!1}const Jf=[{path:[`whatsapp`],message:`whatsapp config moved to channels.whatsapp (auto-migrated on load).`},{path:[`telegram`],message:`telegram config moved to channels.telegram (auto-migrated on load).`},{path:[`discord`],message:`discord config moved to channels.discord (auto-migrated on load).`},{path:[`slack`],message:`slack config moved to channels.slack (auto-migrated on load).`},{path:[`signal`],message:`signal config moved to channels.signal (auto-migrated on load).`},{path:[`imessage`],message:`imessage config moved to channels.imessage (auto-migrated on load).`},{path:[`msteams`],message:`msteams config moved to channels.msteams (auto-migrated on load).`},{path:[`session`,`threadBindings`],message:`session.threadBindings.ttlHours was renamed to session.threadBindings.idleHours (auto-migrated on load).`,match:e=>Kf(e)},{path:[`channels`,`discord`,`threadBindings`],message:`channels.discord.threadBindings.ttlHours was renamed to channels.discord.threadBindings.idleHours (auto-migrated on load).`,match:e=>Kf(e)},{path:[`channels`,`discord`,`accounts`],message:`channels.discord.accounts.<id>.threadBindings.ttlHours was renamed to channels.discord.accounts.<id>.threadBindings.idleHours (auto-migrated on load).`,match:e=>qf(e)},{path:[`routing`,`allowFrom`],message:`routing.allowFrom was removed; use channels.whatsapp.allowFrom instead (auto-migrated on load).`},{path:[`routing`,`bindings`],message:`routing.bindings was moved; use top-level bindings instead (auto-migrated on load).`},{path:[`routing`,`agents`],message:`routing.agents was moved; use agents.list instead (auto-migrated on load).`},{path:[`routing`,`defaultAgentId`],message:`routing.defaultAgentId was moved; use agents.list[].default instead (auto-migrated on load).`},{path:[`routing`,`agentToAgent`],message:`routing.agentToAgent was moved; use tools.agentToAgent instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`requireMention`],message:`routing.groupChat.requireMention was removed; use channels.whatsapp/telegram/imessage groups defaults (e.g. channels.whatsapp.groups."*".requireMention) instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`mentionPatterns`],message:`routing.groupChat.mentionPatterns was moved; use agents.list[].groupChat.mentionPatterns or messages.groupChat.mentionPatterns instead (auto-migrated on load).`},{path:[`routing`,`queue`],message:`routing.queue was moved; use messages.queue instead (auto-migrated on load).`},{path:[`routing`,`transcribeAudio`],message:`routing.transcribeAudio was moved; use tools.media.audio.models instead (auto-migrated on load).`},{path:[`telegram`,`requireMention`],message:`telegram.requireMention was removed; use channels.telegram.groups."*".requireMention instead (auto-migrated on load).`},{path:[`identity`],message:`identity was moved; use agents.list[].identity instead (auto-migrated on load).`},{path:[`agent`],message:`agent.* was moved; use agents.defaults (and tools.* for tool/elevated/exec settings) instead (auto-migrated on load).`},{path:[`memorySearch`],message:`top-level memorySearch was moved; use agents.defaults.memorySearch instead (auto-migrated on load).`},{path:[`tools`,`bash`],message:`tools.bash was removed; use tools.exec instead (auto-migrated on load).`},{path:[`wallet`,`runtime`,`policy`,[`e`,`vm`].join(``)],message:`wallet.runtime.policy has a legacy non-Solana policy block; Fased wallet runtime is Solana-only (auto-migrated on load).`},{path:[`wallet`,`keystore`,`chainSupport`],message:`wallet.keystore.chainSupport contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`wallet`,`runtime`,`chains`],message:`wallet.runtime.chains contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`agent`,`model`],message:`agent.model string was replaced by agents.defaults.model.primary/fallbacks and agents.defaults.models (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`imageModel`],message:`agent.imageModel string was replaced by agents.defaults.imageModel.primary/fallbacks (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`allowedModels`],message:`agent.allowedModels was replaced by agents.defaults.models (auto-migrated on load).`},{path:[`agent`,`modelAliases`],message:`agent.modelAliases was replaced by agents.defaults.models.*.alias (auto-migrated on load).`},{path:[`agent`,`modelFallbacks`],message:`agent.modelFallbacks was replaced by agents.defaults.model.fallbacks (auto-migrated on load).`},{path:[`agent`,`imageModelFallbacks`],message:`agent.imageModelFallbacks was replaced by agents.defaults.imageModel.fallbacks (auto-migrated on load).`},{path:[`messages`,`tts`,`enabled`],message:`messages.tts.enabled was replaced by messages.tts.auto (auto-migrated on load).`},{path:[`gateway`,`token`],message:`gateway.token is ignored; use gateway.auth.token instead (auto-migrated on load).`}];function Yf(e){if(!e||typeof e!=`object`)return[];let t=e,n=[];for(let e of Jf){let r=t;for(let t of e.path){if(!r||typeof r!=`object`){r=void 0;break}r=r[t]}r!==void 0&&(!e.match||e.match(r,t))&&n.push({path:e.path.join(`.`),message:e.message})}return n}function Xf(e){return C(e)?typeof e.id==`string`&&e.id.length>0:!1}function Zf(e,t,n){if(!e.every(Xf))return;let r=[...e],i=new Map;for(let[e,t]of r.entries()){if(!Xf(t))return;i.set(t.id,e)}for(let e of t){if(!Xf(e)){r.push(structuredClone(e));continue}let t=i.get(e.id);if(t===void 0){r.push(structuredClone(e)),i.set(e.id,r.length-1);continue}r[t]=Qf(r[t],e,n)}return r}function Qf(e,t,n={}){if(!C(t))return t;let r=C(e)?{...e}:{};for(let[e,i]of Object.entries(t))if(!qi(e)){if(i===null){delete r[e];continue}if(n.mergeObjectArraysById&&Array.isArray(r[e])&&Array.isArray(i)){let t=Zf(r[e],i,n);if(t){r[e]=t;continue}}if(C(i)){let t=r[e];r[e]=Qf(C(t)?t:{},i,n);continue}r[e]=i}return r}const $f=new Set,ep=e=>!e||e.length===0?$f:new Set(e);function tp(e,t){let n=new Set;for(let t of e)t.startsWith(`--`)&&n.add(t);for(let e of t)e.startsWith(`--`)&&n.add(e);return Array.from(n)}function np(e){let t=new Map;for(let n of e)if(!(!n.startsWith(`--`)||n.length<=2))for(let e=3;e<=n.length;e+=1){let r=n.slice(0,e),i=t.get(r);if(i===void 0){t.set(r,n);continue}i!==n&&t.set(r,null)}return t}function rp(e){let t=ep(e.allowedValueFlags),n=ep(e.deniedFlags),r=tp(t,n);return{minPositional:e.minPositional,maxPositional:e.maxPositional,allowedValueFlags:t,deniedFlags:n,knownLongFlags:r,knownLongFlagsSet:new Set(r),longFlagPrefixMap:np(r)}}function ip(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,rp(t)]))}ip({jq:{maxPositional:1,allowedValueFlags:[`--arg`,`--argjson`,`--argstr`],deniedFlags:[`--argfile`,`--rawfile`,`--slurpfile`,`--from-file`,`--library-path`,`-L`,`-f`]},grep:{maxPositional:0,allowedValueFlags:[`--regexp`,`--max-count`,`--after-context`,`--before-context`,`--context`,`--devices`,`--binary-files`,`--exclude`,`--include`,`--label`,`-e`,`-m`,`-A`,`-B`,`-C`,`-D`],deniedFlags:[`--file`,`--exclude-from`,`--dereference-recursive`,`--directories`,`--recursive`,`-f`,`-d`,`-r`,`-R`]},cut:{maxPositional:0,allowedValueFlags:[`--bytes`,`--characters`,`--fields`,`--delimiter`,`--output-delimiter`,`-b`,`-c`,`-f`,`-d`]},sort:{maxPositional:0,allowedValueFlags:[`--key`,`--field-separator`,`--buffer-size`,`--parallel`,`--batch-size`,`-k`,`-t`,`-S`],deniedFlags:[`--compress-program`,`--files0-from`,`--output`,`--random-source`,`--temporary-directory`,`-T`,`-o`]},uniq:{maxPositional:0,allowedValueFlags:[`--skip-fields`,`--skip-chars`,`--check-chars`,`--group`,`-f`,`-s`,`-w`]},head:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`-n`,`-c`]},tail:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`--sleep-interval`,`--max-unchanged-stats`,`--pid`,`-n`,`-c`]},tr:{minPositional:1,maxPositional:2},wc:{maxPositional:0,deniedFlags:[`--files0-from`]}});function ap(e){let t=e.trim().toLowerCase();return t.length>0?t:null}function op(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.trunc(e);return t>=0?t:void 0}function sp(e){if(!Array.isArray(e)||e.length===0)return;let t=Array.from(new Set(e.map(e=>e.trim()).filter(e=>e.length>0))).toSorted((e,t)=>e.localeCompare(t));return t.length>0?t:void 0}function cp(e){let t=op(e.minPositional),n=op(e.maxPositional);return{minPositional:t,maxPositional:t!==void 0&&n!==void 0&&n<t?t:n,allowedValueFlags:sp(e.allowedValueFlags),deniedFlags:sp(e.deniedFlags)}}function lp(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e)){let e=ap(n);e&&(t[e]=cp(r))}return t}const up=[`ash`,`bash`,`dash`,`fish`,`ksh`,`sh`,`zsh`],dp=[`cmd`],fp=[`powershell`,`pwsh`],pp=[`chrt`,`doas`,`env`,`ionice`,`nice`,`nohup`,`setsid`,`stdbuf`,`sudo`,`taskset`,`timeout`];function mp(e){let t=new Set;for(let n of e)t.add(n),t.add(`${n}.exe`);return Array.from(t)}new Set(mp(dp)),new Set(mp(fp)),new Set(mp(pp)),new Set([...up,...dp,...fp]);function hp(e){if(!Array.isArray(e))return[];let t=e.map(e=>e.trim()).filter(e=>e.length>0);return Array.from(new Set(t))}function gp(e){let t=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=lp(t.safeBinProfiles);t.safeBinProfiles=Object.keys(n).length>0?n:void 0;let r=hp(t.safeBinTrustedDirs);t.safeBinTrustedDirs=r.length>0?r:void 0};t(e.tools?.exec);let n=Array.isArray(e.agents?.list)?e.agents.list:[];for(let e of n)t(e?.tools?.exec)}const _p=/^~(?=$|[\\/])/,vp=/(dir|path|paths|file|root|workspace)$/i,yp=new Set([`paths`,`pathPrepend`]);function bp(e,t){return!_p.test(t.trim())||!e?t:vp.test(e)||yp.has(e)?T(t):t}function xp(e,t){if(typeof t==`string`)return bp(e,t);if(Array.isArray(t)){let n=!!(e&&yp.has(e));return t.map(t=>typeof t==`string`?n?bp(e,t):t:Array.isArray(t)||C(t)?xp(void 0,t):t)}if(!C(t))return t;for(let[e,n]of Object.entries(t)){let r=xp(e,n);r!==n&&(t[e]=r)}return t}function Sp(e){return!e||typeof e!=`object`||xp(void 0,e),e}function Cp(e){return typeof e==`string`&&e.trim()||null}function wp(e,t){return e?.some(e=>Cp(e)===t)===!0}function Tp(e){if(e.plugins?.enabled===!1)return null;let t=Cp(e.plugins?.slots?.memory)??`memory-core`;return t.toLowerCase()===`none`||e.plugins?.entries?.[t]?.enabled===!1||wp(e.plugins?.deny,t)?null:t}function Ep(e){let t=e.plugins?.allow,n=Array.isArray(t),r=new Set((t??[]).map(Cp).filter(e=>e!==null)),i=new Set;for(let[t,n]of Object.entries(e.plugins?.entries??{})){if(n?.enabled===!1)continue;let e=Cp(t);e&&i.add(e)}for(let t of Object.keys(e.plugins?.installs??{})){let e=Cp(t);e&&i.add(e)}let a=Tp(e);a&&(n||i.size>0)&&i.add(a);let o=new Set;for(let e of i)r.has(e)||(r.add(e),o.add(e));if(o.size===0)return{config:e,repairedPluginIds:[]};let s=[...o].toSorted((e,t)=>e.localeCompare(t)),c=[...r].toSorted((e,t)=>e.localeCompare(t));return{config:{...e,plugins:{...e.plugins,allow:c}},repairedPluginIds:s}}let Dp={};function Op(e,t){if(!C(e)||!C(t))return t;let n={...e};for(let[r,i]of Object.entries(t))i===void 0||qi(r)||(n[r]=Op(e[r],i));return n}function kp(e){return!Dp||Object.keys(Dp).length===0?e:Op(e,Dp)}const Ap=new te({allErrors:!0,strict:!1,removeAdditional:!1}),jp=new Map;function Mp(e){return!e||e.length===0?[`invalid config`]:e.map(e=>`${e.instancePath?.replace(/^\//,``).replace(/\//g,`.`)||`<root>`}: ${e.message??`invalid`}`)}function Np(e){let t=jp.get(e.cacheKey);return(!t||t.schema!==e.schema)&&(t={validate:Ap.compile(e.schema),schema:e.schema},jp.set(e.cacheKey,t)),t.validate(e.value)?{ok:!0}:{ok:!1,errors:Mp(t.validate.errors)}}const Pp=/^data:/i,Fp=/^https?:\/\//i,Ip=/^[a-z][a-z0-9+.-]*:/i,Lp=/^[a-zA-Z]:[\\/]/;function Rp(e){return Pp.test(e)}function zp(e){return Fp.test(e)}function Bp(e){return Ip.test(e)}function Vp(e){return Lp.test(e)}function Hp(e,t){let n=i.relative(e,t);return n===``?!0:!n.startsWith(`..`)&&!i.isAbsolute(n)}const Up={b:1,kb:1024,k:1024,mb:1024**2,m:1024**2,gb:1024**3,g:1024**3,tb:1024**4,t:1024**4};function Wp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid byte size (empty)`);let r=/^(\d+(?:\.\d+)?)([a-z]+)?$/.exec(n);if(!r)throw Error(`invalid byte size: ${e}`);let i=Number(r[1]);if(!Number.isFinite(i)||i<0)throw Error(`invalid byte size: ${e}`);let a=Up[(r[2]??t?.defaultUnit??`b`).toLowerCase()];if(!a)throw Error(`invalid byte size unit: ${e}`);let o=Math.round(i*a);if(!Number.isFinite(o))throw Error(`invalid byte size: ${e}`);return o}const Gp={ms:1,s:1e3,m:6e4,h:36e5,d:864e5};function Kp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid duration (empty)`);let r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(n);if(r){let n=Number(r[1]);if(!Number.isFinite(n)||n<0)throw Error(`invalid duration: ${e}`);let i=r[2]??t?.defaultUnit??`ms`,a=Math.round(n*Gp[i]);if(!Number.isFinite(a))throw Error(`invalid duration: ${e}`);return a}let i=0,a=0;for(let t of n.matchAll(/(\d+(?:\.\d+)?)(ms|s|m|h|d)/g)){let[n,r,o]=t,s=t.index??-1;if(!n||!r||!o||s<0||s!==a)throw Error(`invalid duration: ${e}`);let c=Number(r);if(!Number.isFinite(c)||c<0)throw Error(`invalid duration: ${e}`);let l=Gp[o];if(!l)throw Error(`invalid duration: ${e}`);i+=c*l,a+=n.length}if(a!==n.length||a===0)throw Error(`invalid duration: ${e}`);let o=Math.round(i);if(!Number.isFinite(o))throw Error(`invalid duration: ${e}`);return o}function qp(e){return e?.trim().toLowerCase()||void 0}function Jp(e){let t=qp(e.network);return t?t===`host`?`host`:t.startsWith(`container:`)&&e.allowContainerNamespaceJoin!==!0?`container_namespace_join`:null:null}const Yp=y.union([y.string(),y.object({primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional()}).strict()]),Xp=y.object({cheapCheck:y.string().optional(),strong:y.string().optional(),escalation:y.string().optional(),coding:y.string().optional(),summarizer:y.string().optional()}).strict(),Zp=y.object({profileId:y.string().optional(),primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional(),taskModels:Xp.optional()}).strict(),Qp=[`openai-completions`,`openai-responses`,`openai-codex-responses`,`anthropic-messages`,`google-generative-ai`,`github-copilot`,`ollama`],$p=y.union([y.literal(`allow`),y.literal(`deny`)]),em=y.union([y.literal(`direct`),y.literal(`group`),y.literal(`channel`),y.literal(`dm`)]).optional();function tm(){return y.object({default:$p.optional(),rules:y.array(y.object({action:$p,match:y.object({channel:y.string().optional(),chatType:em,keyPrefix:y.string().optional(),rawKeyPrefix:y.string().optional()}).strict().optional()}).strict()).optional()}).strict().optional()}const V=y.registry(),nm=/^[A-Z][A-Z0-9_]{0,127}$/,rm=/^[a-z][a-z0-9_-]{0,63}$/,im=/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/,am=/^[A-Za-z]:[\\/]/,om=/^\\\\[^\\]+\\[^\\]+/;function sm(e){return i.isAbsolute(e)||am.test(e)||om.test(e)}const cm=y.object({source:y.literal(`env`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().regex(nm,`Env secret reference id must match /^[A-Z][A-Z0-9_]{0,127}$/ (example: "OPENAI_API_KEY").`)}).strict(),lm=y.object({source:y.literal(`file`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().refine(mu,`File secret reference id must be an absolute JSON pointer (example: "/providers/openai/apiKey"), or "value" for singleValue mode.`)}).strict(),um=y.object({source:y.literal(`exec`),provider:y.string().regex(rm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:y.string().regex(im,`Exec secret reference id must match /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/ (example: "vault/openai/api-key").`)}).strict(),dm=y.discriminatedUnion(`source`,[cm,lm,um]),H=y.union([y.string(),dm]),fm=y.object({source:y.literal(`env`),allowlist:y.array(y.string().regex(nm)).max(256).optional()}).strict(),pm=y.object({source:y.literal(`file`),path:y.string().min(1),mode:y.union([y.literal(`singleValue`),y.literal(`json`)]).optional(),timeoutMs:y.number().int().positive().max(12e4).optional(),maxBytes:y.number().int().positive().max(20*1024*1024).optional()}).strict(),mm=y.object({source:y.literal(`exec`),command:y.string().min(1).refine(e=>Af(e),`secrets.providers.*.command is unsafe.`).refine(e=>sm(e),`secrets.providers.*.command must be an absolute path.`),args:y.array(y.string().max(1024)).max(128).optional(),timeoutMs:y.number().int().positive().max(12e4).optional(),noOutputTimeoutMs:y.number().int().positive().max(12e4).optional(),maxOutputBytes:y.number().int().positive().max(20*1024*1024).optional(),jsonOnly:y.boolean().optional(),env:y.record(y.string(),y.string()).optional(),passEnv:y.array(y.string().regex(nm)).max(128).optional(),trustedDirs:y.array(y.string().min(1).refine(e=>sm(e),`trustedDirs entries must be absolute paths.`)).max(64).optional(),allowInsecurePath:y.boolean().optional(),allowSymlinkCommand:y.boolean().optional()}).strict(),hm=y.discriminatedUnion(`source`,[fm,pm,mm]),gm=y.object({providers:y.object({}).catchall(hm).optional(),defaults:y.object({env:y.string().regex(rm).optional(),file:y.string().regex(rm).optional(),exec:y.string().regex(rm).optional()}).strict().optional(),resolution:y.object({maxProviderConcurrency:y.number().int().positive().max(16).optional(),maxRefsPerProvider:y.number().int().positive().max(4096).optional(),maxBatchBytes:y.number().int().positive().max(5*1024*1024).optional()}).strict().optional()}).strict().optional(),_m=y.enum(Qp),vm=y.object({supportsStore:y.boolean().optional(),supportsDeveloperRole:y.boolean().optional(),supportsReasoningEffort:y.boolean().optional(),supportsUsageInStreaming:y.boolean().optional(),supportsStrictMode:y.boolean().optional(),maxTokensField:y.union([y.literal(`max_completion_tokens`),y.literal(`max_tokens`)]).optional(),thinkingFormat:y.union([y.literal(`openai`),y.literal(`zai`),y.literal(`qwen`)]).optional(),requiresToolResultName:y.boolean().optional(),requiresAssistantAfterToolResult:y.boolean().optional(),requiresThinkingAsText:y.boolean().optional(),requiresMistralToolIds:y.boolean().optional()}).strict().optional(),ym=y.object({tools:y.boolean().optional(),json:y.boolean().optional(),audio:y.boolean().optional(),video:y.boolean().optional(),speech:y.boolean().optional(),fixedReasoning:y.boolean().optional(),thinkingLevels:y.array(y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)])).optional(),defaultThinkingLevel:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)]).optional(),thinkingMode:y.union([y.literal(`openai-reasoning-effort`),y.literal(`anthropic-thinking-budget`),y.literal(`anthropic-adaptive`),y.literal(`google-thinking-budget`),y.literal(`xai-reasoning-effort`),y.literal(`xai-multi-agent-effort`),y.literal(`mistral-reasoning-effort`),y.literal(`volcengine-reasoning-effort`),y.literal(`byteplus-thinking-type`),y.literal(`zai-binary`),y.literal(`qwen-thinking`),y.literal(`moonshot-thinking`),y.literal(`generic-reasoning`)]).optional(),reasoningBudgetSupported:y.boolean().optional()}).strict().optional(),bm=y.object({id:y.string().min(1),name:y.string().min(1),api:_m.optional(),reasoning:y.boolean().optional(),input:y.array(y.union([y.literal(`text`),y.literal(`image`)])).optional(),cost:y.object({input:y.number().optional(),output:y.number().optional(),cacheRead:y.number().optional(),cacheWrite:y.number().optional()}).strict().optional(),contextWindow:y.number().positive().optional(),maxTokens:y.number().positive().optional(),headers:y.record(y.string(),y.string()).optional(),compat:vm,capabilities:ym}).strict(),xm=y.object({baseUrl:y.string().min(1),apiKey:H.optional().register(V),auth:y.union([y.literal(`api-key`),y.literal(`oauth`),y.literal(`token`)]).optional(),api:_m.optional(),headers:y.record(y.string(),y.string()).optional(),authHeader:y.boolean().optional(),request:y.object({allowPrivateNetwork:y.boolean().optional()}).strict().optional(),models:y.array(bm)}).strict(),Sm=y.object({mode:y.union([y.literal(`merge`),y.literal(`replace`)]).optional(),providers:y.record(y.string(),xm).optional()}).strict().optional(),Cm=y.object({mentionPatterns:y.array(y.string()).optional(),historyLimit:y.number().int().positive().optional()}).strict().optional(),U=y.object({historyLimit:y.number().int().min(0).optional()}).strict(),wm=y.object({name:y.string().optional(),theme:y.string().optional(),emoji:y.string().optional(),avatar:y.string().optional()}).strict().optional(),W=y.union([y.literal(`steer`),y.literal(`followup`),y.literal(`collect`),y.literal(`steer-backlog`),y.literal(`steer+backlog`),y.literal(`queue`),y.literal(`interrupt`)]),Tm=y.union([y.literal(`old`),y.literal(`new`),y.literal(`summarize`)]),Em=y.union([y.literal(`off`),y.literal(`first`),y.literal(`all`)]),Dm=y.union([y.literal(`never`),y.literal(`instant`),y.literal(`thinking`),y.literal(`message`)]),G=y.enum([`open`,`disabled`,`allowlist`]),K=y.enum([`pairing`,`allowlist`,`open`,`disabled`]),q=y.object({minChars:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),idleMs:y.number().int().nonnegative().optional()}).strict();y.number().int().min(0).optional(),y.number().int().min(0).optional(),y.record(y.string(),U.optional()).optional(),y.number().int().positive().optional(),y.enum([`length`,`newline`]).optional(),y.boolean().optional(),q.optional(),y.string().optional(),y.number().positive().optional();const Om=y.object({minChars:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),breakPreference:y.union([y.literal(`paragraph`),y.literal(`newline`),y.literal(`sentence`)]).optional()}).strict(),km=y.enum([`off`,`bullets`,`code`]),J=y.object({tables:km.optional()}).strict().optional(),Am=y.enum([`elevenlabs`,`openai`,`edge`]),jm=y.enum([`final`,`all`]),Mm=y.enum([`off`,`always`,`inbound`,`tagged`]),Nm=y.object({auto:Mm.optional(),enabled:y.boolean().optional(),mode:jm.optional(),provider:Am.optional(),summaryModel:y.string().optional(),modelOverrides:y.object({enabled:y.boolean().optional(),allowText:y.boolean().optional(),allowProvider:y.boolean().optional(),allowVoice:y.boolean().optional(),allowModelId:y.boolean().optional(),allowVoiceSettings:y.boolean().optional(),allowNormalization:y.boolean().optional(),allowSeed:y.boolean().optional()}).strict().optional(),elevenlabs:y.object({apiKey:y.string().optional().register(V),baseUrl:y.string().optional(),voiceId:y.string().optional(),modelId:y.string().optional(),seed:y.number().int().min(0).max(4294967295).optional(),applyTextNormalization:y.enum([`auto`,`on`,`off`]).optional(),languageCode:y.string().optional(),voiceSettings:y.object({stability:y.number().min(0).max(1).optional(),similarityBoost:y.number().min(0).max(1).optional(),style:y.number().min(0).max(1).optional(),useSpeakerBoost:y.boolean().optional(),speed:y.number().min(.5).max(2).optional()}).strict().optional()}).strict().optional(),openai:y.object({apiKey:y.string().optional().register(V),model:y.string().optional(),voice:y.string().optional()}).strict().optional(),edge:y.object({enabled:y.boolean().optional(),voice:y.string().optional(),lang:y.string().optional(),outputFormat:y.string().optional(),pitch:y.string().optional(),rate:y.string().optional(),volume:y.string().optional(),saveSubtitles:y.boolean().optional(),proxy:y.string().optional(),timeoutMs:y.number().int().min(1e3).max(12e4).optional()}).strict().optional(),prefsPath:y.string().optional(),maxTextLength:y.number().int().min(1).optional(),timeoutMs:y.number().int().min(1e3).max(12e4).optional()}).strict().optional(),Pm=y.object({mode:y.union([y.literal(`off`),y.literal(`natural`),y.literal(`custom`)]).optional(),minMs:y.number().int().nonnegative().optional(),maxMs:y.number().int().nonnegative().optional()}).strict(),Fm=y.object({noOutputTimeoutMs:y.number().int().min(1e3).optional(),noOutputTimeoutRatio:y.number().min(.05).max(.95).optional(),minMs:y.number().int().min(1e3).optional(),maxMs:y.number().int().min(1e3).optional()}).strict().optional(),Im=y.object({command:y.string(),args:y.array(y.string()).optional(),output:y.union([y.literal(`json`),y.literal(`text`),y.literal(`jsonl`)]).optional(),resumeOutput:y.union([y.literal(`json`),y.literal(`text`),y.literal(`jsonl`)]).optional(),input:y.union([y.literal(`arg`),y.literal(`stdin`)]).optional(),maxPromptArgChars:y.number().int().positive().optional(),env:y.record(y.string(),y.string()).optional(),clearEnv:y.array(y.string()).optional(),modelArg:y.string().optional(),modelAliases:y.record(y.string(),y.string()).optional(),sessionArg:y.string().optional(),sessionArgs:y.array(y.string()).optional(),resumeArgs:y.array(y.string()).optional(),sessionMode:y.union([y.literal(`always`),y.literal(`existing`),y.literal(`none`)]).optional(),sessionIdFields:y.array(y.string()).optional(),systemPromptArg:y.string().optional(),systemPromptMode:y.union([y.literal(`append`),y.literal(`replace`)]).optional(),systemPromptWhen:y.union([y.literal(`first`),y.literal(`always`),y.literal(`never`)]).optional(),imageArg:y.string().optional(),imageMode:y.union([y.literal(`repeat`),y.literal(`list`)]).optional(),serialize:y.boolean().optional(),reliability:y.object({watchdog:y.object({fresh:Fm,resume:Fm}).strict().optional()}).strict().optional()}).strict(),Lm=e=>(e??[]).map(e=>String(e).trim()).filter(Boolean),Y=e=>{e.policy===`open`&&(Lm(e.allowFrom).includes(`*`)||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path,message:e.message}))},X=e=>{e.policy===`allowlist`&&(Lm(e.allowFrom).length>0||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path,message:e.message}))},Rm=y.enum([`thread`,`top-level`]),zm=y.object({attempts:y.number().int().min(1).optional(),minDelayMs:y.number().int().min(0).optional(),maxDelayMs:y.number().int().min(0).optional(),jitter:y.number().min(0).max(1).optional()}).strict().optional(),Bm=y.object({whatsapp:W.optional(),telegram:W.optional(),discord:W.optional(),irc:W.optional(),slack:W.optional(),mattermost:W.optional(),signal:W.optional(),imessage:W.optional(),msteams:W.optional(),webchat:W.optional()}).strict().optional(),Vm=y.record(y.string(),y.number().int().nonnegative()).optional(),Hm=y.object({mode:W.optional(),byChannel:Bm,debounceMs:y.number().int().nonnegative().optional(),debounceMsByChannel:Vm,cap:y.number().int().positive().optional(),drop:Tm.optional()}).strict().optional(),Um=y.object({debounceMs:y.number().int().nonnegative().optional(),byChannel:Vm}).strict().optional(),Wm=y.object({command:y.array(y.string()).superRefine((e,t)=>{let n=e[0];Af(n)||t.addIssue({code:y.ZodIssueCode.custom,path:[0],message:`expected safe executable name or path`})}),timeoutSeconds:y.number().int().positive().optional()}).strict().optional(),Gm=y.string().regex(/^#?[0-9a-fA-F]{6}$/,`expected hex color (RRGGBB)`),Km=y.string().refine(Af,`expected safe executable name or path`),qm=tm(),Jm=y.array(y.union([y.literal(`image`),y.literal(`audio`),y.literal(`video`)])).optional(),Ym=y.object({mode:y.union([y.literal(`first`),y.literal(`all`)]).optional(),maxAttachments:y.number().int().positive().optional(),prefer:y.union([y.literal(`first`),y.literal(`last`),y.literal(`path`),y.literal(`url`)]).optional()}).strict().optional(),Xm=y.object({detectLanguage:y.boolean().optional(),punctuate:y.boolean().optional(),smartFormat:y.boolean().optional()}).strict().optional(),Zm=y.union([y.string(),y.number(),y.boolean()]),Qm=y.record(y.string(),y.record(y.string(),Zm)).optional(),$m={prompt:y.string().optional(),timeoutSeconds:y.number().int().positive().optional(),language:y.string().optional(),providerOptions:Qm,deepgram:Xm,baseUrl:y.string().optional(),headers:y.record(y.string(),y.string()).optional()},eh=y.object({provider:y.string().optional(),model:y.string().optional(),capabilities:Jm,type:y.union([y.literal(`provider`),y.literal(`cli`)]).optional(),command:y.string().optional(),args:y.array(y.string()).optional(),maxChars:y.number().int().positive().optional(),maxBytes:y.number().int().positive().optional(),...$m,profile:y.string().optional(),preferredProfile:y.string().optional()}).strict().optional(),th=y.object({enabled:y.boolean().optional(),scope:qm,maxBytes:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),...$m,attachments:Ym,models:y.array(eh).optional()}).strict().optional(),nh=y.object({models:y.array(eh).optional(),concurrency:y.number().int().positive().optional(),image:th.optional(),audio:th.optional(),video:th.optional()}).strict().optional(),rh=y.object({type:y.literal(`cli`).optional(),command:y.string().min(1),args:y.array(y.string()).optional(),timeoutSeconds:y.number().int().positive().optional()}).strict(),ih=y.object({enabled:y.boolean().optional(),scope:qm,maxLinks:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),models:y.array(rh).optional()}).strict().optional(),ah=y.union([y.boolean(),y.literal(`auto`)]),oh=y.object({native:ah.optional(),nativeSkills:ah.optional()}).strict().optional(),sh=y.object({every:y.string().optional(),activeHours:y.object({start:y.string().optional(),end:y.string().optional(),timezone:y.string().optional()}).strict().optional(),model:y.string().optional(),session:y.string().optional(),includeReasoning:y.boolean().optional(),target:y.string().optional(),directPolicy:y.union([y.literal(`allow`),y.literal(`block`)]).optional(),to:y.string().optional(),accountId:y.string().optional(),prompt:y.string().optional(),ackMaxChars:y.number().int().nonnegative().optional(),suppressToolErrorWarnings:y.boolean().optional()}).strict().superRefine((e,t)=>{if(!e.every)return;try{Kp(e.every,{defaultUnit:`m`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`every`],message:`invalid duration (use ms, s, m, h)`})}let n=e.activeHours;if(!n)return;let r=/^([01]\d|2[0-3]|24):([0-5]\d)$/,i=(e,n,i)=>{if(!e)return;if(!r.test(e)){t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (use "HH:MM" 24h format)`});return}let[a,o]=e.split(`:`),s=Number(a);if(s===24&&Number(o)!==0){t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (24:00 is the only allowed 24:xx value)`});return}s===24&&!n.allow24&&t.addIssue({code:y.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (start cannot be 24:00)`})};i(n.start,{allow24:!1},`start`),i(n.end,{allow24:!0},`end`)}).optional(),ch=y.object({image:y.string().optional(),containerPrefix:y.string().optional(),workdir:y.string().optional(),readOnlyRoot:y.boolean().optional(),tmpfs:y.array(y.string()).optional(),network:y.string().optional(),user:y.string().optional(),capDrop:y.array(y.string()).optional(),env:y.record(y.string(),y.string()).optional(),setupCommand:y.string().optional(),pidsLimit:y.number().int().positive().optional(),memory:y.union([y.string(),y.number()]).optional(),memorySwap:y.union([y.string(),y.number()]).optional(),cpus:y.number().positive().optional(),ulimits:y.record(y.string(),y.union([y.string(),y.number(),y.object({soft:y.number().int().nonnegative().optional(),hard:y.number().int().nonnegative().optional()}).strict()])).optional(),seccompProfile:y.string().optional(),apparmorProfile:y.string().optional(),dns:y.array(y.string()).optional(),extraHosts:y.array(y.string()).optional(),binds:y.array(y.string()).optional(),dangerouslyAllowReservedContainerTargets:y.boolean().optional(),dangerouslyAllowExternalBindSources:y.boolean().optional(),dangerouslyAllowContainerNamespaceJoin:y.boolean().optional()}).strict().superRefine((e,t)=>{if(e.binds)for(let n=0;n<e.binds.length;n+=1){let r=e.binds[n]?.trim()??``;if(!r){t.addIssue({code:y.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount entry must be a non-empty string.`});continue}let i=r.indexOf(`:`),a=(i<=0?r:r.slice(0,i)).trim();a.startsWith(`/`)||t.addIssue({code:y.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount "${r}" uses a non-absolute source path "${a}". Only absolute POSIX paths are supported for sandbox binds.`})}let n=Jp({network:e.network,allowContainerNamespaceJoin:e.dangerouslyAllowContainerNamespaceJoin===!0});n===`host`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "host" is blocked. Use "bridge" or "none" instead.`}),n===`container_namespace_join`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "container:*" is blocked by default. Use a custom bridge network, or set dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`}),e.seccompProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`seccompProfile`],message:`Sandbox security: seccomp profile "unconfined" is blocked. Use a custom seccomp profile file or omit this setting.`}),e.apparmorProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`apparmorProfile`],message:`Sandbox security: apparmor profile "unconfined" is blocked. Use a named AppArmor profile or omit this setting.`})}).optional(),lh=y.object({enabled:y.boolean().optional(),image:y.string().optional(),containerPrefix:y.string().optional(),network:y.string().optional(),cdpPort:y.number().int().positive().optional(),cdpSourceRange:y.string().optional(),vncPort:y.number().int().positive().optional(),noVncPort:y.number().int().positive().optional(),headless:y.boolean().optional(),enableNoVnc:y.boolean().optional(),allowHostControl:y.boolean().optional(),autoStart:y.boolean().optional(),autoStartTimeoutMs:y.number().int().positive().optional(),binds:y.array(y.string()).optional()}).superRefine((e,t)=>{e.network?.trim().toLowerCase()===`host`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: browser network mode "host" is blocked. Use "bridge" or a custom bridge network instead.`})}).strict().optional(),uh=y.object({idleHours:y.number().int().nonnegative().optional(),maxAgeDays:y.number().int().nonnegative().optional()}).strict().optional(),Z=y.object({allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional()}).strict().superRefine((e,t)=>{e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:y.ZodIssueCode.custom,message:`tools policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`})}).optional(),dh=y.object({enabled:y.boolean().optional(),provider:y.string().optional(),apiKey:H.optional().register(V),maxResults:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),cacheTtlMinutes:y.number().nonnegative().optional(),duckduckgo:y.object({region:y.string().optional(),safeSearch:y.union([y.literal(`strict`),y.literal(`moderate`),y.literal(`off`)]).optional()}).strict().optional(),exa:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),type:y.union([y.literal(`auto`),y.literal(`neural`),y.literal(`fast`),y.literal(`deep`),y.literal(`deep-reasoning`),y.literal(`instant`)]).optional()}).strict().optional(),firecrawl:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional()}).strict().optional(),perplexity:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),model:y.string().optional()}).strict().optional(),grok:y.object({apiKey:H.optional().register(V),model:y.string().optional(),inlineCitations:y.boolean().optional()}).strict().optional(),gemini:y.object({apiKey:H.optional().register(V),model:y.string().optional()}).strict().optional(),kimi:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),model:y.string().optional()}).strict().optional(),searxng:y.object({baseUrl:y.string().optional(),categories:y.string().optional(),language:y.string().optional()}).strict().optional(),tavily:y.object({apiKey:H.optional().register(V),baseUrl:y.string().optional(),includeAnswer:y.boolean().optional(),searchDepth:y.union([y.literal(`basic`),y.literal(`advanced`)]).optional(),topic:y.string().optional()}).strict().optional()}).strict().optional(),fh=y.object({enabled:y.boolean().optional(),maxChars:y.number().int().positive().optional(),maxCharsCap:y.number().int().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),cacheTtlMinutes:y.number().nonnegative().optional(),maxRedirects:y.number().int().nonnegative().optional(),userAgent:y.string().optional(),readability:y.boolean().optional(),firecrawl:y.object({enabled:y.boolean().optional(),apiKey:H.optional().register(V),baseUrl:y.string().optional(),onlyMainContent:y.boolean().optional(),maxAgeMs:y.number().int().nonnegative().optional(),timeoutSeconds:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),ph=y.object({search:dh,fetch:fh}).strict().optional(),mh=y.union([y.literal(`minimal`),y.literal(`coding`),y.literal(`messaging`),y.literal(`full`)]).optional();function hh(e,t,n){e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:y.ZodIssueCode.custom,message:n})}const gh=y.object({allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),profile:mh}).strict().superRefine((e,t)=>{hh(e,t,`tools.byProvider policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}),_h=y.record(y.string(),y.array(y.union([y.string(),y.number()]))).optional(),vh=y.object({enabled:y.boolean().optional(),workspaceOnly:y.boolean().optional(),allowModels:y.array(y.string()).optional()}).strict().optional(),yh=y.object({minPositional:y.number().int().nonnegative().optional(),maxPositional:y.number().int().nonnegative().optional(),allowedValueFlags:y.array(y.string()).optional(),deniedFlags:y.array(y.string()).optional()}).strict(),bh={host:y.enum([`auto`,`sandbox`,`gateway`,`node`]).optional(),security:y.enum([`deny`,`allowlist`,`full`]).optional(),ask:y.enum([`off`,`on-miss`,`always`]).optional(),node:y.string().optional(),pathPrepend:y.array(y.string()).optional(),safeBins:y.array(y.string()).optional(),safeBinTrustedDirs:y.array(y.string()).optional(),safeBinProfiles:y.record(y.string(),yh).optional(),backgroundMs:y.number().int().positive().optional(),timeoutSec:y.number().int().positive().optional(),cleanupMs:y.number().int().positive().optional(),notifyOnExit:y.boolean().optional(),notifyOnExitEmptySuccess:y.boolean().optional(),applyPatch:vh},xh=y.object({...bh,approvalRunningNoticeMs:y.number().int().nonnegative().optional()}).strict().optional(),Sh=y.object(bh).strict().optional(),Ch=y.object({workspaceOnly:y.boolean().optional()}).strict().optional(),wh=y.object({genericRepeat:y.boolean().optional(),knownPollNoProgress:y.boolean().optional(),pingPong:y.boolean().optional()}).strict().optional(),Th=y.object({enabled:y.boolean().optional(),historySize:y.number().int().positive().optional(),warningThreshold:y.number().int().positive().optional(),criticalThreshold:y.number().int().positive().optional(),globalCircuitBreakerThreshold:y.number().int().positive().optional(),detectors:wh}).strict().superRefine((e,t)=>{e.warningThreshold!==void 0&&e.criticalThreshold!==void 0&&e.warningThreshold>=e.criticalThreshold&&t.addIssue({code:y.ZodIssueCode.custom,path:[`criticalThreshold`],message:`tools.loopDetection.warningThreshold must be lower than criticalThreshold.`}),e.criticalThreshold!==void 0&&e.globalCircuitBreakerThreshold!==void 0&&e.criticalThreshold>=e.globalCircuitBreakerThreshold&&t.addIssue({code:y.ZodIssueCode.custom,path:[`globalCircuitBreakerThreshold`],message:`tools.loopDetection.criticalThreshold must be lower than globalCircuitBreakerThreshold.`})}).optional(),Eh=y.object({mode:y.union([y.literal(`off`),y.literal(`non-main`),y.literal(`all`)]).optional(),backend:y.string().optional(),workspaceAccess:y.union([y.literal(`none`),y.literal(`ro`),y.literal(`rw`)]).optional(),sessionToolsVisibility:y.union([y.literal(`spawned`),y.literal(`all`)]).optional(),scope:y.union([y.literal(`session`),y.literal(`agent`),y.literal(`shared`)]).optional(),perSession:y.boolean().optional(),workspaceRoot:y.string().optional(),docker:ch,browser:lh,prune:uh}).strict().superRefine((e,t)=>{Jp({network:e.browser?.network,allowContainerNamespaceJoin:e.docker?.dangerouslyAllowContainerNamespaceJoin===!0})===`container_namespace_join`&&t.addIssue({code:y.ZodIssueCode.custom,path:[`browser`,`network`],message:`Sandbox security: browser network mode "container:*" is blocked by default. Set sandbox.docker.dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`})}).optional(),Dh={profile:mh,allow:y.array(y.string()).optional(),alsoAllow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),byProvider:y.record(y.string(),gh).optional()},Oh=y.object({...Dh,elevated:y.object({enabled:y.boolean().optional(),allowFrom:_h}).strict().optional(),exec:xh,fs:Ch,loopDetection:Th,sandbox:y.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{hh(e,t,`agent tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),kh=y.object({enabled:y.boolean().optional(),sources:y.array(y.union([y.literal(`memory`),y.literal(`sessions`)])).optional(),extraPaths:y.array(y.string()).optional(),experimental:y.object({sessionMemory:y.boolean().optional()}).strict().optional(),provider:y.union([y.literal(`openai`),y.literal(`local`),y.literal(`gemini`),y.literal(`voyage`),y.literal(`mistral`)]).optional(),remote:y.object({baseUrl:y.string().optional(),apiKey:y.string().optional().register(V),headers:y.record(y.string(),y.string()).optional(),batch:y.object({enabled:y.boolean().optional(),wait:y.boolean().optional(),concurrency:y.number().int().positive().optional(),pollIntervalMs:y.number().int().nonnegative().optional(),timeoutMinutes:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),fallback:y.union([y.literal(`openai`),y.literal(`gemini`),y.literal(`local`),y.literal(`voyage`),y.literal(`mistral`),y.literal(`none`)]).optional(),model:y.string().optional(),local:y.object({modelPath:y.string().optional(),modelCacheDir:y.string().optional()}).strict().optional(),store:y.object({driver:y.literal(`sqlite`).optional(),path:y.string().optional(),vector:y.object({enabled:y.boolean().optional(),extensionPath:y.string().optional()}).strict().optional()}).strict().optional(),chunking:y.object({tokens:y.number().int().positive().optional(),overlap:y.number().int().nonnegative().optional()}).strict().optional(),sync:y.object({onSessionStart:y.boolean().optional(),onSearch:y.boolean().optional(),watch:y.boolean().optional(),watchDebounceMs:y.number().int().nonnegative().optional(),intervalMinutes:y.number().int().nonnegative().optional(),sessions:y.object({deltaBytes:y.number().int().nonnegative().optional(),deltaMessages:y.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),query:y.object({maxResults:y.number().int().positive().optional(),minScore:y.number().min(0).max(1).optional(),hybrid:y.object({enabled:y.boolean().optional(),vectorWeight:y.number().min(0).max(1).optional(),textWeight:y.number().min(0).max(1).optional(),candidateMultiplier:y.number().int().positive().optional(),mmr:y.object({enabled:y.boolean().optional(),lambda:y.number().min(0).max(1).optional()}).strict().optional(),temporalDecay:y.object({enabled:y.boolean().optional(),halfLifeDays:y.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),cache:y.object({enabled:y.boolean().optional(),maxEntries:y.number().int().positive().optional()}).strict().optional()}).strict().optional(),Ah=y.object({id:y.string(),default:y.boolean().optional(),name:y.string().optional(),workspace:y.string().optional(),agentDir:y.string().optional(),activeModelProvider:y.string().optional(),modelProviders:y.record(y.string(),Zp).optional(),model:Yp.optional(),taskModels:Xp.optional(),thinkingDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)]).optional(),reasoningDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)]).optional(),fastModeDefault:y.boolean().optional(),skills:y.array(y.string()).optional(),memorySearch:kh,humanDelay:Pm.optional(),heartbeat:sh,identity:wm,groupChat:Cm,subagents:y.object({allowAgents:y.array(y.string()).optional(),requireAgentId:y.boolean().optional(),model:y.union([y.string(),y.object({primary:y.string().optional(),fallbacks:y.array(y.string()).max(1).optional()}).strict()]).optional(),thinking:y.string().optional()}).strict().optional(),sandbox:Eh,tools:Oh,strictAgentic:y.object({mode:y.union([y.literal(`off`),y.literal(`warn`)]).optional()}).strict().optional()}).strict(),jh=y.object({...Dh,web:ph,media:nh,links:ih,sessions:y.object({visibility:y.enum([`self`,`tree`,`agent`,`all`]).optional()}).strict().optional(),loopDetection:Th,message:y.object({allowCrossContextSend:y.boolean().optional(),crossContext:y.object({allowWithinProvider:y.boolean().optional(),allowAcrossProviders:y.boolean().optional(),marker:y.object({enabled:y.boolean().optional(),prefix:y.string().optional(),suffix:y.string().optional()}).strict().optional()}).strict().optional(),broadcast:y.object({enabled:y.boolean().optional()}).strict().optional()}).strict().optional(),agentToAgent:y.object({enabled:y.boolean().optional(),allow:y.array(y.string()).optional()}).strict().optional(),elevated:y.object({enabled:y.boolean().optional(),allowFrom:_h}).strict().optional(),exec:Sh,fs:Ch,subagents:y.object({tools:Z}).strict().optional(),sandbox:y.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{hh(e,t,`tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),Mh=y.object({model:Yp.optional(),taskModels:Xp.optional(),imageModel:Yp.optional(),models:y.record(y.string(),y.object({alias:y.string().optional(),params:y.record(y.string(),y.unknown()).optional(),streaming:y.boolean().optional()}).strict()).optional(),workspace:y.string().optional(),repoRoot:y.string().optional(),skipBootstrap:y.boolean().optional(),bootstrapMaxChars:y.number().int().positive().optional(),bootstrapTotalMaxChars:y.number().int().positive().optional(),bootstrapPromptTruncationWarning:y.union([y.literal(`off`),y.literal(`once`),y.literal(`always`)]).optional(),userTimezone:y.string().optional(),timeFormat:y.union([y.literal(`auto`),y.literal(`12`),y.literal(`24`)]).optional(),envelopeTimezone:y.string().optional(),envelopeTimestamp:y.union([y.literal(`on`),y.literal(`off`)]).optional(),envelopeElapsed:y.union([y.literal(`on`),y.literal(`off`)]).optional(),contextTokens:y.number().int().positive().optional(),cliBackends:y.record(y.string(),Im).optional(),memorySearch:kh,contextPruning:y.object({mode:y.union([y.literal(`off`),y.literal(`cache-ttl`)]).optional(),ttl:y.string().optional(),keepLastAssistants:y.number().int().nonnegative().optional(),softTrimRatio:y.number().min(0).max(1).optional(),hardClearRatio:y.number().min(0).max(1).optional(),minPrunableToolChars:y.number().int().nonnegative().optional(),tools:y.object({allow:y.array(y.string()).optional(),deny:y.array(y.string()).optional()}).strict().optional(),softTrim:y.object({maxChars:y.number().int().nonnegative().optional(),headChars:y.number().int().nonnegative().optional(),tailChars:y.number().int().nonnegative().optional()}).strict().optional(),hardClear:y.object({enabled:y.boolean().optional(),placeholder:y.string().optional()}).strict().optional()}).strict().optional(),compaction:y.object({mode:y.union([y.literal(`default`),y.literal(`safeguard`)]).optional(),reserveTokens:y.number().int().nonnegative().optional(),keepRecentTokens:y.number().int().positive().optional(),timeoutSeconds:y.number().positive().optional(),reserveTokensFloor:y.number().int().nonnegative().optional(),maxHistoryShare:y.number().min(.1).max(.9).optional(),identifierPolicy:y.union([y.literal(`strict`),y.literal(`off`),y.literal(`custom`)]).optional(),identifierInstructions:y.string().optional(),memoryFlush:y.object({enabled:y.boolean().optional(),softThresholdTokens:y.number().int().nonnegative().optional(),prompt:y.string().optional(),systemPrompt:y.string().optional()}).strict().optional()}).strict().optional(),embeddedPi:y.object({projectSettingsPolicy:y.union([y.literal(`trusted`),y.literal(`sanitize`),y.literal(`ignore`)]).optional()}).strict().optional(),strictAgentic:y.object({mode:y.union([y.literal(`off`),y.literal(`warn`)]).optional()}).strict().optional(),skills:y.array(y.string()).optional(),thinkingDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)]).optional(),reasoningDefault:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`),y.literal(`xhigh`),y.literal(`max`),y.literal(`ultra`)]).optional(),fastModeDefault:y.boolean().optional(),verboseDefault:y.union([y.literal(`off`),y.literal(`on`),y.literal(`full`)]).optional(),elevatedDefault:y.union([y.literal(`off`),y.literal(`on`),y.literal(`ask`),y.literal(`full`)]).optional(),blockStreamingDefault:y.union([y.literal(`off`),y.literal(`on`)]).optional(),blockStreamingBreak:y.union([y.literal(`text_end`),y.literal(`message_end`)]).optional(),blockStreamingChunk:Om.optional(),blockStreamingCoalesce:q.optional(),humanDelay:Pm.optional(),timeoutSeconds:y.number().int().positive().optional(),mediaMaxMb:y.number().positive().optional(),imageMaxDimensionPx:y.number().int().positive().optional(),typingIntervalSeconds:y.number().int().positive().optional(),typingMode:Dm.optional(),heartbeat:sh,maxConcurrent:y.number().int().positive().optional(),subagents:y.object({maxConcurrent:y.number().int().positive().optional(),maxSpawnDepth:y.number().int().min(1).max(5).optional().describe(`Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents.`),maxChildrenPerAgent:y.number().int().min(1).max(20).optional().describe(`Maximum number of active children a single agent session can spawn (default: 5).`),archiveAfterMinutes:y.number().int().positive().optional(),model:Yp.optional(),thinking:y.string().optional(),runTimeoutSeconds:y.number().int().min(0).optional(),announceTimeoutMs:y.number().int().positive().optional(),allowAgents:y.array(y.string()).optional(),requireAgentId:y.boolean().optional()}).strict().optional(),sandbox:Eh}).strict().optional(),Nh=y.object({defaults:y.lazy(()=>Mh).optional(),list:y.array(Ah).optional()}).strict().optional(),Ph=y.array(y.object({agentId:y.string(),comment:y.string().optional(),match:y.object({channel:y.string(),accountId:y.string().optional(),peer:y.object({kind:y.union([y.literal(`direct`),y.literal(`group`),y.literal(`channel`),y.literal(`dm`)]),id:y.string()}).strict().optional(),guildId:y.string().optional(),teamId:y.string().optional(),roles:y.array(y.string()).optional()}).strict()}).strict()).optional(),Fh=y.enum([`parallel`,`sequential`]),Ih=y.object({strategy:Fh.optional()}).catchall(y.array(y.string())).optional(),Lh=y.object({channel:y.string().min(1),to:y.string().min(1),accountId:y.string().optional(),threadId:y.union([y.string(),y.number()]).optional()}).strict(),Rh=y.object({enabled:y.boolean().optional(),mode:y.union([y.literal(`session`),y.literal(`targets`),y.literal(`both`)]).optional(),agentFilter:y.array(y.string()).optional(),sessionFilter:y.array(y.string()).optional(),targets:y.array(Lh).optional()}).strict().optional(),zh=y.object({exec:Rh}).strict().optional();function Bh(e){let t=e.trim();return!(!t||i.isAbsolute(t)||t.startsWith(`~`)||t.includes(`:`)||t.split(/[\\/]+/g).some(e=>e===`..`))}const Vh=y.string().refine(Bh,`module must be a safe relative path (no absolute paths)`),Hh=y.object({id:y.string().optional(),enabled:y.boolean().optional(),match:y.object({path:y.string().optional(),source:y.string().optional()}).optional(),action:y.union([y.literal(`wake`),y.literal(`agent`),y.literal(`workflow`)]).optional(),wakeMode:y.union([y.literal(`now`),y.literal(`next-heartbeat`)]).optional(),name:y.string().optional(),agentId:y.string().optional(),sessionKey:y.string().optional().register(V),messageTemplate:y.string().optional(),textTemplate:y.string().optional(),workflowDefinitionId:y.string().optional(),deliver:y.boolean().optional(),allowUnsafeExternalContent:y.boolean().optional(),channel:y.union([y.literal(`last`),y.literal(`whatsapp`),y.literal(`telegram`),y.literal(`discord`),y.literal(`irc`),y.literal(`slack`),y.literal(`signal`),y.literal(`imessage`),y.literal(`msteams`)]).optional(),to:y.string().optional(),model:y.string().optional(),thinking:y.string().optional(),timeoutSeconds:y.number().int().positive().optional(),notifyPolicy:y.union([y.literal(`silent`),y.literal(`done_only`),y.literal(`state_changes`)]).optional(),transform:y.object({module:Vh,export:y.string().optional()}).strict().optional()}).strict().optional(),Uh=y.object({event:y.string(),module:Vh,export:y.string().optional()}).strict(),Wh=y.object({enabled:y.boolean().optional(),env:y.record(y.string(),y.string()).optional()}).passthrough(),Gh=y.object({source:y.union([y.literal(`npm`),y.literal(`archive`),y.literal(`path`)]),spec:y.string().optional(),sourcePath:y.string().optional(),installPath:y.string().optional(),version:y.string().optional(),installedAt:y.string().optional(),hooks:y.array(y.string()).optional()}).strict(),Kh=y.object({enabled:y.boolean().optional(),handlers:y.array(Uh).optional(),entries:y.record(y.string(),Wh).optional(),load:y.object({extraDirs:y.array(y.string()).optional()}).strict().optional(),installs:y.record(y.string(),Gh).optional()}).strict().optional(),qh=y.object({account:y.string().optional(),project:y.string().optional(),label:y.string().optional(),topic:y.string().optional(),subscription:y.string().optional(),pushToken:y.string().optional().register(V),hookUrl:y.string().optional(),includeBody:y.boolean().optional(),maxBytes:y.number().int().positive().optional(),renewEveryMinutes:y.number().int().positive().optional(),allowUnsafeExternalContent:y.boolean().optional(),serve:y.object({bind:y.string().optional(),port:y.number().int().positive().optional(),path:y.string().optional()}).strict().optional(),tailscale:y.object({mode:y.union([y.literal(`off`),y.literal(`serve`),y.literal(`funnel`)]).optional(),path:y.string().optional(),target:y.string().optional()}).strict().optional(),model:y.string().optional(),thinking:y.union([y.literal(`off`),y.literal(`minimal`),y.literal(`low`),y.literal(`medium`),y.literal(`high`)]).optional()}).strict().optional(),Jh={source:y.union([y.literal(`npm`),y.literal(`archive`),y.literal(`path`),y.literal(`clawhub`)]),spec:y.string().optional(),sourcePath:y.string().optional(),installPath:y.string().optional(),version:y.string().optional(),resolvedName:y.string().optional(),resolvedVersion:y.string().optional(),resolvedSpec:y.string().optional(),integrity:y.string().optional(),shasum:y.string().optional(),resolvedAt:y.string().optional(),installedAt:y.string().optional(),clawhubUrl:y.string().optional(),clawhubArtifactUrl:y.string().optional(),clawhubPackage:y.string().optional(),clawhubFamily:y.union([y.literal(`code-plugin`),y.literal(`bundle-plugin`)]).optional(),clawhubChannel:y.union([y.literal(`official`),y.literal(`community`),y.literal(`private`)]).optional(),artifactKind:y.union([y.literal(`legacy-zip`),y.literal(`npm-pack`),y.literal(`clawpack`)]).optional(),artifactFormat:y.union([y.literal(`zip`),y.literal(`tgz`)]).optional(),npmIntegrity:y.string().optional(),npmShasum:y.string().optional(),npmTarballName:y.string().optional(),clawpackSha256:y.string().optional(),clawpackSpecVersion:y.number().int().nonnegative().optional(),clawpackManifestSha256:y.string().optional(),clawpackSize:y.number().int().nonnegative().optional(),securityState:y.string().optional(),scanState:y.string().optional(),moderationState:y.string().optional(),readinessPhase:y.string().optional(),verificationTier:y.string().optional(),verificationSourceRepo:y.string().optional(),verificationSourceCommit:y.string().optional(),verificationHasProvenance:y.boolean().optional()},Q=y.object({showOk:y.boolean().optional(),showAlerts:y.boolean().optional(),useIndicator:y.boolean().optional()}).strict().optional(),Yh=/^[A-Za-z0-9._-]+$/,Xh=/^\[[0-9A-Fa-f:.%]+\]$/,Zh=/\s/;function Qh(e){for(let t of e){let e=t.charCodeAt(0);if(e<=31||e===127||Zh.test(t))return!0}return!1}function $h(e){if(typeof e!=`string`)return;let t=e.trim();if(!t||Qh(t)||t.startsWith(`-`)||t.includes(`/`)||t.includes(`\\`))return;let n=t.indexOf(`@`),r=t.lastIndexOf(`@`),i,a=t;if(!(n!==-1&&(n!==r||n===0||n===t.length-1||(i=t.slice(0,n),a=t.slice(n+1),!Yh.test(i))))&&!(!a||a.startsWith(`-`)||a.includes(`@`))&&!(a.includes(`:`)&&!Xh.test(a))&&!(!Yh.test(a)&&!Xh.test(a)))return i?`${i}@${a}`:a}function eg(e){return $h(e)!==void 0}const tg=/^[A-Za-z]:\//,ng=/^[A-Za-z]:$/;function rg(e){let t=e.trim();if(!t||t.includes(`\0`))return;let n=i.posix.normalize(t.replaceAll(`\\`,`/`));if(!(n.startsWith(`/`)||tg.test(n))||n===`/`)return;let r=n.endsWith(`/`)?n.slice(0,-1):n;if(!ng.test(r))return r}function ig(e){return e.split(`/`).filter(Boolean)}function ag(e){let t=rg(e);if(!t)return!1;let n=ig(t);return n.length===0?!1:n.every(e=>e===`*`||!e.includes(`*`))}const og=/^[a-z0-9_]{1,32}$/;function sg(e){let t=e.trim();return t?(t.startsWith(`/`)?t.slice(1):t).trim().toLowerCase().replace(/-/g,`_`):``}function cg(e){return e.trim()}function lg(e){let t=Array.isArray(e.commands)?e.commands:[],n=e.reservedCommands??new Set,r=e.checkReserved!==!1,i=e.checkDuplicates!==!1,a=new Set,o=[],s=[];for(let e=0;e<t.length;e+=1){let c=t[e],l=sg(String(c?.command??``));if(!l){s.push({index:e,field:`command`,message:`Telegram custom command is missing a command name.`});continue}if(!og.test(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is invalid (use a-z, 0-9, underscore; max 32 chars).`});continue}if(r&&n.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" conflicts with a native command.`});continue}if(i&&a.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is duplicated.`});continue}let u=cg(String(c?.description??``));if(!u){s.push({index:e,field:`description`,message:`Telegram custom command "/${l}" is missing a description.`});continue}i&&a.add(l),o.push({command:l,description:u})}return{commands:o,issues:s}}const ug=y.record(y.string(),Z).optional(),dg=y.union([y.string(),y.number()]).refine(e=>typeof e==`string`,{message:`Discord IDs must be strings (wrap numeric IDs in quotes).`}),fg=y.array(dg),pg=y.enum([`off`,`dm`,`group`,`all`,`allowlist`]),mg=y.union([y.array(y.string()),y.object({inlineButtons:pg.optional()}).strict()]),hg=y.object({requireMention:y.boolean().optional(),groupPolicy:G.optional(),skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),gg=y.object({requireMention:y.boolean().optional(),groupPolicy:G.optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional(),topics:y.record(y.string(),hg.optional()).optional()}).strict(),_g=y.object({command:y.string().transform(sg),description:y.string().transform(cg)}).strict(),vg=(e,t)=>{if(!e.customCommands||e.customCommands.length===0)return;let{issues:n}=lg({commands:e.customCommands,checkReserved:!1,checkDuplicates:!1});for(let e of n)t.addIssue({code:y.ZodIssueCode.custom,path:[`customCommands`,e.index,e.field],message:e.message})};function yg(e){e.streaming=xf(e),delete e.streamMode}function bg(e){e.streaming=Sf(e),delete e.streamMode}function xg(e){e.nativeStreaming=wf(e),e.streaming=Cf(e),delete e.streamMode}const Sg=y.object({name:y.string().optional(),capabilities:mg.optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,customCommands:y.array(_g).optional(),configWrites:y.boolean().optional(),dmPolicy:K.optional().default(`pairing`),botToken:y.string().optional().register(V),tokenFile:y.string().optional(),replyToMode:Em.optional(),groups:y.record(y.string(),gg.optional()).optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.union([y.string(),y.number()]).optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),blockStreaming:y.boolean().optional(),draftChunk:Om.optional(),blockStreamingCoalesce:q.optional(),streamMode:y.enum([`off`,`partial`,`block`]).optional(),mediaMaxMb:y.number().positive().optional(),timeoutSeconds:y.number().int().positive().optional(),retry:zm,network:y.object({autoSelectFamily:y.boolean().optional(),dnsResultOrder:y.enum([`ipv4first`,`verbatim`]).optional()}).strict().optional(),proxy:y.string().optional(),webhookUrl:y.string().optional().describe(`Public HTTPS webhook URL registered with Telegram for inbound updates. This must be internet-reachable and requires channels.telegram.webhookSecret.`),webhookSecret:y.string().optional().describe(`Secret token sent to Telegram during webhook registration and verified on inbound webhook requests. Telegram returns this value for verification; this is not the gateway auth token and not the bot token.`).register(V),webhookPath:y.string().optional().describe(`Local webhook route path served by the gateway listener. Defaults to /telegram-webhook.`),webhookHost:y.string().optional().describe(`Local bind host for the webhook listener. Defaults to 127.0.0.1; keep loopback unless you intentionally expose direct ingress.`),webhookPort:y.number().int().nonnegative().optional().describe(`Local bind port for the webhook listener. Defaults to 8787; set to 0 to let the OS assign an ephemeral port.`),actions:y.object({reactions:y.boolean().optional(),sendMessage:y.boolean().optional(),deleteMessage:y.boolean().optional(),sticker:y.boolean().optional()}).strict().optional(),reactionNotifications:y.enum([`off`,`own`,`all`]).optional(),reactionLevel:y.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,linkPreview:y.boolean().optional(),responsePrefix:y.string().optional(),ackReaction:y.string().optional()}).strict(),Cg=Sg.superRefine((e,t)=>{yg(e),vg(e,t)}),wg=Sg.extend({accounts:y.record(y.string(),Cg.optional()).optional()}).superRefine((e,t)=>{if(yg(e),Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="open" requires channels.telegram.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="allowlist" requires channels.telegram.allowFrom to contain at least one sender ID`}),vg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to contain at least one sender ID`})}let n=typeof e.webhookUrl==`string`?e.webhookUrl.trim():``,r=typeof e.webhookSecret==`string`?e.webhookSecret.trim():``;if(n&&!r&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.telegram.webhookUrl requires channels.telegram.webhookSecret`,path:[`webhookSecret`]}),e.accounts)for(let[n,i]of Object.entries(e.accounts)){if(!i||i.enabled===!1)continue;let a=i.dmPolicy??e.dmPolicy,o=Array.isArray(i.allowFrom)?i.allowFrom:e.allowFrom;Y({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to include "*"`}),X({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to contain at least one sender ID`}),typeof i.webhookUrl==`string`&&i.webhookUrl.trim()&&!(typeof i.webhookSecret==`string`&&i.webhookSecret.trim())&&!r&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.telegram.accounts.*.webhookUrl requires channels.telegram.webhookSecret or channels.telegram.accounts.*.webhookSecret`,path:[`accounts`,n,`webhookSecret`]})}}),Tg=y.object({enabled:y.boolean().optional(),policy:K.optional(),allowFrom:fg.optional(),groupEnabled:y.boolean().optional(),groupChannels:fg.optional()}).strict(),Eg=y.object({allow:y.boolean().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),users:fg.optional(),roles:fg.optional(),systemPrompt:y.string().optional(),includeThreadStarter:y.boolean().optional(),autoThread:y.boolean().optional()}).strict(),Dg=y.object({slug:y.string().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),users:fg.optional(),roles:fg.optional(),channels:y.record(y.string(),Eg.optional()).optional()}).strict(),Og=y.object({components:y.object({accentColor:Gm.optional()}).strict().optional()}).strict().optional(),kg=y.object({guildId:y.string().min(1),channelId:y.string().min(1)}).strict(),Ag=y.object({enabled:y.boolean().optional(),autoJoin:y.array(kg).optional(),daveEncryption:y.boolean().optional(),decryptionFailureTolerance:y.number().int().min(0).optional(),tts:Nm.optional()}).strict().optional(),jg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,configWrites:y.boolean().optional(),token:y.string().optional().register(V),proxy:y.string().optional(),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),streamMode:y.enum([`partial`,`block`,`off`]).optional(),draftChunk:Om.optional(),maxLinesPerMessage:y.number().int().positive().optional(),mediaMaxMb:y.number().positive().optional(),retry:zm,actions:y.object({reactions:y.boolean().optional(),stickers:y.boolean().optional(),emojiUploads:y.boolean().optional(),stickerUploads:y.boolean().optional(),polls:y.boolean().optional(),permissions:y.boolean().optional(),messages:y.boolean().optional(),threads:y.boolean().optional(),pins:y.boolean().optional(),search:y.boolean().optional(),memberInfo:y.boolean().optional(),roleInfo:y.boolean().optional(),roles:y.boolean().optional(),channelInfo:y.boolean().optional(),voiceStatus:y.boolean().optional(),events:y.boolean().optional(),moderation:y.boolean().optional(),channels:y.boolean().optional(),presence:y.boolean().optional()}).strict().optional(),replyToMode:Em.optional(),dmPolicy:K.optional(),allowFrom:fg.optional(),defaultTo:y.string().optional(),dm:Tg.optional(),guilds:y.record(y.string(),Dg.optional()).optional(),heartbeat:Q,execApprovals:y.object({enabled:y.boolean().optional(),approvers:fg.optional(),agentFilter:y.array(y.string()).optional(),sessionFilter:y.array(y.string()).optional(),cleanupAfterResolve:y.boolean().optional(),target:y.enum([`dm`,`channel`,`both`]).optional()}).strict().optional(),ui:Og,slashCommand:y.object({ephemeral:y.boolean().optional()}).strict().optional(),threadBindings:y.object({enabled:y.boolean().optional(),idleHours:y.number().nonnegative().optional(),maxAgeHours:y.number().nonnegative().optional(),spawnSubagentSessions:y.boolean().optional(),spawnAcpSessions:y.boolean().optional()}).strict().optional(),intents:y.object({presence:y.boolean().optional(),guildMembers:y.boolean().optional()}).strict().optional(),voice:Ag,pluralkit:y.object({enabled:y.boolean().optional(),token:y.string().optional().register(V)}).strict().optional(),responsePrefix:y.string().optional(),ackReaction:y.string().optional(),activity:y.string().optional(),status:y.enum([`online`,`dnd`,`idle`,`invisible`]).optional(),activityType:y.union([y.literal(0),y.literal(1),y.literal(2),y.literal(3),y.literal(4),y.literal(5)]).optional(),activityUrl:y.string().url().optional()}).strict().superRefine((e,t)=>{bg(e);let n=!!(typeof e.activity==`string`&&e.activity.trim()),r=e.activityType!==void 0,i=!!(typeof e.activityUrl==`string`&&e.activityUrl.trim());(r||i)&&!n&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activity is required when activityType or activityUrl is set`,path:[`activity`]}),e.activityType===1&&!i&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activityUrl is required when activityType is 1 (Streaming)`,path:[`activityUrl`]}),i&&e.activityType!==1&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.discord.activityType must be 1 (Streaming) when activityUrl is set`,path:[`activityType`]})}),Mg=jg.extend({accounts:y.record(y.string(),jg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];if(Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="open" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="allowlist" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,a=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="open" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="allowlist" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to contain at least one sender ID`})}}),Ng=y.object({enabled:y.boolean().optional(),policy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional()}).strict().superRefine((e,t)=>{Y({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="open" requires channels.googlechat.dm.allowFrom to include "*"`}),X({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="allowlist" requires channels.googlechat.dm.allowFrom to contain at least one sender ID`})}),Pg=y.object({enabled:y.boolean().optional(),allow:y.boolean().optional(),requireMention:y.boolean().optional(),users:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),Fg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),enabled:y.boolean().optional(),configWrites:y.boolean().optional(),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),requireMention:y.boolean().optional(),groupPolicy:G.optional().default(`allowlist`),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groups:y.record(y.string(),Pg.optional()).optional(),defaultTo:y.string().optional(),serviceAccount:y.union([y.string(),y.record(y.string(),y.unknown()),dm]).optional().register(V),serviceAccountRef:dm.optional().register(V),serviceAccountFile:y.string().optional(),audienceType:y.enum([`app-url`,`project-number`]).optional(),audience:y.string().optional(),webhookPath:y.string().optional(),webhookUrl:y.string().optional(),botUser:y.string().optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streamMode:y.enum([`replace`,`status_final`,`append`]).optional().default(`replace`),mediaMaxMb:y.number().positive().optional(),replyToMode:Em.optional(),actions:y.object({reactions:y.boolean().optional()}).strict().optional(),dm:Ng.optional(),typingIndicator:y.enum([`none`,`message`,`reaction`]).optional(),responsePrefix:y.string().optional()}).strict(),Ig=Fg.extend({accounts:y.record(y.string(),Fg.optional()).optional(),defaultAccount:y.string().optional()}),Lg=y.object({enabled:y.boolean().optional(),policy:K.optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupEnabled:y.boolean().optional(),groupChannels:y.array(y.union([y.string(),y.number()])).optional(),replyToMode:Em.optional()}).strict(),Rg=y.object({enabled:y.boolean().optional(),allow:y.boolean().optional(),requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,allowBots:y.boolean().optional(),users:y.array(y.union([y.string(),y.number()])).optional(),skills:y.array(y.string()).optional(),systemPrompt:y.string().optional()}).strict(),zg=y.object({historyScope:y.enum([`thread`,`channel`]).optional(),inheritParent:y.boolean().optional(),initialHistoryLimit:y.number().int().min(0).optional()}).strict(),Bg=y.object({direct:Em.optional(),group:Em.optional(),channel:Em.optional()}).strict(),Vg=y.object({name:y.string().optional(),mode:y.enum([`socket`,`http`]).optional(),signingSecret:y.string().optional().register(V),webhookPath:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),commands:oh,configWrites:y.boolean().optional(),botToken:y.string().optional().register(V),appToken:y.string().optional().register(V),userToken:y.string().optional().register(V),userTokenReadOnly:y.boolean().optional().default(!0),allowBots:y.boolean().optional(),dangerouslyAllowNameMatching:y.boolean().optional(),requireMention:y.boolean().optional(),groupPolicy:G.optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),streaming:y.union([y.boolean(),y.enum([`off`,`partial`,`block`,`progress`])]).optional(),nativeStreaming:y.boolean().optional(),streamMode:y.enum([`replace`,`status_final`,`append`]).optional(),mediaMaxMb:y.number().positive().optional(),reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:y.array(y.union([y.string(),y.number()])).optional(),replyToMode:Em.optional(),replyToModeByChatType:Bg.optional(),thread:zg.optional(),actions:y.object({reactions:y.boolean().optional(),messages:y.boolean().optional(),pins:y.boolean().optional(),search:y.boolean().optional(),permissions:y.boolean().optional(),memberInfo:y.boolean().optional(),channelInfo:y.boolean().optional(),emojiList:y.boolean().optional()}).strict().optional(),slashCommand:y.object({enabled:y.boolean().optional(),name:y.string().optional(),sessionPrefix:y.string().optional(),ephemeral:y.boolean().optional()}).strict().optional(),dmPolicy:K.optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),dm:Lg.optional(),channels:y.record(y.string(),Rg.optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional(),ackReaction:y.string().optional()}).strict().superRefine(e=>{xg(e)}),Hg=Vg.safeExtend({mode:y.enum([`socket`,`http`]).optional().default(`socket`),signingSecret:y.string().optional().register(V),webhookPath:y.string().optional().default(`/slack/events`),groupPolicy:G.optional().default(`allowlist`),accounts:y.record(y.string(),Vg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="open" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="allowlist" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to contain at least one sender ID`});let a=e.mode??`socket`;if(a===`http`&&!e.signingSecret&&t.addIssue({code:y.ZodIssueCode.custom,message:`channels.slack.mode="http" requires channels.slack.signingSecret`,path:[`signingSecret`]}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r||r.enabled===!1)continue;let i=r.mode??a,o=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,s=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="open" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to include "*"`}),X({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="allowlist" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to contain at least one sender ID`}),i===`http`&&((r.signingSecret??e.signingSecret)||t.addIssue({code:y.ZodIssueCode.custom,message:`channels.slack.accounts.*.mode="http" requires channels.slack.signingSecret or channels.slack.accounts.*.signingSecret`,path:[`accounts`,n,`signingSecret`]}))}}),Ug=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),account:y.string().optional(),httpUrl:y.string().optional(),httpHost:y.string().optional(),httpPort:y.number().int().positive().optional(),cliPath:Km.optional(),autoStart:y.boolean().optional(),startupTimeoutMs:y.number().int().min(1e3).max(12e4).optional(),receiveMode:y.union([y.literal(`on-start`),y.literal(`manual`)]).optional(),ignoreAttachments:y.boolean().optional(),ignoreStories:y.boolean().optional(),sendReadReceipts:y.boolean().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),mediaMaxMb:y.number().int().positive().optional(),reactionNotifications:y.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:y.array(y.union([y.string(),y.number()])).optional(),actions:y.object({reactions:y.boolean().optional()}).strict().optional(),reactionLevel:y.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),Wg=Ug,Gg=Ug.extend({accounts:y.record(y.string(),Wg.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="open" requires channels.signal.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="allowlist" requires channels.signal.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="open" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="allowlist" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to contain at least one sender ID`})}}),Kg=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,skills:y.array(y.string()).optional(),enabled:y.boolean().optional(),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),systemPrompt:y.string().optional()}).strict(),qg=y.object({enabled:y.boolean().optional(),service:y.string().optional(),password:y.string().optional().register(V),passwordFile:y.string().optional(),register:y.boolean().optional(),registerEmail:y.string().optional()}).strict(),Jg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),host:y.string().optional(),port:y.number().int().min(1).max(65535).optional(),tls:y.boolean().optional(),nick:y.string().optional(),username:y.string().optional(),realname:y.string().optional(),password:y.string().optional().register(V),passwordFile:y.string().optional(),nickserv:qg.optional(),channels:y.array(y.string()).optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),groups:y.record(y.string(),Kg.optional()).optional(),mentionPatterns:y.array(y.string()).optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),mediaMaxMb:y.number().positive().optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict();function Yg(e,t){Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="open" requires channels.irc.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="allowlist" requires channels.irc.allowFrom to contain at least one sender ID`}),e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:y.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}const Xg=Jg.superRefine((e,t)=>{e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:y.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}),Zg=Jg.extend({accounts:y.record(y.string(),Xg.optional()).optional()}).superRefine((e,t)=>{if(Yg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="open" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="allowlist" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to contain at least one sender ID`})}}),Qg=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,enabled:y.boolean().optional(),configWrites:y.boolean().optional(),cliPath:Km.optional(),dbPath:y.string().optional(),remoteHost:y.string().refine(eg,`expected SSH host or user@host (no spaces/options)`).optional(),service:y.union([y.literal(`imessage`),y.literal(`sms`),y.literal(`auto`)]).optional(),region:y.string().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.union([y.string(),y.number()])).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),includeAttachments:y.boolean().optional(),attachmentRoots:y.array(y.string().refine(ag,`expected absolute path root`)).optional(),remoteAttachmentRoots:y.array(y.string().refine(ag,`expected absolute path root`)).optional(),mediaMaxMb:y.number().int().positive().optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:y.record(y.string(),y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug}).strict().optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),$g=Qg,e_=Qg.extend({accounts:y.record(y.string(),$g.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="open" requires channels.imessage.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="allowlist" requires channels.imessage.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="open" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="allowlist" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to contain at least one sender ID`})}}),t_=y.union([y.string(),y.number()]),n_=y.object({reactions:y.boolean().optional(),edit:y.boolean().optional(),unsend:y.boolean().optional(),reply:y.boolean().optional(),sendWithEffect:y.boolean().optional(),renameGroup:y.boolean().optional(),setGroupIcon:y.boolean().optional(),addParticipant:y.boolean().optional(),removeParticipant:y.boolean().optional(),leaveGroup:y.boolean().optional(),sendAttachment:y.boolean().optional()}).strict().optional(),r_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug}).strict(),i_=y.object({name:y.string().optional(),capabilities:y.array(y.string()).optional(),markdown:J,configWrites:y.boolean().optional(),enabled:y.boolean().optional(),serverUrl:y.string().optional(),password:y.string().optional().register(V),webhookPath:y.string().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(t_).optional(),groupAllowFrom:y.array(t_).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),mediaMaxMb:y.number().int().positive().optional(),mediaLocalRoots:y.array(y.string()).optional(),sendReadReceipts:y.boolean().optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:y.record(y.string(),r_.optional()).optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict(),a_=i_,o_=i_.extend({accounts:y.record(y.string(),a_.optional()).optional(),actions:n_}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="open" requires channels.bluebubbles.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="allowlist" requires channels.bluebubbles.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID`})}}),s_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,replyStyle:Rm.optional()}).strict(),c_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:ug,replyStyle:Rm.optional(),channels:y.record(y.string(),s_.optional()).optional()}).strict(),l_=y.object({enabled:y.boolean().optional(),capabilities:y.array(y.string()).optional(),dangerouslyAllowNameMatching:y.boolean().optional(),markdown:J,configWrites:y.boolean().optional(),appId:y.string().optional(),appPassword:y.string().optional().register(V),tenantId:y.string().optional(),webhook:y.object({port:y.number().int().positive().optional(),path:y.string().optional()}).strict().optional(),dmPolicy:K.optional().default(`pairing`),allowFrom:y.array(y.string()).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.string()).optional(),groupPolicy:G.optional().default(`allowlist`),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreamingCoalesce:q.optional(),mediaAllowHosts:y.array(y.string()).optional(),mediaAuthAllowHosts:y.array(y.string()).optional(),requireMention:y.boolean().optional(),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),replyStyle:Rm.optional(),teams:y.record(y.string(),c_.optional()).optional(),mediaMaxMb:y.number().positive().optional(),preserveFilenames:y.boolean().optional(),sharePointSiteId:y.string().optional(),heartbeat:Q,responsePrefix:y.string().optional()}).strict().superRefine((e,t)=>{Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="open" requires channels.msteams.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="allowlist" requires channels.msteams.allowFrom to contain at least one sender ID`})}),u_=y.record(y.string(),Z).optional(),d_=y.object({requireMention:y.boolean().optional(),tools:Z,toolsBySender:u_}).strict().optional(),f_=y.record(y.string(),d_).optional(),p_=y.object({emoji:y.string().optional(),direct:y.boolean().optional().default(!0),group:y.enum([`always`,`mentions`,`never`]).optional().default(`mentions`)}).strict().optional(),m_=y.object({enabled:y.boolean().optional(),capabilities:y.array(y.string()).optional(),markdown:J,configWrites:y.boolean().optional(),sendReadReceipts:y.boolean().optional(),messagePrefix:y.string().optional(),responsePrefix:y.string().optional(),dmPolicy:K.optional().default(`pairing`),selfChatMode:y.boolean().optional(),allowFrom:y.array(y.string()).optional(),defaultTo:y.string().optional(),groupAllowFrom:y.array(y.string()).optional(),groupPolicy:G.optional().default(`allowlist`),historyLimit:y.number().int().min(0).optional(),dmHistoryLimit:y.number().int().min(0).optional(),dms:y.record(y.string(),U.optional()).optional(),textChunkLimit:y.number().int().positive().optional(),chunkMode:y.enum([`length`,`newline`]).optional(),blockStreaming:y.boolean().optional(),blockStreamingCoalesce:q.optional(),groups:f_,ackReaction:p_,debounceMs:y.number().int().nonnegative().optional().default(0),heartbeat:Q});function h_(e){e.dmPolicy===`open`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).includes(`*`)||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}function g_(e){e.dmPolicy===`allowlist`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).length>0||e.ctx.addIssue({code:y.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}const __=m_.extend({name:y.string().optional(),enabled:y.boolean().optional(),authDir:y.string().optional(),mediaMaxMb:y.number().int().positive().optional()}).strict(),v_=m_.extend({accounts:y.record(y.string(),__.optional()).optional(),mediaMaxMb:y.number().int().positive().optional().default(50),actions:y.object({reactions:y.boolean().optional(),sendMessage:y.boolean().optional(),polls:y.boolean().optional()}).strict().optional()}).strict().superRefine((e,t)=>{if(h_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="open" requires channels.whatsapp.allowFrom to include "*"`}),g_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="allowlist" requires channels.whatsapp.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;h_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="open" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to include "*"`}),g_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="allowlist" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to contain at least one sender ID`})}}),y_=y.record(y.string(),y.record(y.string(),y.string())).optional(),b_=y.object({defaults:y.object({groupPolicy:G.optional(),heartbeat:Q}).strict().optional(),modelByChannel:y_,whatsapp:v_.optional(),telegram:wg.optional(),discord:Mg.optional(),irc:Zg.optional(),googlechat:Ig.optional(),slack:Hg.optional(),signal:Gg.optional(),imessage:e_.optional(),bluebubbles:o_.optional(),msteams:l_.optional()}).passthrough().optional(),x_=y.object({mode:y.union([y.literal(`daily`),y.literal(`idle`)]).optional(),atHour:y.number().int().min(0).max(23).optional(),idleMinutes:y.number().int().positive().optional()}).strict(),S_=tm(),C_=y.object({scope:y.union([y.literal(`per-sender`),y.literal(`global`)]).optional(),dmScope:y.union([y.literal(`main`),y.literal(`per-peer`),y.literal(`per-channel-peer`),y.literal(`per-account-channel-peer`)]).optional(),identityLinks:y.record(y.string(),y.array(y.string())).optional(),resetTriggers:y.array(y.string()).optional(),idleMinutes:y.number().int().positive().optional(),reset:x_.optional(),resetByType:y.object({direct:x_.optional(),dm:x_.optional(),group:x_.optional(),thread:x_.optional()}).strict().optional(),resetByChannel:y.record(y.string(),x_).optional(),store:y.string().optional(),typingIntervalSeconds:y.number().int().positive().optional(),typingMode:Dm.optional(),parentForkMaxTokens:y.number().int().nonnegative().optional(),mainKey:y.string().optional(),sendPolicy:S_.optional(),agentToAgent:y.object({maxPingPongTurns:y.number().int().min(0).max(5).optional()}).strict().optional(),threadBindings:y.object({enabled:y.boolean().optional(),idleHours:y.number().nonnegative().optional(),maxAgeHours:y.number().nonnegative().optional()}).strict().optional(),maintenance:y.object({mode:y.enum([`enforce`,`warn`]).optional(),pruneAfter:y.union([y.string(),y.number()]).optional(),pruneDays:y.number().int().positive().optional(),maxEntries:y.number().int().positive().optional(),rotateBytes:y.union([y.string(),y.number()]).optional(),resetArchiveRetention:y.union([y.string(),y.number(),y.literal(!1)]).optional(),maxDiskBytes:y.union([y.string(),y.number()]).optional(),highWaterBytes:y.union([y.string(),y.number()]).optional()}).strict().superRefine((e,t)=>{if(e.pruneAfter!==void 0)try{Kp(String(e.pruneAfter).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`pruneAfter`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.rotateBytes!==void 0)try{Wp(String(e.rotateBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`rotateBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.resetArchiveRetention!==void 0&&e.resetArchiveRetention!==!1)try{Kp(String(e.resetArchiveRetention).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`resetArchiveRetention`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.maxDiskBytes!==void 0)try{Wp(String(e.maxDiskBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`maxDiskBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.highWaterBytes!==void 0)try{Wp(String(e.highWaterBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:y.ZodIssueCode.custom,path:[`highWaterBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}}).optional()}).strict().optional(),w_=y.object({messagePrefix:y.string().optional(),responsePrefix:y.string().optional(),groupChat:Cm,queue:Hm,inbound:Um,ackReaction:y.string().optional(),ackReactionScope:y.enum([`group-mentions`,`group-all`,`direct`,`all`]).optional(),removeAckAfterReply:y.boolean().optional(),statusReactions:y.object({enabled:y.boolean().optional(),emojis:y.object({thinking:y.string().optional(),tool:y.string().optional(),coding:y.string().optional(),web:y.string().optional(),done:y.string().optional(),error:y.string().optional(),stallSoft:y.string().optional(),stallHard:y.string().optional()}).strict().optional(),timing:y.object({debounceMs:y.number().int().min(0).optional(),stallSoftMs:y.number().int().min(0).optional(),stallHardMs:y.number().int().min(0).optional(),doneHoldMs:y.number().int().min(0).optional(),errorHoldMs:y.number().int().min(0).optional()}).strict().optional()}).strict().optional(),suppressToolErrors:y.boolean().optional(),tts:Nm}).strict().optional(),T_=y.object({native:ah.optional().default(`auto`),nativeSkills:ah.optional().default(`auto`),text:y.boolean().optional(),bash:y.boolean().optional(),bashForegroundMs:y.number().int().min(0).max(3e4).optional(),config:y.boolean().optional(),debug:y.boolean().optional(),restart:y.boolean().optional().default(!0),useAccessGroups:y.boolean().optional(),ownerAllowFrom:y.array(y.union([y.string(),y.number()])).optional(),ownerDisplay:y.enum([`raw`,`hash`]).optional().default(`raw`),ownerDisplaySecret:y.string().optional().register(V),allowFrom:_h.optional()}).strict().optional().default(()=>({native:`auto`,nativeSkills:`auto`,restart:!0,ownerDisplay:`raw`})),E_=y.object({mode:y.literal(`efficient`).optional()}).strict().optional(),D_=y.object({browserProxy:y.object({enabled:y.boolean().optional(),allowProfiles:y.array(y.string()).optional()}).strict().optional()}).strict().optional(),O_=y.object({path:y.string(),name:y.string().optional(),pattern:y.string().optional()}).strict(),k_=y.object({enabled:y.boolean().optional(),exportDir:y.string().optional(),retentionDays:y.number().int().nonnegative().optional()}).strict(),A_=y.object({voiceId:y.string().optional(),voiceAliases:y.record(y.string(),y.string()).optional(),modelId:y.string().optional(),outputFormat:y.string().optional(),apiKey:H.optional().register(V)}).catchall(y.unknown()),j_=y.object({transcription:Wm}).strict().optional(),M_=y.object({interval:y.string().optional(),debounceMs:y.number().int().nonnegative().optional(),onBoot:y.boolean().optional(),waitForBootSync:y.boolean().optional(),embedInterval:y.string().optional(),commandTimeoutMs:y.number().int().nonnegative().optional(),updateTimeoutMs:y.number().int().nonnegative().optional(),embedTimeoutMs:y.number().int().nonnegative().optional()}).strict(),N_=y.object({maxResults:y.number().int().positive().optional(),maxSnippetChars:y.number().int().positive().optional(),maxInjectedChars:y.number().int().positive().optional(),timeoutMs:y.number().int().nonnegative().optional()}).strict(),P_=y.object({command:y.string().optional(),searchMode:y.union([y.literal(`query`),y.literal(`search`),y.literal(`vsearch`)]).optional(),includeDefaultMemory:y.boolean().optional(),paths:y.array(O_).optional(),sessions:k_.optional(),update:M_.optional(),limits:N_.optional(),scope:S_.optional()}).strict(),F_=y.object({backend:y.union([y.literal(`builtin`),y.literal(`qmd`)]).optional(),citations:y.union([y.literal(`auto`),y.literal(`on`),y.literal(`off`)]).optional(),qmd:P_.optional()}).strict().optional(),I_=y.object({enabled:y.boolean().optional(),dispatch:y.object({enabled:y.boolean().optional()}).strict().optional(),backend:y.string().optional(),defaultAgent:y.string().optional(),allowedAgents:y.array(y.string()).optional(),maxConcurrentSessions:y.number().int().positive().optional(),stream:y.object({coalesceIdleMs:y.number().int().nonnegative().optional(),maxChunkChars:y.number().int().positive().optional()}).strict().optional(),runtime:y.object({ttlMinutes:y.number().int().positive().optional(),installCommand:y.string().optional()}).strict().optional()}).strict().optional(),L_=y.string().refine(e=>{try{return Kp(e),!0}catch{return!1}},{message:`invalid duration (use ms, s, m, h, d)`}),R_=y.union([y.number().int().positive(),y.string()]).refine(e=>{try{return Wp(String(e).trim(),{defaultUnit:`b`})>0}catch{return!1}},{message:`invalid byte size`}),z_=y.object({maxBytes:R_.optional(),keepLines:y.number().int().positive().optional()}).strict(),B_=y.union([y.string(),y.number().transform((e,t)=>{let n=new Date(e);return!Number.isFinite(e)||Number.isNaN(n.getTime())?(t.addIssue({code:y.ZodIssueCode.custom,message:`invalid timestamp`}),y.NEVER):n.toISOString()})]),V_=y.union([y.literal(`per-job`),y.literal(`per-hour`),y.literal(`per-1k-rows`),y.literal(`per-api-call`),y.literal(`per-day`),y.literal(`per-month`),y.literal(`custom`)]),H_=y.object({currency:y.string().optional(),model:y.string().optional(),amount:y.number().positive().optional(),unit:V_.optional(),unitLabel:y.string().optional()}).strict().optional(),U_=y.union([y.literal(`human`),y.literal(`agent`),y.literal(`agent-approval`),y.literal(`api`),y.literal(`dataset`),y.literal(`hybrid`)]),W_=y.object({kind:y.union([y.literal(`result`),y.literal(`artifact`),y.literal(`invoice`),y.literal(`receipt`),y.literal(`tx`),y.literal(`signature`),y.literal(`manual`)]).optional(),required:y.boolean().optional(),description:y.string().optional()}).strict(),G_=y.object({allowed:y.boolean().optional(),humanApprovalRequired:y.boolean().optional(),allowedSkills:y.array(y.string()).optional(),allowedPlugins:y.array(y.string()).optional(),maxRuntimeSeconds:y.number().int().positive().optional(),maxSpendAmount:y.number().positive().optional(),maxSpendCurrency:y.string().optional()}).strict().optional(),K_=y.object({kind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),address:y.string().optional()}).strict().optional(),q_=y.object({chain:y.literal(`solana`).optional(),address:y.string().optional()}).strict().optional(),J_=y.object({currency:y.string().optional(),chain:y.literal(`solana`).optional(),assetDecimals:y.number().int().min(0).max(18).optional(),asset:K_,payee:q_}).strict().optional(),Y_=y.object({id:y.string().optional(),source:y.union([y.literal(`builtin`),y.literal(`manual`),y.literal(`skill`)]).optional(),enabled:y.boolean().optional(),title:y.string(),summary:y.string().optional(),serviceKind:y.string(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),capabilities:y.array(y.string()).optional(),pricing:H_,fulfillmentMode:U_.optional(),performer:U_.optional(),receiptRules:y.array(W_).optional(),automation:G_,paymentRails:y.array(y.string()).optional(),acceptedAssets:y.array(y.string()).optional(),paymentDefaults:J_,availability:y.string().optional(),visibility:y.string().optional(),requiredTrustOrBondTier:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),X_=y.union([y.literal(`draft`),y.literal(`open`),y.literal(`matched`),y.literal(`closed`)]),Z_=y.union([y.literal(`draft`),y.literal(`accepted`),y.literal(`funded`),y.literal(`running`),y.literal(`delivered`),y.literal(`disputed`),y.literal(`closed`),y.literal(`cancelled`)]),Q_=y.union([y.literal(`not_submitted`),y.literal(`pending`),y.literal(`accepted`),y.literal(`failed`)]),$_=y.union([y.literal(`draft`),y.literal(`requires_payment`),y.literal(`submitted`),y.literal(`verified`),y.literal(`failed`),y.literal(`cancelled`)]),ev=y.union([y.literal(`direct`),y.literal(`escrow`)]),tv=y.union([y.literal(`not_required`),y.literal(`requires_payment`),y.literal(`submitted`),y.literal(`verified`),y.literal(`settled`),y.literal(`held`),y.literal(`released`),y.literal(`failed`),y.literal(`disputed`),y.literal(`cancelled`)]),nv=y.union([y.literal(`not_applicable`),y.literal(`required`),y.literal(`funded`),y.literal(`held`),y.literal(`released`),y.literal(`refunded`),y.literal(`cancelled`),y.literal(`blocked`)]),rv=y.union([y.literal(`pending`),y.literal(`ready`),y.literal(`running`),y.literal(`delivered`),y.literal(`failed`),y.literal(`blocked`)]),iv=y.union([y.literal(`pending`),y.literal(`issued`),y.literal(`verified`),y.literal(`rejected`)]),av=y.union([y.literal(`one-time`),y.literal(`per-job`),y.literal(`per-hour`),y.literal(`per-1k-rows`),y.literal(`per-api-call`),y.literal(`per-day`),y.literal(`per-week`),y.literal(`per-month`),y.literal(`custom`)]),ov=y.union([y.literal(`not_applicable`),y.literal(`draft`),y.literal(`active`),y.literal(`past_due`),y.literal(`paused`),y.literal(`expired`),y.literal(`cancelled`),y.literal(`blocked`)]),sv=y.union([y.literal(`none`),y.literal(`manual`),y.literal(`auto-renew`),y.literal(`auto-renew-with-approval`)]),cv=y.union([y.literal(`not_required`),y.literal(`scheduled`),y.literal(`stopped`),y.literal(`blocked`)]),lv=y.object({status:ov.optional(),billingPeriod:av.optional(),maxBuyers:y.number().int().positive().optional(),remainingSlots:y.number().int().min(0).optional(),startsAt:y.string().optional(),endsAt:y.string().optional(),renewalPolicy:sv.optional(),paymentExpiresAt:y.string().optional(),deliveryStop:y.object({status:cv.optional(),reason:y.string().optional(),scheduledAt:y.string().optional(),stoppedAt:y.string().optional(),updatedAt:y.string().optional()}).strict().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),uv=y.union([y.literal(`app-inbox`),y.literal(`channel`),y.literal(`webhook`),y.literal(`websocket`),y.literal(`federation`),y.literal(`api`),y.literal(`artifact`)]),dv=y.union([y.literal(`draft`),y.literal(`ready`),y.literal(`revoked`),y.literal(`expired`),y.literal(`blocked`)]),fv=y.object({targetId:y.string().optional(),source:y.union([y.literal(`order`),y.literal(`subscription`),y.literal(`manual`)]).optional(),owner:y.union([y.literal(`buyer`),y.literal(`seller`)]).optional(),kind:uv.optional(),status:dv.optional(),label:y.string().optional(),descriptor:y.string().optional(),maskedTarget:y.string().optional(),scope:y.object({orderId:y.string().optional(),subscriptionId:y.string().optional(),serviceKind:y.string().optional(),expiresAt:y.string().optional(),maxDeliveries:y.number().int().positive().optional()}).strict().optional(),channel:y.object({provider:y.string().optional(),to:y.string().optional(),accountId:y.string().optional(),threadId:y.union([y.string(),y.number()]).optional()}).strict().optional(),webhook:y.object({url:y.string().optional(),method:y.literal(`POST`).optional(),secretRef:y.string().optional()}).strict().optional(),websocket:y.object({url:y.string().optional(),tokenRef:y.string().optional()}).strict().optional(),federation:y.object({handle:y.string().optional(),nodeEndpoint:y.string().optional()}).strict().optional(),api:y.object({url:y.string().optional(),tokenRef:y.string().optional()}).strict().optional(),artifact:y.object({artifactRef:y.string().optional()}).strict().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional(),revokedAt:y.string().optional()}).strict(),pv=y.object({intentId:y.string().optional(),status:$_.optional(),amount:y.number().optional(),currency:y.string().optional(),unit:V_.optional(),method:y.string().optional(),chain:y.literal(`solana`).optional(),assetKind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),assetAddress:y.string().optional(),assetDecimals:y.number().int().min(0).max(18).optional(),expiresInMinutes:y.number().int().positive().optional(),acceptedAssets:y.array(y.string()).optional(),payerWalletId:y.string().optional(),payeeHandle:y.string().optional(),payeeAddress:y.string().optional(),txRef:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),mv=y.object({status:nv.optional(),holdPolicy:y.union([y.literal(`none`),y.literal(`release_on_delivery`),y.literal(`manual_release`)]).optional(),releaseRequired:y.boolean().optional(),vaultWalletId:y.string().optional(),vaultWalletName:y.string().optional(),vaultAddress:y.string().optional(),fundingRequestId:y.string().optional(),fundingTxRef:y.string().optional(),fundedAt:y.string().optional(),releaseRequestId:y.string().optional(),releaseTxRef:y.string().optional(),releasedAt:y.string().optional(),refundRequestId:y.string().optional(),refundTxRef:y.string().optional(),refundedAt:y.string().optional(),cancelledAt:y.string().optional(),notes:y.string().optional(),updatedAt:y.string().optional()}).strict(),hv=y.object({mode:ev.optional(),status:tv.optional(),amount:y.number().optional(),currency:y.string().optional(),chain:y.literal(`solana`).optional(),assetKind:y.union([y.literal(`native`),y.literal(`spl-token`)]).optional(),assetAddress:y.string().optional(),assetDecimals:y.number().int().min(0).max(18).optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),evidenceRef:y.string().optional(),payerWalletId:y.string().optional(),payeeAddress:y.string().optional(),escrow:mv.optional(),notes:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional(),verifiedAt:y.string().optional(),settledAt:y.string().optional()}).strict(),gv=y.object({status:rv.optional(),fulfillmentMode:U_.optional(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),targetId:y.string().optional(),targetKind:uv.optional(),targetStatus:dv.optional(),targetLabel:y.string().optional(),targetMasked:y.string().optional(),target:fv.optional(),resultRef:y.string().optional(),artifactRef:y.string().optional(),notes:y.string().optional(),deliveredAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),_v=y.object({status:iv.optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),resultRef:y.string().optional(),disputeCaseId:y.string().optional(),notes:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),vv=y.object({id:y.string().optional(),source:y.union([y.literal(`manual`),y.literal(`chat`)]).optional(),enabled:y.boolean().optional(),status:X_.optional(),title:y.string(),summary:y.string().optional(),serviceKind:y.string(),inputShape:y.string().optional(),deliveryShape:y.string().optional(),capabilities:y.array(y.string()).optional(),pricing:H_,fulfillmentMode:U_.optional(),receiptRules:y.array(W_).optional(),paymentRails:y.array(y.string()).optional(),acceptedAssets:y.array(y.string()).optional(),requiredTrustOrBondTier:y.string().optional(),visibility:y.string().optional(),expiresAt:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),yv=y.object({id:y.string().optional(),source:y.union([y.literal(`local`),y.literal(`federation`)]).optional(),status:Z_.optional(),offerId:y.string().optional(),requestId:y.string().optional(),buyerHandle:y.string().optional(),sellerHandle:y.string().optional(),sellerEndpoint:y.string().optional(),sellerOrderId:y.string().optional(),sellerSyncStatus:Q_.optional(),sellerSyncError:y.string().optional(),sellerSyncedAt:y.string().optional(),sellerAcceptedAt:y.string().optional(),serviceKind:y.string().optional(),title:y.string().optional(),pricing:H_,fulfillmentMode:U_.optional(),receiptRules:y.array(W_).optional(),paymentIntent:pv.optional(),settlement:hv.optional(),delivery:gv.optional(),subscription:lv.optional(),receipt:_v.optional(),invoiceId:y.string().optional(),receiptId:y.string().optional(),txRef:y.string().optional(),resultRef:y.string().optional(),disputeCaseId:y.string().optional(),createdAt:y.string().optional(),updatedAt:y.string().optional()}).strict(),bv=y.object({allowPrograms:y.array(y.string()).optional(),tokenCaps:y.record(y.string(),y.object({maxPerTx:y.string().optional(),maxDaily:y.string().optional()}).strict()).optional(),maxPerTx:y.string().optional(),maxDaily:y.string().optional()}).strict(),xv=y.object({provider:y.object({id:y.union([y.literal(`embedded-keystore`),y.literal(`local-socket-signer`),y.literal(`alchemy`),y.literal(`turnkey`),y.literal(`privy`)]).optional()}).strict().optional(),execution:y.object({mode:y.union([y.literal(`manual`),y.literal(`autonomous`)]).optional()}).strict().optional(),approvalAuth:y.object({mode:y.union([y.literal(`none`),y.literal(`webauthn`)]).optional(),challengeTtlSeconds:y.number().int().positive().optional(),grantTtlSeconds:y.number().int().positive().optional()}).strict().optional(),keystore:y.object({enabled:y.boolean().optional(),path:y.string().optional(),chainSupport:y.array(y.literal(`solana`)).optional(),autoLockSeconds:y.number().int().nonnegative().optional(),requirePasskeyForUnlock:y.boolean().optional()}).strict().optional(),runtime:y.object({enabled:y.boolean().optional(),mode:y.union([y.literal(`managed`),y.literal(`external`)]).optional(),runtime:y.union([y.literal(`external-docker`),y.literal(`external-custom`)]).optional(),external:y.object({kind:y.union([y.literal(`docker`),y.literal(`custom`)]).optional()}).strict().optional(),auth:y.object({mode:y.union([y.literal(`jwt-bootstrap`),y.literal(`static-token-compat`)]).optional(),bootstrapUrl:y.string().optional()}).strict().optional(),source:y.object({ref:y.string().optional()}).strict().optional(),chains:y.array(y.literal(`solana`)).optional(),service:y.object({host:y.string().optional(),port:y.number().int().min(1).max(65535).optional()}).strict().optional(),install:y.object({enabled:y.boolean().optional(),version:y.string().optional()}).strict().optional(),policy:y.object({capsEnabled:y.boolean().optional(),directSigning:y.boolean().optional(),skillsEnabled:y.boolean().optional(),solana:bv.optional()}).strict().optional(),toolAccess:y.object({mode:y.union([y.literal(`owner-only`),y.literal(`allowlist`),y.literal(`all`)]).optional(),allowAgents:y.array(y.string()).optional(),allowSkills:y.array(y.string()).optional(),denySkills:y.array(y.string()).optional(),allowSources:y.array(y.string()).optional()}).strict().optional()}).strict().optional()}).strict().optional(),Sv=y.object({$schema:y.string().optional(),meta:y.object({lastTouchedVersion:y.string().optional(),lastTouchedAt:B_.optional()}).strict().optional(),env:y.object({shellEnv:y.object({enabled:y.boolean().optional(),timeoutMs:y.number().int().nonnegative().optional()}).strict().optional(),vars:y.record(y.string(),y.string()).optional()}).catchall(y.string()).optional(),wizard:y.object({lastRunAt:y.string().optional(),lastRunVersion:y.string().optional(),lastRunCommit:y.string().optional(),lastRunCommand:y.string().optional(),lastRunMode:y.union([y.literal(`local`),y.literal(`remote`)]).optional()}).strict().optional(),diagnostics:y.object({enabled:y.boolean().optional(),flags:y.array(y.string()).optional(),otel:y.object({enabled:y.boolean().optional(),endpoint:y.string().optional(),protocol:y.union([y.literal(`http/protobuf`),y.literal(`grpc`)]).optional(),headers:y.record(y.string(),y.string()).optional(),serviceName:y.string().optional(),traces:y.boolean().optional(),metrics:y.boolean().optional(),logs:y.boolean().optional(),sampleRate:y.number().min(0).max(1).optional(),flushIntervalMs:y.number().int().nonnegative().optional()}).strict().optional(),prometheus:y.object({enabled:y.boolean().optional(),path:y.string().optional(),requireAuth:y.boolean().optional(),includeRuntime:y.boolean().optional()}).strict().optional(),cacheTrace:y.object({enabled:y.boolean().optional(),filePath:y.string().optional(),includeMessages:y.boolean().optional(),includePrompt:y.boolean().optional(),includeSystem:y.boolean().optional()}).strict().optional()}).strict().optional(),logging:y.object({level:y.union([y.literal(`silent`),y.literal(`fatal`),y.literal(`error`),y.literal(`warn`),y.literal(`info`),y.literal(`debug`),y.literal(`trace`)]).optional(),file:y.string().optional(),maxFileBytes:y.number().int().positive().optional(),consoleLevel:y.union([y.literal(`silent`),y.literal(`fatal`),y.literal(`error`),y.literal(`warn`),y.literal(`info`),y.literal(`debug`),y.literal(`trace`)]).optional(),consoleStyle:y.union([y.literal(`pretty`),y.literal(`compact`),y.literal(`json`)]).optional(),redactSensitive:y.union([y.literal(`off`),y.literal(`tools`)]).optional(),redactPatterns:y.array(y.string()).optional()}).strict().optional(),update:y.object({channel:y.union([y.literal(`stable`),y.literal(`beta`),y.literal(`dev`)]).optional(),checkOnStart:y.boolean().optional()}).strict().optional(),browser:y.object({enabled:y.boolean().optional(),evaluateEnabled:y.boolean().optional(),cdpUrl:y.string().optional(),remoteCdpTimeoutMs:y.number().int().nonnegative().optional(),remoteCdpHandshakeTimeoutMs:y.number().int().nonnegative().optional(),color:y.string().optional(),executablePath:y.string().optional(),headless:y.boolean().optional(),noSandbox:y.boolean().optional(),attachOnly:y.boolean().optional(),defaultProfile:y.string().optional(),snapshotDefaults:E_,profiles:y.record(y.string().regex(/^[a-z0-9-]+$/,`Profile names must be alphanumeric with hyphens only`),y.object({cdpPort:y.number().int().min(1).max(65535).optional(),cdpUrl:y.string().optional(),driver:y.union([y.literal(`clawd`),y.literal(`extension`)]).optional(),color:Gm}).strict().refine(e=>e.cdpPort||e.cdpUrl,{message:`Profile must set cdpPort or cdpUrl`})).optional()}).strict().optional(),ui:y.object({seamColor:Gm.optional(),assistant:y.object({name:y.string().max(50).optional(),avatar:y.string().max(200).optional()}).strict().optional()}).strict().optional(),auth:y.object({profiles:y.record(y.string(),y.object({provider:y.string(),mode:y.union([y.literal(`api_key`),y.literal(`oauth`),y.literal(`token`)]),email:y.string().optional()}).strict()).optional(),order:y.record(y.string(),y.array(y.string())).optional(),cooldowns:y.object({billingBackoffHours:y.number().positive().optional(),billingBackoffHoursByProvider:y.record(y.string(),y.number().positive()).optional(),overloadedBackoffMs:y.number().positive().optional(),overloadedProfileRotations:y.number().nonnegative().optional(),rateLimitedProfileRotations:y.number().nonnegative().optional(),billingMaxHours:y.number().positive().optional(),failureWindowHours:y.number().positive().optional()}).strict().optional()}).strict().optional(),acp:I_,models:Sm,nodeHost:D_,agents:Nh,tools:jh,bindings:Ph,broadcast:Ih,audio:j_,media:y.object({preserveFilenames:y.boolean().optional()}).strict().optional(),messages:w_,commands:T_,approvals:zh,session:C_,cron:y.object({enabled:y.boolean().optional(),store:y.string().optional(),maxConcurrentRuns:y.number().int().positive().optional(),webhook:y.string().url().refine(e=>/^https?:\/\//iu.test(e),`Must be an http(s) URL`).optional(),webhookToken:y.string().optional().register(V),sessionRetention:y.union([L_,y.literal(!1)]).optional(),runLog:z_.optional()}).strict().optional(),hooks:y.object({enabled:y.boolean().optional(),path:y.string().optional(),token:y.string().optional().register(V),defaultSessionKey:y.string().optional(),allowRequestSessionKey:y.boolean().optional(),allowedSessionKeyPrefixes:y.array(y.string()).optional(),allowedAgentIds:y.array(y.string()).optional(),maxBodyBytes:y.number().int().positive().optional(),presets:y.array(y.string()).optional(),transformsDir:y.string().optional(),mappings:y.array(Hh).optional(),gmail:qh,internal:Kh}).strict().optional(),web:y.object({enabled:y.boolean().optional(),heartbeatSeconds:y.number().int().positive().optional(),reconnect:y.object({initialMs:y.number().positive().optional(),maxMs:y.number().positive().optional(),factor:y.number().positive().optional(),jitter:y.number().min(0).max(1).optional(),maxAttempts:y.number().int().min(0).optional()}).strict().optional()}).strict().optional(),channels:b_,discovery:y.object({wideArea:y.object({enabled:y.boolean().optional(),domain:y.string().optional()}).strict().optional(),mdns:y.object({mode:y.enum([`off`,`minimal`,`full`]).optional()}).strict().optional()}).strict().optional(),federation:y.object({offers:y.object({manual:y.array(Y_).optional(),skill:y.array(Y_.extend({source:y.union([y.literal(`skill`)]).optional(),skillId:y.string().optional()}).strict()).optional()}).strict().optional(),marketplace:y.object({requests:y.object({manual:y.array(vv).optional()}).strict().optional(),deliveryTargets:y.object({local:y.array(fv).optional()}).strict().optional(),orders:y.object({local:y.array(yv).optional()}).strict().optional()}).strict().optional(),bond:y.object({walletId:y.string().optional()}).strict().optional()}).strict().optional(),canvasHost:y.object({enabled:y.boolean().optional(),root:y.string().optional(),port:y.number().int().positive().optional(),liveReload:y.boolean().optional()}).strict().optional(),talk:y.object({provider:y.string().optional(),providers:y.record(y.string(),A_).optional(),voiceId:y.string().optional(),voiceAliases:y.record(y.string(),y.string()).optional(),modelId:y.string().optional(),outputFormat:y.string().optional(),apiKey:H.optional().register(V),interruptOnSpeech:y.boolean().optional()}).strict().optional(),gateway:y.object({port:y.number().int().positive().optional(),channelHealthCheckMinutes:y.number().int().min(0).optional(),mode:y.union([y.literal(`local`),y.literal(`remote`)]).optional(),bind:y.union([y.literal(`auto`),y.literal(`lan`),y.literal(`loopback`),y.literal(`custom`),y.literal(`tailnet`)]).optional(),controlUi:y.object({enabled:y.boolean().optional(),basePath:y.string().optional(),root:y.string().optional(),allowedOrigins:y.array(y.string()).optional(),allowInsecureAuth:y.boolean().optional(),dangerouslyDisableDeviceAuth:y.boolean().optional(),dangerouslyAllowHostHeaderOriginFallback:y.boolean().optional()}).strict().optional(),auth:y.object({mode:y.union([y.literal(`token`),y.literal(`password`),y.literal(`trusted-proxy`)]).optional(),token:y.string().optional().register(V),password:y.string().optional().register(V),allowTailscale:y.boolean().optional(),rateLimit:y.object({maxAttempts:y.number().optional(),windowMs:y.number().optional(),lockoutMs:y.number().optional(),exemptLoopback:y.boolean().optional()}).strict().optional(),trustedProxy:y.object({userHeader:y.string().min(1,`userHeader is required for trusted-proxy mode`),requiredHeaders:y.array(y.string()).optional(),allowUsers:y.array(y.string()).optional()}).strict().optional()}).strict().optional(),trustedProxies:y.array(y.string()).optional(),tools:y.object({deny:y.array(y.string()).optional(),allow:y.array(y.string()).optional()}).strict().optional(),tailscale:y.object({mode:y.union([y.literal(`off`),y.literal(`serve`),y.literal(`funnel`)]).optional(),resetOnExit:y.boolean().optional()}).strict().optional(),remote:y.object({url:y.string().optional(),transport:y.union([y.literal(`ssh`),y.literal(`direct`)]).optional(),token:y.string().optional().register(V),password:y.string().optional().register(V),tlsFingerprint:y.string().optional(),sshTarget:y.string().optional(),sshIdentity:y.string().optional()}).strict().optional(),reload:y.object({mode:y.union([y.literal(`off`),y.literal(`restart`),y.literal(`hot`),y.literal(`hybrid`)]).optional(),debounceMs:y.number().int().min(0).optional()}).strict().optional(),tls:y.object({enabled:y.boolean().optional(),autoGenerate:y.boolean().optional(),certPath:y.string().optional(),keyPath:y.string().optional(),caPath:y.string().optional()}).optional(),http:y.object({endpoints:y.object({chatCompletions:y.object({enabled:y.boolean().optional()}).strict().optional(),responses:y.object({enabled:y.boolean().optional(),maxBodyBytes:y.number().int().positive().optional(),maxUrlParts:y.number().int().nonnegative().optional(),files:y.object({allowUrl:y.boolean().optional(),urlAllowlist:y.array(y.string()).optional(),allowedMimes:y.array(y.string()).optional(),maxBytes:y.number().int().positive().optional(),maxChars:y.number().int().positive().optional(),maxRedirects:y.number().int().nonnegative().optional(),timeoutMs:y.number().int().positive().optional(),pdf:y.object({maxPages:y.number().int().positive().optional(),maxPixels:y.number().int().positive().optional(),minTextChars:y.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),images:y.object({allowUrl:y.boolean().optional(),urlAllowlist:y.array(y.string()).optional(),allowedMimes:y.array(y.string()).optional(),maxBytes:y.number().int().positive().optional(),maxRedirects:y.number().int().nonnegative().optional(),timeoutMs:y.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),securityHeaders:y.object({strictTransportSecurity:y.union([y.string(),y.literal(!1)]).optional()}).strict().optional()}).strict().optional(),nodes:y.object({browser:y.object({mode:y.union([y.literal(`auto`),y.literal(`manual`),y.literal(`off`)]).optional(),node:y.string().optional()}).strict().optional(),allowCommands:y.array(y.string()).optional(),denyCommands:y.array(y.string()).optional()}).strict().optional(),customBindHost:y.string().optional(),allowRealIpFallback:y.boolean().optional()}).strict().optional(),memory:F_,wallet:xv,secrets:gm,mcp:y.object({servers:y.record(y.string(),y.record(y.string(),y.unknown())).optional()}).strict().optional(),skills:y.object({allowBundled:y.array(y.string()).optional(),load:y.object({extraDirs:y.array(y.string()).optional(),watch:y.boolean().optional(),watchDebounceMs:y.number().int().min(0).optional()}).strict().optional(),install:y.object({preferBrew:y.boolean().optional(),nodeManager:y.union([y.literal(`npm`),y.literal(`pnpm`),y.literal(`yarn`),y.literal(`bun`)]).optional()}).strict().optional(),marketplace:y.object({allowRegistries:y.array(y.string()).optional()}).strict().optional(),entries:y.record(y.string(),y.object({enabled:y.boolean().optional(),apiKey:H.optional().register(V),env:y.record(y.string(),y.string()).optional(),config:y.record(y.string(),y.unknown()).optional()}).strict()).optional()}).strict().optional(),plugins:y.object({enabled:y.boolean().optional(),allow:y.array(y.string()).optional(),deny:y.array(y.string()).optional(),load:y.object({paths:y.array(y.string()).optional()}).strict().optional(),slots:y.object({memory:y.string().optional()}).strict().optional(),entries:y.record(y.string(),y.object({enabled:y.boolean().optional(),config:y.record(y.string(),y.unknown()).optional(),runtime:y.object({helpers:y.object({sessions:y.object({read:y.boolean().optional()}).strict().optional()}).strict().optional(),adminRpcActions:y.object({allow:y.array(y.object({method:y.union([y.literal(`chat.inject`),y.literal(`push.test`),y.literal(`web.login.start`),y.literal(`web.login.wait`)]).optional(),sources:y.array(y.string()).optional(),requireOperatorApproval:y.boolean().optional()}).strict()).optional()}).strict().optional()}).strict().optional()}).strict()).optional(),installs:y.record(y.string(),y.object(Jh).strict()).optional()}).strict().optional()}).strict().superRefine((e,t)=>{let n=e.agents?.list??[];if(n.length===0)return;let r=new Set(n.map(e=>e.id)),i=e.broadcast;if(i){for(let[e,n]of Object.entries(i))if(e!==`strategy`&&Array.isArray(n))for(let i=0;i<n.length;i+=1){let a=n[i];r.has(a)||t.addIssue({code:y.ZodIssueCode.custom,path:[`broadcast`,e,i],message:`Unknown agent id "${a}" (not in agents.list).`})}}}),Cv=new Set;function wv(e,t){let n=i.resolve(t);return Hp(n,i.resolve(n,e))}function Tv(e){let t=e.agents?.list;if(!Array.isArray(t)||t.length===0)return[];let n=[];for(let[r,i]of t.entries()){if(!i||typeof i!=`object`)continue;let t=i.identity?.avatar;if(typeof t!=`string`)continue;let a=t.trim();if(a&&!(Rp(a)||zp(a))){if(a.startsWith(`~`)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}if(Bp(a)&&!Vp(a)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}wv(a,el(e,i.id??Zc(e)))||n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must stay within the agent workspace.`})}}return n}function Ev(e){let t=Yf(e);if(t.length>0)return{ok:!1,issues:t.map(e=>({path:e.path,message:e.message}))};let n=Sv.safeParse(e);if(!n.success)return{ok:!1,issues:n.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))};let r=ra(n.data);if(r.length>0)return{ok:!1,issues:[{path:`agents.list`,message:ia(r)}]};let i=Tv(n.data);return i.length>0?{ok:!1,issues:i}:{ok:!0,config:n.data}}function Dv(e){let t=Ev(e);return t.ok?{ok:!0,config:Vd(Hd(Rd(t.config)))}:t}function Ov(e){return Av(e,{applyDefaults:!0})}function kv(e){return Av(e,{applyDefaults:!1})}function Av(e,t){let n=t.applyDefaults?Dv(e):Ev(e);if(!n.ok)return{ok:!1,issues:n.issues,warnings:[]};let r=n.config,i=[],a=[],o=w(e)&&Object.prototype.hasOwnProperty.call(e,`plugins`),s=null,c=()=>{if(s)return s;let e=du({config:r,workspaceDir:el(r,Zc(r))??void 0}),t=new Set(e.plugins.map(e=>e.id)),n=vl(r.plugins);for(let t of e.diagnostics){let e=t.pluginId?`plugins.entries.${t.pluginId}`:`plugins`;!t.pluginId&&t.message.includes(`plugin path not found`)&&(e=`plugins.load.paths`);let n=`${t.pluginId?`plugin ${t.pluginId}`:`plugin`}: ${t.message}`;t.level===`error`?i.push({path:e,message:n}):a.push({path:e,message:n})}return s={registry:e,knownIds:t,normalizedPlugins:n},s},l=new Set([`defaults`,`modelByChannel`,...Et]);if(r.channels&&w(r.channels))for(let e of Object.keys(r.channels)){let t=e.trim();if(t){if(!l.has(t)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels)l.add(e)}l.has(t)||i.push({path:`channels.${t}`,message:`unknown channel id: ${t}`})}}let u=new Set;for(let e of Et)u.add(e.toLowerCase());let d=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();if(!n){i.push({path:t,message:`heartbeat target must not be empty`});return}let r=n.toLowerCase();if(!(r===`last`||r===`none`)&&!At(n)){if(!u.has(r)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels){let t=e.trim();t&&u.add(t.toLowerCase())}}u.has(r)||i.push({path:t,message:`unknown heartbeat target: ${e}`})}};if(d(r.agents?.defaults?.heartbeat?.target,`agents.defaults.heartbeat.target`),Array.isArray(r.agents?.list))for(let[e,t]of r.agents.list.entries())d(t?.heartbeat?.target,`agents.list.${e}.heartbeat.target`);if(!o)return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a};let{registry:f,knownIds:p,normalizedPlugins:m}=c(),h=(e,t,n)=>{if(!Cv.has(t)){if(n?.warnOnly){a.push({path:e,message:`plugin not found: ${t} (stale config entry ignored; remove it from plugins config)`});return}i.push({path:e,message:`plugin not found: ${t}`})}},g=r.plugins,_=g?.entries;if(_&&w(_))for(let e of Object.keys(_))p.has(e)||h(`plugins.entries.${e}`,e,{warnOnly:!0});let v=g?.allow??[];for(let e of v)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.allow`,e);let ee=g?.deny??[];for(let e of ee)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.deny`,e);let te=m.slots.memory;typeof te==`string`&&te.trim()&&!p.has(te)&&h(`plugins.slots.memory`,te);let y=null,ne=new Set;for(let e of f.plugins){let t=e.id;if(ne.has(t))continue;ne.add(t);let n=m.entries[t],o=!!n?.config,s=xl({id:t,origin:e.origin,config:m,rootConfig:r}),c=s.enabled,l=s.reason;if(c){let n=Sl({id:t,kind:e.kind,slot:te,selectedId:y});n.enabled||(c=!1,l=n.reason),n.selected&&e.kind===`memory`&&(y=t)}if(c||o)if(e.configSchema){let r=Np({schema:e.configSchema,cacheKey:e.schemaCacheKey??e.manifestPath??t,value:n?.config??{}});if(!r.ok)for(let e of r.errors)i.push({path:`plugins.entries.${t}.config`,message:`invalid config: ${e}`})}else i.push({path:`plugins.entries.${t}`,message:`plugin schema missing for ${t}`});!c&&o&&a.push({path:`plugins.entries.${t}`,message:`plugin disabled (${l??`disabled`}) but config is present`})}return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a}}const jv=/^v?(\d+)\.(\d+)\.(\d+)(?:-(\d+))?/,Mv=/^v?(20\d{2})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?$/;function Nv(e){if(!e)return null;let t=e.trim().match(jv);if(!t)return null;let[,n,r,i,a]=t,o=e.trim().match(Mv);return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),revision:a?Number.parseInt(a,10):0,flavor:o?`calendar`:`semver`}}function Pv(e,t){let n=Nv(e),r=Nv(t);return!n||!r?null:n.flavor===r.flavor?n.major===r.major?n.minor===r.minor?n.patch===r.patch?n.revision===r.revision?0:n.revision<r.revision?-1:1:n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1:0}const Fv=[`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`ANTHROPIC_OAUTH_TOKEN`,`GEMINI_API_KEY`,`ZAI_API_KEY`,`OPENROUTER_API_KEY`,`AI_GATEWAY_API_KEY`,`MINIMAX_API_KEY`,`SYNTHETIC_API_KEY`,`ELEVENLABS_API_KEY`,`TELEGRAM_BOT_TOKEN`,`DISCORD_BOT_TOKEN`,`SLACK_BOT_TOKEN`,`SLACK_APP_TOKEN`,`FASED_GATEWAY_TOKEN`,`FASED_GATEWAY_PASSWORD`],Iv=[];function Lv(e){let t=e,n=[];for(let e of Iv){let r=!!(t.plugins?.entries&&e in t.plugins.entries),i=!!(t.plugins?.installs&&e in t.plugins.installs),a=Array.isArray(t.plugins?.allow)&&t.plugins.allow.includes(e),o=t.plugins?.slots?.memory===e;!r&&!i&&!a&&!o||(t=Gi(t,e).config,n.push(e))}return{config:t,removedPluginIds:n}}const Rv=/^(?<policyPath>[a-z0-9_.-]+)\s*=\s*"open"\s+requires\s+(?<allowPath>[a-z0-9_.-]+)(?:\s+\(or\s+[a-z0-9_.-]+\))?\s+to include "\*"$/i,zv=new Set;function Bv(e){return _.createHash(`sha256`).update(e??``).digest(`hex`)}function Vv(e,t){let n=t.match(Rv),r=n?.groups?.policyPath?.trim(),i=n?.groups?.allowPath?.trim();return!r||!i?`Config validation failed: ${e}: ${t}`:[`Config validation failed: ${e}`,``,`Configuration mismatch: ${r} is "open", but ${i} does not include "*".`,``,`Fix with:`,` fased config set ${i} '["*"]'`,``,`Or switch policy:`,` fased config set ${r} "pairing"`].join(`
|
|
3
3
|
`)}function Hv(e){return/^[0-9]+$/.test(e)}function Uv(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Wv(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const Gv=Symbol(`write-pruned-object`);function Kv(e,t,n){if(n>=t.length)return{changed:!1,value:e};let r=t[n],i=n===t.length-1;if(Array.isArray(e)){if(!Hv(r))return{changed:!1,value:e};let a=Number.parseInt(r,10);if(!Number.isFinite(a)||a<0||a>=e.length)return{changed:!1,value:e};if(i){let t=e.slice();return t.splice(a,1),{changed:!0,value:t}}let o=Kv(e[a],t,n+1);if(!o.changed)return{changed:!1,value:e};let s=e.slice();return o.value===Gv?s.splice(a,1):s[a]=o.value,{changed:!0,value:s}}if(qi(r)||!Uv(e)||!Wv(e,r))return{changed:!1,value:e};if(i){let t={...e};return delete t[r],{changed:!0,value:Object.keys(t).length===0?Gv:t}}let a=Kv(e[r],t,n+1);if(!a.changed)return{changed:!1,value:e};let o={...e};return a.value===Gv?delete o[r]:o[r]=a.value,{changed:!0,value:Object.keys(o).length===0?Gv:o}}function qv(e,t){if(t.length===0)return{changed:!1,next:e};let n=Kv(e,t,0);return n.changed?n.value===Gv?{changed:!0,next:{}}:Uv(n.value)?{changed:!0,next:Yv(n.value)}:{changed:!1,next:e}:{changed:!1,next:e}}function Jv(e){if(typeof e.hash==`string`){let t=e.hash.trim();if(t)return t}return typeof e.raw==`string`?Bv(e.raw):null}function Yv(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:e}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Xv(e){if(!$(e))return!1;let t=e.meta;return $(t)}function Zv(e){if(!$(e))return null;let t=e.gateway;if(!$(t)||typeof t.mode!=`string`)return null;let n=t.mode.trim();return n.length>0?n:null}function Qv(e){return structuredClone(e)}function $v(e,t){if(!$(e)||!$(t))return Qv(t);let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=i in e;if(!(i in t)){n[i]=null;continue}let a=t[i];if(!r){n[i]=Qv(a);continue}let o=e[i];if($(o)&&$(a)){let e=$v(o,a);if($(e)&&Object.keys(e).length===0)continue;n[i]=e;continue}u(o,a)||(n[i]=Qv(a))}return n}function ey(e,t,n){if(typeof e==`string`){ef(e)&&n.set(t,e);return}if(Array.isArray(e)){e.forEach((e,r)=>{ey(e,`${t}[${r}]`,n)});return}if($(e))for(let[r,i]of Object.entries(e))ey(i,t?`${t}.${r}`:r,n)}function ty(e,t,n,r){if(Array.isArray(e)&&Array.isArray(t)){let i=Math.max(e.length,t.length);for(let a=0;a<i;a+=1){let i=n?`${n}[${a}]`:`[${a}]`;if(a>=e.length||a>=t.length){r.add(i);continue}ty(e[a],t[a],i,r)}return}if($(e)&&$(t)){let i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=n?`${n}.${a}`:a,o=a in e;if(!(a in t)||!o){r.add(i);continue}ty(e[a],t[a],i,r)}return}u(e,t)||r.add(n)}function ny(e){if(!e)return``;if(e.endsWith(`]`)){let t=e.lastIndexOf(`[`);return t>0?e.slice(0,t):``}let t=e.lastIndexOf(`.`);return t>=0?e.slice(0,t):``}function ry(e,t){if(t.has(e))return!0;let n=ny(e);for(;n;){if(t.has(n))return!0;n=ny(n)}return t.has(``)}function iy(e,t,n,r){if(typeof e==`string`){if(!ry(t,r)){let e=n.get(t);if(e!==void 0)return e}return e}if(Array.isArray(e)){let i=!1,a=e.map((e,a)=>{let o=iy(e,`${t}[${a}]`,n,r);return o!==e&&(i=!0),o});return i?a:e}if($(e)){let i=!1,a={};for(let[o,s]of Object.entries(e)){let e=iy(s,t?`${t}.${o}`:o,n,r);e!==s&&(i=!0),a[o]=e}return i?a:e}return e}function ay(e,t){return i.join(Ve(e,t),`logs`,`config-audit.jsonl`)}function oy(e){let t=[];return e.existsBefore?(typeof e.previousBytes==`number`&&typeof e.nextBytes==`number`&&e.previousBytes>=512&&e.nextBytes<Math.floor(e.previousBytes*.5)&&t.push(`size-drop:${e.previousBytes}->${e.nextBytes}`),e.hasMetaBefore||t.push(`missing-meta-before-write`),e.gatewayModeBefore&&!e.gatewayModeAfter&&t.push(`gateway-mode-removed`),t):t}async function sy(e,t){try{let n=ay(e.env,e.homedir);await e.fs.promises.mkdir(i.dirname(n),{recursive:!0,mode:448}),await e.fs.promises.appendFile(n,`${JSON.stringify(t)}\n`,{encoding:`utf-8`,mode:384})}catch{}}function cy(e,t){if(!e||typeof e!=`object`)return;let n=e.gateway;!n||typeof n!=`object`||`token`in n&&t.warn(`Config uses "gateway.token". This key is ignored; use "gateway.auth.token" instead.`)}function ly(e){let t=new Date().toISOString();return{...e,meta:{...e.meta,lastTouchedVersion:Xn,lastTouchedAt:t}}}function uy(e,t){let n=e.meta?.lastTouchedVersion;if(!n)return;let r=Pv(Xn,n);r!==null&&r<0&&t.warn(`Config was last written by a newer FasedAgent (${n}); current version is ${Xn}.`)}function dy(e){return e.configPath?e.configPath:Ge(e.env,Ve(e.env,e.homedir))}function fy(e={}){return{fs:e.fs??n,json5:e.json5??m,env:e.env??process.env,homedir:e.homedir??(()=>x(e.env??process.env,p.homedir)),configPath:e.configPath??``,logger:e.logger??console}}function py(e){e===process.env&&Fr({quiet:!0})}function my(e,t=m){try{return{ok:!0,parsed:t.parse(e)}}catch(e){return{ok:!1,error:String(e)}}}function hy(e,t,n){return hf(e,t,{readFile:e=>n.fs.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:r})=>pf({includePath:e,resolvedPath:t,rootRealDir:r,ioFs:n.fs}),parseJson:e=>n.json5.parse(e)})}function gy(e,t){return e&&typeof e==`object`&&`env`in e&&sf(e,t),{resolvedConfigRaw:nf(e,t),envSnapshotForRestore:{...t}}}function _y(e={}){let t=fy(e),n=dy(t),r=(t.configPath?[n]:Ke(t.env,t.homedir)).find(e=>t.fs.existsSync(e))??n;function a(){try{if(py(t.env),!t.fs.existsSync(r))return $r(t.env)&&!ei(t.env)&&Qr({enabled:!0,env:t.env,expectedKeys:Fv,logger:t.logger,timeoutMs:ti(t.env)}),{};let e=t.fs.readFileSync(r,`utf-8`),{resolvedConfigRaw:n}=gy(hy(t.json5.parse(e),r,t),t.env);if(cy(n,t.logger),typeof n!=`object`||!n)return{};let i=ra(n,{env:t.env,homedir:t.homedir});if(i.length>0)throw new $i(i);let a=Lv(n),o=Ep(a.config),s=Ov(o.config);if(!s.ok){let e=s.issues.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
|
|
4
4
|
`);zv.has(r)||(zv.add(r),t.logger.error(`Invalid config at ${r}:\\n${e}`));let n=Error(`Invalid config`);throw n.code=`INVALID_CONFIG`,n.details=e,n}if(s.warnings.length>0){let e=s.warnings.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
|
|
5
5
|
`);t.logger.warn(`Config warnings:\n${e}`)}uy(s.config,t.logger);let c=Bd(Vd(Gd(Wd(Hd(Rd(Ud(Ld(s.config))))))));Sp(c),gp(c);let u=ra(c,{env:t.env,homedir:t.homedir});if(u.length>0)throw new $i(u);sf(c,t.env),($r(t.env)||c.env?.shellEnv?.enabled===!0)&&!ei(t.env)&&Qr({enabled:!0,env:t.env,expectedKeys:Fv,logger:t.logger,timeoutMs:c.env?.shellEnv?.timeoutMs??ti(t.env)});let d=vy.get(r),f=nr(c,()=>d??_.randomBytes(32).toString(`hex`)),p=Ep(f.config),m=p.config,h=[...new Set([...o.repairedPluginIds,...p.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t));if(a.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;xy.has(e)||(xy.add(e),l(m,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{xy.delete(e)}))}if(h.length>0){let e=`${r}:installed-plugin-allowlist`;Sy.has(e)||(Sy.add(e),t.logger.warn(`Pinned installed plugins in plugins.allow: ${h.join(`, `)}`),l(m,{expectedConfigPath:r}).catch(e=>{t.logger.warn(`Failed to persist repaired plugins.allow at ${r}: ${String(e)}`)}).finally(()=>{Sy.delete(e)}))}return f.generatedSecret?(vy.set(r,f.generatedSecret),yy.has(r)||(yy.add(r),l(m,{expectedConfigPath:r}).then(()=>{vy.delete(r),by.delete(r)}).catch(e=>{by.has(r)||(by.add(r),t.logger.warn(`Failed to persist auto-generated commands.ownerDisplaySecret at ${r}: ${String(e)}`))}).finally(()=>{yy.delete(r)}))):(vy.delete(r),by.delete(r)),kp(m)}catch(e){if(e instanceof $i)throw t.logger.error(e.message),e;return e?.code===`INVALID_CONFIG`||t.logger.error(`Failed to read config at ${r}`,e),{}}}async function o(){if(py(t.env),!t.fs.existsSync(r)){let e=Bv(null);return{snapshot:{path:r,exists:!1,raw:null,parsed:{},resolved:{},valid:!0,config:zd(Bd(Vd(Gd(Wd(Hd(Rd(Ld({})))))))),hash:e,issues:[],warnings:[],legacyIssues:[]}}}try{let e=t.fs.readFileSync(r,`utf-8`),n=Bv(e),i=my(e,t.json5);if(!i.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:{},resolved:{},valid:!1,config:{},hash:n,issues:[{path:``,message:`JSON5 parse failed: ${i.error}`}],warnings:[],legacyIssues:[]}};let a;try{a=hy(i.parsed,r,t)}catch(t){let a=t instanceof L?t.message:`Include resolution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Yv(i.parsed),valid:!1,config:Yv(i.parsed),hash:n,issues:[{path:``,message:a}],warnings:[],legacyIssues:[]}}}let o;try{o=gy(a,t.env)}catch(t){let o=t instanceof Zd?t.message:`Env var substitution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Yv(a),valid:!1,config:Yv(a),hash:n,issues:[{path:``,message:o}],warnings:[],legacyIssues:[]}}}let s=Lv(o.resolvedConfigRaw),c=s.config,u=Yf(c),d=Ep(c),f=Ov(d.config);if(!f.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Yv(c),valid:!1,config:Yv(c),hash:n,issues:f.issues,warnings:f.warnings,legacyIssues:u}};uy(f.config,t.logger);let p=Sp(zd(Bd(Vd(Hd(Rd(Ud(Ld(f.config))))))));gp(p);let m=Ep(p),h=m.config,g=[...new Set([...d.repairedPluginIds,...m.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t)),_=Yv(d.config);if(s.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;xy.has(e)||(xy.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{xy.delete(e)}))}if(g.length>0){let e=`${r}:installed-plugin-allowlist`;Sy.has(e)||(Sy.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{Sy.delete(e)}))}return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:_,valid:!0,config:h,hash:n,issues:[],warnings:f.warnings,legacyIssues:u},envSnapshotForRestore:o.envSnapshotForRestore}}catch(e){let n=e,i;if(n?.code===`EACCES`){let n=process.getuid?.(),a=typeof n==`number`?String(n):`$(id -u)`;i=[`read failed: ${String(e)}`,``,`Config file is not readable by the current process. If running in a container`,`or 1-click deployment, fix ownership with:`,` chown ${a} "${r}"`,`Then restart the gateway.`].join(`
|