@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
|
@@ -147,6 +147,18 @@
|
|
|
147
147
|
"surface": "Services > Browser",
|
|
148
148
|
"description": "Chrome, Chromium, Brave, Edge, remote CDP, or the extension relay."
|
|
149
149
|
},
|
|
150
|
+
{
|
|
151
|
+
"id": "openai-runtime",
|
|
152
|
+
"label": "OpenAI Sign-In Runtime",
|
|
153
|
+
"category": "provider",
|
|
154
|
+
"delivery": "npm-addon",
|
|
155
|
+
"packageName": "@fased/openai-runtime",
|
|
156
|
+
"pluginId": "openai-runtime",
|
|
157
|
+
"restartRequired": false,
|
|
158
|
+
"docsPath": "/providers/openai",
|
|
159
|
+
"surface": "Agent > Models",
|
|
160
|
+
"description": "Official Codex app-server runtime for ChatGPT sign-in model discovery and execution."
|
|
161
|
+
},
|
|
150
162
|
{
|
|
151
163
|
"id": "ollama",
|
|
152
164
|
"label": "Ollama",
|
package/dist/acp/client.js
CHANGED
|
@@ -2,7 +2,7 @@ import { isKnownCoreToolId } from "../agents/tool-catalog.js";
|
|
|
2
2
|
import { DANGEROUS_ACP_TOOLS } from "../security/dangerous-tools.js";
|
|
3
3
|
import { ensureFasedAgentCliOnPath } from "../infra/path-env.js";
|
|
4
4
|
import { fileURLToPath } from "node:url";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import { homedir } from "node:os";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { spawn } from "node:child_process";
|
|
@@ -269,7 +269,7 @@ function resolveSelfEntryPath() {
|
|
|
269
269
|
try {
|
|
270
270
|
const here = fileURLToPath(import.meta.url);
|
|
271
271
|
const candidate = path.resolve(path.dirname(here), "..", "entry.js");
|
|
272
|
-
if (
|
|
272
|
+
if (syncFs.existsSync(candidate)) {
|
|
273
273
|
return candidate;
|
|
274
274
|
}
|
|
275
275
|
} catch {}
|
package/dist/acp/secret-file.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveUserPath } from "../utils.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
|
|
4
4
|
//#region src/acp/secret-file.ts
|
|
5
5
|
function readSecretFromFile(filePath, label) {
|
|
@@ -9,7 +9,7 @@ function readSecretFromFile(filePath, label) {
|
|
|
9
9
|
}
|
|
10
10
|
let raw = "";
|
|
11
11
|
try {
|
|
12
|
-
raw =
|
|
12
|
+
raw = syncFs.readFileSync(resolvedPath, "utf8");
|
|
13
13
|
} catch (err) {
|
|
14
14
|
throw new Error(`Failed to read ${label} file at ${resolvedPath}: ${String(err)}`, { cause: err });
|
|
15
15
|
}
|
|
@@ -6,7 +6,7 @@ import { parseAgentSessionKey } from "../sessions/session-key-utils.js";
|
|
|
6
6
|
import { DEFAULT_AGENT_ID, normalizeAgentId, resolveAgentIdFromSessionKey } from "../routing/session-key.js";
|
|
7
7
|
import { resolveEffectiveAgentSkillFilter } from "./skills/agent-filter.js";
|
|
8
8
|
import { resolveDefaultAgentWorkspaceDir } from "./workspace.js";
|
|
9
|
-
import
|
|
9
|
+
import syncFs from "node:fs";
|
|
10
10
|
import path from "node:path";
|
|
11
11
|
|
|
12
12
|
//#region src/agents/agent-scope.ts
|
|
@@ -245,7 +245,7 @@ function normalizePathForComparison(input) {
|
|
|
245
245
|
const resolved = path.resolve(stripNullBytes(resolveUserPath(input)));
|
|
246
246
|
let normalized = resolved;
|
|
247
247
|
try {
|
|
248
|
-
normalized =
|
|
248
|
+
normalized = syncFs.realpathSync.native(resolved);
|
|
249
249
|
} catch {}
|
|
250
250
|
if (process.platform === "win32") {
|
|
251
251
|
return normalized.toLowerCase();
|
|
@@ -3,9 +3,9 @@ import { PATH_ALIAS_POLICIES } from "../infra/path-alias-guards.js";
|
|
|
3
3
|
import { writeFileWithinRoot } from "../infra/fs-safe.js";
|
|
4
4
|
import { applyUpdateHunk } from "./apply-patch-update.js";
|
|
5
5
|
import { assertSandboxPath, resolveSandboxInputPath } from "./sandbox-paths.js";
|
|
6
|
-
import
|
|
6
|
+
import syncFs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
|
-
import fs
|
|
8
|
+
import fs from "node:fs/promises";
|
|
9
9
|
import { Type } from "@sinclair/typebox";
|
|
10
10
|
|
|
11
11
|
//#region src/agents/apply-patch.ts
|
|
@@ -159,7 +159,7 @@ function resolvePatchFileOps(options) {
|
|
|
159
159
|
return {
|
|
160
160
|
readFile: async (filePath) => {
|
|
161
161
|
if (!workspaceOnly) {
|
|
162
|
-
return await fs
|
|
162
|
+
return await fs.readFile(filePath, "utf8");
|
|
163
163
|
}
|
|
164
164
|
const opened = await openBoundaryFile({
|
|
165
165
|
absolutePath: filePath,
|
|
@@ -168,14 +168,14 @@ function resolvePatchFileOps(options) {
|
|
|
168
168
|
});
|
|
169
169
|
assertBoundaryRead(opened, filePath);
|
|
170
170
|
try {
|
|
171
|
-
return
|
|
171
|
+
return syncFs.readFileSync(opened.fd, "utf8");
|
|
172
172
|
} finally {
|
|
173
|
-
|
|
173
|
+
syncFs.closeSync(opened.fd);
|
|
174
174
|
}
|
|
175
175
|
},
|
|
176
176
|
writeFile: async (filePath, content) => {
|
|
177
177
|
if (!workspaceOnly) {
|
|
178
|
-
await fs
|
|
178
|
+
await fs.writeFile(filePath, content, "utf8");
|
|
179
179
|
return;
|
|
180
180
|
}
|
|
181
181
|
const relative = toRelativeWorkspacePath(options.cwd, filePath);
|
|
@@ -186,8 +186,8 @@ function resolvePatchFileOps(options) {
|
|
|
186
186
|
encoding: "utf8"
|
|
187
187
|
});
|
|
188
188
|
},
|
|
189
|
-
remove: (filePath) => fs
|
|
190
|
-
mkdirp: (dir) => fs
|
|
189
|
+
remove: (filePath) => fs.rm(filePath),
|
|
190
|
+
mkdirp: (dir) => fs.mkdir(dir, { recursive: true }).then(() => {})
|
|
191
191
|
};
|
|
192
192
|
}
|
|
193
193
|
async function ensureDir(filePath, ops) {
|
|
@@ -2,7 +2,7 @@ import { resolveUserPath } from "../../utils.js";
|
|
|
2
2
|
import { saveJsonFile } from "../../infra/json-file.js";
|
|
3
3
|
import { AUTH_PROFILE_FILENAME, AUTH_STORE_VERSION, LEGACY_AUTH_FILENAME } from "./constants.js";
|
|
4
4
|
import { resolveFasedAgentAgentDir } from "../agent-paths.js";
|
|
5
|
-
import
|
|
5
|
+
import syncFs from "node:fs";
|
|
6
6
|
import path from "node:path";
|
|
7
7
|
|
|
8
8
|
//#region src/agents/auth-profiles/paths.ts
|
|
@@ -19,7 +19,7 @@ function resolveAuthStorePathForDisplay(agentDir) {
|
|
|
19
19
|
return pathname.startsWith("~") ? pathname : resolveUserPath(pathname);
|
|
20
20
|
}
|
|
21
21
|
function ensureAuthStoreFile(pathname) {
|
|
22
|
-
if (
|
|
22
|
+
if (syncFs.existsSync(pathname)) {
|
|
23
23
|
return;
|
|
24
24
|
}
|
|
25
25
|
const payload = {
|
|
@@ -5,7 +5,7 @@ import { withFileLock } from "../../plugin-sdk/file-lock.js";
|
|
|
5
5
|
import "../../infra/file-lock.js";
|
|
6
6
|
import { syncExternalCliCredentials } from "./external-cli-sync.js";
|
|
7
7
|
import { ensureAuthStoreFile, resolveAuthStorePath, resolveLegacyAuthStorePath } from "./paths.js";
|
|
8
|
-
import
|
|
8
|
+
import syncFs from "node:fs";
|
|
9
9
|
|
|
10
10
|
//#region src/agents/auth-profiles/store.ts
|
|
11
11
|
const AUTH_PROFILE_TYPES = new Set([
|
|
@@ -361,7 +361,7 @@ function loadAuthProfileStoreForAgent(agentDir, options) {
|
|
|
361
361
|
if (shouldWrite && legacy !== null) {
|
|
362
362
|
const legacyPath = resolveLegacyAuthStorePath(agentDir);
|
|
363
363
|
try {
|
|
364
|
-
|
|
364
|
+
syncFs.unlinkSync(legacyPath);
|
|
365
365
|
} catch (err) {
|
|
366
366
|
if (err?.code !== "ENOENT") {
|
|
367
367
|
log.warn("failed to delete legacy auth.json after migration", {
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { applyRuntimeProviderModelDiscovery, filterCatalogToAuthoritativeAvailability } from "../providers/runtime-model-catalog.js";
|
|
2
|
+
import { buildCredentialScopedAllowedModelSet } from "./model-catalog-access.js";
|
|
3
|
+
|
|
4
|
+
//#region src/agents/authenticated-model-catalog.ts
|
|
5
|
+
async function resolveAuthenticatedModelCatalog(params) {
|
|
6
|
+
const initialScope = buildCredentialScopedAllowedModelSet({
|
|
7
|
+
cfg: params.cfg,
|
|
8
|
+
catalog: params.catalog,
|
|
9
|
+
defaultProvider: params.defaultProvider,
|
|
10
|
+
store: params.store
|
|
11
|
+
});
|
|
12
|
+
const discoveredCatalog = filterCatalogToAuthoritativeAvailability(await applyRuntimeProviderModelDiscovery({
|
|
13
|
+
cfg: params.cfg,
|
|
14
|
+
store: params.store,
|
|
15
|
+
routes: initialScope.usableProviders,
|
|
16
|
+
catalog: initialScope.usableCatalog,
|
|
17
|
+
agentDir: params.agentDir
|
|
18
|
+
}), params.store);
|
|
19
|
+
return buildCredentialScopedAllowedModelSet({
|
|
20
|
+
cfg: params.cfg,
|
|
21
|
+
catalog: discoveredCatalog,
|
|
22
|
+
defaultProvider: params.defaultProvider,
|
|
23
|
+
storedProviders: initialScope.usableProviders
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
export { resolveAuthenticatedModelCatalog };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { logInfo } from "../logger.js";
|
|
2
|
-
import { evaluateShellAllowlist } from "../infra/exec-approvals-allowlist.js";
|
|
3
2
|
import { callGatewayTool } from "./tools/gateway.js";
|
|
3
|
+
import { evaluateShellAllowlist } from "../infra/exec-approvals-allowlist.js";
|
|
4
4
|
import { requiresExecApproval, resolveExecApprovalsFromFile } from "../infra/exec-approvals.js";
|
|
5
5
|
import { detectCommandObfuscation } from "../infra/exec-obfuscation-detect.js";
|
|
6
6
|
import { DEFAULT_APPROVAL_TIMEOUT_MS, createApprovalSlug, emitExecSystemEvent } from "./bash-tools.exec-runtime.js";
|
|
@@ -2,8 +2,8 @@ import { parseAgentSessionKey } from "../sessions/session-key-utils.js";
|
|
|
2
2
|
import { resolveAgentIdFromSessionKey } from "../routing/session-key.js";
|
|
3
3
|
import { logInfo } from "../logger.js";
|
|
4
4
|
import { getShellPathFromLoginShell, resolveShellEnvFallbackTimeoutMs } from "../infra/shell-env.js";
|
|
5
|
-
import { resolveExecSafeBinRuntimePolicy } from "../infra/exec-safe-bin-runtime-policy.js";
|
|
6
5
|
import { SafeOpenError, readFileWithinRoot } from "../infra/fs-safe.js";
|
|
6
|
+
import { resolveExecSafeBinRuntimePolicy } from "../infra/exec-safe-bin-runtime-policy.js";
|
|
7
7
|
import { maxAsk, minSecurity } from "../infra/exec-approvals.js";
|
|
8
8
|
import { markBackgrounded } from "./bash-process-registry.js";
|
|
9
9
|
import { applyPathPrepend, normalizePathPrepend } from "../infra/path-prepend.js";
|
|
@@ -3,7 +3,7 @@ import { assertSandboxPath } from "./sandbox-paths.js";
|
|
|
3
3
|
import { existsSync, statSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
5
5
|
import path from "node:path";
|
|
6
|
-
import fs
|
|
6
|
+
import fs from "node:fs/promises";
|
|
7
7
|
|
|
8
8
|
//#region src/agents/bash-tools.shared.ts
|
|
9
9
|
const CHUNK_LIMIT = 8 * 1024;
|
|
@@ -67,7 +67,7 @@ async function resolveSandboxWorkdir(params) {
|
|
|
67
67
|
cwd: process.cwd(),
|
|
68
68
|
root: params.sandbox.workspaceDir
|
|
69
69
|
});
|
|
70
|
-
const stats = await fs
|
|
70
|
+
const stats = await fs.stat(resolved.resolved);
|
|
71
71
|
if (!stats.isDirectory()) {
|
|
72
72
|
throw new Error("workdir is not a directory");
|
|
73
73
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { resolveUserPath } from "../utils.js";
|
|
2
2
|
import { createSubsystemLogger } from "../logging/subsystem.js";
|
|
3
3
|
import { loadJsonFile, saveJsonFile } from "../infra/json-file.js";
|
|
4
|
-
import
|
|
4
|
+
import syncFs from "node:fs";
|
|
5
5
|
import path from "node:path";
|
|
6
6
|
import { execFileSync, execSync } from "node:child_process";
|
|
7
7
|
import { createHash } from "node:crypto";
|
|
@@ -61,7 +61,7 @@ function resolveCodexHomePath() {
|
|
|
61
61
|
const configured = process.env.CODEX_HOME;
|
|
62
62
|
const home = configured ? resolveUserPath(configured) : resolveUserPath("~/.codex");
|
|
63
63
|
try {
|
|
64
|
-
return
|
|
64
|
+
return syncFs.realpathSync.native(home);
|
|
65
65
|
} catch {
|
|
66
66
|
return home;
|
|
67
67
|
}
|
|
@@ -264,7 +264,7 @@ function writeClaudeCliKeychainCredentials(newCredentials, options) {
|
|
|
264
264
|
}
|
|
265
265
|
function writeClaudeCliFileCredentials(newCredentials, options) {
|
|
266
266
|
const credPath = resolveClaudeCliCredentialsPath(options?.homeDir);
|
|
267
|
-
if (!
|
|
267
|
+
if (!syncFs.existsSync(credPath)) {
|
|
268
268
|
return false;
|
|
269
269
|
}
|
|
270
270
|
try {
|
|
@@ -331,7 +331,7 @@ function readCodexCliCredentials(options) {
|
|
|
331
331
|
}
|
|
332
332
|
let expires;
|
|
333
333
|
try {
|
|
334
|
-
const stat =
|
|
334
|
+
const stat = syncFs.statSync(authPath);
|
|
335
335
|
expires = stat.mtimeMs + 60 * 60 * 1e3;
|
|
336
336
|
} catch {
|
|
337
337
|
expires = Date.now() + 60 * 60 * 1e3;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region src/agents/copilot-dynamic-headers.ts
|
|
2
|
+
const COPILOT_EDITOR_VERSION = "vscode/1.96.2";
|
|
3
|
+
const COPILOT_USER_AGENT = "GitHubCopilotChat/0.26.7";
|
|
4
|
+
const COPILOT_GITHUB_API_VERSION = "2025-04-01";
|
|
5
|
+
function inferCopilotInitiator(messages) {
|
|
6
|
+
const last = messages[messages.length - 1];
|
|
7
|
+
return last && last.role !== "user" ? "agent" : "user";
|
|
8
|
+
}
|
|
9
|
+
function hasCopilotVisionInput(messages) {
|
|
10
|
+
return messages.some((message) => {
|
|
11
|
+
if (message.role === "user" && Array.isArray(message.content)) {
|
|
12
|
+
return message.content.some((item) => item.type === "image");
|
|
13
|
+
}
|
|
14
|
+
if (message.role === "toolResult" && Array.isArray(message.content)) {
|
|
15
|
+
return message.content.some((item) => item.type === "image");
|
|
16
|
+
}
|
|
17
|
+
return false;
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
function buildCopilotIdeHeaders(params = {}) {
|
|
21
|
+
return {
|
|
22
|
+
"Editor-Version": COPILOT_EDITOR_VERSION,
|
|
23
|
+
"User-Agent": COPILOT_USER_AGENT,
|
|
24
|
+
...params.includeApiVersion ? { "X-Github-Api-Version": COPILOT_GITHUB_API_VERSION } : {}
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
function buildCopilotDynamicHeaders(params) {
|
|
28
|
+
return {
|
|
29
|
+
...buildCopilotIdeHeaders(),
|
|
30
|
+
"X-Initiator": inferCopilotInitiator(params.messages),
|
|
31
|
+
"Openai-Intent": "conversation-edits",
|
|
32
|
+
...params.hasImages ? { "Copilot-Vision-Request": "true" } : {}
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
//#endregion
|
|
37
|
+
export { buildCopilotIdeHeaders };
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG, buildCloudflareAiGatewayModelDefinition } from "../providers/cloudflare-ai-gateway-shared.js";
|
|
2
2
|
import { HUGGINGFACE_BASE_URL, HUGGINGFACE_MODEL_CATALOG, buildHuggingfaceModelDefinition } from "../providers/huggingface-models.js";
|
|
3
|
-
import { LITELLM_BASE_URL, LITELLM_MODEL_CATALOG, buildLitellmModelDefinition } from "../providers/litellm-models.js";
|
|
4
3
|
import { SYNTHETIC_BASE_URL, SYNTHETIC_MODEL_CATALOG, buildSyntheticModelDefinition } from "../providers/synthetic-models.js";
|
|
5
4
|
import { TOGETHER_BASE_URL, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition } from "../providers/together-models.js";
|
|
6
5
|
import { VENICE_BASE_URL, VENICE_MODEL_CATALOG, buildVeniceModelDefinition } from "../providers/venice-models.js";
|
|
@@ -154,7 +153,8 @@ const OPENAI_CODEX_MODELS = [
|
|
|
154
153
|
input: ["text", "image"],
|
|
155
154
|
contextWindow: 105e4,
|
|
156
155
|
maxTokens: 128e3,
|
|
157
|
-
api: "openai-codex-responses"
|
|
156
|
+
api: "openai-codex-responses",
|
|
157
|
+
compat: { responsesLite: true }
|
|
158
158
|
}),
|
|
159
159
|
model({
|
|
160
160
|
id: "gpt-5.6-terra",
|
|
@@ -163,7 +163,8 @@ const OPENAI_CODEX_MODELS = [
|
|
|
163
163
|
input: ["text", "image"],
|
|
164
164
|
contextWindow: 105e4,
|
|
165
165
|
maxTokens: 128e3,
|
|
166
|
-
api: "openai-codex-responses"
|
|
166
|
+
api: "openai-codex-responses",
|
|
167
|
+
compat: { responsesLite: true }
|
|
167
168
|
}),
|
|
168
169
|
model({
|
|
169
170
|
id: "gpt-5.6-luna",
|
|
@@ -172,7 +173,8 @@ const OPENAI_CODEX_MODELS = [
|
|
|
172
173
|
input: ["text", "image"],
|
|
173
174
|
contextWindow: 105e4,
|
|
174
175
|
maxTokens: 128e3,
|
|
175
|
-
api: "openai-codex-responses"
|
|
176
|
+
api: "openai-codex-responses",
|
|
177
|
+
compat: { responsesLite: true }
|
|
176
178
|
}),
|
|
177
179
|
model({
|
|
178
180
|
id: "gpt-5.5",
|
|
@@ -876,22 +878,16 @@ const CURRENT_MODEL_PROVIDER_CATALOG = {
|
|
|
876
878
|
models: CLOUDFLARE_AI_GATEWAY_MODEL_CATALOG.map((entry) => buildCloudflareAiGatewayModelDefinition({ id: entry.id }))
|
|
877
879
|
},
|
|
878
880
|
litellm: {
|
|
879
|
-
baseUrl:
|
|
881
|
+
baseUrl: "http://localhost:4000/v1",
|
|
880
882
|
api: "openai-completions",
|
|
881
883
|
request: { allowPrivateNetwork: true },
|
|
882
|
-
models:
|
|
884
|
+
models: []
|
|
883
885
|
},
|
|
884
886
|
vllm: {
|
|
885
887
|
baseUrl: "http://127.0.0.1:8000/v1",
|
|
886
888
|
api: "openai-completions",
|
|
887
889
|
request: { allowPrivateNetwork: true },
|
|
888
|
-
models: [
|
|
889
|
-
id: "local",
|
|
890
|
-
name: "Local model",
|
|
891
|
-
input: ["text", "image"],
|
|
892
|
-
contextWindow: 128e3,
|
|
893
|
-
maxTokens: 8192
|
|
894
|
-
})]
|
|
890
|
+
models: []
|
|
895
891
|
},
|
|
896
892
|
"github-copilot": {
|
|
897
893
|
baseUrl: "https://api.individual.githubcopilot.com",
|
package/dist/agents/docs-path.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { resolveFasedAgentPackageRoot } from "../infra/fased-root.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region src/agents/docs-path.ts
|
|
@@ -7,7 +7,7 @@ async function resolveFasedAgentDocsPath(params) {
|
|
|
7
7
|
const workspaceDir = params.workspaceDir?.trim();
|
|
8
8
|
if (workspaceDir) {
|
|
9
9
|
const workspaceDocs = path.join(workspaceDir, "docs");
|
|
10
|
-
if (
|
|
10
|
+
if (syncFs.existsSync(workspaceDocs)) {
|
|
11
11
|
return workspaceDocs;
|
|
12
12
|
}
|
|
13
13
|
}
|
|
@@ -20,7 +20,7 @@ async function resolveFasedAgentDocsPath(params) {
|
|
|
20
20
|
return null;
|
|
21
21
|
}
|
|
22
22
|
const packageDocs = path.join(packageRoot, "docs");
|
|
23
|
-
return
|
|
23
|
+
return syncFs.existsSync(packageDocs) ? packageDocs : null;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
//#endregion
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { STATE_DIR } from "../config/paths.js";
|
|
2
2
|
import { isRecord, resolveUserPath } from "../utils.js";
|
|
3
|
-
import
|
|
3
|
+
import syncFs from "node:fs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
|
|
6
6
|
//#region src/agents/embedded-pi-mcp.ts
|
|
@@ -66,10 +66,10 @@ function readBundleMcpFile(params) {
|
|
|
66
66
|
if (relative.startsWith("..") || path.isAbsolute(relative)) {
|
|
67
67
|
return {};
|
|
68
68
|
}
|
|
69
|
-
if (!
|
|
69
|
+
if (!syncFs.existsSync(filePath)) {
|
|
70
70
|
return {};
|
|
71
71
|
}
|
|
72
|
-
const raw = JSON.parse(
|
|
72
|
+
const raw = JSON.parse(syncFs.readFileSync(filePath, "utf-8"));
|
|
73
73
|
const servers = extractMcpServerMap(raw);
|
|
74
74
|
const baseDir = path.dirname(filePath);
|
|
75
75
|
return Object.fromEntries(Object.entries(servers).map(([serverName, server]) => [serverName, absolutizeBundleMcpServer({
|
|
@@ -99,7 +99,7 @@ function loadEnabledBundleMcpConfig(params) {
|
|
|
99
99
|
cfg: params.cfg,
|
|
100
100
|
pluginId
|
|
101
101
|
})) {
|
|
102
|
-
if (!
|
|
102
|
+
if (!syncFs.existsSync(rootDir)) {
|
|
103
103
|
continue;
|
|
104
104
|
}
|
|
105
105
|
for (const fileName of BUNDLE_MCP_FILENAMES) {
|
|
@@ -3,7 +3,7 @@ import { resolveAgentWorkspaceDir } from "./agent-scope.js";
|
|
|
3
3
|
import { AVATAR_MAX_BYTES, isAvatarDataUrl, isAvatarHttpUrl, isPathWithinRoot, isSupportedLocalAvatarExtension } from "../shared/avatar-policy.js";
|
|
4
4
|
import { resolveAgentIdentity } from "./identity.js";
|
|
5
5
|
import { loadAgentIdentityFromWorkspace } from "./identity-file.js";
|
|
6
|
-
import
|
|
6
|
+
import syncFs from "node:fs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
|
|
9
9
|
//#region src/agents/identity-avatar.ts
|
|
@@ -28,7 +28,7 @@ function resolveAvatarSource(cfg, agentId, opts) {
|
|
|
28
28
|
}
|
|
29
29
|
function resolveExistingPath(value) {
|
|
30
30
|
try {
|
|
31
|
-
return
|
|
31
|
+
return syncFs.realpathSync(value);
|
|
32
32
|
} catch {
|
|
33
33
|
return path.resolve(value);
|
|
34
34
|
}
|
|
@@ -51,7 +51,7 @@ function resolveLocalAvatarPath(params) {
|
|
|
51
51
|
};
|
|
52
52
|
}
|
|
53
53
|
try {
|
|
54
|
-
const stat =
|
|
54
|
+
const stat = syncFs.statSync(realPath);
|
|
55
55
|
if (!stat.isFile()) {
|
|
56
56
|
return {
|
|
57
57
|
ok: false,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { DEFAULT_IDENTITY_FILENAME } from "./workspace.js";
|
|
2
|
-
import
|
|
2
|
+
import syncFs from "node:fs";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
|
|
5
5
|
//#region src/agents/identity-file.ts
|
|
@@ -67,7 +67,7 @@ function identityHasValues(identity) {
|
|
|
67
67
|
}
|
|
68
68
|
function loadIdentityFromFile(identityPath) {
|
|
69
69
|
try {
|
|
70
|
-
const content =
|
|
70
|
+
const content = syncFs.readFileSync(identityPath, "utf-8");
|
|
71
71
|
const parsed = parseIdentityMarkdown(content);
|
|
72
72
|
if (!identityHasValues(parsed)) {
|
|
73
73
|
return null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isOpenAISignInRuntimeModelSupported, isStandardProviderCatalogEntry, listProviderBrandManifests } from "../providers/registry.js";
|
|
2
2
|
import { MODEL_APIS } from "../config/types.models.js";
|
|
3
3
|
import { buildModelCatalogMergeKey, mergeModelCatalogRowsByAuthority, normalizeModelCatalogModelId, normalizeModelCatalogProviderId, normalizeProviderCatalogRows } from "./model-catalog-normalized.js";
|
|
4
4
|
import { CURRENT_MODEL_PROVIDER_CATALOG, listCurrentModelCatalogRows } from "./current-model-catalog.js";
|
|
@@ -28,7 +28,7 @@ function isSupportedRuntimeCatalogModel(provider, id) {
|
|
|
28
28
|
if (provider !== "openai-codex") {
|
|
29
29
|
return true;
|
|
30
30
|
}
|
|
31
|
-
return
|
|
31
|
+
return isOpenAISignInRuntimeModelSupported(id);
|
|
32
32
|
}
|
|
33
33
|
function configuredProviderCatalogRows(cfg) {
|
|
34
34
|
return Object.entries(cfg.models?.providers ?? {}).flatMap(([provider, providerConfig]) => normalizeProviderCatalogRows({
|
|
@@ -4,8 +4,8 @@ import { loadConfig } from "../config/io.js";
|
|
|
4
4
|
import "../config/config.js";
|
|
5
5
|
import { normalizeModelCatalogProviderId } from "./model-catalog-normalized.js";
|
|
6
6
|
import { ensureFasedAgentModelsJson } from "./models-config.js";
|
|
7
|
-
import { augmentModelCatalogWithProviderPlugins } from "../plugins/provider-runtime.runtime.js";
|
|
8
7
|
import { deriveModelMetadata } from "./model-metadata.js";
|
|
8
|
+
import { augmentModelCatalogWithProviderPlugins } from "../plugins/provider-runtime.runtime.js";
|
|
9
9
|
import { buildFasedModelCatalogEntries } from "./model-catalog-source.js";
|
|
10
10
|
import { __setProviderExtensionCatalogEntriesForTest, loadProviderExtensionCatalogIndex } from "./provider-extension-catalog-index.js";
|
|
11
11
|
|
|
@@ -1,9 +1,20 @@
|
|
|
1
1
|
import { resolveModelThinkingCapability } from "../shared/model-thinking.js";
|
|
2
|
-
import { getProviderBrandManifestForRoute, lookupProviderManifestModelCapability } from "../providers/registry.js";
|
|
2
|
+
import { getProviderBrandManifestForRoute, lookupProviderManifestModelCapability, providerModelRecommendationRank } from "../providers/registry.js";
|
|
3
3
|
import { isPrivateNetworkBaseUrl } from "../utils/private-network-url.js";
|
|
4
4
|
import { lookupRefreshedModelCapability } from "../providers/refreshed-model-capabilities.js";
|
|
5
5
|
|
|
6
6
|
//#region src/agents/model-metadata.ts
|
|
7
|
+
function availabilitySourceForCatalogSource(source) {
|
|
8
|
+
switch (source) {
|
|
9
|
+
case "provider-api": return "provider-api";
|
|
10
|
+
case "runtime": return "runtime-catalog";
|
|
11
|
+
case "configured": return "configured";
|
|
12
|
+
case "provider-index": return "provider-plugin";
|
|
13
|
+
case "manifest": return "curated-recommendation";
|
|
14
|
+
case "current-preview":
|
|
15
|
+
default: return "reviewed-catalog";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
7
18
|
const FEATURE_LABELS = {
|
|
8
19
|
text: "text",
|
|
9
20
|
vision: "vision",
|
|
@@ -32,8 +43,10 @@ const JSON_CAPABLE_APIS = new Set([
|
|
|
32
43
|
const LOCAL_DYNAMIC_PROVIDERS = new Set([
|
|
33
44
|
"ollama",
|
|
34
45
|
"lmstudio",
|
|
35
|
-
"vllm"
|
|
46
|
+
"vllm",
|
|
47
|
+
"litellm"
|
|
36
48
|
]);
|
|
49
|
+
const CURATED_CATALOG_REVIEWED_AT = "2026-07-12T00:00:00.000Z";
|
|
37
50
|
function resolveProviderConfig(cfg, provider) {
|
|
38
51
|
return cfg?.models?.providers?.[provider];
|
|
39
52
|
}
|
|
@@ -60,6 +73,12 @@ function deriveModelMetadata(params) {
|
|
|
60
73
|
const provider = params.model.provider.trim();
|
|
61
74
|
const modelId = params.model.id.trim();
|
|
62
75
|
const providerConfig = params.providerConfig ?? resolveProviderConfig(params.cfg, provider);
|
|
76
|
+
const providerManifest = getProviderBrandManifestForRoute(provider);
|
|
77
|
+
const credentialMethod = providerManifest?.methods.find((entry) => [
|
|
78
|
+
entry.route,
|
|
79
|
+
entry.statusRoute,
|
|
80
|
+
entry.configProviderId
|
|
81
|
+
].map((value) => value?.trim().toLowerCase()).includes(provider.toLowerCase()));
|
|
63
82
|
const baseUrl = params.model.baseUrl ?? providerConfig?.baseUrl ?? "";
|
|
64
83
|
const api = params.model.api ?? providerConfig?.api;
|
|
65
84
|
const refreshed = lookupRefreshedModelCapability(provider, modelId);
|
|
@@ -70,8 +89,9 @@ function deriveModelMetadata(params) {
|
|
|
70
89
|
...manifestCapabilities,
|
|
71
90
|
...params.model.capabilities
|
|
72
91
|
} : undefined;
|
|
73
|
-
const
|
|
74
|
-
const
|
|
92
|
+
const capabilitySource = params.capabilitySource ?? (params.model.capabilities ? params.model.catalogSource === "configured" ? "configured" : "runtime" : refreshed ? refreshed.source === "catalog" || refreshed.source === "provider-api" ? "provider-api" : "official-docs" : manifestCapabilities ? "official-docs" : api && !LOCAL_DYNAMIC_PROVIDERS.has(provider) ? "inferred" : "unknown");
|
|
93
|
+
const capabilityConfidence = capabilitySource === "provider-api" || capabilitySource === "official-docs" ? "verified" : capabilitySource === "runtime" || capabilitySource === "configured" ? "declared" : capabilitySource === "inferred" ? "inferred" : "unknown";
|
|
94
|
+
const shouldInferApiCapabilities = !LOCAL_DYNAMIC_PROVIDERS.has(provider);
|
|
75
95
|
const reasoning = params.model.reasoning ?? refreshed?.reasoning;
|
|
76
96
|
const thinking = resolveModelThinkingCapability({
|
|
77
97
|
provider,
|
|
@@ -89,12 +109,29 @@ function deriveModelMetadata(params) {
|
|
|
89
109
|
addFeature(features, "video", capabilities?.video === true);
|
|
90
110
|
addFeature(features, "speech", capabilities?.speech === true);
|
|
91
111
|
const privateNetwork = baseUrl ? isPrivateNetworkBaseUrl(baseUrl) : false;
|
|
112
|
+
const authMode = resolveAuthMode({
|
|
113
|
+
provider,
|
|
114
|
+
providerConfig
|
|
115
|
+
});
|
|
116
|
+
const credentialRoutes = params.credentialRoutes?.length ? params.credentialRoutes : [{
|
|
117
|
+
id: credentialMethod?.id ?? provider,
|
|
118
|
+
label: credentialMethod?.label ?? providerManifest?.label ?? provider,
|
|
119
|
+
authMode
|
|
120
|
+
}];
|
|
121
|
+
const credentialRoute = credentialRoutes[0];
|
|
122
|
+
const configuredCost = providerConfig?.models?.find((entry) => entry.id.trim().toLowerCase() === modelId.toLowerCase())?.cost;
|
|
123
|
+
const cost = params.model.cost ?? configuredCost;
|
|
124
|
+
const recommendationRank = providerModelRecommendationRank(provider, modelId);
|
|
92
125
|
return {
|
|
126
|
+
ref: `${provider}/${modelId}`,
|
|
93
127
|
provider,
|
|
128
|
+
publicProviderId: providerManifest?.id ?? provider,
|
|
129
|
+
publicProviderLabel: providerManifest?.label ?? provider,
|
|
94
130
|
model: modelId,
|
|
95
131
|
label: params.model.name?.trim() || modelId,
|
|
96
132
|
contextWindow: typeof refreshed?.contextWindow === "number" && refreshed.contextWindow > 0 ? refreshed.contextWindow : typeof params.model.contextWindow === "number" && params.model.contextWindow > 0 ? params.model.contextWindow : undefined,
|
|
97
133
|
maxTokens: typeof refreshed?.maxTokens === "number" && refreshed.maxTokens > 0 ? refreshed.maxTokens : typeof params.model.maxTokens === "number" && params.model.maxTokens > 0 ? params.model.maxTokens : undefined,
|
|
134
|
+
...typeof api === "string" && api.trim() ? { apiRoute: api.trim() } : {},
|
|
98
135
|
features,
|
|
99
136
|
...thinking ? {
|
|
100
137
|
thinkingLevels: thinking.thinkingLevels,
|
|
@@ -104,13 +141,25 @@ function deriveModelMetadata(params) {
|
|
|
104
141
|
} : {},
|
|
105
142
|
streaming: capabilities?.streaming !== false,
|
|
106
143
|
capabilityConfidence,
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
144
|
+
capabilitySource,
|
|
145
|
+
...params.capabilityRetrievedAt ?? refreshed?.refreshedAt ?? (capabilitySource === "official-docs" ? CURATED_CATALOG_REVIEWED_AT : undefined) ? { capabilityRetrievedAt: params.capabilityRetrievedAt ?? refreshed?.refreshedAt ?? CURATED_CATALOG_REVIEWED_AT } : {},
|
|
146
|
+
retrievedAt: refreshed?.refreshedAt ?? CURATED_CATALOG_REVIEWED_AT,
|
|
147
|
+
availabilitySource: availabilitySourceForCatalogSource(params.model.catalogSource),
|
|
148
|
+
authRoute: provider,
|
|
149
|
+
authMode: credentialRoute.authMode,
|
|
150
|
+
credentialRoute,
|
|
151
|
+
credentialRoutes,
|
|
152
|
+
...cost ? { price: {
|
|
153
|
+
input: cost.input,
|
|
154
|
+
output: cost.output,
|
|
155
|
+
cacheRead: cost.cacheRead,
|
|
156
|
+
cacheWrite: cost.cacheWrite,
|
|
157
|
+
unit: "usd-per-million-tokens"
|
|
158
|
+
} } : {},
|
|
111
159
|
privateNetwork,
|
|
112
160
|
privateNetworkAllowed: privateNetwork ? providerConfig?.request?.allowPrivateNetwork === true : false,
|
|
113
|
-
...params.recommended ? { recommended: true } : {},
|
|
161
|
+
...params.recommended || recommendationRank !== undefined ? { recommended: true } : {},
|
|
162
|
+
...recommendationRank !== undefined ? { recommendationRank } : {},
|
|
114
163
|
...params.default ? { default: true } : {}
|
|
115
164
|
};
|
|
116
165
|
}
|