fengming 0.3.8 → 0.3.10

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 (1255) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/abort-CCR8oZyg.js +277 -0
  3. package/dist/abort.runtime-eqx84NZa.js +2 -0
  4. package/dist/abort.runtime.js +1 -1
  5. package/dist/acp-spawn-BcDyvaXh.js +2 -0
  6. package/dist/acp-spawn-CCtSel-_.js +1286 -0
  7. package/dist/acp-stateful-target-driver-B3pCvuOV.js +89 -0
  8. package/dist/active-tool-schema-warnings-Cf-5q5WU.js +105 -0
  9. package/dist/active-tool-schema-warnings-Dzt3XE-y.js +2 -0
  10. package/dist/agent-1M2dVE2G.js +2 -0
  11. package/dist/agent-DLDIbUT4.js +1825 -0
  12. package/dist/agent-DZi6j3o6.js +3 -0
  13. package/dist/agent-command-ppfDBwET.js +1435 -0
  14. package/dist/agent-harness-runtime-C0bo62eY.d.ts +913 -0
  15. package/dist/agent-harness-runtime-RkTGiliR.js +207 -0
  16. package/dist/agent-runner-utils-B4YeVAO_.js +267 -0
  17. package/dist/agent-runner.runtime-T_3tlZN1.js +3784 -0
  18. package/dist/agent-runner.runtime.js +1 -1
  19. package/dist/agent-runtime-CloshyK-.d.ts +207 -0
  20. package/dist/agent-runtime-DZsmp1xr.js +199 -0
  21. package/dist/agent-tools-CET9usCz.js +2506 -0
  22. package/dist/agent-via-gateway-CZ0X0YkM.js +486 -0
  23. package/dist/agent-wait-dedupe-I81_F2tr.js +180 -0
  24. package/dist/agents/embedded-agent-runner/run/runtime-context-prompt.d.ts +1 -1
  25. package/dist/agents/embedded-agent-runner/tool-split.d.ts +1 -1
  26. package/dist/agents/model-catalog.runtime.d.ts +1 -1
  27. package/dist/api-BDB5xHYj.js +3 -0
  28. package/dist/api-BH7bfI5d.js +6 -0
  29. package/dist/api-BxJNXitd.js +2 -0
  30. package/dist/approval-client-helpers-CfQA9Jzh.d.ts +78 -0
  31. package/dist/approval-native-helpers-B2zyhxWc.d.ts +241 -0
  32. package/dist/approval-renderers-CMqSXyvm.d.ts +39 -0
  33. package/dist/assistant-Cu_Mzzgu.js +291 -0
  34. package/dist/attachment-normalize-Bb3v5iCC.js +213 -0
  35. package/dist/attempt-execution-BskbAq5I.js +584 -0
  36. package/dist/attempt-execution.runtime-BuT1wpNS.js +3 -0
  37. package/dist/attempt-execution.runtime.js +1 -1
  38. package/dist/attempt.prompt-helpers-ByKj-vQ7.js +543 -0
  39. package/dist/auto-reply/reply/commands-crestodian.d.ts +1 -1
  40. package/dist/binding-routing-EGRNvRC4.js +113 -0
  41. package/dist/binding-targets-B9vYS8n6.js +121 -0
  42. package/dist/bridge-server-DG9YtKQe.js +113 -0
  43. package/dist/browser-cli-B0Ou-Nbm.js +2 -0
  44. package/dist/browser-cli-GF25gL6M.js +230 -0
  45. package/dist/browser-cli-actions-input-CuER6RVe.js +522 -0
  46. package/dist/browser-cli-actions-observe-Dq-Zz_FA.js +81 -0
  47. package/dist/browser-cli-debug-7hvb49S1.js +137 -0
  48. package/dist/browser-cli-inspect-WU5KeWOK.js +117 -0
  49. package/dist/browser-cli-manage-B9D9BvSe.js +446 -0
  50. package/dist/browser-cli-resize-BUOusOPb.js +32 -0
  51. package/dist/browser-cli-shared-DmpSN-Qi.js +69 -0
  52. package/dist/browser-cli-state-D_YxTqRw.js +371 -0
  53. package/dist/browser-control-auth-Cqd1n9FA.js +2 -0
  54. package/dist/browser-profiles-9tQ05wYh.js +2 -0
  55. package/dist/browser-runtime-Bbzumoha.js +389 -0
  56. package/dist/build-CBXuT2K1.js +261 -0
  57. package/dist/build-info.json +3 -3
  58. package/dist/bundled/boot-md/handler.js +2 -2
  59. package/dist/bundled/session-memory/handler.js +1 -1
  60. package/dist/canvas-host/a2ui/.bundle.hash +1 -1
  61. package/dist/capability-cli-CiVGX7ut.js +1809 -0
  62. package/dist/channel-BIVwHq7P.js +2309 -0
  63. package/dist/channel-CiA2FVdL.d.ts +427 -0
  64. package/dist/channel-core-Cj9JTqeu.js +5 -0
  65. package/dist/channel-core-DjVpcH1C.d.ts +6 -0
  66. package/dist/channel-entry-contract-Bs_54m1D.d.ts +114 -0
  67. package/dist/channel-inbound-CdUdeQRa.js +121 -0
  68. package/dist/channel-inbound-iGiqx6CS.d.ts +97 -0
  69. package/dist/channel-message-C3QPaDUk.js +12 -0
  70. package/dist/channel-message-CXDjxb2U.d.ts +9 -0
  71. package/dist/channel-outbound-ofvvmMSK.d.ts +325 -0
  72. package/dist/channel-pairing-DKscOV1K.d.ts +58 -0
  73. package/dist/channel.runtime-VW6PW_ez.js +697 -0
  74. package/dist/channel.runtime.js +1 -1
  75. package/dist/chat-CFkQepUQ.js +3 -0
  76. package/dist/chat-Czh_tXM0.js +2940 -0
  77. package/dist/chrome-B2cq8YyH.js +1517 -0
  78. package/dist/cli/run-main.js +5 -5
  79. package/dist/cli-compaction-Dxv4nt7R.js +363 -0
  80. package/dist/cli-runner-CimXSTVs.js +2 -0
  81. package/dist/cli-runner-orCzE1Sr.js +597 -0
  82. package/dist/cli-runner.runtime-CsW0dXJW.js +3 -0
  83. package/dist/cli-runner.runtime-DgPrc1do.js +4 -0
  84. package/dist/cli-runner.runtime.js +1 -1
  85. package/dist/cli-startup-metadata.json +10 -12
  86. package/dist/command-registry-C5ooX6PF.js +4 -0
  87. package/dist/command-registry-DMB-HKIk.js +9 -0
  88. package/dist/command-registry-core-B2w_XWvn.js +114 -0
  89. package/dist/command-status.runtime-Bdy3Dkar.js +90 -0
  90. package/dist/command-status.runtime.js +1 -1
  91. package/dist/commands-compact.runtime-Bk2jTQo6.js +10 -0
  92. package/dist/commands-compact.runtime.js +1 -1
  93. package/dist/commands-handlers.runtime-Csw1og0U.js +6327 -0
  94. package/dist/commands-handlers.runtime.js +1 -1
  95. package/dist/commands-mRqmLIVz.d.ts +117 -0
  96. package/dist/commands-status-Dgrj_ubK.js +3 -0
  97. package/dist/commands-status-s32HJOpD.js +16 -0
  98. package/dist/commands-status.runtime-Dgrj_ubK.js +3 -0
  99. package/dist/commands-status.runtime.js +1 -1
  100. package/dist/commands-subagents-control.runtime-C_hnOO9l.js +2 -0
  101. package/dist/commands-subagents-control.runtime.js +1 -1
  102. package/dist/commands-system-prompt-CQV742Cc.js +2 -0
  103. package/dist/commands-system-prompt-DTfsKwK1.js +161 -0
  104. package/dist/commands-types-MXHhrssO.d.ts +132 -0
  105. package/dist/commands.runtime-akiVK67l.js +175 -0
  106. package/dist/commands.runtime.js +1 -1
  107. package/dist/commitments/runtime.js +1 -1
  108. package/dist/compact-U6ZhvPtD.js +1165 -0
  109. package/dist/compact.runtime-36E5vKsC.js +12 -0
  110. package/dist/compact.runtime.js +1 -1
  111. package/dist/completion-cli-Bf4mEw2W.js +393 -0
  112. package/dist/config-BJJhHN9E.js +374 -0
  113. package/dist/config-mutations-swLu-j_p.js +161 -0
  114. package/dist/config-schema-Tjner6bM.d.ts +20 -0
  115. package/dist/context-engine-host-compat-6fkn_daV.js +280 -0
  116. package/dist/context-engine-host-compat-DtAZC1bS.js +2 -0
  117. package/dist/context-engine-lifecycle-R__Idxi1.js +627 -0
  118. package/dist/control-auth-DnkI94_D.js +114 -0
  119. package/dist/control-service-BBsamNjq.js +40 -0
  120. package/dist/control-service-BGpHj7RL.js +3 -0
  121. package/dist/control-ui/assets/activity-D-mnRThU.js +124 -0
  122. package/dist/control-ui/assets/agents-U_KSP5I_.js +1030 -0
  123. package/dist/control-ui/assets/channels-ohK9_G1O.js +120 -0
  124. package/dist/control-ui/assets/cron-6ZCzfU29.js +1016 -0
  125. package/dist/control-ui/assets/debug-CSsDLg_s.js +97 -0
  126. package/dist/control-ui/assets/index-jUDczxhd.js +7214 -0
  127. package/dist/control-ui/assets/instances-782ZoDT4.js +57 -0
  128. package/dist/control-ui/assets/nodes-BMX16BKM.js +444 -0
  129. package/dist/control-ui/assets/sessions-jLGSApYa.js +425 -0
  130. package/dist/control-ui/assets/skills-DweBwUhs.js +362 -0
  131. package/dist/control-ui/assets/workboard-BsU-FXIo.js +402 -0
  132. package/dist/control-ui/index.html +1 -1
  133. package/dist/control-ui/sw.js +1 -1
  134. package/dist/conversation-runtime-DDekWU-U.js +31 -0
  135. package/dist/core-Bpk-qSJH.js +284 -0
  136. package/dist/core-Chrz4oRB.d.ts +223 -0
  137. package/dist/core-api-DSpUKNVW.js +2 -0
  138. package/dist/core-api-hLsW03Wo.js +5 -0
  139. package/dist/crestodian/crestodian.js +1 -1
  140. package/dist/crestodian/rescue-message.d.ts +1 -1
  141. package/dist/crestodian/rescue-message.js +1 -1
  142. package/dist/crestodian-C0x7JjF-.js +55 -0
  143. package/dist/delegate-BArFIZ4B.d.ts +30 -0
  144. package/dist/deliver-BnVp3VbL.d.ts +111 -0
  145. package/dist/delivery-queue-BFOASdf5.d.ts +161 -0
  146. package/dist/delivery-queue-runtime-BFfc8AEs.d.ts +9 -0
  147. package/dist/dialogue-No0NvYX7.js +37 -0
  148. package/dist/direct-dm-C-h88JJH.d.ts +79 -0
  149. package/dist/directive-handling.fast-lane-DTyDKhZb.js +70 -0
  150. package/dist/directive-handling.impl-DMReM6tu.js +2 -0
  151. package/dist/directive-handling.impl-DzPouhV-.js +823 -0
  152. package/dist/directive-handling.model-selection-BjwTBAZJ.js +122 -0
  153. package/dist/directive-handling.persist.runtime-D_O1okkR.js +274 -0
  154. package/dist/directive-handling.persist.runtime.js +1 -1
  155. package/dist/dispatch-Dtl-oRuN.js +2057 -0
  156. package/dist/dispatch-acp-transcript.runtime-M4y0Dq74.js +40 -0
  157. package/dist/dispatch-acp-transcript.runtime.js +1 -1
  158. package/dist/dispatch-acp.runtime-B8uCIKZS.js +18 -0
  159. package/dist/dispatch-acp.runtime.js +1 -1
  160. package/dist/dispatcher-DslvaRcj.js +106 -0
  161. package/dist/doctor-config-flow-LU2C94af.js +1819 -0
  162. package/dist/doctor-core-checks-BqcjExIZ.js +666 -0
  163. package/dist/doctor-core-checks-Diuk8l0N.js +2 -0
  164. package/dist/doctor-core-checks.runtime-DbS-kMZN.js +278 -0
  165. package/dist/doctor-core-checks.runtime.js +1 -1
  166. package/dist/doctor-health-BdqHwfYE.js +65 -0
  167. package/dist/doctor-health-contributions-DLLTVnll.js +874 -0
  168. package/dist/doctor-lint-PZqkVMWf.js +95 -0
  169. package/dist/doctor-mRfJMSb5.js +6 -0
  170. package/dist/doctor-state-integrity-Cdlm-peH.js +1257 -0
  171. package/dist/draft-stream-controls-B7uLonbw.d.ts +159 -0
  172. package/dist/embedded-agent-CEpOPW6X.js +4 -0
  173. package/dist/embedded-agent-CNINO_M-.d.ts +5 -0
  174. package/dist/embedded-agent-DxwzoZkp.js +4074 -0
  175. package/dist/embedded-agent.runtime-DDbhA85-.js +4 -0
  176. package/dist/embedded-agent.runtime.js +1 -1
  177. package/dist/embedded-backend-ChaKCepC.js +1581 -0
  178. package/dist/embedded-gateway-stub.runtime-e_ZxGhcW.js +12 -0
  179. package/dist/embedded-gateway-stub.runtime.js +1 -1
  180. package/dist/entry.d.ts +1 -1
  181. package/dist/extensionAPI.d.ts +2 -2
  182. package/dist/extensionAPI.js +1 -1
  183. package/dist/extensions/active-memory/index.d.ts +1 -1
  184. package/dist/extensions/active-memory/index.js +1 -1
  185. package/dist/extensions/admin-http-rpc/index.d.ts +1 -1
  186. package/dist/extensions/admin-http-rpc/index.js +1 -1
  187. package/dist/extensions/bonjour/index.d.ts +1 -1
  188. package/dist/extensions/browser/browser-bridge.js +1 -1
  189. package/dist/extensions/browser/browser-config.js +4 -4
  190. package/dist/extensions/browser/browser-control-auth.js +2 -2
  191. package/dist/extensions/browser/browser-doctor.js +2 -2
  192. package/dist/extensions/browser/browser-maintenance.js +1 -1
  193. package/dist/extensions/browser/browser-profiles.js +2 -2
  194. package/dist/extensions/browser/browser-runtime-api.js +12 -12
  195. package/dist/extensions/browser/cli-metadata.d.ts +1 -1
  196. package/dist/extensions/browser/cli-metadata.js +1 -1
  197. package/dist/extensions/browser/index.d.ts +1 -1
  198. package/dist/extensions/browser/index.js +1 -1
  199. package/dist/extensions/browser/plugin-registration.d.ts +1 -1
  200. package/dist/extensions/browser/plugin-registration.js +1 -1
  201. package/dist/extensions/browser/register.runtime.d.ts +2 -2
  202. package/dist/extensions/browser/register.runtime.js +4 -4
  203. package/dist/extensions/browser/runtime-api.d.ts +3 -3
  204. package/dist/extensions/browser/runtime-api.js +14 -14
  205. package/dist/extensions/browser/setup-api.d.ts +1 -1
  206. package/dist/extensions/canvas/cli-metadata.d.ts +1 -1
  207. package/dist/extensions/canvas/index.d.ts +1 -1
  208. package/dist/extensions/canvas/index.js +1 -1
  209. package/dist/extensions/canvas/setup-api.d.ts +1 -1
  210. package/dist/extensions/deepseek/api.d.ts +1 -1
  211. package/dist/extensions/deepseek/index.d.ts +1 -1
  212. package/dist/extensions/deepseek/provider-discovery.d.ts +1 -1
  213. package/dist/extensions/deepseek/stream.d.ts +1 -1
  214. package/dist/extensions/device-pair/api.d.ts +4 -4
  215. package/dist/extensions/device-pair/api.js +1 -1
  216. package/dist/extensions/device-pair/index.d.ts +1 -1
  217. package/dist/extensions/device-pair/notify.d.ts +1 -1
  218. package/dist/extensions/device-pair/pair-command-approve.js +1 -1
  219. package/dist/extensions/device-pair/qr-image.d.ts +1 -1
  220. package/dist/extensions/memory-core/api.d.ts +1 -1
  221. package/dist/extensions/memory-core/cli-metadata.d.ts +1 -1
  222. package/dist/extensions/memory-core/cli-metadata.js +1 -1
  223. package/dist/extensions/memory-core/index.d.ts +1 -1
  224. package/dist/extensions/memory-core/manager-runtime.d.ts +1 -1
  225. package/dist/extensions/memory-core/runtime-api.d.ts +3 -3
  226. package/dist/extensions/skill-workshop/api.d.ts +2 -2
  227. package/dist/extensions/skill-workshop/api.js +1 -1
  228. package/dist/extensions/skill-workshop/index.d.ts +1 -1
  229. package/dist/extensions/skill-workshop/index.js +2 -2
  230. package/dist/extensions/tavily/index.d.ts +1 -1
  231. package/dist/extensions/tavily/web-search-contract-api.d.ts +1 -1
  232. package/dist/extensions/tavily/web-search-provider.d.ts +1 -1
  233. package/dist/extensions/thread-ownership/api.d.ts +2 -2
  234. package/dist/extensions/thread-ownership/index.d.ts +1 -1
  235. package/dist/extensions/webhooks/api.d.ts +2 -2
  236. package/dist/extensions/webhooks/api.js +1 -1
  237. package/dist/extensions/webhooks/index.d.ts +1 -1
  238. package/dist/extensions/webhooks/index.js +1 -1
  239. package/dist/extensions/webhooks/runtime-api.d.ts +1 -1
  240. package/dist/extensions/workboard/api.d.ts +2 -2
  241. package/dist/extensions/workboard/index.d.ts +1 -1
  242. package/dist/extensions/workboard/index.js +1 -1
  243. package/dist/extensions/workboard/runtime-api.d.ts +1 -1
  244. package/dist/fengming-runtime-CtRd5677.d.ts +153 -0
  245. package/dist/fengming-tools-DBLsJfsf.js +12221 -0
  246. package/dist/gateway-cli-BgDV2HF9.js +443 -0
  247. package/dist/gateway-method-runtime-d9oN_XO9.js +21 -0
  248. package/dist/get-reply-CEMtvaTJ.js +5198 -0
  249. package/dist/get-reply-from-config.runtime-CE8zmX7o.js +2 -0
  250. package/dist/get-reply-from-config.runtime.js +1 -1
  251. package/dist/heartbeat-runner-H8SmaKmJ.js +5 -0
  252. package/dist/heartbeat-runner.runtime-6hUaxEbl.js +3 -0
  253. package/dist/heartbeat-runner.runtime.js +1 -1
  254. package/dist/hooks-DkEvkwzS.js +536 -0
  255. package/dist/host-compat-DeAq3dnI.d.ts +21 -0
  256. package/dist/http-registry-BDoApjTY.d.ts +23 -0
  257. package/dist/inbound-reply-dispatch-CIYP2OPo.d.ts +156 -0
  258. package/dist/inbound-reply-dispatch-geHu6oUK.js +147 -0
  259. package/dist/inbound-reply-dispatch-vwW5Hl-_.js +2 -0
  260. package/dist/index.js +1 -1
  261. package/dist/init-DpE_6dG4.js +59 -0
  262. package/dist/interactive-Cb_1f91G.d.ts +26 -0
  263. package/dist/isolated-agent-B_upYOOM.js +2 -0
  264. package/dist/isolated-agent-KH9uwWhw.js +1097 -0
  265. package/dist/kernel-BHnBXnm2.d.ts +241 -0
  266. package/dist/lifecycle-BmZwopzF.js +570 -0
  267. package/dist/list.probe-5kzWm9Jk.js +451 -0
  268. package/dist/list.probe-9zBcGGQ4.js +2 -0
  269. package/dist/list.status-command-DY2ifqp1.js +815 -0
  270. package/dist/llm-slug-generator-Bmx0I84M.js +78 -0
  271. package/dist/llm-slug-generator.js +1 -1
  272. package/dist/loader-BVz75gSb.d.ts +142 -0
  273. package/dist/local-dispatch.runtime-CX3IOY1E.js +10 -0
  274. package/dist/local-dispatch.runtime.js +1 -1
  275. package/dist/manager-BXGg8bfG.d.ts +409 -0
  276. package/dist/mcp-http-B1lnh67s.js +2 -0
  277. package/dist/mcp-http-CamghE-W.js +583 -0
  278. package/dist/media-runtime-DpykroJR.d.ts +261 -0
  279. package/dist/memory-core-host-engine-embeddings-N2dX5P40.d.ts +324 -0
  280. package/dist/memory-core-host-engine-storage-WQfkQMer.d.ts +54 -0
  281. package/dist/message-handler-Ca_pqGVS.js +1806 -0
  282. package/dist/model-catalog-BBMLIjhq.d.ts +88 -0
  283. package/dist/model-selection-Cq82FXLy.js +352 -0
  284. package/dist/models-cli-Dm_393dw.js +257 -0
  285. package/dist/monitor-d0eyE2k0.js +60 -0
  286. package/dist/monitor.account-vLQ3bKHu.js +5382 -0
  287. package/dist/nodes-Bunvrb33.js +1483 -0
  288. package/dist/nodes-edNlxb2I.js +3 -0
  289. package/dist/nodes-pending-DEIwVh9v.js +211 -0
  290. package/dist/openai-compat-errors-CvWEoG98.js +136 -0
  291. package/dist/openai-http-Bskdv4Tv.js +836 -0
  292. package/dist/openresponses-http-DxdgCxFU.js +1175 -0
  293. package/dist/operations-Z85LFqsT.js +805 -0
  294. package/dist/outbound.types-DVkbsxo8.d.ts +291 -0
  295. package/dist/plugin-enabled-fvhTpvYS.js +232 -0
  296. package/dist/plugin-entry-CunlVUw6.d.ts +47 -0
  297. package/dist/plugin-registration-9ovnK_Tk.js +97 -0
  298. package/dist/plugin-runtime-DH2ZM9P5.d.ts +117 -0
  299. package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
  300. package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
  301. package/dist/plugin-sdk/acp-runtime.js +1 -1
  302. package/dist/plugin-sdk/agent-harness-runtime.js +5 -5
  303. package/dist/plugin-sdk/agent-harness-task-runtime.js +1 -1
  304. package/dist/plugin-sdk/agent-harness.js +6 -6
  305. package/dist/plugin-sdk/agent-runtime.js +2 -2
  306. package/dist/plugin-sdk/bundled-channel-config-schema-Dfn3b8sF.d.ts +3169 -0
  307. package/dist/plugin-sdk/bundled-channel-config-schema.d.ts +1 -1
  308. package/dist/plugin-sdk/channel-config-schema-legacy.d.ts +1 -1
  309. package/dist/plugin-sdk/channel-core.js +2 -2
  310. package/dist/plugin-sdk/channel-envelope.js +1 -1
  311. package/dist/plugin-sdk/channel-inbound-roots.js +1 -1
  312. package/dist/plugin-sdk/channel-inbound.js +2 -2
  313. package/dist/plugin-sdk/channel-location.js +1 -1
  314. package/dist/plugin-sdk/channel-message-runtime.js +3 -3
  315. package/dist/plugin-sdk/channel-message.js +2 -2
  316. package/dist/plugin-sdk/channel-runtime.js +0 -1
  317. package/dist/plugin-sdk/command-status-runtime.js +1 -1
  318. package/dist/plugin-sdk/compat.js +1 -1
  319. package/dist/plugin-sdk/conversation-binding-runtime.js +1 -1
  320. package/dist/plugin-sdk/conversation-runtime.js +3 -3
  321. package/dist/plugin-sdk/core.js +2 -2
  322. package/dist/plugin-sdk/discord.d.ts +1 -1
  323. package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
  324. package/dist/plugin-sdk/health.js +1 -1
  325. package/dist/plugin-sdk/hook-runtime.js +0 -1
  326. package/dist/plugin-sdk/inbound-reply-dispatch.js +2 -2
  327. package/dist/plugin-sdk/index.js +1 -1
  328. package/dist/plugin-sdk/infra-runtime.js +3 -1
  329. package/dist/plugin-sdk/provider-auth-api-key.js +0 -1
  330. package/dist/plugin-sdk/provider-stream-family.js +0 -1
  331. package/dist/plugin-sdk/provider-usage.js +649 -1
  332. package/dist/plugin-sdk/reply-runtime.js +4 -4
  333. package/dist/plugin-sdk/video-generation.js +206 -1
  334. package/dist/plugin-service-BdZxoKBZ.js +1249 -0
  335. package/dist/plugin-service-quTl5hT0.d.ts +24 -0
  336. package/dist/plugins/build-smoke-entry.d.ts +2 -2
  337. package/dist/plugins/loader.d.ts +1 -1
  338. package/dist/plugins/provider-discovery.runtime.d.ts +1 -1
  339. package/dist/plugins/provider-runtime.runtime.d.ts +1 -1
  340. package/dist/plugins/runtime/index.d.ts +1 -1
  341. package/dist/plugins/runtime/index.js +4 -4
  342. package/dist/plugins/tools.d.ts +1 -1
  343. package/dist/prepare.runtime-DFvkUqBZ.js +798 -0
  344. package/dist/prepare.runtime.js +1 -1
  345. package/dist/preview-warnings-CGzc8ccG.js +618 -0
  346. package/dist/program-D19g2jaa.js +131 -0
  347. package/dist/provider-api-key-auth-B8GgTfo8.d.ts +27 -0
  348. package/dist/provider-auth-result-Diw-woMA.d.ts +21 -0
  349. package/dist/provider-catalog-shared-hMvzzDgL.d.ts +62 -0
  350. package/dist/provider-dispatcher-DCTc4lG_.js +22 -0
  351. package/dist/provider-dispatcher.runtime.js +1 -1
  352. package/dist/provider-model-shared-BUCh3uCL.d.ts +143 -0
  353. package/dist/provider-registry-BIokPlxa.d.ts +8 -0
  354. package/dist/provider-registry-CyUOXHG-.d.ts +8 -0
  355. package/dist/provider-registry-i--H79Ao.d.ts +29 -0
  356. package/dist/provider-self-hosted-setup-BF8UR8wg.d.ts +74 -0
  357. package/dist/provider-stream-NF0XJnar.d.ts +139 -0
  358. package/dist/provider-stream-shared-DLwDaYed.d.ts +132 -0
  359. package/dist/provider-web-search-contract-fields-D61Vl5Kl.d.ts +25 -0
  360. package/dist/pw-ai-DYR-D7xR.js +3064 -0
  361. package/dist/register.agent-DwW0mQPk.js +152 -0
  362. package/dist/register.crestodian-BhIukKDA.js +24 -0
  363. package/dist/register.maintenance-DWHlvztJ.js +85 -0
  364. package/dist/register.subclis-Bsvdh8RI.js +3 -0
  365. package/dist/register.subclis-DVk0HU4k.js +31 -0
  366. package/dist/register.subclis-core-BK7nVvl6.js +278 -0
  367. package/dist/registry-hscEPAcC.d.ts +8 -0
  368. package/dist/registry-types-Ce-n1tuw.d.ts +392 -0
  369. package/dist/repair-sequencing-0-qGNSUO.js +652 -0
  370. package/dist/reply-payload-mCw4ZND6.d.ts +200 -0
  371. package/dist/reply-turn-admission-DMWNadoS.js +2056 -0
  372. package/dist/reply.runtime-CE8zmX7o.js +2 -0
  373. package/dist/reply.runtime.js +1 -1
  374. package/dist/result-fallback-classifier-BZmv2ACy.js +98 -0
  375. package/dist/route-qQ-jYpFa.js +475 -0
  376. package/dist/routes-dTCmw98g.js +2 -0
  377. package/dist/routes-r8DRKa83.js +3701 -0
  378. package/dist/run-BgH7EPGH.js +1162 -0
  379. package/dist/run-command-DCsM-BVh.js +23 -0
  380. package/dist/run-command-I2ib4dwS.js +2 -0
  381. package/dist/run-context-CWaKUKKJ.js +66 -0
  382. package/dist/run-embedded.runtime-CBnDBWN0.js +4 -0
  383. package/dist/run-embedded.runtime.js +1 -1
  384. package/dist/run-execution-cli.runtime-DlYXI-lw.js +4 -0
  385. package/dist/run-execution-cli.runtime.js +1 -1
  386. package/dist/run-executor.runtime-DwepGrmB.js +330 -0
  387. package/dist/run-executor.runtime.js +1 -1
  388. package/dist/run-subagent-registry.runtime-CeVpoIhj.js +2 -0
  389. package/dist/run-subagent-registry.runtime.js +1 -1
  390. package/dist/runtime-D2ee-rNh.js +436 -0
  391. package/dist/runtime-api-B99ZlkNt.d.ts +5 -0
  392. package/dist/runtime-api-Cta2L_Yo.js +12 -0
  393. package/dist/runtime-channel-LKOkML3M.js +2 -0
  394. package/dist/runtime-channel-UtWvrTZ5.js +148 -0
  395. package/dist/runtime-embedded-agent.runtime-9O2Idzyb.js +2 -0
  396. package/dist/runtime-embedded-agent.runtime.js +1 -1
  397. package/dist/runtime-forwarders-DjI8RFL5.d.ts +39 -0
  398. package/dist/sdk-setup-tools-B-X04pa6.js +8 -0
  399. package/dist/selection-B02h8Old.js +3 -0
  400. package/dist/selection-DEPvzrW2.js +18365 -0
  401. package/dist/server-CMYi8gDo.js +24 -0
  402. package/dist/server-Cx07rsiY.js +72 -0
  403. package/dist/server-close.runtime.js +1 -1
  404. package/dist/server-context-BIemGRt4.js +2 -0
  405. package/dist/server-context-CB_an9iy.js +955 -0
  406. package/dist/server-cron-BeyuBUjb.js +3173 -0
  407. package/dist/server-cron-CV7KkVeB.js +2 -0
  408. package/dist/server-methods-C7EnpOhB.js +497 -0
  409. package/dist/server-node-events-DMMzZciN.js +597 -0
  410. package/dist/server-plugin-bootstrap-O6MzvzL8.js +71 -0
  411. package/dist/server-plugins-Dwnaz9kX.js +435 -0
  412. package/dist/server-reload-handlers-C-6TyPvI.js +719 -0
  413. package/dist/server-restart-sentinel-Dc35eYgk.js +700 -0
  414. package/dist/server-runtime-services-DCs-gqh_.js +3 -0
  415. package/dist/server-runtime-services-DF2fzzVd.js +147 -0
  416. package/dist/server-startup-plugins-t-YeYibm.js +127 -0
  417. package/dist/server-startup-post-attach-CiEki-DC.js +793 -0
  418. package/dist/server-ws-runtime-uaUpI-e8.js +374 -0
  419. package/dist/server.impl-MoHjSMr5.js +2622 -0
  420. package/dist/session-kill-http-CYCiQpt2.js +121 -0
  421. package/dist/session-reset-service-BYbADY57.js +651 -0
  422. package/dist/session-status.runtime-8NASbeO4.js +2 -0
  423. package/dist/session-status.runtime.js +1 -1
  424. package/dist/session-subagent-reactivation.runtime-DGeNY2Rb.js +2 -0
  425. package/dist/session-subagent-reactivation.runtime.js +1 -1
  426. package/dist/session-tab-registry-C2eElZrt.js +551 -0
  427. package/dist/sessions-DXAdVXIx.js +1917 -0
  428. package/dist/sessions-history-http-BwK7b8OH.js +432 -0
  429. package/dist/sessions-patch-BYC5gvY1.js +401 -0
  430. package/dist/sessions-resolve-C3ORcdmo.js +180 -0
  431. package/dist/sessions.runtime-BijldeSY.js +2 -0
  432. package/dist/sessions.runtime.js +1 -1
  433. package/dist/snapshot-urls-C5CfP3Co.js +317 -0
  434. package/dist/speech-core-wWkTZPpQ.d.ts +49 -0
  435. package/dist/standalone-CHrieUsw.js +42 -0
  436. package/dist/startup-context-CZfmG8-g.js +314 -0
  437. package/dist/status-subagents.runtime-D2XMebiS.js +32 -0
  438. package/dist/status-subagents.runtime.js +1 -1
  439. package/dist/status-text-JR7IPyzZ.js +301 -0
  440. package/dist/stream-BJgTkLEI.d.ts +5 -0
  441. package/dist/subagent-announce-B9cfs_KZ.js +353 -0
  442. package/dist/subagent-announce-delivery-CtmEvLTS.js +1369 -0
  443. package/dist/subagent-control-DVqLHi9O.js +492 -0
  444. package/dist/subagent-hooks-D251uSvy.js +230 -0
  445. package/dist/subagent-hooks-api-DvdMKxsC.js +23 -0
  446. package/dist/subagent-hooks-uLORYChc.js +2 -0
  447. package/dist/subagent-registry-BW2l_oYu.js +3 -0
  448. package/dist/subagent-registry-BxEMHuiN.js +2627 -0
  449. package/dist/subagent-registry.runtime.d.ts +1 -1
  450. package/dist/subagent-registry.runtime.js +1 -1
  451. package/dist/subagent-session-cleanup-BC5wV2qQ.js +390 -0
  452. package/dist/system-fvgHsr2x.js +111 -0
  453. package/dist/talk-DU0Sod_K.js +2454 -0
  454. package/dist/target-id-BR2xJIkd.js +107 -0
  455. package/dist/task-registry-control.runtime.js +1 -1
  456. package/dist/thread-bindings-8XNu5U2p.js +228 -0
  457. package/dist/tool-Boeg0N5g.js +143 -0
  458. package/dist/tool-dispatch-BhLLaL2g.js +155 -0
  459. package/dist/tool-resolution-CzsLs-87.js +153 -0
  460. package/dist/tool-split-Bedy42Ms.d.ts +19 -0
  461. package/dist/tools-B6egHpE3.d.ts +38 -0
  462. package/dist/tools-effective-NXscxK8n.js +442 -0
  463. package/dist/tools-effective-inventory-NsGMUVo-.js +379 -0
  464. package/dist/tools-invoke-_sSu96Kq.js +51 -0
  465. package/dist/tools-invoke-http-BDhlRl-G.js +68 -0
  466. package/dist/tools-invoke-shared-BH-T9Bcg.js +200 -0
  467. package/dist/tts-runtime-C1wu3o15.d.ts +230 -0
  468. package/dist/tui-C733Qov0.js +2 -0
  469. package/dist/tui-DqbscVN5.js +3 -0
  470. package/dist/tui-backend-_Pn3Byj-.js +257 -0
  471. package/dist/tui-cli-CAiC39zd.js +40 -0
  472. package/dist/tui-ink-run-ChXEGj1h.js +7414 -0
  473. package/dist/tui-ink-run-D4mSfLHj.js +2 -0
  474. package/dist/types-BQw1qXGl.d.ts +7034 -0
  475. package/dist/types-BzMoU6-C.d.ts +111 -0
  476. package/dist/types-DltHmoCX.d.ts +393 -0
  477. package/dist/types.public-C_bVIMBl.d.ts +70 -0
  478. package/dist/web-fetch/runtime.d.ts +1 -1
  479. package/dist/webhook-targets-DW2jhddP.d.ts +99 -0
  480. package/npm-shrinkwrap.json +12861 -11889
  481. package/package.json +2 -5
  482. package/skills/batch/SKILL.md +118 -0
  483. package/skills/code-review/SKILL.md +107 -0
  484. package/skills/debug/SKILL.md +83 -0
  485. package/skills/loop/SKILL.md +118 -0
  486. package/skills/run/SKILL.md +79 -0
  487. package/skills/run-skill-generator/SKILL.md +179 -0
  488. package/skills/verify/SKILL.md +103 -0
  489. package/dist/abort-DGskei2p.js +0 -277
  490. package/dist/abort.runtime-Buq9IZxn.js +0 -2
  491. package/dist/acp-spawn-DC6IyYaB.js +0 -1286
  492. package/dist/acp-spawn-Diqb3nel.js +0 -2
  493. package/dist/acp-stateful-target-driver-Clhe_L8v.js +0 -89
  494. package/dist/active-tool-schema-warnings-BRhKkyvt.js +0 -2
  495. package/dist/active-tool-schema-warnings-C6N0-ce6.js +0 -105
  496. package/dist/agent-C5lhsEZJ.js +0 -2
  497. package/dist/agent-WEb757bl.js +0 -1825
  498. package/dist/agent-command-iLD_nsVY.js +0 -1435
  499. package/dist/agent-core-BeDN8Ns5.d.ts +0 -13
  500. package/dist/agent-harness-runtime-C89_Q-bW.d.ts +0 -913
  501. package/dist/agent-harness-runtime-Dfn5rik2.js +0 -207
  502. package/dist/agent-runner-utils-DNiuuo43.js +0 -267
  503. package/dist/agent-runner.runtime-CFF_qJ5V.js +0 -3784
  504. package/dist/agent-runtime-BkMtWXxn.js +0 -199
  505. package/dist/agent-runtime-HufMO_YR.d.ts +0 -207
  506. package/dist/agent-tools-HmaDv4ot.js +0 -2506
  507. package/dist/agent-via-gateway-CZQG8RYL.js +0 -486
  508. package/dist/agent-wait-dedupe-C3xQk2Ww.js +0 -180
  509. package/dist/agent-z1cs3c7n.js +0 -3
  510. package/dist/api-B4IMKjSe.js +0 -3
  511. package/dist/api-BwSbBWI8.js +0 -3
  512. package/dist/api-CE9In9m4.js +0 -5
  513. package/dist/api-ClPvYNGa.js +0 -32
  514. package/dist/api-CntBCaZf.js +0 -3
  515. package/dist/api-DBZBwTsn.js +0 -6
  516. package/dist/api-OCPwGOvK.js +0 -2
  517. package/dist/api-yYhEo7gK.js +0 -4
  518. package/dist/approval-client-helpers-CfdQ3-vv.d.ts +0 -78
  519. package/dist/approval-native-helpers-DSHPksK4.d.ts +0 -241
  520. package/dist/approval-renderers-BfEfwk44.d.ts +0 -39
  521. package/dist/assistant-v5fdOYu7.js +0 -291
  522. package/dist/attachment-normalize-BHAbLiL2.js +0 -213
  523. package/dist/attempt-execution-5w9WYbaJ.js +0 -584
  524. package/dist/attempt-execution.runtime-DnhOWGzr.js +0 -3
  525. package/dist/attempt.prompt-helpers-C4M4erF7.js +0 -543
  526. package/dist/binding-routing-Dpes-QF1.js +0 -113
  527. package/dist/binding-targets-B6H5Pd-A.js +0 -121
  528. package/dist/bridge-server-BCpxCRm_.js +0 -113
  529. package/dist/browser-cli-DMhXHopl.js +0 -230
  530. package/dist/browser-cli-Dy_VugK0.js +0 -2
  531. package/dist/browser-cli-actions-input-WMP7_lm6.js +0 -522
  532. package/dist/browser-cli-actions-observe-DQWAWhwU.js +0 -81
  533. package/dist/browser-cli-debug-CaT2ZKAx.js +0 -137
  534. package/dist/browser-cli-inspect-DU-LUXq1.js +0 -117
  535. package/dist/browser-cli-manage-DAuogqIh.js +0 -446
  536. package/dist/browser-cli-resize-Cz5uO_aR.js +0 -32
  537. package/dist/browser-cli-shared-CjPZcG3j.js +0 -69
  538. package/dist/browser-cli-state-CC3l77-K.js +0 -371
  539. package/dist/browser-control-auth-ELccIUZy.js +0 -2
  540. package/dist/browser-profiles-Cuy4ia6_.js +0 -2
  541. package/dist/browser-runtime-De-iUfME.js +0 -389
  542. package/dist/build-DEF8Per9.js +0 -261
  543. package/dist/capability-cli-Bydel4E7.js +0 -1809
  544. package/dist/channel-6SGL4R5P.js +0 -2309
  545. package/dist/channel-D3Q3b8J-.d.ts +0 -427
  546. package/dist/channel-core-Bj71kAB5.d.ts +0 -6
  547. package/dist/channel-core-DMvyWnHg.js +0 -5
  548. package/dist/channel-entry-contract-zYxRmEdf.d.ts +0 -114
  549. package/dist/channel-inbound-DVJzBcJ8.d.ts +0 -97
  550. package/dist/channel-inbound-DlCa7eJe.js +0 -121
  551. package/dist/channel-message-CyPGMMFB.js +0 -12
  552. package/dist/channel-message-Czl4cdoA.d.ts +0 -9
  553. package/dist/channel-outbound-BNbhmruA.d.ts +0 -325
  554. package/dist/channel-pairing-BiS-tSvl.d.ts +0 -58
  555. package/dist/channel-runtime-D8hntg7H.js +0 -7
  556. package/dist/channel.runtime-DxErReJR.js +0 -697
  557. package/dist/chat-BLA8ORQI.js +0 -3
  558. package/dist/chat-DWRXkuvU.js +0 -2940
  559. package/dist/chrome-DPwFYi-g.js +0 -1517
  560. package/dist/cli-compaction-YZpssARf.js +0 -363
  561. package/dist/cli-runner-D2OAqxu3.js +0 -597
  562. package/dist/cli-runner-DO4SORQf.js +0 -2
  563. package/dist/cli-runner.runtime-CNSIpbeT.js +0 -4
  564. package/dist/cli-runner.runtime-DAOYvpVQ.js +0 -3
  565. package/dist/command-registry-DpD0fb8D.js +0 -4
  566. package/dist/command-registry-core-Cl3tLG8G.js +0 -114
  567. package/dist/command-registry-nbP7c8RT.js +0 -9
  568. package/dist/command-status.runtime-BBuXTkq0.js +0 -90
  569. package/dist/commands-CR8MVvlD.d.ts +0 -117
  570. package/dist/commands-compact.runtime-BoafIjjg.js +0 -10
  571. package/dist/commands-handlers.runtime-D9jViG_x.js +0 -6327
  572. package/dist/commands-status-BqqJ7PVq.js +0 -16
  573. package/dist/commands-status-CMd41Vxf.js +0 -3
  574. package/dist/commands-status.runtime-CMd41Vxf.js +0 -3
  575. package/dist/commands-subagents-control.runtime-CU4I3A_n.js +0 -2
  576. package/dist/commands-system-prompt-CTtu1D3-.js +0 -2
  577. package/dist/commands-system-prompt-xswhORdM.js +0 -161
  578. package/dist/commands-types-B67CsqXf.d.ts +0 -132
  579. package/dist/commands.runtime-BUFhkrjQ.js +0 -175
  580. package/dist/compact-Dz_WvRkQ.js +0 -1165
  581. package/dist/compact.runtime-n-AKErni.js +0 -12
  582. package/dist/completion-cli-DJYs_L4_.js +0 -393
  583. package/dist/config-CFMbHJb0.js +0 -374
  584. package/dist/config-mutations-DCAloTKR.js +0 -161
  585. package/dist/config-schema-Drw1zrnG.d.ts +0 -20
  586. package/dist/context-engine-host-compat-4mNm1HCE.js +0 -2
  587. package/dist/context-engine-host-compat-BzJ7fUIn.js +0 -280
  588. package/dist/context-engine-lifecycle-V4PNQp6k.js +0 -627
  589. package/dist/control-auth-DG_cw-aN.js +0 -114
  590. package/dist/control-service-CurYipgK.js +0 -3
  591. package/dist/control-service-VyncoV7j.js +0 -40
  592. package/dist/control-ui/assets/activity-D5Plhlo-.js +0 -124
  593. package/dist/control-ui/assets/agents-Chcdfe1E.js +0 -1030
  594. package/dist/control-ui/assets/channels-BEtB4H37.js +0 -120
  595. package/dist/control-ui/assets/cron-CZyPkxSU.js +0 -1016
  596. package/dist/control-ui/assets/debug-DvM8iG47.js +0 -97
  597. package/dist/control-ui/assets/index-Rmpgh0f1.js +0 -7214
  598. package/dist/control-ui/assets/instances-yTC_uu60.js +0 -57
  599. package/dist/control-ui/assets/nodes-vbAxVHIH.js +0 -444
  600. package/dist/control-ui/assets/sessions-DOviHme5.js +0 -425
  601. package/dist/control-ui/assets/skills-Bfp5HEGW.js +0 -362
  602. package/dist/control-ui/assets/workboard-5sU2kHsV.js +0 -402
  603. package/dist/conversation-runtime-DgaABwHh.js +0 -31
  604. package/dist/core-BeBXdneV.js +0 -284
  605. package/dist/core-Chqb7X6l.d.ts +0 -223
  606. package/dist/core-api-BlK0FgBM.js +0 -2
  607. package/dist/core-api-pAvYk716.js +0 -5
  608. package/dist/crestodian-FeGTBqO1.js +0 -55
  609. package/dist/delegate-BjIjSU_E.d.ts +0 -30
  610. package/dist/deliver-CvtWN4Ey.d.ts +0 -111
  611. package/dist/delivery-queue-CQ-cj3KG.d.ts +0 -161
  612. package/dist/delivery-queue-runtime-ut7MG04m.d.ts +0 -9
  613. package/dist/detect-BjXPyrwn.js +0 -115
  614. package/dist/detect-C1xeIemQ.d.ts +0 -16
  615. package/dist/dialogue-BowVYhEC.js +0 -37
  616. package/dist/direct-dm-DoZZHpA0.d.ts +0 -79
  617. package/dist/directive-handling.fast-lane-hnmQ_CvD.js +0 -70
  618. package/dist/directive-handling.impl-Cai-CFS1.js +0 -2
  619. package/dist/directive-handling.impl-DY84qIfU.js +0 -823
  620. package/dist/directive-handling.model-selection-DASssLFQ.js +0 -122
  621. package/dist/directive-handling.persist.runtime-BY7tJUs2.js +0 -274
  622. package/dist/dispatch-D5iG5A8j.js +0 -2057
  623. package/dist/dispatch-acp-transcript.runtime-D3r16hbD.js +0 -40
  624. package/dist/dispatch-acp.runtime-CAIau5qX.js +0 -18
  625. package/dist/dispatcher-7-d2gw3J.js +0 -106
  626. package/dist/doctor-DD5YEMmf.js +0 -6
  627. package/dist/doctor-config-flow-CdlLHJmX.js +0 -1819
  628. package/dist/doctor-core-checks-6MP99TQG.js +0 -666
  629. package/dist/doctor-core-checks-Dm_o576z.js +0 -2
  630. package/dist/doctor-core-checks.runtime-B2qbKATd.js +0 -278
  631. package/dist/doctor-health-BKrhOv1v.js +0 -65
  632. package/dist/doctor-health-contributions-bIBLmw69.js +0 -874
  633. package/dist/doctor-lint-aOLOWli4.js +0 -95
  634. package/dist/doctor-state-integrity-23NQNNuo.js +0 -1257
  635. package/dist/draft-stream-controls-Bk1GVJ1l.d.ts +0 -159
  636. package/dist/embedded-agent-BeK8FhZr.d.ts +0 -5
  637. package/dist/embedded-agent-CNp_y7jW.js +0 -4074
  638. package/dist/embedded-agent-NEmNlXDR.js +0 -4
  639. package/dist/embedded-agent.runtime-hEby8P2s.js +0 -4
  640. package/dist/embedded-backend-BdbgfpBP.js +0 -1581
  641. package/dist/embedded-gateway-stub.runtime-ySZUA3Gy.js +0 -12
  642. package/dist/extensions/alibaba/fengming.plugin.json +0 -47
  643. package/dist/extensions/alibaba/index.d.ts +0 -12
  644. package/dist/extensions/alibaba/index.js +0 -13
  645. package/dist/extensions/alibaba/package.json +0 -15
  646. package/dist/extensions/alibaba/video-generation-provider.d.ts +0 -6
  647. package/dist/extensions/alibaba/video-generation-provider.js +0 -2
  648. package/dist/extensions/baichuan/fengming.plugin.json +0 -69
  649. package/dist/extensions/baichuan/index.d.ts +0 -11
  650. package/dist/extensions/baichuan/index.js +0 -45
  651. package/dist/extensions/baichuan/models.d.ts +0 -7
  652. package/dist/extensions/baichuan/models.js +0 -2
  653. package/dist/extensions/baichuan/onboard.d.ts +0 -5
  654. package/dist/extensions/baichuan/onboard.js +0 -2
  655. package/dist/extensions/baichuan/package.json +0 -15
  656. package/dist/extensions/baichuan/provider-catalog.d.ts +0 -2
  657. package/dist/extensions/baichuan/provider-catalog.js +0 -2
  658. package/dist/extensions/baichuan/provider-discovery.d.ts +0 -2
  659. package/dist/extensions/baichuan/provider-discovery.js +0 -5
  660. package/dist/extensions/byteplus/api.d.ts +0 -3
  661. package/dist/extensions/byteplus/api.js +0 -3
  662. package/dist/extensions/byteplus/fengming.plugin.json +0 -196
  663. package/dist/extensions/byteplus/index.d.ts +0 -12
  664. package/dist/extensions/byteplus/index.js +0 -85
  665. package/dist/extensions/byteplus/models.d.ts +0 -2
  666. package/dist/extensions/byteplus/models.js +0 -2
  667. package/dist/extensions/byteplus/package.json +0 -15
  668. package/dist/extensions/byteplus/provider-catalog.d.ts +0 -2
  669. package/dist/extensions/byteplus/provider-catalog.js +0 -2
  670. package/dist/extensions/byteplus/provider-discovery.d.ts +0 -5
  671. package/dist/extensions/byteplus/provider-discovery.js +0 -23
  672. package/dist/extensions/byteplus/video-generation-provider.d.ts +0 -6
  673. package/dist/extensions/byteplus/video-generation-provider.js +0 -2
  674. package/dist/extensions/longcat/fengming.plugin.json +0 -84
  675. package/dist/extensions/longcat/index.d.ts +0 -11
  676. package/dist/extensions/longcat/index.js +0 -45
  677. package/dist/extensions/longcat/models.d.ts +0 -7
  678. package/dist/extensions/longcat/models.js +0 -2
  679. package/dist/extensions/longcat/onboard.d.ts +0 -5
  680. package/dist/extensions/longcat/onboard.js +0 -2
  681. package/dist/extensions/longcat/package.json +0 -15
  682. package/dist/extensions/longcat/provider-catalog.d.ts +0 -2
  683. package/dist/extensions/longcat/provider-catalog.js +0 -2
  684. package/dist/extensions/longcat/provider-discovery.d.ts +0 -2
  685. package/dist/extensions/longcat/provider-discovery.js +0 -5
  686. package/dist/extensions/minimax/api.d.ts +0 -5
  687. package/dist/extensions/minimax/api.js +0 -6
  688. package/dist/extensions/minimax/fengming.plugin.json +0 -206
  689. package/dist/extensions/minimax/image-generation-provider.d.ts +0 -6
  690. package/dist/extensions/minimax/image-generation-provider.js +0 -2
  691. package/dist/extensions/minimax/index.d.ts +0 -12
  692. package/dist/extensions/minimax/index.js +0 -29
  693. package/dist/extensions/minimax/media-understanding-provider.d.ts +0 -6
  694. package/dist/extensions/minimax/media-understanding-provider.js +0 -2
  695. package/dist/extensions/minimax/model-definitions.d.ts +0 -2
  696. package/dist/extensions/minimax/model-definitions.js +0 -2
  697. package/dist/extensions/minimax/music-generation-provider.d.ts +0 -6
  698. package/dist/extensions/minimax/music-generation-provider.js +0 -2
  699. package/dist/extensions/minimax/oauth.d.ts +0 -2
  700. package/dist/extensions/minimax/oauth.js +0 -2
  701. package/dist/extensions/minimax/oauth.runtime.d.ts +0 -2
  702. package/dist/extensions/minimax/oauth.runtime.js +0 -2
  703. package/dist/extensions/minimax/onboard.d.ts +0 -2
  704. package/dist/extensions/minimax/onboard.js +0 -2
  705. package/dist/extensions/minimax/package.json +0 -15
  706. package/dist/extensions/minimax/provider-catalog.d.ts +0 -2
  707. package/dist/extensions/minimax/provider-catalog.js +0 -2
  708. package/dist/extensions/minimax/provider-contract-api.d.ts +0 -6
  709. package/dist/extensions/minimax/provider-contract-api.js +0 -77
  710. package/dist/extensions/minimax/provider-discovery.d.ts +0 -5
  711. package/dist/extensions/minimax/provider-discovery.js +0 -23
  712. package/dist/extensions/minimax/provider-models.d.ts +0 -2
  713. package/dist/extensions/minimax/provider-models.js +0 -2
  714. package/dist/extensions/minimax/provider-registration.d.ts +0 -7
  715. package/dist/extensions/minimax/provider-registration.js +0 -2
  716. package/dist/extensions/minimax/speech-provider.d.ts +0 -5
  717. package/dist/extensions/minimax/speech-provider.js +0 -2
  718. package/dist/extensions/minimax/tts.d.ts +0 -20
  719. package/dist/extensions/minimax/tts.js +0 -2
  720. package/dist/extensions/minimax/video-generation-provider.d.ts +0 -7
  721. package/dist/extensions/minimax/video-generation-provider.js +0 -2
  722. package/dist/extensions/minimax/web-search-contract-api.d.ts +0 -5
  723. package/dist/extensions/minimax/web-search-contract-api.js +0 -31
  724. package/dist/extensions/minimax/web-search-provider.d.ts +0 -5
  725. package/dist/extensions/minimax/web-search-provider.js +0 -2
  726. package/dist/extensions/moonshot/api.d.ts +0 -3
  727. package/dist/extensions/moonshot/api.js +0 -4
  728. package/dist/extensions/moonshot/fengming.plugin.json +0 -250
  729. package/dist/extensions/moonshot/index.d.ts +0 -11
  730. package/dist/extensions/moonshot/index.js +0 -70
  731. package/dist/extensions/moonshot/media-understanding-provider.d.ts +0 -6
  732. package/dist/extensions/moonshot/media-understanding-provider.js +0 -2
  733. package/dist/extensions/moonshot/onboard.d.ts +0 -2
  734. package/dist/extensions/moonshot/onboard.js +0 -2
  735. package/dist/extensions/moonshot/package.json +0 -15
  736. package/dist/extensions/moonshot/provider-catalog.d.ts +0 -2
  737. package/dist/extensions/moonshot/provider-catalog.js +0 -2
  738. package/dist/extensions/moonshot/provider-contract-api.d.ts +0 -5
  739. package/dist/extensions/moonshot/provider-contract-api.js +0 -27
  740. package/dist/extensions/moonshot/provider-discovery.d.ts +0 -5
  741. package/dist/extensions/moonshot/provider-discovery.js +0 -15
  742. package/dist/extensions/moonshot/web-search-contract-api.d.ts +0 -5
  743. package/dist/extensions/moonshot/web-search-contract-api.js +0 -29
  744. package/dist/extensions/moonshot/web-search-provider.d.ts +0 -5
  745. package/dist/extensions/moonshot/web-search-provider.js +0 -2
  746. package/dist/extensions/qianfan/api.d.ts +0 -3
  747. package/dist/extensions/qianfan/api.js +0 -3
  748. package/dist/extensions/qianfan/fengming.plugin.json +0 -89
  749. package/dist/extensions/qianfan/index.d.ts +0 -11
  750. package/dist/extensions/qianfan/index.js +0 -26
  751. package/dist/extensions/qianfan/onboard.d.ts +0 -2
  752. package/dist/extensions/qianfan/onboard.js +0 -2
  753. package/dist/extensions/qianfan/package.json +0 -15
  754. package/dist/extensions/qianfan/provider-catalog.d.ts +0 -2
  755. package/dist/extensions/qianfan/provider-catalog.js +0 -2
  756. package/dist/extensions/qwen/api.d.ts +0 -4
  757. package/dist/extensions/qwen/api.js +0 -5
  758. package/dist/extensions/qwen/fengming.plugin.json +0 -389
  759. package/dist/extensions/qwen/index.d.ts +0 -11
  760. package/dist/extensions/qwen/index.js +0 -202
  761. package/dist/extensions/qwen/media-understanding-provider.d.ts +0 -6
  762. package/dist/extensions/qwen/media-understanding-provider.js +0 -2
  763. package/dist/extensions/qwen/model-definitions.d.ts +0 -2
  764. package/dist/extensions/qwen/model-definitions.js +0 -2
  765. package/dist/extensions/qwen/models.d.ts +0 -2
  766. package/dist/extensions/qwen/models.js +0 -2
  767. package/dist/extensions/qwen/onboard.d.ts +0 -21
  768. package/dist/extensions/qwen/onboard.js +0 -2
  769. package/dist/extensions/qwen/package.json +0 -15
  770. package/dist/extensions/qwen/provider-catalog.d.ts +0 -2
  771. package/dist/extensions/qwen/provider-catalog.js +0 -2
  772. package/dist/extensions/qwen/stream.d.ts +0 -2
  773. package/dist/extensions/qwen/stream.js +0 -2
  774. package/dist/extensions/qwen/video-generation-provider.d.ts +0 -6
  775. package/dist/extensions/qwen/video-generation-provider.js +0 -2
  776. package/dist/extensions/sensenova/fengming.plugin.json +0 -69
  777. package/dist/extensions/sensenova/index.d.ts +0 -11
  778. package/dist/extensions/sensenova/index.js +0 -45
  779. package/dist/extensions/sensenova/models.d.ts +0 -7
  780. package/dist/extensions/sensenova/models.js +0 -2
  781. package/dist/extensions/sensenova/onboard.d.ts +0 -5
  782. package/dist/extensions/sensenova/onboard.js +0 -2
  783. package/dist/extensions/sensenova/package.json +0 -15
  784. package/dist/extensions/sensenova/provider-catalog.d.ts +0 -2
  785. package/dist/extensions/sensenova/provider-catalog.js +0 -2
  786. package/dist/extensions/sensenova/provider-discovery.d.ts +0 -2
  787. package/dist/extensions/sensenova/provider-discovery.js +0 -5
  788. package/dist/extensions/stepfun/fengming.plugin.json +0 -162
  789. package/dist/extensions/stepfun/index.d.ts +0 -12
  790. package/dist/extensions/stepfun/index.js +0 -165
  791. package/dist/extensions/stepfun/onboard.d.ts +0 -7
  792. package/dist/extensions/stepfun/onboard.js +0 -2
  793. package/dist/extensions/stepfun/package.json +0 -15
  794. package/dist/extensions/stepfun/provider-catalog.d.ts +0 -14
  795. package/dist/extensions/stepfun/provider-catalog.js +0 -2
  796. package/dist/extensions/tencent/api.d.ts +0 -3
  797. package/dist/extensions/tencent/api.js +0 -4
  798. package/dist/extensions/tencent/fengming.plugin.json +0 -105
  799. package/dist/extensions/tencent/index.d.ts +0 -12
  800. package/dist/extensions/tencent/index.js +0 -62
  801. package/dist/extensions/tencent/models.d.ts +0 -2
  802. package/dist/extensions/tencent/models.js +0 -2
  803. package/dist/extensions/tencent/onboard.d.ts +0 -6
  804. package/dist/extensions/tencent/onboard.js +0 -2
  805. package/dist/extensions/tencent/package.json +0 -15
  806. package/dist/extensions/tencent/provider-catalog.d.ts +0 -2
  807. package/dist/extensions/tencent/provider-catalog.js +0 -2
  808. package/dist/extensions/tencent/provider-discovery.d.ts +0 -5
  809. package/dist/extensions/tencent/provider-discovery.js +0 -14
  810. package/dist/extensions/tiangong/fengming.plugin.json +0 -69
  811. package/dist/extensions/tiangong/index.d.ts +0 -11
  812. package/dist/extensions/tiangong/index.js +0 -45
  813. package/dist/extensions/tiangong/models.d.ts +0 -7
  814. package/dist/extensions/tiangong/models.js +0 -2
  815. package/dist/extensions/tiangong/onboard.d.ts +0 -5
  816. package/dist/extensions/tiangong/onboard.js +0 -2
  817. package/dist/extensions/tiangong/package.json +0 -15
  818. package/dist/extensions/tiangong/provider-catalog.d.ts +0 -2
  819. package/dist/extensions/tiangong/provider-catalog.js +0 -2
  820. package/dist/extensions/tiangong/provider-discovery.d.ts +0 -2
  821. package/dist/extensions/tiangong/provider-discovery.js +0 -5
  822. package/dist/extensions/volcengine/api.d.ts +0 -12
  823. package/dist/extensions/volcengine/api.js +0 -4
  824. package/dist/extensions/volcengine/fengming.plugin.json +0 -263
  825. package/dist/extensions/volcengine/index.d.ts +0 -12
  826. package/dist/extensions/volcengine/index.js +0 -88
  827. package/dist/extensions/volcengine/models.d.ts +0 -2
  828. package/dist/extensions/volcengine/models.js +0 -2
  829. package/dist/extensions/volcengine/package.json +0 -15
  830. package/dist/extensions/volcengine/provider-catalog.d.ts +0 -2
  831. package/dist/extensions/volcengine/provider-catalog.js +0 -2
  832. package/dist/extensions/volcengine/provider-discovery.d.ts +0 -5
  833. package/dist/extensions/volcengine/provider-discovery.js +0 -23
  834. package/dist/extensions/volcengine/speech-provider.d.ts +0 -5
  835. package/dist/extensions/volcengine/speech-provider.js +0 -2
  836. package/dist/extensions/volcengine/tts.d.ts +0 -22
  837. package/dist/extensions/volcengine/tts.js +0 -2
  838. package/dist/extensions/weixin/fengming.plugin.json +0 -22
  839. package/dist/extensions/weixin/index.d.ts +0 -26
  840. package/dist/extensions/weixin/index.js +0 -862
  841. package/dist/extensions/weixin/package.json +0 -45
  842. package/dist/extensions/xiaomi/api.d.ts +0 -3
  843. package/dist/extensions/xiaomi/api.js +0 -3
  844. package/dist/extensions/xiaomi/fengming.plugin.json +0 -260
  845. package/dist/extensions/xiaomi/index.d.ts +0 -12
  846. package/dist/extensions/xiaomi/index.js +0 -284
  847. package/dist/extensions/xiaomi/onboard.d.ts +0 -2
  848. package/dist/extensions/xiaomi/onboard.js +0 -2
  849. package/dist/extensions/xiaomi/package.json +0 -15
  850. package/dist/extensions/xiaomi/provider-catalog.d.ts +0 -2
  851. package/dist/extensions/xiaomi/provider-catalog.js +0 -2
  852. package/dist/extensions/xiaomi/speech-provider.d.ts +0 -5
  853. package/dist/extensions/xiaomi/speech-provider.js +0 -2
  854. package/dist/extensions/xiaomi/stream.d.ts +0 -5
  855. package/dist/extensions/xiaomi/stream.js +0 -2
  856. package/dist/extensions/xiaomi/thinking.d.ts +0 -11
  857. package/dist/extensions/xiaomi/thinking.js +0 -2
  858. package/dist/extensions/xingchen/fengming.plugin.json +0 -69
  859. package/dist/extensions/xingchen/index.d.ts +0 -11
  860. package/dist/extensions/xingchen/index.js +0 -45
  861. package/dist/extensions/xingchen/models.d.ts +0 -7
  862. package/dist/extensions/xingchen/models.js +0 -2
  863. package/dist/extensions/xingchen/onboard.d.ts +0 -5
  864. package/dist/extensions/xingchen/onboard.js +0 -2
  865. package/dist/extensions/xingchen/package.json +0 -15
  866. package/dist/extensions/xingchen/provider-catalog.d.ts +0 -2
  867. package/dist/extensions/xingchen/provider-catalog.js +0 -2
  868. package/dist/extensions/xingchen/provider-discovery.d.ts +0 -2
  869. package/dist/extensions/xingchen/provider-discovery.js +0 -5
  870. package/dist/extensions/yi/fengming.plugin.json +0 -84
  871. package/dist/extensions/yi/index.d.ts +0 -11
  872. package/dist/extensions/yi/index.js +0 -45
  873. package/dist/extensions/yi/models.d.ts +0 -7
  874. package/dist/extensions/yi/models.js +0 -2
  875. package/dist/extensions/yi/onboard.d.ts +0 -5
  876. package/dist/extensions/yi/onboard.js +0 -2
  877. package/dist/extensions/yi/package.json +0 -15
  878. package/dist/extensions/yi/provider-catalog.d.ts +0 -2
  879. package/dist/extensions/yi/provider-catalog.js +0 -2
  880. package/dist/extensions/yi/provider-discovery.d.ts +0 -2
  881. package/dist/extensions/yi/provider-discovery.js +0 -5
  882. package/dist/extensions/zai/api.d.ts +0 -4
  883. package/dist/extensions/zai/api.js +0 -4
  884. package/dist/extensions/zai/detect.d.ts +0 -2
  885. package/dist/extensions/zai/detect.js +0 -2
  886. package/dist/extensions/zai/fengming.plugin.json +0 -377
  887. package/dist/extensions/zai/index.d.ts +0 -12
  888. package/dist/extensions/zai/index.js +0 -297
  889. package/dist/extensions/zai/media-understanding-provider.d.ts +0 -5
  890. package/dist/extensions/zai/media-understanding-provider.js +0 -2
  891. package/dist/extensions/zai/model-definitions.d.ts +0 -2
  892. package/dist/extensions/zai/model-definitions.js +0 -2
  893. package/dist/extensions/zai/onboard.d.ts +0 -2
  894. package/dist/extensions/zai/onboard.js +0 -2
  895. package/dist/extensions/zai/package.json +0 -15
  896. package/dist/extensions/zai/runtime-api.d.ts +0 -2
  897. package/dist/extensions/zai/runtime-api.js +0 -2
  898. package/dist/extensions/zhinao/fengming.plugin.json +0 -69
  899. package/dist/extensions/zhinao/index.d.ts +0 -11
  900. package/dist/extensions/zhinao/index.js +0 -45
  901. package/dist/extensions/zhinao/models.d.ts +0 -7
  902. package/dist/extensions/zhinao/models.js +0 -2
  903. package/dist/extensions/zhinao/onboard.d.ts +0 -5
  904. package/dist/extensions/zhinao/onboard.js +0 -2
  905. package/dist/extensions/zhinao/package.json +0 -15
  906. package/dist/extensions/zhinao/provider-catalog.d.ts +0 -2
  907. package/dist/extensions/zhinao/provider-catalog.js +0 -2
  908. package/dist/extensions/zhinao/provider-discovery.d.ts +0 -2
  909. package/dist/extensions/zhinao/provider-discovery.js +0 -5
  910. package/dist/fengming-runtime-0jdu_329.d.ts +0 -153
  911. package/dist/fengming-tools-gQkwsWYz.js +0 -12221
  912. package/dist/fengming.plugin-C-Kdi1_5.js +0 -130
  913. package/dist/fengming.plugin-CRPqMj85.js +0 -166
  914. package/dist/gateway-cli-BV1V43-D.js +0 -443
  915. package/dist/gateway-method-runtime-J2OPP_oH.js +0 -21
  916. package/dist/get-reply-BE8ZGJos.js +0 -5198
  917. package/dist/get-reply-from-config.runtime-C5wfxVI_.js +0 -2
  918. package/dist/heartbeat-runner-_0HlObMb.js +0 -5
  919. package/dist/heartbeat-runner.runtime-DvYz_4Z3.js +0 -3
  920. package/dist/hook-runtime-BH9moP5T.js +0 -4
  921. package/dist/hooks-icCwsmrQ.js +0 -536
  922. package/dist/host-compat-dfJvEfe7.d.ts +0 -21
  923. package/dist/http-registry-Buj7R-F_.d.ts +0 -23
  924. package/dist/image-generation-provider-hrRXkkGc.js +0 -152
  925. package/dist/inbound-reply-dispatch-5AYt56Yt.js +0 -147
  926. package/dist/inbound-reply-dispatch-B5weFW8i.js +0 -2
  927. package/dist/inbound-reply-dispatch-cJh4H31y.d.ts +0 -156
  928. package/dist/infra-runtime-3_0R8nmO.js +0 -32
  929. package/dist/init-BnfkYG_k.js +0 -59
  930. package/dist/interactive-V8NfYsTW.d.ts +0 -26
  931. package/dist/isolated-agent-CgH7dfOj.js +0 -1097
  932. package/dist/isolated-agent-dBWkiw0a.js +0 -2
  933. package/dist/kernel-Ds2aqAJF.d.ts +0 -241
  934. package/dist/kimi-web-search-provider-QJT3Ftj3.js +0 -80
  935. package/dist/kimi-web-search-provider.runtime-Dj3SS4T5.js +0 -307
  936. package/dist/kimi-web-search-provider.runtime.js +0 -1
  937. package/dist/lib-Dg4yjNFQ.js +0 -871
  938. package/dist/lifecycle-B9k7QGsS.js +0 -570
  939. package/dist/list.probe-CbVHFNwf.js +0 -2
  940. package/dist/list.probe-CxiEBmyW.js +0 -451
  941. package/dist/list.status-command-DE-edGgB.js +0 -815
  942. package/dist/llm-slug-generator-DJgq9eFd.js +0 -78
  943. package/dist/loader-5AqYM9PC.d.ts +0 -142
  944. package/dist/local-dispatch.runtime-D3F4v51B.js +0 -10
  945. package/dist/manager-BWf1ks-Z.d.ts +0 -409
  946. package/dist/mcp-http-DU7Nsg4P.js +0 -583
  947. package/dist/mcp-http-iZCW6Cet.js +0 -2
  948. package/dist/media-runtime-DZ5RpQN7.d.ts +0 -261
  949. package/dist/media-understanding-DEdEyoQB.d.ts +0 -46
  950. package/dist/media-understanding-provider-4JHrQOUE.js +0 -70
  951. package/dist/media-understanding-provider-BV7O82XV.js +0 -29
  952. package/dist/media-understanding-provider-BlPRhYkx.js +0 -69
  953. package/dist/media-understanding-provider-BuX8eQLj.js +0 -13
  954. package/dist/memory-core-host-engine-embeddings-BDu5fx8E.d.ts +0 -324
  955. package/dist/memory-core-host-engine-storage-CdCuH-E2.d.ts +0 -54
  956. package/dist/message-handler-L6QLWNVP.js +0 -1806
  957. package/dist/minimax-web-search-provider-_gxeEOy8.js +0 -58
  958. package/dist/minimax-web-search-provider.runtime-BF4mGi6U.js +0 -148
  959. package/dist/minimax-web-search-provider.runtime.js +0 -1
  960. package/dist/model-catalog-DCnRkX8f.d.ts +0 -88
  961. package/dist/model-definitions-B2gY43hI.d.ts +0 -34
  962. package/dist/model-definitions-BLOyeH5h.js +0 -73
  963. package/dist/model-definitions-CoByf5mT.js +0 -243
  964. package/dist/model-definitions-WP3OmzbS.d.ts +0 -57
  965. package/dist/model-selection-DhTE6GZD.js +0 -352
  966. package/dist/models--iAR9QkZ.js +0 -175
  967. package/dist/models-8ImVEkvh.js +0 -36
  968. package/dist/models-BIDM8htk.js +0 -48
  969. package/dist/models-BRgRfrcS.js +0 -36
  970. package/dist/models-Bib5-APc.js +0 -67
  971. package/dist/models-Bl67zOoe.js +0 -36
  972. package/dist/models-BqDDYFE3.d.ts +0 -65
  973. package/dist/models-BtRQoRIu.js +0 -36
  974. package/dist/models-BvXmOXik.js +0 -48
  975. package/dist/models-C-sJciOD.d.ts +0 -9
  976. package/dist/models-COnXPdlL.js +0 -24
  977. package/dist/models-CXTmk-Da.d.ts +0 -8
  978. package/dist/models-Cz0C_8re.js +0 -36
  979. package/dist/models-DbwEIt-m.d.ts +0 -15
  980. package/dist/models-DgXkSADi.js +0 -30
  981. package/dist/models-cli-Bv3y3JgQ.js +0 -257
  982. package/dist/monitor-BiVOsbbN.js +0 -1024
  983. package/dist/monitor-BumfRp1t.js +0 -60
  984. package/dist/monitor.account-Cd6EwtuZ.js +0 -5382
  985. package/dist/music-generation-provider-ZdDMiC-c.js +0 -308
  986. package/dist/nodes-C0f8XgD5.js +0 -1483
  987. package/dist/nodes-Dk4vOgg9.js +0 -3
  988. package/dist/nodes-pending-Cjg09MXz.js +0 -211
  989. package/dist/oauth-BIO69Qw0.d.ts +0 -25
  990. package/dist/oauth-CnO10TN2.js +0 -207
  991. package/dist/onboard-B3BYT5k7.js +0 -34
  992. package/dist/onboard-BDMNV6RE.js +0 -23
  993. package/dist/onboard-B_WNNy5F.d.ts +0 -6
  994. package/dist/onboard-BbyMaErU.js +0 -69
  995. package/dist/onboard-BuYPNE6j2.js +0 -23
  996. package/dist/onboard-C394zMnM.d.ts +0 -11
  997. package/dist/onboard-CHn4oVbY.js +0 -24
  998. package/dist/onboard-CPpVbb0O.js +0 -73
  999. package/dist/onboard-CWDx7Crt.js +0 -23
  1000. package/dist/onboard-CbzkwBzu.d.ts +0 -12
  1001. package/dist/onboard-D099qUd0.js +0 -23
  1002. package/dist/onboard-D7dbzfHc.js +0 -23
  1003. package/dist/onboard-DB-x0nHF.js +0 -30
  1004. package/dist/onboard-DFVrRnxJ.js +0 -23
  1005. package/dist/onboard-DFiqoOc2.d.ts +0 -7
  1006. package/dist/onboard-DJaMK3rr.d.ts +0 -6
  1007. package/dist/onboard-DMdK8D_h.js +0 -67
  1008. package/dist/onboard-J-KL-I6m.js +0 -48
  1009. package/dist/onboard-MIBU-Rmv.js +0 -39
  1010. package/dist/onboard-vmGylfFe.js +0 -23
  1011. package/dist/openai-compat-errors-Dcr5Y8bF.js +0 -136
  1012. package/dist/openai-http-CcqspzU6.js +0 -836
  1013. package/dist/openresponses-http-BnyYYvUF.js +0 -1175
  1014. package/dist/operations-H2Oq0KYz.js +0 -805
  1015. package/dist/outbound.types-BhRehecY.d.ts +0 -291
  1016. package/dist/plugin-enabled-CEIKWKrq.js +0 -232
  1017. package/dist/plugin-entry-CTVRRaaA.d.ts +0 -47
  1018. package/dist/plugin-registration-BTyO5Fwt.js +0 -97
  1019. package/dist/plugin-runtime-_XF2N_UQ.d.ts +0 -117
  1020. package/dist/plugin-sdk/bundled-channel-config-schema-BsOWCrJT.d.ts +0 -3169
  1021. package/dist/plugin-service-B91jVlmZ.d.ts +0 -24
  1022. package/dist/plugin-service-CtGwVz8V.js +0 -1249
  1023. package/dist/prepare.runtime-9dlboph7.js +0 -798
  1024. package/dist/preview-warnings-DJx4KJpC.js +0 -618
  1025. package/dist/program-CWC-NBBB.js +0 -131
  1026. package/dist/provider-api-key-auth-BmNcYRMl.d.ts +0 -27
  1027. package/dist/provider-auth-api-key-CCaFiqY3.js +0 -5
  1028. package/dist/provider-auth-result-D_E9dcVc.d.ts +0 -21
  1029. package/dist/provider-catalog-5KZLmrDO.js +0 -11
  1030. package/dist/provider-catalog-7P6AvDzS.js +0 -11
  1031. package/dist/provider-catalog-B2gyTjTU.js +0 -88
  1032. package/dist/provider-catalog-B3YBhe77.js +0 -17
  1033. package/dist/provider-catalog-B7XEeuUm.js +0 -11
  1034. package/dist/provider-catalog-BFGPRd9v.js +0 -17
  1035. package/dist/provider-catalog-BLvkIMSk.d.ts +0 -6
  1036. package/dist/provider-catalog-BPBL9mJf.d.ts +0 -5
  1037. package/dist/provider-catalog-BRkZ6-HD.d.ts +0 -5
  1038. package/dist/provider-catalog-Bfl_AoTZ.js +0 -142
  1039. package/dist/provider-catalog-BpiHWHu1.js +0 -11
  1040. package/dist/provider-catalog-C1qDLekT.d.ts +0 -5
  1041. package/dist/provider-catalog-CKWNCfry.js +0 -11
  1042. package/dist/provider-catalog-CUHB2pSt.d.ts +0 -7
  1043. package/dist/provider-catalog-CWqN2j6J.d.ts +0 -5
  1044. package/dist/provider-catalog-CZ8oYbx3.js +0 -11
  1045. package/dist/provider-catalog-CcQ5-4ZW.d.ts +0 -6
  1046. package/dist/provider-catalog-Cd16uZ0U.js +0 -20
  1047. package/dist/provider-catalog-CpF2D0VK.js +0 -61
  1048. package/dist/provider-catalog-CvXq36zW.d.ts +0 -5
  1049. package/dist/provider-catalog-D2pgEME3.js +0 -48
  1050. package/dist/provider-catalog-DPzcupEl.d.ts +0 -5
  1051. package/dist/provider-catalog-DaeI606G.d.ts +0 -9
  1052. package/dist/provider-catalog-DrOCtTb-.js +0 -11
  1053. package/dist/provider-catalog-DwZ1J2Al.d.ts +0 -6
  1054. package/dist/provider-catalog-Dy7IcHmS.js +0 -107
  1055. package/dist/provider-catalog-TsZS52nq.d.ts +0 -10
  1056. package/dist/provider-catalog-YqIFRCND.d.ts +0 -5
  1057. package/dist/provider-catalog-Ywb5jRwG.d.ts +0 -5
  1058. package/dist/provider-catalog-evknl1oN.js +0 -11
  1059. package/dist/provider-catalog-l0hFpFO2.d.ts +0 -17
  1060. package/dist/provider-catalog-shared-DsRBv0Tp.d.ts +0 -62
  1061. package/dist/provider-dispatcher-BMy9mBJ1.js +0 -22
  1062. package/dist/provider-model-shared-CPAfQBNs.d.ts +0 -143
  1063. package/dist/provider-models-Diu65OcG.d.ts +0 -18
  1064. package/dist/provider-models-LE7PlLYY.js +0 -22
  1065. package/dist/provider-onboard-CpvXEmvz.d.ts +0 -91
  1066. package/dist/provider-registration-DF-LkmNE.js +0 -235
  1067. package/dist/provider-registry-D9cTPW1F.d.ts +0 -8
  1068. package/dist/provider-registry-DI7gMKUP.d.ts +0 -8
  1069. package/dist/provider-registry-DZtgZDkl.d.ts +0 -29
  1070. package/dist/provider-self-hosted-setup-CoHvoyKm.d.ts +0 -74
  1071. package/dist/provider-stream-BpXJr5Ap.d.ts +0 -139
  1072. package/dist/provider-stream-family-Bj5aBD8w.js +0 -2
  1073. package/dist/provider-stream-shared-BaUkhUHj.d.ts +0 -132
  1074. package/dist/provider-usage-DFUhW2do.js +0 -651
  1075. package/dist/provider-web-search-contract-fields-CkXzSsWu.d.ts +0 -25
  1076. package/dist/pw-ai-9Q_dIq4B.js +0 -3064
  1077. package/dist/register.agent-CbfrlzXB.js +0 -152
  1078. package/dist/register.crestodian-CEg0rPfK.js +0 -24
  1079. package/dist/register.maintenance-k9N8I4Wg.js +0 -85
  1080. package/dist/register.subclis-CrXOeaS3.js +0 -3
  1081. package/dist/register.subclis-DfKlni8N.js +0 -31
  1082. package/dist/register.subclis-core-Bg4wbDsO.js +0 -278
  1083. package/dist/registry-Bh3-P2HL.d.ts +0 -8
  1084. package/dist/registry-types-BmEUS4d3.d.ts +0 -392
  1085. package/dist/repair-sequencing-E4yViXG9.js +0 -652
  1086. package/dist/reply-payload-S2mrc_Mh.d.ts +0 -200
  1087. package/dist/reply-turn-admission-BBoPjmGB.js +0 -2056
  1088. package/dist/reply.runtime-C5wfxVI_.js +0 -2
  1089. package/dist/result-fallback-classifier-CX4iLD1G.js +0 -98
  1090. package/dist/route-CifxcQZ1.js +0 -475
  1091. package/dist/routes-B3XAOeWo.js +0 -2
  1092. package/dist/routes-H185h3U-.js +0 -3701
  1093. package/dist/run-CTJFbwbB.js +0 -1162
  1094. package/dist/run-command-B7B53tYk.js +0 -23
  1095. package/dist/run-command-BFuxRDxS.js +0 -2
  1096. package/dist/run-context-C7im9ICg.js +0 -66
  1097. package/dist/run-embedded.runtime-TljBTbzh.js +0 -4
  1098. package/dist/run-execution-cli.runtime-Bt5zwx1W.js +0 -4
  1099. package/dist/run-executor.runtime-hmbWX2Ct.js +0 -330
  1100. package/dist/run-subagent-registry.runtime-B70X80nS.js +0 -2
  1101. package/dist/runtime-DoKE0o7v.js +0 -436
  1102. package/dist/runtime-api-Ca4Llbgf.js +0 -12
  1103. package/dist/runtime-api-pa8xcEmg.d.ts +0 -5
  1104. package/dist/runtime-channel-CFQ59svm.js +0 -148
  1105. package/dist/runtime-channel-DRwCWGUx.js +0 -2
  1106. package/dist/runtime-embedded-agent.runtime-DwmqKUVp.js +0 -2
  1107. package/dist/runtime-forwarders-BMThPHg_.d.ts +0 -39
  1108. package/dist/sdk-setup-tools-Cg_Tabrf.js +0 -8
  1109. package/dist/selection-COhr7g82.js +0 -18365
  1110. package/dist/selection-_G44EVqd.js +0 -3
  1111. package/dist/send-media-BNc67G7I.js +0 -2072
  1112. package/dist/server-5rR0RCpI.js +0 -24
  1113. package/dist/server-context-BhiPROPA.js +0 -955
  1114. package/dist/server-context-OShBAJZQ.js +0 -2
  1115. package/dist/server-cron-Bkzb9edh.js +0 -3173
  1116. package/dist/server-cron-DdR-ugiU.js +0 -2
  1117. package/dist/server-lwtC1vaS.js +0 -72
  1118. package/dist/server-methods-BY_ZqDFJ.js +0 -497
  1119. package/dist/server-node-events-CLvE94AS.js +0 -597
  1120. package/dist/server-plugin-bootstrap-cKOAH5GL.js +0 -71
  1121. package/dist/server-plugins-CPpUykw5.js +0 -435
  1122. package/dist/server-reload-handlers-uzt4VDZ-.js +0 -719
  1123. package/dist/server-restart-sentinel-CpvV0t4O.js +0 -700
  1124. package/dist/server-runtime-services-BhOHoerM.js +0 -147
  1125. package/dist/server-runtime-services-D3Ig68nC.js +0 -3
  1126. package/dist/server-startup-plugins-DslzKVHK.js +0 -127
  1127. package/dist/server-startup-post-attach-DPFBTQez.js +0 -793
  1128. package/dist/server-ws-runtime-D0zoWoiz.js +0 -374
  1129. package/dist/server.impl-CzqLQ3qt.js +0 -2622
  1130. package/dist/session-kill-http-D8JhwZVS.js +0 -121
  1131. package/dist/session-reset-service-uoi7E4Xp.js +0 -651
  1132. package/dist/session-status.runtime-CZK5IU8w.js +0 -2
  1133. package/dist/session-subagent-reactivation.runtime-BSO00-FY.js +0 -2
  1134. package/dist/session-tab-registry-DM9U7e3o.js +0 -551
  1135. package/dist/sessions-B-SkIoaa.js +0 -1917
  1136. package/dist/sessions-history-http-DCiOG4FK.js +0 -432
  1137. package/dist/sessions-patch-DlAAvQvB.js +0 -401
  1138. package/dist/sessions-resolve-DfMXookg.js +0 -180
  1139. package/dist/sessions.runtime-0V2YxKxB.js +0 -2
  1140. package/dist/snapshot-urls-Ble1-NEW.js +0 -317
  1141. package/dist/speech-core-Bk60ZS_y.d.ts +0 -49
  1142. package/dist/speech-provider-DQO9eZd0.js +0 -233
  1143. package/dist/speech-provider-DnBCla4V.js +0 -171
  1144. package/dist/speech-provider-DyYHFxT5.js +0 -227
  1145. package/dist/standalone-9EWfcxeO.js +0 -42
  1146. package/dist/startup-context-nti4X0_w.js +0 -314
  1147. package/dist/status-subagents.runtime-CPZb1EF1.js +0 -32
  1148. package/dist/status-text-C1Hf37lF.js +0 -301
  1149. package/dist/stream-9VBt1MDs.js +0 -26
  1150. package/dist/stream-B_3P7v7P.js +0 -86
  1151. package/dist/stream-CXsue2-v.d.ts +0 -9
  1152. package/dist/stream-oNBFxfKt.d.ts +0 -5
  1153. package/dist/subagent-announce-CPjQQLy8.js +0 -353
  1154. package/dist/subagent-announce-delivery-B6iBOicL.js +0 -1369
  1155. package/dist/subagent-control-DP72sk-l.js +0 -492
  1156. package/dist/subagent-hooks-B1oUIYH3.js +0 -2
  1157. package/dist/subagent-hooks-BkGj4_xI.js +0 -230
  1158. package/dist/subagent-hooks-api-D2mulK3S.js +0 -23
  1159. package/dist/subagent-registry-CEKAUB5h.js +0 -3
  1160. package/dist/subagent-registry-OUVucPAn.js +0 -2627
  1161. package/dist/subagent-session-cleanup-Bx8d3kw0.js +0 -390
  1162. package/dist/system-CelaP2zI.js +0 -111
  1163. package/dist/talk-DGOI3Lu3.js +0 -2454
  1164. package/dist/target-id-BXRG7x9x.js +0 -107
  1165. package/dist/thinking-B8V29FhB.js +0 -35
  1166. package/dist/thread-bindings-DpVdEPZ0.js +0 -228
  1167. package/dist/tool-DHzDpxE4.js +0 -143
  1168. package/dist/tool-dispatch-ClP3Rc7g.js +0 -155
  1169. package/dist/tool-resolution-CZcLod1d.js +0 -153
  1170. package/dist/tool-split-BhiQ8676.d.ts +0 -19
  1171. package/dist/tools-ZvSvbsCW.d.ts +0 -38
  1172. package/dist/tools-effective-C2mHZT-A.js +0 -442
  1173. package/dist/tools-effective-inventory-ctnM7hc6.js +0 -379
  1174. package/dist/tools-invoke-Ci6Rux2s.js +0 -51
  1175. package/dist/tools-invoke-http-CJflXcJk.js +0 -68
  1176. package/dist/tools-invoke-shared-BLu_mJEX.js +0 -200
  1177. package/dist/tts-B2rPJPij.js +0 -83
  1178. package/dist/tts-Gp9FI3_n.js +0 -163
  1179. package/dist/tts-runtime-DNi1HXPF.d.ts +0 -230
  1180. package/dist/tui-BUhfQ9vD.js +0 -3
  1181. package/dist/tui-BhH5mvLf.js +0 -2
  1182. package/dist/tui-backend-C_4ajTHI.js +0 -257
  1183. package/dist/tui-cli-BhWJ-QoB.js +0 -40
  1184. package/dist/tui-ink-run-BTWbUQGb.js +0 -7414
  1185. package/dist/tui-ink-run-DfTdivkh.js +0 -2
  1186. package/dist/types-B4fW3r5y.d.ts +0 -111
  1187. package/dist/types-DI62NfFe.d.ts +0 -7034
  1188. package/dist/types-sAih_uQb.d.ts +0 -393
  1189. package/dist/types.public-B3MKhuo2.d.ts +0 -70
  1190. package/dist/video-generation-B9c6a5cw.js +0 -207
  1191. package/dist/video-generation-BgJp7UIA.d.ts +0 -224
  1192. package/dist/video-generation-provider-BjiVjf40.js +0 -325
  1193. package/dist/video-generation-provider-CsnQJg_h.js +0 -297
  1194. package/dist/video-generation-provider-DtU-ZPqP.js +0 -64
  1195. package/dist/video-generation-provider-wZ0bzv0e.js +0 -77
  1196. package/dist/webhook-targets-Cy8e7y3g.d.ts +0 -99
  1197. package/skills/canvas/SKILL.md +0 -78
  1198. package/skills/clawhub/SKILL.md +0 -77
  1199. package/skills/coding-agent/SKILL.md +0 -143
  1200. package/skills/diagram-maker/SKILL.md +0 -53
  1201. package/skills/diagram-maker/references/excalidraw-patterns.md +0 -85
  1202. package/skills/diagram-maker/references/svg-template.md +0 -112
  1203. package/skills/gemini/SKILL.md +0 -47
  1204. package/skills/gh-issues/SKILL.md +0 -213
  1205. package/skills/gifgrep/SKILL.md +0 -85
  1206. package/skills/github/SKILL.md +0 -84
  1207. package/skills/healthcheck/SKILL.md +0 -105
  1208. package/skills/mcporter/SKILL.md +0 -61
  1209. package/skills/meme-maker/SKILL.md +0 -42
  1210. package/skills/meme-maker/references/templates.json +0 -358
  1211. package/skills/meme-maker/scripts/meme.mjs +0 -398
  1212. package/skills/model-usage/SKILL.md +0 -71
  1213. package/skills/model-usage/references/codexbar-cli.md +0 -33
  1214. package/skills/model-usage/scripts/model_usage.py +0 -319
  1215. package/skills/model-usage/scripts/test_model_usage.py +0 -40
  1216. package/skills/nano-pdf/SKILL.md +0 -38
  1217. package/skills/node-connect/SKILL.md +0 -143
  1218. package/skills/node-inspect-debugger/SKILL.md +0 -85
  1219. package/skills/openai-whisper/SKILL.md +0 -38
  1220. package/skills/openai-whisper-api/SKILL.md +0 -71
  1221. package/skills/openai-whisper-api/scripts/transcribe.sh +0 -154
  1222. package/skills/oracle/SKILL.md +0 -126
  1223. package/skills/pyproject.toml +0 -10
  1224. package/skills/python-debugpy/SKILL.md +0 -73
  1225. package/skills/sag/SKILL.md +0 -87
  1226. package/skills/session-logs/SKILL.md +0 -151
  1227. package/skills/sherpa-onnx-tts/SKILL.md +0 -109
  1228. package/skills/sherpa-onnx-tts/bin/sherpa-onnx-tts +0 -178
  1229. package/skills/skill-creator/SKILL.md +0 -78
  1230. package/skills/skill-creator/license.txt +0 -202
  1231. package/skills/skill-creator/scripts/init_skill.py +0 -378
  1232. package/skills/skill-creator/scripts/package_skill.py +0 -139
  1233. package/skills/skill-creator/scripts/quick_validate.py +0 -169
  1234. package/skills/skill-creator/scripts/test_package_skill.py +0 -161
  1235. package/skills/skill-creator/scripts/test_quick_validate.py +0 -116
  1236. package/skills/spike/SKILL.md +0 -51
  1237. package/skills/summarize/SKILL.md +0 -87
  1238. package/skills/taskflow/SKILL.md +0 -149
  1239. package/skills/taskflow/examples/inbox-triage.lobster +0 -33
  1240. package/skills/taskflow/examples/pr-intake.lobster +0 -32
  1241. package/skills/taskflow-inbox-triage/SKILL.md +0 -119
  1242. package/skills/video-frames/SKILL.md +0 -46
  1243. package/skills/video-frames/scripts/frame.sh +0 -81
  1244. package/skills/voice-call/SKILL.md +0 -45
  1245. package/skills/weather/SKILL.md +0 -64
  1246. /package/dist/{acp-runtime-backend-DbchQ02o.js → acp-runtime-backend-DZ1Lnt7f.js} +0 -0
  1247. /package/dist/{delegate-k1aptKei.js → delegate-CwhxUdeb.js} +0 -0
  1248. /package/dist/{dispatch-acp-CD4YxPpf.js → dispatch-acp-BP4I5ZQf.js} +0 -0
  1249. /package/dist/{exec-approvals-ByWUCFQM.js → exec-approvals-ByWUCFQM2.js} +0 -0
  1250. /package/dist/{heartbeat-runner-CM0UZxa_.js → heartbeat-runner-CL3alQ8-.js} +0 -0
  1251. /package/dist/{index-B0VJdRJQ.d.ts → index-B0VJdRJQ2.d.ts} +0 -0
  1252. /package/dist/{library-CQ71yATP.js → library-CiTr_aqC.js} +0 -0
  1253. /package/dist/{run-session-state-DbDeH-q6.js → run-session-state-BOMUtBKZ.js} +0 -0
  1254. /package/dist/{session-subagent-reactivation-Bj91A2ms.js → session-subagent-reactivation-CH0C2I6Y.js} +0 -0
  1255. /package/dist/{types-C4HgagiY2.d.ts → types-C4HgagiY.d.ts} +0 -0
