@fased/fased 0.1.45 → 0.1.47

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 (685) hide show
  1. package/dist/acp/client.js +2 -2
  2. package/dist/acp/control-plane/spawn.js +1 -1
  3. package/dist/acp/secret-file.js +2 -2
  4. package/dist/agents/acp-spawn-parent-stream.js +2 -2
  5. package/dist/agents/acp-spawn.js +3 -3
  6. package/dist/agents/agent-scope.js +2 -2
  7. package/dist/agents/apply-patch.js +8 -8
  8. package/dist/agents/auth-profiles/paths.js +2 -2
  9. package/dist/agents/auth-profiles/store.js +2 -2
  10. package/dist/agents/bash-tools.exec-approval-request.js +1 -1
  11. package/dist/agents/bash-tools.exec-host-node.js +1 -1
  12. package/dist/agents/bash-tools.exec-runtime.js +1 -1
  13. package/dist/agents/bash-tools.exec.js +1 -1
  14. package/dist/agents/bash-tools.shared.js +2 -2
  15. package/dist/agents/cli-credentials.js +4 -4
  16. package/dist/agents/defaults.js +1 -1
  17. package/dist/agents/docs-path.js +3 -3
  18. package/dist/agents/embedded-pi-mcp.js +4 -4
  19. package/dist/agents/fased-tools.js +4 -4
  20. package/dist/agents/identity-avatar.js +4 -4
  21. package/dist/agents/identity-file.js +2 -2
  22. package/dist/agents/pi-embedded-runner/compact.js +4 -4
  23. package/dist/agents/pi-embedded-runner/run/attempt.js +5 -5
  24. package/dist/agents/pi-embedded-runner/run/images.js +1 -1
  25. package/dist/agents/pi-embedded-runner/run.js +2 -2
  26. package/dist/agents/pi-embedded-runner/system-prompt.js +1 -1
  27. package/dist/agents/pi-embedded-subscribe.handlers.compaction.js +1 -1
  28. package/dist/agents/pi-embedded-subscribe.handlers.messages.js +1 -1
  29. package/dist/agents/pi-embedded-subscribe.js +2 -2
  30. package/dist/agents/pi-embedded-subscribe.raw-stream.js +3 -3
  31. package/dist/agents/pi-embedded-subscribe.tools.js +1 -1
  32. package/dist/agents/pi-extensions/compaction-safeguard.js +3 -3
  33. package/dist/agents/pi-model-discovery.js +6 -6
  34. package/dist/agents/pi-project-settings.js +3 -3
  35. package/dist/agents/pi-tools.js +2 -2
  36. package/dist/agents/pi-tools.read.js +1 -1
  37. package/dist/agents/sandbox/browser.js +2 -2
  38. package/dist/agents/sandbox/context.js +2 -2
  39. package/dist/agents/sandbox/docker.js +1 -1
  40. package/dist/agents/sandbox/fs-bridge.js +2 -2
  41. package/dist/agents/sandbox/manage.js +2 -2
  42. package/dist/agents/sandbox/prune.js +2 -2
  43. package/dist/agents/session-dirs.js +4 -4
  44. package/dist/agents/session-write-lock.js +13 -13
  45. package/dist/agents/shell-utils.js +5 -5
  46. package/dist/agents/skills/bundled-dir.js +4 -4
  47. package/dist/agents/skills/local-loader.js +6 -6
  48. package/dist/agents/skills/plugin-skills.js +2 -2
  49. package/dist/agents/skills/workspace.js +13 -13
  50. package/dist/agents/skills-install-download.js +7 -7
  51. package/dist/agents/skills-install-plan.js +2 -2
  52. package/dist/agents/skills-install.js +2 -2
  53. package/dist/agents/skills-status.js +2 -2
  54. package/dist/agents/subagent-announce-output.js +3 -3
  55. package/dist/agents/subagent-announce.js +6 -6
  56. package/dist/agents/subagent-announce.runtime.js +1 -1
  57. package/dist/agents/subagent-depth.js +2 -2
  58. package/dist/agents/subagent-registry.js +3 -3
  59. package/dist/agents/subagent-spawn.js +2 -2
  60. package/dist/agents/system-prompt-params.js +3 -3
  61. package/dist/agents/tool-images.js +1 -1
  62. package/dist/agents/tools/canvas-tool.js +2 -2
  63. package/dist/agents/tools/cron-tool.js +1 -1
  64. package/dist/agents/tools/diff-view-tool.js +1 -1
  65. package/dist/agents/tools/discord-actions-messaging.js +1 -1
  66. package/dist/agents/tools/gateway-tool.js +1 -1
  67. package/dist/agents/tools/gateway.js +1 -1
  68. package/dist/agents/tools/marketplace-offer-draft-tool.js +3 -3
  69. package/dist/agents/tools/message-tool.js +5 -5
  70. package/dist/agents/tools/mining-tool.js +1 -1
  71. package/dist/agents/tools/nodes-tool.js +1 -1
  72. package/dist/agents/tools/session-status-tool.js +3 -3
  73. package/dist/agents/tools/sessions-history-tool.js +1 -1
  74. package/dist/agents/tools/sessions-list-tool.js +1 -1
  75. package/dist/agents/tools/sessions-send-tool.a2a.js +1 -1
  76. package/dist/agents/tools/sessions-send-tool.js +1 -1
  77. package/dist/agents/tools/slack-actions.js +1 -1
  78. package/dist/agents/tools/subagents-tool.js +3 -3
  79. package/dist/agents/tools/telegram-actions.js +1 -1
  80. package/dist/agents/tools/tts-tool.js +1 -1
  81. package/dist/agents/tools/wallet-action-tool.js +4 -4
  82. package/dist/agents/tools/wallet-tool.js +7 -7
  83. package/dist/agents/tools/web-fetch.js +1 -1
  84. package/dist/agents/workspace.js +22 -22
  85. package/dist/auto-reply/chunk.js +1 -1
  86. package/dist/auto-reply/envelope.js +1 -1
  87. package/dist/auto-reply/reply/abort.js +2 -2
  88. package/dist/auto-reply/reply/agent-runner-execution.js +4 -4
  89. package/dist/auto-reply/reply/agent-runner-memory.js +2 -2
  90. package/dist/auto-reply/reply/agent-runner-payloads.js +1 -1
  91. package/dist/auto-reply/reply/agent-runner.js +8 -8
  92. package/dist/auto-reply/reply/bash-command.js +1 -1
  93. package/dist/auto-reply/reply/commands-acp/diagnostics.js +1 -1
  94. package/dist/auto-reply/reply/commands-acp/lifecycle.js +2 -2
  95. package/dist/auto-reply/reply/commands-acp/shared.js +1 -1
  96. package/dist/auto-reply/reply/commands-compact.js +2 -2
  97. package/dist/auto-reply/reply/commands-control.js +1 -1
  98. package/dist/auto-reply/reply/commands-export-session.js +7 -7
  99. package/dist/auto-reply/reply/commands-models.js +1 -1
  100. package/dist/auto-reply/reply/commands-session-abort.js +2 -2
  101. package/dist/auto-reply/reply/commands-status.js +2 -2
  102. package/dist/auto-reply/reply/commands-subagents/action-focus.js +1 -1
  103. package/dist/auto-reply/reply/commands-subagents/action-kill.js +2 -2
  104. package/dist/auto-reply/reply/commands-subagents/action-send.js +1 -1
  105. package/dist/auto-reply/reply/commands-subagents/shared.js +1 -1
  106. package/dist/auto-reply/reply/dispatch-acp.js +5 -5
  107. package/dist/auto-reply/reply/dispatch-from-config.js +2 -2
  108. package/dist/auto-reply/reply/followup-runner.js +4 -4
  109. package/dist/auto-reply/reply/get-reply-directives.js +2 -2
  110. package/dist/auto-reply/reply/get-reply-inline-actions.js +2 -2
  111. package/dist/auto-reply/reply/get-reply-run.js +4 -4
  112. package/dist/auto-reply/reply/model-selection.js +2 -2
  113. package/dist/auto-reply/reply/post-compaction-audit.js +3 -3
  114. package/dist/auto-reply/reply/post-compaction-context.js +3 -3
  115. package/dist/auto-reply/reply/queue/cleanup.js +1 -1
  116. package/dist/auto-reply/reply/reply-delivery.js +1 -1
  117. package/dist/auto-reply/reply/reply-directives.js +1 -1
  118. package/dist/auto-reply/reply/route-reply.js +1 -1
  119. package/dist/auto-reply/reply/session-reset-model.js +1 -1
  120. package/dist/auto-reply/reply/session-updates.js +1 -1
  121. package/dist/auto-reply/reply/session.js +3 -3
  122. package/dist/auto-reply/reply/streaming-directives.js +1 -1
  123. package/dist/auto-reply/reply.js +1 -1
  124. package/dist/auto-reply/skill-commands.js +3 -3
  125. package/dist/auto-reply/status.js +9 -9
  126. package/dist/brand.js +1 -1
  127. package/dist/browser/chrome.executables.js +3 -3
  128. package/dist/browser/chrome.js +3 -3
  129. package/dist/browser/chrome.profile-decoration.js +6 -6
  130. package/dist/browser/profiles-service.js +2 -2
  131. package/dist/browser/server-context.js +2 -2
  132. package/dist/browser/trash.js +4 -4
  133. package/dist/build-info.json +3 -3
  134. package/dist/bundled/session-memory/handler.js +1 -1
  135. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  136. package/dist/canvas-host/a2ui.js +1 -1
  137. package/dist/canvas-host/server.js +5 -5
  138. package/dist/capabilities/catalog.js +3 -3
  139. package/dist/channel-web.js +1 -1
  140. package/dist/channels/plugins/actions/signal.js +1 -1
  141. package/dist/channels/plugins/actions/telegram.js +2 -2
  142. package/dist/channels/plugins/catalog.js +3 -3
  143. package/dist/channels/plugins/onboarding/discord.js +1 -1
  144. package/dist/channels/plugins/onboarding/imessage.js +1 -1
  145. package/dist/cli/browser-cli-extension.js +7 -7
  146. package/dist/cli/command-format.js +2 -2
  147. package/dist/cli/components-cli.js +1 -1
  148. package/dist/cli/cron-cli/register.cron-simple.js +2 -2
  149. package/dist/cli/cron-cli/shared.js +1 -1
  150. package/dist/cli/daemon-cli/install.js +2 -2
  151. package/dist/cli/daemon-cli/status.gather.js +1 -1
  152. package/dist/cli/daemon-cli/status.print.js +1 -1
  153. package/dist/cli/directory-cli.js +1 -1
  154. package/dist/cli/dns-cli.js +9 -9
  155. package/dist/cli/exec-approvals-cli.js +2 -2
  156. package/dist/cli/federation-cli.js +3 -3
  157. package/dist/cli/gateway-cli/dev.js +5 -5
  158. package/dist/cli/gateway-cli/register.js +3 -3
  159. package/dist/cli/gateway-cli/run.js +3 -3
  160. package/dist/cli/hooks-cli.js +6 -6
  161. package/dist/cli/memory-cli.js +7 -7
  162. package/dist/cli/node-cli/daemon.js +1 -1
  163. package/dist/cli/nodes-cli/register.status.js +1 -1
  164. package/dist/cli/nodes-cli/rpc.js +1 -1
  165. package/dist/cli/nodes-media-utils.js +2 -2
  166. package/dist/cli/plugins-cli.js +3 -3
  167. package/dist/cli/program/message/helpers.js +1 -1
  168. package/dist/cli/program/register.agent.js +1 -1
  169. package/dist/cli/program/register.status-health-sessions.js +1 -1
  170. package/dist/cli/program/register.wallet.js +1 -1
  171. package/dist/cli/run-main.js +1 -1
  172. package/dist/cli/secrets-cli.js +3 -3
  173. package/dist/cli/tui-cli.js +1 -1
  174. package/dist/cli/update-cli/status.js +1 -1
  175. package/dist/cli/update-cli/update-command.js +3 -3
  176. package/dist/cli/windows-argv.js +2 -2
  177. package/dist/commands/agent/attempt.js +1 -1
  178. package/dist/commands/agent/delivery.js +2 -2
  179. package/dist/commands/agent.js +9 -9
  180. package/dist/commands/agents.commands.add.js +1 -1
  181. package/dist/commands/agents.commands.delete.js +1 -1
  182. package/dist/commands/channels/add.js +2 -2
  183. package/dist/commands/channels/list.js +2 -2
  184. package/dist/commands/channels/status.js +1 -1
  185. package/dist/commands/configure.daemon.js +1 -1
  186. package/dist/commands/configure.wizard.js +1 -1
  187. package/dist/commands/dashboard-link.js +3 -3
  188. package/dist/commands/dashboard.js +2 -2
  189. package/dist/commands/docs.js +1 -1
  190. package/dist/commands/doctor-config-flow.js +2 -2
  191. package/dist/commands/doctor-format.js +1 -1
  192. package/dist/commands/doctor-gateway-daemon-flow.js +5 -5
  193. package/dist/commands/doctor-gateway-services.js +2 -2
  194. package/dist/commands/doctor-install.js +5 -5
  195. package/dist/commands/doctor-memory-search.js +2 -2
  196. package/dist/commands/doctor-platform-notes.js +2 -2
  197. package/dist/commands/doctor-sandbox.js +2 -2
  198. package/dist/commands/doctor-security.js +1 -1
  199. package/dist/commands/doctor-state-integrity.js +23 -23
  200. package/dist/commands/doctor-workspace.js +3 -3
  201. package/dist/commands/doctor.js +4 -4
  202. package/dist/commands/gateway-status.js +2 -2
  203. package/dist/commands/hosted-dashboard-probe.js +2 -2
  204. package/dist/commands/managed-up.js +2 -2
  205. package/dist/commands/message.js +1 -1
  206. package/dist/commands/models/list.probe.js +3 -3
  207. package/dist/commands/models/list.status-command.js +3 -3
  208. package/dist/commands/onboard-auth.credentials.js +3 -3
  209. package/dist/commands/onboard-channels.js +1 -1
  210. package/dist/commands/onboard-helpers.js +1 -1
  211. package/dist/commands/onboard-non-interactive/local/daemon-install.js +2 -2
  212. package/dist/commands/onboard-non-interactive/local.js +1 -1
  213. package/dist/commands/onboard-skills.js +1 -1
  214. package/dist/commands/onboarding/plugin-install.js +3 -3
  215. package/dist/commands/openai-model-default.js +1 -1
  216. package/dist/commands/sessions-cleanup.js +2 -2
  217. package/dist/commands/signal-install.js +6 -6
  218. package/dist/commands/status-all/channels.js +3 -3
  219. package/dist/commands/status-all/diagnosis.js +1 -1
  220. package/dist/commands/status-all/format.js +1 -1
  221. package/dist/commands/status-all.js +8 -8
  222. package/dist/commands/status.command.js +4 -4
  223. package/dist/commands/status.gateway-probe.js +1 -1
  224. package/dist/commands/status.scan.js +3 -3
  225. package/dist/commands/status.summary.js +1 -1
  226. package/dist/commands/wallet.js +51 -50
  227. package/dist/config/cache-utils.js +2 -2
  228. package/dist/config/includes.js +5 -5
  229. package/dist/config/io.js +2 -2
  230. package/dist/config/paths.js +3 -3
  231. package/dist/config/sat-runtime-ids.js +3 -3
  232. package/dist/config/sessions/disk-budget.js +6 -6
  233. package/dist/config/sessions/paths.js +2 -2
  234. package/dist/config/sessions/store.js +17 -17
  235. package/dist/config/sessions/transcript.js +4 -4
  236. package/dist/config/talk.js +2 -2
  237. package/dist/control-ui/assets/{app-JBrTSsNu.js → app-CHqTx3P_.js} +4 -4
  238. package/dist/control-ui/assets/chat-model-ref-BbrdMKjQ.js +2 -0
  239. package/dist/control-ui/assets/{index-H-2DWAnH.js → index-CFHfNlLv.js} +3 -3
  240. package/dist/control-ui/assets/{providers-C9hLw4o6.js → providers-DqFL6WrJ.js} +2 -2
  241. package/dist/control-ui/index.html +1 -1
  242. package/dist/cron/isolated-agent/delivery-dispatch.js +2 -2
  243. package/dist/cron/isolated-agent/delivery-target.js +1 -1
  244. package/dist/cron/isolated-agent/run.js +5 -5
  245. package/dist/cron/service/store.js +2 -2
  246. package/dist/cron/store.js +6 -6
  247. package/dist/daemon/service-audit.js +2 -2
  248. package/dist/daemon/systemd-system.js +10 -10
  249. package/dist/discord/monitor/agent-components.js +9 -9
  250. package/dist/discord/monitor/gateway-plugin.js +1 -1
  251. package/dist/discord/monitor/listeners.js +2 -2
  252. package/dist/discord/monitor/message-handler.js +1 -1
  253. package/dist/discord/monitor/message-handler.preflight.js +8 -8
  254. package/dist/discord/monitor/message-handler.process.js +5 -5
  255. package/dist/discord/monitor/native-command.js +9 -9
  256. package/dist/discord/monitor/provider.js +2 -2
  257. package/dist/discord/monitor/reply-delivery.js +1 -1
  258. package/dist/discord/monitor/thread-bindings.state.js +2 -2
  259. package/dist/discord/send.outbound.js +1 -1
  260. package/dist/discord/voice/command.js +1 -1
  261. package/dist/extensionAPI.js +1 -1
  262. package/dist/extensions/sat-mining/src/rpc-read.js +7 -3
  263. package/dist/extensions/sat-mining/src/sat-bond-layout.js +9 -9
  264. package/dist/extensions/sat-mining/src/solana-submit.js +2 -2
  265. package/dist/federation/auto-connect.js +1 -1
  266. package/dist/federation/marketplace-capability-adapter.js +1 -1
  267. package/dist/federation/marketplace-delivery.js +1 -1
  268. package/dist/federation/marketplace-direct-payment.js +1 -1
  269. package/dist/federation/marketplace-escrow.js +2 -2
  270. package/dist/federation/settlement-evidence.js +1 -1
  271. package/dist/gateway/a2a-http.js +1 -1
  272. package/dist/gateway/call.js +2 -2
  273. package/dist/gateway/client.js +3 -3
  274. package/dist/gateway/control-ui-boot-check.js +7 -7
  275. package/dist/gateway/control-ui-login.js +7 -7
  276. package/dist/gateway/control-ui.js +10 -10
  277. package/dist/gateway/federation-http.js +3 -3
  278. package/dist/gateway/federation-marketplace.js +1 -1
  279. package/dist/gateway/hooks-mapping.js +4 -4
  280. package/dist/gateway/hooks.js +1 -1
  281. package/dist/gateway/openai-http.js +1 -1
  282. package/dist/gateway/openresponses-http.js +1 -1
  283. package/dist/gateway/server/health-state.js +1 -1
  284. package/dist/gateway/server/hooks.js +2 -2
  285. package/dist/gateway/server/ws-connection/message-handler.js +6 -6
  286. package/dist/gateway/server-channels.js +1 -1
  287. package/dist/gateway/server-cron.js +3 -3
  288. package/dist/gateway/server-discovery.js +2 -2
  289. package/dist/gateway/server-http.js +17 -17
  290. package/dist/gateway/server-methods/agent.js +4 -4
  291. package/dist/gateway/server-methods/agents.js +1 -1
  292. package/dist/gateway/server-methods/channels.js +1 -1
  293. package/dist/gateway/server-methods/chat.js +6 -6
  294. package/dist/gateway/server-methods/commands.js +1 -1
  295. package/dist/gateway/server-methods/devices.js +1 -1
  296. package/dist/gateway/server-methods/doctor.js +2 -2
  297. package/dist/gateway/server-methods/hooks.js +1 -1
  298. package/dist/gateway/server-methods/models.js +1 -1
  299. package/dist/gateway/server-methods/nodes.js +2 -2
  300. package/dist/gateway/server-methods/send.js +4 -4
  301. package/dist/gateway/server-methods/services.js +1 -1
  302. package/dist/gateway/server-methods/sessions.js +12 -12
  303. package/dist/gateway/server-methods/skills.js +2 -2
  304. package/dist/gateway/server-methods/system.js +1 -1
  305. package/dist/gateway/server-methods/tts.js +2 -2
  306. package/dist/gateway/server-methods/usage.js +2 -2
  307. package/dist/gateway/server-node-events.js +5 -5
  308. package/dist/gateway/server-reload-handlers.js +3 -3
  309. package/dist/gateway/server-restart-sentinel.js +3 -3
  310. package/dist/gateway/server.impl.js +19 -19
  311. package/dist/gateway/session-compaction-checkpoints.js +4 -4
  312. package/dist/gateway/session-utils.fs.js +24 -24
  313. package/dist/gateway/session-utils.js +6 -6
  314. package/dist/gateway/sessions-patch.js +2 -2
  315. package/dist/gateway/tools-invoke-http.js +2 -2
  316. package/dist/hooks/bundled-dir.js +4 -4
  317. package/dist/hooks/gmail-setup-utils.js +6 -6
  318. package/dist/hooks/import-url.js +2 -2
  319. package/dist/hooks/loader.js +5 -5
  320. package/dist/hooks/workspace.js +7 -7
  321. package/dist/imessage/monitor/deliver.js +1 -1
  322. package/dist/imessage/monitor/inbound-processing.js +4 -4
  323. package/dist/imessage/monitor/monitor-provider.js +2 -2
  324. package/dist/imessage/send.js +2 -2
  325. package/dist/index.js +1 -1
  326. package/dist/infra/archive.js +17 -17
  327. package/dist/infra/boundary-file-read.js +2 -2
  328. package/dist/infra/boundary-path.js +15 -15
  329. package/dist/infra/brew.js +2 -2
  330. package/dist/infra/control-ui-assets.js +14 -14
  331. package/dist/infra/device-auth-store.js +8 -8
  332. package/dist/infra/device-identity.js +8 -8
  333. package/dist/infra/dotenv.js +2 -2
  334. package/dist/infra/exec-approvals.js +9 -9
  335. package/dist/infra/exec-command-resolution.js +4 -4
  336. package/dist/infra/exec-safe-bin-trust.js +2 -2
  337. package/dist/infra/fased-root.js +5 -5
  338. package/dist/infra/fs-safe.js +14 -14
  339. package/dist/infra/gateway-lock.js +11 -11
  340. package/dist/infra/git-commit.js +5 -5
  341. package/dist/infra/git-root.js +4 -4
  342. package/dist/infra/heartbeat-runner.js +8 -8
  343. package/dist/infra/hosted-runtime-artifact.js +3 -3
  344. package/dist/infra/is-main.js +2 -2
  345. package/dist/infra/json-file.js +7 -7
  346. package/dist/infra/outbound/channel-resolution.js +1 -1
  347. package/dist/infra/outbound/deliver.js +3 -3
  348. package/dist/infra/outbound/delivery-queue.js +16 -16
  349. package/dist/infra/outbound/message-action-params.js +2 -2
  350. package/dist/infra/outbound/message-action-runner.js +4 -4
  351. package/dist/infra/outbound/message.js +3 -3
  352. package/dist/infra/outbound/outbound-session.js +1 -1
  353. package/dist/infra/outbound/payloads.js +1 -1
  354. package/dist/infra/path-env.js +3 -3
  355. package/dist/infra/ports-lsof.js +4 -4
  356. package/dist/infra/provider-usage.auth.js +3 -3
  357. package/dist/infra/safe-open-sync.js +2 -2
  358. package/dist/infra/session-cost-usage.js +9 -9
  359. package/dist/infra/session-maintenance-warning.js +1 -1
  360. package/dist/infra/shell-env.js +2 -2
  361. package/dist/infra/skills-remote.js +1 -1
  362. package/dist/infra/state-migrations.fs.js +6 -6
  363. package/dist/infra/state-migrations.js +23 -23
  364. package/dist/infra/tmp-fased-dir.js +6 -6
  365. package/dist/infra/update-runner.js +1 -1
  366. package/dist/infra/widearea-dns.js +3 -3
  367. package/dist/infra/wsl.js +2 -2
  368. package/dist/light-update-status.js +11 -11
  369. package/dist/line/accounts.js +2 -2
  370. package/dist/line/bot-handlers.js +2 -2
  371. package/dist/line/bot-message-context.js +2 -2
  372. package/dist/line/download.js +3 -3
  373. package/dist/line/monitor.js +3 -3
  374. package/dist/line/webhook-node.js +1 -1
  375. package/dist/llm-slug-generator.js +1 -1
  376. package/dist/logging/config.js +3 -3
  377. package/dist/logging/logger.js +7 -7
  378. package/dist/managed/federation.js +3 -3
  379. package/dist/managed/tunnel.js +3 -3
  380. package/dist/media/fetch.js +1 -1
  381. package/dist/media/input-files.js +2 -2
  382. package/dist/media/store.js +14 -14
  383. package/dist/media-understanding/attachments.js +4 -4
  384. package/dist/media-understanding/providers/google/inline-data.js +1 -1
  385. package/dist/media-understanding/providers/shared.js +1 -1
  386. package/dist/media-understanding/runner.js +3 -3
  387. package/dist/memory/embeddings.js +2 -2
  388. package/dist/memory/internal.js +10 -10
  389. package/dist/memory/manager-sync-ops.js +7 -7
  390. package/dist/memory/repair-executor.js +17 -17
  391. package/dist/node-host/invoke-system-run-plan.js +8 -8
  392. package/dist/node-host/invoke.js +2 -2
  393. package/dist/node-host/runner.js +5 -5
  394. package/dist/pairing/pairing-store.js +3 -3
  395. package/dist/plugin-sdk/{accounts-Bz_2QZSt.js → accounts-DzLdrOVC.js} +1 -1
  396. package/dist/plugin-sdk/{actions-CysoQjk1.js → actions-PhofTgnO.js} +4 -4
  397. package/dist/plugin-sdk/{active-listener-C5ALSs7Y.js → active-listener-C8a74qPO.js} +1 -1
  398. package/dist/plugin-sdk/{allow-list-yqasgPpz.js → allow-list-BYeKk0Sy.js} +2 -2
  399. package/dist/plugin-sdk/{audio-preflight-CKgOmu0p.js → audio-preflight-CARAVcz-.js} +51 -49
  400. package/dist/plugin-sdk/{audit-BFnu5TVB.js → audit-ByK45Q1d.js} +1 -1
  401. package/dist/plugin-sdk/{channel-access-BiWxa3LR.js → channel-access-BEin0yA4.js} +1 -1
  402. package/dist/plugin-sdk/{channel-access-configure-gJvqbbXB.js → channel-access-configure-Di_DoR-Q.js} +1 -1
  403. package/dist/plugin-sdk/{channel-adapters.discord-g8Do3f5N.js → channel-adapters.discord-IOZP8Cv5.js} +1 -1
  404. package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
  405. package/dist/plugin-sdk/channel-plugin-common.js +8 -8
  406. package/dist/plugin-sdk/{chunk-CuJIMshx.js → chunk-CwN3c1Fq.js} +1 -1
  407. package/dist/plugin-sdk/{chunk-items-CNyHcNiG.js → chunk-items-DH7ooQBZ.js} +1 -1
  408. package/dist/plugin-sdk/command-status.js +51 -49
  409. package/dist/plugin-sdk/{commands-registry-DwQIFJmL.js → commands-registry-Bea-V_lR.js} +2 -2
  410. package/dist/plugin-sdk/{common-C90EHP1w.js → common-BJPuBxmx.js} +1 -1
  411. package/dist/plugin-sdk/{config-DKNrb8oT.js → config-BxOWD3gF.js} +61 -6
  412. package/dist/plugin-sdk/{pi-embedded-runner-XtyJMQqg.js → config-schema-ChJcPn7x.js} +4818 -445
  413. package/dist/plugin-sdk/device-pair.d.ts +1 -1
  414. package/dist/plugin-sdk/device-pair.js +3 -3
  415. package/dist/plugin-sdk/{device-pairing-J1IH1jFl.js → device-pairing-D2Yq-_U6.js} +1 -1
  416. package/dist/plugin-sdk/{diagnostic-C16gioN6.js → diagnostic-Dfn1iERm.js} +4 -4
  417. package/dist/plugin-sdk/{directory-live-DK_83362.js → directory-live-ClwN5KKq.js} +1 -1
  418. package/dist/plugin-sdk/{directory-live-G7AN8y8N.js → directory-live-DatqU-eS.js} +1 -1
  419. package/dist/plugin-sdk/discord.d.ts +4 -4
  420. package/dist/plugin-sdk/discord.js +36 -37
  421. package/dist/plugin-sdk/{draft-stream-controls-DGYBMJYc.js → draft-stream-controls-D4Tb_iS_.js} +1 -1
  422. package/dist/plugin-sdk/{fetch-RV7QDF43.js → fetch-Cu-ahkie.js} +2 -2
  423. package/dist/plugin-sdk/{fetch-guard-CxXvFYq5.js → fetch-guard-BuYrl6q2.js} +3 -3
  424. package/dist/plugin-sdk/{filesystem-manager-CeSmCA_A.js → filesystem-manager-B9DDPgfU.js} +2 -2
  425. package/dist/plugin-sdk/{fs-safe-DztQeyQe.js → fs-safe-BG-VzVkL.js} +1 -1
  426. package/dist/plugin-sdk/{guilds-n7MMnX1c.js → guilds-BeT3iHHJ.js} +1 -1
  427. package/dist/plugin-sdk/{handle-action-DkfMckah.js → handle-action-Bk-L2J84.js} +29 -29
  428. package/dist/plugin-sdk/{helpers-C1pcZJsv.js → helpers-0E444CR0.js} +74 -2
  429. package/dist/plugin-sdk/{image-ops-BSQmb-17.js → image-ops-BYc-Ol7C.js} +1 -1
  430. package/dist/plugin-sdk/index.d.ts +20 -16
  431. package/dist/plugin-sdk/index.js +63 -4294
  432. package/dist/plugin-sdk/{internal-CC6TMTtc.js → internal-qo16nNU1.js} +1 -1
  433. package/dist/plugin-sdk/json-store.js +6 -6
  434. package/dist/plugin-sdk/{login-YbYyMkkE.js → login-B_At7IVI.js} +3 -3
  435. package/dist/plugin-sdk/{login-qr-DvJw8_2g.js → login-qr-BlSQ8QJF.js} +6 -6
  436. package/dist/plugin-sdk/{manager-DQ1dH8OM.js → manager-VNI6sxbG.js} +11 -11
  437. package/dist/plugin-sdk/{markdown-tables-DrB-IM8r.js → markdown-tables-CpNefu6e.js} +1 -1
  438. package/dist/plugin-sdk/{media-D8pWjqEt.js → media-QBCmvhBQ.js} +4 -4
  439. package/dist/plugin-sdk/{monitor-dqvs6ijC.js → monitor-BhHlerHI.js} +59 -57
  440. package/dist/plugin-sdk/{monitor-B8dLCpFA.js → monitor-C9UczH5N.js} +67 -67
  441. package/dist/plugin-sdk/{openresponses-http-S64mJyy8.js → openresponses-http-CtuFHD5w.js} +51 -49
  442. package/dist/plugin-sdk/{optional-runtime-dependency-Bt_3Yigu.js → optional-runtime-dependency-BaVO1F3i.js} +1 -1
  443. package/dist/plugin-sdk/{outbound-B5ukMdUv.js → outbound-CWrcAWpE.js} +9 -9
  444. package/dist/plugin-sdk/{outbound-attachment-C9oadpUP.js → outbound-attachment-Dhi2Q-_f.js} +2 -2
  445. package/dist/plugin-sdk/{pairing-message-DfIyssV_.d.ts → pairing-message-6XVXW554.d.ts} +1 -1
  446. package/dist/plugin-sdk/{pairing-message-B787pcJI.js → pairing-message-D01_6FkJ.js} +1 -1
  447. package/dist/plugin-sdk/{pairing-store-BdOcH_GA.js → pairing-store-DADXOv-J.js} +2 -2
  448. package/dist/plugin-sdk/{pi-model-discovery-DQdXL_-F.js → pi-model-discovery-D9-CQFS2.js} +1 -1
  449. package/dist/plugin-sdk/{pi-model-discovery-runtime-IwiWDCQ3.js → pi-model-discovery-runtime-DhNNXQgq.js} +5 -5
  450. package/dist/plugin-sdk/{probe-CJ6lN-jD.js → probe-Cyb-DGA3.js} +3 -3
  451. package/dist/plugin-sdk/{probe-CvXWxzag.js → probe-D8JAILir.js} +2 -2
  452. package/dist/plugin-sdk/{probe-DO4M1Qd1.js → probe-Dlk0Jxpw.js} +2 -2
  453. package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
  454. package/dist/plugin-sdk/{pw-ai-BFHYmEIx.js → pw-ai-CQG7vp-Y.js} +11 -11
  455. package/dist/plugin-sdk/{qmd-manager-D2LMB27z.js → qmd-manager-DCUE21Kj.js} +5 -5
  456. package/dist/plugin-sdk/{query-expansion-BM7lmqaP.js → query-expansion-Zr9qQixm.js} +3 -3
  457. package/dist/plugin-sdk/{redact-sensitive-url-B0RJQqO7.js → redact-sensitive-url-dPvnFFsK.js} +1 -0
  458. package/dist/plugin-sdk/{replies-BPFt4O-j.js → replies-C_FeIOF4.js} +4 -4
  459. package/dist/plugin-sdk/{resolve-channels-sscr14hU.js → resolve-channels-ChWKWtA9.js} +2 -2
  460. package/dist/plugin-sdk/{probe-DbhD54Aw.js → resolve-channels-zEnvugag.js} +4 -3
  461. package/dist/plugin-sdk/{resolve-outbound-target-BP_JscKT.js → resolve-outbound-target-DD8edEdz.js} +2 -2
  462. package/dist/plugin-sdk/{resolve-route-wp5xq4Ws.js → resolve-route-BPkfG5Pg.js} +1 -1
  463. package/dist/plugin-sdk/{resolve-users-C1sjzEsV.js → resolve-users-BTvjQuui.js} +1 -1
  464. package/dist/plugin-sdk/{resolve-users-B63RqPIO.js → resolve-users-CTzoruIZ.js} +2 -2
  465. package/dist/plugin-sdk/{retry-policy-BTH89onl.js → retry-policy-C0YsRX_6.js} +2 -2
  466. package/dist/plugin-sdk/{runtime-BUpqjZNM.js → runtime-CyTWeylK.js} +5 -5
  467. package/dist/plugin-sdk/{runtime-dependency-B5Fut2tT.js → runtime-dependency-D6tYtvtU.js} +5 -5
  468. package/dist/plugin-sdk/{sandbox-paths-fc-HFGJr.js → sandbox-paths-lj7_EVuA.js} +1 -1
  469. package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
  470. package/dist/plugin-sdk/sat-runtime.js +14 -14
  471. package/dist/plugin-sdk/{send-CRI83FPV.js → send-BedQ8ekw.js} +14 -14
  472. package/dist/plugin-sdk/{send-DUp9GIX8.js → send-BtFuV6zU.js} +9 -9
  473. package/dist/plugin-sdk/{send-DWB5HFdb.js → send-CNxLDNQ9.js} +9 -9
  474. package/dist/plugin-sdk/{send-DGUAXb2b.js → send-FcEJfLTd.js} +6 -6
  475. package/dist/plugin-sdk/{send-zn5KBXIN.js → send-Qckp3h4k.js} +10 -10
  476. package/dist/plugin-sdk/{session-BLyxz03u.js → session-C3Ul4abD.js} +4 -4
  477. package/dist/plugin-sdk/{skill-commands-DCnCOVR_.js → skill-commands-C2CnUTPX.js} +4 -4
  478. package/dist/plugin-sdk/{slack-actions-Dwy-8Zg7.js → slack-actions-CLyEd8FK.js} +25 -25
  479. package/dist/plugin-sdk/{slack-DcXn5HVj.js → slack-bSeSOI9d.js} +72 -71
  480. package/dist/plugin-sdk/slack.d.ts +4 -4
  481. package/dist/plugin-sdk/slack.js +17 -18
  482. package/dist/plugin-sdk/{ssrf-D_4q0mKh.js → ssrf-BZG8Ztod.js} +1 -1
  483. package/dist/plugin-sdk/{sticker-cache-C3YATyKD.js → sticker-cache-DBnS3hHh.js} +4 -4
  484. package/dist/plugin-sdk/{tables-DX84FwPB.js → tables-L5mXZ5y_.js} +2 -2
  485. package/dist/plugin-sdk/{targets-BgSHco9b.js → targets-eG595pY0.js} +2 -2
  486. package/dist/plugin-sdk/{telegram-actions-Dd_iEzYH.js → telegram-actions-D0Kyqy_e.js} +56 -54
  487. package/dist/plugin-sdk/telegram.d.ts +4 -4
  488. package/dist/plugin-sdk/telegram.js +15 -16
  489. package/dist/plugin-sdk/{thread-bindings.lifecycle-DjpMLjhY.js → thread-bindings.lifecycle-C_5BEWmL.js} +3 -3
  490. package/dist/plugin-sdk/{thread-bindings.state-DYYR9qeT.js → thread-bindings.state-DRZAbcUu.js} +4 -4
  491. package/dist/plugin-sdk/{tmp-fased-dir-Bcp1DTSV.d.ts → tmp-fased-dir-BpMLNd4L.d.ts} +1 -1
  492. package/dist/plugin-sdk/{types-BTkcYtOt.d.ts → types-0CsXVmg8.d.ts} +2 -2
  493. package/dist/plugin-sdk/{types-CMoLtViq.d.ts → types-DMLEeE52.d.ts} +1 -1
  494. package/dist/plugin-sdk/{wallet-status-D9UVH6k9.js → wallet-status-2yrXvqSS.js} +7 -7
  495. package/dist/plugin-sdk/{web-BgTy1WeG.js → web-CSRe4zy2.js} +60 -58
  496. package/dist/plugin-sdk/{whatsapp-actions-DISRDbu1.js → whatsapp-actions-CkLkpg8M.js} +23 -23
  497. package/dist/plugin-sdk/{whatsapp-heartbeat-KM3lYpt-.js → whatsapp-heartbeat-DuAE9_88.js} +3 -3
  498. package/dist/plugin-sdk/whatsapp.d.ts +9 -9
  499. package/dist/plugin-sdk/whatsapp.js +18 -19
  500. package/dist/plugin-sdk/{ws-CxmRDbD9.js → ws-CocpWGhl.js} +1 -1
  501. package/dist/plugin-sdk/{wsl-Cw-xOsqF.js → wsl-CXVwPntb.js} +3 -3
  502. package/dist/plugin-sdk/{zod-schema.providers-core-CIzCjXH9.d.ts → zod-schema.providers-core-FaYR6KdD.d.ts} +61 -61
  503. package/dist/plugins/bundled-dir.js +3 -3
  504. package/dist/plugins/config-state.js +1 -0
  505. package/dist/plugins/discovery.js +11 -11
  506. package/dist/plugins/loader.js +13 -13
  507. package/dist/plugins/manifest-registry.js +2 -2
  508. package/dist/plugins/manifest.js +4 -4
  509. package/dist/plugins/path-safety.js +3 -3
  510. package/dist/plugins/providers.js +1 -1
  511. package/dist/plugins/runtime/index.js +12 -12
  512. package/dist/plugins/status-cache.js +9 -9
  513. package/dist/plugins/status.js +1 -1
  514. package/dist/plugins/tools.js +1 -1
  515. package/dist/plugins/update.js +3 -3
  516. package/dist/plugins/web-search-install-catalog.js +3 -3
  517. package/dist/plugins/web-search-providers.runtime.js +1 -1
  518. package/dist/process/command-queue.js +1 -1
  519. package/dist/providers/refresh.js +2 -2
  520. package/dist/providers/registry.js +53 -2
  521. package/dist/secrets/apply.js +16 -16
  522. package/dist/secrets/audit.js +11 -11
  523. package/dist/secrets/shared.js +9 -9
  524. package/dist/security/audit-channel.js +1 -1
  525. package/dist/security/audit-extra.async.js +3 -3
  526. package/dist/security/audit-extra.sync.js +2 -2
  527. package/dist/security/audit.js +4 -4
  528. package/dist/security/dm-policy-shared.js +1 -1
  529. package/dist/security/scan-paths.js +2 -2
  530. package/dist/shared/config-eval.js +2 -2
  531. package/dist/shared/model-thinking.js +4 -1
  532. package/dist/shared/net/redact-sensitive-url.js +1 -0
  533. package/dist/shared/pid-alive.js +2 -2
  534. package/dist/signal/client.js +1 -1
  535. package/dist/signal/index.js +1 -1
  536. package/dist/signal/monitor/access-policy.js +1 -1
  537. package/dist/signal/monitor/event-handler.js +6 -6
  538. package/dist/signal/monitor.js +4 -4
  539. package/dist/signal/send.js +3 -3
  540. package/dist/slack/monitor/auth.js +1 -1
  541. package/dist/slack/monitor/context.js +1 -1
  542. package/dist/slack/monitor/dm-auth.js +1 -1
  543. package/dist/slack/monitor/message-handler/prepare.js +4 -4
  544. package/dist/slack/monitor/provider.js +3 -3
  545. package/dist/slack/monitor/replies.js +1 -1
  546. package/dist/slack/monitor/slash.js +1 -1
  547. package/dist/slack/send.js +1 -1
  548. package/dist/tasks/standing-orders.js +5 -5
  549. package/dist/tasks/task-flow-registry.js +5 -5
  550. package/dist/tasks/task-registry.js +5 -5
  551. package/dist/tasks/workflow-definitions.js +6 -6
  552. package/dist/telegram/bot/helpers.js +2 -2
  553. package/dist/telegram/bot-handlers.js +6 -6
  554. package/dist/telegram/bot-message-context.js +6 -6
  555. package/dist/telegram/bot-message-dispatch.js +2 -2
  556. package/dist/telegram/bot-native-commands.js +4 -4
  557. package/dist/telegram/bot.js +1 -1
  558. package/dist/telegram/dm-access.js +1 -1
  559. package/dist/telegram/group-access.js +1 -1
  560. package/dist/telegram/monitor.js +2 -2
  561. package/dist/telegram/send.js +2 -2
  562. package/dist/telegram/token.js +5 -5
  563. package/dist/telegram/webhook.js +1 -1
  564. package/dist/tts/tts-core.js +1 -1
  565. package/dist/utils.js +5 -5
  566. package/dist/video-generation/dashscope-compatible.js +1 -1
  567. package/dist/wallet/local-socket-signer-broker.js +18 -18
  568. package/dist/wallet/providers/embedded-keystore-adapter.js +6 -6
  569. package/dist/wallet/providers/local-socket-signer-adapter.js +5 -5
  570. package/dist/wallet/wallet-approval-auth.js +5 -5
  571. package/dist/wallet/wallet-audit-log.js +5 -5
  572. package/dist/wallet/wallet-canary.js +1 -1
  573. package/dist/wallet/wallet-custody.js +25 -25
  574. package/dist/wallet/wallet-inbound-events.js +7 -7
  575. package/dist/wallet/wallet-observability.js +5 -5
  576. package/dist/wallet/wallet-policy.js +11 -11
  577. package/dist/wallet/wallet-provider-registry.js +7 -7
  578. package/dist/wallet/wallet-provider-resolver.js +1 -1
  579. package/dist/wallet/wallet-runtime-config.js +3 -3
  580. package/dist/wallet/wallet-secrets-store.js +22 -22
  581. package/dist/wallet/wallet-send-approvals.js +10 -10
  582. package/dist/wallet/wallet-settlement-links.js +5 -5
  583. package/dist/wallet/wallet-status.js +2 -2
  584. package/dist/web/accounts.js +3 -3
  585. package/dist/web/auth-store.js +18 -18
  586. package/dist/web/auto-reply/deliver-reply.js +2 -2
  587. package/dist/web/auto-reply/heartbeat-runner.js +3 -3
  588. package/dist/web/auto-reply/monitor/group-gating.js +1 -1
  589. package/dist/web/auto-reply/monitor/process-message.js +4 -4
  590. package/dist/web/auto-reply/monitor.js +4 -4
  591. package/dist/web/inbound/access-control.js +3 -3
  592. package/dist/web/inbound/monitor.js +2 -2
  593. package/dist/web/media.js +2 -2
  594. package/dist/web/outbound.js +3 -3
  595. package/dist/web/session.js +4 -4
  596. package/dist/wizard/host-security-capability.js +2 -2
  597. package/dist/wizard/onboarding.federation.js +1 -1
  598. package/dist/wizard/onboarding.finalize.js +7 -7
  599. package/dist/wizard/onboarding.host-security.js +7 -7
  600. package/dist/wizard/onboarding.js +8 -8
  601. package/dist/wizard/onboarding.wallet.js +45 -45
  602. package/extensions/acpx/package.json +1 -1
  603. package/extensions/bluebubbles/package.json +1 -1
  604. package/extensions/copilot-proxy/package.json +1 -1
  605. package/extensions/diagnostics-otel/package.json +1 -1
  606. package/extensions/fased-federation/package.json +1 -1
  607. package/extensions/google-gemini-cli-auth/package.json +1 -1
  608. package/extensions/imessage/package.json +1 -1
  609. package/extensions/irc/package.json +1 -1
  610. package/extensions/line/package.json +1 -1
  611. package/extensions/llm-task/package.json +1 -1
  612. package/extensions/lobster/package.json +1 -1
  613. package/extensions/matrix/CHANGELOG.md +12 -0
  614. package/extensions/matrix/package.json +1 -1
  615. package/extensions/mattermost/package.json +1 -1
  616. package/extensions/memory-core/package.json +2 -2
  617. package/extensions/memory-lancedb/package.json +1 -1
  618. package/extensions/minimax-portal-auth/package.json +1 -1
  619. package/extensions/msteams/CHANGELOG.md +12 -0
  620. package/extensions/msteams/package.json +1 -1
  621. package/extensions/nextcloud-talk/package.json +1 -1
  622. package/extensions/nostr/CHANGELOG.md +12 -0
  623. package/extensions/nostr/package.json +1 -1
  624. package/extensions/open-prose/package.json +1 -1
  625. package/extensions/sat-mining/index.ts +13 -1
  626. package/extensions/sat-mining/package.json +1 -1
  627. package/extensions/sat-mining/src/epoch-service.ts +16 -0
  628. package/extensions/sat-mining/src/round-watcher.ts +21 -0
  629. package/extensions/sat-mining/src/rpc-read.ts +9 -2
  630. package/extensions/sat-mining/src/runtime.ts +5 -1
  631. package/extensions/signal/package.json +1 -1
  632. package/extensions/synology-chat/package.json +1 -1
  633. package/extensions/tlon/package.json +1 -1
  634. package/extensions/twitch/CHANGELOG.md +12 -0
  635. package/extensions/twitch/package.json +1 -1
  636. package/extensions/voice-call/CHANGELOG.md +12 -0
  637. package/extensions/voice-call/package.json +1 -1
  638. package/extensions/zalo/CHANGELOG.md +12 -0
  639. package/extensions/zalo/package.json +1 -1
  640. package/extensions/zalouser/CHANGELOG.md +12 -0
  641. package/extensions/zalouser/package.json +1 -1
  642. package/package.json +1 -1
  643. package/dist/control-ui/assets/chat-model-ref-DV2P__mw.js +0 -2
  644. package/dist/plugin-sdk/links-D5ecKoG9.js +0 -74
  645. package/dist/plugin-sdk/media-payload-DpYEcV-X.js +0 -18
  646. package/dist/plugin-sdk/resolve-channels-B-dUtZYa.js +0 -4
  647. package/dist/plugin-sdk/resolve-utils-DrvLA82C.js +0 -136
  648. /package/dist/plugin-sdk/{blocks-input-DdQwSVtP.js → blocks-input-Dcitfh7h.js} +0 -0
  649. /package/dist/plugin-sdk/{channel-activity-B7MIaDei.js → channel-activity-Cg1xRoc2.js} +0 -0
  650. /package/dist/plugin-sdk/{channel-core-CMPoGCik.js → channel-core-BOkyXXLa.js} +0 -0
  651. /package/dist/plugin-sdk/{client-BTUzO_8g.js → client-D2N7hqVu.js} +0 -0
  652. /package/dist/plugin-sdk/{command-poll-backoff-CBq0jVRw.js → command-poll-backoff-NAePk3eL.js} +0 -0
  653. /package/dist/plugin-sdk/{date-time-Bbp5JvNw.js → date-time-CE3Uer3C.js} +0 -0
  654. /package/dist/plugin-sdk/{diagnostic-session-state-B-9PL5r7.js → diagnostic-session-state-HO94DMou.js} +0 -0
  655. /package/dist/plugin-sdk/{draft-stream-loop-DZ1OAyye.js → draft-stream-loop-CKyHn8IX.js} +0 -0
  656. /package/dist/plugin-sdk/{fetch-headers-DvXyXtoI.js → fetch-headers-my7hgV2G.js} +0 -0
  657. /package/dist/plugin-sdk/{fetch-timeout-jOIu9Xud.js → fetch-timeout-l_6RdoMw.js} +0 -0
  658. /package/dist/plugin-sdk/{gateway-registry-C-MTEdvG.js → gateway-registry-DFsoY6C0.js} +0 -0
  659. /package/dist/plugin-sdk/{github-copilot-token-Dgug856m.js → github-copilot-token-CUK__1s1.js} +0 -0
  660. /package/dist/plugin-sdk/{inbound-context-BNCTzgjG.js → inbound-context-BFnIdcqI.js} +0 -0
  661. /package/dist/plugin-sdk/{ip-BkeyFRJr.js → ip-C70a-YlD.js} +0 -0
  662. /package/dist/plugin-sdk/{memory-search-DHSeU4pJ.js → memory-search-C3C0bD2H.js} +0 -0
  663. /package/dist/plugin-sdk/{pairing-token-HQpaqod5.js → pairing-token-N_6Jbt1L.js} +0 -0
  664. /package/dist/plugin-sdk/{path-alias-guards-BlIJ0AmG.js → path-alias-guards-Dg3gU-MA.js} +0 -0
  665. /package/dist/plugin-sdk/{paths-B88DQEK8.js → paths-CTZ2RS_E.js} +0 -0
  666. /package/dist/plugin-sdk/{polls-Dy1NsYKT.js → polls-DQrR-qT3.js} +0 -0
  667. /package/dist/plugin-sdk/{proxy-R5TjOIFS.js → proxy-7xs_rsnV.js} +0 -0
  668. /package/dist/plugin-sdk/{qmd-scope-C9tRnohc.js → qmd-scope-D1sSG_Rx.js} +0 -0
  669. /package/dist/plugin-sdk/{redact-CwCz68Mi.js → redact-Bm8vu_ju.js} +0 -0
  670. /package/dist/plugin-sdk/{redact-identifier-CDvAeiFm.js → redact-identifier-Q3tkvxhm.js} +0 -0
  671. /package/dist/plugin-sdk/{render-K7NwXvVu.js → render-Bwu_WxwA.js} +0 -0
  672. /package/dist/plugin-sdk/{reply-prefix-CbPHNXlm.js → reply-prefix-Bqzm6DC1.js} +0 -0
  673. /package/dist/plugin-sdk/{reply-reference-CWEIswqw.js → reply-reference-BkbK_DWT.js} +0 -0
  674. /package/dist/plugin-sdk/{retry-DycQ4ymF.js → retry-DstNBhDW.js} +0 -0
  675. /package/dist/plugin-sdk/{run-with-concurrency-CLARJMM7.js → run-with-concurrency-BsDJWzgM.js} +0 -0
  676. /package/dist/plugin-sdk/{secure-random-C2EhANj2.js → secure-random-Bl-AVLVb.js} +0 -0
  677. /package/dist/plugin-sdk/{shared-V35XNAbz.js → shared-clhhbWN3.js} +0 -0
  678. /package/dist/plugin-sdk/{tailscale-status-BGBRraZW.js → tailscale-status-ClsquRGs.js} +0 -0
  679. /package/dist/plugin-sdk/{target-errors-C0yNDbGS.js → target-errors-C_SVKoEv.js} +0 -0
  680. /package/dist/plugin-sdk/{targets-CuTZl1mO.js → targets-BDvvnlph.js} +0 -0
  681. /package/dist/plugin-sdk/{tokens-Do_JU4Rh.js → tokens-BvtlOzVP.js} +0 -0
  682. /package/dist/plugin-sdk/{tool-loop-detection-P5u2k0_f.js → tool-loop-detection-CWphm1k_.js} +0 -0
  683. /package/dist/plugin-sdk/{transcript-events-NZiMKWBK.js → transcript-events-BJQWUdmU.js} +0 -0
  684. /package/dist/plugin-sdk/{ui-KGr1WRXC.js → ui-e020ouhJ.js} +0 -0
  685. /package/dist/plugin-sdk/{with-timeout-Dl513q34.js → with-timeout-BYrRAYFV.js} +0 -0
@@ -1,12 +1,12 @@
1
- import{createRequire as e}from"node:module";import t from"node:process";import n,{constants as r}from"node:fs";import i from"node:path";import a from"node:fs/promises";import{fileURLToPath as o}from"node:url";import{execFile as s,execFileSync as c,spawn as l}from"node:child_process";import{isDeepStrictEqual as u,promisify as d}from"node:util";import{Logger as f}from"tslog";import p from"node:os";import m from"json5";import h,{Chalk as g}from"chalk";import _ from"node:crypto";import v from"dotenv";import"jszip";import"tar";import{getOAuthProviders as ee}from"@mariozechner/pi-ai/oauth";import y from"ajv";import{z as b}from"zod";function te(e){return!e||e===`--`?!1:e.startsWith(`-`)?/^-\d+(?:\.\d+)?$/.test(e):!0}function ne(e,t){let n=e.slice(2);for(let e of n){if(e===`--`)break;if(e===t)return!0}return!1}function re(e,t){let n=e.slice(2);for(let e=0;e<n.length;e+=1){let r=n[e];if(r===`--`)break;if(r===t){let t=n[e+1];return te(t)?t:null}if(r.startsWith(`${t}=`))return r.slice(t.length+1)||null}}const ie=`fased`,ae=new Set([ie]),oe=/^(?:((?:pnpm|npm|bunx|npx)\s+))?(fased)\b/;function se(e=process.argv){let t=e[1];if(!t)return ie;let n=i.basename(t).trim();return ae.has(n)?n:ie}function ce(e,t=se()){return!e.trim()||!oe.test(e)?e:e.replace(oe,(e,n)=>`${n??``}${t}`)}const le=/^[a-z0-9][a-z0-9_-]{0,63}$/i;function ue(e){return e?le.test(e):!1}function de(e){let t=e?.trim();return!t||t.toLowerCase()===`default`||!ue(t)?null:t}const fe=/^(?:pnpm|npm|bunx|npx)\s+fased\b|^fased\b|^node\s+scripts\/run-node\.mjs\b/,pe=/(?:^|\s)--profile(?:\s|=|$)/,me=/(?:^|\s)--dev(?:\s|$)/;function he(e=process.argv){let t=se(e),r=e[1];if(!r||i.basename(r).trim()!==`run-node.mjs`)return t;let a=i.resolve(process.cwd(),`scripts`,`run-node.mjs`);return n.existsSync(a)?`node scripts/run-node.mjs`:t}function ge(e,t=process.env){let n=se(),r=he(),i=ce(e,n);r!==n&&fe.test(i)&&(i=i.replace(fe,r));let a=de(t.FASED_PROFILE);return!a||!fe.test(i)||pe.test(i)||me.test(i)?i:i.replace(fe,e=>`${e} --profile ${a}`)}const _e=new Set([`fased`,`@fased/fased`]);async function ve(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t);return typeof n.name==`string`?n.name:null}catch{return null}}function ye(e){try{let t=n.readFileSync(i.join(e,`package.json`),`utf-8`),r=JSON.parse(t);return typeof r.name==`string`?r.name:null}catch{return null}}async function be(e,t=12){for(let n of Se(e,t)){let e=await ve(n);if(e&&_e.has(e))return n}return null}function xe(e,t=12){for(let n of Se(e,t)){let e=ye(n);if(e&&_e.has(e))return n}return null}function*Se(e,t){let n=i.resolve(e);for(let e=0;e<t;e+=1){yield n;let e=i.dirname(n);if(e===n)break;n=e}}function Ce(e){let t=i.resolve(e),r=[i.dirname(t)];try{let e=n.realpathSync(t);e!==t&&r.push(i.dirname(e))}catch{}let a=t.split(i.sep),o=a.lastIndexOf(`.bin`);if(o>0&&a[o-1]===`node_modules`){let e=i.basename(t),n=a.slice(0,o).join(i.sep);r.push(i.join(n,e))}return r}async function we(e){for(let t of Ee(e)){let e=await be(t);if(e)return e}return null}function Te(e){for(let t of Ee(e)){let e=xe(t);if(e)return e}return null}function Ee(e){let t=[];return e.moduleUrl&&t.push(i.dirname(o(e.moduleUrl))),e.argv1&&t.push(...Ce(e.argv1)),e.cwd&&t.push(e.cwd),t}const De=`/tmp/fased`,Oe=n.constants.W_OK|n.constants.X_OK;function ke(e,t){return typeof e==`object`&&!!e&&`code`in e&&e.code===t}function Ae(e={}){let t=e.accessSync??n.accessSync,r=e.chmodSync??n.chmodSync,a=e.lstatSync??n.lstatSync,o=e.mkdirSync??n.mkdirSync,s=e.warn??(e=>console.warn(e)),c=e.getuid??(()=>{try{return typeof process.getuid==`function`?process.getuid():void 0}catch{return}}),l=e.tmpdir??p.tmpdir,u=c(),d=e=>u===void 0?!0:!(typeof e.uid==`number`&&e.uid!==u||typeof e.mode==`number`&&e.mode&18),f=()=>{let e=l(),t=u===void 0?`fased`:`fased-${u}`;return i.join(e,t)},m=e=>e.isDirectory()&&!e.isSymbolicLink()&&d(e),h=e=>{try{return m(a(e))?(t(e,Oe),`available`):`invalid`}catch(e){return ke(e,`ENOENT`)?`missing`:`invalid`}},g=e=>{try{let t=a(e);return!t.isDirectory()||t.isSymbolicLink()||u!==void 0&&typeof t.uid==`number`&&t.uid!==u||typeof t.mode!=`number`||!(t.mode&18)?!1:(r(e,448),s(`[fased] tightened permissions on temp dir: ${e}`),h(e)===`available`)}catch{return!1}},_=()=>{let e=f(),t=h(e);if(t===`available`)return e;if(t===`invalid`){if(g(e))return e;throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`)}try{o(e,{recursive:!0,mode:448}),r(e,448)}catch{throw Error(`Unable to create fallback FasedAgent temp dir: ${e}`)}if(h(e)!==`available`&&!g(e))throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`);return e},v=h(De);if(v===`available`)return De;if(v===`invalid`)return g(De)?De:_();try{return t(`/tmp`,Oe),o(De,{recursive:!0,mode:448}),r(De,448),h(De)!==`available`&&!g(De)?_():De}catch{return _()}}function je(e){return e?.trim()||void 0}function Me(e=process.env,t=p.homedir){let n=Ne(e,t);return n?i.resolve(n):void 0}function Ne(e,t){let n=je(e.FASED_HOME);if(n){if(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`)){let r=je(e.HOME)??je(e.USERPROFILE)??Pe(t);return r?n.replace(/^~(?=$|[\\/])/,r):void 0}return n}return je(e.HOME)||je(e.USERPROFILE)||Pe(t)}function Pe(e){try{return je(e())}catch{return}}function x(e=process.env,t=p.homedir){return Me(e,t)??i.resolve(process.cwd())}function Fe(e,t){if(!e.startsWith(`~`))return e;let n=je(t?.home)??Me(t?.env??process.env,t?.homedir??p.homedir);return n?e.replace(/^~(?=$|[\\/])/,n):e}function Ie(e=process.env){return e.FASED_NIX_MODE===`1`}Ie();const Le=`fased.json`;function Re(){return x(process.env,p.homedir)}function ze(e){return()=>x(e,p.homedir)}function Be(e=Re){return i.join(e(),`.fased`)}function S(e=process.env,t=ze(e)){let n=()=>x(e,t),r=e.FASED_STATE_DIR?.trim();return r?Ve(r,e,n):Be(n)}function Ve(e,t=process.env,n=ze(t)){let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Fe(r,{home:x(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}S();function He(e=process.env,t=S(e,ze(e))){let n=e.FASED_CONFIG_PATH?.trim();return n?Ve(n,e,ze(e)):i.join(t,Le)}function Ue(e=process.env,t=ze(e)){return Ge(e,t).find(e=>{try{return n.existsSync(e)}catch{return!1}})||He(e,S(e,t))}function We(e=process.env,t=S(e,ze(e)),r=ze(e)){let a=e.FASED_CONFIG_PATH?.trim();if(a)return Ve(a,e,r);let o=e.FASED_STATE_DIR?.trim(),s=[i.join(t,Le)].find(e=>{try{return n.existsSync(e)}catch{return!1}});if(s)return s;if(o)return i.join(t,Le);let c=S(e,r);return i.resolve(t)===i.resolve(c)?Ue(e,r):i.join(t,Le)}Ue();function Ge(e=process.env,t=ze(e)){let n=()=>x(e,t),r=e.FASED_CONFIG_PATH?.trim();if(r)return[Ve(r,e,n)];let a=[],o=e.FASED_STATE_DIR?.trim();if(o){let t=Ve(o,e,n);a.push(i.join(t,Le))}return a.push(i.join(Be(n),Le)),a}function Ke(){let e=We();try{if(!n.existsSync(e))return;let t=n.readFileSync(e,`utf-8`),r=m.parse(t)?.logging;return!r||typeof r!=`object`||Array.isArray(r)?void 0:r}catch{return}}const qe=[`silent`,`fatal`,`error`,`warn`,`info`,`debug`,`trace`];function Je(e){if(typeof e!=`string`)return;let t=e.trim();return qe.includes(t)?t:void 0}function Ye(e,t=`info`){return Je(e)??t}function Xe(e){return{fatal:0,error:1,warn:2,info:3,debug:4,trace:5,silent:1/0}[e]}const C={cachedLogger:null,cachedSettings:null,cachedConsoleSettings:null,overrideSettings:null,invalidEnvLogLevelValue:null,consolePatched:!1,forceConsoleToStderr:!1,consoleTimestampPrefix:!1,consoleSubsystemFilter:null,resolvingConsoleSettings:!1,streamErrorHandlersInstalled:!1,rawConsole:null};function Ze(){let e=process.env.FASED_LOG_LEVEL,t=typeof e==`string`?e.trim():``;if(!t){C.invalidEnvLogLevelValue=null;return}let n=Je(t);if(n)return C.invalidEnvLogLevelValue=null,n;C.invalidEnvLogLevelValue!==t&&(C.invalidEnvLogLevelValue=t,process.stderr.write(`[fased] Ignoring invalid FASED_LOG_LEVEL="${t}" (allowed: ${qe.join(`|`)}).\n`))}function Qe(e){let t=process.getBuiltinModule;if(typeof t!=`function`)return null;try{let n=t(`module`),r=typeof n.createRequire==`function`?n.createRequire:null;return r?r(e):null}catch{return null}}const $e=Ae();i.join($e,`fased.log`);const et=`fased`,tt=`.log`,nt=Qe(import.meta.url),rt=new Set;function it(e,t){e.attachTransport(e=>{if(rt.has(t))try{t(e)}catch{}})}function at(){let e=C.overrideSettings??Ke();if(!e)try{e=(nt?.(`../config/config.js`))?.loadConfig?.().logging}catch{e=void 0}let t=process.env.VITEST===`true`&&process.env.FASED_TEST_FILE_LOG!==`1`?`silent`:`info`,n=Ye(e?.level,t);return{level:Ze()??n,file:e?.file??ht(),maxFileBytes:lt(e?.maxFileBytes)}}function ot(e,t){return e?e.level!==t.level||e.file!==t.file||e.maxFileBytes!==t.maxFileBytes:!0}function st(e){let t=C.cachedSettings??at();return C.cachedSettings||=t,t.level===`silent`?!1:Xe(e)<=Xe(t.level)}function ct(e){n.mkdirSync(i.dirname(e.file),{recursive:!0}),gt(e.file)&&_t(i.dirname(e.file));let t=ut(e.file),r=!1,a=new f({name:`fased`,minLevel:Xe(e.level),type:`hidden`});a.attachTransport(n=>{try{let i=n.date?.toISOString?.()??new Date().toISOString(),a=`${JSON.stringify({...n,time:i})}\n`,o=Buffer.byteLength(a,`utf8`),s=t+o;if(s>e.maxFileBytes){if(!r){r=!0;let t=JSON.stringify({time:new Date().toISOString(),level:`warn`,subsystem:`logging`,message:`log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}`});dt(e.file,`${t}\n`),process.stderr.write(`[fased] log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}\n`)}return}dt(e.file,a)&&(t=s)}catch{}});for(let e of rt)it(a,e);return a}function lt(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):524288e3}function ut(e){try{return n.statSync(e).size}catch{return 0}}function dt(e,t){try{return n.appendFileSync(e,t,{encoding:`utf8`}),!0}catch{return!1}}function ft(){let e=at(),t=C.cachedLogger,n=C.cachedSettings;return(!t||ot(n,e))&&(C.cachedLogger=ct(e),C.cachedSettings=e),C.cachedLogger}function pt(e,t){let n=ft(),r=t?.level?Xe(t.level):void 0,i=e?JSON.stringify(e):void 0;return n.getSubLogger({name:i,minLevel:r,prefix:e?[i??``]:[]})}function mt(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function ht(){let e=mt(new Date);return i.join($e,`${et}-${e}${tt}`)}function gt(e){let t=i.basename(e);return t.startsWith(`${et}-`)&&t.endsWith(tt)&&t.length===`${et}-YYYY-MM-DD${tt}`.length}function _t(e){try{let t=n.readdirSync(e,{withFileTypes:!0}),r=Date.now()-864e5;for(let a of t){if(!a.isFile()||!a.name.startsWith(`${et}-`)||!a.name.endsWith(tt))continue;let t=i.join(e,a.name);try{n.statSync(t).mtimeMs<r&&n.rmSync(t,{force:!0})}catch{}}}catch{}}const vt={accent:`#22D3EE`,accentBright:`#67E8F9`,accentDim:`#0891B2`,info:`#93C5FD`,success:`#4ADE80`,warn:`#FACC15`,error:`#F87171`,muted:`#A3A3A3`},yt=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`,w=process.env.NO_COLOR&&!yt?new g({level:0}):h,bt=e=>w.hex(e),xt={accent:bt(vt.accent),accentBright:bt(vt.accentBright),accentDim:bt(vt.accentDim),info:bt(vt.info),success:w.green,warn:w.yellow,error:bt(vt.error),muted:bt(vt.muted),noteChrome:w.gray,noteTitle:w.bold.gray,noteHeading:w.bold.yellow,heading:w.bold,command:w.green,option:w.yellow};function St(){return!1}const Ct=[`telegram`,`whatsapp`,`discord`,`irc`,`googlechat`,`slack`,`signal`,`imessage`],wt=[...Ct],Tt=[],Et={imsg:`imessage`,"internet-relay-chat":`irc`,"google-chat":`googlechat`,gchat:`googlechat`},Dt=e=>e?.trim().toLowerCase()||void 0;function Ot(e){let t=Dt(e);if(!t)return null;let n=Et[t]??t;return Ct.includes(n)?n:null}function kt(e,t,n){let r=n?` (${n})`:``,i=`[terminal] restore ${e} failed${r}: ${String(t)}`;try{process.stderr.write(`${i}\n`)}catch(e){console.error(`[terminal] restore reporting failed${r}: ${String(e)}`)}}function At(e,t={}){let n=t.resumeStdinIfPaused??t.resumeStdin??!1,r=process.stdin;if(r.isTTY&&typeof r.setRawMode==`function`){try{r.setRawMode(!1)}catch(t){kt(`raw mode`,t,e)}if(n&&typeof r.isPaused==`function`&&r.isPaused())try{r.resume()}catch(t){kt(`stdin resume`,t,e)}}if(process.stdout.isTTY)try{process.stdout.write(`\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l`)}catch(t){kt(`stdout reset`,t,e)}}function jt(e=process.env){return e.VITEST!==`true`||e.FASED_TEST_RUNTIME_LOG===`1`?!0:typeof console.log.mock==`object`}function Mt(){return{log:(...e)=>{jt()&&console.log(...e)},error:(...e)=>{console.error(...e)}}}const Nt={...Mt(),exit:e=>{throw At(`runtime exit`,{resumeStdinIfPaused:!1}),process.exit(e),Error(`unreachable`)}},Pt=RegExp(`\\x1b\\[[0-9;]*m`,`g`),Ft=RegExp(`\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\`,`g`);function It(e){return e.replace(Ft,``).replace(Pt,``)}function Lt(e){return Array.from(It(e)).length}const Rt=Qe(import.meta.url);let zt=()=>{try{return(Rt?.(`../config/config.js`))?.loadConfig?.().logging}catch{return}};function Bt(e){return St()?`debug`:!e&&process.env.VITEST===`true`&&process.env.FASED_TEST_CONSOLE!==`1`?`silent`:Ye(e,`info`)}function Vt(e){return e===`compact`||e===`json`||e===`pretty`?e:process.stdout.isTTY?`pretty`:`compact`}function Ht(){let e=C.overrideSettings??Ke();if(!e)if(C.resolvingConsoleSettings)e=void 0;else{C.resolvingConsoleSettings=!0;try{e=zt()}finally{C.resolvingConsoleSettings=!1}}return{level:Ze()??Bt(e?.consoleLevel),style:Vt(e?.consoleStyle)}}function Ut(e,t){return e?e.level!==t.level||e.style!==t.style:!0}function Wt(){let e=Ht(),t=C.cachedConsoleSettings;return(!t||Ut(t,e))&&(C.cachedConsoleSettings=e),C.cachedConsoleSettings}function Gt(e){let t=C.consoleSubsystemFilter;return!t||t.length===0?!0:t.some(t=>e===t||e.startsWith(`${t}/`))}function Kt(e,t){return t.level===`silent`?!1:Xe(e)<=Xe(t.level)}(()=>{let e=process.getBuiltinModule;if(typeof e!=`function`)return null;try{let t=e(`util`);return typeof t.inspect==`function`?t.inspect:null}catch{return null}})();function qt(){let e=(process.env.TERM??``).toLowerCase();return process.env.COLORTERM||process.env.TERM_PROGRAM?!0:e.length>0&&e!==`dumb`}function Jt(){let e=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`;return process.env.NO_COLOR&&!e?new g({level:0}):process.stdout.isTTY||process.stderr.isTTY||qt()?new g({level:1}):new g({level:0})}const Yt=[`cyan`,`green`,`yellow`,`blue`,`magenta`,`red`],Xt={"gmail-watcher":`blue`},Zt=[`gateway`,`channels`,`providers`],Qt=new Set(Ct);function $t(e,t){let n=Xt[t];if(n)return e[n];let r=0;for(let e=0;e<t.length;e+=1)r=r*31+t.charCodeAt(e)|0;return e[Yt[Math.abs(r)%Yt.length]]}function en(e){let t=e.split(`/`).filter(Boolean),n=t.join(`/`)||e;for(;t.length>0&&Zt.includes(t[0]);)t.shift();return t.length===0?n:Qt.has(t[0])?t[0]:t.length>2?t.slice(-2).join(`/`):t.join(`/`)}function tn(e,t){if(!t)return e;if(e.startsWith(`[`)){let n=e.indexOf(`]`);if(n>1&&e.slice(1,n).toLowerCase()===t.toLowerCase()){let t=n+1;for(;e[t]===` `;)t+=1;return e.slice(t)}}if(e.slice(0,t.length).toLowerCase()!==t.toLowerCase())return e;let n=e.slice(t.length,t.length+1);if(n!==`:`&&n!==` `)return e;let r=t.length;for(;e[r]===` `;)r+=1;for(e[r]===`:`&&(r+=1);e[r]===` `;)r+=1;return e.slice(r)}function nn(e){let t=e.style===`json`?e.subsystem:en(e.subsystem);if(e.style===`json`)return JSON.stringify({time:new Date().toISOString(),level:e.level,subsystem:t,message:e.message,...e.meta});let n=Jt(),r=`[${t}]`,i=$t(n,t),a=e.level===`error`||e.level===`fatal`?n.red:e.level===`warn`?n.yellow:e.level===`debug`||e.level===`trace`?n.gray:n.cyan,o=tn(e.message,t);return`${[e.style===`pretty`?n.gray(new Date().toISOString().slice(11,19)):C.consoleTimestampPrefix?n.gray(new Date().toISOString()):``,i(r)].filter(Boolean).join(` `)} ${a(o)}`}function rn(e,t){let n=process.platform===`win32`&&process.env.GITHUB_ACTIONS===`true`?t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`?`).replace(/[\uD800-\uDFFF]/g,`?`):t,r=C.rawConsole??console;C.forceConsoleToStderr||e===`error`||e===`fatal`?(r.error??console.error)(n):e===`warn`?(r.warn??console.warn)(n):(r.log??console.log)(n)}function an(e,t,n,r){if(t===`silent`)return;let i=e[t];typeof i==`function`&&(r&&Object.keys(r).length>0?i.call(e,r,n):i.call(e,n))}function on(e){let t=null,n=()=>(t||=pt({subsystem:e}),t),r=(t,r,i)=>{let a=Wt(),o,s=i;if(i&&Object.keys(i).length>0){let{consoleMessage:e,...t}=i;typeof e==`string`&&(o=e),s=Object.keys(t).length>0?t:void 0}if(an(n(),t,r,s),!Kt(t,{level:a.level})||!Gt(e))return;let c=o??r;!St()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(c)||rn(t,nn({level:t,subsystem:e,message:a.style===`json`?r:c,style:a.style,meta:s}))},i=t=>Kt(t,{level:Wt().level})&&Gt(e),a=e=>st(e);return{subsystem:e,isEnabled:(e,t=`any`)=>t===`console`?i(e):t===`file`?a(e):i(e)||a(e),trace:(e,t)=>r(`trace`,e,t),debug:(e,t)=>r(`debug`,e,t),info:(e,t)=>r(`info`,e,t),warn:(e,t)=>r(`warn`,e,t),error:(e,t)=>r(`error`,e,t),fatal:(e,t)=>r(`fatal`,e,t),raw:t=>{if(an(n(),`info`,t,{raw:!0}),Gt(e)){if(!St()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(t))return;rn(`info`,t)}},child:t=>on(`${e}/${t}`)}}function sn(e){return[e.hasInput?`pipe`:e.preferInherit?`inherit`:`pipe`,`pipe`,`pipe`]}d(s);function cn(e){if(process.platform!==`win32`)return e;let t=i.basename(e).toLowerCase();return i.extname(t)?e:[`npm`,`pnpm`,`yarn`,`npx`].includes(t)?`${e}.cmd`:e}function ln(e){return!1}async function un(e,t){let n=typeof t==`number`?{timeoutMs:t}:t,{timeoutMs:r,cwd:a,input:o,env:s,noOutputTimeoutMs:c}=n,{windowsVerbatimArguments:u}=n,d=o!==void 0,f=(()=>{let t=i.basename(e[0]??``);return t===`npm`||t===`npm.cmd`||t===`npm.exe`?!0:t===`node`||t===`node.exe`?(e[1]??``).includes(`npm-cli.js`):!1})(),p=s?{...process.env,...s}:{...process.env},m=Object.fromEntries(Object.entries(p).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)]));f&&(m.NPM_CONFIG_FUND??=`false`,m.npm_config_fund??=`false`);let h=sn({hasInput:d,preferInherit:!0}),g=cn(e[0]??``),_=l(g,e.slice(1),{stdio:h,cwd:a,env:m,windowsVerbatimArguments:u,...ln({resolvedCommand:g,platform:process.platform})?{shell:!0}:{}});return await new Promise((e,t)=>{let n=``,i=``,a=!1,s=!1,l=!1,u=null,f=typeof c==`number`&&Number.isFinite(c)&&c>0,p=()=>{u&&=(clearTimeout(u),null)},m=()=>{!f||a||(p(),u=setTimeout(()=>{a||(l=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`))},Math.floor(c)))},h=setTimeout(()=>{s=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`)},r);m(),d&&_.stdin&&(_.stdin.write(o??``),_.stdin.end()),_.stdout?.on(`data`,e=>{n+=e.toString(),m()}),_.stderr?.on(`data`,e=>{i+=e.toString(),m()}),_.on(`error`,e=>{a||(a=!0,clearTimeout(h),p(),t(e))}),_.on(`close`,(t,r)=>{if(a)return;a=!0,clearTimeout(h),p();let o=l?`no-output-timeout`:s?`timeout`:r==null?`exit`:`signal`;e({pid:_.pid??void 0,stdout:n,stderr:i,code:t,signal:r,killed:_.killed,termination:o,noOutputTimedOut:l})})})}async function dn(e,t,n,r=fetch){let i=new AbortController,a=setTimeout(i.abort.bind(i),Math.max(1,n));try{return await r(e,{...t,signal:i.signal})}finally{clearTimeout(a)}}async function fn(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t)?.packageManager?.split(`@`)[0]?.trim();if(n===`pnpm`||n===`bun`||n===`npm`)return n}catch{}let t=await a.readdir(e).catch(()=>[]);return t.includes(`pnpm-lock.yaml`)?`pnpm`:t.includes(`bun.lockb`)?`bun`:t.includes(`package-lock.json`)?`npm`:null}function pn(e){if(!e)return null;let t=e.trim().toLowerCase();return t===`stable`||t===`beta`||t===`dev`?t:null}function mn(e){return/(?:^|[.-])beta(?:[.-]|$)/i.test(e)}function hn(e){if(e.configChannel)return{channel:e.configChannel,source:`config`};if(e.installKind===`git`){let t=e.git?.tag;return t?{channel:mn(t)?`beta`:`stable`,source:`git-tag`}:{channel:`stable`,source:`default`}}return e.installKind,{channel:`stable`,source:`default`}}function gn(e){return e.source===`config`?`${e.channel} (config)`:e.source===`git-tag`?e.gitTag?`${e.channel} (${e.gitTag})`:`${e.channel} (tag)`:e.source===`git-branch`?e.gitBranch?`${e.channel} (${e.gitBranch})`:`${e.channel} (branch)`:`${e.channel} (default)`}function _n(e){let t=hn({configChannel:e.configChannel,installKind:e.installKind,git:e.gitTag||e.gitBranch?{tag:e.gitTag??null,branch:e.gitBranch??null}:void 0});return{channel:t.channel,source:t.source,label:gn({channel:t.channel,source:t.source,gitTag:e.gitTag??null,gitBranch:e.gitBranch??null})}}function T(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}function E(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function D(e,t=process.env,n=p.homedir){if(!e)return``;let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Fe(r,{home:x(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}function vn(e=process.env,t=p.homedir){let r=e.FASED_STATE_DIR?.trim()||e.FASED_CONFIG_DIR?.trim();if(r)return D(r);let a=i.join(x(e,t),`.fased`);try{if(n.existsSync(a))return a}catch{}return a}function yn(){return Me(process.env,p.homedir)}function bn(){let e=yn();if(e)return process.env.FASED_HOME?.trim()?{home:e,prefix:`$FASED_HOME`}:{home:e,prefix:`~`}}function xn(e){if(!e)return e;let t=bn();return t?e.split(t.home).join(t.prefix):e}function Sn(e){return xn(e)}vn();function Cn(e){let t=i.dirname(e);return i.basename(t).startsWith(`@`)?i.dirname(t):t}function wn(e){let t=i.resolve(e),n=`${i.sep}.fased${i.sep}install-cache${i.sep}npm-global`,r=`${n}${`${i.sep}lib${i.sep}node_modules`}`,a=t.indexOf(`${r}${i.sep}`);if(a<0)return null;let o=t.slice(0,a+n.length),s=i.join(o,`lib`,`node_modules`),c=i.join(i.dirname(o),`npm-cache`),l=Cn(t);return i.resolve(l)===i.resolve(s)?{manager:`npm`,globalRoot:s,cacheRoot:i.dirname(o),env:{npm_config_prefix:o,npm_config_cache:c}}:null}async function Tn(e){try{return await a.access(e),!0}catch{return!1}}async function En(e){return await fn(e)??`unknown`}async function Dn(e){let t=await un([`git`,`-C`,e,`rev-parse`,`--show-toplevel`],{timeoutMs:4e3}).catch(()=>null);if(!t||t.code!==0)return null;let n=t.stdout.trim();return n?i.resolve(n):null}async function On(e){let t=e.timeoutMs??6e3,n=i.resolve(e.root),r={root:n,sha:null,tag:null,branch:null,upstream:null,dirty:null,ahead:null,behind:null,fetchOk:null},a=await un([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`HEAD`],{timeoutMs:t}).catch(()=>null);if(!a||a.code!==0)return{...r,error:a?.stderr?.trim()||`git unavailable`};let o=a.stdout.trim()||null,s=await un([`git`,`-C`,n,`rev-parse`,`HEAD`],{timeoutMs:t}).catch(()=>null),c=s&&s.code===0?s.stdout.trim():null,l=await un([`git`,`-C`,n,`describe`,`--tags`,`--exact-match`],{timeoutMs:t}).catch(()=>null),u=l&&l.code===0?l.stdout.trim():null,d=await un([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`@{upstream}`],{timeoutMs:t}).catch(()=>null),f=d&&d.code===0?d.stdout.trim():null,p=await un([`git`,`-C`,n,`status`,`--porcelain`,`--`,`:!dist/control-ui/`],{timeoutMs:t}).catch(()=>null),m=p&&p.code===0?p.stdout.trim().length>0:null,h=e.fetch?await un([`git`,`-C`,n,`fetch`,`--quiet`,`--prune`],{timeoutMs:t}).then(e=>e.code===0).catch(()=>!1):null,g=f&&f.length>0?await un([`git`,`-C`,n,`rev-list`,`--left-right`,`--count`,`HEAD...${f}`],{timeoutMs:t}).catch(()=>null):null,_=g&&g.code===0?(e=>{let t=e.trim().split(/\s+/);if(t.length<2)return null;let n=Number.parseInt(t[0]??``,10),r=Number.parseInt(t[1]??``,10);return!Number.isFinite(n)||!Number.isFinite(r)?null:{ahead:n,behind:r}})(g.stdout):null;return{root:n,sha:c,tag:u,branch:o,upstream:f,dirty:m,ahead:_?.ahead??null,behind:_?.behind??null,fetchOk:h}}async function kn(e){try{return(await a.stat(e)).mtimeMs}catch{return null}}function An(e){let t=e.root;return e.manager===`pnpm`?{lockfilePath:i.join(t,`pnpm-lock.yaml`),markerPath:i.join(t,`node_modules`,`.modules.yaml`)}:e.manager===`bun`?{lockfilePath:i.join(t,`bun.lockb`),markerPath:i.join(t,`node_modules`)}:e.manager===`npm`?{lockfilePath:i.join(t,`package-lock.json`),markerPath:i.join(t,`node_modules`)}:{lockfilePath:null,markerPath:null}}async function jn(e){let{lockfilePath:t,markerPath:n}=An({root:i.resolve(e.root),manager:e.manager});if(!t||!n)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`unknown package manager`};let r=await Tn(t),a=await Tn(n);if(!r)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`lockfile missing`};if(!a)return{manager:e.manager,status:`missing`,lockfilePath:t,markerPath:n,reason:`node_modules marker missing`};let o=await kn(t),s=await kn(n);return!o||!s?{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n}:o>s+1e3?{manager:e.manager,status:`stale`,lockfilePath:t,markerPath:n,reason:`lockfile newer than install marker`}:{manager:e.manager,status:`ok`,lockfilePath:t,markerPath:n}}async function Mn(e){let t=await Nn({tag:`latest`,timeoutMs:e?.timeoutMs});return{latestVersion:t.version,error:t.error}}async function Nn(e){let t=e?.timeoutMs??3500,n=e.tag;try{let e=await dn(`https://registry.npmjs.org/%40fased%2Ffased/${encodeURIComponent(n)}`,{},Math.max(250,t));if(!e.ok)return{tag:n,version:null,error:`HTTP ${e.status}`};let r=await e.json();return{tag:n,version:typeof r?.version==`string`?r.version:null}}catch(e){return{tag:n,version:null,error:String(e)}}}function Pn(e,t){let n=Fn(e),r=Fn(t);return!n||!r?null:n.major===r.major?n.minor===r.minor?n.patch===r.patch?Ln(n.prerelease,r.prerelease):n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1}function Fn(e){if(!e)return null;let t=In(e.trim()),n=/^v?([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(t);if(!n)return null;let[,r,i,a,o]=n;return!r||!i||!a?null:{major:Number.parseInt(r,10),minor:Number.parseInt(i,10),patch:Number.parseInt(a,10),prerelease:o?o.split(`.`).filter(Boolean):null}}function In(e){let t=e.trim(),n=/^([vV]?[0-9]+\.[0-9]+\.[0-9]+)\.beta(?:\.([0-9A-Za-z.-]+))?$/.exec(t);if(!n)return t;let r=n[1],i=n[2];return i?`${r}-beta.${i}`:`${r}-beta`}function Ln(e,t){if(!e?.length&&!t?.length)return 0;if(!e?.length)return 1;if(!t?.length)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n==null&&i==null)return 0;if(n==null)return-1;if(i==null)return 1;if(n===i)continue;let a=/^[0-9]+$/.test(n),o=/^[0-9]+$/.test(i);return a&&o?Number.parseInt(n,10)<Number.parseInt(i,10)?-1:1:a&&!o?-1:!a&&o?1:n<i?-1:1}return 0}async function Rn(e){let t=e.timeoutMs??6e3,n=e.root?i.resolve(e.root):null;if(!n)return{root:null,installKind:`unknown`,packageManager:`unknown`,registry:e.includeRegistry?await Mn({timeoutMs:t}):void 0};let r=await Dn(n),a=r&&i.resolve(r)===n,o=a?`git`:`package`,s=!a&&wn(n)?`npm`:await En(n);return{root:n,installKind:o,packageManager:s,git:a?await On({root:n,timeoutMs:t,fetch:!!e.fetchGit}):void 0,deps:await jn({root:n,manager:s}),registry:e.includeRegistry?await Mn({timeoutMs:t}):void 0}}const zn=new Set([`fased`,`@fased/fased`]),Bn=[`../package.json`,`../../package.json`,`../../../package.json`,`./package.json`],Vn=[`../build-info.json`,`../../build-info.json`,`./build-info.json`];function Hn(t,n,r={}){try{let i=e(t);for(let e of n)try{let t=i(e),n=t.version?.trim();if(!n||r.requirePackageName&&!zn.has(t.name??``))continue;return n}catch{}return null}catch{return null}}function Un(...e){for(let t of e){let e=t?.trim();if(e)return e}}function Wn(e){return Hn(e,Bn,{requirePackageName:!0})}function Gn(e){return Hn(e,Vn)}function Kn(e){return Wn(e)||Gn(e)}function qn(e=process.env,t=`dev`){return Un(e.FASED_VERSION,e.FASED_SERVICE_VERSION,e.npm_package_version)??t}const Jn=typeof __FASED_VERSION__==`string`&&__FASED_VERSION__||process.env.FASED_BUNDLED_VERSION||Kn(import.meta.url)||`0.0.0`;function Yn(e,t={}){let n=e.registry?.latestVersion??null,r=n?Pn(Jn,n):null,i=r!=null&&r<0,a=(t.channel==null||t.channel===`dev`)&&e.installKind===`git`&&typeof e.git?.behind==`number`?e.git.behind:null,o=a!=null&&a>0;return{available:o||i,hasGitUpdate:o,hasRegistryUpdate:i,latestVersion:i?n:null,gitBehind:a}}function Xn(e,t={}){let n=Yn(e,t);if(!n.available)return null;let r=[];return n.hasGitUpdate&&n.gitBehind!=null&&r.push(`git behind ${n.gitBehind}`),n.hasRegistryUpdate&&n.latestVersion&&r.push(`npm ${n.latestVersion}`),`Update available${r.length>0?` (${r.join(` · `)})`:``}. Run: ${ge(`fased update`)}`}function Zn(e,t={}){let n=[],r=()=>{if(e.registry?.latestVersion){let t=Pn(Jn,e.registry.latestVersion);t===0?n.push(`npm latest ${e.registry.latestVersion}`):t!=null&&t<0?n.push(`npm update ${e.registry.latestVersion}`):n.push(`npm latest ${e.registry.latestVersion} (local newer)`);return}e.registry?.error&&n.push(`npm latest unknown`)};if(e.installKind===`git`&&e.git){if(t.channel&&t.channel!==`dev`)n.push(`${t.channel} channel`),e.git.dirty===!0&&n.push(`dirty`);else{let t=e.git.branch?`git ${e.git.branch}`:`git`;n.push(t),e.git.upstream&&n.push(`↔ ${e.git.upstream}`),e.git.dirty===!0&&n.push(`dirty`),e.git.behind!=null&&e.git.ahead!=null&&(e.git.behind===0&&e.git.ahead===0?n.push(`up to date`):e.git.behind>0&&e.git.ahead===0?n.push(`behind ${e.git.behind}`):e.git.behind===0&&e.git.ahead>0?n.push(`ahead ${e.git.ahead}`):e.git.behind>0&&e.git.ahead>0&&n.push(`diverged (ahead ${e.git.ahead}, behind ${e.git.behind})`)),e.git.fetchOk===!1&&n.push(`fetch failed`)}r()}else n.push(e.packageManager===`unknown`?`pkg`:e.packageManager),r();return e.deps&&(e.deps.status===`ok`&&n.push(`deps ok`),e.deps.status===`missing`&&n.push(`deps missing`),e.deps.status===`stale`&&n.push(`deps stale`)),`Update: ${n.join(` · `)}`}function Qn(e){return e?.trim()||void 0}function $n(e){let t=e?.commands?.ownerDisplay;return t===`hash`?{ownerDisplay:`hash`,ownerDisplaySecret:Qn(e?.commands?.ownerDisplaySecret)}:{ownerDisplay:t,ownerDisplaySecret:void 0}}function er(e,t=()=>_.randomBytes(32).toString(`hex`)){let n=$n(e);if(n.ownerDisplay!==`hash`||n.ownerDisplaySecret)return{config:e};let r=t();return{config:{...e,commands:{...e.commands,ownerDisplay:`hash`,ownerDisplaySecret:r}},generatedSecret:r}}var tr={blockedEverywhereKeys:`NODE_OPTIONS.NODE_PATH.PYTHONHOME.PYTHONPATH.PERL5LIB.PERL5OPT.RUBYLIB.RUBYOPT.BASH_ENV.ENV.BROWSER.GIT_EDITOR.GIT_EXTERNAL_DIFF.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_EXEC_PATH.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SEQUENCE_EDITOR.GIT_TEMPLATE_DIR.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.CC.CXX.CARGO_BUILD_RUSTC.CARGO_BUILD_RUSTC_WRAPPER.RUSTC_WRAPPER.CMAKE_C_COMPILER.CMAKE_CXX_COMPILER.SHELL.SHELLOPTS.PS4.GCONV_PATH.IFS.SSLKEYLOGFILE.JAVA_OPTS.JAVA_TOOL_OPTIONS._JAVA_OPTIONS.JDK_JAVA_OPTIONS.PYTHONBREAKPOINT.DOTNET_STARTUP_HOOKS.DOTNET_ADDITIONAL_DEPS.GLIBC_TUNABLES.MAVEN_OPTS.MAKEFLAGS.MFLAGS.SBT_OPTS.GRADLE_OPTS.ANT_OPTS.HGRCPATH.EXINIT.VIMINIT.MYVIMRC.GVIMINIT.LUA_INIT.LUA_INIT_5_1.LUA_INIT_5_2.LUA_INIT_5_3.LUA_INIT_5_4.EMACSLOADPATH.RUBYSHELL.GIT_HOOK_PATH.SVN_EDITOR.SVN_SSH.BZR_EDITOR.BZR_SSH.BZR_PLUGIN_PATH.SUDO_ASKPASS.JULIA_EDITOR.CONFIG_SITE.CONFIG_SHELL.CMAKE_TOOLCHAIN_FILE.CATALINA_OPTS.CORECLR_PROFILER.HELM_PLUGINS.PACKER_PLUGIN_PATH.VAGRANT_VAGRANTFILE.ERL_AFLAGS.ERL_FLAGS.ERL_ZFLAGS.ELIXIR_ERL_OPTIONS.R_ENVIRON.R_PROFILE.R_ENVIRON_USER.R_PROFILE_USER.HOSTALIASES`.split(`.`),blockedOverrideOnlyKeys:`HOME.GRADLE_USER_HOME.ZDOTDIR.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SSH_COMMAND.GIT_SSH.GIT_PROXY_COMMAND.GIT_ASKPASS.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.SSH_ASKPASS.LESSOPEN.LESSCLOSE.PAGER.MANPAGER.GIT_PAGER.EDITOR.VISUAL.FCEDIT.SUDO_EDITOR.PROMPT_COMMAND.HISTFILE.PERL5DB.PERL5DBCMD.OPENSSL_CONF.OPENSSL_ENGINES.PYTHONSTARTUP.WGETRC.CURL_HOME.CLASSPATH.CFLAGS.CGO_CFLAGS.CGO_LDFLAGS.GOFLAGS.MAKEFLAGS.MFLAGS.CORECLR_PROFILER_PATH.PHPRC.PHP_INI_SCAN_DIR.DENO_DIR.BUN_CONFIG_REGISTRY.YARN_RC_FILENAME.HTTP_PROXY.HTTPS_PROXY.ALL_PROXY.NO_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NODE_EXTRA_CA_CERTS.SSL_CERT_FILE.SSL_CERT_DIR.REQUESTS_CA_BUNDLE.CURL_CA_BUNDLE.DOCKER_HOST.DOCKER_TLS_VERIFY.DOCKER_CERT_PATH.PIP_INDEX_URL.PIP_PYPI_URL.PIP_EXTRA_INDEX_URL.PIP_CONFIG_FILE.PIP_FIND_LINKS.PIP_TRUSTED_HOST.UV_INDEX.UV_INDEX_URL.UV_PYTHON.UV_EXTRA_INDEX_URL.UV_DEFAULT_INDEX.DOCKER_CONTEXT.LIBRARY_PATH.LDFLAGS.CPATH.C_INCLUDE_PATH.CPLUS_INCLUDE_PATH.OBJC_INCLUDE_PATH.GOPROXY.GONOSUMCHECK.GONOSUMDB.GONOPROXY.GOPRIVATE.GOENV.GOPATH.HGRCPATH.PYTHONUSERBASE.RUSTC_WRAPPER.RUSTFLAGS.CARGO_HOME.VIRTUAL_ENV.LUA_PATH.LUA_CPATH.GEM_HOME.GEM_PATH.BUNDLE_GEMFILE.COMPOSER_HOME.CARGO_BUILD_RUSTC_WRAPPER.XDG_CONFIG_HOME.XDG_CONFIG_DIRS.AWS_CONFIG_FILE.KUBECONFIG.GOOGLE_APPLICATION_CREDENTIALS.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.HELM_HOME.ANSIBLE_CONFIG.ANSIBLE_LIBRARY.ANSIBLE_CALLBACK_PLUGINS.ANSIBLE_COLLECTIONS_PATH.ANSIBLE_CONNECTION_PLUGINS.ANSIBLE_FILTER_PLUGINS.ANSIBLE_INVENTORY_PLUGINS.ANSIBLE_LOOKUP_PLUGINS.ANSIBLE_MODULE_UTILS.ANSIBLE_REMOTE_TEMP.ANSIBLE_ROLES_PATH.ANSIBLE_STRATEGY_PLUGINS.R_LIBS_USER.TF_CLI_CONFIG_FILE.TF_PLUGIN_CACHE_DIR.AMQP_URL.AWS_ACCESS_KEY_ID.AWS_CONTAINER_CREDENTIALS_FULL_URI.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.AWS_SECRET_ACCESS_KEY.AWS_SECURITY_TOKEN.AWS_SESSION_TOKEN.AZURE_CLIENT_ID.AZURE_CLIENT_SECRET.DATABASE_URL.GH_TOKEN.GITHUB_TOKEN.GITLAB_TOKEN.MONGODB_URI.NODE_AUTH_TOKEN.NPM_TOKEN.REDIS_URL.SSH_AUTH_SOCK`.split(`.`),allowedInheritedOverrideOnlyKeys:`ALL_PROXY.AWS_CONFIG_FILE.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.CURL_CA_BUNDLE.DOCKER_CERT_PATH.DOCKER_CONTEXT.DOCKER_HOST.DOCKER_TLS_VERIFY.GIT_PAGER.GOOGLE_APPLICATION_CREDENTIALS.GRADLE_USER_HOME.HISTFILE.HOME.HTTPS_PROXY.HTTP_PROXY.KUBECONFIG.MANPAGER.NODE_EXTRA_CA_CERTS.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.PAGER.REQUESTS_CA_BUNDLE.SSH_AUTH_SOCK.SSL_CERT_DIR.SSL_CERT_FILE.ZDOTDIR`.split(`.`),blockedOverridePrefixes:[`GIT_CONFIG_`,`NPM_CONFIG_`,`CARGO_REGISTRIES_`,`TF_VAR_`],blockedPrefixes:[`DYLD_`,`LD_`,`BASH_FUNC_`]};const nr=/^[A-Za-z_][A-Za-z0-9_]*$/,rr=tr;function ir(e){return Array.from(new Set(Array.from(e,e=>e.toUpperCase()))).toSorted((e,t)=>e.localeCompare(t))}const ar=ir(rr.blockedEverywhereKeys??rr.blockedKeys??[]),or=ir(rr.blockedOverrideOnlyKeys??rr.blockedOverrideKeys??[]),sr=new Set(ir(rr.allowedInheritedOverrideOnlyKeys??[])),cr=ir([...ar,...or.filter(e=>!sr.has(e))]),lr=Object.freeze(ar),ur=Object.freeze(ir(rr.blockedPrefixes)),dr=Object.freeze(cr),fr=Object.freeze(ir(rr.blockedPrefixes)),pr=Object.freeze(or),mr=Object.freeze(ir(rr.blockedOverridePrefixes??[]));Object.freeze([`TERM`,`LANG`,`LC_ALL`,`LC_CTYPE`,`LC_MESSAGES`,`COLORTERM`,`NO_COLOR`,`FORCE_COLOR`]);const hr=new Set(lr),gr=new Set(dr),_r=new Set(pr);function vr(e,t){let n=e.trim();return!n||t?.portable&&!nr.test(n)?null:n}function yr(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return hr.has(n)?!0:ur.some(e=>n.startsWith(e))}function br(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return gr.has(n)?!0:fr.some(e=>n.startsWith(e))}function xr(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return _r.has(n)?!0:mr.some(e=>n.startsWith(e))}function Sr(e){let t=e?.baseEnv??process.env,n=e?.overrides??void 0,r=e?.blockPathOverrides??!0,i={};for(let[e,n]of Object.entries(t)){if(typeof n!=`string`)continue;let t=vr(e,{portable:!0});!t||br(t)||(i[t]=n)}if(!n)return i;for(let[e,t]of Object.entries(n)){if(typeof t!=`string`)continue;let n=vr(e,{portable:!0});if(!n)continue;let a=n.toUpperCase();r&&a===`PATH`||yr(a)||xr(a)||(i[n]=t)}return i}const Cr=new Set(`ALL_PROXY.ANTHROPIC_API_KEY.ANTHROPIC_OAUTH_TOKEN.BROWSER_EXECUTABLE_PATH.FASED_AGENT_DIR.FASED_ALLOW_INSECURE_PRIVATE_WS.FASED_ALLOW_PROJECT_LOCAL_BIN.FASED_BROWSER_EXECUTABLE_PATH.FASED_BROWSER_CONTROL_MODULE.FASED_BUNDLED_HOOKS_DIR.FASED_BUNDLED_PLUGINS_DIR.FASED_BUNDLED_SKILLS_DIR.FASED_CACHE_TRACE.FASED_CACHE_TRACE_FILE.FASED_CACHE_TRACE_MESSAGES.FASED_CACHE_TRACE_PROMPT.FASED_CACHE_TRACE_SYSTEM.FASED_CONFIG_PATH.FASED_GATEWAY_PASSWORD.FASED_GATEWAY_PORT.FASED_GATEWAY_SECRET.FASED_GATEWAY_TOKEN.FASED_GATEWAY_URL.FASED_HOME.FASED_LIVE_ANTHROPIC_KEY.FASED_LIVE_ANTHROPIC_KEYS.FASED_LIVE_GEMINI_KEY.FASED_LIVE_OPENAI_KEY.FASED_MPM_CATALOG_PATHS.FASED_NODE_EXEC_FALLBACK.FASED_NODE_EXEC_HOST.FASED_OAUTH_DIR.FASED_PINNED_PYTHON.FASED_PINNED_WRITE_PYTHON.FASED_PLUGIN_CATALOG_PATHS.FASED_PROFILE.FASED_RAW_STREAM.FASED_RAW_STREAM_PATH.FASED_SHOW_SECRETS.FASED_SKIP_BROWSER_CONTROL_SERVER.FASED_STATE_DIR.FASED_TEST_TAILSCALE_BINARY.HTTP_PROXY.HTTPS_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.OPENAI_API_KEY.OPENAI_API_KEYS.PI_CODING_AGENT_DIR.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH.UV_PYTHON`.split(`.`)),wr=[`_BASE_URL`],Tr=[`ANTHROPIC_API_KEY_`,`CLAWHUB_`,`FASED_CLAWHUB_`,`FASEDHUB_`,`FASED_DISABLE_`,`FASED_SKIP_`,`FASED_UPDATE_`,`OPENAI_API_KEY_`];function Er(e){return yr(e)||xr(e)}function Dr(e){return!1}function Or(e){let t=e.toUpperCase();return Er(t)||Cr.has(t)||Tr.some(e=>t.startsWith(e))||wr.some(e=>t.endsWith(e))}function kr(e){let t;try{t=n.readFileSync(e.filePath,`utf8`)}catch(t){return e.quiet||(t&&typeof t==`object`&&`code`in t?String(t.code):void 0)!==`ENOENT`&&console.warn(`[dotenv] Failed to read ${e.filePath}: ${String(t)}`),null}let r;try{r=v.parse(t)}catch(t){return e.quiet||console.warn(`[dotenv] Failed to parse ${e.filePath}: ${String(t)}`),null}let i=[];for(let[t,n]of Object.entries(r)){let r=vr(t,{portable:!0});!r||e.shouldBlockKey(r)||i.push({key:r,value:n})}return{filePath:e.filePath,entries:i}}function Ar(e,t){let n=kr({filePath:e,shouldBlockKey:Or,quiet:t?.quiet??!0});if(n)for(let{key:e,value:t}of n.entries)process.env[e]===void 0&&(process.env[e]=t)}function jr(e){let t=new Set(Object.keys(process.env)),n=new Map,r=new Map;for(let i of e)for(let{key:e,value:a}of i.entries){if(t.has(e))continue;let o=r.get(e);if(o){if(o.value!==a){let t=`${o.filePath}\u0000${i.filePath}`,r=n.get(t);r?r.keys.add(e):n.set(t,{keptPath:o.filePath,ignoredPath:i.filePath,keys:new Set([e])})}continue}r.set(e,{value:a,filePath:i.filePath}),process.env[e]===void 0&&(process.env[e]=a)}for(let e of n.values()){let t=[...e.keys].toSorted();t.length!==0&&console.warn(`[dotenv] Conflicting values in ${e.keptPath} and ${e.ignoredPath} for ${t.join(`, `)}; keeping ${e.keptPath}.`)}}function Mr(e){let t=e?.quiet??!0,n=e?.stateEnvPath??i.join(vn(process.env),`.env`),r=i.join(x(process.env,p.homedir),`.fased`,`.env`),a=process.env.FASED_STATE_DIR?.trim()!==void 0&&i.resolve(n)!==i.resolve(r),o=[kr({filePath:n,shouldBlockKey:Dr,quiet:t})];a||o.push(kr({filePath:i.join(x(process.env,p.homedir),`.config`,`fased`,`gateway.env`),shouldBlockKey:Dr,quiet:t})),jr(o.filter(e=>e!==null))}function Nr(e){let t=e?.quiet??!0;Ar(i.join(process.cwd(),`.env`),{quiet:t}),Mr({quiet:t})}const Pr=[`true`,`1`,`yes`,`on`],Fr=[`false`,`0`,`no`,`off`],Ir=new Set(Pr),Lr=new Set(Fr);function Rr(e,t={}){if(typeof e==`boolean`)return e;if(typeof e!=`string`)return;let n=e.trim().toLowerCase();if(!n)return;let r=t.truthy??Pr,i=t.falsy??Fr,a=r===Pr?Ir:new Set(r),o=i===Fr?Lr:new Set(i);if(a.has(n))return!0;if(o.has(n))return!1}function zr(e){return Rr(e)===!0}const Br=15e3;let Vr;function Hr(e){let t=Sr({baseEnv:e}),n=p.homedir().trim();return n?t.HOME=n:delete t.HOME,delete t.ZDOTDIR,t}function Ur(e){return typeof e!=`number`||!Number.isFinite(e)?Br:Math.max(0,e)}function Wr(){if(Vr!==void 0)return Vr;try{let e=n.readFileSync(`/etc/shells`,`utf8`).split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&i.isAbsolute(e));Vr=new Set(e)}catch{Vr=null}return Vr}function Gr(e){return!i.isAbsolute(e)||i.normalize(e)!==e?!1:Wr()?.has(e)===!0}function Kr(e){let t=e.SHELL?.trim();return t&&Gr(t)?t:`/bin/sh`}function qr(e){return e.exec(e.shell,[`-l`,`-c`,`env -0`],{encoding:`buffer`,timeout:e.timeoutMs,maxBuffer:2097152,env:e.env,stdio:[`ignore`,`pipe`,`pipe`]})}function Jr(e){let t=new Map,n=e.toString(`utf8`).split(`\0`);for(let e of n){if(!e)continue;let n=e.indexOf(`=`);if(n<=0)continue;let r=e.slice(0,n),i=e.slice(n+1);r&&t.set(r,i)}return t}function Yr(e){let t=e.exec??c,n=Ur(e.timeoutMs),r=Kr(e.env),i=Hr(e.env);try{return{ok:!0,shellEnv:Jr(qr({shell:r,env:i,exec:t,timeoutMs:n}))}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function Xr(e){let t=e.logger??console;if(!e.enabled)return{ok:!0,applied:[],skippedReason:`disabled`};if(e.expectedKeys.some(t=>!!e.env[t]?.trim()))return{ok:!0,applied:[],skippedReason:`already-has-keys`};let n=Yr({env:e.env,timeoutMs:e.timeoutMs,exec:e.exec});if(!n.ok)return t.warn(`[fased] shell env fallback failed: ${n.error}`),{ok:!1,error:n.error,applied:[]};let r=[];for(let t of e.expectedKeys){if(e.env[t]?.trim())continue;let i=n.shellEnv.get(t);i?.trim()&&(e.env[t]=i,r.push(t))}return{ok:!0,applied:r}}function Zr(e){return zr(e.FASED_LOAD_SHELL_ENV)}function Qr(e){return zr(e.FASED_DEFER_SHELL_ENV_FALLBACK)}function $r(e){let t=e.FASED_SHELL_ENV_TIMEOUT_MS?.trim();if(!t)return Br;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):Br}const ei=new Set([`ENOENT`,`ENOTDIR`]),ti=/^\.\.(?:[\\/]|$)/u;function ni(e){let t=i.win32.normalize(e);return t.startsWith(`\\\\?\\`)&&(t=t.slice(4),t.toUpperCase().startsWith(`UNC\\`)&&(t=`\\\\${t.slice(4)}`)),t.replaceAll(`/`,`\\`).toLowerCase()}function ri(e){return!!(e&&typeof e==`object`&&`code`in e)}function ii(e){return ri(e)&&typeof e.code==`string`&&ei.has(e.code)}function ai(e,t){let n=i.resolve(e),r=i.resolve(t);if(process.platform===`win32`){let e=ni(n),t=ni(r),a=i.win32.relative(e,t);return a===``||!ti.test(a)&&!i.win32.isAbsolute(a)}let a=i.relative(n,r);return a===``||!ti.test(a)&&!i.isAbsolute(a)}r.O_WRONLY|r.O_CREAT|r.O_TRUNC|(process.platform!==`win32`&&`O_NOFOLLOW`in r?r.O_NOFOLLOW:0);function oi(e,t){let n=i.resolve(e),r=i.resolve(t),a=i.relative(n,r);return a===``||!a.startsWith(`..${i.sep}`)&&a!==`..`&&!i.isAbsolute(a)}Qe(import.meta.url),String.raw`\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD)\b\s*[=:]\s*(["']?)([^\s"'\\]+)\1`,String.raw`"(?:apiKey|token|secret|password|passwd|accessToken|refreshToken)"\s*:\s*"([^"]+)"`,String.raw`--(?:api[-_]?key|token|secret|password|passwd)\s+(["']?)([^\s"']+)\1`,String.raw`Authorization\s*[:=]\s*Bearer\s+([A-Za-z0-9._\-+=]+)`,String.raw`\bBearer\s+([A-Za-z0-9._\-+=]{18,})\b`,String.raw`-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]+?-----END [A-Z ]*PRIVATE KEY-----`,String.raw`\b(sk-[A-Za-z0-9_-]{8,})\b`,String.raw`\b(ghp_[A-Za-z0-9]{20,})\b`,String.raw`\b(github_pat_[A-Za-z0-9_]{20,})\b`,String.raw`\b(xox[baprs]-[A-Za-z0-9-]{10,})\b`,String.raw`\b(xapp-[A-Za-z0-9-]{10,})\b`,String.raw`\b(gsk_[A-Za-z0-9_-]{10,})\b`,String.raw`\b(AIza[0-9A-Za-z\-_]{20,})\b`,String.raw`\b(pplx-[A-Za-z0-9_-]{10,})\b`,String.raw`\b(npm_[A-Za-z0-9]{10,})\b`,String.raw`\bbot(\d{6,}:[A-Za-z0-9_-]{20,})\b`,String.raw`\b(\d{6,}:[A-Za-z0-9_-]{20,})\b`,Object.freeze({allowFinalSymlinkForUnlink:!1,allowFinalHardlinkForUnlink:!1}),Object.freeze({allowFinalSymlinkForUnlink:!0,allowFinalHardlinkForUnlink:!0});function si(e){let t=i.resolve(e.rootPath),n=i.resolve(e.absolutePath),r=e.rootCanonicalPath?i.resolve(e.rootCanonicalPath):fi(t),a=ai(t,n),o=li({absolutePath:n,outsideLexicalCanonicalPath:a?void 0:fi(n)});if(ui({skipLexicalRootCheck:e.skipLexicalRootCheck,lexicalInside:a,canonicalOutsideLexicalPath:o,rootCanonicalPath:r,boundaryLabel:e.boundaryLabel,rootPath:t,absolutePath:n}),!a){let i=o;return gi({boundaryLabel:e.boundaryLabel,rootCanonicalPath:r,candidatePath:i,absolutePath:n}),di({absolutePath:n,canonicalPath:i,rootPath:t,rootCanonicalPath:r,kind:pi(n,!1)})}return ci({params:e,absolutePath:n,rootPath:t,rootCanonicalPath:r})}function ci(e){let t=i.relative(e.rootPath,e.absolutePath).split(i.sep).filter(Boolean),r=e.params.policy?.allowFinalSymlinkForUnlink===!0,a=e.rootCanonicalPath,o=e.rootPath,s=!1;for(let c=0;c<t.length;c+=1){let l=t[c]??``,u=c===t.length-1;o=i.join(o,l);let d;try{d=n.lstatSync(o)}catch(n){if(ii(n)){let n=t.slice(c);a=i.resolve(a,...n),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}throw n}if(!d.isSymbolicLink()){a=i.resolve(a,l),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});continue}if(r&&u){s=!0,a=i.resolve(a,l),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}let f=xi(o);if(!ai(e.rootCanonicalPath,f))throw vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,symlinkPath:o});a=f,o=f}gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});let c=pi(e.absolutePath,s);return di({absolutePath:e.absolutePath,canonicalPath:a,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,kind:c})}function li(e){return e.outsideLexicalCanonicalPath??e.absolutePath}function ui(e){if(!(e.skipLexicalRootCheck||e.lexicalInside)&&!ai(e.rootCanonicalPath,e.canonicalOutsideLexicalPath))throw _i({boundaryLabel:e.boundaryLabel,rootPath:e.rootPath,absolutePath:e.absolutePath})}function di(e){return{absolutePath:e.absolutePath,canonicalPath:e.canonicalPath,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,relativePath:hi(e.rootCanonicalPath,e.canonicalPath),exists:e.kind.exists,kind:e.kind.kind}}function fi(e){let t=i.resolve(e),r=t,a=[];for(;!bi(r)&&!n.existsSync(r);){a.unshift(i.basename(r));let e=i.dirname(r);if(e===r)break;r=e}if(!n.existsSync(r))return t;try{let e=i.resolve(n.realpathSync(r));return a.length===0?e:i.resolve(e,...a)}catch{return t}}function pi(e,t){try{return{exists:!0,kind:mi(t?n.lstatSync(e):n.statSync(e))}}catch(e){if(ii(e))return{exists:!1,kind:`missing`};throw e}}function mi(e){return e.isFile()?`file`:e.isDirectory()?`directory`:e.isSymbolicLink()?`symlink`:`other`}function hi(e,t){let n=i.relative(i.resolve(e),i.resolve(t));return!n||n===`.`||n.startsWith(`..`)||i.isAbsolute(n)?``:n}function gi(e){if(!ai(e.rootCanonicalPath,e.candidatePath))throw Error(`Path resolves outside ${e.boundaryLabel} (${yi(e.rootCanonicalPath)}): ${yi(e.absolutePath)}`)}function _i(e){return Error(`Path escapes ${e.boundaryLabel} (${yi(e.rootPath)}): ${yi(e.absolutePath)}`)}function vi(e){return Error(`Symlink escapes ${e.boundaryLabel} (${yi(e.rootCanonicalPath)}): ${yi(e.symlinkPath)}`)}function yi(e){let t=p.homedir();return e.startsWith(t)?`~${e.slice(t.length)}`:e}function bi(e){return i.parse(e).root===e}function xi(e){try{return i.resolve(n.realpathSync(e))}catch(t){if(!ii(t))throw t;let r=n.readlinkSync(e);return fi(i.resolve(i.dirname(e),r))}}function Si(e){return e===0||e===0n}function Ci(e,t,n=process.platform){return e.ino===t.ino?e.dev===t.dev?!0:n===`win32`&&(Si(e.dev)||Si(t.dev)):!1}function wi(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`ENOENT`||t===`ENOTDIR`||t===`ELOOP`}function Ti(e,t){return Ci(e,t)}function Ei(e){let t=e.ioFs??n,r=t.constants.O_RDONLY|(typeof t.constants.O_NOFOLLOW==`number`?t.constants.O_NOFOLLOW:0),i=null;try{if(e.rejectPathSymlink&&t.lstatSync(e.filePath).isSymbolicLink())return{ok:!1,reason:`validation`};let n=e.resolvedPath??t.realpathSync(e.filePath),a=t.lstatSync(n);if(!a.isFile()||e.rejectHardlinks&&a.nlink>1||e.maxBytes!==void 0&&a.size>e.maxBytes)return{ok:!1,reason:`validation`};i=t.openSync(n,r);let o=t.fstatSync(i);if(!o.isFile()||e.rejectHardlinks&&o.nlink>1||e.maxBytes!==void 0&&o.size>e.maxBytes||!Ti(a,o))return{ok:!1,reason:`validation`};let s={ok:!0,path:n,fd:i,stat:o};return i=null,s}catch(e){return wi(e)?{ok:!1,reason:`path`,error:e}:{ok:!1,reason:`io`,error:e}}finally{i!==null&&t.closeSync(i)}}function Di(e){return typeof e.openSync==`function`&&typeof e.closeSync==`function`&&typeof e.fstatSync==`function`&&typeof e.lstatSync==`function`&&typeof e.realpathSync==`function`&&typeof e.readFileSync==`function`&&typeof e.constants==`object`&&e.constants!==null}function Oi(e){let t=e.ioFs??n,r=i.resolve(e.absolutePath),a,o;try{let t=si({absolutePath:r,rootPath:e.rootPath,rootCanonicalPath:e.rootRealPath,boundaryLabel:e.boundaryLabel,skipLexicalRootCheck:e.skipLexicalRootCheck});a=t.canonicalPath,o=t.rootCanonicalPath}catch(e){return{ok:!1,reason:`validation`,error:e}}let s=Ei({filePath:r,resolvedPath:a,rejectHardlinks:e.rejectHardlinks??!0,maxBytes:e.maxBytes,ioFs:t});return s.ok?{ok:!0,path:s.path,fd:s.fd,stat:s.stat,rootRealPath:o}:s}const ki=`fased.plugin.json`,Ai=[ki];function O(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[]}function ji(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e)continue;let i=O(r);i.length!==0&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Mi(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=typeof n==`string`?n.trim():``,i=typeof r==`string`?r.trim():``;!e||!i||(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Ni(e){if(!E(e))return;let t=O(e.memoryEmbeddingProviders),n=O(e.speechProviders),r=O(e.realtimeTranscriptionProviders),i=O(e.realtimeVoiceProviders),a=O(e.mediaUnderstandingProviders),o=O(e.imageGenerationProviders),s=O(e.videoGenerationProviders),c=O(e.musicGenerationProviders),l=O(e.webFetchProviders),u=O(e.webSearchProviders),d=O(e.tools),f={...t.length>0?{memoryEmbeddingProviders:t}:{},...n.length>0?{speechProviders:n}:{},...r.length>0?{realtimeTranscriptionProviders:r}:{},...i.length>0?{realtimeVoiceProviders:i}:{},...a.length>0?{mediaUnderstandingProviders:a}:{},...o.length>0?{imageGenerationProviders:o}:{},...s.length>0?{videoGenerationProviders:s}:{},...c.length>0?{musicGenerationProviders:c}:{},...l.length>0?{webFetchProviders:l}:{},...u.length>0?{webSearchProviders:u}:{},...d.length>0?{tools:d}:{}};return Object.keys(f).length>0?f:void 0}function Pi(e){if(!E(e))return;let t=O(e.modelPrefixes),n=O(e.modelPatterns),r={...t.length>0?{modelPrefixes:t}:{},...n.length>0?{modelPatterns:n}:{}};return Object.keys(r).length>0?r:void 0}function Fi(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!E(n))continue;let e=typeof n.provider==`string`?n.provider.trim():``,r=typeof n.method==`string`?n.method.trim():``,i=typeof n.choiceId==`string`?n.choiceId.trim():``;if(!e||!r||!i)continue;let a=typeof n.choiceLabel==`string`?n.choiceLabel.trim():``,o=typeof n.choiceHint==`string`?n.choiceHint.trim():``,s=typeof n.assistantPriority==`number`&&Number.isFinite(n.assistantPriority)?n.assistantPriority:void 0,c=n.assistantVisibility===`manual-only`||n.assistantVisibility===`visible`?n.assistantVisibility:void 0,l=O(n.deprecatedChoiceIds),u=typeof n.groupId==`string`?n.groupId.trim():``,d=typeof n.groupLabel==`string`?n.groupLabel.trim():``,f=typeof n.groupHint==`string`?n.groupHint.trim():``,p=typeof n.optionKey==`string`?n.optionKey.trim():``,m=typeof n.cliFlag==`string`?n.cliFlag.trim():``,h=typeof n.cliOption==`string`?n.cliOption.trim():``,g=typeof n.cliDescription==`string`?n.cliDescription.trim():``,_=O(n.onboardingScopes).filter(e=>e===`text-inference`||e===`image-generation`);t.push({provider:e,method:r,choiceId:i,...a?{choiceLabel:a}:{},...o?{choiceHint:o}:{},...s===void 0?{}:{assistantPriority:s},...c?{assistantVisibility:c}:{},...l.length>0?{deprecatedChoiceIds:l}:{},...u?{groupId:u}:{},...d?{groupLabel:d}:{},...f?{groupHint:f}:{},...p?{optionKey:p}:{},...m?{cliFlag:m}:{},...h?{cliOption:h}:{},...g?{cliDescription:g}:{},..._.length>0?{onboardingScopes:_}:{}})}return t.length>0?t:void 0}function Ii(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e||!E(r))continue;let i=E(r.schema)?r.schema:null;if(!i)continue;let a=E(r.uiHints)?r.uiHints:void 0,o=typeof r.label==`string`?r.label.trim():``,s=typeof r.description==`string`?r.description.trim():``,c=O(r.preferOver);t[e]={schema:i,...a?{uiHints:a}:{},...o?{label:o}:{},...s?{description:s}:{},...c.length>0?{preferOver:c}:{}}}return Object.keys(t).length>0?t:void 0}function Li(e){for(let t of Ai){let r=i.join(e,t);if(n.existsSync(r))return r}return i.join(e,ki)}function Ri(e){let t=Li(e),r=Oi({absolutePath:t,rootPath:e,boundaryLabel:`plugin root`});if(!r.ok)return r.reason===`path`?{ok:!1,error:`plugin manifest not found: ${t}`,manifestPath:t}:{ok:!1,error:`unsafe plugin manifest path: ${t} (${r.reason})`,manifestPath:t};let i;try{i=m.parse(n.readFileSync(r.fd,`utf-8`))}catch(e){return{ok:!1,error:`failed to parse plugin manifest: ${String(e)}`,manifestPath:t}}finally{n.closeSync(r.fd)}if(!E(i))return{ok:!1,error:`plugin manifest must be an object`,manifestPath:t};let a=typeof i.id==`string`?i.id.trim():``;if(!a)return{ok:!1,error:`plugin manifest requires id`,manifestPath:t};let o=E(i.configSchema)?i.configSchema:null;if(!o)return{ok:!1,error:`plugin manifest requires configSchema`,manifestPath:t};let s=i.enabledByDefault===!0,c=O(i.legacyPluginIds),l=O(i.autoEnableWhenConfiguredProviders),u=typeof i.kind==`string`?i.kind:void 0,d=typeof i.name==`string`?i.name.trim():void 0,f=typeof i.description==`string`?i.description.trim():void 0,p=typeof i.version==`string`?i.version.trim():void 0,h=O(i.channels),g=O(i.providers),_=Pi(i.modelSupport),v=ji(i.providerAuthEnvVars),ee=Mi(i.providerAuthAliases),y=Fi(i.providerAuthChoices),b=O(i.skills),te=Ni(i.contracts),ne=Ii(i.channelConfigs),re;return E(i.uiHints)&&(re=i.uiHints),{ok:!0,manifest:{id:a,configSchema:o,...s?{enabledByDefault:s}:{},...c.length>0?{legacyPluginIds:c}:{},...l.length>0?{autoEnableWhenConfiguredProviders:l}:{},kind:u,channels:h,providers:g,modelSupport:_,providerAuthEnvVars:v,providerAuthAliases:ee,providerAuthChoices:y,skills:b,name:d,description:f,version:p,uiHints:re,contracts:te,channelConfigs:ne},manifestPath:t}}const zi=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`];function Bi(e){if(e)return e.fased}const Vi={memory:`memory-core`};function Hi(e){return Vi[e]}function Ui(e,t){let n={entry:!1,install:!1,allowlist:!1,loadPath:!1,memorySlot:!1},r=e.plugins??{},i=r.entries;if(i&&t in i){let{[t]:e,...r}=i;i=Object.keys(r).length>0?r:void 0,n.entry=!0}let a=r.installs,o=a?.[t];if(a&&t in a){let{[t]:e,...r}=a;a=Object.keys(r).length>0?r:void 0,n.install=!0}let s=r.allow;Array.isArray(s)&&s.includes(t)&&(s=s.filter(e=>e!==t),s.length===0&&(s=void 0),n.allowlist=!0);let c=r.load;if(o?.source===`path`&&o.sourcePath){let e=o.sourcePath,t=c?.paths;if(Array.isArray(t)&&t.includes(e)){let r=t.filter(t=>t!==e);c=r.length>0?{...c,paths:r}:void 0,n.loadPath=!0}}let l=r.slots;l?.memory===t&&(l={...l,memory:Hi(`memory`)},n.memorySlot=!0),l&&Object.keys(l).length===0&&(l=void 0);let u={...r,entries:i,installs:a,allow:s,load:c,slots:l};return u.entries===void 0&&delete u.entries,u.installs===void 0&&delete u.installs,u.allow===void 0&&delete u.allow,u.load===void 0&&delete u.load,u.slots===void 0&&delete u.slots,{config:{...e,plugins:Object.keys(u).length>0?u:void 0},actions:n}}const Wi=new Set([`__proto__`,`prototype`,`constructor`]);function Gi(e){return Wi.has(e)}const Ki=`main`,qi=/^[a-z0-9][a-z0-9_-]{0,63}$/i,Ji=/[^a-z0-9_-]+/g,Yi=/^-+/,Xi=/-+$/;function k(e){let t=(e??``).trim();return t?qi.test(t)?t.toLowerCase():t.toLowerCase().replace(Ji,`-`).replace(Yi,``).replace(Xi,``).slice(0,64)||Ki:Ki}var Zi=class extends Error{constructor(e){super(na(e)),this.name=`DuplicateAgentDirError`,this.duplicates=e}};function Qi(e){let t=i.resolve(e);return process.platform===`darwin`||process.platform===`win32`?t.toLowerCase():t}function $i(e){let t=new Set,n=Array.isArray(e.agents?.list)?e.agents?.list:[],r=n.find(e=>e?.default)?.id??n[0]?.id??Ki;t.add(k(r));for(let e of n)e?.id&&t.add(k(e.id));let i=e.bindings;if(Array.isArray(i))for(let e of i){let n=e?.agentId;typeof n==`string`&&n.trim()&&t.add(k(n))}return[...t]}function ea(e,t,n){let r=k(t),a=(Array.isArray(e.agents?.list)?e.agents?.list.find(e=>k(e.id)===r)?.agentDir:void 0)?.trim();if(a)return D(a);let o=n?.env??process.env,s=S(o,n?.homedir??(()=>x(o,p.homedir)));return i.join(s,`agents`,r,`agent`)}function ta(e,t){let n=new Map;for(let r of $i(e)){let i=ea(e,r,t),a=Qi(i),o=n.get(a);o?o.agentIds.push(r):n.set(a,{agentDir:i,agentIds:[r]})}return[...n.values()].filter(e=>e.agentIds.length>1)}function na(e){return[`Duplicate agentDir detected (multi-agent config).`,`Each agent must have a unique agentDir; sharing it causes auth/session state collisions and token invalidation.`,``,`Conflicts:`,...e.map(e=>`- ${e.agentDir}: ${e.agentIds.map(e=>`"${e}"`).join(`, `)}`),``,`Fix: remove the shared agents.list[].agentDir override (or give each agent its own directory).`,`If you want to share credentials, copy auth-profiles.json instead of sharing the entire agentDir.`].join(`
2
- `)}async function ra(e,t){let n=`${e}.bak`;await t.unlink(`${n}.4`).catch(()=>{});for(let e=3;e>=1;--e)await t.rename(`${n}.${e}`,`${n}.${e+1}`).catch(()=>{});await t.rename(n,`${n}.1`).catch(()=>{})}function ia(e){if(typeof e==`string`)return e.trim()||void 0;if(!(!e||typeof e!=`object`))return e.primary?.trim()||void 0}const A=[`off`,`minimal`,`low`,`medium`,`high`],aa=[...A,`xhigh`],oa=[`openai/gpt-5.5`,`openai/gpt-5.4`,`openai/gpt-5.4-mini`,`openai/gpt-5.4-nano`,`openai-codex/gpt-5.5`,`openai-codex/gpt-5.4`,`openai-codex/gpt-5.4-mini`,`openai-codex/gpt-5.3-codex-spark`,`github-copilot/gpt-5.5`,`github-copilot/gpt-5.4`,`github-copilot/gpt-5.4-mini`,`github-copilot/gpt-5.3-codex-spark`],sa=new Set(oa.map(e=>e.toLowerCase())),ca=new Set(oa.map(e=>e.split(`/`)[1]?.toLowerCase()).filter(e=>!!e));function la(e){if(!e)return``;let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t}function ua(e){if(!e)return;let t=e.trim().toLowerCase(),n=t.replace(/[\s_-]+/g,``);if(n===`xhigh`||n===`extrahigh`)return`xhigh`;if(t===`off`)return`off`;if([`on`,`enable`,`enabled`].includes(t))return`low`;if([`min`,`minimal`].includes(t))return`minimal`;if([`low`,`thinkhard`,`think-hard`,`think_hard`].includes(t))return`low`;if([`mid`,`med`,`medium`,`thinkharder`,`think-harder`,`harder`].includes(t))return`medium`;if([`high`,`ultra`,`ultrathink`,`think-hard`,`thinkhardest`,`highest`,`max`].includes(t))return`high`;if(t===`think`)return`minimal`}function da(e,t){let n=t?.trim().toLowerCase();if(!n)return!1;let r=e?.trim().toLowerCase();return r?sa.has(`${r}/${n}`):ca.has(n)}function fa(e){let t=new Set,n=[];for(let r of e??[]){let e=ua(r);!e||t.has(e)||(t.add(e),n.push(e))}return n}function pa(e,t){return da(e,t)?[...aa]:[...A]}function ma(e){let t=e?.trim().toLowerCase()??``;return t.includes(`fable-5`)||t.includes(`opus-4-8`)||t.includes(`opus-4.8`)||t.includes(`opus-4-6`)||t.includes(`opus-4.6`)||t.includes(`opus-4-7`)||t.includes(`opus-4.7`)||t.includes(`sonnet-5`)||t.includes(`sonnet-4-6`)||t.includes(`sonnet-4.6`)||t.includes(`sonnet-4-7`)||t.includes(`sonnet-4.7`)}function ha(e,t){let n=la(e);return n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?{thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:n===`anthropic`?{thinkingMode:ma(t)?`anthropic-adaptive`:`anthropic-thinking-budget`,reasoningBudgetSupported:!ma(t)}:n===`google`||n===`google-gemini-cli`?{thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:n===`zai`?{thinkingMode:`zai-binary`,reasoningBudgetSupported:!1}:n===`qwen`||n===`qwen-coding-plan`?{thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}:n===`moonshot`||n===`kimi-coding`?{thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}:{thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}}function ga(e,t){let n=la(e),r=t?.trim().toLowerCase()??``;return!n||!r?!1:n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?/^gpt-5(?:[.-]|$)/.test(r):n===`anthropic`?r.startsWith(`claude-`)||r.includes(`claude-`):n===`google`||n===`google-gemini-cli`?r.startsWith(`gemini-`):n===`zai`?r.startsWith(`glm-`):n===`qwen`||n===`qwen-coding-plan`?r.includes(`qwen`):n===`moonshot`||n===`kimi-coding`?r.includes(`kimi`):n===`minimax`||n===`minimax-cn`?r.includes(`minimax-m2`):[`openrouter`,`vercel-ai-gateway`,`opencode`,`huggingface`,`venice`,`together`,`synthetic`,`litellm`].includes(n)?/(gpt-5|claude-|gemini-|grok-|qwen|kimi|glm-|deepseek-r1|reasoning|thinking)/.test(r):!1}function _a(e){let t=fa(e.capabilities?.thinkingLevels),n=t.length>0||typeof e.capabilities?.thinkingMode==`string`||typeof e.capabilities?.defaultThinkingLevel==`string`;if(e.capabilities?.fixedReasoning===!0&&!n||!(e.reasoning===!0||e.reasoning!==!1&&ga(e.provider,e.model))&&!n)return null;let r=ha(e.provider,e.model),i=r.thinkingMode===`zai-binary`?[`off`,`low`]:pa(e.provider,e.model),a=t.length>0?t:i,o=ua(e.capabilities?.defaultThinkingLevel);return{thinkingLevels:a,defaultThinkingLevel:o&&a.includes(o)?o:a.includes(`low`)?`low`:a[0]??`off`,thinkingMode:e.capabilities?.thinkingMode??r.thinkingMode,reasoningBudgetSupported:e.capabilities?.reasoningBudgetSupported??r.reasoningBudgetSupported}}const va=`cloudflare-ai-gateway`,ya=`claude-sonnet-5`;`${va}${ya}`;const ba={input:0,output:0,cacheRead:0,cacheWrite:0},xa={tools:!0,json:!0},Sa={thinkingLevels:[...A],defaultThinkingLevel:`low`,reasoningBudgetSupported:!0},Ca=[{id:ya,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:1e6,maxTokens:128e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-adaptive`}},{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:1e6,maxTokens:128e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1}},{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:2e5,maxTokens:64e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-thinking-budget`}}],wa=Ca.map(e=>e.id).map(e=>`${va}/${e}`);function Ta(e){let t=e?.id?.trim()||ya,n=Ca.find(e=>e.id===t)??Ca[0];return{id:t,name:e?.name??n.name,api:`anthropic-messages`,reasoning:e?.reasoning??n.reasoning,input:e?.input??[...n.input],cost:{...n.cost},contextWindow:n.contextWindow,maxTokens:n.maxTokens,capabilities:n.capabilities?{...n.capabilities}:void 0}}function Ea(e=va){return Object.fromEntries(Ca.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Da=`openai/gpt-oss-120b`;`${Da}`;const j={tools:!0,json:!0},Oa=[{id:Da,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.15,output:.75,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:1.69,output:3.38,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Flash`,name:`DeepSeek V4 Flash`,reasoning:!1,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:.14,output:.28,cacheRead:0,cacheWrite:0},capabilities:j},{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:204800,maxTokens:8192,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},capabilities:j},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:8192,cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3.6-35B-A3B`,name:`Qwen3.6 35B A3B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.15,output:.95,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3 Coder Next`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},capabilities:{tools:!0,json:!1}},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:1.3,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.14,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-4-26B-A4B-it`,name:`Gemma 4 26B A4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.13,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.1,output:.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.269,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen3 VL 235B A22B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:8192,cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.09,output:.58,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:0,cacheWrite:0},capabilities:{tools:!1,json:!0}},{id:`EssentialAI/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},capabilities:j},{id:`inclusionAI/Ling-2.6-1T`,name:`Ling 2.6 1T`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},capabilities:j}],ka=Oa.map(e=>e.id).map(e=>`huggingface/${e}`);function Aa(e){return{...e.capabilities?{...e.capabilities}:{},...e.reasoning?{fixedReasoning:!0}:{}}}function ja(e){let t=Aa(e);return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:t}}function Ma(e=`huggingface`){return Object.fromEntries(Oa.map(t=>[`${e}/${t.id}`.toLowerCase(),Aa(t)]))}const Na=`default`;`${Na}`;const Pa=[{id:Na,name:`LiteLLM proxy default`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,cost:{input:0,output:0,cacheRead:0,cacheWrite:0},capabilities:{}}],Fa=Pa.map(e=>e.id).map(e=>`litellm/${e}`);function Ia(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:!1},capabilities:e.capabilities?{...e.capabilities}:void 0}}function La(e=`litellm`){return Object.fromEntries(Pa.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Ra=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`,`gpt-5.3-codex-spark`,`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`qwen3.7-plus`,`minimax-m2.7`,`glm-5.2`,`kimi-k2.6`],za=Ra.map(e=>`opencode/${e}`);function Ba(e){let t=e.trim().toLowerCase();return t.startsWith(`claude-`)?{provider:`anthropic`,model:t}:t.startsWith(`gemini-`)?{provider:`google`,model:t}:t.startsWith(`glm-`)?{provider:`zai`,model:t}:t.startsWith(`kimi-`)?{provider:`moonshot`,model:t}:t.startsWith(`qwen`)?{provider:`qwen`,model:t}:t.startsWith(`gpt-`)?{provider:`openai`,model:t}:{provider:`opencode`,model:t}}function Va(e){let t=Ba(e),n=_a({provider:t.provider,model:t.model,reasoning:!0});return{tools:!0,json:!0,...n?{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}:{}}}function Ha(e){return Object.fromEntries(e.map(e=>[e,Va(e.replace(/^opencode\//,``))]))}const Ua=`hf:MiniMaxAI/MiniMax-M2.5`;`${Ua}`;const Wa={input:0,output:0,cacheRead:0,cacheWrite:0},M={tools:!0,json:!0},Ga=[{id:`hf:zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,capabilities:M},{id:Ua,name:`MiniMax M2.5`,reasoning:!1,input:[`text`],contextWindow:191488,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-4.7-Flash`,name:`GLM-4.7 Flash`,reasoning:!1,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4`,name:`NVIDIA Nemotron 3 Super 120B`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-4.7`,name:`GLM-4.7`,reasoning:!1,input:[`text`],contextWindow:202752,maxTokens:65536,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:159e3,maxTokens:8192,capabilities:M},{id:`hf:openai/gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:nvidia/Kimi-K2.5-NVFP4`,name:`Kimi K2.5 NVFP4`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3 235B A22B Thinking 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M}],Ka=Ga.map(e=>e.id);function qa(e){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:{...Wa},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function Ja(e=`synthetic`){return Object.fromEntries(Ga.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Ya=`moonshotai/Kimi-K2.6`;`${Ya}`;const N={tools:!0,json:!0},Xa={tools:!1,json:!1},Za=[{id:Ya,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:16384,cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:1.2},capabilities:{...N,video:!0}},{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:2.8,cacheRead:.5,cacheWrite:2.8},capabilities:N},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.3},capabilities:N},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1.4,output:4.4,cacheRead:1.4,cacheWrite:1.4},capabilities:N},{id:`zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1,output:3.2,cacheRead:1,cacheWrite:1},capabilities:N},{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,reasoning:!0,input:[`text`],contextWindow:1e6,maxTokens:32768,cost:{input:.5,output:3,cacheRead:.5,cacheWrite:.5},capabilities:Xa},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.6,output:3.6,cacheRead:.6,cacheWrite:.6},capabilities:N},{id:`Qwen/Qwen3.5-9B`,name:`Qwen3.5 9B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.1,output:.15,cacheRead:.1,cacheWrite:.1},capabilities:N},{id:`openai/gpt-oss-120b`,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},capabilities:N},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.05,output:.2,cacheRead:.05,cacheWrite:.05},capabilities:N},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:512e3,maxTokens:32768,cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:2.1},capabilities:N},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:32768,cost:{input:3,output:7,cacheRead:3,cacheWrite:3},capabilities:Xa},{id:`deepseek-ai/DeepSeek-V3.1`,name:`DeepSeek V3.1`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:32768,cost:{input:.6,output:1.7,cacheRead:.6,cacheWrite:.6},capabilities:Xa},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct FP8`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:32768,cost:{input:2,output:2,cacheRead:2,cacheWrite:2},capabilities:N},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.6,cacheRead:.2,cacheWrite:.2},capabilities:N},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:1.2,cacheRead:.5,cacheWrite:.5},capabilities:Xa},{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B Instruct Turbo`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.88,output:.88,cacheRead:.88,cacheWrite:.88},capabilities:N},{id:`essentialai/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:.15,cacheWrite:.15},capabilities:N},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.5,cacheRead:.2,cacheWrite:.2},capabilities:N},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:.06,cacheWrite:.06},capabilities:{tools:!1,json:!0}}],Qa=Za.map(e=>e.id).map(e=>`together/${e}`);function $a(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function eo(e=`together`){return Object.fromEntries(Za.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const to=`zai-org-glm-5-1`;`${to}`;const P={thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},F={tools:!0,json:!0},no={tools:!0,json:!1},ro=[{id:to,name:`GLM 5.1`,reasoning:!0,input:[`text`],cost:{input:1.75,output:5.5,cacheRead:.325,cacheWrite:0},contextWindow:2e5,maxTokens:24e3,capabilities:{...F,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`venice-uncensored-1-2`,name:`Venice Uncensored 1.2`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.9,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:F},{id:`qwen-3-6-plus`,name:`Qwen 3.6 Plus Uncensored`,reasoning:!0,input:[`text`,`image`],cost:{input:.625,output:3.75,cacheRead:.0625,cacheWrite:.78},contextWindow:1e6,maxTokens:65536,capabilities:{...F,video:!0,fixedReasoning:!0}},{id:`qwen3-5-397b-a17b`,name:`Qwen 3.5 397B`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768,capabilities:{...F,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`qwen3-235b-a22b-thinking-2507`,name:`Qwen 3 235B A22B Thinking`,reasoning:!0,input:[`text`],cost:{input:.45,output:3.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...F,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`qwen3-coder-480b-a35b-instruct-turbo`,name:`Qwen 3 Coder 480B Turbo`,reasoning:!1,input:[`text`],cost:{input:.35,output:1.5,cacheRead:.04,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:F},{id:`qwen3-vl-235b-a22b`,name:`Qwen3 VL 235B`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384,capabilities:F},{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],cost:{input:1.73,output:3.796,cacheRead:.33,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...F,fixedReasoning:!0}},{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,input:[`text`],cost:{input:.17,output:.35,cacheRead:.028,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...F,fixedReasoning:!0}},{id:`kimi-k2-6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],cost:{input:.85,output:4.655,cacheRead:.22,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...F,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,reasoning:!0,input:[`text`,`image`],cost:{input:6,output:30,cacheRead:.6,cacheWrite:7.5},contextWindow:1e6,maxTokens:128e3,capabilities:{...F,fixedReasoning:!0}},{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,reasoning:!0,input:[`text`,`image`],cost:{input:3.6,output:18,cacheRead:.36,cacheWrite:4.5},contextWindow:1e6,maxTokens:64e3,capabilities:{...F,fixedReasoning:!0}},{id:`openai-gpt-55`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],cost:{input:6.25,output:37.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`openai-gpt-55-pro`,name:`GPT-5.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:37.5,output:225,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`medium`,...P}},{id:`openai-gpt-54`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],cost:{input:3.13,output:18.8,cacheRead:.313,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`openai-gpt-54-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],cost:{input:.9375,output:5.625,cacheRead:.09375,cacheWrite:0},contextWindow:4e5,maxTokens:128e3,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`gemini-3-1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.5,cacheWrite:.5},contextWindow:1e6,maxTokens:32768,capabilities:{...F,audio:!0,video:!0,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`grok-4-20`,name:`Grok 4.20`,reasoning:!0,input:[`text`,`image`],cost:{input:1.42,output:2.83,cacheRead:.23,cacheWrite:0},contextWindow:2e6,maxTokens:128e3,capabilities:{...F,fixedReasoning:!0}},{id:`minimax-m27`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],cost:{input:.375,output:1.5,cacheRead:.075,cacheWrite:0},contextWindow:198e3,maxTokens:32768,capabilities:{...no,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`openai-gpt-oss-120b`,name:`OpenAI GPT OSS 120B`,reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...no,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`google-gemma-4-31b-it`,name:`Google Gemma 4 31B Instruct`,reasoning:!0,input:[`text`,`image`],cost:{input:.175,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192,capabilities:{...F,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:.75,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...F,thinkingLevels:[`off`,`high`],defaultThinkingLevel:`high`,...P}}],io=ro.map(e=>e.id).map(e=>`venice/${e}`);function ao(e){let t=e.capabilities,n=!!t?.thinkingLevels?.length;return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:n},capabilities:t?{...t}:void 0}}function oo(e=`venice`){return Object.fromEntries(ro.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const so=[{id:`openai/gpt-5.5`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`web-search`,`implicit-caching`,`file-input`,`vision`]},{id:`openai/gpt-5.4`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-mini`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-nano`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`web-search`,`vision`,`file-input`]},{id:`anthropic/claude-fable-5`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-opus-4.8`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-sonnet-5`,contextWindow:1e6,maxTokens:128e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-haiku-4.5`,contextWindow:2e5,maxTokens:64e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`]},{id:`google/gemini-3.5-flash`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-pro-preview`,contextWindow:1e6,maxTokens:64e3,tags:[`file-input`,`tool-use`,`reasoning`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3-flash-preview`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-flash-lite`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-4.3`,contextWindow:1e6,maxTokens:1e6,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-build-0.1`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`,`implicit-caching`]},{id:`mistral/mistral-medium-3.5`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`mistral/mistral-small-2603`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`mistral/mistral-large-2512`,contextWindow:256e3,maxTokens:256e3,tags:[`vision`]},{id:`mistral/devstral-2512`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`]},{id:`minimax/minimax-m2.7`,contextWindow:204800,maxTokens:131e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`]},{id:`minimax/minimax-m2.7-highspeed`,contextWindow:204800,maxTokens:131100,tags:[`reasoning`,`tool-use`,`implicit-caching`,`vision`]},{id:`moonshotai/kimi-k2.6`,contextWindow:262e3,maxTokens:262e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`]}],co=so.map(e=>e.id),lo=co.map(e=>`vercel-ai-gateway/${e}`),uo={anthropic:`Anthropic`,google:`Google`,minimax:`MiniMax`,mistral:`Mistral`,moonshotai:`Moonshot`,openai:`OpenAI`,xai:`xAI`};function fo(e){let t=e.trim().replace(/^vercel-ai-gateway\//,``).toLowerCase();return so.find(e=>e.id.toLowerCase()===t)}function po(e){let[t,...n]=e.trim().replace(/^vercel-ai-gateway\//,``).split(`/`),r=n.join(`/`);switch(t){case`anthropic`:return{provider:`anthropic`,model:r};case`google`:return{provider:`google`,model:r};case`minimax`:return{provider:`minimax`,model:r};case`moonshotai`:return{provider:`moonshot`,model:r};case`openai`:return{provider:`openai`,model:r};case`xai`:return{provider:`xai`,model:r};default:return{provider:`vercel-ai-gateway`,model:e}}}function mo(e){let t=fo(e);if(!t)return;let n=new Set(t.tags.map(e=>e.toLowerCase())),r=po(t.id),i=n.has(`reasoning`)?_a({provider:r.provider,model:r.model,reasoning:!0}):null;return{tools:n.has(`tool-use`),...i?{thinkingLevels:i.thinkingLevels,defaultThinkingLevel:i.defaultThinkingLevel,thinkingMode:i.thinkingMode,reasoningBudgetSupported:i.reasoningBudgetSupported}:{}}}function ho(e){return Object.fromEntries(e.flatMap(e=>{let t=mo(e);return t?[[e,t]]:[]}))}function go(e){let[t,...n]=e.split(`/`),r=uo[t??``]??t,i=n.join(`/`);return!r||!i?e:`${r} ${i.replace(/\bapi\b/gi,`API`).replace(/\bgpt\b/gi,`GPT`).replace(/\bxai\b/gi,`xAI`).replace(/[._-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}`}function _o(e){let t=fo(e),n=new Set(t?.tags.map(e=>e.toLowerCase())??[]),r=mo(e);return{id:e,name:go(e),reasoning:n.has(`reasoning`),input:n.has(`vision`)?[`text`,`image`]:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:t?.contextWindow??2e5,maxTokens:t?.maxTokens??8192,api:`openai-completions`,...r?{capabilities:r}:{}}}const vo={tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},yo={...vo,audio:!0,video:!0},bo=[{id:`mimo-v2.5-pro`,name:`Xiaomi MiMo V2.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:vo},{id:`mimo-v2.5`,name:`Xiaomi MiMo V2.5`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:yo},{id:`mimo-v2-pro`,name:`Xiaomi MiMo V2 Pro`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:vo},{id:`mimo-v2-omni`,name:`Xiaomi MiMo V2 Omni`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:128e3,capabilities:yo},{id:`mimo-v2-flash`,name:`Xiaomi MiMo V2 Flash`,reasoning:!0,input:[`text`],cost:{input:.11,output:.32,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:64e3,capabilities:vo}],xo=bo.map(e=>e.id);function So(e){let t=bo.find(t=>t.id===e);if(!t)throw Error(`Unknown Xiaomi model: ${e}`);return{...t,input:[...t.input],cost:{...t.cost},capabilities:t.capabilities?{...t.capabilities}:void 0}}function Co(e=`xiaomi`){return Object.fromEntries(bo.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const wo=`openai.anthropic.chutes.ollama.lmstudio.vllm.minimax.moonshot.google.xai.mistral.volcengine.byteplus.openrouter.qwen.zai.qianfan.copilot.ai-gateway.opencode-zen.xiaomi.synthetic.together.huggingface.venice.litellm.cloudflare-ai-gateway.custom`.split(`.`);new Map(wo.map((e,t)=>[e,t]));const To=`openai`,Eo=`openai-codex`,Do=`anthropic`,Oo=`chutes`,ko=`ollama`,Ao=`lmstudio`,jo=`vllm`,Mo=`minimax`,No=`minimax-cn`,Po=`minimax-portal`,I=`moonshot`,Fo=`kimi-coding`,Io=`google`,Lo=`google-gemini-cli`,Ro=`mistral`,zo=`volcengine`,Bo=`volcengine-coding`,Vo=`volcengine-plan`,Ho=`byteplus`,Uo=`byteplus-coding`,Wo=`byteplus-plan`,Go=`openrouter`,Ko=`qwen`,qo=`qwen-coding-plan`,Jo=`qianfan`,Yo=`github-copilot`,Xo=`copilot-proxy`,Zo=`vercel-ai-gateway`,Qo=`opencode`,$o=`xiaomi`,es=`synthetic`,ts=`together`,ns=`huggingface`,rs=`venice`,is=`litellm`,as=`custom`,os=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`],ss=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`],cs=os.map(e=>`${To}/${e}`),ls=ss.map(e=>`${Eo}/${e}`),us=[`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`].map(e=>`${Do}/${e}`),ds=[`google/gemma-4-31B-turbo-TEE`,`Qwen/Qwen3-32B-TEE`,`deepseek-ai/DeepSeek-V3.2-TEE`,`zai-org/GLM-5.1-TEE`,`moonshotai/Kimi-K2.6-TEE`,`Qwen/Qwen3.6-27B-TEE`,`Qwen/Qwen3.5-397B-A17B-TEE`,`zai-org/GLM-5-TEE`],fs=ds.map(e=>`${Oo}/${e}`),ps=[],ms=[],hs=[],gs=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`],_s=gs.map(e=>`${Mo}/${e}`),vs=gs.map(e=>`${No}/${e}`),ys=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`].map(e=>`${Po}/${e}`),bs=[`kimi-k2.6`,`kimi-k2.5`].map(e=>`${I}/${e}`),xs=[`kimi-for-coding`].map(e=>`${Fo}/${e}`),Ss=[`gemini-3.5-flash`,`gemini-3.1-pro-preview`,`gemini-3-flash-preview`,`gemini-3.1-flash-lite`],Cs=Ss.map(e=>`${Io}/${e}`),ws=Ss.map(e=>`${Lo}/${e}`),Ts=[`grok-4.3`,`grok-build-0.1`].map(e=>`xai/${e}`),Es=[`mistral-medium-3.5`,`mistral-small-2603`,`mistral-large-2512`,`devstral-2512`,`ministral-14b-2512`,`ministral-8b-2512`,`ministral-3b-2512`].map(e=>`${Ro}/${e}`),Ds=[`doubao-seed-2-0-pro-260215`,`doubao-seed-2-0-lite-260215`,`doubao-seed-2-0-mini-260215`,`doubao-seed-2-0-code-preview-260215`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${zo}/${e}`),Os=[`ark-code-latest`,`doubao-seed-2.0-code`,`doubao-seed-2.0-pro`,`doubao-seed-2.0-lite`,`doubao-seed-code`,`minimax-m2.5`,`glm-4.7`,`deepseek-v3.2`,`kimi-k2.5`].flatMap(e=>[`${Bo}/${e}`,`${Vo}/${e}`]),ks=[`seed-2-0-pro-260328`,`seed-2-0-lite-260228`,`seed-2-0-mini-260215`,`seed-2-0-code-preview-260328`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Ho}/${e}`),As=[`ark-code-latest`,`dola-seed-2.0-pro`,`dola-seed-2.0-lite`,`dola-seed-2.0-code`,`bytedance-seed-code`,`glm-5.1`,`glm-4.7`,`kimi-k2.5`,`gpt-oss-120b`].flatMap(e=>[`${Uo}/${e}`,`${Wo}/${e}`]),js=`openrouter/owl-alpha,openai/gpt-5.5,openai/gpt-5.4,openai/gpt-5.4-mini,openai/gpt-5.4-nano,anthropic/claude-fable-5,anthropic/claude-opus-4.8,anthropic/claude-sonnet-5,anthropic/claude-haiku-4.5,google/gemini-3.5-flash,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google/gemini-3.1-flash-lite,x-ai/grok-4.3,x-ai/grok-build-0.1,mistralai/mistral-medium-3-5,mistralai/mistral-small-2603,mistralai/mistral-large-2512,mistralai/devstral-2512,qwen/qwen3.7-max,qwen/qwen3.7-plus,qwen/qwen3.6-flash,z-ai/glm-5.2,deepseek/deepseek-v4-pro,deepseek/deepseek-v4-flash,minimax/minimax-m2.7,moonshotai/kimi-k2.6`.split(`,`).map(e=>`${Go}/${e}`),Ms=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`].map(e=>`${Ko}/${e}`),Ns=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`,`deepseek-v4-pro`,`deepseek-v4-flash`,`kimi-k2.7-code`,`glm-5.2`,`MiniMax-M2.5`].map(e=>`${qo}/${e}`),Ps=[`glm-5.2`,`glm-5.1`,`glm-5`,`glm-5-turbo`,`glm-5v-turbo`,`glm-4.7`,`glm-4.7-flashx`,`glm-4.7-flash`].map(e=>`zai/${e}`),Fs={tools:!0,json:!0,thinkingLevels:[`off`,`low`],defaultThinkingLevel:`low`,thinkingMode:`zai-binary`,reasoningBudgetSupported:!1},Is=Object.fromEntries(Ps.map(e=>[e,e.endsWith(`/glm-5v-turbo`)?{...Fs,video:!0}:Fs])),Ls=[`ernie-5.1`,`ernie-5.0`,`ernie-5.0-thinking-latest`,`ernie-5.0-thinking-preview`,`ernie-x1.1-preview`,`ernie-x1.1`,`ernie-x1-turbo-32k`,`deepseek-v4-pro`,`deepseek-v4-flash`,`deepseek-v3.2-think`,`deepseek-v3.2`].map(e=>`${Jo}/${e}`),Rs=new Set([`qianfan/ernie-5.1`,`qianfan/ernie-5.0`,`qianfan/ernie-5.0-thinking-latest`,`qianfan/ernie-5.0-thinking-preview`,`qianfan/ernie-x1.1-preview`,`qianfan/ernie-x1.1`,`qianfan/ernie-x1-turbo-32k`]),zs=new Set([`qianfan/deepseek-v4-pro`,`qianfan/deepseek-v4-flash`,`qianfan/deepseek-v3.2-think`,`qianfan/deepseek-v3.2`]),Bs=Object.fromEntries(Ls.map(e=>[e,{tools:!0,json:!0,...Rs.has(e)?{fixedReasoning:!0}:zs.has(e)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!0}:{}}])),Vs=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-4.1`,`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`,`claude-haiku-4.5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`grok-build-0.1`],Hs=Vs.map(e=>`${Yo}/${e}`),Us=[...Vs],Ws=Us.map(e=>`${Xo}/${e}`);`${Yo}`;const Gs=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`]),Ks=new Set([`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`]),qs=new Set([`claude-haiku-4.5`]),Js=new Set([`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`]);function Ys(e){return Object.fromEntries(e.map(e=>{let t=e.slice(e.indexOf(`/`)+1);return[e,{tools:!0,json:!0,...Gs.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:Ks.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:qs.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:Js.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{}}]}))}const Xs={...Ys(Hs),...Ys(Ws)},Zs=ho(lo),Qs=Ha(za),$s=xo.map(e=>`${$o}/${e}`);`${$o}`;const ec=Co($o),tc=Ka.map(e=>`${es}/${e}`);`${es}`;const nc=Ja(es),rc=eo(ts),ic=Ma(ns),ac=oo(rs),oc=La(is),sc=Ea(va),cc=[];function lc(e){let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{route:e.slice(0,t).trim(),model:e.slice(t+1).trim()}}function uc(e,t){let n=t.trim().toLowerCase(),r=(e,r)=>n.startsWith(`${e}/`)?{provider:r,model:t.slice(e.length+1)}:null;return r(`openai`,To)??r(`anthropic`,Do)??r(`google`,Io)??r(`x-ai`,`xai`)??r(`xai`,`xai`)??r(`mistralai`,Ro)??r(`minimax`,Mo)??r(`qwen`,Ko)??r(`moonshotai`,I)??r(`z-ai`,`zai`)??r(`zai-org`,`zai`)??r(`glm`,`zai`)??{provider:n.includes(`claude-`)||n.includes(`claude_`)?Do:n.includes(`gemini-`)?Io:n.includes(`qwen`)?Ko:n.includes(`kimi`)?I:n.includes(`glm-`)?`zai`:e,model:t}}function dc(e){let t=uc(e.route,e.model),n=_a({provider:t.provider,model:t.model,reasoning:e.reasoning});if(n)return{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}}function fc(e){let t=lc(e);if(t)return dc({route:t.route,model:t.model})}function pc(e){return Object.fromEntries(e.map(e=>[e.toLowerCase(),fc(e)??{}]))}function L(e,t){let n=pc(e);for(let[e,r]of Object.entries(t))n[e.toLowerCase()]={...n[e.toLowerCase()],...r};return n}const mc=[...A],hc={"anthropic/claude-fable-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-opus-4-8":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-sonnet-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0},"anthropic/claude-haiku-4-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}},gc=Object.fromEntries(ds.map(e=>[`${Oo}/${e}`,{tools:!0,json:!0,...dc({route:Oo,model:e,reasoning:!0}),...e===`moonshotai/Kimi-K2.6-TEE`?{video:!0}:{}}])),_c=[...A],vc=Object.fromEntries([..._s,...vs,...ys].map(e=>[e,{tools:!0,thinkingLevels:_c,defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}])),yc=Object.fromEntries([...bs,...xs].map(e=>[e,{tools:!0,...e===`${I}/kimi-k2.6`?{video:!0}:{},thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}])),bc=Object.fromEntries([...Cs,...ws].map(e=>[e,{tools:!0,json:!0,audio:!0,video:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}])),xc={"xai/grok-4.3":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-build-0.1":{tools:!0,json:!0}},Sc=[`off`,`high`],Cc=Object.fromEntries(Es.map(e=>[e,{tools:!0,json:!0,...e===`mistral/mistral-medium-3.5`||e===`mistral/mistral-small-2603`?{thinkingLevels:[...Sc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),wc=[`minimal`,`low`,`medium`,`high`],Tc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Ec=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Dc=Object.fromEntries([...Ds,...Os].map(e=>[e,{tools:!0,json:!0,...Tc.has(e)?{thinkingLevels:[...wc],defaultThinkingLevel:`medium`,thinkingMode:`volcengine-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Ec.has(e)?{video:!0}:{}}])),Oc=[`off`,`high`],kc=new Set([`byteplus/seed-2-0-pro-260328`,`byteplus/seed-2-0-lite-260228`,`byteplus/seed-2-0-mini-260215`,`byteplus/seed-2-0-code-preview-260328`,`byteplus-coding/dola-seed-2.0-pro`,`byteplus-plan/dola-seed-2.0-pro`,`byteplus-coding/dola-seed-2.0-lite`,`byteplus-plan/dola-seed-2.0-lite`,`byteplus-coding/dola-seed-2.0-code`,`byteplus-plan/dola-seed-2.0-code`,`byteplus-coding/bytedance-seed-code`,`byteplus-plan/bytedance-seed-code`]),Ac=Object.fromEntries([...ks,...As].map(e=>[e,{tools:!0,json:!0,...kc.has(e)?{thinkingLevels:[...Oc],defaultThinkingLevel:`high`,thinkingMode:`byteplus-thinking-type`,reasoningBudgetSupported:!1}:{}}])),jc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`]),Mc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`,`openrouter/qwen/qwen3.7-max`,`openrouter/qwen/qwen3.7-plus`,`openrouter/qwen/qwen3.6-flash`]),Nc=new Set([`openrouter/mistralai/mistral-medium-3-5`,`openrouter/mistralai/mistral-small-2603`]),Pc=new Set([`openrouter/minimax/minimax-m2.7`]),Fc=new Set([`openrouter/deepseek/deepseek-v4-pro`,`openrouter/deepseek/deepseek-v4-flash`]),Ic=Object.fromEntries(js.map(e=>[e,{tools:!0,json:!0,...jc.has(e)?{audio:!0}:{},...Mc.has(e)?{video:!0}:{},...Nc.has(e)?{thinkingLevels:[...Sc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Pc.has(e)?{thinkingLevels:[..._c],defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}:{},...Fc.has(e)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}:{}}])),Lc=new Set([`qwen-coding-plan/kimi-k2.7-code`,`qwen-coding-plan/glm-5.2`,`qwen-coding-plan/MiniMax-M2.5`]),Rc=Object.fromEntries([...Ms,...Ns].map(e=>[e,{tools:!0,json:!0,...Lc.has(e)?{}:{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}}])),zc=[{id:`openai`,label:`OpenAI`,priority:1,hint:`OpenAI sign-in + API key`,methods:[{id:`openai-codex`,route:Eo,kind:`oauth`,label:`Sign in`,hint:`Open the OpenAI sign-in URL, finish login in the browser, then Fased completes the OAuth flow.`},{id:`openai-api-key`,route:To,kind:`api-key`,label:`API key`}],models:{recommended:[...cs,...ls],routeRules:{[To]:[`${To}/*`],[Eo]:[`${Eo}/*`]}},modelCapabilities:pc([...cs,...ls])},{id:`anthropic`,label:`Anthropic`,priority:2,hint:`Claude Code OAuth + setup-token + API key`,methods:[{id:`anthropic-oauth`,route:Do,kind:`oauth`,label:`Sign in (Claude Code)`,hint:`Claude or Console account; Pro, Max, Team, Enterprise, or Console access`,buttonLabel:`Sign in`},{id:`token`,route:Do,kind:`token`,label:`Token (setup-token)`,hint:"run `claude setup-token` elsewhere, then paste the token here",buttonLabel:`Paste token`},{id:`apiKey`,route:Do,kind:`api-key`,label:`API key`}],models:{recommended:[...us],routeRules:{[Do]:[`${Do}/*`]}},modelCapabilities:L(us,hc)},{id:`chutes`,label:`Chutes`,priority:3,hint:`Sign in + API key`,methods:[{id:`chutes`,route:Oo,kind:`oauth`,label:`Sign in`,hint:`Requires a Chutes OAuth app client id. Enter the cid, then Fased generates the Chutes sign-in URL.`,buttonLabel:`Sign in`},{id:`chutes-api-key`,route:Oo,kind:`api-key`,label:`API key`}],models:{recommended:[...fs],routeRules:{[Oo]:[`${Oo}/*`]}},modelCapabilities:L(fs,gc)},{id:`ollama`,label:`Ollama`,priority:4,hint:`Local, cloud, or hybrid Ollama through the native API`,modelProviderIds:[ko],methods:[{id:`ollama`,route:ko,kind:`manual`,label:`Ollama native URL + model`,hint:`Use the native Ollama base URL, for example http://127.0.0.1:11434. Do not use /v1.`,buttonLabel:`Configure`}],models:{recommended:ps,dynamic:!0,routeRules:{[ko]:[`${ko}/*`]}},modelCapabilities:pc(ps)},{id:`lmstudio`,label:`LM Studio`,priority:4,hint:`Local LM Studio server on localhost:1234`,modelProviderIds:[Ao],methods:[{id:`lmstudio`,route:Ao,kind:`manual`,label:`LM Studio URL + model`,hint:`Use http://127.0.0.1:1234/v1, optional API token, and a model key from LM Studio.`,buttonLabel:`Configure`}],models:{recommended:ms,dynamic:!0,routeRules:{[Ao]:[`${Ao}/*`]}},modelCapabilities:pc(ms)},{id:`vllm`,label:`vLLM-compatible`,priority:4,hint:`OpenAI-compatible local server: vLLM, SGLang, TGI, LocalAI, or FastChat`,modelProviderIds:[jo],methods:[{id:`vllm`,route:jo,kind:`manual`,label:`vLLM-compatible URL + model`,hint:`Enter the /v1 base URL, API key or local placeholder, and served model ID for vLLM, SGLang, TGI, LocalAI, or FastChat.`,buttonLabel:`Configure`}],models:{recommended:hs,dynamic:!0,routeRules:{[jo]:[`${jo}/*`]}},modelCapabilities:pc(hs)},{id:`minimax`,label:`MiniMax`,priority:5,hint:`MiniMax OAuth + API key`,modelProviderIds:[Mo,No,Po],methods:[{id:`minimax-portal`,route:Po,kind:`oauth`,label:`Sign in`,hint:`Global or CN endpoint; uses MiniMax portal sign-in`,setupRequirement:`Requires MiniMax portal/coding-plan access. Choose Global or CN, then open the approval URL and approve before the code expires.`,buttonLabel:`Sign in`},{id:`minimax-api`,route:Mo,kind:`api-key`,label:`API key`},{id:`minimax-api-key-cn`,route:No,kind:`api-key`,label:`API key (CN)`,hint:`China endpoint (api.minimaxi.com)`},{id:`minimax-api-lightning`,route:Mo,configProviderId:`minimax-lightning`,statusRoute:Mo,kind:`api-key`,label:`Highspeed API key`,hint:`Fast M2.7 tier`}],models:{recommended:[..._s,...vs,...ys],routeRules:{[Mo]:[`${Mo}/*`],[No]:[`${No}/*`],[Po]:[`${Po}/*`]}},modelCapabilities:L([..._s,...vs,...ys],vc)},{id:`moonshot`,label:`Moonshot AI`,priority:6,hint:`Kimi API + Kimi Code`,modelProviderIds:[I,Fo],methods:[{id:`moonshot-api-key`,route:I,kind:`api-key`,label:`Kimi API key (.ai)`,hint:`Kimi Open Platform endpoint (api.moonshot.ai)`},{id:`moonshot-api-key-cn`,route:I,configProviderId:`moonshot-cn`,statusRoute:I,kind:`api-key`,label:`Kimi API key (.cn)`,hint:`China endpoint (api.moonshot.cn)`},{id:`kimi-code-api-key`,route:Fo,kind:`api-key`,label:`Kimi Code API key (subscription)`,hint:`Kimi Code membership endpoint (api.kimi.com/coding)`}],models:{recommended:[...bs,...xs],routeRules:{[I]:[`${I}/*`],[Fo]:[`${Fo}/*`]}},modelCapabilities:L([...bs,...xs],yc)},{id:`google`,label:`Google`,priority:7,hint:`Gemini API key + OAuth`,routeAliases:[`gemini`],modelProviderIds:[Io,`gemini`,Lo],methods:[{id:`gemini-api-key`,route:Io,kind:`api-key`,label:`Gemini API key`},{id:`google-gemini-cli`,route:Lo,kind:`oauth`,label:`Sign in (Gemini CLI)`,hint:`Unofficial flow; review account-risk warning before use`,setupRequirement:`Requires gemini-cli installed on the gateway machine, or GEMINI_CLI_OAUTH_CLIENT_ID set before sign-in.`}],models:{recommended:[...Cs,...ws],routeRules:{[Io]:[`${Io}/*`,`gemini/*`],[Lo]:[`${Lo}/*`]}},modelCapabilities:L([...Cs,...ws],bc)},{id:`xai`,label:`xAI (Grok)`,priority:8,hint:`Grok API key or xAI account sign-in`,methods:[{id:`xai-oauth`,route:`xai`,kind:`oauth`,label:`xAI sign-in`,hint:`Browser sign-in for eligible xAI/Grok accounts`,buttonLabel:`Sign in`},{id:`xai-device-code`,route:`xai`,kind:`device`,label:`xAI device code`,hint:`Remote-friendly sign-in for eligible xAI/Grok accounts`,buttonLabel:`Device code`},{id:`xai-api-key`,route:`xai`,kind:`api-key`,label:`xAI API key`}],models:{recommended:[...Ts],routeRules:{xai:[`xai/*`]}},modelCapabilities:L(Ts,xc)},{id:`mistral`,label:`Mistral AI`,priority:9,hint:`Mistral API key`,methods:[{id:`mistral-api-key`,route:Ro,kind:`api-key`,label:`Mistral API key`}],models:{recommended:[...Es],routeRules:{[Ro]:[`${Ro}/*`]}},modelCapabilities:L(Es,Cc)},{id:`volcengine`,label:`Volcano Engine`,priority:10,hint:`Ark API key + Coding Plan`,modelProviderIds:[zo,Bo,Vo],methods:[{id:`volcengine-api-key`,route:zo,kind:`api-key`,label:`Volcano Engine API key`}],models:{recommended:[...Ds,...Os],routeRules:{[zo]:[`${zo}/*`],[Bo]:[`${Bo}/*`],[Vo]:[`${Vo}/*`]}},modelCapabilities:L([...Ds,...Os],Dc)},{id:`byteplus`,label:`BytePlus`,priority:11,hint:`ModelArk API key + Coding Plan`,modelProviderIds:[Ho,Uo,Wo],methods:[{id:`byteplus-api-key`,route:Ho,kind:`api-key`,label:`BytePlus API key`}],models:{recommended:[...ks,...As],routeRules:{[Ho]:[`${Ho}/*`],[Uo]:[`${Uo}/*`],[Wo]:[`${Wo}/*`]}},modelCapabilities:L([...ks,...As],Ac)},{id:`openrouter`,label:`OpenRouter`,priority:12,hint:`API key`,methods:[{id:`openrouter-api-key`,route:Go,kind:`api-key`,label:`OpenRouter API key`}],models:{recommended:[...js],dynamic:!0,routeRules:{[Go]:[`${Go}/*`]}},modelCapabilities:L(js,Ic)},{id:`qwen`,label:`Qwen`,priority:14,hint:`Coding Plan + DashScope API key`,modelProviderIds:[qo,Ko],methods:[{id:`qwen-coding-plan-api-key`,route:qo,kind:`api-key`,label:`Coding Plan API key`,hint:`Alibaba Cloud Coding Plan endpoint (coding.dashscope.aliyuncs.com)`},{id:`qwen-api-key`,route:Ko,kind:`api-key`,label:`DashScope API key`,hint:`DashScope OpenAI-compatible endpoint (dashscope.aliyuncs.com)`}],models:{recommended:[...Ns,...Ms],routeRules:{[qo]:[`${qo}/*`],[Ko]:[`${Ko}/*`]}},modelCapabilities:L([...Ns,...Ms],Rc)},{id:`zai`,label:`Z.AI`,priority:15,hint:`GLM Coding Plan / Global / CN`,modelProviderIds:[`zai`],methods:[{id:`zai-coding-global`,route:`zai`,configProviderId:`zai-coding-global`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-Global`,hint:`GLM Coding Plan Global (api.z.ai)`},{id:`zai-coding-cn`,route:`zai`,configProviderId:`zai-coding-cn`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-CN`,hint:`GLM Coding Plan CN (open.bigmodel.cn)`},{id:`zai-global`,route:`zai`,configProviderId:`zai`,kind:`api-key`,label:`Global`,hint:`Z.AI Global (api.z.ai)`},{id:`zai-cn`,route:`zai`,configProviderId:`zai-cn`,statusRoute:`zai`,kind:`api-key`,label:`CN`,hint:`Z.AI CN (open.bigmodel.cn)`}],models:{recommended:[...Ps],routeRules:{zai:[`zai/*`]}},modelCapabilities:L(Ps,Is)},{id:`qianfan`,label:`Qianfan`,priority:16,hint:`Baidu Qianfan API key`,methods:[{id:`qianfan-api-key`,route:Jo,kind:`api-key`,label:`Qianfan API key`}],models:{recommended:[...Ls],routeRules:{[Jo]:[`${Jo}/*`]}},modelCapabilities:L(Ls,Bs)},{id:`copilot`,label:`Copilot`,priority:17,hint:`GitHub device login + local proxy`,modelProviderIds:[Yo,Xo],methods:[{id:`github-copilot`,route:Yo,kind:`device`,label:`GitHub sign in`,hint:`GitHub OAuth device flow; requires an active Copilot subscription`,buttonLabel:`Sign in`},{id:`copilot-proxy`,route:Xo,kind:`device`,label:`Proxy sign in`,hint:`Local VS Code Copilot Proxy bridge`,buttonLabel:`Configure`}],models:{recommended:[...Hs,...Ws],dynamic:!0,routeRules:{[Yo]:[`${Yo}/*`],[Xo]:[`${Xo}/*`]}},modelCapabilities:L([...Hs,...Ws],Xs)},{id:`ai-gateway`,label:`Vercel AI`,priority:18,hint:`API key`,modelProviderIds:[Zo],methods:[{id:`ai-gateway-api-key`,route:Zo,kind:`api-key`,label:`Vercel AI API key`}],models:{recommended:[...lo],dynamic:!0,routeRules:{[Zo]:[`${Zo}/*`]}},modelCapabilities:L(lo,Zs)},{id:`opencode-zen`,label:`OpenCode Zen`,priority:19,hint:`API key`,modelProviderIds:[Qo],methods:[{id:`opencode-zen`,route:Qo,kind:`api-key`,label:`OpenCode Zen API key`,hint:`Sign in to OpenCode Zen, then paste the API key`}],models:{recommended:[...za],dynamic:!0,routeRules:{[Qo]:[`${Qo}/*`]}},modelCapabilities:L(za,Qs)},{id:`xiaomi`,label:`Xiaomi`,priority:20,hint:`MiMo API key`,modelProviderIds:[$o],methods:[{id:`xiaomi-api-key`,route:$o,kind:`api-key`,label:`Xiaomi API key`,hint:`Create an API key in the Xiaomi MiMo API Open Platform`}],models:{recommended:[...$s],routeRules:{[$o]:[`${$o}/*`]}},modelCapabilities:L($s,ec)},{id:`synthetic`,label:`Synthetic`,priority:21,hint:`Anthropic-compatible API key`,modelProviderIds:[es],methods:[{id:`synthetic-api-key`,route:es,kind:`api-key`,label:`Synthetic API key`,hint:`Create an API key in Synthetic`}],models:{recommended:[...tc],routeRules:{[es]:[`${es}/*`]}},modelCapabilities:L(tc,nc)},{id:`together`,label:`Together AI`,priority:22,hint:`API key`,modelProviderIds:[ts],methods:[{id:`together-api-key`,route:ts,kind:`api-key`,label:`Together AI API key`,hint:`Create an API key in Together AI`}],models:{recommended:[...Qa],routeRules:{[ts]:[`${ts}/*`]}},modelCapabilities:L(Qa,rc)},{id:`huggingface`,label:`Hugging Face`,priority:23,hint:`Inference Providers token`,modelProviderIds:[ns],methods:[{id:`huggingface-api-key`,route:ns,kind:`api-key`,label:`Hugging Face token`,hint:`Create a fine-grained token with Inference Providers access`}],models:{recommended:[...ka],dynamic:!0,routeRules:{[ns]:[`${ns}/*`]}},modelCapabilities:ic},{id:`venice`,label:`Venice AI`,priority:24,hint:`Privacy-focused API key`,modelProviderIds:[rs],methods:[{id:`venice-api-key`,route:rs,kind:`api-key`,label:`Venice AI API key`,hint:`Create an API key in Venice settings`}],models:{recommended:[...io],dynamic:!0,routeRules:{[rs]:[`${rs}/*`]}},modelCapabilities:ac},{id:`litellm`,label:`LiteLLM`,priority:25,hint:`OpenAI-compatible LLM proxy`,modelProviderIds:[is],methods:[{id:`litellm-api-key`,route:is,kind:`api-key`,label:`LiteLLM API key`,hint:`LiteLLM Proxy virtual key or master key plus /v1 base URL`}],models:{recommended:[...Fa],dynamic:!0,routeRules:{[is]:[`${is}/*`]}},modelCapabilities:oc},{id:`cloudflare-ai-gateway`,label:`Cloudflare AI`,priority:26,hint:`Anthropic through Cloudflare AI`,modelProviderIds:[va],methods:[{id:`cloudflare-ai-gateway-api-key`,route:va,kind:`manual`,label:`Cloudflare AI API key`,hint:`Requires Cloudflare Account ID, Gateway ID, and Anthropic provider API key`,buttonLabel:`Configure`}],models:{recommended:[...wa],routeRules:{[va]:[`${va}/*`]}},modelCapabilities:sc},{id:`custom`,label:`Custom Provider`,priority:27,hint:`OpenAI or Anthropic-compatible endpoint outside the built-in provider cards`,modelProviderIds:[as],methods:[{id:`custom-api-key`,route:as,kind:`manual`,label:`Custom Provider`,hint:`Requires base URL, endpoint compatibility, model ID, and optional API key. Use this for SGLang or other compatible endpoints when the vLLM-compatible shortcut does not fit.`,buttonLabel:`Configure`}],models:{recommended:cc,dynamic:!0,routeRules:{[as]:[`${as}/*`]}},modelCapabilities:pc(cc)}];new Map(zc.map(e=>[e.id,e])),new Map(zc.flatMap(e=>[...e.methods.map(t=>[t.route,e]),...(e.routeAliases??[]).map(t=>[t,e]),...(e.modelProviderIds??[]).map(t=>[t,e])])),new Set(zc.flatMap(e=>e.models.recommended.map(e=>e.toLowerCase()))),new Map(zc.flatMap(e=>Object.entries(e.modelCapabilities??{}).map(([e,t])=>[e.toLowerCase(),t]))),i.resolve(i.dirname(o(import.meta.url)),`../../docs/reference/templates`);function Bc(e=process.env,t=p.homedir){let n=x(e,t),r=e.FASED_PROFILE?.trim();return r&&r.toLowerCase()!==`default`?i.join(n,`.fased`,`workspace-${r}`):i.join(n,`.fased`,`workspace`)}Bc();let Vc=null;function Hc(){return Vc??=on(`agent-scope`),Vc}function Uc(e){return e.replace(/\0/g,``)}let Wc=!1;function Gc(e){let t=e.agents?.list;return Array.isArray(t)?t.filter(e=>!!(e&&typeof e==`object`)):[]}function Kc(e){let t=Gc(e);if(t.length===0)return Ki;let n=t.filter(e=>e?.default);n.length>1&&!Wc&&(Wc=!0,Hc().warn(`Multiple agents marked default=true; using the first entry as default.`));let r=(n[0]??t[0])?.id?.trim();return k(r||Ki)}function qc(e,t){let n=k(t);return Gc(e).find(e=>k(e.id)===n)}function Jc(e,t){let n=qc(e,k(t));if(n)return{name:typeof n.name==`string`?n.name:void 0,workspace:typeof n.workspace==`string`?n.workspace:void 0,agentDir:typeof n.agentDir==`string`?n.agentDir:void 0,activeModelProvider:typeof n.activeModelProvider==`string`?n.activeModelProvider:void 0,modelProviders:n.modelProviders&&typeof n.modelProviders==`object`?n.modelProviders:void 0,model:typeof n.model==`string`||n.model&&typeof n.model==`object`?n.model:void 0,taskModels:n.taskModels&&typeof n.taskModels==`object`?n.taskModels:void 0,thinkingDefault:n.thinkingDefault,verboseDefault:e.agents?.defaults?.verboseDefault,reasoningDefault:n.reasoningDefault,fastModeDefault:n.fastModeDefault,skills:Array.isArray(n.skills)?n.skills:void 0,memorySearch:n.memorySearch,humanDelay:n.humanDelay,heartbeat:n.heartbeat,identity:n.identity,groupChat:n.groupChat,subagents:typeof n.subagents==`object`&&n.subagents?n.subagents:void 0,sandbox:n.sandbox,tools:n.tools}}function Yc(e,t){let n=k(t),r=Jc(e,n)?.workspace?.trim();if(r)return Uc(D(r));let a=Kc(e),o=e.agents?.defaults?.workspace?.trim();if(n===a)return Uc(o?D(o):Bc(process.env));if(o)return Uc(i.join(D(o),n));let s=S(process.env);return Uc(i.join(s,`workspace-${n}`))}const Xc=`default`,Zc=/^\$\{([A-Z][A-Z0-9_]{0,127})\}$/;function Qc(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function $c(e){return!Qc(e)||Object.keys(e).length!==3?!1:(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.provider==`string`&&e.provider.trim().length>0&&typeof e.id==`string`&&e.id.trim().length>0}function el(e){return Qc(e)?(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.id==`string`&&e.id.trim().length>0&&e.provider===void 0:!1}function tl(e,t=Xc){if(typeof e!=`string`)return null;let n=Zc.exec(e.trim());return n?{source:`env`,provider:t.trim()||Xc,id:n[1]}:null}function nl(e,t){if($c(e))return e;if(el(e)){let n=e.source===`env`?t?.env??Xc:e.source===`file`?t?.file??Xc:t?.exec??Xc;return{source:e.source,provider:n,id:e.id}}return tl(e,t?.env)||null}function rl(e){let t=e.split(`.`);if(t.length!==4)return!1;let n=t.map(e=>Number(e));if(n.some(e=>!Number.isInteger(e)||e<0||e>255))return!1;let[r,i]=n;return r===10||r===127||r===0||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254}function il(e){let t=e?.trim();if(!t)return!1;try{let e=new URL(t).hostname.toLowerCase().replace(/^\[|\]$/g,``);return e===`localhost`||e===`::1`||e===`0.0.0.0`||e.endsWith(`.local`)||e.endsWith(`.internal`)||rl(e)?!0:e.startsWith(`fc`)||e.startsWith(`fd`)||e.startsWith(`fe80:`)}catch{return!1}}const al=[`chat.inject`,`push.test`,`web.login.start`,`web.login.wait`],ol=new Set([...Tt,`device-pair`,`phone-control`,`talk-voice`]),sl=e=>Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[];function cl(e){return typeof e==`string`&&al.includes(e)}function ll(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=Array.isArray(t.allow)?t.allow:[],r=[];for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=e;cl(t.method)&&r.push({method:t.method,sources:sl(t.sources),requireOperatorApproval:t.requireOperatorApproval===!0})}return r}const ul=e=>{if(typeof e!=`string`)return;let t=e.trim();if(t)return t.toLowerCase()===`none`?null:t},dl=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(!n.trim())continue;if(!r||typeof r!=`object`||Array.isArray(r)){t[n]={};continue}let e=r;t[n]={enabled:typeof e.enabled==`boolean`?e.enabled:void 0,config:`config`in e?e.config:void 0,runtime:fl(e.runtime)}}return t};function fl(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.helpers&&typeof t.helpers==`object`&&!Array.isArray(t.helpers)?t.helpers:void 0;return{helpers:{sessions:{read:(n?.sessions&&typeof n.sessions==`object`&&!Array.isArray(n.sessions)?n.sessions:void 0)?.read===!0}},adminRpcActions:{allow:ll(t.adminRpcActions)}}}const pl=e=>{let t=ul(e?.slots?.memory);return{enabled:e?.enabled!==!1,allow:sl(e?.allow),deny:sl(e?.deny),loadPaths:sl(e?.load?.paths),slots:{memory:t===void 0?Hi(`memory`):t},entries:dl(e?.entries)}};function ml(e,t,n){if(!n.enabled)return{enabled:!1,reason:`plugins disabled`};if(n.deny.includes(e))return{enabled:!1,reason:`blocked by denylist`};if(n.allow.length>0&&!n.allow.includes(e))return{enabled:!1,reason:`not in allowlist`};if(n.slots.memory===e)return{enabled:!0};let r=n.entries[e];return r?.enabled===!0?{enabled:!0}:r?.enabled===!1?{enabled:!1,reason:`disabled in config`}:t===`bundled`&&ol.has(e)?{enabled:!0}:t===`bundled`?{enabled:!1,reason:`bundled (disabled by default)`}:{enabled:!0}}function hl(e,t){if(!e)return!1;let n=Ot(t);if(!n)return!1;let r=e.channels?.[n];return!r||typeof r!=`object`||Array.isArray(r)?!1:r.enabled===!0}function gl(e){let t=ml(e.id,e.origin,e.config);return!t.enabled&&t.reason===`bundled (disabled by default)`&&hl(e.rootConfig,e.id)?{enabled:!0}:t}function _l(e){return e.kind===`memory`?e.slot===null?{enabled:!1,reason:`memory slot disabled`}:typeof e.slot==`string`?e.slot===e.id?{enabled:!0,selected:!0}:{enabled:!1,reason:`memory slot set to "${e.slot}"`}:e.selectedId&&e.selectedId!==e.id?{enabled:!1,reason:`memory slot already filled by "${e.selectedId}"`}:{enabled:!0,selected:!0}:{enabled:!0}}function vl(e){try{let t=n.readdirSync(e,{withFileTypes:!0});for(let r of t){if(!r.isDirectory())continue;let t=i.join(e,r.name);if(n.existsSync(i.join(t,`fased.plugin.json`)))return!0}}catch{return!1}return!1}function yl(e={}){let t=process.env.FASED_BUNDLED_PLUGINS_DIR?.trim();if(t)return t;try{let t=i.dirname(e.execPath??process.execPath),n=i.join(t,`extensions`);if(vl(n))return n}catch{}try{let t=e.moduleUrl??import.meta.url,n=Te({argv1:e.argv1??process.argv[1],moduleUrl:t,cwd:e.cwd??process.cwd()});if(n){let e=i.join(n,`extensions`);if(vl(e))return e}let r=i.dirname(o(t));for(let e=0;e<6;e+=1){let e=i.join(r,`extensions`);if(vl(e))return e;let t=i.dirname(r);if(t===r)break;r=t}}catch{}}function bl(e,t){return ai(e,t)}function xl(e,t){let r=t?.get(e);if(r)return r;try{let r=n.realpathSync(e);return t?.set(e,r),r}catch{return null}}function Sl(e){try{return n.statSync(e)}catch{return null}}function Cl(e){return(e&511).toString(8).padStart(3,`0`)}const wl=new Set([`.ts`,`.js`,`.mts`,`.cts`,`.mjs`,`.cjs`]);function Tl(e){return e===void 0?process.platform===`win32`||typeof process.getuid!=`function`?null:process.getuid():e}function El(e){let t=xl(e.source),n=xl(e.rootDir);return!t||!n||bl(n,t)?null:{reason:`source_escapes_root`,sourcePath:e.source,rootPath:e.rootDir,targetPath:e.source,sourceRealPath:t,rootRealPath:n}}function Dl(e){if(process.platform===`win32`)return null;let t=[e.rootDir,e.source],n=new Set;for(let r of t){let t=i.resolve(r);if(n.has(t))continue;n.add(t);let a=Sl(r);if(!a)return{reason:`path_stat_failed`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r};let o=a.mode&511;if(o&2)return{reason:`path_world_writable`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,modeBits:o};if(e.origin!==`bundled`&&e.uid!==null&&typeof a.uid==`number`&&a.uid!==e.uid&&a.uid!==0)return{reason:`path_suspicious_ownership`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,foundUid:a.uid,expectedUid:e.uid}}return null}function Ol(e){return El({source:e.source,rootDir:e.rootDir})||Dl({source:e.source,rootDir:e.rootDir,origin:e.origin,uid:Tl(e.ownershipUid)})}function kl(e){return e.reason===`source_escapes_root`?`blocked plugin candidate: source escapes plugin root (${e.sourcePath} -> ${e.sourceRealPath}; root=${e.rootRealPath})`:e.reason===`path_stat_failed`?`blocked plugin candidate: cannot stat path (${e.targetPath})`:e.reason===`path_world_writable`?`blocked plugin candidate: world-writable path (${e.targetPath}, mode=${Cl(e.modeBits??0)})`:`blocked plugin candidate: suspicious ownership (${e.targetPath}, uid=${e.foundUid}, expected uid=${e.expectedUid} or root)`}function Al(e){let t=Ol({source:e.source,rootDir:e.rootDir,origin:e.origin,ownershipUid:e.ownershipUid});return t?(e.diagnostics.push({level:`warn`,source:t.targetPath,message:kl(t)}),!0):!1}function jl(e){let t=i.extname(e);return wl.has(t)?!e.endsWith(`.d.ts`):!1}function Ml(e){let t=e.trim().toLowerCase();return!!(!t||t.endsWith(`.bak`)||t.includes(`.backup-`)||t.includes(`.disabled`))}function Nl(e){let t=Oi({absolutePath:i.join(e,`package.json`),rootPath:e,boundaryLabel:`plugin package directory`});if(!t.ok)return null;try{let e=n.readFileSync(t.fd,`utf-8`);return JSON.parse(e)}catch{return null}finally{n.closeSync(t.fd)}}function Pl(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t||i.isAbsolute(t))return null;let n=t.replace(/^\.\/+/,``);return!n||n===`.`||n===`..`?null:n}function Fl(e,t){if(!Ri(t).ok)return[];let r=[e.main,e.module,...zi],a=[],o=new Set;for(let e of r){let r=Pl(e);if(!r||o.has(r))continue;o.add(r);let s=i.resolve(t,r);bl(t,s)&&n.existsSync(s)&&jl(s)&&a.push(r)}return a}function Il(e,t){let n=Bi(e)?.extensions;return Array.isArray(n)?n.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):t?Fl(e,t):[]}function Ll(e){let t=i.basename(e.filePath,i.extname(e.filePath)),n=e.packageName?.trim();if(!n)return t;let r=n.includes(`/`)?n.split(`/`).pop()??n:n;return e.hasMultipleExtensions?`${r}/${t}`:r}function Rl(e){let t=i.resolve(e.source);if(e.seen.has(t))return;let n=xl(e.rootDir)??i.resolve(e.rootDir);if(Al({source:t,rootDir:n,origin:e.origin,diagnostics:e.diagnostics,ownershipUid:e.ownershipUid}))return;e.seen.add(t);let r=e.manifest??null;e.candidates.push({idHint:e.idHint,source:t,rootDir:n,origin:e.origin,workspaceDir:e.workspaceDir,packageName:r?.name?.trim()||void 0,packageVersion:r?.version?.trim()||void 0,packageDescription:r?.description?.trim()||void 0,packageDir:e.packageDir,packageManifest:Bi(r??void 0)})}function zl(e){let t=Oi({absolutePath:i.resolve(e.packageDir,e.entryPath),rootPath:e.packageDir,boundaryLabel:`plugin package directory`});if(!t.ok)return e.diagnostics.push({level:`error`,message:`extension entry escapes package directory: ${e.entryPath}`,source:e.sourceLabel}),null;let r=t.path;return n.closeSync(t.fd),r}function Bl(e){if(!n.existsSync(e.dir))return;let t=[];try{t=n.readdirSync(e.dir,{withFileTypes:!0})}catch(t){e.diagnostics.push({level:`warn`,message:`failed to read extensions dir: ${e.dir} (${String(t)})`,source:e.dir});return}for(let r of t){let t=i.join(e.dir,r.name);if(r.isFile()){if(!jl(t))continue;Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(r.name,i.extname(r.name)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir})}if(!r.isDirectory()||Ml(r.name))continue;let a=Nl(t),o=a?Il(a,t):[];if(o.length>0){for(let n of o){let r=zl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});r&&Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Ll({filePath:r,packageName:a?.name,hasMultipleExtensions:o.length>1}),source:r,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}continue}let s=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));s&&jl(s)&&Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:r.name,source:s,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}}function Vl(e){let t=D(e.rawPath);if(!n.existsSync(t)){e.diagnostics.push({level:`error`,message:`plugin path not found: ${t}`,source:t});return}let r=n.statSync(t);if(r.isFile()){if(!jl(t)){e.diagnostics.push({level:`error`,message:`plugin path is not a supported file: ${t}`,source:t});return}Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t,i.extname(t)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir});return}if(r.isDirectory()){let r=Nl(t),a=r?Il(r,t):[];if(a.length>0){for(let n of a){let i=zl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});i&&Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:Ll({filePath:i,packageName:r?.name,hasMultipleExtensions:a.length>1}),source:i,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t})}return}let o=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));if(o&&jl(o)){Rl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t),source:o,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t});return}Bl({dir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen});return}}function Hl(e){let t=[],n=[],r=new Set,a=e.workspaceDir?.trim(),o=e.extraPaths??[];for(let i of o){if(typeof i!=`string`)continue;let o=i.trim();o&&Vl({rawPath:o,origin:`config`,ownershipUid:e.ownershipUid,workspaceDir:a?.trim()||void 0,candidates:t,diagnostics:n,seen:r})}if(a){let o=D(a),s=[i.join(o,`.fased`,`extensions`)];for(let i of s)Bl({dir:i,origin:`workspace`,ownershipUid:e.ownershipUid,workspaceDir:o,candidates:t,diagnostics:n,seen:r})}Bl({dir:i.join(vn(),`extensions`),origin:`global`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r});let s=yl();return s&&Bl({dir:s,origin:`bundled`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r}),{candidates:t,diagnostics:n}}e(import.meta.url);const Ul=/(\d+)\.(\d+)\.(\d+)/;function Wl(e){if(!e)return null;let t=e.match(Ul);if(!t)return null;let[,n,r,i]=t;return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10)}}function Gl(e,t){return e?e.major===t.major?e.minor===t.minor?e.patch>=t.patch:e.minor>t.minor:e.major>t.major:!1}const Kl=/^>=(\d+)\.(\d+)\.(\d+)$/;function ql(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.match(Kl);if(!n)return null;let r=`${n[1]}.${n[2]}.${n[3]}`;return Wl(r)?{raw:t,minimumLabel:r}:null}function Jl(e){if(e.minHostVersion===void 0)return{ok:!0,requirement:null};let t=ql(e.minHostVersion);if(!t)return{ok:!1,kind:`invalid`,error:`fased.install.minHostVersion must use a semver floor in the form ">=x.y.z"`};let n=e.currentVersion?.trim()||`unknown`,r=Wl(n);if(!r)return{ok:!1,kind:`unknown_host_version`,requirement:t};let i=Wl(t.minimumLabel);return!i||!Gl(r,i)?{ok:!1,kind:`incompatible`,requirement:t,currentVersion:n}:{ok:!0,requirement:t}}const Yl={config:0,workspace:1,global:2,bundled:3},Xl=new Map,Zl=new Set;function Ql(e){let t=e.FASED_PLUGIN_MANIFEST_CACHE_MS?.trim();if(t===``||t===`0`)return 0;if(!t)return 200;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):200}function $l(e){return e.FASED_DISABLE_PLUGIN_MANIFEST_CACHE?.trim()?!1:Ql(e)>0}function eu(e){let t=e.workspaceDir?D(e.workspaceDir):``,n=e.plugins.loadPaths.map(e=>D(e)).map(e=>e.trim()).filter(Boolean).toSorted();return`${t}::${e.hostVersion}::${JSON.stringify(n)}`}function tu(e){try{return n.statSync(e).mtimeMs}catch{return null}}function nu(e){return e?.trim()||void 0}function ru(e){if(!Array.isArray(e))return;let t=e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean);return t.length>0?t:void 0}function iu(e){let t=e.packageChannel?.id?.trim();if(!t||!e.channelConfigs?.[t])return e.channelConfigs;let n=e.channelConfigs[t],r=n.label??(typeof e.packageChannel?.label==`string`?e.packageChannel.label.trim():``),i=n.description??(typeof e.packageChannel?.blurb==`string`?e.packageChannel.blurb.trim():``),a=n.preferOver??ru(e.packageChannel?.preferOver);return{...e.channelConfigs,[t]:{...n,...r?{label:r}:{},...i?{description:i}:{},...a?.length?{preferOver:a}:{}}}}function au(e){let t=iu({channelConfigs:e.manifest.channelConfigs,packageChannel:e.candidate.packageManifest?.channel});return{id:e.manifest.id,name:nu(e.manifest.name)??e.candidate.packageName,description:nu(e.manifest.description)??e.candidate.packageDescription,version:nu(e.manifest.version)??e.candidate.packageVersion,enabledByDefault:e.manifest.enabledByDefault===!0?!0:void 0,autoEnableWhenConfiguredProviders:e.manifest.autoEnableWhenConfiguredProviders,legacyPluginIds:e.manifest.legacyPluginIds,kind:e.manifest.kind,channels:e.manifest.channels??[],providers:e.manifest.providers??[],modelSupport:e.manifest.modelSupport,providerAuthEnvVars:e.manifest.providerAuthEnvVars,providerAuthAliases:e.manifest.providerAuthAliases,providerAuthChoices:e.manifest.providerAuthChoices,skills:e.manifest.skills??[],origin:e.candidate.origin,workspaceDir:e.candidate.workspaceDir,rootDir:e.candidate.rootDir,source:e.candidate.source,manifestPath:e.manifestPath,schemaCacheKey:e.schemaCacheKey,configSchema:e.configSchema,configUiHints:e.manifest.uiHints,contracts:e.manifest.contracts,channelConfigs:t,startupDeferConfiguredChannelFullLoadUntilAfterListen:e.candidate.packageManifest?.startup?.deferConfiguredChannelFullLoadUntilAfterListen===!0,...e.candidate.packageManifest?.channel?.id?{channelCatalogMeta:{id:e.candidate.packageManifest.channel.id,...typeof e.candidate.packageManifest.channel.label==`string`?{label:e.candidate.packageManifest.channel.label}:{},...typeof e.candidate.packageManifest.channel.blurb==`string`?{blurb:e.candidate.packageManifest.channel.blurb}:{},...e.candidate.packageManifest.channel.preferOver?{preferOver:e.candidate.packageManifest.channel.preferOver}:{}}}:{}}}function ou(e){let t=pl((e.config??{}).plugins),n=e.env??process.env,r=qn(n,Jn),a=eu({workspaceDir:e.workspaceDir,plugins:t,hostVersion:r}),o=e.cache!==!1&&$l(n);if(o){let e=Xl.get(a);if(e&&e.expiresAt>Date.now())return e.registry}let s=e.candidates?{candidates:e.candidates,diagnostics:e.diagnostics??[]}:Hl({workspaceDir:e.workspaceDir,extraPaths:t.loadPaths}),c=[...s.diagnostics],l=s.candidates,u=[],d=new Map,f=new Map;for(let e of l){let t=Ri(e.rootDir);if(!t.ok){if(e.idHint&&Zl.has(e.idHint))continue;c.push({level:`error`,message:t.error,source:t.manifestPath});continue}let n=t.manifest,a=Jl({currentVersion:r,minHostVersion:e.packageManifest?.install?.minHostVersion});if(!a.ok){let t=i.join(e.packageDir??e.rootDir,`package.json`);c.push({level:a.kind===`unknown_host_version`?`warn`:`error`,pluginId:n.id,source:t,message:a.kind===`invalid`?`plugin manifest invalid | ${a.error}`:a.kind===`unknown_host_version`?`plugin requires Fased >=${a.requirement.minimumLabel}, but this host version could not be determined; skipping load`:`plugin requires Fased >=${a.requirement.minimumLabel}, but this host is ${a.currentVersion}; skipping load`});continue}e.idHint&&e.idHint!==n.id&&c.push({level:`warn`,pluginId:n.id,source:e.source,message:`plugin id mismatch (manifest uses "${n.id}", entry hints "${e.idHint}")`});let o=n.configSchema,s=tu(t.manifestPath),l=s?`${t.manifestPath}:${s}`:t.manifestPath,p=d.get(n.id);if(p){let r=xl(p.candidate.rootDir,f),i=xl(e.rootDir,f);if(r&&i&&r===i){Yl[e.origin]<Yl[p.candidate.origin]&&(u[p.recordIndex]=au({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}),d.set(n.id,{candidate:e,recordIndex:p.recordIndex}));continue}c.push({level:`warn`,pluginId:n.id,source:e.source,message:`duplicate plugin id detected; later plugin may be overridden (${e.source})`})}else d.set(n.id,{candidate:e,recordIndex:u.length});u.push(au({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}))}let p={plugins:u,diagnostics:c};if(o){let e=Ql(n);e>0&&Xl.set(a,{expiresAt:Date.now()+e,registry:p})}return p}function su(e){let t=process,n=t[e];if(n)return n;let r=new Map;return t[e]=r,r}su(Symbol.for(`fased.fileLockHeldLocks`)),process.env.FASED_XAI_OAUTH_CLIENT_ID?.trim();const cu=/^(?:[^~]|~0|~1)*$/;function lu(e){return e===`value`?!0:e.startsWith(`/`)?e.slice(1).split(`/`).every(e=>cu.test(e)):!1}const uu=`https://api.chutes.ai`;`${uu}`,`${uu}`,`${uu}`,new Set(ee().map(e=>e.id)),new Map([`auth_permanent`,`auth`,`billing`,`format`,`model_not_found`,`timeout`,`overloaded`,`rate_limit`,`session_expired`,`unknown`].map((e,t)=>[e,t]));const du={id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`,`image`],contextWindow:2e5,maxTokens:4096},fu=[{id:`ark-code-latest`,name:`Ark Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`doubao-seed-2.0-code`,name:`Doubao Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-pro`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-lite`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-code`,name:`Doubao Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`minimax-m2.5`,name:`MiniMax M2.5`,reasoning:!0,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7 Coding`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`kimi-k2.5`,name:`Kimi K2.5 Coding`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3}];function pu(e,t){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:t,contextWindow:e.contextWindow,maxTokens:e.maxTokens}}const mu={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},hu=[{id:`seed-2-0-pro-260328`,name:`ByteDance Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-lite-260228`,name:`ByteDance Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-mini-260215`,name:`ByteDance Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-code-preview-260328`,name:`ByteDance Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3}];function gu(e){return pu(e,mu)}const _u=[{id:`ark-code-latest`,name:`BytePlus Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`dola-seed-2.0-pro`,name:`Dola Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-lite`,name:`Dola Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-code`,name:`Dola Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`bytedance-seed-code`,name:`ByteDance Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`glm-5.1`,name:`GLM 5.1`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3}];function vu(){return[...Vs]}function yu(){return[...Us]}function bu(e){let t=e.trim().toLowerCase();return/^gpt-5(?:[.-]|$)/.test(t)?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:t===`claude-fable-5`||t===`claude-opus-4.8`||t===`claude-sonnet-5`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:t===`claude-haiku-4.5`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:t===`gemini-3.5-flash`||t===`gemini-3.1-pro`||t===`gemini-3-flash`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{tools:!0,json:!0}}function xu(e,t){let n=e.trim();if(!n)throw Error(`Model id required`);return{id:n,name:n,api:t,reasoning:!!bu(n).thinkingMode,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:bu(n)}}function Su(e){return xu(e,`openai-responses`)}function Cu(e){return xu(e,`openai-completions`)}const wu=[{id:`google/gemma-4-31B-turbo-TEE`,name:`google/gemma-4-31B-turbo-TEE`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:65536,cost:{input:.0245,output:.0978,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B-TEE`,name:`Qwen/Qwen3-32B-TEE`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5.1-TEE`,name:`zai-org/GLM-5.1-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:1.05,output:3.5,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.6-TEE`,name:`moonshotai/Kimi-K2.6-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65535,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.6-27B-TEE`,name:`Qwen/Qwen3.6-27B-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B`,name:`Qwen/Qwen3-32B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Nemo-Instruct-2407`,name:`unsloth/Mistral-Nemo-Instruct-2407`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.02,output:.04,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3-0324-TEE`,name:`deepseek-ai/DeepSeek-V3-0324-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.25,output:1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,name:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.08,output:.55,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-120b-TEE`,name:`openai/gpt-oss-120b-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.05,output:.45,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,name:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.2-TEE`,name:`deepseek-ai/DeepSeek-V3.2-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.28,output:.42,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-TEE`,name:`zai-org/GLM-4.7-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.5-TEE`,name:`moonshotai/Kimi-K2.5-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65535,cost:{input:.45,output:2.2,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-27b-it`,name:`unsloth/gemma-3-27b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`XiaomiMiMo/MiMo-V2-Flash-TEE`,name:`XiaomiMiMo/MiMo-V2-Flash-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.09,output:.29,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,name:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.06,output:.18,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-0528-TEE`,name:`deepseek-ai/DeepSeek-R1-0528-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.45,output:2.15,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5-TEE`,name:`zai-org/GLM-5-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.95,output:3.15,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-TEE`,name:`deepseek-ai/DeepSeek-V3.1-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.2,output:.8,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,name:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.23,output:.9,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-4b-it`,name:`unsloth/gemma-3-4b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:96e3,maxTokens:96e3,cost:{input:.01,output:.03,cacheRead:0,cacheWrite:0}},{id:`MiniMaxAI/MiniMax-M2.5-TEE`,name:`MiniMaxAI/MiniMax-M2.5-TEE`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,cost:{input:.3,output:1.1,cacheRead:0,cacheWrite:0}},{id:`tngtech/DeepSeek-TNG-R1T2-Chimera`,name:`tngtech/DeepSeek-TNG-R1T2-Chimera`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.25,output:.85,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Coder-Next-TEE`,name:`Qwen/Qwen3-Coder-Next-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.12,output:.75,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-405B-FP8-TEE`,name:`NousResearch/Hermes-4-405B-FP8-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3`,name:`deepseek-ai/DeepSeek-V3`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-20b`,name:`openai/gpt-oss-20b`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-3B-Instruct`,name:`unsloth/Llama-3.2-3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Small-24B-Instruct-2501`,name:`unsloth/Mistral-Small-24B-Instruct-2501`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:32768,cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-FP8`,name:`zai-org/GLM-4.7-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-TEE`,name:`zai-org/GLM-4.6-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65536,cost:{input:.4,output:1.7,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.5-397B-A17B-TEE`,name:`Qwen/Qwen3.5-397B-A17B-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,cost:{input:.55,output:3.5,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-72B-Instruct`,name:`Qwen/Qwen2.5-72B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,name:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.02,output:.1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.8,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-FP8`,name:`zai-org/GLM-4.6-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen/Qwen3-235B-A22B-Thinking-2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.11,output:.6,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,name:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`tngtech/R1T2-Chimera-Speed`,name:`tngtech/R1T2-Chimera-Speed`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.22,output:.6,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6V`,name:`zai-org/GLM-4.6V`,reasoning:!0,input:[`text`,`image`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-VL-32B-Instruct`,name:`Qwen/Qwen2.5-VL-32B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:16384,maxTokens:16384,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-14B`,name:`Qwen/Qwen3-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-Coder-32B-Instruct`,name:`Qwen/Qwen2.5-Coder-32B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-30B-A3B`,name:`Qwen/Qwen3-30B-A3B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.06,output:.22,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-12b-it`,name:`unsloth/gemma-3-12b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.1,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-1B-Instruct`,name:`unsloth/Llama-3.2-1B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,name:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-14B`,name:`NousResearch/Hermes-4-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.01,output:.05,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3Guard-Gen-0.6B`,name:`Qwen/Qwen3Guard-Gen-0.6B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`rednote-hilab/dots.ocr`,name:`rednote-hilab/dots.ocr`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}}];function Tu(e){return{...e,compat:{supportsUsageInStreaming:!1}}}const Eu={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},Du=[{id:`doubao-seed-2-0-pro-260215`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-lite-260215`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-mini-260215`,name:`Doubao Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-code-preview-260215`,name:`Doubao Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},du,{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:4096}];function Ou(e){return pu(e,Eu)}const ku=[...fu];function Au(e){let t=e.toLowerCase();return t.startsWith(`gpt-`)?`openai-responses`:t.startsWith(`claude-`)?`anthropic-messages`:t.startsWith(`gemini-`)?`google-generative-ai`:`openai-completions`}function ju(e){let t=e.toLowerCase();return!(t.includes(`glm`)||t.includes(`minimax`))}const Mu={"gpt-5.5":{input:5,output:30,cacheRead:.5,cacheWrite:0},"gpt-5.5-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4":{input:2.5,output:15,cacheRead:.25,cacheWrite:0},"gpt-5.4-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4-mini":{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},"gpt-5.4-nano":{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},"gpt-5.3-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.3-codex-spark":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"claude-fable-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-8":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"gemini-3.5-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"gemini-3.1-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gemini-3-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"qwen3.7-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"qwen3.6-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"minimax-m2.7":{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},"glm-5.2":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"glm-5.1":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"kimi-k2.6":{input:.95,output:4,cacheRead:.16,cacheWrite:0},"gpt-5.1-codex":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"gemini-3-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gpt-5.1-codex-mini":{input:.25,output:2,cacheRead:.025,cacheWrite:0},"gpt-5.1":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"glm-4.7":{input:0,output:0,cacheRead:0,cacheWrite:0},"gpt-5.1-codex-max":{input:1.25,output:10,cacheRead:.125,cacheWrite:0}},Nu={input:0,output:0,cacheRead:0,cacheWrite:0},Pu={"gpt-5.5":4e5,"gpt-5.5-pro":4e5,"gpt-5.4":4e5,"gpt-5.4-pro":4e5,"gpt-5.4-mini":4e5,"gpt-5.4-nano":4e5,"gpt-5.3-codex":4e5,"gpt-5.3-codex-spark":4e5,"gpt-5.2":4e5,"gpt-5.2-codex":4e5,"claude-fable-5":1e6,"claude-opus-4-8":1e6,"claude-sonnet-5":1e6,"claude-opus-4-7":1e6,"claude-opus-4-6":1e6,"claude-opus-4-5":2e5,"claude-sonnet-4-6":1e6,"claude-sonnet-4-5":1e6,"claude-haiku-4-5":2e5,"gemini-3.5-flash":1048576,"gemini-3.1-pro":1048576,"qwen3.7-plus":1e6,"qwen3.6-plus":262144,"minimax-m2.7":262144,"glm-5.2":1e6,"glm-5.1":204800,"kimi-k2.6":262144,"gpt-5.1-codex":4e5,"gemini-3-pro":1048576,"gpt-5.1-codex-mini":4e5,"gpt-5.1":4e5,"glm-4.7":204800,"gemini-3-flash":1048576,"gpt-5.1-codex-max":4e5};function Fu(e){return Pu[e]??128e3}const Iu={"gpt-5.5":128e3,"gpt-5.5-pro":128e3,"gpt-5.4":128e3,"gpt-5.4-pro":128e3,"gpt-5.4-mini":128e3,"gpt-5.4-nano":128e3,"gpt-5.3-codex":128e3,"gpt-5.3-codex-spark":128e3,"gpt-5.2":128e3,"gpt-5.2-codex":128e3,"claude-fable-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-opus-4-7":128e3,"claude-opus-4-6":128e3,"claude-opus-4-5":64e3,"claude-sonnet-4-6":128e3,"claude-sonnet-4-5":64e3,"claude-haiku-4-5":64e3,"gemini-3.5-flash":65536,"gemini-3.1-pro":65536,"qwen3.7-plus":65536,"qwen3.6-plus":65536,"minimax-m2.7":65536,"glm-5.2":131072,"glm-5.1":131072,"kimi-k2.6":65536,"gpt-5.1-codex":128e3,"gemini-3-pro":65536,"gpt-5.1-codex-mini":128e3,"gpt-5.1":128e3,"glm-4.7":131072,"gemini-3-flash":65536,"gpt-5.1-codex-max":128e3};function Lu(e){return Iu[e]??8192}function Ru(e){return{id:e,name:Bu(e),api:Au(e),reasoning:!0,input:ju(e)?[`text`,`image`]:[`text`],cost:Mu[e]??Nu,contextWindow:Fu(e),maxTokens:Lu(e),capabilities:Va(e)}}const zu={"gpt-5.5":`GPT-5.5`,"gpt-5.5-pro":`GPT-5.5 Pro`,"gpt-5.4":`GPT-5.4`,"gpt-5.4-pro":`GPT-5.4 Pro`,"gpt-5.4-mini":`GPT-5.4 Mini`,"gpt-5.4-nano":`GPT-5.4 Nano`,"gpt-5.3-codex":`GPT-5.3 Codex`,"gpt-5.3-codex-spark":`GPT-5.3 Codex Spark`,"gpt-5.2":`GPT-5.2`,"gpt-5.2-codex":`GPT-5.2 Codex`,"claude-fable-5":`Claude Fable 5`,"claude-opus-4-8":`Claude Opus 4.8`,"claude-sonnet-5":`Claude Sonnet 5`,"claude-opus-4-7":`Claude Opus 4.7`,"claude-opus-4-6":`Claude Opus 4.6`,"claude-opus-4-5":`Claude Opus 4.5`,"claude-sonnet-4-6":`Claude Sonnet 4.6`,"claude-sonnet-4-5":`Claude Sonnet 4.5`,"claude-haiku-4-5":`Claude Haiku 4.5`,"gemini-3.5-flash":`Gemini 3.5 Flash`,"gemini-3.1-pro":`Gemini 3.1 Pro`,"qwen3.7-plus":`Qwen3.7 Plus`,"qwen3.6-plus":`Qwen3.6 Plus`,"minimax-m2.7":`MiniMax M2.7`,"glm-5.2":`GLM 5.2`,"glm-5.1":`GLM 5.1`,"kimi-k2.6":`Kimi K2.6`,"gpt-5.1-codex":`GPT-5.1 Codex`,"gemini-3-pro":`Gemini 3 Pro`,"gpt-5.1-codex-mini":`GPT-5.1 Codex Mini`,"gpt-5.1":`GPT-5.1`,"glm-4.7":`GLM-4.7`,"gemini-3-flash":`Gemini 3 Flash`,"gpt-5.1-codex-max":`GPT-5.1 Codex Max`};function Bu(e){return zu[e]?zu[e]:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Vu(){return Ra.map(Ru)}const Hu={input:0,output:0,cacheRead:0,cacheWrite:0};function R(e){return{id:e.id,name:e.name??e.id,reasoning:e.reasoning??!1,input:e.input??[`text`],cost:e.cost??Hu,contextWindow:e.contextWindow??2e5,maxTokens:e.maxTokens??8192,...e.api?{api:e.api}:{},...e.compat?{compat:e.compat}:{},...e.capabilities?{capabilities:e.capabilities}:{}}}const Uu=[R({id:`gpt-5.5`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:0}}),R({id:`gpt-5.4`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0}}),R({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),R({id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0}})];R({id:`gpt-5.5`,name:`GPT-5.5 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),R({id:`gpt-5.4`,name:`GPT-5.4 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),R({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),R({id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,reasoning:!0,input:[`text`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`});const Wu=[R({id:`claude-fable-5`,name:`Claude Fable 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-sonnet-5`,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:64e3})],Gu=[R({id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash-Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536})];R({id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}}),R({id:`grok-build-0.1`,name:`Grok Build 0.1`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0}}),R({id:`glm-5.2`,name:`GLM-5.2`,reasoning:!0,contextWindow:1e6,maxTokens:128e3}),R({id:`glm-5.1`,name:`GLM-5.1`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5`,name:`GLM-5`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5-turbo`,name:`GLM-5 Turbo`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5v-turbo`,name:`GLM-5V Turbo`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7`,name:`GLM-4.7`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7-flashx`,name:`GLM-4.7 FlashX`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7-flash`,name:`GLM-4.7 Flash`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.7-highspeed`,name:`MiniMax M2.7 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.5`,name:`MiniMax M2.5`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.5-highspeed`,name:`MiniMax M2.5 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`kimi-k2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),R({id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:8192}),R({id:`kimi-for-coding`,name:`Kimi Coding`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),R({id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0}}),R({id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0}}),R({id:`mistral-large-2512`,name:`Mistral Large 3`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0}}),R({id:`devstral-2512`,name:`Devstral 2`,contextWindow:262144,maxTokens:262144,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}}),R({id:`ministral-14b-2512`,name:`Ministral 3 14B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0}}),R({id:`ministral-8b-2512`,name:`Ministral 3 8B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0}}),R({id:`ministral-3b-2512`,name:`Ministral 3 3B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0}}),R({id:`qwen3.7-max`,name:`qwen3.7-max`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`qwen3.7-plus`,name:`qwen3.7-plus`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`qwen3.6-flash`,name:`qwen3.6-flash`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`deepseek-v4-pro`,name:`deepseek-v4-pro`,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v4-flash`,name:`deepseek-v4-flash`,contextWindow:1e6,maxTokens:131072}),R({id:`kimi-k2.7-code`,name:`kimi-k2.7-code`,contextWindow:262144,maxTokens:32768}),R({id:`glm-5.2`,name:`glm-5.2`,contextWindow:1e6,maxTokens:128e3}),R({id:`MiniMax-M2.5`,name:`MiniMax-M2.5`,reasoning:!0,contextWindow:1e6,maxTokens:65536}),R({id:`ernie-5.1`,name:`ERNIE 5.1`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0`,name:`ERNIE 5.0`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0-thinking-latest`,name:`ERNIE 5.0 Thinking Latest`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0-thinking-preview`,name:`ERNIE 5.0 Thinking Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:119e3,maxTokens:64e3}),R({id:`ernie-x1.1-preview`,name:`ERNIE X1.1 Preview`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),R({id:`ernie-x1.1`,name:`ERNIE X1.1`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),R({id:`ernie-x1-turbo-32k`,name:`ERNIE X1 Turbo 32K`,reasoning:!0,contextWindow:32e3,maxTokens:28160}),R({id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v3.2-think`,name:`DeepSeek V3.2 Think`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),R({id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),[R({id:`auto`,name:`OpenRouter Auto`,input:[`text`,`image`],contextWindow:2e5}),R({id:`moonshotai/kimi-k2.6`,name:`MoonshotAI Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:1,output:3,cacheRead:.2,cacheWrite:0}}),R({id:`moonshotai/kimi-k2.5`,name:`MoonshotAI Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:.44,output:2,cacheRead:.22,cacheWrite:0}}),...Uu.map(e=>({...e,id:`openai/${e.id}`,name:`OpenAI ${e.name}`,api:`openai-completions`})),...Wu.map(e=>({...e,id:`anthropic/${e.id}`,name:`Anthropic ${e.name}`,api:`openai-completions`})),...Gu.map(e=>({...e,id:`google/${e.id}`,name:`Google ${e.name}`,api:`openai-completions`}))],wu.map(Tu),Ga.map(qa),ro.map(ao),Za.map($a),Oa.map(ja),Vu(),co.map(_o),Ca.map(e=>Ta({id:e.id})),Pa.map(Ia),R({id:`local`,name:`Local model`,input:[`text`,`image`],contextWindow:128e3,maxTokens:8192}),vu().map(Su),yu().map(Cu),Du.map(Ou),ku.map(Ou),ku.map(Ou),hu.map(gu),_u.map(gu),_u.map(gu),xo.map(e=>So(e));const Ku=`qwen3.7-plus`;`${Ku}`,`${Ku}`;const qu=1e6,Ju=65536,Yu={input:0,output:0,cacheRead:0,cacheWrite:0},Xu=[{id:`qwen3.7-max`,name:`Qwen3.7 Max`,reasoning:!0,input:[`text`,`image`],cost:Yu,contextWindow:qu,maxTokens:Ju},{id:`qwen3.7-plus`,name:`Qwen3.7 Plus`,reasoning:!0,input:[`text`,`image`],cost:Yu,contextWindow:qu,maxTokens:Ju},{id:`qwen3.6-flash`,name:`Qwen3.6 Flash`,reasoning:!0,input:[`text`,`image`],cost:Yu,contextWindow:1e6,maxTokens:Ju}];Xu[0],Xu[1],Xu[2];function Zu(e){return e===`gemini-3.5-flash-preview`?`gemini-3.5-flash`:e===`gemini-3-pro`||e===`gemini-3-pro-preview`||e===`gemini-3.1-pro`?`gemini-3.1-pro-preview`:e===`gemini-3-flash`||e===`gemini-3.1-flash`||e===`gemini-3.1-flash-preview`?`gemini-3-flash-preview`:e===`gemini-3.1-flash-lite`||e===`gemini-3.1-flash-lite-preview`?`gemini-3.1-flash-lite`:e}const Qu={"opus-4.8":`claude-opus-4-8`,"opus-4.6":`claude-opus-4-6`,"opus-4.5":`claude-opus-4-5`,"sonnet-5":`claude-sonnet-5`,"sonnet-4.6":`claude-sonnet-4-6`,"sonnet-4.5":`claude-sonnet-4-5`},$u=[`gpt-5.4-codex`,`gpt-5.3-codex`];function ed(e){let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t===`opencode-zen`?`opencode`:t===`kimi-code`?`kimi-coding`:t===`moonshotai`||t===`moonshot-ai`?`moonshot`:t===`bytedance`||t===`doubao`?`volcengine`:t}function td(e){let t=e.trim();return t&&(Qu[t.toLowerCase()]??t)}function nd(e,t){if(e===`anthropic`)return td(t);if(e===`vercel-ai-gateway`&&!t.includes(`/`)){if(t.toLowerCase().startsWith(`gpt-`))return`openai/${t}`;let e=td(t);if(e.startsWith(`claude-`))return`anthropic/${e}`}return e===`google`?Zu(t):e===`openrouter`&&!t.includes(`/`)?`openrouter/${t}`:t}function rd(e,t){if(e!==`openai`)return!1;let n=t.trim().toLowerCase();return n?$u.some(e=>n===e||n.startsWith(`${e}-`)):!1}function id(e,t){let n=ed(e),r=nd(n,t.trim());return rd(n,r)?{provider:`openai-codex`,model:r}:{provider:n,model:r}}function ad(e,t){let n=e.trim();if(!n)return null;let r=n.indexOf(`/`);if(r===-1)return id(t,n);let i=n.slice(0,r).trim(),a=n.slice(r+1).trim();return!i||!a?null:id(i,a)}const od=`elevenlabs`;function sd(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function cd(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function ld(e){let t=cd(e);if(t)return t;let n=nl(e);if(n)return n;if(sd(e)&&Object.keys(e).length>0)return e}function ud(e){return ld(e)!==void 0}function dd(e){if(!sd(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function fd(e){if(!sd(e))return;let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(n===`voiceAliases`){let e=dd(r);e&&(t.voiceAliases=e);continue}if(n===`apiKey`){let e=ld(r);e&&(t.apiKey=e);continue}if(n===`voiceId`||n===`modelId`||n===`outputFormat`){let e=cd(r);e&&(t[n]=e);continue}t[n]=r}return Object.keys(t).length>0?t:void 0}function pd(e){if(!sd(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=cd(n);if(!e)continue;let i=fd(r);i&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function md(e){let t={},n=cd(e.voiceId);n&&(t.voiceId=n);let r=dd(e.voiceAliases);r&&(t.voiceAliases=r);let i=cd(e.modelId);i&&(t.modelId=i);let a=cd(e.outputFormat);a&&(t.outputFormat=a);let o=ld(e.apiKey);return o&&(t.apiKey=o),t}function hd(e){return fd({voiceId:e.voiceId,voiceAliases:e.voiceAliases,modelId:e.modelId,outputFormat:e.outputFormat,apiKey:e.apiKey})}function gd(e){let t=cd(e.provider);if(t)return t;let n=e.providers?Object.keys(e.providers):[];return n.length===1?n[0]:void 0}function _d(e){if(!sd(e))return;let t=e,n=typeof t.provider==`string`||sd(t.providers),r={},i=md(t);if(Object.keys(i).length>0&&Object.assign(r,i),typeof t.interruptOnSpeech==`boolean`&&(r.interruptOnSpeech=t.interruptOnSpeech),n){let e=pd(t.providers),n=cd(t.provider);if(e&&(r.providers=e),n)r.provider=n;else if(e){let t=Object.keys(e);t.length===1&&(r.provider=t[0])}return Object.keys(r).length>0?r:void 0}let a=hd(t);return a&&(r.provider=od,r.providers={[od]:a}),Object.keys(r).length>0?r:void 0}function vd(e){if(!e.talk)return e;let t=_d(e.talk);return t?{...e,talk:t}:e}function yd(e){let t=_d(e);if(!t)return{};let n=gd(t);return n?{provider:n,config:t.providers?.[n]}:{}}function bd(e={}){let t=e.fs??n,r=e.os??p,a=e.path??i,o=r.homedir(),s=[`.profile`,`.zprofile`,`.zshrc`,`.bashrc`].map(e=>a.join(o,e));for(let e of s)if(t.existsSync(e))try{let n=t.readFileSync(e,`utf-8`).match(/(?:^|\n)\s*(?:export\s+)?ELEVENLABS_API_KEY\s*=\s*["']?([^\n"']+)["']?/)?.[1]?.trim();if(n)return n}catch{}return null}function xd(e=process.env,t={}){return(e.ELEVENLABS_API_KEY??``).trim()||bd(t)}let Sd={warned:!1};const Cd={opus:`anthropic/claude-opus-4-8`,sonnet:`anthropic/claude-sonnet-5`,gpt:`openai/gpt-5.5`,"gpt-mini":`openai/gpt-5.4-mini`,gemini:`google/gemini-3.5-flash`,"gemini-flash":`google/gemini-3-flash-preview`,"gemini-flash-lite":`google/gemini-3.1-flash-lite`},wd={input:0,output:0,cacheRead:0,cacheWrite:0},Td=[`text`];function Ed(e,t){return t||(ed(e)===`anthropic`?`anthropic-messages`:void 0)}function Dd(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function Od(e){return{input:typeof e?.input==`number`?e.input:wd.input,output:typeof e?.output==`number`?e.output:wd.output,cacheRead:typeof e?.cacheRead==`number`?e.cacheRead:wd.cacheRead,cacheWrite:typeof e?.cacheWrite==`number`?e.cacheWrite:wd.cacheWrite}}function kd(e){let t=e.auth?.profiles??{},n=Object.entries(t).filter(([,e])=>e?.provider===`anthropic`),r=e.auth?.order?.anthropic??[];for(let e of r){let n=t[e];if(!(!n||n.provider!==`anthropic`)){if(n.mode===`api_key`)return`api_key`;if(n.mode===`oauth`||n.mode===`token`)return`oauth`}}let i=n.some(([,e])=>e?.mode===`api_key`),a=n.some(([,e])=>e?.mode===`oauth`||e?.mode===`token`);return i&&!a?`api_key`:a&&!i||process.env.ANTHROPIC_OAUTH_TOKEN?.trim()?`oauth`:process.env.ANTHROPIC_API_KEY?.trim()?`api_key`:null}function Ad(e){if(!e||typeof e!=`string`)return null;let t=e.trim();return t?Cd[t.toLowerCase()]??t:null}function jd(e){if(!e)return!1;let t=ed(e.provider),n=e.model.toLowerCase();return t===`anthropic`?!0:t===`amazon-bedrock`&&n.includes(`anthropic.claude`)}function Md(e){let t=e.messages;if(t?.ackReactionScope!==void 0)return e;let n=t?{...t}:{};return n.ackReactionScope=`group-mentions`,{...e,messages:n}}function Nd(e,t={}){let n=e.session;if(!n||n.mainKey===void 0)return e;let r=n.mainKey.trim(),i=t.warn??console.warn,a=t.warnState??Sd,o={...e,session:{...n,mainKey:`main`}};return r&&r!==`main`&&!a.warned&&(a.warned=!0,i(`session.mainKey is ignored; main session is always "main".`)),o}function Pd(e){let t=vd(e),n=xd();if(!n)return t;let r=t.talk,i=yd(r);if(i.provider&&i.provider!==od||ud(i.config?.apiKey)||ud(r?.apiKey))return t;let a=i.provider??od,o={...r?.providers};o[a]={...o[a],apiKey:n};let s={...r,provider:r?.provider??a,providers:o,apiKey:n};return{...t,talk:s}}function Fd(e){return vd(e)}function Id(e){let t=!1,n=e,r=n.models?.providers;if(r){let e={...r};for(let[n,i]of Object.entries(r)){let r=i.models;if(!Array.isArray(r)||r.length===0)continue;let a=Ed(n,i.api),o=i;a&&i.api!==a&&(t=!0,o={...o,api:a});let s=!1,c=r.map(e=>{let t=e,n=!1,r=typeof t.reasoning==`boolean`?t.reasoning:!1;t.reasoning!==r&&(n=!0);let i=t.input??[...Td];t.input===void 0&&(n=!0);let o=Od(t.cost);(!t.cost||t.cost.input!==o.input||t.cost.output!==o.output||t.cost.cacheRead!==o.cacheRead||t.cost.cacheWrite!==o.cacheWrite)&&(n=!0);let c=Dd(t.contextWindow)?t.contextWindow:2e5;t.contextWindow!==c&&(n=!0);let l=Math.min(8192,c),u=Dd(t.maxTokens)?t.maxTokens:l,d=Math.min(u,c);t.maxTokens!==d&&(n=!0);let f=t.api??a;return t.api!==f&&(n=!0),n?(s=!0,{...t,reasoning:r,input:i,cost:o,contextWindow:c,maxTokens:d,api:f}):e});if(!s){o!==i&&(e[n]=o);continue}e[n]={...o,models:c},t=!0}t&&(n={...n,models:{...n.models,providers:e}})}let i=n.agents?.defaults;if(!i)return t?n:e;let a=i.models??{};if(Object.keys(a).length===0)return t?n:e;let o={...a};for(let[e,n]of Object.entries(Cd)){let r=o[n];r&&r.alias===void 0&&(o[n]={...r,alias:e},t=!0)}return t?{...n,agents:{...n.agents,defaults:{...i,models:o}}}:e}function Ld(e){let t=e.agents,n=t?.defaults,r=typeof n?.maxConcurrent==`number`&&Number.isFinite(n.maxConcurrent),i=typeof n?.subagents?.maxConcurrent==`number`&&Number.isFinite(n.subagents.maxConcurrent);if(r&&i)return e;let a=!1,o=n?{...n}:{};r||(o.maxConcurrent=4,a=!0);let s=n?.subagents?{...n.subagents}:{};return i||(s.maxConcurrent=8,a=!0),a?{...e,agents:{...t,defaults:{...o,subagents:s}}}:e}function Rd(e){let t=e.logging;return!t||t.redactSensitive?e:{...e,logging:{...t,redactSensitive:`tools`}}}function zd(e){let t=e.agents?.defaults;if(!t)return e;let n=kd(e);if(!n)return e;let r=!1,i={...t},a=t.contextPruning??{},o=t.heartbeat??{};if(t.contextPruning?.mode===void 0&&(i.contextPruning={...a,mode:`cache-ttl`,ttl:t.contextPruning?.ttl??`1h`},r=!0),t.heartbeat?.every===void 0&&(i.heartbeat={...o,every:n===`oauth`?`1h`:`30m`},r=!0),n===`api_key`){let e=t.models?{...t.models}:{},n=!1;for(let[t,r]of Object.entries(e)){if(!jd(ad(t,`anthropic`)))continue;let i=r??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[t]={...i,params:{...a,cacheRetention:`short`}},n=!0)}let a=Ad(ia(t.model)??void 0);if(a){let t=ad(a,`anthropic`);if(jd(t)){let r=`${t.provider}/${t.model}`,i=e[r]??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[r]={...i,params:{...a,cacheRetention:`short`}},n=!0)}}n&&(i.models=e,r=!0)}return r?{...e,agents:{...e.agents,defaults:i}}:e}function Bd(e){let t=e.agents?.defaults;if(!t)return e;let n=t?.compaction;return n?.mode?e:{...e,agents:{...e.agents,defaults:{...t,compaction:{...n,mode:`safeguard`}}}}}const Vd=/\$\{[A-Z_][A-Z0-9_]*\}/;function Hd(e){return Vd.test(e)}function Ud(e,t){let n=/^[A-Z_][A-Z0-9_]*$/,r=[];for(let i=0;i<e.length;i++){if(e[i]===`$`){if(e[i+1]===`$`&&e[i+2]===`{`){let t=i+3,a=e.indexOf(`}`,t);if(a!==-1){let o=e.slice(t,a);if(n.test(o)){r.push(`\${${o}}`),i=a;continue}}}if(e[i+1]===`{`){let a=i+2,o=e.indexOf(`}`,a);if(o!==-1){let s=e.slice(a,o);if(n.test(s)){let e=t[s];if(e===void 0||e===``)return null;r.push(e),i=o;continue}}}}r.push(e[i])}return r.join(``)}function Wd(e,t,n=process.env){if(t==null)return e;if(typeof e==`string`&&typeof t==`string`)return Hd(t)&&Ud(t,n)===e?t:e;if(Array.isArray(e)&&Array.isArray(t))return e.map((e,r)=>r<t.length?Wd(e,t[r],n):e);if(T(e)&&T(t)){let r={};for(let[i,a]of Object.entries(e))i in t?r[i]=Wd(a,t[i],n):r[i]=a;return r}return e}const Gd=/^[A-Z_][A-Z0-9_]*$/;var Kd=class extends Error{constructor(e,t){super(`Missing env var "${e}" referenced at config path: ${t}`),this.varName=e,this.configPath=t,this.name=`MissingEnvVarError`}};function qd(e,t){if(e[t]!==`$`)return null;let n=e[t+1],r=e[t+2];if(n===`$`&&r===`{`){let n=t+3,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Gd.test(t))return{kind:`escaped`,name:t,end:r}}}if(n===`{`){let n=t+2,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(Gd.test(t))return{kind:`substitution`,name:t,end:r}}}return null}function Jd(e,t,n){if(!e.includes(`$`))return e;let r=[];for(let i=0;i<e.length;i+=1){let a=e[i];if(a!==`$`){r.push(a);continue}let o=qd(e,i);if(o?.kind===`escaped`){r.push(`\${${o.name}}`),i=o.end;continue}if(o?.kind===`substitution`){let e=t[o.name];if(e===void 0||e===``)throw new Kd(o.name,n);r.push(e),i=o.end;continue}r.push(a)}return r.join(``)}function Yd(e){if(!e.includes(`$`))return!1;for(let t=0;t<e.length;t+=1){if(e[t]!==`$`)continue;let n=qd(e,t);if(n?.kind===`escaped`){t=n.end;continue}if(n?.kind===`substitution`)return!0}return!1}function Xd(e,t,n){if(typeof e==`string`)return Jd(e,t,n);if(Array.isArray(e))return e.map((e,r)=>Xd(e,t,`${n}[${r}]`));if(T(e)){let r={};for(let[i,a]of Object.entries(e))r[i]=Xd(a,t,n?`${n}.${i}`:i);return r}return e}function Zd(e,t=process.env){return Xd(e,t,``)}function Qd(e){return yr(e)||xr(e)}function $d(e){let t=e?.env;if(!t)return{};let n={};if(t.vars)for(let[e,r]of Object.entries(t.vars)){if(!r)continue;let t=vr(e,{portable:!0});t&&(Qd(t)||(n[t]=r))}for(let[e,r]of Object.entries(t)){if(e===`shellEnv`||e===`vars`||typeof r!=`string`||!r.trim())continue;let t=vr(e,{portable:!0});t&&(Qd(t)||(n[t]=r))}return n}function ef(e){return $d(e)}function tf(e,t=process.env){let n=ef(e);for(let[e,r]of Object.entries(n))t[e]?.trim()||(t[e]=r)}const nf=`$include`;var z=class extends Error{constructor(e,t,n){super(e),this.includePath=t,this.cause=n,this.name=`ConfigIncludeError`}},rf=class extends z{constructor(e){super(`Circular include detected: ${e.join(` -> `)}`,e[e.length-1]),this.chain=e,this.name=`CircularIncludeError`}};function af(e,t){if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(T(e)&&T(t)){let n={...e};for(let e of Object.keys(t))Gi(e)||(n[e]=e in n?af(n[e],t[e]):t[e]);return n}return t}var of=class e{constructor(e,t,n){this.basePath=e,this.resolver=t,this.visited=new Set,this.depth=0,this.visited.add(i.normalize(e)),this.rootDir=i.normalize(n??i.dirname(e)),this.rootRealDir=i.normalize(sf(this.rootDir))}process(e){return Array.isArray(e)?e.map(e=>this.process(e)):T(e)?nf in e?this.processInclude(e):this.processObject(e):e}processObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=this.process(r);return t}processInclude(e){let t=e[nf],n=Object.keys(e).filter(e=>e!==nf),r=this.resolveInclude(t);if(n.length===0)return r;if(!T(r))throw new z(`Sibling keys require included content to be an object`,typeof t==`string`?t:nf);let i={};for(let t of n)i[t]=this.process(e[t]);return af(r,i)}resolveInclude(e){if(typeof e==`string`)return this.loadFile(e);if(Array.isArray(e))return e.reduce((e,t)=>{if(typeof t!=`string`)throw new z(`Invalid $include array item: expected string, got ${typeof t}`,String(t));return af(e,this.loadFile(t))},{});throw new z(`Invalid $include value: expected string or array of strings, got ${typeof e}`,String(e))}loadFile(e){let t=this.resolvePath(e);this.checkCircular(t),this.checkDepth(e);let n=this.readFile(e,t),r=this.parseFile(e,t,n);return this.processNested(t,r)}resolvePath(e){let t=i.dirname(this.basePath),r=i.isAbsolute(e)?e:i.resolve(t,e),a=i.normalize(r);if(!oi(this.rootDir,a))throw new z(`Include path escapes config directory: ${e} (root: ${this.rootDir})`,e);try{let t=n.realpathSync(a);if(!oi(this.rootRealDir,t))throw new z(`Include path resolves outside config directory (symlink): ${e} (root: ${this.rootDir})`,e)}catch(e){if(e instanceof z)throw e}return a}checkCircular(e){if(this.visited.has(e))throw new rf([...this.visited,e])}checkDepth(e){if(this.depth>=10)throw new z(`Maximum include depth (10) exceeded at: ${e}`,e)}readFile(e,t){try{return this.resolver.readFileWithGuards?this.resolver.readFileWithGuards({includePath:e,resolvedPath:t,rootRealDir:this.rootRealDir}):this.resolver.readFile(t)}catch(n){throw n instanceof z?n:new z(`Failed to read include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}parseFile(e,t,n){try{return this.resolver.parseJson(n)}catch(n){throw new z(`Failed to parse include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}processNested(t,n){let r=new e(t,this.resolver,this.rootDir);return r.visited=new Set([...this.visited,t]),r.depth=this.depth+1,r.process(n)}};function sf(e){try{return n.realpathSync(e)}catch{return e}}function cf(e){let t=e.ioFs??n,r=e.maxBytes??2097152;if(!Di(t))return t.readFileSync(e.resolvedPath,`utf-8`);let i=Oi({absolutePath:e.resolvedPath,rootPath:e.rootRealDir,rootRealPath:e.rootRealDir,boundaryLabel:`config directory`,skipLexicalRootCheck:!0,maxBytes:r,ioFs:t});if(!i.ok)throw i.reason===`validation`?new z(`Include file failed security checks (regular file, max ${r} bytes, no hardlinks): ${e.includePath}`,e.includePath):new z(`Failed to read include file: ${e.includePath} (resolved: ${e.resolvedPath})`,e.includePath,i.error instanceof Error?i.error:void 0);try{return t.readFileSync(i.fd,`utf-8`)}finally{t.closeSync(i.fd)}}const lf={readFile:e=>n.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:n})=>cf({includePath:e,resolvedPath:t,rootRealDir:n}),parseJson:e=>m.parse(e)};function uf(e,t,n=lf){return new of(t,n).process(e)}function df(e){return typeof e==`string`&&e.trim().toLowerCase()||null}function ff(e){let t=df(e);return t===`off`||t===`partial`||t===`block`||t===`progress`?t:null}function pf(e){let t=ff(e);return t?t===`progress`?`partial`:t:null}function mf(e){let t=df(e);return t===`replace`||t===`status_final`||t===`append`?t:null}function hf(e){return e===`append`?`block`:e===`status_final`?`progress`:`partial`}function gf(e={}){let t=ff(e.streaming);return t?t===`progress`?`partial`:t:pf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function _f(e={}){return pf(e.streaming)||pf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function vf(e={}){let t=ff(e.streaming);if(t)return t;let n=mf(e.streamMode);return n?hf(n):(e.streaming,`partial`)}function yf(e={}){return typeof e.nativeStreaming==`boolean`?e.nativeStreaming:typeof e.streaming==`boolean`?e.streaming:!0}const bf=/[;&|`$<>]/,xf=/[\r\n]/,Sf=/["']/,Cf=/^[A-Za-z0-9._+-]+$/;function wf(e){return e.startsWith(`.`)||e.startsWith(`~`)||e.includes(`/`)||e.includes(`\\`)?!0:/^[A-Za-z]:[\\/]/.test(e)}function Tf(e){if(!e)return!1;let t=e.trim();return!t||t.includes(`\0`)||xf.test(t)||bf.test(t)||Sf.test(t)?!1:wf(t)?!0:t.startsWith(`-`)?!1:Cf.test(t)}const B=e=>E(e)?e:null,V=(e,t)=>{let n=e[t];if(E(n))return n;let r={};return e[t]=r,r},Ef=(e,t)=>{for(let[n,r]of Object.entries(t)){if(r===void 0||Gi(n))continue;let t=e[n];if(t===void 0){e[n]=r;continue}E(t)&&E(r)&&Ef(t,r)}},Df=e=>{let t=B(e),n=Array.isArray(t?.command)?t?.command:null;if(!n||n.length===0||typeof n[0]!=`string`||!n.every(e=>typeof e==`string`))return null;let r=n[0].trim();if(!r||!Tf(r))return null;let i=n.slice(1),a=typeof t?.timeoutSeconds==`number`?t?.timeoutSeconds:void 0,o={command:r,type:`cli`};return i.length>0&&(o.args=i),a!==void 0&&(o.timeoutSeconds=a),o},Of=e=>{let t=e?.list;return Array.isArray(t)?t:[]},kf=e=>{let t=Of(B(e.agents)),n=t.find(e=>E(e)&&e.default===!0&&typeof e.id==`string`&&e.id.trim()!==``);if(n)return n.id.trim();let r=B(e.routing),i=typeof r?.defaultAgentId==`string`?r.defaultAgentId.trim():``;if(i)return i;let a=t.find(e=>E(e)&&typeof e.id==`string`&&e.id.trim()!==``);return a?a.id.trim():`main`},Af=(e,t)=>{let n=t.trim(),r=e.find(e=>E(e)&&typeof e.id==`string`&&e.id.trim()===n);if(r)return r;let i={id:n};return e.push(i),i};function jf(e,t,n,r){let i=Array.isArray(e.bindings)?e.bindings:null;if(!i)return;let a=!1;for(let e of i){if(!E(e))continue;let t=B(e.match);t&&r(t)&&(e.match=t,a=!0)}a&&(e.bindings=i,t.push(n))}function Mf(e){let t=E(e.groups)?e.groups:{};return{groups:t,entry:E(t[`*`])?t[`*`]:{}}}function Nf(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function Pf(e){let t=B(e.owner.threadBindings);if(!t||!Nf(t,`ttlHours`))return!1;let n=t.idleHours!==void 0;return n||(t.idleHours=t.ttlHours),delete t.ttlHours,e.owner.threadBindings=t,n?e.changes.push(`Removed ${e.pathPrefix}.threadBindings.ttlHours (${e.pathPrefix}.threadBindings.idleHours already set).`):e.changes.push(`Moved ${e.pathPrefix}.threadBindings.ttlHours → ${e.pathPrefix}.threadBindings.idleHours.`),!0}const Ff=[{id:`bindings.match.provider->bindings.match.channel`,describe:`Move bindings[].match.provider to bindings[].match.channel`,apply:(e,t)=>{jf(e,t,`Moved bindings[].match.provider → bindings[].match.channel.`,e=>{if(typeof e.channel==`string`&&e.channel.trim())return!1;let t=typeof e.provider==`string`?e.provider.trim():``;return t?(e.channel=t,delete e.provider,!0):!1})}},{id:`bindings.match.accountID->bindings.match.accountId`,describe:`Move bindings[].match.accountID to bindings[].match.accountId`,apply:(e,t)=>{jf(e,t,`Moved bindings[].match.accountID → bindings[].match.accountId.`,e=>{if(e.accountId!==void 0)return!1;let t=typeof e.accountID==`string`?e.accountID.trim():e.accountID;return t?(e.accountId=t,delete e.accountID,!0):!1})}},{id:`session.sendPolicy.rules.match.provider->match.channel`,describe:`Move session.sendPolicy.rules[].match.provider to match.channel`,apply:(e,t)=>{let n=B(e.session);if(!n)return;let r=B(n.sendPolicy);if(!r)return;let i=Array.isArray(r.rules)?r.rules:null;if(!i)return;let a=!1;for(let e of i){if(!E(e))continue;let t=B(e.match);if(!t||typeof t.channel==`string`&&t.channel.trim())continue;let n=typeof t.provider==`string`?t.provider.trim():``;n&&(t.channel=n,delete t.provider,e.match=t,a=!0)}a&&(r.rules=i,n.sendPolicy=r,e.session=n,t.push(`Moved session.sendPolicy.rules[].match.provider → match.channel.`))}},{id:`messages.queue.byProvider->byChannel`,describe:`Move messages.queue.byProvider to messages.queue.byChannel`,apply:(e,t)=>{let n=B(e.messages);if(!n)return;let r=B(n.queue);r&&r.byProvider!==void 0&&(r.byChannel===void 0?(r.byChannel=r.byProvider,t.push(`Moved messages.queue.byProvider → messages.queue.byChannel.`)):t.push(`Removed messages.queue.byProvider (messages.queue.byChannel already set).`),delete r.byProvider,n.queue=r,e.messages=n)}},{id:`providers->channels`,describe:`Move provider config sections to channels.*`,apply:(e,t)=>{let n=[`whatsapp`,`telegram`,`discord`,`slack`,`signal`,`imessage`,`msteams`].filter(t=>E(e[t]));if(n.length===0)return;let r=V(e,`channels`);for(let i of n){let n=B(e[i]);if(!n)continue;let a=V(r,i),o=Object.keys(a).length>0;Ef(a,n),r[i]=a,delete e[i],t.push(o?`Merged ${i} → channels.${i}.`:`Moved ${i} → channels.${i}.`)}e.channels=r}},{id:`thread-bindings.ttlHours->idleHours`,describe:`Move legacy threadBindings.ttlHours keys to threadBindings.idleHours (session + channels.discord)`,apply:(e,t)=>{let n=B(e.session);n&&(Pf({owner:n,pathPrefix:`session`,changes:t}),e.session=n);let r=B(e.channels),i=B(r?.discord);if(!r||!i)return;Pf({owner:i,pathPrefix:`channels.discord`,changes:t});let a=B(i.accounts);if(a){for(let[e,n]of Object.entries(a)){let r=B(n);r&&(Pf({owner:r,pathPrefix:`channels.discord.accounts.${e}`,changes:t}),a[e]=r)}i.accounts=a}r.discord=i,e.channels=r}},{id:`channels.streaming-keys->channels.streaming`,describe:`Normalize legacy streaming keys to channels.<provider>.streaming (Telegram/Discord/Slack)`,apply:(e,t)=>{let n=B(e.channels);if(!n)return;let r=e=>{let n=n=>{let r=e.entry.streamMode!==void 0,i=e.entry.streaming;if(!r&&typeof i!=`boolean`)return!1;let a=n(e.entry);return e.entry.streaming=a,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${a}).`)),typeof i==`boolean`&&t.push(`Normalized ${e.pathPrefix}.streaming boolean → enum (${a}).`),!0},r=e.entry.streamMode!==void 0,i=e.entry.streaming,a=e.entry.nativeStreaming;if(e.provider===`telegram`){n(gf);return}if(e.provider===`discord`){n(_f);return}if(!r&&typeof i!=`boolean`)return;let o=vf(e.entry),s=yf(e.entry);e.entry.streaming=o,e.entry.nativeStreaming=s,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${o}).`)),typeof i==`boolean`?t.push(`Moved ${e.pathPrefix}.streaming (boolean) → ${e.pathPrefix}.nativeStreaming (${s}).`):typeof a!=`boolean`&&r&&t.push(`Set ${e.pathPrefix}.nativeStreaming → ${s}.`)},i=e=>{let t=B(n[e]);if(!t)return;r({provider:e,entry:t,pathPrefix:`channels.${e}`});let i=B(t.accounts);if(i)for(let[t,n]of Object.entries(i)){let i=B(n);i&&r({provider:e,entry:i,pathPrefix:`channels.${e}.accounts.${t}`})}};i(`telegram`),i(`discord`),i(`slack`)}},{id:`routing.allowFrom->channels.whatsapp.allowFrom`,describe:`Move routing.allowFrom to channels.whatsapp.allowFrom`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.allowFrom;if(r===void 0)return;let i=B(e.channels),a=i?B(i.whatsapp):null;if(!a){delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,t.push(`Removed routing.allowFrom (channels.whatsapp not configured).`);return}a.allowFrom===void 0?(a.allowFrom=r,t.push(`Moved routing.allowFrom → channels.whatsapp.allowFrom.`)):t.push(`Removed routing.allowFrom (channels.whatsapp.allowFrom already set).`),delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,i.whatsapp=a,e.channels=i}},{id:`routing.groupChat.requireMention->groups.*.requireMention`,describe:`Move routing.groupChat.requireMention to channels.whatsapp/telegram/imessage groups`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.groupChat&&typeof n.groupChat==`object`?n.groupChat:null;if(!r)return;let i=r.requireMention;if(i===void 0)return;let a=V(e,`channels`),o=(e,n)=>{if(n?.requireExisting&&!E(a[e]))return;let r=a[e]&&typeof a[e]==`object`?a[e]:{},{groups:o,entry:s}=Mf(r);s.requireMention===void 0?(s.requireMention=i,o[`*`]=s,r.groups=o,a[e]=r,t.push(`Moved routing.groupChat.requireMention → channels.${e}.groups."*".requireMention.`)):t.push(`Removed routing.groupChat.requireMention (channels.${e}.groups."*" already set).`)};o(`whatsapp`,{requireExisting:!0}),o(`telegram`),o(`imessage`),delete r.requireMention,Object.keys(r).length===0&&delete n.groupChat,Object.keys(n).length===0&&delete e.routing,e.channels=a}},{id:`gateway.token->gateway.auth.token`,describe:`Move gateway.token to gateway.auth.token`,apply:(e,t)=>{let n=e.gateway;if(!n||typeof n!=`object`)return;let r=n.token;if(r===void 0)return;let i=n,a=i.auth&&typeof i.auth==`object`?i.auth:{};a.token===void 0?(a.token=r,a.mode||=`token`,t.push(`Moved gateway.token → gateway.auth.token.`)):t.push(`Removed gateway.token (gateway.auth.token already set).`),delete i.token,Object.keys(a).length>0&&(i.auth=a),e.gateway=i}},{id:`telegram.requireMention->channels.telegram.groups.*.requireMention`,describe:`Move telegram.requireMention to channels.telegram.groups.*.requireMention`,apply:(e,t)=>{let n=V(e,`channels`),r=n.telegram;if(!r||typeof r!=`object`)return;let i=r.requireMention;if(i===void 0)return;let{groups:a,entry:o}=Mf(r);o.requireMention===void 0?(o.requireMention=i,a[`*`]=o,r.groups=a,t.push(`Moved telegram.requireMention → channels.telegram.groups."*".requireMention.`)):t.push(`Removed telegram.requireMention (channels.telegram.groups."*" already set).`),delete r.requireMention,n.telegram=r,e.channels=n}}];function If(e){let t=Df(e.source);if(!t){e.changes.push(e.invalidMessage);return}let n=V(V(V(e.raw,`tools`),`media`),`audio`);if((Array.isArray(n.models)?n.models:[]).length===0){n.enabled=!0,n.models=[t],e.changes.push(e.movedMessage);return}e.changes.push(e.alreadySetMessage)}const Lf=[{id:`agent.model-config-v2`,describe:`Migrate legacy agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks to agent.models + model lists`,apply:(e,t)=>{let n=B(e.agent),r=B(B(e.agents)?.defaults),i=n??r;if(!i)return;let a=n?`agent`:`agents.defaults`,o=typeof i.model==`string`?String(i.model):void 0,s=typeof i.imageModel==`string`?String(i.imageModel):void 0,c=Array.isArray(i.allowedModels)?i.allowedModels.map(String):[],l=Array.isArray(i.modelFallbacks)?i.modelFallbacks.map(String):[],u=Array.isArray(i.imageModelFallbacks)?i.imageModelFallbacks.map(String):[],d=i.modelAliases&&typeof i.modelAliases==`object`?i.modelAliases:{};if(!(o||s||c.length>0||l.length>0||u.length>0||Object.keys(d).length>0))return;let f=i.models&&typeof i.models==`object`?i.models:{},p=e=>{if(typeof e!=`string`)return;let t=e.trim();t&&(f[t]||(f[t]={}))};p(o),p(s);for(let e of c)p(e);for(let e of l)p(e);for(let e of u)p(e);for(let e of Object.values(d))typeof e==`string`&&p(e);for(let[e,t]of Object.entries(d)){if(typeof t!=`string`)continue;let n=t.trim();if(!n)continue;let r=f[n]&&typeof f[n]==`object`?f[n]:{};`alias`in r||(r.alias=e,f[n]=r)}let m=i.model&&typeof i.model==`object`?i.model:null;m?(!m.primary&&o&&(m.primary=o),l.length>0&&(!Array.isArray(m.fallbacks)||m.fallbacks.length===0)&&(m.fallbacks=l),i.model=m):(o||l.length>0)&&(i.model={primary:o,fallbacks:l.length?l:[]});let h=i.imageModel&&typeof i.imageModel==`object`?i.imageModel:null;h?(!h.primary&&s&&(h.primary=s),u.length>0&&(!Array.isArray(h.fallbacks)||h.fallbacks.length===0)&&(h.fallbacks=u),i.imageModel=h):(s||u.length>0)&&(i.imageModel={primary:s,fallbacks:u.length?u:[]}),i.models=f,o!==void 0&&t.push(`Migrated ${a}.model string → ${a}.model.primary.`),l.length>0&&t.push(`Migrated ${a}.modelFallbacks → ${a}.model.fallbacks.`),s!==void 0&&t.push(`Migrated ${a}.imageModel string → ${a}.imageModel.primary.`),u.length>0&&t.push(`Migrated ${a}.imageModelFallbacks → ${a}.imageModel.fallbacks.`),c.length>0&&t.push(`Migrated ${a}.allowedModels → ${a}.models.`),Object.keys(d).length>0&&t.push(`Migrated ${a}.modelAliases → ${a}.models.*.alias.`),delete i.allowedModels,delete i.modelAliases,delete i.modelFallbacks,delete i.imageModelFallbacks}},{id:`routing.agents-v2`,describe:`Move routing.agents/defaultAgentId to agents.list`,apply:(e,t)=>{let n=B(e.routing);if(!n)return;let r=B(n.agents),i=V(e,`agents`),a=Of(i);if(r){for(let[e,n]of Object.entries(r)){let r=String(e??``).trim(),i=B(n);if(!r||!i)continue;let o=Af(a,r),s={...i};if(`mentionPatterns`in s){let e=s.mentionPatterns,n=V(o,`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=e,t.push(`Moved routing.agents.${r}.mentionPatterns → agents.list (id "${r}").groupChat.mentionPatterns.`)):t.push(`Removed routing.agents.${r}.mentionPatterns (agents.list groupChat mentionPatterns already set).`),delete s.mentionPatterns}let c=B(s.groupChat);c&&(Ef(V(o,`groupChat`),c),delete s.groupChat);let l=B(s.sandbox);if(l){let e=B(l.tools);e&&(Ef(V(V(V(o,`tools`),`sandbox`),`tools`),e),delete l.tools,t.push(`Moved routing.agents.${r}.sandbox.tools → agents.list (id "${r}").tools.sandbox.tools.`)),s.sandbox=l}Ef(o,s)}delete n.agents,t.push(`Moved routing.agents → agents.list.`)}let o=typeof n.defaultAgentId==`string`?n.defaultAgentId.trim():``;if(o){if(a.some(e=>E(e)&&e.default===!0))t.push(`Removed routing.defaultAgentId (agents.list default already set).`);else{let e=Af(a,o);e.default=!0,t.push(`Moved routing.defaultAgentId → agents.list (id "${o}").default.`)}delete n.defaultAgentId}a.length>0&&(i.list=a),Object.keys(n).length===0&&delete e.routing}},{id:`routing.config-v2`,describe:`Move routing bindings/groupChat/queue/agentToAgent/transcribeAudio`,apply:(e,t)=>{let n=B(e.routing);if(!n)return;if(n.bindings!==void 0&&(e.bindings===void 0?(e.bindings=n.bindings,t.push(`Moved routing.bindings → bindings.`)):t.push(`Removed routing.bindings (bindings already set).`),delete n.bindings),n.agentToAgent!==void 0){let r=V(e,`tools`);r.agentToAgent===void 0?(r.agentToAgent=n.agentToAgent,t.push(`Moved routing.agentToAgent → tools.agentToAgent.`)):t.push(`Removed routing.agentToAgent (tools.agentToAgent already set).`),delete n.agentToAgent}if(n.queue!==void 0){let r=V(e,`messages`);r.queue===void 0?(r.queue=n.queue,t.push(`Moved routing.queue → messages.queue.`)):t.push(`Removed routing.queue (messages.queue already set).`),delete n.queue}let r=B(n.groupChat);if(r){let i=r.historyLimit;if(i!==void 0){let n=V(V(e,`messages`),`groupChat`);n.historyLimit===void 0?(n.historyLimit=i,t.push(`Moved routing.groupChat.historyLimit → messages.groupChat.historyLimit.`)):t.push(`Removed routing.groupChat.historyLimit (messages.groupChat.historyLimit already set).`),delete r.historyLimit}let a=r.mentionPatterns;if(a!==void 0){let n=V(V(e,`messages`),`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=a,t.push(`Moved routing.groupChat.mentionPatterns → messages.groupChat.mentionPatterns.`)):t.push(`Removed routing.groupChat.mentionPatterns (messages.groupChat.mentionPatterns already set).`),delete r.mentionPatterns}Object.keys(r).length===0?delete n.groupChat:n.groupChat=r}n.transcribeAudio!==void 0&&(If({raw:e,source:n.transcribeAudio,changes:t,movedMessage:`Moved routing.transcribeAudio → tools.media.audio.models.`,alreadySetMessage:`Removed routing.transcribeAudio (tools.media.audio.models already set).`,invalidMessage:`Removed routing.transcribeAudio (invalid or empty command).`}),delete n.transcribeAudio),Object.keys(n).length===0&&delete e.routing}},{id:`audio.transcription-v2`,describe:`Move audio.transcription to tools.media.audio.models`,apply:(e,t)=>{let n=B(e.audio);n?.transcription!==void 0&&(If({raw:e,source:n.transcription,changes:t,movedMessage:`Moved audio.transcription → tools.media.audio.models.`,alreadySetMessage:`Removed audio.transcription (tools.media.audio.models already set).`,invalidMessage:`Removed audio.transcription (invalid or empty command).`}),delete n.transcription,Object.keys(n).length===0?delete e.audio:e.audio=n)}},{id:`media.preserveFilenames-v2`,describe:`Move top-level media.preserveFilenames to channels.msteams.preserveFilenames`,apply:(e,t)=>{let n=B(e.media);if(n?.preserveFilenames===void 0)return;let r=V(V(e,`channels`),`msteams`);r.preserveFilenames===void 0?(r.preserveFilenames=n.preserveFilenames,t.push(`Moved media.preserveFilenames → channels.msteams.preserveFilenames.`)):t.push(`Removed media.preserveFilenames (channels.msteams.preserveFilenames already set).`),delete n.preserveFilenames,Object.keys(n).length===0?delete e.media:e.media=n}}],Rf=[`e`,`vm`].join(``),zf=[`camera.snap`,`camera.clip`,`screen.record`,`calendar.add`,`contacts.add`,`reminders.add`],Bf=[{id:`gateway.nodes.generated-deny-defaults`,describe:`Remove the redundant node denylist generated by older onboarding`,apply:(e,t)=>{let n=B(e.gateway),r=B(n?.nodes),i=r?.denyCommands;!n||!r||r.allowCommands!==void 0||r.browser!==void 0||!Array.isArray(i)||i.length!==zf.length||!i.every((e,t)=>e===zf[t])||(delete r.denyCommands,Object.keys(r).length===0&&delete n.nodes,t.push(`Removed the redundant gateway.nodes.denyCommands defaults generated by older onboarding.`))}},{id:`models.providers.request.allowPrivateNetwork`,describe:`Mark existing private model provider base URLs as explicitly allowed`,apply:(e,t)=>{let n=B(B(e.models)?.providers);if(n)for(let[e,r]of Object.entries(n)){let n=B(r),i=typeof n?.baseUrl==`string`?n.baseUrl:``;if(!n||!il(i))continue;let a=B(n.request)??{};a.allowPrivateNetwork===void 0&&(a.allowPrivateNetwork=!0,n.request=a,t.push(`Added models.providers.${e}.request.allowPrivateNetwork=true for existing private model endpoint.`))}}},{id:`memorySearch->agents.defaults.memorySearch`,describe:`Move top-level memorySearch to agents.defaults.memorySearch`,apply:(e,t)=>{let n=B(e.memorySearch);if(!n)return;let r=V(e,`agents`),i=V(r,`defaults`),a=B(i.memorySearch);if(!a)i.memorySearch=n,t.push(`Moved memorySearch → agents.defaults.memorySearch.`);else{let e=structuredClone(a);Ef(e,n),i.memorySearch=e,t.push(`Merged memorySearch → agents.defaults.memorySearch (filled missing fields from legacy; kept explicit agents.defaults values).`)}r.defaults=i,e.agents=r,delete e.memorySearch}},{id:`auth.anthropic-claude-cli-mode-oauth`,describe:`Switch anthropic:claude-cli auth profile mode to oauth`,apply:(e,t)=>{let n=B(B(e.auth)?.profiles);if(!n)return;let r=B(n[`anthropic:claude-cli`]);r&&r.mode===`token`&&(r.mode=`oauth`,t.push(`Updated auth.profiles["anthropic:claude-cli"].mode → "oauth".`))}},{id:`tools.bash->tools.exec`,describe:`Move tools.bash to tools.exec`,apply:(e,t)=>{let n=V(e,`tools`),r=B(n.bash);r&&(n.exec===void 0?(n.exec=r,t.push(`Moved tools.bash → tools.exec.`)):t.push(`Removed tools.bash (tools.exec already set).`),delete n.bash)}},{id:`wallet.solana-only-runtime`,describe:`Remove legacy wallet chain entries after Solana-only runtime migration`,apply:(e,t)=>{let n=B(e.wallet);if(!n)return;let r=B(n.keystore);if(r&&Array.isArray(r.chainSupport)){let e=r.chainSupport.some(e=>e!==`solana`),n=r.chainSupport.length===1&&r.chainSupport[0]===`solana`;(e||!n)&&(r.chainSupport=[`solana`],t.push(`Normalized wallet.keystore.chainSupport → ["solana"] (removed legacy non-Solana entries).`))}let i=B(n.runtime);if(i&&Array.isArray(i.chains)){let e=i.chains.some(e=>e!==`solana`),n=i.chains.length===1&&i.chains[0]===`solana`;(e||!n)&&(i.chains=[`solana`],t.push(`Normalized wallet.runtime.chains → ["solana"] (removed legacy non-Solana entries).`))}let a=B(i?.policy);a&&Rf in a&&(delete a[Rf],t.push(`Removed wallet.runtime.policy legacy non-Solana policy block.`))}},{id:`messages.tts.enabled->auto`,describe:`Move messages.tts.enabled to messages.tts.auto`,apply:(e,t)=>{let n=B(B(e.messages)?.tts);if(n){if(n.auto!==void 0){`enabled`in n&&(delete n.enabled,t.push(`Removed messages.tts.enabled (messages.tts.auto already set).`));return}typeof n.enabled==`boolean`&&(n.auto=n.enabled?`always`:`off`,delete n.enabled,t.push(`Moved messages.tts.enabled → messages.tts.auto (${String(n.auto)}).`))}}},{id:`agent.defaults-v2`,describe:`Move agent config to agents.defaults and tools`,apply:(e,t)=>{let n=B(e.agent);if(!n)return;let r=V(e,`agents`),i=B(r.defaults)??{},a=V(e,`tools`),o=B(n.tools);o&&(a.allow===void 0&&o.allow!==void 0&&(a.allow=o.allow,t.push(`Moved agent.tools.allow → tools.allow.`)),a.deny===void 0&&o.deny!==void 0&&(a.deny=o.deny,t.push(`Moved agent.tools.deny → tools.deny.`)));let s=B(n.elevated);s&&(a.elevated===void 0?(a.elevated=s,t.push(`Moved agent.elevated → tools.elevated.`)):t.push(`Removed agent.elevated (tools.elevated already set).`));let c=B(n.bash);c&&(a.exec===void 0?(a.exec=c,t.push(`Moved agent.bash → tools.exec.`)):t.push(`Removed agent.bash (tools.exec already set).`));let l=B(n.sandbox);if(l){let e=B(l.tools);e&&(Ef(V(V(a,`sandbox`),`tools`),e),delete l.tools,t.push(`Moved agent.sandbox.tools → tools.sandbox.tools.`))}let u=B(n.subagents);if(u){let e=B(u.tools);e&&(Ef(V(V(a,`subagents`),`tools`),e),delete u.tools,t.push(`Moved agent.subagents.tools → tools.subagents.tools.`))}let d=structuredClone(n);delete d.tools,delete d.elevated,delete d.bash,E(d.sandbox)&&delete d.sandbox.tools,E(d.subagents)&&delete d.subagents.tools,Ef(i,d),r.defaults=i,e.agents=r,delete e.agent,t.push(`Moved agent → agents.defaults.`)}},{id:`identity->agents.list`,describe:`Move identity to agents.list[].identity`,apply:(e,t)=>{let n=B(e.identity);if(!n)return;let r=V(e,`agents`),i=Of(r),a=kf(e),o=Af(i,a);o.identity===void 0?(o.identity=n,t.push(`Moved identity → agents.list (id "${a}").identity.`)):t.push(`Removed identity (agents.list identity already set).`),r.list=i,e.agents=r,delete e.identity}}];[...Ff,...Lf,...Bf];function Vf(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Hf(e){return Vf(e)&&Object.prototype.hasOwnProperty.call(e,`ttlHours`)}function Uf(e){return Vf(e)?Object.values(e).some(e=>Hf(Vf(e)?e.threadBindings:void 0)):!1}const Wf=[{path:[`whatsapp`],message:`whatsapp config moved to channels.whatsapp (auto-migrated on load).`},{path:[`telegram`],message:`telegram config moved to channels.telegram (auto-migrated on load).`},{path:[`discord`],message:`discord config moved to channels.discord (auto-migrated on load).`},{path:[`slack`],message:`slack config moved to channels.slack (auto-migrated on load).`},{path:[`signal`],message:`signal config moved to channels.signal (auto-migrated on load).`},{path:[`imessage`],message:`imessage config moved to channels.imessage (auto-migrated on load).`},{path:[`msteams`],message:`msteams config moved to channels.msteams (auto-migrated on load).`},{path:[`session`,`threadBindings`],message:`session.threadBindings.ttlHours was renamed to session.threadBindings.idleHours (auto-migrated on load).`,match:e=>Hf(e)},{path:[`channels`,`discord`,`threadBindings`],message:`channels.discord.threadBindings.ttlHours was renamed to channels.discord.threadBindings.idleHours (auto-migrated on load).`,match:e=>Hf(e)},{path:[`channels`,`discord`,`accounts`],message:`channels.discord.accounts.<id>.threadBindings.ttlHours was renamed to channels.discord.accounts.<id>.threadBindings.idleHours (auto-migrated on load).`,match:e=>Uf(e)},{path:[`routing`,`allowFrom`],message:`routing.allowFrom was removed; use channels.whatsapp.allowFrom instead (auto-migrated on load).`},{path:[`routing`,`bindings`],message:`routing.bindings was moved; use top-level bindings instead (auto-migrated on load).`},{path:[`routing`,`agents`],message:`routing.agents was moved; use agents.list instead (auto-migrated on load).`},{path:[`routing`,`defaultAgentId`],message:`routing.defaultAgentId was moved; use agents.list[].default instead (auto-migrated on load).`},{path:[`routing`,`agentToAgent`],message:`routing.agentToAgent was moved; use tools.agentToAgent instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`requireMention`],message:`routing.groupChat.requireMention was removed; use channels.whatsapp/telegram/imessage groups defaults (e.g. channels.whatsapp.groups."*".requireMention) instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`mentionPatterns`],message:`routing.groupChat.mentionPatterns was moved; use agents.list[].groupChat.mentionPatterns or messages.groupChat.mentionPatterns instead (auto-migrated on load).`},{path:[`routing`,`queue`],message:`routing.queue was moved; use messages.queue instead (auto-migrated on load).`},{path:[`routing`,`transcribeAudio`],message:`routing.transcribeAudio was moved; use tools.media.audio.models instead (auto-migrated on load).`},{path:[`telegram`,`requireMention`],message:`telegram.requireMention was removed; use channels.telegram.groups."*".requireMention instead (auto-migrated on load).`},{path:[`identity`],message:`identity was moved; use agents.list[].identity instead (auto-migrated on load).`},{path:[`agent`],message:`agent.* was moved; use agents.defaults (and tools.* for tool/elevated/exec settings) instead (auto-migrated on load).`},{path:[`memorySearch`],message:`top-level memorySearch was moved; use agents.defaults.memorySearch instead (auto-migrated on load).`},{path:[`tools`,`bash`],message:`tools.bash was removed; use tools.exec instead (auto-migrated on load).`},{path:[`wallet`,`runtime`,`policy`,[`e`,`vm`].join(``)],message:`wallet.runtime.policy has a legacy non-Solana policy block; Fased wallet runtime is Solana-only (auto-migrated on load).`},{path:[`wallet`,`keystore`,`chainSupport`],message:`wallet.keystore.chainSupport contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`wallet`,`runtime`,`chains`],message:`wallet.runtime.chains contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`agent`,`model`],message:`agent.model string was replaced by agents.defaults.model.primary/fallbacks and agents.defaults.models (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`imageModel`],message:`agent.imageModel string was replaced by agents.defaults.imageModel.primary/fallbacks (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`allowedModels`],message:`agent.allowedModels was replaced by agents.defaults.models (auto-migrated on load).`},{path:[`agent`,`modelAliases`],message:`agent.modelAliases was replaced by agents.defaults.models.*.alias (auto-migrated on load).`},{path:[`agent`,`modelFallbacks`],message:`agent.modelFallbacks was replaced by agents.defaults.model.fallbacks (auto-migrated on load).`},{path:[`agent`,`imageModelFallbacks`],message:`agent.imageModelFallbacks was replaced by agents.defaults.imageModel.fallbacks (auto-migrated on load).`},{path:[`messages`,`tts`,`enabled`],message:`messages.tts.enabled was replaced by messages.tts.auto (auto-migrated on load).`},{path:[`gateway`,`token`],message:`gateway.token is ignored; use gateway.auth.token instead (auto-migrated on load).`}];function Gf(e){if(!e||typeof e!=`object`)return[];let t=e,n=[];for(let e of Wf){let r=t;for(let t of e.path){if(!r||typeof r!=`object`){r=void 0;break}r=r[t]}r!==void 0&&(!e.match||e.match(r,t))&&n.push({path:e.path.join(`.`),message:e.message})}return n}function Kf(e){return T(e)?typeof e.id==`string`&&e.id.length>0:!1}function qf(e,t,n){if(!e.every(Kf))return;let r=[...e],i=new Map;for(let[e,t]of r.entries()){if(!Kf(t))return;i.set(t.id,e)}for(let e of t){if(!Kf(e)){r.push(structuredClone(e));continue}let t=i.get(e.id);if(t===void 0){r.push(structuredClone(e)),i.set(e.id,r.length-1);continue}r[t]=Jf(r[t],e,n)}return r}function Jf(e,t,n={}){if(!T(t))return t;let r=T(e)?{...e}:{};for(let[e,i]of Object.entries(t))if(!Gi(e)){if(i===null){delete r[e];continue}if(n.mergeObjectArraysById&&Array.isArray(r[e])&&Array.isArray(i)){let t=qf(r[e],i,n);if(t){r[e]=t;continue}}if(T(i)){let t=r[e];r[e]=Jf(T(t)?t:{},i,n);continue}r[e]=i}return r}const Yf=new Set,Xf=e=>!e||e.length===0?Yf:new Set(e);function Zf(e,t){let n=new Set;for(let t of e)t.startsWith(`--`)&&n.add(t);for(let e of t)e.startsWith(`--`)&&n.add(e);return Array.from(n)}function Qf(e){let t=new Map;for(let n of e)if(!(!n.startsWith(`--`)||n.length<=2))for(let e=3;e<=n.length;e+=1){let r=n.slice(0,e),i=t.get(r);if(i===void 0){t.set(r,n);continue}i!==n&&t.set(r,null)}return t}function $f(e){let t=Xf(e.allowedValueFlags),n=Xf(e.deniedFlags),r=Zf(t,n);return{minPositional:e.minPositional,maxPositional:e.maxPositional,allowedValueFlags:t,deniedFlags:n,knownLongFlags:r,knownLongFlagsSet:new Set(r),longFlagPrefixMap:Qf(r)}}function ep(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,$f(t)]))}ep({jq:{maxPositional:1,allowedValueFlags:[`--arg`,`--argjson`,`--argstr`],deniedFlags:[`--argfile`,`--rawfile`,`--slurpfile`,`--from-file`,`--library-path`,`-L`,`-f`]},grep:{maxPositional:0,allowedValueFlags:[`--regexp`,`--max-count`,`--after-context`,`--before-context`,`--context`,`--devices`,`--binary-files`,`--exclude`,`--include`,`--label`,`-e`,`-m`,`-A`,`-B`,`-C`,`-D`],deniedFlags:[`--file`,`--exclude-from`,`--dereference-recursive`,`--directories`,`--recursive`,`-f`,`-d`,`-r`,`-R`]},cut:{maxPositional:0,allowedValueFlags:[`--bytes`,`--characters`,`--fields`,`--delimiter`,`--output-delimiter`,`-b`,`-c`,`-f`,`-d`]},sort:{maxPositional:0,allowedValueFlags:[`--key`,`--field-separator`,`--buffer-size`,`--parallel`,`--batch-size`,`-k`,`-t`,`-S`],deniedFlags:[`--compress-program`,`--files0-from`,`--output`,`--random-source`,`--temporary-directory`,`-T`,`-o`]},uniq:{maxPositional:0,allowedValueFlags:[`--skip-fields`,`--skip-chars`,`--check-chars`,`--group`,`-f`,`-s`,`-w`]},head:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`-n`,`-c`]},tail:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`--sleep-interval`,`--max-unchanged-stats`,`--pid`,`-n`,`-c`]},tr:{minPositional:1,maxPositional:2},wc:{maxPositional:0,deniedFlags:[`--files0-from`]}});function tp(e){let t=e.trim().toLowerCase();return t.length>0?t:null}function np(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.trunc(e);return t>=0?t:void 0}function rp(e){if(!Array.isArray(e)||e.length===0)return;let t=Array.from(new Set(e.map(e=>e.trim()).filter(e=>e.length>0))).toSorted((e,t)=>e.localeCompare(t));return t.length>0?t:void 0}function ip(e){let t=np(e.minPositional),n=np(e.maxPositional);return{minPositional:t,maxPositional:t!==void 0&&n!==void 0&&n<t?t:n,allowedValueFlags:rp(e.allowedValueFlags),deniedFlags:rp(e.deniedFlags)}}function ap(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e)){let e=tp(n);e&&(t[e]=ip(r))}return t}const op=[`ash`,`bash`,`dash`,`fish`,`ksh`,`sh`,`zsh`],sp=[`cmd`],cp=[`powershell`,`pwsh`],lp=[`chrt`,`doas`,`env`,`ionice`,`nice`,`nohup`,`setsid`,`stdbuf`,`sudo`,`taskset`,`timeout`];function up(e){let t=new Set;for(let n of e)t.add(n),t.add(`${n}.exe`);return Array.from(t)}new Set(up(sp)),new Set(up(cp)),new Set(up(lp)),new Set([...op,...sp,...cp]);function dp(e){if(!Array.isArray(e))return[];let t=e.map(e=>e.trim()).filter(e=>e.length>0);return Array.from(new Set(t))}function fp(e){let t=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=ap(t.safeBinProfiles);t.safeBinProfiles=Object.keys(n).length>0?n:void 0;let r=dp(t.safeBinTrustedDirs);t.safeBinTrustedDirs=r.length>0?r:void 0};t(e.tools?.exec);let n=Array.isArray(e.agents?.list)?e.agents.list:[];for(let e of n)t(e?.tools?.exec)}const pp=/^~(?=$|[\\/])/,mp=/(dir|path|paths|file|root|workspace)$/i,hp=new Set([`paths`,`pathPrepend`]);function gp(e,t){return!pp.test(t.trim())||!e?t:mp.test(e)||hp.has(e)?D(t):t}function _p(e,t){if(typeof t==`string`)return gp(e,t);if(Array.isArray(t)){let n=!!(e&&hp.has(e));return t.map(t=>typeof t==`string`?n?gp(e,t):t:Array.isArray(t)||T(t)?_p(void 0,t):t)}if(!T(t))return t;for(let[e,n]of Object.entries(t)){let r=_p(e,n);r!==n&&(t[e]=r)}return t}function vp(e){return!e||typeof e!=`object`||_p(void 0,e),e}function yp(e){return typeof e==`string`&&e.trim()||null}function bp(e,t){return e?.some(e=>yp(e)===t)===!0}function xp(e){if(e.plugins?.enabled===!1)return null;let t=yp(e.plugins?.slots?.memory)??`memory-core`;return t.toLowerCase()===`none`||e.plugins?.entries?.[t]?.enabled===!1||bp(e.plugins?.deny,t)?null:t}function Sp(e){let t=e.plugins?.allow,n=Array.isArray(t),r=new Set((t??[]).map(yp).filter(e=>e!==null)),i=new Set;for(let[t,n]of Object.entries(e.plugins?.entries??{})){if(n?.enabled===!1)continue;let e=yp(t);e&&i.add(e)}for(let t of Object.keys(e.plugins?.installs??{})){let e=yp(t);e&&i.add(e)}let a=xp(e);a&&(n||i.size>0)&&i.add(a);let o=new Set;for(let e of i)r.has(e)||(r.add(e),o.add(e));if(o.size===0)return{config:e,repairedPluginIds:[]};let s=[...o].toSorted((e,t)=>e.localeCompare(t)),c=[...r].toSorted((e,t)=>e.localeCompare(t));return{config:{...e,plugins:{...e.plugins,allow:c}},repairedPluginIds:s}}let Cp={};function wp(e,t){if(!T(e)||!T(t))return t;let n={...e};for(let[r,i]of Object.entries(t))i===void 0||Gi(r)||(n[r]=wp(e[r],i));return n}function Tp(e){return!Cp||Object.keys(Cp).length===0?e:wp(e,Cp)}const Ep=new y({allErrors:!0,strict:!1,removeAdditional:!1}),Dp=new Map;function Op(e){return!e||e.length===0?[`invalid config`]:e.map(e=>`${e.instancePath?.replace(/^\//,``).replace(/\//g,`.`)||`<root>`}: ${e.message??`invalid`}`)}function kp(e){let t=Dp.get(e.cacheKey);return(!t||t.schema!==e.schema)&&(t={validate:Ep.compile(e.schema),schema:e.schema},Dp.set(e.cacheKey,t)),t.validate(e.value)?{ok:!0}:{ok:!1,errors:Op(t.validate.errors)}}const Ap=/^data:/i,jp=/^https?:\/\//i,Mp=/^[a-z][a-z0-9+.-]*:/i,Np=/^[a-zA-Z]:[\\/]/;function Pp(e){return Ap.test(e)}function Fp(e){return jp.test(e)}function Ip(e){return Mp.test(e)}function Lp(e){return Np.test(e)}function Rp(e,t){let n=i.relative(e,t);return n===``?!0:!n.startsWith(`..`)&&!i.isAbsolute(n)}const zp={b:1,kb:1024,k:1024,mb:1024**2,m:1024**2,gb:1024**3,g:1024**3,tb:1024**4,t:1024**4};function Bp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid byte size (empty)`);let r=/^(\d+(?:\.\d+)?)([a-z]+)?$/.exec(n);if(!r)throw Error(`invalid byte size: ${e}`);let i=Number(r[1]);if(!Number.isFinite(i)||i<0)throw Error(`invalid byte size: ${e}`);let a=zp[(r[2]??t?.defaultUnit??`b`).toLowerCase()];if(!a)throw Error(`invalid byte size unit: ${e}`);let o=Math.round(i*a);if(!Number.isFinite(o))throw Error(`invalid byte size: ${e}`);return o}const Vp={ms:1,s:1e3,m:6e4,h:36e5,d:864e5};function Hp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid duration (empty)`);let r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(n);if(r){let n=Number(r[1]);if(!Number.isFinite(n)||n<0)throw Error(`invalid duration: ${e}`);let i=r[2]??t?.defaultUnit??`ms`,a=Math.round(n*Vp[i]);if(!Number.isFinite(a))throw Error(`invalid duration: ${e}`);return a}let i=0,a=0;for(let t of n.matchAll(/(\d+(?:\.\d+)?)(ms|s|m|h|d)/g)){let[n,r,o]=t,s=t.index??-1;if(!n||!r||!o||s<0||s!==a)throw Error(`invalid duration: ${e}`);let c=Number(r);if(!Number.isFinite(c)||c<0)throw Error(`invalid duration: ${e}`);let l=Vp[o];if(!l)throw Error(`invalid duration: ${e}`);i+=c*l,a+=n.length}if(a!==n.length||a===0)throw Error(`invalid duration: ${e}`);let o=Math.round(i);if(!Number.isFinite(o))throw Error(`invalid duration: ${e}`);return o}function Up(e){return e?.trim().toLowerCase()||void 0}function Wp(e){let t=Up(e.network);return t?t===`host`?`host`:t.startsWith(`container:`)&&e.allowContainerNamespaceJoin!==!0?`container_namespace_join`:null:null}const Gp=b.union([b.string(),b.object({primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional()}).strict()]),Kp=b.object({cheapCheck:b.string().optional(),strong:b.string().optional(),escalation:b.string().optional(),coding:b.string().optional(),summarizer:b.string().optional()}).strict(),qp=b.object({profileId:b.string().optional(),primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional(),taskModels:Kp.optional()}).strict(),Jp=[`openai-completions`,`openai-responses`,`openai-codex-responses`,`anthropic-messages`,`google-generative-ai`,`github-copilot`,`ollama`],Yp=b.union([b.literal(`allow`),b.literal(`deny`)]),Xp=b.union([b.literal(`direct`),b.literal(`group`),b.literal(`channel`),b.literal(`dm`)]).optional();function Zp(){return b.object({default:Yp.optional(),rules:b.array(b.object({action:Yp,match:b.object({channel:b.string().optional(),chatType:Xp,keyPrefix:b.string().optional(),rawKeyPrefix:b.string().optional()}).strict().optional()}).strict()).optional()}).strict().optional()}const H=b.registry(),Qp=/^[A-Z][A-Z0-9_]{0,127}$/,$p=/^[a-z][a-z0-9_-]{0,63}$/,em=/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/,tm=/^[A-Za-z]:[\\/]/,nm=/^\\\\[^\\]+\\[^\\]+/;function rm(e){return i.isAbsolute(e)||tm.test(e)||nm.test(e)}const im=b.object({source:b.literal(`env`),provider:b.string().regex($p,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().regex(Qp,`Env secret reference id must match /^[A-Z][A-Z0-9_]{0,127}$/ (example: "OPENAI_API_KEY").`)}).strict(),am=b.object({source:b.literal(`file`),provider:b.string().regex($p,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().refine(lu,`File secret reference id must be an absolute JSON pointer (example: "/providers/openai/apiKey"), or "value" for singleValue mode.`)}).strict(),om=b.object({source:b.literal(`exec`),provider:b.string().regex($p,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().regex(em,`Exec secret reference id must match /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/ (example: "vault/openai/api-key").`)}).strict(),sm=b.discriminatedUnion(`source`,[im,am,om]),U=b.union([b.string(),sm]),cm=b.object({source:b.literal(`env`),allowlist:b.array(b.string().regex(Qp)).max(256).optional()}).strict(),lm=b.object({source:b.literal(`file`),path:b.string().min(1),mode:b.union([b.literal(`singleValue`),b.literal(`json`)]).optional(),timeoutMs:b.number().int().positive().max(12e4).optional(),maxBytes:b.number().int().positive().max(20*1024*1024).optional()}).strict(),um=b.object({source:b.literal(`exec`),command:b.string().min(1).refine(e=>Tf(e),`secrets.providers.*.command is unsafe.`).refine(e=>rm(e),`secrets.providers.*.command must be an absolute path.`),args:b.array(b.string().max(1024)).max(128).optional(),timeoutMs:b.number().int().positive().max(12e4).optional(),noOutputTimeoutMs:b.number().int().positive().max(12e4).optional(),maxOutputBytes:b.number().int().positive().max(20*1024*1024).optional(),jsonOnly:b.boolean().optional(),env:b.record(b.string(),b.string()).optional(),passEnv:b.array(b.string().regex(Qp)).max(128).optional(),trustedDirs:b.array(b.string().min(1).refine(e=>rm(e),`trustedDirs entries must be absolute paths.`)).max(64).optional(),allowInsecurePath:b.boolean().optional(),allowSymlinkCommand:b.boolean().optional()}).strict(),dm=b.discriminatedUnion(`source`,[cm,lm,um]),fm=b.object({providers:b.object({}).catchall(dm).optional(),defaults:b.object({env:b.string().regex($p).optional(),file:b.string().regex($p).optional(),exec:b.string().regex($p).optional()}).strict().optional(),resolution:b.object({maxProviderConcurrency:b.number().int().positive().max(16).optional(),maxRefsPerProvider:b.number().int().positive().max(4096).optional(),maxBatchBytes:b.number().int().positive().max(5*1024*1024).optional()}).strict().optional()}).strict().optional(),pm=b.enum(Jp),mm=b.object({supportsStore:b.boolean().optional(),supportsDeveloperRole:b.boolean().optional(),supportsReasoningEffort:b.boolean().optional(),supportsUsageInStreaming:b.boolean().optional(),supportsStrictMode:b.boolean().optional(),maxTokensField:b.union([b.literal(`max_completion_tokens`),b.literal(`max_tokens`)]).optional(),thinkingFormat:b.union([b.literal(`openai`),b.literal(`zai`),b.literal(`qwen`)]).optional(),requiresToolResultName:b.boolean().optional(),requiresAssistantAfterToolResult:b.boolean().optional(),requiresThinkingAsText:b.boolean().optional(),requiresMistralToolIds:b.boolean().optional()}).strict().optional(),hm=b.object({tools:b.boolean().optional(),json:b.boolean().optional(),audio:b.boolean().optional(),video:b.boolean().optional(),speech:b.boolean().optional(),fixedReasoning:b.boolean().optional(),thinkingLevels:b.array(b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)])).optional(),defaultThinkingLevel:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),thinkingMode:b.union([b.literal(`openai-reasoning-effort`),b.literal(`anthropic-thinking-budget`),b.literal(`anthropic-adaptive`),b.literal(`google-thinking-budget`),b.literal(`xai-reasoning-effort`),b.literal(`xai-multi-agent-effort`),b.literal(`mistral-reasoning-effort`),b.literal(`volcengine-reasoning-effort`),b.literal(`byteplus-thinking-type`),b.literal(`zai-binary`),b.literal(`qwen-thinking`),b.literal(`moonshot-thinking`),b.literal(`generic-reasoning`)]).optional(),reasoningBudgetSupported:b.boolean().optional()}).strict().optional(),gm=b.object({id:b.string().min(1),name:b.string().min(1),api:pm.optional(),reasoning:b.boolean().optional(),input:b.array(b.union([b.literal(`text`),b.literal(`image`)])).optional(),cost:b.object({input:b.number().optional(),output:b.number().optional(),cacheRead:b.number().optional(),cacheWrite:b.number().optional()}).strict().optional(),contextWindow:b.number().positive().optional(),maxTokens:b.number().positive().optional(),headers:b.record(b.string(),b.string()).optional(),compat:mm,capabilities:hm}).strict(),_m=b.object({baseUrl:b.string().min(1),apiKey:U.optional().register(H),auth:b.union([b.literal(`api-key`),b.literal(`oauth`),b.literal(`token`)]).optional(),api:pm.optional(),headers:b.record(b.string(),b.string()).optional(),authHeader:b.boolean().optional(),request:b.object({allowPrivateNetwork:b.boolean().optional()}).strict().optional(),models:b.array(gm)}).strict(),vm=b.object({mode:b.union([b.literal(`merge`),b.literal(`replace`)]).optional(),providers:b.record(b.string(),_m).optional()}).strict().optional(),ym=b.object({mentionPatterns:b.array(b.string()).optional(),historyLimit:b.number().int().positive().optional()}).strict().optional(),W=b.object({historyLimit:b.number().int().min(0).optional()}).strict(),bm=b.object({name:b.string().optional(),theme:b.string().optional(),emoji:b.string().optional(),avatar:b.string().optional()}).strict().optional(),G=b.union([b.literal(`steer`),b.literal(`followup`),b.literal(`collect`),b.literal(`steer-backlog`),b.literal(`steer+backlog`),b.literal(`queue`),b.literal(`interrupt`)]),xm=b.union([b.literal(`old`),b.literal(`new`),b.literal(`summarize`)]),Sm=b.union([b.literal(`off`),b.literal(`first`),b.literal(`all`)]),Cm=b.union([b.literal(`never`),b.literal(`instant`),b.literal(`thinking`),b.literal(`message`)]),K=b.enum([`open`,`disabled`,`allowlist`]),q=b.enum([`pairing`,`allowlist`,`open`,`disabled`]),J=b.object({minChars:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),idleMs:b.number().int().nonnegative().optional()}).strict();b.number().int().min(0).optional(),b.number().int().min(0).optional(),b.record(b.string(),W.optional()).optional(),b.number().int().positive().optional(),b.enum([`length`,`newline`]).optional(),b.boolean().optional(),J.optional(),b.string().optional(),b.number().positive().optional();const wm=b.object({minChars:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),breakPreference:b.union([b.literal(`paragraph`),b.literal(`newline`),b.literal(`sentence`)]).optional()}).strict(),Tm=b.enum([`off`,`bullets`,`code`]),Em=b.object({tables:Tm.optional()}).strict().optional(),Dm=b.enum([`elevenlabs`,`openai`,`edge`]),Om=b.enum([`final`,`all`]),km=b.enum([`off`,`always`,`inbound`,`tagged`]),Am=b.object({auto:km.optional(),enabled:b.boolean().optional(),mode:Om.optional(),provider:Dm.optional(),summaryModel:b.string().optional(),modelOverrides:b.object({enabled:b.boolean().optional(),allowText:b.boolean().optional(),allowProvider:b.boolean().optional(),allowVoice:b.boolean().optional(),allowModelId:b.boolean().optional(),allowVoiceSettings:b.boolean().optional(),allowNormalization:b.boolean().optional(),allowSeed:b.boolean().optional()}).strict().optional(),elevenlabs:b.object({apiKey:b.string().optional().register(H),baseUrl:b.string().optional(),voiceId:b.string().optional(),modelId:b.string().optional(),seed:b.number().int().min(0).max(4294967295).optional(),applyTextNormalization:b.enum([`auto`,`on`,`off`]).optional(),languageCode:b.string().optional(),voiceSettings:b.object({stability:b.number().min(0).max(1).optional(),similarityBoost:b.number().min(0).max(1).optional(),style:b.number().min(0).max(1).optional(),useSpeakerBoost:b.boolean().optional(),speed:b.number().min(.5).max(2).optional()}).strict().optional()}).strict().optional(),openai:b.object({apiKey:b.string().optional().register(H),model:b.string().optional(),voice:b.string().optional()}).strict().optional(),edge:b.object({enabled:b.boolean().optional(),voice:b.string().optional(),lang:b.string().optional(),outputFormat:b.string().optional(),pitch:b.string().optional(),rate:b.string().optional(),volume:b.string().optional(),saveSubtitles:b.boolean().optional(),proxy:b.string().optional(),timeoutMs:b.number().int().min(1e3).max(12e4).optional()}).strict().optional(),prefsPath:b.string().optional(),maxTextLength:b.number().int().min(1).optional(),timeoutMs:b.number().int().min(1e3).max(12e4).optional()}).strict().optional(),jm=b.object({mode:b.union([b.literal(`off`),b.literal(`natural`),b.literal(`custom`)]).optional(),minMs:b.number().int().nonnegative().optional(),maxMs:b.number().int().nonnegative().optional()}).strict(),Mm=b.object({noOutputTimeoutMs:b.number().int().min(1e3).optional(),noOutputTimeoutRatio:b.number().min(.05).max(.95).optional(),minMs:b.number().int().min(1e3).optional(),maxMs:b.number().int().min(1e3).optional()}).strict().optional(),Nm=b.object({command:b.string(),args:b.array(b.string()).optional(),output:b.union([b.literal(`json`),b.literal(`text`),b.literal(`jsonl`)]).optional(),resumeOutput:b.union([b.literal(`json`),b.literal(`text`),b.literal(`jsonl`)]).optional(),input:b.union([b.literal(`arg`),b.literal(`stdin`)]).optional(),maxPromptArgChars:b.number().int().positive().optional(),env:b.record(b.string(),b.string()).optional(),clearEnv:b.array(b.string()).optional(),modelArg:b.string().optional(),modelAliases:b.record(b.string(),b.string()).optional(),sessionArg:b.string().optional(),sessionArgs:b.array(b.string()).optional(),resumeArgs:b.array(b.string()).optional(),sessionMode:b.union([b.literal(`always`),b.literal(`existing`),b.literal(`none`)]).optional(),sessionIdFields:b.array(b.string()).optional(),systemPromptArg:b.string().optional(),systemPromptMode:b.union([b.literal(`append`),b.literal(`replace`)]).optional(),systemPromptWhen:b.union([b.literal(`first`),b.literal(`always`),b.literal(`never`)]).optional(),imageArg:b.string().optional(),imageMode:b.union([b.literal(`repeat`),b.literal(`list`)]).optional(),serialize:b.boolean().optional(),reliability:b.object({watchdog:b.object({fresh:Mm,resume:Mm}).strict().optional()}).strict().optional()}).strict(),Pm=e=>(e??[]).map(e=>String(e).trim()).filter(Boolean),Y=e=>{e.policy===`open`&&(Pm(e.allowFrom).includes(`*`)||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path,message:e.message}))},X=e=>{e.policy===`allowlist`&&(Pm(e.allowFrom).length>0||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path,message:e.message}))},Fm=b.enum([`thread`,`top-level`]),Im=b.object({attempts:b.number().int().min(1).optional(),minDelayMs:b.number().int().min(0).optional(),maxDelayMs:b.number().int().min(0).optional(),jitter:b.number().min(0).max(1).optional()}).strict().optional(),Lm=b.object({whatsapp:G.optional(),telegram:G.optional(),discord:G.optional(),irc:G.optional(),slack:G.optional(),mattermost:G.optional(),signal:G.optional(),imessage:G.optional(),msteams:G.optional(),webchat:G.optional()}).strict().optional(),Rm=b.record(b.string(),b.number().int().nonnegative()).optional(),zm=b.object({mode:G.optional(),byChannel:Lm,debounceMs:b.number().int().nonnegative().optional(),debounceMsByChannel:Rm,cap:b.number().int().positive().optional(),drop:xm.optional()}).strict().optional(),Bm=b.object({debounceMs:b.number().int().nonnegative().optional(),byChannel:Rm}).strict().optional(),Vm=b.object({command:b.array(b.string()).superRefine((e,t)=>{let n=e[0];Tf(n)||t.addIssue({code:b.ZodIssueCode.custom,path:[0],message:`expected safe executable name or path`})}),timeoutSeconds:b.number().int().positive().optional()}).strict().optional(),Hm=b.string().regex(/^#?[0-9a-fA-F]{6}$/,`expected hex color (RRGGBB)`),Um=b.string().refine(Tf,`expected safe executable name or path`),Wm=Zp(),Gm=b.array(b.union([b.literal(`image`),b.literal(`audio`),b.literal(`video`)])).optional(),Km=b.object({mode:b.union([b.literal(`first`),b.literal(`all`)]).optional(),maxAttachments:b.number().int().positive().optional(),prefer:b.union([b.literal(`first`),b.literal(`last`),b.literal(`path`),b.literal(`url`)]).optional()}).strict().optional(),qm=b.object({detectLanguage:b.boolean().optional(),punctuate:b.boolean().optional(),smartFormat:b.boolean().optional()}).strict().optional(),Jm=b.union([b.string(),b.number(),b.boolean()]),Ym=b.record(b.string(),b.record(b.string(),Jm)).optional(),Xm={prompt:b.string().optional(),timeoutSeconds:b.number().int().positive().optional(),language:b.string().optional(),providerOptions:Ym,deepgram:qm,baseUrl:b.string().optional(),headers:b.record(b.string(),b.string()).optional()},Zm=b.object({provider:b.string().optional(),model:b.string().optional(),capabilities:Gm,type:b.union([b.literal(`provider`),b.literal(`cli`)]).optional(),command:b.string().optional(),args:b.array(b.string()).optional(),maxChars:b.number().int().positive().optional(),maxBytes:b.number().int().positive().optional(),...Xm,profile:b.string().optional(),preferredProfile:b.string().optional()}).strict().optional(),Qm=b.object({enabled:b.boolean().optional(),scope:Wm,maxBytes:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),...Xm,attachments:Km,models:b.array(Zm).optional()}).strict().optional(),$m=b.object({models:b.array(Zm).optional(),concurrency:b.number().int().positive().optional(),image:Qm.optional(),audio:Qm.optional(),video:Qm.optional()}).strict().optional(),eh=b.object({type:b.literal(`cli`).optional(),command:b.string().min(1),args:b.array(b.string()).optional(),timeoutSeconds:b.number().int().positive().optional()}).strict(),th=b.object({enabled:b.boolean().optional(),scope:Wm,maxLinks:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),models:b.array(eh).optional()}).strict().optional(),nh=b.union([b.boolean(),b.literal(`auto`)]),rh=b.object({native:nh.optional(),nativeSkills:nh.optional()}).strict().optional(),ih=b.object({every:b.string().optional(),activeHours:b.object({start:b.string().optional(),end:b.string().optional(),timezone:b.string().optional()}).strict().optional(),model:b.string().optional(),session:b.string().optional(),includeReasoning:b.boolean().optional(),target:b.string().optional(),directPolicy:b.union([b.literal(`allow`),b.literal(`block`)]).optional(),to:b.string().optional(),accountId:b.string().optional(),prompt:b.string().optional(),ackMaxChars:b.number().int().nonnegative().optional(),suppressToolErrorWarnings:b.boolean().optional()}).strict().superRefine((e,t)=>{if(!e.every)return;try{Hp(e.every,{defaultUnit:`m`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`every`],message:`invalid duration (use ms, s, m, h)`})}let n=e.activeHours;if(!n)return;let r=/^([01]\d|2[0-3]|24):([0-5]\d)$/,i=(e,n,i)=>{if(!e)return;if(!r.test(e)){t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (use "HH:MM" 24h format)`});return}let[a,o]=e.split(`:`),s=Number(a);if(s===24&&Number(o)!==0){t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (24:00 is the only allowed 24:xx value)`});return}s===24&&!n.allow24&&t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (start cannot be 24:00)`})};i(n.start,{allow24:!1},`start`),i(n.end,{allow24:!0},`end`)}).optional(),ah=b.object({image:b.string().optional(),containerPrefix:b.string().optional(),workdir:b.string().optional(),readOnlyRoot:b.boolean().optional(),tmpfs:b.array(b.string()).optional(),network:b.string().optional(),user:b.string().optional(),capDrop:b.array(b.string()).optional(),env:b.record(b.string(),b.string()).optional(),setupCommand:b.string().optional(),pidsLimit:b.number().int().positive().optional(),memory:b.union([b.string(),b.number()]).optional(),memorySwap:b.union([b.string(),b.number()]).optional(),cpus:b.number().positive().optional(),ulimits:b.record(b.string(),b.union([b.string(),b.number(),b.object({soft:b.number().int().nonnegative().optional(),hard:b.number().int().nonnegative().optional()}).strict()])).optional(),seccompProfile:b.string().optional(),apparmorProfile:b.string().optional(),dns:b.array(b.string()).optional(),extraHosts:b.array(b.string()).optional(),binds:b.array(b.string()).optional(),dangerouslyAllowReservedContainerTargets:b.boolean().optional(),dangerouslyAllowExternalBindSources:b.boolean().optional(),dangerouslyAllowContainerNamespaceJoin:b.boolean().optional()}).strict().superRefine((e,t)=>{if(e.binds)for(let n=0;n<e.binds.length;n+=1){let r=e.binds[n]?.trim()??``;if(!r){t.addIssue({code:b.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount entry must be a non-empty string.`});continue}let i=r.indexOf(`:`),a=(i<=0?r:r.slice(0,i)).trim();a.startsWith(`/`)||t.addIssue({code:b.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount "${r}" uses a non-absolute source path "${a}". Only absolute POSIX paths are supported for sandbox binds.`})}let n=Wp({network:e.network,allowContainerNamespaceJoin:e.dangerouslyAllowContainerNamespaceJoin===!0});n===`host`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "host" is blocked. Use "bridge" or "none" instead.`}),n===`container_namespace_join`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "container:*" is blocked by default. Use a custom bridge network, or set dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`}),e.seccompProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`seccompProfile`],message:`Sandbox security: seccomp profile "unconfined" is blocked. Use a custom seccomp profile file or omit this setting.`}),e.apparmorProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`apparmorProfile`],message:`Sandbox security: apparmor profile "unconfined" is blocked. Use a named AppArmor profile or omit this setting.`})}).optional(),oh=b.object({enabled:b.boolean().optional(),image:b.string().optional(),containerPrefix:b.string().optional(),network:b.string().optional(),cdpPort:b.number().int().positive().optional(),cdpSourceRange:b.string().optional(),vncPort:b.number().int().positive().optional(),noVncPort:b.number().int().positive().optional(),headless:b.boolean().optional(),enableNoVnc:b.boolean().optional(),allowHostControl:b.boolean().optional(),autoStart:b.boolean().optional(),autoStartTimeoutMs:b.number().int().positive().optional(),binds:b.array(b.string()).optional()}).superRefine((e,t)=>{e.network?.trim().toLowerCase()===`host`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: browser network mode "host" is blocked. Use "bridge" or a custom bridge network instead.`})}).strict().optional(),sh=b.object({idleHours:b.number().int().nonnegative().optional(),maxAgeDays:b.number().int().nonnegative().optional()}).strict().optional(),Z=b.object({allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional()}).strict().superRefine((e,t)=>{e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:b.ZodIssueCode.custom,message:`tools policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`})}).optional(),ch=b.object({enabled:b.boolean().optional(),provider:b.string().optional(),apiKey:U.optional().register(H),maxResults:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),cacheTtlMinutes:b.number().nonnegative().optional(),duckduckgo:b.object({region:b.string().optional(),safeSearch:b.union([b.literal(`strict`),b.literal(`moderate`),b.literal(`off`)]).optional()}).strict().optional(),exa:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),type:b.union([b.literal(`auto`),b.literal(`neural`),b.literal(`fast`),b.literal(`deep`),b.literal(`deep-reasoning`),b.literal(`instant`)]).optional()}).strict().optional(),firecrawl:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional()}).strict().optional(),perplexity:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),model:b.string().optional()}).strict().optional(),grok:b.object({apiKey:U.optional().register(H),model:b.string().optional(),inlineCitations:b.boolean().optional()}).strict().optional(),gemini:b.object({apiKey:U.optional().register(H),model:b.string().optional()}).strict().optional(),kimi:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),model:b.string().optional()}).strict().optional(),searxng:b.object({baseUrl:b.string().optional(),categories:b.string().optional(),language:b.string().optional()}).strict().optional(),tavily:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),includeAnswer:b.boolean().optional(),searchDepth:b.union([b.literal(`basic`),b.literal(`advanced`)]).optional(),topic:b.string().optional()}).strict().optional()}).strict().optional(),lh=b.object({enabled:b.boolean().optional(),maxChars:b.number().int().positive().optional(),maxCharsCap:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),cacheTtlMinutes:b.number().nonnegative().optional(),maxRedirects:b.number().int().nonnegative().optional(),userAgent:b.string().optional(),readability:b.boolean().optional(),firecrawl:b.object({enabled:b.boolean().optional(),apiKey:U.optional().register(H),baseUrl:b.string().optional(),onlyMainContent:b.boolean().optional(),maxAgeMs:b.number().int().nonnegative().optional(),timeoutSeconds:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),uh=b.object({search:ch,fetch:lh}).strict().optional(),dh=b.union([b.literal(`minimal`),b.literal(`coding`),b.literal(`messaging`),b.literal(`full`)]).optional();function fh(e,t,n){e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:b.ZodIssueCode.custom,message:n})}const ph=b.object({allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),profile:dh}).strict().superRefine((e,t)=>{fh(e,t,`tools.byProvider policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}),mh=b.record(b.string(),b.array(b.union([b.string(),b.number()]))).optional(),hh=b.object({enabled:b.boolean().optional(),workspaceOnly:b.boolean().optional(),allowModels:b.array(b.string()).optional()}).strict().optional(),gh=b.object({minPositional:b.number().int().nonnegative().optional(),maxPositional:b.number().int().nonnegative().optional(),allowedValueFlags:b.array(b.string()).optional(),deniedFlags:b.array(b.string()).optional()}).strict(),_h={host:b.enum([`auto`,`sandbox`,`gateway`,`node`]).optional(),security:b.enum([`deny`,`allowlist`,`full`]).optional(),ask:b.enum([`off`,`on-miss`,`always`]).optional(),node:b.string().optional(),pathPrepend:b.array(b.string()).optional(),safeBins:b.array(b.string()).optional(),safeBinTrustedDirs:b.array(b.string()).optional(),safeBinProfiles:b.record(b.string(),gh).optional(),backgroundMs:b.number().int().positive().optional(),timeoutSec:b.number().int().positive().optional(),cleanupMs:b.number().int().positive().optional(),notifyOnExit:b.boolean().optional(),notifyOnExitEmptySuccess:b.boolean().optional(),applyPatch:hh},vh=b.object({..._h,approvalRunningNoticeMs:b.number().int().nonnegative().optional()}).strict().optional(),yh=b.object(_h).strict().optional(),bh=b.object({workspaceOnly:b.boolean().optional()}).strict().optional(),xh=b.object({genericRepeat:b.boolean().optional(),knownPollNoProgress:b.boolean().optional(),pingPong:b.boolean().optional()}).strict().optional(),Sh=b.object({enabled:b.boolean().optional(),historySize:b.number().int().positive().optional(),warningThreshold:b.number().int().positive().optional(),criticalThreshold:b.number().int().positive().optional(),globalCircuitBreakerThreshold:b.number().int().positive().optional(),detectors:xh}).strict().superRefine((e,t)=>{e.warningThreshold!==void 0&&e.criticalThreshold!==void 0&&e.warningThreshold>=e.criticalThreshold&&t.addIssue({code:b.ZodIssueCode.custom,path:[`criticalThreshold`],message:`tools.loopDetection.warningThreshold must be lower than criticalThreshold.`}),e.criticalThreshold!==void 0&&e.globalCircuitBreakerThreshold!==void 0&&e.criticalThreshold>=e.globalCircuitBreakerThreshold&&t.addIssue({code:b.ZodIssueCode.custom,path:[`globalCircuitBreakerThreshold`],message:`tools.loopDetection.criticalThreshold must be lower than globalCircuitBreakerThreshold.`})}).optional(),Ch=b.object({mode:b.union([b.literal(`off`),b.literal(`non-main`),b.literal(`all`)]).optional(),backend:b.string().optional(),workspaceAccess:b.union([b.literal(`none`),b.literal(`ro`),b.literal(`rw`)]).optional(),sessionToolsVisibility:b.union([b.literal(`spawned`),b.literal(`all`)]).optional(),scope:b.union([b.literal(`session`),b.literal(`agent`),b.literal(`shared`)]).optional(),perSession:b.boolean().optional(),workspaceRoot:b.string().optional(),docker:ah,browser:oh,prune:sh}).strict().superRefine((e,t)=>{Wp({network:e.browser?.network,allowContainerNamespaceJoin:e.docker?.dangerouslyAllowContainerNamespaceJoin===!0})===`container_namespace_join`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`browser`,`network`],message:`Sandbox security: browser network mode "container:*" is blocked by default. Set sandbox.docker.dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`})}).optional(),wh={profile:dh,allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),byProvider:b.record(b.string(),ph).optional()},Th=b.object({...wh,elevated:b.object({enabled:b.boolean().optional(),allowFrom:mh}).strict().optional(),exec:vh,fs:bh,loopDetection:Sh,sandbox:b.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{fh(e,t,`agent tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),Eh=b.object({enabled:b.boolean().optional(),sources:b.array(b.union([b.literal(`memory`),b.literal(`sessions`)])).optional(),extraPaths:b.array(b.string()).optional(),experimental:b.object({sessionMemory:b.boolean().optional()}).strict().optional(),provider:b.union([b.literal(`openai`),b.literal(`local`),b.literal(`gemini`),b.literal(`voyage`),b.literal(`mistral`)]).optional(),remote:b.object({baseUrl:b.string().optional(),apiKey:b.string().optional().register(H),headers:b.record(b.string(),b.string()).optional(),batch:b.object({enabled:b.boolean().optional(),wait:b.boolean().optional(),concurrency:b.number().int().positive().optional(),pollIntervalMs:b.number().int().nonnegative().optional(),timeoutMinutes:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),fallback:b.union([b.literal(`openai`),b.literal(`gemini`),b.literal(`local`),b.literal(`voyage`),b.literal(`mistral`),b.literal(`none`)]).optional(),model:b.string().optional(),local:b.object({modelPath:b.string().optional(),modelCacheDir:b.string().optional()}).strict().optional(),store:b.object({driver:b.literal(`sqlite`).optional(),path:b.string().optional(),vector:b.object({enabled:b.boolean().optional(),extensionPath:b.string().optional()}).strict().optional()}).strict().optional(),chunking:b.object({tokens:b.number().int().positive().optional(),overlap:b.number().int().nonnegative().optional()}).strict().optional(),sync:b.object({onSessionStart:b.boolean().optional(),onSearch:b.boolean().optional(),watch:b.boolean().optional(),watchDebounceMs:b.number().int().nonnegative().optional(),intervalMinutes:b.number().int().nonnegative().optional(),sessions:b.object({deltaBytes:b.number().int().nonnegative().optional(),deltaMessages:b.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),query:b.object({maxResults:b.number().int().positive().optional(),minScore:b.number().min(0).max(1).optional(),hybrid:b.object({enabled:b.boolean().optional(),vectorWeight:b.number().min(0).max(1).optional(),textWeight:b.number().min(0).max(1).optional(),candidateMultiplier:b.number().int().positive().optional(),mmr:b.object({enabled:b.boolean().optional(),lambda:b.number().min(0).max(1).optional()}).strict().optional(),temporalDecay:b.object({enabled:b.boolean().optional(),halfLifeDays:b.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),cache:b.object({enabled:b.boolean().optional(),maxEntries:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),Dh=b.object({id:b.string(),default:b.boolean().optional(),name:b.string().optional(),workspace:b.string().optional(),agentDir:b.string().optional(),activeModelProvider:b.string().optional(),modelProviders:b.record(b.string(),qp).optional(),model:Gp.optional(),taskModels:Kp.optional(),thinkingDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),reasoningDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),fastModeDefault:b.boolean().optional(),skills:b.array(b.string()).optional(),memorySearch:Eh,humanDelay:jm.optional(),heartbeat:ih,identity:bm,groupChat:ym,subagents:b.object({allowAgents:b.array(b.string()).optional(),requireAgentId:b.boolean().optional(),model:b.union([b.string(),b.object({primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional()}).strict()]).optional(),thinking:b.string().optional()}).strict().optional(),sandbox:Ch,tools:Th,strictAgentic:b.object({mode:b.union([b.literal(`off`),b.literal(`warn`)]).optional()}).strict().optional()}).strict(),Oh=b.object({...wh,web:uh,media:$m,links:th,sessions:b.object({visibility:b.enum([`self`,`tree`,`agent`,`all`]).optional()}).strict().optional(),loopDetection:Sh,message:b.object({allowCrossContextSend:b.boolean().optional(),crossContext:b.object({allowWithinProvider:b.boolean().optional(),allowAcrossProviders:b.boolean().optional(),marker:b.object({enabled:b.boolean().optional(),prefix:b.string().optional(),suffix:b.string().optional()}).strict().optional()}).strict().optional(),broadcast:b.object({enabled:b.boolean().optional()}).strict().optional()}).strict().optional(),agentToAgent:b.object({enabled:b.boolean().optional(),allow:b.array(b.string()).optional()}).strict().optional(),elevated:b.object({enabled:b.boolean().optional(),allowFrom:mh}).strict().optional(),exec:yh,fs:bh,subagents:b.object({tools:Z}).strict().optional(),sandbox:b.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{fh(e,t,`tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),kh=b.object({model:Gp.optional(),taskModels:Kp.optional(),imageModel:Gp.optional(),models:b.record(b.string(),b.object({alias:b.string().optional(),params:b.record(b.string(),b.unknown()).optional(),streaming:b.boolean().optional()}).strict()).optional(),workspace:b.string().optional(),repoRoot:b.string().optional(),skipBootstrap:b.boolean().optional(),bootstrapMaxChars:b.number().int().positive().optional(),bootstrapTotalMaxChars:b.number().int().positive().optional(),bootstrapPromptTruncationWarning:b.union([b.literal(`off`),b.literal(`once`),b.literal(`always`)]).optional(),userTimezone:b.string().optional(),timeFormat:b.union([b.literal(`auto`),b.literal(`12`),b.literal(`24`)]).optional(),envelopeTimezone:b.string().optional(),envelopeTimestamp:b.union([b.literal(`on`),b.literal(`off`)]).optional(),envelopeElapsed:b.union([b.literal(`on`),b.literal(`off`)]).optional(),contextTokens:b.number().int().positive().optional(),cliBackends:b.record(b.string(),Nm).optional(),memorySearch:Eh,contextPruning:b.object({mode:b.union([b.literal(`off`),b.literal(`cache-ttl`)]).optional(),ttl:b.string().optional(),keepLastAssistants:b.number().int().nonnegative().optional(),softTrimRatio:b.number().min(0).max(1).optional(),hardClearRatio:b.number().min(0).max(1).optional(),minPrunableToolChars:b.number().int().nonnegative().optional(),tools:b.object({allow:b.array(b.string()).optional(),deny:b.array(b.string()).optional()}).strict().optional(),softTrim:b.object({maxChars:b.number().int().nonnegative().optional(),headChars:b.number().int().nonnegative().optional(),tailChars:b.number().int().nonnegative().optional()}).strict().optional(),hardClear:b.object({enabled:b.boolean().optional(),placeholder:b.string().optional()}).strict().optional()}).strict().optional(),compaction:b.object({mode:b.union([b.literal(`default`),b.literal(`safeguard`)]).optional(),reserveTokens:b.number().int().nonnegative().optional(),keepRecentTokens:b.number().int().positive().optional(),timeoutSeconds:b.number().positive().optional(),reserveTokensFloor:b.number().int().nonnegative().optional(),maxHistoryShare:b.number().min(.1).max(.9).optional(),identifierPolicy:b.union([b.literal(`strict`),b.literal(`off`),b.literal(`custom`)]).optional(),identifierInstructions:b.string().optional(),memoryFlush:b.object({enabled:b.boolean().optional(),softThresholdTokens:b.number().int().nonnegative().optional(),prompt:b.string().optional(),systemPrompt:b.string().optional()}).strict().optional()}).strict().optional(),embeddedPi:b.object({projectSettingsPolicy:b.union([b.literal(`trusted`),b.literal(`sanitize`),b.literal(`ignore`)]).optional()}).strict().optional(),strictAgentic:b.object({mode:b.union([b.literal(`off`),b.literal(`warn`)]).optional()}).strict().optional(),skills:b.array(b.string()).optional(),thinkingDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),reasoningDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),fastModeDefault:b.boolean().optional(),verboseDefault:b.union([b.literal(`off`),b.literal(`on`),b.literal(`full`)]).optional(),elevatedDefault:b.union([b.literal(`off`),b.literal(`on`),b.literal(`ask`),b.literal(`full`)]).optional(),blockStreamingDefault:b.union([b.literal(`off`),b.literal(`on`)]).optional(),blockStreamingBreak:b.union([b.literal(`text_end`),b.literal(`message_end`)]).optional(),blockStreamingChunk:wm.optional(),blockStreamingCoalesce:J.optional(),humanDelay:jm.optional(),timeoutSeconds:b.number().int().positive().optional(),mediaMaxMb:b.number().positive().optional(),imageMaxDimensionPx:b.number().int().positive().optional(),typingIntervalSeconds:b.number().int().positive().optional(),typingMode:Cm.optional(),heartbeat:ih,maxConcurrent:b.number().int().positive().optional(),subagents:b.object({maxConcurrent:b.number().int().positive().optional(),maxSpawnDepth:b.number().int().min(1).max(5).optional().describe(`Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents.`),maxChildrenPerAgent:b.number().int().min(1).max(20).optional().describe(`Maximum number of active children a single agent session can spawn (default: 5).`),archiveAfterMinutes:b.number().int().positive().optional(),model:Gp.optional(),thinking:b.string().optional(),runTimeoutSeconds:b.number().int().min(0).optional(),announceTimeoutMs:b.number().int().positive().optional(),allowAgents:b.array(b.string()).optional(),requireAgentId:b.boolean().optional()}).strict().optional(),sandbox:Ch}).strict().optional(),Ah=b.object({defaults:b.lazy(()=>kh).optional(),list:b.array(Dh).optional()}).strict().optional(),jh=b.array(b.object({agentId:b.string(),comment:b.string().optional(),match:b.object({channel:b.string(),accountId:b.string().optional(),peer:b.object({kind:b.union([b.literal(`direct`),b.literal(`group`),b.literal(`channel`),b.literal(`dm`)]),id:b.string()}).strict().optional(),guildId:b.string().optional(),teamId:b.string().optional(),roles:b.array(b.string()).optional()}).strict()}).strict()).optional(),Mh=b.enum([`parallel`,`sequential`]),Nh=b.object({strategy:Mh.optional()}).catchall(b.array(b.string())).optional(),Ph=b.object({channel:b.string().min(1),to:b.string().min(1),accountId:b.string().optional(),threadId:b.union([b.string(),b.number()]).optional()}).strict(),Fh=b.object({enabled:b.boolean().optional(),mode:b.union([b.literal(`session`),b.literal(`targets`),b.literal(`both`)]).optional(),agentFilter:b.array(b.string()).optional(),sessionFilter:b.array(b.string()).optional(),targets:b.array(Ph).optional()}).strict().optional(),Ih=b.object({exec:Fh}).strict().optional();function Lh(e){let t=e.trim();return!(!t||i.isAbsolute(t)||t.startsWith(`~`)||t.includes(`:`)||t.split(/[\\/]+/g).some(e=>e===`..`))}const Rh=b.string().refine(Lh,`module must be a safe relative path (no absolute paths)`),zh=b.object({id:b.string().optional(),enabled:b.boolean().optional(),match:b.object({path:b.string().optional(),source:b.string().optional()}).optional(),action:b.union([b.literal(`wake`),b.literal(`agent`),b.literal(`workflow`)]).optional(),wakeMode:b.union([b.literal(`now`),b.literal(`next-heartbeat`)]).optional(),name:b.string().optional(),agentId:b.string().optional(),sessionKey:b.string().optional().register(H),messageTemplate:b.string().optional(),textTemplate:b.string().optional(),workflowDefinitionId:b.string().optional(),deliver:b.boolean().optional(),allowUnsafeExternalContent:b.boolean().optional(),channel:b.union([b.literal(`last`),b.literal(`whatsapp`),b.literal(`telegram`),b.literal(`discord`),b.literal(`irc`),b.literal(`slack`),b.literal(`signal`),b.literal(`imessage`),b.literal(`msteams`)]).optional(),to:b.string().optional(),model:b.string().optional(),thinking:b.string().optional(),timeoutSeconds:b.number().int().positive().optional(),notifyPolicy:b.union([b.literal(`silent`),b.literal(`done_only`),b.literal(`state_changes`)]).optional(),transform:b.object({module:Rh,export:b.string().optional()}).strict().optional()}).strict().optional(),Bh=b.object({event:b.string(),module:Rh,export:b.string().optional()}).strict(),Vh=b.object({enabled:b.boolean().optional(),env:b.record(b.string(),b.string()).optional()}).passthrough(),Hh=b.object({source:b.union([b.literal(`npm`),b.literal(`archive`),b.literal(`path`)]),spec:b.string().optional(),sourcePath:b.string().optional(),installPath:b.string().optional(),version:b.string().optional(),installedAt:b.string().optional(),hooks:b.array(b.string()).optional()}).strict(),Uh=b.object({enabled:b.boolean().optional(),handlers:b.array(Bh).optional(),entries:b.record(b.string(),Vh).optional(),load:b.object({extraDirs:b.array(b.string()).optional()}).strict().optional(),installs:b.record(b.string(),Hh).optional()}).strict().optional(),Wh=b.object({account:b.string().optional(),project:b.string().optional(),label:b.string().optional(),topic:b.string().optional(),subscription:b.string().optional(),pushToken:b.string().optional().register(H),hookUrl:b.string().optional(),includeBody:b.boolean().optional(),maxBytes:b.number().int().positive().optional(),renewEveryMinutes:b.number().int().positive().optional(),allowUnsafeExternalContent:b.boolean().optional(),serve:b.object({bind:b.string().optional(),port:b.number().int().positive().optional(),path:b.string().optional()}).strict().optional(),tailscale:b.object({mode:b.union([b.literal(`off`),b.literal(`serve`),b.literal(`funnel`)]).optional(),path:b.string().optional(),target:b.string().optional()}).strict().optional(),model:b.string().optional(),thinking:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`)]).optional()}).strict().optional(),Gh={source:b.union([b.literal(`npm`),b.literal(`archive`),b.literal(`path`),b.literal(`clawhub`)]),spec:b.string().optional(),sourcePath:b.string().optional(),installPath:b.string().optional(),version:b.string().optional(),resolvedName:b.string().optional(),resolvedVersion:b.string().optional(),resolvedSpec:b.string().optional(),integrity:b.string().optional(),shasum:b.string().optional(),resolvedAt:b.string().optional(),installedAt:b.string().optional(),clawhubUrl:b.string().optional(),clawhubArtifactUrl:b.string().optional(),clawhubPackage:b.string().optional(),clawhubFamily:b.union([b.literal(`code-plugin`),b.literal(`bundle-plugin`)]).optional(),clawhubChannel:b.union([b.literal(`official`),b.literal(`community`),b.literal(`private`)]).optional(),artifactKind:b.union([b.literal(`legacy-zip`),b.literal(`npm-pack`),b.literal(`clawpack`)]).optional(),artifactFormat:b.union([b.literal(`zip`),b.literal(`tgz`)]).optional(),npmIntegrity:b.string().optional(),npmShasum:b.string().optional(),npmTarballName:b.string().optional(),clawpackSha256:b.string().optional(),clawpackSpecVersion:b.number().int().nonnegative().optional(),clawpackManifestSha256:b.string().optional(),clawpackSize:b.number().int().nonnegative().optional(),securityState:b.string().optional(),scanState:b.string().optional(),moderationState:b.string().optional(),readinessPhase:b.string().optional(),verificationTier:b.string().optional(),verificationSourceRepo:b.string().optional(),verificationSourceCommit:b.string().optional(),verificationHasProvenance:b.boolean().optional()},Q=b.object({showOk:b.boolean().optional(),showAlerts:b.boolean().optional(),useIndicator:b.boolean().optional()}).strict().optional(),Kh=/^[A-Za-z0-9._-]+$/,qh=/^\[[0-9A-Fa-f:.%]+\]$/,Jh=/\s/;function Yh(e){for(let t of e){let e=t.charCodeAt(0);if(e<=31||e===127||Jh.test(t))return!0}return!1}function Xh(e){if(typeof e!=`string`)return;let t=e.trim();if(!t||Yh(t)||t.startsWith(`-`)||t.includes(`/`)||t.includes(`\\`))return;let n=t.indexOf(`@`),r=t.lastIndexOf(`@`),i,a=t;if(!(n!==-1&&(n!==r||n===0||n===t.length-1||(i=t.slice(0,n),a=t.slice(n+1),!Kh.test(i))))&&!(!a||a.startsWith(`-`)||a.includes(`@`))&&!(a.includes(`:`)&&!qh.test(a))&&!(!Kh.test(a)&&!qh.test(a)))return i?`${i}@${a}`:a}function Zh(e){return Xh(e)!==void 0}const Qh=/^[A-Za-z]:\//,$h=/^[A-Za-z]:$/;function eg(e){let t=e.trim();if(!t||t.includes(`\0`))return;let n=i.posix.normalize(t.replaceAll(`\\`,`/`));if(!(n.startsWith(`/`)||Qh.test(n))||n===`/`)return;let r=n.endsWith(`/`)?n.slice(0,-1):n;if(!$h.test(r))return r}function tg(e){return e.split(`/`).filter(Boolean)}function ng(e){let t=eg(e);if(!t)return!1;let n=tg(t);return n.length===0?!1:n.every(e=>e===`*`||!e.includes(`*`))}const rg=/^[a-z0-9_]{1,32}$/;function ig(e){let t=e.trim();return t?(t.startsWith(`/`)?t.slice(1):t).trim().toLowerCase().replace(/-/g,`_`):``}function ag(e){return e.trim()}function og(e){let t=Array.isArray(e.commands)?e.commands:[],n=e.reservedCommands??new Set,r=e.checkReserved!==!1,i=e.checkDuplicates!==!1,a=new Set,o=[],s=[];for(let e=0;e<t.length;e+=1){let c=t[e],l=ig(String(c?.command??``));if(!l){s.push({index:e,field:`command`,message:`Telegram custom command is missing a command name.`});continue}if(!rg.test(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is invalid (use a-z, 0-9, underscore; max 32 chars).`});continue}if(r&&n.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" conflicts with a native command.`});continue}if(i&&a.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is duplicated.`});continue}let u=ag(String(c?.description??``));if(!u){s.push({index:e,field:`description`,message:`Telegram custom command "/${l}" is missing a description.`});continue}i&&a.add(l),o.push({command:l,description:u})}return{commands:o,issues:s}}const sg=b.record(b.string(),Z).optional(),cg=b.union([b.string(),b.number()]).refine(e=>typeof e==`string`,{message:`Discord IDs must be strings (wrap numeric IDs in quotes).`}),lg=b.array(cg),ug=b.enum([`off`,`dm`,`group`,`all`,`allowlist`]),dg=b.union([b.array(b.string()),b.object({inlineButtons:ug.optional()}).strict()]),fg=b.object({requireMention:b.boolean().optional(),groupPolicy:K.optional(),skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),pg=b.object({requireMention:b.boolean().optional(),groupPolicy:K.optional(),tools:Z,toolsBySender:sg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional(),topics:b.record(b.string(),fg.optional()).optional()}).strict(),mg=b.object({command:b.string().transform(ig),description:b.string().transform(ag)}).strict(),hg=(e,t)=>{if(!e.customCommands||e.customCommands.length===0)return;let{issues:n}=og({commands:e.customCommands,checkReserved:!1,checkDuplicates:!1});for(let e of n)t.addIssue({code:b.ZodIssueCode.custom,path:[`customCommands`,e.index,e.field],message:e.message})};function gg(e){e.streaming=gf(e),delete e.streamMode}function _g(e){e.streaming=_f(e),delete e.streamMode}function vg(e){e.nativeStreaming=yf(e),e.streaming=vf(e),delete e.streamMode}const yg=b.object({name:b.string().optional(),capabilities:dg.optional(),markdown:Em,enabled:b.boolean().optional(),commands:rh,customCommands:b.array(mg).optional(),configWrites:b.boolean().optional(),dmPolicy:q.optional().default(`pairing`),botToken:b.string().optional().register(H),tokenFile:b.string().optional(),replyToMode:Sm.optional(),groups:b.record(b.string(),pg.optional()).optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.union([b.string(),b.number()]).optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),blockStreaming:b.boolean().optional(),draftChunk:wm.optional(),blockStreamingCoalesce:J.optional(),streamMode:b.enum([`off`,`partial`,`block`]).optional(),mediaMaxMb:b.number().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),retry:Im,network:b.object({autoSelectFamily:b.boolean().optional(),dnsResultOrder:b.enum([`ipv4first`,`verbatim`]).optional()}).strict().optional(),proxy:b.string().optional(),webhookUrl:b.string().optional().describe(`Public HTTPS webhook URL registered with Telegram for inbound updates. This must be internet-reachable and requires channels.telegram.webhookSecret.`),webhookSecret:b.string().optional().describe(`Secret token sent to Telegram during webhook registration and verified on inbound webhook requests. Telegram returns this value for verification; this is not the gateway auth token and not the bot token.`).register(H),webhookPath:b.string().optional().describe(`Local webhook route path served by the gateway listener. Defaults to /telegram-webhook.`),webhookHost:b.string().optional().describe(`Local bind host for the webhook listener. Defaults to 127.0.0.1; keep loopback unless you intentionally expose direct ingress.`),webhookPort:b.number().int().nonnegative().optional().describe(`Local bind port for the webhook listener. Defaults to 8787; set to 0 to let the OS assign an ephemeral port.`),actions:b.object({reactions:b.boolean().optional(),sendMessage:b.boolean().optional(),deleteMessage:b.boolean().optional(),sticker:b.boolean().optional()}).strict().optional(),reactionNotifications:b.enum([`off`,`own`,`all`]).optional(),reactionLevel:b.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,linkPreview:b.boolean().optional(),responsePrefix:b.string().optional(),ackReaction:b.string().optional()}).strict(),bg=yg.superRefine((e,t)=>{gg(e),hg(e,t)}),xg=yg.extend({accounts:b.record(b.string(),bg.optional()).optional()}).superRefine((e,t)=>{if(gg(e),Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="open" requires channels.telegram.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="allowlist" requires channels.telegram.allowFrom to contain at least one sender ID`}),hg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to contain at least one sender ID`})}let n=typeof e.webhookUrl==`string`?e.webhookUrl.trim():``,r=typeof e.webhookSecret==`string`?e.webhookSecret.trim():``;if(n&&!r&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.telegram.webhookUrl requires channels.telegram.webhookSecret`,path:[`webhookSecret`]}),e.accounts)for(let[n,i]of Object.entries(e.accounts)){if(!i||i.enabled===!1)continue;let a=i.dmPolicy??e.dmPolicy,o=Array.isArray(i.allowFrom)?i.allowFrom:e.allowFrom;Y({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to include "*"`}),X({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to contain at least one sender ID`}),typeof i.webhookUrl==`string`&&i.webhookUrl.trim()&&!(typeof i.webhookSecret==`string`&&i.webhookSecret.trim())&&!r&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.telegram.accounts.*.webhookUrl requires channels.telegram.webhookSecret or channels.telegram.accounts.*.webhookSecret`,path:[`accounts`,n,`webhookSecret`]})}}),Sg=b.object({enabled:b.boolean().optional(),policy:q.optional(),allowFrom:lg.optional(),groupEnabled:b.boolean().optional(),groupChannels:lg.optional()}).strict(),Cg=b.object({allow:b.boolean().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),users:lg.optional(),roles:lg.optional(),systemPrompt:b.string().optional(),includeThreadStarter:b.boolean().optional(),autoThread:b.boolean().optional()}).strict(),wg=b.object({slug:b.string().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),users:lg.optional(),roles:lg.optional(),channels:b.record(b.string(),Cg.optional()).optional()}).strict(),Tg=b.object({components:b.object({accentColor:Hm.optional()}).strict().optional()}).strict().optional(),Eg=b.object({guildId:b.string().min(1),channelId:b.string().min(1)}).strict(),Dg=b.object({enabled:b.boolean().optional(),autoJoin:b.array(Eg).optional(),daveEncryption:b.boolean().optional(),decryptionFailureTolerance:b.number().int().min(0).optional(),tts:Am.optional()}).strict().optional(),Og=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,enabled:b.boolean().optional(),commands:rh,configWrites:b.boolean().optional(),token:b.string().optional().register(H),proxy:b.string().optional(),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),streamMode:b.enum([`partial`,`block`,`off`]).optional(),draftChunk:wm.optional(),maxLinesPerMessage:b.number().int().positive().optional(),mediaMaxMb:b.number().positive().optional(),retry:Im,actions:b.object({reactions:b.boolean().optional(),stickers:b.boolean().optional(),emojiUploads:b.boolean().optional(),stickerUploads:b.boolean().optional(),polls:b.boolean().optional(),permissions:b.boolean().optional(),messages:b.boolean().optional(),threads:b.boolean().optional(),pins:b.boolean().optional(),search:b.boolean().optional(),memberInfo:b.boolean().optional(),roleInfo:b.boolean().optional(),roles:b.boolean().optional(),channelInfo:b.boolean().optional(),voiceStatus:b.boolean().optional(),events:b.boolean().optional(),moderation:b.boolean().optional(),channels:b.boolean().optional(),presence:b.boolean().optional()}).strict().optional(),replyToMode:Sm.optional(),dmPolicy:q.optional(),allowFrom:lg.optional(),defaultTo:b.string().optional(),dm:Sg.optional(),guilds:b.record(b.string(),wg.optional()).optional(),heartbeat:Q,execApprovals:b.object({enabled:b.boolean().optional(),approvers:lg.optional(),agentFilter:b.array(b.string()).optional(),sessionFilter:b.array(b.string()).optional(),cleanupAfterResolve:b.boolean().optional(),target:b.enum([`dm`,`channel`,`both`]).optional()}).strict().optional(),ui:Tg,slashCommand:b.object({ephemeral:b.boolean().optional()}).strict().optional(),threadBindings:b.object({enabled:b.boolean().optional(),idleHours:b.number().nonnegative().optional(),maxAgeHours:b.number().nonnegative().optional(),spawnSubagentSessions:b.boolean().optional(),spawnAcpSessions:b.boolean().optional()}).strict().optional(),intents:b.object({presence:b.boolean().optional(),guildMembers:b.boolean().optional()}).strict().optional(),voice:Dg,pluralkit:b.object({enabled:b.boolean().optional(),token:b.string().optional().register(H)}).strict().optional(),responsePrefix:b.string().optional(),ackReaction:b.string().optional(),activity:b.string().optional(),status:b.enum([`online`,`dnd`,`idle`,`invisible`]).optional(),activityType:b.union([b.literal(0),b.literal(1),b.literal(2),b.literal(3),b.literal(4),b.literal(5)]).optional(),activityUrl:b.string().url().optional()}).strict().superRefine((e,t)=>{_g(e);let n=!!(typeof e.activity==`string`&&e.activity.trim()),r=e.activityType!==void 0,i=!!(typeof e.activityUrl==`string`&&e.activityUrl.trim());(r||i)&&!n&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activity is required when activityType or activityUrl is set`,path:[`activity`]}),e.activityType===1&&!i&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activityUrl is required when activityType is 1 (Streaming)`,path:[`activityUrl`]}),i&&e.activityType!==1&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activityType must be 1 (Streaming) when activityUrl is set`,path:[`activityType`]})}),kg=Og.extend({accounts:b.record(b.string(),Og.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];if(Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="open" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="allowlist" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,a=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="open" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="allowlist" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to contain at least one sender ID`})}}),Ag=b.object({enabled:b.boolean().optional(),policy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional()}).strict().superRefine((e,t)=>{Y({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="open" requires channels.googlechat.dm.allowFrom to include "*"`}),X({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="allowlist" requires channels.googlechat.dm.allowFrom to contain at least one sender ID`})}),jg=b.object({enabled:b.boolean().optional(),allow:b.boolean().optional(),requireMention:b.boolean().optional(),users:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),Mg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),enabled:b.boolean().optional(),configWrites:b.boolean().optional(),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),requireMention:b.boolean().optional(),groupPolicy:K.optional().default(`allowlist`),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groups:b.record(b.string(),jg.optional()).optional(),defaultTo:b.string().optional(),serviceAccount:b.union([b.string(),b.record(b.string(),b.unknown()),sm]).optional().register(H),serviceAccountRef:sm.optional().register(H),serviceAccountFile:b.string().optional(),audienceType:b.enum([`app-url`,`project-number`]).optional(),audience:b.string().optional(),webhookPath:b.string().optional(),webhookUrl:b.string().optional(),botUser:b.string().optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streamMode:b.enum([`replace`,`status_final`,`append`]).optional().default(`replace`),mediaMaxMb:b.number().positive().optional(),replyToMode:Sm.optional(),actions:b.object({reactions:b.boolean().optional()}).strict().optional(),dm:Ag.optional(),typingIndicator:b.enum([`none`,`message`,`reaction`]).optional(),responsePrefix:b.string().optional()}).strict(),Ng=Mg.extend({accounts:b.record(b.string(),Mg.optional()).optional(),defaultAccount:b.string().optional()}),Pg=b.object({enabled:b.boolean().optional(),policy:q.optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupEnabled:b.boolean().optional(),groupChannels:b.array(b.union([b.string(),b.number()])).optional(),replyToMode:Sm.optional()}).strict(),Fg=b.object({enabled:b.boolean().optional(),allow:b.boolean().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,allowBots:b.boolean().optional(),users:b.array(b.union([b.string(),b.number()])).optional(),skills:b.array(b.string()).optional(),systemPrompt:b.string().optional()}).strict(),Ig=b.object({historyScope:b.enum([`thread`,`channel`]).optional(),inheritParent:b.boolean().optional(),initialHistoryLimit:b.number().int().min(0).optional()}).strict(),Lg=b.object({direct:Sm.optional(),group:Sm.optional(),channel:Sm.optional()}).strict(),Rg=b.object({name:b.string().optional(),mode:b.enum([`socket`,`http`]).optional(),signingSecret:b.string().optional().register(H),webhookPath:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,enabled:b.boolean().optional(),commands:rh,configWrites:b.boolean().optional(),botToken:b.string().optional().register(H),appToken:b.string().optional().register(H),userToken:b.string().optional().register(H),userTokenReadOnly:b.boolean().optional().default(!0),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),requireMention:b.boolean().optional(),groupPolicy:K.optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),nativeStreaming:b.boolean().optional(),streamMode:b.enum([`replace`,`status_final`,`append`]).optional(),mediaMaxMb:b.number().positive().optional(),reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:b.array(b.union([b.string(),b.number()])).optional(),replyToMode:Sm.optional(),replyToModeByChatType:Lg.optional(),thread:Ig.optional(),actions:b.object({reactions:b.boolean().optional(),messages:b.boolean().optional(),pins:b.boolean().optional(),search:b.boolean().optional(),permissions:b.boolean().optional(),memberInfo:b.boolean().optional(),channelInfo:b.boolean().optional(),emojiList:b.boolean().optional()}).strict().optional(),slashCommand:b.object({enabled:b.boolean().optional(),name:b.string().optional(),sessionPrefix:b.string().optional(),ephemeral:b.boolean().optional()}).strict().optional(),dmPolicy:q.optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),dm:Pg.optional(),channels:b.record(b.string(),Fg.optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional(),ackReaction:b.string().optional()}).strict().superRefine(e=>{vg(e)}),zg=Rg.safeExtend({mode:b.enum([`socket`,`http`]).optional().default(`socket`),signingSecret:b.string().optional().register(H),webhookPath:b.string().optional().default(`/slack/events`),groupPolicy:K.optional().default(`allowlist`),accounts:b.record(b.string(),Rg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="open" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="allowlist" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to contain at least one sender ID`});let a=e.mode??`socket`;if(a===`http`&&!e.signingSecret&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.slack.mode="http" requires channels.slack.signingSecret`,path:[`signingSecret`]}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r||r.enabled===!1)continue;let i=r.mode??a,o=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,s=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="open" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to include "*"`}),X({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="allowlist" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to contain at least one sender ID`}),i===`http`&&((r.signingSecret??e.signingSecret)||t.addIssue({code:b.ZodIssueCode.custom,message:`channels.slack.accounts.*.mode="http" requires channels.slack.signingSecret or channels.slack.accounts.*.signingSecret`,path:[`accounts`,n,`signingSecret`]}))}}),Bg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),account:b.string().optional(),httpUrl:b.string().optional(),httpHost:b.string().optional(),httpPort:b.number().int().positive().optional(),cliPath:Um.optional(),autoStart:b.boolean().optional(),startupTimeoutMs:b.number().int().min(1e3).max(12e4).optional(),receiveMode:b.union([b.literal(`on-start`),b.literal(`manual`)]).optional(),ignoreAttachments:b.boolean().optional(),ignoreStories:b.boolean().optional(),sendReadReceipts:b.boolean().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),mediaMaxMb:b.number().int().positive().optional(),reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:b.array(b.union([b.string(),b.number()])).optional(),actions:b.object({reactions:b.boolean().optional()}).strict().optional(),reactionLevel:b.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),Vg=Bg,Hg=Bg.extend({accounts:b.record(b.string(),Vg.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="open" requires channels.signal.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="allowlist" requires channels.signal.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="open" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="allowlist" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to contain at least one sender ID`})}}),Ug=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),Wg=b.object({enabled:b.boolean().optional(),service:b.string().optional(),password:b.string().optional().register(H),passwordFile:b.string().optional(),register:b.boolean().optional(),registerEmail:b.string().optional()}).strict(),Gg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),host:b.string().optional(),port:b.number().int().min(1).max(65535).optional(),tls:b.boolean().optional(),nick:b.string().optional(),username:b.string().optional(),realname:b.string().optional(),password:b.string().optional().register(H),passwordFile:b.string().optional(),nickserv:Wg.optional(),channels:b.array(b.string()).optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),groups:b.record(b.string(),Ug.optional()).optional(),mentionPatterns:b.array(b.string()).optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),mediaMaxMb:b.number().positive().optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict();function Kg(e,t){Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="open" requires channels.irc.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="allowlist" requires channels.irc.allowFrom to contain at least one sender ID`}),e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:b.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}const qg=Gg.superRefine((e,t)=>{e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:b.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}),Jg=Gg.extend({accounts:b.record(b.string(),qg.optional()).optional()}).superRefine((e,t)=>{if(Kg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="open" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="allowlist" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to contain at least one sender ID`})}}),Yg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),cliPath:Um.optional(),dbPath:b.string().optional(),remoteHost:b.string().refine(Zh,`expected SSH host or user@host (no spaces/options)`).optional(),service:b.union([b.literal(`imessage`),b.literal(`sms`),b.literal(`auto`)]).optional(),region:b.string().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),includeAttachments:b.boolean().optional(),attachmentRoots:b.array(b.string().refine(ng,`expected absolute path root`)).optional(),remoteAttachmentRoots:b.array(b.string().refine(ng,`expected absolute path root`)).optional(),mediaMaxMb:b.number().int().positive().optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:b.record(b.string(),b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg}).strict().optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),Xg=Yg,Zg=Yg.extend({accounts:b.record(b.string(),Xg.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="open" requires channels.imessage.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="allowlist" requires channels.imessage.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="open" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="allowlist" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to contain at least one sender ID`})}}),Qg=b.union([b.string(),b.number()]),$g=b.object({reactions:b.boolean().optional(),edit:b.boolean().optional(),unsend:b.boolean().optional(),reply:b.boolean().optional(),sendWithEffect:b.boolean().optional(),renameGroup:b.boolean().optional(),setGroupIcon:b.boolean().optional(),addParticipant:b.boolean().optional(),removeParticipant:b.boolean().optional(),leaveGroup:b.boolean().optional(),sendAttachment:b.boolean().optional()}).strict().optional(),e_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg}).strict(),t_=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,configWrites:b.boolean().optional(),enabled:b.boolean().optional(),serverUrl:b.string().optional(),password:b.string().optional().register(H),webhookPath:b.string().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(Qg).optional(),groupAllowFrom:b.array(Qg).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),mediaMaxMb:b.number().int().positive().optional(),mediaLocalRoots:b.array(b.string()).optional(),sendReadReceipts:b.boolean().optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:b.record(b.string(),e_.optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),n_=t_,r_=t_.extend({accounts:b.record(b.string(),n_.optional()).optional(),actions:$g}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="open" requires channels.bluebubbles.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="allowlist" requires channels.bluebubbles.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID`})}}),i_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,replyStyle:Fm.optional()}).strict(),a_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:sg,replyStyle:Fm.optional(),channels:b.record(b.string(),i_.optional()).optional()}).strict(),o_=b.object({enabled:b.boolean().optional(),capabilities:b.array(b.string()).optional(),dangerouslyAllowNameMatching:b.boolean().optional(),markdown:Em,configWrites:b.boolean().optional(),appId:b.string().optional(),appPassword:b.string().optional().register(H),tenantId:b.string().optional(),webhook:b.object({port:b.number().int().positive().optional(),path:b.string().optional()}).strict().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.string()).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.string()).optional(),groupPolicy:K.optional().default(`allowlist`),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreamingCoalesce:J.optional(),mediaAllowHosts:b.array(b.string()).optional(),mediaAuthAllowHosts:b.array(b.string()).optional(),requireMention:b.boolean().optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),replyStyle:Fm.optional(),teams:b.record(b.string(),a_.optional()).optional(),mediaMaxMb:b.number().positive().optional(),preserveFilenames:b.boolean().optional(),sharePointSiteId:b.string().optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict().superRefine((e,t)=>{Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="open" requires channels.msteams.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="allowlist" requires channels.msteams.allowFrom to contain at least one sender ID`})}),s_=b.record(b.string(),Z).optional(),c_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:s_}).strict().optional(),l_=b.record(b.string(),c_).optional(),u_=b.object({emoji:b.string().optional(),direct:b.boolean().optional().default(!0),group:b.enum([`always`,`mentions`,`never`]).optional().default(`mentions`)}).strict().optional(),d_=b.object({enabled:b.boolean().optional(),capabilities:b.array(b.string()).optional(),markdown:Em,configWrites:b.boolean().optional(),sendReadReceipts:b.boolean().optional(),messagePrefix:b.string().optional(),responsePrefix:b.string().optional(),dmPolicy:q.optional().default(`pairing`),selfChatMode:b.boolean().optional(),allowFrom:b.array(b.string()).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.string()).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:l_,ackReaction:u_,debounceMs:b.number().int().nonnegative().optional().default(0),heartbeat:Q});function f_(e){e.dmPolicy===`open`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).includes(`*`)||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}function p_(e){e.dmPolicy===`allowlist`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).length>0||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}const m_=d_.extend({name:b.string().optional(),enabled:b.boolean().optional(),authDir:b.string().optional(),mediaMaxMb:b.number().int().positive().optional()}).strict(),h_=d_.extend({accounts:b.record(b.string(),m_.optional()).optional(),mediaMaxMb:b.number().int().positive().optional().default(50),actions:b.object({reactions:b.boolean().optional(),sendMessage:b.boolean().optional(),polls:b.boolean().optional()}).strict().optional()}).strict().superRefine((e,t)=>{if(f_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="open" requires channels.whatsapp.allowFrom to include "*"`}),p_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="allowlist" requires channels.whatsapp.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;f_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="open" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to include "*"`}),p_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="allowlist" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to contain at least one sender ID`})}}),g_=b.record(b.string(),b.record(b.string(),b.string())).optional(),__=b.object({defaults:b.object({groupPolicy:K.optional(),heartbeat:Q}).strict().optional(),modelByChannel:g_,whatsapp:h_.optional(),telegram:xg.optional(),discord:kg.optional(),irc:Jg.optional(),googlechat:Ng.optional(),slack:zg.optional(),signal:Hg.optional(),imessage:Zg.optional(),bluebubbles:r_.optional(),msteams:o_.optional()}).passthrough().optional(),v_=b.object({mode:b.union([b.literal(`daily`),b.literal(`idle`)]).optional(),atHour:b.number().int().min(0).max(23).optional(),idleMinutes:b.number().int().positive().optional()}).strict(),y_=Zp(),b_=b.object({scope:b.union([b.literal(`per-sender`),b.literal(`global`)]).optional(),dmScope:b.union([b.literal(`main`),b.literal(`per-peer`),b.literal(`per-channel-peer`),b.literal(`per-account-channel-peer`)]).optional(),identityLinks:b.record(b.string(),b.array(b.string())).optional(),resetTriggers:b.array(b.string()).optional(),idleMinutes:b.number().int().positive().optional(),reset:v_.optional(),resetByType:b.object({direct:v_.optional(),dm:v_.optional(),group:v_.optional(),thread:v_.optional()}).strict().optional(),resetByChannel:b.record(b.string(),v_).optional(),store:b.string().optional(),typingIntervalSeconds:b.number().int().positive().optional(),typingMode:Cm.optional(),parentForkMaxTokens:b.number().int().nonnegative().optional(),mainKey:b.string().optional(),sendPolicy:y_.optional(),agentToAgent:b.object({maxPingPongTurns:b.number().int().min(0).max(5).optional()}).strict().optional(),threadBindings:b.object({enabled:b.boolean().optional(),idleHours:b.number().nonnegative().optional(),maxAgeHours:b.number().nonnegative().optional()}).strict().optional(),maintenance:b.object({mode:b.enum([`enforce`,`warn`]).optional(),pruneAfter:b.union([b.string(),b.number()]).optional(),pruneDays:b.number().int().positive().optional(),maxEntries:b.number().int().positive().optional(),rotateBytes:b.union([b.string(),b.number()]).optional(),resetArchiveRetention:b.union([b.string(),b.number(),b.literal(!1)]).optional(),maxDiskBytes:b.union([b.string(),b.number()]).optional(),highWaterBytes:b.union([b.string(),b.number()]).optional()}).strict().superRefine((e,t)=>{if(e.pruneAfter!==void 0)try{Hp(String(e.pruneAfter).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`pruneAfter`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.rotateBytes!==void 0)try{Bp(String(e.rotateBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`rotateBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.resetArchiveRetention!==void 0&&e.resetArchiveRetention!==!1)try{Hp(String(e.resetArchiveRetention).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`resetArchiveRetention`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.maxDiskBytes!==void 0)try{Bp(String(e.maxDiskBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`maxDiskBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.highWaterBytes!==void 0)try{Bp(String(e.highWaterBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`highWaterBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}}).optional()}).strict().optional(),x_=b.object({messagePrefix:b.string().optional(),responsePrefix:b.string().optional(),groupChat:ym,queue:zm,inbound:Bm,ackReaction:b.string().optional(),ackReactionScope:b.enum([`group-mentions`,`group-all`,`direct`,`all`]).optional(),removeAckAfterReply:b.boolean().optional(),statusReactions:b.object({enabled:b.boolean().optional(),emojis:b.object({thinking:b.string().optional(),tool:b.string().optional(),coding:b.string().optional(),web:b.string().optional(),done:b.string().optional(),error:b.string().optional(),stallSoft:b.string().optional(),stallHard:b.string().optional()}).strict().optional(),timing:b.object({debounceMs:b.number().int().min(0).optional(),stallSoftMs:b.number().int().min(0).optional(),stallHardMs:b.number().int().min(0).optional(),doneHoldMs:b.number().int().min(0).optional(),errorHoldMs:b.number().int().min(0).optional()}).strict().optional()}).strict().optional(),suppressToolErrors:b.boolean().optional(),tts:Am}).strict().optional(),S_=b.object({native:nh.optional().default(`auto`),nativeSkills:nh.optional().default(`auto`),text:b.boolean().optional(),bash:b.boolean().optional(),bashForegroundMs:b.number().int().min(0).max(3e4).optional(),config:b.boolean().optional(),debug:b.boolean().optional(),restart:b.boolean().optional().default(!0),useAccessGroups:b.boolean().optional(),ownerAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),ownerDisplay:b.enum([`raw`,`hash`]).optional().default(`raw`),ownerDisplaySecret:b.string().optional().register(H),allowFrom:mh.optional()}).strict().optional().default(()=>({native:`auto`,nativeSkills:`auto`,restart:!0,ownerDisplay:`raw`})),C_=b.object({mode:b.literal(`efficient`).optional()}).strict().optional(),w_=b.object({browserProxy:b.object({enabled:b.boolean().optional(),allowProfiles:b.array(b.string()).optional()}).strict().optional()}).strict().optional(),T_=b.object({path:b.string(),name:b.string().optional(),pattern:b.string().optional()}).strict(),E_=b.object({enabled:b.boolean().optional(),exportDir:b.string().optional(),retentionDays:b.number().int().nonnegative().optional()}).strict(),D_=b.object({voiceId:b.string().optional(),voiceAliases:b.record(b.string(),b.string()).optional(),modelId:b.string().optional(),outputFormat:b.string().optional(),apiKey:U.optional().register(H)}).catchall(b.unknown()),O_=b.object({transcription:Vm}).strict().optional(),k_=b.object({interval:b.string().optional(),debounceMs:b.number().int().nonnegative().optional(),onBoot:b.boolean().optional(),waitForBootSync:b.boolean().optional(),embedInterval:b.string().optional(),commandTimeoutMs:b.number().int().nonnegative().optional(),updateTimeoutMs:b.number().int().nonnegative().optional(),embedTimeoutMs:b.number().int().nonnegative().optional()}).strict(),A_=b.object({maxResults:b.number().int().positive().optional(),maxSnippetChars:b.number().int().positive().optional(),maxInjectedChars:b.number().int().positive().optional(),timeoutMs:b.number().int().nonnegative().optional()}).strict(),j_=b.object({command:b.string().optional(),searchMode:b.union([b.literal(`query`),b.literal(`search`),b.literal(`vsearch`)]).optional(),includeDefaultMemory:b.boolean().optional(),paths:b.array(T_).optional(),sessions:E_.optional(),update:k_.optional(),limits:A_.optional(),scope:y_.optional()}).strict(),M_=b.object({backend:b.union([b.literal(`builtin`),b.literal(`qmd`)]).optional(),citations:b.union([b.literal(`auto`),b.literal(`on`),b.literal(`off`)]).optional(),qmd:j_.optional()}).strict().optional(),N_=b.object({enabled:b.boolean().optional(),dispatch:b.object({enabled:b.boolean().optional()}).strict().optional(),backend:b.string().optional(),defaultAgent:b.string().optional(),allowedAgents:b.array(b.string()).optional(),maxConcurrentSessions:b.number().int().positive().optional(),stream:b.object({coalesceIdleMs:b.number().int().nonnegative().optional(),maxChunkChars:b.number().int().positive().optional()}).strict().optional(),runtime:b.object({ttlMinutes:b.number().int().positive().optional(),installCommand:b.string().optional()}).strict().optional()}).strict().optional(),P_=b.string().refine(e=>{try{return Hp(e),!0}catch{return!1}},{message:`invalid duration (use ms, s, m, h, d)`}),F_=b.union([b.number().int().positive(),b.string()]).refine(e=>{try{return Bp(String(e).trim(),{defaultUnit:`b`})>0}catch{return!1}},{message:`invalid byte size`}),I_=b.object({maxBytes:F_.optional(),keepLines:b.number().int().positive().optional()}).strict(),L_=b.union([b.string(),b.number().transform((e,t)=>{let n=new Date(e);return!Number.isFinite(e)||Number.isNaN(n.getTime())?(t.addIssue({code:b.ZodIssueCode.custom,message:`invalid timestamp`}),b.NEVER):n.toISOString()})]),R_=b.union([b.literal(`per-job`),b.literal(`per-hour`),b.literal(`per-1k-rows`),b.literal(`per-api-call`),b.literal(`per-day`),b.literal(`per-month`),b.literal(`custom`)]),z_=b.object({currency:b.string().optional(),model:b.string().optional(),amount:b.number().positive().optional(),unit:R_.optional(),unitLabel:b.string().optional()}).strict().optional(),B_=b.union([b.literal(`human`),b.literal(`agent`),b.literal(`agent-approval`),b.literal(`api`),b.literal(`dataset`),b.literal(`hybrid`)]),V_=b.object({kind:b.union([b.literal(`result`),b.literal(`artifact`),b.literal(`invoice`),b.literal(`receipt`),b.literal(`tx`),b.literal(`signature`),b.literal(`manual`)]).optional(),required:b.boolean().optional(),description:b.string().optional()}).strict(),H_=b.object({allowed:b.boolean().optional(),humanApprovalRequired:b.boolean().optional(),allowedSkills:b.array(b.string()).optional(),allowedPlugins:b.array(b.string()).optional(),maxRuntimeSeconds:b.number().int().positive().optional(),maxSpendAmount:b.number().positive().optional(),maxSpendCurrency:b.string().optional()}).strict().optional(),U_=b.object({kind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),address:b.string().optional()}).strict().optional(),W_=b.object({chain:b.literal(`solana`).optional(),address:b.string().optional()}).strict().optional(),G_=b.object({currency:b.string().optional(),chain:b.literal(`solana`).optional(),assetDecimals:b.number().int().min(0).max(18).optional(),asset:U_,payee:W_}).strict().optional(),K_=b.object({id:b.string().optional(),source:b.union([b.literal(`builtin`),b.literal(`manual`),b.literal(`skill`)]).optional(),enabled:b.boolean().optional(),title:b.string(),summary:b.string().optional(),serviceKind:b.string(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),capabilities:b.array(b.string()).optional(),pricing:z_,fulfillmentMode:B_.optional(),performer:B_.optional(),receiptRules:b.array(V_).optional(),automation:H_,paymentRails:b.array(b.string()).optional(),acceptedAssets:b.array(b.string()).optional(),paymentDefaults:G_,availability:b.string().optional(),visibility:b.string().optional(),requiredTrustOrBondTier:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),q_=b.union([b.literal(`draft`),b.literal(`open`),b.literal(`matched`),b.literal(`closed`)]),J_=b.union([b.literal(`draft`),b.literal(`accepted`),b.literal(`funded`),b.literal(`running`),b.literal(`delivered`),b.literal(`disputed`),b.literal(`closed`),b.literal(`cancelled`)]),Y_=b.union([b.literal(`not_submitted`),b.literal(`pending`),b.literal(`accepted`),b.literal(`failed`)]),X_=b.union([b.literal(`draft`),b.literal(`requires_payment`),b.literal(`submitted`),b.literal(`verified`),b.literal(`failed`),b.literal(`cancelled`)]),Z_=b.union([b.literal(`direct`),b.literal(`escrow`)]),Q_=b.union([b.literal(`not_required`),b.literal(`requires_payment`),b.literal(`submitted`),b.literal(`verified`),b.literal(`settled`),b.literal(`held`),b.literal(`released`),b.literal(`failed`),b.literal(`disputed`),b.literal(`cancelled`)]),$_=b.union([b.literal(`not_applicable`),b.literal(`required`),b.literal(`funded`),b.literal(`held`),b.literal(`released`),b.literal(`refunded`),b.literal(`cancelled`),b.literal(`blocked`)]),ev=b.union([b.literal(`pending`),b.literal(`ready`),b.literal(`running`),b.literal(`delivered`),b.literal(`failed`),b.literal(`blocked`)]),tv=b.union([b.literal(`pending`),b.literal(`issued`),b.literal(`verified`),b.literal(`rejected`)]),nv=b.union([b.literal(`one-time`),b.literal(`per-job`),b.literal(`per-hour`),b.literal(`per-1k-rows`),b.literal(`per-api-call`),b.literal(`per-day`),b.literal(`per-week`),b.literal(`per-month`),b.literal(`custom`)]),rv=b.union([b.literal(`not_applicable`),b.literal(`draft`),b.literal(`active`),b.literal(`past_due`),b.literal(`paused`),b.literal(`expired`),b.literal(`cancelled`),b.literal(`blocked`)]),iv=b.union([b.literal(`none`),b.literal(`manual`),b.literal(`auto-renew`),b.literal(`auto-renew-with-approval`)]),av=b.union([b.literal(`not_required`),b.literal(`scheduled`),b.literal(`stopped`),b.literal(`blocked`)]),ov=b.object({status:rv.optional(),billingPeriod:nv.optional(),maxBuyers:b.number().int().positive().optional(),remainingSlots:b.number().int().min(0).optional(),startsAt:b.string().optional(),endsAt:b.string().optional(),renewalPolicy:iv.optional(),paymentExpiresAt:b.string().optional(),deliveryStop:b.object({status:av.optional(),reason:b.string().optional(),scheduledAt:b.string().optional(),stoppedAt:b.string().optional(),updatedAt:b.string().optional()}).strict().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),sv=b.union([b.literal(`app-inbox`),b.literal(`channel`),b.literal(`webhook`),b.literal(`websocket`),b.literal(`federation`),b.literal(`api`),b.literal(`artifact`)]),cv=b.union([b.literal(`draft`),b.literal(`ready`),b.literal(`revoked`),b.literal(`expired`),b.literal(`blocked`)]),lv=b.object({targetId:b.string().optional(),source:b.union([b.literal(`order`),b.literal(`subscription`),b.literal(`manual`)]).optional(),owner:b.union([b.literal(`buyer`),b.literal(`seller`)]).optional(),kind:sv.optional(),status:cv.optional(),label:b.string().optional(),descriptor:b.string().optional(),maskedTarget:b.string().optional(),scope:b.object({orderId:b.string().optional(),subscriptionId:b.string().optional(),serviceKind:b.string().optional(),expiresAt:b.string().optional(),maxDeliveries:b.number().int().positive().optional()}).strict().optional(),channel:b.object({provider:b.string().optional(),to:b.string().optional(),accountId:b.string().optional(),threadId:b.union([b.string(),b.number()]).optional()}).strict().optional(),webhook:b.object({url:b.string().optional(),method:b.literal(`POST`).optional(),secretRef:b.string().optional()}).strict().optional(),websocket:b.object({url:b.string().optional(),tokenRef:b.string().optional()}).strict().optional(),federation:b.object({handle:b.string().optional(),nodeEndpoint:b.string().optional()}).strict().optional(),api:b.object({url:b.string().optional(),tokenRef:b.string().optional()}).strict().optional(),artifact:b.object({artifactRef:b.string().optional()}).strict().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional(),revokedAt:b.string().optional()}).strict(),uv=b.object({intentId:b.string().optional(),status:X_.optional(),amount:b.number().optional(),currency:b.string().optional(),unit:R_.optional(),method:b.string().optional(),chain:b.literal(`solana`).optional(),assetKind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),assetAddress:b.string().optional(),assetDecimals:b.number().int().min(0).max(18).optional(),expiresInMinutes:b.number().int().positive().optional(),acceptedAssets:b.array(b.string()).optional(),payerWalletId:b.string().optional(),payeeHandle:b.string().optional(),payeeAddress:b.string().optional(),txRef:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),dv=b.object({status:$_.optional(),holdPolicy:b.union([b.literal(`none`),b.literal(`release_on_delivery`),b.literal(`manual_release`)]).optional(),releaseRequired:b.boolean().optional(),vaultWalletId:b.string().optional(),vaultWalletName:b.string().optional(),vaultAddress:b.string().optional(),fundingRequestId:b.string().optional(),fundingTxRef:b.string().optional(),fundedAt:b.string().optional(),releaseRequestId:b.string().optional(),releaseTxRef:b.string().optional(),releasedAt:b.string().optional(),refundRequestId:b.string().optional(),refundTxRef:b.string().optional(),refundedAt:b.string().optional(),cancelledAt:b.string().optional(),notes:b.string().optional(),updatedAt:b.string().optional()}).strict(),fv=b.object({mode:Z_.optional(),status:Q_.optional(),amount:b.number().optional(),currency:b.string().optional(),chain:b.literal(`solana`).optional(),assetKind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),assetAddress:b.string().optional(),assetDecimals:b.number().int().min(0).max(18).optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),evidenceRef:b.string().optional(),payerWalletId:b.string().optional(),payeeAddress:b.string().optional(),escrow:dv.optional(),notes:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional(),verifiedAt:b.string().optional(),settledAt:b.string().optional()}).strict(),pv=b.object({status:ev.optional(),fulfillmentMode:B_.optional(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),targetId:b.string().optional(),targetKind:sv.optional(),targetStatus:cv.optional(),targetLabel:b.string().optional(),targetMasked:b.string().optional(),target:lv.optional(),resultRef:b.string().optional(),artifactRef:b.string().optional(),notes:b.string().optional(),deliveredAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),mv=b.object({status:tv.optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),resultRef:b.string().optional(),disputeCaseId:b.string().optional(),notes:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),hv=b.object({id:b.string().optional(),source:b.union([b.literal(`manual`),b.literal(`chat`)]).optional(),enabled:b.boolean().optional(),status:q_.optional(),title:b.string(),summary:b.string().optional(),serviceKind:b.string(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),capabilities:b.array(b.string()).optional(),pricing:z_,fulfillmentMode:B_.optional(),receiptRules:b.array(V_).optional(),paymentRails:b.array(b.string()).optional(),acceptedAssets:b.array(b.string()).optional(),requiredTrustOrBondTier:b.string().optional(),visibility:b.string().optional(),expiresAt:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),gv=b.object({id:b.string().optional(),source:b.union([b.literal(`local`),b.literal(`federation`)]).optional(),status:J_.optional(),offerId:b.string().optional(),requestId:b.string().optional(),buyerHandle:b.string().optional(),sellerHandle:b.string().optional(),sellerEndpoint:b.string().optional(),sellerOrderId:b.string().optional(),sellerSyncStatus:Y_.optional(),sellerSyncError:b.string().optional(),sellerSyncedAt:b.string().optional(),sellerAcceptedAt:b.string().optional(),serviceKind:b.string().optional(),title:b.string().optional(),pricing:z_,fulfillmentMode:B_.optional(),receiptRules:b.array(V_).optional(),paymentIntent:uv.optional(),settlement:fv.optional(),delivery:pv.optional(),subscription:ov.optional(),receipt:mv.optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),resultRef:b.string().optional(),disputeCaseId:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),_v=b.object({allowPrograms:b.array(b.string()).optional(),tokenCaps:b.record(b.string(),b.object({maxPerTx:b.string().optional(),maxDaily:b.string().optional()}).strict()).optional(),maxPerTx:b.string().optional(),maxDaily:b.string().optional()}).strict(),vv=b.object({provider:b.object({id:b.union([b.literal(`embedded-keystore`),b.literal(`local-socket-signer`),b.literal(`alchemy`),b.literal(`turnkey`),b.literal(`privy`)]).optional()}).strict().optional(),execution:b.object({mode:b.union([b.literal(`manual`),b.literal(`autonomous`)]).optional()}).strict().optional(),approvalAuth:b.object({mode:b.union([b.literal(`none`),b.literal(`webauthn`)]).optional(),challengeTtlSeconds:b.number().int().positive().optional(),grantTtlSeconds:b.number().int().positive().optional()}).strict().optional(),keystore:b.object({enabled:b.boolean().optional(),path:b.string().optional(),chainSupport:b.array(b.literal(`solana`)).optional(),autoLockSeconds:b.number().int().nonnegative().optional(),requirePasskeyForUnlock:b.boolean().optional()}).strict().optional(),runtime:b.object({enabled:b.boolean().optional(),mode:b.union([b.literal(`managed`),b.literal(`external`)]).optional(),runtime:b.union([b.literal(`external-docker`),b.literal(`external-custom`)]).optional(),external:b.object({kind:b.union([b.literal(`docker`),b.literal(`custom`)]).optional()}).strict().optional(),auth:b.object({mode:b.union([b.literal(`jwt-bootstrap`),b.literal(`static-token-compat`)]).optional(),bootstrapUrl:b.string().optional()}).strict().optional(),source:b.object({ref:b.string().optional()}).strict().optional(),chains:b.array(b.literal(`solana`)).optional(),service:b.object({host:b.string().optional(),port:b.number().int().min(1).max(65535).optional()}).strict().optional(),install:b.object({enabled:b.boolean().optional(),version:b.string().optional()}).strict().optional(),policy:b.object({capsEnabled:b.boolean().optional(),directSigning:b.boolean().optional(),skillsEnabled:b.boolean().optional(),solana:_v.optional()}).strict().optional(),toolAccess:b.object({mode:b.union([b.literal(`owner-only`),b.literal(`allowlist`),b.literal(`all`)]).optional(),allowAgents:b.array(b.string()).optional(),allowSkills:b.array(b.string()).optional(),denySkills:b.array(b.string()).optional(),allowSources:b.array(b.string()).optional()}).strict().optional()}).strict().optional()}).strict().optional(),yv=b.object({$schema:b.string().optional(),meta:b.object({lastTouchedVersion:b.string().optional(),lastTouchedAt:L_.optional()}).strict().optional(),env:b.object({shellEnv:b.object({enabled:b.boolean().optional(),timeoutMs:b.number().int().nonnegative().optional()}).strict().optional(),vars:b.record(b.string(),b.string()).optional()}).catchall(b.string()).optional(),wizard:b.object({lastRunAt:b.string().optional(),lastRunVersion:b.string().optional(),lastRunCommit:b.string().optional(),lastRunCommand:b.string().optional(),lastRunMode:b.union([b.literal(`local`),b.literal(`remote`)]).optional()}).strict().optional(),diagnostics:b.object({enabled:b.boolean().optional(),flags:b.array(b.string()).optional(),otel:b.object({enabled:b.boolean().optional(),endpoint:b.string().optional(),protocol:b.union([b.literal(`http/protobuf`),b.literal(`grpc`)]).optional(),headers:b.record(b.string(),b.string()).optional(),serviceName:b.string().optional(),traces:b.boolean().optional(),metrics:b.boolean().optional(),logs:b.boolean().optional(),sampleRate:b.number().min(0).max(1).optional(),flushIntervalMs:b.number().int().nonnegative().optional()}).strict().optional(),prometheus:b.object({enabled:b.boolean().optional(),path:b.string().optional(),requireAuth:b.boolean().optional(),includeRuntime:b.boolean().optional()}).strict().optional(),cacheTrace:b.object({enabled:b.boolean().optional(),filePath:b.string().optional(),includeMessages:b.boolean().optional(),includePrompt:b.boolean().optional(),includeSystem:b.boolean().optional()}).strict().optional()}).strict().optional(),logging:b.object({level:b.union([b.literal(`silent`),b.literal(`fatal`),b.literal(`error`),b.literal(`warn`),b.literal(`info`),b.literal(`debug`),b.literal(`trace`)]).optional(),file:b.string().optional(),maxFileBytes:b.number().int().positive().optional(),consoleLevel:b.union([b.literal(`silent`),b.literal(`fatal`),b.literal(`error`),b.literal(`warn`),b.literal(`info`),b.literal(`debug`),b.literal(`trace`)]).optional(),consoleStyle:b.union([b.literal(`pretty`),b.literal(`compact`),b.literal(`json`)]).optional(),redactSensitive:b.union([b.literal(`off`),b.literal(`tools`)]).optional(),redactPatterns:b.array(b.string()).optional()}).strict().optional(),update:b.object({channel:b.union([b.literal(`stable`),b.literal(`beta`),b.literal(`dev`)]).optional(),checkOnStart:b.boolean().optional()}).strict().optional(),browser:b.object({enabled:b.boolean().optional(),evaluateEnabled:b.boolean().optional(),cdpUrl:b.string().optional(),remoteCdpTimeoutMs:b.number().int().nonnegative().optional(),remoteCdpHandshakeTimeoutMs:b.number().int().nonnegative().optional(),color:b.string().optional(),executablePath:b.string().optional(),headless:b.boolean().optional(),noSandbox:b.boolean().optional(),attachOnly:b.boolean().optional(),defaultProfile:b.string().optional(),snapshotDefaults:C_,profiles:b.record(b.string().regex(/^[a-z0-9-]+$/,`Profile names must be alphanumeric with hyphens only`),b.object({cdpPort:b.number().int().min(1).max(65535).optional(),cdpUrl:b.string().optional(),driver:b.union([b.literal(`clawd`),b.literal(`extension`)]).optional(),color:Hm}).strict().refine(e=>e.cdpPort||e.cdpUrl,{message:`Profile must set cdpPort or cdpUrl`})).optional()}).strict().optional(),ui:b.object({seamColor:Hm.optional(),assistant:b.object({name:b.string().max(50).optional(),avatar:b.string().max(200).optional()}).strict().optional()}).strict().optional(),auth:b.object({profiles:b.record(b.string(),b.object({provider:b.string(),mode:b.union([b.literal(`api_key`),b.literal(`oauth`),b.literal(`token`)]),email:b.string().optional()}).strict()).optional(),order:b.record(b.string(),b.array(b.string())).optional(),cooldowns:b.object({billingBackoffHours:b.number().positive().optional(),billingBackoffHoursByProvider:b.record(b.string(),b.number().positive()).optional(),overloadedBackoffMs:b.number().positive().optional(),overloadedProfileRotations:b.number().nonnegative().optional(),rateLimitedProfileRotations:b.number().nonnegative().optional(),billingMaxHours:b.number().positive().optional(),failureWindowHours:b.number().positive().optional()}).strict().optional()}).strict().optional(),acp:N_,models:vm,nodeHost:w_,agents:Ah,tools:Oh,bindings:jh,broadcast:Nh,audio:O_,media:b.object({preserveFilenames:b.boolean().optional()}).strict().optional(),messages:x_,commands:S_,approvals:Ih,session:b_,cron:b.object({enabled:b.boolean().optional(),store:b.string().optional(),maxConcurrentRuns:b.number().int().positive().optional(),webhook:b.string().url().refine(e=>/^https?:\/\//iu.test(e),`Must be an http(s) URL`).optional(),webhookToken:b.string().optional().register(H),sessionRetention:b.union([P_,b.literal(!1)]).optional(),runLog:I_.optional()}).strict().optional(),hooks:b.object({enabled:b.boolean().optional(),path:b.string().optional(),token:b.string().optional().register(H),defaultSessionKey:b.string().optional(),allowRequestSessionKey:b.boolean().optional(),allowedSessionKeyPrefixes:b.array(b.string()).optional(),allowedAgentIds:b.array(b.string()).optional(),maxBodyBytes:b.number().int().positive().optional(),presets:b.array(b.string()).optional(),transformsDir:b.string().optional(),mappings:b.array(zh).optional(),gmail:Wh,internal:Uh}).strict().optional(),web:b.object({enabled:b.boolean().optional(),heartbeatSeconds:b.number().int().positive().optional(),reconnect:b.object({initialMs:b.number().positive().optional(),maxMs:b.number().positive().optional(),factor:b.number().positive().optional(),jitter:b.number().min(0).max(1).optional(),maxAttempts:b.number().int().min(0).optional()}).strict().optional()}).strict().optional(),channels:__,discovery:b.object({wideArea:b.object({enabled:b.boolean().optional(),domain:b.string().optional()}).strict().optional(),mdns:b.object({mode:b.enum([`off`,`minimal`,`full`]).optional()}).strict().optional()}).strict().optional(),federation:b.object({offers:b.object({manual:b.array(K_).optional(),skill:b.array(K_.extend({source:b.union([b.literal(`skill`)]).optional(),skillId:b.string().optional()}).strict()).optional()}).strict().optional(),marketplace:b.object({requests:b.object({manual:b.array(hv).optional()}).strict().optional(),deliveryTargets:b.object({local:b.array(lv).optional()}).strict().optional(),orders:b.object({local:b.array(gv).optional()}).strict().optional()}).strict().optional(),bond:b.object({walletId:b.string().optional()}).strict().optional()}).strict().optional(),canvasHost:b.object({enabled:b.boolean().optional(),root:b.string().optional(),port:b.number().int().positive().optional(),liveReload:b.boolean().optional()}).strict().optional(),talk:b.object({provider:b.string().optional(),providers:b.record(b.string(),D_).optional(),voiceId:b.string().optional(),voiceAliases:b.record(b.string(),b.string()).optional(),modelId:b.string().optional(),outputFormat:b.string().optional(),apiKey:U.optional().register(H),interruptOnSpeech:b.boolean().optional()}).strict().optional(),gateway:b.object({port:b.number().int().positive().optional(),channelHealthCheckMinutes:b.number().int().min(0).optional(),mode:b.union([b.literal(`local`),b.literal(`remote`)]).optional(),bind:b.union([b.literal(`auto`),b.literal(`lan`),b.literal(`loopback`),b.literal(`custom`),b.literal(`tailnet`)]).optional(),controlUi:b.object({enabled:b.boolean().optional(),basePath:b.string().optional(),root:b.string().optional(),allowedOrigins:b.array(b.string()).optional(),allowInsecureAuth:b.boolean().optional(),dangerouslyDisableDeviceAuth:b.boolean().optional(),dangerouslyAllowHostHeaderOriginFallback:b.boolean().optional()}).strict().optional(),auth:b.object({mode:b.union([b.literal(`token`),b.literal(`password`),b.literal(`trusted-proxy`)]).optional(),token:b.string().optional().register(H),password:b.string().optional().register(H),allowTailscale:b.boolean().optional(),rateLimit:b.object({maxAttempts:b.number().optional(),windowMs:b.number().optional(),lockoutMs:b.number().optional(),exemptLoopback:b.boolean().optional()}).strict().optional(),trustedProxy:b.object({userHeader:b.string().min(1,`userHeader is required for trusted-proxy mode`),requiredHeaders:b.array(b.string()).optional(),allowUsers:b.array(b.string()).optional()}).strict().optional()}).strict().optional(),trustedProxies:b.array(b.string()).optional(),tools:b.object({deny:b.array(b.string()).optional(),allow:b.array(b.string()).optional()}).strict().optional(),tailscale:b.object({mode:b.union([b.literal(`off`),b.literal(`serve`),b.literal(`funnel`)]).optional(),resetOnExit:b.boolean().optional()}).strict().optional(),remote:b.object({url:b.string().optional(),transport:b.union([b.literal(`ssh`),b.literal(`direct`)]).optional(),token:b.string().optional().register(H),password:b.string().optional().register(H),tlsFingerprint:b.string().optional(),sshTarget:b.string().optional(),sshIdentity:b.string().optional()}).strict().optional(),reload:b.object({mode:b.union([b.literal(`off`),b.literal(`restart`),b.literal(`hot`),b.literal(`hybrid`)]).optional(),debounceMs:b.number().int().min(0).optional()}).strict().optional(),tls:b.object({enabled:b.boolean().optional(),autoGenerate:b.boolean().optional(),certPath:b.string().optional(),keyPath:b.string().optional(),caPath:b.string().optional()}).optional(),http:b.object({endpoints:b.object({chatCompletions:b.object({enabled:b.boolean().optional()}).strict().optional(),responses:b.object({enabled:b.boolean().optional(),maxBodyBytes:b.number().int().positive().optional(),maxUrlParts:b.number().int().nonnegative().optional(),files:b.object({allowUrl:b.boolean().optional(),urlAllowlist:b.array(b.string()).optional(),allowedMimes:b.array(b.string()).optional(),maxBytes:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),maxRedirects:b.number().int().nonnegative().optional(),timeoutMs:b.number().int().positive().optional(),pdf:b.object({maxPages:b.number().int().positive().optional(),maxPixels:b.number().int().positive().optional(),minTextChars:b.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),images:b.object({allowUrl:b.boolean().optional(),urlAllowlist:b.array(b.string()).optional(),allowedMimes:b.array(b.string()).optional(),maxBytes:b.number().int().positive().optional(),maxRedirects:b.number().int().nonnegative().optional(),timeoutMs:b.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),securityHeaders:b.object({strictTransportSecurity:b.union([b.string(),b.literal(!1)]).optional()}).strict().optional()}).strict().optional(),nodes:b.object({browser:b.object({mode:b.union([b.literal(`auto`),b.literal(`manual`),b.literal(`off`)]).optional(),node:b.string().optional()}).strict().optional(),allowCommands:b.array(b.string()).optional(),denyCommands:b.array(b.string()).optional()}).strict().optional(),customBindHost:b.string().optional(),allowRealIpFallback:b.boolean().optional()}).strict().optional(),memory:M_,wallet:vv,secrets:fm,mcp:b.object({servers:b.record(b.string(),b.record(b.string(),b.unknown())).optional()}).strict().optional(),skills:b.object({allowBundled:b.array(b.string()).optional(),load:b.object({extraDirs:b.array(b.string()).optional(),watch:b.boolean().optional(),watchDebounceMs:b.number().int().min(0).optional()}).strict().optional(),install:b.object({preferBrew:b.boolean().optional(),nodeManager:b.union([b.literal(`npm`),b.literal(`pnpm`),b.literal(`yarn`),b.literal(`bun`)]).optional()}).strict().optional(),marketplace:b.object({allowRegistries:b.array(b.string()).optional()}).strict().optional(),entries:b.record(b.string(),b.object({enabled:b.boolean().optional(),apiKey:U.optional().register(H),env:b.record(b.string(),b.string()).optional(),config:b.record(b.string(),b.unknown()).optional()}).strict()).optional()}).strict().optional(),plugins:b.object({enabled:b.boolean().optional(),allow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),load:b.object({paths:b.array(b.string()).optional()}).strict().optional(),slots:b.object({memory:b.string().optional()}).strict().optional(),entries:b.record(b.string(),b.object({enabled:b.boolean().optional(),config:b.record(b.string(),b.unknown()).optional(),runtime:b.object({helpers:b.object({sessions:b.object({read:b.boolean().optional()}).strict().optional()}).strict().optional(),adminRpcActions:b.object({allow:b.array(b.object({method:b.union([b.literal(`chat.inject`),b.literal(`push.test`),b.literal(`web.login.start`),b.literal(`web.login.wait`)]).optional(),sources:b.array(b.string()).optional(),requireOperatorApproval:b.boolean().optional()}).strict()).optional()}).strict().optional()}).strict().optional()}).strict()).optional(),installs:b.record(b.string(),b.object(Gh).strict()).optional()}).strict().optional()}).strict().superRefine((e,t)=>{let n=e.agents?.list??[];if(n.length===0)return;let r=new Set(n.map(e=>e.id)),i=e.broadcast;if(i){for(let[e,n]of Object.entries(i))if(e!==`strategy`&&Array.isArray(n))for(let i=0;i<n.length;i+=1){let a=n[i];r.has(a)||t.addIssue({code:b.ZodIssueCode.custom,path:[`broadcast`,e,i],message:`Unknown agent id "${a}" (not in agents.list).`})}}}),bv=new Set;function xv(e,t){let n=i.resolve(t);return Rp(n,i.resolve(n,e))}function Sv(e){let t=e.agents?.list;if(!Array.isArray(t)||t.length===0)return[];let n=[];for(let[r,i]of t.entries()){if(!i||typeof i!=`object`)continue;let t=i.identity?.avatar;if(typeof t!=`string`)continue;let a=t.trim();if(a&&!(Pp(a)||Fp(a))){if(a.startsWith(`~`)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}if(Ip(a)&&!Lp(a)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}xv(a,Yc(e,i.id??Kc(e)))||n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must stay within the agent workspace.`})}}return n}function Cv(e){let t=Gf(e);if(t.length>0)return{ok:!1,issues:t.map(e=>({path:e.path,message:e.message}))};let n=yv.safeParse(e);if(!n.success)return{ok:!1,issues:n.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))};let r=ta(n.data);if(r.length>0)return{ok:!1,issues:[{path:`agents.list`,message:na(r)}]};let i=Sv(n.data);return i.length>0?{ok:!1,issues:i}:{ok:!0,config:n.data}}function wv(e){let t=Cv(e);return t.ok?{ok:!0,config:Id(Ld(Nd(t.config)))}:t}function Tv(e){return Dv(e,{applyDefaults:!0})}function Ev(e){return Dv(e,{applyDefaults:!1})}function Dv(e,t){let n=t.applyDefaults?wv(e):Cv(e);if(!n.ok)return{ok:!1,issues:n.issues,warnings:[]};let r=n.config,i=[],a=[],o=E(e)&&Object.prototype.hasOwnProperty.call(e,`plugins`),s=null,c=()=>{if(s)return s;let e=ou({config:r,workspaceDir:Yc(r,Kc(r))??void 0}),t=new Set(e.plugins.map(e=>e.id)),n=pl(r.plugins);for(let t of e.diagnostics){let e=t.pluginId?`plugins.entries.${t.pluginId}`:`plugins`;!t.pluginId&&t.message.includes(`plugin path not found`)&&(e=`plugins.load.paths`);let n=`${t.pluginId?`plugin ${t.pluginId}`:`plugin`}: ${t.message}`;t.level===`error`?i.push({path:e,message:n}):a.push({path:e,message:n})}return s={registry:e,knownIds:t,normalizedPlugins:n},s},l=new Set([`defaults`,`modelByChannel`,...wt]);if(r.channels&&E(r.channels))for(let e of Object.keys(r.channels)){let t=e.trim();if(t){if(!l.has(t)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels)l.add(e)}l.has(t)||i.push({path:`channels.${t}`,message:`unknown channel id: ${t}`})}}let u=new Set;for(let e of wt)u.add(e.toLowerCase());let d=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();if(!n){i.push({path:t,message:`heartbeat target must not be empty`});return}let r=n.toLowerCase();if(!(r===`last`||r===`none`)&&!Ot(n)){if(!u.has(r)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels){let t=e.trim();t&&u.add(t.toLowerCase())}}u.has(r)||i.push({path:t,message:`unknown heartbeat target: ${e}`})}};if(d(r.agents?.defaults?.heartbeat?.target,`agents.defaults.heartbeat.target`),Array.isArray(r.agents?.list))for(let[e,t]of r.agents.list.entries())d(t?.heartbeat?.target,`agents.list.${e}.heartbeat.target`);if(!o)return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a};let{registry:f,knownIds:p,normalizedPlugins:m}=c(),h=(e,t,n)=>{if(!bv.has(t)){if(n?.warnOnly){a.push({path:e,message:`plugin not found: ${t} (stale config entry ignored; remove it from plugins config)`});return}i.push({path:e,message:`plugin not found: ${t}`})}},g=r.plugins,_=g?.entries;if(_&&E(_))for(let e of Object.keys(_))p.has(e)||h(`plugins.entries.${e}`,e,{warnOnly:!0});let v=g?.allow??[];for(let e of v)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.allow`,e);let ee=g?.deny??[];for(let e of ee)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.deny`,e);let y=m.slots.memory;typeof y==`string`&&y.trim()&&!p.has(y)&&h(`plugins.slots.memory`,y);let b=null,te=new Set;for(let e of f.plugins){let t=e.id;if(te.has(t))continue;te.add(t);let n=m.entries[t],o=!!n?.config,s=gl({id:t,origin:e.origin,config:m,rootConfig:r}),c=s.enabled,l=s.reason;if(c){let n=_l({id:t,kind:e.kind,slot:y,selectedId:b});n.enabled||(c=!1,l=n.reason),n.selected&&e.kind===`memory`&&(b=t)}if(c||o)if(e.configSchema){let r=kp({schema:e.configSchema,cacheKey:e.schemaCacheKey??e.manifestPath??t,value:n?.config??{}});if(!r.ok)for(let e of r.errors)i.push({path:`plugins.entries.${t}.config`,message:`invalid config: ${e}`})}else i.push({path:`plugins.entries.${t}`,message:`plugin schema missing for ${t}`});!c&&o&&a.push({path:`plugins.entries.${t}`,message:`plugin disabled (${l??`disabled`}) but config is present`})}return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a}}const Ov=/^v?(\d+)\.(\d+)\.(\d+)(?:-(\d+))?/,kv=/^v?(20\d{2})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?$/;function Av(e){if(!e)return null;let t=e.trim().match(Ov);if(!t)return null;let[,n,r,i,a]=t,o=e.trim().match(kv);return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),revision:a?Number.parseInt(a,10):0,flavor:o?`calendar`:`semver`}}function jv(e,t){let n=Av(e),r=Av(t);return!n||!r?null:n.flavor===r.flavor?n.major===r.major?n.minor===r.minor?n.patch===r.patch?n.revision===r.revision?0:n.revision<r.revision?-1:1:n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1:0}const Mv=[`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`ANTHROPIC_OAUTH_TOKEN`,`GEMINI_API_KEY`,`ZAI_API_KEY`,`OPENROUTER_API_KEY`,`AI_GATEWAY_API_KEY`,`MINIMAX_API_KEY`,`SYNTHETIC_API_KEY`,`ELEVENLABS_API_KEY`,`TELEGRAM_BOT_TOKEN`,`DISCORD_BOT_TOKEN`,`SLACK_BOT_TOKEN`,`SLACK_APP_TOKEN`,`FASED_GATEWAY_TOKEN`,`FASED_GATEWAY_PASSWORD`],Nv=[];function Pv(e){let t=e,n=[];for(let e of Nv){let r=!!(t.plugins?.entries&&e in t.plugins.entries),i=!!(t.plugins?.installs&&e in t.plugins.installs),a=Array.isArray(t.plugins?.allow)&&t.plugins.allow.includes(e),o=t.plugins?.slots?.memory===e;!r&&!i&&!a&&!o||(t=Ui(t,e).config,n.push(e))}return{config:t,removedPluginIds:n}}const Fv=/^(?<policyPath>[a-z0-9_.-]+)\s*=\s*"open"\s+requires\s+(?<allowPath>[a-z0-9_.-]+)(?:\s+\(or\s+[a-z0-9_.-]+\))?\s+to include "\*"$/i,Iv=new Set;function Lv(e){return _.createHash(`sha256`).update(e??``).digest(`hex`)}function Rv(e,t){let n=t.match(Fv),r=n?.groups?.policyPath?.trim(),i=n?.groups?.allowPath?.trim();return!r||!i?`Config validation failed: ${e}: ${t}`:[`Config validation failed: ${e}`,``,`Configuration mismatch: ${r} is "open", but ${i} does not include "*".`,``,`Fix with:`,` fased config set ${i} '["*"]'`,``,`Or switch policy:`,` fased config set ${r} "pairing"`].join(`
3
- `)}function zv(e){return/^[0-9]+$/.test(e)}function Bv(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Vv(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const Hv=Symbol(`write-pruned-object`);function Uv(e,t,n){if(n>=t.length)return{changed:!1,value:e};let r=t[n],i=n===t.length-1;if(Array.isArray(e)){if(!zv(r))return{changed:!1,value:e};let a=Number.parseInt(r,10);if(!Number.isFinite(a)||a<0||a>=e.length)return{changed:!1,value:e};if(i){let t=e.slice();return t.splice(a,1),{changed:!0,value:t}}let o=Uv(e[a],t,n+1);if(!o.changed)return{changed:!1,value:e};let s=e.slice();return o.value===Hv?s.splice(a,1):s[a]=o.value,{changed:!0,value:s}}if(Gi(r)||!Bv(e)||!Vv(e,r))return{changed:!1,value:e};if(i){let t={...e};return delete t[r],{changed:!0,value:Object.keys(t).length===0?Hv:t}}let a=Uv(e[r],t,n+1);if(!a.changed)return{changed:!1,value:e};let o={...e};return a.value===Hv?delete o[r]:o[r]=a.value,{changed:!0,value:Object.keys(o).length===0?Hv:o}}function Wv(e,t){if(t.length===0)return{changed:!1,next:e};let n=Uv(e,t,0);return n.changed?n.value===Hv?{changed:!0,next:{}}:Bv(n.value)?{changed:!0,next:Kv(n.value)}:{changed:!1,next:e}:{changed:!1,next:e}}function Gv(e){if(typeof e.hash==`string`){let t=e.hash.trim();if(t)return t}return typeof e.raw==`string`?Lv(e.raw):null}function Kv(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:e}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function qv(e){if(!$(e))return!1;let t=e.meta;return $(t)}function Jv(e){if(!$(e))return null;let t=e.gateway;if(!$(t)||typeof t.mode!=`string`)return null;let n=t.mode.trim();return n.length>0?n:null}function Yv(e){return structuredClone(e)}function Xv(e,t){if(!$(e)||!$(t))return Yv(t);let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=i in e;if(!(i in t)){n[i]=null;continue}let a=t[i];if(!r){n[i]=Yv(a);continue}let o=e[i];if($(o)&&$(a)){let e=Xv(o,a);if($(e)&&Object.keys(e).length===0)continue;n[i]=e;continue}u(o,a)||(n[i]=Yv(a))}return n}function Zv(e,t,n){if(typeof e==`string`){Yd(e)&&n.set(t,e);return}if(Array.isArray(e)){e.forEach((e,r)=>{Zv(e,`${t}[${r}]`,n)});return}if($(e))for(let[r,i]of Object.entries(e))Zv(i,t?`${t}.${r}`:r,n)}function Qv(e,t,n,r){if(Array.isArray(e)&&Array.isArray(t)){let i=Math.max(e.length,t.length);for(let a=0;a<i;a+=1){let i=n?`${n}[${a}]`:`[${a}]`;if(a>=e.length||a>=t.length){r.add(i);continue}Qv(e[a],t[a],i,r)}return}if($(e)&&$(t)){let i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=n?`${n}.${a}`:a,o=a in e;if(!(a in t)||!o){r.add(i);continue}Qv(e[a],t[a],i,r)}return}u(e,t)||r.add(n)}function $v(e){if(!e)return``;if(e.endsWith(`]`)){let t=e.lastIndexOf(`[`);return t>0?e.slice(0,t):``}let t=e.lastIndexOf(`.`);return t>=0?e.slice(0,t):``}function ey(e,t){if(t.has(e))return!0;let n=$v(e);for(;n;){if(t.has(n))return!0;n=$v(n)}return t.has(``)}function ty(e,t,n,r){if(typeof e==`string`){if(!ey(t,r)){let e=n.get(t);if(e!==void 0)return e}return e}if(Array.isArray(e)){let i=!1,a=e.map((e,a)=>{let o=ty(e,`${t}[${a}]`,n,r);return o!==e&&(i=!0),o});return i?a:e}if($(e)){let i=!1,a={};for(let[o,s]of Object.entries(e)){let e=ty(s,t?`${t}.${o}`:o,n,r);e!==s&&(i=!0),a[o]=e}return i?a:e}return e}function ny(e,t){return i.join(S(e,t),`logs`,`config-audit.jsonl`)}function ry(e){let t=[];return e.existsBefore?(typeof e.previousBytes==`number`&&typeof e.nextBytes==`number`&&e.previousBytes>=512&&e.nextBytes<Math.floor(e.previousBytes*.5)&&t.push(`size-drop:${e.previousBytes}->${e.nextBytes}`),e.hasMetaBefore||t.push(`missing-meta-before-write`),e.gatewayModeBefore&&!e.gatewayModeAfter&&t.push(`gateway-mode-removed`),t):t}async function iy(e,t){try{let n=ny(e.env,e.homedir);await e.fs.promises.mkdir(i.dirname(n),{recursive:!0,mode:448}),await e.fs.promises.appendFile(n,`${JSON.stringify(t)}\n`,{encoding:`utf-8`,mode:384})}catch{}}function ay(e,t){if(!e||typeof e!=`object`)return;let n=e.gateway;!n||typeof n!=`object`||`token`in n&&t.warn(`Config uses "gateway.token". This key is ignored; use "gateway.auth.token" instead.`)}function oy(e){let t=new Date().toISOString();return{...e,meta:{...e.meta,lastTouchedVersion:Jn,lastTouchedAt:t}}}function sy(e,t){let n=e.meta?.lastTouchedVersion;if(!n)return;let r=jv(Jn,n);r!==null&&r<0&&t.warn(`Config was last written by a newer FasedAgent (${n}); current version is ${Jn}.`)}function cy(e){return e.configPath?e.configPath:We(e.env,S(e.env,e.homedir))}function ly(e={}){return{fs:e.fs??n,json5:e.json5??m,env:e.env??process.env,homedir:e.homedir??(()=>x(e.env??process.env,p.homedir)),configPath:e.configPath??``,logger:e.logger??console}}function uy(e){e===process.env&&Nr({quiet:!0})}function dy(e,t=m){try{return{ok:!0,parsed:t.parse(e)}}catch(e){return{ok:!1,error:String(e)}}}function fy(e,t,n){return uf(e,t,{readFile:e=>n.fs.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:r})=>cf({includePath:e,resolvedPath:t,rootRealDir:r,ioFs:n.fs}),parseJson:e=>n.json5.parse(e)})}function py(e,t){return e&&typeof e==`object`&&`env`in e&&tf(e,t),{resolvedConfigRaw:Zd(e,t),envSnapshotForRestore:{...t}}}function my(e={}){let t=ly(e),n=cy(t),r=(t.configPath?[n]:Ge(t.env,t.homedir)).find(e=>t.fs.existsSync(e))??n;function a(){try{if(uy(t.env),!t.fs.existsSync(r))return Zr(t.env)&&!Qr(t.env)&&Xr({enabled:!0,env:t.env,expectedKeys:Mv,logger:t.logger,timeoutMs:$r(t.env)}),{};let e=t.fs.readFileSync(r,`utf-8`),{resolvedConfigRaw:n}=py(fy(t.json5.parse(e),r,t),t.env);if(ay(n,t.logger),typeof n!=`object`||!n)return{};let i=ta(n,{env:t.env,homedir:t.homedir});if(i.length>0)throw new Zi(i);let a=Pv(n),o=Sp(a.config),s=Tv(o.config);if(!s.ok){let e=s.issues.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
4
- `);Iv.has(r)||(Iv.add(r),t.logger.error(`Invalid config at ${r}:\\n${e}`));let n=Error(`Invalid config`);throw n.code=`INVALID_CONFIG`,n.details=e,n}if(s.warnings.length>0){let e=s.warnings.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
5
- `);t.logger.warn(`Config warnings:\n${e}`)}sy(s.config,t.logger);let c=Fd(Id(Bd(zd(Ld(Nd(Rd(Md(s.config))))))));vp(c),fp(c);let u=ta(c,{env:t.env,homedir:t.homedir});if(u.length>0)throw new Zi(u);tf(c,t.env),(Zr(t.env)||c.env?.shellEnv?.enabled===!0)&&!Qr(t.env)&&Xr({enabled:!0,env:t.env,expectedKeys:Mv,logger:t.logger,timeoutMs:c.env?.shellEnv?.timeoutMs??$r(t.env)});let d=hy.get(r),f=er(c,()=>d??_.randomBytes(32).toString(`hex`)),p=Sp(f.config),m=p.config,h=[...new Set([...o.repairedPluginIds,...p.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t));if(a.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;vy.has(e)||(vy.add(e),l(m,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{vy.delete(e)}))}if(h.length>0){let e=`${r}:installed-plugin-allowlist`;yy.has(e)||(yy.add(e),t.logger.warn(`Pinned installed plugins in plugins.allow: ${h.join(`, `)}`),l(m,{expectedConfigPath:r}).catch(e=>{t.logger.warn(`Failed to persist repaired plugins.allow at ${r}: ${String(e)}`)}).finally(()=>{yy.delete(e)}))}return f.generatedSecret?(hy.set(r,f.generatedSecret),gy.has(r)||(gy.add(r),l(m,{expectedConfigPath:r}).then(()=>{hy.delete(r),_y.delete(r)}).catch(e=>{_y.has(r)||(_y.add(r),t.logger.warn(`Failed to persist auto-generated commands.ownerDisplaySecret at ${r}: ${String(e)}`))}).finally(()=>{gy.delete(r)}))):(hy.delete(r),_y.delete(r)),Tp(m)}catch(e){if(e instanceof Zi)throw t.logger.error(e.message),e;return e?.code===`INVALID_CONFIG`||t.logger.error(`Failed to read config at ${r}`,e),{}}}async function o(){if(uy(t.env),!t.fs.existsSync(r)){let e=Lv(null);return{snapshot:{path:r,exists:!1,raw:null,parsed:{},resolved:{},valid:!0,config:Pd(Fd(Id(Bd(zd(Ld(Nd(Md({})))))))),hash:e,issues:[],warnings:[],legacyIssues:[]}}}try{let e=t.fs.readFileSync(r,`utf-8`),n=Lv(e),i=dy(e,t.json5);if(!i.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:{},resolved:{},valid:!1,config:{},hash:n,issues:[{path:``,message:`JSON5 parse failed: ${i.error}`}],warnings:[],legacyIssues:[]}};let a;try{a=fy(i.parsed,r,t)}catch(t){let a=t instanceof z?t.message:`Include resolution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Kv(i.parsed),valid:!1,config:Kv(i.parsed),hash:n,issues:[{path:``,message:a}],warnings:[],legacyIssues:[]}}}let o;try{o=py(a,t.env)}catch(t){let o=t instanceof Kd?t.message:`Env var substitution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Kv(a),valid:!1,config:Kv(a),hash:n,issues:[{path:``,message:o}],warnings:[],legacyIssues:[]}}}let s=Pv(o.resolvedConfigRaw),c=s.config,u=Gf(c),d=Sp(c),f=Tv(d.config);if(!f.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Kv(c),valid:!1,config:Kv(c),hash:n,issues:f.issues,warnings:f.warnings,legacyIssues:u}};sy(f.config,t.logger);let p=vp(Pd(Fd(Id(Ld(Nd(Rd(Md(f.config))))))));fp(p);let m=Sp(p),h=m.config,g=[...new Set([...d.repairedPluginIds,...m.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t)),_=Kv(d.config);if(s.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;vy.has(e)||(vy.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{vy.delete(e)}))}if(g.length>0){let e=`${r}:installed-plugin-allowlist`;yy.has(e)||(yy.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{yy.delete(e)}))}return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:_,valid:!0,config:h,hash:n,issues:[],warnings:f.warnings,legacyIssues:u},envSnapshotForRestore:o.envSnapshotForRestore}}catch(e){let n=e,i;if(n?.code===`EACCES`){let n=process.getuid?.(),a=typeof n==`number`?String(n):`$(id -u)`;i=[`read failed: ${String(e)}`,``,`Config file is not readable by the current process. If running in a container`,`or 1-click deployment, fix ownership with:`,` chown ${a} "${r}"`,`Then restart the gateway.`].join(`
6
- `),t.logger.error(i)}else i=`read failed: ${String(e)}`;return{snapshot:{path:r,exists:!0,raw:null,parsed:{},resolved:{},valid:!1,config:{},hash:Lv(null),issues:[{path:``,message:i}],warnings:[],legacyIssues:[]}}}}async function s(){return(await o()).snapshot}async function c(){let e=await o();return{snapshot:e.snapshot,writeOptions:{envSnapshotForRestore:e.envSnapshotForRestore,expectedConfigPath:r}}}async function l(e,n={}){let a=e,{snapshot:s}=await o(),c=null,l=null;if(s.valid&&s.exists){let n=Xv(s.config,e);a=Jf(s.resolved,n);try{let n=uf(s.parsed,r,{readFile:e=>t.fs.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:n,rootRealDir:r})=>cf({includePath:e,resolvedPath:n,rootRealDir:r,ioFs:t.fs}),parseJson:e=>t.json5.parse(e)}),i=new Map;Zv(n,``,i),i.size>0&&(c=i,l=new Set,Qv(s.config,e,``,l))}catch{c=null}}let u=Ev(a);if(!u.ok){let e=u.issues[0],t=e?.path?e.path:`<root>`,n=e?.message??`invalid`;throw Error(Rv(t,n))}if(u.warnings.length>0){let e=u.warnings.map(e=>`- ${e.path}: ${e.message}`).join(`
7
- `);t.logger.warn(`Config warnings:\n${e}`)}let d=u.config;try{if(t.fs.existsSync(r)){let e=dy(await t.fs.promises.readFile(r,`utf-8`),t.json5);if(e.ok){let r=n.envSnapshotForRestore??t.env;d=Wd(d,e.parsed,r)}}}catch{}let f=i.dirname(r);await t.fs.promises.mkdir(f,{recursive:!0,mode:448});let p=c&&l?ty(d,``,c,l):d;if(n.unsetPaths?.length)for(let e of n.unsetPaths){if(!Array.isArray(e)||e.length===0)continue;let t=Wv(p,e);t.changed&&(p=t.next)}let m=oy(p),h=JSON.stringify(m,null,2).trimEnd().concat(`
8
- `),g=Lv(h),v=Gv(s),ee=l?.size,y=typeof s.raw==`string`?Buffer.byteLength(s.raw,`utf-8`):null,b=Buffer.byteLength(h,`utf-8`),te=qv(s.parsed),ne=qv(m),re=Jv(s.resolved),ie=Jv(m),ae=ry({existsBefore:s.exists,previousBytes:y,nextBytes:b,hasMetaBefore:te,gatewayModeBefore:re,gatewayModeAfter:ie}),oe=()=>{if(t.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG===`1`||!s.exists)return;let e=t.env.VITEST===`true`,n=t.env.FASED_TEST_CONFIG_OVERWRITE_LOG===`1`;if(e&&!n)return;let i=typeof ee==`number`?`, changedPaths=${ee}`:``;t.logger.warn(`Config overwrite: ${r} (sha256 ${v??`unknown`} -> ${g}, backup=${r}.bak${i})`)},se=()=>{if(t.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG===`1`||ae.length===0)return;let e=t.env.VITEST===`true`,n=t.env.FASED_TEST_CONFIG_WRITE_ANOMALY_LOG===`1`;e&&!n||t.logger.warn(`Config write anomaly: ${r} (${ae.join(`, `)})`)},ce={ts:new Date().toISOString(),source:`config-io`,event:`config.write`,configPath:r,pid:process.pid,ppid:process.ppid,cwd:process.cwd(),argv:process.argv.slice(0,8),execArgv:process.execArgv.slice(0,8),watchMode:t.env.FASED_WATCH_MODE===`1`,watchSession:typeof t.env.FASED_WATCH_SESSION==`string`&&t.env.FASED_WATCH_SESSION.trim().length>0?t.env.FASED_WATCH_SESSION.trim():null,watchCommand:typeof t.env.FASED_WATCH_COMMAND==`string`&&t.env.FASED_WATCH_COMMAND.trim().length>0?t.env.FASED_WATCH_COMMAND.trim():null,existsBefore:s.exists,previousHash:v??null,nextHash:g,previousBytes:y,nextBytes:b,changedPathCount:typeof ee==`number`?ee:null,hasMetaBefore:te,hasMetaAfter:ne,gatewayModeBefore:re,gatewayModeAfter:ie,suspicious:ae},le=async(e,n)=>{let r=n&&typeof n==`object`&&`code`in n&&typeof n.code==`string`?n.code:void 0,i=n&&typeof n==`object`&&`message`in n&&typeof n.message==`string`?n.message:void 0;await iy(t,{...ce,result:e,nextHash:e===`failed`?null:ce.nextHash,nextBytes:e===`failed`?null:ce.nextBytes,errorCode:r,errorMessage:i})},ue=i.join(f,`${i.basename(r)}.${process.pid}.${_.randomUUID()}.tmp`);try{await t.fs.promises.writeFile(ue,h,{encoding:`utf-8`,mode:384}),t.fs.existsSync(r)&&(await ra(r,t.fs.promises),await t.fs.promises.copyFile(r,`${r}.bak`).catch(()=>{}));try{await t.fs.promises.rename(ue,r)}catch(e){let n=e.code;if(n===`EPERM`||n===`EEXIST`){await t.fs.promises.copyFile(ue,r),await t.fs.promises.chmod(r,384).catch(()=>{}),await t.fs.promises.unlink(ue).catch(()=>{}),oe(),se(),await le(`copy-fallback`);return}throw await t.fs.promises.unlink(ue).catch(()=>{}),e}oe(),se(),await le(`rename`)}catch(e){throw await le(`failed`,e),e}}return{configPath:r,loadConfig:a,readConfigFileSnapshot:s,readConfigFileSnapshotForWrite:c,writeConfigFile:l}}const hy=new Map,gy=new Set,_y=new Set,vy=new Set,yy=new Set;async function by(){return await my().readConfigFileSnapshot()}function xy(e,t){return t<=0?``:e.repeat(t)}function Sy(e,t,n){let r=Lt(e);if(r>=t)return e;let i=t-r;if(n===`right`)return`${xy(` `,i)}${e}`;if(n===`center`){let t=Math.floor(i/2),n=i-t;return`${xy(` `,t)}${e}${xy(` `,n)}`}return`${e}${xy(` `,i)}`}function Cy(e,t){if(t<=0)return[e];let n=[];for(let t=0;t<e.length;){if(e[t]===`\x1B`){if(e[t+1]===`[`){let r=t+2;for(;r<e.length;){let t=e[r];if(t===`m`)break;if(t&&t>=`0`&&t<=`9`){r+=1;continue}if(t===`;`){r+=1;continue}break}if(e[r]===`m`){n.push({kind:`ansi`,value:e.slice(t,r+1)}),t=r+1;continue}}if(e[t+1]===`]`&&e.slice(t+2,t+5)===`8;;`){let r=e.indexOf(`\x1B\\`,t+5);if(r>=0){n.push({kind:`ansi`,value:e.slice(t,r+2)}),t=r+2;continue}}}let r=e.codePointAt(t);if(!r)break;let i=String.fromCodePoint(r);n.push({kind:`char`,value:i}),t+=i.length}let r=n.findIndex(e=>e.kind===`char`);if(r<0)return[e];let i=-1;for(let e=n.length-1;e>=0;--e)if(n[e]?.kind===`char`){i=e;break}let a=n.slice(0,r).filter(e=>e.kind===`ansi`).map(e=>e.value).join(``),o=n.slice(i+1).filter(e=>e.kind===`ansi`).map(e=>e.value).join(``),s=n.slice(r,i+1),c=[],l=e=>e===` `||e===` `||e===`/`||e===`-`||e===`_`||e===`.`,u=e=>e===` `||e===` `,d=!1,f=[],p=0,m=null,h=e=>(e??f).map(e=>e.value).join(``),g=e=>e.reduce((e,t)=>e+(t.kind===`char`?1:0),0),_=e=>{let t=e.replace(/\s+$/,``);t.trim().length!==0&&c.push(t)},v=e=>{if(f.length===0)return;if(e==null||e<=0){_(h()),f.length=0,p=0,m=null;return}let t=f.slice(0,e),n=f.slice(e);for(_(h(t));n.length>0&&n[0]?.kind===`char`&&u(n[0].value);)n.shift();f.length=0,f.push(...n),p=g(f),m=null};for(let e of s){if(e.kind===`ansi`){f.push(e);continue}let n=e.value;if(!(d&&(d=!1,n===`
1
+ import{createRequire as e}from"node:module";import t from"node:process";import n,{constants as r}from"node:fs";import i from"node:path";import a from"node:fs/promises";import{fileURLToPath as o}from"node:url";import{execFile as s,execFileSync as c,spawn as l}from"node:child_process";import{isDeepStrictEqual as u,promisify as d}from"node:util";import{Logger as f}from"tslog";import p from"node:os";import m from"json5";import h,{Chalk as g}from"chalk";import _ from"node:crypto";import v from"dotenv";import"jszip";import"tar";import{getOAuthProviders as ee}from"@mariozechner/pi-ai/oauth";import y from"ajv";import{z as b}from"zod";function te(e){return!e||e===`--`?!1:e.startsWith(`-`)?/^-\d+(?:\.\d+)?$/.test(e):!0}function ne(e,t){let n=e.slice(2);for(let e of n){if(e===`--`)break;if(e===t)return!0}return!1}function re(e,t){let n=e.slice(2);for(let e=0;e<n.length;e+=1){let r=n[e];if(r===`--`)break;if(r===t){let t=n[e+1];return te(t)?t:null}if(r.startsWith(`${t}=`))return r.slice(t.length+1)||null}}const ie=`fased`,ae=new Set([ie]),oe=/^(?:((?:pnpm|npm|bunx|npx)\s+))?(fased)\b/;function se(e=process.argv){let t=e[1];if(!t)return ie;let n=i.basename(t).trim();return ae.has(n)?n:ie}function ce(e,t=se()){return!e.trim()||!oe.test(e)?e:e.replace(oe,(e,n)=>`${n??``}${t}`)}const le=/^[a-z0-9][a-z0-9_-]{0,63}$/i;function ue(e){return e?le.test(e):!1}function de(e){let t=e?.trim();return!t||t.toLowerCase()===`default`||!ue(t)?null:t}const fe=/^(?:pnpm|npm|bunx|npx)\s+fased\b|^fased\b|^node\s+scripts\/run-node\.mjs\b/,pe=/(?:^|\s)--profile(?:\s|=|$)/,me=/(?:^|\s)--dev(?:\s|$)/;function he(e=process.argv){let t=se(e),r=e[1];if(!r||i.basename(r).trim()!==`run-node.mjs`)return t;let a=i.resolve(process.cwd(),`scripts`,`run-node.mjs`);return n.existsSync(a)?`node scripts/run-node.mjs`:t}function ge(e,t=process.env){let n=se(),r=he(),i=ce(e,n);r!==n&&fe.test(i)&&(i=i.replace(fe,r));let a=de(t.FASED_PROFILE);return!a||!fe.test(i)||pe.test(i)||me.test(i)?i:i.replace(fe,e=>`${e} --profile ${a}`)}const _e=new Set([`fased`,`@fased/fased`]);async function ve(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t);return typeof n.name==`string`?n.name:null}catch{return null}}function ye(e){try{let t=n.readFileSync(i.join(e,`package.json`),`utf-8`),r=JSON.parse(t);return typeof r.name==`string`?r.name:null}catch{return null}}async function be(e,t=12){for(let n of Se(e,t)){let e=await ve(n);if(e&&_e.has(e))return n}return null}function xe(e,t=12){for(let n of Se(e,t)){let e=ye(n);if(e&&_e.has(e))return n}return null}function*Se(e,t){let n=i.resolve(e);for(let e=0;e<t;e+=1){yield n;let e=i.dirname(n);if(e===n)break;n=e}}function Ce(e){let t=i.resolve(e),r=[i.dirname(t)];try{let e=n.realpathSync(t);e!==t&&r.push(i.dirname(e))}catch{}let a=t.split(i.sep),o=a.lastIndexOf(`.bin`);if(o>0&&a[o-1]===`node_modules`){let e=i.basename(t),n=a.slice(0,o).join(i.sep);r.push(i.join(n,e))}return r}async function we(e){for(let t of Ee(e)){let e=await be(t);if(e)return e}return null}function Te(e){for(let t of Ee(e)){let e=xe(t);if(e)return e}return null}function Ee(e){let t=[];return e.moduleUrl&&t.push(i.dirname(o(e.moduleUrl))),e.argv1&&t.push(...Ce(e.argv1)),e.cwd&&t.push(e.cwd),t}const x=`/tmp/fased`,De=n.constants.W_OK|n.constants.X_OK;function Oe(e,t){return typeof e==`object`&&!!e&&`code`in e&&e.code===t}function ke(e={}){let t=e.accessSync??n.accessSync,r=e.chmodSync??n.chmodSync,a=e.lstatSync??n.lstatSync,o=e.mkdirSync??n.mkdirSync,s=e.warn??(e=>console.warn(e)),c=e.getuid??(()=>{try{return typeof process.getuid==`function`?process.getuid():void 0}catch{return}}),l=e.tmpdir??p.tmpdir,u=c(),d=e=>u===void 0?!0:!(typeof e.uid==`number`&&e.uid!==u||typeof e.mode==`number`&&e.mode&18),f=()=>{let e=l(),t=u===void 0?`fased`:`fased-${u}`;return i.join(e,t)},m=e=>e.isDirectory()&&!e.isSymbolicLink()&&d(e),h=e=>{try{return m(a(e))?(t(e,De),`available`):`invalid`}catch(e){return Oe(e,`ENOENT`)?`missing`:`invalid`}},g=e=>{try{let t=a(e);return!t.isDirectory()||t.isSymbolicLink()||u!==void 0&&typeof t.uid==`number`&&t.uid!==u||typeof t.mode!=`number`||!(t.mode&18)?!1:(r(e,448),s(`[fased] tightened permissions on temp dir: ${e}`),h(e)===`available`)}catch{return!1}},_=()=>{let e=f(),t=h(e);if(t===`available`)return e;if(t===`invalid`){if(g(e))return e;throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`)}try{o(e,{recursive:!0,mode:448}),r(e,448)}catch{throw Error(`Unable to create fallback FasedAgent temp dir: ${e}`)}if(h(e)!==`available`&&!g(e))throw Error(`Unsafe fallback FasedAgent temp dir: ${e}`);return e},v=h(x);if(v===`available`)return x;if(v===`invalid`)return g(x)?x:_();try{return t(`/tmp`,De),o(x,{recursive:!0,mode:448}),r(x,448),h(x)!==`available`&&!g(x)?_():x}catch{return _()}}function Ae(e){return e?.trim()||void 0}function je(e=process.env,t=p.homedir){let n=Me(e,t);return n?i.resolve(n):void 0}function Me(e,t){let n=Ae(e.FASED_HOME);if(n){if(n===`~`||n.startsWith(`~/`)||n.startsWith(`~\\`)){let r=Ae(e.HOME)??Ae(e.USERPROFILE)??Ne(t);return r?n.replace(/^~(?=$|[\\/])/,r):void 0}return n}return Ae(e.HOME)||Ae(e.USERPROFILE)||Ne(t)}function Ne(e){try{return Ae(e())}catch{return}}function S(e=process.env,t=p.homedir){return je(e,t)??i.resolve(process.cwd())}function Pe(e,t){if(!e.startsWith(`~`))return e;let n=Ae(t?.home)??je(t?.env??process.env,t?.homedir??p.homedir);return n?e.replace(/^~(?=$|[\\/])/,n):e}function Fe(e=process.env){return e.FASED_NIX_MODE===`1`}Fe();const Ie=`fased.json`;function Le(){return S(process.env,p.homedir)}function Re(e){return()=>S(e,p.homedir)}function ze(e=Le){return i.join(e(),`.fased`)}function C(e=process.env,t=Re(e)){let n=()=>S(e,t),r=e.FASED_STATE_DIR?.trim();return r?Be(r,e,n):ze(n)}function Be(e,t=process.env,n=Re(t)){let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Pe(r,{home:S(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}C();function Ve(e=process.env,t=C(e,Re(e))){let n=e.FASED_CONFIG_PATH?.trim();return n?Be(n,e,Re(e)):i.join(t,Ie)}function He(e=process.env,t=Re(e)){return We(e,t).find(e=>{try{return n.existsSync(e)}catch{return!1}})||Ve(e,C(e,t))}function Ue(e=process.env,t=C(e,Re(e)),r=Re(e)){let a=e.FASED_CONFIG_PATH?.trim();if(a)return Be(a,e,r);let o=e.FASED_STATE_DIR?.trim(),s=[i.join(t,Ie)].find(e=>{try{return n.existsSync(e)}catch{return!1}});if(s)return s;if(o)return i.join(t,Ie);let c=C(e,r);return i.resolve(t)===i.resolve(c)?He(e,r):i.join(t,Ie)}He();function We(e=process.env,t=Re(e)){let n=()=>S(e,t),r=e.FASED_CONFIG_PATH?.trim();if(r)return[Be(r,e,n)];let a=[],o=e.FASED_STATE_DIR?.trim();if(o){let t=Be(o,e,n);a.push(i.join(t,Ie))}return a.push(i.join(ze(n),Ie)),a}function Ge(){let e=Ue();try{if(!n.existsSync(e))return;let t=n.readFileSync(e,`utf-8`),r=m.parse(t)?.logging;return!r||typeof r!=`object`||Array.isArray(r)?void 0:r}catch{return}}const Ke=[`silent`,`fatal`,`error`,`warn`,`info`,`debug`,`trace`];function qe(e){if(typeof e!=`string`)return;let t=e.trim();return Ke.includes(t)?t:void 0}function Je(e,t=`info`){return qe(e)??t}function Ye(e){return{fatal:0,error:1,warn:2,info:3,debug:4,trace:5,silent:1/0}[e]}const w={cachedLogger:null,cachedSettings:null,cachedConsoleSettings:null,overrideSettings:null,invalidEnvLogLevelValue:null,consolePatched:!1,forceConsoleToStderr:!1,consoleTimestampPrefix:!1,consoleSubsystemFilter:null,resolvingConsoleSettings:!1,streamErrorHandlersInstalled:!1,rawConsole:null};function Xe(){let e=process.env.FASED_LOG_LEVEL,t=typeof e==`string`?e.trim():``;if(!t){w.invalidEnvLogLevelValue=null;return}let n=qe(t);if(n)return w.invalidEnvLogLevelValue=null,n;w.invalidEnvLogLevelValue!==t&&(w.invalidEnvLogLevelValue=t,process.stderr.write(`[fased] Ignoring invalid FASED_LOG_LEVEL="${t}" (allowed: ${Ke.join(`|`)}).\n`))}function Ze(e){let t=process.getBuiltinModule;if(typeof t!=`function`)return null;try{let n=t(`module`),r=typeof n.createRequire==`function`?n.createRequire:null;return r?r(e):null}catch{return null}}const Qe=ke();i.join(Qe,`fased.log`);const $e=`fased`,et=`.log`,tt=Ze(import.meta.url),nt=new Set;function rt(e,t){e.attachTransport(e=>{if(nt.has(t))try{t(e)}catch{}})}function it(){let e=w.overrideSettings??Ge();if(!e)try{e=(tt?.(`../config/config.js`))?.loadConfig?.().logging}catch{e=void 0}let t=process.env.VITEST===`true`&&process.env.FASED_TEST_FILE_LOG!==`1`?`silent`:`info`,n=Je(e?.level,t);return{level:Xe()??n,file:e?.file??mt(),maxFileBytes:ct(e?.maxFileBytes)}}function at(e,t){return e?e.level!==t.level||e.file!==t.file||e.maxFileBytes!==t.maxFileBytes:!0}function ot(e){let t=w.cachedSettings??it();return w.cachedSettings||=t,t.level===`silent`?!1:Ye(e)<=Ye(t.level)}function st(e){n.mkdirSync(i.dirname(e.file),{recursive:!0}),ht(e.file)&&gt(i.dirname(e.file));let t=lt(e.file),r=!1,a=new f({name:`fased`,minLevel:Ye(e.level),type:`hidden`});a.attachTransport(n=>{try{let i=n.date?.toISOString?.()??new Date().toISOString(),a=`${JSON.stringify({...n,time:i})}\n`,o=Buffer.byteLength(a,`utf8`),s=t+o;if(s>e.maxFileBytes){if(!r){r=!0;let t=JSON.stringify({time:new Date().toISOString(),level:`warn`,subsystem:`logging`,message:`log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}`});ut(e.file,`${t}\n`),process.stderr.write(`[fased] log file size cap reached; suppressing writes file=${e.file} maxFileBytes=${e.maxFileBytes}\n`)}return}ut(e.file,a)&&(t=s)}catch{}});for(let e of nt)rt(a,e);return a}function ct(e){return typeof e==`number`&&Number.isFinite(e)&&e>0?Math.floor(e):524288e3}function lt(e){try{return n.statSync(e).size}catch{return 0}}function ut(e,t){try{return n.appendFileSync(e,t,{encoding:`utf8`}),!0}catch{return!1}}function dt(){let e=it(),t=w.cachedLogger,n=w.cachedSettings;return(!t||at(n,e))&&(w.cachedLogger=st(e),w.cachedSettings=e),w.cachedLogger}function ft(e,t){let n=dt(),r=t?.level?Ye(t.level):void 0,i=e?JSON.stringify(e):void 0;return n.getSubLogger({name:i,minLevel:r,prefix:e?[i??``]:[]})}function pt(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function mt(){let e=pt(new Date);return i.join(Qe,`${$e}-${e}${et}`)}function ht(e){let t=i.basename(e);return t.startsWith(`${$e}-`)&&t.endsWith(et)&&t.length===`${$e}-YYYY-MM-DD${et}`.length}function gt(e){try{let t=n.readdirSync(e,{withFileTypes:!0}),r=Date.now()-864e5;for(let a of t){if(!a.isFile()||!a.name.startsWith(`${$e}-`)||!a.name.endsWith(et))continue;let t=i.join(e,a.name);try{n.statSync(t).mtimeMs<r&&n.rmSync(t,{force:!0})}catch{}}}catch{}}const _t={accent:`#22D3EE`,accentBright:`#67E8F9`,accentDim:`#0891B2`,info:`#93C5FD`,success:`#4ADE80`,warn:`#FACC15`,error:`#F87171`,muted:`#A3A3A3`},vt=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`,yt=process.env.NO_COLOR&&!vt?new g({level:0}):h,bt=e=>yt.hex(e),xt={accent:bt(_t.accent),accentBright:bt(_t.accentBright),accentDim:bt(_t.accentDim),info:bt(_t.info),success:yt.green,warn:yt.yellow,error:bt(_t.error),muted:bt(_t.muted),noteChrome:yt.gray,noteTitle:yt.bold.gray,noteHeading:yt.bold.yellow,heading:yt.bold,command:yt.green,option:yt.yellow};function St(){return!1}const Ct=[`telegram`,`whatsapp`,`discord`,`irc`,`googlechat`,`slack`,`signal`,`imessage`],wt=[...Ct],Tt=[],Et={imsg:`imessage`,"internet-relay-chat":`irc`,"google-chat":`googlechat`,gchat:`googlechat`},Dt=e=>e?.trim().toLowerCase()||void 0;function Ot(e){let t=Dt(e);if(!t)return null;let n=Et[t]??t;return Ct.includes(n)?n:null}function kt(e,t,n){let r=n?` (${n})`:``,i=`[terminal] restore ${e} failed${r}: ${String(t)}`;try{process.stderr.write(`${i}\n`)}catch(e){console.error(`[terminal] restore reporting failed${r}: ${String(e)}`)}}function At(e,t={}){let n=t.resumeStdinIfPaused??t.resumeStdin??!1,r=process.stdin;if(r.isTTY&&typeof r.setRawMode==`function`){try{r.setRawMode(!1)}catch(t){kt(`raw mode`,t,e)}if(n&&typeof r.isPaused==`function`&&r.isPaused())try{r.resume()}catch(t){kt(`stdin resume`,t,e)}}if(process.stdout.isTTY)try{process.stdout.write(`\x1B[0m\x1B[?25h\x1B[?1000l\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?2004l`)}catch(t){kt(`stdout reset`,t,e)}}function jt(e=process.env){return e.VITEST!==`true`||e.FASED_TEST_RUNTIME_LOG===`1`?!0:typeof console.log.mock==`object`}function Mt(){return{log:(...e)=>{jt()&&console.log(...e)},error:(...e)=>{console.error(...e)}}}const Nt={...Mt(),exit:e=>{throw At(`runtime exit`,{resumeStdinIfPaused:!1}),process.exit(e),Error(`unreachable`)}},Pt=RegExp(`\\x1b\\[[0-9;]*m`,`g`),Ft=RegExp(`\\x1b\\]8;;.*?\\x1b\\\\|\\x1b\\]8;;\\x1b\\\\`,`g`);function It(e){return e.replace(Ft,``).replace(Pt,``)}function Lt(e){return Array.from(It(e)).length}const Rt=Ze(import.meta.url);let zt=()=>{try{return(Rt?.(`../config/config.js`))?.loadConfig?.().logging}catch{return}};function Bt(e){return St()?`debug`:!e&&process.env.VITEST===`true`&&process.env.FASED_TEST_CONSOLE!==`1`?`silent`:Je(e,`info`)}function Vt(e){return e===`compact`||e===`json`||e===`pretty`?e:process.stdout.isTTY?`pretty`:`compact`}function Ht(){let e=w.overrideSettings??Ge();if(!e)if(w.resolvingConsoleSettings)e=void 0;else{w.resolvingConsoleSettings=!0;try{e=zt()}finally{w.resolvingConsoleSettings=!1}}return{level:Xe()??Bt(e?.consoleLevel),style:Vt(e?.consoleStyle)}}function Ut(e,t){return e?e.level!==t.level||e.style!==t.style:!0}function Wt(){let e=Ht(),t=w.cachedConsoleSettings;return(!t||Ut(t,e))&&(w.cachedConsoleSettings=e),w.cachedConsoleSettings}function Gt(e){let t=w.consoleSubsystemFilter;return!t||t.length===0?!0:t.some(t=>e===t||e.startsWith(`${t}/`))}function Kt(e,t){return t.level===`silent`?!1:Ye(e)<=Ye(t.level)}(()=>{let e=process.getBuiltinModule;if(typeof e!=`function`)return null;try{let t=e(`util`);return typeof t.inspect==`function`?t.inspect:null}catch{return null}})();function qt(){let e=(process.env.TERM??``).toLowerCase();return process.env.COLORTERM||process.env.TERM_PROGRAM?!0:e.length>0&&e!==`dumb`}function Jt(){let e=typeof process.env.FORCE_COLOR==`string`&&process.env.FORCE_COLOR.trim().length>0&&process.env.FORCE_COLOR.trim()!==`0`;return process.env.NO_COLOR&&!e?new g({level:0}):process.stdout.isTTY||process.stderr.isTTY||qt()?new g({level:1}):new g({level:0})}const Yt=[`cyan`,`green`,`yellow`,`blue`,`magenta`,`red`],Xt={"gmail-watcher":`blue`},Zt=[`gateway`,`channels`,`providers`],Qt=new Set(Ct);function $t(e,t){let n=Xt[t];if(n)return e[n];let r=0;for(let e=0;e<t.length;e+=1)r=r*31+t.charCodeAt(e)|0;return e[Yt[Math.abs(r)%Yt.length]]}function en(e){let t=e.split(`/`).filter(Boolean),n=t.join(`/`)||e;for(;t.length>0&&Zt.includes(t[0]);)t.shift();return t.length===0?n:Qt.has(t[0])?t[0]:t.length>2?t.slice(-2).join(`/`):t.join(`/`)}function tn(e,t){if(!t)return e;if(e.startsWith(`[`)){let n=e.indexOf(`]`);if(n>1&&e.slice(1,n).toLowerCase()===t.toLowerCase()){let t=n+1;for(;e[t]===` `;)t+=1;return e.slice(t)}}if(e.slice(0,t.length).toLowerCase()!==t.toLowerCase())return e;let n=e.slice(t.length,t.length+1);if(n!==`:`&&n!==` `)return e;let r=t.length;for(;e[r]===` `;)r+=1;for(e[r]===`:`&&(r+=1);e[r]===` `;)r+=1;return e.slice(r)}function nn(e){let t=e.style===`json`?e.subsystem:en(e.subsystem);if(e.style===`json`)return JSON.stringify({time:new Date().toISOString(),level:e.level,subsystem:t,message:e.message,...e.meta});let n=Jt(),r=`[${t}]`,i=$t(n,t),a=e.level===`error`||e.level===`fatal`?n.red:e.level===`warn`?n.yellow:e.level===`debug`||e.level===`trace`?n.gray:n.cyan,o=tn(e.message,t);return`${[e.style===`pretty`?n.gray(new Date().toISOString().slice(11,19)):w.consoleTimestampPrefix?n.gray(new Date().toISOString()):``,i(r)].filter(Boolean).join(` `)} ${a(o)}`}function rn(e,t){let n=process.platform===`win32`&&process.env.GITHUB_ACTIONS===`true`?t.replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,`?`).replace(/[\uD800-\uDFFF]/g,`?`):t,r=w.rawConsole??console;w.forceConsoleToStderr||e===`error`||e===`fatal`?(r.error??console.error)(n):e===`warn`?(r.warn??console.warn)(n):(r.log??console.log)(n)}function an(e,t,n,r){if(t===`silent`)return;let i=e[t];typeof i==`function`&&(r&&Object.keys(r).length>0?i.call(e,r,n):i.call(e,n))}function on(e){let t=null,n=()=>(t||=ft({subsystem:e}),t),r=(t,r,i)=>{let a=Wt(),o,s=i;if(i&&Object.keys(i).length>0){let{consoleMessage:e,...t}=i;typeof e==`string`&&(o=e),s=Object.keys(t).length>0?t:void 0}if(an(n(),t,r,s),!Kt(t,{level:a.level})||!Gt(e))return;let c=o??r;!St()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(c)||rn(t,nn({level:t,subsystem:e,message:a.style===`json`?r:c,style:a.style,meta:s}))},i=t=>Kt(t,{level:Wt().level})&&Gt(e),a=e=>ot(e);return{subsystem:e,isEnabled:(e,t=`any`)=>t===`console`?i(e):t===`file`?a(e):i(e)||a(e),trace:(e,t)=>r(`trace`,e,t),debug:(e,t)=>r(`debug`,e,t),info:(e,t)=>r(`info`,e,t),warn:(e,t)=>r(`warn`,e,t),error:(e,t)=>r(`error`,e,t),fatal:(e,t)=>r(`fatal`,e,t),raw:t=>{if(an(n(),`info`,t,{raw:!0}),Gt(e)){if(!St()&&e===`agent/embedded`&&/(sessionId|runId)=probe-/.test(t))return;rn(`info`,t)}},child:t=>on(`${e}/${t}`)}}function sn(e){return[e.hasInput?`pipe`:e.preferInherit?`inherit`:`pipe`,`pipe`,`pipe`]}d(s);function cn(e){if(process.platform!==`win32`)return e;let t=i.basename(e).toLowerCase();return i.extname(t)?e:[`npm`,`pnpm`,`yarn`,`npx`].includes(t)?`${e}.cmd`:e}function ln(e){return!1}async function un(e,t){let n=typeof t==`number`?{timeoutMs:t}:t,{timeoutMs:r,cwd:a,input:o,env:s,noOutputTimeoutMs:c}=n,{windowsVerbatimArguments:u}=n,d=o!==void 0,f=(()=>{let t=i.basename(e[0]??``);return t===`npm`||t===`npm.cmd`||t===`npm.exe`?!0:t===`node`||t===`node.exe`?(e[1]??``).includes(`npm-cli.js`):!1})(),p=s?{...process.env,...s}:{...process.env},m=Object.fromEntries(Object.entries(p).filter(([,e])=>e!==void 0).map(([e,t])=>[e,String(t)]));f&&(m.NPM_CONFIG_FUND??=`false`,m.npm_config_fund??=`false`);let h=sn({hasInput:d,preferInherit:!0}),g=cn(e[0]??``),_=l(g,e.slice(1),{stdio:h,cwd:a,env:m,windowsVerbatimArguments:u,...ln({resolvedCommand:g,platform:process.platform})?{shell:!0}:{}});return await new Promise((e,t)=>{let n=``,i=``,a=!1,s=!1,l=!1,u=null,f=typeof c==`number`&&Number.isFinite(c)&&c>0,p=()=>{u&&=(clearTimeout(u),null)},m=()=>{!f||a||(p(),u=setTimeout(()=>{a||(l=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`))},Math.floor(c)))},h=setTimeout(()=>{s=!0,typeof _.kill==`function`&&_.kill(`SIGKILL`)},r);m(),d&&_.stdin&&(_.stdin.write(o??``),_.stdin.end()),_.stdout?.on(`data`,e=>{n+=e.toString(),m()}),_.stderr?.on(`data`,e=>{i+=e.toString(),m()}),_.on(`error`,e=>{a||(a=!0,clearTimeout(h),p(),t(e))}),_.on(`close`,(t,r)=>{if(a)return;a=!0,clearTimeout(h),p();let o=l?`no-output-timeout`:s?`timeout`:r==null?`exit`:`signal`;e({pid:_.pid??void 0,stdout:n,stderr:i,code:t,signal:r,killed:_.killed,termination:o,noOutputTimedOut:l})})})}async function dn(e,t,n,r=fetch){let i=new AbortController,a=setTimeout(i.abort.bind(i),Math.max(1,n));try{return await r(e,{...t,signal:i.signal})}finally{clearTimeout(a)}}async function fn(e){try{let t=await a.readFile(i.join(e,`package.json`),`utf-8`),n=JSON.parse(t)?.packageManager?.split(`@`)[0]?.trim();if(n===`pnpm`||n===`bun`||n===`npm`)return n}catch{}let t=await a.readdir(e).catch(()=>[]);return t.includes(`pnpm-lock.yaml`)?`pnpm`:t.includes(`bun.lockb`)?`bun`:t.includes(`package-lock.json`)?`npm`:null}function pn(e){if(!e)return null;let t=e.trim().toLowerCase();return t===`stable`||t===`beta`||t===`dev`?t:null}function mn(e){return/(?:^|[.-])beta(?:[.-]|$)/i.test(e)}function hn(e){if(e.configChannel)return{channel:e.configChannel,source:`config`};if(e.installKind===`git`){let t=e.git?.tag;return t?{channel:mn(t)?`beta`:`stable`,source:`git-tag`}:{channel:`stable`,source:`default`}}return e.installKind,{channel:`stable`,source:`default`}}function gn(e){return e.source===`config`?`${e.channel} (config)`:e.source===`git-tag`?e.gitTag?`${e.channel} (${e.gitTag})`:`${e.channel} (tag)`:e.source===`git-branch`?e.gitBranch?`${e.channel} (${e.gitBranch})`:`${e.channel} (branch)`:`${e.channel} (default)`}function _n(e){let t=hn({configChannel:e.configChannel,installKind:e.installKind,git:e.gitTag||e.gitBranch?{tag:e.gitTag??null,branch:e.gitBranch??null}:void 0});return{channel:t.channel,source:t.source,label:gn({channel:t.channel,source:t.source,gitTag:e.gitTag??null,gitBranch:e.gitBranch??null})}}function T(e){return typeof e==`object`&&!!e&&!Array.isArray(e)&&Object.prototype.toString.call(e)===`[object Object]`}function E(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function D(e,t=process.env,n=p.homedir){if(!e)return``;let r=e.trim();if(!r)return r;if(r.startsWith(`~`)){let e=Pe(r,{home:S(t,n),env:t,homedir:n});return i.resolve(e)}return i.resolve(r)}function vn(e=process.env,t=p.homedir){let r=e.FASED_STATE_DIR?.trim()||e.FASED_CONFIG_DIR?.trim();if(r)return D(r);let a=i.join(S(e,t),`.fased`);try{if(n.existsSync(a))return a}catch{}return a}function yn(){return je(process.env,p.homedir)}function bn(){let e=yn();if(e)return process.env.FASED_HOME?.trim()?{home:e,prefix:`$FASED_HOME`}:{home:e,prefix:`~`}}function xn(e){if(!e)return e;let t=bn();return t?e.split(t.home).join(t.prefix):e}function Sn(e){return xn(e)}vn();function Cn(e){let t=i.dirname(e);return i.basename(t).startsWith(`@`)?i.dirname(t):t}function wn(e){let t=i.resolve(e),n=`${i.sep}.fased${i.sep}install-cache${i.sep}npm-global`,r=`${n}${`${i.sep}lib${i.sep}node_modules`}`,a=t.indexOf(`${r}${i.sep}`);if(a<0)return null;let o=t.slice(0,a+n.length),s=i.join(o,`lib`,`node_modules`),c=i.join(i.dirname(o),`npm-cache`),l=Cn(t);return i.resolve(l)===i.resolve(s)?{manager:`npm`,globalRoot:s,cacheRoot:i.dirname(o),env:{npm_config_prefix:o,npm_config_cache:c}}:null}async function Tn(e){try{return await a.access(e),!0}catch{return!1}}async function En(e){return await fn(e)??`unknown`}async function Dn(e){let t=await un([`git`,`-C`,e,`rev-parse`,`--show-toplevel`],{timeoutMs:4e3}).catch(()=>null);if(!t||t.code!==0)return null;let n=t.stdout.trim();return n?i.resolve(n):null}async function On(e){let t=e.timeoutMs??6e3,n=i.resolve(e.root),r={root:n,sha:null,tag:null,branch:null,upstream:null,dirty:null,ahead:null,behind:null,fetchOk:null},a=await un([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`HEAD`],{timeoutMs:t}).catch(()=>null);if(!a||a.code!==0)return{...r,error:a?.stderr?.trim()||`git unavailable`};let o=a.stdout.trim()||null,s=await un([`git`,`-C`,n,`rev-parse`,`HEAD`],{timeoutMs:t}).catch(()=>null),c=s&&s.code===0?s.stdout.trim():null,l=await un([`git`,`-C`,n,`describe`,`--tags`,`--exact-match`],{timeoutMs:t}).catch(()=>null),u=l&&l.code===0?l.stdout.trim():null,d=await un([`git`,`-C`,n,`rev-parse`,`--abbrev-ref`,`@{upstream}`],{timeoutMs:t}).catch(()=>null),f=d&&d.code===0?d.stdout.trim():null,p=await un([`git`,`-C`,n,`status`,`--porcelain`,`--`,`:!dist/control-ui/`],{timeoutMs:t}).catch(()=>null),m=p&&p.code===0?p.stdout.trim().length>0:null,h=e.fetch?await un([`git`,`-C`,n,`fetch`,`--quiet`,`--prune`],{timeoutMs:t}).then(e=>e.code===0).catch(()=>!1):null,g=f&&f.length>0?await un([`git`,`-C`,n,`rev-list`,`--left-right`,`--count`,`HEAD...${f}`],{timeoutMs:t}).catch(()=>null):null,_=g&&g.code===0?(e=>{let t=e.trim().split(/\s+/);if(t.length<2)return null;let n=Number.parseInt(t[0]??``,10),r=Number.parseInt(t[1]??``,10);return!Number.isFinite(n)||!Number.isFinite(r)?null:{ahead:n,behind:r}})(g.stdout):null;return{root:n,sha:c,tag:u,branch:o,upstream:f,dirty:m,ahead:_?.ahead??null,behind:_?.behind??null,fetchOk:h}}async function kn(e){try{return(await a.stat(e)).mtimeMs}catch{return null}}function An(e){let t=e.root;return e.manager===`pnpm`?{lockfilePath:i.join(t,`pnpm-lock.yaml`),markerPath:i.join(t,`node_modules`,`.modules.yaml`)}:e.manager===`bun`?{lockfilePath:i.join(t,`bun.lockb`),markerPath:i.join(t,`node_modules`)}:e.manager===`npm`?{lockfilePath:i.join(t,`package-lock.json`),markerPath:i.join(t,`node_modules`)}:{lockfilePath:null,markerPath:null}}async function jn(e){let{lockfilePath:t,markerPath:n}=An({root:i.resolve(e.root),manager:e.manager});if(!t||!n)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`unknown package manager`};let r=await Tn(t),a=await Tn(n);if(!r)return{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n,reason:`lockfile missing`};if(!a)return{manager:e.manager,status:`missing`,lockfilePath:t,markerPath:n,reason:`node_modules marker missing`};let o=await kn(t),s=await kn(n);return!o||!s?{manager:e.manager,status:`unknown`,lockfilePath:t,markerPath:n}:o>s+1e3?{manager:e.manager,status:`stale`,lockfilePath:t,markerPath:n,reason:`lockfile newer than install marker`}:{manager:e.manager,status:`ok`,lockfilePath:t,markerPath:n}}async function Mn(e){let t=await Nn({tag:`latest`,timeoutMs:e?.timeoutMs});return{latestVersion:t.version,error:t.error}}async function Nn(e){let t=e?.timeoutMs??3500,n=e.tag;try{let e=await dn(`https://registry.npmjs.org/%40fased%2Ffased/${encodeURIComponent(n)}`,{},Math.max(250,t));if(!e.ok)return{tag:n,version:null,error:`HTTP ${e.status}`};let r=await e.json();return{tag:n,version:typeof r?.version==`string`?r.version:null}}catch(e){return{tag:n,version:null,error:String(e)}}}function Pn(e,t){let n=Fn(e),r=Fn(t);return!n||!r?null:n.major===r.major?n.minor===r.minor?n.patch===r.patch?Ln(n.prerelease,r.prerelease):n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1}function Fn(e){if(!e)return null;let t=In(e.trim()),n=/^v?([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?$/.exec(t);if(!n)return null;let[,r,i,a,o]=n;return!r||!i||!a?null:{major:Number.parseInt(r,10),minor:Number.parseInt(i,10),patch:Number.parseInt(a,10),prerelease:o?o.split(`.`).filter(Boolean):null}}function In(e){let t=e.trim(),n=/^([vV]?[0-9]+\.[0-9]+\.[0-9]+)\.beta(?:\.([0-9A-Za-z.-]+))?$/.exec(t);if(!n)return t;let r=n[1],i=n[2];return i?`${r}-beta.${i}`:`${r}-beta`}function Ln(e,t){if(!e?.length&&!t?.length)return 0;if(!e?.length)return 1;if(!t?.length)return-1;let n=Math.max(e.length,t.length);for(let r=0;r<n;r+=1){let n=e[r],i=t[r];if(n==null&&i==null)return 0;if(n==null)return-1;if(i==null)return 1;if(n===i)continue;let a=/^[0-9]+$/.test(n),o=/^[0-9]+$/.test(i);return a&&o?Number.parseInt(n,10)<Number.parseInt(i,10)?-1:1:a&&!o?-1:!a&&o?1:n<i?-1:1}return 0}async function Rn(e){let t=e.timeoutMs??6e3,n=e.root?i.resolve(e.root):null;if(!n)return{root:null,installKind:`unknown`,packageManager:`unknown`,registry:e.includeRegistry?await Mn({timeoutMs:t}):void 0};let r=await Dn(n),a=r&&i.resolve(r)===n,o=a?`git`:`package`,s=!a&&wn(n)?`npm`:await En(n);return{root:n,installKind:o,packageManager:s,git:a?await On({root:n,timeoutMs:t,fetch:!!e.fetchGit}):void 0,deps:await jn({root:n,manager:s}),registry:e.includeRegistry?await Mn({timeoutMs:t}):void 0}}const zn=new Set([`fased`,`@fased/fased`]),Bn=[`../package.json`,`../../package.json`,`../../../package.json`,`./package.json`],Vn=[`../build-info.json`,`../../build-info.json`,`./build-info.json`];function Hn(t,n,r={}){try{let i=e(t);for(let e of n)try{let t=i(e),n=t.version?.trim();if(!n||r.requirePackageName&&!zn.has(t.name??``))continue;return n}catch{}return null}catch{return null}}function Un(...e){for(let t of e){let e=t?.trim();if(e)return e}}function Wn(e){return Hn(e,Bn,{requirePackageName:!0})}function Gn(e){return Hn(e,Vn)}function Kn(e){return Wn(e)||Gn(e)}function qn(e=process.env,t=`dev`){return Un(e.FASED_VERSION,e.FASED_SERVICE_VERSION,e.npm_package_version)??t}const Jn=typeof __FASED_VERSION__==`string`&&__FASED_VERSION__||process.env.FASED_BUNDLED_VERSION||Kn(import.meta.url)||`0.0.0`;function Yn(e,t={}){let n=e.registry?.latestVersion??null,r=n?Pn(Jn,n):null,i=r!=null&&r<0,a=(t.channel==null||t.channel===`dev`)&&e.installKind===`git`&&typeof e.git?.behind==`number`?e.git.behind:null,o=a!=null&&a>0;return{available:o||i,hasGitUpdate:o,hasRegistryUpdate:i,latestVersion:i?n:null,gitBehind:a}}function Xn(e,t={}){let n=Yn(e,t);if(!n.available)return null;let r=[];return n.hasGitUpdate&&n.gitBehind!=null&&r.push(`git behind ${n.gitBehind}`),n.hasRegistryUpdate&&n.latestVersion&&r.push(`npm ${n.latestVersion}`),`Update available${r.length>0?` (${r.join(` · `)})`:``}. Run: ${ge(`fased update`)}`}function Zn(e,t={}){let n=[],r=()=>{if(e.registry?.latestVersion){let t=Pn(Jn,e.registry.latestVersion);t===0?n.push(`npm latest ${e.registry.latestVersion}`):t!=null&&t<0?n.push(`npm update ${e.registry.latestVersion}`):n.push(`npm latest ${e.registry.latestVersion} (local newer)`);return}e.registry?.error&&n.push(`npm latest unknown`)};if(e.installKind===`git`&&e.git){if(t.channel&&t.channel!==`dev`)n.push(`${t.channel} channel`),e.git.dirty===!0&&n.push(`dirty`);else{let t=e.git.branch?`git ${e.git.branch}`:`git`;n.push(t),e.git.upstream&&n.push(`↔ ${e.git.upstream}`),e.git.dirty===!0&&n.push(`dirty`),e.git.behind!=null&&e.git.ahead!=null&&(e.git.behind===0&&e.git.ahead===0?n.push(`up to date`):e.git.behind>0&&e.git.ahead===0?n.push(`behind ${e.git.behind}`):e.git.behind===0&&e.git.ahead>0?n.push(`ahead ${e.git.ahead}`):e.git.behind>0&&e.git.ahead>0&&n.push(`diverged (ahead ${e.git.ahead}, behind ${e.git.behind})`)),e.git.fetchOk===!1&&n.push(`fetch failed`)}r()}else n.push(e.packageManager===`unknown`?`pkg`:e.packageManager),r();return e.deps&&(e.deps.status===`ok`&&n.push(`deps ok`),e.deps.status===`missing`&&n.push(`deps missing`),e.deps.status===`stale`&&n.push(`deps stale`)),`Update: ${n.join(` · `)}`}function Qn(e){return e?.trim()||void 0}function $n(e){let t=e?.commands?.ownerDisplay;return t===`hash`?{ownerDisplay:`hash`,ownerDisplaySecret:Qn(e?.commands?.ownerDisplaySecret)}:{ownerDisplay:t,ownerDisplaySecret:void 0}}function er(e,t=()=>_.randomBytes(32).toString(`hex`)){let n=$n(e);if(n.ownerDisplay!==`hash`||n.ownerDisplaySecret)return{config:e};let r=t();return{config:{...e,commands:{...e.commands,ownerDisplay:`hash`,ownerDisplaySecret:r}},generatedSecret:r}}var tr={blockedEverywhereKeys:`NODE_OPTIONS.NODE_PATH.PYTHONHOME.PYTHONPATH.PERL5LIB.PERL5OPT.RUBYLIB.RUBYOPT.BASH_ENV.ENV.BROWSER.GIT_EDITOR.GIT_EXTERNAL_DIFF.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_EXEC_PATH.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SEQUENCE_EDITOR.GIT_TEMPLATE_DIR.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.CC.CXX.CARGO_BUILD_RUSTC.CARGO_BUILD_RUSTC_WRAPPER.RUSTC_WRAPPER.CMAKE_C_COMPILER.CMAKE_CXX_COMPILER.SHELL.SHELLOPTS.PS4.GCONV_PATH.IFS.SSLKEYLOGFILE.JAVA_OPTS.JAVA_TOOL_OPTIONS._JAVA_OPTIONS.JDK_JAVA_OPTIONS.PYTHONBREAKPOINT.DOTNET_STARTUP_HOOKS.DOTNET_ADDITIONAL_DEPS.GLIBC_TUNABLES.MAVEN_OPTS.MAKEFLAGS.MFLAGS.SBT_OPTS.GRADLE_OPTS.ANT_OPTS.HGRCPATH.EXINIT.VIMINIT.MYVIMRC.GVIMINIT.LUA_INIT.LUA_INIT_5_1.LUA_INIT_5_2.LUA_INIT_5_3.LUA_INIT_5_4.EMACSLOADPATH.RUBYSHELL.GIT_HOOK_PATH.SVN_EDITOR.SVN_SSH.BZR_EDITOR.BZR_SSH.BZR_PLUGIN_PATH.SUDO_ASKPASS.JULIA_EDITOR.CONFIG_SITE.CONFIG_SHELL.CMAKE_TOOLCHAIN_FILE.CATALINA_OPTS.CORECLR_PROFILER.HELM_PLUGINS.PACKER_PLUGIN_PATH.VAGRANT_VAGRANTFILE.ERL_AFLAGS.ERL_FLAGS.ERL_ZFLAGS.ELIXIR_ERL_OPTIONS.R_ENVIRON.R_PROFILE.R_ENVIRON_USER.R_PROFILE_USER.HOSTALIASES`.split(`.`),blockedOverrideOnlyKeys:`HOME.GRADLE_USER_HOME.ZDOTDIR.GIT_DIR.GIT_WORK_TREE.GIT_COMMON_DIR.GIT_INDEX_FILE.GIT_OBJECT_DIRECTORY.GIT_ALTERNATE_OBJECT_DIRECTORIES.GIT_NAMESPACE.GIT_SSH_COMMAND.GIT_SSH.GIT_PROXY_COMMAND.GIT_ASKPASS.GIT_SSL_NO_VERIFY.GIT_SSL_CAINFO.GIT_SSL_CAPATH.SSH_ASKPASS.LESSOPEN.LESSCLOSE.PAGER.MANPAGER.GIT_PAGER.EDITOR.VISUAL.FCEDIT.SUDO_EDITOR.PROMPT_COMMAND.HISTFILE.PERL5DB.PERL5DBCMD.OPENSSL_CONF.OPENSSL_ENGINES.PYTHONSTARTUP.WGETRC.CURL_HOME.CLASSPATH.CFLAGS.CGO_CFLAGS.CGO_LDFLAGS.GOFLAGS.MAKEFLAGS.MFLAGS.CORECLR_PROFILER_PATH.PHPRC.PHP_INI_SCAN_DIR.DENO_DIR.BUN_CONFIG_REGISTRY.YARN_RC_FILENAME.HTTP_PROXY.HTTPS_PROXY.ALL_PROXY.NO_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NODE_EXTRA_CA_CERTS.SSL_CERT_FILE.SSL_CERT_DIR.REQUESTS_CA_BUNDLE.CURL_CA_BUNDLE.DOCKER_HOST.DOCKER_TLS_VERIFY.DOCKER_CERT_PATH.PIP_INDEX_URL.PIP_PYPI_URL.PIP_EXTRA_INDEX_URL.PIP_CONFIG_FILE.PIP_FIND_LINKS.PIP_TRUSTED_HOST.UV_INDEX.UV_INDEX_URL.UV_PYTHON.UV_EXTRA_INDEX_URL.UV_DEFAULT_INDEX.DOCKER_CONTEXT.LIBRARY_PATH.LDFLAGS.CPATH.C_INCLUDE_PATH.CPLUS_INCLUDE_PATH.OBJC_INCLUDE_PATH.GOPROXY.GONOSUMCHECK.GONOSUMDB.GONOPROXY.GOPRIVATE.GOENV.GOPATH.HGRCPATH.PYTHONUSERBASE.RUSTC_WRAPPER.RUSTFLAGS.CARGO_HOME.VIRTUAL_ENV.LUA_PATH.LUA_CPATH.GEM_HOME.GEM_PATH.BUNDLE_GEMFILE.COMPOSER_HOME.CARGO_BUILD_RUSTC_WRAPPER.XDG_CONFIG_HOME.XDG_CONFIG_DIRS.AWS_CONFIG_FILE.KUBECONFIG.GOOGLE_APPLICATION_CREDENTIALS.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.HELM_HOME.ANSIBLE_CONFIG.ANSIBLE_LIBRARY.ANSIBLE_CALLBACK_PLUGINS.ANSIBLE_COLLECTIONS_PATH.ANSIBLE_CONNECTION_PLUGINS.ANSIBLE_FILTER_PLUGINS.ANSIBLE_INVENTORY_PLUGINS.ANSIBLE_LOOKUP_PLUGINS.ANSIBLE_MODULE_UTILS.ANSIBLE_REMOTE_TEMP.ANSIBLE_ROLES_PATH.ANSIBLE_STRATEGY_PLUGINS.R_LIBS_USER.TF_CLI_CONFIG_FILE.TF_PLUGIN_CACHE_DIR.AMQP_URL.AWS_ACCESS_KEY_ID.AWS_CONTAINER_CREDENTIALS_FULL_URI.AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.AWS_SECRET_ACCESS_KEY.AWS_SECURITY_TOKEN.AWS_SESSION_TOKEN.AZURE_CLIENT_ID.AZURE_CLIENT_SECRET.DATABASE_URL.GH_TOKEN.GITHUB_TOKEN.GITLAB_TOKEN.MONGODB_URI.NODE_AUTH_TOKEN.NPM_TOKEN.REDIS_URL.SSH_AUTH_SOCK`.split(`.`),allowedInheritedOverrideOnlyKeys:`ALL_PROXY.AWS_CONFIG_FILE.AWS_SHARED_CREDENTIALS_FILE.AWS_WEB_IDENTITY_TOKEN_FILE.AZURE_AUTH_LOCATION.CURL_CA_BUNDLE.DOCKER_CERT_PATH.DOCKER_CONTEXT.DOCKER_HOST.DOCKER_TLS_VERIFY.GIT_PAGER.GOOGLE_APPLICATION_CREDENTIALS.GRADLE_USER_HOME.HISTFILE.HOME.HTTPS_PROXY.HTTP_PROXY.KUBECONFIG.MANPAGER.NODE_EXTRA_CA_CERTS.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.PAGER.REQUESTS_CA_BUNDLE.SSH_AUTH_SOCK.SSL_CERT_DIR.SSL_CERT_FILE.ZDOTDIR`.split(`.`),blockedOverridePrefixes:[`GIT_CONFIG_`,`NPM_CONFIG_`,`CARGO_REGISTRIES_`,`TF_VAR_`],blockedPrefixes:[`DYLD_`,`LD_`,`BASH_FUNC_`]};const nr=/^[A-Za-z_][A-Za-z0-9_]*$/,rr=tr;function ir(e){return Array.from(new Set(Array.from(e,e=>e.toUpperCase()))).toSorted((e,t)=>e.localeCompare(t))}const ar=ir(rr.blockedEverywhereKeys??rr.blockedKeys??[]),or=ir(rr.blockedOverrideOnlyKeys??rr.blockedOverrideKeys??[]),sr=new Set(ir(rr.allowedInheritedOverrideOnlyKeys??[])),cr=ir([...ar,...or.filter(e=>!sr.has(e))]),lr=Object.freeze(ar),ur=Object.freeze(ir(rr.blockedPrefixes)),dr=Object.freeze(cr),fr=Object.freeze(ir(rr.blockedPrefixes)),pr=Object.freeze(or),mr=Object.freeze(ir(rr.blockedOverridePrefixes??[]));Object.freeze([`TERM`,`LANG`,`LC_ALL`,`LC_CTYPE`,`LC_MESSAGES`,`COLORTERM`,`NO_COLOR`,`FORCE_COLOR`]);const hr=new Set(lr),gr=new Set(dr),_r=new Set(pr);function vr(e,t){let n=e.trim();return!n||t?.portable&&!nr.test(n)?null:n}function yr(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return hr.has(n)?!0:ur.some(e=>n.startsWith(e))}function br(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return gr.has(n)?!0:fr.some(e=>n.startsWith(e))}function xr(e){let t=vr(e);if(!t)return!1;let n=t.toUpperCase();return _r.has(n)?!0:mr.some(e=>n.startsWith(e))}function Sr(e){let t=e?.baseEnv??process.env,n=e?.overrides??void 0,r=e?.blockPathOverrides??!0,i={};for(let[e,n]of Object.entries(t)){if(typeof n!=`string`)continue;let t=vr(e,{portable:!0});!t||br(t)||(i[t]=n)}if(!n)return i;for(let[e,t]of Object.entries(n)){if(typeof t!=`string`)continue;let n=vr(e,{portable:!0});if(!n)continue;let a=n.toUpperCase();r&&a===`PATH`||yr(a)||xr(a)||(i[n]=t)}return i}const Cr=new Set(`ALL_PROXY.ANTHROPIC_API_KEY.ANTHROPIC_OAUTH_TOKEN.BROWSER_EXECUTABLE_PATH.FASED_AGENT_DIR.FASED_ALLOW_INSECURE_PRIVATE_WS.FASED_ALLOW_PROJECT_LOCAL_BIN.FASED_BROWSER_EXECUTABLE_PATH.FASED_BROWSER_CONTROL_MODULE.FASED_BUNDLED_HOOKS_DIR.FASED_BUNDLED_PLUGINS_DIR.FASED_BUNDLED_SKILLS_DIR.FASED_CACHE_TRACE.FASED_CACHE_TRACE_FILE.FASED_CACHE_TRACE_MESSAGES.FASED_CACHE_TRACE_PROMPT.FASED_CACHE_TRACE_SYSTEM.FASED_CONFIG_PATH.FASED_GATEWAY_PASSWORD.FASED_GATEWAY_PORT.FASED_GATEWAY_SECRET.FASED_GATEWAY_TOKEN.FASED_GATEWAY_URL.FASED_HOME.FASED_LIVE_ANTHROPIC_KEY.FASED_LIVE_ANTHROPIC_KEYS.FASED_LIVE_GEMINI_KEY.FASED_LIVE_OPENAI_KEY.FASED_MPM_CATALOG_PATHS.FASED_NODE_EXEC_FALLBACK.FASED_NODE_EXEC_HOST.FASED_OAUTH_DIR.FASED_PINNED_PYTHON.FASED_PINNED_WRITE_PYTHON.FASED_PLUGIN_CATALOG_PATHS.FASED_PROFILE.FASED_RAW_STREAM.FASED_RAW_STREAM_PATH.FASED_SHOW_SECRETS.FASED_SKIP_BROWSER_CONTROL_SERVER.FASED_STATE_DIR.FASED_TEST_TAILSCALE_BINARY.HTTP_PROXY.HTTPS_PROXY.NODE_TLS_REJECT_UNAUTHORIZED.NO_PROXY.OPENAI_API_KEY.OPENAI_API_KEYS.PI_CODING_AGENT_DIR.PLAYWRIGHT_CHROMIUM_EXECUTABLE_PATH.UV_PYTHON`.split(`.`)),wr=[`_BASE_URL`],Tr=[`ANTHROPIC_API_KEY_`,`CLAWHUB_`,`FASED_CLAWHUB_`,`FASEDHUB_`,`FASED_DISABLE_`,`FASED_SKIP_`,`FASED_UPDATE_`,`OPENAI_API_KEY_`];function Er(e){return yr(e)||xr(e)}function Dr(e){return!1}function Or(e){let t=e.toUpperCase();return Er(t)||Cr.has(t)||Tr.some(e=>t.startsWith(e))||wr.some(e=>t.endsWith(e))}function kr(e){let t;try{t=n.readFileSync(e.filePath,`utf8`)}catch(t){return e.quiet||(t&&typeof t==`object`&&`code`in t?String(t.code):void 0)!==`ENOENT`&&console.warn(`[dotenv] Failed to read ${e.filePath}: ${String(t)}`),null}let r;try{r=v.parse(t)}catch(t){return e.quiet||console.warn(`[dotenv] Failed to parse ${e.filePath}: ${String(t)}`),null}let i=[];for(let[t,n]of Object.entries(r)){let r=vr(t,{portable:!0});!r||e.shouldBlockKey(r)||i.push({key:r,value:n})}return{filePath:e.filePath,entries:i}}function Ar(e,t){let n=kr({filePath:e,shouldBlockKey:Or,quiet:t?.quiet??!0});if(n)for(let{key:e,value:t}of n.entries)process.env[e]===void 0&&(process.env[e]=t)}function jr(e){let t=new Set(Object.keys(process.env)),n=new Map,r=new Map;for(let i of e)for(let{key:e,value:a}of i.entries){if(t.has(e))continue;let o=r.get(e);if(o){if(o.value!==a){let t=`${o.filePath}\u0000${i.filePath}`,r=n.get(t);r?r.keys.add(e):n.set(t,{keptPath:o.filePath,ignoredPath:i.filePath,keys:new Set([e])})}continue}r.set(e,{value:a,filePath:i.filePath}),process.env[e]===void 0&&(process.env[e]=a)}for(let e of n.values()){let t=[...e.keys].toSorted();t.length!==0&&console.warn(`[dotenv] Conflicting values in ${e.keptPath} and ${e.ignoredPath} for ${t.join(`, `)}; keeping ${e.keptPath}.`)}}function Mr(e){let t=e?.quiet??!0,n=e?.stateEnvPath??i.join(vn(process.env),`.env`),r=i.join(S(process.env,p.homedir),`.fased`,`.env`),a=process.env.FASED_STATE_DIR?.trim()!==void 0&&i.resolve(n)!==i.resolve(r),o=[kr({filePath:n,shouldBlockKey:Dr,quiet:t})];a||o.push(kr({filePath:i.join(S(process.env,p.homedir),`.config`,`fased`,`gateway.env`),shouldBlockKey:Dr,quiet:t})),jr(o.filter(e=>e!==null))}function Nr(e){let t=e?.quiet??!0;Ar(i.join(process.cwd(),`.env`),{quiet:t}),Mr({quiet:t})}const Pr=[`true`,`1`,`yes`,`on`],Fr=[`false`,`0`,`no`,`off`],Ir=new Set(Pr),Lr=new Set(Fr);function Rr(e,t={}){if(typeof e==`boolean`)return e;if(typeof e!=`string`)return;let n=e.trim().toLowerCase();if(!n)return;let r=t.truthy??Pr,i=t.falsy??Fr,a=r===Pr?Ir:new Set(r),o=i===Fr?Lr:new Set(i);if(a.has(n))return!0;if(o.has(n))return!1}function zr(e){return Rr(e)===!0}const Br=15e3;let Vr;function Hr(e){let t=Sr({baseEnv:e}),n=p.homedir().trim();return n?t.HOME=n:delete t.HOME,delete t.ZDOTDIR,t}function Ur(e){return typeof e!=`number`||!Number.isFinite(e)?Br:Math.max(0,e)}function Wr(){if(Vr!==void 0)return Vr;try{let e=n.readFileSync(`/etc/shells`,`utf8`).split(/\r?\n/).map(e=>e.trim()).filter(e=>e.length>0&&!e.startsWith(`#`)&&i.isAbsolute(e));Vr=new Set(e)}catch{Vr=null}return Vr}function Gr(e){return!i.isAbsolute(e)||i.normalize(e)!==e?!1:Wr()?.has(e)===!0}function Kr(e){let t=e.SHELL?.trim();return t&&Gr(t)?t:`/bin/sh`}function qr(e){return e.exec(e.shell,[`-l`,`-c`,`env -0`],{encoding:`buffer`,timeout:e.timeoutMs,maxBuffer:2097152,env:e.env,stdio:[`ignore`,`pipe`,`pipe`]})}function Jr(e){let t=new Map,n=e.toString(`utf8`).split(`\0`);for(let e of n){if(!e)continue;let n=e.indexOf(`=`);if(n<=0)continue;let r=e.slice(0,n),i=e.slice(n+1);r&&t.set(r,i)}return t}function Yr(e){let t=e.exec??c,n=Ur(e.timeoutMs),r=Kr(e.env),i=Hr(e.env);try{return{ok:!0,shellEnv:Jr(qr({shell:r,env:i,exec:t,timeoutMs:n}))}}catch(e){return{ok:!1,error:e instanceof Error?e.message:String(e)}}}function Xr(e){let t=e.logger??console;if(!e.enabled)return{ok:!0,applied:[],skippedReason:`disabled`};if(e.expectedKeys.some(t=>!!e.env[t]?.trim()))return{ok:!0,applied:[],skippedReason:`already-has-keys`};let n=Yr({env:e.env,timeoutMs:e.timeoutMs,exec:e.exec});if(!n.ok)return t.warn(`[fased] shell env fallback failed: ${n.error}`),{ok:!1,error:n.error,applied:[]};let r=[];for(let t of e.expectedKeys){if(e.env[t]?.trim())continue;let i=n.shellEnv.get(t);i?.trim()&&(e.env[t]=i,r.push(t))}return{ok:!0,applied:r}}function Zr(e){return zr(e.FASED_LOAD_SHELL_ENV)}function Qr(e){return zr(e.FASED_DEFER_SHELL_ENV_FALLBACK)}function $r(e){let t=e.FASED_SHELL_ENV_TIMEOUT_MS?.trim();if(!t)return Br;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):Br}const ei=new Set([`ENOENT`,`ENOTDIR`]),ti=/^\.\.(?:[\\/]|$)/u;function ni(e){let t=i.win32.normalize(e);return t.startsWith(`\\\\?\\`)&&(t=t.slice(4),t.toUpperCase().startsWith(`UNC\\`)&&(t=`\\\\${t.slice(4)}`)),t.replaceAll(`/`,`\\`).toLowerCase()}function ri(e){return!!(e&&typeof e==`object`&&`code`in e)}function ii(e){return ri(e)&&typeof e.code==`string`&&ei.has(e.code)}function ai(e,t){let n=i.resolve(e),r=i.resolve(t);if(process.platform===`win32`){let e=ni(n),t=ni(r),a=i.win32.relative(e,t);return a===``||!ti.test(a)&&!i.win32.isAbsolute(a)}let a=i.relative(n,r);return a===``||!ti.test(a)&&!i.isAbsolute(a)}r.O_WRONLY|r.O_CREAT|r.O_TRUNC|(process.platform!==`win32`&&`O_NOFOLLOW`in r?r.O_NOFOLLOW:0);function oi(e,t){let n=i.resolve(e),r=i.resolve(t),a=i.relative(n,r);return a===``||!a.startsWith(`..${i.sep}`)&&a!==`..`&&!i.isAbsolute(a)}Ze(import.meta.url),String.raw`\b[A-Z0-9_]*(?:KEY|TOKEN|SECRET|PASSWORD|PASSWD)\b\s*[=:]\s*(["']?)([^\s"'\\]+)\1`,String.raw`"(?:apiKey|token|secret|password|passwd|accessToken|refreshToken)"\s*:\s*"([^"]+)"`,String.raw`--(?:api[-_]?key|token|secret|password|passwd)\s+(["']?)([^\s"']+)\1`,String.raw`Authorization\s*[:=]\s*Bearer\s+([A-Za-z0-9._\-+=]+)`,String.raw`\bBearer\s+([A-Za-z0-9._\-+=]{18,})\b`,String.raw`-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]+?-----END [A-Z ]*PRIVATE KEY-----`,String.raw`\b(sk-[A-Za-z0-9_-]{8,})\b`,String.raw`\b(ghp_[A-Za-z0-9]{20,})\b`,String.raw`\b(github_pat_[A-Za-z0-9_]{20,})\b`,String.raw`\b(xox[baprs]-[A-Za-z0-9-]{10,})\b`,String.raw`\b(xapp-[A-Za-z0-9-]{10,})\b`,String.raw`\b(gsk_[A-Za-z0-9_-]{10,})\b`,String.raw`\b(AIza[0-9A-Za-z\-_]{20,})\b`,String.raw`\b(pplx-[A-Za-z0-9_-]{10,})\b`,String.raw`\b(npm_[A-Za-z0-9]{10,})\b`,String.raw`\bbot(\d{6,}:[A-Za-z0-9_-]{20,})\b`,String.raw`\b(\d{6,}:[A-Za-z0-9_-]{20,})\b`,Object.freeze({allowFinalSymlinkForUnlink:!1,allowFinalHardlinkForUnlink:!1}),Object.freeze({allowFinalSymlinkForUnlink:!0,allowFinalHardlinkForUnlink:!0});function si(e){let t=i.resolve(e.rootPath),n=i.resolve(e.absolutePath),r=e.rootCanonicalPath?i.resolve(e.rootCanonicalPath):fi(t),a=ai(t,n),o=li({absolutePath:n,outsideLexicalCanonicalPath:a?void 0:fi(n)});if(ui({skipLexicalRootCheck:e.skipLexicalRootCheck,lexicalInside:a,canonicalOutsideLexicalPath:o,rootCanonicalPath:r,boundaryLabel:e.boundaryLabel,rootPath:t,absolutePath:n}),!a){let i=o;return gi({boundaryLabel:e.boundaryLabel,rootCanonicalPath:r,candidatePath:i,absolutePath:n}),di({absolutePath:n,canonicalPath:i,rootPath:t,rootCanonicalPath:r,kind:pi(n,!1)})}return ci({params:e,absolutePath:n,rootPath:t,rootCanonicalPath:r})}function ci(e){let t=i.relative(e.rootPath,e.absolutePath).split(i.sep).filter(Boolean),r=e.params.policy?.allowFinalSymlinkForUnlink===!0,a=e.rootCanonicalPath,o=e.rootPath,s=!1;for(let c=0;c<t.length;c+=1){let l=t[c]??``,u=c===t.length-1;o=i.join(o,l);let d;try{d=n.lstatSync(o)}catch(n){if(ii(n)){let n=t.slice(c);a=i.resolve(a,...n),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}throw n}if(!d.isSymbolicLink()){a=i.resolve(a,l),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});continue}if(r&&u){s=!0,a=i.resolve(a,l),gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});break}let f=xi(o);if(!ai(e.rootCanonicalPath,f))throw vi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,symlinkPath:o});a=f,o=f}gi({boundaryLabel:e.params.boundaryLabel,rootCanonicalPath:e.rootCanonicalPath,candidatePath:a,absolutePath:e.absolutePath});let c=pi(e.absolutePath,s);return di({absolutePath:e.absolutePath,canonicalPath:a,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,kind:c})}function li(e){return e.outsideLexicalCanonicalPath??e.absolutePath}function ui(e){if(!(e.skipLexicalRootCheck||e.lexicalInside)&&!ai(e.rootCanonicalPath,e.canonicalOutsideLexicalPath))throw _i({boundaryLabel:e.boundaryLabel,rootPath:e.rootPath,absolutePath:e.absolutePath})}function di(e){return{absolutePath:e.absolutePath,canonicalPath:e.canonicalPath,rootPath:e.rootPath,rootCanonicalPath:e.rootCanonicalPath,relativePath:hi(e.rootCanonicalPath,e.canonicalPath),exists:e.kind.exists,kind:e.kind.kind}}function fi(e){let t=i.resolve(e),r=t,a=[];for(;!bi(r)&&!n.existsSync(r);){a.unshift(i.basename(r));let e=i.dirname(r);if(e===r)break;r=e}if(!n.existsSync(r))return t;try{let e=i.resolve(n.realpathSync(r));return a.length===0?e:i.resolve(e,...a)}catch{return t}}function pi(e,t){try{return{exists:!0,kind:mi(t?n.lstatSync(e):n.statSync(e))}}catch(e){if(ii(e))return{exists:!1,kind:`missing`};throw e}}function mi(e){return e.isFile()?`file`:e.isDirectory()?`directory`:e.isSymbolicLink()?`symlink`:`other`}function hi(e,t){let n=i.relative(i.resolve(e),i.resolve(t));return!n||n===`.`||n.startsWith(`..`)||i.isAbsolute(n)?``:n}function gi(e){if(!ai(e.rootCanonicalPath,e.candidatePath))throw Error(`Path resolves outside ${e.boundaryLabel} (${yi(e.rootCanonicalPath)}): ${yi(e.absolutePath)}`)}function _i(e){return Error(`Path escapes ${e.boundaryLabel} (${yi(e.rootPath)}): ${yi(e.absolutePath)}`)}function vi(e){return Error(`Symlink escapes ${e.boundaryLabel} (${yi(e.rootCanonicalPath)}): ${yi(e.symlinkPath)}`)}function yi(e){let t=p.homedir();return e.startsWith(t)?`~${e.slice(t.length)}`:e}function bi(e){return i.parse(e).root===e}function xi(e){try{return i.resolve(n.realpathSync(e))}catch(t){if(!ii(t))throw t;let r=n.readlinkSync(e);return fi(i.resolve(i.dirname(e),r))}}function Si(e){return e===0||e===0n}function Ci(e,t,n=process.platform){return e.ino===t.ino?e.dev===t.dev?!0:n===`win32`&&(Si(e.dev)||Si(t.dev)):!1}function wi(e){let t=typeof e==`object`&&e&&`code`in e?String(e.code):``;return t===`ENOENT`||t===`ENOTDIR`||t===`ELOOP`}function Ti(e,t){return Ci(e,t)}function Ei(e){let t=e.ioFs??n,r=t.constants.O_RDONLY|(typeof t.constants.O_NOFOLLOW==`number`?t.constants.O_NOFOLLOW:0),i=null;try{if(e.rejectPathSymlink&&t.lstatSync(e.filePath).isSymbolicLink())return{ok:!1,reason:`validation`};let n=e.resolvedPath??t.realpathSync(e.filePath),a=t.lstatSync(n);if(!a.isFile()||e.rejectHardlinks&&a.nlink>1||e.maxBytes!==void 0&&a.size>e.maxBytes)return{ok:!1,reason:`validation`};i=t.openSync(n,r);let o=t.fstatSync(i);if(!o.isFile()||e.rejectHardlinks&&o.nlink>1||e.maxBytes!==void 0&&o.size>e.maxBytes||!Ti(a,o))return{ok:!1,reason:`validation`};let s={ok:!0,path:n,fd:i,stat:o};return i=null,s}catch(e){return wi(e)?{ok:!1,reason:`path`,error:e}:{ok:!1,reason:`io`,error:e}}finally{i!==null&&t.closeSync(i)}}function Di(e){return typeof e.openSync==`function`&&typeof e.closeSync==`function`&&typeof e.fstatSync==`function`&&typeof e.lstatSync==`function`&&typeof e.realpathSync==`function`&&typeof e.readFileSync==`function`&&typeof e.constants==`object`&&e.constants!==null}function Oi(e){let t=e.ioFs??n,r=i.resolve(e.absolutePath),a,o;try{let t=si({absolutePath:r,rootPath:e.rootPath,rootCanonicalPath:e.rootRealPath,boundaryLabel:e.boundaryLabel,skipLexicalRootCheck:e.skipLexicalRootCheck});a=t.canonicalPath,o=t.rootCanonicalPath}catch(e){return{ok:!1,reason:`validation`,error:e}}let s=Ei({filePath:r,resolvedPath:a,rejectHardlinks:e.rejectHardlinks??!0,maxBytes:e.maxBytes,ioFs:t});return s.ok?{ok:!0,path:s.path,fd:s.fd,stat:s.stat,rootRealPath:o}:s}const ki=`fased.plugin.json`,Ai=[ki];function O(e){return Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[]}function ji(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e)continue;let i=O(r);i.length!==0&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Mi(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=typeof n==`string`?n.trim():``,i=typeof r==`string`?r.trim():``;!e||!i||(t[e]=i)}return Object.keys(t).length>0?t:void 0}function Ni(e){if(!E(e))return;let t=O(e.memoryEmbeddingProviders),n=O(e.speechProviders),r=O(e.realtimeTranscriptionProviders),i=O(e.realtimeVoiceProviders),a=O(e.mediaUnderstandingProviders),o=O(e.imageGenerationProviders),s=O(e.videoGenerationProviders),c=O(e.musicGenerationProviders),l=O(e.webFetchProviders),u=O(e.webSearchProviders),d=O(e.tools),f={...t.length>0?{memoryEmbeddingProviders:t}:{},...n.length>0?{speechProviders:n}:{},...r.length>0?{realtimeTranscriptionProviders:r}:{},...i.length>0?{realtimeVoiceProviders:i}:{},...a.length>0?{mediaUnderstandingProviders:a}:{},...o.length>0?{imageGenerationProviders:o}:{},...s.length>0?{videoGenerationProviders:s}:{},...c.length>0?{musicGenerationProviders:c}:{},...l.length>0?{webFetchProviders:l}:{},...u.length>0?{webSearchProviders:u}:{},...d.length>0?{tools:d}:{}};return Object.keys(f).length>0?f:void 0}function Pi(e){if(!E(e))return;let t=O(e.modelPrefixes),n=O(e.modelPatterns),r={...t.length>0?{modelPrefixes:t}:{},...n.length>0?{modelPatterns:n}:{}};return Object.keys(r).length>0?r:void 0}function Fi(e){if(!Array.isArray(e))return;let t=[];for(let n of e){if(!E(n))continue;let e=typeof n.provider==`string`?n.provider.trim():``,r=typeof n.method==`string`?n.method.trim():``,i=typeof n.choiceId==`string`?n.choiceId.trim():``;if(!e||!r||!i)continue;let a=typeof n.choiceLabel==`string`?n.choiceLabel.trim():``,o=typeof n.choiceHint==`string`?n.choiceHint.trim():``,s=typeof n.assistantPriority==`number`&&Number.isFinite(n.assistantPriority)?n.assistantPriority:void 0,c=n.assistantVisibility===`manual-only`||n.assistantVisibility===`visible`?n.assistantVisibility:void 0,l=O(n.deprecatedChoiceIds),u=typeof n.groupId==`string`?n.groupId.trim():``,d=typeof n.groupLabel==`string`?n.groupLabel.trim():``,f=typeof n.groupHint==`string`?n.groupHint.trim():``,p=typeof n.optionKey==`string`?n.optionKey.trim():``,m=typeof n.cliFlag==`string`?n.cliFlag.trim():``,h=typeof n.cliOption==`string`?n.cliOption.trim():``,g=typeof n.cliDescription==`string`?n.cliDescription.trim():``,_=O(n.onboardingScopes).filter(e=>e===`text-inference`||e===`image-generation`);t.push({provider:e,method:r,choiceId:i,...a?{choiceLabel:a}:{},...o?{choiceHint:o}:{},...s===void 0?{}:{assistantPriority:s},...c?{assistantVisibility:c}:{},...l.length>0?{deprecatedChoiceIds:l}:{},...u?{groupId:u}:{},...d?{groupLabel:d}:{},...f?{groupHint:f}:{},...p?{optionKey:p}:{},...m?{cliFlag:m}:{},...h?{cliOption:h}:{},...g?{cliDescription:g}:{},..._.length>0?{onboardingScopes:_}:{}})}return t.length>0?t:void 0}function Ii(e){if(!E(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=n.trim();if(!e||!E(r))continue;let i=E(r.schema)?r.schema:null;if(!i)continue;let a=E(r.uiHints)?r.uiHints:void 0,o=typeof r.label==`string`?r.label.trim():``,s=typeof r.description==`string`?r.description.trim():``,c=O(r.preferOver);t[e]={schema:i,...a?{uiHints:a}:{},...o?{label:o}:{},...s?{description:s}:{},...c.length>0?{preferOver:c}:{}}}return Object.keys(t).length>0?t:void 0}function Li(e){for(let t of Ai){let r=i.join(e,t);if(n.existsSync(r))return r}return i.join(e,ki)}function Ri(e){let t=Li(e),r=Oi({absolutePath:t,rootPath:e,boundaryLabel:`plugin root`});if(!r.ok)return r.reason===`path`?{ok:!1,error:`plugin manifest not found: ${t}`,manifestPath:t}:{ok:!1,error:`unsafe plugin manifest path: ${t} (${r.reason})`,manifestPath:t};let i;try{i=m.parse(n.readFileSync(r.fd,`utf-8`))}catch(e){return{ok:!1,error:`failed to parse plugin manifest: ${String(e)}`,manifestPath:t}}finally{n.closeSync(r.fd)}if(!E(i))return{ok:!1,error:`plugin manifest must be an object`,manifestPath:t};let a=typeof i.id==`string`?i.id.trim():``;if(!a)return{ok:!1,error:`plugin manifest requires id`,manifestPath:t};let o=E(i.configSchema)?i.configSchema:null;if(!o)return{ok:!1,error:`plugin manifest requires configSchema`,manifestPath:t};let s=i.enabledByDefault===!0,c=O(i.legacyPluginIds),l=O(i.autoEnableWhenConfiguredProviders),u=typeof i.kind==`string`?i.kind:void 0,d=typeof i.name==`string`?i.name.trim():void 0,f=typeof i.description==`string`?i.description.trim():void 0,p=typeof i.version==`string`?i.version.trim():void 0,h=O(i.channels),g=O(i.providers),_=Pi(i.modelSupport),v=ji(i.providerAuthEnvVars),ee=Mi(i.providerAuthAliases),y=Fi(i.providerAuthChoices),b=O(i.skills),te=Ni(i.contracts),ne=Ii(i.channelConfigs),re;return E(i.uiHints)&&(re=i.uiHints),{ok:!0,manifest:{id:a,configSchema:o,...s?{enabledByDefault:s}:{},...c.length>0?{legacyPluginIds:c}:{},...l.length>0?{autoEnableWhenConfiguredProviders:l}:{},kind:u,channels:h,providers:g,modelSupport:_,providerAuthEnvVars:v,providerAuthAliases:ee,providerAuthChoices:y,skills:b,name:d,description:f,version:p,uiHints:re,contracts:te,channelConfigs:ne},manifestPath:t}}const zi=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`];function Bi(e){if(e)return e.fased}const Vi={memory:`memory-core`};function Hi(e){return Vi[e]}function Ui(e,t){let n={entry:!1,install:!1,allowlist:!1,loadPath:!1,memorySlot:!1},r=e.plugins??{},i=r.entries;if(i&&t in i){let{[t]:e,...r}=i;i=Object.keys(r).length>0?r:void 0,n.entry=!0}let a=r.installs,o=a?.[t];if(a&&t in a){let{[t]:e,...r}=a;a=Object.keys(r).length>0?r:void 0,n.install=!0}let s=r.allow;Array.isArray(s)&&s.includes(t)&&(s=s.filter(e=>e!==t),s.length===0&&(s=void 0),n.allowlist=!0);let c=r.load;if(o?.source===`path`&&o.sourcePath){let e=o.sourcePath,t=c?.paths;if(Array.isArray(t)&&t.includes(e)){let r=t.filter(t=>t!==e);c=r.length>0?{...c,paths:r}:void 0,n.loadPath=!0}}let l=r.slots;l?.memory===t&&(l={...l,memory:Hi(`memory`)},n.memorySlot=!0),l&&Object.keys(l).length===0&&(l=void 0);let u={...r,entries:i,installs:a,allow:s,load:c,slots:l};return u.entries===void 0&&delete u.entries,u.installs===void 0&&delete u.installs,u.allow===void 0&&delete u.allow,u.load===void 0&&delete u.load,u.slots===void 0&&delete u.slots,{config:{...e,plugins:Object.keys(u).length>0?u:void 0},actions:n}}const Wi=new Set([`__proto__`,`prototype`,`constructor`]);function Gi(e){return Wi.has(e)}const Ki=`main`,qi=/^[a-z0-9][a-z0-9_-]{0,63}$/i,Ji=/[^a-z0-9_-]+/g,Yi=/^-+/,Xi=/-+$/;function k(e){let t=(e??``).trim();return t?qi.test(t)?t.toLowerCase():t.toLowerCase().replace(Ji,`-`).replace(Yi,``).replace(Xi,``).slice(0,64)||Ki:Ki}var Zi=class extends Error{constructor(e){super(na(e)),this.name=`DuplicateAgentDirError`,this.duplicates=e}};function Qi(e){let t=i.resolve(e);return process.platform===`darwin`||process.platform===`win32`?t.toLowerCase():t}function $i(e){let t=new Set,n=Array.isArray(e.agents?.list)?e.agents?.list:[],r=n.find(e=>e?.default)?.id??n[0]?.id??Ki;t.add(k(r));for(let e of n)e?.id&&t.add(k(e.id));let i=e.bindings;if(Array.isArray(i))for(let e of i){let n=e?.agentId;typeof n==`string`&&n.trim()&&t.add(k(n))}return[...t]}function ea(e,t,n){let r=k(t),a=(Array.isArray(e.agents?.list)?e.agents?.list.find(e=>k(e.id)===r)?.agentDir:void 0)?.trim();if(a)return D(a);let o=n?.env??process.env,s=C(o,n?.homedir??(()=>S(o,p.homedir)));return i.join(s,`agents`,r,`agent`)}function ta(e,t){let n=new Map;for(let r of $i(e)){let i=ea(e,r,t),a=Qi(i),o=n.get(a);o?o.agentIds.push(r):n.set(a,{agentDir:i,agentIds:[r]})}return[...n.values()].filter(e=>e.agentIds.length>1)}function na(e){return[`Duplicate agentDir detected (multi-agent config).`,`Each agent must have a unique agentDir; sharing it causes auth/session state collisions and token invalidation.`,``,`Conflicts:`,...e.map(e=>`- ${e.agentDir}: ${e.agentIds.map(e=>`"${e}"`).join(`, `)}`),``,`Fix: remove the shared agents.list[].agentDir override (or give each agent its own directory).`,`If you want to share credentials, copy auth-profiles.json instead of sharing the entire agentDir.`].join(`
2
+ `)}async function ra(e,t){let n=`${e}.bak`;await t.unlink(`${n}.4`).catch(()=>{});for(let e=3;e>=1;--e)await t.rename(`${n}.${e}`,`${n}.${e+1}`).catch(()=>{});await t.rename(n,`${n}.1`).catch(()=>{})}function ia(e){if(typeof e==`string`)return e.trim()||void 0;if(!(!e||typeof e!=`object`))return e.primary?.trim()||void 0}const A=[`off`,`minimal`,`low`,`medium`,`high`],aa=[...A,`xhigh`],oa=[`openai/gpt-5.6`,`openai/gpt-5.6-terra`,`openai/gpt-5.6-luna`,`openai/gpt-5.5`,`openai/gpt-5.4`,`openai/gpt-5.4-mini`,`openai/gpt-5.4-nano`,`openai-codex/gpt-5.5`,`openai-codex/gpt-5.4`,`openai-codex/gpt-5.4-mini`,`openai-codex/gpt-5.3-codex-spark`,`github-copilot/gpt-5.5`,`github-copilot/gpt-5.4`,`github-copilot/gpt-5.4-mini`,`github-copilot/gpt-5.3-codex-spark`],sa=new Set(oa.map(e=>e.toLowerCase())),ca=new Set(oa.map(e=>e.split(`/`)[1]?.toLowerCase()).filter(e=>!!e));function la(e){if(!e)return``;let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t}function ua(e){if(!e)return;let t=e.trim().toLowerCase(),n=t.replace(/[\s_-]+/g,``);if(n===`xhigh`||n===`extrahigh`)return`xhigh`;if(t===`off`)return`off`;if([`on`,`enable`,`enabled`].includes(t))return`low`;if([`min`,`minimal`].includes(t))return`minimal`;if([`low`,`thinkhard`,`think-hard`,`think_hard`].includes(t))return`low`;if([`mid`,`med`,`medium`,`thinkharder`,`think-harder`,`harder`].includes(t))return`medium`;if([`high`,`ultra`,`ultrathink`,`think-hard`,`thinkhardest`,`highest`,`max`].includes(t))return`high`;if(t===`think`)return`minimal`}function da(e,t){let n=t?.trim().toLowerCase();if(!n)return!1;let r=e?.trim().toLowerCase();return r?sa.has(`${r}/${n}`):ca.has(n)}function fa(e){let t=new Set,n=[];for(let r of e??[]){let e=ua(r);!e||t.has(e)||(t.add(e),n.push(e))}return n}function pa(e,t){return da(e,t)?[...aa]:[...A]}function ma(e){let t=e?.trim().toLowerCase()??``;return t.includes(`fable-5`)||t.includes(`opus-4-8`)||t.includes(`opus-4.8`)||t.includes(`opus-4-6`)||t.includes(`opus-4.6`)||t.includes(`opus-4-7`)||t.includes(`opus-4.7`)||t.includes(`sonnet-5`)||t.includes(`sonnet-4-6`)||t.includes(`sonnet-4.6`)||t.includes(`sonnet-4-7`)||t.includes(`sonnet-4.7`)}function ha(e,t){let n=la(e);return n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?{thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:n===`anthropic`?{thinkingMode:ma(t)?`anthropic-adaptive`:`anthropic-thinking-budget`,reasoningBudgetSupported:!ma(t)}:n===`google`||n===`google-gemini-cli`?{thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:n===`zai`?{thinkingMode:`zai-binary`,reasoningBudgetSupported:!1}:n===`qwen`||n===`qwen-coding-plan`?{thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}:n===`moonshot`||n===`kimi-coding`?{thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}:{thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}}function ga(e,t){let n=la(e),r=t?.trim().toLowerCase()??``;return!n||!r?!1:n===`openai`||n===`openai-codex`||n===`github-copilot`||n===`copilot-proxy`?/^gpt-5(?:[.-]|$)/.test(r):n===`anthropic`?r.startsWith(`claude-`)||r.includes(`claude-`):n===`google`||n===`google-gemini-cli`?r.startsWith(`gemini-`):n===`zai`?r.startsWith(`glm-`):n===`qwen`||n===`qwen-coding-plan`?r.includes(`qwen`):n===`moonshot`||n===`kimi-coding`?r.includes(`kimi`):n===`minimax`||n===`minimax-cn`?r.includes(`minimax-m2`):[`openrouter`,`vercel-ai-gateway`,`opencode`,`huggingface`,`venice`,`together`,`synthetic`,`litellm`].includes(n)?/(gpt-5|claude-|gemini-|grok-|qwen|kimi|glm-|deepseek-r1|reasoning|thinking)/.test(r):!1}function _a(e){let t=fa(e.capabilities?.thinkingLevels),n=t.length>0||typeof e.capabilities?.thinkingMode==`string`||typeof e.capabilities?.defaultThinkingLevel==`string`;if(e.capabilities?.fixedReasoning===!0&&!n||!(e.reasoning===!0||e.reasoning!==!1&&ga(e.provider,e.model))&&!n)return null;let r=ha(e.provider,e.model),i=r.thinkingMode===`zai-binary`?[`off`,`low`]:pa(e.provider,e.model),a=t.length>0?t:i,o=ua(e.capabilities?.defaultThinkingLevel);return{thinkingLevels:a,defaultThinkingLevel:o&&a.includes(o)?o:a.includes(`low`)?`low`:a[0]??`off`,thinkingMode:e.capabilities?.thinkingMode??r.thinkingMode,reasoningBudgetSupported:e.capabilities?.reasoningBudgetSupported??r.reasoningBudgetSupported}}const va=`cloudflare-ai-gateway`,ya=`claude-sonnet-5`;`${va}${ya}`;const ba={input:0,output:0,cacheRead:0,cacheWrite:0},xa={tools:!0,json:!0},Sa={thinkingLevels:[...A],defaultThinkingLevel:`low`,reasoningBudgetSupported:!0},Ca=[{id:ya,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:1e6,maxTokens:128e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-adaptive`}},{id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:1e6,maxTokens:128e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1}},{id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],cost:ba,contextWindow:2e5,maxTokens:64e3,capabilities:{...xa,...Sa,thinkingMode:`anthropic-thinking-budget`}}],wa=Ca.map(e=>e.id).map(e=>`${va}/${e}`);function Ta(e){let t=e?.id?.trim()||ya,n=Ca.find(e=>e.id===t)??Ca[0];return{id:t,name:e?.name??n.name,api:`anthropic-messages`,reasoning:e?.reasoning??n.reasoning,input:e?.input??[...n.input],cost:{...n.cost},contextWindow:n.contextWindow,maxTokens:n.maxTokens,capabilities:n.capabilities?{...n.capabilities}:void 0}}function Ea(e=va){return Object.fromEntries(Ca.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Da=`openai/gpt-oss-120b`;`${Da}`;const j={tools:!0,json:!0},Oa=[{id:Da,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.15,output:.75,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:1.69,output:3.38,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V4-Flash`,name:`DeepSeek V4 Flash`,reasoning:!1,input:[`text`],contextWindow:1048576,maxTokens:8192,cost:{input:.14,output:.28,cacheRead:0,cacheWrite:0},capabilities:j},{id:`moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:204800,maxTokens:8192,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0},capabilities:j},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:8192,cost:{input:1.4,output:4.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3.6-35B-A3B`,name:`Qwen3.6 35B A3B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.15,output:.95,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.6,output:3.6,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-Coder-Next`,name:`Qwen3 Coder Next`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.2,output:1.5,cacheRead:0,cacheWrite:0},capabilities:{tools:!0,json:!1}},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:1.3,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.14,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-4-26B-A4B-it`,name:`Gemma 4 26B A4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,cost:{input:.13,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.1,output:.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.7,output:2.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:8192,cost:{input:.269,output:.4,cacheRead:0,cacheWrite:0},capabilities:j},{id:`meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.59,output:.79,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen3 VL 235B A22B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:8192,cost:{input:.3,output:1.5,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.09,output:.58,cacheRead:0,cacheWrite:0},capabilities:j},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.5,output:1.2,cacheRead:0,cacheWrite:0},capabilities:j},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:0,cacheWrite:0},capabilities:{tools:!1,json:!0}},{id:`EssentialAI/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0},capabilities:j},{id:`inclusionAI/Ling-2.6-1T`,name:`Ling 2.6 1T`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,cost:{input:.3,output:2.5,cacheRead:0,cacheWrite:0},capabilities:j}],ka=Oa.map(e=>e.id).map(e=>`huggingface/${e}`);function Aa(e){return{...e.capabilities?{...e.capabilities}:{},...e.reasoning?{fixedReasoning:!0}:{}}}function ja(e){let t=Aa(e);return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:t}}function Ma(e=`huggingface`){return Object.fromEntries(Oa.map(t=>[`${e}/${t.id}`.toLowerCase(),Aa(t)]))}const Na=`default`;`${Na}`;const Pa=[{id:Na,name:`LiteLLM proxy default`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,cost:{input:0,output:0,cacheRead:0,cacheWrite:0},capabilities:{}}],Fa=Pa.map(e=>e.id).map(e=>`litellm/${e}`);function Ia(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:!1},capabilities:e.capabilities?{...e.capabilities}:void 0}}function La(e=`litellm`){return Object.fromEntries(Pa.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const Ra=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`,`gpt-5.3-codex-spark`,`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`qwen3.7-plus`,`minimax-m2.7`,`glm-5.2`,`kimi-k2.6`],za=Ra.map(e=>`opencode/${e}`);function Ba(e){let t=e.trim().toLowerCase();return t.startsWith(`claude-`)?{provider:`anthropic`,model:t}:t.startsWith(`gemini-`)?{provider:`google`,model:t}:t.startsWith(`glm-`)?{provider:`zai`,model:t}:t.startsWith(`kimi-`)?{provider:`moonshot`,model:t}:t.startsWith(`qwen`)?{provider:`qwen`,model:t}:t.startsWith(`gpt-`)?{provider:`openai`,model:t}:{provider:`opencode`,model:t}}function Va(e){let t=Ba(e),n=_a({provider:t.provider,model:t.model,reasoning:!0});return{tools:!0,json:!0,...n?{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}:{}}}function Ha(e){return Object.fromEntries(e.map(e=>[e,Va(e.replace(/^opencode\//,``))]))}const Ua=`hf:MiniMaxAI/MiniMax-M2.5`;`${Ua}`;const Wa={input:0,output:0,cacheRead:0,cacheWrite:0},M={tools:!0,json:!0},Ga=[{id:`hf:zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:moonshotai/Kimi-K2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,capabilities:M},{id:Ua,name:`MiniMax M2.5`,reasoning:!1,input:[`text`],contextWindow:191488,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-4.7-Flash`,name:`GLM-4.7 Flash`,reasoning:!1,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,capabilities:M},{id:`hf:nvidia/NVIDIA-Nemotron-3-Super-120B-A12B-NVFP4`,name:`NVIDIA Nemotron 3 Super 120B`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:65536,capabilities:M},{id:`hf:zai-org/GLM-4.7`,name:`GLM-4.7`,reasoning:!1,input:[`text`],contextWindow:202752,maxTokens:65536,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-V3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:159e3,maxTokens:8192,capabilities:M},{id:`hf:openai/gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-R1-0528`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:deepseek-ai/DeepSeek-V3`,name:`DeepSeek V3`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:meta-llama/Llama-3.3-70B-Instruct`,name:`Llama 3.3 70B Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:8192,capabilities:M},{id:`hf:moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:nvidia/Kimi-K2.5-NVFP4`,name:`Kimi K2.5 NVFP4`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen3 235B A22B Thinking 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3-Coder-480B-A35B-Instruct`,name:`Qwen3 Coder 480B A35B Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:8192,capabilities:M},{id:`hf:Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:8192,capabilities:M}],Ka=Ga.map(e=>e.id);function qa(e){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:{...Wa},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function Ja(e=`synthetic`){return Object.fromEntries(Ga.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const Ya=`moonshotai/Kimi-K2.6`;`${Ya}`;const N={tools:!0,json:!0},Xa={tools:!1,json:!1},Za=[{id:Ya,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:16384,cost:{input:1.2,output:4.5,cacheRead:.2,cacheWrite:1.2},capabilities:{...N,video:!0}},{id:`moonshotai/Kimi-K2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:2.8,cacheRead:.5,cacheWrite:2.8},capabilities:N},{id:`MiniMaxAI/MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:.06,cacheWrite:.3},capabilities:N},{id:`zai-org/GLM-5.1`,name:`GLM-5.1`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1.4,output:4.4,cacheRead:1.4,cacheWrite:1.4},capabilities:N},{id:`zai-org/GLM-5`,name:`GLM-5`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:128e3,cost:{input:1,output:3.2,cacheRead:1,cacheWrite:1},capabilities:N},{id:`Qwen/Qwen3.6-Plus`,name:`Qwen3.6 Plus`,reasoning:!0,input:[`text`],contextWindow:1e6,maxTokens:32768,cost:{input:.5,output:3,cacheRead:.5,cacheWrite:.5},capabilities:Xa},{id:`Qwen/Qwen3.5-397B-A17B`,name:`Qwen3.5 397B A17B`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.6,output:3.6,cacheRead:.6,cacheWrite:.6},capabilities:N},{id:`Qwen/Qwen3.5-9B`,name:`Qwen3.5 9B`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.1,output:.15,cacheRead:.1,cacheWrite:.1},capabilities:N},{id:`openai/gpt-oss-120b`,name:`GPT-OSS 120B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.15,output:.6,cacheRead:.15,cacheWrite:.15},capabilities:N},{id:`openai/gpt-oss-20b`,name:`GPT-OSS 20B`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:32768,cost:{input:.05,output:.2,cacheRead:.05,cacheWrite:.05},capabilities:N},{id:`deepseek-ai/DeepSeek-V4-Pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],contextWindow:512e3,maxTokens:32768,cost:{input:2.1,output:4.4,cacheRead:.2,cacheWrite:2.1},capabilities:N},{id:`deepseek-ai/DeepSeek-R1`,name:`DeepSeek R1 0528`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:32768,cost:{input:3,output:7,cacheRead:3,cacheWrite:3},capabilities:Xa},{id:`deepseek-ai/DeepSeek-V3.1`,name:`DeepSeek V3.1`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:32768,cost:{input:.6,output:1.7,cacheRead:.6,cacheWrite:.6},capabilities:Xa},{id:`Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8`,name:`Qwen3 Coder 480B A35B Instruct FP8`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:32768,cost:{input:2,output:2,cacheRead:2,cacheWrite:2},capabilities:N},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-tput`,name:`Qwen3 235B A22B Instruct 2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.6,cacheRead:.2,cacheWrite:.2},capabilities:N},{id:`Qwen/Qwen3-Coder-Next-FP8`,name:`Qwen3 Coder Next FP8`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:32768,cost:{input:.5,output:1.2,cacheRead:.5,cacheWrite:.5},capabilities:Xa},{id:`meta-llama/Llama-3.3-70B-Instruct-Turbo`,name:`Llama 3.3 70B Instruct Turbo`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:8192,cost:{input:.88,output:.88,cacheRead:.88,cacheWrite:.88},capabilities:N},{id:`essentialai/rnj-1-instruct`,name:`Rnj-1 Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:8192,cost:{input:.15,output:.15,cacheRead:.15,cacheWrite:.15},capabilities:N},{id:`google/gemma-4-31B-it`,name:`Gemma 4 31B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:32768,cost:{input:.2,output:.5,cacheRead:.2,cacheWrite:.2},capabilities:N},{id:`google/gemma-3n-E4B-it`,name:`Gemma 3N E4B Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:8192,cost:{input:.06,output:.12,cacheRead:.06,cacheWrite:.06},capabilities:{tools:!1,json:!0}}],Qa=Za.map(e=>e.id).map(e=>`together/${e}`);function $a(e){return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,capabilities:e.capabilities?{...e.capabilities}:void 0}}function eo(e=`together`){return Object.fromEntries(Za.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const to=`zai-org-glm-5-1`;`${to}`;const P={thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},F={tools:!0,json:!0},no={tools:!0,json:!1},ro=[{id:to,name:`GLM 5.1`,reasoning:!0,input:[`text`],cost:{input:1.75,output:5.5,cacheRead:.325,cacheWrite:0},contextWindow:2e5,maxTokens:24e3,capabilities:{...F,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`venice-uncensored-1-2`,name:`Venice Uncensored 1.2`,reasoning:!1,input:[`text`,`image`],cost:{input:.2,output:.9,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:F},{id:`qwen-3-6-plus`,name:`Qwen 3.6 Plus Uncensored`,reasoning:!0,input:[`text`,`image`],cost:{input:.625,output:3.75,cacheRead:.0625,cacheWrite:.78},contextWindow:1e6,maxTokens:65536,capabilities:{...F,video:!0,fixedReasoning:!0}},{id:`qwen3-5-397b-a17b`,name:`Qwen 3.5 397B`,reasoning:!0,input:[`text`,`image`],cost:{input:.75,output:4.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:32768,capabilities:{...F,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`qwen3-235b-a22b-thinking-2507`,name:`Qwen 3 235B A22B Thinking`,reasoning:!0,input:[`text`],cost:{input:.45,output:3.5,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...F,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`qwen3-coder-480b-a35b-instruct-turbo`,name:`Qwen 3 Coder 480B Turbo`,reasoning:!1,input:[`text`],cost:{input:.35,output:1.5,cacheRead:.04,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:F},{id:`qwen3-vl-235b-a22b`,name:`Qwen3 VL 235B`,reasoning:!1,input:[`text`,`image`],cost:{input:.25,output:1.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:16384,capabilities:F},{id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,input:[`text`],cost:{input:1.73,output:3.796,cacheRead:.33,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...F,fixedReasoning:!0}},{id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,input:[`text`],cost:{input:.17,output:.35,cacheRead:.028,cacheWrite:0},contextWindow:1e6,maxTokens:32768,capabilities:{...F,fixedReasoning:!0}},{id:`kimi-k2-6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],cost:{input:.85,output:4.655,cacheRead:.22,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...F,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`claude-opus-4-7`,name:`Claude Opus 4.7`,reasoning:!0,input:[`text`,`image`],cost:{input:6,output:30,cacheRead:.6,cacheWrite:7.5},contextWindow:1e6,maxTokens:128e3,capabilities:{...F,fixedReasoning:!0}},{id:`claude-sonnet-4-6`,name:`Claude Sonnet 4.6`,reasoning:!0,input:[`text`,`image`],cost:{input:3.6,output:18,cacheRead:.36,cacheWrite:4.5},contextWindow:1e6,maxTokens:64e3,capabilities:{...F,fixedReasoning:!0}},{id:`openai-gpt-55`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],cost:{input:6.25,output:37.5,cacheRead:.625,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`openai-gpt-55-pro`,name:`GPT-5.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:37.5,output:225,cacheRead:0,cacheWrite:0},contextWindow:1e6,maxTokens:128e3,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`medium`,...P}},{id:`openai-gpt-54`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],cost:{input:3.13,output:18.8,cacheRead:.313,cacheWrite:0},contextWindow:1e6,maxTokens:131072,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`openai-gpt-54-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],cost:{input:.9375,output:5.625,cacheRead:.09375,cacheWrite:0},contextWindow:4e5,maxTokens:128e3,capabilities:{...F,thinkingLevels:[`off`,`minimal`,`low`,`medium`,`high`],defaultThinkingLevel:`high`,...P}},{id:`gemini-3-1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],cost:{input:2.5,output:15,cacheRead:.5,cacheWrite:.5},contextWindow:1e6,maxTokens:32768,capabilities:{...F,audio:!0,video:!0,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`grok-4-20`,name:`Grok 4.20`,reasoning:!0,input:[`text`,`image`],cost:{input:1.42,output:2.83,cacheRead:.23,cacheWrite:0},contextWindow:2e6,maxTokens:128e3,capabilities:{...F,fixedReasoning:!0}},{id:`minimax-m27`,name:`MiniMax M2.7`,reasoning:!0,input:[`text`],cost:{input:.375,output:1.5,cacheRead:.075,cacheWrite:0},contextWindow:198e3,maxTokens:32768,capabilities:{...no,thinkingLevels:[`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`openai-gpt-oss-120b`,name:`OpenAI GPT OSS 120B`,reasoning:!0,input:[`text`],cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:16384,capabilities:{...no,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`google-gemma-4-31b-it`,name:`Google Gemma 4 31B Instruct`,reasoning:!0,input:[`text`,`image`],cost:{input:.175,output:.5,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:8192,capabilities:{...F,video:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,...P}},{id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],cost:{input:.1875,output:.75,cacheRead:0,cacheWrite:0},contextWindow:256e3,maxTokens:65536,capabilities:{...F,thinkingLevels:[`off`,`high`],defaultThinkingLevel:`high`,...P}}],io=ro.map(e=>e.id).map(e=>`venice/${e}`);function ao(e){let t=e.capabilities,n=!!t?.thinkingLevels?.length;return{id:e.id,name:e.name,api:`openai-completions`,reasoning:e.reasoning,input:[...e.input],cost:{...e.cost},contextWindow:e.contextWindow,maxTokens:e.maxTokens,compat:{supportsUsageInStreaming:!1,supportsReasoningEffort:n},capabilities:t?{...t}:void 0}}function oo(e=`venice`){return Object.fromEntries(ro.map(t=>[`${e}/${t.id}`.toLowerCase(),t.capabilities?{...t.capabilities}:{}]))}const so=[{id:`openai/gpt-5.5`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`web-search`,`implicit-caching`,`file-input`,`vision`]},{id:`openai/gpt-5.4`,contextWindow:1e6,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-mini`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`,`web-search`]},{id:`openai/gpt-5.4-nano`,contextWindow:4e5,maxTokens:128e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`web-search`,`vision`,`file-input`]},{id:`anthropic/claude-fable-5`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-opus-4.8`,contextWindow:1e6,maxTokens:128e3,tags:[`tool-use`,`reasoning`,`vision`,`file-input`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-sonnet-5`,contextWindow:1e6,maxTokens:128e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`,`web-search`]},{id:`anthropic/claude-haiku-4.5`,contextWindow:2e5,maxTokens:64e3,tags:[`file-input`,`reasoning`,`tool-use`,`vision`,`explicit-caching`]},{id:`google/gemini-3.5-flash`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-pro-preview`,contextWindow:1e6,maxTokens:64e3,tags:[`file-input`,`tool-use`,`reasoning`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3-flash-preview`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`file-input`,`vision`,`web-search`,`implicit-caching`]},{id:`google/gemini-3.1-flash-lite`,contextWindow:1e6,maxTokens:65e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-4.3`,contextWindow:1e6,maxTokens:1e6,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`,`web-search`]},{id:`xai/grok-build-0.1`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`,`implicit-caching`]},{id:`mistral/mistral-medium-3.5`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`mistral/mistral-small-2603`,contextWindow:256e3,maxTokens:256e3,tags:[`reasoning`,`tool-use`,`vision`]},{id:`mistral/mistral-large-2512`,contextWindow:256e3,maxTokens:256e3,tags:[`vision`]},{id:`mistral/devstral-2512`,contextWindow:256e3,maxTokens:256e3,tags:[`tool-use`]},{id:`minimax/minimax-m2.7`,contextWindow:204800,maxTokens:131e3,tags:[`reasoning`,`tool-use`,`implicit-caching`,`file-input`,`vision`]},{id:`minimax/minimax-m2.7-highspeed`,contextWindow:204800,maxTokens:131100,tags:[`reasoning`,`tool-use`,`implicit-caching`,`vision`]},{id:`moonshotai/kimi-k2.6`,contextWindow:262e3,maxTokens:262e3,tags:[`reasoning`,`tool-use`,`vision`,`file-input`,`implicit-caching`]}],co=so.map(e=>e.id),lo=co.map(e=>`vercel-ai-gateway/${e}`),uo={anthropic:`Anthropic`,google:`Google`,minimax:`MiniMax`,mistral:`Mistral`,moonshotai:`Moonshot`,openai:`OpenAI`,xai:`xAI`};function fo(e){let t=e.trim().replace(/^vercel-ai-gateway\//,``).toLowerCase();return so.find(e=>e.id.toLowerCase()===t)}function po(e){let[t,...n]=e.trim().replace(/^vercel-ai-gateway\//,``).split(`/`),r=n.join(`/`);switch(t){case`anthropic`:return{provider:`anthropic`,model:r};case`google`:return{provider:`google`,model:r};case`minimax`:return{provider:`minimax`,model:r};case`moonshotai`:return{provider:`moonshot`,model:r};case`openai`:return{provider:`openai`,model:r};case`xai`:return{provider:`xai`,model:r};default:return{provider:`vercel-ai-gateway`,model:e}}}function mo(e){let t=fo(e);if(!t)return;let n=new Set(t.tags.map(e=>e.toLowerCase())),r=po(t.id),i=n.has(`reasoning`)?_a({provider:r.provider,model:r.model,reasoning:!0}):null;return{tools:n.has(`tool-use`),...i?{thinkingLevels:i.thinkingLevels,defaultThinkingLevel:i.defaultThinkingLevel,thinkingMode:i.thinkingMode,reasoningBudgetSupported:i.reasoningBudgetSupported}:{}}}function ho(e){return Object.fromEntries(e.flatMap(e=>{let t=mo(e);return t?[[e,t]]:[]}))}function go(e){let[t,...n]=e.split(`/`),r=uo[t??``]??t,i=n.join(`/`);return!r||!i?e:`${r} ${i.replace(/\bapi\b/gi,`API`).replace(/\bgpt\b/gi,`GPT`).replace(/\bxai\b/gi,`xAI`).replace(/[._-]+/g,` `).replace(/\b\w/g,e=>e.toUpperCase())}`}function _o(e){let t=fo(e),n=new Set(t?.tags.map(e=>e.toLowerCase())??[]),r=mo(e);return{id:e,name:go(e),reasoning:n.has(`reasoning`),input:n.has(`vision`)?[`text`,`image`]:[`text`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:t?.contextWindow??2e5,maxTokens:t?.maxTokens??8192,api:`openai-completions`,...r?{capabilities:r}:{}}}const vo={tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1},yo={...vo,audio:!0,video:!0},bo=[{id:`mimo-v2.5-pro`,name:`Xiaomi MiMo V2.5 Pro`,reasoning:!0,input:[`text`,`image`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:vo},{id:`mimo-v2.5`,name:`Xiaomi MiMo V2.5`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:yo},{id:`mimo-v2-pro`,name:`Xiaomi MiMo V2 Pro`,reasoning:!0,input:[`text`],cost:{input:1,output:3,cacheRead:.2,cacheWrite:0},contextWindow:1048576,maxTokens:131072,capabilities:vo},{id:`mimo-v2-omni`,name:`Xiaomi MiMo V2 Omni`,reasoning:!0,input:[`text`,`image`],cost:{input:.4,output:2,cacheRead:.08,cacheWrite:0},contextWindow:262144,maxTokens:128e3,capabilities:yo},{id:`mimo-v2-flash`,name:`Xiaomi MiMo V2 Flash`,reasoning:!0,input:[`text`],cost:{input:.11,output:.32,cacheRead:.01,cacheWrite:0},contextWindow:262144,maxTokens:64e3,capabilities:vo}],xo=bo.map(e=>e.id);function So(e){let t=bo.find(t=>t.id===e);if(!t)throw Error(`Unknown Xiaomi model: ${e}`);return{...t,input:[...t.input],cost:{...t.cost},capabilities:t.capabilities?{...t.capabilities}:void 0}}function Co(e=`xiaomi`){return Object.fromEntries(bo.map(t=>[`${e}/${t.id}`,t.capabilities?{...t.capabilities}:{}]))}const wo=`openai.anthropic.chutes.ollama.lmstudio.vllm.minimax.moonshot.google.xai.mistral.volcengine.byteplus.openrouter.qwen.zai.qianfan.copilot.ai-gateway.opencode-zen.xiaomi.synthetic.together.huggingface.venice.litellm.cloudflare-ai-gateway.custom`.split(`.`);new Map(wo.map((e,t)=>[e,t]));const To=`openai`,Eo=`openai-codex`,Do=`anthropic`,Oo=`chutes`,ko=`ollama`,Ao=`lmstudio`,jo=`vllm`,Mo=`minimax`,No=`minimax-cn`,Po=`minimax-portal`,I=`moonshot`,Fo=`kimi-coding`,Io=`google`,Lo=`google-gemini-cli`,Ro=`mistral`,zo=`volcengine`,Bo=`volcengine-coding`,Vo=`volcengine-plan`,Ho=`byteplus`,Uo=`byteplus-coding`,Wo=`byteplus-plan`,Go=`openrouter`,Ko=`qwen`,qo=`qwen-coding-plan`,Jo=`qianfan`,Yo=`github-copilot`,Xo=`copilot-proxy`,Zo=`vercel-ai-gateway`,Qo=`opencode`,$o=`xiaomi`,es=`synthetic`,ts=`together`,ns=`huggingface`,rs=`venice`,is=`litellm`,as=`custom`,os=[`gpt-5.6`,`gpt-5.6-terra`,`gpt-5.6-luna`,`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.4-nano`],ss=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`],cs=os.map(e=>`${To}/${e}`),ls=ss.map(e=>`${Eo}/${e}`),us=[`claude-fable-5`,`claude-opus-4-8`,`claude-sonnet-5`,`claude-haiku-4-5`].map(e=>`${Do}/${e}`),ds=[`google/gemma-4-31B-turbo-TEE`,`Qwen/Qwen3-32B-TEE`,`deepseek-ai/DeepSeek-V3.2-TEE`,`zai-org/GLM-5.1-TEE`,`moonshotai/Kimi-K2.6-TEE`,`Qwen/Qwen3.6-27B-TEE`,`Qwen/Qwen3.5-397B-A17B-TEE`,`zai-org/GLM-5-TEE`],fs=ds.map(e=>`${Oo}/${e}`),ps=[],ms=[],hs=[],gs=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`,`MiniMax-M2.5`,`MiniMax-M2.5-highspeed`],_s=gs.map(e=>`${Mo}/${e}`),vs=gs.map(e=>`${No}/${e}`),ys=[`MiniMax-M2.7`,`MiniMax-M2.7-highspeed`].map(e=>`${Po}/${e}`),bs=[`kimi-k2.6`,`kimi-k2.5`].map(e=>`${I}/${e}`),xs=[`kimi-for-coding`].map(e=>`${Fo}/${e}`),Ss=[`gemini-3.5-flash`,`gemini-3.1-pro-preview`,`gemini-3-flash-preview`,`gemini-3.1-flash-lite`],Cs=Ss.map(e=>`${Io}/${e}`),ws=Ss.map(e=>`${Lo}/${e}`),Ts=[`grok-4.5`,`grok-4.3`,`grok-build-0.1`].map(e=>`xai/${e}`),Es=[`mistral-medium-3.5`,`mistral-small-2603`,`mistral-large-2512`,`devstral-2512`,`ministral-14b-2512`,`ministral-8b-2512`,`ministral-3b-2512`].map(e=>`${Ro}/${e}`),Ds=[`doubao-seed-2-0-pro-260215`,`doubao-seed-2-0-lite-260215`,`doubao-seed-2-0-mini-260215`,`doubao-seed-2-0-code-preview-260215`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${zo}/${e}`),Os=[`ark-code-latest`,`doubao-seed-2.0-code`,`doubao-seed-2.0-pro`,`doubao-seed-2.0-lite`,`doubao-seed-code`,`minimax-m2.5`,`glm-4.7`,`deepseek-v3.2`,`kimi-k2.5`].flatMap(e=>[`${Bo}/${e}`,`${Vo}/${e}`]),ks=[`seed-2-0-pro-260328`,`seed-2-0-lite-260228`,`seed-2-0-mini-260215`,`seed-2-0-code-preview-260328`,`deepseek-v3-2-251201`,`glm-4-7-251222`].map(e=>`${Ho}/${e}`),As=[`ark-code-latest`,`dola-seed-2.0-pro`,`dola-seed-2.0-lite`,`dola-seed-2.0-code`,`bytedance-seed-code`,`glm-5.1`,`glm-4.7`,`kimi-k2.5`,`gpt-oss-120b`].flatMap(e=>[`${Uo}/${e}`,`${Wo}/${e}`]),js=`openrouter/owl-alpha,openai/gpt-5.6-sol,openai/gpt-5.6-terra,openai/gpt-5.6-luna,openai/gpt-5.5,openai/gpt-5.4,openai/gpt-5.4-mini,openai/gpt-5.4-nano,anthropic/claude-fable-5,anthropic/claude-opus-4.8,anthropic/claude-sonnet-5,anthropic/claude-haiku-4.5,google/gemini-3.5-flash,google/gemini-3.1-pro-preview,google/gemini-3-flash-preview,google/gemini-3.1-flash-lite,x-ai/grok-4.5,x-ai/grok-4.3,x-ai/grok-build-0.1,mistralai/mistral-medium-3-5,mistralai/mistral-small-2603,mistralai/mistral-large-2512,mistralai/devstral-2512,qwen/qwen3.7-max,qwen/qwen3.7-plus,qwen/qwen3.6-flash,z-ai/glm-5.2,deepseek/deepseek-v4-pro,deepseek/deepseek-v4-flash,minimax/minimax-m2.7,moonshotai/kimi-k2.6`.split(`,`).map(e=>`${Go}/${e}`),Ms=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`].map(e=>`${Ko}/${e}`),Ns=[`qwen3.7-max`,`qwen3.7-plus`,`qwen3.6-flash`,`deepseek-v4-pro`,`deepseek-v4-flash`,`kimi-k2.7-code`,`glm-5.2`,`MiniMax-M2.5`].map(e=>`${qo}/${e}`),Ps=[`glm-5.2`,`glm-5.1`,`glm-5`,`glm-5-turbo`,`glm-5v-turbo`,`glm-4.7`,`glm-4.7-flashx`,`glm-4.7-flash`].map(e=>`zai/${e}`),Fs={tools:!0,json:!0,thinkingLevels:[`off`,`low`],defaultThinkingLevel:`low`,thinkingMode:`zai-binary`,reasoningBudgetSupported:!1},Is=Object.fromEntries(Ps.map(e=>[e,e.endsWith(`/glm-5v-turbo`)?{...Fs,video:!0}:Fs])),Ls=[`ernie-5.1`,`ernie-5.0`,`ernie-5.0-thinking-latest`,`ernie-5.0-thinking-preview`,`ernie-x1.1-preview`,`ernie-x1.1`,`ernie-x1-turbo-32k`,`deepseek-v4-pro`,`deepseek-v4-flash`,`deepseek-v3.2-think`,`deepseek-v3.2`].map(e=>`${Jo}/${e}`),Rs=new Set([`qianfan/ernie-5.1`,`qianfan/ernie-5.0`,`qianfan/ernie-5.0-thinking-latest`,`qianfan/ernie-5.0-thinking-preview`,`qianfan/ernie-x1.1-preview`,`qianfan/ernie-x1.1`,`qianfan/ernie-x1-turbo-32k`]),zs=new Set([`qianfan/deepseek-v4-pro`,`qianfan/deepseek-v4-flash`,`qianfan/deepseek-v3.2-think`,`qianfan/deepseek-v3.2`]),Bs=Object.fromEntries(Ls.map(e=>[e,{tools:!0,json:!0,...Rs.has(e)?{fixedReasoning:!0}:zs.has(e)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!0}:{}}])),Vs=[`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`,`gpt-4.1`,`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`,`claude-haiku-4.5`,`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`,`grok-build-0.1`],Hs=Vs.map(e=>`${Yo}/${e}`),Us=[...Vs],Ws=Us.map(e=>`${Xo}/${e}`);`${Yo}`;const Gs=new Set([`gpt-5.5`,`gpt-5.4`,`gpt-5.4-mini`,`gpt-5.3-codex-spark`]),Ks=new Set([`claude-fable-5`,`claude-opus-4.8`,`claude-sonnet-5`]),qs=new Set([`claude-haiku-4.5`]),Js=new Set([`gemini-3.5-flash`,`gemini-3.1-pro`,`gemini-3-flash`]);function Ys(e){return Object.fromEntries(e.map(e=>{let t=e.slice(e.indexOf(`/`)+1);return[e,{tools:!0,json:!0,...Gs.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:Ks.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:qs.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:Js.has(t)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{}}]}))}const Xs={...Ys(Hs),...Ys(Ws)},Zs=ho(lo),Qs=Ha(za),$s=xo.map(e=>`${$o}/${e}`);`${$o}`;const ec=Co($o),tc=Ka.map(e=>`${es}/${e}`);`${es}`;const nc=Ja(es),rc=eo(ts),ic=Ma(ns),ac=oo(rs),oc=La(is),sc=Ea(va),cc=[];function lc(e){let t=e.indexOf(`/`);return t<=0||t===e.length-1?null:{route:e.slice(0,t).trim(),model:e.slice(t+1).trim()}}function uc(e,t){let n=t.trim().toLowerCase(),r=(e,r)=>n.startsWith(`${e}/`)?{provider:r,model:t.slice(e.length+1)}:null;return r(`openai`,To)??r(`anthropic`,Do)??r(`google`,Io)??r(`x-ai`,`xai`)??r(`xai`,`xai`)??r(`mistralai`,Ro)??r(`minimax`,Mo)??r(`qwen`,Ko)??r(`moonshotai`,I)??r(`z-ai`,`zai`)??r(`zai-org`,`zai`)??r(`glm`,`zai`)??{provider:n.includes(`claude-`)||n.includes(`claude_`)?Do:n.includes(`gemini-`)?Io:n.includes(`qwen`)?Ko:n.includes(`kimi`)?I:n.includes(`glm-`)?`zai`:e,model:t}}function dc(e){let t=uc(e.route,e.model),n=_a({provider:t.provider,model:t.model,reasoning:e.reasoning});if(n)return{thinkingLevels:n.thinkingLevels,defaultThinkingLevel:n.defaultThinkingLevel,thinkingMode:n.thinkingMode,reasoningBudgetSupported:n.reasoningBudgetSupported}}function fc(e){let t=lc(e);if(t)return dc({route:t.route,model:t.model})}function pc(e){return Object.fromEntries(e.map(e=>[e.toLowerCase(),fc(e)??{}]))}function L(e,t){let n=pc(e);for(let[e,r]of Object.entries(t))n[e.toLowerCase()]={...n[e.toLowerCase()],...r};return n}const mc=[...A],hc={"anthropic/claude-fable-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-opus-4-8":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!1},"anthropic/claude-sonnet-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0},"anthropic/claude-haiku-4-5":{thinkingLevels:mc,defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}},gc=Object.fromEntries(ds.map(e=>[`${Oo}/${e}`,{tools:!0,json:!0,...dc({route:Oo,model:e,reasoning:!0}),...e===`moonshotai/Kimi-K2.6-TEE`?{video:!0}:{}}])),_c=[...A],vc=Object.fromEntries([..._s,...vs,...ys].map(e=>[e,{tools:!0,thinkingLevels:_c,defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}])),yc=Object.fromEntries([...bs,...xs].map(e=>[e,{tools:!0,...e===`${I}/kimi-k2.6`?{video:!0}:{},thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`moonshot-thinking`,reasoningBudgetSupported:!1}])),bc=Object.fromEntries([...Cs,...ws].map(e=>[e,{tools:!0,json:!0,audio:!0,video:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}])),xc={"xai/grok-4.5":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-4.3":{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1},"xai/grok-build-0.1":{tools:!0,json:!0}},Sc=[`off`,`high`],Cc=Object.fromEntries(Es.map(e=>[e,{tools:!0,json:!0,...e===`mistral/mistral-medium-3.5`||e===`mistral/mistral-small-2603`?{thinkingLevels:[...Sc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),wc=[`minimal`,`low`,`medium`,`high`],Tc=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Ec=new Set([`volcengine/doubao-seed-2-0-pro-260215`,`volcengine/doubao-seed-2-0-lite-260215`,`volcengine/doubao-seed-2-0-mini-260215`,`volcengine/doubao-seed-2-0-code-preview-260215`,`volcengine-coding/doubao-seed-2.0-code`,`volcengine-plan/doubao-seed-2.0-code`,`volcengine-coding/doubao-seed-2.0-pro`,`volcengine-plan/doubao-seed-2.0-pro`,`volcengine-coding/doubao-seed-2.0-lite`,`volcengine-plan/doubao-seed-2.0-lite`,`volcengine-coding/doubao-seed-code`,`volcengine-plan/doubao-seed-code`]),Dc=Object.fromEntries([...Ds,...Os].map(e=>[e,{tools:!0,json:!0,...Tc.has(e)?{thinkingLevels:[...wc],defaultThinkingLevel:`medium`,thinkingMode:`volcengine-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Ec.has(e)?{video:!0}:{}}])),Oc=[`off`,`high`],kc=new Set([`byteplus/seed-2-0-pro-260328`,`byteplus/seed-2-0-lite-260228`,`byteplus/seed-2-0-mini-260215`,`byteplus/seed-2-0-code-preview-260328`,`byteplus-coding/dola-seed-2.0-pro`,`byteplus-plan/dola-seed-2.0-pro`,`byteplus-coding/dola-seed-2.0-lite`,`byteplus-plan/dola-seed-2.0-lite`,`byteplus-coding/dola-seed-2.0-code`,`byteplus-plan/dola-seed-2.0-code`,`byteplus-coding/bytedance-seed-code`,`byteplus-plan/bytedance-seed-code`]),Ac=Object.fromEntries([...ks,...As].map(e=>[e,{tools:!0,json:!0,...kc.has(e)?{thinkingLevels:[...Oc],defaultThinkingLevel:`high`,thinkingMode:`byteplus-thinking-type`,reasoningBudgetSupported:!1}:{}}])),jc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`]),Mc=new Set([`openrouter/google/gemini-3.5-flash`,`openrouter/google/gemini-3.1-pro-preview`,`openrouter/google/gemini-3-flash-preview`,`openrouter/google/gemini-3.1-flash-lite`,`openrouter/qwen/qwen3.7-max`,`openrouter/qwen/qwen3.7-plus`,`openrouter/qwen/qwen3.6-flash`]),Nc=new Set([`openrouter/mistralai/mistral-medium-3-5`,`openrouter/mistralai/mistral-small-2603`]),Pc=new Set([`openrouter/minimax/minimax-m2.7`]),Fc=new Set([`openrouter/deepseek/deepseek-v4-pro`,`openrouter/deepseek/deepseek-v4-flash`]),Ic=new Set([`openrouter/openai/gpt-5.6-sol`,`openrouter/openai/gpt-5.6-terra`,`openrouter/openai/gpt-5.6-luna`,`openrouter/openai/gpt-5.5`,`openrouter/openai/gpt-5.4`,`openrouter/openai/gpt-5.4-mini`,`openrouter/openai/gpt-5.4-nano`]),Lc=new Set([`openrouter/x-ai/grok-4.5`,`openrouter/x-ai/grok-4.3`]),Rc=Object.fromEntries(js.map(e=>[e,{tools:!0,json:!0,...jc.has(e)?{audio:!0}:{},...Mc.has(e)?{video:!0}:{},...Nc.has(e)?{thinkingLevels:[...Sc],defaultThinkingLevel:`high`,thinkingMode:`mistral-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Pc.has(e)?{thinkingLevels:[..._c],defaultThinkingLevel:`off`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!1}:{},...Fc.has(e)?{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`generic-reasoning`,reasoningBudgetSupported:!1}:{},...Ic.has(e)?{thinkingLevels:[...aa],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:{},...Lc.has(e)?{thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}:{}}])),zc=new Set([`qwen-coding-plan/kimi-k2.7-code`,`qwen-coding-plan/glm-5.2`,`qwen-coding-plan/MiniMax-M2.5`]),Bc=Object.fromEntries([...Ms,...Ns].map(e=>[e,{tools:!0,json:!0,...zc.has(e)?{}:{thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`qwen-thinking`,reasoningBudgetSupported:!0}}])),Vc=[{id:`openai`,label:`OpenAI`,priority:1,hint:`OpenAI sign-in + API key`,methods:[{id:`openai-codex`,route:Eo,kind:`oauth`,label:`Sign in`,hint:`Open the OpenAI sign-in URL, finish login in the browser, then Fased completes the OAuth flow.`},{id:`openai-api-key`,route:To,kind:`api-key`,label:`API key`}],models:{recommended:[...cs,...ls],routeRules:{[To]:[`${To}/*`],[Eo]:[`${Eo}/*`]}},modelCapabilities:pc([...cs,...ls])},{id:`anthropic`,label:`Anthropic`,priority:2,hint:`Claude Code OAuth + setup-token + API key`,methods:[{id:`anthropic-oauth`,route:Do,kind:`oauth`,label:`Sign in (Claude Code)`,hint:`Claude or Console account; Pro, Max, Team, Enterprise, or Console access`,buttonLabel:`Sign in`},{id:`token`,route:Do,kind:`token`,label:`Token (setup-token)`,hint:"run `claude setup-token` elsewhere, then paste the token here",buttonLabel:`Paste token`},{id:`apiKey`,route:Do,kind:`api-key`,label:`API key`}],models:{recommended:[...us],routeRules:{[Do]:[`${Do}/*`]}},modelCapabilities:L(us,hc)},{id:`chutes`,label:`Chutes`,priority:3,hint:`Sign in + API key`,methods:[{id:`chutes`,route:Oo,kind:`oauth`,label:`Sign in`,hint:`Requires a Chutes OAuth app client id. Enter the cid, then Fased generates the Chutes sign-in URL.`,buttonLabel:`Sign in`},{id:`chutes-api-key`,route:Oo,kind:`api-key`,label:`API key`}],models:{recommended:[...fs],routeRules:{[Oo]:[`${Oo}/*`]}},modelCapabilities:L(fs,gc)},{id:`ollama`,label:`Ollama`,priority:4,hint:`Local, cloud, or hybrid Ollama through the native API`,modelProviderIds:[ko],methods:[{id:`ollama`,route:ko,kind:`manual`,label:`Ollama native URL + model`,hint:`Use the native Ollama base URL, for example http://127.0.0.1:11434. Do not use /v1.`,buttonLabel:`Configure`}],models:{recommended:ps,dynamic:!0,routeRules:{[ko]:[`${ko}/*`]}},modelCapabilities:pc(ps)},{id:`lmstudio`,label:`LM Studio`,priority:4,hint:`Local LM Studio server on localhost:1234`,modelProviderIds:[Ao],methods:[{id:`lmstudio`,route:Ao,kind:`manual`,label:`LM Studio URL + model`,hint:`Use http://127.0.0.1:1234/v1, optional API token, and a model key from LM Studio.`,buttonLabel:`Configure`}],models:{recommended:ms,dynamic:!0,routeRules:{[Ao]:[`${Ao}/*`]}},modelCapabilities:pc(ms)},{id:`vllm`,label:`vLLM-compatible`,priority:4,hint:`OpenAI-compatible local server: vLLM, SGLang, TGI, LocalAI, or FastChat`,modelProviderIds:[jo],methods:[{id:`vllm`,route:jo,kind:`manual`,label:`vLLM-compatible URL + model`,hint:`Enter the /v1 base URL, API key or local placeholder, and served model ID for vLLM, SGLang, TGI, LocalAI, or FastChat.`,buttonLabel:`Configure`}],models:{recommended:hs,dynamic:!0,routeRules:{[jo]:[`${jo}/*`]}},modelCapabilities:pc(hs)},{id:`minimax`,label:`MiniMax`,priority:5,hint:`MiniMax OAuth + API key`,modelProviderIds:[Mo,No,Po],methods:[{id:`minimax-portal`,route:Po,kind:`oauth`,label:`Sign in`,hint:`Global or CN endpoint; uses MiniMax portal sign-in`,setupRequirement:`Requires MiniMax portal/coding-plan access. Choose Global or CN, then open the approval URL and approve before the code expires.`,buttonLabel:`Sign in`},{id:`minimax-api`,route:Mo,kind:`api-key`,label:`API key`},{id:`minimax-api-key-cn`,route:No,kind:`api-key`,label:`API key (CN)`,hint:`China endpoint (api.minimaxi.com)`},{id:`minimax-api-lightning`,route:Mo,configProviderId:`minimax-lightning`,statusRoute:Mo,kind:`api-key`,label:`Highspeed API key`,hint:`Fast M2.7 tier`}],models:{recommended:[..._s,...vs,...ys],routeRules:{[Mo]:[`${Mo}/*`],[No]:[`${No}/*`],[Po]:[`${Po}/*`]}},modelCapabilities:L([..._s,...vs,...ys],vc)},{id:`moonshot`,label:`Moonshot AI`,priority:6,hint:`Kimi API + Kimi Code`,modelProviderIds:[I,Fo],methods:[{id:`moonshot-api-key`,route:I,kind:`api-key`,label:`Kimi API key (.ai)`,hint:`Kimi Open Platform endpoint (api.moonshot.ai)`},{id:`moonshot-api-key-cn`,route:I,configProviderId:`moonshot-cn`,statusRoute:I,kind:`api-key`,label:`Kimi API key (.cn)`,hint:`China endpoint (api.moonshot.cn)`},{id:`kimi-code-api-key`,route:Fo,kind:`api-key`,label:`Kimi Code API key (subscription)`,hint:`Kimi Code membership endpoint (api.kimi.com/coding)`}],models:{recommended:[...bs,...xs],routeRules:{[I]:[`${I}/*`],[Fo]:[`${Fo}/*`]}},modelCapabilities:L([...bs,...xs],yc)},{id:`google`,label:`Google`,priority:7,hint:`Gemini API key + OAuth`,routeAliases:[`gemini`],modelProviderIds:[Io,`gemini`,Lo],methods:[{id:`gemini-api-key`,route:Io,kind:`api-key`,label:`Gemini API key`},{id:`google-gemini-cli`,route:Lo,kind:`oauth`,label:`Sign in (Gemini CLI)`,hint:`Unofficial flow; review account-risk warning before use`,setupRequirement:`Requires gemini-cli installed on the gateway machine, or GEMINI_CLI_OAUTH_CLIENT_ID set before sign-in.`}],models:{recommended:[...Cs,...ws],routeRules:{[Io]:[`${Io}/*`,`gemini/*`],[Lo]:[`${Lo}/*`]}},modelCapabilities:L([...Cs,...ws],bc)},{id:`xai`,label:`xAI (Grok)`,priority:8,hint:`Grok API key or xAI account sign-in`,methods:[{id:`xai-oauth`,route:`xai`,kind:`oauth`,label:`xAI sign-in`,hint:`Browser sign-in for eligible xAI/Grok accounts`,buttonLabel:`Sign in`},{id:`xai-device-code`,route:`xai`,kind:`device`,label:`xAI device code`,hint:`Remote-friendly sign-in for eligible xAI/Grok accounts`,buttonLabel:`Device code`},{id:`xai-api-key`,route:`xai`,kind:`api-key`,label:`xAI API key`}],models:{recommended:[...Ts],routeRules:{xai:[`xai/*`]}},modelCapabilities:L(Ts,xc)},{id:`mistral`,label:`Mistral AI`,priority:9,hint:`Mistral API key`,methods:[{id:`mistral-api-key`,route:Ro,kind:`api-key`,label:`Mistral API key`}],models:{recommended:[...Es],routeRules:{[Ro]:[`${Ro}/*`]}},modelCapabilities:L(Es,Cc)},{id:`volcengine`,label:`Volcano Engine`,priority:10,hint:`Ark API key + Coding Plan`,modelProviderIds:[zo,Bo,Vo],methods:[{id:`volcengine-api-key`,route:zo,kind:`api-key`,label:`Volcano Engine API key`}],models:{recommended:[...Ds,...Os],routeRules:{[zo]:[`${zo}/*`],[Bo]:[`${Bo}/*`],[Vo]:[`${Vo}/*`]}},modelCapabilities:L([...Ds,...Os],Dc)},{id:`byteplus`,label:`BytePlus`,priority:11,hint:`ModelArk API key + Coding Plan`,modelProviderIds:[Ho,Uo,Wo],methods:[{id:`byteplus-api-key`,route:Ho,kind:`api-key`,label:`BytePlus API key`}],models:{recommended:[...ks,...As],routeRules:{[Ho]:[`${Ho}/*`],[Uo]:[`${Uo}/*`],[Wo]:[`${Wo}/*`]}},modelCapabilities:L([...ks,...As],Ac)},{id:`openrouter`,label:`OpenRouter`,priority:12,hint:`API key`,methods:[{id:`openrouter-api-key`,route:Go,kind:`api-key`,label:`OpenRouter API key`}],models:{recommended:[...js],dynamic:!0,routeRules:{[Go]:[`${Go}/*`]}},modelCapabilities:L(js,Rc)},{id:`qwen`,label:`Qwen`,priority:14,hint:`Coding Plan + DashScope API key`,modelProviderIds:[qo,Ko],methods:[{id:`qwen-coding-plan-api-key`,route:qo,kind:`api-key`,label:`Coding Plan API key`,hint:`Alibaba Cloud Coding Plan endpoint (coding.dashscope.aliyuncs.com)`},{id:`qwen-api-key`,route:Ko,kind:`api-key`,label:`DashScope API key`,hint:`DashScope OpenAI-compatible endpoint (dashscope.aliyuncs.com)`}],models:{recommended:[...Ns,...Ms],routeRules:{[qo]:[`${qo}/*`],[Ko]:[`${Ko}/*`]}},modelCapabilities:L([...Ns,...Ms],Bc)},{id:`zai`,label:`Z.AI`,priority:15,hint:`GLM Coding Plan / Global / CN`,modelProviderIds:[`zai`],methods:[{id:`zai-coding-global`,route:`zai`,configProviderId:`zai-coding-global`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-Global`,hint:`GLM Coding Plan Global (api.z.ai)`},{id:`zai-coding-cn`,route:`zai`,configProviderId:`zai-coding-cn`,statusRoute:`zai`,kind:`api-key`,label:`Coding-Plan-CN`,hint:`GLM Coding Plan CN (open.bigmodel.cn)`},{id:`zai-global`,route:`zai`,configProviderId:`zai`,kind:`api-key`,label:`Global`,hint:`Z.AI Global (api.z.ai)`},{id:`zai-cn`,route:`zai`,configProviderId:`zai-cn`,statusRoute:`zai`,kind:`api-key`,label:`CN`,hint:`Z.AI CN (open.bigmodel.cn)`}],models:{recommended:[...Ps],routeRules:{zai:[`zai/*`]}},modelCapabilities:L(Ps,Is)},{id:`qianfan`,label:`Qianfan`,priority:16,hint:`Baidu Qianfan API key`,methods:[{id:`qianfan-api-key`,route:Jo,kind:`api-key`,label:`Qianfan API key`}],models:{recommended:[...Ls],routeRules:{[Jo]:[`${Jo}/*`]}},modelCapabilities:L(Ls,Bs)},{id:`copilot`,label:`Copilot`,priority:17,hint:`GitHub device login + local proxy`,modelProviderIds:[Yo,Xo],methods:[{id:`github-copilot`,route:Yo,kind:`device`,label:`GitHub sign in`,hint:`GitHub OAuth device flow; requires an active Copilot subscription`,buttonLabel:`Sign in`},{id:`copilot-proxy`,route:Xo,kind:`device`,label:`Proxy sign in`,hint:`Local VS Code Copilot Proxy bridge`,buttonLabel:`Configure`}],models:{recommended:[...Hs,...Ws],dynamic:!0,routeRules:{[Yo]:[`${Yo}/*`],[Xo]:[`${Xo}/*`]}},modelCapabilities:L([...Hs,...Ws],Xs)},{id:`ai-gateway`,label:`Vercel AI`,priority:18,hint:`API key`,modelProviderIds:[Zo],methods:[{id:`ai-gateway-api-key`,route:Zo,kind:`api-key`,label:`Vercel AI API key`}],models:{recommended:[...lo],dynamic:!0,routeRules:{[Zo]:[`${Zo}/*`]}},modelCapabilities:L(lo,Zs)},{id:`opencode-zen`,label:`OpenCode Zen`,priority:19,hint:`API key`,modelProviderIds:[Qo],methods:[{id:`opencode-zen`,route:Qo,kind:`api-key`,label:`OpenCode Zen API key`,hint:`Sign in to OpenCode Zen, then paste the API key`}],models:{recommended:[...za],dynamic:!0,routeRules:{[Qo]:[`${Qo}/*`]}},modelCapabilities:L(za,Qs)},{id:`xiaomi`,label:`Xiaomi`,priority:20,hint:`MiMo API key`,modelProviderIds:[$o],methods:[{id:`xiaomi-api-key`,route:$o,kind:`api-key`,label:`Xiaomi API key`,hint:`Create an API key in the Xiaomi MiMo API Open Platform`}],models:{recommended:[...$s],routeRules:{[$o]:[`${$o}/*`]}},modelCapabilities:L($s,ec)},{id:`synthetic`,label:`Synthetic`,priority:21,hint:`Anthropic-compatible API key`,modelProviderIds:[es],methods:[{id:`synthetic-api-key`,route:es,kind:`api-key`,label:`Synthetic API key`,hint:`Create an API key in Synthetic`}],models:{recommended:[...tc],routeRules:{[es]:[`${es}/*`]}},modelCapabilities:L(tc,nc)},{id:`together`,label:`Together AI`,priority:22,hint:`API key`,modelProviderIds:[ts],methods:[{id:`together-api-key`,route:ts,kind:`api-key`,label:`Together AI API key`,hint:`Create an API key in Together AI`}],models:{recommended:[...Qa],routeRules:{[ts]:[`${ts}/*`]}},modelCapabilities:L(Qa,rc)},{id:`huggingface`,label:`Hugging Face`,priority:23,hint:`Inference Providers token`,modelProviderIds:[ns],methods:[{id:`huggingface-api-key`,route:ns,kind:`api-key`,label:`Hugging Face token`,hint:`Create a fine-grained token with Inference Providers access`}],models:{recommended:[...ka],dynamic:!0,routeRules:{[ns]:[`${ns}/*`]}},modelCapabilities:ic},{id:`venice`,label:`Venice AI`,priority:24,hint:`Privacy-focused API key`,modelProviderIds:[rs],methods:[{id:`venice-api-key`,route:rs,kind:`api-key`,label:`Venice AI API key`,hint:`Create an API key in Venice settings`}],models:{recommended:[...io],dynamic:!0,routeRules:{[rs]:[`${rs}/*`]}},modelCapabilities:ac},{id:`litellm`,label:`LiteLLM`,priority:25,hint:`OpenAI-compatible LLM proxy`,modelProviderIds:[is],methods:[{id:`litellm-api-key`,route:is,kind:`api-key`,label:`LiteLLM API key`,hint:`LiteLLM Proxy virtual key or master key plus /v1 base URL`}],models:{recommended:[...Fa],dynamic:!0,routeRules:{[is]:[`${is}/*`]}},modelCapabilities:oc},{id:`cloudflare-ai-gateway`,label:`Cloudflare AI`,priority:26,hint:`Anthropic through Cloudflare AI`,modelProviderIds:[va],methods:[{id:`cloudflare-ai-gateway-api-key`,route:va,kind:`manual`,label:`Cloudflare AI API key`,hint:`Requires Cloudflare Account ID, Gateway ID, and Anthropic provider API key`,buttonLabel:`Configure`}],models:{recommended:[...wa],routeRules:{[va]:[`${va}/*`]}},modelCapabilities:sc},{id:`custom`,label:`Custom Provider`,priority:27,hint:`OpenAI or Anthropic-compatible endpoint outside the built-in provider cards`,modelProviderIds:[as],methods:[{id:`custom-api-key`,route:as,kind:`manual`,label:`Custom Provider`,hint:`Requires base URL, endpoint compatibility, model ID, and optional API key. Use this for SGLang or other compatible endpoints when the vLLM-compatible shortcut does not fit.`,buttonLabel:`Configure`}],models:{recommended:cc,dynamic:!0,routeRules:{[as]:[`${as}/*`]}},modelCapabilities:pc(cc)}];new Map(Vc.map(e=>[e.id,e])),new Map(Vc.flatMap(e=>[...e.methods.map(t=>[t.route,e]),...(e.routeAliases??[]).map(t=>[t,e]),...(e.modelProviderIds??[]).map(t=>[t,e])])),new Set(Vc.flatMap(e=>e.models.recommended.map(e=>e.toLowerCase()))),new Map(Vc.flatMap(e=>Object.entries(e.modelCapabilities??{}).map(([e,t])=>[e.toLowerCase(),t]))),i.resolve(i.dirname(o(import.meta.url)),`../../docs/reference/templates`);function Hc(e=process.env,t=p.homedir){let n=S(e,t),r=e.FASED_PROFILE?.trim();return r&&r.toLowerCase()!==`default`?i.join(n,`.fased`,`workspace-${r}`):i.join(n,`.fased`,`workspace`)}Hc();let Uc=null;function Wc(){return Uc??=on(`agent-scope`),Uc}function Gc(e){return e.replace(/\0/g,``)}let Kc=!1;function qc(e){let t=e.agents?.list;return Array.isArray(t)?t.filter(e=>!!(e&&typeof e==`object`)):[]}function Jc(e){let t=qc(e);if(t.length===0)return Ki;let n=t.filter(e=>e?.default);n.length>1&&!Kc&&(Kc=!0,Wc().warn(`Multiple agents marked default=true; using the first entry as default.`));let r=(n[0]??t[0])?.id?.trim();return k(r||Ki)}function Yc(e,t){let n=k(t);return qc(e).find(e=>k(e.id)===n)}function Xc(e,t){let n=Yc(e,k(t));if(n)return{name:typeof n.name==`string`?n.name:void 0,workspace:typeof n.workspace==`string`?n.workspace:void 0,agentDir:typeof n.agentDir==`string`?n.agentDir:void 0,activeModelProvider:typeof n.activeModelProvider==`string`?n.activeModelProvider:void 0,modelProviders:n.modelProviders&&typeof n.modelProviders==`object`?n.modelProviders:void 0,model:typeof n.model==`string`||n.model&&typeof n.model==`object`?n.model:void 0,taskModels:n.taskModels&&typeof n.taskModels==`object`?n.taskModels:void 0,thinkingDefault:n.thinkingDefault,verboseDefault:e.agents?.defaults?.verboseDefault,reasoningDefault:n.reasoningDefault,fastModeDefault:n.fastModeDefault,skills:Array.isArray(n.skills)?n.skills:void 0,memorySearch:n.memorySearch,humanDelay:n.humanDelay,heartbeat:n.heartbeat,identity:n.identity,groupChat:n.groupChat,subagents:typeof n.subagents==`object`&&n.subagents?n.subagents:void 0,sandbox:n.sandbox,tools:n.tools}}function Zc(e,t){let n=k(t),r=Xc(e,n)?.workspace?.trim();if(r)return Gc(D(r));let a=Jc(e),o=e.agents?.defaults?.workspace?.trim();if(n===a)return Gc(o?D(o):Hc(process.env));if(o)return Gc(i.join(D(o),n));let s=C(process.env);return Gc(i.join(s,`workspace-${n}`))}const Qc=`default`,$c=/^\$\{([A-Z][A-Z0-9_]{0,127})\}$/;function el(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function tl(e){return!el(e)||Object.keys(e).length!==3?!1:(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.provider==`string`&&e.provider.trim().length>0&&typeof e.id==`string`&&e.id.trim().length>0}function nl(e){return el(e)?(e.source===`env`||e.source===`file`||e.source===`exec`)&&typeof e.id==`string`&&e.id.trim().length>0&&e.provider===void 0:!1}function rl(e,t=Qc){if(typeof e!=`string`)return null;let n=$c.exec(e.trim());return n?{source:`env`,provider:t.trim()||Qc,id:n[1]}:null}function il(e,t){if(tl(e))return e;if(nl(e)){let n=e.source===`env`?t?.env??Qc:e.source===`file`?t?.file??Qc:t?.exec??Qc;return{source:e.source,provider:n,id:e.id}}return rl(e,t?.env)||null}function al(e){let t=e.split(`.`);if(t.length!==4)return!1;let n=t.map(e=>Number(e));if(n.some(e=>!Number.isInteger(e)||e<0||e>255))return!1;let[r,i]=n;return r===10||r===127||r===0||r===172&&i>=16&&i<=31||r===192&&i===168||r===169&&i===254}function ol(e){let t=e?.trim();if(!t)return!1;try{let e=new URL(t).hostname.toLowerCase().replace(/^\[|\]$/g,``);return e===`localhost`||e===`::1`||e===`0.0.0.0`||e.endsWith(`.local`)||e.endsWith(`.internal`)||al(e)?!0:e.startsWith(`fc`)||e.startsWith(`fd`)||e.startsWith(`fe80:`)}catch{return!1}}const sl=[`chat.inject`,`push.test`,`web.login.start`,`web.login.wait`],cl=new Set([...Tt,`device-pair`,`phone-control`,`sat-mining`,`talk-voice`]),ll=e=>Array.isArray(e)?e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):[];function ul(e){return typeof e==`string`&&sl.includes(e)}function dl(e){if(!e||typeof e!=`object`||Array.isArray(e))return[];let t=e,n=Array.isArray(t.allow)?t.allow:[],r=[];for(let e of n){if(!e||typeof e!=`object`||Array.isArray(e))continue;let t=e;ul(t.method)&&r.push({method:t.method,sources:ll(t.sources),requireOperatorApproval:t.requireOperatorApproval===!0})}return r}const fl=e=>{if(typeof e!=`string`)return;let t=e.trim();if(t)return t.toLowerCase()===`none`?null:t},pl=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return{};let t={};for(let[n,r]of Object.entries(e)){if(!n.trim())continue;if(!r||typeof r!=`object`||Array.isArray(r)){t[n]={};continue}let e=r;t[n]={enabled:typeof e.enabled==`boolean`?e.enabled:void 0,config:`config`in e?e.config:void 0,runtime:ml(e.runtime)}}return t};function ml(e){if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=t.helpers&&typeof t.helpers==`object`&&!Array.isArray(t.helpers)?t.helpers:void 0;return{helpers:{sessions:{read:(n?.sessions&&typeof n.sessions==`object`&&!Array.isArray(n.sessions)?n.sessions:void 0)?.read===!0}},adminRpcActions:{allow:dl(t.adminRpcActions)}}}const hl=e=>{let t=fl(e?.slots?.memory);return{enabled:e?.enabled!==!1,allow:ll(e?.allow),deny:ll(e?.deny),loadPaths:ll(e?.load?.paths),slots:{memory:t===void 0?Hi(`memory`):t},entries:pl(e?.entries)}};function gl(e,t,n){if(!n.enabled)return{enabled:!1,reason:`plugins disabled`};if(n.deny.includes(e))return{enabled:!1,reason:`blocked by denylist`};if(n.allow.length>0&&!n.allow.includes(e))return{enabled:!1,reason:`not in allowlist`};if(n.slots.memory===e)return{enabled:!0};let r=n.entries[e];return r?.enabled===!0?{enabled:!0}:r?.enabled===!1?{enabled:!1,reason:`disabled in config`}:t===`bundled`&&cl.has(e)?{enabled:!0}:t===`bundled`?{enabled:!1,reason:`bundled (disabled by default)`}:{enabled:!0}}function _l(e,t){if(!e)return!1;let n=Ot(t);if(!n)return!1;let r=e.channels?.[n];return!r||typeof r!=`object`||Array.isArray(r)?!1:r.enabled===!0}function vl(e){let t=gl(e.id,e.origin,e.config);return!t.enabled&&t.reason===`bundled (disabled by default)`&&_l(e.rootConfig,e.id)?{enabled:!0}:t}function yl(e){return e.kind===`memory`?e.slot===null?{enabled:!1,reason:`memory slot disabled`}:typeof e.slot==`string`?e.slot===e.id?{enabled:!0,selected:!0}:{enabled:!1,reason:`memory slot set to "${e.slot}"`}:e.selectedId&&e.selectedId!==e.id?{enabled:!1,reason:`memory slot already filled by "${e.selectedId}"`}:{enabled:!0,selected:!0}:{enabled:!0}}function bl(e){try{let t=n.readdirSync(e,{withFileTypes:!0});for(let r of t){if(!r.isDirectory())continue;let t=i.join(e,r.name);if(n.existsSync(i.join(t,`fased.plugin.json`)))return!0}}catch{return!1}return!1}function xl(e={}){let t=process.env.FASED_BUNDLED_PLUGINS_DIR?.trim();if(t)return t;try{let t=i.dirname(e.execPath??process.execPath),n=i.join(t,`extensions`);if(bl(n))return n}catch{}try{let t=e.moduleUrl??import.meta.url,n=Te({argv1:e.argv1??process.argv[1],moduleUrl:t,cwd:e.cwd??process.cwd()});if(n){let e=i.join(n,`extensions`);if(bl(e))return e}let r=i.dirname(o(t));for(let e=0;e<6;e+=1){let e=i.join(r,`extensions`);if(bl(e))return e;let t=i.dirname(r);if(t===r)break;r=t}}catch{}}function Sl(e,t){return ai(e,t)}function Cl(e,t){let r=t?.get(e);if(r)return r;try{let r=n.realpathSync(e);return t?.set(e,r),r}catch{return null}}function wl(e){try{return n.statSync(e)}catch{return null}}function Tl(e){return(e&511).toString(8).padStart(3,`0`)}const El=new Set([`.ts`,`.js`,`.mts`,`.cts`,`.mjs`,`.cjs`]);function Dl(e){return e===void 0?process.platform===`win32`||typeof process.getuid!=`function`?null:process.getuid():e}function Ol(e){let t=Cl(e.source),n=Cl(e.rootDir);return!t||!n||Sl(n,t)?null:{reason:`source_escapes_root`,sourcePath:e.source,rootPath:e.rootDir,targetPath:e.source,sourceRealPath:t,rootRealPath:n}}function kl(e){if(process.platform===`win32`)return null;let t=[e.rootDir,e.source],n=new Set;for(let r of t){let t=i.resolve(r);if(n.has(t))continue;n.add(t);let a=wl(r);if(!a)return{reason:`path_stat_failed`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r};let o=a.mode&511;if(o&2)return{reason:`path_world_writable`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,modeBits:o};if(e.origin!==`bundled`&&e.uid!==null&&typeof a.uid==`number`&&a.uid!==e.uid&&a.uid!==0)return{reason:`path_suspicious_ownership`,sourcePath:e.source,rootPath:e.rootDir,targetPath:r,foundUid:a.uid,expectedUid:e.uid}}return null}function Al(e){return Ol({source:e.source,rootDir:e.rootDir})||kl({source:e.source,rootDir:e.rootDir,origin:e.origin,uid:Dl(e.ownershipUid)})}function jl(e){return e.reason===`source_escapes_root`?`blocked plugin candidate: source escapes plugin root (${e.sourcePath} -> ${e.sourceRealPath}; root=${e.rootRealPath})`:e.reason===`path_stat_failed`?`blocked plugin candidate: cannot stat path (${e.targetPath})`:e.reason===`path_world_writable`?`blocked plugin candidate: world-writable path (${e.targetPath}, mode=${Tl(e.modeBits??0)})`:`blocked plugin candidate: suspicious ownership (${e.targetPath}, uid=${e.foundUid}, expected uid=${e.expectedUid} or root)`}function Ml(e){let t=Al({source:e.source,rootDir:e.rootDir,origin:e.origin,ownershipUid:e.ownershipUid});return t?(e.diagnostics.push({level:`warn`,source:t.targetPath,message:jl(t)}),!0):!1}function Nl(e){let t=i.extname(e);return El.has(t)?!e.endsWith(`.d.ts`):!1}function Pl(e){let t=e.trim().toLowerCase();return!!(!t||t.endsWith(`.bak`)||t.includes(`.backup-`)||t.includes(`.disabled`))}function Fl(e){let t=Oi({absolutePath:i.join(e,`package.json`),rootPath:e,boundaryLabel:`plugin package directory`});if(!t.ok)return null;try{let e=n.readFileSync(t.fd,`utf-8`);return JSON.parse(e)}catch{return null}finally{n.closeSync(t.fd)}}function Il(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t||i.isAbsolute(t))return null;let n=t.replace(/^\.\/+/,``);return!n||n===`.`||n===`..`?null:n}function Ll(e,t){if(!Ri(t).ok)return[];let r=[e.main,e.module,...zi],a=[],o=new Set;for(let e of r){let r=Il(e);if(!r||o.has(r))continue;o.add(r);let s=i.resolve(t,r);Sl(t,s)&&n.existsSync(s)&&Nl(s)&&a.push(r)}return a}function Rl(e,t){let n=Bi(e)?.extensions;return Array.isArray(n)?n.map(e=>typeof e==`string`?e.trim():``).filter(Boolean):t?Ll(e,t):[]}function zl(e){let t=i.basename(e.filePath,i.extname(e.filePath)),n=e.packageName?.trim();if(!n)return t;let r=n.includes(`/`)?n.split(`/`).pop()??n:n;return e.hasMultipleExtensions?`${r}/${t}`:r}function Bl(e){let t=i.resolve(e.source);if(e.seen.has(t))return;let n=Cl(e.rootDir)??i.resolve(e.rootDir);if(Ml({source:t,rootDir:n,origin:e.origin,diagnostics:e.diagnostics,ownershipUid:e.ownershipUid}))return;e.seen.add(t);let r=e.manifest??null;e.candidates.push({idHint:e.idHint,source:t,rootDir:n,origin:e.origin,workspaceDir:e.workspaceDir,packageName:r?.name?.trim()||void 0,packageVersion:r?.version?.trim()||void 0,packageDescription:r?.description?.trim()||void 0,packageDir:e.packageDir,packageManifest:Bi(r??void 0)})}function Vl(e){let t=Oi({absolutePath:i.resolve(e.packageDir,e.entryPath),rootPath:e.packageDir,boundaryLabel:`plugin package directory`});if(!t.ok)return e.diagnostics.push({level:`error`,message:`extension entry escapes package directory: ${e.entryPath}`,source:e.sourceLabel}),null;let r=t.path;return n.closeSync(t.fd),r}function Hl(e){if(!n.existsSync(e.dir))return;let t=[];try{t=n.readdirSync(e.dir,{withFileTypes:!0})}catch(t){e.diagnostics.push({level:`warn`,message:`failed to read extensions dir: ${e.dir} (${String(t)})`,source:e.dir});return}for(let r of t){let t=i.join(e.dir,r.name);if(r.isFile()){if(!Nl(t))continue;Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(r.name,i.extname(r.name)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir})}if(!r.isDirectory()||Pl(r.name))continue;let a=Fl(t),o=a?Rl(a,t):[];if(o.length>0){for(let n of o){let r=Vl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});r&&Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:zl({filePath:r,packageName:a?.name,hasMultipleExtensions:o.length>1}),source:r,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}continue}let s=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));s&&Nl(s)&&Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:r.name,source:s,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:a,packageDir:t})}}function Ul(e){let t=D(e.rawPath);if(!n.existsSync(t)){e.diagnostics.push({level:`error`,message:`plugin path not found: ${t}`,source:t});return}let r=n.statSync(t);if(r.isFile()){if(!Nl(t)){e.diagnostics.push({level:`error`,message:`plugin path is not a supported file: ${t}`,source:t});return}Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t,i.extname(t)),source:t,rootDir:i.dirname(t),origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir});return}if(r.isDirectory()){let r=Fl(t),a=r?Rl(r,t):[];if(a.length>0){for(let n of a){let i=Vl({packageDir:t,entryPath:n,sourceLabel:t,diagnostics:e.diagnostics});i&&Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:zl({filePath:i,packageName:r?.name,hasMultipleExtensions:a.length>1}),source:i,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t})}return}let o=[`index.ts`,`index.js`,`index.mjs`,`index.cjs`].map(e=>i.join(t,e)).find(e=>n.existsSync(e));if(o&&Nl(o)){Bl({candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen,idHint:i.basename(t),source:o,rootDir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,manifest:r,packageDir:t});return}Hl({dir:t,origin:e.origin,ownershipUid:e.ownershipUid,workspaceDir:e.workspaceDir,candidates:e.candidates,diagnostics:e.diagnostics,seen:e.seen});return}}function Wl(e){let t=[],n=[],r=new Set,a=e.workspaceDir?.trim(),o=e.extraPaths??[];for(let i of o){if(typeof i!=`string`)continue;let o=i.trim();o&&Ul({rawPath:o,origin:`config`,ownershipUid:e.ownershipUid,workspaceDir:a?.trim()||void 0,candidates:t,diagnostics:n,seen:r})}if(a){let o=D(a),s=[i.join(o,`.fased`,`extensions`)];for(let i of s)Hl({dir:i,origin:`workspace`,ownershipUid:e.ownershipUid,workspaceDir:o,candidates:t,diagnostics:n,seen:r})}Hl({dir:i.join(vn(),`extensions`),origin:`global`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r});let s=xl();return s&&Hl({dir:s,origin:`bundled`,ownershipUid:e.ownershipUid,candidates:t,diagnostics:n,seen:r}),{candidates:t,diagnostics:n}}e(import.meta.url);const Gl=/(\d+)\.(\d+)\.(\d+)/;function Kl(e){if(!e)return null;let t=e.match(Gl);if(!t)return null;let[,n,r,i]=t;return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10)}}function ql(e,t){return e?e.major===t.major?e.minor===t.minor?e.patch>=t.patch:e.minor>t.minor:e.major>t.major:!1}const Jl=/^>=(\d+)\.(\d+)\.(\d+)$/;function Yl(e){if(typeof e!=`string`)return null;let t=e.trim();if(!t)return null;let n=t.match(Jl);if(!n)return null;let r=`${n[1]}.${n[2]}.${n[3]}`;return Kl(r)?{raw:t,minimumLabel:r}:null}function Xl(e){if(e.minHostVersion===void 0)return{ok:!0,requirement:null};let t=Yl(e.minHostVersion);if(!t)return{ok:!1,kind:`invalid`,error:`fased.install.minHostVersion must use a semver floor in the form ">=x.y.z"`};let n=e.currentVersion?.trim()||`unknown`,r=Kl(n);if(!r)return{ok:!1,kind:`unknown_host_version`,requirement:t};let i=Kl(t.minimumLabel);return!i||!ql(r,i)?{ok:!1,kind:`incompatible`,requirement:t,currentVersion:n}:{ok:!0,requirement:t}}const Zl={config:0,workspace:1,global:2,bundled:3},Ql=new Map,$l=new Set;function eu(e){let t=e.FASED_PLUGIN_MANIFEST_CACHE_MS?.trim();if(t===``||t===`0`)return 0;if(!t)return 200;let n=Number.parseInt(t,10);return Number.isFinite(n)?Math.max(0,n):200}function tu(e){return e.FASED_DISABLE_PLUGIN_MANIFEST_CACHE?.trim()?!1:eu(e)>0}function nu(e){let t=e.workspaceDir?D(e.workspaceDir):``,n=e.plugins.loadPaths.map(e=>D(e)).map(e=>e.trim()).filter(Boolean).toSorted();return`${t}::${e.hostVersion}::${JSON.stringify(n)}`}function ru(e){try{return n.statSync(e).mtimeMs}catch{return null}}function iu(e){return e?.trim()||void 0}function au(e){if(!Array.isArray(e))return;let t=e.map(e=>typeof e==`string`?e.trim():``).filter(Boolean);return t.length>0?t:void 0}function ou(e){let t=e.packageChannel?.id?.trim();if(!t||!e.channelConfigs?.[t])return e.channelConfigs;let n=e.channelConfigs[t],r=n.label??(typeof e.packageChannel?.label==`string`?e.packageChannel.label.trim():``),i=n.description??(typeof e.packageChannel?.blurb==`string`?e.packageChannel.blurb.trim():``),a=n.preferOver??au(e.packageChannel?.preferOver);return{...e.channelConfigs,[t]:{...n,...r?{label:r}:{},...i?{description:i}:{},...a?.length?{preferOver:a}:{}}}}function su(e){let t=ou({channelConfigs:e.manifest.channelConfigs,packageChannel:e.candidate.packageManifest?.channel});return{id:e.manifest.id,name:iu(e.manifest.name)??e.candidate.packageName,description:iu(e.manifest.description)??e.candidate.packageDescription,version:iu(e.manifest.version)??e.candidate.packageVersion,enabledByDefault:e.manifest.enabledByDefault===!0?!0:void 0,autoEnableWhenConfiguredProviders:e.manifest.autoEnableWhenConfiguredProviders,legacyPluginIds:e.manifest.legacyPluginIds,kind:e.manifest.kind,channels:e.manifest.channels??[],providers:e.manifest.providers??[],modelSupport:e.manifest.modelSupport,providerAuthEnvVars:e.manifest.providerAuthEnvVars,providerAuthAliases:e.manifest.providerAuthAliases,providerAuthChoices:e.manifest.providerAuthChoices,skills:e.manifest.skills??[],origin:e.candidate.origin,workspaceDir:e.candidate.workspaceDir,rootDir:e.candidate.rootDir,source:e.candidate.source,manifestPath:e.manifestPath,schemaCacheKey:e.schemaCacheKey,configSchema:e.configSchema,configUiHints:e.manifest.uiHints,contracts:e.manifest.contracts,channelConfigs:t,startupDeferConfiguredChannelFullLoadUntilAfterListen:e.candidate.packageManifest?.startup?.deferConfiguredChannelFullLoadUntilAfterListen===!0,...e.candidate.packageManifest?.channel?.id?{channelCatalogMeta:{id:e.candidate.packageManifest.channel.id,...typeof e.candidate.packageManifest.channel.label==`string`?{label:e.candidate.packageManifest.channel.label}:{},...typeof e.candidate.packageManifest.channel.blurb==`string`?{blurb:e.candidate.packageManifest.channel.blurb}:{},...e.candidate.packageManifest.channel.preferOver?{preferOver:e.candidate.packageManifest.channel.preferOver}:{}}}:{}}}function cu(e){let t=hl((e.config??{}).plugins),n=e.env??process.env,r=qn(n,Jn),a=nu({workspaceDir:e.workspaceDir,plugins:t,hostVersion:r}),o=e.cache!==!1&&tu(n);if(o){let e=Ql.get(a);if(e&&e.expiresAt>Date.now())return e.registry}let s=e.candidates?{candidates:e.candidates,diagnostics:e.diagnostics??[]}:Wl({workspaceDir:e.workspaceDir,extraPaths:t.loadPaths}),c=[...s.diagnostics],l=s.candidates,u=[],d=new Map,f=new Map;for(let e of l){let t=Ri(e.rootDir);if(!t.ok){if(e.idHint&&$l.has(e.idHint))continue;c.push({level:`error`,message:t.error,source:t.manifestPath});continue}let n=t.manifest,a=Xl({currentVersion:r,minHostVersion:e.packageManifest?.install?.minHostVersion});if(!a.ok){let t=i.join(e.packageDir??e.rootDir,`package.json`);c.push({level:a.kind===`unknown_host_version`?`warn`:`error`,pluginId:n.id,source:t,message:a.kind===`invalid`?`plugin manifest invalid | ${a.error}`:a.kind===`unknown_host_version`?`plugin requires Fased >=${a.requirement.minimumLabel}, but this host version could not be determined; skipping load`:`plugin requires Fased >=${a.requirement.minimumLabel}, but this host is ${a.currentVersion}; skipping load`});continue}e.idHint&&e.idHint!==n.id&&c.push({level:`warn`,pluginId:n.id,source:e.source,message:`plugin id mismatch (manifest uses "${n.id}", entry hints "${e.idHint}")`});let o=n.configSchema,s=ru(t.manifestPath),l=s?`${t.manifestPath}:${s}`:t.manifestPath,p=d.get(n.id);if(p){let r=Cl(p.candidate.rootDir,f),i=Cl(e.rootDir,f);if(r&&i&&r===i){Zl[e.origin]<Zl[p.candidate.origin]&&(u[p.recordIndex]=su({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}),d.set(n.id,{candidate:e,recordIndex:p.recordIndex}));continue}c.push({level:`warn`,pluginId:n.id,source:e.source,message:`duplicate plugin id detected; later plugin may be overridden (${e.source})`})}else d.set(n.id,{candidate:e,recordIndex:u.length});u.push(su({manifest:n,candidate:e,manifestPath:t.manifestPath,schemaCacheKey:l,configSchema:o}))}let p={plugins:u,diagnostics:c};if(o){let e=eu(n);e>0&&Ql.set(a,{expiresAt:Date.now()+e,registry:p})}return p}function lu(e){let t=process,n=t[e];if(n)return n;let r=new Map;return t[e]=r,r}lu(Symbol.for(`fased.fileLockHeldLocks`)),process.env.FASED_XAI_OAUTH_CLIENT_ID?.trim();const uu=/^(?:[^~]|~0|~1)*$/;function du(e){return e===`value`?!0:e.startsWith(`/`)?e.slice(1).split(`/`).every(e=>uu.test(e)):!1}const fu=`https://api.chutes.ai`;`${fu}`,`${fu}`,`${fu}`,new Set(ee().map(e=>e.id)),new Map([`auth_permanent`,`auth`,`billing`,`format`,`model_not_found`,`timeout`,`overloaded`,`rate_limit`,`session_expired`,`unknown`].map((e,t)=>[e,t]));const pu={id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`,`image`],contextWindow:2e5,maxTokens:4096},mu=[{id:`ark-code-latest`,name:`Ark Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`doubao-seed-2.0-code`,name:`Doubao Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-pro`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2.0-lite`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-code`,name:`Doubao Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`minimax-m2.5`,name:`MiniMax M2.5`,reasoning:!0,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7 Coding`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`kimi-k2.5`,name:`Kimi K2.5 Coding`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3}];function hu(e,t){return{id:e.id,name:e.name,reasoning:e.reasoning,input:[...e.input],cost:t,contextWindow:e.contextWindow,maxTokens:e.maxTokens}}const gu={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},_u=[{id:`seed-2-0-pro-260328`,name:`ByteDance Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-lite-260228`,name:`ByteDance Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-mini-260215`,name:`ByteDance Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`seed-2-0-code-preview-260328`,name:`ByteDance Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3},{id:`glm-4-7-251222`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3}];function vu(e){return hu(e,gu)}const yu=[{id:`ark-code-latest`,name:`BytePlus Coding Plan`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`dola-seed-2.0-pro`,name:`Dola Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-lite`,name:`Dola Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`dola-seed-2.0-code`,name:`Dola Seed 2.0 Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`bytedance-seed-code`,name:`ByteDance Seed Code`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`glm-5.1`,name:`GLM 5.1`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`glm-4.7`,name:`GLM 4.7`,reasoning:!1,input:[`text`],contextWindow:2e5,maxTokens:128e3},{id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!1,input:[`text`,`image`],contextWindow:256e3,maxTokens:32e3},{id:`gpt-oss-120b`,name:`GPT OSS 120B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:32e3}];function bu(){return[...Vs]}function xu(){return[...Us]}function Su(e){let t=e.trim().toLowerCase();return/^gpt-5(?:[.-]|$)/.test(t)?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`openai-reasoning-effort`,reasoningBudgetSupported:!1}:t===`claude-fable-5`||t===`claude-opus-4.8`||t===`claude-sonnet-5`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-adaptive`,reasoningBudgetSupported:!0}:t===`claude-haiku-4.5`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`anthropic-thinking-budget`,reasoningBudgetSupported:!0}:t===`gemini-3.5-flash`||t===`gemini-3.1-pro`||t===`gemini-3-flash`?{tools:!0,json:!0,thinkingLevels:[...A],defaultThinkingLevel:`low`,thinkingMode:`google-thinking-budget`,reasoningBudgetSupported:!0}:{tools:!0,json:!0}}function Cu(e,t){let n=e.trim();if(!n)throw Error(`Model id required`);return{id:n,name:n,api:t,reasoning:!!Su(n).thinkingMode,input:[`text`,`image`],cost:{input:0,output:0,cacheRead:0,cacheWrite:0},contextWindow:128e3,maxTokens:8192,capabilities:Su(n)}}function wu(e){return Cu(e,`openai-responses`)}function Tu(e){return Cu(e,`openai-completions`)}const Eu=[{id:`google/gemma-4-31B-turbo-TEE`,name:`google/gemma-4-31B-turbo-TEE`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:65536,cost:{input:.0245,output:.0978,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B-TEE`,name:`Qwen/Qwen3-32B-TEE`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5.1-TEE`,name:`zai-org/GLM-5.1-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:1.05,output:3.5,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.6-TEE`,name:`moonshotai/Kimi-K2.6-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65535,cost:{input:.95,output:4,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.6-27B-TEE`,name:`Qwen/Qwen3.6-27B-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.195,output:1.56,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-32B`,name:`Qwen/Qwen3-32B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.08,output:.24,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Nemo-Instruct-2407`,name:`unsloth/Mistral-Nemo-Instruct-2407`,reasoning:!1,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.02,output:.04,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3-0324-TEE`,name:`deepseek-ai/DeepSeek-V3-0324-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.25,output:1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,name:`Qwen/Qwen3-235B-A22B-Instruct-2507-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.08,output:.55,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-120b-TEE`,name:`openai/gpt-oss-120b-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.05,output:.45,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,name:`chutesai/Mistral-Small-3.1-24B-Instruct-2503`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.2-TEE`,name:`deepseek-ai/DeepSeek-V3.2-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.28,output:.42,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-TEE`,name:`zai-org/GLM-4.7-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}},{id:`moonshotai/Kimi-K2.5-TEE`,name:`moonshotai/Kimi-K2.5-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65535,cost:{input:.45,output:2.2,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-27b-it`,name:`unsloth/gemma-3-27b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`XiaomiMiMo/MiMo-V2-Flash-TEE`,name:`XiaomiMiMo/MiMo-V2-Flash-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.09,output:.29,cacheRead:0,cacheWrite:0}},{id:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,name:`chutesai/Mistral-Small-3.2-24B-Instruct-2506`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.06,output:.18,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-0528-TEE`,name:`deepseek-ai/DeepSeek-R1-0528-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.45,output:2.15,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-5-TEE`,name:`zai-org/GLM-5-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.95,output:3.15,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-TEE`,name:`deepseek-ai/DeepSeek-V3.1-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.2,output:.8,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,name:`deepseek-ai/DeepSeek-V3.1-Terminus-TEE`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:65536,cost:{input:.23,output:.9,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-4b-it`,name:`unsloth/gemma-3-4b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:96e3,maxTokens:96e3,cost:{input:.01,output:.03,cacheRead:0,cacheWrite:0}},{id:`MiniMaxAI/MiniMax-M2.5-TEE`,name:`MiniMaxAI/MiniMax-M2.5-TEE`,reasoning:!0,input:[`text`],contextWindow:196608,maxTokens:65536,cost:{input:.3,output:1.1,cacheRead:0,cacheWrite:0}},{id:`tngtech/DeepSeek-TNG-R1T2-Chimera`,name:`tngtech/DeepSeek-TNG-R1T2-Chimera`,reasoning:!0,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.25,output:.85,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Coder-Next-TEE`,name:`Qwen/Qwen3-Coder-Next-TEE`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:65536,cost:{input:.12,output:.75,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-405B-FP8-TEE`,name:`NousResearch/Hermes-4-405B-FP8-TEE`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-V3`,name:`deepseek-ai/DeepSeek-V3`,reasoning:!1,input:[`text`],contextWindow:163840,maxTokens:163840,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`openai/gpt-oss-20b`,name:`openai/gpt-oss-20b`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.04,output:.15,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-3B-Instruct`,name:`unsloth/Llama-3.2-3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`unsloth/Mistral-Small-24B-Instruct-2501`,name:`unsloth/Mistral-Small-24B-Instruct-2501`,reasoning:!1,input:[`text`,`image`],contextWindow:32768,maxTokens:32768,cost:{input:.07,output:.3,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.7-FP8`,name:`zai-org/GLM-4.7-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-TEE`,name:`zai-org/GLM-4.6-TEE`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65536,cost:{input:.4,output:1.7,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3.5-397B-A17B-TEE`,name:`Qwen/Qwen3.5-397B-A17B-TEE`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:65536,cost:{input:.55,output:3.5,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-72B-Instruct`,name:`Qwen/Qwen2.5-72B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,name:`NousResearch/DeepHermes-3-Mistral-24B-Preview`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.02,output:.1,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-Next-80B-A3B-Instruct`,name:`Qwen/Qwen3-Next-80B-A3B-Instruct`,reasoning:!1,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.8,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6-FP8`,name:`zai-org/GLM-4.6-FP8`,reasoning:!0,input:[`text`],contextWindow:202752,maxTokens:65535,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-235B-A22B-Thinking-2507`,name:`Qwen/Qwen3-235B-A22B-Thinking-2507`,reasoning:!0,input:[`text`],contextWindow:262144,maxTokens:262144,cost:{input:.11,output:.6,cacheRead:0,cacheWrite:0}},{id:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,name:`deepseek-ai/DeepSeek-R1-Distill-Llama-70B`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`tngtech/R1T2-Chimera-Speed`,name:`tngtech/R1T2-Chimera-Speed`,reasoning:!0,input:[`text`],contextWindow:131072,maxTokens:65536,cost:{input:.22,output:.6,cacheRead:0,cacheWrite:0}},{id:`zai-org/GLM-4.6V`,name:`zai-org/GLM-4.6V`,reasoning:!0,input:[`text`,`image`],contextWindow:131072,maxTokens:65536,cost:{input:.3,output:.9,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-VL-32B-Instruct`,name:`Qwen/Qwen2.5-VL-32B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:16384,maxTokens:16384,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-VL-235B-A22B-Instruct`,name:`Qwen/Qwen3-VL-235B-A22B-Instruct`,reasoning:!1,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-14B`,name:`Qwen/Qwen3-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.05,output:.22,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen2.5-Coder-32B-Instruct`,name:`Qwen/Qwen2.5-Coder-32B-Instruct`,reasoning:!1,input:[`text`],contextWindow:32768,maxTokens:32768,cost:{input:.03,output:.11,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3-30B-A3B`,name:`Qwen/Qwen3-30B-A3B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.06,output:.22,cacheRead:0,cacheWrite:0}},{id:`unsloth/gemma-3-12b-it`,name:`unsloth/gemma-3-12b-it`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.03,output:.1,cacheRead:0,cacheWrite:0}},{id:`unsloth/Llama-3.2-1B-Instruct`,name:`unsloth/Llama-3.2-1B-Instruct`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,name:`nvidia/NVIDIA-Nemotron-3-Nano-30B-A3B-BF16-TEE`,reasoning:!0,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.3,output:1.2,cacheRead:0,cacheWrite:0}},{id:`NousResearch/Hermes-4-14B`,name:`NousResearch/Hermes-4-14B`,reasoning:!0,input:[`text`],contextWindow:40960,maxTokens:40960,cost:{input:.01,output:.05,cacheRead:0,cacheWrite:0}},{id:`Qwen/Qwen3Guard-Gen-0.6B`,name:`Qwen/Qwen3Guard-Gen-0.6B`,reasoning:!1,input:[`text`],contextWindow:128e3,maxTokens:4096,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}},{id:`rednote-hilab/dots.ocr`,name:`rednote-hilab/dots.ocr`,reasoning:!1,input:[`text`,`image`],contextWindow:131072,maxTokens:131072,cost:{input:.01,output:.01,cacheRead:0,cacheWrite:0}}];function Du(e){return{...e,compat:{supportsUsageInStreaming:!1}}}const Ou={input:1e-4,output:2e-4,cacheRead:0,cacheWrite:0},ku=[{id:`doubao-seed-2-0-pro-260215`,name:`Doubao Seed 2.0 Pro`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-lite-260215`,name:`Doubao Seed 2.0 Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-mini-260215`,name:`Doubao Seed 2.0 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},{id:`doubao-seed-2-0-code-preview-260215`,name:`Doubao Seed 2.0 Code Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:128e3},pu,{id:`deepseek-v3-2-251201`,name:`DeepSeek V3.2`,reasoning:!1,input:[`text`,`image`],contextWindow:128e3,maxTokens:4096}];function Au(e){return hu(e,Ou)}const ju=[...mu];function Mu(e){let t=e.toLowerCase();return t.startsWith(`gpt-`)?`openai-responses`:t.startsWith(`claude-`)?`anthropic-messages`:t.startsWith(`gemini-`)?`google-generative-ai`:`openai-completions`}function Nu(e){let t=e.toLowerCase();return!(t.includes(`glm`)||t.includes(`minimax`))}const Pu={"gpt-5.5":{input:5,output:30,cacheRead:.5,cacheWrite:0},"gpt-5.5-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4":{input:2.5,output:15,cacheRead:.25,cacheWrite:0},"gpt-5.4-pro":{input:30,output:180,cacheRead:30,cacheWrite:0},"gpt-5.4-mini":{input:.75,output:4.5,cacheRead:.075,cacheWrite:0},"gpt-5.4-nano":{input:.2,output:1.25,cacheRead:.02,cacheWrite:0},"gpt-5.3-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.3-codex-spark":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"gpt-5.2-codex":{input:1.75,output:14,cacheRead:.175,cacheWrite:0},"claude-fable-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-8":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-opus-4-7":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-6":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-opus-4-5":{input:5,output:25,cacheRead:.5,cacheWrite:6.25},"claude-sonnet-4-6":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-sonnet-4-5":{input:3,output:15,cacheRead:.3,cacheWrite:3.75},"claude-haiku-4-5":{input:1,output:5,cacheRead:.1,cacheWrite:1.25},"gemini-3.5-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"gemini-3.1-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gemini-3-flash":{input:.5,output:3,cacheRead:.05,cacheWrite:0},"qwen3.7-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"qwen3.6-plus":{input:.5,output:3,cacheRead:.05,cacheWrite:.625},"minimax-m2.7":{input:.3,output:1.2,cacheRead:.06,cacheWrite:.375},"glm-5.2":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"glm-5.1":{input:1.4,output:4.4,cacheRead:.26,cacheWrite:0},"kimi-k2.6":{input:.95,output:4,cacheRead:.16,cacheWrite:0},"gpt-5.1-codex":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"gemini-3-pro":{input:2,output:12,cacheRead:.2,cacheWrite:0},"gpt-5.1-codex-mini":{input:.25,output:2,cacheRead:.025,cacheWrite:0},"gpt-5.1":{input:1.07,output:8.5,cacheRead:.107,cacheWrite:0},"glm-4.7":{input:0,output:0,cacheRead:0,cacheWrite:0},"gpt-5.1-codex-max":{input:1.25,output:10,cacheRead:.125,cacheWrite:0}},Fu={input:0,output:0,cacheRead:0,cacheWrite:0},Iu={"gpt-5.5":4e5,"gpt-5.5-pro":4e5,"gpt-5.4":4e5,"gpt-5.4-pro":4e5,"gpt-5.4-mini":4e5,"gpt-5.4-nano":4e5,"gpt-5.3-codex":4e5,"gpt-5.3-codex-spark":4e5,"gpt-5.2":4e5,"gpt-5.2-codex":4e5,"claude-fable-5":1e6,"claude-opus-4-8":1e6,"claude-sonnet-5":1e6,"claude-opus-4-7":1e6,"claude-opus-4-6":1e6,"claude-opus-4-5":2e5,"claude-sonnet-4-6":1e6,"claude-sonnet-4-5":1e6,"claude-haiku-4-5":2e5,"gemini-3.5-flash":1048576,"gemini-3.1-pro":1048576,"qwen3.7-plus":1e6,"qwen3.6-plus":262144,"minimax-m2.7":262144,"glm-5.2":1e6,"glm-5.1":204800,"kimi-k2.6":262144,"gpt-5.1-codex":4e5,"gemini-3-pro":1048576,"gpt-5.1-codex-mini":4e5,"gpt-5.1":4e5,"glm-4.7":204800,"gemini-3-flash":1048576,"gpt-5.1-codex-max":4e5};function Lu(e){return Iu[e]??128e3}const Ru={"gpt-5.5":128e3,"gpt-5.5-pro":128e3,"gpt-5.4":128e3,"gpt-5.4-pro":128e3,"gpt-5.4-mini":128e3,"gpt-5.4-nano":128e3,"gpt-5.3-codex":128e3,"gpt-5.3-codex-spark":128e3,"gpt-5.2":128e3,"gpt-5.2-codex":128e3,"claude-fable-5":128e3,"claude-opus-4-8":128e3,"claude-sonnet-5":128e3,"claude-opus-4-7":128e3,"claude-opus-4-6":128e3,"claude-opus-4-5":64e3,"claude-sonnet-4-6":128e3,"claude-sonnet-4-5":64e3,"claude-haiku-4-5":64e3,"gemini-3.5-flash":65536,"gemini-3.1-pro":65536,"qwen3.7-plus":65536,"qwen3.6-plus":65536,"minimax-m2.7":65536,"glm-5.2":131072,"glm-5.1":131072,"kimi-k2.6":65536,"gpt-5.1-codex":128e3,"gemini-3-pro":65536,"gpt-5.1-codex-mini":128e3,"gpt-5.1":128e3,"glm-4.7":131072,"gemini-3-flash":65536,"gpt-5.1-codex-max":128e3};function zu(e){return Ru[e]??8192}function Bu(e){return{id:e,name:Hu(e),api:Mu(e),reasoning:!0,input:Nu(e)?[`text`,`image`]:[`text`],cost:Pu[e]??Fu,contextWindow:Lu(e),maxTokens:zu(e),capabilities:Va(e)}}const Vu={"gpt-5.5":`GPT-5.5`,"gpt-5.5-pro":`GPT-5.5 Pro`,"gpt-5.4":`GPT-5.4`,"gpt-5.4-pro":`GPT-5.4 Pro`,"gpt-5.4-mini":`GPT-5.4 Mini`,"gpt-5.4-nano":`GPT-5.4 Nano`,"gpt-5.3-codex":`GPT-5.3 Codex`,"gpt-5.3-codex-spark":`GPT-5.3 Codex Spark`,"gpt-5.2":`GPT-5.2`,"gpt-5.2-codex":`GPT-5.2 Codex`,"claude-fable-5":`Claude Fable 5`,"claude-opus-4-8":`Claude Opus 4.8`,"claude-sonnet-5":`Claude Sonnet 5`,"claude-opus-4-7":`Claude Opus 4.7`,"claude-opus-4-6":`Claude Opus 4.6`,"claude-opus-4-5":`Claude Opus 4.5`,"claude-sonnet-4-6":`Claude Sonnet 4.6`,"claude-sonnet-4-5":`Claude Sonnet 4.5`,"claude-haiku-4-5":`Claude Haiku 4.5`,"gemini-3.5-flash":`Gemini 3.5 Flash`,"gemini-3.1-pro":`Gemini 3.1 Pro`,"qwen3.7-plus":`Qwen3.7 Plus`,"qwen3.6-plus":`Qwen3.6 Plus`,"minimax-m2.7":`MiniMax M2.7`,"glm-5.2":`GLM 5.2`,"glm-5.1":`GLM 5.1`,"kimi-k2.6":`Kimi K2.6`,"gpt-5.1-codex":`GPT-5.1 Codex`,"gemini-3-pro":`Gemini 3 Pro`,"gpt-5.1-codex-mini":`GPT-5.1 Codex Mini`,"gpt-5.1":`GPT-5.1`,"glm-4.7":`GLM-4.7`,"gemini-3-flash":`Gemini 3 Flash`,"gpt-5.1-codex-max":`GPT-5.1 Codex Max`};function Hu(e){return Vu[e]?Vu[e]:e.split(`-`).map(e=>e.charAt(0).toUpperCase()+e.slice(1)).join(` `)}function Uu(){return Ra.map(Bu)}const Wu={input:0,output:0,cacheRead:0,cacheWrite:0};function R(e){return{id:e.id,name:e.name??e.id,reasoning:e.reasoning??!1,input:e.input??[`text`],cost:e.cost??Wu,contextWindow:e.contextWindow??2e5,maxTokens:e.maxTokens??8192,...e.api?{api:e.api}:{},...e.compat?{compat:e.compat}:{},...e.capabilities?{capabilities:e.capabilities}:{}}}const Gu=[R({id:`gpt-5.5`,name:`GPT-5.5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:5,output:30,cacheRead:.5,cacheWrite:0}}),R({id:`gpt-5.4`,name:`GPT-5.4`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-responses`,cost:{input:2.5,output:15,cacheRead:.25,cacheWrite:0}}),R({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),R({id:`gpt-5.4-nano`,name:`GPT-5.4 Nano`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-responses`,cost:{input:.2,output:1.25,cacheRead:.02,cacheWrite:0}})];R({id:`gpt-5.5`,name:`GPT-5.5 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),R({id:`gpt-5.4`,name:`GPT-5.4 Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3,api:`openai-codex-responses`}),R({id:`gpt-5.4-mini`,name:`GPT-5.4 Mini Codex`,reasoning:!0,input:[`text`,`image`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`,cost:{input:.75,output:4.5,cacheRead:.075,cacheWrite:0}}),R({id:`gpt-5.3-codex-spark`,name:`GPT-5.3 Codex Spark`,reasoning:!0,input:[`text`],contextWindow:4e5,maxTokens:128e3,api:`openai-codex-responses`});const Ku=[R({id:`claude-fable-5`,name:`Claude Fable 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-opus-4-8`,name:`Claude Opus 4.8`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-sonnet-5`,name:`Claude Sonnet 5`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:128e3}),R({id:`claude-haiku-4-5`,name:`Claude Haiku 4.5`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:64e3})],qu=[R({id:`gemini-3.5-flash`,name:`Gemini 3.5 Flash`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3.1-pro-preview`,name:`Gemini 3.1 Pro Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3-flash-preview`,name:`Gemini 3 Flash Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536}),R({id:`gemini-3.1-flash-lite`,name:`Gemini 3.1 Flash-Lite`,reasoning:!0,input:[`text`,`image`],contextWindow:1048576,maxTokens:65536})];R({id:`grok-4.3`,name:`Grok 4.3`,reasoning:!0,input:[`text`,`image`],contextWindow:1e6,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0,thinkingLevels:[`off`,`low`,`medium`,`high`],defaultThinkingLevel:`low`,thinkingMode:`xai-reasoning-effort`,reasoningBudgetSupported:!1}}),R({id:`grok-build-0.1`,name:`Grok Build 0.1`,reasoning:!1,input:[`text`],contextWindow:256e3,maxTokens:64e3,api:`openai-responses`,cost:{input:1.25,output:2.5,cacheRead:.2,cacheWrite:0},capabilities:{tools:!0,json:!0}}),R({id:`glm-5.2`,name:`GLM-5.2`,reasoning:!0,contextWindow:1e6,maxTokens:128e3}),R({id:`glm-5.1`,name:`GLM-5.1`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5`,name:`GLM-5`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5-turbo`,name:`GLM-5 Turbo`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-5v-turbo`,name:`GLM-5V Turbo`,reasoning:!0,input:[`text`,`image`],contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7`,name:`GLM-4.7`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7-flashx`,name:`GLM-4.7 FlashX`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`glm-4.7-flash`,name:`GLM-4.7 Flash`,reasoning:!0,contextWindow:2e5,maxTokens:128e3}),R({id:`MiniMax-M2.7`,name:`MiniMax M2.7`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.7-highspeed`,name:`MiniMax M2.7 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.5`,name:`MiniMax M2.5`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`MiniMax-M2.5-highspeed`,name:`MiniMax M2.5 Highspeed`,reasoning:!0,contextWindow:204800,maxTokens:131072}),R({id:`kimi-k2.6`,name:`Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),R({id:`kimi-k2.5`,name:`Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:256e3,maxTokens:8192}),R({id:`kimi-for-coding`,name:`Kimi Coding`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:32768}),R({id:`mistral-medium-3.5`,name:`Mistral Medium 3.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:1.5,output:7.5,cacheRead:0,cacheWrite:0}}),R({id:`mistral-small-2603`,name:`Mistral Small 4`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.6,cacheRead:0,cacheWrite:0}}),R({id:`mistral-large-2512`,name:`Mistral Large 3`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.5,output:1.5,cacheRead:0,cacheWrite:0}}),R({id:`devstral-2512`,name:`Devstral 2`,contextWindow:262144,maxTokens:262144,cost:{input:.4,output:2,cacheRead:0,cacheWrite:0}}),R({id:`ministral-14b-2512`,name:`Ministral 3 14B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.2,output:.2,cacheRead:0,cacheWrite:0}}),R({id:`ministral-8b-2512`,name:`Ministral 3 8B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.15,output:.15,cacheRead:0,cacheWrite:0}}),R({id:`ministral-3b-2512`,name:`Ministral 3 3B`,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,cost:{input:.1,output:.1,cacheRead:0,cacheWrite:0}}),R({id:`qwen3.7-max`,name:`qwen3.7-max`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`qwen3.7-plus`,name:`qwen3.7-plus`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`qwen3.6-flash`,name:`qwen3.6-flash`,input:[`text`,`image`],contextWindow:1e6,maxTokens:65536}),R({id:`deepseek-v4-pro`,name:`deepseek-v4-pro`,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v4-flash`,name:`deepseek-v4-flash`,contextWindow:1e6,maxTokens:131072}),R({id:`kimi-k2.7-code`,name:`kimi-k2.7-code`,contextWindow:262144,maxTokens:32768}),R({id:`glm-5.2`,name:`glm-5.2`,contextWindow:1e6,maxTokens:128e3}),R({id:`MiniMax-M2.5`,name:`MiniMax-M2.5`,reasoning:!0,contextWindow:1e6,maxTokens:65536}),R({id:`ernie-5.1`,name:`ERNIE 5.1`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0`,name:`ERNIE 5.0`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0-thinking-latest`,name:`ERNIE 5.0 Thinking Latest`,reasoning:!0,input:[`text`,`image`],contextWindow:128e3,maxTokens:65536}),R({id:`ernie-5.0-thinking-preview`,name:`ERNIE 5.0 Thinking Preview`,reasoning:!0,input:[`text`,`image`],contextWindow:119e3,maxTokens:64e3}),R({id:`ernie-x1.1-preview`,name:`ERNIE X1.1 Preview`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),R({id:`ernie-x1.1`,name:`ERNIE X1.1`,reasoning:!0,contextWindow:64e3,maxTokens:65536}),R({id:`ernie-x1-turbo-32k`,name:`ERNIE X1 Turbo 32K`,reasoning:!0,contextWindow:32e3,maxTokens:28160}),R({id:`deepseek-v4-pro`,name:`DeepSeek V4 Pro`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v4-flash`,name:`DeepSeek V4 Flash`,reasoning:!0,contextWindow:1e6,maxTokens:131072}),R({id:`deepseek-v3.2-think`,name:`DeepSeek V3.2 Think`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),R({id:`deepseek-v3.2`,name:`DeepSeek V3.2`,reasoning:!0,contextWindow:128e3,maxTokens:32768}),[R({id:`auto`,name:`OpenRouter Auto`,input:[`text`,`image`],contextWindow:2e5}),R({id:`moonshotai/kimi-k2.6`,name:`MoonshotAI Kimi K2.6`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:1,output:3,cacheRead:.2,cacheWrite:0}}),R({id:`moonshotai/kimi-k2.5`,name:`MoonshotAI Kimi K2.5`,reasoning:!0,input:[`text`,`image`],contextWindow:262144,maxTokens:262144,api:`openai-completions`,cost:{input:.44,output:2,cacheRead:.22,cacheWrite:0}}),...Gu.map(e=>({...e,id:`openai/${e.id}`,name:`OpenAI ${e.name}`,api:`openai-completions`})),...Ku.map(e=>({...e,id:`anthropic/${e.id}`,name:`Anthropic ${e.name}`,api:`openai-completions`})),...qu.map(e=>({...e,id:`google/${e.id}`,name:`Google ${e.name}`,api:`openai-completions`}))],Eu.map(Du),Ga.map(qa),ro.map(ao),Za.map($a),Oa.map(ja),Uu(),co.map(_o),Ca.map(e=>Ta({id:e.id})),Pa.map(Ia),R({id:`local`,name:`Local model`,input:[`text`,`image`],contextWindow:128e3,maxTokens:8192}),bu().map(wu),xu().map(Tu),ku.map(Au),ju.map(Au),ju.map(Au),_u.map(vu),yu.map(vu),yu.map(vu),xo.map(e=>So(e));const Ju=`qwen3.7-plus`;`${Ju}`,`${Ju}`;const Yu=1e6,Xu=65536,Zu={input:0,output:0,cacheRead:0,cacheWrite:0},Qu=[{id:`qwen3.7-max`,name:`Qwen3.7 Max`,reasoning:!0,input:[`text`,`image`],cost:Zu,contextWindow:Yu,maxTokens:Xu},{id:`qwen3.7-plus`,name:`Qwen3.7 Plus`,reasoning:!0,input:[`text`,`image`],cost:Zu,contextWindow:Yu,maxTokens:Xu},{id:`qwen3.6-flash`,name:`Qwen3.6 Flash`,reasoning:!0,input:[`text`,`image`],cost:Zu,contextWindow:1e6,maxTokens:Xu}];Qu[0],Qu[1],Qu[2];function $u(e){return e===`gemini-3.5-flash-preview`?`gemini-3.5-flash`:e===`gemini-3-pro`||e===`gemini-3-pro-preview`||e===`gemini-3.1-pro`?`gemini-3.1-pro-preview`:e===`gemini-3-flash`||e===`gemini-3.1-flash`||e===`gemini-3.1-flash-preview`?`gemini-3-flash-preview`:e===`gemini-3.1-flash-lite`||e===`gemini-3.1-flash-lite-preview`?`gemini-3.1-flash-lite`:e}const ed={"opus-4.8":`claude-opus-4-8`,"opus-4.6":`claude-opus-4-6`,"opus-4.5":`claude-opus-4-5`,"sonnet-5":`claude-sonnet-5`,"sonnet-4.6":`claude-sonnet-4-6`,"sonnet-4.5":`claude-sonnet-4-5`},td=[`gpt-5.4-codex`,`gpt-5.3-codex`];function nd(e){let t=e.trim().toLowerCase();return t===`z.ai`||t===`z-ai`?`zai`:t===`opencode-zen`?`opencode`:t===`kimi-code`?`kimi-coding`:t===`moonshotai`||t===`moonshot-ai`?`moonshot`:t===`bytedance`||t===`doubao`?`volcengine`:t}function rd(e){let t=e.trim();return t&&(ed[t.toLowerCase()]??t)}function id(e,t){if(e===`anthropic`)return rd(t);if(e===`vercel-ai-gateway`&&!t.includes(`/`)){if(t.toLowerCase().startsWith(`gpt-`))return`openai/${t}`;let e=rd(t);if(e.startsWith(`claude-`))return`anthropic/${e}`}return e===`google`?$u(t):e===`openrouter`&&!t.includes(`/`)?`openrouter/${t}`:t}function ad(e,t){if(e!==`openai`)return!1;let n=t.trim().toLowerCase();return n?td.some(e=>n===e||n.startsWith(`${e}-`)):!1}function od(e,t){let n=nd(e),r=id(n,t.trim());return ad(n,r)?{provider:`openai-codex`,model:r}:{provider:n,model:r}}function sd(e,t){let n=e.trim();if(!n)return null;let r=n.indexOf(`/`);if(r===-1)return od(t,n);let i=n.slice(0,r).trim(),a=n.slice(r+1).trim();return!i||!a?null:od(i,a)}const cd=`elevenlabs`;function ld(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function ud(e){if(typeof e!=`string`)return;let t=e.trim();return t.length>0?t:void 0}function dd(e){let t=ud(e);if(t)return t;let n=il(e);if(n)return n;if(ld(e)&&Object.keys(e).length>0)return e}function fd(e){return dd(e)!==void 0}function pd(e){if(!ld(e))return;let t={};for(let[n,r]of Object.entries(e))typeof r==`string`&&(t[n]=r);return Object.keys(t).length>0?t:void 0}function md(e){if(!ld(e))return;let t={};for(let[n,r]of Object.entries(e))if(r!==void 0){if(n===`voiceAliases`){let e=pd(r);e&&(t.voiceAliases=e);continue}if(n===`apiKey`){let e=dd(r);e&&(t.apiKey=e);continue}if(n===`voiceId`||n===`modelId`||n===`outputFormat`){let e=ud(r);e&&(t[n]=e);continue}t[n]=r}return Object.keys(t).length>0?t:void 0}function hd(e){if(!ld(e))return;let t={};for(let[n,r]of Object.entries(e)){let e=ud(n);if(!e)continue;let i=md(r);i&&(t[e]=i)}return Object.keys(t).length>0?t:void 0}function gd(e){let t={},n=ud(e.voiceId);n&&(t.voiceId=n);let r=pd(e.voiceAliases);r&&(t.voiceAliases=r);let i=ud(e.modelId);i&&(t.modelId=i);let a=ud(e.outputFormat);a&&(t.outputFormat=a);let o=dd(e.apiKey);return o&&(t.apiKey=o),t}function _d(e){return md({voiceId:e.voiceId,voiceAliases:e.voiceAliases,modelId:e.modelId,outputFormat:e.outputFormat,apiKey:e.apiKey})}function vd(e){let t=ud(e.provider);if(t)return t;let n=e.providers?Object.keys(e.providers):[];return n.length===1?n[0]:void 0}function yd(e){if(!ld(e))return;let t=e,n=typeof t.provider==`string`||ld(t.providers),r={},i=gd(t);if(Object.keys(i).length>0&&Object.assign(r,i),typeof t.interruptOnSpeech==`boolean`&&(r.interruptOnSpeech=t.interruptOnSpeech),n){let e=hd(t.providers),n=ud(t.provider);if(e&&(r.providers=e),n)r.provider=n;else if(e){let t=Object.keys(e);t.length===1&&(r.provider=t[0])}return Object.keys(r).length>0?r:void 0}let a=_d(t);return a&&(r.provider=cd,r.providers={[cd]:a}),Object.keys(r).length>0?r:void 0}function bd(e){if(!e.talk)return e;let t=yd(e.talk);return t?{...e,talk:t}:e}function xd(e){let t=yd(e);if(!t)return{};let n=vd(t);return n?{provider:n,config:t.providers?.[n]}:{}}function Sd(e={}){let t=e.fs??n,r=e.os??p,a=e.path??i,o=r.homedir(),s=[`.profile`,`.zprofile`,`.zshrc`,`.bashrc`].map(e=>a.join(o,e));for(let e of s)if(t.existsSync(e))try{let n=t.readFileSync(e,`utf-8`).match(/(?:^|\n)\s*(?:export\s+)?ELEVENLABS_API_KEY\s*=\s*["']?([^\n"']+)["']?/)?.[1]?.trim();if(n)return n}catch{}return null}function Cd(e=process.env,t={}){return(e.ELEVENLABS_API_KEY??``).trim()||Sd(t)}let wd={warned:!1};const Td={opus:`anthropic/claude-opus-4-8`,sonnet:`anthropic/claude-sonnet-5`,gpt:`openai/gpt-5.5`,"gpt-mini":`openai/gpt-5.4-mini`,gemini:`google/gemini-3.5-flash`,"gemini-flash":`google/gemini-3-flash-preview`,"gemini-flash-lite":`google/gemini-3.1-flash-lite`},Ed={input:0,output:0,cacheRead:0,cacheWrite:0},Dd=[`text`];function Od(e,t){return t||(nd(e)===`anthropic`?`anthropic-messages`:void 0)}function kd(e){return typeof e==`number`&&Number.isFinite(e)&&e>0}function Ad(e){return{input:typeof e?.input==`number`?e.input:Ed.input,output:typeof e?.output==`number`?e.output:Ed.output,cacheRead:typeof e?.cacheRead==`number`?e.cacheRead:Ed.cacheRead,cacheWrite:typeof e?.cacheWrite==`number`?e.cacheWrite:Ed.cacheWrite}}function jd(e){let t=e.auth?.profiles??{},n=Object.entries(t).filter(([,e])=>e?.provider===`anthropic`),r=e.auth?.order?.anthropic??[];for(let e of r){let n=t[e];if(!(!n||n.provider!==`anthropic`)){if(n.mode===`api_key`)return`api_key`;if(n.mode===`oauth`||n.mode===`token`)return`oauth`}}let i=n.some(([,e])=>e?.mode===`api_key`),a=n.some(([,e])=>e?.mode===`oauth`||e?.mode===`token`);return i&&!a?`api_key`:a&&!i||process.env.ANTHROPIC_OAUTH_TOKEN?.trim()?`oauth`:process.env.ANTHROPIC_API_KEY?.trim()?`api_key`:null}function Md(e){if(!e||typeof e!=`string`)return null;let t=e.trim();return t?Td[t.toLowerCase()]??t:null}function Nd(e){if(!e)return!1;let t=nd(e.provider),n=e.model.toLowerCase();return t===`anthropic`?!0:t===`amazon-bedrock`&&n.includes(`anthropic.claude`)}function Pd(e){let t=e.messages;if(t?.ackReactionScope!==void 0)return e;let n=t?{...t}:{};return n.ackReactionScope=`group-mentions`,{...e,messages:n}}function Fd(e,t={}){let n=e.session;if(!n||n.mainKey===void 0)return e;let r=n.mainKey.trim(),i=t.warn??console.warn,a=t.warnState??wd,o={...e,session:{...n,mainKey:`main`}};return r&&r!==`main`&&!a.warned&&(a.warned=!0,i(`session.mainKey is ignored; main session is always "main".`)),o}function Id(e){let t=bd(e),n=Cd();if(!n)return t;let r=t.talk,i=xd(r);if(i.provider&&i.provider!==cd||fd(i.config?.apiKey)||fd(r?.apiKey))return t;let a=i.provider??cd,o={...r?.providers};o[a]={...o[a],apiKey:n};let s={...r,provider:r?.provider??a,providers:o,apiKey:n};return{...t,talk:s}}function Ld(e){return bd(e)}function Rd(e){let t=!1,n=e,r=n.models?.providers;if(r){let e={...r};for(let[n,i]of Object.entries(r)){let r=i.models;if(!Array.isArray(r)||r.length===0)continue;let a=Od(n,i.api),o=i;a&&i.api!==a&&(t=!0,o={...o,api:a});let s=!1,c=r.map(e=>{let t=e,n=!1,r=typeof t.reasoning==`boolean`?t.reasoning:!1;t.reasoning!==r&&(n=!0);let i=t.input??[...Dd];t.input===void 0&&(n=!0);let o=Ad(t.cost);(!t.cost||t.cost.input!==o.input||t.cost.output!==o.output||t.cost.cacheRead!==o.cacheRead||t.cost.cacheWrite!==o.cacheWrite)&&(n=!0);let c=kd(t.contextWindow)?t.contextWindow:2e5;t.contextWindow!==c&&(n=!0);let l=Math.min(8192,c),u=kd(t.maxTokens)?t.maxTokens:l,d=Math.min(u,c);t.maxTokens!==d&&(n=!0);let f=t.api??a;return t.api!==f&&(n=!0),n?(s=!0,{...t,reasoning:r,input:i,cost:o,contextWindow:c,maxTokens:d,api:f}):e});if(!s){o!==i&&(e[n]=o);continue}e[n]={...o,models:c},t=!0}t&&(n={...n,models:{...n.models,providers:e}})}let i=n.agents?.defaults;if(!i)return t?n:e;let a=i.models??{};if(Object.keys(a).length===0)return t?n:e;let o={...a};for(let[e,n]of Object.entries(Td)){let r=o[n];r&&r.alias===void 0&&(o[n]={...r,alias:e},t=!0)}return t?{...n,agents:{...n.agents,defaults:{...i,models:o}}}:e}function zd(e){let t=e.agents,n=t?.defaults,r=typeof n?.maxConcurrent==`number`&&Number.isFinite(n.maxConcurrent),i=typeof n?.subagents?.maxConcurrent==`number`&&Number.isFinite(n.subagents.maxConcurrent);if(r&&i)return e;let a=!1,o=n?{...n}:{};r||(o.maxConcurrent=4,a=!0);let s=n?.subagents?{...n.subagents}:{};return i||(s.maxConcurrent=8,a=!0),a?{...e,agents:{...t,defaults:{...o,subagents:s}}}:e}function Bd(e){let t=e.logging;return!t||t.redactSensitive?e:{...e,logging:{...t,redactSensitive:`tools`}}}function Vd(e){let t=e.agents?.defaults;if(!t)return e;let n=jd(e);if(!n)return e;let r=!1,i={...t},a=t.contextPruning??{},o=t.heartbeat??{};if(t.contextPruning?.mode===void 0&&(i.contextPruning={...a,mode:`cache-ttl`,ttl:t.contextPruning?.ttl??`1h`},r=!0),t.heartbeat?.every===void 0&&(i.heartbeat={...o,every:n===`oauth`?`1h`:`30m`},r=!0),n===`api_key`){let e=t.models?{...t.models}:{},n=!1;for(let[t,r]of Object.entries(e)){if(!Nd(sd(t,`anthropic`)))continue;let i=r??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[t]={...i,params:{...a,cacheRetention:`short`}},n=!0)}let a=Md(ia(t.model)??void 0);if(a){let t=sd(a,`anthropic`);if(Nd(t)){let r=`${t.provider}/${t.model}`,i=e[r]??{},a=i.params??{};typeof a.cacheRetention!=`string`&&(e[r]={...i,params:{...a,cacheRetention:`short`}},n=!0)}}n&&(i.models=e,r=!0)}return r?{...e,agents:{...e.agents,defaults:i}}:e}function Hd(e){let t=e.agents?.defaults;if(!t)return e;let n=t?.compaction;return n?.mode?e:{...e,agents:{...e.agents,defaults:{...t,compaction:{...n,mode:`safeguard`}}}}}const Ud=/\$\{[A-Z_][A-Z0-9_]*\}/;function Wd(e){return Ud.test(e)}function Gd(e,t){let n=/^[A-Z_][A-Z0-9_]*$/,r=[];for(let i=0;i<e.length;i++){if(e[i]===`$`){if(e[i+1]===`$`&&e[i+2]===`{`){let t=i+3,a=e.indexOf(`}`,t);if(a!==-1){let o=e.slice(t,a);if(n.test(o)){r.push(`\${${o}}`),i=a;continue}}}if(e[i+1]===`{`){let a=i+2,o=e.indexOf(`}`,a);if(o!==-1){let s=e.slice(a,o);if(n.test(s)){let e=t[s];if(e===void 0||e===``)return null;r.push(e),i=o;continue}}}}r.push(e[i])}return r.join(``)}function Kd(e,t,n=process.env){if(t==null)return e;if(typeof e==`string`&&typeof t==`string`)return Wd(t)&&Gd(t,n)===e?t:e;if(Array.isArray(e)&&Array.isArray(t))return e.map((e,r)=>r<t.length?Kd(e,t[r],n):e);if(T(e)&&T(t)){let r={};for(let[i,a]of Object.entries(e))i in t?r[i]=Kd(a,t[i],n):r[i]=a;return r}return e}const qd=/^[A-Z_][A-Z0-9_]*$/;var Jd=class extends Error{constructor(e,t){super(`Missing env var "${e}" referenced at config path: ${t}`),this.varName=e,this.configPath=t,this.name=`MissingEnvVarError`}};function Yd(e,t){if(e[t]!==`$`)return null;let n=e[t+1],r=e[t+2];if(n===`$`&&r===`{`){let n=t+3,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(qd.test(t))return{kind:`escaped`,name:t,end:r}}}if(n===`{`){let n=t+2,r=e.indexOf(`}`,n);if(r!==-1){let t=e.slice(n,r);if(qd.test(t))return{kind:`substitution`,name:t,end:r}}}return null}function Xd(e,t,n){if(!e.includes(`$`))return e;let r=[];for(let i=0;i<e.length;i+=1){let a=e[i];if(a!==`$`){r.push(a);continue}let o=Yd(e,i);if(o?.kind===`escaped`){r.push(`\${${o.name}}`),i=o.end;continue}if(o?.kind===`substitution`){let e=t[o.name];if(e===void 0||e===``)throw new Jd(o.name,n);r.push(e),i=o.end;continue}r.push(a)}return r.join(``)}function Zd(e){if(!e.includes(`$`))return!1;for(let t=0;t<e.length;t+=1){if(e[t]!==`$`)continue;let n=Yd(e,t);if(n?.kind===`escaped`){t=n.end;continue}if(n?.kind===`substitution`)return!0}return!1}function Qd(e,t,n){if(typeof e==`string`)return Xd(e,t,n);if(Array.isArray(e))return e.map((e,r)=>Qd(e,t,`${n}[${r}]`));if(T(e)){let r={};for(let[i,a]of Object.entries(e))r[i]=Qd(a,t,n?`${n}.${i}`:i);return r}return e}function $d(e,t=process.env){return Qd(e,t,``)}function ef(e){return yr(e)||xr(e)}function tf(e){let t=e?.env;if(!t)return{};let n={};if(t.vars)for(let[e,r]of Object.entries(t.vars)){if(!r)continue;let t=vr(e,{portable:!0});t&&(ef(t)||(n[t]=r))}for(let[e,r]of Object.entries(t)){if(e===`shellEnv`||e===`vars`||typeof r!=`string`||!r.trim())continue;let t=vr(e,{portable:!0});t&&(ef(t)||(n[t]=r))}return n}function nf(e){return tf(e)}function rf(e,t=process.env){let n=nf(e);for(let[e,r]of Object.entries(n))t[e]?.trim()||(t[e]=r)}const af=`$include`;var z=class extends Error{constructor(e,t,n){super(e),this.includePath=t,this.cause=n,this.name=`ConfigIncludeError`}},of=class extends z{constructor(e){super(`Circular include detected: ${e.join(` -> `)}`,e[e.length-1]),this.chain=e,this.name=`CircularIncludeError`}};function sf(e,t){if(Array.isArray(e)&&Array.isArray(t))return[...e,...t];if(T(e)&&T(t)){let n={...e};for(let e of Object.keys(t))Gi(e)||(n[e]=e in n?sf(n[e],t[e]):t[e]);return n}return t}var cf=class e{constructor(e,t,n){this.basePath=e,this.resolver=t,this.visited=new Set,this.depth=0,this.visited.add(i.normalize(e)),this.rootDir=i.normalize(n??i.dirname(e)),this.rootRealDir=i.normalize(lf(this.rootDir))}process(e){return Array.isArray(e)?e.map(e=>this.process(e)):T(e)?af in e?this.processInclude(e):this.processObject(e):e}processObject(e){let t={};for(let[n,r]of Object.entries(e))t[n]=this.process(r);return t}processInclude(e){let t=e[af],n=Object.keys(e).filter(e=>e!==af),r=this.resolveInclude(t);if(n.length===0)return r;if(!T(r))throw new z(`Sibling keys require included content to be an object`,typeof t==`string`?t:af);let i={};for(let t of n)i[t]=this.process(e[t]);return sf(r,i)}resolveInclude(e){if(typeof e==`string`)return this.loadFile(e);if(Array.isArray(e))return e.reduce((e,t)=>{if(typeof t!=`string`)throw new z(`Invalid $include array item: expected string, got ${typeof t}`,String(t));return sf(e,this.loadFile(t))},{});throw new z(`Invalid $include value: expected string or array of strings, got ${typeof e}`,String(e))}loadFile(e){let t=this.resolvePath(e);this.checkCircular(t),this.checkDepth(e);let n=this.readFile(e,t),r=this.parseFile(e,t,n);return this.processNested(t,r)}resolvePath(e){let t=i.dirname(this.basePath),r=i.isAbsolute(e)?e:i.resolve(t,e),a=i.normalize(r);if(!oi(this.rootDir,a))throw new z(`Include path escapes config directory: ${e} (root: ${this.rootDir})`,e);try{let t=n.realpathSync(a);if(!oi(this.rootRealDir,t))throw new z(`Include path resolves outside config directory (symlink): ${e} (root: ${this.rootDir})`,e)}catch(e){if(e instanceof z)throw e}return a}checkCircular(e){if(this.visited.has(e))throw new of([...this.visited,e])}checkDepth(e){if(this.depth>=10)throw new z(`Maximum include depth (10) exceeded at: ${e}`,e)}readFile(e,t){try{return this.resolver.readFileWithGuards?this.resolver.readFileWithGuards({includePath:e,resolvedPath:t,rootRealDir:this.rootRealDir}):this.resolver.readFile(t)}catch(n){throw n instanceof z?n:new z(`Failed to read include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}parseFile(e,t,n){try{return this.resolver.parseJson(n)}catch(n){throw new z(`Failed to parse include file: ${e} (resolved: ${t})`,e,n instanceof Error?n:void 0)}}processNested(t,n){let r=new e(t,this.resolver,this.rootDir);return r.visited=new Set([...this.visited,t]),r.depth=this.depth+1,r.process(n)}};function lf(e){try{return n.realpathSync(e)}catch{return e}}function uf(e){let t=e.ioFs??n,r=e.maxBytes??2097152;if(!Di(t))return t.readFileSync(e.resolvedPath,`utf-8`);let i=Oi({absolutePath:e.resolvedPath,rootPath:e.rootRealDir,rootRealPath:e.rootRealDir,boundaryLabel:`config directory`,skipLexicalRootCheck:!0,maxBytes:r,ioFs:t});if(!i.ok)throw i.reason===`validation`?new z(`Include file failed security checks (regular file, max ${r} bytes, no hardlinks): ${e.includePath}`,e.includePath):new z(`Failed to read include file: ${e.includePath} (resolved: ${e.resolvedPath})`,e.includePath,i.error instanceof Error?i.error:void 0);try{return t.readFileSync(i.fd,`utf-8`)}finally{t.closeSync(i.fd)}}const df={readFile:e=>n.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:n})=>uf({includePath:e,resolvedPath:t,rootRealDir:n}),parseJson:e=>m.parse(e)};function ff(e,t,n=df){return new cf(t,n).process(e)}function pf(e){return typeof e==`string`&&e.trim().toLowerCase()||null}function mf(e){let t=pf(e);return t===`off`||t===`partial`||t===`block`||t===`progress`?t:null}function hf(e){let t=mf(e);return t?t===`progress`?`partial`:t:null}function gf(e){let t=pf(e);return t===`replace`||t===`status_final`||t===`append`?t:null}function _f(e){return e===`append`?`block`:e===`status_final`?`progress`:`partial`}function vf(e={}){let t=mf(e.streaming);return t?t===`progress`?`partial`:t:hf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function yf(e={}){return hf(e.streaming)||hf(e.streamMode)||(typeof e.streaming==`boolean`&&e.streaming?`partial`:`off`)}function bf(e={}){let t=mf(e.streaming);if(t)return t;let n=gf(e.streamMode);return n?_f(n):(e.streaming,`partial`)}function xf(e={}){return typeof e.nativeStreaming==`boolean`?e.nativeStreaming:typeof e.streaming==`boolean`?e.streaming:!0}const Sf=/[;&|`$<>]/,Cf=/[\r\n]/,wf=/["']/,Tf=/^[A-Za-z0-9._+-]+$/;function Ef(e){return e.startsWith(`.`)||e.startsWith(`~`)||e.includes(`/`)||e.includes(`\\`)?!0:/^[A-Za-z]:[\\/]/.test(e)}function Df(e){if(!e)return!1;let t=e.trim();return!t||t.includes(`\0`)||Cf.test(t)||Sf.test(t)||wf.test(t)?!1:Ef(t)?!0:t.startsWith(`-`)?!1:Tf.test(t)}const B=e=>E(e)?e:null,V=(e,t)=>{let n=e[t];if(E(n))return n;let r={};return e[t]=r,r},Of=(e,t)=>{for(let[n,r]of Object.entries(t)){if(r===void 0||Gi(n))continue;let t=e[n];if(t===void 0){e[n]=r;continue}E(t)&&E(r)&&Of(t,r)}},kf=e=>{let t=B(e),n=Array.isArray(t?.command)?t?.command:null;if(!n||n.length===0||typeof n[0]!=`string`||!n.every(e=>typeof e==`string`))return null;let r=n[0].trim();if(!r||!Df(r))return null;let i=n.slice(1),a=typeof t?.timeoutSeconds==`number`?t?.timeoutSeconds:void 0,o={command:r,type:`cli`};return i.length>0&&(o.args=i),a!==void 0&&(o.timeoutSeconds=a),o},Af=e=>{let t=e?.list;return Array.isArray(t)?t:[]},jf=e=>{let t=Af(B(e.agents)),n=t.find(e=>E(e)&&e.default===!0&&typeof e.id==`string`&&e.id.trim()!==``);if(n)return n.id.trim();let r=B(e.routing),i=typeof r?.defaultAgentId==`string`?r.defaultAgentId.trim():``;if(i)return i;let a=t.find(e=>E(e)&&typeof e.id==`string`&&e.id.trim()!==``);return a?a.id.trim():`main`},Mf=(e,t)=>{let n=t.trim(),r=e.find(e=>E(e)&&typeof e.id==`string`&&e.id.trim()===n);if(r)return r;let i={id:n};return e.push(i),i};function Nf(e,t,n,r){let i=Array.isArray(e.bindings)?e.bindings:null;if(!i)return;let a=!1;for(let e of i){if(!E(e))continue;let t=B(e.match);t&&r(t)&&(e.match=t,a=!0)}a&&(e.bindings=i,t.push(n))}function Pf(e){let t=E(e.groups)?e.groups:{};return{groups:t,entry:E(t[`*`])?t[`*`]:{}}}function Ff(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function If(e){let t=B(e.owner.threadBindings);if(!t||!Ff(t,`ttlHours`))return!1;let n=t.idleHours!==void 0;return n||(t.idleHours=t.ttlHours),delete t.ttlHours,e.owner.threadBindings=t,n?e.changes.push(`Removed ${e.pathPrefix}.threadBindings.ttlHours (${e.pathPrefix}.threadBindings.idleHours already set).`):e.changes.push(`Moved ${e.pathPrefix}.threadBindings.ttlHours → ${e.pathPrefix}.threadBindings.idleHours.`),!0}const Lf=[{id:`bindings.match.provider->bindings.match.channel`,describe:`Move bindings[].match.provider to bindings[].match.channel`,apply:(e,t)=>{Nf(e,t,`Moved bindings[].match.provider → bindings[].match.channel.`,e=>{if(typeof e.channel==`string`&&e.channel.trim())return!1;let t=typeof e.provider==`string`?e.provider.trim():``;return t?(e.channel=t,delete e.provider,!0):!1})}},{id:`bindings.match.accountID->bindings.match.accountId`,describe:`Move bindings[].match.accountID to bindings[].match.accountId`,apply:(e,t)=>{Nf(e,t,`Moved bindings[].match.accountID → bindings[].match.accountId.`,e=>{if(e.accountId!==void 0)return!1;let t=typeof e.accountID==`string`?e.accountID.trim():e.accountID;return t?(e.accountId=t,delete e.accountID,!0):!1})}},{id:`session.sendPolicy.rules.match.provider->match.channel`,describe:`Move session.sendPolicy.rules[].match.provider to match.channel`,apply:(e,t)=>{let n=B(e.session);if(!n)return;let r=B(n.sendPolicy);if(!r)return;let i=Array.isArray(r.rules)?r.rules:null;if(!i)return;let a=!1;for(let e of i){if(!E(e))continue;let t=B(e.match);if(!t||typeof t.channel==`string`&&t.channel.trim())continue;let n=typeof t.provider==`string`?t.provider.trim():``;n&&(t.channel=n,delete t.provider,e.match=t,a=!0)}a&&(r.rules=i,n.sendPolicy=r,e.session=n,t.push(`Moved session.sendPolicy.rules[].match.provider → match.channel.`))}},{id:`messages.queue.byProvider->byChannel`,describe:`Move messages.queue.byProvider to messages.queue.byChannel`,apply:(e,t)=>{let n=B(e.messages);if(!n)return;let r=B(n.queue);r&&r.byProvider!==void 0&&(r.byChannel===void 0?(r.byChannel=r.byProvider,t.push(`Moved messages.queue.byProvider → messages.queue.byChannel.`)):t.push(`Removed messages.queue.byProvider (messages.queue.byChannel already set).`),delete r.byProvider,n.queue=r,e.messages=n)}},{id:`providers->channels`,describe:`Move provider config sections to channels.*`,apply:(e,t)=>{let n=[`whatsapp`,`telegram`,`discord`,`slack`,`signal`,`imessage`,`msteams`].filter(t=>E(e[t]));if(n.length===0)return;let r=V(e,`channels`);for(let i of n){let n=B(e[i]);if(!n)continue;let a=V(r,i),o=Object.keys(a).length>0;Of(a,n),r[i]=a,delete e[i],t.push(o?`Merged ${i} → channels.${i}.`:`Moved ${i} → channels.${i}.`)}e.channels=r}},{id:`thread-bindings.ttlHours->idleHours`,describe:`Move legacy threadBindings.ttlHours keys to threadBindings.idleHours (session + channels.discord)`,apply:(e,t)=>{let n=B(e.session);n&&(If({owner:n,pathPrefix:`session`,changes:t}),e.session=n);let r=B(e.channels),i=B(r?.discord);if(!r||!i)return;If({owner:i,pathPrefix:`channels.discord`,changes:t});let a=B(i.accounts);if(a){for(let[e,n]of Object.entries(a)){let r=B(n);r&&(If({owner:r,pathPrefix:`channels.discord.accounts.${e}`,changes:t}),a[e]=r)}i.accounts=a}r.discord=i,e.channels=r}},{id:`channels.streaming-keys->channels.streaming`,describe:`Normalize legacy streaming keys to channels.<provider>.streaming (Telegram/Discord/Slack)`,apply:(e,t)=>{let n=B(e.channels);if(!n)return;let r=e=>{let n=n=>{let r=e.entry.streamMode!==void 0,i=e.entry.streaming;if(!r&&typeof i!=`boolean`)return!1;let a=n(e.entry);return e.entry.streaming=a,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${a}).`)),typeof i==`boolean`&&t.push(`Normalized ${e.pathPrefix}.streaming boolean → enum (${a}).`),!0},r=e.entry.streamMode!==void 0,i=e.entry.streaming,a=e.entry.nativeStreaming;if(e.provider===`telegram`){n(vf);return}if(e.provider===`discord`){n(yf);return}if(!r&&typeof i!=`boolean`)return;let o=bf(e.entry),s=xf(e.entry);e.entry.streaming=o,e.entry.nativeStreaming=s,r&&(delete e.entry.streamMode,t.push(`Moved ${e.pathPrefix}.streamMode → ${e.pathPrefix}.streaming (${o}).`)),typeof i==`boolean`?t.push(`Moved ${e.pathPrefix}.streaming (boolean) → ${e.pathPrefix}.nativeStreaming (${s}).`):typeof a!=`boolean`&&r&&t.push(`Set ${e.pathPrefix}.nativeStreaming → ${s}.`)},i=e=>{let t=B(n[e]);if(!t)return;r({provider:e,entry:t,pathPrefix:`channels.${e}`});let i=B(t.accounts);if(i)for(let[t,n]of Object.entries(i)){let i=B(n);i&&r({provider:e,entry:i,pathPrefix:`channels.${e}.accounts.${t}`})}};i(`telegram`),i(`discord`),i(`slack`)}},{id:`routing.allowFrom->channels.whatsapp.allowFrom`,describe:`Move routing.allowFrom to channels.whatsapp.allowFrom`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.allowFrom;if(r===void 0)return;let i=B(e.channels),a=i?B(i.whatsapp):null;if(!a){delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,t.push(`Removed routing.allowFrom (channels.whatsapp not configured).`);return}a.allowFrom===void 0?(a.allowFrom=r,t.push(`Moved routing.allowFrom → channels.whatsapp.allowFrom.`)):t.push(`Removed routing.allowFrom (channels.whatsapp.allowFrom already set).`),delete n.allowFrom,Object.keys(n).length===0&&delete e.routing,i.whatsapp=a,e.channels=i}},{id:`routing.groupChat.requireMention->groups.*.requireMention`,describe:`Move routing.groupChat.requireMention to channels.whatsapp/telegram/imessage groups`,apply:(e,t)=>{let n=e.routing;if(!n||typeof n!=`object`)return;let r=n.groupChat&&typeof n.groupChat==`object`?n.groupChat:null;if(!r)return;let i=r.requireMention;if(i===void 0)return;let a=V(e,`channels`),o=(e,n)=>{if(n?.requireExisting&&!E(a[e]))return;let r=a[e]&&typeof a[e]==`object`?a[e]:{},{groups:o,entry:s}=Pf(r);s.requireMention===void 0?(s.requireMention=i,o[`*`]=s,r.groups=o,a[e]=r,t.push(`Moved routing.groupChat.requireMention → channels.${e}.groups."*".requireMention.`)):t.push(`Removed routing.groupChat.requireMention (channels.${e}.groups."*" already set).`)};o(`whatsapp`,{requireExisting:!0}),o(`telegram`),o(`imessage`),delete r.requireMention,Object.keys(r).length===0&&delete n.groupChat,Object.keys(n).length===0&&delete e.routing,e.channels=a}},{id:`gateway.token->gateway.auth.token`,describe:`Move gateway.token to gateway.auth.token`,apply:(e,t)=>{let n=e.gateway;if(!n||typeof n!=`object`)return;let r=n.token;if(r===void 0)return;let i=n,a=i.auth&&typeof i.auth==`object`?i.auth:{};a.token===void 0?(a.token=r,a.mode||=`token`,t.push(`Moved gateway.token → gateway.auth.token.`)):t.push(`Removed gateway.token (gateway.auth.token already set).`),delete i.token,Object.keys(a).length>0&&(i.auth=a),e.gateway=i}},{id:`telegram.requireMention->channels.telegram.groups.*.requireMention`,describe:`Move telegram.requireMention to channels.telegram.groups.*.requireMention`,apply:(e,t)=>{let n=V(e,`channels`),r=n.telegram;if(!r||typeof r!=`object`)return;let i=r.requireMention;if(i===void 0)return;let{groups:a,entry:o}=Pf(r);o.requireMention===void 0?(o.requireMention=i,a[`*`]=o,r.groups=a,t.push(`Moved telegram.requireMention → channels.telegram.groups."*".requireMention.`)):t.push(`Removed telegram.requireMention (channels.telegram.groups."*" already set).`),delete r.requireMention,n.telegram=r,e.channels=n}}];function Rf(e){let t=kf(e.source);if(!t){e.changes.push(e.invalidMessage);return}let n=V(V(V(e.raw,`tools`),`media`),`audio`);if((Array.isArray(n.models)?n.models:[]).length===0){n.enabled=!0,n.models=[t],e.changes.push(e.movedMessage);return}e.changes.push(e.alreadySetMessage)}const zf=[{id:`agent.model-config-v2`,describe:`Migrate legacy agent.model/allowedModels/modelAliases/modelFallbacks/imageModelFallbacks to agent.models + model lists`,apply:(e,t)=>{let n=B(e.agent),r=B(B(e.agents)?.defaults),i=n??r;if(!i)return;let a=n?`agent`:`agents.defaults`,o=typeof i.model==`string`?String(i.model):void 0,s=typeof i.imageModel==`string`?String(i.imageModel):void 0,c=Array.isArray(i.allowedModels)?i.allowedModels.map(String):[],l=Array.isArray(i.modelFallbacks)?i.modelFallbacks.map(String):[],u=Array.isArray(i.imageModelFallbacks)?i.imageModelFallbacks.map(String):[],d=i.modelAliases&&typeof i.modelAliases==`object`?i.modelAliases:{};if(!(o||s||c.length>0||l.length>0||u.length>0||Object.keys(d).length>0))return;let f=i.models&&typeof i.models==`object`?i.models:{},p=e=>{if(typeof e!=`string`)return;let t=e.trim();t&&(f[t]||(f[t]={}))};p(o),p(s);for(let e of c)p(e);for(let e of l)p(e);for(let e of u)p(e);for(let e of Object.values(d))typeof e==`string`&&p(e);for(let[e,t]of Object.entries(d)){if(typeof t!=`string`)continue;let n=t.trim();if(!n)continue;let r=f[n]&&typeof f[n]==`object`?f[n]:{};`alias`in r||(r.alias=e,f[n]=r)}let m=i.model&&typeof i.model==`object`?i.model:null;m?(!m.primary&&o&&(m.primary=o),l.length>0&&(!Array.isArray(m.fallbacks)||m.fallbacks.length===0)&&(m.fallbacks=l),i.model=m):(o||l.length>0)&&(i.model={primary:o,fallbacks:l.length?l:[]});let h=i.imageModel&&typeof i.imageModel==`object`?i.imageModel:null;h?(!h.primary&&s&&(h.primary=s),u.length>0&&(!Array.isArray(h.fallbacks)||h.fallbacks.length===0)&&(h.fallbacks=u),i.imageModel=h):(s||u.length>0)&&(i.imageModel={primary:s,fallbacks:u.length?u:[]}),i.models=f,o!==void 0&&t.push(`Migrated ${a}.model string → ${a}.model.primary.`),l.length>0&&t.push(`Migrated ${a}.modelFallbacks → ${a}.model.fallbacks.`),s!==void 0&&t.push(`Migrated ${a}.imageModel string → ${a}.imageModel.primary.`),u.length>0&&t.push(`Migrated ${a}.imageModelFallbacks → ${a}.imageModel.fallbacks.`),c.length>0&&t.push(`Migrated ${a}.allowedModels → ${a}.models.`),Object.keys(d).length>0&&t.push(`Migrated ${a}.modelAliases → ${a}.models.*.alias.`),delete i.allowedModels,delete i.modelAliases,delete i.modelFallbacks,delete i.imageModelFallbacks}},{id:`routing.agents-v2`,describe:`Move routing.agents/defaultAgentId to agents.list`,apply:(e,t)=>{let n=B(e.routing);if(!n)return;let r=B(n.agents),i=V(e,`agents`),a=Af(i);if(r){for(let[e,n]of Object.entries(r)){let r=String(e??``).trim(),i=B(n);if(!r||!i)continue;let o=Mf(a,r),s={...i};if(`mentionPatterns`in s){let e=s.mentionPatterns,n=V(o,`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=e,t.push(`Moved routing.agents.${r}.mentionPatterns → agents.list (id "${r}").groupChat.mentionPatterns.`)):t.push(`Removed routing.agents.${r}.mentionPatterns (agents.list groupChat mentionPatterns already set).`),delete s.mentionPatterns}let c=B(s.groupChat);c&&(Of(V(o,`groupChat`),c),delete s.groupChat);let l=B(s.sandbox);if(l){let e=B(l.tools);e&&(Of(V(V(V(o,`tools`),`sandbox`),`tools`),e),delete l.tools,t.push(`Moved routing.agents.${r}.sandbox.tools → agents.list (id "${r}").tools.sandbox.tools.`)),s.sandbox=l}Of(o,s)}delete n.agents,t.push(`Moved routing.agents → agents.list.`)}let o=typeof n.defaultAgentId==`string`?n.defaultAgentId.trim():``;if(o){if(a.some(e=>E(e)&&e.default===!0))t.push(`Removed routing.defaultAgentId (agents.list default already set).`);else{let e=Mf(a,o);e.default=!0,t.push(`Moved routing.defaultAgentId → agents.list (id "${o}").default.`)}delete n.defaultAgentId}a.length>0&&(i.list=a),Object.keys(n).length===0&&delete e.routing}},{id:`routing.config-v2`,describe:`Move routing bindings/groupChat/queue/agentToAgent/transcribeAudio`,apply:(e,t)=>{let n=B(e.routing);if(!n)return;if(n.bindings!==void 0&&(e.bindings===void 0?(e.bindings=n.bindings,t.push(`Moved routing.bindings → bindings.`)):t.push(`Removed routing.bindings (bindings already set).`),delete n.bindings),n.agentToAgent!==void 0){let r=V(e,`tools`);r.agentToAgent===void 0?(r.agentToAgent=n.agentToAgent,t.push(`Moved routing.agentToAgent → tools.agentToAgent.`)):t.push(`Removed routing.agentToAgent (tools.agentToAgent already set).`),delete n.agentToAgent}if(n.queue!==void 0){let r=V(e,`messages`);r.queue===void 0?(r.queue=n.queue,t.push(`Moved routing.queue → messages.queue.`)):t.push(`Removed routing.queue (messages.queue already set).`),delete n.queue}let r=B(n.groupChat);if(r){let i=r.historyLimit;if(i!==void 0){let n=V(V(e,`messages`),`groupChat`);n.historyLimit===void 0?(n.historyLimit=i,t.push(`Moved routing.groupChat.historyLimit → messages.groupChat.historyLimit.`)):t.push(`Removed routing.groupChat.historyLimit (messages.groupChat.historyLimit already set).`),delete r.historyLimit}let a=r.mentionPatterns;if(a!==void 0){let n=V(V(e,`messages`),`groupChat`);n.mentionPatterns===void 0?(n.mentionPatterns=a,t.push(`Moved routing.groupChat.mentionPatterns → messages.groupChat.mentionPatterns.`)):t.push(`Removed routing.groupChat.mentionPatterns (messages.groupChat.mentionPatterns already set).`),delete r.mentionPatterns}Object.keys(r).length===0?delete n.groupChat:n.groupChat=r}n.transcribeAudio!==void 0&&(Rf({raw:e,source:n.transcribeAudio,changes:t,movedMessage:`Moved routing.transcribeAudio → tools.media.audio.models.`,alreadySetMessage:`Removed routing.transcribeAudio (tools.media.audio.models already set).`,invalidMessage:`Removed routing.transcribeAudio (invalid or empty command).`}),delete n.transcribeAudio),Object.keys(n).length===0&&delete e.routing}},{id:`audio.transcription-v2`,describe:`Move audio.transcription to tools.media.audio.models`,apply:(e,t)=>{let n=B(e.audio);n?.transcription!==void 0&&(Rf({raw:e,source:n.transcription,changes:t,movedMessage:`Moved audio.transcription → tools.media.audio.models.`,alreadySetMessage:`Removed audio.transcription (tools.media.audio.models already set).`,invalidMessage:`Removed audio.transcription (invalid or empty command).`}),delete n.transcription,Object.keys(n).length===0?delete e.audio:e.audio=n)}},{id:`media.preserveFilenames-v2`,describe:`Move top-level media.preserveFilenames to channels.msteams.preserveFilenames`,apply:(e,t)=>{let n=B(e.media);if(n?.preserveFilenames===void 0)return;let r=V(V(e,`channels`),`msteams`);r.preserveFilenames===void 0?(r.preserveFilenames=n.preserveFilenames,t.push(`Moved media.preserveFilenames → channels.msteams.preserveFilenames.`)):t.push(`Removed media.preserveFilenames (channels.msteams.preserveFilenames already set).`),delete n.preserveFilenames,Object.keys(n).length===0?delete e.media:e.media=n}}],Bf=[`e`,`vm`].join(``),Vf=[`camera.snap`,`camera.clip`,`screen.record`,`calendar.add`,`contacts.add`,`reminders.add`],Hf=[{id:`gateway.nodes.generated-deny-defaults`,describe:`Remove the redundant node denylist generated by older onboarding`,apply:(e,t)=>{let n=B(e.gateway),r=B(n?.nodes),i=r?.denyCommands;!n||!r||r.allowCommands!==void 0||r.browser!==void 0||!Array.isArray(i)||i.length!==Vf.length||!i.every((e,t)=>e===Vf[t])||(delete r.denyCommands,Object.keys(r).length===0&&delete n.nodes,t.push(`Removed the redundant gateway.nodes.denyCommands defaults generated by older onboarding.`))}},{id:`models.providers.request.allowPrivateNetwork`,describe:`Mark existing private model provider base URLs as explicitly allowed`,apply:(e,t)=>{let n=B(B(e.models)?.providers);if(n)for(let[e,r]of Object.entries(n)){let n=B(r),i=typeof n?.baseUrl==`string`?n.baseUrl:``;if(!n||!ol(i))continue;let a=B(n.request)??{};a.allowPrivateNetwork===void 0&&(a.allowPrivateNetwork=!0,n.request=a,t.push(`Added models.providers.${e}.request.allowPrivateNetwork=true for existing private model endpoint.`))}}},{id:`memorySearch->agents.defaults.memorySearch`,describe:`Move top-level memorySearch to agents.defaults.memorySearch`,apply:(e,t)=>{let n=B(e.memorySearch);if(!n)return;let r=V(e,`agents`),i=V(r,`defaults`),a=B(i.memorySearch);if(!a)i.memorySearch=n,t.push(`Moved memorySearch → agents.defaults.memorySearch.`);else{let e=structuredClone(a);Of(e,n),i.memorySearch=e,t.push(`Merged memorySearch → agents.defaults.memorySearch (filled missing fields from legacy; kept explicit agents.defaults values).`)}r.defaults=i,e.agents=r,delete e.memorySearch}},{id:`auth.anthropic-claude-cli-mode-oauth`,describe:`Switch anthropic:claude-cli auth profile mode to oauth`,apply:(e,t)=>{let n=B(B(e.auth)?.profiles);if(!n)return;let r=B(n[`anthropic:claude-cli`]);r&&r.mode===`token`&&(r.mode=`oauth`,t.push(`Updated auth.profiles["anthropic:claude-cli"].mode → "oauth".`))}},{id:`tools.bash->tools.exec`,describe:`Move tools.bash to tools.exec`,apply:(e,t)=>{let n=V(e,`tools`),r=B(n.bash);r&&(n.exec===void 0?(n.exec=r,t.push(`Moved tools.bash → tools.exec.`)):t.push(`Removed tools.bash (tools.exec already set).`),delete n.bash)}},{id:`wallet.solana-only-runtime`,describe:`Remove legacy wallet chain entries after Solana-only runtime migration`,apply:(e,t)=>{let n=B(e.wallet);if(!n)return;let r=B(n.keystore);if(r&&Array.isArray(r.chainSupport)){let e=r.chainSupport.some(e=>e!==`solana`),n=r.chainSupport.length===1&&r.chainSupport[0]===`solana`;(e||!n)&&(r.chainSupport=[`solana`],t.push(`Normalized wallet.keystore.chainSupport → ["solana"] (removed legacy non-Solana entries).`))}let i=B(n.runtime);if(i&&Array.isArray(i.chains)){let e=i.chains.some(e=>e!==`solana`),n=i.chains.length===1&&i.chains[0]===`solana`;(e||!n)&&(i.chains=[`solana`],t.push(`Normalized wallet.runtime.chains → ["solana"] (removed legacy non-Solana entries).`))}let a=B(i?.policy);a&&Bf in a&&(delete a[Bf],t.push(`Removed wallet.runtime.policy legacy non-Solana policy block.`))}},{id:`messages.tts.enabled->auto`,describe:`Move messages.tts.enabled to messages.tts.auto`,apply:(e,t)=>{let n=B(B(e.messages)?.tts);if(n){if(n.auto!==void 0){`enabled`in n&&(delete n.enabled,t.push(`Removed messages.tts.enabled (messages.tts.auto already set).`));return}typeof n.enabled==`boolean`&&(n.auto=n.enabled?`always`:`off`,delete n.enabled,t.push(`Moved messages.tts.enabled → messages.tts.auto (${String(n.auto)}).`))}}},{id:`agent.defaults-v2`,describe:`Move agent config to agents.defaults and tools`,apply:(e,t)=>{let n=B(e.agent);if(!n)return;let r=V(e,`agents`),i=B(r.defaults)??{},a=V(e,`tools`),o=B(n.tools);o&&(a.allow===void 0&&o.allow!==void 0&&(a.allow=o.allow,t.push(`Moved agent.tools.allow → tools.allow.`)),a.deny===void 0&&o.deny!==void 0&&(a.deny=o.deny,t.push(`Moved agent.tools.deny → tools.deny.`)));let s=B(n.elevated);s&&(a.elevated===void 0?(a.elevated=s,t.push(`Moved agent.elevated → tools.elevated.`)):t.push(`Removed agent.elevated (tools.elevated already set).`));let c=B(n.bash);c&&(a.exec===void 0?(a.exec=c,t.push(`Moved agent.bash → tools.exec.`)):t.push(`Removed agent.bash (tools.exec already set).`));let l=B(n.sandbox);if(l){let e=B(l.tools);e&&(Of(V(V(a,`sandbox`),`tools`),e),delete l.tools,t.push(`Moved agent.sandbox.tools → tools.sandbox.tools.`))}let u=B(n.subagents);if(u){let e=B(u.tools);e&&(Of(V(V(a,`subagents`),`tools`),e),delete u.tools,t.push(`Moved agent.subagents.tools → tools.subagents.tools.`))}let d=structuredClone(n);delete d.tools,delete d.elevated,delete d.bash,E(d.sandbox)&&delete d.sandbox.tools,E(d.subagents)&&delete d.subagents.tools,Of(i,d),r.defaults=i,e.agents=r,delete e.agent,t.push(`Moved agent → agents.defaults.`)}},{id:`identity->agents.list`,describe:`Move identity to agents.list[].identity`,apply:(e,t)=>{let n=B(e.identity);if(!n)return;let r=V(e,`agents`),i=Af(r),a=jf(e),o=Mf(i,a);o.identity===void 0?(o.identity=n,t.push(`Moved identity → agents.list (id "${a}").identity.`)):t.push(`Removed identity (agents.list identity already set).`),r.list=i,e.agents=r,delete e.identity}}];[...Lf,...zf,...Hf];function Uf(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Wf(e){return Uf(e)&&Object.prototype.hasOwnProperty.call(e,`ttlHours`)}function Gf(e){return Uf(e)?Object.values(e).some(e=>Wf(Uf(e)?e.threadBindings:void 0)):!1}const Kf=[{path:[`whatsapp`],message:`whatsapp config moved to channels.whatsapp (auto-migrated on load).`},{path:[`telegram`],message:`telegram config moved to channels.telegram (auto-migrated on load).`},{path:[`discord`],message:`discord config moved to channels.discord (auto-migrated on load).`},{path:[`slack`],message:`slack config moved to channels.slack (auto-migrated on load).`},{path:[`signal`],message:`signal config moved to channels.signal (auto-migrated on load).`},{path:[`imessage`],message:`imessage config moved to channels.imessage (auto-migrated on load).`},{path:[`msteams`],message:`msteams config moved to channels.msteams (auto-migrated on load).`},{path:[`session`,`threadBindings`],message:`session.threadBindings.ttlHours was renamed to session.threadBindings.idleHours (auto-migrated on load).`,match:e=>Wf(e)},{path:[`channels`,`discord`,`threadBindings`],message:`channels.discord.threadBindings.ttlHours was renamed to channels.discord.threadBindings.idleHours (auto-migrated on load).`,match:e=>Wf(e)},{path:[`channels`,`discord`,`accounts`],message:`channels.discord.accounts.<id>.threadBindings.ttlHours was renamed to channels.discord.accounts.<id>.threadBindings.idleHours (auto-migrated on load).`,match:e=>Gf(e)},{path:[`routing`,`allowFrom`],message:`routing.allowFrom was removed; use channels.whatsapp.allowFrom instead (auto-migrated on load).`},{path:[`routing`,`bindings`],message:`routing.bindings was moved; use top-level bindings instead (auto-migrated on load).`},{path:[`routing`,`agents`],message:`routing.agents was moved; use agents.list instead (auto-migrated on load).`},{path:[`routing`,`defaultAgentId`],message:`routing.defaultAgentId was moved; use agents.list[].default instead (auto-migrated on load).`},{path:[`routing`,`agentToAgent`],message:`routing.agentToAgent was moved; use tools.agentToAgent instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`requireMention`],message:`routing.groupChat.requireMention was removed; use channels.whatsapp/telegram/imessage groups defaults (e.g. channels.whatsapp.groups."*".requireMention) instead (auto-migrated on load).`},{path:[`routing`,`groupChat`,`mentionPatterns`],message:`routing.groupChat.mentionPatterns was moved; use agents.list[].groupChat.mentionPatterns or messages.groupChat.mentionPatterns instead (auto-migrated on load).`},{path:[`routing`,`queue`],message:`routing.queue was moved; use messages.queue instead (auto-migrated on load).`},{path:[`routing`,`transcribeAudio`],message:`routing.transcribeAudio was moved; use tools.media.audio.models instead (auto-migrated on load).`},{path:[`telegram`,`requireMention`],message:`telegram.requireMention was removed; use channels.telegram.groups."*".requireMention instead (auto-migrated on load).`},{path:[`identity`],message:`identity was moved; use agents.list[].identity instead (auto-migrated on load).`},{path:[`agent`],message:`agent.* was moved; use agents.defaults (and tools.* for tool/elevated/exec settings) instead (auto-migrated on load).`},{path:[`memorySearch`],message:`top-level memorySearch was moved; use agents.defaults.memorySearch instead (auto-migrated on load).`},{path:[`tools`,`bash`],message:`tools.bash was removed; use tools.exec instead (auto-migrated on load).`},{path:[`wallet`,`runtime`,`policy`,[`e`,`vm`].join(``)],message:`wallet.runtime.policy has a legacy non-Solana policy block; Fased wallet runtime is Solana-only (auto-migrated on load).`},{path:[`wallet`,`keystore`,`chainSupport`],message:`wallet.keystore.chainSupport contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`wallet`,`runtime`,`chains`],message:`wallet.runtime.chains contains legacy non-Solana entries; Fased wallet runtime is Solana-only (auto-migrated on load).`,match:e=>Array.isArray(e)&&e.some(e=>e!==`solana`)},{path:[`agent`,`model`],message:`agent.model string was replaced by agents.defaults.model.primary/fallbacks and agents.defaults.models (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`imageModel`],message:`agent.imageModel string was replaced by agents.defaults.imageModel.primary/fallbacks (auto-migrated on load).`,match:e=>typeof e==`string`},{path:[`agent`,`allowedModels`],message:`agent.allowedModels was replaced by agents.defaults.models (auto-migrated on load).`},{path:[`agent`,`modelAliases`],message:`agent.modelAliases was replaced by agents.defaults.models.*.alias (auto-migrated on load).`},{path:[`agent`,`modelFallbacks`],message:`agent.modelFallbacks was replaced by agents.defaults.model.fallbacks (auto-migrated on load).`},{path:[`agent`,`imageModelFallbacks`],message:`agent.imageModelFallbacks was replaced by agents.defaults.imageModel.fallbacks (auto-migrated on load).`},{path:[`messages`,`tts`,`enabled`],message:`messages.tts.enabled was replaced by messages.tts.auto (auto-migrated on load).`},{path:[`gateway`,`token`],message:`gateway.token is ignored; use gateway.auth.token instead (auto-migrated on load).`}];function qf(e){if(!e||typeof e!=`object`)return[];let t=e,n=[];for(let e of Kf){let r=t;for(let t of e.path){if(!r||typeof r!=`object`){r=void 0;break}r=r[t]}r!==void 0&&(!e.match||e.match(r,t))&&n.push({path:e.path.join(`.`),message:e.message})}return n}function Jf(e){return T(e)?typeof e.id==`string`&&e.id.length>0:!1}function Yf(e,t,n){if(!e.every(Jf))return;let r=[...e],i=new Map;for(let[e,t]of r.entries()){if(!Jf(t))return;i.set(t.id,e)}for(let e of t){if(!Jf(e)){r.push(structuredClone(e));continue}let t=i.get(e.id);if(t===void 0){r.push(structuredClone(e)),i.set(e.id,r.length-1);continue}r[t]=Xf(r[t],e,n)}return r}function Xf(e,t,n={}){if(!T(t))return t;let r=T(e)?{...e}:{};for(let[e,i]of Object.entries(t))if(!Gi(e)){if(i===null){delete r[e];continue}if(n.mergeObjectArraysById&&Array.isArray(r[e])&&Array.isArray(i)){let t=Yf(r[e],i,n);if(t){r[e]=t;continue}}if(T(i)){let t=r[e];r[e]=Xf(T(t)?t:{},i,n);continue}r[e]=i}return r}const Zf=new Set,Qf=e=>!e||e.length===0?Zf:new Set(e);function $f(e,t){let n=new Set;for(let t of e)t.startsWith(`--`)&&n.add(t);for(let e of t)e.startsWith(`--`)&&n.add(e);return Array.from(n)}function ep(e){let t=new Map;for(let n of e)if(!(!n.startsWith(`--`)||n.length<=2))for(let e=3;e<=n.length;e+=1){let r=n.slice(0,e),i=t.get(r);if(i===void 0){t.set(r,n);continue}i!==n&&t.set(r,null)}return t}function tp(e){let t=Qf(e.allowedValueFlags),n=Qf(e.deniedFlags),r=$f(t,n);return{minPositional:e.minPositional,maxPositional:e.maxPositional,allowedValueFlags:t,deniedFlags:n,knownLongFlags:r,knownLongFlagsSet:new Set(r),longFlagPrefixMap:ep(r)}}function np(e){return Object.fromEntries(Object.entries(e).map(([e,t])=>[e,tp(t)]))}np({jq:{maxPositional:1,allowedValueFlags:[`--arg`,`--argjson`,`--argstr`],deniedFlags:[`--argfile`,`--rawfile`,`--slurpfile`,`--from-file`,`--library-path`,`-L`,`-f`]},grep:{maxPositional:0,allowedValueFlags:[`--regexp`,`--max-count`,`--after-context`,`--before-context`,`--context`,`--devices`,`--binary-files`,`--exclude`,`--include`,`--label`,`-e`,`-m`,`-A`,`-B`,`-C`,`-D`],deniedFlags:[`--file`,`--exclude-from`,`--dereference-recursive`,`--directories`,`--recursive`,`-f`,`-d`,`-r`,`-R`]},cut:{maxPositional:0,allowedValueFlags:[`--bytes`,`--characters`,`--fields`,`--delimiter`,`--output-delimiter`,`-b`,`-c`,`-f`,`-d`]},sort:{maxPositional:0,allowedValueFlags:[`--key`,`--field-separator`,`--buffer-size`,`--parallel`,`--batch-size`,`-k`,`-t`,`-S`],deniedFlags:[`--compress-program`,`--files0-from`,`--output`,`--random-source`,`--temporary-directory`,`-T`,`-o`]},uniq:{maxPositional:0,allowedValueFlags:[`--skip-fields`,`--skip-chars`,`--check-chars`,`--group`,`-f`,`-s`,`-w`]},head:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`-n`,`-c`]},tail:{maxPositional:0,allowedValueFlags:[`--lines`,`--bytes`,`--sleep-interval`,`--max-unchanged-stats`,`--pid`,`-n`,`-c`]},tr:{minPositional:1,maxPositional:2},wc:{maxPositional:0,deniedFlags:[`--files0-from`]}});function rp(e){let t=e.trim().toLowerCase();return t.length>0?t:null}function ip(e){if(typeof e!=`number`||!Number.isFinite(e))return;let t=Math.trunc(e);return t>=0?t:void 0}function ap(e){if(!Array.isArray(e)||e.length===0)return;let t=Array.from(new Set(e.map(e=>e.trim()).filter(e=>e.length>0))).toSorted((e,t)=>e.localeCompare(t));return t.length>0?t:void 0}function op(e){let t=ip(e.minPositional),n=ip(e.maxPositional);return{minPositional:t,maxPositional:t!==void 0&&n!==void 0&&n<t?t:n,allowedValueFlags:ap(e.allowedValueFlags),deniedFlags:ap(e.deniedFlags)}}function sp(e){let t={};if(!e)return t;for(let[n,r]of Object.entries(e)){let e=rp(n);e&&(t[e]=op(r))}return t}const cp=[`ash`,`bash`,`dash`,`fish`,`ksh`,`sh`,`zsh`],lp=[`cmd`],up=[`powershell`,`pwsh`],dp=[`chrt`,`doas`,`env`,`ionice`,`nice`,`nohup`,`setsid`,`stdbuf`,`sudo`,`taskset`,`timeout`];function fp(e){let t=new Set;for(let n of e)t.add(n),t.add(`${n}.exe`);return Array.from(t)}new Set(fp(lp)),new Set(fp(up)),new Set(fp(dp)),new Set([...cp,...lp,...up]);function pp(e){if(!Array.isArray(e))return[];let t=e.map(e=>e.trim()).filter(e=>e.length>0);return Array.from(new Set(t))}function mp(e){let t=e=>{if(!e||typeof e!=`object`||Array.isArray(e))return;let t=e,n=sp(t.safeBinProfiles);t.safeBinProfiles=Object.keys(n).length>0?n:void 0;let r=pp(t.safeBinTrustedDirs);t.safeBinTrustedDirs=r.length>0?r:void 0};t(e.tools?.exec);let n=Array.isArray(e.agents?.list)?e.agents.list:[];for(let e of n)t(e?.tools?.exec)}const hp=/^~(?=$|[\\/])/,gp=/(dir|path|paths|file|root|workspace)$/i,_p=new Set([`paths`,`pathPrepend`]);function vp(e,t){return!hp.test(t.trim())||!e?t:gp.test(e)||_p.has(e)?D(t):t}function yp(e,t){if(typeof t==`string`)return vp(e,t);if(Array.isArray(t)){let n=!!(e&&_p.has(e));return t.map(t=>typeof t==`string`?n?vp(e,t):t:Array.isArray(t)||T(t)?yp(void 0,t):t)}if(!T(t))return t;for(let[e,n]of Object.entries(t)){let r=yp(e,n);r!==n&&(t[e]=r)}return t}function bp(e){return!e||typeof e!=`object`||yp(void 0,e),e}function xp(e){return typeof e==`string`&&e.trim()||null}function Sp(e,t){return e?.some(e=>xp(e)===t)===!0}function Cp(e){if(e.plugins?.enabled===!1)return null;let t=xp(e.plugins?.slots?.memory)??`memory-core`;return t.toLowerCase()===`none`||e.plugins?.entries?.[t]?.enabled===!1||Sp(e.plugins?.deny,t)?null:t}function wp(e){let t=e.plugins?.allow,n=Array.isArray(t),r=new Set((t??[]).map(xp).filter(e=>e!==null)),i=new Set;for(let[t,n]of Object.entries(e.plugins?.entries??{})){if(n?.enabled===!1)continue;let e=xp(t);e&&i.add(e)}for(let t of Object.keys(e.plugins?.installs??{})){let e=xp(t);e&&i.add(e)}let a=Cp(e);a&&(n||i.size>0)&&i.add(a);let o=new Set;for(let e of i)r.has(e)||(r.add(e),o.add(e));if(o.size===0)return{config:e,repairedPluginIds:[]};let s=[...o].toSorted((e,t)=>e.localeCompare(t)),c=[...r].toSorted((e,t)=>e.localeCompare(t));return{config:{...e,plugins:{...e.plugins,allow:c}},repairedPluginIds:s}}let Tp={};function Ep(e,t){if(!T(e)||!T(t))return t;let n={...e};for(let[r,i]of Object.entries(t))i===void 0||Gi(r)||(n[r]=Ep(e[r],i));return n}function Dp(e){return!Tp||Object.keys(Tp).length===0?e:Ep(e,Tp)}const Op=new y({allErrors:!0,strict:!1,removeAdditional:!1}),kp=new Map;function Ap(e){return!e||e.length===0?[`invalid config`]:e.map(e=>`${e.instancePath?.replace(/^\//,``).replace(/\//g,`.`)||`<root>`}: ${e.message??`invalid`}`)}function jp(e){let t=kp.get(e.cacheKey);return(!t||t.schema!==e.schema)&&(t={validate:Op.compile(e.schema),schema:e.schema},kp.set(e.cacheKey,t)),t.validate(e.value)?{ok:!0}:{ok:!1,errors:Ap(t.validate.errors)}}const Mp=/^data:/i,Np=/^https?:\/\//i,Pp=/^[a-z][a-z0-9+.-]*:/i,Fp=/^[a-zA-Z]:[\\/]/;function Ip(e){return Mp.test(e)}function Lp(e){return Np.test(e)}function Rp(e){return Pp.test(e)}function zp(e){return Fp.test(e)}function Bp(e,t){let n=i.relative(e,t);return n===``?!0:!n.startsWith(`..`)&&!i.isAbsolute(n)}const Vp={b:1,kb:1024,k:1024,mb:1024**2,m:1024**2,gb:1024**3,g:1024**3,tb:1024**4,t:1024**4};function Hp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid byte size (empty)`);let r=/^(\d+(?:\.\d+)?)([a-z]+)?$/.exec(n);if(!r)throw Error(`invalid byte size: ${e}`);let i=Number(r[1]);if(!Number.isFinite(i)||i<0)throw Error(`invalid byte size: ${e}`);let a=Vp[(r[2]??t?.defaultUnit??`b`).toLowerCase()];if(!a)throw Error(`invalid byte size unit: ${e}`);let o=Math.round(i*a);if(!Number.isFinite(o))throw Error(`invalid byte size: ${e}`);return o}const Up={ms:1,s:1e3,m:6e4,h:36e5,d:864e5};function Wp(e,t){let n=String(e??``).trim().toLowerCase();if(!n)throw Error(`invalid duration (empty)`);let r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d)?$/.exec(n);if(r){let n=Number(r[1]);if(!Number.isFinite(n)||n<0)throw Error(`invalid duration: ${e}`);let i=r[2]??t?.defaultUnit??`ms`,a=Math.round(n*Up[i]);if(!Number.isFinite(a))throw Error(`invalid duration: ${e}`);return a}let i=0,a=0;for(let t of n.matchAll(/(\d+(?:\.\d+)?)(ms|s|m|h|d)/g)){let[n,r,o]=t,s=t.index??-1;if(!n||!r||!o||s<0||s!==a)throw Error(`invalid duration: ${e}`);let c=Number(r);if(!Number.isFinite(c)||c<0)throw Error(`invalid duration: ${e}`);let l=Up[o];if(!l)throw Error(`invalid duration: ${e}`);i+=c*l,a+=n.length}if(a!==n.length||a===0)throw Error(`invalid duration: ${e}`);let o=Math.round(i);if(!Number.isFinite(o))throw Error(`invalid duration: ${e}`);return o}function Gp(e){return e?.trim().toLowerCase()||void 0}function Kp(e){let t=Gp(e.network);return t?t===`host`?`host`:t.startsWith(`container:`)&&e.allowContainerNamespaceJoin!==!0?`container_namespace_join`:null:null}const qp=b.union([b.string(),b.object({primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional()}).strict()]),Jp=b.object({cheapCheck:b.string().optional(),strong:b.string().optional(),escalation:b.string().optional(),coding:b.string().optional(),summarizer:b.string().optional()}).strict(),Yp=b.object({profileId:b.string().optional(),primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional(),taskModels:Jp.optional()}).strict(),Xp=[`openai-completions`,`openai-responses`,`openai-codex-responses`,`anthropic-messages`,`google-generative-ai`,`github-copilot`,`ollama`],Zp=b.union([b.literal(`allow`),b.literal(`deny`)]),Qp=b.union([b.literal(`direct`),b.literal(`group`),b.literal(`channel`),b.literal(`dm`)]).optional();function $p(){return b.object({default:Zp.optional(),rules:b.array(b.object({action:Zp,match:b.object({channel:b.string().optional(),chatType:Qp,keyPrefix:b.string().optional(),rawKeyPrefix:b.string().optional()}).strict().optional()}).strict()).optional()}).strict().optional()}const H=b.registry(),em=/^[A-Z][A-Z0-9_]{0,127}$/,tm=/^[a-z][a-z0-9_-]{0,63}$/,nm=/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/,rm=/^[A-Za-z]:[\\/]/,im=/^\\\\[^\\]+\\[^\\]+/;function am(e){return i.isAbsolute(e)||rm.test(e)||im.test(e)}const om=b.object({source:b.literal(`env`),provider:b.string().regex(tm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().regex(em,`Env secret reference id must match /^[A-Z][A-Z0-9_]{0,127}$/ (example: "OPENAI_API_KEY").`)}).strict(),sm=b.object({source:b.literal(`file`),provider:b.string().regex(tm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().refine(du,`File secret reference id must be an absolute JSON pointer (example: "/providers/openai/apiKey"), or "value" for singleValue mode.`)}).strict(),cm=b.object({source:b.literal(`exec`),provider:b.string().regex(tm,`Secret reference provider must match /^[a-z][a-z0-9_-]{0,63}$/ (example: "default").`),id:b.string().regex(nm,`Exec secret reference id must match /^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$/ (example: "vault/openai/api-key").`)}).strict(),lm=b.discriminatedUnion(`source`,[om,sm,cm]),U=b.union([b.string(),lm]),um=b.object({source:b.literal(`env`),allowlist:b.array(b.string().regex(em)).max(256).optional()}).strict(),dm=b.object({source:b.literal(`file`),path:b.string().min(1),mode:b.union([b.literal(`singleValue`),b.literal(`json`)]).optional(),timeoutMs:b.number().int().positive().max(12e4).optional(),maxBytes:b.number().int().positive().max(20*1024*1024).optional()}).strict(),fm=b.object({source:b.literal(`exec`),command:b.string().min(1).refine(e=>Df(e),`secrets.providers.*.command is unsafe.`).refine(e=>am(e),`secrets.providers.*.command must be an absolute path.`),args:b.array(b.string().max(1024)).max(128).optional(),timeoutMs:b.number().int().positive().max(12e4).optional(),noOutputTimeoutMs:b.number().int().positive().max(12e4).optional(),maxOutputBytes:b.number().int().positive().max(20*1024*1024).optional(),jsonOnly:b.boolean().optional(),env:b.record(b.string(),b.string()).optional(),passEnv:b.array(b.string().regex(em)).max(128).optional(),trustedDirs:b.array(b.string().min(1).refine(e=>am(e),`trustedDirs entries must be absolute paths.`)).max(64).optional(),allowInsecurePath:b.boolean().optional(),allowSymlinkCommand:b.boolean().optional()}).strict(),pm=b.discriminatedUnion(`source`,[um,dm,fm]),mm=b.object({providers:b.object({}).catchall(pm).optional(),defaults:b.object({env:b.string().regex(tm).optional(),file:b.string().regex(tm).optional(),exec:b.string().regex(tm).optional()}).strict().optional(),resolution:b.object({maxProviderConcurrency:b.number().int().positive().max(16).optional(),maxRefsPerProvider:b.number().int().positive().max(4096).optional(),maxBatchBytes:b.number().int().positive().max(5*1024*1024).optional()}).strict().optional()}).strict().optional(),hm=b.enum(Xp),gm=b.object({supportsStore:b.boolean().optional(),supportsDeveloperRole:b.boolean().optional(),supportsReasoningEffort:b.boolean().optional(),supportsUsageInStreaming:b.boolean().optional(),supportsStrictMode:b.boolean().optional(),maxTokensField:b.union([b.literal(`max_completion_tokens`),b.literal(`max_tokens`)]).optional(),thinkingFormat:b.union([b.literal(`openai`),b.literal(`zai`),b.literal(`qwen`)]).optional(),requiresToolResultName:b.boolean().optional(),requiresAssistantAfterToolResult:b.boolean().optional(),requiresThinkingAsText:b.boolean().optional(),requiresMistralToolIds:b.boolean().optional()}).strict().optional(),_m=b.object({tools:b.boolean().optional(),json:b.boolean().optional(),audio:b.boolean().optional(),video:b.boolean().optional(),speech:b.boolean().optional(),fixedReasoning:b.boolean().optional(),thinkingLevels:b.array(b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)])).optional(),defaultThinkingLevel:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),thinkingMode:b.union([b.literal(`openai-reasoning-effort`),b.literal(`anthropic-thinking-budget`),b.literal(`anthropic-adaptive`),b.literal(`google-thinking-budget`),b.literal(`xai-reasoning-effort`),b.literal(`xai-multi-agent-effort`),b.literal(`mistral-reasoning-effort`),b.literal(`volcengine-reasoning-effort`),b.literal(`byteplus-thinking-type`),b.literal(`zai-binary`),b.literal(`qwen-thinking`),b.literal(`moonshot-thinking`),b.literal(`generic-reasoning`)]).optional(),reasoningBudgetSupported:b.boolean().optional()}).strict().optional(),vm=b.object({id:b.string().min(1),name:b.string().min(1),api:hm.optional(),reasoning:b.boolean().optional(),input:b.array(b.union([b.literal(`text`),b.literal(`image`)])).optional(),cost:b.object({input:b.number().optional(),output:b.number().optional(),cacheRead:b.number().optional(),cacheWrite:b.number().optional()}).strict().optional(),contextWindow:b.number().positive().optional(),maxTokens:b.number().positive().optional(),headers:b.record(b.string(),b.string()).optional(),compat:gm,capabilities:_m}).strict(),ym=b.object({baseUrl:b.string().min(1),apiKey:U.optional().register(H),auth:b.union([b.literal(`api-key`),b.literal(`oauth`),b.literal(`token`)]).optional(),api:hm.optional(),headers:b.record(b.string(),b.string()).optional(),authHeader:b.boolean().optional(),request:b.object({allowPrivateNetwork:b.boolean().optional()}).strict().optional(),models:b.array(vm)}).strict(),bm=b.object({mode:b.union([b.literal(`merge`),b.literal(`replace`)]).optional(),providers:b.record(b.string(),ym).optional()}).strict().optional(),xm=b.object({mentionPatterns:b.array(b.string()).optional(),historyLimit:b.number().int().positive().optional()}).strict().optional(),W=b.object({historyLimit:b.number().int().min(0).optional()}).strict(),Sm=b.object({name:b.string().optional(),theme:b.string().optional(),emoji:b.string().optional(),avatar:b.string().optional()}).strict().optional(),G=b.union([b.literal(`steer`),b.literal(`followup`),b.literal(`collect`),b.literal(`steer-backlog`),b.literal(`steer+backlog`),b.literal(`queue`),b.literal(`interrupt`)]),Cm=b.union([b.literal(`old`),b.literal(`new`),b.literal(`summarize`)]),wm=b.union([b.literal(`off`),b.literal(`first`),b.literal(`all`)]),Tm=b.union([b.literal(`never`),b.literal(`instant`),b.literal(`thinking`),b.literal(`message`)]),K=b.enum([`open`,`disabled`,`allowlist`]),q=b.enum([`pairing`,`allowlist`,`open`,`disabled`]),J=b.object({minChars:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),idleMs:b.number().int().nonnegative().optional()}).strict();b.number().int().min(0).optional(),b.number().int().min(0).optional(),b.record(b.string(),W.optional()).optional(),b.number().int().positive().optional(),b.enum([`length`,`newline`]).optional(),b.boolean().optional(),J.optional(),b.string().optional(),b.number().positive().optional();const Em=b.object({minChars:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),breakPreference:b.union([b.literal(`paragraph`),b.literal(`newline`),b.literal(`sentence`)]).optional()}).strict(),Dm=b.enum([`off`,`bullets`,`code`]),Om=b.object({tables:Dm.optional()}).strict().optional(),km=b.enum([`elevenlabs`,`openai`,`edge`]),Am=b.enum([`final`,`all`]),jm=b.enum([`off`,`always`,`inbound`,`tagged`]),Mm=b.object({auto:jm.optional(),enabled:b.boolean().optional(),mode:Am.optional(),provider:km.optional(),summaryModel:b.string().optional(),modelOverrides:b.object({enabled:b.boolean().optional(),allowText:b.boolean().optional(),allowProvider:b.boolean().optional(),allowVoice:b.boolean().optional(),allowModelId:b.boolean().optional(),allowVoiceSettings:b.boolean().optional(),allowNormalization:b.boolean().optional(),allowSeed:b.boolean().optional()}).strict().optional(),elevenlabs:b.object({apiKey:b.string().optional().register(H),baseUrl:b.string().optional(),voiceId:b.string().optional(),modelId:b.string().optional(),seed:b.number().int().min(0).max(4294967295).optional(),applyTextNormalization:b.enum([`auto`,`on`,`off`]).optional(),languageCode:b.string().optional(),voiceSettings:b.object({stability:b.number().min(0).max(1).optional(),similarityBoost:b.number().min(0).max(1).optional(),style:b.number().min(0).max(1).optional(),useSpeakerBoost:b.boolean().optional(),speed:b.number().min(.5).max(2).optional()}).strict().optional()}).strict().optional(),openai:b.object({apiKey:b.string().optional().register(H),model:b.string().optional(),voice:b.string().optional()}).strict().optional(),edge:b.object({enabled:b.boolean().optional(),voice:b.string().optional(),lang:b.string().optional(),outputFormat:b.string().optional(),pitch:b.string().optional(),rate:b.string().optional(),volume:b.string().optional(),saveSubtitles:b.boolean().optional(),proxy:b.string().optional(),timeoutMs:b.number().int().min(1e3).max(12e4).optional()}).strict().optional(),prefsPath:b.string().optional(),maxTextLength:b.number().int().min(1).optional(),timeoutMs:b.number().int().min(1e3).max(12e4).optional()}).strict().optional(),Nm=b.object({mode:b.union([b.literal(`off`),b.literal(`natural`),b.literal(`custom`)]).optional(),minMs:b.number().int().nonnegative().optional(),maxMs:b.number().int().nonnegative().optional()}).strict(),Pm=b.object({noOutputTimeoutMs:b.number().int().min(1e3).optional(),noOutputTimeoutRatio:b.number().min(.05).max(.95).optional(),minMs:b.number().int().min(1e3).optional(),maxMs:b.number().int().min(1e3).optional()}).strict().optional(),Fm=b.object({command:b.string(),args:b.array(b.string()).optional(),output:b.union([b.literal(`json`),b.literal(`text`),b.literal(`jsonl`)]).optional(),resumeOutput:b.union([b.literal(`json`),b.literal(`text`),b.literal(`jsonl`)]).optional(),input:b.union([b.literal(`arg`),b.literal(`stdin`)]).optional(),maxPromptArgChars:b.number().int().positive().optional(),env:b.record(b.string(),b.string()).optional(),clearEnv:b.array(b.string()).optional(),modelArg:b.string().optional(),modelAliases:b.record(b.string(),b.string()).optional(),sessionArg:b.string().optional(),sessionArgs:b.array(b.string()).optional(),resumeArgs:b.array(b.string()).optional(),sessionMode:b.union([b.literal(`always`),b.literal(`existing`),b.literal(`none`)]).optional(),sessionIdFields:b.array(b.string()).optional(),systemPromptArg:b.string().optional(),systemPromptMode:b.union([b.literal(`append`),b.literal(`replace`)]).optional(),systemPromptWhen:b.union([b.literal(`first`),b.literal(`always`),b.literal(`never`)]).optional(),imageArg:b.string().optional(),imageMode:b.union([b.literal(`repeat`),b.literal(`list`)]).optional(),serialize:b.boolean().optional(),reliability:b.object({watchdog:b.object({fresh:Pm,resume:Pm}).strict().optional()}).strict().optional()}).strict(),Im=e=>(e??[]).map(e=>String(e).trim()).filter(Boolean),Y=e=>{e.policy===`open`&&(Im(e.allowFrom).includes(`*`)||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path,message:e.message}))},X=e=>{e.policy===`allowlist`&&(Im(e.allowFrom).length>0||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path,message:e.message}))},Lm=b.enum([`thread`,`top-level`]),Rm=b.object({attempts:b.number().int().min(1).optional(),minDelayMs:b.number().int().min(0).optional(),maxDelayMs:b.number().int().min(0).optional(),jitter:b.number().min(0).max(1).optional()}).strict().optional(),zm=b.object({whatsapp:G.optional(),telegram:G.optional(),discord:G.optional(),irc:G.optional(),slack:G.optional(),mattermost:G.optional(),signal:G.optional(),imessage:G.optional(),msteams:G.optional(),webchat:G.optional()}).strict().optional(),Bm=b.record(b.string(),b.number().int().nonnegative()).optional(),Vm=b.object({mode:G.optional(),byChannel:zm,debounceMs:b.number().int().nonnegative().optional(),debounceMsByChannel:Bm,cap:b.number().int().positive().optional(),drop:Cm.optional()}).strict().optional(),Hm=b.object({debounceMs:b.number().int().nonnegative().optional(),byChannel:Bm}).strict().optional(),Um=b.object({command:b.array(b.string()).superRefine((e,t)=>{let n=e[0];Df(n)||t.addIssue({code:b.ZodIssueCode.custom,path:[0],message:`expected safe executable name or path`})}),timeoutSeconds:b.number().int().positive().optional()}).strict().optional(),Wm=b.string().regex(/^#?[0-9a-fA-F]{6}$/,`expected hex color (RRGGBB)`),Gm=b.string().refine(Df,`expected safe executable name or path`),Km=$p(),qm=b.array(b.union([b.literal(`image`),b.literal(`audio`),b.literal(`video`)])).optional(),Jm=b.object({mode:b.union([b.literal(`first`),b.literal(`all`)]).optional(),maxAttachments:b.number().int().positive().optional(),prefer:b.union([b.literal(`first`),b.literal(`last`),b.literal(`path`),b.literal(`url`)]).optional()}).strict().optional(),Ym=b.object({detectLanguage:b.boolean().optional(),punctuate:b.boolean().optional(),smartFormat:b.boolean().optional()}).strict().optional(),Xm=b.union([b.string(),b.number(),b.boolean()]),Zm=b.record(b.string(),b.record(b.string(),Xm)).optional(),Qm={prompt:b.string().optional(),timeoutSeconds:b.number().int().positive().optional(),language:b.string().optional(),providerOptions:Zm,deepgram:Ym,baseUrl:b.string().optional(),headers:b.record(b.string(),b.string()).optional()},$m=b.object({provider:b.string().optional(),model:b.string().optional(),capabilities:qm,type:b.union([b.literal(`provider`),b.literal(`cli`)]).optional(),command:b.string().optional(),args:b.array(b.string()).optional(),maxChars:b.number().int().positive().optional(),maxBytes:b.number().int().positive().optional(),...Qm,profile:b.string().optional(),preferredProfile:b.string().optional()}).strict().optional(),eh=b.object({enabled:b.boolean().optional(),scope:Km,maxBytes:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),...Qm,attachments:Jm,models:b.array($m).optional()}).strict().optional(),th=b.object({models:b.array($m).optional(),concurrency:b.number().int().positive().optional(),image:eh.optional(),audio:eh.optional(),video:eh.optional()}).strict().optional(),nh=b.object({type:b.literal(`cli`).optional(),command:b.string().min(1),args:b.array(b.string()).optional(),timeoutSeconds:b.number().int().positive().optional()}).strict(),rh=b.object({enabled:b.boolean().optional(),scope:Km,maxLinks:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),models:b.array(nh).optional()}).strict().optional(),ih=b.union([b.boolean(),b.literal(`auto`)]),ah=b.object({native:ih.optional(),nativeSkills:ih.optional()}).strict().optional(),oh=b.object({every:b.string().optional(),activeHours:b.object({start:b.string().optional(),end:b.string().optional(),timezone:b.string().optional()}).strict().optional(),model:b.string().optional(),session:b.string().optional(),includeReasoning:b.boolean().optional(),target:b.string().optional(),directPolicy:b.union([b.literal(`allow`),b.literal(`block`)]).optional(),to:b.string().optional(),accountId:b.string().optional(),prompt:b.string().optional(),ackMaxChars:b.number().int().nonnegative().optional(),suppressToolErrorWarnings:b.boolean().optional()}).strict().superRefine((e,t)=>{if(!e.every)return;try{Wp(e.every,{defaultUnit:`m`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`every`],message:`invalid duration (use ms, s, m, h)`})}let n=e.activeHours;if(!n)return;let r=/^([01]\d|2[0-3]|24):([0-5]\d)$/,i=(e,n,i)=>{if(!e)return;if(!r.test(e)){t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (use "HH:MM" 24h format)`});return}let[a,o]=e.split(`:`),s=Number(a);if(s===24&&Number(o)!==0){t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (24:00 is the only allowed 24:xx value)`});return}s===24&&!n.allow24&&t.addIssue({code:b.ZodIssueCode.custom,path:[`activeHours`,i],message:`invalid time (start cannot be 24:00)`})};i(n.start,{allow24:!1},`start`),i(n.end,{allow24:!0},`end`)}).optional(),sh=b.object({image:b.string().optional(),containerPrefix:b.string().optional(),workdir:b.string().optional(),readOnlyRoot:b.boolean().optional(),tmpfs:b.array(b.string()).optional(),network:b.string().optional(),user:b.string().optional(),capDrop:b.array(b.string()).optional(),env:b.record(b.string(),b.string()).optional(),setupCommand:b.string().optional(),pidsLimit:b.number().int().positive().optional(),memory:b.union([b.string(),b.number()]).optional(),memorySwap:b.union([b.string(),b.number()]).optional(),cpus:b.number().positive().optional(),ulimits:b.record(b.string(),b.union([b.string(),b.number(),b.object({soft:b.number().int().nonnegative().optional(),hard:b.number().int().nonnegative().optional()}).strict()])).optional(),seccompProfile:b.string().optional(),apparmorProfile:b.string().optional(),dns:b.array(b.string()).optional(),extraHosts:b.array(b.string()).optional(),binds:b.array(b.string()).optional(),dangerouslyAllowReservedContainerTargets:b.boolean().optional(),dangerouslyAllowExternalBindSources:b.boolean().optional(),dangerouslyAllowContainerNamespaceJoin:b.boolean().optional()}).strict().superRefine((e,t)=>{if(e.binds)for(let n=0;n<e.binds.length;n+=1){let r=e.binds[n]?.trim()??``;if(!r){t.addIssue({code:b.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount entry must be a non-empty string.`});continue}let i=r.indexOf(`:`),a=(i<=0?r:r.slice(0,i)).trim();a.startsWith(`/`)||t.addIssue({code:b.ZodIssueCode.custom,path:[`binds`,n],message:`Sandbox security: bind mount "${r}" uses a non-absolute source path "${a}". Only absolute POSIX paths are supported for sandbox binds.`})}let n=Kp({network:e.network,allowContainerNamespaceJoin:e.dangerouslyAllowContainerNamespaceJoin===!0});n===`host`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "host" is blocked. Use "bridge" or "none" instead.`}),n===`container_namespace_join`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: network mode "container:*" is blocked by default. Use a custom bridge network, or set dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`}),e.seccompProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`seccompProfile`],message:`Sandbox security: seccomp profile "unconfined" is blocked. Use a custom seccomp profile file or omit this setting.`}),e.apparmorProfile?.trim().toLowerCase()===`unconfined`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`apparmorProfile`],message:`Sandbox security: apparmor profile "unconfined" is blocked. Use a named AppArmor profile or omit this setting.`})}).optional(),ch=b.object({enabled:b.boolean().optional(),image:b.string().optional(),containerPrefix:b.string().optional(),network:b.string().optional(),cdpPort:b.number().int().positive().optional(),cdpSourceRange:b.string().optional(),vncPort:b.number().int().positive().optional(),noVncPort:b.number().int().positive().optional(),headless:b.boolean().optional(),enableNoVnc:b.boolean().optional(),allowHostControl:b.boolean().optional(),autoStart:b.boolean().optional(),autoStartTimeoutMs:b.number().int().positive().optional(),binds:b.array(b.string()).optional()}).superRefine((e,t)=>{e.network?.trim().toLowerCase()===`host`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`network`],message:`Sandbox security: browser network mode "host" is blocked. Use "bridge" or a custom bridge network instead.`})}).strict().optional(),lh=b.object({idleHours:b.number().int().nonnegative().optional(),maxAgeDays:b.number().int().nonnegative().optional()}).strict().optional(),Z=b.object({allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional()}).strict().superRefine((e,t)=>{e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:b.ZodIssueCode.custom,message:`tools policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`})}).optional(),uh=b.object({enabled:b.boolean().optional(),provider:b.string().optional(),apiKey:U.optional().register(H),maxResults:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),cacheTtlMinutes:b.number().nonnegative().optional(),duckduckgo:b.object({region:b.string().optional(),safeSearch:b.union([b.literal(`strict`),b.literal(`moderate`),b.literal(`off`)]).optional()}).strict().optional(),exa:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),type:b.union([b.literal(`auto`),b.literal(`neural`),b.literal(`fast`),b.literal(`deep`),b.literal(`deep-reasoning`),b.literal(`instant`)]).optional()}).strict().optional(),firecrawl:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional()}).strict().optional(),perplexity:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),model:b.string().optional()}).strict().optional(),grok:b.object({apiKey:U.optional().register(H),model:b.string().optional(),inlineCitations:b.boolean().optional()}).strict().optional(),gemini:b.object({apiKey:U.optional().register(H),model:b.string().optional()}).strict().optional(),kimi:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),model:b.string().optional()}).strict().optional(),searxng:b.object({baseUrl:b.string().optional(),categories:b.string().optional(),language:b.string().optional()}).strict().optional(),tavily:b.object({apiKey:U.optional().register(H),baseUrl:b.string().optional(),includeAnswer:b.boolean().optional(),searchDepth:b.union([b.literal(`basic`),b.literal(`advanced`)]).optional(),topic:b.string().optional()}).strict().optional()}).strict().optional(),dh=b.object({enabled:b.boolean().optional(),maxChars:b.number().int().positive().optional(),maxCharsCap:b.number().int().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),cacheTtlMinutes:b.number().nonnegative().optional(),maxRedirects:b.number().int().nonnegative().optional(),userAgent:b.string().optional(),readability:b.boolean().optional(),firecrawl:b.object({enabled:b.boolean().optional(),apiKey:U.optional().register(H),baseUrl:b.string().optional(),onlyMainContent:b.boolean().optional(),maxAgeMs:b.number().int().nonnegative().optional(),timeoutSeconds:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),fh=b.object({search:uh,fetch:dh}).strict().optional(),ph=b.union([b.literal(`minimal`),b.literal(`coding`),b.literal(`messaging`),b.literal(`full`)]).optional();function mh(e,t,n){e.allow&&e.allow.length>0&&e.alsoAllow&&e.alsoAllow.length>0&&t.addIssue({code:b.ZodIssueCode.custom,message:n})}const hh=b.object({allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),profile:ph}).strict().superRefine((e,t)=>{mh(e,t,`tools.byProvider policy cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}),gh=b.record(b.string(),b.array(b.union([b.string(),b.number()]))).optional(),_h=b.object({enabled:b.boolean().optional(),workspaceOnly:b.boolean().optional(),allowModels:b.array(b.string()).optional()}).strict().optional(),vh=b.object({minPositional:b.number().int().nonnegative().optional(),maxPositional:b.number().int().nonnegative().optional(),allowedValueFlags:b.array(b.string()).optional(),deniedFlags:b.array(b.string()).optional()}).strict(),yh={host:b.enum([`auto`,`sandbox`,`gateway`,`node`]).optional(),security:b.enum([`deny`,`allowlist`,`full`]).optional(),ask:b.enum([`off`,`on-miss`,`always`]).optional(),node:b.string().optional(),pathPrepend:b.array(b.string()).optional(),safeBins:b.array(b.string()).optional(),safeBinTrustedDirs:b.array(b.string()).optional(),safeBinProfiles:b.record(b.string(),vh).optional(),backgroundMs:b.number().int().positive().optional(),timeoutSec:b.number().int().positive().optional(),cleanupMs:b.number().int().positive().optional(),notifyOnExit:b.boolean().optional(),notifyOnExitEmptySuccess:b.boolean().optional(),applyPatch:_h},bh=b.object({...yh,approvalRunningNoticeMs:b.number().int().nonnegative().optional()}).strict().optional(),xh=b.object(yh).strict().optional(),Sh=b.object({workspaceOnly:b.boolean().optional()}).strict().optional(),Ch=b.object({genericRepeat:b.boolean().optional(),knownPollNoProgress:b.boolean().optional(),pingPong:b.boolean().optional()}).strict().optional(),wh=b.object({enabled:b.boolean().optional(),historySize:b.number().int().positive().optional(),warningThreshold:b.number().int().positive().optional(),criticalThreshold:b.number().int().positive().optional(),globalCircuitBreakerThreshold:b.number().int().positive().optional(),detectors:Ch}).strict().superRefine((e,t)=>{e.warningThreshold!==void 0&&e.criticalThreshold!==void 0&&e.warningThreshold>=e.criticalThreshold&&t.addIssue({code:b.ZodIssueCode.custom,path:[`criticalThreshold`],message:`tools.loopDetection.warningThreshold must be lower than criticalThreshold.`}),e.criticalThreshold!==void 0&&e.globalCircuitBreakerThreshold!==void 0&&e.criticalThreshold>=e.globalCircuitBreakerThreshold&&t.addIssue({code:b.ZodIssueCode.custom,path:[`globalCircuitBreakerThreshold`],message:`tools.loopDetection.criticalThreshold must be lower than globalCircuitBreakerThreshold.`})}).optional(),Th=b.object({mode:b.union([b.literal(`off`),b.literal(`non-main`),b.literal(`all`)]).optional(),backend:b.string().optional(),workspaceAccess:b.union([b.literal(`none`),b.literal(`ro`),b.literal(`rw`)]).optional(),sessionToolsVisibility:b.union([b.literal(`spawned`),b.literal(`all`)]).optional(),scope:b.union([b.literal(`session`),b.literal(`agent`),b.literal(`shared`)]).optional(),perSession:b.boolean().optional(),workspaceRoot:b.string().optional(),docker:sh,browser:ch,prune:lh}).strict().superRefine((e,t)=>{Kp({network:e.browser?.network,allowContainerNamespaceJoin:e.docker?.dangerouslyAllowContainerNamespaceJoin===!0})===`container_namespace_join`&&t.addIssue({code:b.ZodIssueCode.custom,path:[`browser`,`network`],message:`Sandbox security: browser network mode "container:*" is blocked by default. Set sandbox.docker.dangerouslyAllowContainerNamespaceJoin=true only when you fully trust this runtime.`})}).optional(),Eh={profile:ph,allow:b.array(b.string()).optional(),alsoAllow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),byProvider:b.record(b.string(),hh).optional()},Dh=b.object({...Eh,elevated:b.object({enabled:b.boolean().optional(),allowFrom:gh}).strict().optional(),exec:bh,fs:Sh,loopDetection:wh,sandbox:b.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{mh(e,t,`agent tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),Oh=b.object({enabled:b.boolean().optional(),sources:b.array(b.union([b.literal(`memory`),b.literal(`sessions`)])).optional(),extraPaths:b.array(b.string()).optional(),experimental:b.object({sessionMemory:b.boolean().optional()}).strict().optional(),provider:b.union([b.literal(`openai`),b.literal(`local`),b.literal(`gemini`),b.literal(`voyage`),b.literal(`mistral`)]).optional(),remote:b.object({baseUrl:b.string().optional(),apiKey:b.string().optional().register(H),headers:b.record(b.string(),b.string()).optional(),batch:b.object({enabled:b.boolean().optional(),wait:b.boolean().optional(),concurrency:b.number().int().positive().optional(),pollIntervalMs:b.number().int().nonnegative().optional(),timeoutMinutes:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),fallback:b.union([b.literal(`openai`),b.literal(`gemini`),b.literal(`local`),b.literal(`voyage`),b.literal(`mistral`),b.literal(`none`)]).optional(),model:b.string().optional(),local:b.object({modelPath:b.string().optional(),modelCacheDir:b.string().optional()}).strict().optional(),store:b.object({driver:b.literal(`sqlite`).optional(),path:b.string().optional(),vector:b.object({enabled:b.boolean().optional(),extensionPath:b.string().optional()}).strict().optional()}).strict().optional(),chunking:b.object({tokens:b.number().int().positive().optional(),overlap:b.number().int().nonnegative().optional()}).strict().optional(),sync:b.object({onSessionStart:b.boolean().optional(),onSearch:b.boolean().optional(),watch:b.boolean().optional(),watchDebounceMs:b.number().int().nonnegative().optional(),intervalMinutes:b.number().int().nonnegative().optional(),sessions:b.object({deltaBytes:b.number().int().nonnegative().optional(),deltaMessages:b.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),query:b.object({maxResults:b.number().int().positive().optional(),minScore:b.number().min(0).max(1).optional(),hybrid:b.object({enabled:b.boolean().optional(),vectorWeight:b.number().min(0).max(1).optional(),textWeight:b.number().min(0).max(1).optional(),candidateMultiplier:b.number().int().positive().optional(),mmr:b.object({enabled:b.boolean().optional(),lambda:b.number().min(0).max(1).optional()}).strict().optional(),temporalDecay:b.object({enabled:b.boolean().optional(),halfLifeDays:b.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),cache:b.object({enabled:b.boolean().optional(),maxEntries:b.number().int().positive().optional()}).strict().optional()}).strict().optional(),kh=b.object({id:b.string(),default:b.boolean().optional(),name:b.string().optional(),workspace:b.string().optional(),agentDir:b.string().optional(),activeModelProvider:b.string().optional(),modelProviders:b.record(b.string(),Yp).optional(),model:qp.optional(),taskModels:Jp.optional(),thinkingDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),reasoningDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),fastModeDefault:b.boolean().optional(),skills:b.array(b.string()).optional(),memorySearch:Oh,humanDelay:Nm.optional(),heartbeat:oh,identity:Sm,groupChat:xm,subagents:b.object({allowAgents:b.array(b.string()).optional(),requireAgentId:b.boolean().optional(),model:b.union([b.string(),b.object({primary:b.string().optional(),fallbacks:b.array(b.string()).max(1).optional()}).strict()]).optional(),thinking:b.string().optional()}).strict().optional(),sandbox:Th,tools:Dh,strictAgentic:b.object({mode:b.union([b.literal(`off`),b.literal(`warn`)]).optional()}).strict().optional()}).strict(),Ah=b.object({...Eh,web:fh,media:th,links:rh,sessions:b.object({visibility:b.enum([`self`,`tree`,`agent`,`all`]).optional()}).strict().optional(),loopDetection:wh,message:b.object({allowCrossContextSend:b.boolean().optional(),crossContext:b.object({allowWithinProvider:b.boolean().optional(),allowAcrossProviders:b.boolean().optional(),marker:b.object({enabled:b.boolean().optional(),prefix:b.string().optional(),suffix:b.string().optional()}).strict().optional()}).strict().optional(),broadcast:b.object({enabled:b.boolean().optional()}).strict().optional()}).strict().optional(),agentToAgent:b.object({enabled:b.boolean().optional(),allow:b.array(b.string()).optional()}).strict().optional(),elevated:b.object({enabled:b.boolean().optional(),allowFrom:gh}).strict().optional(),exec:xh,fs:Sh,subagents:b.object({tools:Z}).strict().optional(),sandbox:b.object({tools:Z}).strict().optional()}).strict().superRefine((e,t)=>{mh(e,t,`tools cannot set both allow and alsoAllow in the same scope (merge alsoAllow into allow, or remove allow and use profile + alsoAllow)`)}).optional(),jh=b.object({model:qp.optional(),taskModels:Jp.optional(),imageModel:qp.optional(),models:b.record(b.string(),b.object({alias:b.string().optional(),params:b.record(b.string(),b.unknown()).optional(),streaming:b.boolean().optional()}).strict()).optional(),workspace:b.string().optional(),repoRoot:b.string().optional(),skipBootstrap:b.boolean().optional(),bootstrapMaxChars:b.number().int().positive().optional(),bootstrapTotalMaxChars:b.number().int().positive().optional(),bootstrapPromptTruncationWarning:b.union([b.literal(`off`),b.literal(`once`),b.literal(`always`)]).optional(),userTimezone:b.string().optional(),timeFormat:b.union([b.literal(`auto`),b.literal(`12`),b.literal(`24`)]).optional(),envelopeTimezone:b.string().optional(),envelopeTimestamp:b.union([b.literal(`on`),b.literal(`off`)]).optional(),envelopeElapsed:b.union([b.literal(`on`),b.literal(`off`)]).optional(),contextTokens:b.number().int().positive().optional(),cliBackends:b.record(b.string(),Fm).optional(),memorySearch:Oh,contextPruning:b.object({mode:b.union([b.literal(`off`),b.literal(`cache-ttl`)]).optional(),ttl:b.string().optional(),keepLastAssistants:b.number().int().nonnegative().optional(),softTrimRatio:b.number().min(0).max(1).optional(),hardClearRatio:b.number().min(0).max(1).optional(),minPrunableToolChars:b.number().int().nonnegative().optional(),tools:b.object({allow:b.array(b.string()).optional(),deny:b.array(b.string()).optional()}).strict().optional(),softTrim:b.object({maxChars:b.number().int().nonnegative().optional(),headChars:b.number().int().nonnegative().optional(),tailChars:b.number().int().nonnegative().optional()}).strict().optional(),hardClear:b.object({enabled:b.boolean().optional(),placeholder:b.string().optional()}).strict().optional()}).strict().optional(),compaction:b.object({mode:b.union([b.literal(`default`),b.literal(`safeguard`)]).optional(),reserveTokens:b.number().int().nonnegative().optional(),keepRecentTokens:b.number().int().positive().optional(),timeoutSeconds:b.number().positive().optional(),reserveTokensFloor:b.number().int().nonnegative().optional(),maxHistoryShare:b.number().min(.1).max(.9).optional(),identifierPolicy:b.union([b.literal(`strict`),b.literal(`off`),b.literal(`custom`)]).optional(),identifierInstructions:b.string().optional(),memoryFlush:b.object({enabled:b.boolean().optional(),softThresholdTokens:b.number().int().nonnegative().optional(),prompt:b.string().optional(),systemPrompt:b.string().optional()}).strict().optional()}).strict().optional(),embeddedPi:b.object({projectSettingsPolicy:b.union([b.literal(`trusted`),b.literal(`sanitize`),b.literal(`ignore`)]).optional()}).strict().optional(),strictAgentic:b.object({mode:b.union([b.literal(`off`),b.literal(`warn`)]).optional()}).strict().optional(),skills:b.array(b.string()).optional(),thinkingDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),reasoningDefault:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`),b.literal(`xhigh`)]).optional(),fastModeDefault:b.boolean().optional(),verboseDefault:b.union([b.literal(`off`),b.literal(`on`),b.literal(`full`)]).optional(),elevatedDefault:b.union([b.literal(`off`),b.literal(`on`),b.literal(`ask`),b.literal(`full`)]).optional(),blockStreamingDefault:b.union([b.literal(`off`),b.literal(`on`)]).optional(),blockStreamingBreak:b.union([b.literal(`text_end`),b.literal(`message_end`)]).optional(),blockStreamingChunk:Em.optional(),blockStreamingCoalesce:J.optional(),humanDelay:Nm.optional(),timeoutSeconds:b.number().int().positive().optional(),mediaMaxMb:b.number().positive().optional(),imageMaxDimensionPx:b.number().int().positive().optional(),typingIntervalSeconds:b.number().int().positive().optional(),typingMode:Tm.optional(),heartbeat:oh,maxConcurrent:b.number().int().positive().optional(),subagents:b.object({maxConcurrent:b.number().int().positive().optional(),maxSpawnDepth:b.number().int().min(1).max(5).optional().describe(`Maximum nesting depth for sub-agent spawning. 1 = no nesting (default), 2 = sub-agents can spawn sub-sub-agents.`),maxChildrenPerAgent:b.number().int().min(1).max(20).optional().describe(`Maximum number of active children a single agent session can spawn (default: 5).`),archiveAfterMinutes:b.number().int().positive().optional(),model:qp.optional(),thinking:b.string().optional(),runTimeoutSeconds:b.number().int().min(0).optional(),announceTimeoutMs:b.number().int().positive().optional(),allowAgents:b.array(b.string()).optional(),requireAgentId:b.boolean().optional()}).strict().optional(),sandbox:Th}).strict().optional(),Mh=b.object({defaults:b.lazy(()=>jh).optional(),list:b.array(kh).optional()}).strict().optional(),Nh=b.array(b.object({agentId:b.string(),comment:b.string().optional(),match:b.object({channel:b.string(),accountId:b.string().optional(),peer:b.object({kind:b.union([b.literal(`direct`),b.literal(`group`),b.literal(`channel`),b.literal(`dm`)]),id:b.string()}).strict().optional(),guildId:b.string().optional(),teamId:b.string().optional(),roles:b.array(b.string()).optional()}).strict()}).strict()).optional(),Ph=b.enum([`parallel`,`sequential`]),Fh=b.object({strategy:Ph.optional()}).catchall(b.array(b.string())).optional(),Ih=b.object({channel:b.string().min(1),to:b.string().min(1),accountId:b.string().optional(),threadId:b.union([b.string(),b.number()]).optional()}).strict(),Lh=b.object({enabled:b.boolean().optional(),mode:b.union([b.literal(`session`),b.literal(`targets`),b.literal(`both`)]).optional(),agentFilter:b.array(b.string()).optional(),sessionFilter:b.array(b.string()).optional(),targets:b.array(Ih).optional()}).strict().optional(),Rh=b.object({exec:Lh}).strict().optional();function zh(e){let t=e.trim();return!(!t||i.isAbsolute(t)||t.startsWith(`~`)||t.includes(`:`)||t.split(/[\\/]+/g).some(e=>e===`..`))}const Bh=b.string().refine(zh,`module must be a safe relative path (no absolute paths)`),Vh=b.object({id:b.string().optional(),enabled:b.boolean().optional(),match:b.object({path:b.string().optional(),source:b.string().optional()}).optional(),action:b.union([b.literal(`wake`),b.literal(`agent`),b.literal(`workflow`)]).optional(),wakeMode:b.union([b.literal(`now`),b.literal(`next-heartbeat`)]).optional(),name:b.string().optional(),agentId:b.string().optional(),sessionKey:b.string().optional().register(H),messageTemplate:b.string().optional(),textTemplate:b.string().optional(),workflowDefinitionId:b.string().optional(),deliver:b.boolean().optional(),allowUnsafeExternalContent:b.boolean().optional(),channel:b.union([b.literal(`last`),b.literal(`whatsapp`),b.literal(`telegram`),b.literal(`discord`),b.literal(`irc`),b.literal(`slack`),b.literal(`signal`),b.literal(`imessage`),b.literal(`msteams`)]).optional(),to:b.string().optional(),model:b.string().optional(),thinking:b.string().optional(),timeoutSeconds:b.number().int().positive().optional(),notifyPolicy:b.union([b.literal(`silent`),b.literal(`done_only`),b.literal(`state_changes`)]).optional(),transform:b.object({module:Bh,export:b.string().optional()}).strict().optional()}).strict().optional(),Hh=b.object({event:b.string(),module:Bh,export:b.string().optional()}).strict(),Uh=b.object({enabled:b.boolean().optional(),env:b.record(b.string(),b.string()).optional()}).passthrough(),Wh=b.object({source:b.union([b.literal(`npm`),b.literal(`archive`),b.literal(`path`)]),spec:b.string().optional(),sourcePath:b.string().optional(),installPath:b.string().optional(),version:b.string().optional(),installedAt:b.string().optional(),hooks:b.array(b.string()).optional()}).strict(),Gh=b.object({enabled:b.boolean().optional(),handlers:b.array(Hh).optional(),entries:b.record(b.string(),Uh).optional(),load:b.object({extraDirs:b.array(b.string()).optional()}).strict().optional(),installs:b.record(b.string(),Wh).optional()}).strict().optional(),Kh=b.object({account:b.string().optional(),project:b.string().optional(),label:b.string().optional(),topic:b.string().optional(),subscription:b.string().optional(),pushToken:b.string().optional().register(H),hookUrl:b.string().optional(),includeBody:b.boolean().optional(),maxBytes:b.number().int().positive().optional(),renewEveryMinutes:b.number().int().positive().optional(),allowUnsafeExternalContent:b.boolean().optional(),serve:b.object({bind:b.string().optional(),port:b.number().int().positive().optional(),path:b.string().optional()}).strict().optional(),tailscale:b.object({mode:b.union([b.literal(`off`),b.literal(`serve`),b.literal(`funnel`)]).optional(),path:b.string().optional(),target:b.string().optional()}).strict().optional(),model:b.string().optional(),thinking:b.union([b.literal(`off`),b.literal(`minimal`),b.literal(`low`),b.literal(`medium`),b.literal(`high`)]).optional()}).strict().optional(),qh={source:b.union([b.literal(`npm`),b.literal(`archive`),b.literal(`path`),b.literal(`clawhub`)]),spec:b.string().optional(),sourcePath:b.string().optional(),installPath:b.string().optional(),version:b.string().optional(),resolvedName:b.string().optional(),resolvedVersion:b.string().optional(),resolvedSpec:b.string().optional(),integrity:b.string().optional(),shasum:b.string().optional(),resolvedAt:b.string().optional(),installedAt:b.string().optional(),clawhubUrl:b.string().optional(),clawhubArtifactUrl:b.string().optional(),clawhubPackage:b.string().optional(),clawhubFamily:b.union([b.literal(`code-plugin`),b.literal(`bundle-plugin`)]).optional(),clawhubChannel:b.union([b.literal(`official`),b.literal(`community`),b.literal(`private`)]).optional(),artifactKind:b.union([b.literal(`legacy-zip`),b.literal(`npm-pack`),b.literal(`clawpack`)]).optional(),artifactFormat:b.union([b.literal(`zip`),b.literal(`tgz`)]).optional(),npmIntegrity:b.string().optional(),npmShasum:b.string().optional(),npmTarballName:b.string().optional(),clawpackSha256:b.string().optional(),clawpackSpecVersion:b.number().int().nonnegative().optional(),clawpackManifestSha256:b.string().optional(),clawpackSize:b.number().int().nonnegative().optional(),securityState:b.string().optional(),scanState:b.string().optional(),moderationState:b.string().optional(),readinessPhase:b.string().optional(),verificationTier:b.string().optional(),verificationSourceRepo:b.string().optional(),verificationSourceCommit:b.string().optional(),verificationHasProvenance:b.boolean().optional()},Q=b.object({showOk:b.boolean().optional(),showAlerts:b.boolean().optional(),useIndicator:b.boolean().optional()}).strict().optional(),Jh=/^[A-Za-z0-9._-]+$/,Yh=/^\[[0-9A-Fa-f:.%]+\]$/,Xh=/\s/;function Zh(e){for(let t of e){let e=t.charCodeAt(0);if(e<=31||e===127||Xh.test(t))return!0}return!1}function Qh(e){if(typeof e!=`string`)return;let t=e.trim();if(!t||Zh(t)||t.startsWith(`-`)||t.includes(`/`)||t.includes(`\\`))return;let n=t.indexOf(`@`),r=t.lastIndexOf(`@`),i,a=t;if(!(n!==-1&&(n!==r||n===0||n===t.length-1||(i=t.slice(0,n),a=t.slice(n+1),!Jh.test(i))))&&!(!a||a.startsWith(`-`)||a.includes(`@`))&&!(a.includes(`:`)&&!Yh.test(a))&&!(!Jh.test(a)&&!Yh.test(a)))return i?`${i}@${a}`:a}function $h(e){return Qh(e)!==void 0}const eg=/^[A-Za-z]:\//,tg=/^[A-Za-z]:$/;function ng(e){let t=e.trim();if(!t||t.includes(`\0`))return;let n=i.posix.normalize(t.replaceAll(`\\`,`/`));if(!(n.startsWith(`/`)||eg.test(n))||n===`/`)return;let r=n.endsWith(`/`)?n.slice(0,-1):n;if(!tg.test(r))return r}function rg(e){return e.split(`/`).filter(Boolean)}function ig(e){let t=ng(e);if(!t)return!1;let n=rg(t);return n.length===0?!1:n.every(e=>e===`*`||!e.includes(`*`))}const ag=/^[a-z0-9_]{1,32}$/;function og(e){let t=e.trim();return t?(t.startsWith(`/`)?t.slice(1):t).trim().toLowerCase().replace(/-/g,`_`):``}function sg(e){return e.trim()}function cg(e){let t=Array.isArray(e.commands)?e.commands:[],n=e.reservedCommands??new Set,r=e.checkReserved!==!1,i=e.checkDuplicates!==!1,a=new Set,o=[],s=[];for(let e=0;e<t.length;e+=1){let c=t[e],l=og(String(c?.command??``));if(!l){s.push({index:e,field:`command`,message:`Telegram custom command is missing a command name.`});continue}if(!ag.test(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is invalid (use a-z, 0-9, underscore; max 32 chars).`});continue}if(r&&n.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" conflicts with a native command.`});continue}if(i&&a.has(l)){s.push({index:e,field:`command`,message:`Telegram custom command "/${l}" is duplicated.`});continue}let u=sg(String(c?.description??``));if(!u){s.push({index:e,field:`description`,message:`Telegram custom command "/${l}" is missing a description.`});continue}i&&a.add(l),o.push({command:l,description:u})}return{commands:o,issues:s}}const lg=b.record(b.string(),Z).optional(),ug=b.union([b.string(),b.number()]).refine(e=>typeof e==`string`,{message:`Discord IDs must be strings (wrap numeric IDs in quotes).`}),dg=b.array(ug),fg=b.enum([`off`,`dm`,`group`,`all`,`allowlist`]),pg=b.union([b.array(b.string()),b.object({inlineButtons:fg.optional()}).strict()]),mg=b.object({requireMention:b.boolean().optional(),groupPolicy:K.optional(),skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),hg=b.object({requireMention:b.boolean().optional(),groupPolicy:K.optional(),tools:Z,toolsBySender:lg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional(),topics:b.record(b.string(),mg.optional()).optional()}).strict(),gg=b.object({command:b.string().transform(og),description:b.string().transform(sg)}).strict(),_g=(e,t)=>{if(!e.customCommands||e.customCommands.length===0)return;let{issues:n}=cg({commands:e.customCommands,checkReserved:!1,checkDuplicates:!1});for(let e of n)t.addIssue({code:b.ZodIssueCode.custom,path:[`customCommands`,e.index,e.field],message:e.message})};function vg(e){e.streaming=vf(e),delete e.streamMode}function yg(e){e.streaming=yf(e),delete e.streamMode}function bg(e){e.nativeStreaming=xf(e),e.streaming=bf(e),delete e.streamMode}const xg=b.object({name:b.string().optional(),capabilities:pg.optional(),markdown:Om,enabled:b.boolean().optional(),commands:ah,customCommands:b.array(gg).optional(),configWrites:b.boolean().optional(),dmPolicy:q.optional().default(`pairing`),botToken:b.string().optional().register(H),tokenFile:b.string().optional(),replyToMode:wm.optional(),groups:b.record(b.string(),hg.optional()).optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.union([b.string(),b.number()]).optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),blockStreaming:b.boolean().optional(),draftChunk:Em.optional(),blockStreamingCoalesce:J.optional(),streamMode:b.enum([`off`,`partial`,`block`]).optional(),mediaMaxMb:b.number().positive().optional(),timeoutSeconds:b.number().int().positive().optional(),retry:Rm,network:b.object({autoSelectFamily:b.boolean().optional(),dnsResultOrder:b.enum([`ipv4first`,`verbatim`]).optional()}).strict().optional(),proxy:b.string().optional(),webhookUrl:b.string().optional().describe(`Public HTTPS webhook URL registered with Telegram for inbound updates. This must be internet-reachable and requires channels.telegram.webhookSecret.`),webhookSecret:b.string().optional().describe(`Secret token sent to Telegram during webhook registration and verified on inbound webhook requests. Telegram returns this value for verification; this is not the gateway auth token and not the bot token.`).register(H),webhookPath:b.string().optional().describe(`Local webhook route path served by the gateway listener. Defaults to /telegram-webhook.`),webhookHost:b.string().optional().describe(`Local bind host for the webhook listener. Defaults to 127.0.0.1; keep loopback unless you intentionally expose direct ingress.`),webhookPort:b.number().int().nonnegative().optional().describe(`Local bind port for the webhook listener. Defaults to 8787; set to 0 to let the OS assign an ephemeral port.`),actions:b.object({reactions:b.boolean().optional(),sendMessage:b.boolean().optional(),deleteMessage:b.boolean().optional(),sticker:b.boolean().optional()}).strict().optional(),reactionNotifications:b.enum([`off`,`own`,`all`]).optional(),reactionLevel:b.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,linkPreview:b.boolean().optional(),responsePrefix:b.string().optional(),ackReaction:b.string().optional()}).strict(),Sg=xg.superRefine((e,t)=>{vg(e),_g(e,t)}),Cg=xg.extend({accounts:b.record(b.string(),Sg.optional()).optional()}).superRefine((e,t)=>{if(vg(e),Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="open" requires channels.telegram.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.telegram.dmPolicy="allowlist" requires channels.telegram.allowFrom to contain at least one sender ID`}),_g(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.accounts.*.allowFrom (or channels.telegram.allowFrom) to contain at least one sender ID`})}let n=typeof e.webhookUrl==`string`?e.webhookUrl.trim():``,r=typeof e.webhookSecret==`string`?e.webhookSecret.trim():``;if(n&&!r&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.telegram.webhookUrl requires channels.telegram.webhookSecret`,path:[`webhookSecret`]}),e.accounts)for(let[n,i]of Object.entries(e.accounts)){if(!i||i.enabled===!1)continue;let a=i.dmPolicy??e.dmPolicy,o=Array.isArray(i.allowFrom)?i.allowFrom:e.allowFrom;Y({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="open" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to include "*"`}),X({policy:a,allowFrom:o,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.telegram.accounts.*.dmPolicy="allowlist" requires channels.telegram.allowFrom or channels.telegram.accounts.*.allowFrom to contain at least one sender ID`}),typeof i.webhookUrl==`string`&&i.webhookUrl.trim()&&!(typeof i.webhookSecret==`string`&&i.webhookSecret.trim())&&!r&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.telegram.accounts.*.webhookUrl requires channels.telegram.webhookSecret or channels.telegram.accounts.*.webhookSecret`,path:[`accounts`,n,`webhookSecret`]})}}),wg=b.object({enabled:b.boolean().optional(),policy:q.optional(),allowFrom:dg.optional(),groupEnabled:b.boolean().optional(),groupChannels:dg.optional()}).strict(),Tg=b.object({allow:b.boolean().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),users:dg.optional(),roles:dg.optional(),systemPrompt:b.string().optional(),includeThreadStarter:b.boolean().optional(),autoThread:b.boolean().optional()}).strict(),Eg=b.object({slug:b.string().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),users:dg.optional(),roles:dg.optional(),channels:b.record(b.string(),Tg.optional()).optional()}).strict(),Dg=b.object({components:b.object({accentColor:Wm.optional()}).strict().optional()}).strict().optional(),Og=b.object({guildId:b.string().min(1),channelId:b.string().min(1)}).strict(),kg=b.object({enabled:b.boolean().optional(),autoJoin:b.array(Og).optional(),daveEncryption:b.boolean().optional(),decryptionFailureTolerance:b.number().int().min(0).optional(),tts:Mm.optional()}).strict().optional(),Ag=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,enabled:b.boolean().optional(),commands:ah,configWrites:b.boolean().optional(),token:b.string().optional().register(H),proxy:b.string().optional(),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),streamMode:b.enum([`partial`,`block`,`off`]).optional(),draftChunk:Em.optional(),maxLinesPerMessage:b.number().int().positive().optional(),mediaMaxMb:b.number().positive().optional(),retry:Rm,actions:b.object({reactions:b.boolean().optional(),stickers:b.boolean().optional(),emojiUploads:b.boolean().optional(),stickerUploads:b.boolean().optional(),polls:b.boolean().optional(),permissions:b.boolean().optional(),messages:b.boolean().optional(),threads:b.boolean().optional(),pins:b.boolean().optional(),search:b.boolean().optional(),memberInfo:b.boolean().optional(),roleInfo:b.boolean().optional(),roles:b.boolean().optional(),channelInfo:b.boolean().optional(),voiceStatus:b.boolean().optional(),events:b.boolean().optional(),moderation:b.boolean().optional(),channels:b.boolean().optional(),presence:b.boolean().optional()}).strict().optional(),replyToMode:wm.optional(),dmPolicy:q.optional(),allowFrom:dg.optional(),defaultTo:b.string().optional(),dm:wg.optional(),guilds:b.record(b.string(),Eg.optional()).optional(),heartbeat:Q,execApprovals:b.object({enabled:b.boolean().optional(),approvers:dg.optional(),agentFilter:b.array(b.string()).optional(),sessionFilter:b.array(b.string()).optional(),cleanupAfterResolve:b.boolean().optional(),target:b.enum([`dm`,`channel`,`both`]).optional()}).strict().optional(),ui:Dg,slashCommand:b.object({ephemeral:b.boolean().optional()}).strict().optional(),threadBindings:b.object({enabled:b.boolean().optional(),idleHours:b.number().nonnegative().optional(),maxAgeHours:b.number().nonnegative().optional(),spawnSubagentSessions:b.boolean().optional(),spawnAcpSessions:b.boolean().optional()}).strict().optional(),intents:b.object({presence:b.boolean().optional(),guildMembers:b.boolean().optional()}).strict().optional(),voice:kg,pluralkit:b.object({enabled:b.boolean().optional(),token:b.string().optional().register(H)}).strict().optional(),responsePrefix:b.string().optional(),ackReaction:b.string().optional(),activity:b.string().optional(),status:b.enum([`online`,`dnd`,`idle`,`invisible`]).optional(),activityType:b.union([b.literal(0),b.literal(1),b.literal(2),b.literal(3),b.literal(4),b.literal(5)]).optional(),activityUrl:b.string().url().optional()}).strict().superRefine((e,t)=>{yg(e);let n=!!(typeof e.activity==`string`&&e.activity.trim()),r=e.activityType!==void 0,i=!!(typeof e.activityUrl==`string`&&e.activityUrl.trim());(r||i)&&!n&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activity is required when activityType or activityUrl is set`,path:[`activity`]}),e.activityType===1&&!i&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activityUrl is required when activityType is 1 (Streaming)`,path:[`activityUrl`]}),i&&e.activityType!==1&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.discord.activityType must be 1 (Streaming) when activityUrl is set`,path:[`activityType`]})}),jg=Ag.extend({accounts:b.record(b.string(),Ag.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];if(Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="open" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.discord.dmPolicy="allowlist" requires channels.discord.allowFrom (or channels.discord.dm.allowFrom) to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,a=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="open" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.discord.accounts.*.dmPolicy="allowlist" requires channels.discord.accounts.*.allowFrom (or channels.discord.allowFrom) to contain at least one sender ID`})}}),Mg=b.object({enabled:b.boolean().optional(),policy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional()}).strict().superRefine((e,t)=>{Y({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="open" requires channels.googlechat.dm.allowFrom to include "*"`}),X({policy:e.policy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.googlechat.dm.policy="allowlist" requires channels.googlechat.dm.allowFrom to contain at least one sender ID`})}),Ng=b.object({enabled:b.boolean().optional(),allow:b.boolean().optional(),requireMention:b.boolean().optional(),users:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),Pg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),enabled:b.boolean().optional(),configWrites:b.boolean().optional(),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),requireMention:b.boolean().optional(),groupPolicy:K.optional().default(`allowlist`),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groups:b.record(b.string(),Ng.optional()).optional(),defaultTo:b.string().optional(),serviceAccount:b.union([b.string(),b.record(b.string(),b.unknown()),lm]).optional().register(H),serviceAccountRef:lm.optional().register(H),serviceAccountFile:b.string().optional(),audienceType:b.enum([`app-url`,`project-number`]).optional(),audience:b.string().optional(),webhookPath:b.string().optional(),webhookUrl:b.string().optional(),botUser:b.string().optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streamMode:b.enum([`replace`,`status_final`,`append`]).optional().default(`replace`),mediaMaxMb:b.number().positive().optional(),replyToMode:wm.optional(),actions:b.object({reactions:b.boolean().optional()}).strict().optional(),dm:Mg.optional(),typingIndicator:b.enum([`none`,`message`,`reaction`]).optional(),responsePrefix:b.string().optional()}).strict(),Fg=Pg.extend({accounts:b.record(b.string(),Pg.optional()).optional(),defaultAccount:b.string().optional()}),Ig=b.object({enabled:b.boolean().optional(),policy:q.optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupEnabled:b.boolean().optional(),groupChannels:b.array(b.union([b.string(),b.number()])).optional(),replyToMode:wm.optional()}).strict(),Lg=b.object({enabled:b.boolean().optional(),allow:b.boolean().optional(),requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,allowBots:b.boolean().optional(),users:b.array(b.union([b.string(),b.number()])).optional(),skills:b.array(b.string()).optional(),systemPrompt:b.string().optional()}).strict(),Rg=b.object({historyScope:b.enum([`thread`,`channel`]).optional(),inheritParent:b.boolean().optional(),initialHistoryLimit:b.number().int().min(0).optional()}).strict(),zg=b.object({direct:wm.optional(),group:wm.optional(),channel:wm.optional()}).strict(),Bg=b.object({name:b.string().optional(),mode:b.enum([`socket`,`http`]).optional(),signingSecret:b.string().optional().register(H),webhookPath:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,enabled:b.boolean().optional(),commands:ah,configWrites:b.boolean().optional(),botToken:b.string().optional().register(H),appToken:b.string().optional().register(H),userToken:b.string().optional().register(H),userTokenReadOnly:b.boolean().optional().default(!0),allowBots:b.boolean().optional(),dangerouslyAllowNameMatching:b.boolean().optional(),requireMention:b.boolean().optional(),groupPolicy:K.optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),streaming:b.union([b.boolean(),b.enum([`off`,`partial`,`block`,`progress`])]).optional(),nativeStreaming:b.boolean().optional(),streamMode:b.enum([`replace`,`status_final`,`append`]).optional(),mediaMaxMb:b.number().positive().optional(),reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:b.array(b.union([b.string(),b.number()])).optional(),replyToMode:wm.optional(),replyToModeByChatType:zg.optional(),thread:Rg.optional(),actions:b.object({reactions:b.boolean().optional(),messages:b.boolean().optional(),pins:b.boolean().optional(),search:b.boolean().optional(),permissions:b.boolean().optional(),memberInfo:b.boolean().optional(),channelInfo:b.boolean().optional(),emojiList:b.boolean().optional()}).strict().optional(),slashCommand:b.object({enabled:b.boolean().optional(),name:b.string().optional(),sessionPrefix:b.string().optional(),ephemeral:b.boolean().optional()}).strict().optional(),dmPolicy:q.optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),dm:Ig.optional(),channels:b.record(b.string(),Lg.optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional(),ackReaction:b.string().optional()}).strict().superRefine(e=>{bg(e)}),Vg=Bg.safeExtend({mode:b.enum([`socket`,`http`]).optional().default(`socket`),signingSecret:b.string().optional().register(H),webhookPath:b.string().optional().default(`/slack/events`),groupPolicy:K.optional().default(`allowlist`),accounts:b.record(b.string(),Bg.optional()).optional()}).superRefine((e,t)=>{let n=e.dmPolicy??e.dm?.policy??`pairing`,r=e.allowFrom??e.dm?.allowFrom,i=e.allowFrom===void 0?[`dm`,`allowFrom`]:[`allowFrom`];Y({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="open" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to include "*"`}),X({policy:n,allowFrom:r,ctx:t,path:[...i],message:`channels.slack.dmPolicy="allowlist" requires channels.slack.allowFrom (or channels.slack.dm.allowFrom) to contain at least one sender ID`});let a=e.mode??`socket`;if(a===`http`&&!e.signingSecret&&t.addIssue({code:b.ZodIssueCode.custom,message:`channels.slack.mode="http" requires channels.slack.signingSecret`,path:[`signingSecret`]}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r||r.enabled===!1)continue;let i=r.mode??a,o=r.dmPolicy??r.dm?.policy??e.dmPolicy??e.dm?.policy??`pairing`,s=r.allowFrom??r.dm?.allowFrom??e.allowFrom??e.dm?.allowFrom;Y({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="open" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to include "*"`}),X({policy:o,allowFrom:s,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.slack.accounts.*.dmPolicy="allowlist" requires channels.slack.accounts.*.allowFrom (or channels.slack.allowFrom) to contain at least one sender ID`}),i===`http`&&((r.signingSecret??e.signingSecret)||t.addIssue({code:b.ZodIssueCode.custom,message:`channels.slack.accounts.*.mode="http" requires channels.slack.signingSecret or channels.slack.accounts.*.signingSecret`,path:[`accounts`,n,`signingSecret`]}))}}),Hg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),account:b.string().optional(),httpUrl:b.string().optional(),httpHost:b.string().optional(),httpPort:b.number().int().positive().optional(),cliPath:Gm.optional(),autoStart:b.boolean().optional(),startupTimeoutMs:b.number().int().min(1e3).max(12e4).optional(),receiveMode:b.union([b.literal(`on-start`),b.literal(`manual`)]).optional(),ignoreAttachments:b.boolean().optional(),ignoreStories:b.boolean().optional(),sendReadReceipts:b.boolean().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),mediaMaxMb:b.number().int().positive().optional(),reactionNotifications:b.enum([`off`,`own`,`all`,`allowlist`]).optional(),reactionAllowlist:b.array(b.union([b.string(),b.number()])).optional(),actions:b.object({reactions:b.boolean().optional()}).strict().optional(),reactionLevel:b.enum([`off`,`ack`,`minimal`,`extensive`]).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),Ug=Hg,Wg=Hg.extend({accounts:b.record(b.string(),Ug.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="open" requires channels.signal.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.signal.dmPolicy="allowlist" requires channels.signal.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="open" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.signal.accounts.*.dmPolicy="allowlist" requires channels.signal.accounts.*.allowFrom (or channels.signal.allowFrom) to contain at least one sender ID`})}}),Gg=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,skills:b.array(b.string()).optional(),enabled:b.boolean().optional(),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),systemPrompt:b.string().optional()}).strict(),Kg=b.object({enabled:b.boolean().optional(),service:b.string().optional(),password:b.string().optional().register(H),passwordFile:b.string().optional(),register:b.boolean().optional(),registerEmail:b.string().optional()}).strict(),qg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),host:b.string().optional(),port:b.number().int().min(1).max(65535).optional(),tls:b.boolean().optional(),nick:b.string().optional(),username:b.string().optional(),realname:b.string().optional(),password:b.string().optional().register(H),passwordFile:b.string().optional(),nickserv:Kg.optional(),channels:b.array(b.string()).optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),groups:b.record(b.string(),Gg.optional()).optional(),mentionPatterns:b.array(b.string()).optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),mediaMaxMb:b.number().positive().optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict();function Jg(e,t){Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="open" requires channels.irc.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.irc.dmPolicy="allowlist" requires channels.irc.allowFrom to contain at least one sender ID`}),e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:b.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}const Yg=qg.superRefine((e,t)=>{e.nickserv?.register&&!e.nickserv.registerEmail?.trim()&&t.addIssue({code:b.ZodIssueCode.custom,path:[`nickserv`,`registerEmail`],message:`channels.irc.nickserv.register=true requires channels.irc.nickserv.registerEmail`})}),Xg=qg.extend({accounts:b.record(b.string(),Yg.optional()).optional()}).superRefine((e,t)=>{if(Jg(e,t),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="open" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.irc.accounts.*.dmPolicy="allowlist" requires channels.irc.accounts.*.allowFrom (or channels.irc.allowFrom) to contain at least one sender ID`})}}),Zg=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,enabled:b.boolean().optional(),configWrites:b.boolean().optional(),cliPath:Gm.optional(),dbPath:b.string().optional(),remoteHost:b.string().refine($h,`expected SSH host or user@host (no spaces/options)`).optional(),service:b.union([b.literal(`imessage`),b.literal(`sms`),b.literal(`auto`)]).optional(),region:b.string().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.union([b.string(),b.number()])).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),includeAttachments:b.boolean().optional(),attachmentRoots:b.array(b.string().refine(ig,`expected absolute path root`)).optional(),remoteAttachmentRoots:b.array(b.string().refine(ig,`expected absolute path root`)).optional(),mediaMaxMb:b.number().int().positive().optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:b.record(b.string(),b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg}).strict().optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),Qg=Zg,$g=Zg.extend({accounts:b.record(b.string(),Qg.optional()).optional()}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="open" requires channels.imessage.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.imessage.dmPolicy="allowlist" requires channels.imessage.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="open" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.imessage.accounts.*.dmPolicy="allowlist" requires channels.imessage.accounts.*.allowFrom (or channels.imessage.allowFrom) to contain at least one sender ID`})}}),e_=b.union([b.string(),b.number()]),t_=b.object({reactions:b.boolean().optional(),edit:b.boolean().optional(),unsend:b.boolean().optional(),reply:b.boolean().optional(),sendWithEffect:b.boolean().optional(),renameGroup:b.boolean().optional(),setGroupIcon:b.boolean().optional(),addParticipant:b.boolean().optional(),removeParticipant:b.boolean().optional(),leaveGroup:b.boolean().optional(),sendAttachment:b.boolean().optional()}).strict().optional(),n_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg}).strict(),r_=b.object({name:b.string().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,configWrites:b.boolean().optional(),enabled:b.boolean().optional(),serverUrl:b.string().optional(),password:b.string().optional().register(H),webhookPath:b.string().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(e_).optional(),groupAllowFrom:b.array(e_).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),mediaMaxMb:b.number().int().positive().optional(),mediaLocalRoots:b.array(b.string()).optional(),sendReadReceipts:b.boolean().optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:b.record(b.string(),n_.optional()).optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict(),i_=r_,a_=r_.extend({accounts:b.record(b.string(),i_.optional()).optional(),actions:t_}).superRefine((e,t)=>{if(Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="open" requires channels.bluebubbles.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.bluebubbles.dmPolicy="allowlist" requires channels.bluebubbles.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;Y({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="open" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to include "*"`}),X({policy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.bluebubbles.accounts.*.dmPolicy="allowlist" requires channels.bluebubbles.accounts.*.allowFrom (or channels.bluebubbles.allowFrom) to contain at least one sender ID`})}}),o_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,replyStyle:Lm.optional()}).strict(),s_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:lg,replyStyle:Lm.optional(),channels:b.record(b.string(),o_.optional()).optional()}).strict(),c_=b.object({enabled:b.boolean().optional(),capabilities:b.array(b.string()).optional(),dangerouslyAllowNameMatching:b.boolean().optional(),markdown:Om,configWrites:b.boolean().optional(),appId:b.string().optional(),appPassword:b.string().optional().register(H),tenantId:b.string().optional(),webhook:b.object({port:b.number().int().positive().optional(),path:b.string().optional()}).strict().optional(),dmPolicy:q.optional().default(`pairing`),allowFrom:b.array(b.string()).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.string()).optional(),groupPolicy:K.optional().default(`allowlist`),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreamingCoalesce:J.optional(),mediaAllowHosts:b.array(b.string()).optional(),mediaAuthAllowHosts:b.array(b.string()).optional(),requireMention:b.boolean().optional(),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),replyStyle:Lm.optional(),teams:b.record(b.string(),s_.optional()).optional(),mediaMaxMb:b.number().positive().optional(),preserveFilenames:b.boolean().optional(),sharePointSiteId:b.string().optional(),heartbeat:Q,responsePrefix:b.string().optional()}).strict().superRefine((e,t)=>{Y({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="open" requires channels.msteams.allowFrom to include "*"`}),X({policy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,path:[`allowFrom`],message:`channels.msteams.dmPolicy="allowlist" requires channels.msteams.allowFrom to contain at least one sender ID`})}),l_=b.record(b.string(),Z).optional(),u_=b.object({requireMention:b.boolean().optional(),tools:Z,toolsBySender:l_}).strict().optional(),d_=b.record(b.string(),u_).optional(),f_=b.object({emoji:b.string().optional(),direct:b.boolean().optional().default(!0),group:b.enum([`always`,`mentions`,`never`]).optional().default(`mentions`)}).strict().optional(),p_=b.object({enabled:b.boolean().optional(),capabilities:b.array(b.string()).optional(),markdown:Om,configWrites:b.boolean().optional(),sendReadReceipts:b.boolean().optional(),messagePrefix:b.string().optional(),responsePrefix:b.string().optional(),dmPolicy:q.optional().default(`pairing`),selfChatMode:b.boolean().optional(),allowFrom:b.array(b.string()).optional(),defaultTo:b.string().optional(),groupAllowFrom:b.array(b.string()).optional(),groupPolicy:K.optional().default(`allowlist`),historyLimit:b.number().int().min(0).optional(),dmHistoryLimit:b.number().int().min(0).optional(),dms:b.record(b.string(),W.optional()).optional(),textChunkLimit:b.number().int().positive().optional(),chunkMode:b.enum([`length`,`newline`]).optional(),blockStreaming:b.boolean().optional(),blockStreamingCoalesce:J.optional(),groups:d_,ackReaction:f_,debounceMs:b.number().int().nonnegative().optional().default(0),heartbeat:Q});function m_(e){e.dmPolicy===`open`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).includes(`*`)||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}function h_(e){e.dmPolicy===`allowlist`&&((Array.isArray(e.allowFrom)?e.allowFrom:[]).map(e=>String(e).trim()).filter(Boolean).length>0||e.ctx.addIssue({code:b.ZodIssueCode.custom,path:e.path??[`allowFrom`],message:e.message}))}const g_=p_.extend({name:b.string().optional(),enabled:b.boolean().optional(),authDir:b.string().optional(),mediaMaxMb:b.number().int().positive().optional()}).strict(),__=p_.extend({accounts:b.record(b.string(),g_.optional()).optional(),mediaMaxMb:b.number().int().positive().optional().default(50),actions:b.object({reactions:b.boolean().optional(),sendMessage:b.boolean().optional(),polls:b.boolean().optional()}).strict().optional()}).strict().superRefine((e,t)=>{if(m_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="open" requires channels.whatsapp.allowFrom to include "*"`}),h_({dmPolicy:e.dmPolicy,allowFrom:e.allowFrom,ctx:t,message:`channels.whatsapp.dmPolicy="allowlist" requires channels.whatsapp.allowFrom to contain at least one sender ID`}),e.accounts)for(let[n,r]of Object.entries(e.accounts)){if(!r)continue;let i=r.dmPolicy??e.dmPolicy,a=r.allowFrom??e.allowFrom;m_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="open" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to include "*"`}),h_({dmPolicy:i,allowFrom:a,ctx:t,path:[`accounts`,n,`allowFrom`],message:`channels.whatsapp.accounts.*.dmPolicy="allowlist" requires channels.whatsapp.accounts.*.allowFrom (or channels.whatsapp.allowFrom) to contain at least one sender ID`})}}),v_=b.record(b.string(),b.record(b.string(),b.string())).optional(),y_=b.object({defaults:b.object({groupPolicy:K.optional(),heartbeat:Q}).strict().optional(),modelByChannel:v_,whatsapp:__.optional(),telegram:Cg.optional(),discord:jg.optional(),irc:Xg.optional(),googlechat:Fg.optional(),slack:Vg.optional(),signal:Wg.optional(),imessage:$g.optional(),bluebubbles:a_.optional(),msteams:c_.optional()}).passthrough().optional(),b_=b.object({mode:b.union([b.literal(`daily`),b.literal(`idle`)]).optional(),atHour:b.number().int().min(0).max(23).optional(),idleMinutes:b.number().int().positive().optional()}).strict(),x_=$p(),S_=b.object({scope:b.union([b.literal(`per-sender`),b.literal(`global`)]).optional(),dmScope:b.union([b.literal(`main`),b.literal(`per-peer`),b.literal(`per-channel-peer`),b.literal(`per-account-channel-peer`)]).optional(),identityLinks:b.record(b.string(),b.array(b.string())).optional(),resetTriggers:b.array(b.string()).optional(),idleMinutes:b.number().int().positive().optional(),reset:b_.optional(),resetByType:b.object({direct:b_.optional(),dm:b_.optional(),group:b_.optional(),thread:b_.optional()}).strict().optional(),resetByChannel:b.record(b.string(),b_).optional(),store:b.string().optional(),typingIntervalSeconds:b.number().int().positive().optional(),typingMode:Tm.optional(),parentForkMaxTokens:b.number().int().nonnegative().optional(),mainKey:b.string().optional(),sendPolicy:x_.optional(),agentToAgent:b.object({maxPingPongTurns:b.number().int().min(0).max(5).optional()}).strict().optional(),threadBindings:b.object({enabled:b.boolean().optional(),idleHours:b.number().nonnegative().optional(),maxAgeHours:b.number().nonnegative().optional()}).strict().optional(),maintenance:b.object({mode:b.enum([`enforce`,`warn`]).optional(),pruneAfter:b.union([b.string(),b.number()]).optional(),pruneDays:b.number().int().positive().optional(),maxEntries:b.number().int().positive().optional(),rotateBytes:b.union([b.string(),b.number()]).optional(),resetArchiveRetention:b.union([b.string(),b.number(),b.literal(!1)]).optional(),maxDiskBytes:b.union([b.string(),b.number()]).optional(),highWaterBytes:b.union([b.string(),b.number()]).optional()}).strict().superRefine((e,t)=>{if(e.pruneAfter!==void 0)try{Wp(String(e.pruneAfter).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`pruneAfter`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.rotateBytes!==void 0)try{Hp(String(e.rotateBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`rotateBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.resetArchiveRetention!==void 0&&e.resetArchiveRetention!==!1)try{Wp(String(e.resetArchiveRetention).trim(),{defaultUnit:`d`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`resetArchiveRetention`],message:`invalid duration (use ms, s, m, h, d)`})}if(e.maxDiskBytes!==void 0)try{Hp(String(e.maxDiskBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`maxDiskBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}if(e.highWaterBytes!==void 0)try{Hp(String(e.highWaterBytes).trim(),{defaultUnit:`b`})}catch{t.addIssue({code:b.ZodIssueCode.custom,path:[`highWaterBytes`],message:`invalid size (use b, kb, mb, gb, tb)`})}}).optional()}).strict().optional(),C_=b.object({messagePrefix:b.string().optional(),responsePrefix:b.string().optional(),groupChat:xm,queue:Vm,inbound:Hm,ackReaction:b.string().optional(),ackReactionScope:b.enum([`group-mentions`,`group-all`,`direct`,`all`]).optional(),removeAckAfterReply:b.boolean().optional(),statusReactions:b.object({enabled:b.boolean().optional(),emojis:b.object({thinking:b.string().optional(),tool:b.string().optional(),coding:b.string().optional(),web:b.string().optional(),done:b.string().optional(),error:b.string().optional(),stallSoft:b.string().optional(),stallHard:b.string().optional()}).strict().optional(),timing:b.object({debounceMs:b.number().int().min(0).optional(),stallSoftMs:b.number().int().min(0).optional(),stallHardMs:b.number().int().min(0).optional(),doneHoldMs:b.number().int().min(0).optional(),errorHoldMs:b.number().int().min(0).optional()}).strict().optional()}).strict().optional(),suppressToolErrors:b.boolean().optional(),tts:Mm}).strict().optional(),w_=b.object({native:ih.optional().default(`auto`),nativeSkills:ih.optional().default(`auto`),text:b.boolean().optional(),bash:b.boolean().optional(),bashForegroundMs:b.number().int().min(0).max(3e4).optional(),config:b.boolean().optional(),debug:b.boolean().optional(),restart:b.boolean().optional().default(!0),useAccessGroups:b.boolean().optional(),ownerAllowFrom:b.array(b.union([b.string(),b.number()])).optional(),ownerDisplay:b.enum([`raw`,`hash`]).optional().default(`raw`),ownerDisplaySecret:b.string().optional().register(H),allowFrom:gh.optional()}).strict().optional().default(()=>({native:`auto`,nativeSkills:`auto`,restart:!0,ownerDisplay:`raw`})),T_=b.object({mode:b.literal(`efficient`).optional()}).strict().optional(),E_=b.object({browserProxy:b.object({enabled:b.boolean().optional(),allowProfiles:b.array(b.string()).optional()}).strict().optional()}).strict().optional(),D_=b.object({path:b.string(),name:b.string().optional(),pattern:b.string().optional()}).strict(),O_=b.object({enabled:b.boolean().optional(),exportDir:b.string().optional(),retentionDays:b.number().int().nonnegative().optional()}).strict(),k_=b.object({voiceId:b.string().optional(),voiceAliases:b.record(b.string(),b.string()).optional(),modelId:b.string().optional(),outputFormat:b.string().optional(),apiKey:U.optional().register(H)}).catchall(b.unknown()),A_=b.object({transcription:Um}).strict().optional(),j_=b.object({interval:b.string().optional(),debounceMs:b.number().int().nonnegative().optional(),onBoot:b.boolean().optional(),waitForBootSync:b.boolean().optional(),embedInterval:b.string().optional(),commandTimeoutMs:b.number().int().nonnegative().optional(),updateTimeoutMs:b.number().int().nonnegative().optional(),embedTimeoutMs:b.number().int().nonnegative().optional()}).strict(),M_=b.object({maxResults:b.number().int().positive().optional(),maxSnippetChars:b.number().int().positive().optional(),maxInjectedChars:b.number().int().positive().optional(),timeoutMs:b.number().int().nonnegative().optional()}).strict(),N_=b.object({command:b.string().optional(),searchMode:b.union([b.literal(`query`),b.literal(`search`),b.literal(`vsearch`)]).optional(),includeDefaultMemory:b.boolean().optional(),paths:b.array(D_).optional(),sessions:O_.optional(),update:j_.optional(),limits:M_.optional(),scope:x_.optional()}).strict(),P_=b.object({backend:b.union([b.literal(`builtin`),b.literal(`qmd`)]).optional(),citations:b.union([b.literal(`auto`),b.literal(`on`),b.literal(`off`)]).optional(),qmd:N_.optional()}).strict().optional(),F_=b.object({enabled:b.boolean().optional(),dispatch:b.object({enabled:b.boolean().optional()}).strict().optional(),backend:b.string().optional(),defaultAgent:b.string().optional(),allowedAgents:b.array(b.string()).optional(),maxConcurrentSessions:b.number().int().positive().optional(),stream:b.object({coalesceIdleMs:b.number().int().nonnegative().optional(),maxChunkChars:b.number().int().positive().optional()}).strict().optional(),runtime:b.object({ttlMinutes:b.number().int().positive().optional(),installCommand:b.string().optional()}).strict().optional()}).strict().optional(),I_=b.string().refine(e=>{try{return Wp(e),!0}catch{return!1}},{message:`invalid duration (use ms, s, m, h, d)`}),L_=b.union([b.number().int().positive(),b.string()]).refine(e=>{try{return Hp(String(e).trim(),{defaultUnit:`b`})>0}catch{return!1}},{message:`invalid byte size`}),R_=b.object({maxBytes:L_.optional(),keepLines:b.number().int().positive().optional()}).strict(),z_=b.union([b.string(),b.number().transform((e,t)=>{let n=new Date(e);return!Number.isFinite(e)||Number.isNaN(n.getTime())?(t.addIssue({code:b.ZodIssueCode.custom,message:`invalid timestamp`}),b.NEVER):n.toISOString()})]),B_=b.union([b.literal(`per-job`),b.literal(`per-hour`),b.literal(`per-1k-rows`),b.literal(`per-api-call`),b.literal(`per-day`),b.literal(`per-month`),b.literal(`custom`)]),V_=b.object({currency:b.string().optional(),model:b.string().optional(),amount:b.number().positive().optional(),unit:B_.optional(),unitLabel:b.string().optional()}).strict().optional(),H_=b.union([b.literal(`human`),b.literal(`agent`),b.literal(`agent-approval`),b.literal(`api`),b.literal(`dataset`),b.literal(`hybrid`)]),U_=b.object({kind:b.union([b.literal(`result`),b.literal(`artifact`),b.literal(`invoice`),b.literal(`receipt`),b.literal(`tx`),b.literal(`signature`),b.literal(`manual`)]).optional(),required:b.boolean().optional(),description:b.string().optional()}).strict(),W_=b.object({allowed:b.boolean().optional(),humanApprovalRequired:b.boolean().optional(),allowedSkills:b.array(b.string()).optional(),allowedPlugins:b.array(b.string()).optional(),maxRuntimeSeconds:b.number().int().positive().optional(),maxSpendAmount:b.number().positive().optional(),maxSpendCurrency:b.string().optional()}).strict().optional(),G_=b.object({kind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),address:b.string().optional()}).strict().optional(),K_=b.object({chain:b.literal(`solana`).optional(),address:b.string().optional()}).strict().optional(),q_=b.object({currency:b.string().optional(),chain:b.literal(`solana`).optional(),assetDecimals:b.number().int().min(0).max(18).optional(),asset:G_,payee:K_}).strict().optional(),J_=b.object({id:b.string().optional(),source:b.union([b.literal(`builtin`),b.literal(`manual`),b.literal(`skill`)]).optional(),enabled:b.boolean().optional(),title:b.string(),summary:b.string().optional(),serviceKind:b.string(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),capabilities:b.array(b.string()).optional(),pricing:V_,fulfillmentMode:H_.optional(),performer:H_.optional(),receiptRules:b.array(U_).optional(),automation:W_,paymentRails:b.array(b.string()).optional(),acceptedAssets:b.array(b.string()).optional(),paymentDefaults:q_,availability:b.string().optional(),visibility:b.string().optional(),requiredTrustOrBondTier:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),Y_=b.union([b.literal(`draft`),b.literal(`open`),b.literal(`matched`),b.literal(`closed`)]),X_=b.union([b.literal(`draft`),b.literal(`accepted`),b.literal(`funded`),b.literal(`running`),b.literal(`delivered`),b.literal(`disputed`),b.literal(`closed`),b.literal(`cancelled`)]),Z_=b.union([b.literal(`not_submitted`),b.literal(`pending`),b.literal(`accepted`),b.literal(`failed`)]),Q_=b.union([b.literal(`draft`),b.literal(`requires_payment`),b.literal(`submitted`),b.literal(`verified`),b.literal(`failed`),b.literal(`cancelled`)]),$_=b.union([b.literal(`direct`),b.literal(`escrow`)]),ev=b.union([b.literal(`not_required`),b.literal(`requires_payment`),b.literal(`submitted`),b.literal(`verified`),b.literal(`settled`),b.literal(`held`),b.literal(`released`),b.literal(`failed`),b.literal(`disputed`),b.literal(`cancelled`)]),tv=b.union([b.literal(`not_applicable`),b.literal(`required`),b.literal(`funded`),b.literal(`held`),b.literal(`released`),b.literal(`refunded`),b.literal(`cancelled`),b.literal(`blocked`)]),nv=b.union([b.literal(`pending`),b.literal(`ready`),b.literal(`running`),b.literal(`delivered`),b.literal(`failed`),b.literal(`blocked`)]),rv=b.union([b.literal(`pending`),b.literal(`issued`),b.literal(`verified`),b.literal(`rejected`)]),iv=b.union([b.literal(`one-time`),b.literal(`per-job`),b.literal(`per-hour`),b.literal(`per-1k-rows`),b.literal(`per-api-call`),b.literal(`per-day`),b.literal(`per-week`),b.literal(`per-month`),b.literal(`custom`)]),av=b.union([b.literal(`not_applicable`),b.literal(`draft`),b.literal(`active`),b.literal(`past_due`),b.literal(`paused`),b.literal(`expired`),b.literal(`cancelled`),b.literal(`blocked`)]),ov=b.union([b.literal(`none`),b.literal(`manual`),b.literal(`auto-renew`),b.literal(`auto-renew-with-approval`)]),sv=b.union([b.literal(`not_required`),b.literal(`scheduled`),b.literal(`stopped`),b.literal(`blocked`)]),cv=b.object({status:av.optional(),billingPeriod:iv.optional(),maxBuyers:b.number().int().positive().optional(),remainingSlots:b.number().int().min(0).optional(),startsAt:b.string().optional(),endsAt:b.string().optional(),renewalPolicy:ov.optional(),paymentExpiresAt:b.string().optional(),deliveryStop:b.object({status:sv.optional(),reason:b.string().optional(),scheduledAt:b.string().optional(),stoppedAt:b.string().optional(),updatedAt:b.string().optional()}).strict().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),lv=b.union([b.literal(`app-inbox`),b.literal(`channel`),b.literal(`webhook`),b.literal(`websocket`),b.literal(`federation`),b.literal(`api`),b.literal(`artifact`)]),uv=b.union([b.literal(`draft`),b.literal(`ready`),b.literal(`revoked`),b.literal(`expired`),b.literal(`blocked`)]),dv=b.object({targetId:b.string().optional(),source:b.union([b.literal(`order`),b.literal(`subscription`),b.literal(`manual`)]).optional(),owner:b.union([b.literal(`buyer`),b.literal(`seller`)]).optional(),kind:lv.optional(),status:uv.optional(),label:b.string().optional(),descriptor:b.string().optional(),maskedTarget:b.string().optional(),scope:b.object({orderId:b.string().optional(),subscriptionId:b.string().optional(),serviceKind:b.string().optional(),expiresAt:b.string().optional(),maxDeliveries:b.number().int().positive().optional()}).strict().optional(),channel:b.object({provider:b.string().optional(),to:b.string().optional(),accountId:b.string().optional(),threadId:b.union([b.string(),b.number()]).optional()}).strict().optional(),webhook:b.object({url:b.string().optional(),method:b.literal(`POST`).optional(),secretRef:b.string().optional()}).strict().optional(),websocket:b.object({url:b.string().optional(),tokenRef:b.string().optional()}).strict().optional(),federation:b.object({handle:b.string().optional(),nodeEndpoint:b.string().optional()}).strict().optional(),api:b.object({url:b.string().optional(),tokenRef:b.string().optional()}).strict().optional(),artifact:b.object({artifactRef:b.string().optional()}).strict().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional(),revokedAt:b.string().optional()}).strict(),fv=b.object({intentId:b.string().optional(),status:Q_.optional(),amount:b.number().optional(),currency:b.string().optional(),unit:B_.optional(),method:b.string().optional(),chain:b.literal(`solana`).optional(),assetKind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),assetAddress:b.string().optional(),assetDecimals:b.number().int().min(0).max(18).optional(),expiresInMinutes:b.number().int().positive().optional(),acceptedAssets:b.array(b.string()).optional(),payerWalletId:b.string().optional(),payeeHandle:b.string().optional(),payeeAddress:b.string().optional(),txRef:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),pv=b.object({status:tv.optional(),holdPolicy:b.union([b.literal(`none`),b.literal(`release_on_delivery`),b.literal(`manual_release`)]).optional(),releaseRequired:b.boolean().optional(),vaultWalletId:b.string().optional(),vaultWalletName:b.string().optional(),vaultAddress:b.string().optional(),fundingRequestId:b.string().optional(),fundingTxRef:b.string().optional(),fundedAt:b.string().optional(),releaseRequestId:b.string().optional(),releaseTxRef:b.string().optional(),releasedAt:b.string().optional(),refundRequestId:b.string().optional(),refundTxRef:b.string().optional(),refundedAt:b.string().optional(),cancelledAt:b.string().optional(),notes:b.string().optional(),updatedAt:b.string().optional()}).strict(),mv=b.object({mode:$_.optional(),status:ev.optional(),amount:b.number().optional(),currency:b.string().optional(),chain:b.literal(`solana`).optional(),assetKind:b.union([b.literal(`native`),b.literal(`spl-token`)]).optional(),assetAddress:b.string().optional(),assetDecimals:b.number().int().min(0).max(18).optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),evidenceRef:b.string().optional(),payerWalletId:b.string().optional(),payeeAddress:b.string().optional(),escrow:pv.optional(),notes:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional(),verifiedAt:b.string().optional(),settledAt:b.string().optional()}).strict(),hv=b.object({status:nv.optional(),fulfillmentMode:H_.optional(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),targetId:b.string().optional(),targetKind:lv.optional(),targetStatus:uv.optional(),targetLabel:b.string().optional(),targetMasked:b.string().optional(),target:dv.optional(),resultRef:b.string().optional(),artifactRef:b.string().optional(),notes:b.string().optional(),deliveredAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),gv=b.object({status:rv.optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),resultRef:b.string().optional(),disputeCaseId:b.string().optional(),notes:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),_v=b.object({id:b.string().optional(),source:b.union([b.literal(`manual`),b.literal(`chat`)]).optional(),enabled:b.boolean().optional(),status:Y_.optional(),title:b.string(),summary:b.string().optional(),serviceKind:b.string(),inputShape:b.string().optional(),deliveryShape:b.string().optional(),capabilities:b.array(b.string()).optional(),pricing:V_,fulfillmentMode:H_.optional(),receiptRules:b.array(U_).optional(),paymentRails:b.array(b.string()).optional(),acceptedAssets:b.array(b.string()).optional(),requiredTrustOrBondTier:b.string().optional(),visibility:b.string().optional(),expiresAt:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),vv=b.object({id:b.string().optional(),source:b.union([b.literal(`local`),b.literal(`federation`)]).optional(),status:X_.optional(),offerId:b.string().optional(),requestId:b.string().optional(),buyerHandle:b.string().optional(),sellerHandle:b.string().optional(),sellerEndpoint:b.string().optional(),sellerOrderId:b.string().optional(),sellerSyncStatus:Z_.optional(),sellerSyncError:b.string().optional(),sellerSyncedAt:b.string().optional(),sellerAcceptedAt:b.string().optional(),serviceKind:b.string().optional(),title:b.string().optional(),pricing:V_,fulfillmentMode:H_.optional(),receiptRules:b.array(U_).optional(),paymentIntent:fv.optional(),settlement:mv.optional(),delivery:hv.optional(),subscription:cv.optional(),receipt:gv.optional(),invoiceId:b.string().optional(),receiptId:b.string().optional(),txRef:b.string().optional(),resultRef:b.string().optional(),disputeCaseId:b.string().optional(),createdAt:b.string().optional(),updatedAt:b.string().optional()}).strict(),yv=b.object({allowPrograms:b.array(b.string()).optional(),tokenCaps:b.record(b.string(),b.object({maxPerTx:b.string().optional(),maxDaily:b.string().optional()}).strict()).optional(),maxPerTx:b.string().optional(),maxDaily:b.string().optional()}).strict(),bv=b.object({provider:b.object({id:b.union([b.literal(`embedded-keystore`),b.literal(`local-socket-signer`),b.literal(`alchemy`),b.literal(`turnkey`),b.literal(`privy`)]).optional()}).strict().optional(),execution:b.object({mode:b.union([b.literal(`manual`),b.literal(`autonomous`)]).optional()}).strict().optional(),approvalAuth:b.object({mode:b.union([b.literal(`none`),b.literal(`webauthn`)]).optional(),challengeTtlSeconds:b.number().int().positive().optional(),grantTtlSeconds:b.number().int().positive().optional()}).strict().optional(),keystore:b.object({enabled:b.boolean().optional(),path:b.string().optional(),chainSupport:b.array(b.literal(`solana`)).optional(),autoLockSeconds:b.number().int().nonnegative().optional(),requirePasskeyForUnlock:b.boolean().optional()}).strict().optional(),runtime:b.object({enabled:b.boolean().optional(),mode:b.union([b.literal(`managed`),b.literal(`external`)]).optional(),runtime:b.union([b.literal(`external-docker`),b.literal(`external-custom`)]).optional(),external:b.object({kind:b.union([b.literal(`docker`),b.literal(`custom`)]).optional()}).strict().optional(),auth:b.object({mode:b.union([b.literal(`jwt-bootstrap`),b.literal(`static-token-compat`)]).optional(),bootstrapUrl:b.string().optional()}).strict().optional(),source:b.object({ref:b.string().optional()}).strict().optional(),chains:b.array(b.literal(`solana`)).optional(),service:b.object({host:b.string().optional(),port:b.number().int().min(1).max(65535).optional()}).strict().optional(),install:b.object({enabled:b.boolean().optional(),version:b.string().optional()}).strict().optional(),policy:b.object({capsEnabled:b.boolean().optional(),directSigning:b.boolean().optional(),skillsEnabled:b.boolean().optional(),solana:yv.optional()}).strict().optional(),toolAccess:b.object({mode:b.union([b.literal(`owner-only`),b.literal(`allowlist`),b.literal(`all`)]).optional(),allowAgents:b.array(b.string()).optional(),allowSkills:b.array(b.string()).optional(),denySkills:b.array(b.string()).optional(),allowSources:b.array(b.string()).optional()}).strict().optional()}).strict().optional()}).strict().optional(),xv=b.object({$schema:b.string().optional(),meta:b.object({lastTouchedVersion:b.string().optional(),lastTouchedAt:z_.optional()}).strict().optional(),env:b.object({shellEnv:b.object({enabled:b.boolean().optional(),timeoutMs:b.number().int().nonnegative().optional()}).strict().optional(),vars:b.record(b.string(),b.string()).optional()}).catchall(b.string()).optional(),wizard:b.object({lastRunAt:b.string().optional(),lastRunVersion:b.string().optional(),lastRunCommit:b.string().optional(),lastRunCommand:b.string().optional(),lastRunMode:b.union([b.literal(`local`),b.literal(`remote`)]).optional()}).strict().optional(),diagnostics:b.object({enabled:b.boolean().optional(),flags:b.array(b.string()).optional(),otel:b.object({enabled:b.boolean().optional(),endpoint:b.string().optional(),protocol:b.union([b.literal(`http/protobuf`),b.literal(`grpc`)]).optional(),headers:b.record(b.string(),b.string()).optional(),serviceName:b.string().optional(),traces:b.boolean().optional(),metrics:b.boolean().optional(),logs:b.boolean().optional(),sampleRate:b.number().min(0).max(1).optional(),flushIntervalMs:b.number().int().nonnegative().optional()}).strict().optional(),prometheus:b.object({enabled:b.boolean().optional(),path:b.string().optional(),requireAuth:b.boolean().optional(),includeRuntime:b.boolean().optional()}).strict().optional(),cacheTrace:b.object({enabled:b.boolean().optional(),filePath:b.string().optional(),includeMessages:b.boolean().optional(),includePrompt:b.boolean().optional(),includeSystem:b.boolean().optional()}).strict().optional()}).strict().optional(),logging:b.object({level:b.union([b.literal(`silent`),b.literal(`fatal`),b.literal(`error`),b.literal(`warn`),b.literal(`info`),b.literal(`debug`),b.literal(`trace`)]).optional(),file:b.string().optional(),maxFileBytes:b.number().int().positive().optional(),consoleLevel:b.union([b.literal(`silent`),b.literal(`fatal`),b.literal(`error`),b.literal(`warn`),b.literal(`info`),b.literal(`debug`),b.literal(`trace`)]).optional(),consoleStyle:b.union([b.literal(`pretty`),b.literal(`compact`),b.literal(`json`)]).optional(),redactSensitive:b.union([b.literal(`off`),b.literal(`tools`)]).optional(),redactPatterns:b.array(b.string()).optional()}).strict().optional(),update:b.object({channel:b.union([b.literal(`stable`),b.literal(`beta`),b.literal(`dev`)]).optional(),checkOnStart:b.boolean().optional()}).strict().optional(),browser:b.object({enabled:b.boolean().optional(),evaluateEnabled:b.boolean().optional(),cdpUrl:b.string().optional(),remoteCdpTimeoutMs:b.number().int().nonnegative().optional(),remoteCdpHandshakeTimeoutMs:b.number().int().nonnegative().optional(),color:b.string().optional(),executablePath:b.string().optional(),headless:b.boolean().optional(),noSandbox:b.boolean().optional(),attachOnly:b.boolean().optional(),defaultProfile:b.string().optional(),snapshotDefaults:T_,profiles:b.record(b.string().regex(/^[a-z0-9-]+$/,`Profile names must be alphanumeric with hyphens only`),b.object({cdpPort:b.number().int().min(1).max(65535).optional(),cdpUrl:b.string().optional(),driver:b.union([b.literal(`clawd`),b.literal(`extension`)]).optional(),color:Wm}).strict().refine(e=>e.cdpPort||e.cdpUrl,{message:`Profile must set cdpPort or cdpUrl`})).optional()}).strict().optional(),ui:b.object({seamColor:Wm.optional(),assistant:b.object({name:b.string().max(50).optional(),avatar:b.string().max(200).optional()}).strict().optional()}).strict().optional(),auth:b.object({profiles:b.record(b.string(),b.object({provider:b.string(),mode:b.union([b.literal(`api_key`),b.literal(`oauth`),b.literal(`token`)]),email:b.string().optional()}).strict()).optional(),order:b.record(b.string(),b.array(b.string())).optional(),cooldowns:b.object({billingBackoffHours:b.number().positive().optional(),billingBackoffHoursByProvider:b.record(b.string(),b.number().positive()).optional(),overloadedBackoffMs:b.number().positive().optional(),overloadedProfileRotations:b.number().nonnegative().optional(),rateLimitedProfileRotations:b.number().nonnegative().optional(),billingMaxHours:b.number().positive().optional(),failureWindowHours:b.number().positive().optional()}).strict().optional()}).strict().optional(),acp:F_,models:bm,nodeHost:E_,agents:Mh,tools:Ah,bindings:Nh,broadcast:Fh,audio:A_,media:b.object({preserveFilenames:b.boolean().optional()}).strict().optional(),messages:C_,commands:w_,approvals:Rh,session:S_,cron:b.object({enabled:b.boolean().optional(),store:b.string().optional(),maxConcurrentRuns:b.number().int().positive().optional(),webhook:b.string().url().refine(e=>/^https?:\/\//iu.test(e),`Must be an http(s) URL`).optional(),webhookToken:b.string().optional().register(H),sessionRetention:b.union([I_,b.literal(!1)]).optional(),runLog:R_.optional()}).strict().optional(),hooks:b.object({enabled:b.boolean().optional(),path:b.string().optional(),token:b.string().optional().register(H),defaultSessionKey:b.string().optional(),allowRequestSessionKey:b.boolean().optional(),allowedSessionKeyPrefixes:b.array(b.string()).optional(),allowedAgentIds:b.array(b.string()).optional(),maxBodyBytes:b.number().int().positive().optional(),presets:b.array(b.string()).optional(),transformsDir:b.string().optional(),mappings:b.array(Vh).optional(),gmail:Kh,internal:Gh}).strict().optional(),web:b.object({enabled:b.boolean().optional(),heartbeatSeconds:b.number().int().positive().optional(),reconnect:b.object({initialMs:b.number().positive().optional(),maxMs:b.number().positive().optional(),factor:b.number().positive().optional(),jitter:b.number().min(0).max(1).optional(),maxAttempts:b.number().int().min(0).optional()}).strict().optional()}).strict().optional(),channels:y_,discovery:b.object({wideArea:b.object({enabled:b.boolean().optional(),domain:b.string().optional()}).strict().optional(),mdns:b.object({mode:b.enum([`off`,`minimal`,`full`]).optional()}).strict().optional()}).strict().optional(),federation:b.object({offers:b.object({manual:b.array(J_).optional(),skill:b.array(J_.extend({source:b.union([b.literal(`skill`)]).optional(),skillId:b.string().optional()}).strict()).optional()}).strict().optional(),marketplace:b.object({requests:b.object({manual:b.array(_v).optional()}).strict().optional(),deliveryTargets:b.object({local:b.array(dv).optional()}).strict().optional(),orders:b.object({local:b.array(vv).optional()}).strict().optional()}).strict().optional(),bond:b.object({walletId:b.string().optional()}).strict().optional()}).strict().optional(),canvasHost:b.object({enabled:b.boolean().optional(),root:b.string().optional(),port:b.number().int().positive().optional(),liveReload:b.boolean().optional()}).strict().optional(),talk:b.object({provider:b.string().optional(),providers:b.record(b.string(),k_).optional(),voiceId:b.string().optional(),voiceAliases:b.record(b.string(),b.string()).optional(),modelId:b.string().optional(),outputFormat:b.string().optional(),apiKey:U.optional().register(H),interruptOnSpeech:b.boolean().optional()}).strict().optional(),gateway:b.object({port:b.number().int().positive().optional(),channelHealthCheckMinutes:b.number().int().min(0).optional(),mode:b.union([b.literal(`local`),b.literal(`remote`)]).optional(),bind:b.union([b.literal(`auto`),b.literal(`lan`),b.literal(`loopback`),b.literal(`custom`),b.literal(`tailnet`)]).optional(),controlUi:b.object({enabled:b.boolean().optional(),basePath:b.string().optional(),root:b.string().optional(),allowedOrigins:b.array(b.string()).optional(),allowInsecureAuth:b.boolean().optional(),dangerouslyDisableDeviceAuth:b.boolean().optional(),dangerouslyAllowHostHeaderOriginFallback:b.boolean().optional()}).strict().optional(),auth:b.object({mode:b.union([b.literal(`token`),b.literal(`password`),b.literal(`trusted-proxy`)]).optional(),token:b.string().optional().register(H),password:b.string().optional().register(H),allowTailscale:b.boolean().optional(),rateLimit:b.object({maxAttempts:b.number().optional(),windowMs:b.number().optional(),lockoutMs:b.number().optional(),exemptLoopback:b.boolean().optional()}).strict().optional(),trustedProxy:b.object({userHeader:b.string().min(1,`userHeader is required for trusted-proxy mode`),requiredHeaders:b.array(b.string()).optional(),allowUsers:b.array(b.string()).optional()}).strict().optional()}).strict().optional(),trustedProxies:b.array(b.string()).optional(),tools:b.object({deny:b.array(b.string()).optional(),allow:b.array(b.string()).optional()}).strict().optional(),tailscale:b.object({mode:b.union([b.literal(`off`),b.literal(`serve`),b.literal(`funnel`)]).optional(),resetOnExit:b.boolean().optional()}).strict().optional(),remote:b.object({url:b.string().optional(),transport:b.union([b.literal(`ssh`),b.literal(`direct`)]).optional(),token:b.string().optional().register(H),password:b.string().optional().register(H),tlsFingerprint:b.string().optional(),sshTarget:b.string().optional(),sshIdentity:b.string().optional()}).strict().optional(),reload:b.object({mode:b.union([b.literal(`off`),b.literal(`restart`),b.literal(`hot`),b.literal(`hybrid`)]).optional(),debounceMs:b.number().int().min(0).optional()}).strict().optional(),tls:b.object({enabled:b.boolean().optional(),autoGenerate:b.boolean().optional(),certPath:b.string().optional(),keyPath:b.string().optional(),caPath:b.string().optional()}).optional(),http:b.object({endpoints:b.object({chatCompletions:b.object({enabled:b.boolean().optional()}).strict().optional(),responses:b.object({enabled:b.boolean().optional(),maxBodyBytes:b.number().int().positive().optional(),maxUrlParts:b.number().int().nonnegative().optional(),files:b.object({allowUrl:b.boolean().optional(),urlAllowlist:b.array(b.string()).optional(),allowedMimes:b.array(b.string()).optional(),maxBytes:b.number().int().positive().optional(),maxChars:b.number().int().positive().optional(),maxRedirects:b.number().int().nonnegative().optional(),timeoutMs:b.number().int().positive().optional(),pdf:b.object({maxPages:b.number().int().positive().optional(),maxPixels:b.number().int().positive().optional(),minTextChars:b.number().int().nonnegative().optional()}).strict().optional()}).strict().optional(),images:b.object({allowUrl:b.boolean().optional(),urlAllowlist:b.array(b.string()).optional(),allowedMimes:b.array(b.string()).optional(),maxBytes:b.number().int().positive().optional(),maxRedirects:b.number().int().nonnegative().optional(),timeoutMs:b.number().int().positive().optional()}).strict().optional()}).strict().optional()}).strict().optional(),securityHeaders:b.object({strictTransportSecurity:b.union([b.string(),b.literal(!1)]).optional()}).strict().optional()}).strict().optional(),nodes:b.object({browser:b.object({mode:b.union([b.literal(`auto`),b.literal(`manual`),b.literal(`off`)]).optional(),node:b.string().optional()}).strict().optional(),allowCommands:b.array(b.string()).optional(),denyCommands:b.array(b.string()).optional()}).strict().optional(),customBindHost:b.string().optional(),allowRealIpFallback:b.boolean().optional()}).strict().optional(),memory:P_,wallet:bv,secrets:mm,mcp:b.object({servers:b.record(b.string(),b.record(b.string(),b.unknown())).optional()}).strict().optional(),skills:b.object({allowBundled:b.array(b.string()).optional(),load:b.object({extraDirs:b.array(b.string()).optional(),watch:b.boolean().optional(),watchDebounceMs:b.number().int().min(0).optional()}).strict().optional(),install:b.object({preferBrew:b.boolean().optional(),nodeManager:b.union([b.literal(`npm`),b.literal(`pnpm`),b.literal(`yarn`),b.literal(`bun`)]).optional()}).strict().optional(),marketplace:b.object({allowRegistries:b.array(b.string()).optional()}).strict().optional(),entries:b.record(b.string(),b.object({enabled:b.boolean().optional(),apiKey:U.optional().register(H),env:b.record(b.string(),b.string()).optional(),config:b.record(b.string(),b.unknown()).optional()}).strict()).optional()}).strict().optional(),plugins:b.object({enabled:b.boolean().optional(),allow:b.array(b.string()).optional(),deny:b.array(b.string()).optional(),load:b.object({paths:b.array(b.string()).optional()}).strict().optional(),slots:b.object({memory:b.string().optional()}).strict().optional(),entries:b.record(b.string(),b.object({enabled:b.boolean().optional(),config:b.record(b.string(),b.unknown()).optional(),runtime:b.object({helpers:b.object({sessions:b.object({read:b.boolean().optional()}).strict().optional()}).strict().optional(),adminRpcActions:b.object({allow:b.array(b.object({method:b.union([b.literal(`chat.inject`),b.literal(`push.test`),b.literal(`web.login.start`),b.literal(`web.login.wait`)]).optional(),sources:b.array(b.string()).optional(),requireOperatorApproval:b.boolean().optional()}).strict()).optional()}).strict().optional()}).strict().optional()}).strict()).optional(),installs:b.record(b.string(),b.object(qh).strict()).optional()}).strict().optional()}).strict().superRefine((e,t)=>{let n=e.agents?.list??[];if(n.length===0)return;let r=new Set(n.map(e=>e.id)),i=e.broadcast;if(i){for(let[e,n]of Object.entries(i))if(e!==`strategy`&&Array.isArray(n))for(let i=0;i<n.length;i+=1){let a=n[i];r.has(a)||t.addIssue({code:b.ZodIssueCode.custom,path:[`broadcast`,e,i],message:`Unknown agent id "${a}" (not in agents.list).`})}}}),Sv=new Set;function Cv(e,t){let n=i.resolve(t);return Bp(n,i.resolve(n,e))}function wv(e){let t=e.agents?.list;if(!Array.isArray(t)||t.length===0)return[];let n=[];for(let[r,i]of t.entries()){if(!i||typeof i!=`object`)continue;let t=i.identity?.avatar;if(typeof t!=`string`)continue;let a=t.trim();if(a&&!(Ip(a)||Lp(a))){if(a.startsWith(`~`)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}if(Rp(a)&&!zp(a)){n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must be a workspace-relative path, http(s) URL, or data URI.`});continue}Cv(a,Zc(e,i.id??Jc(e)))||n.push({path:`agents.list.${r}.identity.avatar`,message:`identity.avatar must stay within the agent workspace.`})}}return n}function Tv(e){let t=qf(e);if(t.length>0)return{ok:!1,issues:t.map(e=>({path:e.path,message:e.message}))};let n=xv.safeParse(e);if(!n.success)return{ok:!1,issues:n.error.issues.map(e=>({path:e.path.join(`.`),message:e.message}))};let r=ta(n.data);if(r.length>0)return{ok:!1,issues:[{path:`agents.list`,message:na(r)}]};let i=wv(n.data);return i.length>0?{ok:!1,issues:i}:{ok:!0,config:n.data}}function Ev(e){let t=Tv(e);return t.ok?{ok:!0,config:Rd(zd(Fd(t.config)))}:t}function Dv(e){return kv(e,{applyDefaults:!0})}function Ov(e){return kv(e,{applyDefaults:!1})}function kv(e,t){let n=t.applyDefaults?Ev(e):Tv(e);if(!n.ok)return{ok:!1,issues:n.issues,warnings:[]};let r=n.config,i=[],a=[],o=E(e)&&Object.prototype.hasOwnProperty.call(e,`plugins`),s=null,c=()=>{if(s)return s;let e=cu({config:r,workspaceDir:Zc(r,Jc(r))??void 0}),t=new Set(e.plugins.map(e=>e.id)),n=hl(r.plugins);for(let t of e.diagnostics){let e=t.pluginId?`plugins.entries.${t.pluginId}`:`plugins`;!t.pluginId&&t.message.includes(`plugin path not found`)&&(e=`plugins.load.paths`);let n=`${t.pluginId?`plugin ${t.pluginId}`:`plugin`}: ${t.message}`;t.level===`error`?i.push({path:e,message:n}):a.push({path:e,message:n})}return s={registry:e,knownIds:t,normalizedPlugins:n},s},l=new Set([`defaults`,`modelByChannel`,...wt]);if(r.channels&&E(r.channels))for(let e of Object.keys(r.channels)){let t=e.trim();if(t){if(!l.has(t)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels)l.add(e)}l.has(t)||i.push({path:`channels.${t}`,message:`unknown channel id: ${t}`})}}let u=new Set;for(let e of wt)u.add(e.toLowerCase());let d=(e,t)=>{if(typeof e!=`string`)return;let n=e.trim();if(!n){i.push({path:t,message:`heartbeat target must not be empty`});return}let r=n.toLowerCase();if(!(r===`last`||r===`none`)&&!Ot(n)){if(!u.has(r)){let{registry:e}=c();for(let t of e.plugins)for(let e of t.channels){let t=e.trim();t&&u.add(t.toLowerCase())}}u.has(r)||i.push({path:t,message:`unknown heartbeat target: ${e}`})}};if(d(r.agents?.defaults?.heartbeat?.target,`agents.defaults.heartbeat.target`),Array.isArray(r.agents?.list))for(let[e,t]of r.agents.list.entries())d(t?.heartbeat?.target,`agents.list.${e}.heartbeat.target`);if(!o)return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a};let{registry:f,knownIds:p,normalizedPlugins:m}=c(),h=(e,t,n)=>{if(!Sv.has(t)){if(n?.warnOnly){a.push({path:e,message:`plugin not found: ${t} (stale config entry ignored; remove it from plugins config)`});return}i.push({path:e,message:`plugin not found: ${t}`})}},g=r.plugins,_=g?.entries;if(_&&E(_))for(let e of Object.keys(_))p.has(e)||h(`plugins.entries.${e}`,e,{warnOnly:!0});let v=g?.allow??[];for(let e of v)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.allow`,e);let ee=g?.deny??[];for(let e of ee)typeof e!=`string`||!e.trim()||p.has(e)||h(`plugins.deny`,e);let y=m.slots.memory;typeof y==`string`&&y.trim()&&!p.has(y)&&h(`plugins.slots.memory`,y);let b=null,te=new Set;for(let e of f.plugins){let t=e.id;if(te.has(t))continue;te.add(t);let n=m.entries[t],o=!!n?.config,s=vl({id:t,origin:e.origin,config:m,rootConfig:r}),c=s.enabled,l=s.reason;if(c){let n=yl({id:t,kind:e.kind,slot:y,selectedId:b});n.enabled||(c=!1,l=n.reason),n.selected&&e.kind===`memory`&&(b=t)}if(c||o)if(e.configSchema){let r=jp({schema:e.configSchema,cacheKey:e.schemaCacheKey??e.manifestPath??t,value:n?.config??{}});if(!r.ok)for(let e of r.errors)i.push({path:`plugins.entries.${t}.config`,message:`invalid config: ${e}`})}else i.push({path:`plugins.entries.${t}`,message:`plugin schema missing for ${t}`});!c&&o&&a.push({path:`plugins.entries.${t}`,message:`plugin disabled (${l??`disabled`}) but config is present`})}return i.length>0?{ok:!1,issues:i,warnings:a}:{ok:!0,config:r,warnings:a}}const Av=/^v?(\d+)\.(\d+)\.(\d+)(?:-(\d+))?/,jv=/^v?(20\d{2})\.(\d{1,2})\.(\d{1,2})(?:-(\d+))?$/;function Mv(e){if(!e)return null;let t=e.trim().match(Av);if(!t)return null;let[,n,r,i,a]=t,o=e.trim().match(jv);return{major:Number.parseInt(n,10),minor:Number.parseInt(r,10),patch:Number.parseInt(i,10),revision:a?Number.parseInt(a,10):0,flavor:o?`calendar`:`semver`}}function Nv(e,t){let n=Mv(e),r=Mv(t);return!n||!r?null:n.flavor===r.flavor?n.major===r.major?n.minor===r.minor?n.patch===r.patch?n.revision===r.revision?0:n.revision<r.revision?-1:1:n.patch<r.patch?-1:1:n.minor<r.minor?-1:1:n.major<r.major?-1:1:0}const Pv=[`OPENAI_API_KEY`,`ANTHROPIC_API_KEY`,`ANTHROPIC_OAUTH_TOKEN`,`GEMINI_API_KEY`,`ZAI_API_KEY`,`OPENROUTER_API_KEY`,`AI_GATEWAY_API_KEY`,`MINIMAX_API_KEY`,`SYNTHETIC_API_KEY`,`ELEVENLABS_API_KEY`,`TELEGRAM_BOT_TOKEN`,`DISCORD_BOT_TOKEN`,`SLACK_BOT_TOKEN`,`SLACK_APP_TOKEN`,`FASED_GATEWAY_TOKEN`,`FASED_GATEWAY_PASSWORD`],Fv=[];function Iv(e){let t=e,n=[];for(let e of Fv){let r=!!(t.plugins?.entries&&e in t.plugins.entries),i=!!(t.plugins?.installs&&e in t.plugins.installs),a=Array.isArray(t.plugins?.allow)&&t.plugins.allow.includes(e),o=t.plugins?.slots?.memory===e;!r&&!i&&!a&&!o||(t=Ui(t,e).config,n.push(e))}return{config:t,removedPluginIds:n}}const Lv=/^(?<policyPath>[a-z0-9_.-]+)\s*=\s*"open"\s+requires\s+(?<allowPath>[a-z0-9_.-]+)(?:\s+\(or\s+[a-z0-9_.-]+\))?\s+to include "\*"$/i,Rv=new Set;function zv(e){return _.createHash(`sha256`).update(e??``).digest(`hex`)}function Bv(e,t){let n=t.match(Lv),r=n?.groups?.policyPath?.trim(),i=n?.groups?.allowPath?.trim();return!r||!i?`Config validation failed: ${e}: ${t}`:[`Config validation failed: ${e}`,``,`Configuration mismatch: ${r} is "open", but ${i} does not include "*".`,``,`Fix with:`,` fased config set ${i} '["*"]'`,``,`Or switch policy:`,` fased config set ${r} "pairing"`].join(`
3
+ `)}function Vv(e){return/^[0-9]+$/.test(e)}function Hv(e){return!!e&&typeof e==`object`&&!Array.isArray(e)}function Uv(e,t){return Object.prototype.hasOwnProperty.call(e,t)}const Wv=Symbol(`write-pruned-object`);function Gv(e,t,n){if(n>=t.length)return{changed:!1,value:e};let r=t[n],i=n===t.length-1;if(Array.isArray(e)){if(!Vv(r))return{changed:!1,value:e};let a=Number.parseInt(r,10);if(!Number.isFinite(a)||a<0||a>=e.length)return{changed:!1,value:e};if(i){let t=e.slice();return t.splice(a,1),{changed:!0,value:t}}let o=Gv(e[a],t,n+1);if(!o.changed)return{changed:!1,value:e};let s=e.slice();return o.value===Wv?s.splice(a,1):s[a]=o.value,{changed:!0,value:s}}if(Gi(r)||!Hv(e)||!Uv(e,r))return{changed:!1,value:e};if(i){let t={...e};return delete t[r],{changed:!0,value:Object.keys(t).length===0?Wv:t}}let a=Gv(e[r],t,n+1);if(!a.changed)return{changed:!1,value:e};let o={...e};return a.value===Wv?delete o[r]:o[r]=a.value,{changed:!0,value:Object.keys(o).length===0?Wv:o}}function Kv(e,t){if(t.length===0)return{changed:!1,next:e};let n=Gv(e,t,0);return n.changed?n.value===Wv?{changed:!0,next:{}}:Hv(n.value)?{changed:!0,next:Jv(n.value)}:{changed:!1,next:e}:{changed:!1,next:e}}function qv(e){if(typeof e.hash==`string`){let t=e.hash.trim();if(t)return t}return typeof e.raw==`string`?zv(e.raw):null}function Jv(e){return!e||typeof e!=`object`||Array.isArray(e)?{}:e}function $(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Yv(e){if(!$(e))return!1;let t=e.meta;return $(t)}function Xv(e){if(!$(e))return null;let t=e.gateway;if(!$(t)||typeof t.mode!=`string`)return null;let n=t.mode.trim();return n.length>0?n:null}function Zv(e){return structuredClone(e)}function Qv(e,t){if(!$(e)||!$(t))return Zv(t);let n={},r=new Set([...Object.keys(e),...Object.keys(t)]);for(let i of r){let r=i in e;if(!(i in t)){n[i]=null;continue}let a=t[i];if(!r){n[i]=Zv(a);continue}let o=e[i];if($(o)&&$(a)){let e=Qv(o,a);if($(e)&&Object.keys(e).length===0)continue;n[i]=e;continue}u(o,a)||(n[i]=Zv(a))}return n}function $v(e,t,n){if(typeof e==`string`){Zd(e)&&n.set(t,e);return}if(Array.isArray(e)){e.forEach((e,r)=>{$v(e,`${t}[${r}]`,n)});return}if($(e))for(let[r,i]of Object.entries(e))$v(i,t?`${t}.${r}`:r,n)}function ey(e,t,n,r){if(Array.isArray(e)&&Array.isArray(t)){let i=Math.max(e.length,t.length);for(let a=0;a<i;a+=1){let i=n?`${n}[${a}]`:`[${a}]`;if(a>=e.length||a>=t.length){r.add(i);continue}ey(e[a],t[a],i,r)}return}if($(e)&&$(t)){let i=new Set([...Object.keys(e),...Object.keys(t)]);for(let a of i){let i=n?`${n}.${a}`:a,o=a in e;if(!(a in t)||!o){r.add(i);continue}ey(e[a],t[a],i,r)}return}u(e,t)||r.add(n)}function ty(e){if(!e)return``;if(e.endsWith(`]`)){let t=e.lastIndexOf(`[`);return t>0?e.slice(0,t):``}let t=e.lastIndexOf(`.`);return t>=0?e.slice(0,t):``}function ny(e,t){if(t.has(e))return!0;let n=ty(e);for(;n;){if(t.has(n))return!0;n=ty(n)}return t.has(``)}function ry(e,t,n,r){if(typeof e==`string`){if(!ny(t,r)){let e=n.get(t);if(e!==void 0)return e}return e}if(Array.isArray(e)){let i=!1,a=e.map((e,a)=>{let o=ry(e,`${t}[${a}]`,n,r);return o!==e&&(i=!0),o});return i?a:e}if($(e)){let i=!1,a={};for(let[o,s]of Object.entries(e)){let e=ry(s,t?`${t}.${o}`:o,n,r);e!==s&&(i=!0),a[o]=e}return i?a:e}return e}function iy(e,t){return i.join(C(e,t),`logs`,`config-audit.jsonl`)}function ay(e){let t=[];return e.existsBefore?(typeof e.previousBytes==`number`&&typeof e.nextBytes==`number`&&e.previousBytes>=512&&e.nextBytes<Math.floor(e.previousBytes*.5)&&t.push(`size-drop:${e.previousBytes}->${e.nextBytes}`),e.hasMetaBefore||t.push(`missing-meta-before-write`),e.gatewayModeBefore&&!e.gatewayModeAfter&&t.push(`gateway-mode-removed`),t):t}async function oy(e,t){try{let n=iy(e.env,e.homedir);await e.fs.promises.mkdir(i.dirname(n),{recursive:!0,mode:448}),await e.fs.promises.appendFile(n,`${JSON.stringify(t)}\n`,{encoding:`utf-8`,mode:384})}catch{}}function sy(e,t){if(!e||typeof e!=`object`)return;let n=e.gateway;!n||typeof n!=`object`||`token`in n&&t.warn(`Config uses "gateway.token". This key is ignored; use "gateway.auth.token" instead.`)}function cy(e){let t=new Date().toISOString();return{...e,meta:{...e.meta,lastTouchedVersion:Jn,lastTouchedAt:t}}}function ly(e,t){let n=e.meta?.lastTouchedVersion;if(!n)return;let r=Nv(Jn,n);r!==null&&r<0&&t.warn(`Config was last written by a newer FasedAgent (${n}); current version is ${Jn}.`)}function uy(e){return e.configPath?e.configPath:Ue(e.env,C(e.env,e.homedir))}function dy(e={}){return{fs:e.fs??n,json5:e.json5??m,env:e.env??process.env,homedir:e.homedir??(()=>S(e.env??process.env,p.homedir)),configPath:e.configPath??``,logger:e.logger??console}}function fy(e){e===process.env&&Nr({quiet:!0})}function py(e,t=m){try{return{ok:!0,parsed:t.parse(e)}}catch(e){return{ok:!1,error:String(e)}}}function my(e,t,n){return ff(e,t,{readFile:e=>n.fs.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:t,rootRealDir:r})=>uf({includePath:e,resolvedPath:t,rootRealDir:r,ioFs:n.fs}),parseJson:e=>n.json5.parse(e)})}function hy(e,t){return e&&typeof e==`object`&&`env`in e&&rf(e,t),{resolvedConfigRaw:$d(e,t),envSnapshotForRestore:{...t}}}function gy(e={}){let t=dy(e),n=uy(t),r=(t.configPath?[n]:We(t.env,t.homedir)).find(e=>t.fs.existsSync(e))??n;function a(){try{if(fy(t.env),!t.fs.existsSync(r))return Zr(t.env)&&!Qr(t.env)&&Xr({enabled:!0,env:t.env,expectedKeys:Pv,logger:t.logger,timeoutMs:$r(t.env)}),{};let e=t.fs.readFileSync(r,`utf-8`),{resolvedConfigRaw:n}=hy(my(t.json5.parse(e),r,t),t.env);if(sy(n,t.logger),typeof n!=`object`||!n)return{};let i=ta(n,{env:t.env,homedir:t.homedir});if(i.length>0)throw new Zi(i);let a=Iv(n),o=wp(a.config),s=Dv(o.config);if(!s.ok){let e=s.issues.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
4
+ `);Rv.has(r)||(Rv.add(r),t.logger.error(`Invalid config at ${r}:\\n${e}`));let n=Error(`Invalid config`);throw n.code=`INVALID_CONFIG`,n.details=e,n}if(s.warnings.length>0){let e=s.warnings.map(e=>`- ${e.path||`<root>`}: ${e.message}`).join(`
5
+ `);t.logger.warn(`Config warnings:\n${e}`)}ly(s.config,t.logger);let c=Ld(Rd(Hd(Vd(zd(Fd(Bd(Pd(s.config))))))));bp(c),mp(c);let u=ta(c,{env:t.env,homedir:t.homedir});if(u.length>0)throw new Zi(u);rf(c,t.env),(Zr(t.env)||c.env?.shellEnv?.enabled===!0)&&!Qr(t.env)&&Xr({enabled:!0,env:t.env,expectedKeys:Pv,logger:t.logger,timeoutMs:c.env?.shellEnv?.timeoutMs??$r(t.env)});let d=_y.get(r),f=er(c,()=>d??_.randomBytes(32).toString(`hex`)),p=wp(f.config),m=p.config,h=[...new Set([...o.repairedPluginIds,...p.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t));if(a.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;by.has(e)||(by.add(e),l(m,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{by.delete(e)}))}if(h.length>0){let e=`${r}:installed-plugin-allowlist`;xy.has(e)||(xy.add(e),t.logger.warn(`Pinned installed plugins in plugins.allow: ${h.join(`, `)}`),l(m,{expectedConfigPath:r}).catch(e=>{t.logger.warn(`Failed to persist repaired plugins.allow at ${r}: ${String(e)}`)}).finally(()=>{xy.delete(e)}))}return f.generatedSecret?(_y.set(r,f.generatedSecret),vy.has(r)||(vy.add(r),l(m,{expectedConfigPath:r}).then(()=>{_y.delete(r),yy.delete(r)}).catch(e=>{yy.has(r)||(yy.add(r),t.logger.warn(`Failed to persist auto-generated commands.ownerDisplaySecret at ${r}: ${String(e)}`))}).finally(()=>{vy.delete(r)}))):(_y.delete(r),yy.delete(r)),Dp(m)}catch(e){if(e instanceof Zi)throw t.logger.error(e.message),e;return e?.code===`INVALID_CONFIG`||t.logger.error(`Failed to read config at ${r}`,e),{}}}async function o(){if(fy(t.env),!t.fs.existsSync(r)){let e=zv(null);return{snapshot:{path:r,exists:!1,raw:null,parsed:{},resolved:{},valid:!0,config:Id(Ld(Rd(Hd(Vd(zd(Fd(Pd({})))))))),hash:e,issues:[],warnings:[],legacyIssues:[]}}}try{let e=t.fs.readFileSync(r,`utf-8`),n=zv(e),i=py(e,t.json5);if(!i.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:{},resolved:{},valid:!1,config:{},hash:n,issues:[{path:``,message:`JSON5 parse failed: ${i.error}`}],warnings:[],legacyIssues:[]}};let a;try{a=my(i.parsed,r,t)}catch(t){let a=t instanceof z?t.message:`Include resolution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Jv(i.parsed),valid:!1,config:Jv(i.parsed),hash:n,issues:[{path:``,message:a}],warnings:[],legacyIssues:[]}}}let o;try{o=hy(a,t.env)}catch(t){let o=t instanceof Jd?t.message:`Env var substitution failed: ${String(t)}`;return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Jv(a),valid:!1,config:Jv(a),hash:n,issues:[{path:``,message:o}],warnings:[],legacyIssues:[]}}}let s=Iv(o.resolvedConfigRaw),c=s.config,u=qf(c),d=wp(c),f=Dv(d.config);if(!f.ok)return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:Jv(c),valid:!1,config:Jv(c),hash:n,issues:f.issues,warnings:f.warnings,legacyIssues:u}};ly(f.config,t.logger);let p=bp(Id(Ld(Rd(zd(Fd(Bd(Pd(f.config))))))));mp(p);let m=wp(p),h=m.config,g=[...new Set([...d.repairedPluginIds,...m.repairedPluginIds])].toSorted((e,t)=>e.localeCompare(t)),_=Jv(d.config);if(s.removedPluginIds.length>0){let e=`${r}:legacy-removed-plugins`;by.has(e)||(by.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{by.delete(e)}))}if(g.length>0){let e=`${r}:installed-plugin-allowlist`;xy.has(e)||(xy.add(e),l(h,{expectedConfigPath:r}).catch(()=>{}).finally(()=>{xy.delete(e)}))}return{snapshot:{path:r,exists:!0,raw:e,parsed:i.parsed,resolved:_,valid:!0,config:h,hash:n,issues:[],warnings:f.warnings,legacyIssues:u},envSnapshotForRestore:o.envSnapshotForRestore}}catch(e){let n=e,i;if(n?.code===`EACCES`){let n=process.getuid?.(),a=typeof n==`number`?String(n):`$(id -u)`;i=[`read failed: ${String(e)}`,``,`Config file is not readable by the current process. If running in a container`,`or 1-click deployment, fix ownership with:`,` chown ${a} "${r}"`,`Then restart the gateway.`].join(`
6
+ `),t.logger.error(i)}else i=`read failed: ${String(e)}`;return{snapshot:{path:r,exists:!0,raw:null,parsed:{},resolved:{},valid:!1,config:{},hash:zv(null),issues:[{path:``,message:i}],warnings:[],legacyIssues:[]}}}}async function s(){return(await o()).snapshot}async function c(){let e=await o();return{snapshot:e.snapshot,writeOptions:{envSnapshotForRestore:e.envSnapshotForRestore,expectedConfigPath:r}}}async function l(e,n={}){let a=e,{snapshot:s}=await o(),c=null,l=null;if(s.valid&&s.exists){let n=Qv(s.config,e);a=Xf(s.resolved,n);try{let n=ff(s.parsed,r,{readFile:e=>t.fs.readFileSync(e,`utf-8`),readFileWithGuards:({includePath:e,resolvedPath:n,rootRealDir:r})=>uf({includePath:e,resolvedPath:n,rootRealDir:r,ioFs:t.fs}),parseJson:e=>t.json5.parse(e)}),i=new Map;$v(n,``,i),i.size>0&&(c=i,l=new Set,ey(s.config,e,``,l))}catch{c=null}}let u=Ov(a);if(!u.ok){let e=u.issues[0],t=e?.path?e.path:`<root>`,n=e?.message??`invalid`;throw Error(Bv(t,n))}if(u.warnings.length>0){let e=u.warnings.map(e=>`- ${e.path}: ${e.message}`).join(`
7
+ `);t.logger.warn(`Config warnings:\n${e}`)}let d=u.config;try{if(t.fs.existsSync(r)){let e=py(await t.fs.promises.readFile(r,`utf-8`),t.json5);if(e.ok){let r=n.envSnapshotForRestore??t.env;d=Kd(d,e.parsed,r)}}}catch{}let f=i.dirname(r);await t.fs.promises.mkdir(f,{recursive:!0,mode:448});let p=c&&l?ry(d,``,c,l):d;if(n.unsetPaths?.length)for(let e of n.unsetPaths){if(!Array.isArray(e)||e.length===0)continue;let t=Kv(p,e);t.changed&&(p=t.next)}let m=cy(p),h=JSON.stringify(m,null,2).trimEnd().concat(`
8
+ `),g=zv(h),v=qv(s),ee=l?.size,y=typeof s.raw==`string`?Buffer.byteLength(s.raw,`utf-8`):null,b=Buffer.byteLength(h,`utf-8`),te=Yv(s.parsed),ne=Yv(m),re=Xv(s.resolved),ie=Xv(m),ae=ay({existsBefore:s.exists,previousBytes:y,nextBytes:b,hasMetaBefore:te,gatewayModeBefore:re,gatewayModeAfter:ie}),oe=()=>{if(t.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG===`1`||!s.exists)return;let e=t.env.VITEST===`true`,n=t.env.FASED_TEST_CONFIG_OVERWRITE_LOG===`1`;if(e&&!n)return;let i=typeof ee==`number`?`, changedPaths=${ee}`:``;t.logger.warn(`Config overwrite: ${r} (sha256 ${v??`unknown`} -> ${g}, backup=${r}.bak${i})`)},se=()=>{if(t.env.FASED_SUPPRESS_CONFIG_OVERWRITE_LOG===`1`||ae.length===0)return;let e=t.env.VITEST===`true`,n=t.env.FASED_TEST_CONFIG_WRITE_ANOMALY_LOG===`1`;e&&!n||t.logger.warn(`Config write anomaly: ${r} (${ae.join(`, `)})`)},ce={ts:new Date().toISOString(),source:`config-io`,event:`config.write`,configPath:r,pid:process.pid,ppid:process.ppid,cwd:process.cwd(),argv:process.argv.slice(0,8),execArgv:process.execArgv.slice(0,8),watchMode:t.env.FASED_WATCH_MODE===`1`,watchSession:typeof t.env.FASED_WATCH_SESSION==`string`&&t.env.FASED_WATCH_SESSION.trim().length>0?t.env.FASED_WATCH_SESSION.trim():null,watchCommand:typeof t.env.FASED_WATCH_COMMAND==`string`&&t.env.FASED_WATCH_COMMAND.trim().length>0?t.env.FASED_WATCH_COMMAND.trim():null,existsBefore:s.exists,previousHash:v??null,nextHash:g,previousBytes:y,nextBytes:b,changedPathCount:typeof ee==`number`?ee:null,hasMetaBefore:te,hasMetaAfter:ne,gatewayModeBefore:re,gatewayModeAfter:ie,suspicious:ae},le=async(e,n)=>{let r=n&&typeof n==`object`&&`code`in n&&typeof n.code==`string`?n.code:void 0,i=n&&typeof n==`object`&&`message`in n&&typeof n.message==`string`?n.message:void 0;await oy(t,{...ce,result:e,nextHash:e===`failed`?null:ce.nextHash,nextBytes:e===`failed`?null:ce.nextBytes,errorCode:r,errorMessage:i})},ue=i.join(f,`${i.basename(r)}.${process.pid}.${_.randomUUID()}.tmp`);try{await t.fs.promises.writeFile(ue,h,{encoding:`utf-8`,mode:384}),t.fs.existsSync(r)&&(await ra(r,t.fs.promises),await t.fs.promises.copyFile(r,`${r}.bak`).catch(()=>{}));try{await t.fs.promises.rename(ue,r)}catch(e){let n=e.code;if(n===`EPERM`||n===`EEXIST`){await t.fs.promises.copyFile(ue,r),await t.fs.promises.chmod(r,384).catch(()=>{}),await t.fs.promises.unlink(ue).catch(()=>{}),oe(),se(),await le(`copy-fallback`);return}throw await t.fs.promises.unlink(ue).catch(()=>{}),e}oe(),se(),await le(`rename`)}catch(e){throw await le(`failed`,e),e}}return{configPath:r,loadConfig:a,readConfigFileSnapshot:s,readConfigFileSnapshotForWrite:c,writeConfigFile:l}}const _y=new Map,vy=new Set,yy=new Set,by=new Set,xy=new Set;async function Sy(){return await gy().readConfigFileSnapshot()}function Cy(e,t){return t<=0?``:e.repeat(t)}function wy(e,t,n){let r=Lt(e);if(r>=t)return e;let i=t-r;if(n===`right`)return`${Cy(` `,i)}${e}`;if(n===`center`){let t=Math.floor(i/2),n=i-t;return`${Cy(` `,t)}${e}${Cy(` `,n)}`}return`${e}${Cy(` `,i)}`}function Ty(e,t){if(t<=0)return[e];let n=[];for(let t=0;t<e.length;){if(e[t]===`\x1B`){if(e[t+1]===`[`){let r=t+2;for(;r<e.length;){let t=e[r];if(t===`m`)break;if(t&&t>=`0`&&t<=`9`){r+=1;continue}if(t===`;`){r+=1;continue}break}if(e[r]===`m`){n.push({kind:`ansi`,value:e.slice(t,r+1)}),t=r+1;continue}}if(e[t+1]===`]`&&e.slice(t+2,t+5)===`8;;`){let r=e.indexOf(`\x1B\\`,t+5);if(r>=0){n.push({kind:`ansi`,value:e.slice(t,r+2)}),t=r+2;continue}}}let r=e.codePointAt(t);if(!r)break;let i=String.fromCodePoint(r);n.push({kind:`char`,value:i}),t+=i.length}let r=n.findIndex(e=>e.kind===`char`);if(r<0)return[e];let i=-1;for(let e=n.length-1;e>=0;--e)if(n[e]?.kind===`char`){i=e;break}let a=n.slice(0,r).filter(e=>e.kind===`ansi`).map(e=>e.value).join(``),o=n.slice(i+1).filter(e=>e.kind===`ansi`).map(e=>e.value).join(``),s=n.slice(r,i+1),c=[],l=e=>e===` `||e===` `||e===`/`||e===`-`||e===`_`||e===`.`,u=e=>e===` `||e===` `,d=!1,f=[],p=0,m=null,h=e=>(e??f).map(e=>e.value).join(``),g=e=>e.reduce((e,t)=>e+(t.kind===`char`?1:0),0),_=e=>{let t=e.replace(/\s+$/,``);t.trim().length!==0&&c.push(t)},v=e=>{if(f.length===0)return;if(e==null||e<=0){_(h()),f.length=0,p=0,m=null;return}let t=f.slice(0,e),n=f.slice(e);for(_(h(t));n.length>0&&n[0]?.kind===`char`&&u(n[0].value);)n.shift();f.length=0,f.push(...n),p=g(f),m=null};for(let e of s){if(e.kind===`ansi`){f.push(e);continue}let n=e.value;if(!(d&&(d=!1,n===`
9
9
  `))){if(n===`
10
- `||n===`\r`){v(f.length),n===`\r`&&(d=!0);continue}p+1>t&&p>0&&v(m),f.push(e),p+=1,l(n)&&(m=f.length)}}return v(f.length),c.length?!a&&!o?c:c.map(e=>e&&`${a}${e}${o}`):[``]}function wy(e){if(e!=null&&!(!Number.isFinite(e)||e<=0))return Math.floor(e)}function Ty(e){let t=e.rows.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=Sn(r);return t}),n=e.border??`unicode`;if(n===`none`){let n=e.columns;return`${[n.map(e=>e.header).join(` | `),...t.map(e=>n.map(t=>e[t.key]??``).join(` | `))].join(`
11
- `)}\n`}let r=Math.max(0,e.padding??1),i=e.columns,a=i.map(e=>({headerW:Lt(e.header),cellW:Math.max(0,...t.map(t=>Lt(t[e.key]??``)))})),o=i.map((e,t)=>{let n=a[t],i=Math.max(n?.headerW??0,n?.cellW??0)+r*2,o=e.maxWidth?Math.min(i,e.maxWidth):i;return Math.max(e.minWidth??3,o)}),s=wy(e.width),c=i.length+1,l=o.reduce((e,t)=>e+t,0)+c,u=i.map((e,t)=>Math.max(e.minWidth??3,(a[t]?.headerW??0)+r*2,3)),d=i.map((e,t)=>Math.max((a[t]?.headerW??0)+r*2,3));if(s&&l>s){let e=l-s,t=i.map((e,t)=>({i:t,w:o[t]??0})).filter(({i:e})=>!!i[e]?.flex).toSorted((e,t)=>t.w-e.w).map(e=>e.i),n=i.map((e,t)=>({i:t,w:o[t]??0})).filter(({i:e})=>!i[e]?.flex).toSorted((e,t)=>t.w-e.w).map(e=>e.i),r=(t,n)=>{for(;e>0;){let r=!1;for(let i of t)if(!((o[i]??0)<=(n[i]??0))&&(o[i]=(o[i]??0)-1,--e,r=!0,e<=0))break;if(!r)break}};r(t,u),r(t,d),r(n,u),r(n,d)}if(s){let e=i.length+1,t=s-(o.reduce((e,t)=>e+t,0)+e);if(t>0){let e=i.map((e,t)=>({c:e,i:t})).filter(({c:e})=>!!e.flex).map(({i:e})=>e);if(e.length>0){let n=i.map(e=>typeof e.maxWidth==`number`&&e.maxWidth>0?Math.floor(e.maxWidth):1/0);for(;t>0;){let r=!1;for(let i of e)if(!((o[i]??0)>=(n[i]??1/0))&&(o[i]=(o[i]??0)+1,--t,r=!0,t<=0))break;if(!r)break}}}}let f=n===`ascii`?{tl:`+`,tr:`+`,bl:`+`,br:`+`,h:`-`,v:`|`,t:`+`,ml:`+`,m:`+`,mr:`+`,b:`+`}:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`,h:`─`,v:`│`,t:`┬`,ml:`├`,m:`┼`,mr:`┤`,b:`┴`},p=(e,t,n)=>`${e}${o.map(e=>xy(f.h,e)).join(t)}${n}`,m=e=>Math.max(1,o[e]-r*2),h=xy(` `,r),g=(e,t=!1)=>{let n=i.map(n=>t?n.header:e[n.key]??``).map((e,t)=>Cy(e,m(t))),r=Math.max(...n.map(e=>e.length)),a=[];for(let e=0;e<r;e+=1){let t=n.map((t,n)=>`${h}${Sy(t[e]??``,m(n),i[n]?.align??`left`)}${h}`);a.push(`${f.v}${t.join(f.v)}${f.v}`)}return a},_=[];_.push(p(f.tl,f.t,f.tr)),_.push(...g({},!0)),_.push(p(f.ml,f.m,f.mr));for(let e of t)_.push(...g(e,!1));return _.push(p(f.bl,f.b,f.br)),`${_.join(`
12
- `)}\n`}function Ey(e){let t=e?Number.parseInt(e,10)*1e3:void 0;return t!==void 0&&(Number.isNaN(t)||t<=0)?(Nt.error(`--timeout must be a positive integer (seconds)`),Nt.exit(1),null):t}async function Dy(){return await we({moduleUrl:import.meta.url,argv1:process.argv[1],cwd:process.cwd()})??process.cwd()}function Oy(e){let t=e.sha?e.sha.slice(0,8):null,n=e.branch&&e.branch!==`HEAD`?e.branch:null,r=e.tag;return[n??(r?`detached`:`git`),r?`tag ${r}`:null,t?`@ ${t}`:null].filter(Boolean).join(` · `)}async function ky(e){let t=Ey(e.timeout);if(t===null)return;let n=await Dy(),r=await by(),i=r.valid?pn(r.config.update?.channel):null,a=await Rn({root:n,timeoutMs:t??3500,fetchGit:!0,includeRegistry:!0}),o=_n({configChannel:i,installKind:a.installKind,gitTag:a.git?.tag??null,gitBranch:a.git?.branch??null}),s=o.label,c=a.installKind===`git`?Oy({branch:a.git?.branch??null,tag:a.git?.tag??null,sha:a.git?.sha??null}):null,l=Yn(a,{channel:o.channel}),u=Zn(a,{channel:o.channel}).replace(/^Update:\s*/i,``);if(e.json){Nt.log(JSON.stringify({update:a,channel:{value:o.channel,source:o.source,label:s,config:i},availability:l},null,2));return}let d=Math.max(60,(process.stdout.columns??120)-1),f=[{Item:`Install`,Value:a.installKind===`git`?`git (${a.root??`unknown`})`:a.installKind===`package`?a.packageManager:`unknown`},{Item:`Channel`,Value:s},...c?[{Item:`Git`,Value:c}]:[],{Item:`Update`,Value:l.available?xt.warn(`available · ${u}`):u}];Nt.log(xt.heading(`Fased Agent update status`)),Nt.log(``),Nt.log(Ty({width:d,columns:[{key:`Item`,header:`Item`,minWidth:10},{key:`Value`,header:`Value`,flex:!0,minWidth:24}],rows:f}).trimEnd()),Nt.log(``);let p=Xn(a,{channel:o.channel});p&&Nt.log(xt.warn(p))}async function Ay(e=t.argv){if(e[2]!==`update`||e[3]!==`status`)return!1;let n=re(e,`--timeout`);return n===null?!1:(await ky({json:ne(e,`--json`),timeout:n}),!0)}export{Ay as run};
10
+ `||n===`\r`){v(f.length),n===`\r`&&(d=!0);continue}p+1>t&&p>0&&v(m),f.push(e),p+=1,l(n)&&(m=f.length)}}return v(f.length),c.length?!a&&!o?c:c.map(e=>e&&`${a}${e}${o}`):[``]}function Ey(e){if(e!=null&&!(!Number.isFinite(e)||e<=0))return Math.floor(e)}function Dy(e){let t=e.rows.map(e=>{let t={};for(let[n,r]of Object.entries(e))t[n]=Sn(r);return t}),n=e.border??`unicode`;if(n===`none`){let n=e.columns;return`${[n.map(e=>e.header).join(` | `),...t.map(e=>n.map(t=>e[t.key]??``).join(` | `))].join(`
11
+ `)}\n`}let r=Math.max(0,e.padding??1),i=e.columns,a=i.map(e=>({headerW:Lt(e.header),cellW:Math.max(0,...t.map(t=>Lt(t[e.key]??``)))})),o=i.map((e,t)=>{let n=a[t],i=Math.max(n?.headerW??0,n?.cellW??0)+r*2,o=e.maxWidth?Math.min(i,e.maxWidth):i;return Math.max(e.minWidth??3,o)}),s=Ey(e.width),c=i.length+1,l=o.reduce((e,t)=>e+t,0)+c,u=i.map((e,t)=>Math.max(e.minWidth??3,(a[t]?.headerW??0)+r*2,3)),d=i.map((e,t)=>Math.max((a[t]?.headerW??0)+r*2,3));if(s&&l>s){let e=l-s,t=i.map((e,t)=>({i:t,w:o[t]??0})).filter(({i:e})=>!!i[e]?.flex).toSorted((e,t)=>t.w-e.w).map(e=>e.i),n=i.map((e,t)=>({i:t,w:o[t]??0})).filter(({i:e})=>!i[e]?.flex).toSorted((e,t)=>t.w-e.w).map(e=>e.i),r=(t,n)=>{for(;e>0;){let r=!1;for(let i of t)if(!((o[i]??0)<=(n[i]??0))&&(o[i]=(o[i]??0)-1,--e,r=!0,e<=0))break;if(!r)break}};r(t,u),r(t,d),r(n,u),r(n,d)}if(s){let e=i.length+1,t=s-(o.reduce((e,t)=>e+t,0)+e);if(t>0){let e=i.map((e,t)=>({c:e,i:t})).filter(({c:e})=>!!e.flex).map(({i:e})=>e);if(e.length>0){let n=i.map(e=>typeof e.maxWidth==`number`&&e.maxWidth>0?Math.floor(e.maxWidth):1/0);for(;t>0;){let r=!1;for(let i of e)if(!((o[i]??0)>=(n[i]??1/0))&&(o[i]=(o[i]??0)+1,--t,r=!0,t<=0))break;if(!r)break}}}}let f=n===`ascii`?{tl:`+`,tr:`+`,bl:`+`,br:`+`,h:`-`,v:`|`,t:`+`,ml:`+`,m:`+`,mr:`+`,b:`+`}:{tl:`┌`,tr:`┐`,bl:`└`,br:`┘`,h:`─`,v:`│`,t:`┬`,ml:`├`,m:`┼`,mr:`┤`,b:`┴`},p=(e,t,n)=>`${e}${o.map(e=>Cy(f.h,e)).join(t)}${n}`,m=e=>Math.max(1,o[e]-r*2),h=Cy(` `,r),g=(e,t=!1)=>{let n=i.map(n=>t?n.header:e[n.key]??``).map((e,t)=>Ty(e,m(t))),r=Math.max(...n.map(e=>e.length)),a=[];for(let e=0;e<r;e+=1){let t=n.map((t,n)=>`${h}${wy(t[e]??``,m(n),i[n]?.align??`left`)}${h}`);a.push(`${f.v}${t.join(f.v)}${f.v}`)}return a},_=[];_.push(p(f.tl,f.t,f.tr)),_.push(...g({},!0)),_.push(p(f.ml,f.m,f.mr));for(let e of t)_.push(...g(e,!1));return _.push(p(f.bl,f.b,f.br)),`${_.join(`
12
+ `)}\n`}function Oy(e){let t=e?Number.parseInt(e,10)*1e3:void 0;return t!==void 0&&(Number.isNaN(t)||t<=0)?(Nt.error(`--timeout must be a positive integer (seconds)`),Nt.exit(1),null):t}async function ky(){return await we({moduleUrl:import.meta.url,argv1:process.argv[1],cwd:process.cwd()})??process.cwd()}function Ay(e){let t=e.sha?e.sha.slice(0,8):null,n=e.branch&&e.branch!==`HEAD`?e.branch:null,r=e.tag;return[n??(r?`detached`:`git`),r?`tag ${r}`:null,t?`@ ${t}`:null].filter(Boolean).join(` · `)}async function jy(e){let t=Oy(e.timeout);if(t===null)return;let n=await ky(),r=await Sy(),i=r.valid?pn(r.config.update?.channel):null,a=await Rn({root:n,timeoutMs:t??3500,fetchGit:!0,includeRegistry:!0}),o=_n({configChannel:i,installKind:a.installKind,gitTag:a.git?.tag??null,gitBranch:a.git?.branch??null}),s=o.label,c=a.installKind===`git`?Ay({branch:a.git?.branch??null,tag:a.git?.tag??null,sha:a.git?.sha??null}):null,l=Yn(a,{channel:o.channel}),u=Zn(a,{channel:o.channel}).replace(/^Update:\s*/i,``);if(e.json){Nt.log(JSON.stringify({update:a,channel:{value:o.channel,source:o.source,label:s,config:i},availability:l},null,2));return}let d=Math.max(60,(process.stdout.columns??120)-1),f=[{Item:`Install`,Value:a.installKind===`git`?`git (${a.root??`unknown`})`:a.installKind===`package`?a.packageManager:`unknown`},{Item:`Channel`,Value:s},...c?[{Item:`Git`,Value:c}]:[],{Item:`Update`,Value:l.available?xt.warn(`available · ${u}`):u}];Nt.log(xt.heading(`Fased Agent update status`)),Nt.log(``),Nt.log(Dy({width:d,columns:[{key:`Item`,header:`Item`,minWidth:10},{key:`Value`,header:`Value`,flex:!0,minWidth:24}],rows:f}).trimEnd()),Nt.log(``);let p=Xn(a,{channel:o.channel});p&&Nt.log(xt.warn(p))}async function My(e=t.argv){if(e[2]!==`update`||e[3]!==`status`)return!1;let n=re(e,`--timeout`);return n===null?!1:(await jy({json:ne(e,`--json`),timeout:n}),!0)}export{My as run};