@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.
Files changed (465) hide show
  1. package/config/capability-catalog.json +12 -0
  2. package/dist/acp/client.js +2 -2
  3. package/dist/acp/secret-file.js +2 -2
  4. package/dist/agents/agent-scope.js +2 -2
  5. package/dist/agents/apply-patch.js +8 -8
  6. package/dist/agents/auth-profiles/paths.js +2 -2
  7. package/dist/agents/auth-profiles/store.js +2 -2
  8. package/dist/agents/authenticated-model-catalog.js +28 -0
  9. package/dist/agents/bash-tools.exec-host-node.js +1 -1
  10. package/dist/agents/bash-tools.exec.js +1 -1
  11. package/dist/agents/bash-tools.shared.js +2 -2
  12. package/dist/agents/cli-credentials.js +4 -4
  13. package/dist/agents/copilot-dynamic-headers.js +37 -0
  14. package/dist/agents/current-model-catalog.js +9 -13
  15. package/dist/agents/docs-path.js +3 -3
  16. package/dist/agents/embedded-pi-mcp.js +4 -4
  17. package/dist/agents/identity-avatar.js +3 -3
  18. package/dist/agents/identity-file.js +2 -2
  19. package/dist/agents/model-catalog-normalized.js +1 -0
  20. package/dist/agents/model-catalog-source.js +2 -2
  21. package/dist/agents/model-catalog.js +1 -1
  22. package/dist/agents/model-metadata.js +58 -9
  23. package/dist/agents/openai-codex-app-server.js +499 -0
  24. package/dist/agents/pi-embedded-runner/compact.js +3 -3
  25. package/dist/agents/pi-embedded-runner/extra-params.js +168 -79
  26. package/dist/agents/pi-embedded-runner/model.js +62 -1
  27. package/dist/agents/pi-embedded-runner/moonshot-stream-wrappers.js +46 -0
  28. package/dist/agents/pi-embedded-runner/openai-stream-wrappers.js +221 -0
  29. package/dist/agents/pi-embedded-runner/run/attempt.js +6 -4
  30. package/dist/agents/pi-embedded-runner/run.js +5 -2
  31. package/dist/agents/pi-embedded-runner/utils.js +1 -1
  32. package/dist/agents/pi-embedded-runner.js +1 -1
  33. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  34. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  35. package/dist/agents/pi-model-discovery.js +6 -6
  36. package/dist/agents/pi-project-settings.js +3 -3
  37. package/dist/agents/pi-tools.js +2 -2
  38. package/dist/agents/sandbox/fs-bridge.js +2 -2
  39. package/dist/agents/session-dirs.js +4 -4
  40. package/dist/agents/session-write-lock.js +13 -13
  41. package/dist/agents/shell-utils.js +5 -5
  42. package/dist/agents/skills/bundled-dir.js +4 -4
  43. package/dist/agents/skills/local-loader.js +6 -6
  44. package/dist/agents/skills/plugin-skills.js +2 -2
  45. package/dist/agents/skills/workspace.js +13 -13
  46. package/dist/agents/skills-install-download.js +7 -7
  47. package/dist/agents/skills-install-plan.js +2 -2
  48. package/dist/agents/skills-install.js +2 -2
  49. package/dist/agents/skills-status.js +2 -2
  50. package/dist/agents/subagent-depth.js +2 -2
  51. package/dist/agents/system-prompt-params.js +2 -2
  52. package/dist/agents/tools/discord-actions-messaging.js +1 -1
  53. package/dist/agents/tools/message-tool.js +1 -1
  54. package/dist/agents/tools/session-status-tool.js +3 -3
  55. package/dist/agents/tools/slack-actions.js +1 -1
  56. package/dist/agents/tools/tts-tool.js +1 -1
  57. package/dist/agents/workspace.js +22 -22
  58. package/dist/auto-reply/reply/agent-runner-execution.js +2 -2
  59. package/dist/auto-reply/reply/agent-runner.js +2 -2
  60. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  61. package/dist/auto-reply/reply/commands-models.js +1 -1
  62. package/dist/auto-reply/reply/directive-handling.impl.js +4 -1
  63. package/dist/auto-reply/reply/dispatch-acp.js +1 -1
  64. package/dist/auto-reply/reply/dispatch-from-config.js +1 -1
  65. package/dist/auto-reply/reply/get-reply-run.js +20 -2
  66. package/dist/auto-reply/reply/model-selection.js +1 -1
  67. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  68. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  69. package/dist/auto-reply/reply/session-reset-model.js +1 -1
  70. package/dist/auto-reply/reply/session.js +3 -3
  71. package/dist/auto-reply/skill-commands.js +3 -3
  72. package/dist/auto-reply/status.js +7 -7
  73. package/dist/auto-reply/thinking.js +1 -1
  74. package/dist/brand.js +1 -1
  75. package/dist/browser/cdp.helpers.js +2 -2
  76. package/dist/browser/chrome.executables.js +3 -3
  77. package/dist/browser/chrome.js +5 -5
  78. package/dist/browser/chrome.profile-decoration.js +6 -6
  79. package/dist/browser/extension-relay.js +7 -7
  80. package/dist/browser/profiles-service.js +2 -2
  81. package/dist/browser/server-context.js +2 -2
  82. package/dist/browser/trash.js +4 -4
  83. package/dist/build-info.json +3 -3
  84. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  85. package/dist/canvas-host/server.js +4 -4
  86. package/dist/capabilities/catalog.js +3 -3
  87. package/dist/channels/plugins/catalog.js +3 -3
  88. package/dist/cli/browser-cli-extension.js +6 -6
  89. package/dist/cli/command-format.js +2 -2
  90. package/dist/cli/cron-cli/register.cron-add.js +1 -1
  91. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  92. package/dist/cli/dns-cli.js +9 -9
  93. package/dist/cli/gateway-cli/dev.js +5 -5
  94. package/dist/cli/gateway-cli/run.js +2 -2
  95. package/dist/cli/hooks-cli.js +5 -5
  96. package/dist/cli/lightweight/gateway-runtime-probe.js +2 -2
  97. package/dist/cli/memory-cli.js +7 -7
  98. package/dist/cli/nodes-media-utils.js +2 -2
  99. package/dist/cli/plugins-cli.js +2 -2
  100. package/dist/cli/program/register.agent.js +1 -1
  101. package/dist/cli/providers-cli.js +3 -2
  102. package/dist/cli/secrets-cli.js +3 -3
  103. package/dist/cli/windows-argv.js +2 -2
  104. package/dist/commands/agent.js +22 -3
  105. package/dist/commands/auth-choice.apply.api-providers.js +3 -8
  106. package/dist/commands/auth-choice.apply.openai.js +13 -7
  107. package/dist/commands/auth-choice.model-check.js +1 -2
  108. package/dist/commands/configure.gateway-auth.js +14 -16
  109. package/dist/commands/dashboard-link.js +3 -3
  110. package/dist/commands/doctor-config-flow.js +1 -1
  111. package/dist/commands/doctor-install.js +5 -5
  112. package/dist/commands/doctor-memory-search.js +2 -2
  113. package/dist/commands/doctor-platform-notes.js +2 -2
  114. package/dist/commands/doctor-sandbox.js +2 -2
  115. package/dist/commands/doctor-state-integrity.js +23 -23
  116. package/dist/commands/doctor-workspace.js +3 -3
  117. package/dist/commands/doctor.js +3 -3
  118. package/dist/commands/hosted-dashboard-probe.js +3 -3
  119. package/dist/commands/managed-up.js +2 -2
  120. package/dist/commands/model-picker.js +27 -8
  121. package/dist/commands/models/list.probe.js +1 -1
  122. package/dist/commands/models/list.registry.js +13 -17
  123. package/dist/commands/models/list.status-command.js +2 -2
  124. package/dist/commands/onboard-auth.config-core.js +1 -1
  125. package/dist/commands/onboard-auth.config-litellm.js +21 -21
  126. package/dist/commands/onboard-auth.credentials.js +3 -4
  127. package/dist/commands/onboard-auth.js +0 -1
  128. package/dist/commands/onboarding/plugin-install.js +2 -2
  129. package/dist/commands/openai-codex-model-default.js +28 -5
  130. package/dist/commands/sessions-cleanup.js +2 -2
  131. package/dist/commands/signal-install.js +6 -6
  132. package/dist/commands/status-all/channels.js +2 -2
  133. package/dist/commands/wallet.js +47 -47
  134. package/dist/config/cache-utils.js +2 -2
  135. package/dist/config/includes.js +5 -5
  136. package/dist/config/io.js +2 -2
  137. package/dist/config/paths.js +3 -3
  138. package/dist/config/sat-runtime-ids.js +3 -3
  139. package/dist/config/sessions/disk-budget.js +6 -6
  140. package/dist/config/sessions/paths.js +2 -2
  141. package/dist/config/sessions/store.js +17 -17
  142. package/dist/config/sessions/transcript.js +4 -4
  143. package/dist/config/talk.js +2 -2
  144. package/dist/config/zod-schema.agent-defaults.js +6 -2
  145. package/dist/config/zod-schema.agent-runtime.js +6 -2
  146. package/dist/config/zod-schema.core.js +6 -2
  147. package/dist/control-ui/assets/{app-BKlu6OKz.js → app-D7TXyNRi.js} +1548 -1540
  148. package/dist/control-ui/assets/chat-model-ref-Djkv93yn.js +2 -0
  149. package/dist/control-ui/assets/{index-nrFcGMv-.js → index-BmSBom-w.js} +3 -3
  150. package/dist/control-ui/assets/{providers-BQFrRqym.js → providers-Cc89iMdx.js} +5 -5
  151. package/dist/control-ui/index.html +1 -1
  152. package/dist/control-ui/version.json +1 -0
  153. package/dist/cron/isolated-agent/run.js +6 -2
  154. package/dist/cron/service/jobs.js +11 -1
  155. package/dist/cron/service/store.js +2 -2
  156. package/dist/cron/store.js +6 -6
  157. package/dist/daemon/systemd-system.js +5 -5
  158. package/dist/discord/monitor/gateway-plugin.js +2 -2
  159. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  160. package/dist/discord/voice/manager.js +1 -1
  161. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  162. package/dist/gateway/client.js +4 -4
  163. package/dist/gateway/control-ui-boot-check.js +6 -6
  164. package/dist/gateway/control-ui-login.js +7 -7
  165. package/dist/gateway/control-ui.js +11 -9
  166. package/dist/gateway/hooks-mapping.js +4 -4
  167. package/dist/gateway/protocol/schema/agents-models-skills.js +66 -4
  168. package/dist/gateway/server-discovery.js +2 -2
  169. package/dist/gateway/server-http.js +4 -4
  170. package/dist/gateway/server-methods/chat.js +3 -3
  171. package/dist/gateway/server-methods/models.js +8 -8
  172. package/dist/gateway/server-methods/sessions.js +8 -8
  173. package/dist/gateway/server-methods/tts.js +2 -2
  174. package/dist/gateway/server-methods/usage.js +2 -2
  175. package/dist/gateway/server-model-catalog.js +3 -0
  176. package/dist/gateway/server.impl.js +3 -3
  177. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  178. package/dist/gateway/session-utils.fs.js +24 -24
  179. package/dist/gateway/session-utils.js +6 -6
  180. package/dist/gateway/sessions-patch.js +27 -24
  181. package/dist/hooks/bundled-dir.js +4 -4
  182. package/dist/hooks/gmail-setup-utils.js +6 -6
  183. package/dist/hooks/import-url.js +2 -2
  184. package/dist/hooks/loader.js +4 -4
  185. package/dist/hooks/workspace.js +7 -7
  186. package/dist/infra/archive.js +17 -17
  187. package/dist/infra/boundary-file-read.js +2 -2
  188. package/dist/infra/boundary-path.js +15 -15
  189. package/dist/infra/brew.js +2 -2
  190. package/dist/infra/control-ui-assets.js +14 -14
  191. package/dist/infra/device-auth-store.js +8 -8
  192. package/dist/infra/device-identity.js +8 -8
  193. package/dist/infra/dotenv.js +2 -2
  194. package/dist/infra/exec-approvals.js +8 -8
  195. package/dist/infra/exec-command-resolution.js +4 -4
  196. package/dist/infra/exec-safe-bin-trust.js +2 -2
  197. package/dist/infra/fased-root.js +5 -5
  198. package/dist/infra/fs-safe.js +14 -14
  199. package/dist/infra/gateway-lock.js +11 -11
  200. package/dist/infra/git-commit.js +5 -5
  201. package/dist/infra/git-root.js +4 -4
  202. package/dist/infra/hosted-runtime-artifact.js +3 -3
  203. package/dist/infra/is-main.js +2 -2
  204. package/dist/infra/json-file.js +7 -7
  205. package/dist/infra/outbound/delivery-queue.js +16 -16
  206. package/dist/infra/path-env.js +3 -3
  207. package/dist/infra/ports-lsof.js +4 -4
  208. package/dist/infra/provider-usage.auth.js +3 -3
  209. package/dist/infra/safe-open-sync.js +2 -2
  210. package/dist/infra/session-cost-usage.js +9 -9
  211. package/dist/infra/shell-env.js +2 -2
  212. package/dist/infra/state-migrations.fs.js +6 -6
  213. package/dist/infra/state-migrations.js +23 -23
  214. package/dist/infra/tmp-fased-dir.js +6 -6
  215. package/dist/infra/update-runner.js +31 -3
  216. package/dist/infra/widearea-dns.js +3 -3
  217. package/dist/infra/wsl.js +2 -2
  218. package/dist/light-update-status.js +1 -1
  219. package/dist/line/accounts.js +2 -2
  220. package/dist/line/download.js +2 -2
  221. package/dist/logging/config.js +3 -3
  222. package/dist/logging/logger.js +7 -7
  223. package/dist/managed/federation.js +3 -3
  224. package/dist/managed/tunnel.js +3 -3
  225. package/dist/media/store.js +13 -13
  226. package/dist/media-understanding/runner.js +3 -3
  227. package/dist/memory/embeddings.js +2 -2
  228. package/dist/memory/internal.js +10 -10
  229. package/dist/memory/inventory.js +19 -2
  230. package/dist/memory/manager-sync-ops.js +7 -7
  231. package/dist/memory/repair-executor.js +17 -17
  232. package/dist/node-host/invoke-system-run-plan.js +8 -8
  233. package/dist/node-host/invoke.js +2 -2
  234. package/dist/node-host/runner.js +3 -3
  235. package/dist/pairing/pairing-store.js +3 -3
  236. package/dist/plugin-sdk/{accounts-DW9OS5Ll.js → accounts-DzWlKv1U.js} +1 -1
  237. package/dist/plugin-sdk/{actions-DQUXohRr.js → actions-BplQVLL6.js} +4 -4
  238. package/dist/plugin-sdk/{active-listener-BZQWZPF7.js → active-listener-x4MLhYUw.js} +1 -1
  239. package/dist/plugin-sdk/{allow-list-BYeKk0Sy.js → allow-list-DyAxs4yw.js} +1 -1
  240. package/dist/plugin-sdk/{audio-preflight-t4mmHsI2.js → audio-preflight-G8h3Sn8_.js} +43 -47
  241. package/dist/plugin-sdk/{audit-BZk_6Buw.js → audit-CWknklvI.js} +1 -1
  242. package/dist/plugin-sdk/{channel-access-CN5HiWdb.js → channel-access-a9Dnfw7-.js} +1 -1
  243. package/dist/plugin-sdk/{channel-access-configure-B7Kkvx9K.js → channel-access-configure-CD4QDN5E.js} +1 -1
  244. package/dist/plugin-sdk/{channel-adapters.discord-IOZP8Cv5.js → channel-adapters.discord-BS4S4Svh.js} +1 -1
  245. package/dist/plugin-sdk/channel-plugin-common.d.ts +3 -3
  246. package/dist/plugin-sdk/channel-plugin-common.js +4 -4
  247. package/dist/plugin-sdk/{chunk-B2ffJ-LR.js → chunk-B8EZkwiT.js} +1 -1
  248. package/dist/plugin-sdk/{chunk-items-jOdkyP53.js → chunk-items-CEPklxGe.js} +1 -1
  249. package/dist/plugin-sdk/command-status.d.ts +2 -2
  250. package/dist/plugin-sdk/command-status.js +43 -47
  251. package/dist/plugin-sdk/{commands-registry-BWb4NcfW.js → commands-registry-BfEa4tFA.js} +2 -2
  252. package/dist/plugin-sdk/{common-C4XrB73N.js → common-CbfckC19.js} +1 -1
  253. package/dist/plugin-sdk/{config-rySyVtKs.js → config-Bt5GhnA-.js} +105 -73
  254. package/dist/plugin-sdk/{config-schema-BaybPPrJ.js → config-schema-B9DKr6J5.js} +96239 -81587
  255. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  256. package/dist/plugin-sdk/device-pair.js +2 -3
  257. package/dist/plugin-sdk/{diagnostic-Dfn1iERm.js → diagnostic-DLL_zekv.js} +3 -3
  258. package/dist/plugin-sdk/{directory-live-DatqU-eS.js → directory-live-CSuYxdwk.js} +1 -1
  259. package/dist/plugin-sdk/{directory-live-ClwN5KKq.js → directory-live-Dw7ZgC9_.js} +1 -1
  260. package/dist/plugin-sdk/discord.d.ts +5 -5
  261. package/dist/plugin-sdk/discord.js +31 -32
  262. package/dist/plugin-sdk/{draft-stream-controls-D4Tb_iS_.js → draft-stream-controls-BqchW1vi.js} +1 -1
  263. package/dist/plugin-sdk/{fetch-guard-BuYrl6q2.js → fetch-guard-CeG6u6ld.js} +1 -1
  264. package/dist/plugin-sdk/{filesystem-manager-B9DDPgfU.js → filesystem-manager-BGGGrkiN.js} +2 -2
  265. package/dist/plugin-sdk/{fs-safe-BG-VzVkL.js → fs-safe-xBqok6yR.js} +1 -1
  266. package/dist/plugin-sdk/{group-mentions-DLOOve8d.d.ts → group-mentions-BHRff6j8.d.ts} +1 -1
  267. package/dist/plugin-sdk/{guilds-BeT3iHHJ.js → guilds-CDhRIX57.js} +1 -1
  268. package/dist/plugin-sdk/{handle-action-CGF-Qnp0.js → handle-action-DbzZFYnG.js} +24 -25
  269. package/dist/plugin-sdk/{helpers-DgRMfCnT.js → helpers-CluGKuIV.js} +1 -1
  270. package/dist/plugin-sdk/{image-ops-CcBfoMLW.js → image-ops-CUaLtIFj.js} +1 -1
  271. package/dist/plugin-sdk/index.d.ts +8 -8
  272. package/dist/plugin-sdk/index.js +47 -51
  273. package/dist/plugin-sdk/json-store.js +6 -6
  274. package/dist/plugin-sdk/{login-DpDQyM7r.js → login-DJuHYDiK.js} +3 -3
  275. package/dist/plugin-sdk/{login-qr-COaSAPY5.js → login-qr-CbHL5ayf.js} +3 -3
  276. package/dist/plugin-sdk/{manager-Cqz30lA3.js → manager-oHAvZCT3.js} +7 -7
  277. package/dist/plugin-sdk/{markdown-tables-BOG5sSQQ.js → markdown-tables-Mkx7k92Y.js} +1 -1
  278. package/dist/plugin-sdk/{media-Bu-nJpPs.js → media-CA8sTmVE.js} +4 -4
  279. package/dist/plugin-sdk/{monitor-II_NIq3G.js → monitor-CZrN9pev.js} +51 -55
  280. package/dist/plugin-sdk/{monitor-DL6oEVo8.js → monitor-CmwGqNyV.js} +61 -65
  281. package/dist/plugin-sdk/{openresponses-http-vkHBBpGY.js → openresponses-http-CWOd4war.js} +43 -47
  282. package/dist/plugin-sdk/{optional-runtime-dependency-DEojVNfv.js → optional-runtime-dependency-DKmk9PZa.js} +1 -1
  283. package/dist/plugin-sdk/{outbound-mf2y6KuY.js → outbound-0oN9IfNw.js} +9 -9
  284. package/dist/plugin-sdk/{outbound-attachment-ivAHpWnn.js → outbound-attachment-DdVkqUzE.js} +2 -2
  285. package/dist/plugin-sdk/{pairing-message-CvJ6Qa1Q.d.ts → pairing-message-BMkkS038.d.ts} +2 -2
  286. package/dist/plugin-sdk/{pairing-message-CqYG12t-.js → pairing-message-ClqhfCUk.js} +1 -1
  287. package/dist/plugin-sdk/{pairing-store-D-21Sphe.js → pairing-store-B01mCSct.js} +2 -2
  288. package/dist/plugin-sdk/{pi-model-discovery-B6gD1clF.js → pi-model-discovery-Buz0JC1Y.js} +1 -1
  289. package/dist/plugin-sdk/{pi-model-discovery-runtime-3yDxS3ro.js → pi-model-discovery-runtime-DuwuoteY.js} +2 -2
  290. package/dist/plugin-sdk/{probe-Cyb-DGA3.js → probe--7xtfzMm.js} +3 -3
  291. package/dist/plugin-sdk/{probe-Dlk0Jxpw.js → probe-BFroeK3g.js} +1 -1
  292. package/dist/plugin-sdk/{probe-D8JAILir.js → probe-l_whvGLY.js} +1 -1
  293. package/dist/plugin-sdk/{resolve-channels-zEnvugag.js → probe-xY3Ky0Tx.js} +3 -4
  294. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +2 -2
  295. package/dist/plugin-sdk/{pw-ai-CMplwiwf.js → pw-ai-B0domrii.js} +6 -8
  296. package/dist/plugin-sdk/{qmd-manager-DCUE21Kj.js → qmd-manager-CFFeM4Fl.js} +3 -3
  297. package/dist/plugin-sdk/{query-expansion-Zr9qQixm.js → query-expansion-CAI2kKLQ.js} +1 -1
  298. package/dist/plugin-sdk/{replies-wiI4veI7.js → replies-1macZ1mZ.js} +4 -4
  299. package/dist/plugin-sdk/{resolve-channels-ChWKWtA9.js → resolve-channels-87LZrFk_.js} +2 -2
  300. package/dist/plugin-sdk/resolve-channels-CwB2_019.js +4 -0
  301. package/dist/plugin-sdk/{resolve-outbound-target-bm9RUK5q.js → resolve-outbound-target-BdH6LUoW.js} +2 -2
  302. package/dist/plugin-sdk/{resolve-route-ekGNc6os.js → resolve-route-CkNIKKEW.js} +1 -1
  303. package/dist/plugin-sdk/{resolve-users-BTvjQuui.js → resolve-users-Cxb5wpAQ.js} +1 -1
  304. package/dist/plugin-sdk/{resolve-users-CTzoruIZ.js → resolve-users-V6dHh_2B.js} +2 -2
  305. package/dist/plugin-sdk/{retry-policy-BvlC2SPh.js → retry-policy-9ybIh4Fq.js} +1 -1
  306. package/dist/plugin-sdk/{runtime-ClSakPxR.js → runtime-Dy420wBu.js} +3 -3
  307. package/dist/plugin-sdk/{runtime-dependency-yAWxH4El.js → runtime-dependency-CIw9t7-k.js} +123 -15
  308. package/dist/plugin-sdk/{sandbox-paths-lj7_EVuA.js → sandbox-paths-w64tYl0v.js} +1 -1
  309. package/dist/plugin-sdk/sat-runtime.d.ts +3 -3
  310. package/dist/plugin-sdk/sat-runtime.js +44 -10
  311. package/dist/plugin-sdk/{send-D264hFVb.js → send-2VcOMTN5.js} +9 -9
  312. package/dist/plugin-sdk/{send-CgyS75Av.js → send-BQUtCJFW.js} +10 -10
  313. package/dist/plugin-sdk/{send-D58yEeH4.js → send-DPJIIYAs.js} +6 -6
  314. package/dist/plugin-sdk/{send-C7x6gzSl.js → send-Dqes9tdU.js} +13 -13
  315. package/dist/plugin-sdk/{send-DrAtUGLM.js → send-J4JWKP62.js} +8 -8
  316. package/dist/plugin-sdk/{session-DyMtb5YQ.js → session-C_n2S5ub.js} +3 -3
  317. package/dist/plugin-sdk/{skill-commands-Q80wCyry.js → skill-commands-B7wx9ax8.js} +102 -102
  318. package/dist/plugin-sdk/{slack-C-I6q3NB.js → slack-BouRQG-W.js} +64 -68
  319. package/dist/plugin-sdk/{slack-actions-dGE_t_Un.js → slack-actions-CasHVtiq.js} +20 -21
  320. package/dist/plugin-sdk/slack.d.ts +5 -5
  321. package/dist/plugin-sdk/slack.js +13 -13
  322. package/dist/plugin-sdk/{ssrf-BZG8Ztod.js → ssrf-fG4UHKBw.js} +180 -2
  323. package/dist/plugin-sdk/{sticker-cache-DCrDTYIi.js → sticker-cache-BvGEUas3.js} +3 -3
  324. package/dist/plugin-sdk/{tables-0mhUOh5v.js → tables-CjlQJV4r.js} +2 -2
  325. package/dist/plugin-sdk/{device-pairing-D2Yq-_U6.js → tailscale-status-DwpNdO3Z.js} +104 -2
  326. package/dist/plugin-sdk/{targets-znKHngSk.js → targets-QfP164Dh.js} +2 -2
  327. package/dist/plugin-sdk/{telegram-actions-GBYY8-x9.js → telegram-actions-CwYjV6Db.js} +48 -52
  328. package/dist/plugin-sdk/telegram.d.ts +5 -5
  329. package/dist/plugin-sdk/telegram.js +11 -11
  330. package/dist/plugin-sdk/{thread-bindings.lifecycle-ClzPBK70.js → thread-bindings.lifecycle-DU4iX_Jr.js} +3 -3
  331. package/dist/plugin-sdk/{thread-bindings.state-Ha01nmrq.js → thread-bindings.state-BgYWFjNF.js} +2 -2
  332. package/dist/plugin-sdk/{tmp-fased-dir-C_xfeEN9.d.ts → tmp-fased-dir-BdFQvrvw.d.ts} +2 -2
  333. package/dist/plugin-sdk/{types-DV5TNhMK.d.ts → types-BYDL6dQj.d.ts} +2 -2
  334. package/dist/plugin-sdk/{types-BI2njxWJ.d.ts → types-CLIvQaVg.d.ts} +39 -5
  335. package/dist/plugin-sdk/{types-CBCtqtMn.d.ts → types-DyhXnYUr.d.ts} +1 -1
  336. package/dist/plugin-sdk/{types.plugin-CvUiB3Kh.d.ts → types.plugin-_fbu40Re.d.ts} +8 -5
  337. package/dist/plugin-sdk/{web-CJMfhGFY.js → web-D0yENDve.js} +52 -56
  338. package/dist/plugin-sdk/{whatsapp-actions-0ZbGo5ZV.js → whatsapp-actions-BT2nPLyo.js} +18 -19
  339. package/dist/plugin-sdk/{whatsapp-heartbeat-DGTsuvQ8.js → whatsapp-heartbeat-CiABSZ6G.js} +2 -2
  340. package/dist/plugin-sdk/whatsapp.d.ts +5 -5
  341. package/dist/plugin-sdk/whatsapp.js +14 -14
  342. package/dist/plugin-sdk/{wsl-D5jDUlms.js → wsl-B_ojyEtC.js} +53 -53
  343. package/dist/plugins/bundled-dir.js +3 -3
  344. package/dist/plugins/discovery.js +11 -11
  345. package/dist/plugins/loader.js +13 -13
  346. package/dist/plugins/manifest-registry.js +2 -2
  347. package/dist/plugins/manifest.js +4 -4
  348. package/dist/plugins/path-safety.js +3 -3
  349. package/dist/plugins/runtime/index.js +1 -1
  350. package/dist/plugins/status-cache.js +9 -9
  351. package/dist/plugins/update.js +3 -3
  352. package/dist/plugins/web-search-install-catalog.js +3 -3
  353. package/dist/providers/github-copilot-model-discovery.js +51 -0
  354. package/dist/providers/litellm-models.js +1 -1
  355. package/dist/providers/openai-codex-model-discovery.js +166 -0
  356. package/dist/providers/refresh.js +311 -67
  357. package/dist/providers/registry.js +16 -6
  358. package/dist/providers/runtime-model-catalog.js +250 -0
  359. package/dist/secrets/apply.js +16 -16
  360. package/dist/secrets/audit.js +11 -11
  361. package/dist/secrets/shared.js +9 -9
  362. package/dist/security/scan-paths.js +2 -2
  363. package/dist/shared/config-eval.js +2 -2
  364. package/dist/shared/model-thinking.js +54 -4
  365. package/dist/shared/pid-alive.js +2 -2
  366. package/dist/tasks/standing-orders.js +5 -5
  367. package/dist/tasks/task-flow-registry.js +5 -5
  368. package/dist/tasks/task-registry.js +5 -5
  369. package/dist/tasks/workflow-definitions.js +6 -6
  370. package/dist/telegram/bot-message-context.js +1 -1
  371. package/dist/telegram/token.js +5 -5
  372. package/dist/utils.js +5 -5
  373. package/dist/wallet/local-socket-signer-broker.js +16 -16
  374. package/dist/wallet/providers/embedded-keystore-adapter.js +5 -5
  375. package/dist/wallet/providers/local-socket-signer-adapter.js +2 -2
  376. package/dist/wallet/wallet-approval-auth.js +5 -5
  377. package/dist/wallet/wallet-audit-log.js +5 -5
  378. package/dist/wallet/wallet-custody.js +21 -21
  379. package/dist/wallet/wallet-inbound-events.js +5 -5
  380. package/dist/wallet/wallet-observability.js +5 -5
  381. package/dist/wallet/wallet-policy.js +9 -9
  382. package/dist/wallet/wallet-provider-registry.js +7 -7
  383. package/dist/wallet/wallet-runtime-config.js +3 -3
  384. package/dist/wallet/wallet-secrets-store.js +22 -22
  385. package/dist/wallet/wallet-send-approvals.js +5 -5
  386. package/dist/wallet/wallet-settlement-links.js +5 -5
  387. package/dist/web/accounts.js +3 -3
  388. package/dist/web/auth-store.js +18 -18
  389. package/dist/web/session.js +4 -4
  390. package/dist/wizard/host-security-capability.js +2 -2
  391. package/dist/wizard/onboarding.host-security.js +7 -7
  392. package/dist/wizard/onboarding.js +31 -13
  393. package/dist/wizard/onboarding.wallet.js +44 -44
  394. package/extensions/acpx/package.json +1 -1
  395. package/extensions/bluebubbles/package.json +1 -1
  396. package/extensions/copilot-proxy/package.json +1 -1
  397. package/extensions/diagnostics-otel/package.json +1 -1
  398. package/extensions/fased-federation/package.json +1 -1
  399. package/extensions/google-gemini-cli-auth/package.json +1 -1
  400. package/extensions/imessage/package.json +1 -1
  401. package/extensions/irc/package.json +1 -1
  402. package/extensions/line/package.json +1 -1
  403. package/extensions/llm-task/package.json +1 -1
  404. package/extensions/lobster/package.json +1 -1
  405. package/extensions/matrix/CHANGELOG.md +12 -0
  406. package/extensions/matrix/package.json +1 -1
  407. package/extensions/mattermost/package.json +1 -1
  408. package/extensions/memory-core/package.json +2 -2
  409. package/extensions/memory-lancedb/package.json +1 -1
  410. package/extensions/minimax-portal-auth/package.json +1 -1
  411. package/extensions/msteams/CHANGELOG.md +12 -0
  412. package/extensions/msteams/package.json +1 -1
  413. package/extensions/nextcloud-talk/package.json +1 -1
  414. package/extensions/nostr/CHANGELOG.md +12 -0
  415. package/extensions/nostr/package.json +1 -1
  416. package/extensions/open-prose/package.json +1 -1
  417. package/extensions/sat-mining/package.json +1 -1
  418. package/extensions/signal/package.json +1 -1
  419. package/extensions/synology-chat/package.json +1 -1
  420. package/extensions/tlon/package.json +1 -1
  421. package/extensions/twitch/CHANGELOG.md +12 -0
  422. package/extensions/twitch/package.json +1 -1
  423. package/extensions/voice-call/CHANGELOG.md +12 -0
  424. package/extensions/voice-call/package.json +1 -1
  425. package/extensions/zalo/CHANGELOG.md +12 -0
  426. package/extensions/zalo/package.json +1 -1
  427. package/extensions/zalouser/CHANGELOG.md +12 -0
  428. package/extensions/zalouser/package.json +1 -1
  429. package/package.json +2 -1
  430. package/dist/control-ui/assets/chat-model-ref-B9sWop67.js +0 -2
  431. package/dist/plugin-sdk/ip-C70a-YlD.js +0 -181
  432. package/dist/plugin-sdk/tailscale-status-ClsquRGs.js +0 -104
  433. package/dist/plugin-sdk/wallet-status-CyovJojz.js +0 -11944
  434. package/dist/plugin-sdk/ws-CocpWGhl.js +0 -114
  435. /package/dist/plugin-sdk/{blocks-input-Dcitfh7h.js → blocks-input-Bg-8S2pl.js} +0 -0
  436. /package/dist/plugin-sdk/{channel-activity-Cg1xRoc2.js → channel-activity-DBDMQ3yI.js} +0 -0
  437. /package/dist/plugin-sdk/{channel-core-BOkyXXLa.js → channel-core-CFRs8LPy.js} +0 -0
  438. /package/dist/plugin-sdk/{client-D2N7hqVu.js → client-pI228AVT.js} +0 -0
  439. /package/dist/plugin-sdk/{command-poll-backoff-NAePk3eL.js → command-poll-backoff-yJU83wEq.js} +0 -0
  440. /package/dist/plugin-sdk/{date-time-CE3Uer3C.js → date-time-uUevHscU.js} +0 -0
  441. /package/dist/plugin-sdk/{diagnostic-session-state-HO94DMou.js → diagnostic-session-state-DqgfGYqZ.js} +0 -0
  442. /package/dist/plugin-sdk/{draft-stream-loop-CKyHn8IX.js → draft-stream-loop-CrOPfV3F.js} +0 -0
  443. /package/dist/plugin-sdk/{fetch-Cu-ahkie.js → fetch-BtmoPIlf.js} +0 -0
  444. /package/dist/plugin-sdk/{gateway-registry-DFsoY6C0.js → gateway-registry-DZDsqicG.js} +0 -0
  445. /package/dist/plugin-sdk/{inbound-context-BFnIdcqI.js → inbound-context-DrAcXE0y.js} +0 -0
  446. /package/dist/plugin-sdk/{internal-qo16nNU1.js → internal-CG_nHo-2.js} +0 -0
  447. /package/dist/plugin-sdk/{memory-search-C3C0bD2H.js → memory-search-VFll-AIb.js} +0 -0
  448. /package/dist/plugin-sdk/{pairing-token-N_6Jbt1L.js → pairing-token-Cs3BRKc0.js} +0 -0
  449. /package/dist/plugin-sdk/{path-alias-guards-Dg3gU-MA.js → path-alias-guards-BJZD5JMJ.js} +0 -0
  450. /package/dist/plugin-sdk/{polls-DQrR-qT3.js → polls-DKQXVfJp.js} +0 -0
  451. /package/dist/plugin-sdk/{proxy-7xs_rsnV.js → proxy-DWpYcsvR.js} +0 -0
  452. /package/dist/plugin-sdk/{qmd-scope-D1sSG_Rx.js → qmd-scope-CdX34VCV.js} +0 -0
  453. /package/dist/plugin-sdk/{redact-identifier-Q3tkvxhm.js → redact-identifier-Lt7t3l7S.js} +0 -0
  454. /package/dist/plugin-sdk/{redact-sensitive-url-dPvnFFsK.js → redact-sensitive-url-g-ukZjwA.js} +0 -0
  455. /package/dist/plugin-sdk/{render-Bwu_WxwA.js → render-e7fENCYH.js} +0 -0
  456. /package/dist/plugin-sdk/{reply-prefix-Bqzm6DC1.js → reply-prefix-ClpxvL_w.js} +0 -0
  457. /package/dist/plugin-sdk/{reply-reference-BkbK_DWT.js → reply-reference-Bqk-7HXE.js} +0 -0
  458. /package/dist/plugin-sdk/{secure-random-Bl-AVLVb.js → secure-random-BIkG-k4s.js} +0 -0
  459. /package/dist/plugin-sdk/{shared-clhhbWN3.js → shared-CBgp_GBw.js} +0 -0
  460. /package/dist/plugin-sdk/{target-errors-C_SVKoEv.js → target-errors-Ckufe179.js} +0 -0
  461. /package/dist/plugin-sdk/{targets-BDvvnlph.js → targets-CoMJ1ry1.js} +0 -0
  462. /package/dist/plugin-sdk/{tokens-BvtlOzVP.js → tokens-BbnqfVuu.js} +0 -0
  463. /package/dist/plugin-sdk/{tool-loop-detection-CWphm1k_.js → tool-loop-detection-Bp8bPJLs.js} +0 -0
  464. /package/dist/plugin-sdk/{ui-e020ouhJ.js → ui-Be8cLHIS.js} +0 -0
  465. /package/dist/plugin-sdk/{with-timeout-BYrRAYFV.js → with-timeout-ckWB8rTo.js} +0 -0