@@ -0,0 +1,1819 @@
1
+ import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString, s as normalizeOptionalLowercaseString } from "./string-coerce-DKw2K5wM.js";
2
+ import { t as sanitizeForLog } from "./ansi-BCVkJ8zW.js";
3
+ import { t as CONFIG_PATH } from "./paths-9MqJt9oL.js";
4
+ import { o as isRecord } from "./record-coerce-Btbek4uV.js";
5
+ import { t as formatCliCommand } from "./command-format-Jv8eeOPe.js";
6
+ import { c as isRecord$1 } from "./utils-v5zGdVpj.js";
7
+ import { i as LEGACY_SECRETREF_ENV_MARKER_PREFIX, p as parseLegacySecretRefEnvMarker } from "./types.secrets-Z7uJY7vF.js";
8
+ import { r as normalizeChatChannelId } from "./ids-CmaKkxj8.js";
9
+ import { r as normalizeProviderId$1 } from "./provider-id-DhcncFyL.js";
10
+ import { n as normalizeAccountId, r as normalizeOptionalAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-B0YIFDpA.js";
11
+ import { l as normalizeAgentId } from "./session-key-CJf5_zWs.js";
12
+ import { i as setPathExistingStrict } from "./path-utils-DMtxCrfM.js";
13
+ import { n as discoverConfigSecretTargets } from "./target-registry-Cw8BguxO.js";
14
+ import { E as validateConfigObjectWithPlugins, I as resolveNormalizedProviderModelMaxTokens } from "./io-T1CV3Z1L.js";
15
+ import { n as formatConfigIssueLines } from "./issue-format-ltC34NBF.js";
16
+ import { r as normalizeTalkSection } from "./talk-B1Q8qwLB.js";
17
+ import { n as collectConfiguredModelRefs } from "./model-refs-DBVFiNJl.js";
18
+ import { t as splitTrailingAuthProfile } from "./model-ref-profile-L6rqw6O0.js";
19
+ import { r as getBundledChannelPlugin, s as hasBundledChannelPackageSetupFeature } from "./bundled-CJe6_U-m.js";
20
+ import { t as getBootstrapChannelPlugin } from "./bootstrap-registry-CYuAwlbE.js";
21
+ import { o as runPluginSetupConfigMigrations } from "./setup-registry-BAHuHj-4.js";
22
+ import { n as getLoadedChannelPlugin } from "./registry-BfD-kLBR.js";
23
+ import { i as listRouteBindings } from "./bindings-D1F1bOgs.js";
24
+ import { t as DEFAULT_GOOGLE_API_BASE_URL } from "./google-api-base-url-UBNiBOzj.js";
25
+ import { t as note } from "./note-CmJiJoY7.js";
26
+ import { n as isCommonSingleAccountPromotionKey, t as collectSingleAccountPromotionEntries } from "./setup-promotion-keys-doVkKcGw.js";
27
+ import { n as formatSetExplicitDefaultInstruction, r as formatSetExplicitDefaultToConfiguredInstruction, t as formatChannelAccountsDefaultPath } from "./default-account-warnings-CK3UKJwX.js";
28
+ import { i as noteOpencodeProviderOverrides, n as noteImplicitFallbackClobberWarnings, o as stripUnknownConfigKeys } from "./doctor-config-analysis-BXtajUZe.js";
29
+ import { n as collectRelevantDoctorPluginIds, t as applyPluginDoctorCompatibilityMigrations } from "./doctor-contract-registry-DNwhQhuW.js";
30
+ import { a as legacyRuntimeModelAliasRequiresRuntimePolicy, c as mergeMissing, i as migrateLegacyXSearchConfig, l as loadBundledChannelDoctorContractApi, n as LEGACY_CONFIG_MIGRATIONS, o as listLegacyRuntimeModelProviderAliases, r as migrateLegacyWebSearchConfig, s as migrateLegacyRuntimeModelRef } from "./legacy-config-issues-Cy3l8hfD.js";
31
+ import { n as ensureRecord, r as hasOwnKey, t as cloneRecord } from "./legacy-config-record-shared-BPXzhBiB.js";
32
+ import { t as runDoctorConfigPreflight } from "./doctor-config-preflight-BIj5nvKd.js";
33
+ import { t as applyDoctorConfigMutation } from "./config-mutation-state-C1d35St0.js";
34
+ import { t as asObjectRecord } from "./object-BsiS9JXh.js";
35
+ import path from "node:path";
36
+ import { isDeepStrictEqual } from "node:util";
37
+ //#region src/secrets/legacy-secretref-env-marker.ts
38
+ function isLegacySecretRefEnvMarker(value) {
39
+ return typeof value === "string" && value.trim().startsWith("secretref-env:");
40
+ }
41
+ function toCandidate(target, defaults) {
42
+ if (!isLegacySecretRefEnvMarker(target.value)) return null;
43
+ return {
44
+ path: target.path,
45
+ pathSegments: target.pathSegments,
46
+ value: target.value.trim(),
47
+ ref: parseLegacySecretRefEnvMarker(target.value, defaults?.env)
48
+ };
49
+ }
50
+ function collectLegacySecretRefEnvMarkerCandidates(config) {
51
+ const defaults = config.secrets?.defaults;
52
+ return discoverConfigSecretTargets(config).map((target) => toCandidate(target, defaults)).filter((candidate) => candidate !== null);
53
+ }
54
+ function migrateLegacySecretRefEnvMarkers(config) {
55
+ const candidates = collectLegacySecretRefEnvMarkerCandidates(config).filter((candidate) => candidate.ref !== null);
56
+ if (candidates.length === 0) return {
57
+ config,
58
+ changes: []
59
+ };
60
+ const next = structuredClone(config);
61
+ const changes = [];
62
+ for (const candidate of candidates) {
63
+ const ref = candidate.ref;
64
+ if (!ref) continue;
65
+ if (setPathExistingStrict(next, candidate.pathSegments, ref)) changes.push(`Moved ${candidate.path} ${LEGACY_SECRETREF_ENV_MARKER_PREFIX}${ref.id} marker → structured env SecretRef.`);
66
+ }
67
+ return {
68
+ config: next,
69
+ changes
70
+ };
71
+ }
72
+ //#endregion
73
+ //#region src/commands/doctor/shared/channel-legacy-config-migrate.ts
74
+ function collectRelevantDoctorChannelIds(raw) {
75
+ const channels = isRecord$1(raw) && isRecord$1(raw.channels) ? raw.channels : null;
76
+ if (!channels) return [];
77
+ return Object.keys(channels).filter((channelId) => channelId !== "defaults").toSorted();
78
+ }
79
+ function resolveBundledChannelCompatibilityNormalizer(channelId) {
80
+ const contractNormalizer = loadBundledChannelDoctorContractApi(channelId)?.normalizeCompatibilityConfig;
81
+ if (typeof contractNormalizer === "function") return contractNormalizer;
82
+ return getBootstrapChannelPlugin(channelId)?.doctor?.normalizeCompatibilityConfig;
83
+ }
84
+ function collectPluginDoctorCompatibilityIds(params) {
85
+ const unresolvedChannelIds = new Set(params.unresolvedChannelIds);
86
+ return [...new Set([...params.unresolvedChannelIds, ...collectRelevantDoctorPluginIds(params.raw).filter((pluginId) => !unresolvedChannelIds.has(pluginId))])].toSorted();
87
+ }
88
+ function applyChannelDoctorCompatibilityMigrations(cfg) {
89
+ let nextCfg = cfg;
90
+ const changes = [];
91
+ const unresolvedChannelIds = [];
92
+ for (const channelId of collectRelevantDoctorChannelIds(cfg)) {
93
+ const normalizeCompatibilityConfig = resolveBundledChannelCompatibilityNormalizer(channelId);
94
+ if (!normalizeCompatibilityConfig) {
95
+ unresolvedChannelIds.push(channelId);
96
+ continue;
97
+ }
98
+ const mutation = normalizeCompatibilityConfig({ cfg: nextCfg });
99
+ if (!mutation || mutation.changes.length === 0) continue;
100
+ nextCfg = mutation.config;
101
+ changes.push(...mutation.changes);
102
+ }
103
+ const pluginIds = collectPluginDoctorCompatibilityIds({
104
+ raw: cfg,
105
+ unresolvedChannelIds
106
+ });
107
+ if (pluginIds.length > 0) {
108
+ const compat = applyPluginDoctorCompatibilityMigrations(nextCfg, {
109
+ config: cfg,
110
+ pluginIds
111
+ });
112
+ nextCfg = compat.config;
113
+ changes.push(...compat.changes);
114
+ }
115
+ return {
116
+ next: nextCfg,
117
+ changes
118
+ };
119
+ }
120
+ //#endregion
121
+ //#region src/channels/plugins/setup-promotion-helpers.ts
122
+ function asPromotionSurface(setup) {
123
+ return setup && typeof setup === "object" ? setup : null;
124
+ }
125
+ function getLoadedChannelSetupPromotionSurface(channelKey) {
126
+ return asPromotionSurface(getLoadedChannelPlugin(channelKey)?.setup);
127
+ }
128
+ function getBundledChannelSetupPromotionSurface(channelKey) {
129
+ if (!hasBundledChannelPackageSetupFeature(channelKey, "configPromotion")) return null;
130
+ return asPromotionSurface(getBundledChannelPlugin(channelKey)?.setup);
131
+ }
132
+ function resolveSingleAccountKeysToMove(params) {
133
+ const { entries, hasNamedAccounts } = collectSingleAccountPromotionEntries(params.channel);
134
+ if (entries.length === 0) return [];
135
+ let loadedSetupSurface;
136
+ const resolveLoadedSetupSurface = () => {
137
+ loadedSetupSurface ??= getLoadedChannelSetupPromotionSurface(params.channelKey);
138
+ return loadedSetupSurface;
139
+ };
140
+ let bundledSetupSurface;
141
+ const resolveBundledSetupSurface = () => {
142
+ bundledSetupSurface ??= getBundledChannelSetupPromotionSurface(params.channelKey);
143
+ return bundledSetupSurface;
144
+ };
145
+ const keysToMove = entries.filter((key) => {
146
+ if (isCommonSingleAccountPromotionKey(key)) return true;
147
+ return Boolean(resolveLoadedSetupSurface()?.singleAccountKeysToMove?.includes(key) || resolveBundledSetupSurface()?.singleAccountKeysToMove?.includes(key));
148
+ });
149
+ if (!hasNamedAccounts || keysToMove.length === 0) return keysToMove;
150
+ const namedAccountPromotionKeys = resolveLoadedSetupSurface()?.namedAccountPromotionKeys ?? resolveBundledSetupSurface()?.namedAccountPromotionKeys;
151
+ if (!namedAccountPromotionKeys) return keysToMove;
152
+ return keysToMove.filter((key) => namedAccountPromotionKeys.includes(key));
153
+ }
154
+ //#endregion
155
+ //#region src/commands/doctor/shared/legacy-models-add-metadata.ts
156
+ const LEGACY_MODELS_ADD_CODEX_MODEL_IDS = new Set(["gpt-5.5", "gpt-5.5-pro"]);
157
+ function isLegacyModelsAddCodexMetadataModel(params) {
158
+ const model = params.model;
159
+ if (normalizeProviderId$1(params.provider) !== "openai-codex" || !model) return false;
160
+ const id = model.id?.trim().toLowerCase();
161
+ if (!id || !LEGACY_MODELS_ADD_CODEX_MODEL_IDS.has(id)) return false;
162
+ return model.api === "openai-codex-responses" && model.reasoning === true && Array.isArray(model.input) && model.input.length === 2 && model.input[0] === "text" && model.input[1] === "image" && model.cost?.input === 5 && model.cost.output === 30 && model.cost.cacheRead === .5 && model.cost.cacheWrite === 0 && model.contextWindow === 4e5 && model.contextTokens === 272e3 && model.maxTokens === 128e3;
163
+ }
164
+ //#endregion
165
+ //#region src/commands/doctor/shared/legacy-talk-config-normalizer.ts
166
+ function buildLegacyTalkProviderCompat(talk) {
167
+ const compat = {};
168
+ for (const key of [
169
+ "voiceId",
170
+ "voiceAliases",
171
+ "modelId",
172
+ "outputFormat",
173
+ "apiKey"
174
+ ]) if (talk[key] !== void 0) compat[key] = talk[key];
175
+ return Object.keys(compat).length > 0 ? compat : void 0;
176
+ }
177
+ function buildLegacyRealtimeTalkCompat(talk, normalizedTalk) {
178
+ if (talk.realtime !== void 0) return;
179
+ const compat = {};
180
+ for (const key of [
181
+ "model",
182
+ "voice",
183
+ "mode",
184
+ "transport",
185
+ "brain"
186
+ ]) if (talk[key] !== void 0) compat[key] = talk[key];
187
+ if (Object.keys(compat).length === 0) return;
188
+ if (normalizedTalk.provider !== void 0) compat.provider = normalizedTalk.provider;
189
+ if (normalizedTalk.providers !== void 0) compat.providers = normalizedTalk.providers;
190
+ return normalizeTalkSection({ realtime: compat })?.realtime;
191
+ }
192
+ function normalizeLegacyTalkConfig(cfg, changes) {
193
+ const rawTalk = cfg.talk;
194
+ if (!isRecord(rawTalk)) return cfg;
195
+ const normalizedTalk = normalizeTalkSection(rawTalk) ?? {};
196
+ const legacyProviderCompat = buildLegacyTalkProviderCompat(rawTalk);
197
+ if (legacyProviderCompat) normalizedTalk.providers = {
198
+ ...normalizedTalk.providers,
199
+ elevenlabs: {
200
+ ...legacyProviderCompat,
201
+ ...normalizedTalk.providers?.elevenlabs
202
+ }
203
+ };
204
+ const legacyRealtimeCompat = buildLegacyRealtimeTalkCompat(rawTalk, normalizedTalk);
205
+ if (legacyRealtimeCompat) normalizedTalk.realtime = {
206
+ ...legacyRealtimeCompat,
207
+ ...normalizedTalk.realtime
208
+ };
209
+ if (Object.keys(normalizedTalk).length === 0 || isDeepStrictEqual(normalizedTalk, rawTalk)) return cfg;
210
+ changes.push("Normalized talk.provider/providers shape (trimmed provider ids and merged missing compatibility fields).");
211
+ if (legacyRealtimeCompat) changes.push("Moved legacy realtime Talk provider/model fields into talk.realtime.");
212
+ return {
213
+ ...cfg,
214
+ talk: normalizedTalk
215
+ };
216
+ }
217
+ //#endregion
218
+ //#region src/commands/doctor/shared/legacy-config-core-normalizers.ts
219
+ function normalizeLegacyCommandsConfig(cfg, changes) {
220
+ const rawCommands = cfg.commands;
221
+ if (!isRecord$1(rawCommands) || !("modelsWrite" in rawCommands)) return cfg;
222
+ const commands = { ...rawCommands };
223
+ delete commands.modelsWrite;
224
+ changes.push("Removed deprecated commands.modelsWrite (/models add is deprecated).");
225
+ return {
226
+ ...cfg,
227
+ commands
228
+ };
229
+ }
230
+ function normalizeLegacyBrowserConfig(cfg, changes) {
231
+ const rawBrowser = cfg.browser;
232
+ if (!isRecord$1(rawBrowser)) return cfg;
233
+ const browser = structuredClone(rawBrowser);
234
+ let browserChanged = false;
235
+ if ("relayBindHost" in browser) {
236
+ delete browser.relayBindHost;
237
+ browserChanged = true;
238
+ changes.push("Removed browser.relayBindHost (legacy Chrome extension relay setting; host-local Chrome now uses Chrome MCP existing-session attach).");
239
+ }
240
+ const rawProfiles = browser.profiles;
241
+ if (isRecord$1(rawProfiles)) {
242
+ const profiles = { ...rawProfiles };
243
+ let profilesChanged = false;
244
+ for (const [profileName, rawProfile] of Object.entries(rawProfiles)) {
245
+ if (!isRecord$1(rawProfile)) continue;
246
+ if ((normalizeOptionalString(rawProfile.driver) ?? "") !== "extension") continue;
247
+ profiles[profileName] = {
248
+ ...rawProfile,
249
+ driver: "existing-session"
250
+ };
251
+ profilesChanged = true;
252
+ changes.push(`Moved browser.profiles.${profileName}.driver "extension" → "existing-session" (Chrome MCP attach).`);
253
+ }
254
+ if (profilesChanged) {
255
+ browser.profiles = profiles;
256
+ browserChanged = true;
257
+ }
258
+ }
259
+ const rawSsrFPolicy = browser.ssrfPolicy;
260
+ if (isRecord$1(rawSsrFPolicy) && "allowPrivateNetwork" in rawSsrFPolicy) {
261
+ const legacyAllowPrivateNetwork = rawSsrFPolicy.allowPrivateNetwork;
262
+ const currentDangerousAllowPrivateNetwork = rawSsrFPolicy.dangerouslyAllowPrivateNetwork;
263
+ let resolvedDangerousAllowPrivateNetwork = currentDangerousAllowPrivateNetwork;
264
+ if (typeof legacyAllowPrivateNetwork === "boolean" || typeof currentDangerousAllowPrivateNetwork === "boolean") resolvedDangerousAllowPrivateNetwork = legacyAllowPrivateNetwork === true || currentDangerousAllowPrivateNetwork === true;
265
+ else if (currentDangerousAllowPrivateNetwork === void 0) resolvedDangerousAllowPrivateNetwork = legacyAllowPrivateNetwork;
266
+ const nextSsrFPolicy = { ...rawSsrFPolicy };
267
+ delete nextSsrFPolicy.allowPrivateNetwork;
268
+ if (resolvedDangerousAllowPrivateNetwork !== void 0) nextSsrFPolicy.dangerouslyAllowPrivateNetwork = resolvedDangerousAllowPrivateNetwork;
269
+ browser.ssrfPolicy = nextSsrFPolicy;
270
+ browserChanged = true;
271
+ changes.push(`Moved browser.ssrfPolicy.allowPrivateNetwork → browser.ssrfPolicy.dangerouslyAllowPrivateNetwork (${String(resolvedDangerousAllowPrivateNetwork)}).`);
272
+ }
273
+ if (!browserChanged) return cfg;
274
+ return {
275
+ ...cfg,
276
+ browser
277
+ };
278
+ }
279
+ function seedMissingDefaultAccountsFromSingleAccountBase(cfg, changes) {
280
+ const channels = cfg.channels;
281
+ if (!channels) return cfg;
282
+ let channelsChanged = false;
283
+ const nextChannels = { ...channels };
284
+ for (const [channelId, rawChannel] of Object.entries(channels)) {
285
+ if (!isRecord$1(rawChannel)) continue;
286
+ const rawAccounts = rawChannel.accounts;
287
+ if (!isRecord$1(rawAccounts)) continue;
288
+ const accountKeys = Object.keys(rawAccounts);
289
+ if (accountKeys.length === 0) continue;
290
+ if (accountKeys.some((key) => normalizeOptionalLowercaseString(key) === "default")) continue;
291
+ const keysToMove = resolveSingleAccountKeysToMove({
292
+ channelKey: channelId,
293
+ channel: rawChannel
294
+ });
295
+ if (keysToMove.length === 0) continue;
296
+ const defaultAccount = {};
297
+ for (const key of keysToMove) {
298
+ const value = rawChannel[key];
299
+ defaultAccount[key] = value && typeof value === "object" ? structuredClone(value) : value;
300
+ }
301
+ const nextChannel = { ...rawChannel };
302
+ for (const key of keysToMove) delete nextChannel[key];
303
+ nextChannel.accounts = {
304
+ ...rawAccounts,
305
+ [DEFAULT_ACCOUNT_ID]: defaultAccount
306
+ };
307
+ nextChannels[channelId] = nextChannel;
308
+ channelsChanged = true;
309
+ changes.push(`Moved channels.${channelId} single-account top-level values into channels.${channelId}.accounts.default.`);
310
+ }
311
+ if (!channelsChanged) return cfg;
312
+ return {
313
+ ...cfg,
314
+ channels: nextChannels
315
+ };
316
+ }
317
+ const LEGACY_CODEX_CLI_RUNTIME_ID = "codex-cli";
318
+ const CODEX_APP_SERVER_RUNTIME_ID = "codex";
319
+ function resolveLegacyWholeAgentRuntimePolicy(raw) {
320
+ if (!isRecord$1(raw)) return;
321
+ const runtime = normalizeOptionalLowercaseString(raw.id);
322
+ if (!runtime || runtime === "auto" || runtime === "fengming") return;
323
+ const alias = listLegacyRuntimeModelProviderAliases().find((entry) => entry.cli && normalizeProviderId$1(entry.runtime) === runtime);
324
+ return alias ? {
325
+ provider: alias.provider,
326
+ runtime: alias.runtime,
327
+ requiresRuntimePolicy: alias.requiresRuntimePolicy
328
+ } : void 0;
329
+ }
330
+ function migratedRuntimeRequiresPolicy(legacyProvider) {
331
+ return legacyRuntimeModelAliasRequiresRuntimePolicy(legacyProvider);
332
+ }
333
+ function mergeModelEntry(legacyEntry, currentEntry) {
334
+ if (!isRecord$1(legacyEntry) || !isRecord$1(currentEntry)) return currentEntry ?? legacyEntry;
335
+ return {
336
+ ...legacyEntry,
337
+ ...currentEntry
338
+ };
339
+ }
340
+ function normalizeLegacyCodexCliAgentRuntimePolicy(raw) {
341
+ if (!isRecord$1(raw)) return {
342
+ value: raw,
343
+ changed: false
344
+ };
345
+ if (normalizeOptionalLowercaseString(raw.id) !== LEGACY_CODEX_CLI_RUNTIME_ID) return {
346
+ value: raw,
347
+ changed: false
348
+ };
349
+ return {
350
+ value: {
351
+ ...raw,
352
+ id: CODEX_APP_SERVER_RUNTIME_ID
353
+ },
354
+ changed: true
355
+ };
356
+ }
357
+ function normalizeLegacyRuntimeAgentModelConfig(raw) {
358
+ if (typeof raw === "string") {
359
+ const migrated = migrateLegacyRuntimeModelRef(raw);
360
+ return migrated ? {
361
+ value: migrated.ref,
362
+ changed: true,
363
+ selectedRuntime: migrated.runtime,
364
+ selectedRuntimeRequiresPolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider),
365
+ selectedRefs: [{
366
+ ref: migrated.ref,
367
+ runtime: migrated.runtime,
368
+ requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider)
369
+ }]
370
+ } : {
371
+ value: raw,
372
+ changed: false,
373
+ selectedRuntimeRequiresPolicy: false,
374
+ selectedRefs: []
375
+ };
376
+ }
377
+ if (!isRecord$1(raw)) return {
378
+ value: raw,
379
+ changed: false,
380
+ selectedRuntimeRequiresPolicy: false,
381
+ selectedRefs: []
382
+ };
383
+ const migratedPrimary = typeof raw.primary === "string" ? migrateLegacyRuntimeModelRef(raw.primary) : null;
384
+ let changed = false;
385
+ const next = { ...raw };
386
+ const selectedRefs = [];
387
+ let selectedRuntime = migratedPrimary?.runtime;
388
+ let selectedRuntimeRequiresPolicy = migratedPrimary !== null && migratedRuntimeRequiresPolicy(migratedPrimary.legacyProvider);
389
+ if (migratedPrimary) {
390
+ next.primary = migratedPrimary.ref;
391
+ selectedRefs.push({
392
+ ref: migratedPrimary.ref,
393
+ runtime: migratedPrimary.runtime,
394
+ requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migratedPrimary.legacyProvider)
395
+ });
396
+ changed = true;
397
+ }
398
+ if (Array.isArray(raw.fallbacks)) next.fallbacks = raw.fallbacks.map((fallback) => {
399
+ if (typeof fallback !== "string") return fallback;
400
+ const migratedFallback = migrateLegacyRuntimeModelRef(fallback);
401
+ if (migratedFallback && (migratedFallback.runtime === selectedRuntime || migratedFallback.legacyProvider === LEGACY_CODEX_CLI_RUNTIME_ID)) {
402
+ selectedRuntime ??= migratedFallback.runtime;
403
+ selectedRuntimeRequiresPolicy ||= migratedRuntimeRequiresPolicy(migratedFallback.legacyProvider);
404
+ selectedRefs.push({
405
+ ref: migratedFallback.ref,
406
+ runtime: migratedFallback.runtime,
407
+ requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migratedFallback.legacyProvider)
408
+ });
409
+ changed = true;
410
+ return migratedFallback.ref;
411
+ }
412
+ return fallback;
413
+ });
414
+ if (!changed) return {
415
+ value: raw,
416
+ changed: false,
417
+ selectedRuntimeRequiresPolicy: false,
418
+ selectedRefs: []
419
+ };
420
+ return {
421
+ value: next,
422
+ changed: true,
423
+ selectedRuntime,
424
+ selectedRuntimeRequiresPolicy,
425
+ selectedRefs
426
+ };
427
+ }
428
+ function runtimeNeedsExplicitModelPolicy(runtime) {
429
+ return Boolean(runtime && runtime !== "codex");
430
+ }
431
+ function modelEntryWithRuntimePolicy(entry, runtime) {
432
+ const base = isRecord$1(entry) ? { ...entry } : {};
433
+ const currentRuntime = isRecord$1(base.agentRuntime) ? normalizeOptionalLowercaseString(base.agentRuntime.id) : void 0;
434
+ if (!currentRuntime || currentRuntime === "auto") base.agentRuntime = {
435
+ ...isRecord$1(base.agentRuntime) ? base.agentRuntime : {},
436
+ id: runtime
437
+ };
438
+ return base;
439
+ }
440
+ function mergeModelEntryWithRuntimePolicy(legacyEntry, currentEntry, runtime, requiresRuntimePolicy = runtimeNeedsExplicitModelPolicy(runtime)) {
441
+ const merged = mergeModelEntry(legacyEntry, currentEntry);
442
+ return runtime && requiresRuntimePolicy ? modelEntryWithRuntimePolicy(merged, runtime) : merged;
443
+ }
444
+ function normalizeLegacyRuntimeAllowlistModels(rawModels, selectedRuntime, selectedRuntimeRequiresPolicy) {
445
+ if (!isRecord$1(rawModels)) return {
446
+ value: rawModels,
447
+ changed: false
448
+ };
449
+ let changed = false;
450
+ const next = {};
451
+ const legacyEntries = [];
452
+ for (const [rawKey, entry] of Object.entries(rawModels)) {
453
+ const migrated = migrateLegacyRuntimeModelRef(rawKey);
454
+ if (migrated && (migrated.runtime === selectedRuntime || migrated.legacyProvider === LEGACY_CODEX_CLI_RUNTIME_ID)) {
455
+ changed = true;
456
+ next[rawKey] = mergeModelEntry(entry, next[rawKey]);
457
+ legacyEntries.push({
458
+ migratedKey: migrated.ref,
459
+ entry,
460
+ runtime: migrated.runtime,
461
+ requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider)
462
+ });
463
+ continue;
464
+ }
465
+ next[rawKey] = mergeModelEntry(entry, next[rawKey]);
466
+ }
467
+ for (const { migratedKey, entry, runtime, requiresRuntimePolicy } of legacyEntries) next[migratedKey] = mergeModelEntryWithRuntimePolicy(entry, next[migratedKey], runtime, requiresRuntimePolicy || runtime === selectedRuntime && selectedRuntimeRequiresPolicy);
468
+ return {
469
+ value: next,
470
+ changed
471
+ };
472
+ }
473
+ function ensureSelectedModelRuntimePolicies(rawModels, selectedRefs) {
474
+ if (selectedRefs.length === 0) return {
475
+ value: rawModels,
476
+ changed: false
477
+ };
478
+ const next = isRecord$1(rawModels) ? { ...rawModels } : {};
479
+ let changed = false;
480
+ for (const { ref, runtime, requiresRuntimePolicy } of selectedRefs) {
481
+ if (!requiresRuntimePolicy) continue;
482
+ const current = next[ref];
483
+ const updated = modelEntryWithRuntimePolicy(current, runtime);
484
+ if (JSON.stringify(updated) !== JSON.stringify(current ?? {})) {
485
+ next[ref] = updated;
486
+ changed = true;
487
+ }
488
+ }
489
+ return {
490
+ value: next,
491
+ changed
492
+ };
493
+ }
494
+ function selectedCanonicalModelRefsForRuntimePolicy(rawModel, provider, runtime, requiresRuntimePolicy) {
495
+ const refs = [];
496
+ const addRef = (rawRef) => {
497
+ if (typeof rawRef !== "string") return;
498
+ const trimmed = rawRef.trim();
499
+ const slash = trimmed.indexOf("/");
500
+ if (slash <= 0 || slash >= trimmed.length - 1) return;
501
+ if (normalizeProviderId$1(trimmed.slice(0, slash)) !== normalizeProviderId$1(provider)) return;
502
+ refs.push({
503
+ ref: trimmed,
504
+ runtime,
505
+ requiresRuntimePolicy
506
+ });
507
+ };
508
+ if (typeof rawModel === "string") {
509
+ addRef(rawModel);
510
+ return refs;
511
+ }
512
+ if (!isRecord$1(rawModel)) return refs;
513
+ addRef(rawModel.primary);
514
+ if (Array.isArray(rawModel.fallbacks)) for (const fallback of rawModel.fallbacks) addRef(fallback);
515
+ return refs;
516
+ }
517
+ function normalizeLegacyCodexCliRuntimePinsInModels(rawModels, path, changes) {
518
+ if (!isRecord$1(rawModels)) return {
519
+ value: rawModels,
520
+ changed: false
521
+ };
522
+ let changed = false;
523
+ const next = { ...rawModels };
524
+ for (const [modelRef, rawEntry] of Object.entries(rawModels)) {
525
+ if (!isRecord$1(rawEntry)) continue;
526
+ const runtime = normalizeLegacyCodexCliAgentRuntimePolicy(rawEntry.agentRuntime);
527
+ if (!runtime.changed) continue;
528
+ next[modelRef] = {
529
+ ...rawEntry,
530
+ agentRuntime: runtime.value
531
+ };
532
+ changed = true;
533
+ changes.push(`Moved ${path}.${sanitizeForLog(modelRef)} agentRuntime.id from codex-cli to codex.`);
534
+ }
535
+ return {
536
+ value: next,
537
+ changed
538
+ };
539
+ }
540
+ function normalizeLegacyRuntimeAgentContainer(raw, path, changes) {
541
+ let changed = false;
542
+ const next = { ...raw };
543
+ const legacyWholeAgentRuntime = resolveLegacyWholeAgentRuntimePolicy(raw.agentRuntime);
544
+ const model = normalizeLegacyRuntimeAgentModelConfig(raw.model);
545
+ if (model.changed) {
546
+ next.model = model.value;
547
+ changed = true;
548
+ const runtimeSuffix = model.selectedRuntime ? ` and selected ${model.selectedRuntime} runtime` : "";
549
+ changes.push(`Moved ${path}.model legacy runtime primary refs to canonical provider refs${runtimeSuffix}.`);
550
+ }
551
+ const models = normalizeLegacyRuntimeAllowlistModels(raw.models, model.selectedRuntime, model.selectedRuntimeRequiresPolicy);
552
+ if (models.changed) {
553
+ next.models = models.value;
554
+ changed = true;
555
+ changes.push(`Moved ${path}.models legacy runtime keys to canonical provider keys.`);
556
+ }
557
+ if (model.selectedRuntime) {
558
+ const modelRuntimes = ensureSelectedModelRuntimePolicies(next.models, model.selectedRefs);
559
+ if (modelRuntimes.changed) {
560
+ next.models = modelRuntimes.value;
561
+ changed = true;
562
+ changes.push(`Selected ${model.selectedRuntime} runtime for ${path}.models entries.`);
563
+ }
564
+ }
565
+ if (legacyWholeAgentRuntime) {
566
+ const selectedRefs = selectedCanonicalModelRefsForRuntimePolicy(next.model ?? raw.model, legacyWholeAgentRuntime.provider, legacyWholeAgentRuntime.runtime, legacyWholeAgentRuntime.requiresRuntimePolicy);
567
+ const modelRuntimes = ensureSelectedModelRuntimePolicies(next.models, selectedRefs);
568
+ if (modelRuntimes.changed) {
569
+ next.models = modelRuntimes.value;
570
+ changed = true;
571
+ changes.push(`Moved ${path}.agentRuntime.id ${legacyWholeAgentRuntime.runtime} to matching ${legacyWholeAgentRuntime.provider} model runtime policy.`);
572
+ }
573
+ }
574
+ const codexCliRuntimePins = normalizeLegacyCodexCliRuntimePinsInModels(next.models, `${path}.models`, changes);
575
+ if (codexCliRuntimePins.changed) {
576
+ next.models = codexCliRuntimePins.value;
577
+ changed = true;
578
+ }
579
+ return {
580
+ value: next,
581
+ changed
582
+ };
583
+ }
584
+ function normalizeLegacyCodexCliProviderRuntimePins(cfg, changes) {
585
+ const rawModels = cfg.models;
586
+ if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return {
587
+ config: cfg,
588
+ changed: false
589
+ };
590
+ let changed = false;
591
+ const nextProviders = { ...rawModels.providers };
592
+ for (const [providerId, rawProvider] of Object.entries(rawModels.providers)) {
593
+ if (!isRecord$1(rawProvider)) continue;
594
+ let providerChanged = false;
595
+ const nextProvider = { ...rawProvider };
596
+ const providerRuntime = normalizeLegacyCodexCliAgentRuntimePolicy(rawProvider.agentRuntime);
597
+ if (providerRuntime.changed) {
598
+ nextProvider.agentRuntime = providerRuntime.value;
599
+ providerChanged = true;
600
+ changes.push(`Moved models.providers.${sanitizeForLog(providerId)} agentRuntime.id from codex-cli to codex.`);
601
+ }
602
+ if (Array.isArray(rawProvider.models)) {
603
+ const nextProviderModels = rawProvider.models.map((entry, index) => {
604
+ if (!isRecord$1(entry)) return entry;
605
+ const runtime = normalizeLegacyCodexCliAgentRuntimePolicy(entry.agentRuntime);
606
+ if (!runtime.changed) return entry;
607
+ providerChanged = true;
608
+ const modelId = normalizeOptionalString(entry.id) ?? `[${index}]`;
609
+ changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.models.${sanitizeForLog(modelId)} agentRuntime.id from codex-cli to codex.`);
610
+ return Object.assign({}, entry, { agentRuntime: runtime.value });
611
+ });
612
+ if (providerChanged) nextProvider.models = nextProviderModels;
613
+ }
614
+ if (providerChanged) {
615
+ nextProviders[providerId] = nextProvider;
616
+ changed = true;
617
+ }
618
+ }
619
+ return changed ? {
620
+ config: {
621
+ ...cfg,
622
+ models: {
623
+ ...rawModels,
624
+ providers: nextProviders
625
+ }
626
+ },
627
+ changed: true
628
+ } : {
629
+ config: cfg,
630
+ changed: false
631
+ };
632
+ }
633
+ function normalizeLegacyRuntimeModelRefs(cfg, changes) {
634
+ const cfgWithProviders = normalizeLegacyCodexCliProviderRuntimePins(cfg, changes).config;
635
+ const rawAgents = cfgWithProviders.agents;
636
+ if (!isRecord$1(rawAgents)) return cfgWithProviders;
637
+ let changed = false;
638
+ const nextAgents = { ...rawAgents };
639
+ if (isRecord$1(rawAgents.defaults)) {
640
+ const defaults = normalizeLegacyRuntimeAgentContainer(rawAgents.defaults, "agents.defaults", changes);
641
+ if (defaults.changed) {
642
+ nextAgents.defaults = defaults.value;
643
+ changed = true;
644
+ }
645
+ }
646
+ if (Array.isArray(rawAgents.list)) {
647
+ const nextList = rawAgents.list.map((entry, index) => {
648
+ if (!isRecord$1(entry)) return entry;
649
+ const agentId = normalizeOptionalString(entry.id);
650
+ const agent = normalizeLegacyRuntimeAgentContainer(entry, agentId ? `agents.list.${sanitizeForLog(agentId)}` : `agents.list[${index}]`, changes);
651
+ if (agent.changed) {
652
+ changed = true;
653
+ return agent.value;
654
+ }
655
+ return entry;
656
+ });
657
+ if (changed) nextAgents.list = nextList;
658
+ }
659
+ return changed ? {
660
+ ...cfgWithProviders,
661
+ agents: nextAgents
662
+ } : cfgWithProviders;
663
+ }
664
+ function normalizeLegacyOpenAICodexModelsAddMetadata(cfg, changes) {
665
+ const rawModels = cfg.models;
666
+ if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return cfg;
667
+ const rawProviders = rawModels.providers;
668
+ let providersChanged = false;
669
+ const nextProviders = { ...rawProviders };
670
+ for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
671
+ if (normalizeProviderId$1(providerId) !== "openai-codex" || !isRecord$1(rawProvider)) continue;
672
+ const rawProviderModels = rawProvider.models;
673
+ if (!Array.isArray(rawProviderModels)) continue;
674
+ let providerChanged = false;
675
+ const nextModels = [];
676
+ for (const model of rawProviderModels) if (isRecord$1(model) && !("metadataSource" in model) && isLegacyModelsAddCodexMetadataModel({
677
+ provider: providerId,
678
+ model
679
+ })) {
680
+ providerChanged = true;
681
+ const safeProviderId = sanitizeForLog(providerId);
682
+ const safeModelId = sanitizeForLog(normalizeOptionalString(model.id) ?? "unknown");
683
+ changes.push(`Marked models.providers.${safeProviderId}.models.${safeModelId} as /models add metadata so official OpenAI Codex metadata can override it.`);
684
+ nextModels.push(Object.assign({}, model, { metadataSource: "models-add" }));
685
+ } else nextModels.push(model);
686
+ if (!providerChanged) continue;
687
+ nextProviders[providerId] = {
688
+ ...rawProvider,
689
+ models: nextModels
690
+ };
691
+ providersChanged = true;
692
+ }
693
+ if (!providersChanged) return cfg;
694
+ return {
695
+ ...cfg,
696
+ models: {
697
+ ...rawModels,
698
+ providers: nextProviders
699
+ }
700
+ };
701
+ }
702
+ function normalizeLegacyOpenAIModelProviderApi(cfg, changes) {
703
+ const rawModels = cfg.models;
704
+ if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return cfg;
705
+ const rawProviders = rawModels.providers;
706
+ let providersChanged = false;
707
+ const nextProviders = { ...rawProviders };
708
+ for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
709
+ if (!isRecord$1(rawProvider)) continue;
710
+ let providerChanged = false;
711
+ const nextProvider = { ...rawProvider };
712
+ if (nextProvider.api === "openai") {
713
+ nextProvider.api = "openai-completions";
714
+ providerChanged = true;
715
+ changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.api "openai" → "openai-completions".`);
716
+ }
717
+ const rawProviderModels = rawProvider.models;
718
+ if (Array.isArray(rawProviderModels)) {
719
+ let modelsChanged = false;
720
+ const nextModels = [];
721
+ rawProviderModels.forEach((model, index) => {
722
+ if (!isRecord$1(model) || model.api !== "openai") {
723
+ nextModels.push(model);
724
+ return;
725
+ }
726
+ modelsChanged = true;
727
+ changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.models[${index}].api "openai" → "openai-completions".`);
728
+ nextModels.push({
729
+ ...model,
730
+ api: "openai-completions"
731
+ });
732
+ });
733
+ if (modelsChanged) {
734
+ nextProvider.models = nextModels;
735
+ providerChanged = true;
736
+ }
737
+ }
738
+ if (!providerChanged) continue;
739
+ nextProviders[providerId] = nextProvider;
740
+ providersChanged = true;
741
+ }
742
+ if (!providersChanged) return cfg;
743
+ return {
744
+ ...cfg,
745
+ models: {
746
+ ...rawModels,
747
+ providers: nextProviders
748
+ }
749
+ };
750
+ }
751
+ function normalizeLegacyNanoBananaSkill(cfg, changes) {
752
+ const NANO_BANANA_SKILL_KEY = "nano-banana-pro";
753
+ const NANO_BANANA_MODEL = "google/gemini-3-pro-image-preview";
754
+ const rawSkills = cfg.skills;
755
+ if (!isRecord$1(rawSkills)) return cfg;
756
+ let next = cfg;
757
+ let skillsChanged = false;
758
+ const skills = structuredClone(rawSkills);
759
+ if (Array.isArray(skills.allowBundled)) {
760
+ const allowBundled = skills.allowBundled.filter((value) => typeof value !== "string" || value.trim() !== NANO_BANANA_SKILL_KEY);
761
+ if (allowBundled.length !== skills.allowBundled.length) {
762
+ if (allowBundled.length === 0) {
763
+ delete skills.allowBundled;
764
+ changes.push(`Removed skills.allowBundled entry for ${NANO_BANANA_SKILL_KEY}.`);
765
+ } else {
766
+ skills.allowBundled = allowBundled;
767
+ changes.push(`Removed ${NANO_BANANA_SKILL_KEY} from skills.allowBundled.`);
768
+ }
769
+ skillsChanged = true;
770
+ }
771
+ }
772
+ const rawEntries = skills.entries;
773
+ if (!isRecord$1(rawEntries)) {
774
+ if (!skillsChanged) return cfg;
775
+ return {
776
+ ...cfg,
777
+ skills
778
+ };
779
+ }
780
+ const rawLegacyEntry = rawEntries[NANO_BANANA_SKILL_KEY];
781
+ if (!isRecord$1(rawLegacyEntry)) {
782
+ if (!skillsChanged) return cfg;
783
+ return {
784
+ ...cfg,
785
+ skills
786
+ };
787
+ }
788
+ if (next.agents?.defaults?.imageGenerationModel === void 0) {
789
+ next = {
790
+ ...next,
791
+ agents: {
792
+ ...next.agents,
793
+ defaults: {
794
+ ...next.agents?.defaults,
795
+ imageGenerationModel: { primary: NANO_BANANA_MODEL }
796
+ }
797
+ }
798
+ };
799
+ changes.push(`Moved skills.entries.${NANO_BANANA_SKILL_KEY} → agents.defaults.imageGenerationModel.primary (${NANO_BANANA_MODEL}).`);
800
+ }
801
+ const legacyEnvApiKey = normalizeOptionalString((isRecord$1(rawLegacyEntry.env) ? rawLegacyEntry.env : void 0)?.GEMINI_API_KEY) ?? "";
802
+ const legacyApiKey = legacyEnvApiKey || (typeof rawLegacyEntry.apiKey === "string" ? normalizeOptionalString(rawLegacyEntry.apiKey) : rawLegacyEntry.apiKey && isRecord$1(rawLegacyEntry.apiKey) ? structuredClone(rawLegacyEntry.apiKey) : void 0);
803
+ const rawModels = isRecord$1(next.models) ? structuredClone(next.models) : {};
804
+ const rawProviders = isRecord$1(rawModels.providers) ? { ...rawModels.providers } : {};
805
+ const rawGoogle = isRecord$1(rawProviders.google) ? { ...rawProviders.google } : {};
806
+ if (!(rawGoogle.apiKey !== void 0) && legacyApiKey) {
807
+ rawGoogle.apiKey = legacyApiKey;
808
+ if (!rawGoogle.baseUrl) rawGoogle.baseUrl = DEFAULT_GOOGLE_API_BASE_URL;
809
+ if (!Array.isArray(rawGoogle.models)) rawGoogle.models = [];
810
+ rawProviders.google = rawGoogle;
811
+ rawModels.providers = rawProviders;
812
+ next = {
813
+ ...next,
814
+ models: rawModels
815
+ };
816
+ changes.push(`Moved skills.entries.${NANO_BANANA_SKILL_KEY}.${legacyEnvApiKey ? "env.GEMINI_API_KEY" : "apiKey"} → models.providers.google.apiKey.`);
817
+ }
818
+ const entries = { ...rawEntries };
819
+ delete entries[NANO_BANANA_SKILL_KEY];
820
+ if (Object.keys(entries).length === 0) delete skills.entries;
821
+ else skills.entries = entries;
822
+ changes.push(`Removed legacy skills.entries.${NANO_BANANA_SKILL_KEY}.`);
823
+ skillsChanged = true;
824
+ if (Object.keys(skills).length === 0) {
825
+ const { skills: _ignored, ...rest } = next;
826
+ return rest;
827
+ }
828
+ if (!skillsChanged) return next;
829
+ return {
830
+ ...next,
831
+ skills
832
+ };
833
+ }
834
+ function normalizeLegacyCrossContextMessageConfig(cfg, changes) {
835
+ const rawTools = cfg.tools;
836
+ if (!isRecord$1(rawTools)) return cfg;
837
+ const rawMessage = rawTools.message;
838
+ if (!isRecord$1(rawMessage) || !("allowCrossContextSend" in rawMessage)) return cfg;
839
+ const legacyAllowCrossContextSend = rawMessage.allowCrossContextSend;
840
+ if (typeof legacyAllowCrossContextSend !== "boolean") return cfg;
841
+ const nextMessage = { ...rawMessage };
842
+ delete nextMessage.allowCrossContextSend;
843
+ if (legacyAllowCrossContextSend) {
844
+ const rawCrossContext = isRecord$1(nextMessage.crossContext) ? structuredClone(nextMessage.crossContext) : {};
845
+ rawCrossContext.allowWithinProvider = true;
846
+ rawCrossContext.allowAcrossProviders = true;
847
+ nextMessage.crossContext = rawCrossContext;
848
+ changes.push("Moved tools.message.allowCrossContextSend → tools.message.crossContext.allowWithinProvider/allowAcrossProviders (true).");
849
+ } else changes.push("Removed tools.message.allowCrossContextSend=false (default cross-context policy already matches canonical settings).");
850
+ return {
851
+ ...cfg,
852
+ tools: {
853
+ ...cfg.tools,
854
+ message: nextMessage
855
+ }
856
+ };
857
+ }
858
+ function mapDeepgramCompatToProviderOptions(rawCompat) {
859
+ const providerOptions = {};
860
+ if (typeof rawCompat.detectLanguage === "boolean") providerOptions.detect_language = rawCompat.detectLanguage;
861
+ if (typeof rawCompat.punctuate === "boolean") providerOptions.punctuate = rawCompat.punctuate;
862
+ if (typeof rawCompat.smartFormat === "boolean") providerOptions.smart_format = rawCompat.smartFormat;
863
+ return providerOptions;
864
+ }
865
+ function migrateLegacyDeepgramCompat(params) {
866
+ const rawCompat = isRecord$1(params.owner.deepgram) ? structuredClone(params.owner.deepgram) : null;
867
+ if (!rawCompat) return false;
868
+ const compatProviderOptions = mapDeepgramCompatToProviderOptions(rawCompat);
869
+ const currentProviderOptions = isRecord$1(params.owner.providerOptions) ? structuredClone(params.owner.providerOptions) : {};
870
+ const currentDeepgram = isRecord$1(currentProviderOptions.deepgram) ? structuredClone(currentProviderOptions.deepgram) : {};
871
+ const mergedDeepgram = {
872
+ ...compatProviderOptions,
873
+ ...currentDeepgram
874
+ };
875
+ delete params.owner.deepgram;
876
+ currentProviderOptions.deepgram = mergedDeepgram;
877
+ params.owner.providerOptions = currentProviderOptions;
878
+ const hadCanonicalDeepgram = Object.keys(currentDeepgram).length > 0;
879
+ params.changes.push(hadCanonicalDeepgram ? `Merged ${params.pathPrefix}.deepgram → ${params.pathPrefix}.providerOptions.deepgram (filled missing canonical fields from legacy).` : `Moved ${params.pathPrefix}.deepgram → ${params.pathPrefix}.providerOptions.deepgram.`);
880
+ return true;
881
+ }
882
+ function normalizeLegacyMediaProviderOptions(cfg, changes) {
883
+ const rawTools = cfg.tools;
884
+ if (!isRecord$1(rawTools)) return cfg;
885
+ const rawMedia = rawTools.media;
886
+ if (!isRecord$1(rawMedia)) return cfg;
887
+ let mediaChanged = false;
888
+ const nextMedia = structuredClone(rawMedia);
889
+ const migrateModelList = (models, pathPrefix) => {
890
+ if (!Array.isArray(models)) return false;
891
+ let changedAny = false;
892
+ for (const [index, entry] of models.entries()) {
893
+ if (!isRecord$1(entry)) continue;
894
+ if (migrateLegacyDeepgramCompat({
895
+ owner: entry,
896
+ pathPrefix: `${pathPrefix}[${index}]`,
897
+ changes
898
+ })) changedAny = true;
899
+ }
900
+ return changedAny;
901
+ };
902
+ for (const capability of [
903
+ "audio",
904
+ "image",
905
+ "video"
906
+ ]) {
907
+ const config = isRecord$1(nextMedia[capability]) ? structuredClone(nextMedia[capability]) : null;
908
+ if (!config) continue;
909
+ let configChanged = false;
910
+ if (migrateLegacyDeepgramCompat({
911
+ owner: config,
912
+ pathPrefix: `tools.media.${capability}`,
913
+ changes
914
+ })) configChanged = true;
915
+ if (migrateModelList(config.models, `tools.media.${capability}.models`)) configChanged = true;
916
+ if (configChanged) {
917
+ nextMedia[capability] = config;
918
+ mediaChanged = true;
919
+ }
920
+ }
921
+ if (migrateModelList(nextMedia.models, "tools.media.models")) mediaChanged = true;
922
+ if (!mediaChanged) return cfg;
923
+ return {
924
+ ...cfg,
925
+ tools: {
926
+ ...cfg.tools,
927
+ media: nextMedia
928
+ }
929
+ };
930
+ }
931
+ function normalizeConfiguredPositiveInteger(value) {
932
+ if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return;
933
+ return Math.floor(value);
934
+ }
935
+ function resolveConfiguredOllamaModelNumCtxBudget(params) {
936
+ const modelContextWindow = normalizeConfiguredPositiveInteger(params.model.contextWindow);
937
+ if (modelContextWindow !== void 0) return modelContextWindow;
938
+ const providerContextWindow = normalizeConfiguredPositiveInteger(params.provider.contextWindow);
939
+ if (providerContextWindow !== void 0) return params.providerNumCtxApplies ? void 0 : providerContextWindow;
940
+ const modelMaxTokens = normalizeConfiguredPositiveInteger(params.model.maxTokens);
941
+ if (modelMaxTokens !== void 0) return modelMaxTokens;
942
+ const providerMaxTokens = normalizeConfiguredPositiveInteger(params.provider.maxTokens);
943
+ if (providerMaxTokens !== void 0) return params.providerNumCtxApplies ? void 0 : providerMaxTokens;
944
+ }
945
+ function resolveConfiguredOllamaProviderNumCtxBudget(provider) {
946
+ return normalizeConfiguredPositiveInteger(provider.contextWindow) ?? normalizeConfiguredPositiveInteger(provider.maxTokens);
947
+ }
948
+ function isNativeOllamaProviderConfig(_providerId, provider) {
949
+ return normalizeOptionalLowercaseString(provider.api) === "ollama";
950
+ }
951
+ function isNativeOllamaModelConfig(params) {
952
+ const modelApi = normalizeOptionalLowercaseString(params.model.api);
953
+ if (modelApi) return modelApi === "ollama";
954
+ const providerApi = normalizeOptionalLowercaseString(params.provider.api);
955
+ if (providerApi) return providerApi === "ollama";
956
+ return false;
957
+ }
958
+ function hasConfiguredOllamaProviderNumCtx(provider) {
959
+ const rawParams = provider.params;
960
+ return isRecord$1(rawParams) && hasOwnKey(rawParams, "num_ctx");
961
+ }
962
+ function applyLegacyOllamaProviderNumCtxParams(params) {
963
+ if (!isNativeOllamaProviderConfig(params.providerId, params.provider)) return {
964
+ provider: params.provider,
965
+ changed: false
966
+ };
967
+ const rawParams = params.provider.params;
968
+ if (rawParams !== void 0 && !isRecord$1(rawParams)) return {
969
+ provider: params.provider,
970
+ changed: false
971
+ };
972
+ if (rawParams && hasOwnKey(rawParams, "num_ctx")) return {
973
+ provider: params.provider,
974
+ changed: false
975
+ };
976
+ const numCtx = resolveConfiguredOllamaProviderNumCtxBudget(params.provider);
977
+ if (numCtx === void 0) return {
978
+ provider: params.provider,
979
+ changed: false
980
+ };
981
+ params.changes.push(`Set models.providers.${sanitizeForLog(params.providerId)}.params.num_ctx to ${numCtx} for native Ollama compatibility.`);
982
+ return {
983
+ provider: {
984
+ ...params.provider,
985
+ params: rawParams ? {
986
+ ...rawParams,
987
+ num_ctx: numCtx
988
+ } : { num_ctx: numCtx }
989
+ },
990
+ changed: true
991
+ };
992
+ }
993
+ function normalizeLegacyOllamaNativeNumCtxParams(cfg, changes) {
994
+ const rawProviders = cfg.models?.providers;
995
+ if (!isRecord$1(rawProviders)) return cfg;
996
+ let providersChanged = false;
997
+ const nextProviders = { ...rawProviders };
998
+ for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
999
+ if (!isRecord$1(rawProvider)) continue;
1000
+ const rawModels = rawProvider.models;
1001
+ if (!Array.isArray(rawModels)) continue;
1002
+ const providerParams = applyLegacyOllamaProviderNumCtxParams({
1003
+ providerId,
1004
+ provider: rawProvider,
1005
+ changes
1006
+ });
1007
+ const providerNumCtxApplies = isNativeOllamaProviderConfig(providerId, providerParams.provider) && hasConfiguredOllamaProviderNumCtx(providerParams.provider);
1008
+ if (rawModels.length === 0) {
1009
+ if (!providerParams.changed) continue;
1010
+ nextProviders[providerId] = providerParams.provider;
1011
+ providersChanged = true;
1012
+ continue;
1013
+ }
1014
+ let modelsChanged = false;
1015
+ const nextModels = rawModels.map((model, index) => {
1016
+ if (!isRecord$1(model)) return model;
1017
+ if (!isNativeOllamaModelConfig({
1018
+ providerId,
1019
+ provider: providerParams.provider,
1020
+ model
1021
+ })) return model;
1022
+ const rawParams = model.params;
1023
+ if (rawParams !== void 0 && !isRecord$1(rawParams)) return model;
1024
+ if (rawParams && hasOwnKey(rawParams, "num_ctx")) return model;
1025
+ const numCtx = resolveConfiguredOllamaModelNumCtxBudget({
1026
+ model,
1027
+ provider: providerParams.provider,
1028
+ providerNumCtxApplies
1029
+ });
1030
+ if (numCtx === void 0) return model;
1031
+ modelsChanged = true;
1032
+ changes.push(`Set models.providers.${sanitizeForLog(providerId)}.models[${index}].params.num_ctx to ${numCtx} for native Ollama compatibility.`);
1033
+ return Object.assign({}, model, { params: rawParams ? {
1034
+ ...rawParams,
1035
+ num_ctx: numCtx
1036
+ } : { num_ctx: numCtx } });
1037
+ });
1038
+ if (!modelsChanged && !providerParams.changed) continue;
1039
+ nextProviders[providerId] = {
1040
+ ...providerParams.provider,
1041
+ models: nextModels
1042
+ };
1043
+ providersChanged = true;
1044
+ }
1045
+ if (!providersChanged) return cfg;
1046
+ return {
1047
+ ...cfg,
1048
+ models: {
1049
+ ...cfg.models,
1050
+ providers: nextProviders
1051
+ }
1052
+ };
1053
+ }
1054
+ function normalizeLegacyMistralModelMaxTokens(cfg, changes) {
1055
+ const rawProviders = cfg.models?.providers;
1056
+ if (!isRecord$1(rawProviders)) return cfg;
1057
+ let providersChanged = false;
1058
+ const nextProviders = { ...rawProviders };
1059
+ for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
1060
+ if (normalizeProviderId$1(providerId) !== "mistral" || !isRecord$1(rawProvider)) continue;
1061
+ const rawModels = rawProvider.models;
1062
+ if (!Array.isArray(rawModels)) continue;
1063
+ let modelsChanged = false;
1064
+ const nextModels = rawModels.map((model, index) => {
1065
+ if (!isRecord$1(model)) return model;
1066
+ const modelId = normalizeOptionalString(model.id) ?? "";
1067
+ const contextWindow = typeof model.contextWindow === "number" && Number.isFinite(model.contextWindow) ? model.contextWindow : null;
1068
+ const maxTokens = typeof model.maxTokens === "number" && Number.isFinite(model.maxTokens) ? model.maxTokens : null;
1069
+ if (!modelId || contextWindow === null || maxTokens === null) return model;
1070
+ const normalizedMaxTokens = resolveNormalizedProviderModelMaxTokens({
1071
+ providerId,
1072
+ modelId,
1073
+ contextWindow,
1074
+ rawMaxTokens: maxTokens
1075
+ });
1076
+ if (normalizedMaxTokens === maxTokens) return model;
1077
+ modelsChanged = true;
1078
+ changes.push(`Normalized models.providers.${providerId}.models[${index}].maxTokens (${maxTokens} → ${normalizedMaxTokens}) to avoid Mistral context-window rejects.`);
1079
+ return Object.assign({}, model, { maxTokens: normalizedMaxTokens });
1080
+ });
1081
+ if (!modelsChanged) continue;
1082
+ nextProviders[providerId] = {
1083
+ ...rawProvider,
1084
+ models: nextModels
1085
+ };
1086
+ providersChanged = true;
1087
+ }
1088
+ if (!providersChanged) return cfg;
1089
+ return {
1090
+ ...cfg,
1091
+ models: {
1092
+ ...cfg.models,
1093
+ providers: nextProviders
1094
+ }
1095
+ };
1096
+ }
1097
+ //#endregion
1098
+ //#region src/commands/doctor/shared/legacy-web-fetch-migrate.ts
1099
+ const DANGEROUS_RECORD_KEYS = new Set([
1100
+ "__proto__",
1101
+ "prototype",
1102
+ "constructor"
1103
+ ]);
1104
+ function resolveLegacyFetchConfig(raw) {
1105
+ if (!isRecord$1(raw)) return;
1106
+ const tools = isRecord$1(raw.tools) ? raw.tools : void 0;
1107
+ const web = isRecord$1(tools?.web) ? tools.web : void 0;
1108
+ return isRecord$1(web?.fetch) ? web.fetch : void 0;
1109
+ }
1110
+ function copyLegacyFirecrawlFetchConfig(fetch) {
1111
+ const current = fetch.firecrawl;
1112
+ if (!isRecord$1(current)) return;
1113
+ const next = cloneRecord(current);
1114
+ delete next.enabled;
1115
+ return next;
1116
+ }
1117
+ function hasMappedLegacyWebFetchConfig(raw) {
1118
+ const fetch = resolveLegacyFetchConfig(raw);
1119
+ if (!fetch) return false;
1120
+ return isRecord$1(fetch.firecrawl);
1121
+ }
1122
+ function migratePluginWebFetchConfig(params) {
1123
+ const entry = ensureRecord(ensureRecord(ensureRecord(params.root, "plugins"), "entries"), "firecrawl");
1124
+ const config = ensureRecord(entry, "config");
1125
+ const hadEnabled = entry.enabled !== void 0;
1126
+ const existing = isRecord$1(config.webFetch) ? cloneRecord(config.webFetch) : void 0;
1127
+ if (!hadEnabled) entry.enabled = true;
1128
+ if (!existing) {
1129
+ config.webFetch = cloneRecord(params.payload);
1130
+ params.changes.push("Moved tools.web.fetch.firecrawl → plugins.entries.firecrawl.config.webFetch.");
1131
+ return;
1132
+ }
1133
+ const merged = cloneRecord(existing);
1134
+ mergeMissing(merged, params.payload);
1135
+ const changed = JSON.stringify(merged) !== JSON.stringify(existing) || !hadEnabled;
1136
+ config.webFetch = merged;
1137
+ if (changed) {
1138
+ params.changes.push("Merged tools.web.fetch.firecrawl → plugins.entries.firecrawl.config.webFetch (filled missing fields from legacy; kept explicit plugin config values).");
1139
+ return;
1140
+ }
1141
+ params.changes.push("Removed tools.web.fetch.firecrawl (plugins.entries.firecrawl.config.webFetch already set).");
1142
+ }
1143
+ function migrateLegacyWebFetchConfig(raw) {
1144
+ if (!isRecord$1(raw) || !hasMappedLegacyWebFetchConfig(raw)) return {
1145
+ config: raw,
1146
+ changes: []
1147
+ };
1148
+ return normalizeLegacyWebFetchConfigRecord(raw);
1149
+ }
1150
+ function normalizeLegacyWebFetchConfigRecord(raw) {
1151
+ const nextRoot = structuredClone(raw);
1152
+ const web = ensureRecord(ensureRecord(nextRoot, "tools"), "web");
1153
+ const fetch = resolveLegacyFetchConfig(nextRoot);
1154
+ if (!fetch) return {
1155
+ config: raw,
1156
+ changes: []
1157
+ };
1158
+ const nextFetch = {};
1159
+ for (const [key, value] of Object.entries(fetch)) {
1160
+ if (key === "firecrawl" && isRecord$1(value)) continue;
1161
+ if (DANGEROUS_RECORD_KEYS.has(key)) continue;
1162
+ nextFetch[key] = value;
1163
+ }
1164
+ web.fetch = nextFetch;
1165
+ const firecrawl = copyLegacyFirecrawlFetchConfig(fetch);
1166
+ const changes = [];
1167
+ if (firecrawl && Object.keys(firecrawl).length > 0) migratePluginWebFetchConfig({
1168
+ root: nextRoot,
1169
+ payload: firecrawl,
1170
+ changes
1171
+ });
1172
+ else if (hasOwnKey(fetch, "firecrawl")) changes.push("Removed empty tools.web.fetch.firecrawl.");
1173
+ return {
1174
+ config: nextRoot,
1175
+ changes
1176
+ };
1177
+ }
1178
+ //#endregion
1179
+ //#region src/commands/doctor/shared/legacy-config-compatibility-base.ts
1180
+ function normalizeBaseCompatibilityConfigValues(cfg, changes, afterBrowser) {
1181
+ let next = seedMissingDefaultAccountsFromSingleAccountBase(cfg, changes);
1182
+ next = normalizeLegacyBrowserConfig(next, changes);
1183
+ next = afterBrowser ? afterBrowser(next) : next;
1184
+ for (const migrate of [
1185
+ migrateLegacyWebSearchConfig,
1186
+ migrateLegacyWebFetchConfig,
1187
+ migrateLegacyXSearchConfig
1188
+ ]) {
1189
+ const migrated = migrate(next);
1190
+ if (migrated.changes.length === 0) continue;
1191
+ next = migrated.config;
1192
+ changes.push(...migrated.changes);
1193
+ }
1194
+ next = normalizeLegacyNanoBananaSkill(next, changes);
1195
+ next = normalizeLegacyTalkConfig(next, changes);
1196
+ next = normalizeLegacyOpenAIModelProviderApi(next, changes);
1197
+ next = normalizeLegacyRuntimeModelRefs(next, changes);
1198
+ next = normalizeLegacyCrossContextMessageConfig(next, changes);
1199
+ next = normalizeLegacyMediaProviderOptions(next, changes);
1200
+ next = normalizeLegacyOllamaNativeNumCtxParams(next, changes);
1201
+ return normalizeLegacyMistralModelMaxTokens(next, changes);
1202
+ }
1203
+ //#endregion
1204
+ //#region src/commands/doctor/shared/legacy-config-core-migrate.ts
1205
+ function pruneBindingsForMissingAgents(cfg, changes) {
1206
+ const agents = cfg.agents?.list;
1207
+ const bindings = cfg.bindings;
1208
+ if (!Array.isArray(agents) || agents.length === 0 || !Array.isArray(bindings)) return cfg;
1209
+ const validAgents = agents.filter((agent) => {
1210
+ return agent !== null && typeof agent === "object" && typeof agent.id === "string";
1211
+ });
1212
+ if (validAgents.length !== agents.length) return cfg;
1213
+ const agentIds = new Set(validAgents.map((agent) => normalizeAgentId(agent.id)));
1214
+ const nextBindings = bindings.filter((binding) => {
1215
+ const agentId = binding && typeof binding === "object" ? binding.agentId : void 0;
1216
+ return typeof agentId !== "string" || agentIds.has(normalizeAgentId(agentId));
1217
+ });
1218
+ const removed = bindings.length - nextBindings.length;
1219
+ if (removed === 0) return cfg;
1220
+ changes.push(`Removed ${removed} binding${removed === 1 ? "" : "s"} that referenced missing agents.list ids.`);
1221
+ return {
1222
+ ...cfg,
1223
+ ...nextBindings.length > 0 ? { bindings: nextBindings } : { bindings: void 0 }
1224
+ };
1225
+ }
1226
+ function normalizeCompatibilityConfigValues(cfg) {
1227
+ const changes = [];
1228
+ let next = normalizeBaseCompatibilityConfigValues(cfg, changes, (config) => {
1229
+ const setupMigration = runPluginSetupConfigMigrations({ config });
1230
+ if (setupMigration.changes.length === 0) return config;
1231
+ changes.push(...setupMigration.changes);
1232
+ return setupMigration.config;
1233
+ });
1234
+ const channelMigrations = applyChannelDoctorCompatibilityMigrations(next);
1235
+ if (channelMigrations.changes.length > 0) {
1236
+ next = channelMigrations.next;
1237
+ changes.push(...channelMigrations.changes);
1238
+ }
1239
+ const secretRefMarkers = migrateLegacySecretRefEnvMarkers(next);
1240
+ if (secretRefMarkers.changes.length > 0) {
1241
+ next = secretRefMarkers.config;
1242
+ changes.push(...secretRefMarkers.changes);
1243
+ }
1244
+ next = normalizeLegacyCommandsConfig(next, changes);
1245
+ next = normalizeLegacyOpenAICodexModelsAddMetadata(next, changes);
1246
+ next = pruneBindingsForMissingAgents(next, changes);
1247
+ return {
1248
+ config: next,
1249
+ changes
1250
+ };
1251
+ }
1252
+ //#endregion
1253
+ //#region src/commands/doctor/emit-notes.ts
1254
+ function sanitizeDoctorNote(note) {
1255
+ return note.split("\n").map((line) => sanitizeForLog(line)).join("\n");
1256
+ }
1257
+ function emitDoctorNotes(params) {
1258
+ for (const change of params.changeNotes ?? []) params.note(sanitizeDoctorNote(change), "Doctor changes");
1259
+ for (const info of params.infoNotes ?? []) params.note(sanitizeDoctorNote(info), "Doctor info");
1260
+ for (const warning of params.warningNotes ?? []) params.note(sanitizeDoctorNote(warning), "Doctor warnings");
1261
+ }
1262
+ //#endregion
1263
+ //#region src/commands/doctor/finalize-config-flow.ts
1264
+ async function finalizeDoctorConfigFlow(params) {
1265
+ if (!params.shouldRepair && params.pendingChanges) {
1266
+ if (await params.confirm({
1267
+ message: "现在应用推荐的配置修复吗?",
1268
+ initialValue: true
1269
+ })) return {
1270
+ cfg: params.candidate,
1271
+ shouldWriteConfig: true
1272
+ };
1273
+ if (params.fixHints.length > 0) params.note(params.fixHints.join("\n"), "Doctor");
1274
+ return {
1275
+ cfg: params.cfg,
1276
+ shouldWriteConfig: false
1277
+ };
1278
+ }
1279
+ if (params.shouldRepair && params.pendingChanges) return {
1280
+ cfg: params.cfg,
1281
+ shouldWriteConfig: true
1282
+ };
1283
+ return {
1284
+ cfg: params.cfg,
1285
+ shouldWriteConfig: false
1286
+ };
1287
+ }
1288
+ //#endregion
1289
+ //#region src/commands/doctor-auth-profile-config.ts
1290
+ const AUTH_PROFILE_MODES = new Set([
1291
+ "api_key",
1292
+ "aws-sdk",
1293
+ "oauth",
1294
+ "token"
1295
+ ]);
1296
+ function normalizeProviderId(value) {
1297
+ return normalizeLowercaseStringOrEmpty(value);
1298
+ }
1299
+ function normalizeProfileId(value) {
1300
+ return normalizeOptionalString(value) ?? null;
1301
+ }
1302
+ function normalizeMode(value) {
1303
+ return typeof value === "string" && AUTH_PROFILE_MODES.has(value) ? value : null;
1304
+ }
1305
+ function extractProviderFromModelRef(value) {
1306
+ const { model } = splitTrailingAuthProfile(value);
1307
+ const slash = model.indexOf("/");
1308
+ if (slash <= 0) return null;
1309
+ return normalizeProviderId(model.slice(0, slash)) || null;
1310
+ }
1311
+ function extractProviderFromProfileId(profileId) {
1312
+ const colon = profileId.indexOf(":");
1313
+ if (colon <= 0) return null;
1314
+ return normalizeProviderId(profileId.slice(0, colon)) || null;
1315
+ }
1316
+ function collectActiveAuthHints(config) {
1317
+ const activeProviders = /* @__PURE__ */ new Set();
1318
+ const explicitProfileIds = /* @__PURE__ */ new Set();
1319
+ const explicitProfileProviders = /* @__PURE__ */ new Map();
1320
+ const models = isRecord$1(config.models) ? config.models : {};
1321
+ const providers = isRecord$1(models.providers) ? models.providers : {};
1322
+ for (const providerId of Object.keys(providers)) {
1323
+ const normalized = normalizeProviderId(providerId);
1324
+ if (normalized) activeProviders.add(normalized);
1325
+ }
1326
+ for (const { value } of collectConfiguredModelRefs(config)) {
1327
+ const { profile } = splitTrailingAuthProfile(value);
1328
+ const provider = extractProviderFromModelRef(value);
1329
+ if (profile) {
1330
+ explicitProfileIds.add(profile);
1331
+ if (provider) {
1332
+ const providers = explicitProfileProviders.get(profile) ?? /* @__PURE__ */ new Set();
1333
+ providers.add(provider);
1334
+ explicitProfileProviders.set(profile, providers);
1335
+ }
1336
+ }
1337
+ if (provider) activeProviders.add(provider);
1338
+ }
1339
+ const auth = isRecord$1(config.auth) ? config.auth : {};
1340
+ const order = isRecord$1(auth.order) ? auth.order : {};
1341
+ for (const [providerId, profileIds] of Object.entries(order)) {
1342
+ const provider = normalizeProviderId(providerId);
1343
+ if (!provider || !activeProviders.has(provider) || !Array.isArray(profileIds)) continue;
1344
+ for (const profileId of profileIds) {
1345
+ const normalized = normalizeProfileId(profileId);
1346
+ if (normalized) explicitProfileIds.add(normalized);
1347
+ }
1348
+ }
1349
+ return {
1350
+ activeProviders,
1351
+ explicitProfileIds,
1352
+ explicitProfileProviders
1353
+ };
1354
+ }
1355
+ function isValidProfileMetadata(value) {
1356
+ if (!isRecord$1(value)) return false;
1357
+ return normalizeProviderId(value.provider) !== "" && normalizeMode(value.mode) !== null;
1358
+ }
1359
+ function buildProfileMetadata(params) {
1360
+ const before = isRecord$1(params.before) ? params.before : {};
1361
+ const after = isRecord$1(params.after) ? params.after : {};
1362
+ const provider = normalizeProviderId(after.provider) || normalizeProviderId(before.provider) || extractProviderFromProfileId(params.profileId) || normalizeProviderId(params.providerHint);
1363
+ if (!provider) return null;
1364
+ const repaired = {
1365
+ provider,
1366
+ mode: normalizeMode(after.mode) ?? normalizeMode(before.mode) ?? "api_key"
1367
+ };
1368
+ const email = normalizeOptionalString(after.email) ?? normalizeOptionalString(before.email);
1369
+ const displayName = normalizeOptionalString(after.displayName) ?? normalizeOptionalString(before.displayName);
1370
+ if (email) repaired.email = email;
1371
+ if (displayName) repaired.displayName = displayName;
1372
+ return repaired;
1373
+ }
1374
+ function ensureAuthProfiles(config) {
1375
+ const root = config;
1376
+ const auth = isRecord$1(root.auth) ? root.auth : {};
1377
+ if (root.auth !== auth) root.auth = auth;
1378
+ if (!isRecord$1(auth.profiles)) auth.profiles = {};
1379
+ return auth.profiles;
1380
+ }
1381
+ function protectActiveAuthProfileConfig(params) {
1382
+ const { activeProviders, explicitProfileIds, explicitProfileProviders } = collectActiveAuthHints(params.before);
1383
+ const beforeAuth = isRecord$1(params.before.auth) ? params.before.auth : {};
1384
+ const beforeProfiles = isRecord$1(beforeAuth.profiles) ? beforeAuth.profiles : {};
1385
+ if (Object.keys(beforeProfiles).length === 0) return {
1386
+ config: params.after,
1387
+ repairs: [],
1388
+ warnings: []
1389
+ };
1390
+ const config = structuredClone(params.after);
1391
+ const afterAuth = isRecord$1(config.auth) ? config.auth : {};
1392
+ const afterProfiles = isRecord$1(afterAuth.profiles) ? afterAuth.profiles : {};
1393
+ const repairs = [];
1394
+ const warnings = [];
1395
+ for (const [profileId, beforeProfile] of Object.entries(beforeProfiles)) {
1396
+ const afterProfile = afterProfiles[profileId];
1397
+ const afterProfileRecord = isRecord$1(afterProfile) ? afterProfile : null;
1398
+ const beforeProfileRecord = isRecord$1(beforeProfile) ? beforeProfile : null;
1399
+ if (isValidProfileMetadata(afterProfile)) continue;
1400
+ const provider = normalizeProviderId(afterProfileRecord?.provider) || normalizeProviderId(beforeProfileRecord?.provider) || extractProviderFromProfileId(profileId);
1401
+ const protectsActiveProvider = !!provider && activeProviders.has(provider);
1402
+ const protectsExplicitProfile = explicitProfileIds.has(profileId);
1403
+ if (!protectsActiveProvider && !protectsExplicitProfile) continue;
1404
+ const repaired = buildProfileMetadata({
1405
+ profileId,
1406
+ before: beforeProfile,
1407
+ after: afterProfile,
1408
+ providerHint: explicitProfileProviders.get(profileId)?.size === 1 ? [...explicitProfileProviders.get(profileId) ?? []][0] : void 0
1409
+ });
1410
+ if (!repaired) {
1411
+ warnings.push(`auth.profiles.${profileId}: active auth profile metadata could not be inferred; repair manually before running doctor --fix.`);
1412
+ continue;
1413
+ }
1414
+ const profiles = ensureAuthProfiles(config);
1415
+ profiles[profileId] = repaired;
1416
+ repairs.push(`Repaired auth.profiles.${profileId} metadata for active ${repaired.provider} auth.`);
1417
+ }
1418
+ return {
1419
+ config,
1420
+ repairs,
1421
+ warnings
1422
+ };
1423
+ }
1424
+ //#endregion
1425
+ //#region src/commands/doctor/shared/legacy-config-compat.ts
1426
+ function applyLegacyDoctorMigrations(raw) {
1427
+ if (!raw || typeof raw !== "object") return {
1428
+ next: null,
1429
+ changes: []
1430
+ };
1431
+ const original = raw;
1432
+ const next = structuredClone(original);
1433
+ const changes = [];
1434
+ for (const migration of LEGACY_CONFIG_MIGRATIONS) migration.apply(next, changes);
1435
+ const compat = applyChannelDoctorCompatibilityMigrations(next);
1436
+ changes.push(...compat.changes);
1437
+ if (changes.length === 0) return {
1438
+ next: null,
1439
+ changes: []
1440
+ };
1441
+ return {
1442
+ next: compat.next,
1443
+ changes
1444
+ };
1445
+ }
1446
+ //#endregion
1447
+ //#region src/commands/doctor/shared/legacy-config-migrate.ts
1448
+ function migrateLegacyConfig(raw) {
1449
+ const { next, changes } = applyLegacyDoctorMigrations(raw);
1450
+ if (!next) return {
1451
+ config: null,
1452
+ changes: []
1453
+ };
1454
+ const validated = validateConfigObjectWithPlugins(next);
1455
+ if (!validated.ok) {
1456
+ changes.push("Migration applied; other validation issues remain — run doctor to review.");
1457
+ return {
1458
+ config: next,
1459
+ changes,
1460
+ partiallyValid: true
1461
+ };
1462
+ }
1463
+ return {
1464
+ config: validated.config,
1465
+ changes
1466
+ };
1467
+ }
1468
+ //#endregion
1469
+ //#region src/commands/doctor/shared/config-flow-steps.ts
1470
+ function applyLegacyCompatibilityStep(params) {
1471
+ if (params.snapshot.legacyIssues.length === 0) return {
1472
+ state: params.state,
1473
+ issueLines: [],
1474
+ changeLines: []
1475
+ };
1476
+ const issueLines = formatConfigIssueLines(params.snapshot.legacyIssues, "-");
1477
+ const { config: migrated, changes, partiallyValid } = migrateLegacyConfig(params.snapshot.parsed);
1478
+ if (!migrated) return {
1479
+ state: {
1480
+ ...params.state,
1481
+ pendingChanges: params.state.pendingChanges || params.snapshot.legacyIssues.length > 0,
1482
+ fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to migrate legacy config keys.`]
1483
+ },
1484
+ issueLines,
1485
+ changeLines: changes
1486
+ };
1487
+ return {
1488
+ state: {
1489
+ cfg: migrated,
1490
+ candidate: migrated,
1491
+ pendingChanges: params.state.pendingChanges || params.snapshot.legacyIssues.length > 0,
1492
+ fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to ${partiallyValid ? "finish fixing" : "migrate"} legacy config keys.`]
1493
+ },
1494
+ issueLines,
1495
+ changeLines: changes,
1496
+ partiallyValid: partiallyValid === true ? true : void 0
1497
+ };
1498
+ }
1499
+ function applyUnknownConfigKeyStep(params) {
1500
+ const unknown = stripUnknownConfigKeys(params.state.candidate);
1501
+ if (unknown.removed.length === 0) return {
1502
+ state: params.state,
1503
+ removed: [],
1504
+ repairs: [],
1505
+ warnings: []
1506
+ };
1507
+ const protectedAuth = protectActiveAuthProfileConfig({
1508
+ before: params.state.candidate,
1509
+ after: unknown.config
1510
+ });
1511
+ return {
1512
+ state: {
1513
+ cfg: params.shouldRepair ? protectedAuth.config : params.state.cfg,
1514
+ candidate: protectedAuth.config,
1515
+ pendingChanges: true,
1516
+ fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to remove these keys.`]
1517
+ },
1518
+ removed: unknown.removed,
1519
+ repairs: protectedAuth.repairs,
1520
+ warnings: protectedAuth.warnings
1521
+ };
1522
+ }
1523
+ //#endregion
1524
+ //#region src/commands/doctor/shared/default-account-warnings.ts
1525
+ function normalizeBindingChannelKey(raw) {
1526
+ const normalized = normalizeChatChannelId(raw);
1527
+ if (normalized) return normalized;
1528
+ return normalizeLowercaseStringOrEmpty(raw);
1529
+ }
1530
+ function collectChannelsMissingDefaultAccount(cfg) {
1531
+ const channels = asObjectRecord(cfg.channels);
1532
+ if (!channels) return [];
1533
+ const contexts = [];
1534
+ for (const [channelKey, rawChannel] of Object.entries(channels)) {
1535
+ const channel = asObjectRecord(rawChannel);
1536
+ if (!channel) continue;
1537
+ const accounts = asObjectRecord(channel.accounts);
1538
+ if (!accounts) continue;
1539
+ const normalizedAccountIds = Array.from(new Set(Object.keys(accounts).map((accountId) => normalizeAccountId(accountId)).filter(Boolean))).toSorted((a, b) => a.localeCompare(b));
1540
+ if (normalizedAccountIds.length === 0 || normalizedAccountIds.includes("default")) continue;
1541
+ contexts.push({
1542
+ channelKey,
1543
+ channel,
1544
+ normalizedAccountIds
1545
+ });
1546
+ }
1547
+ return contexts;
1548
+ }
1549
+ function collectMissingDefaultAccountBindingWarnings(cfg) {
1550
+ const bindings = listRouteBindings(cfg);
1551
+ const warnings = [];
1552
+ for (const { channelKey, normalizedAccountIds } of collectChannelsMissingDefaultAccount(cfg)) {
1553
+ const accountIdSet = new Set(normalizedAccountIds);
1554
+ const channelPattern = normalizeBindingChannelKey(channelKey);
1555
+ let hasWildcardBinding = false;
1556
+ const coveredAccountIds = /* @__PURE__ */ new Set();
1557
+ for (const binding of bindings) {
1558
+ const bindingRecord = asObjectRecord(binding);
1559
+ if (!bindingRecord) continue;
1560
+ const match = asObjectRecord(bindingRecord.match);
1561
+ if (!match) continue;
1562
+ const matchChannel = typeof match.channel === "string" ? normalizeBindingChannelKey(match.channel) : "";
1563
+ if (!matchChannel || matchChannel !== channelPattern) continue;
1564
+ const rawAccountId = normalizeOptionalString(match.accountId) ?? "";
1565
+ if (!rawAccountId) continue;
1566
+ if (rawAccountId === "*") {
1567
+ hasWildcardBinding = true;
1568
+ continue;
1569
+ }
1570
+ const normalizedBindingAccountId = normalizeAccountId(rawAccountId);
1571
+ if (accountIdSet.has(normalizedBindingAccountId)) coveredAccountIds.add(normalizedBindingAccountId);
1572
+ }
1573
+ if (hasWildcardBinding) continue;
1574
+ const uncoveredAccountIds = normalizedAccountIds.filter((accountId) => !coveredAccountIds.has(accountId));
1575
+ if (uncoveredAccountIds.length === 0) continue;
1576
+ if (coveredAccountIds.size > 0) {
1577
+ warnings.push(`- channels.${channelKey}: accounts.default is missing and account bindings only cover a subset of configured accounts. Uncovered accounts: ${uncoveredAccountIds.join(", ")}. Add bindings[].match.accountId for uncovered accounts (or "*"), or add ${formatChannelAccountsDefaultPath(channelKey)}.`);
1578
+ continue;
1579
+ }
1580
+ warnings.push(`- channels.${channelKey}: accounts.default is missing and no valid account-scoped binding exists for configured accounts (${normalizedAccountIds.join(", ")}). Channel-only bindings (no accountId) match only default. Add bindings[].match.accountId for one of these accounts (or "*"), or add ${formatChannelAccountsDefaultPath(channelKey)}.`);
1581
+ }
1582
+ return warnings;
1583
+ }
1584
+ function collectMissingExplicitDefaultAccountWarnings(cfg) {
1585
+ const warnings = [];
1586
+ for (const { channelKey, channel, normalizedAccountIds } of collectChannelsMissingDefaultAccount(cfg)) {
1587
+ if (normalizedAccountIds.length < 2) continue;
1588
+ const preferredDefault = normalizeOptionalAccountId(typeof channel.defaultAccount === "string" ? channel.defaultAccount : void 0);
1589
+ if (preferredDefault) {
1590
+ if (normalizedAccountIds.includes(preferredDefault)) continue;
1591
+ warnings.push(`- channels.${channelKey}: defaultAccount is set to "${preferredDefault}" but does not match configured accounts (${normalizedAccountIds.join(", ")}). ${formatSetExplicitDefaultToConfiguredInstruction({ channelKey })} to avoid fallback routing.`);
1592
+ continue;
1593
+ }
1594
+ warnings.push(`- channels.${channelKey}: multiple accounts are configured but no explicit default is set. ${formatSetExplicitDefaultInstruction(channelKey)} to avoid fallback routing.`);
1595
+ }
1596
+ return warnings;
1597
+ }
1598
+ //#endregion
1599
+ //#region src/commands/doctor-config-flow.ts
1600
+ function hasLegacyInternalHookHandlers(raw) {
1601
+ const handlers = raw?.hooks?.internal?.handlers;
1602
+ return Array.isArray(handlers) && handlers.length > 0;
1603
+ }
1604
+ function collectInvalidHookTransformsDirWarnings(cfg, configPath) {
1605
+ const transformsDir = cfg.hooks?.transformsDir?.trim();
1606
+ if (!transformsDir) return [];
1607
+ const configDir = path.dirname(configPath);
1608
+ const transformsRoot = path.join(configDir, "hooks", "transforms");
1609
+ const resolved = path.isAbsolute(transformsDir) ? path.resolve(transformsDir) : path.resolve(transformsRoot, transformsDir);
1610
+ const relative = path.relative(transformsRoot, resolved);
1611
+ if (!(relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))) return [];
1612
+ return [`- hooks.transformsDir: ${transformsDir} is outside ${transformsRoot}. Hook transform modules must live under ${transformsRoot}; move custom transforms there or remove hooks.transformsDir.`];
1613
+ }
1614
+ function collectConfiguredChannelIds(cfg) {
1615
+ const channels = cfg.channels && typeof cfg.channels === "object" && !Array.isArray(cfg.channels) ? cfg.channels : null;
1616
+ if (!channels) return [];
1617
+ return Object.keys(channels).filter((channelId) => channelId !== "defaults");
1618
+ }
1619
+ function emitDoctorChangesPanel(changeLines, shouldRepair, options = {}) {
1620
+ if (changeLines.length === 0) return;
1621
+ const body = changeLines.join("\n");
1622
+ note(options.sanitize ? sanitizeDoctorNote(body) : body, shouldRepair ? "Doctor changes" : "Doctor changes preview");
1623
+ }
1624
+ async function loadAndMaybeMigrateDoctorConfig(params) {
1625
+ const shouldRepair = params.options.repair === true || params.options.yes === true;
1626
+ const preflight = await runDoctorConfigPreflight({ repairPrefixedConfig: shouldRepair });
1627
+ let snapshot = preflight.snapshot;
1628
+ const baseCfg = preflight.baseConfig;
1629
+ let cfg = baseCfg;
1630
+ let candidate = structuredClone(baseCfg);
1631
+ let pendingChanges = false;
1632
+ let fixHints = [];
1633
+ const doctorFixCommand = formatCliCommand("fengming doctor --fix");
1634
+ const sourceMeta = snapshot.sourceConfig?.meta;
1635
+ const sourceLastTouchedVersion = typeof sourceMeta?.lastTouchedVersion === "string" ? sourceMeta.lastTouchedVersion : void 0;
1636
+ const legacyStep = applyLegacyCompatibilityStep({
1637
+ snapshot,
1638
+ state: {
1639
+ cfg,
1640
+ candidate,
1641
+ pendingChanges,
1642
+ fixHints
1643
+ },
1644
+ shouldRepair,
1645
+ doctorFixCommand
1646
+ });
1647
+ ({cfg, candidate, pendingChanges, fixHints} = legacyStep.state);
1648
+ const legacyMigrationPartiallyValid = legacyStep.partiallyValid === true;
1649
+ const pluginLegacyIssues = await (async () => {
1650
+ if (snapshot.parsed === snapshot.sourceConfig) return [];
1651
+ const { findDoctorLegacyConfigIssues } = await import("./legacy-config-issues-3nswIiwv.js");
1652
+ return findDoctorLegacyConfigIssues(snapshot.parsed, snapshot.parsed);
1653
+ })();
1654
+ const seenLegacyIssues = new Set(snapshot.legacyIssues.map((issue) => `${issue.path}:${issue.message}`));
1655
+ const pluginIssueLines = pluginLegacyIssues.filter((issue) => {
1656
+ const key = `${issue.path}:${issue.message}`;
1657
+ if (seenLegacyIssues.has(key)) return false;
1658
+ seenLegacyIssues.add(key);
1659
+ return true;
1660
+ }).map((issue) => `- ${issue.path}: ${issue.message}`);
1661
+ const legacyIssueLines = [...legacyStep.issueLines, ...pluginIssueLines];
1662
+ if (pluginIssueLines.length > 0 && !shouldRepair && !fixHints.includes(`Run "${doctorFixCommand}" to migrate legacy config keys.`)) fixHints = [...fixHints, `Run "${doctorFixCommand}" to migrate legacy config keys.`];
1663
+ if (legacyIssueLines.length > 0) note(legacyIssueLines.join("\n"), "Legacy config keys detected");
1664
+ emitDoctorChangesPanel(legacyStep.changeLines, shouldRepair);
1665
+ if (hasLegacyInternalHookHandlers(snapshot.parsed)) note([
1666
+ "- hooks.internal.handlers: legacy inline hook modules are no longer part of the public config surface.",
1667
+ "- Migrate each entry to a managed or workspace hook directory with HOOK.md + handler.js, then enable it through hooks.internal.entries.<hookKey> as needed.",
1668
+ "- fengming doctor --fix does not rewrite this shape automatically."
1669
+ ].join("\n"), "Legacy config keys detected");
1670
+ const hookTransformsDirWarnings = collectInvalidHookTransformsDirWarnings(cfg, snapshot.path);
1671
+ if (hookTransformsDirWarnings.length > 0) note(sanitizeDoctorNote(hookTransformsDirWarnings.join("\n")), "Doctor warnings");
1672
+ const normalized = normalizeCompatibilityConfigValues(candidate);
1673
+ if (normalized.changes.length > 0) {
1674
+ emitDoctorChangesPanel(normalized.changes, shouldRepair);
1675
+ ({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
1676
+ state: {
1677
+ cfg,
1678
+ candidate,
1679
+ pendingChanges,
1680
+ fixHints
1681
+ },
1682
+ mutation: normalized,
1683
+ shouldRepair,
1684
+ fixHint: `Run "${doctorFixCommand}" to apply these changes.`
1685
+ }));
1686
+ }
1687
+ const { applyPluginAutoEnable } = await import("./plugin-auto-enable-CQK9E0Um.js");
1688
+ const autoEnable = applyPluginAutoEnable({
1689
+ config: candidate,
1690
+ env: process.env
1691
+ });
1692
+ if (autoEnable.changes.length > 0) {
1693
+ emitDoctorChangesPanel(autoEnable.changes, shouldRepair);
1694
+ ({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
1695
+ state: {
1696
+ cfg,
1697
+ candidate,
1698
+ pendingChanges,
1699
+ fixHints
1700
+ },
1701
+ mutation: autoEnable,
1702
+ shouldRepair,
1703
+ fixHint: `Run "${doctorFixCommand}" to apply these changes.`
1704
+ }));
1705
+ }
1706
+ const { collectPluginToolAllowlistWarnings } = await import("./plugin-tool-allowlist-warnings-DdLHeiqx.js");
1707
+ const pluginToolAllowlistWarnings = collectPluginToolAllowlistWarnings({
1708
+ cfg: candidate,
1709
+ env: process.env
1710
+ });
1711
+ if (pluginToolAllowlistWarnings.length > 0) note(sanitizeDoctorNote(pluginToolAllowlistWarnings.join("\n")), "Doctor warnings");
1712
+ const hasConfiguredChannels = collectConfiguredChannelIds(candidate).length > 0;
1713
+ let collectMutableAllowlistWarnings;
1714
+ if (hasConfiguredChannels) {
1715
+ const channelDoctor = await import("./channel-doctor-CJkpsym9.js");
1716
+ collectMutableAllowlistWarnings = channelDoctor.collectChannelDoctorMutableAllowlistWarnings;
1717
+ const channelDoctorSequence = await channelDoctor.runChannelDoctorConfigSequences({
1718
+ cfg: candidate,
1719
+ env: process.env,
1720
+ shouldRepair
1721
+ });
1722
+ emitDoctorNotes({
1723
+ note,
1724
+ changeNotes: channelDoctorSequence.changeNotes,
1725
+ warningNotes: channelDoctorSequence.warningNotes
1726
+ });
1727
+ for (const staleCleanup of await channelDoctor.collectChannelDoctorStaleConfigMutations(candidate, { env: process.env })) {
1728
+ if (staleCleanup.changes.length === 0) continue;
1729
+ emitDoctorChangesPanel(staleCleanup.changes, shouldRepair, { sanitize: true });
1730
+ ({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
1731
+ state: {
1732
+ cfg,
1733
+ candidate,
1734
+ pendingChanges,
1735
+ fixHints
1736
+ },
1737
+ mutation: staleCleanup,
1738
+ shouldRepair,
1739
+ fixHint: `Run "${doctorFixCommand}" to remove stale channel plugin references.`
1740
+ }));
1741
+ }
1742
+ }
1743
+ const missingDefaultAccountBindingWarnings = collectMissingDefaultAccountBindingWarnings(candidate);
1744
+ if (missingDefaultAccountBindingWarnings.length > 0) note(missingDefaultAccountBindingWarnings.join("\n"), "Doctor warnings");
1745
+ const missingExplicitDefaultWarnings = collectMissingExplicitDefaultAccountWarnings(candidate);
1746
+ if (missingExplicitDefaultWarnings.length > 0) note(missingExplicitDefaultWarnings.join("\n"), "Doctor warnings");
1747
+ if (shouldRepair) {
1748
+ const { runDoctorRepairSequence } = await import("./repair-sequencing-0-qGNSUO.js");
1749
+ const repairSequence = await runDoctorRepairSequence({
1750
+ state: {
1751
+ cfg,
1752
+ candidate,
1753
+ pendingChanges,
1754
+ fixHints
1755
+ },
1756
+ doctorFixCommand,
1757
+ env: process.env
1758
+ });
1759
+ ({cfg, candidate, pendingChanges, fixHints} = repairSequence.state);
1760
+ emitDoctorNotes({
1761
+ note,
1762
+ changeNotes: repairSequence.changeNotes,
1763
+ warningNotes: repairSequence.warningNotes
1764
+ });
1765
+ } else {
1766
+ const { collectDoctorPreviewNotes } = await import("./preview-warnings-CGzc8ccG.js");
1767
+ const previewNotes = await collectDoctorPreviewNotes({
1768
+ cfg: candidate,
1769
+ doctorFixCommand,
1770
+ env: process.env
1771
+ });
1772
+ emitDoctorNotes({
1773
+ note,
1774
+ infoNotes: previewNotes.infoNotes,
1775
+ warningNotes: previewNotes.warningNotes
1776
+ });
1777
+ }
1778
+ const mutableAllowlistWarnings = collectMutableAllowlistWarnings ? await collectMutableAllowlistWarnings({
1779
+ cfg: candidate,
1780
+ env: process.env
1781
+ }) : [];
1782
+ if (mutableAllowlistWarnings.length > 0) note(sanitizeDoctorNote(mutableAllowlistWarnings.join("\n")), "Doctor warnings");
1783
+ const unknownStep = applyUnknownConfigKeyStep({
1784
+ state: {
1785
+ cfg,
1786
+ candidate,
1787
+ pendingChanges,
1788
+ fixHints
1789
+ },
1790
+ shouldRepair,
1791
+ doctorFixCommand
1792
+ });
1793
+ ({cfg, candidate, pendingChanges, fixHints} = unknownStep.state);
1794
+ if (unknownStep.removed.length > 0 || unknownStep.repairs.length > 0) note([...unknownStep.removed.map((path) => `- ${path}`), ...unknownStep.repairs.map((change) => `- ${change}`)].join("\n"), shouldRepair ? "Doctor changes" : "Unknown config keys");
1795
+ if (unknownStep.warnings.length > 0) note(unknownStep.warnings.join("\n"), "Doctor warnings");
1796
+ const finalized = await finalizeDoctorConfigFlow({
1797
+ cfg,
1798
+ candidate,
1799
+ pendingChanges,
1800
+ shouldRepair,
1801
+ fixHints,
1802
+ confirm: params.confirm,
1803
+ note
1804
+ });
1805
+ cfg = finalized.cfg;
1806
+ noteOpencodeProviderOverrides(cfg);
1807
+ noteImplicitFallbackClobberWarnings(cfg);
1808
+ return {
1809
+ cfg,
1810
+ path: snapshot.path ?? CONFIG_PATH,
1811
+ shouldWriteConfig: finalized.shouldWriteConfig,
1812
+ sourceConfigValid: snapshot.valid,
1813
+ preservedLegacyRootKeys: ["defaultModel"],
1814
+ ...sourceLastTouchedVersion ? { sourceLastTouchedVersion } : {},
1815
+ ...legacyMigrationPartiallyValid ? { skipPluginValidationOnWrite: true } : {}
1816
+ };
1817
+ }
1818
+ //#endregion
1819
+ export { loadAndMaybeMigrateDoctorConfig };