@@ -1,8 +1,9 @@
1
+ import { resolveFasedAgentAgentDir } from "../agents/agent-paths.js";
1
2
  import { ensureAuthProfileStore } from "../agents/auth-profiles/store.js";
2
3
  import "../agents/auth-profiles.js";
3
4
  import { randomToken } from "./onboard-helpers.js";
4
5
  import { promptAuthChoiceGrouped } from "./auth-choice-prompt.js";
5
- import { applyModelAllowlist, applyModelFallbacksFromSelection, promptModelAllowlist } from "./model-picker.js";
6
+ import { applyModelAllowlist, applyModelFallbacksFromSelection, applyPrimaryModel, promptModelAllowlist } from "./model-picker.js";
6
7
  import { applyAuthChoice } from "./auth-choice.apply.js";
7
8
  import { resolvePreferredProviderForAuthChoice } from "./auth-choice.preferred-provider.js";
8
9
  import "./auth-choice.js";
@@ -20,12 +21,6 @@ function sanitizeTokenValue(value) {
20
21
  }
21
22
  return trimmed;
22
23
  }
23
- const ANTHROPIC_OAUTH_MODEL_KEYS = [
24
- "anthropic/claude-fable-5",
25
- "anthropic/claude-opus-4-8",
26
- "anthropic/claude-sonnet-5",
27
- "anthropic/claude-haiku-4-5"
28
- ];
29
24
  function buildGatewayAuthConfig(params) {
30
25
  const allowTailscale = params.existing?.allowTailscale;
31
26
  const base = {};
@@ -61,9 +56,10 @@ function buildGatewayAuthConfig(params) {
61
56
  return base;
62
57
  }
63
58
  async function promptAuthConfig(cfg, runtime, prompter) {
59
+ const agentDir = resolveFasedAgentAgentDir();
64
60
  const authChoice = await promptAuthChoiceGrouped({
65
61
  prompter,
66
- store: ensureAuthProfileStore(undefined, { allowKeychainPrompt: false }),
62
+ store: ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false }),
67
63
  includeSkip: true
68
64
  });
69
65
  let next = cfg;
@@ -82,24 +78,26 @@ async function promptAuthConfig(cfg, runtime, prompter) {
82
78
  config: next,
83
79
  prompter,
84
80
  runtime,
85
- setDefaultModel: true
81
+ setDefaultModel: false,
82
+ agentDir
86
83
  });
87
84
  next = applied.config;
88
85
  }
89
- const anthropicOAuth = authChoice === "anthropic-oauth" || authChoice === "setup-token" || authChoice === "token" || authChoice === "oauth";
90
86
  const preferredProvider = authChoice !== "custom-api-key" ? resolvePreferredProviderForAuthChoice(authChoice, { config: next }) : undefined;
91
87
  if (authChoice !== "custom-api-key" && authChoice !== "skip") {
92
88
  const allowlistSelection = await promptModelAllowlist({
93
89
  config: next,
94
90
  prompter,
95
- allowedKeys: anthropicOAuth ? ANTHROPIC_OAUTH_MODEL_KEYS : undefined,
96
- initialSelections: anthropicOAuth ? ["anthropic/claude-sonnet-5"] : undefined,
97
- message: anthropicOAuth ? "Anthropic OAuth models" : undefined,
98
- preferredProvider
91
+ preferredProvider,
92
+ agentDir
99
93
  });
100
94
  if (allowlistSelection.models) {
101
- next = applyModelAllowlist(next, allowlistSelection.models);
102
- next = applyModelFallbacksFromSelection(next, allowlistSelection.models);
95
+ const selectedModels = allowlistSelection.models;
96
+ if (selectedModels[0]) {
97
+ next = applyPrimaryModel(next, selectedModels[0]);
98
+ }
99
+ next = applyModelAllowlist(next, selectedModels);
100
+ next = applyModelFallbacksFromSelection(next, selectedModels);
103
101
  }
104
102
  }
105
103
  return next;
@@ -4,7 +4,7 @@ import { parseDurationMs } from "../cli/parse-duration.js";
4
4
  import { readConfigFileSnapshot } from "../config/io.js";
5
5
  import "../config/config.js";
6
6
  import { CONTROL_UI_LOGIN_DEFAULT_GRANT_TTL_MS, createLoginGrant, normalizePublicHost } from "../gateway/control-ui-login.js";
7
- import fs from "node:fs";
7
+ import syncFs from "node:fs";
8
8
  import path from "node:path";
9
9
 
10
10
  //#region src/commands/dashboard-link.ts
@@ -12,10 +12,10 @@ const AGENT_DOMAIN_SUFFIX = ".agents.fased.app";
12
12
  function readStateGatewayToken(env = process.env) {
13
13
  try {
14
14
  const filePath = path.join(resolveStateDir(env), "gateway-secret");
15
- if (!fs.existsSync(filePath)) {
15
+ if (!syncFs.existsSync(filePath)) {
16
16
  return "";
17
17
  }
18
- return fs.readFileSync(filePath, "utf8").trim();
18
+ return syncFs.readFileSync(filePath, "utf8").trim();
19
19
  } catch {
20
20
  return "";
21
21
  }
@@ -14,8 +14,8 @@ import "../config/config.js";
14
14
  import { listTelegramAccountIds, resolveTelegramAccount } from "../telegram/accounts.js";
15
15
  import "../channels/registry.js";
16
16
  import { readChannelAllowFromStore } from "../pairing/pairing-store.js";
17
- import { listInterpreterLikeSafeBins, resolveMergedSafeBinProfileFixtures } from "../infra/exec-safe-bin-runtime-policy.js";
18
17
  import { readWalletApprovalAuthSnapshot } from "../wallet/wallet-approval-auth.js";
18
+ import { listInterpreterLikeSafeBins, resolveMergedSafeBinProfileFixtures } from "../infra/exec-safe-bin-runtime-policy.js";
19
19
  import { applyPluginAutoEnable } from "../config/plugin-auto-enable.js";
20
20
  import { isNumericTelegramUserId, normalizeTelegramAllowFromEntry } from "../channels/telegram/allow-from.js";
21
21
  import { collectProviderDangerousNameMatchingScopes } from "../config/dangerous-name-matching.js";
@@ -1,5 +1,5 @@
1
1
  import { note } from "../terminal/note.js";
2
- import fs from "node:fs";
2
+ import syncFs from "node:fs";
3
3
  import path from "node:path";
4
4
 
5
5
  //#region src/commands/doctor-install.ts
@@ -8,7 +8,7 @@ function noteSourceInstallIssues(root) {
8
8
  return;
9
9
  }
10
10
  const workspaceMarker = path.join(root, "pnpm-workspace.yaml");
11
- if (!fs.existsSync(workspaceMarker)) {
11
+ if (!syncFs.existsSync(workspaceMarker)) {
12
12
  return;
13
13
  }
14
14
  const warnings = [];
@@ -16,13 +16,13 @@ function noteSourceInstallIssues(root) {
16
16
  const pnpmStore = path.join(nodeModules, ".pnpm");
17
17
  const tsxBin = path.join(nodeModules, ".bin", "tsx");
18
18
  const srcEntry = path.join(root, "src", "entry.ts");
19
- if (fs.existsSync(nodeModules) && !fs.existsSync(pnpmStore)) {
19
+ if (syncFs.existsSync(nodeModules) && !syncFs.existsSync(pnpmStore)) {
20
20
  warnings.push("- node_modules was not installed by pnpm (missing node_modules/.pnpm). Run: pnpm install");
21
21
  }
22
- if (fs.existsSync(path.join(root, "package-lock.json"))) {
22
+ if (syncFs.existsSync(path.join(root, "package-lock.json"))) {
23
23
  warnings.push("- package-lock.json present in a pnpm workspace. If you ran npm install, remove it and reinstall with pnpm.");
24
24
  }
25
- if (fs.existsSync(srcEntry) && !fs.existsSync(tsxBin)) {
25
+ if (syncFs.existsSync(srcEntry) && !syncFs.existsSync(tsxBin)) {
26
26
  warnings.push("- tsx binary is missing for source runs. Run: pnpm install");
27
27
  }
28
28
  if (warnings.length > 0) {
@@ -5,7 +5,7 @@ import { resolveApiKeyForProvider } from "../agents/model-auth.js";
5
5
  import { resolveMemoryBackendConfig } from "../memory/backend-config.js";
6
6
  import { resolveMemorySearchConfig } from "../agents/memory-search.js";
7
7
  import { note } from "../terminal/note.js";
8
- import fs from "node:fs";
8
+ import syncFs from "node:fs";
9
9
 
10
10
  //#region src/commands/doctor-memory-search.ts
11
11
  /**
@@ -126,7 +126,7 @@ function hasLocalEmbeddings(local) {
126
126
  }
127
127
  const resolved = resolveUserPath(modelPath);
128
128
  try {
129
- return fs.statSync(resolved).isFile();
129
+ return syncFs.statSync(resolved).isFile();
130
130
  } catch {
131
131
  return false;
132
132
  }
@@ -1,6 +1,6 @@
1
1
  import { shortenHomePath } from "../utils.js";
2
2
  import { note } from "../terminal/note.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import os from "node:os";
5
5
  import path from "node:path";
6
6
  import { promisify } from "node:util";
@@ -17,7 +17,7 @@ async function noteMacLaunchAgentOverrides() {
17
17
  }
18
18
  const home = resolveHomeDir();
19
19
  const markerCandidates = [path.join(home, ".fased", "disable-launchagent")];
20
- const markerPath = markerCandidates.find((candidate) => fs.existsSync(candidate));
20
+ const markerPath = markerCandidates.find((candidate) => syncFs.existsSync(candidate));
21
21
  if (!markerPath) {
22
22
  return;
23
23
  }
@@ -3,7 +3,7 @@ import { DEFAULT_SANDBOX_BROWSER_IMAGE, DEFAULT_SANDBOX_COMMON_IMAGE, DEFAULT_SA
3
3
  import { resolveSandboxScope } from "../agents/sandbox/config.js";
4
4
  import "../agents/sandbox.js";
5
5
  import { note } from "../terminal/note.js";
6
- import fs from "node:fs";
6
+ import syncFs from "node:fs";
7
7
  import path from "node:path";
8
8
 
9
9
  //#region src/commands/doctor-sandbox.ts
@@ -18,7 +18,7 @@ function resolveSandboxScript(scriptRel) {
18
18
  }
19
19
  for (const root of candidates) {
20
20
  const scriptPath = path.join(root, scriptRel);
21
- if (fs.existsSync(scriptPath)) {
21
+ if (syncFs.existsSync(scriptPath)) {
22
22
  return {
23
23
  scriptPath,
24
24
  cwd: root
@@ -11,28 +11,28 @@ import { loadSessionStore } from "../config/sessions/store.js";
11
11
  import { ensureSessionTranscriptHeader } from "../config/sessions/transcript.js";
12
12
  import "../config/sessions.js";
13
13
  import { note } from "../terminal/note.js";
14
- import fs from "node:fs";
14
+ import syncFs from "node:fs";
15
15
  import os from "node:os";
16
16
  import path from "node:path";
17
17
 
18
18
  //#region src/commands/doctor-state-integrity.ts
19
19
  function existsDir(dir) {
20
20
  try {
21
- return fs.existsSync(dir) && fs.statSync(dir).isDirectory();
21
+ return syncFs.existsSync(dir) && syncFs.statSync(dir).isDirectory();
22
22
  } catch {
23
23
  return false;
24
24
  }
25
25
  }
26
26
  function existsFile(filePath) {
27
27
  try {
28
- return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
28
+ return syncFs.existsSync(filePath) && syncFs.statSync(filePath).isFile();
29
29
  } catch {
30
30
  return false;
31
31
  }
32
32
  }
33
33
  function canWriteDir(dir) {
34
34
  try {
35
- fs.accessSync(dir, fs.constants.W_OK);
35
+ syncFs.accessSync(dir, syncFs.constants.W_OK);
36
36
  return true;
37
37
  } catch {
38
38
  return false;
@@ -40,7 +40,7 @@ function canWriteDir(dir) {
40
40
  }
41
41
  function ensureDir(dir) {
42
42
  try {
43
- fs.mkdirSync(dir, { recursive: true });
43
+ syncFs.mkdirSync(dir, { recursive: true });
44
44
  return { ok: true };
45
45
  } catch (err) {
46
46
  return {
@@ -53,7 +53,7 @@ function dirPermissionHint(dir) {
53
53
  const uid = typeof process.getuid === "function" ? process.getuid() : null;
54
54
  const gid = typeof process.getgid === "function" ? process.getgid() : null;
55
55
  try {
56
- const stat = fs.statSync(dir);
56
+ const stat = syncFs.statSync(dir);
57
57
  if (uid !== null && stat.uid !== uid) {
58
58
  return `Owner mismatch (uid ${stat.uid}). Run: sudo chown -R $USER "${dir}"`;
59
59
  }
@@ -71,7 +71,7 @@ function addUserRwx(mode) {
71
71
  }
72
72
  function countJsonlLines(filePath) {
73
73
  try {
74
- const raw = fs.readFileSync(filePath, "utf-8");
74
+ const raw = syncFs.readFileSync(filePath, "utf-8");
75
75
  if (!raw) {
76
76
  return 0;
77
77
  }
@@ -96,7 +96,7 @@ function findOtherStateDirs(stateDir) {
96
96
  for (const root of roots) {
97
97
  let entries = [];
98
98
  try {
99
- entries = fs.readdirSync(root, { withFileTypes: true });
99
+ entries = syncFs.readdirSync(root, { withFileTypes: true });
100
100
  } catch {
101
101
  continue;
102
102
  }
@@ -226,9 +226,9 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
226
226
  });
227
227
  if (repair) {
228
228
  try {
229
- const stat = fs.statSync(stateDir);
229
+ const stat = syncFs.statSync(stateDir);
230
230
  const target = addUserRwx(stat.mode);
231
- fs.chmodSync(stateDir, target);
231
+ syncFs.chmodSync(stateDir, target);
232
232
  changes.push(`- Repaired permissions on ${displayStateDir}`);
233
233
  } catch (err) {
234
234
  warnings.push(`- Failed to repair ${displayStateDir}: ${String(err)}`);
@@ -237,10 +237,10 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
237
237
  }
238
238
  if (stateDirExists && process.platform !== "win32") {
239
239
  try {
240
- const dirLstat = fs.lstatSync(stateDir);
240
+ const dirLstat = syncFs.lstatSync(stateDir);
241
241
  const isDirSymlink = dirLstat.isSymbolicLink();
242
- const stat = isDirSymlink ? fs.statSync(stateDir) : dirLstat;
243
- const resolvedDir = isDirSymlink ? fs.realpathSync(stateDir) : stateDir;
242
+ const stat = isDirSymlink ? syncFs.statSync(stateDir) : dirLstat;
243
+ const resolvedDir = isDirSymlink ? syncFs.realpathSync(stateDir) : stateDir;
244
244
  const isImmutableStore = resolvedDir.startsWith("/nix/store/");
245
245
  if (!isImmutableStore && (stat.mode & 63) !== 0) {
246
246
  warnings.push(`- State directory permissions are too open (${displayStateDir}). Recommend chmod 700.`);
@@ -249,7 +249,7 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
249
249
  initialValue: true
250
250
  });
251
251
  if (tighten) {
252
- fs.chmodSync(stateDir, 448);
252
+ syncFs.chmodSync(stateDir, 448);
253
253
  changes.push(`- Tightened permissions on ${displayStateDir} to 700`);
254
254
  }
255
255
  }
@@ -259,10 +259,10 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
259
259
  }
260
260
  if (configPath && existsFile(configPath) && process.platform !== "win32") {
261
261
  try {
262
- const configLstat = fs.lstatSync(configPath);
262
+ const configLstat = syncFs.lstatSync(configPath);
263
263
  const isSymlink = configLstat.isSymbolicLink();
264
- const stat = isSymlink ? fs.statSync(configPath) : configLstat;
265
- const resolvedConfig = isSymlink ? fs.realpathSync(configPath) : configPath;
264
+ const stat = isSymlink ? syncFs.statSync(configPath) : configLstat;
265
+ const resolvedConfig = isSymlink ? syncFs.realpathSync(configPath) : configPath;
266
266
  const isImmutableConfig = resolvedConfig.startsWith("/nix/store/");
267
267
  if (!isImmutableConfig && (stat.mode & 63) !== 0) {
268
268
  warnings.push(`- Config file is group/world readable (${displayConfigPath ?? configPath}). Recommend chmod 600.`);
@@ -271,7 +271,7 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
271
271
  initialValue: true
272
272
  });
273
273
  if (tighten) {
274
- fs.chmodSync(configPath, 384);
274
+ syncFs.chmodSync(configPath, 384);
275
275
  changes.push(`- Tightened permissions on ${displayConfigPath ?? configPath} to 600`);
276
276
  }
277
277
  }
@@ -330,9 +330,9 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
330
330
  });
331
331
  if (repair) {
332
332
  try {
333
- const stat = fs.statSync(dir);
333
+ const stat = syncFs.statSync(dir);
334
334
  const target = addUserRwx(stat.mode);
335
- fs.chmodSync(dir, target);
335
+ syncFs.chmodSync(dir, target);
336
336
  changes.push(`- Repaired permissions on ${label}: ${displayDir}`);
337
337
  } catch (err) {
338
338
  warnings.push(`- Failed to repair ${displayDir}: ${String(err)}`);
@@ -432,7 +432,7 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
432
432
  referencedTranscriptPaths.add(path.resolve(resolveSessionFilePath(entry.sessionId, entry, sessionPathOpts)));
433
433
  } catch {}
434
434
  }
435
- const sessionDirEntries = fs.readdirSync(sessionsDir, { withFileTypes: true });
435
+ const sessionDirEntries = syncFs.readdirSync(sessionsDir, { withFileTypes: true });
436
436
  const orphanTranscriptPaths = sessionDirEntries.filter((entry) => entry.isFile() && isPrimarySessionTranscriptFileName(entry.name)).map((entry) => path.resolve(path.join(sessionsDir, entry.name))).filter((filePath) => !referencedTranscriptPaths.has(filePath));
437
437
  if (orphanTranscriptPaths.length > 0) {
438
438
  warnings.push(`- Found ${orphanTranscriptPaths.length} orphan transcript file(s) in ${displaySessionsDir}. They are not referenced by sessions.json and can consume disk over time.`);
@@ -446,7 +446,7 @@ async function noteStateIntegrity(cfg, prompter, configPath) {
446
446
  for (const orphanPath of orphanTranscriptPaths) {
447
447
  const archivedPath = `${orphanPath}.deleted.${archivedAt}`;
448
448
  try {
449
- fs.renameSync(orphanPath, archivedPath);
449
+ syncFs.renameSync(orphanPath, archivedPath);
450
450
  archived += 1;
451
451
  } catch (err) {
452
452
  warnings.push(`- Failed to archive orphan transcript ${shortenHomePath(orphanPath)}: ${String(err)}`);
@@ -470,7 +470,7 @@ function noteWorkspaceBackupTip(workspaceDir) {
470
470
  return;
471
471
  }
472
472
  const gitMarker = path.join(workspaceDir, ".git");
473
- if (fs.existsSync(gitMarker)) {
473
+ if (syncFs.existsSync(gitMarker)) {
474
474
  return;
475
475
  }
476
476
  note([
@@ -1,6 +1,6 @@
1
1
  import { shortenHomePath } from "../utils.js";
2
2
  import { DEFAULT_AGENTS_FILENAME } from "../agents/workspace.js";
3
- import fs from "node:fs";
3
+ import syncFs from "node:fs";
4
4
  import path from "node:path";
5
5
 
6
6
  //#region src/commands/doctor-workspace.ts
@@ -16,13 +16,13 @@ async function shouldSuggestMemorySystem(workspaceDir) {
16
16
  const memoryPaths = [path.join(workspaceDir, "MEMORY.md"), path.join(workspaceDir, "memory.md")];
17
17
  for (const memoryPath of memoryPaths) {
18
18
  try {
19
- await fs.promises.access(memoryPath);
19
+ await syncFs.promises.access(memoryPath);
20
20
  return false;
21
21
  } catch {}
22
22
  }
23
23
  const agentsPath = path.join(workspaceDir, DEFAULT_AGENTS_FILENAME);
24
24
  try {
25
- const content = await fs.promises.readFile(agentsPath, "utf-8");
25
+ const content = await syncFs.promises.readFile(agentsPath, "utf-8");
26
26
  if (/memory\.md/i.test(content)) {
27
27
  return false;
28
28
  }
@@ -37,7 +37,7 @@ import { maybeRepairUiProtocolFreshness } from "./doctor-ui.js";
37
37
  import { maybeOfferUpdateBeforeDoctor } from "./doctor-update.js";
38
38
  import { MEMORY_SYSTEM_PROMPT, shouldSuggestMemorySystem } from "./doctor-workspace.js";
39
39
  import { noteWorkspaceStatus } from "./doctor-workspace-status.js";
40
- import fs from "node:fs";
40
+ import syncFs from "node:fs";
41
41
  import { intro, outro } from "@clack/prompts";
42
42
 
43
43
  //#region src/commands/doctor.ts
@@ -83,7 +83,7 @@ async function doctorCommand(runtime = defaultRuntime, options = {}) {
83
83
  `Fix: run ${formatCliCommand("fased configure")} and set Gateway mode (local/remote).`,
84
84
  `Or set directly: ${formatCliCommand("fased config set gateway.mode local")}`
85
85
  ];
86
- if (!fs.existsSync(configPath)) {
86
+ if (!syncFs.existsSync(configPath)) {
87
87
  lines.push(`Missing config: run ${formatCliCommand("fased setup")} first.`);
88
88
  }
89
89
  note$1(lines.join("\n"), "Gateway");
@@ -233,7 +233,7 @@ async function doctorCommand(runtime = defaultRuntime, options = {}) {
233
233
  await writeConfigFile(cfg);
234
234
  logConfigUpdated(runtime);
235
235
  const backupPath = `${CONFIG_PATH}.bak`;
236
- if (fs.existsSync(backupPath)) {
236
+ if (syncFs.existsSync(backupPath)) {
237
237
  runtime.log(`Backup: ${shortenHomePath(backupPath)}`);
238
238
  }
239
239
  } else if (configResult.hasPendingChanges) {
@@ -6,7 +6,7 @@ import { rawDataToString } from "../infra/ws.js";
6
6
  import { buildDeviceAuthPayload } from "../gateway/device-auth.js";
7
7
  import { PROTOCOL_VERSION } from "../gateway/protocol/schema/protocol-schemas.js";
8
8
  import "../gateway/protocol/index.js";
9
- import { WebSocket as WebSocket$1 } from "ws";
9
+ import { WebSocket } from "ws";
10
10
 
11
11
  //#region src/commands/hosted-dashboard-probe.ts
12
12
  function sanitizeErrorMessage(value) {
@@ -392,7 +392,7 @@ function probeHostedWs(params) {
392
392
  resolve(result);
393
393
  };
394
394
  const sendConnect = () => {
395
- if (!ws || ws.readyState !== WebSocket$1.OPEN || connectSent) {
395
+ if (!ws || ws.readyState !== WebSocket.OPEN || connectSent) {
396
396
  return;
397
397
  }
398
398
  connectSent = true;
@@ -438,7 +438,7 @@ function probeHostedWs(params) {
438
438
  });
439
439
  }, params.timeoutMs);
440
440
  try {
441
- ws = new WebSocket$1(params.wsUrl, {
441
+ ws = new WebSocket(params.wsUrl, {
442
442
  headers: { Origin: params.origin },
443
443
  handshakeTimeout: Math.max(1e3, Math.floor(params.timeoutMs)),
444
444
  maxPayload: 1024 * 1024
@@ -2,7 +2,7 @@ import { defaultRuntime } from "../runtime.js";
2
2
  import { readManagedFederationTokenSummary } from "../managed/federation.js";
3
3
  import { readManagedReservationSummaries } from "../managed/tunnel.js";
4
4
  import { fileURLToPath } from "node:url";
5
- import fs from "node:fs";
5
+ import syncFs from "node:fs";
6
6
  import path from "node:path";
7
7
  import { spawn } from "node:child_process";
8
8
 
@@ -44,7 +44,7 @@ function resolveManagedScriptPath() {
44
44
  candidates.push(cwdCandidate);
45
45
  }
46
46
  for (const candidate of candidates) {
47
- if (fs.existsSync(candidate)) {
47
+ if (syncFs.existsSync(candidate)) {
48
48
  return candidate;
49
49
  }
50
50
  }
@@ -1,11 +1,11 @@
1
1
  import { resolveAgentModelPrimaryValue } from "../config/model-input.js";
2
2
  import { CLOUDFLARE_AI_GATEWAY_MODEL_REFS } from "../providers/cloudflare-ai-gateway-shared.js";
3
3
  import { HUGGINGFACE_MODEL_REFS } from "../providers/huggingface-models.js";
4
- import { LITELLM_MODEL_REFS } from "../providers/litellm-models.js";
5
4
  import { OPENCODE_ZEN_MODEL_REFS } from "../providers/opencode-zen-shared.js";
6
5
  import { TOGETHER_MODEL_REFS } from "../providers/together-models.js";
7
6
  import { VENICE_MODEL_REFS } from "../providers/venice-models.js";
8
7
  import { VERCEL_AI_GATEWAY_MODEL_REFS } from "../providers/vercel-ai-gateway-models.js";
8
+ import { LITELLM_MODEL_REFS } from "../providers/litellm-models.js";
9
9
  import { BYTEPLUS_CODING_MODEL_REFS, BYTEPLUS_MODEL_REFS, COPILOT_PROXY_MODEL_REFS, GITHUB_COPILOT_MODEL_REFS, GOOGLE_API_MODEL_REFS, GOOGLE_GEMINI_CLI_MODEL_REFS, MISTRAL_MODEL_REFS, OPENAI_API_MODEL_REFS, OPENAI_SIGN_IN_MODEL_REFS, OPENROUTER_MODEL_REFS, QIANFAN_MODEL_REFS, SYNTHETIC_MODEL_REFS, VOLCENGINE_CODING_MODEL_REFS, VOLCENGINE_MODEL_REFS, XAI_MODEL_REFS, XIAOMI_MODEL_REFS, ZAI_MODEL_REFS, isStandardProviderCatalogEntry, isStandardProviderModelRef } from "../providers/registry.js";
10
10
  import { DEFAULT_MODEL, DEFAULT_PROVIDER } from "../agents/defaults.js";
11
11
  import { ensureAuthProfileStore } from "../agents/auth-profiles/store.js";
@@ -13,8 +13,9 @@ import { listProfilesForProvider } from "../agents/auth-profiles/profiles.js";
13
13
  import "../agents/auth-profiles.js";
14
14
  import { getCustomProviderApiKey, resolveEnvApiKey } from "../agents/model-auth.js";
15
15
  import { buildAllowedModelSet, buildModelAliasIndex, modelKey, normalizeProviderId, resolveConfiguredModelRef } from "../agents/model-selection.js";
16
- import { buildCredentialScopedAllowedModelSet } from "../agents/model-catalog-access.js";
17
16
  import { formatModelFeatureList } from "../agents/model-metadata.js";
17
+ import { buildCredentialScopedAllowedModelSet } from "../agents/model-catalog-access.js";
18
+ import { resolveAuthenticatedModelCatalog } from "../agents/authenticated-model-catalog.js";
18
19
  import { loadModelCatalog } from "../agents/model-catalog.js";
19
20
  import { loadPreviewModelListSources } from "./models/list.preview-catalog.js";
20
21
  import { formatTokenK } from "./models/shared.js";
@@ -205,14 +206,32 @@ function loadModelPickerPreviewCatalog(cfg) {
205
206
  catalogSource: "current-preview"
206
207
  }));
207
208
  }
208
- async function loadModelPickerCatalog(cfg) {
209
+ async function loadModelPickerCatalog(cfg, agentDir) {
209
210
  const catalog = await loadModelCatalog({
210
211
  config: cfg,
211
212
  useCache: false,
212
213
  includeMetadata: true
213
214
  });
214
215
  const models = catalog.length > 0 ? catalog : loadModelPickerPreviewCatalog(cfg);
215
- return models.filter(isStandardProviderCatalogEntry);
216
+ const standardModels = models.filter(isStandardProviderCatalogEntry);
217
+ if (!agentDir) {
218
+ return standardModels;
219
+ }
220
+ const store = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false });
221
+ const authenticated = await resolveAuthenticatedModelCatalog({
222
+ cfg,
223
+ store,
224
+ catalog: standardModels,
225
+ defaultProvider: DEFAULT_PROVIDER,
226
+ agentDir
227
+ });
228
+ return authenticated.allowedCatalog.length > 0 ? authenticated.allowedCatalog : authenticated.usableCatalog;
229
+ }
230
+ async function resolveAuthenticatedDefaultModel(params) {
231
+ const catalog = await loadModelPickerCatalog(params.config, params.agentDir);
232
+ const preferredProvider = normalizeProviderId(params.preferredProvider ?? "");
233
+ const candidate = (preferredProvider ? catalog.find((entry) => normalizeProviderId(entry.provider) === preferredProvider) : undefined) ?? catalog[0];
234
+ return candidate ? modelKey(candidate.provider, candidate.id) : undefined;
216
235
  }
217
236
  async function promptManualModel(params) {
218
237
  const modelInput = await params.prompter.text({
@@ -244,7 +263,7 @@ async function promptDefaultModel(params) {
244
263
  const resolvedKey = modelKey(resolved.provider, resolved.model);
245
264
  const configuredKey = configuredRaw ? resolvedKey : "";
246
265
  const allowKeep = allowKeepRequested && !isHiddenRouterModelRef(configuredRaw);
247
- const catalog = await loadModelPickerCatalog(cfg);
266
+ const catalog = await loadModelPickerCatalog(cfg, params.ignoreAllowlist ? undefined : params.agentDir);
248
267
  if (catalog.length === 0) {
249
268
  return promptManualModel({
250
269
  prompter: params.prompter,
@@ -464,7 +483,7 @@ async function promptModelAllowlist(params) {
464
483
  ...params.initialSelections ?? []
465
484
  ]);
466
485
  const initialKeys = allowedKeySet ? initialSeeds.filter((key) => allowedKeySet.has(key)) : initialSeeds;
467
- const catalog = await loadModelPickerCatalog(cfg);
486
+ const catalog = await loadModelPickerCatalog(cfg, params.agentDir);
468
487
  if (catalog.length === 0 && allowedKeys.length === 0) {
469
488
  const raw = await params.prompter.text({
470
489
  message: params.message ?? "Allowlist models (comma-separated provider/model; blank to keep current)",
@@ -503,7 +522,7 @@ async function promptModelAllowlist(params) {
503
522
  hasAuth
504
523
  });
505
524
  }
506
- const supplementalKeys = allowedKeySet ? allowedKeys : existingKeys;
525
+ const supplementalKeys = allowedKeySet ? allowedKeys : params.agentDir ? [] : existingKeys;
507
526
  for (const key of supplementalKeys) {
508
527
  if (seen.has(key)) {
509
528
  continue;
@@ -630,4 +649,4 @@ function applyModelFallbacksFromSelection(cfg, selection) {
630
649
  }
631
650
 
632
651
  //#endregion
633
- export { applyModelAllowlist, applyModelFallbacksFromSelection, applyPrimaryModel, promptModelAllowlist };
652
+ export { applyModelAllowlist, applyModelFallbacksFromSelection, applyPrimaryModel, promptModelAllowlist, resolveAuthenticatedDefaultModel };
@@ -11,8 +11,8 @@ import { getCustomProviderApiKey, resolveEnvApiKey } from "../../agents/model-au
11
11
  import { findNormalizedProviderValue, normalizeProviderId, parseModelRef } from "../../agents/model-selection.js";
12
12
  import { resolveSessionTranscriptPath, resolveSessionTranscriptsDirForAgent } from "../../config/sessions/paths.js";
13
13
  import "../../agents/pi-embedded.js";
14
- import { describeFailoverError } from "../../agents/failover-error.js";
15
14
  import { loadModelCatalog } from "../../agents/model-catalog.js";
15
+ import { describeFailoverError } from "../../agents/failover-error.js";
16
16
  import { runEmbeddedPiAgent } from "../../agents/pi-embedded-runner/run.js";
17
17
  import { redactSecrets } from "../status-all/format.js";
18
18
  import { formatMs } from "./shared.js";
@@ -1,8 +1,12 @@
1
+ import { DEFAULT_PROVIDER } from "../../agents/defaults.js";
1
2
  import { resolveFasedAgentAgentDir } from "../../agents/agent-paths.js";
3
+ import { ensureAuthProfileStore } from "../../agents/auth-profiles/store.js";
4
+ import "../../agents/auth-profiles.js";
2
5
  import { modelKey } from "../../agents/model-selection.js";
3
6
  import { ensureFasedAgentModelsJson } from "../../agents/models-config.js";
4
7
  import { discoverAuthStorage, discoverModels } from "../../agents/pi-model-discovery.js";
5
8
  import { deriveModelMetadata, formatModelFeatureList } from "../../agents/model-metadata.js";
9
+ import { resolveAuthenticatedModelCatalog } from "../../agents/authenticated-model-catalog.js";
6
10
  import { loadModelCatalog } from "../../agents/model-catalog.js";
7
11
  import { isLocalBaseUrl } from "./shared.js";
8
12
  import { createModelListAuthIndex } from "./list.auth-index.js";
@@ -58,34 +62,26 @@ function normalizeModelListSource(model) {
58
62
  metadata: "metadata" in model ? model.metadata : undefined
59
63
  };
60
64
  }
61
- function mergeModelCatalogEntries(params) {
62
- const models = params.registryModels.map((model) => normalizeModelListSource(model));
63
- const seen = new Set(models.map((model) => modelKey(model.provider, model.id)));
64
- for (const entry of params.catalog) {
65
- const key = modelKey(entry.provider, entry.id);
66
- if (seen.has(key)) {
67
- continue;
68
- }
69
- models.push(normalizeModelListSource(entry));
70
- seen.add(key);
71
- }
72
- return models;
73
- }
74
65
  async function loadModelRegistry(cfg) {
75
66
  await ensureFasedAgentModelsJson(cfg);
76
67
  const agentDir = resolveFasedAgentAgentDir();
77
68
  const authStorage = discoverAuthStorage(agentDir);
78
69
  const registry = discoverModels(authStorage, agentDir);
79
- const registryModels = registry.getAll();
70
+ registry.getAll();
80
71
  const catalog = await loadModelCatalog({
81
72
  config: cfg,
82
73
  useCache: false,
83
74
  includeMetadata: true
84
75
  });
85
- const models = mergeModelCatalogEntries({
86
- registryModels,
87
- catalog
76
+ const store = ensureAuthProfileStore(agentDir, { allowKeychainPrompt: false });
77
+ const authenticated = await resolveAuthenticatedModelCatalog({
78
+ cfg,
79
+ store,
80
+ catalog,
81
+ defaultProvider: DEFAULT_PROVIDER,
82
+ agentDir
88
83
  });
84
+ const models = authenticated.usableCatalog.map((model) => normalizeModelListSource(model));
89
85
  let availableKeys;
90
86
  let availabilityErrorMessage;
91
87
  try {
@@ -16,12 +16,12 @@ import "../../agents/auth-profiles.js";
16
16
  import { resolveEnvApiKey } from "../../agents/model-auth.js";
17
17
  import { buildModelAliasIndex, parseModelRef, resolveConfiguredModelRef, resolveDefaultModelForAgent, resolveModelRefFromString } from "../../agents/model-selection.js";
18
18
  import { withProgressTotals } from "../../cli/progress.js";
19
+ import { loadProviderExtensionCatalogIndex } from "../../agents/provider-extension-catalog-index.js";
20
+ import { loadModelCatalog } from "../../agents/model-catalog.js";
19
21
  import { resolveUsageProviderId } from "../../infra/provider-usage.shared.js";
20
22
  import { formatUsageWindowSummary } from "../../infra/provider-usage.format.js";
21
23
  import { loadProviderUsageSummary } from "../../infra/provider-usage.load.js";
22
24
  import "../../infra/provider-usage.js";
23
- import { loadProviderExtensionCatalogIndex } from "../../agents/provider-extension-catalog-index.js";
24
- import { loadModelCatalog } from "../../agents/model-catalog.js";
25
25
  import { renderTable } from "../../terminal/table.js";
26
26
  import { buildModelCatalogStatus } from "../../agents/model-catalog-status.js";
27
27
  import { DEFAULT_OAUTH_WARN_MS, buildAuthHealthSummary, formatRemainingShort } from "../../agents/auth-health.js";
@@ -1,8 +1,8 @@
1
1
  import { HUGGINGFACE_BASE_URL, HUGGINGFACE_DEFAULT_MODEL_REF, HUGGINGFACE_MODEL_CATALOG, buildHuggingfaceModelDefinition } from "../providers/huggingface-models.js";
2
- import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID } from "../providers/litellm-models.js";
3
2
  import { SYNTHETIC_BASE_URL, SYNTHETIC_DEFAULT_MODEL_REF, SYNTHETIC_MODEL_CATALOG, buildSyntheticModelDefinition } from "../providers/synthetic-models.js";
4
3
  import { TOGETHER_BASE_URL, TOGETHER_DEFAULT_MODEL_REF, TOGETHER_MODEL_CATALOG, buildTogetherModelDefinition } from "../providers/together-models.js";
5
4
  import { VENICE_BASE_URL, VENICE_DEFAULT_MODEL_REF, VENICE_MODEL_CATALOG, buildVeniceModelDefinition } from "../providers/venice-models.js";
5
+ import { LITELLM_BASE_URL, LITELLM_DEFAULT_MODEL_ID } from "../providers/litellm-models.js";
6
6
  import { CHUTES_BASE_URL, CHUTES_DEFAULT_MODEL_REF, CHUTES_MODEL_CATALOG, buildChutesModelDefinition } from "../agents/chutes-models.js";
7
7
  import "../agents/huggingface-models.js";
8
8
  import "../agents/synthetic-models.js";