@gaodefa/daocore 2026.5.29 → 2026.5.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/abort-DI3P6TIb.js +277 -0
- package/dist/abort.runtime-B6Z7lDEa.js +2 -0
- package/dist/abort.runtime.js +1 -1
- package/dist/account-inspect-BFz7X0TX.js +173 -0
- package/dist/accounts-BoYYrY7x.js +107 -0
- package/dist/accounts-Busq29zW.js +107 -0
- package/dist/accounts-CuvH2tuN.js +119 -0
- package/dist/accounts-DkIcqvf7.js +2 -0
- package/dist/acp-runtime-BA8lzXzf.js +26 -0
- package/dist/acp-spawn-DPz2aX3A.js +2 -0
- package/dist/acp-spawn-DvVCsWYV.js +1275 -0
- package/dist/acp-stateful-target-driver-DcC76aZW.js +89 -0
- package/dist/action-kill-D-dVisIX.js +33 -0
- package/dist/action-runtime-BEiqwxDD.js +469 -0
- package/dist/action-runtime-api-1LzcGjcX.js +2 -0
- package/dist/action-send-c3CnDuPg.js +39 -0
- package/dist/action-spawn-Dj4kwpWs.js +47 -0
- package/dist/actions-qLccmQBc.js +161 -0
- package/dist/actions.runtime-B5vYAgNi.js +5 -0
- package/dist/agent-command-D6Ds198G.js +1367 -0
- package/dist/agent-components.runtime-xquK0B3L.js +10 -0
- package/dist/agent-components.runtime.js +1 -1
- package/dist/agent-harness-runtime-Dq1fCBOM.js +180 -0
- package/dist/agent-harness-task-runtime-DvSEqFkD.js +140 -0
- package/dist/agent-lm5ZYOFy.js +3 -0
- package/dist/agent-runner-execution-Dbh2pDhQ.js +1713 -0
- package/dist/agent-runner-utils-Di3r2T1T.js +266 -0
- package/dist/agent-runner.runtime-BW90EcGW.js +3455 -0
- package/dist/agent-runner.runtime.js +1 -1
- package/dist/agent-runtime-BgIT5Ytc.js +229 -0
- package/dist/agent-via-gateway-DMMS8-hK.js +463 -0
- package/dist/agent-ylolD8-V.js +2 -0
- package/dist/api-BB4vXLtW.js +2 -0
- package/dist/api-CUhM3KNB.js +134 -0
- package/dist/api-CewRHSbT.js +6 -0
- package/dist/api-CfKjNJlW.js +2 -0
- package/dist/api-Rsnqui1u.js +3 -0
- package/dist/api-k7AvxwHr.js +639 -0
- package/dist/apply-DQ4TQNMA.js +54 -0
- package/dist/apply-S_75Py4Y.js +41 -0
- package/dist/approval-handler.runtime-Cthxrstu.js +130 -0
- package/dist/assistant-Cp9pGaBw.js +291 -0
- package/dist/attachment-normalize-5R0bLLOj.js +225 -0
- package/dist/attempt-execution-DuyyZYsU.js +558 -0
- package/dist/attempt-execution.runtime-DF2GPgNh.js +3 -0
- package/dist/attempt-execution.runtime.js +1 -1
- package/dist/attempt-execution.shared-CwdukA3t.js +38 -0
- package/dist/attempt.prompt-helpers-CUqKtIa5.js +475 -0
- package/dist/attempt.tool-run-context-BbN4_BYO.js +2094 -0
- package/dist/binding-routing-C6Ex2Blu.js +113 -0
- package/dist/binding-targets-BqREncSL.js +121 -0
- package/dist/bot-DGMEkaIJ.js +7894 -0
- package/dist/bot-deps-BltYjeMX.js +2 -0
- package/dist/bot-deps-XvGCor9f.js +747 -0
- package/dist/bot-message-context.runtime-kK-xvLV7.js +7 -0
- package/dist/bot-message-context.runtime.js +1 -1
- package/dist/bot-message-context.session.runtime-DpOIJUae.js +12 -0
- package/dist/bot-message-context.session.runtime.js +1 -1
- package/dist/bot-native-commands.delivery.runtime-D49p5Lc1.js +4 -0
- package/dist/bot-native-commands.delivery.runtime.js +1 -1
- package/dist/bot-native-commands.runtime-8XBdSpkQ.js +13 -0
- package/dist/bot-native-commands.runtime.js +1 -1
- package/dist/bridge-server-y_XGduPx.js +113 -0
- package/dist/browser-cli-B2jmmTT3.js +230 -0
- package/dist/browser-cli-actions-input-JQt5ZQcn.js +473 -0
- package/dist/browser-cli-actions-observe-CrfKh6AX.js +81 -0
- package/dist/browser-cli-debug-DQACWlvC.js +137 -0
- package/dist/browser-cli-inspect-DDnxx0Xw.js +104 -0
- package/dist/browser-cli-lEuOnZzs.js +2 -0
- package/dist/browser-cli-manage-DogmwtYt.js +443 -0
- package/dist/browser-cli-resize-BHuV71VZ.js +26 -0
- package/dist/browser-cli-shared-CidShgoF.js +50 -0
- package/dist/browser-cli-state-i8cCGbiQ.js +337 -0
- package/dist/browser-control-auth-CKfXdXWj.js +2 -0
- package/dist/browser-profiles-ATBTvUGh.js +2 -0
- package/dist/browser-runtime-KmCT6FuL.js +384 -0
- package/dist/build-DOOT6f62.js +257 -0
- package/dist/build-info.json +3 -3
- package/dist/bundled/boot-md/handler.js +2 -2
- package/dist/bundled/session-memory/handler.js +1 -1
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/capability-cli-DwvrwB-g.js +1782 -0
- package/dist/channel-B-wgK1bK.js +481 -0
- package/dist/channel-B1e_k1P0.js +867 -0
- package/dist/channel-BRDfa5tc.js +1777 -0
- package/dist/channel-BVEO1O4p.js +376 -0
- package/dist/channel-BYlO5l1d.js +508 -0
- package/dist/channel-Bl0sPoNx.js +653 -0
- package/dist/channel-C84xtDBy.js +1134 -0
- package/dist/channel-CLgKq4Ds.js +1556 -0
- package/dist/channel-CZT0qxLh.js +1249 -0
- package/dist/channel-CffBHWkb.js +955 -0
- package/dist/channel-D34ZJvVB.js +2126 -0
- package/dist/channel-DcdXLo_W.js +238 -0
- package/dist/channel-DnK5TrXV.js +362 -0
- package/dist/channel-Dzj4RHY2.js +740 -0
- package/dist/channel-OhZzLZCj.js +562 -0
- package/dist/channel-actions.runtime-Cdvhqc9s.js +265 -0
- package/dist/channel-actions.runtime.js +1 -1
- package/dist/channel-core-Dz9I_R4j.js +5 -0
- package/dist/channel-inbound-COGoV_aS.js +80 -0
- package/dist/channel-mP6HCIMr.js +1496 -0
- package/dist/channel-plugin-runtime-C0R46KeG.js +998 -0
- package/dist/channel-quGdgWel.js +808 -0
- package/dist/channel-runtime-FvPQoIF9.js +408 -0
- package/dist/channel.runtime-2vUz3gij.js +109 -0
- package/dist/channel.runtime-BZLDSNuQ.js +254 -0
- package/dist/channel.runtime-Bo5jO0Hj.js +4 -0
- package/dist/channel.runtime-CDgvrjM2.js +652 -0
- package/dist/channel.runtime-COf8SDFn.js +88 -0
- package/dist/channel.runtime-C_C1f8lu.js +733 -0
- package/dist/channel.runtime-CqPbsg8t.js +2528 -0
- package/dist/channel.runtime-DtV85Khx.js +1008 -0
- package/dist/channel.runtime-Spt1ukGW.js +21009 -0
- package/dist/channel.setup-Bc0LUQS1.js +1098 -0
- package/dist/channel.setup-ChTkj2hq.js +343 -0
- package/dist/channel.setup-CpMD9F8i.js +10 -0
- package/dist/chat-mUsjD5YN.js +2666 -0
- package/dist/chrome-u314zcbM.js +1503 -0
- package/dist/cli/run-main.js +5 -5
- package/dist/cli-CJMoqXrc.js +1341 -0
- package/dist/cli-compaction-qGYB7suI.js +347 -0
- package/dist/cli-metadata-BBJFpNU9.js +22 -0
- package/dist/cli-runner-C0kcts0I.js +540 -0
- package/dist/cli-runner-CTm8K6s8.js +2 -0
- package/dist/cli-runner.runtime-C8deL5FL.js +3 -0
- package/dist/cli-runner.runtime-DDAg1D0L.js +4 -0
- package/dist/cli-runner.runtime.js +1 -1
- package/dist/cli-startup-metadata.json +8 -8
- package/dist/client-CPxpgs4m.js +650 -0
- package/dist/client-adapter-CLlqOqfu.js +897 -0
- package/dist/client-factory-R7Rr2jwn.js +9 -0
- package/dist/command-auth-CkQP1buP.js +135 -0
- package/dist/command-handlers-CJEjFyMk.js +1609 -0
- package/dist/command-registry-BDgyOqDw.js +4 -0
- package/dist/command-registry-BVi5Jn1S.js +9 -0
- package/dist/command-registry-core-JCfsVRtz.js +110 -0
- package/dist/command-status.runtime-CM1JLzi6.js +90 -0
- package/dist/command-status.runtime.js +1 -1
- package/dist/commands-acp-C1-I78U6.js +74 -0
- package/dist/commands-compact.runtime-DOsNavwp.js +10 -0
- package/dist/commands-compact.runtime.js +1 -1
- package/dist/commands-handlers.runtime-BD1n2WGw.js +6154 -0
- package/dist/commands-handlers.runtime.js +1 -1
- package/dist/commands-status-DU_UTQz1.js +16 -0
- package/dist/commands-status-DejfTakp.js +3 -0
- package/dist/commands-status.runtime-DejfTakp.js +3 -0
- package/dist/commands-status.runtime.js +1 -1
- package/dist/commands-subagents-control.runtime-D7vo_2Y_.js +3 -0
- package/dist/commands-subagents-control.runtime-DGybTjJ6.js +2 -0
- package/dist/commands-subagents-control.runtime.js +1 -1
- package/dist/commands-system-prompt-BEBXAMea.js +2 -0
- package/dist/commands-system-prompt-gj3oQpQO.js +162 -0
- package/dist/commands.runtime-CgXX70IN.js +176 -0
- package/dist/commands.runtime.js +1 -1
- package/dist/commitments/runtime.js +1 -1
- package/dist/compact-C41XxMDt.js +480 -0
- package/dist/compact-DUVAF9EC.js +1141 -0
- package/dist/compact.runtime-COMRg6s3.js +12 -0
- package/dist/compact.runtime.js +1 -1
- package/dist/completion-cli-CmEYoB9a.js +315 -0
- package/dist/computer-use-BwJHu1QF.js +367 -0
- package/dist/config-ATBTvUGh.js +2 -0
- package/dist/config-DlNgjF8W.js +373 -0
- package/dist/config-mutations-tl_OqI6d.js +159 -0
- package/dist/context-engine-host-compat-BNPAIK9F.js +288 -0
- package/dist/context-engine-host-compat-C69CK7zS.js +2 -0
- package/dist/context-engine-lifecycle-iQ8f5a_-.js +1274 -0
- package/dist/control-auth-vVxyGKxY.js +114 -0
- package/dist/control-service-73nj79EW.js +145 -0
- package/dist/control-ui/assets/agents-DdWIz8Vk.js +1008 -0
- package/dist/control-ui/assets/channel-config-extras-C7ELhuDi.js +2 -0
- package/dist/control-ui/assets/channels-Bsoj-9BS.js +367 -0
- package/dist/control-ui/assets/cron-BRTEw1tT.js +1013 -0
- package/dist/control-ui/assets/debug-EKl_F8_L.js +97 -0
- package/dist/control-ui/assets/index-DSbSO7ys.js +7370 -0
- package/dist/control-ui/assets/instances-B1AoYwI5.js +57 -0
- package/dist/control-ui/assets/logs-BChOznzh.js +74 -0
- package/dist/control-ui/assets/nodes-5yebKh9k.js +436 -0
- package/dist/control-ui/assets/sessions-BlDYNThc.js +399 -0
- package/dist/control-ui/assets/skills-shared-CNFnf7KU.js +11 -0
- package/dist/control-ui/assets/skills-uxTDRmLx.js +314 -0
- package/dist/control-ui/index.html +1 -1
- package/dist/control-ui/sw.js +1 -1
- package/dist/conversation-binding-runtime-CmoTKcY1.js +4 -0
- package/dist/conversation-runtime-BxOHxuin.js +31 -0
- package/dist/core-D0Y2H55f.js +282 -0
- package/dist/core-api-BKlJUtDt.js +5 -0
- package/dist/core-api-_fiftUHn.js +2 -0
- package/dist/crestodian/crestodian.js +1 -1
- package/dist/crestodian/rescue-message.js +1 -1
- package/dist/crestodian-BJifoQiR.js +55 -0
- package/dist/daocore-tools-BMdF8RwK.js +11727 -0
- package/dist/delivery-e2ci_bcX.js +1002 -0
- package/dist/dialogue-BXayGhnz.js +37 -0
- package/dist/dir-fetch-tool-Cara5mZh.js +565 -0
- package/dist/dir-list-tool-CQ8Bo5Ez.js +100 -0
- package/dist/direct-dm-CPk6Qm9D.js +64 -0
- package/dist/directive-handling.fast-lane-BQ9aXqk8.js +68 -0
- package/dist/directive-handling.impl--a5AGurq.js +818 -0
- package/dist/directive-handling.impl-C4JqMwle.js +2 -0
- package/dist/directive-handling.model-selection-pyTYMIXn.js +122 -0
- package/dist/directive-handling.persist.runtime-B7vWT1r9.js +263 -0
- package/dist/directive-handling.persist.runtime.js +1 -1
- package/dist/dispatch-3Ru_eGq1.js +1640 -0
- package/dist/dispatch-acp-transcript.runtime-CYMP-5oE.js +40 -0
- package/dist/dispatch-acp-transcript.runtime.js +1 -1
- package/dist/dispatch-acp.runtime-BVCiklXk.js +18 -0
- package/dist/dispatch-acp.runtime.js +1 -1
- package/dist/doctor-B8mR3Sgr.js +2 -0
- package/dist/doctor-BJ6DuerV.js +6 -0
- package/dist/doctor-config-flow-BdOGs_zn.js +1741 -0
- package/dist/doctor-core-checks-CDf0stz-.js +2 -0
- package/dist/doctor-core-checks-Cpdnu2XI.js +573 -0
- package/dist/doctor-health-0qv_acBu.js +65 -0
- package/dist/doctor-health-contributions-Db1FQgFw.js +696 -0
- package/dist/doctor-lint-C1g4Llgl.js +94 -0
- package/dist/doctor-state-integrity-C8iXFLJ7.js +1231 -0
- package/dist/doctor-update-CsPu6p3d.js +58 -0
- package/dist/dynamic-tools-YQ0z0YKH.js +486 -0
- package/dist/embedded-backend-S0cahIZw.js +579 -0
- package/dist/embedded-gateway-stub.runtime-Cjw12ALm.js +12 -0
- package/dist/embedded-gateway-stub.runtime.js +1 -1
- package/dist/exec-approvals-ArHHjoE-.js +149 -0
- package/dist/extensionAPI.js +1 -1
- package/dist/extensions/active-memory/index.js +1 -1
- package/dist/extensions/admin-http-rpc/index.js +1 -1
- package/dist/extensions/browser/browser-bridge.js +1 -1
- package/dist/extensions/browser/browser-config.js +4 -4
- package/dist/extensions/browser/browser-control-auth.js +2 -2
- package/dist/extensions/browser/browser-doctor.js +2 -2
- package/dist/extensions/browser/browser-maintenance.js +1 -1
- package/dist/extensions/browser/browser-profiles.js +2 -2
- package/dist/extensions/browser/browser-runtime-api.js +11 -11
- package/dist/extensions/browser/cli-metadata.js +1 -1
- package/dist/extensions/browser/index.js +1 -1
- package/dist/extensions/browser/plugin-registration.js +1 -1
- package/dist/extensions/browser/register.runtime.js +4 -4
- package/dist/extensions/browser/runtime-api.js +13 -13
- package/dist/extensions/canvas/index.js +1 -1
- package/dist/extensions/clickclack/api.js +2 -2
- package/dist/extensions/clickclack/channel-plugin-api.js +1 -1
- package/dist/extensions/clickclack/runtime-api.js +2 -2
- package/dist/extensions/device-pair/api.js +1 -1
- package/dist/extensions/device-pair/pair-command-approve.js +1 -1
- package/dist/extensions/file-transfer/index.js +4 -4
- package/dist/extensions/imessage/api.js +2 -2
- package/dist/extensions/imessage/channel-plugin-api.js +1 -1
- package/dist/extensions/imessage/message-tool-api.d.ts +1 -1
- package/dist/extensions/imessage/runtime-api.js +3 -3
- package/dist/extensions/irc/api.js +2 -2
- package/dist/extensions/irc/channel-plugin-api.js +1 -1
- package/dist/extensions/llm-task/index.js +1 -1
- package/dist/extensions/mattermost/api.js +1 -1
- package/dist/extensions/mattermost/channel-plugin-api.js +1 -1
- package/dist/extensions/mattermost/channel-plugin-runtime.js +1 -1
- package/dist/extensions/mattermost/policy-api.js +1 -1
- package/dist/extensions/mattermost/runtime-api.js +2 -2
- package/dist/extensions/mattermost/slash-route-api.js +1 -1
- package/dist/extensions/memory-core/cli-metadata.js +1 -1
- package/dist/extensions/migrate-claude/apply.js +1 -1
- package/dist/extensions/migrate-claude/index.js +1 -1
- package/dist/extensions/migrate-claude/plan.js +1 -1
- package/dist/extensions/migrate-claude/provider.js +1 -1
- package/dist/extensions/migrate-claude/targets.js +1 -1
- package/dist/extensions/migrate-hermes/apply.js +1 -1
- package/dist/extensions/migrate-hermes/index.js +1 -1
- package/dist/extensions/migrate-hermes/model.js +1 -1
- package/dist/extensions/migrate-hermes/plan.js +1 -1
- package/dist/extensions/migrate-hermes/provider.js +1 -1
- package/dist/extensions/migrate-hermes/secrets.js +1 -1
- package/dist/extensions/migrate-hermes/targets.js +1 -1
- package/dist/extensions/policy/api.js +1 -1
- package/dist/extensions/policy/index.js +2 -2
- package/dist/extensions/signal/api.js +6 -6
- package/dist/extensions/signal/channel-plugin-api.js +1 -1
- package/dist/extensions/signal/reaction-runtime-api.js +1 -1
- package/dist/extensions/signal/runtime-api.js +7 -7
- package/dist/extensions/skill-workshop/api.js +1 -1
- package/dist/extensions/skill-workshop/index.js +2 -2
- package/dist/extensions/telegram/account-inspect-api.js +1 -1
- package/dist/extensions/telegram/api.js +11 -11
- package/dist/extensions/telegram/channel-plugin-api.js +2 -2
- package/dist/extensions/telegram/contract-api.js +3 -3
- package/dist/extensions/telegram/runtime-api.js +7 -7
- package/dist/extensions/telegram/security-audit-contract-api.js +1 -1
- package/dist/extensions/telegram/setup-plugin-api.js +1 -1
- package/dist/extensions/telegram/test-api.js +2 -2
- package/dist/extensions/webhooks/api.js +1 -1
- package/dist/extensions/webhooks/index.js +1 -1
- package/dist/extensions/xai/index.js +4 -4
- package/dist/extensions/xai/realtime-transcription-provider.js +1 -1
- package/dist/extensions/xai/speech-provider.js +1 -1
- package/dist/extensions/xai/test-api.js +1 -1
- package/dist/extensions/xai/tts.js +1 -1
- package/dist/extensions/xai/web-search.js +1 -1
- package/dist/extensions/xai/xai-oauth.js +1 -1
- package/dist/file-fetch-tool-DQpAtjX4.js +124 -0
- package/dist/file-write-tool-CkB0oYwe.js +127 -0
- package/dist/format-DUJUpMFQ.js +1145 -0
- package/dist/gateway-cli-CQo_E4Ka.js +435 -0
- package/dist/gateway-method-runtime-1QPgVJH7.js +21 -0
- package/dist/get-reply-DfUcsC-O.js +4689 -0
- package/dist/get-reply-from-config.runtime-C95MG73O.js +2 -0
- package/dist/get-reply-from-config.runtime.js +1 -1
- package/dist/graph-users-DPJe0fPs.js +1419 -0
- package/dist/group-access-DefaNJ6L.js +112 -0
- package/dist/handle-action.guild-admin-C1sy1kGJ.js +288 -0
- package/dist/harness-BgPRdmNK.js +61 -0
- package/dist/health-DFR9A1YV.js +4 -0
- package/dist/heartbeat-runner-BiYVPs25.js +5 -0
- package/dist/heartbeat-runner.runtime-Bmaq8WUA.js +4 -0
- package/dist/heartbeat-runner.runtime.js +1 -1
- package/dist/hooks-CNJDuJUm.js +534 -0
- package/dist/inbound-direct-dm-runtime-DFt58p71.js +2 -0
- package/dist/inbound-reply-dispatch-kgSDM8ax.js +148 -0
- package/dist/index.js +1 -1
- package/dist/init-B0zO_U4r.js +59 -0
- package/dist/inline-buttons-B6zgQW3J.js +40 -0
- package/dist/internal-events-C3Q5t6hg.js +90 -0
- package/dist/isolated-agent-CaSU5GCJ.js +2 -0
- package/dist/isolated-agent-CnsD2TmP.js +1118 -0
- package/dist/lifecycle-i3WZDaIn.js +571 -0
- package/dist/list.probe-g0rUiVXW.js +449 -0
- package/dist/list.status-command-DG3PrmeO.js +789 -0
- package/dist/llm-slug-generator-CHlf69FU.js +78 -0
- package/dist/llm-slug-generator.js +1 -1
- package/dist/local-dispatch.runtime-CDeHUp_A.js +9 -0
- package/dist/local-dispatch.runtime.js +1 -1
- package/dist/manager.runtime-BlLMPUTq.js +2714 -0
- package/dist/manager.runtime.js +1 -1
- package/dist/markdown-to-line-r_mBHMdy.js +811 -0
- package/dist/mcp-http-C5UPIJGR.js +555 -0
- package/dist/mcp-http-CTy9gpfA.js +2 -0
- package/dist/media-understanding-provider-BT6TOuVa.js +339 -0
- package/dist/message-actions-BdcjjwFt.js +145 -0
- package/dist/message-handler-B29Tj2p2.js +1715 -0
- package/dist/message-handler-BhHb1FHI.js +384 -0
- package/dist/message-handler.preflight-ouZ_-3o8.js +1125 -0
- package/dist/message-handler.process-CrYiBx_F.js +1484 -0
- package/dist/model-CLbtocQX.js +74 -0
- package/dist/model-selection-BG_vU9Kl.js +272 -0
- package/dist/models-4KERn3ya.js +104 -0
- package/dist/models-BCa-ipxi.js +2 -0
- package/dist/models-cli-DtpGXEsf.js +256 -0
- package/dist/monitor-B-egsvmI.js +1657 -0
- package/dist/monitor-BJX9Yv7k.js +2 -0
- package/dist/monitor-BPrIy3pV.js +715 -0
- package/dist/monitor-BWknZZ7N.js +4377 -0
- package/dist/monitor-C3y_PtI1.js +60 -0
- package/dist/monitor-DCzfdqE4.js +1370 -0
- package/dist/monitor-P24epSwE.js +2788 -0
- package/dist/monitor-auth-CEG_xldE.js +179 -0
- package/dist/monitor-jEePJbbS.js +834 -0
- package/dist/monitor-polling.runtime-BzlHK11u.js +883 -0
- package/dist/monitor-polling.runtime.js +1 -1
- package/dist/monitor-webhook.runtime-vFEhk_Zj.js +387 -0
- package/dist/monitor-webhook.runtime.js +1 -1
- package/dist/monitor.account-BUIfgWXg.js +5233 -0
- package/dist/monitor.runtime-Cp7W4fhb.js +2 -0
- package/dist/monitor.runtime.js +1 -1
- package/dist/monitor.webhook-DzrbeR4T.js +180 -0
- package/dist/node-cli-sessions-CLbI14UA.js +1228 -0
- package/dist/openai-http-BM9BIA_g.js +824 -0
- package/dist/openresponses-http-CNoW9kk8.js +1173 -0
- package/dist/operations-DT4bsxV6.js +805 -0
- package/dist/outbound-adapter-CZRUOgY0.js +543 -0
- package/dist/outbound-session-route-DneMsGNx.js +45 -0
- package/dist/outbound.runtime-CHuoKJJI.js +2 -0
- package/dist/outbound.runtime.js +1 -1
- package/dist/pi-embedded-1-rsueO_.js +3796 -0
- package/dist/pi-embedded-BRfDncVO.js +4 -0
- package/dist/pi-embedded.runtime-DEYoa6bW.js +4 -0
- package/dist/pi-embedded.runtime.js +1 -1
- package/dist/pi-tools-C0P3NgP5.js +2413 -0
- package/dist/plan-BQUkjBMY.js +81 -0
- package/dist/plan-CRO9_2_k.js +112 -0
- package/dist/plugin-BJCmWhnh.js +12396 -0
- package/dist/plugin-app-cache-key-CXAg0F7A.js +46 -0
- package/dist/plugin-enabled-D93Z9LSo.js +233 -0
- package/dist/plugin-registration-BBrTcZnf.js +88 -0
- package/dist/plugin-sdk/.boundary-entry-shims.stamp +1 -1
- package/dist/plugin-sdk/acp-runtime-backend.js +1 -1
- package/dist/plugin-sdk/acp-runtime.js +2 -2
- package/dist/plugin-sdk/agent-harness-runtime.js +6 -6
- package/dist/plugin-sdk/agent-harness-task-runtime.js +1 -1
- package/dist/plugin-sdk/agent-harness.js +7 -7
- package/dist/plugin-sdk/agent-runtime.js +2 -2
- package/dist/plugin-sdk/channel-core.js +2 -2
- package/dist/plugin-sdk/channel-inbound.js +2 -2
- package/dist/plugin-sdk/channel-test-helpers.js +1 -1
- package/dist/plugin-sdk/command-auth.js +1 -1
- package/dist/plugin-sdk/command-status-runtime.js +1 -1
- package/dist/plugin-sdk/compat.js +1 -1
- package/dist/plugin-sdk/conversation-binding-runtime.js +2 -2
- package/dist/plugin-sdk/conversation-runtime.js +3 -3
- package/dist/plugin-sdk/core.js +2 -2
- package/dist/plugin-sdk/direct-dm.js +1 -1
- package/dist/plugin-sdk/gateway-method-runtime.js +1 -1
- package/dist/plugin-sdk/health.js +2 -2
- package/dist/plugin-sdk/inbound-reply-dispatch.js +1 -1
- package/dist/plugin-sdk/index.js +1 -1
- package/dist/plugin-sdk/mattermost.js +1 -1
- package/dist/plugin-sdk/plugin-test-contracts.js +2 -2
- package/dist/plugin-sdk/provider-test-contracts.js +4 -4
- package/dist/plugin-sdk/reply-runtime.js +4 -4
- package/dist/plugin-sdk/testing.js +2 -2
- package/dist/plugin-sdk/zalouser.js +1 -1
- package/dist/plugin-service-DnZEPBEA.js +1229 -0
- package/dist/plugins/runtime/index.js +4 -4
- package/dist/policy-CMv5QMPG.js +138 -0
- package/dist/policy-CeoP4t9J.js +680 -0
- package/dist/prepare.runtime-DZ55JiTt.js +732 -0
- package/dist/prepare.runtime.js +1 -1
- package/dist/preview-warnings-O08PZRxu.js +392 -0
- package/dist/probe-C6w3bP8X.js +682 -0
- package/dist/probe-Cs1_X1NA.js +47 -0
- package/dist/probe-Cuee_jyM.js +2204 -0
- package/dist/probe-DZxCnDzn.js +2 -0
- package/dist/program-C2dT8VHB.js +131 -0
- package/dist/provider-C2_vSzYh.js +32 -0
- package/dist/provider-DSfTDQbj.js +152 -0
- package/dist/provider-U8hrm9h-.js +32 -0
- package/dist/provider-_v910H8y.js +8735 -0
- package/dist/provider-dispatcher-C3kmmIEC.js +22 -0
- package/dist/provider-dispatcher.runtime.js +1 -1
- package/dist/provider-session.runtime-Mg0fx5hH.js +9 -0
- package/dist/provider-session.runtime.js +1 -1
- package/dist/provider.runtime-pSTXuHrq.js +2 -0
- package/dist/provider.runtime.js +1 -1
- package/dist/public-surface-loader-09t4TTue.js +114 -0
- package/dist/pw-ai-DjNqHV3_.js +3029 -0
- package/dist/pw-role-snapshot-DoGefdv7.js +333 -0
- package/dist/reaction-level-C8Mqxizo.js +19 -0
- package/dist/reaction-runtime-api-DOP6xOsm.js +116 -0
- package/dist/realtime-transcription-provider-BTGEXXna.js +205 -0
- package/dist/register-CbZPpqI3.js +2178 -0
- package/dist/register.agent-DrBFuPKh.js +156 -0
- package/dist/register.crestodian-DwTbmaK8.js +24 -0
- package/dist/register.maintenance-BIeoYBub.js +83 -0
- package/dist/register.runtime-B5V9_Dwz.js +54 -0
- package/dist/register.subclis-CJE9ISZY.js +31 -0
- package/dist/register.subclis-YQsKas8N.js +3 -0
- package/dist/register.subclis-core-CjwdGeGU.js +273 -0
- package/dist/repair-sequencing-C0jrL5pw.js +640 -0
- package/dist/reply-delivery-B28mTIpb.js +196 -0
- package/dist/reply-runtime-BqQX7HHw.js +11 -0
- package/dist/reply.runtime-C95MG73O.js +2 -0
- package/dist/reply.runtime.js +1 -1
- package/dist/request-BqoMvXxH.js +54 -0
- package/dist/resolve-allowlist-hbKKd_kq.js +220 -0
- package/dist/result-fallback-classifier-BrORPoxj.js +79 -0
- package/dist/route-HHRgSzVy.js +469 -0
- package/dist/route-resolution-C7bafjVc.js +274 -0
- package/dist/routes-86XGeo7a.js +2 -0
- package/dist/routes-BhVGr9ie.js +3602 -0
- package/dist/run-Bb5QP5JV.js +1162 -0
- package/dist/run-attempt-CLi0wV7j.js +7704 -0
- package/dist/run-command-Be6GAxiW.js +2 -0
- package/dist/run-command-Ds4hr3iU.js +23 -0
- package/dist/run-embedded.runtime-wX9ORojX.js +4 -0
- package/dist/run-embedded.runtime.js +1 -1
- package/dist/run-execution-cli.runtime-BmNZVB2N.js +4 -0
- package/dist/run-execution-cli.runtime.js +1 -1
- package/dist/run-executor.runtime.js +1 -1
- package/dist/run-subagent-registry.runtime-Uq5sjftu.js +2 -0
- package/dist/run-subagent-registry.runtime.js +1 -1
- package/dist/runtime-BktLQ75j.js +1287 -0
- package/dist/runtime-C9XdR62_.js +438 -0
- package/dist/runtime-CTvWDPx9.js +6179 -0
- package/dist/runtime-api-BojB3MUw.js +21 -0
- package/dist/runtime-api-C92MlAwp.js +13 -0
- package/dist/runtime-api-CFNZE9Xt.js +13 -0
- package/dist/runtime-api-Cimpgm5_.js +3 -0
- package/dist/runtime-api-D8qG_lUm.js +17 -0
- package/dist/runtime-api-DMDMnQEG.js +4 -0
- package/dist/runtime-api-DupQdIlE.js +24 -0
- package/dist/runtime-api.actions-B8i3elqu.js +3 -0
- package/dist/runtime-api.monitor-BntFzf_M.js +6 -0
- package/dist/runtime-api.send-CPlmi1jc.js +4 -0
- package/dist/runtime-api.threads-D-H_r_Nl.js +2 -0
- package/dist/runtime-channel-BGhTxnXZ.js +150 -0
- package/dist/runtime-channel-CPFxNapZ.js +2 -0
- package/dist/runtime-embedded-pi.runtime-BjnMTurB.js +2 -0
- package/dist/runtime-embedded-pi.runtime.js +1 -1
- package/dist/sanitize-outbound-BMUv1NeS.js +127 -0
- package/dist/sdk-setup-tools-Do3DkQi_.js +8 -0
- package/dist/secrets-B8YVPHhk.js +113 -0
- package/dist/security-audit-7Gg_nL4o.js +122 -0
- package/dist/security-audit-Bk3CREj-.js +118 -0
- package/dist/security-audit.runtime-BmSJrdeq.js +2 -0
- package/dist/security-audit.runtime.js +1 -1
- package/dist/selection-BFGde9-_.js +3 -0
- package/dist/selection-DrLFlbgG.js +16157 -0
- package/dist/send-4dLa-BQo.js +1631 -0
- package/dist/send-CV6gCwYP.js +192 -0
- package/dist/send-aGiK3Efu.js +143 -0
- package/dist/send-dB3CehAN.js +2 -0
- package/dist/send.components-BcG9BlkC.js +2 -0
- package/dist/send.components-rLjDlfYU.js +500 -0
- package/dist/send.runtime-D20k2MSr.js +2 -0
- package/dist/send.runtime.js +1 -1
- package/dist/server-BTRx_U1s.js +73 -0
- package/dist/server-CY0ymhBg.js +24 -0
- package/dist/server-close.runtime.js +1 -1
- package/dist/server-context-BxGT8wbK.js +955 -0
- package/dist/server-context-DYlbhAaT.js +2 -0
- package/dist/server-cron-BB_15lcP.js +2 -0
- package/dist/server-cron-CfyJX_a4.js +2989 -0
- package/dist/server-methods-Ck2ab6TC.js +16494 -0
- package/dist/server-node-events-BdRizF-5.js +596 -0
- package/dist/server-plugin-bootstrap-CPUr8NFE.js +70 -0
- package/dist/server-plugins-__5AxjzH.js +432 -0
- package/dist/server-reload-handlers-BMl9Fx9b.js +714 -0
- package/dist/server-restart-sentinel-D11M_ZsH.js +747 -0
- package/dist/server-restart-sentinel-DGptQ27c.js +2 -0
- package/dist/server-runtime-services-BwtLs-8I.js +2 -0
- package/dist/server-runtime-services-aJydixRu.js +267 -0
- package/dist/server-startup-plugins-m_P3gY4m.js +113 -0
- package/dist/server-startup-post-attach-DuXQ1AXL.js +716 -0
- package/dist/server-ws-runtime-mXmxB1W8.js +349 -0
- package/dist/server.impl-fuV8aKSP.js +2586 -0
- package/dist/service-a8cTFka4.js +1446 -0
- package/dist/session-binding-BIycxo9u.js +2 -0
- package/dist/session-binding-xHwQr9vM.js +219 -0
- package/dist/session-kill-http-DiUZhcoN.js +121 -0
- package/dist/session-reset-service-DkepDoob.js +625 -0
- package/dist/session-route-Ba5u7ecb.js +93 -0
- package/dist/session-status.runtime-Cb1X69Rl.js +2 -0
- package/dist/session-status.runtime.js +1 -1
- package/dist/session-subagent-reactivation.runtime-rbqmto4G.js +2 -0
- package/dist/session-subagent-reactivation.runtime.js +1 -1
- package/dist/session-tab-registry-DSKOoJta.js +521 -0
- package/dist/sessions-history-http-CWP88I_C.js +430 -0
- package/dist/sessions.runtime-1q1OwLn3.js +2 -0
- package/dist/sessions.runtime.js +1 -1
- package/dist/setup-api-DtrOOYeP.js +29 -0
- package/dist/setup-core-DMrJS6LP.js +174 -0
- package/dist/setup-surface-BFPNu1qA.js +405 -0
- package/dist/setup-surface-CedShqhO.js +288 -0
- package/dist/setup-surface-DLOBH1Vf.js +320 -0
- package/dist/setup-surface-MhCeEWSj.js +221 -0
- package/dist/shared-DamL-e8D.js +121 -0
- package/dist/shared-client-B48JoAsz.js +2 -0
- package/dist/shared-client-BoSiDnUo.js +629 -0
- package/dist/side-question-DQoQ_ETb.js +683 -0
- package/dist/skill-tool-dispatch.runtime-CWLloYA8.js +143 -0
- package/dist/skill-tool-dispatch.runtime.js +1 -1
- package/dist/slash-state-DrrWJQfv.js +2166 -0
- package/dist/speech-provider-8Hx1uw41.js +184 -0
- package/dist/src-BbUYOPwU.js +4256 -0
- package/dist/startup-context-opAJAamX.js +313 -0
- package/dist/status-subagents.runtime-DSo7ZK_Z.js +18 -0
- package/dist/status-subagents.runtime.js +1 -1
- package/dist/status-text-AyPuDzrO.js +296 -0
- package/dist/sticker-cache-91Tp8mLP.js +206 -0
- package/dist/sticker-vision.runtime-DjleFXi5.js +17 -0
- package/dist/sticker-vision.runtime.js +1 -1
- package/dist/subagent-announce-delivery-DS_2W9oZ.js +958 -0
- package/dist/subagent-announce-hatA_PZ2.js +354 -0
- package/dist/subagent-control-IyFIvc7T.js +508 -0
- package/dist/subagent-hooks-BCj5eB0Z.js +2 -0
- package/dist/subagent-hooks-BWjTBkox.js +146 -0
- package/dist/subagent-hooks-CdGLK9_3.js +230 -0
- package/dist/subagent-hooks-EH0tBkw9.js +2 -0
- package/dist/subagent-hooks-api-BhYaXQJV.js +23 -0
- package/dist/subagent-hooks-api-uGsV8Xn5.js +22 -0
- package/dist/subagent-hooks-api-wfJFKIPx.js +23 -0
- package/dist/subagent-hooks-l8Xd94dt.js +2 -0
- package/dist/subagent-hooks-m2eHUO_d.js +116 -0
- package/dist/subagent-orphan-recovery-Bq9zvX3L.js +352 -0
- package/dist/subagent-registry-Bcb3zy6b.js +3 -0
- package/dist/subagent-registry-CoZNTFx-.js +2351 -0
- package/dist/subagent-registry.runtime.js +1 -1
- package/dist/subagent-session-cleanup--00EjDLe.js +525 -0
- package/dist/subagent-spawn-ClJJkz3D.js +1164 -0
- package/dist/target-id-BsZLiF3x.js +107 -0
- package/dist/targets-CQMe4AZP.js +44 -0
- package/dist/targets-SmL1AU-H.js +19 -0
- package/dist/targets-Y-roiA47.js +19 -0
- package/dist/task-registry-control.runtime.js +1 -1
- package/dist/telegram/token.js +1 -1
- package/dist/testing-B5hNJDuF.js +267 -0
- package/dist/thread-bindings-BD3eE0kK.js +232 -0
- package/dist/thread-bindings-C9NNiv8K.js +571 -0
- package/dist/thread-bindings-Dl4PN1vZ.js +228 -0
- package/dist/thread-bindings-uK1LLAwy.js +8 -0
- package/dist/thread-bindings.discord-api-BHNEUbnk.js +187 -0
- package/dist/thread-bindings.manager-B0LXiH3F.js +2 -0
- package/dist/thread-bindings.manager-BTlH4XMG.js +536 -0
- package/dist/thread-lifecycle-DG8uyPHd.js +1614 -0
- package/dist/token-BbGCANnE.js +134 -0
- package/dist/tool-actions.runtime-oUUrD8HB.js +534 -0
- package/dist/tool-actions.runtime.js +1 -1
- package/dist/tool-bqg-_vYv.js +139 -0
- package/dist/tool-resolution-CSZsa3kP.js +149 -0
- package/dist/tools-effective-inventory-0CqFp-vq.js +204 -0
- package/dist/tools-invoke-http-DhYHY0Yh.js +67 -0
- package/dist/tools-invoke-shared-CbVJJUj7.js +200 -0
- package/dist/tts-C2qD-ad6.js +66 -0
- package/dist/tui-CzGY254f.js +4709 -0
- package/dist/tui-backend-fzoeoSN0.js +256 -0
- package/dist/tui-cli-B2RWb2gM.js +37 -0
- package/dist/tui-dgS8hdXU.js +2 -0
- package/dist/update-cli-BmiBDf3c.js +3664 -0
- package/dist/update-runner-CM7QVX6u.js +2379 -0
- package/dist/vision-tools-BzoBZnIc.js +1409 -0
- package/dist/web-search-DmfOd66S.js +62 -0
- package/dist/web-search-provider.runtime-3C5-pODD.js +328 -0
- package/dist/web-search-provider.runtime-Doh-Z9We.js +2 -0
- package/dist/web-search-provider.runtime.js +1 -1
- package/dist/xai-oauth-BLvQ43hx.js +479 -0
- package/dist/xai-user-agent-BdMQ_0_O.js +32 -0
- package/package.json +1 -1
- package/dist/abort-DeEb_wKd.js +0 -277
- package/dist/abort.runtime-CoYXQGPK.js +0 -2
- package/dist/account-inspect-D_06-CYS.js +0 -173
- package/dist/accounts-BCTqtj4Y.js +0 -107
- package/dist/accounts-BudLl8P2.js +0 -107
- package/dist/accounts-CUReBDA0.js +0 -2
- package/dist/accounts-PCioSzzr.js +0 -119
- package/dist/acp-runtime-B2t9_BHD.js +0 -26
- package/dist/acp-spawn-0x4Iiu1o.js +0 -2
- package/dist/acp-spawn-B2Ghe0jJ.js +0 -1275
- package/dist/acp-stateful-target-driver-C4VgcSyz.js +0 -89
- package/dist/action-kill-ClYsXEz7.js +0 -33
- package/dist/action-runtime-DrLPkNvU.js +0 -469
- package/dist/action-runtime-api-BqSflr9q.js +0 -2
- package/dist/action-send-CIy9cziD.js +0 -39
- package/dist/action-spawn-BjV6lFnX.js +0 -47
- package/dist/actions-D-QH7wq5.js +0 -161
- package/dist/actions.runtime-hzDtXQGU.js +0 -5
- package/dist/agent-Bb1DTBgv.js +0 -3
- package/dist/agent-Cnqj258q.js +0 -2
- package/dist/agent-command-BRx6ZNgJ.js +0 -1367
- package/dist/agent-components.runtime-D-g6xXJ0.js +0 -10
- package/dist/agent-harness-runtime-dKUQFuOc.js +0 -180
- package/dist/agent-harness-task-runtime-v2crUm3i.js +0 -140
- package/dist/agent-runner-execution-AOzdxvWR.js +0 -1713
- package/dist/agent-runner-utils-Byv50B4Z.js +0 -266
- package/dist/agent-runner.runtime-hhgRE0Z-.js +0 -3455
- package/dist/agent-runtime-BHmh3i0o.js +0 -229
- package/dist/agent-via-gateway-DnCqaK4a.js +0 -463
- package/dist/api-Bzyb8sFU.js +0 -3
- package/dist/api-CIEDFXZs.js +0 -2
- package/dist/api-D_dTQAu8.js +0 -2
- package/dist/api-DilBjZ9Q.js +0 -6
- package/dist/api-E5zoQMmh.js +0 -134
- package/dist/api-OJZug8gQ.js +0 -639
- package/dist/apply-C0eV5T0O.js +0 -41
- package/dist/apply-alsYvxLE.js +0 -54
- package/dist/approval-handler.runtime-C6jqZXSN.js +0 -130
- package/dist/assistant-DDXnAAB5.js +0 -291
- package/dist/attachment-normalize-Cv-_4DWU.js +0 -225
- package/dist/attempt-execution-DECEU59r.js +0 -558
- package/dist/attempt-execution.runtime-kasMxuER.js +0 -3
- package/dist/attempt-execution.shared-ClUxk52p.js +0 -38
- package/dist/attempt.prompt-helpers-Bxlv9VSu.js +0 -475
- package/dist/attempt.tool-run-context-CplQWX6g.js +0 -2094
- package/dist/binding-routing-0Obpp-Ij.js +0 -113
- package/dist/binding-targets-CZHQaZL4.js +0 -121
- package/dist/bot-BPbQ0840.js +0 -7894
- package/dist/bot-deps-Cs1M9USs.js +0 -2
- package/dist/bot-deps-xAcaOtTZ.js +0 -747
- package/dist/bot-message-context.runtime-Bji78Cbn.js +0 -7
- package/dist/bot-message-context.session.runtime-C3dyOIYH.js +0 -12
- package/dist/bot-native-commands.delivery.runtime-WshH99fy.js +0 -4
- package/dist/bot-native-commands.runtime-C1L364gU.js +0 -13
- package/dist/bridge-server-DPlM8_Lk.js +0 -113
- package/dist/browser-cli-DFNQE98N.js +0 -230
- package/dist/browser-cli-Drb5E5--.js +0 -2
- package/dist/browser-cli-actions-input-Dx-1OXmE.js +0 -473
- package/dist/browser-cli-actions-observe-BMDfE7xU.js +0 -81
- package/dist/browser-cli-debug-nu7Ih09g.js +0 -137
- package/dist/browser-cli-inspect-D5X2wohg.js +0 -104
- package/dist/browser-cli-manage-DkzYwph4.js +0 -443
- package/dist/browser-cli-resize-B30Avedl.js +0 -26
- package/dist/browser-cli-shared-cMgQoQzF.js +0 -50
- package/dist/browser-cli-state-CQLDvDy7.js +0 -337
- package/dist/browser-control-auth-D7ArmHUt.js +0 -2
- package/dist/browser-profiles-B39SIZNb.js +0 -2
- package/dist/browser-runtime-DUbSAOOS.js +0 -384
- package/dist/build-D25KqC92.js +0 -257
- package/dist/capability-cli-CuyXrlAB.js +0 -1782
- package/dist/channel-0N3YGMGg.js +0 -1496
- package/dist/channel-1UyKoLyp.js +0 -481
- package/dist/channel-BG87pSEW.js +0 -740
- package/dist/channel-BPGSaZW7.js +0 -1249
- package/dist/channel-BQMPh1J_.js +0 -376
- package/dist/channel-Bd_8V6zn.js +0 -1134
- package/dist/channel-BtBjh_ij.js +0 -362
- package/dist/channel-CpFBlVH6.js +0 -562
- package/dist/channel-CwuTrIrF.js +0 -508
- package/dist/channel-Cxl4sJA-.js +0 -1777
- package/dist/channel-D-VfU4Z2.js +0 -2126
- package/dist/channel-D9q8aYrN.js +0 -867
- package/dist/channel-DKSvVvZh.js +0 -238
- package/dist/channel-DvoFfWLx.js +0 -808
- package/dist/channel-GktTcGHm.js +0 -955
- package/dist/channel-actions.runtime-CKcRA0GW.js +0 -265
- package/dist/channel-core-nm8s1qFZ.js +0 -5
- package/dist/channel-d3t2ESlE.js +0 -653
- package/dist/channel-inbound-DKz40dq-.js +0 -80
- package/dist/channel-plugin-runtime-DKIGZWfW.js +0 -998
- package/dist/channel-runtime-Bh8_GY12.js +0 -408
- package/dist/channel-yQ8jCOb9.js +0 -1556
- package/dist/channel.runtime-BG4mM5cQ.js +0 -652
- package/dist/channel.runtime-BS6PyFFa.js +0 -1008
- package/dist/channel.runtime-CE_xECqN.js +0 -88
- package/dist/channel.runtime-Cd1Sw8U4.js +0 -254
- package/dist/channel.runtime-DIq3XOEe.js +0 -733
- package/dist/channel.runtime-Dy1cx35I.js +0 -21009
- package/dist/channel.runtime-NyIMjLnP.js +0 -109
- package/dist/channel.runtime-Zx5mfE2V.js +0 -4
- package/dist/channel.runtime-rJRibGfN.js +0 -2528
- package/dist/channel.setup--4ACadmF.js +0 -10
- package/dist/channel.setup-DzwqIlo3.js +0 -1098
- package/dist/channel.setup-FKYSJwXR.js +0 -343
- package/dist/chat-CKxSm7r1.js +0 -2666
- package/dist/chrome-rMubJwRG.js +0 -1503
- package/dist/cli-CbTod55I.js +0 -1341
- package/dist/cli-compaction-BbHgjJyW.js +0 -347
- package/dist/cli-metadata-DkOWLC_p.js +0 -22
- package/dist/cli-runner-Cwzv_RKf.js +0 -540
- package/dist/cli-runner-DdnUsgPl.js +0 -2
- package/dist/cli-runner.runtime-BlrSgbEW.js +0 -3
- package/dist/cli-runner.runtime-D8kVfvFH.js +0 -4
- package/dist/client-ClvxsWgL.js +0 -650
- package/dist/client-adapter-CsrIIjK1.js +0 -897
- package/dist/client-factory-DAYClhwm.js +0 -9
- package/dist/command-auth-CCha2ofd.js +0 -135
- package/dist/command-handlers-DCWJzHyB.js +0 -1609
- package/dist/command-registry-BIf61QNz.js +0 -9
- package/dist/command-registry-DJROBy4h.js +0 -4
- package/dist/command-registry-core-BQOWqi6S.js +0 -110
- package/dist/command-status.runtime-D88CUglL.js +0 -90
- package/dist/commands-acp-B-8dHX4Z.js +0 -74
- package/dist/commands-compact.runtime-ComX5mUk.js +0 -10
- package/dist/commands-handlers.runtime-DR3wjXHX.js +0 -6154
- package/dist/commands-status-CDyGrwsI.js +0 -3
- package/dist/commands-status-DV-i_ZIK.js +0 -16
- package/dist/commands-status.runtime-CDyGrwsI.js +0 -3
- package/dist/commands-subagents-control.runtime-B029cXAS.js +0 -3
- package/dist/commands-subagents-control.runtime-DR8Qspe0.js +0 -2
- package/dist/commands-system-prompt-C10ctsG3.js +0 -162
- package/dist/commands-system-prompt-DQlRWwnk.js +0 -2
- package/dist/commands.runtime-BYmIAuN0.js +0 -176
- package/dist/compact-14Ljaaeu.js +0 -480
- package/dist/compact-B--ovdkx.js +0 -1141
- package/dist/compact.runtime-E0Idf2Dq.js +0 -12
- package/dist/completion-cli-DMvvQGSk.js +0 -315
- package/dist/computer-use-CcLwX5SR.js +0 -367
- package/dist/config-B39SIZNb.js +0 -2
- package/dist/config-D4rsGOyV.js +0 -373
- package/dist/config-mutations-CsI3YJu7.js +0 -159
- package/dist/context-engine-host-compat-BZpDFiMJ.js +0 -2
- package/dist/context-engine-host-compat-runUdES5.js +0 -288
- package/dist/context-engine-lifecycle-D6odtNrn.js +0 -1274
- package/dist/control-auth-BPGpPtfz.js +0 -114
- package/dist/control-service-C-OmdPCe.js +0 -145
- package/dist/control-ui/assets/agents-GeyOHPuW.js +0 -1008
- package/dist/control-ui/assets/channel-config-extras-D7en6iUg.js +0 -2
- package/dist/control-ui/assets/channels-DkEyr1w5.js +0 -367
- package/dist/control-ui/assets/cron-C-wThQ1Q.js +0 -1013
- package/dist/control-ui/assets/debug-83AFRtIX.js +0 -97
- package/dist/control-ui/assets/index-CiGEhMOA.js +0 -7370
- package/dist/control-ui/assets/instances-CVl0t-1h.js +0 -57
- package/dist/control-ui/assets/logs-eybVEXxg.js +0 -74
- package/dist/control-ui/assets/nodes-C_A7eoU2.js +0 -436
- package/dist/control-ui/assets/sessions-Cq4Nc69u.js +0 -399
- package/dist/control-ui/assets/skills-ZN6hroIh.js +0 -314
- package/dist/control-ui/assets/skills-shared-DIWGwmdC.js +0 -11
- package/dist/conversation-binding-runtime-C2U1JElL.js +0 -4
- package/dist/conversation-runtime-NmIUd3Zu.js +0 -31
- package/dist/core-DGKJP1dm.js +0 -282
- package/dist/core-api-1fA4sNeC.js +0 -5
- package/dist/core-api-BY822Quq.js +0 -2
- package/dist/crestodian-Bp-NXiBC.js +0 -55
- package/dist/daocore-tools-Defpam0j.js +0 -11727
- package/dist/delivery-CEdVAUGB.js +0 -1002
- package/dist/dialogue-CZ69INPq.js +0 -37
- package/dist/dir-fetch-tool-BCicHhQE.js +0 -565
- package/dist/dir-list-tool-Cv_WktsJ.js +0 -100
- package/dist/direct-dm-Bz89rM8x.js +0 -64
- package/dist/directive-handling.fast-lane-DDnbcc5S.js +0 -68
- package/dist/directive-handling.impl-B0H52Ymr.js +0 -818
- package/dist/directive-handling.impl-CgKpwEW-.js +0 -2
- package/dist/directive-handling.model-selection-_cXAr0vt.js +0 -122
- package/dist/directive-handling.persist.runtime-Dw0mfzXT.js +0 -263
- package/dist/dispatch-C3AeYvyP.js +0 -1640
- package/dist/dispatch-acp-transcript.runtime-CP8pqBwS.js +0 -40
- package/dist/dispatch-acp.runtime-Cdap-AZI.js +0 -18
- package/dist/doctor-BZwVH97p.js +0 -2
- package/dist/doctor-BfkGBii1.js +0 -6
- package/dist/doctor-config-flow-D3JASGDt.js +0 -1741
- package/dist/doctor-core-checks-DH5AIT0Q.js +0 -573
- package/dist/doctor-core-checks-DiNu7VSh.js +0 -2
- package/dist/doctor-health-BDIJ-Nro.js +0 -65
- package/dist/doctor-health-contributions-BgmF7w8X.js +0 -696
- package/dist/doctor-lint-uIxkMUSO.js +0 -94
- package/dist/doctor-state-integrity-ws1b_BGk.js +0 -1231
- package/dist/doctor-update-Cx4CqxaX.js +0 -58
- package/dist/dynamic-tools-DiqOxhJh.js +0 -486
- package/dist/embedded-backend-C634irMl.js +0 -579
- package/dist/embedded-gateway-stub.runtime-CCfrTOeN.js +0 -12
- package/dist/exec-approvals-D85KThSg.js +0 -149
- package/dist/file-fetch-tool-BERaGYCT.js +0 -124
- package/dist/file-write-tool-BjHrMyfe.js +0 -127
- package/dist/format-DE9PuPg1.js +0 -1145
- package/dist/gateway-cli-B5hjhbUy.js +0 -435
- package/dist/gateway-method-runtime-Bu0E9Eki.js +0 -21
- package/dist/get-reply-6PtPz9hv.js +0 -4689
- package/dist/get-reply-from-config.runtime-CwprvhoR.js +0 -2
- package/dist/graph-users-DUp1kgnS.js +0 -1419
- package/dist/group-access-D5GBQ3w6.js +0 -112
- package/dist/handle-action.guild-admin-CA0Y-buD.js +0 -288
- package/dist/harness-B5nOFVfm.js +0 -61
- package/dist/health-D5heIDj3.js +0 -4
- package/dist/heartbeat-runner-BzFkIFHh.js +0 -5
- package/dist/heartbeat-runner.runtime-p6H1_xMV.js +0 -4
- package/dist/hooks-BvTyQ14X.js +0 -534
- package/dist/inbound-direct-dm-runtime-DwiDXi8L.js +0 -2
- package/dist/inbound-reply-dispatch-YoDUOC6C.js +0 -148
- package/dist/init-CPtcV5Xu.js +0 -59
- package/dist/inline-buttons-DeD5d42c.js +0 -40
- package/dist/internal-events-DEb50Sw3.js +0 -90
- package/dist/isolated-agent-CcxFFZ-Z.js +0 -1118
- package/dist/isolated-agent-CpHzq5qr.js +0 -2
- package/dist/lifecycle-DNel-oMe.js +0 -571
- package/dist/list.probe-DCa3N25d.js +0 -449
- package/dist/list.status-command-CyeAJmZW.js +0 -789
- package/dist/llm-slug-generator-CyqTY37Z.js +0 -78
- package/dist/local-dispatch.runtime-nE39kFIP.js +0 -9
- package/dist/manager.runtime-CpAPB8D5.js +0 -2714
- package/dist/markdown-to-line-Ci6TRmoZ.js +0 -811
- package/dist/mcp-http-BR0vmxFL.js +0 -2
- package/dist/mcp-http-C0oniA8h.js +0 -555
- package/dist/media-understanding-provider-BwA0XqC3.js +0 -339
- package/dist/message-actions-C9C_Ngkd.js +0 -145
- package/dist/message-handler-CUUKPC5n.js +0 -384
- package/dist/message-handler-xRTfIXWV.js +0 -1715
- package/dist/message-handler.preflight-Ch2Q7V3M.js +0 -1125
- package/dist/message-handler.process-HM3mK93q.js +0 -1484
- package/dist/model-CB8Ex5xS.js +0 -74
- package/dist/model-selection-2s0Dinux.js +0 -272
- package/dist/models-Cn-6DJ41.js +0 -2
- package/dist/models-CzszJD__.js +0 -104
- package/dist/models-cli-CbhElnA5.js +0 -256
- package/dist/monitor-7aprTsMV.js +0 -715
- package/dist/monitor-BuVhqwDS.js +0 -1370
- package/dist/monitor-C4H_YkgY.js +0 -2
- package/dist/monitor-CPQsMxgv.js +0 -1657
- package/dist/monitor-Ce0V1PiR.js +0 -4377
- package/dist/monitor-D0bcGJWI.js +0 -60
- package/dist/monitor-DEjlJqzh.js +0 -834
- package/dist/monitor-auth-DjJZsjgV.js +0 -179
- package/dist/monitor-ikSYagv3.js +0 -2788
- package/dist/monitor-polling.runtime-D7yEflMM.js +0 -883
- package/dist/monitor-webhook.runtime-CIZt-biI.js +0 -387
- package/dist/monitor.account-C2sMOBCS.js +0 -5233
- package/dist/monitor.runtime-BAi6zmcn.js +0 -2
- package/dist/monitor.webhook-BcjpfRCX.js +0 -180
- package/dist/node-cli-sessions-CIhkJRU4.js +0 -1228
- package/dist/openai-http-Dj21RwSj.js +0 -824
- package/dist/openresponses-http-COnnr1ox.js +0 -1173
- package/dist/operations-H3vUh0lM.js +0 -805
- package/dist/outbound-adapter-WLtWE7wv.js +0 -543
- package/dist/outbound-session-route-CZtd64EH.js +0 -45
- package/dist/outbound.runtime-D98P0sN1.js +0 -2
- package/dist/pi-embedded-BWJzd4mK.js +0 -4
- package/dist/pi-embedded-DeNsSqQQ.js +0 -3796
- package/dist/pi-embedded.runtime-CZnNwFpc.js +0 -4
- package/dist/pi-tools-CNHSpjBa.js +0 -2413
- package/dist/plan-B0reFFlM.js +0 -81
- package/dist/plan-CrfF-TH8.js +0 -112
- package/dist/plugin-DI_8eYOe.js +0 -12396
- package/dist/plugin-app-cache-key-WaTUD3e-.js +0 -46
- package/dist/plugin-enabled-aWLXgGGi.js +0 -233
- package/dist/plugin-registration-ByjRIVJm.js +0 -88
- package/dist/plugin-service-VQm_241d.js +0 -1229
- package/dist/policy-BmJH-swe.js +0 -680
- package/dist/policy-DE-bO1zn.js +0 -138
- package/dist/prepare.runtime-bSj3-res.js +0 -732
- package/dist/preview-warnings-CbuGYsF9.js +0 -392
- package/dist/probe-C_rWg7_m.js +0 -682
- package/dist/probe-CagOFfx6.js +0 -2
- package/dist/probe-thX1HqOh.js +0 -2204
- package/dist/probe-zU6B6gFt.js +0 -47
- package/dist/program-BtVdH743.js +0 -131
- package/dist/provider-CDoD7tO0.js +0 -8735
- package/dist/provider-CK1gMdJ2.js +0 -32
- package/dist/provider-DJqr9djy.js +0 -32
- package/dist/provider-DsOJp5bK.js +0 -152
- package/dist/provider-dispatcher-UNQ-LSx9.js +0 -22
- package/dist/provider-session.runtime-DMrkMb4x.js +0 -9
- package/dist/provider.runtime-C2-t3zm8.js +0 -2
- package/dist/public-surface-loader-hTeyyHcd.js +0 -114
- package/dist/pw-ai-BaL3eVYx.js +0 -3029
- package/dist/pw-role-snapshot-DKeBqhN1.js +0 -333
- package/dist/reaction-level-BV2potsD.js +0 -19
- package/dist/reaction-runtime-api-CCBxgM10.js +0 -116
- package/dist/realtime-transcription-provider-CHYtIXZm.js +0 -205
- package/dist/register-BJf28G9B.js +0 -2178
- package/dist/register.agent-oXAHwNQv.js +0 -156
- package/dist/register.crestodian-CQ0sqdV2.js +0 -24
- package/dist/register.maintenance-CylVRs5M.js +0 -83
- package/dist/register.runtime-CcDgwy0X.js +0 -54
- package/dist/register.subclis-CpBYNw2X.js +0 -3
- package/dist/register.subclis-N2CvieOL.js +0 -31
- package/dist/register.subclis-core-BHaGvbzg.js +0 -273
- package/dist/repair-sequencing-EBBnBdIB.js +0 -640
- package/dist/reply-delivery-BLoPALlI.js +0 -196
- package/dist/reply-runtime-D4asNTSa.js +0 -11
- package/dist/reply.runtime-CwprvhoR.js +0 -2
- package/dist/request-DlWPRUDt.js +0 -54
- package/dist/resolve-allowlist-BukQf58x.js +0 -220
- package/dist/result-fallback-classifier-DyHFnqfV.js +0 -79
- package/dist/route-BMf4keN5.js +0 -469
- package/dist/route-resolution-DWNi1QAu.js +0 -274
- package/dist/routes-C20LC8c4.js +0 -3602
- package/dist/routes-CkK7Vv_m.js +0 -2
- package/dist/run-KDF_AEza.js +0 -1162
- package/dist/run-attempt-JHYCfonU.js +0 -7704
- package/dist/run-command-3PVihYIy.js +0 -2
- package/dist/run-command-QHAXnyKY.js +0 -23
- package/dist/run-embedded.runtime-BJw-2vss.js +0 -4
- package/dist/run-execution-cli.runtime-GHClMn2g.js +0 -4
- package/dist/run-subagent-registry.runtime-BLLMrhtE.js +0 -2
- package/dist/runtime-C2u-dC1r.js +0 -1287
- package/dist/runtime-ClyfkDWT.js +0 -6179
- package/dist/runtime-WXCarlPc.js +0 -438
- package/dist/runtime-api-3QhGLpZf.js +0 -13
- package/dist/runtime-api-DRAu3mjv.js +0 -4
- package/dist/runtime-api-JE07pOem.js +0 -13
- package/dist/runtime-api-JuKylHvw.js +0 -24
- package/dist/runtime-api-bcbk4yax.js +0 -21
- package/dist/runtime-api-dDe9U2_V.js +0 -17
- package/dist/runtime-api-uMexLqGS.js +0 -3
- package/dist/runtime-api.actions-Bo7TLDFl.js +0 -3
- package/dist/runtime-api.monitor-7q78L1Em.js +0 -6
- package/dist/runtime-api.send-Bf9RR4nV.js +0 -4
- package/dist/runtime-api.threads-Dj2QuhHj.js +0 -2
- package/dist/runtime-channel-k1C0Satl.js +0 -2
- package/dist/runtime-channel-qt9t0J-J.js +0 -150
- package/dist/runtime-embedded-pi.runtime-BPB9NlTS.js +0 -2
- package/dist/sanitize-outbound-BLH_SQvg.js +0 -127
- package/dist/sdk-setup-tools-BshlBPau.js +0 -8
- package/dist/secrets-CsHXv7d3.js +0 -113
- package/dist/security-audit-CUXBQXNX.js +0 -122
- package/dist/security-audit-CzdXbRma.js +0 -118
- package/dist/security-audit.runtime-Ca0FMFJG.js +0 -2
- package/dist/selection-BmvQJlSD.js +0 -3
- package/dist/selection-BplDXc9w.js +0 -16157
- package/dist/send--qFg8a9v.js +0 -1631
- package/dist/send-BPdryPPA.js +0 -192
- package/dist/send-Bl4YaRkS.js +0 -143
- package/dist/send-Ccm7RMXC.js +0 -2
- package/dist/send.components-c3OUPSmR.js +0 -2
- package/dist/send.components-rhQJYoXs.js +0 -500
- package/dist/send.runtime-dfUkAp5d.js +0 -2
- package/dist/server-DRhyTMLe.js +0 -73
- package/dist/server-Dv4BzjGn.js +0 -24
- package/dist/server-context-4HRJy2vp.js +0 -955
- package/dist/server-context-DlxYb1G5.js +0 -2
- package/dist/server-cron-Bt8Pkc3i.js +0 -2989
- package/dist/server-cron-CtNWsa4Z.js +0 -2
- package/dist/server-methods-rye_okUW.js +0 -16494
- package/dist/server-node-events-C1yZ5a1u.js +0 -596
- package/dist/server-plugin-bootstrap-DUMyVtlP.js +0 -70
- package/dist/server-plugins-B5ZWWkRE.js +0 -432
- package/dist/server-reload-handlers-CTnMXNjT.js +0 -714
- package/dist/server-restart-sentinel-CAYxtwmY.js +0 -747
- package/dist/server-restart-sentinel-DqrtSIvy.js +0 -2
- package/dist/server-runtime-services-CuptQTe5.js +0 -2
- package/dist/server-runtime-services-aaS2IiW3.js +0 -267
- package/dist/server-startup-plugins-D0ymJgQT.js +0 -113
- package/dist/server-startup-post-attach-DlrN2uyt.js +0 -716
- package/dist/server-ws-runtime-CdpLbv4o.js +0 -349
- package/dist/server.impl-Cb4qcMTg.js +0 -2586
- package/dist/service-qxvDlMQE.js +0 -1446
- package/dist/session-binding-6bLobLHL.js +0 -219
- package/dist/session-binding-Bm6fCpoY.js +0 -2
- package/dist/session-kill-http-B6WjVo8V.js +0 -121
- package/dist/session-reset-service-GUVIhxp4.js +0 -625
- package/dist/session-route-BcRDnvzG.js +0 -93
- package/dist/session-status.runtime-BcjOunV4.js +0 -2
- package/dist/session-subagent-reactivation.runtime-BSmk_KYn.js +0 -2
- package/dist/session-tab-registry-BBYzbSOu.js +0 -521
- package/dist/sessions-history-http-bLJJfgLm.js +0 -430
- package/dist/sessions.runtime-DNRtQzCk.js +0 -2
- package/dist/setup-api-CcolVVJs.js +0 -29
- package/dist/setup-core-eJD18F3B.js +0 -174
- package/dist/setup-surface-B75C2Qtz.js +0 -221
- package/dist/setup-surface-CFuPfVHp.js +0 -405
- package/dist/setup-surface-Dyy-Mzyz.js +0 -288
- package/dist/setup-surface-ZsVF_g8W.js +0 -320
- package/dist/shared-BkCNrcLX.js +0 -121
- package/dist/shared-client-B7zqC9p2.js +0 -2
- package/dist/shared-client-yXjKgZBz.js +0 -629
- package/dist/side-question-DU3gESCb.js +0 -683
- package/dist/skill-tool-dispatch.runtime-CPBuqyvk.js +0 -143
- package/dist/slash-state-Do3bAahA.js +0 -2166
- package/dist/speech-provider-Bg9los3C.js +0 -184
- package/dist/src-D7LzUctH.js +0 -4256
- package/dist/startup-context-CCF2gIOl.js +0 -313
- package/dist/status-subagents.runtime-DX5FTymp.js +0 -18
- package/dist/status-text-B-1u5dSV.js +0 -296
- package/dist/sticker-cache-DwpU_9RJ.js +0 -206
- package/dist/sticker-vision.runtime-Bbldi_YL.js +0 -17
- package/dist/subagent-announce-BCo0VHVL.js +0 -354
- package/dist/subagent-announce-delivery-JcnuDN_N.js +0 -958
- package/dist/subagent-control-BzbA3Suz.js +0 -508
- package/dist/subagent-hooks-BIGZQWrG.js +0 -2
- package/dist/subagent-hooks-Bj4qYZfv.js +0 -230
- package/dist/subagent-hooks-C-rvhVBv.js +0 -2
- package/dist/subagent-hooks-P01_AFl5.js +0 -116
- package/dist/subagent-hooks-VEfak8nl.js +0 -2
- package/dist/subagent-hooks-api-BPnSxxN4.js +0 -23
- package/dist/subagent-hooks-api-DwIAvMoS.js +0 -22
- package/dist/subagent-hooks-api-kgyR9FOb.js +0 -23
- package/dist/subagent-hooks-oED56wqq.js +0 -146
- package/dist/subagent-orphan-recovery-D79ZzwKN.js +0 -352
- package/dist/subagent-registry-D0soBT5j.js +0 -2351
- package/dist/subagent-registry-DRJDkmty.js +0 -3
- package/dist/subagent-session-cleanup-9eAO1aJe.js +0 -525
- package/dist/subagent-spawn-D80vbogm.js +0 -1164
- package/dist/target-id-COLv5LsJ.js +0 -107
- package/dist/targets-CDW5IQ6a.js +0 -44
- package/dist/targets-Ci6O1ZdP.js +0 -19
- package/dist/targets-CsaWFBg1.js +0 -19
- package/dist/testing-BoJit-h1.js +0 -267
- package/dist/thread-bindings-CGCvw0KT.js +0 -571
- package/dist/thread-bindings-ClCTNacX.js +0 -228
- package/dist/thread-bindings-DRb7BMZ6.js +0 -8
- package/dist/thread-bindings-Xc6smav0.js +0 -232
- package/dist/thread-bindings.discord-api-DC467oeF.js +0 -187
- package/dist/thread-bindings.manager-C_mpTDIZ.js +0 -536
- package/dist/thread-bindings.manager-DkCRs612.js +0 -2
- package/dist/thread-lifecycle-DpqCXlx9.js +0 -1614
- package/dist/token-CI6HjbTA.js +0 -134
- package/dist/tool-BMe7hjBK.js +0 -139
- package/dist/tool-actions.runtime-D-h5PI_m.js +0 -534
- package/dist/tool-resolution-CnLx0CHe.js +0 -149
- package/dist/tools-effective-inventory-BR6MUMtE.js +0 -204
- package/dist/tools-invoke-http-CTTs2yMT.js +0 -67
- package/dist/tools-invoke-shared-9B1EjXWf.js +0 -200
- package/dist/tts-eGOviZ5c.js +0 -66
- package/dist/tui-Bw0HqKd7.js +0 -4709
- package/dist/tui-CIZJnPzj.js +0 -2
- package/dist/tui-backend-BJ_r7tcF.js +0 -256
- package/dist/tui-cli-BaSMBpuA.js +0 -37
- package/dist/update-cli-zuCybGNR.js +0 -3664
- package/dist/update-runner-Dek2BHmQ.js +0 -2379
- package/dist/vision-tools-1ps0BEE5.js +0 -1409
- package/dist/web-search-B7EziZXE.js +0 -62
- package/dist/web-search-provider.runtime-DGTCvGch.js +0 -328
- package/dist/web-search-provider.runtime-DWL5t39M.js +0 -2
- package/dist/xai-oauth-CRtsj2Gs.js +0 -479
- package/dist/xai-user-agent-Dndwzw2S.js +0 -32
- /package/dist/{acp-runtime-backend-DSDBcyh9.js → acp-runtime-backend-Cxo7eBHf.js} +0 -0
- /package/dist/{channel-actions-FV66JqtI.js → channel-actions-UDeVjgGz.js} +0 -0
- /package/dist/{command-status-runtime-BRWKSoG7.js → command-status-runtime-CoHd4Fws.js} +0 -0
- /package/dist/{delegate-DGqKhwB4.js → delegate-B-2xZ77o.js} +0 -0
- /package/dist/{dispatch-acp-Ceoxja_Z.js → dispatch-acp-DLPkmK7K.js} +0 -0
- /package/dist/{heartbeat-runner-CJHvr5pG.js → heartbeat-runner-D2j6JwOI.js} +0 -0
- /package/dist/{library-Bq3aDek_.js → library-DBT0cIPP.js} +0 -0
- /package/dist/{run-executor.runtime-DNJhGPbA.js → run-executor.runtime-DE4J7f4M.js} +0 -0
- /package/dist/{shared-CYxmRpq1.js → shared-xeo8Yh5n.js} +0 -0
|
@@ -0,0 +1,1741 @@
|
|
|
1
|
+
import { a as normalizeLowercaseStringOrEmpty, c as normalizeOptionalString, s as normalizeOptionalLowercaseString } from "./string-coerce-DyL154ka.js";
|
|
2
|
+
import { t as sanitizeForLog } from "./ansi-4r6vVvJt.js";
|
|
3
|
+
import { t as CONFIG_PATH } from "./paths-ZwPDM6zn.js";
|
|
4
|
+
import { t as formatCliCommand } from "./command-format-tWmMYcvZ.js";
|
|
5
|
+
import { c as isRecord$1 } from "./utils-CNnMhEDp.js";
|
|
6
|
+
import { i as LEGACY_SECRETREF_ENV_MARKER_PREFIX, p as parseLegacySecretRefEnvMarker } from "./types.secrets-Ct1DNG7D.js";
|
|
7
|
+
import { r as normalizeProviderId$1 } from "./provider-id-zTW9Rdln.js";
|
|
8
|
+
import { n as normalizeAccountId, r as normalizeOptionalAccountId, t as DEFAULT_ACCOUNT_ID } from "./account-id-B32J-iNN.js";
|
|
9
|
+
import { r as normalizeChatChannelId } from "./ids-tIRTU44E.js";
|
|
10
|
+
import { i as setPathExistingStrict } from "./path-utils-D1FbFFkz.js";
|
|
11
|
+
import { n as discoverConfigSecretTargets } from "./target-registry-Da9m4O-9.js";
|
|
12
|
+
import { L as resolveNormalizedProviderModelMaxTokens } from "./io-Ct2JqgbR.js";
|
|
13
|
+
import { n as formatConfigIssueLines } from "./issue-format-c8ezaSew.js";
|
|
14
|
+
import { r as normalizeTalkSection } from "./talk-DNtnFHjx.js";
|
|
15
|
+
import { n as collectConfiguredModelRefs } from "./model-refs-DQirj_LB.js";
|
|
16
|
+
import { t as splitTrailingAuthProfile } from "./model-ref-profile-L6rqw6O0.js";
|
|
17
|
+
import { r as getBundledChannelPlugin, s as hasBundledChannelPackageSetupFeature } from "./bundled-D8D0Cq1p.js";
|
|
18
|
+
import { o as runPluginSetupConfigMigrations } from "./setup-registry-C0IufeU8.js";
|
|
19
|
+
import { n as getLoadedChannelPlugin } from "./registry-Ds-iqdaQ.js";
|
|
20
|
+
import { i as listRouteBindings } from "./bindings-D1F1bOgs.js";
|
|
21
|
+
import { a as legacyRuntimeModelAliasRequiresRuntimePolicy, o as listLegacyRuntimeModelProviderAliases, s as migrateLegacyRuntimeModelRef } from "./model-runtime-aliases-CEDWbZ3S.js";
|
|
22
|
+
import { t as DEFAULT_GOOGLE_API_BASE_URL } from "./google-api-base-url-UBNiBOzj.js";
|
|
23
|
+
import { n as formatSetExplicitDefaultInstruction, r as formatSetExplicitDefaultToConfiguredInstruction, t as formatChannelAccountsDefaultPath } from "./default-account-warnings-CK3UKJwX.js";
|
|
24
|
+
import { t as note } from "./note-CbITX52o.js";
|
|
25
|
+
import { t as asObjectRecord } from "./object-BsiS9JXh.js";
|
|
26
|
+
import { i as noteOpencodeProviderOverrides, n as noteImplicitFallbackClobberWarnings, o as stripUnknownConfigKeys } from "./doctor-config-analysis-DTzgjgGD.js";
|
|
27
|
+
import { a as mergeMissing, i as migrateLegacyXSearchConfig, r as migrateLegacyWebSearchConfig } from "./legacy-config-migrations-C77VoZ5R.js";
|
|
28
|
+
import { n as ensureRecord, r as hasOwnKey, t as cloneRecord } from "./legacy-config-record-shared-BvSBQidF.js";
|
|
29
|
+
import { t as runDoctorConfigPreflight } from "./doctor-config-preflight-C_z6CA82.js";
|
|
30
|
+
import { n as applyChannelDoctorCompatibilityMigrations, t as migrateLegacyConfig } from "./legacy-config-migrate-B4xykxXe.js";
|
|
31
|
+
import { t as applyDoctorConfigMutation } from "./config-mutation-state-C1d35St0.js";
|
|
32
|
+
import path from "node:path";
|
|
33
|
+
import { isDeepStrictEqual } from "node:util";
|
|
34
|
+
//#region src/secrets/legacy-secretref-env-marker.ts
|
|
35
|
+
function isLegacySecretRefEnvMarker(value) {
|
|
36
|
+
return typeof value === "string" && value.trim().startsWith("secretref-env:");
|
|
37
|
+
}
|
|
38
|
+
function toCandidate(target, defaults) {
|
|
39
|
+
if (!isLegacySecretRefEnvMarker(target.value)) return null;
|
|
40
|
+
return {
|
|
41
|
+
path: target.path,
|
|
42
|
+
pathSegments: target.pathSegments,
|
|
43
|
+
value: target.value.trim(),
|
|
44
|
+
ref: parseLegacySecretRefEnvMarker(target.value, defaults?.env)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function collectLegacySecretRefEnvMarkerCandidates(config) {
|
|
48
|
+
const defaults = config.secrets?.defaults;
|
|
49
|
+
return discoverConfigSecretTargets(config).map((target) => toCandidate(target, defaults)).filter((candidate) => candidate !== null);
|
|
50
|
+
}
|
|
51
|
+
function migrateLegacySecretRefEnvMarkers(config) {
|
|
52
|
+
const candidates = collectLegacySecretRefEnvMarkerCandidates(config).filter((candidate) => candidate.ref !== null);
|
|
53
|
+
if (candidates.length === 0) return {
|
|
54
|
+
config,
|
|
55
|
+
changes: []
|
|
56
|
+
};
|
|
57
|
+
const next = structuredClone(config);
|
|
58
|
+
const changes = [];
|
|
59
|
+
for (const candidate of candidates) {
|
|
60
|
+
const ref = candidate.ref;
|
|
61
|
+
if (!ref) continue;
|
|
62
|
+
if (setPathExistingStrict(next, candidate.pathSegments, ref)) changes.push(`Moved ${candidate.path} ${LEGACY_SECRETREF_ENV_MARKER_PREFIX}${ref.id} marker → structured env SecretRef.`);
|
|
63
|
+
}
|
|
64
|
+
return {
|
|
65
|
+
config: next,
|
|
66
|
+
changes
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
//#region src/channels/plugins/setup-promotion-helpers.ts
|
|
71
|
+
const COMMON_SINGLE_ACCOUNT_KEYS_TO_MOVE = new Set([
|
|
72
|
+
"name",
|
|
73
|
+
"token",
|
|
74
|
+
"tokenFile",
|
|
75
|
+
"botToken",
|
|
76
|
+
"appToken",
|
|
77
|
+
"account",
|
|
78
|
+
"signalNumber",
|
|
79
|
+
"authDir",
|
|
80
|
+
"cliPath",
|
|
81
|
+
"dbPath",
|
|
82
|
+
"httpUrl",
|
|
83
|
+
"httpHost",
|
|
84
|
+
"httpPort",
|
|
85
|
+
"webhookPath",
|
|
86
|
+
"webhookUrl",
|
|
87
|
+
"webhookSecret",
|
|
88
|
+
"service",
|
|
89
|
+
"region",
|
|
90
|
+
"homeserver",
|
|
91
|
+
"userId",
|
|
92
|
+
"accessToken",
|
|
93
|
+
"password",
|
|
94
|
+
"deviceName",
|
|
95
|
+
"url",
|
|
96
|
+
"code",
|
|
97
|
+
"dmPolicy",
|
|
98
|
+
"allowFrom",
|
|
99
|
+
"groupPolicy",
|
|
100
|
+
"groupAllowFrom",
|
|
101
|
+
"defaultTo"
|
|
102
|
+
]);
|
|
103
|
+
function asPromotionSurface(setup) {
|
|
104
|
+
return setup && typeof setup === "object" ? setup : null;
|
|
105
|
+
}
|
|
106
|
+
function getLoadedChannelSetupPromotionSurface(channelKey) {
|
|
107
|
+
return asPromotionSurface(getLoadedChannelPlugin(channelKey)?.setup);
|
|
108
|
+
}
|
|
109
|
+
function getBundledChannelSetupPromotionSurface(channelKey) {
|
|
110
|
+
if (!hasBundledChannelPackageSetupFeature(channelKey, "configPromotion")) return null;
|
|
111
|
+
return asPromotionSurface(getBundledChannelPlugin(channelKey)?.setup);
|
|
112
|
+
}
|
|
113
|
+
function isStaticSingleAccountPromotionKey(key) {
|
|
114
|
+
return COMMON_SINGLE_ACCOUNT_KEYS_TO_MOVE.has(key);
|
|
115
|
+
}
|
|
116
|
+
function resolveSingleAccountKeysToMove(params) {
|
|
117
|
+
const hasNamedAccounts = Object.keys(params.channel.accounts ?? {}).some(Boolean);
|
|
118
|
+
const entries = Object.entries(params.channel).filter(([key, value]) => key !== "accounts" && key !== "defaultAccount" && key !== "enabled" && value !== void 0).map(([key]) => key);
|
|
119
|
+
if (entries.length === 0) return [];
|
|
120
|
+
let loadedSetupSurface;
|
|
121
|
+
const resolveLoadedSetupSurface = () => {
|
|
122
|
+
loadedSetupSurface ??= getLoadedChannelSetupPromotionSurface(params.channelKey);
|
|
123
|
+
return loadedSetupSurface;
|
|
124
|
+
};
|
|
125
|
+
let bundledSetupSurface;
|
|
126
|
+
const resolveBundledSetupSurface = () => {
|
|
127
|
+
bundledSetupSurface ??= getBundledChannelSetupPromotionSurface(params.channelKey);
|
|
128
|
+
return bundledSetupSurface;
|
|
129
|
+
};
|
|
130
|
+
const keysToMove = entries.filter((key) => {
|
|
131
|
+
if (isStaticSingleAccountPromotionKey(key)) return true;
|
|
132
|
+
return Boolean(resolveLoadedSetupSurface()?.singleAccountKeysToMove?.includes(key) || resolveBundledSetupSurface()?.singleAccountKeysToMove?.includes(key));
|
|
133
|
+
});
|
|
134
|
+
if (!hasNamedAccounts || keysToMove.length === 0) return keysToMove;
|
|
135
|
+
const namedAccountPromotionKeys = resolveLoadedSetupSurface()?.namedAccountPromotionKeys ?? resolveBundledSetupSurface()?.namedAccountPromotionKeys;
|
|
136
|
+
if (!namedAccountPromotionKeys) return keysToMove;
|
|
137
|
+
return keysToMove.filter((key) => namedAccountPromotionKeys.includes(key));
|
|
138
|
+
}
|
|
139
|
+
//#endregion
|
|
140
|
+
//#region src/commands/doctor/shared/legacy-models-add-metadata.ts
|
|
141
|
+
const LEGACY_MODELS_ADD_CODEX_MODEL_IDS = new Set(["gpt-5.5", "gpt-5.5-pro"]);
|
|
142
|
+
function isLegacyModelsAddCodexMetadataModel(params) {
|
|
143
|
+
const model = params.model;
|
|
144
|
+
if (normalizeProviderId$1(params.provider) !== "openai-codex" || !model) return false;
|
|
145
|
+
const id = model.id?.trim().toLowerCase();
|
|
146
|
+
if (!id || !LEGACY_MODELS_ADD_CODEX_MODEL_IDS.has(id)) return false;
|
|
147
|
+
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;
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/commands/doctor/shared/legacy-talk-config-normalizer.ts
|
|
151
|
+
function buildLegacyTalkProviderCompat(talk) {
|
|
152
|
+
const compat = {};
|
|
153
|
+
for (const key of [
|
|
154
|
+
"voiceId",
|
|
155
|
+
"voiceAliases",
|
|
156
|
+
"modelId",
|
|
157
|
+
"outputFormat",
|
|
158
|
+
"apiKey"
|
|
159
|
+
]) if (talk[key] !== void 0) compat[key] = talk[key];
|
|
160
|
+
return Object.keys(compat).length > 0 ? compat : void 0;
|
|
161
|
+
}
|
|
162
|
+
function buildLegacyRealtimeTalkCompat(talk, normalizedTalk) {
|
|
163
|
+
if (talk.realtime !== void 0) return;
|
|
164
|
+
const compat = {};
|
|
165
|
+
for (const key of [
|
|
166
|
+
"model",
|
|
167
|
+
"voice",
|
|
168
|
+
"mode",
|
|
169
|
+
"transport",
|
|
170
|
+
"brain"
|
|
171
|
+
]) if (talk[key] !== void 0) compat[key] = talk[key];
|
|
172
|
+
if (Object.keys(compat).length === 0) return;
|
|
173
|
+
if (normalizedTalk.provider !== void 0) compat.provider = normalizedTalk.provider;
|
|
174
|
+
if (normalizedTalk.providers !== void 0) compat.providers = normalizedTalk.providers;
|
|
175
|
+
return normalizeTalkSection({ realtime: compat })?.realtime;
|
|
176
|
+
}
|
|
177
|
+
function isRecord(value) {
|
|
178
|
+
return Boolean(value && typeof value === "object" && !Array.isArray(value));
|
|
179
|
+
}
|
|
180
|
+
function normalizeLegacyTalkConfig(cfg, changes) {
|
|
181
|
+
const rawTalk = cfg.talk;
|
|
182
|
+
if (!isRecord(rawTalk)) return cfg;
|
|
183
|
+
const normalizedTalk = normalizeTalkSection(rawTalk) ?? {};
|
|
184
|
+
const legacyProviderCompat = buildLegacyTalkProviderCompat(rawTalk);
|
|
185
|
+
if (legacyProviderCompat) normalizedTalk.providers = {
|
|
186
|
+
...normalizedTalk.providers,
|
|
187
|
+
elevenlabs: {
|
|
188
|
+
...legacyProviderCompat,
|
|
189
|
+
...normalizedTalk.providers?.elevenlabs
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
const legacyRealtimeCompat = buildLegacyRealtimeTalkCompat(rawTalk, normalizedTalk);
|
|
193
|
+
if (legacyRealtimeCompat) normalizedTalk.realtime = {
|
|
194
|
+
...legacyRealtimeCompat,
|
|
195
|
+
...normalizedTalk.realtime
|
|
196
|
+
};
|
|
197
|
+
if (Object.keys(normalizedTalk).length === 0 || isDeepStrictEqual(normalizedTalk, rawTalk)) return cfg;
|
|
198
|
+
changes.push("Normalized talk.provider/providers shape (trimmed provider ids and merged missing compatibility fields).");
|
|
199
|
+
if (legacyRealtimeCompat) changes.push("Moved legacy realtime Talk provider/model fields into talk.realtime.");
|
|
200
|
+
return {
|
|
201
|
+
...cfg,
|
|
202
|
+
talk: normalizedTalk
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
//#endregion
|
|
206
|
+
//#region src/commands/doctor/shared/legacy-config-core-normalizers.ts
|
|
207
|
+
function normalizeLegacyCommandsConfig(cfg, changes) {
|
|
208
|
+
const rawCommands = cfg.commands;
|
|
209
|
+
if (!isRecord$1(rawCommands) || !("modelsWrite" in rawCommands)) return cfg;
|
|
210
|
+
const commands = { ...rawCommands };
|
|
211
|
+
delete commands.modelsWrite;
|
|
212
|
+
changes.push("Removed deprecated commands.modelsWrite (/models add is deprecated).");
|
|
213
|
+
return {
|
|
214
|
+
...cfg,
|
|
215
|
+
commands
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
function normalizeLegacyBrowserConfig(cfg, changes) {
|
|
219
|
+
const rawBrowser = cfg.browser;
|
|
220
|
+
if (!isRecord$1(rawBrowser)) return cfg;
|
|
221
|
+
const browser = structuredClone(rawBrowser);
|
|
222
|
+
let browserChanged = false;
|
|
223
|
+
if ("relayBindHost" in browser) {
|
|
224
|
+
delete browser.relayBindHost;
|
|
225
|
+
browserChanged = true;
|
|
226
|
+
changes.push("Removed browser.relayBindHost (legacy Chrome extension relay setting; host-local Chrome now uses Chrome MCP existing-session attach).");
|
|
227
|
+
}
|
|
228
|
+
const rawProfiles = browser.profiles;
|
|
229
|
+
if (isRecord$1(rawProfiles)) {
|
|
230
|
+
const profiles = { ...rawProfiles };
|
|
231
|
+
let profilesChanged = false;
|
|
232
|
+
for (const [profileName, rawProfile] of Object.entries(rawProfiles)) {
|
|
233
|
+
if (!isRecord$1(rawProfile)) continue;
|
|
234
|
+
if ((normalizeOptionalString(rawProfile.driver) ?? "") !== "extension") continue;
|
|
235
|
+
profiles[profileName] = {
|
|
236
|
+
...rawProfile,
|
|
237
|
+
driver: "existing-session"
|
|
238
|
+
};
|
|
239
|
+
profilesChanged = true;
|
|
240
|
+
changes.push(`Moved browser.profiles.${profileName}.driver "extension" → "existing-session" (Chrome MCP attach).`);
|
|
241
|
+
}
|
|
242
|
+
if (profilesChanged) {
|
|
243
|
+
browser.profiles = profiles;
|
|
244
|
+
browserChanged = true;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
const rawSsrFPolicy = browser.ssrfPolicy;
|
|
248
|
+
if (isRecord$1(rawSsrFPolicy) && "allowPrivateNetwork" in rawSsrFPolicy) {
|
|
249
|
+
const legacyAllowPrivateNetwork = rawSsrFPolicy.allowPrivateNetwork;
|
|
250
|
+
const currentDangerousAllowPrivateNetwork = rawSsrFPolicy.dangerouslyAllowPrivateNetwork;
|
|
251
|
+
let resolvedDangerousAllowPrivateNetwork = currentDangerousAllowPrivateNetwork;
|
|
252
|
+
if (typeof legacyAllowPrivateNetwork === "boolean" || typeof currentDangerousAllowPrivateNetwork === "boolean") resolvedDangerousAllowPrivateNetwork = legacyAllowPrivateNetwork === true || currentDangerousAllowPrivateNetwork === true;
|
|
253
|
+
else if (currentDangerousAllowPrivateNetwork === void 0) resolvedDangerousAllowPrivateNetwork = legacyAllowPrivateNetwork;
|
|
254
|
+
const nextSsrFPolicy = { ...rawSsrFPolicy };
|
|
255
|
+
delete nextSsrFPolicy.allowPrivateNetwork;
|
|
256
|
+
if (resolvedDangerousAllowPrivateNetwork !== void 0) nextSsrFPolicy.dangerouslyAllowPrivateNetwork = resolvedDangerousAllowPrivateNetwork;
|
|
257
|
+
browser.ssrfPolicy = nextSsrFPolicy;
|
|
258
|
+
browserChanged = true;
|
|
259
|
+
changes.push(`Moved browser.ssrfPolicy.allowPrivateNetwork → browser.ssrfPolicy.dangerouslyAllowPrivateNetwork (${String(resolvedDangerousAllowPrivateNetwork)}).`);
|
|
260
|
+
}
|
|
261
|
+
if (!browserChanged) return cfg;
|
|
262
|
+
return {
|
|
263
|
+
...cfg,
|
|
264
|
+
browser
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
function seedMissingDefaultAccountsFromSingleAccountBase(cfg, changes) {
|
|
268
|
+
const channels = cfg.channels;
|
|
269
|
+
if (!channels) return cfg;
|
|
270
|
+
let channelsChanged = false;
|
|
271
|
+
const nextChannels = { ...channels };
|
|
272
|
+
for (const [channelId, rawChannel] of Object.entries(channels)) {
|
|
273
|
+
if (!isRecord$1(rawChannel)) continue;
|
|
274
|
+
const rawAccounts = rawChannel.accounts;
|
|
275
|
+
if (!isRecord$1(rawAccounts)) continue;
|
|
276
|
+
const accountKeys = Object.keys(rawAccounts);
|
|
277
|
+
if (accountKeys.length === 0) continue;
|
|
278
|
+
if (accountKeys.some((key) => normalizeOptionalLowercaseString(key) === "default")) continue;
|
|
279
|
+
const keysToMove = resolveSingleAccountKeysToMove({
|
|
280
|
+
channelKey: channelId,
|
|
281
|
+
channel: rawChannel
|
|
282
|
+
});
|
|
283
|
+
if (keysToMove.length === 0) continue;
|
|
284
|
+
const defaultAccount = {};
|
|
285
|
+
for (const key of keysToMove) {
|
|
286
|
+
const value = rawChannel[key];
|
|
287
|
+
defaultAccount[key] = value && typeof value === "object" ? structuredClone(value) : value;
|
|
288
|
+
}
|
|
289
|
+
const nextChannel = { ...rawChannel };
|
|
290
|
+
for (const key of keysToMove) delete nextChannel[key];
|
|
291
|
+
nextChannel.accounts = {
|
|
292
|
+
...rawAccounts,
|
|
293
|
+
[DEFAULT_ACCOUNT_ID]: defaultAccount
|
|
294
|
+
};
|
|
295
|
+
nextChannels[channelId] = nextChannel;
|
|
296
|
+
channelsChanged = true;
|
|
297
|
+
changes.push(`Moved channels.${channelId} single-account top-level values into channels.${channelId}.accounts.default.`);
|
|
298
|
+
}
|
|
299
|
+
if (!channelsChanged) return cfg;
|
|
300
|
+
return {
|
|
301
|
+
...cfg,
|
|
302
|
+
channels: nextChannels
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
const LEGACY_CODEX_CLI_RUNTIME_ID = "codex-cli";
|
|
306
|
+
const CODEX_APP_SERVER_RUNTIME_ID = "codex";
|
|
307
|
+
function resolveLegacyWholeAgentRuntimePolicy(raw) {
|
|
308
|
+
if (!isRecord$1(raw)) return;
|
|
309
|
+
const runtime = normalizeOptionalLowercaseString(raw.id);
|
|
310
|
+
if (!runtime || runtime === "auto" || runtime === "pi") return;
|
|
311
|
+
const alias = listLegacyRuntimeModelProviderAliases().find((entry) => entry.cli && normalizeProviderId$1(entry.runtime) === runtime);
|
|
312
|
+
return alias ? {
|
|
313
|
+
provider: alias.provider,
|
|
314
|
+
runtime: alias.runtime,
|
|
315
|
+
requiresRuntimePolicy: alias.requiresRuntimePolicy
|
|
316
|
+
} : void 0;
|
|
317
|
+
}
|
|
318
|
+
function migratedRuntimeRequiresPolicy(legacyProvider) {
|
|
319
|
+
return legacyRuntimeModelAliasRequiresRuntimePolicy(legacyProvider);
|
|
320
|
+
}
|
|
321
|
+
function mergeModelEntry(legacyEntry, currentEntry) {
|
|
322
|
+
if (!isRecord$1(legacyEntry) || !isRecord$1(currentEntry)) return currentEntry ?? legacyEntry;
|
|
323
|
+
return {
|
|
324
|
+
...legacyEntry,
|
|
325
|
+
...currentEntry
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
function normalizeLegacyCodexCliAgentRuntimePolicy(raw) {
|
|
329
|
+
if (!isRecord$1(raw)) return {
|
|
330
|
+
value: raw,
|
|
331
|
+
changed: false
|
|
332
|
+
};
|
|
333
|
+
if (normalizeOptionalLowercaseString(raw.id) !== LEGACY_CODEX_CLI_RUNTIME_ID) return {
|
|
334
|
+
value: raw,
|
|
335
|
+
changed: false
|
|
336
|
+
};
|
|
337
|
+
return {
|
|
338
|
+
value: {
|
|
339
|
+
...raw,
|
|
340
|
+
id: CODEX_APP_SERVER_RUNTIME_ID
|
|
341
|
+
},
|
|
342
|
+
changed: true
|
|
343
|
+
};
|
|
344
|
+
}
|
|
345
|
+
function normalizeLegacyRuntimeAgentModelConfig(raw) {
|
|
346
|
+
if (typeof raw === "string") {
|
|
347
|
+
const migrated = migrateLegacyRuntimeModelRef(raw);
|
|
348
|
+
return migrated ? {
|
|
349
|
+
value: migrated.ref,
|
|
350
|
+
changed: true,
|
|
351
|
+
selectedRuntime: migrated.runtime,
|
|
352
|
+
selectedRuntimeRequiresPolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider),
|
|
353
|
+
selectedRefs: [{
|
|
354
|
+
ref: migrated.ref,
|
|
355
|
+
runtime: migrated.runtime,
|
|
356
|
+
requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider)
|
|
357
|
+
}]
|
|
358
|
+
} : {
|
|
359
|
+
value: raw,
|
|
360
|
+
changed: false,
|
|
361
|
+
selectedRuntimeRequiresPolicy: false,
|
|
362
|
+
selectedRefs: []
|
|
363
|
+
};
|
|
364
|
+
}
|
|
365
|
+
if (!isRecord$1(raw)) return {
|
|
366
|
+
value: raw,
|
|
367
|
+
changed: false,
|
|
368
|
+
selectedRuntimeRequiresPolicy: false,
|
|
369
|
+
selectedRefs: []
|
|
370
|
+
};
|
|
371
|
+
const migratedPrimary = typeof raw.primary === "string" ? migrateLegacyRuntimeModelRef(raw.primary) : null;
|
|
372
|
+
let changed = false;
|
|
373
|
+
const next = { ...raw };
|
|
374
|
+
const selectedRefs = [];
|
|
375
|
+
let selectedRuntime = migratedPrimary?.runtime;
|
|
376
|
+
let selectedRuntimeRequiresPolicy = migratedPrimary !== null && migratedRuntimeRequiresPolicy(migratedPrimary.legacyProvider);
|
|
377
|
+
if (migratedPrimary) {
|
|
378
|
+
next.primary = migratedPrimary.ref;
|
|
379
|
+
selectedRefs.push({
|
|
380
|
+
ref: migratedPrimary.ref,
|
|
381
|
+
runtime: migratedPrimary.runtime,
|
|
382
|
+
requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migratedPrimary.legacyProvider)
|
|
383
|
+
});
|
|
384
|
+
changed = true;
|
|
385
|
+
}
|
|
386
|
+
if (Array.isArray(raw.fallbacks)) next.fallbacks = raw.fallbacks.map((fallback) => {
|
|
387
|
+
if (typeof fallback !== "string") return fallback;
|
|
388
|
+
const migratedFallback = migrateLegacyRuntimeModelRef(fallback);
|
|
389
|
+
if (migratedFallback && (migratedFallback.runtime === selectedRuntime || migratedFallback.legacyProvider === LEGACY_CODEX_CLI_RUNTIME_ID)) {
|
|
390
|
+
selectedRuntime ??= migratedFallback.runtime;
|
|
391
|
+
selectedRuntimeRequiresPolicy ||= migratedRuntimeRequiresPolicy(migratedFallback.legacyProvider);
|
|
392
|
+
selectedRefs.push({
|
|
393
|
+
ref: migratedFallback.ref,
|
|
394
|
+
runtime: migratedFallback.runtime,
|
|
395
|
+
requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migratedFallback.legacyProvider)
|
|
396
|
+
});
|
|
397
|
+
changed = true;
|
|
398
|
+
return migratedFallback.ref;
|
|
399
|
+
}
|
|
400
|
+
return fallback;
|
|
401
|
+
});
|
|
402
|
+
if (!changed) return {
|
|
403
|
+
value: raw,
|
|
404
|
+
changed: false,
|
|
405
|
+
selectedRuntimeRequiresPolicy: false,
|
|
406
|
+
selectedRefs: []
|
|
407
|
+
};
|
|
408
|
+
return {
|
|
409
|
+
value: next,
|
|
410
|
+
changed: true,
|
|
411
|
+
selectedRuntime,
|
|
412
|
+
selectedRuntimeRequiresPolicy,
|
|
413
|
+
selectedRefs
|
|
414
|
+
};
|
|
415
|
+
}
|
|
416
|
+
function runtimeNeedsExplicitModelPolicy(runtime) {
|
|
417
|
+
return Boolean(runtime && runtime !== "codex");
|
|
418
|
+
}
|
|
419
|
+
function modelEntryWithRuntimePolicy(entry, runtime) {
|
|
420
|
+
const base = isRecord$1(entry) ? { ...entry } : {};
|
|
421
|
+
const currentRuntime = isRecord$1(base.agentRuntime) ? normalizeOptionalLowercaseString(base.agentRuntime.id) : void 0;
|
|
422
|
+
if (!currentRuntime || currentRuntime === "auto") base.agentRuntime = {
|
|
423
|
+
...isRecord$1(base.agentRuntime) ? base.agentRuntime : {},
|
|
424
|
+
id: runtime
|
|
425
|
+
};
|
|
426
|
+
return base;
|
|
427
|
+
}
|
|
428
|
+
function mergeModelEntryWithRuntimePolicy(legacyEntry, currentEntry, runtime, requiresRuntimePolicy = runtimeNeedsExplicitModelPolicy(runtime)) {
|
|
429
|
+
const merged = mergeModelEntry(legacyEntry, currentEntry);
|
|
430
|
+
return runtime && requiresRuntimePolicy ? modelEntryWithRuntimePolicy(merged, runtime) : merged;
|
|
431
|
+
}
|
|
432
|
+
function normalizeLegacyRuntimeAllowlistModels(rawModels, selectedRuntime, selectedRuntimeRequiresPolicy) {
|
|
433
|
+
if (!isRecord$1(rawModels)) return {
|
|
434
|
+
value: rawModels,
|
|
435
|
+
changed: false
|
|
436
|
+
};
|
|
437
|
+
let changed = false;
|
|
438
|
+
const next = {};
|
|
439
|
+
const legacyEntries = [];
|
|
440
|
+
for (const [rawKey, entry] of Object.entries(rawModels)) {
|
|
441
|
+
const migrated = migrateLegacyRuntimeModelRef(rawKey);
|
|
442
|
+
if (migrated && (migrated.runtime === selectedRuntime || migrated.legacyProvider === LEGACY_CODEX_CLI_RUNTIME_ID)) {
|
|
443
|
+
changed = true;
|
|
444
|
+
next[rawKey] = mergeModelEntry(entry, next[rawKey]);
|
|
445
|
+
legacyEntries.push({
|
|
446
|
+
migratedKey: migrated.ref,
|
|
447
|
+
entry,
|
|
448
|
+
runtime: migrated.runtime,
|
|
449
|
+
requiresRuntimePolicy: migratedRuntimeRequiresPolicy(migrated.legacyProvider)
|
|
450
|
+
});
|
|
451
|
+
continue;
|
|
452
|
+
}
|
|
453
|
+
next[rawKey] = mergeModelEntry(entry, next[rawKey]);
|
|
454
|
+
}
|
|
455
|
+
for (const { migratedKey, entry, runtime, requiresRuntimePolicy } of legacyEntries) next[migratedKey] = mergeModelEntryWithRuntimePolicy(entry, next[migratedKey], runtime, requiresRuntimePolicy || runtime === selectedRuntime && selectedRuntimeRequiresPolicy);
|
|
456
|
+
return {
|
|
457
|
+
value: next,
|
|
458
|
+
changed
|
|
459
|
+
};
|
|
460
|
+
}
|
|
461
|
+
function ensureSelectedModelRuntimePolicies(rawModels, selectedRefs) {
|
|
462
|
+
if (selectedRefs.length === 0) return {
|
|
463
|
+
value: rawModels,
|
|
464
|
+
changed: false
|
|
465
|
+
};
|
|
466
|
+
const next = isRecord$1(rawModels) ? { ...rawModels } : {};
|
|
467
|
+
let changed = false;
|
|
468
|
+
for (const { ref, runtime, requiresRuntimePolicy } of selectedRefs) {
|
|
469
|
+
if (!requiresRuntimePolicy) continue;
|
|
470
|
+
const current = next[ref];
|
|
471
|
+
const updated = modelEntryWithRuntimePolicy(current, runtime);
|
|
472
|
+
if (JSON.stringify(updated) !== JSON.stringify(current ?? {})) {
|
|
473
|
+
next[ref] = updated;
|
|
474
|
+
changed = true;
|
|
475
|
+
}
|
|
476
|
+
}
|
|
477
|
+
return {
|
|
478
|
+
value: next,
|
|
479
|
+
changed
|
|
480
|
+
};
|
|
481
|
+
}
|
|
482
|
+
function selectedCanonicalModelRefsForRuntimePolicy(rawModel, provider, runtime, requiresRuntimePolicy) {
|
|
483
|
+
const refs = [];
|
|
484
|
+
const addRef = (rawRef) => {
|
|
485
|
+
if (typeof rawRef !== "string") return;
|
|
486
|
+
const trimmed = rawRef.trim();
|
|
487
|
+
const slash = trimmed.indexOf("/");
|
|
488
|
+
if (slash <= 0 || slash >= trimmed.length - 1) return;
|
|
489
|
+
if (normalizeProviderId$1(trimmed.slice(0, slash)) !== normalizeProviderId$1(provider)) return;
|
|
490
|
+
refs.push({
|
|
491
|
+
ref: trimmed,
|
|
492
|
+
runtime,
|
|
493
|
+
requiresRuntimePolicy
|
|
494
|
+
});
|
|
495
|
+
};
|
|
496
|
+
if (typeof rawModel === "string") {
|
|
497
|
+
addRef(rawModel);
|
|
498
|
+
return refs;
|
|
499
|
+
}
|
|
500
|
+
if (!isRecord$1(rawModel)) return refs;
|
|
501
|
+
addRef(rawModel.primary);
|
|
502
|
+
if (Array.isArray(rawModel.fallbacks)) for (const fallback of rawModel.fallbacks) addRef(fallback);
|
|
503
|
+
return refs;
|
|
504
|
+
}
|
|
505
|
+
function normalizeLegacyCodexCliRuntimePinsInModels(rawModels, path, changes) {
|
|
506
|
+
if (!isRecord$1(rawModels)) return {
|
|
507
|
+
value: rawModels,
|
|
508
|
+
changed: false
|
|
509
|
+
};
|
|
510
|
+
let changed = false;
|
|
511
|
+
const next = { ...rawModels };
|
|
512
|
+
for (const [modelRef, rawEntry] of Object.entries(rawModels)) {
|
|
513
|
+
if (!isRecord$1(rawEntry)) continue;
|
|
514
|
+
const runtime = normalizeLegacyCodexCliAgentRuntimePolicy(rawEntry.agentRuntime);
|
|
515
|
+
if (!runtime.changed) continue;
|
|
516
|
+
next[modelRef] = {
|
|
517
|
+
...rawEntry,
|
|
518
|
+
agentRuntime: runtime.value
|
|
519
|
+
};
|
|
520
|
+
changed = true;
|
|
521
|
+
changes.push(`Moved ${path}.${sanitizeForLog(modelRef)} agentRuntime.id from codex-cli to codex.`);
|
|
522
|
+
}
|
|
523
|
+
return {
|
|
524
|
+
value: next,
|
|
525
|
+
changed
|
|
526
|
+
};
|
|
527
|
+
}
|
|
528
|
+
function normalizeLegacyRuntimeAgentContainer(raw, path, changes) {
|
|
529
|
+
let changed = false;
|
|
530
|
+
const next = { ...raw };
|
|
531
|
+
const legacyWholeAgentRuntime = resolveLegacyWholeAgentRuntimePolicy(raw.agentRuntime);
|
|
532
|
+
const model = normalizeLegacyRuntimeAgentModelConfig(raw.model);
|
|
533
|
+
if (model.changed) {
|
|
534
|
+
next.model = model.value;
|
|
535
|
+
changed = true;
|
|
536
|
+
const runtimeSuffix = model.selectedRuntime ? ` and selected ${model.selectedRuntime} runtime` : "";
|
|
537
|
+
changes.push(`Moved ${path}.model legacy runtime primary refs to canonical provider refs${runtimeSuffix}.`);
|
|
538
|
+
}
|
|
539
|
+
const models = normalizeLegacyRuntimeAllowlistModels(raw.models, model.selectedRuntime, model.selectedRuntimeRequiresPolicy);
|
|
540
|
+
if (models.changed) {
|
|
541
|
+
next.models = models.value;
|
|
542
|
+
changed = true;
|
|
543
|
+
changes.push(`Moved ${path}.models legacy runtime keys to canonical provider keys.`);
|
|
544
|
+
}
|
|
545
|
+
if (model.selectedRuntime) {
|
|
546
|
+
const modelRuntimes = ensureSelectedModelRuntimePolicies(next.models, model.selectedRefs);
|
|
547
|
+
if (modelRuntimes.changed) {
|
|
548
|
+
next.models = modelRuntimes.value;
|
|
549
|
+
changed = true;
|
|
550
|
+
changes.push(`Selected ${model.selectedRuntime} runtime for ${path}.models entries.`);
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
if (legacyWholeAgentRuntime) {
|
|
554
|
+
const selectedRefs = selectedCanonicalModelRefsForRuntimePolicy(next.model ?? raw.model, legacyWholeAgentRuntime.provider, legacyWholeAgentRuntime.runtime, legacyWholeAgentRuntime.requiresRuntimePolicy);
|
|
555
|
+
const modelRuntimes = ensureSelectedModelRuntimePolicies(next.models, selectedRefs);
|
|
556
|
+
if (modelRuntimes.changed) {
|
|
557
|
+
next.models = modelRuntimes.value;
|
|
558
|
+
changed = true;
|
|
559
|
+
changes.push(`Moved ${path}.agentRuntime.id ${legacyWholeAgentRuntime.runtime} to matching ${legacyWholeAgentRuntime.provider} model runtime policy.`);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
const codexCliRuntimePins = normalizeLegacyCodexCliRuntimePinsInModels(next.models, `${path}.models`, changes);
|
|
563
|
+
if (codexCliRuntimePins.changed) {
|
|
564
|
+
next.models = codexCliRuntimePins.value;
|
|
565
|
+
changed = true;
|
|
566
|
+
}
|
|
567
|
+
return {
|
|
568
|
+
value: next,
|
|
569
|
+
changed
|
|
570
|
+
};
|
|
571
|
+
}
|
|
572
|
+
function normalizeLegacyCodexCliProviderRuntimePins(cfg, changes) {
|
|
573
|
+
const rawModels = cfg.models;
|
|
574
|
+
if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return {
|
|
575
|
+
config: cfg,
|
|
576
|
+
changed: false
|
|
577
|
+
};
|
|
578
|
+
let changed = false;
|
|
579
|
+
const nextProviders = { ...rawModels.providers };
|
|
580
|
+
for (const [providerId, rawProvider] of Object.entries(rawModels.providers)) {
|
|
581
|
+
if (!isRecord$1(rawProvider)) continue;
|
|
582
|
+
let providerChanged = false;
|
|
583
|
+
const nextProvider = { ...rawProvider };
|
|
584
|
+
const providerRuntime = normalizeLegacyCodexCliAgentRuntimePolicy(rawProvider.agentRuntime);
|
|
585
|
+
if (providerRuntime.changed) {
|
|
586
|
+
nextProvider.agentRuntime = providerRuntime.value;
|
|
587
|
+
providerChanged = true;
|
|
588
|
+
changes.push(`Moved models.providers.${sanitizeForLog(providerId)} agentRuntime.id from codex-cli to codex.`);
|
|
589
|
+
}
|
|
590
|
+
if (Array.isArray(rawProvider.models)) {
|
|
591
|
+
const nextProviderModels = rawProvider.models.map((entry, index) => {
|
|
592
|
+
if (!isRecord$1(entry)) return entry;
|
|
593
|
+
const runtime = normalizeLegacyCodexCliAgentRuntimePolicy(entry.agentRuntime);
|
|
594
|
+
if (!runtime.changed) return entry;
|
|
595
|
+
providerChanged = true;
|
|
596
|
+
const modelId = normalizeOptionalString(entry.id) ?? `[${index}]`;
|
|
597
|
+
changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.models.${sanitizeForLog(modelId)} agentRuntime.id from codex-cli to codex.`);
|
|
598
|
+
return Object.assign({}, entry, { agentRuntime: runtime.value });
|
|
599
|
+
});
|
|
600
|
+
if (providerChanged) nextProvider.models = nextProviderModels;
|
|
601
|
+
}
|
|
602
|
+
if (providerChanged) {
|
|
603
|
+
nextProviders[providerId] = nextProvider;
|
|
604
|
+
changed = true;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
return changed ? {
|
|
608
|
+
config: {
|
|
609
|
+
...cfg,
|
|
610
|
+
models: {
|
|
611
|
+
...rawModels,
|
|
612
|
+
providers: nextProviders
|
|
613
|
+
}
|
|
614
|
+
},
|
|
615
|
+
changed: true
|
|
616
|
+
} : {
|
|
617
|
+
config: cfg,
|
|
618
|
+
changed: false
|
|
619
|
+
};
|
|
620
|
+
}
|
|
621
|
+
function normalizeLegacyRuntimeModelRefs(cfg, changes) {
|
|
622
|
+
const cfgWithProviders = normalizeLegacyCodexCliProviderRuntimePins(cfg, changes).config;
|
|
623
|
+
const rawAgents = cfgWithProviders.agents;
|
|
624
|
+
if (!isRecord$1(rawAgents)) return cfgWithProviders;
|
|
625
|
+
let changed = false;
|
|
626
|
+
const nextAgents = { ...rawAgents };
|
|
627
|
+
if (isRecord$1(rawAgents.defaults)) {
|
|
628
|
+
const defaults = normalizeLegacyRuntimeAgentContainer(rawAgents.defaults, "agents.defaults", changes);
|
|
629
|
+
if (defaults.changed) {
|
|
630
|
+
nextAgents.defaults = defaults.value;
|
|
631
|
+
changed = true;
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
if (Array.isArray(rawAgents.list)) {
|
|
635
|
+
const nextList = rawAgents.list.map((entry, index) => {
|
|
636
|
+
if (!isRecord$1(entry)) return entry;
|
|
637
|
+
const agentId = normalizeOptionalString(entry.id);
|
|
638
|
+
const agent = normalizeLegacyRuntimeAgentContainer(entry, agentId ? `agents.list.${sanitizeForLog(agentId)}` : `agents.list[${index}]`, changes);
|
|
639
|
+
if (agent.changed) {
|
|
640
|
+
changed = true;
|
|
641
|
+
return agent.value;
|
|
642
|
+
}
|
|
643
|
+
return entry;
|
|
644
|
+
});
|
|
645
|
+
if (changed) nextAgents.list = nextList;
|
|
646
|
+
}
|
|
647
|
+
return changed ? {
|
|
648
|
+
...cfgWithProviders,
|
|
649
|
+
agents: nextAgents
|
|
650
|
+
} : cfgWithProviders;
|
|
651
|
+
}
|
|
652
|
+
function normalizeLegacyOpenAICodexModelsAddMetadata(cfg, changes) {
|
|
653
|
+
const rawModels = cfg.models;
|
|
654
|
+
if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return cfg;
|
|
655
|
+
const rawProviders = rawModels.providers;
|
|
656
|
+
let providersChanged = false;
|
|
657
|
+
const nextProviders = { ...rawProviders };
|
|
658
|
+
for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
|
|
659
|
+
if (normalizeProviderId$1(providerId) !== "openai-codex" || !isRecord$1(rawProvider)) continue;
|
|
660
|
+
const rawProviderModels = rawProvider.models;
|
|
661
|
+
if (!Array.isArray(rawProviderModels)) continue;
|
|
662
|
+
let providerChanged = false;
|
|
663
|
+
const nextModels = [];
|
|
664
|
+
for (const model of rawProviderModels) if (isRecord$1(model) && !("metadataSource" in model) && isLegacyModelsAddCodexMetadataModel({
|
|
665
|
+
provider: providerId,
|
|
666
|
+
model
|
|
667
|
+
})) {
|
|
668
|
+
providerChanged = true;
|
|
669
|
+
const safeProviderId = sanitizeForLog(providerId);
|
|
670
|
+
const safeModelId = sanitizeForLog(normalizeOptionalString(model.id) ?? "unknown");
|
|
671
|
+
changes.push(`Marked models.providers.${safeProviderId}.models.${safeModelId} as /models add metadata so official OpenAI Codex metadata can override it.`);
|
|
672
|
+
nextModels.push(Object.assign({}, model, { metadataSource: "models-add" }));
|
|
673
|
+
} else nextModels.push(model);
|
|
674
|
+
if (!providerChanged) continue;
|
|
675
|
+
nextProviders[providerId] = {
|
|
676
|
+
...rawProvider,
|
|
677
|
+
models: nextModels
|
|
678
|
+
};
|
|
679
|
+
providersChanged = true;
|
|
680
|
+
}
|
|
681
|
+
if (!providersChanged) return cfg;
|
|
682
|
+
return {
|
|
683
|
+
...cfg,
|
|
684
|
+
models: {
|
|
685
|
+
...rawModels,
|
|
686
|
+
providers: nextProviders
|
|
687
|
+
}
|
|
688
|
+
};
|
|
689
|
+
}
|
|
690
|
+
function normalizeLegacyOpenAIModelProviderApi(cfg, changes) {
|
|
691
|
+
const rawModels = cfg.models;
|
|
692
|
+
if (!isRecord$1(rawModels) || !isRecord$1(rawModels.providers)) return cfg;
|
|
693
|
+
const rawProviders = rawModels.providers;
|
|
694
|
+
let providersChanged = false;
|
|
695
|
+
const nextProviders = { ...rawProviders };
|
|
696
|
+
for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
|
|
697
|
+
if (!isRecord$1(rawProvider)) continue;
|
|
698
|
+
let providerChanged = false;
|
|
699
|
+
const nextProvider = { ...rawProvider };
|
|
700
|
+
if (nextProvider.api === "openai") {
|
|
701
|
+
nextProvider.api = "openai-completions";
|
|
702
|
+
providerChanged = true;
|
|
703
|
+
changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.api "openai" → "openai-completions".`);
|
|
704
|
+
}
|
|
705
|
+
const rawProviderModels = rawProvider.models;
|
|
706
|
+
if (Array.isArray(rawProviderModels)) {
|
|
707
|
+
let modelsChanged = false;
|
|
708
|
+
const nextModels = [];
|
|
709
|
+
rawProviderModels.forEach((model, index) => {
|
|
710
|
+
if (!isRecord$1(model) || model.api !== "openai") {
|
|
711
|
+
nextModels.push(model);
|
|
712
|
+
return;
|
|
713
|
+
}
|
|
714
|
+
modelsChanged = true;
|
|
715
|
+
changes.push(`Moved models.providers.${sanitizeForLog(providerId)}.models[${index}].api "openai" → "openai-completions".`);
|
|
716
|
+
nextModels.push({
|
|
717
|
+
...model,
|
|
718
|
+
api: "openai-completions"
|
|
719
|
+
});
|
|
720
|
+
});
|
|
721
|
+
if (modelsChanged) {
|
|
722
|
+
nextProvider.models = nextModels;
|
|
723
|
+
providerChanged = true;
|
|
724
|
+
}
|
|
725
|
+
}
|
|
726
|
+
if (!providerChanged) continue;
|
|
727
|
+
nextProviders[providerId] = nextProvider;
|
|
728
|
+
providersChanged = true;
|
|
729
|
+
}
|
|
730
|
+
if (!providersChanged) return cfg;
|
|
731
|
+
return {
|
|
732
|
+
...cfg,
|
|
733
|
+
models: {
|
|
734
|
+
...rawModels,
|
|
735
|
+
providers: nextProviders
|
|
736
|
+
}
|
|
737
|
+
};
|
|
738
|
+
}
|
|
739
|
+
function normalizeLegacyNanoBananaSkill(cfg, changes) {
|
|
740
|
+
const NANO_BANANA_SKILL_KEY = "nano-banana-pro";
|
|
741
|
+
const NANO_BANANA_MODEL = "google/gemini-3-pro-image-preview";
|
|
742
|
+
const rawSkills = cfg.skills;
|
|
743
|
+
if (!isRecord$1(rawSkills)) return cfg;
|
|
744
|
+
let next = cfg;
|
|
745
|
+
let skillsChanged = false;
|
|
746
|
+
const skills = structuredClone(rawSkills);
|
|
747
|
+
if (Array.isArray(skills.allowBundled)) {
|
|
748
|
+
const allowBundled = skills.allowBundled.filter((value) => typeof value !== "string" || value.trim() !== NANO_BANANA_SKILL_KEY);
|
|
749
|
+
if (allowBundled.length !== skills.allowBundled.length) {
|
|
750
|
+
if (allowBundled.length === 0) {
|
|
751
|
+
delete skills.allowBundled;
|
|
752
|
+
changes.push(`Removed skills.allowBundled entry for ${NANO_BANANA_SKILL_KEY}.`);
|
|
753
|
+
} else {
|
|
754
|
+
skills.allowBundled = allowBundled;
|
|
755
|
+
changes.push(`Removed ${NANO_BANANA_SKILL_KEY} from skills.allowBundled.`);
|
|
756
|
+
}
|
|
757
|
+
skillsChanged = true;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
const rawEntries = skills.entries;
|
|
761
|
+
if (!isRecord$1(rawEntries)) {
|
|
762
|
+
if (!skillsChanged) return cfg;
|
|
763
|
+
return {
|
|
764
|
+
...cfg,
|
|
765
|
+
skills
|
|
766
|
+
};
|
|
767
|
+
}
|
|
768
|
+
const rawLegacyEntry = rawEntries[NANO_BANANA_SKILL_KEY];
|
|
769
|
+
if (!isRecord$1(rawLegacyEntry)) {
|
|
770
|
+
if (!skillsChanged) return cfg;
|
|
771
|
+
return {
|
|
772
|
+
...cfg,
|
|
773
|
+
skills
|
|
774
|
+
};
|
|
775
|
+
}
|
|
776
|
+
if (next.agents?.defaults?.imageGenerationModel === void 0) {
|
|
777
|
+
next = {
|
|
778
|
+
...next,
|
|
779
|
+
agents: {
|
|
780
|
+
...next.agents,
|
|
781
|
+
defaults: {
|
|
782
|
+
...next.agents?.defaults,
|
|
783
|
+
imageGenerationModel: { primary: NANO_BANANA_MODEL }
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
};
|
|
787
|
+
changes.push(`Moved skills.entries.${NANO_BANANA_SKILL_KEY} → agents.defaults.imageGenerationModel.primary (${NANO_BANANA_MODEL}).`);
|
|
788
|
+
}
|
|
789
|
+
const legacyEnvApiKey = normalizeOptionalString((isRecord$1(rawLegacyEntry.env) ? rawLegacyEntry.env : void 0)?.GEMINI_API_KEY) ?? "";
|
|
790
|
+
const legacyApiKey = legacyEnvApiKey || (typeof rawLegacyEntry.apiKey === "string" ? normalizeOptionalString(rawLegacyEntry.apiKey) : rawLegacyEntry.apiKey && isRecord$1(rawLegacyEntry.apiKey) ? structuredClone(rawLegacyEntry.apiKey) : void 0);
|
|
791
|
+
const rawModels = isRecord$1(next.models) ? structuredClone(next.models) : {};
|
|
792
|
+
const rawProviders = isRecord$1(rawModels.providers) ? { ...rawModels.providers } : {};
|
|
793
|
+
const rawGoogle = isRecord$1(rawProviders.google) ? { ...rawProviders.google } : {};
|
|
794
|
+
if (!(rawGoogle.apiKey !== void 0) && legacyApiKey) {
|
|
795
|
+
rawGoogle.apiKey = legacyApiKey;
|
|
796
|
+
if (!rawGoogle.baseUrl) rawGoogle.baseUrl = DEFAULT_GOOGLE_API_BASE_URL;
|
|
797
|
+
if (!Array.isArray(rawGoogle.models)) rawGoogle.models = [];
|
|
798
|
+
rawProviders.google = rawGoogle;
|
|
799
|
+
rawModels.providers = rawProviders;
|
|
800
|
+
next = {
|
|
801
|
+
...next,
|
|
802
|
+
models: rawModels
|
|
803
|
+
};
|
|
804
|
+
changes.push(`Moved skills.entries.${NANO_BANANA_SKILL_KEY}.${legacyEnvApiKey ? "env.GEMINI_API_KEY" : "apiKey"} → models.providers.google.apiKey.`);
|
|
805
|
+
}
|
|
806
|
+
const entries = { ...rawEntries };
|
|
807
|
+
delete entries[NANO_BANANA_SKILL_KEY];
|
|
808
|
+
if (Object.keys(entries).length === 0) delete skills.entries;
|
|
809
|
+
else skills.entries = entries;
|
|
810
|
+
changes.push(`Removed legacy skills.entries.${NANO_BANANA_SKILL_KEY}.`);
|
|
811
|
+
skillsChanged = true;
|
|
812
|
+
if (Object.keys(skills).length === 0) {
|
|
813
|
+
const { skills: _ignored, ...rest } = next;
|
|
814
|
+
return rest;
|
|
815
|
+
}
|
|
816
|
+
if (!skillsChanged) return next;
|
|
817
|
+
return {
|
|
818
|
+
...next,
|
|
819
|
+
skills
|
|
820
|
+
};
|
|
821
|
+
}
|
|
822
|
+
function normalizeLegacyCrossContextMessageConfig(cfg, changes) {
|
|
823
|
+
const rawTools = cfg.tools;
|
|
824
|
+
if (!isRecord$1(rawTools)) return cfg;
|
|
825
|
+
const rawMessage = rawTools.message;
|
|
826
|
+
if (!isRecord$1(rawMessage) || !("allowCrossContextSend" in rawMessage)) return cfg;
|
|
827
|
+
const legacyAllowCrossContextSend = rawMessage.allowCrossContextSend;
|
|
828
|
+
if (typeof legacyAllowCrossContextSend !== "boolean") return cfg;
|
|
829
|
+
const nextMessage = { ...rawMessage };
|
|
830
|
+
delete nextMessage.allowCrossContextSend;
|
|
831
|
+
if (legacyAllowCrossContextSend) {
|
|
832
|
+
const rawCrossContext = isRecord$1(nextMessage.crossContext) ? structuredClone(nextMessage.crossContext) : {};
|
|
833
|
+
rawCrossContext.allowWithinProvider = true;
|
|
834
|
+
rawCrossContext.allowAcrossProviders = true;
|
|
835
|
+
nextMessage.crossContext = rawCrossContext;
|
|
836
|
+
changes.push("Moved tools.message.allowCrossContextSend → tools.message.crossContext.allowWithinProvider/allowAcrossProviders (true).");
|
|
837
|
+
} else changes.push("Removed tools.message.allowCrossContextSend=false (default cross-context policy already matches canonical settings).");
|
|
838
|
+
return {
|
|
839
|
+
...cfg,
|
|
840
|
+
tools: {
|
|
841
|
+
...cfg.tools,
|
|
842
|
+
message: nextMessage
|
|
843
|
+
}
|
|
844
|
+
};
|
|
845
|
+
}
|
|
846
|
+
function mapDeepgramCompatToProviderOptions(rawCompat) {
|
|
847
|
+
const providerOptions = {};
|
|
848
|
+
if (typeof rawCompat.detectLanguage === "boolean") providerOptions.detect_language = rawCompat.detectLanguage;
|
|
849
|
+
if (typeof rawCompat.punctuate === "boolean") providerOptions.punctuate = rawCompat.punctuate;
|
|
850
|
+
if (typeof rawCompat.smartFormat === "boolean") providerOptions.smart_format = rawCompat.smartFormat;
|
|
851
|
+
return providerOptions;
|
|
852
|
+
}
|
|
853
|
+
function migrateLegacyDeepgramCompat(params) {
|
|
854
|
+
const rawCompat = isRecord$1(params.owner.deepgram) ? structuredClone(params.owner.deepgram) : null;
|
|
855
|
+
if (!rawCompat) return false;
|
|
856
|
+
const compatProviderOptions = mapDeepgramCompatToProviderOptions(rawCompat);
|
|
857
|
+
const currentProviderOptions = isRecord$1(params.owner.providerOptions) ? structuredClone(params.owner.providerOptions) : {};
|
|
858
|
+
const currentDeepgram = isRecord$1(currentProviderOptions.deepgram) ? structuredClone(currentProviderOptions.deepgram) : {};
|
|
859
|
+
const mergedDeepgram = {
|
|
860
|
+
...compatProviderOptions,
|
|
861
|
+
...currentDeepgram
|
|
862
|
+
};
|
|
863
|
+
delete params.owner.deepgram;
|
|
864
|
+
currentProviderOptions.deepgram = mergedDeepgram;
|
|
865
|
+
params.owner.providerOptions = currentProviderOptions;
|
|
866
|
+
const hadCanonicalDeepgram = Object.keys(currentDeepgram).length > 0;
|
|
867
|
+
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.`);
|
|
868
|
+
return true;
|
|
869
|
+
}
|
|
870
|
+
function normalizeLegacyMediaProviderOptions(cfg, changes) {
|
|
871
|
+
const rawTools = cfg.tools;
|
|
872
|
+
if (!isRecord$1(rawTools)) return cfg;
|
|
873
|
+
const rawMedia = rawTools.media;
|
|
874
|
+
if (!isRecord$1(rawMedia)) return cfg;
|
|
875
|
+
let mediaChanged = false;
|
|
876
|
+
const nextMedia = structuredClone(rawMedia);
|
|
877
|
+
const migrateModelList = (models, pathPrefix) => {
|
|
878
|
+
if (!Array.isArray(models)) return false;
|
|
879
|
+
let changedAny = false;
|
|
880
|
+
for (const [index, entry] of models.entries()) {
|
|
881
|
+
if (!isRecord$1(entry)) continue;
|
|
882
|
+
if (migrateLegacyDeepgramCompat({
|
|
883
|
+
owner: entry,
|
|
884
|
+
pathPrefix: `${pathPrefix}[${index}]`,
|
|
885
|
+
changes
|
|
886
|
+
})) changedAny = true;
|
|
887
|
+
}
|
|
888
|
+
return changedAny;
|
|
889
|
+
};
|
|
890
|
+
for (const capability of [
|
|
891
|
+
"audio",
|
|
892
|
+
"image",
|
|
893
|
+
"video"
|
|
894
|
+
]) {
|
|
895
|
+
const config = isRecord$1(nextMedia[capability]) ? structuredClone(nextMedia[capability]) : null;
|
|
896
|
+
if (!config) continue;
|
|
897
|
+
let configChanged = false;
|
|
898
|
+
if (migrateLegacyDeepgramCompat({
|
|
899
|
+
owner: config,
|
|
900
|
+
pathPrefix: `tools.media.${capability}`,
|
|
901
|
+
changes
|
|
902
|
+
})) configChanged = true;
|
|
903
|
+
if (migrateModelList(config.models, `tools.media.${capability}.models`)) configChanged = true;
|
|
904
|
+
if (configChanged) {
|
|
905
|
+
nextMedia[capability] = config;
|
|
906
|
+
mediaChanged = true;
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
if (migrateModelList(nextMedia.models, "tools.media.models")) mediaChanged = true;
|
|
910
|
+
if (!mediaChanged) return cfg;
|
|
911
|
+
return {
|
|
912
|
+
...cfg,
|
|
913
|
+
tools: {
|
|
914
|
+
...cfg.tools,
|
|
915
|
+
media: nextMedia
|
|
916
|
+
}
|
|
917
|
+
};
|
|
918
|
+
}
|
|
919
|
+
function normalizeConfiguredPositiveInteger(value) {
|
|
920
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) return;
|
|
921
|
+
return Math.floor(value);
|
|
922
|
+
}
|
|
923
|
+
function resolveConfiguredOllamaModelNumCtxBudget(params) {
|
|
924
|
+
const modelContextWindow = normalizeConfiguredPositiveInteger(params.model.contextWindow);
|
|
925
|
+
if (modelContextWindow !== void 0) return modelContextWindow;
|
|
926
|
+
const providerContextWindow = normalizeConfiguredPositiveInteger(params.provider.contextWindow);
|
|
927
|
+
if (providerContextWindow !== void 0) return params.providerNumCtxApplies ? void 0 : providerContextWindow;
|
|
928
|
+
const modelMaxTokens = normalizeConfiguredPositiveInteger(params.model.maxTokens);
|
|
929
|
+
if (modelMaxTokens !== void 0) return modelMaxTokens;
|
|
930
|
+
const providerMaxTokens = normalizeConfiguredPositiveInteger(params.provider.maxTokens);
|
|
931
|
+
if (providerMaxTokens !== void 0) return params.providerNumCtxApplies ? void 0 : providerMaxTokens;
|
|
932
|
+
}
|
|
933
|
+
function resolveConfiguredOllamaProviderNumCtxBudget(provider) {
|
|
934
|
+
return normalizeConfiguredPositiveInteger(provider.contextWindow) ?? normalizeConfiguredPositiveInteger(provider.maxTokens);
|
|
935
|
+
}
|
|
936
|
+
function isNativeOllamaProviderConfig(_providerId, provider) {
|
|
937
|
+
return normalizeOptionalLowercaseString(provider.api) === "ollama";
|
|
938
|
+
}
|
|
939
|
+
function isNativeOllamaModelConfig(params) {
|
|
940
|
+
const modelApi = normalizeOptionalLowercaseString(params.model.api);
|
|
941
|
+
if (modelApi) return modelApi === "ollama";
|
|
942
|
+
const providerApi = normalizeOptionalLowercaseString(params.provider.api);
|
|
943
|
+
if (providerApi) return providerApi === "ollama";
|
|
944
|
+
return false;
|
|
945
|
+
}
|
|
946
|
+
function hasConfiguredOllamaProviderNumCtx(provider) {
|
|
947
|
+
const rawParams = provider.params;
|
|
948
|
+
return isRecord$1(rawParams) && hasOwnKey(rawParams, "num_ctx");
|
|
949
|
+
}
|
|
950
|
+
function applyLegacyOllamaProviderNumCtxParams(params) {
|
|
951
|
+
if (!isNativeOllamaProviderConfig(params.providerId, params.provider)) return {
|
|
952
|
+
provider: params.provider,
|
|
953
|
+
changed: false
|
|
954
|
+
};
|
|
955
|
+
const rawParams = params.provider.params;
|
|
956
|
+
if (rawParams !== void 0 && !isRecord$1(rawParams)) return {
|
|
957
|
+
provider: params.provider,
|
|
958
|
+
changed: false
|
|
959
|
+
};
|
|
960
|
+
if (rawParams && hasOwnKey(rawParams, "num_ctx")) return {
|
|
961
|
+
provider: params.provider,
|
|
962
|
+
changed: false
|
|
963
|
+
};
|
|
964
|
+
const numCtx = resolveConfiguredOllamaProviderNumCtxBudget(params.provider);
|
|
965
|
+
if (numCtx === void 0) return {
|
|
966
|
+
provider: params.provider,
|
|
967
|
+
changed: false
|
|
968
|
+
};
|
|
969
|
+
params.changes.push(`Set models.providers.${sanitizeForLog(params.providerId)}.params.num_ctx to ${numCtx} for native Ollama compatibility.`);
|
|
970
|
+
return {
|
|
971
|
+
provider: {
|
|
972
|
+
...params.provider,
|
|
973
|
+
params: rawParams ? {
|
|
974
|
+
...rawParams,
|
|
975
|
+
num_ctx: numCtx
|
|
976
|
+
} : { num_ctx: numCtx }
|
|
977
|
+
},
|
|
978
|
+
changed: true
|
|
979
|
+
};
|
|
980
|
+
}
|
|
981
|
+
function normalizeLegacyOllamaNativeNumCtxParams(cfg, changes) {
|
|
982
|
+
const rawProviders = cfg.models?.providers;
|
|
983
|
+
if (!isRecord$1(rawProviders)) return cfg;
|
|
984
|
+
let providersChanged = false;
|
|
985
|
+
const nextProviders = { ...rawProviders };
|
|
986
|
+
for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
|
|
987
|
+
if (!isRecord$1(rawProvider)) continue;
|
|
988
|
+
const rawModels = rawProvider.models;
|
|
989
|
+
if (!Array.isArray(rawModels)) continue;
|
|
990
|
+
const providerParams = applyLegacyOllamaProviderNumCtxParams({
|
|
991
|
+
providerId,
|
|
992
|
+
provider: rawProvider,
|
|
993
|
+
changes
|
|
994
|
+
});
|
|
995
|
+
const providerNumCtxApplies = isNativeOllamaProviderConfig(providerId, providerParams.provider) && hasConfiguredOllamaProviderNumCtx(providerParams.provider);
|
|
996
|
+
if (rawModels.length === 0) {
|
|
997
|
+
if (!providerParams.changed) continue;
|
|
998
|
+
nextProviders[providerId] = providerParams.provider;
|
|
999
|
+
providersChanged = true;
|
|
1000
|
+
continue;
|
|
1001
|
+
}
|
|
1002
|
+
let modelsChanged = false;
|
|
1003
|
+
const nextModels = rawModels.map((model, index) => {
|
|
1004
|
+
if (!isRecord$1(model)) return model;
|
|
1005
|
+
if (!isNativeOllamaModelConfig({
|
|
1006
|
+
providerId,
|
|
1007
|
+
provider: providerParams.provider,
|
|
1008
|
+
model
|
|
1009
|
+
})) return model;
|
|
1010
|
+
const rawParams = model.params;
|
|
1011
|
+
if (rawParams !== void 0 && !isRecord$1(rawParams)) return model;
|
|
1012
|
+
if (rawParams && hasOwnKey(rawParams, "num_ctx")) return model;
|
|
1013
|
+
const numCtx = resolveConfiguredOllamaModelNumCtxBudget({
|
|
1014
|
+
model,
|
|
1015
|
+
provider: providerParams.provider,
|
|
1016
|
+
providerNumCtxApplies
|
|
1017
|
+
});
|
|
1018
|
+
if (numCtx === void 0) return model;
|
|
1019
|
+
modelsChanged = true;
|
|
1020
|
+
changes.push(`Set models.providers.${sanitizeForLog(providerId)}.models[${index}].params.num_ctx to ${numCtx} for native Ollama compatibility.`);
|
|
1021
|
+
return Object.assign({}, model, { params: rawParams ? {
|
|
1022
|
+
...rawParams,
|
|
1023
|
+
num_ctx: numCtx
|
|
1024
|
+
} : { num_ctx: numCtx } });
|
|
1025
|
+
});
|
|
1026
|
+
if (!modelsChanged && !providerParams.changed) continue;
|
|
1027
|
+
nextProviders[providerId] = {
|
|
1028
|
+
...providerParams.provider,
|
|
1029
|
+
models: nextModels
|
|
1030
|
+
};
|
|
1031
|
+
providersChanged = true;
|
|
1032
|
+
}
|
|
1033
|
+
if (!providersChanged) return cfg;
|
|
1034
|
+
return {
|
|
1035
|
+
...cfg,
|
|
1036
|
+
models: {
|
|
1037
|
+
...cfg.models,
|
|
1038
|
+
providers: nextProviders
|
|
1039
|
+
}
|
|
1040
|
+
};
|
|
1041
|
+
}
|
|
1042
|
+
function normalizeLegacyMistralModelMaxTokens(cfg, changes) {
|
|
1043
|
+
const rawProviders = cfg.models?.providers;
|
|
1044
|
+
if (!isRecord$1(rawProviders)) return cfg;
|
|
1045
|
+
let providersChanged = false;
|
|
1046
|
+
const nextProviders = { ...rawProviders };
|
|
1047
|
+
for (const [providerId, rawProvider] of Object.entries(rawProviders)) {
|
|
1048
|
+
if (normalizeProviderId$1(providerId) !== "mistral" || !isRecord$1(rawProvider)) continue;
|
|
1049
|
+
const rawModels = rawProvider.models;
|
|
1050
|
+
if (!Array.isArray(rawModels)) continue;
|
|
1051
|
+
let modelsChanged = false;
|
|
1052
|
+
const nextModels = rawModels.map((model, index) => {
|
|
1053
|
+
if (!isRecord$1(model)) return model;
|
|
1054
|
+
const modelId = normalizeOptionalString(model.id) ?? "";
|
|
1055
|
+
const contextWindow = typeof model.contextWindow === "number" && Number.isFinite(model.contextWindow) ? model.contextWindow : null;
|
|
1056
|
+
const maxTokens = typeof model.maxTokens === "number" && Number.isFinite(model.maxTokens) ? model.maxTokens : null;
|
|
1057
|
+
if (!modelId || contextWindow === null || maxTokens === null) return model;
|
|
1058
|
+
const normalizedMaxTokens = resolveNormalizedProviderModelMaxTokens({
|
|
1059
|
+
providerId,
|
|
1060
|
+
modelId,
|
|
1061
|
+
contextWindow,
|
|
1062
|
+
rawMaxTokens: maxTokens
|
|
1063
|
+
});
|
|
1064
|
+
if (normalizedMaxTokens === maxTokens) return model;
|
|
1065
|
+
modelsChanged = true;
|
|
1066
|
+
changes.push(`Normalized models.providers.${providerId}.models[${index}].maxTokens (${maxTokens} → ${normalizedMaxTokens}) to avoid Mistral context-window rejects.`);
|
|
1067
|
+
return Object.assign({}, model, { maxTokens: normalizedMaxTokens });
|
|
1068
|
+
});
|
|
1069
|
+
if (!modelsChanged) continue;
|
|
1070
|
+
nextProviders[providerId] = {
|
|
1071
|
+
...rawProvider,
|
|
1072
|
+
models: nextModels
|
|
1073
|
+
};
|
|
1074
|
+
providersChanged = true;
|
|
1075
|
+
}
|
|
1076
|
+
if (!providersChanged) return cfg;
|
|
1077
|
+
return {
|
|
1078
|
+
...cfg,
|
|
1079
|
+
models: {
|
|
1080
|
+
...cfg.models,
|
|
1081
|
+
providers: nextProviders
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
}
|
|
1085
|
+
//#endregion
|
|
1086
|
+
//#region src/commands/doctor/shared/legacy-web-fetch-migrate.ts
|
|
1087
|
+
const DANGEROUS_RECORD_KEYS = new Set([
|
|
1088
|
+
"__proto__",
|
|
1089
|
+
"prototype",
|
|
1090
|
+
"constructor"
|
|
1091
|
+
]);
|
|
1092
|
+
function resolveLegacyFetchConfig(raw) {
|
|
1093
|
+
if (!isRecord$1(raw)) return;
|
|
1094
|
+
const tools = isRecord$1(raw.tools) ? raw.tools : void 0;
|
|
1095
|
+
const web = isRecord$1(tools?.web) ? tools.web : void 0;
|
|
1096
|
+
return isRecord$1(web?.fetch) ? web.fetch : void 0;
|
|
1097
|
+
}
|
|
1098
|
+
function copyLegacyFirecrawlFetchConfig(fetch) {
|
|
1099
|
+
const current = fetch.firecrawl;
|
|
1100
|
+
if (!isRecord$1(current)) return;
|
|
1101
|
+
const next = cloneRecord(current);
|
|
1102
|
+
delete next.enabled;
|
|
1103
|
+
return next;
|
|
1104
|
+
}
|
|
1105
|
+
function hasMappedLegacyWebFetchConfig(raw) {
|
|
1106
|
+
const fetch = resolveLegacyFetchConfig(raw);
|
|
1107
|
+
if (!fetch) return false;
|
|
1108
|
+
return isRecord$1(fetch.firecrawl);
|
|
1109
|
+
}
|
|
1110
|
+
function migratePluginWebFetchConfig(params) {
|
|
1111
|
+
const entry = ensureRecord(ensureRecord(ensureRecord(params.root, "plugins"), "entries"), "firecrawl");
|
|
1112
|
+
const config = ensureRecord(entry, "config");
|
|
1113
|
+
const hadEnabled = entry.enabled !== void 0;
|
|
1114
|
+
const existing = isRecord$1(config.webFetch) ? cloneRecord(config.webFetch) : void 0;
|
|
1115
|
+
if (!hadEnabled) entry.enabled = true;
|
|
1116
|
+
if (!existing) {
|
|
1117
|
+
config.webFetch = cloneRecord(params.payload);
|
|
1118
|
+
params.changes.push("Moved tools.web.fetch.firecrawl → plugins.entries.firecrawl.config.webFetch.");
|
|
1119
|
+
return;
|
|
1120
|
+
}
|
|
1121
|
+
const merged = cloneRecord(existing);
|
|
1122
|
+
mergeMissing(merged, params.payload);
|
|
1123
|
+
const changed = JSON.stringify(merged) !== JSON.stringify(existing) || !hadEnabled;
|
|
1124
|
+
config.webFetch = merged;
|
|
1125
|
+
if (changed) {
|
|
1126
|
+
params.changes.push("Merged tools.web.fetch.firecrawl → plugins.entries.firecrawl.config.webFetch (filled missing fields from legacy; kept explicit plugin config values).");
|
|
1127
|
+
return;
|
|
1128
|
+
}
|
|
1129
|
+
params.changes.push("Removed tools.web.fetch.firecrawl (plugins.entries.firecrawl.config.webFetch already set).");
|
|
1130
|
+
}
|
|
1131
|
+
function migrateLegacyWebFetchConfig(raw) {
|
|
1132
|
+
if (!isRecord$1(raw) || !hasMappedLegacyWebFetchConfig(raw)) return {
|
|
1133
|
+
config: raw,
|
|
1134
|
+
changes: []
|
|
1135
|
+
};
|
|
1136
|
+
return normalizeLegacyWebFetchConfigRecord(raw);
|
|
1137
|
+
}
|
|
1138
|
+
function normalizeLegacyWebFetchConfigRecord(raw) {
|
|
1139
|
+
const nextRoot = structuredClone(raw);
|
|
1140
|
+
const web = ensureRecord(ensureRecord(nextRoot, "tools"), "web");
|
|
1141
|
+
const fetch = resolveLegacyFetchConfig(nextRoot);
|
|
1142
|
+
if (!fetch) return {
|
|
1143
|
+
config: raw,
|
|
1144
|
+
changes: []
|
|
1145
|
+
};
|
|
1146
|
+
const nextFetch = {};
|
|
1147
|
+
for (const [key, value] of Object.entries(fetch)) {
|
|
1148
|
+
if (key === "firecrawl" && isRecord$1(value)) continue;
|
|
1149
|
+
if (DANGEROUS_RECORD_KEYS.has(key)) continue;
|
|
1150
|
+
nextFetch[key] = value;
|
|
1151
|
+
}
|
|
1152
|
+
web.fetch = nextFetch;
|
|
1153
|
+
const firecrawl = copyLegacyFirecrawlFetchConfig(fetch);
|
|
1154
|
+
const changes = [];
|
|
1155
|
+
if (firecrawl && Object.keys(firecrawl).length > 0) migratePluginWebFetchConfig({
|
|
1156
|
+
root: nextRoot,
|
|
1157
|
+
payload: firecrawl,
|
|
1158
|
+
changes
|
|
1159
|
+
});
|
|
1160
|
+
else if (hasOwnKey(fetch, "firecrawl")) changes.push("Removed empty tools.web.fetch.firecrawl.");
|
|
1161
|
+
return {
|
|
1162
|
+
config: nextRoot,
|
|
1163
|
+
changes
|
|
1164
|
+
};
|
|
1165
|
+
}
|
|
1166
|
+
//#endregion
|
|
1167
|
+
//#region src/commands/doctor/shared/legacy-config-compatibility-base.ts
|
|
1168
|
+
function normalizeBaseCompatibilityConfigValues(cfg, changes, afterBrowser) {
|
|
1169
|
+
let next = seedMissingDefaultAccountsFromSingleAccountBase(cfg, changes);
|
|
1170
|
+
next = normalizeLegacyBrowserConfig(next, changes);
|
|
1171
|
+
next = afterBrowser ? afterBrowser(next) : next;
|
|
1172
|
+
for (const migrate of [
|
|
1173
|
+
migrateLegacyWebSearchConfig,
|
|
1174
|
+
migrateLegacyWebFetchConfig,
|
|
1175
|
+
migrateLegacyXSearchConfig
|
|
1176
|
+
]) {
|
|
1177
|
+
const migrated = migrate(next);
|
|
1178
|
+
if (migrated.changes.length === 0) continue;
|
|
1179
|
+
next = migrated.config;
|
|
1180
|
+
changes.push(...migrated.changes);
|
|
1181
|
+
}
|
|
1182
|
+
next = normalizeLegacyNanoBananaSkill(next, changes);
|
|
1183
|
+
next = normalizeLegacyTalkConfig(next, changes);
|
|
1184
|
+
next = normalizeLegacyOpenAIModelProviderApi(next, changes);
|
|
1185
|
+
next = normalizeLegacyRuntimeModelRefs(next, changes);
|
|
1186
|
+
next = normalizeLegacyCrossContextMessageConfig(next, changes);
|
|
1187
|
+
next = normalizeLegacyMediaProviderOptions(next, changes);
|
|
1188
|
+
next = normalizeLegacyOllamaNativeNumCtxParams(next, changes);
|
|
1189
|
+
return normalizeLegacyMistralModelMaxTokens(next, changes);
|
|
1190
|
+
}
|
|
1191
|
+
//#endregion
|
|
1192
|
+
//#region src/commands/doctor/shared/legacy-config-core-migrate.ts
|
|
1193
|
+
function normalizeCompatibilityConfigValues(cfg) {
|
|
1194
|
+
const changes = [];
|
|
1195
|
+
let next = normalizeBaseCompatibilityConfigValues(cfg, changes, (config) => {
|
|
1196
|
+
const setupMigration = runPluginSetupConfigMigrations({ config });
|
|
1197
|
+
if (setupMigration.changes.length === 0) return config;
|
|
1198
|
+
changes.push(...setupMigration.changes);
|
|
1199
|
+
return setupMigration.config;
|
|
1200
|
+
});
|
|
1201
|
+
const channelMigrations = applyChannelDoctorCompatibilityMigrations(next);
|
|
1202
|
+
if (channelMigrations.changes.length > 0) {
|
|
1203
|
+
next = channelMigrations.next;
|
|
1204
|
+
changes.push(...channelMigrations.changes);
|
|
1205
|
+
}
|
|
1206
|
+
const secretRefMarkers = migrateLegacySecretRefEnvMarkers(next);
|
|
1207
|
+
if (secretRefMarkers.changes.length > 0) {
|
|
1208
|
+
next = secretRefMarkers.config;
|
|
1209
|
+
changes.push(...secretRefMarkers.changes);
|
|
1210
|
+
}
|
|
1211
|
+
next = normalizeLegacyCommandsConfig(next, changes);
|
|
1212
|
+
next = normalizeLegacyOpenAICodexModelsAddMetadata(next, changes);
|
|
1213
|
+
return {
|
|
1214
|
+
config: next,
|
|
1215
|
+
changes
|
|
1216
|
+
};
|
|
1217
|
+
}
|
|
1218
|
+
//#endregion
|
|
1219
|
+
//#region src/commands/doctor/emit-notes.ts
|
|
1220
|
+
function sanitizeDoctorNote(note) {
|
|
1221
|
+
return note.split("\n").map((line) => sanitizeForLog(line)).join("\n");
|
|
1222
|
+
}
|
|
1223
|
+
function emitDoctorNotes(params) {
|
|
1224
|
+
for (const change of params.changeNotes ?? []) params.note(sanitizeDoctorNote(change), "Doctor changes");
|
|
1225
|
+
for (const info of params.infoNotes ?? []) params.note(sanitizeDoctorNote(info), "Doctor info");
|
|
1226
|
+
for (const warning of params.warningNotes ?? []) params.note(sanitizeDoctorNote(warning), "Doctor warnings");
|
|
1227
|
+
}
|
|
1228
|
+
//#endregion
|
|
1229
|
+
//#region src/commands/doctor/finalize-config-flow.ts
|
|
1230
|
+
async function finalizeDoctorConfigFlow(params) {
|
|
1231
|
+
if (!params.shouldRepair && params.pendingChanges) {
|
|
1232
|
+
if (await params.confirm({
|
|
1233
|
+
message: "Apply recommended config repairs now?",
|
|
1234
|
+
initialValue: true
|
|
1235
|
+
})) return {
|
|
1236
|
+
cfg: params.candidate,
|
|
1237
|
+
shouldWriteConfig: true
|
|
1238
|
+
};
|
|
1239
|
+
if (params.fixHints.length > 0) params.note(params.fixHints.join("\n"), "Doctor");
|
|
1240
|
+
return {
|
|
1241
|
+
cfg: params.cfg,
|
|
1242
|
+
shouldWriteConfig: false
|
|
1243
|
+
};
|
|
1244
|
+
}
|
|
1245
|
+
if (params.shouldRepair && params.pendingChanges) return {
|
|
1246
|
+
cfg: params.cfg,
|
|
1247
|
+
shouldWriteConfig: true
|
|
1248
|
+
};
|
|
1249
|
+
return {
|
|
1250
|
+
cfg: params.cfg,
|
|
1251
|
+
shouldWriteConfig: false
|
|
1252
|
+
};
|
|
1253
|
+
}
|
|
1254
|
+
//#endregion
|
|
1255
|
+
//#region src/commands/doctor-auth-profile-config.ts
|
|
1256
|
+
const AUTH_PROFILE_MODES = new Set([
|
|
1257
|
+
"api_key",
|
|
1258
|
+
"aws-sdk",
|
|
1259
|
+
"oauth",
|
|
1260
|
+
"token"
|
|
1261
|
+
]);
|
|
1262
|
+
function normalizeProviderId(value) {
|
|
1263
|
+
return normalizeLowercaseStringOrEmpty(value);
|
|
1264
|
+
}
|
|
1265
|
+
function normalizeProfileId(value) {
|
|
1266
|
+
return normalizeOptionalString(value) ?? null;
|
|
1267
|
+
}
|
|
1268
|
+
function normalizeMode(value) {
|
|
1269
|
+
return typeof value === "string" && AUTH_PROFILE_MODES.has(value) ? value : null;
|
|
1270
|
+
}
|
|
1271
|
+
function extractProviderFromModelRef(value) {
|
|
1272
|
+
const { model } = splitTrailingAuthProfile(value);
|
|
1273
|
+
const slash = model.indexOf("/");
|
|
1274
|
+
if (slash <= 0) return null;
|
|
1275
|
+
return normalizeProviderId(model.slice(0, slash)) || null;
|
|
1276
|
+
}
|
|
1277
|
+
function extractProviderFromProfileId(profileId) {
|
|
1278
|
+
const colon = profileId.indexOf(":");
|
|
1279
|
+
if (colon <= 0) return null;
|
|
1280
|
+
return normalizeProviderId(profileId.slice(0, colon)) || null;
|
|
1281
|
+
}
|
|
1282
|
+
function collectActiveAuthHints(config) {
|
|
1283
|
+
const activeProviders = /* @__PURE__ */ new Set();
|
|
1284
|
+
const explicitProfileIds = /* @__PURE__ */ new Set();
|
|
1285
|
+
const explicitProfileProviders = /* @__PURE__ */ new Map();
|
|
1286
|
+
const models = isRecord$1(config.models) ? config.models : {};
|
|
1287
|
+
const providers = isRecord$1(models.providers) ? models.providers : {};
|
|
1288
|
+
for (const providerId of Object.keys(providers)) {
|
|
1289
|
+
const normalized = normalizeProviderId(providerId);
|
|
1290
|
+
if (normalized) activeProviders.add(normalized);
|
|
1291
|
+
}
|
|
1292
|
+
for (const { value } of collectConfiguredModelRefs(config)) {
|
|
1293
|
+
const { profile } = splitTrailingAuthProfile(value);
|
|
1294
|
+
const provider = extractProviderFromModelRef(value);
|
|
1295
|
+
if (profile) {
|
|
1296
|
+
explicitProfileIds.add(profile);
|
|
1297
|
+
if (provider) {
|
|
1298
|
+
const providers = explicitProfileProviders.get(profile) ?? /* @__PURE__ */ new Set();
|
|
1299
|
+
providers.add(provider);
|
|
1300
|
+
explicitProfileProviders.set(profile, providers);
|
|
1301
|
+
}
|
|
1302
|
+
}
|
|
1303
|
+
if (provider) activeProviders.add(provider);
|
|
1304
|
+
}
|
|
1305
|
+
const auth = isRecord$1(config.auth) ? config.auth : {};
|
|
1306
|
+
const order = isRecord$1(auth.order) ? auth.order : {};
|
|
1307
|
+
for (const [providerId, profileIds] of Object.entries(order)) {
|
|
1308
|
+
const provider = normalizeProviderId(providerId);
|
|
1309
|
+
if (!provider || !activeProviders.has(provider) || !Array.isArray(profileIds)) continue;
|
|
1310
|
+
for (const profileId of profileIds) {
|
|
1311
|
+
const normalized = normalizeProfileId(profileId);
|
|
1312
|
+
if (normalized) explicitProfileIds.add(normalized);
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
return {
|
|
1316
|
+
activeProviders,
|
|
1317
|
+
explicitProfileIds,
|
|
1318
|
+
explicitProfileProviders
|
|
1319
|
+
};
|
|
1320
|
+
}
|
|
1321
|
+
function isValidProfileMetadata(value) {
|
|
1322
|
+
if (!isRecord$1(value)) return false;
|
|
1323
|
+
return normalizeProviderId(value.provider) !== "" && normalizeMode(value.mode) !== null;
|
|
1324
|
+
}
|
|
1325
|
+
function buildProfileMetadata(params) {
|
|
1326
|
+
const before = isRecord$1(params.before) ? params.before : {};
|
|
1327
|
+
const after = isRecord$1(params.after) ? params.after : {};
|
|
1328
|
+
const provider = normalizeProviderId(after.provider) || normalizeProviderId(before.provider) || extractProviderFromProfileId(params.profileId) || normalizeProviderId(params.providerHint);
|
|
1329
|
+
if (!provider) return null;
|
|
1330
|
+
const repaired = {
|
|
1331
|
+
provider,
|
|
1332
|
+
mode: normalizeMode(after.mode) ?? normalizeMode(before.mode) ?? "api_key"
|
|
1333
|
+
};
|
|
1334
|
+
const email = normalizeOptionalString(after.email) ?? normalizeOptionalString(before.email);
|
|
1335
|
+
const displayName = normalizeOptionalString(after.displayName) ?? normalizeOptionalString(before.displayName);
|
|
1336
|
+
if (email) repaired.email = email;
|
|
1337
|
+
if (displayName) repaired.displayName = displayName;
|
|
1338
|
+
return repaired;
|
|
1339
|
+
}
|
|
1340
|
+
function ensureAuthProfiles(config) {
|
|
1341
|
+
const root = config;
|
|
1342
|
+
const auth = isRecord$1(root.auth) ? root.auth : {};
|
|
1343
|
+
if (root.auth !== auth) root.auth = auth;
|
|
1344
|
+
if (!isRecord$1(auth.profiles)) auth.profiles = {};
|
|
1345
|
+
return auth.profiles;
|
|
1346
|
+
}
|
|
1347
|
+
function protectActiveAuthProfileConfig(params) {
|
|
1348
|
+
const { activeProviders, explicitProfileIds, explicitProfileProviders } = collectActiveAuthHints(params.before);
|
|
1349
|
+
const beforeAuth = isRecord$1(params.before.auth) ? params.before.auth : {};
|
|
1350
|
+
const beforeProfiles = isRecord$1(beforeAuth.profiles) ? beforeAuth.profiles : {};
|
|
1351
|
+
if (Object.keys(beforeProfiles).length === 0) return {
|
|
1352
|
+
config: params.after,
|
|
1353
|
+
repairs: [],
|
|
1354
|
+
warnings: []
|
|
1355
|
+
};
|
|
1356
|
+
const config = structuredClone(params.after);
|
|
1357
|
+
const afterAuth = isRecord$1(config.auth) ? config.auth : {};
|
|
1358
|
+
const afterProfiles = isRecord$1(afterAuth.profiles) ? afterAuth.profiles : {};
|
|
1359
|
+
const repairs = [];
|
|
1360
|
+
const warnings = [];
|
|
1361
|
+
for (const [profileId, beforeProfile] of Object.entries(beforeProfiles)) {
|
|
1362
|
+
const afterProfile = afterProfiles[profileId];
|
|
1363
|
+
const afterProfileRecord = isRecord$1(afterProfile) ? afterProfile : null;
|
|
1364
|
+
const beforeProfileRecord = isRecord$1(beforeProfile) ? beforeProfile : null;
|
|
1365
|
+
if (isValidProfileMetadata(afterProfile)) continue;
|
|
1366
|
+
const provider = normalizeProviderId(afterProfileRecord?.provider) || normalizeProviderId(beforeProfileRecord?.provider) || extractProviderFromProfileId(profileId);
|
|
1367
|
+
const protectsActiveProvider = !!provider && activeProviders.has(provider);
|
|
1368
|
+
const protectsExplicitProfile = explicitProfileIds.has(profileId);
|
|
1369
|
+
if (!protectsActiveProvider && !protectsExplicitProfile) continue;
|
|
1370
|
+
const repaired = buildProfileMetadata({
|
|
1371
|
+
profileId,
|
|
1372
|
+
before: beforeProfile,
|
|
1373
|
+
after: afterProfile,
|
|
1374
|
+
providerHint: explicitProfileProviders.get(profileId)?.size === 1 ? [...explicitProfileProviders.get(profileId) ?? []][0] : void 0
|
|
1375
|
+
});
|
|
1376
|
+
if (!repaired) {
|
|
1377
|
+
warnings.push(`auth.profiles.${profileId}: active auth profile metadata could not be inferred; repair manually before running doctor --fix.`);
|
|
1378
|
+
continue;
|
|
1379
|
+
}
|
|
1380
|
+
const profiles = ensureAuthProfiles(config);
|
|
1381
|
+
profiles[profileId] = repaired;
|
|
1382
|
+
repairs.push(`Repaired auth.profiles.${profileId} metadata for active ${repaired.provider} auth.`);
|
|
1383
|
+
}
|
|
1384
|
+
return {
|
|
1385
|
+
config,
|
|
1386
|
+
repairs,
|
|
1387
|
+
warnings
|
|
1388
|
+
};
|
|
1389
|
+
}
|
|
1390
|
+
//#endregion
|
|
1391
|
+
//#region src/commands/doctor/shared/config-flow-steps.ts
|
|
1392
|
+
function applyLegacyCompatibilityStep(params) {
|
|
1393
|
+
if (params.snapshot.legacyIssues.length === 0) return {
|
|
1394
|
+
state: params.state,
|
|
1395
|
+
issueLines: [],
|
|
1396
|
+
changeLines: []
|
|
1397
|
+
};
|
|
1398
|
+
const issueLines = formatConfigIssueLines(params.snapshot.legacyIssues, "-");
|
|
1399
|
+
const { config: migrated, changes, partiallyValid } = migrateLegacyConfig(params.snapshot.parsed);
|
|
1400
|
+
if (!migrated) return {
|
|
1401
|
+
state: {
|
|
1402
|
+
...params.state,
|
|
1403
|
+
pendingChanges: params.state.pendingChanges || params.snapshot.legacyIssues.length > 0,
|
|
1404
|
+
fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to migrate legacy config keys.`]
|
|
1405
|
+
},
|
|
1406
|
+
issueLines,
|
|
1407
|
+
changeLines: changes
|
|
1408
|
+
};
|
|
1409
|
+
return {
|
|
1410
|
+
state: {
|
|
1411
|
+
cfg: migrated,
|
|
1412
|
+
candidate: migrated,
|
|
1413
|
+
pendingChanges: params.state.pendingChanges || params.snapshot.legacyIssues.length > 0,
|
|
1414
|
+
fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to ${partiallyValid ? "finish fixing" : "migrate"} legacy config keys.`]
|
|
1415
|
+
},
|
|
1416
|
+
issueLines,
|
|
1417
|
+
changeLines: changes,
|
|
1418
|
+
partiallyValid: partiallyValid === true ? true : void 0
|
|
1419
|
+
};
|
|
1420
|
+
}
|
|
1421
|
+
function applyUnknownConfigKeyStep(params) {
|
|
1422
|
+
const unknown = stripUnknownConfigKeys(params.state.candidate);
|
|
1423
|
+
if (unknown.removed.length === 0) return {
|
|
1424
|
+
state: params.state,
|
|
1425
|
+
removed: [],
|
|
1426
|
+
repairs: [],
|
|
1427
|
+
warnings: []
|
|
1428
|
+
};
|
|
1429
|
+
const protectedAuth = protectActiveAuthProfileConfig({
|
|
1430
|
+
before: params.state.candidate,
|
|
1431
|
+
after: unknown.config
|
|
1432
|
+
});
|
|
1433
|
+
return {
|
|
1434
|
+
state: {
|
|
1435
|
+
cfg: params.shouldRepair ? protectedAuth.config : params.state.cfg,
|
|
1436
|
+
candidate: protectedAuth.config,
|
|
1437
|
+
pendingChanges: true,
|
|
1438
|
+
fixHints: params.shouldRepair ? params.state.fixHints : [...params.state.fixHints, `Run "${params.doctorFixCommand}" to remove these keys.`]
|
|
1439
|
+
},
|
|
1440
|
+
removed: unknown.removed,
|
|
1441
|
+
repairs: protectedAuth.repairs,
|
|
1442
|
+
warnings: protectedAuth.warnings
|
|
1443
|
+
};
|
|
1444
|
+
}
|
|
1445
|
+
//#endregion
|
|
1446
|
+
//#region src/commands/doctor/shared/default-account-warnings.ts
|
|
1447
|
+
function normalizeBindingChannelKey(raw) {
|
|
1448
|
+
const normalized = normalizeChatChannelId(raw);
|
|
1449
|
+
if (normalized) return normalized;
|
|
1450
|
+
return normalizeLowercaseStringOrEmpty(raw);
|
|
1451
|
+
}
|
|
1452
|
+
function collectChannelsMissingDefaultAccount(cfg) {
|
|
1453
|
+
const channels = asObjectRecord(cfg.channels);
|
|
1454
|
+
if (!channels) return [];
|
|
1455
|
+
const contexts = [];
|
|
1456
|
+
for (const [channelKey, rawChannel] of Object.entries(channels)) {
|
|
1457
|
+
const channel = asObjectRecord(rawChannel);
|
|
1458
|
+
if (!channel) continue;
|
|
1459
|
+
const accounts = asObjectRecord(channel.accounts);
|
|
1460
|
+
if (!accounts) continue;
|
|
1461
|
+
const normalizedAccountIds = Array.from(new Set(Object.keys(accounts).map((accountId) => normalizeAccountId(accountId)).filter(Boolean))).toSorted((a, b) => a.localeCompare(b));
|
|
1462
|
+
if (normalizedAccountIds.length === 0 || normalizedAccountIds.includes("default")) continue;
|
|
1463
|
+
contexts.push({
|
|
1464
|
+
channelKey,
|
|
1465
|
+
channel,
|
|
1466
|
+
normalizedAccountIds
|
|
1467
|
+
});
|
|
1468
|
+
}
|
|
1469
|
+
return contexts;
|
|
1470
|
+
}
|
|
1471
|
+
function collectMissingDefaultAccountBindingWarnings(cfg) {
|
|
1472
|
+
const bindings = listRouteBindings(cfg);
|
|
1473
|
+
const warnings = [];
|
|
1474
|
+
for (const { channelKey, normalizedAccountIds } of collectChannelsMissingDefaultAccount(cfg)) {
|
|
1475
|
+
const accountIdSet = new Set(normalizedAccountIds);
|
|
1476
|
+
const channelPattern = normalizeBindingChannelKey(channelKey);
|
|
1477
|
+
let hasWildcardBinding = false;
|
|
1478
|
+
const coveredAccountIds = /* @__PURE__ */ new Set();
|
|
1479
|
+
for (const binding of bindings) {
|
|
1480
|
+
const bindingRecord = asObjectRecord(binding);
|
|
1481
|
+
if (!bindingRecord) continue;
|
|
1482
|
+
const match = asObjectRecord(bindingRecord.match);
|
|
1483
|
+
if (!match) continue;
|
|
1484
|
+
const matchChannel = typeof match.channel === "string" ? normalizeBindingChannelKey(match.channel) : "";
|
|
1485
|
+
if (!matchChannel || matchChannel !== channelPattern) continue;
|
|
1486
|
+
const rawAccountId = normalizeOptionalString(match.accountId) ?? "";
|
|
1487
|
+
if (!rawAccountId) continue;
|
|
1488
|
+
if (rawAccountId === "*") {
|
|
1489
|
+
hasWildcardBinding = true;
|
|
1490
|
+
continue;
|
|
1491
|
+
}
|
|
1492
|
+
const normalizedBindingAccountId = normalizeAccountId(rawAccountId);
|
|
1493
|
+
if (accountIdSet.has(normalizedBindingAccountId)) coveredAccountIds.add(normalizedBindingAccountId);
|
|
1494
|
+
}
|
|
1495
|
+
if (hasWildcardBinding) continue;
|
|
1496
|
+
const uncoveredAccountIds = normalizedAccountIds.filter((accountId) => !coveredAccountIds.has(accountId));
|
|
1497
|
+
if (uncoveredAccountIds.length === 0) continue;
|
|
1498
|
+
if (coveredAccountIds.size > 0) {
|
|
1499
|
+
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)}.`);
|
|
1500
|
+
continue;
|
|
1501
|
+
}
|
|
1502
|
+
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)}.`);
|
|
1503
|
+
}
|
|
1504
|
+
return warnings;
|
|
1505
|
+
}
|
|
1506
|
+
function collectMissingExplicitDefaultAccountWarnings(cfg) {
|
|
1507
|
+
const warnings = [];
|
|
1508
|
+
for (const { channelKey, channel, normalizedAccountIds } of collectChannelsMissingDefaultAccount(cfg)) {
|
|
1509
|
+
if (normalizedAccountIds.length < 2) continue;
|
|
1510
|
+
const preferredDefault = normalizeOptionalAccountId(typeof channel.defaultAccount === "string" ? channel.defaultAccount : void 0);
|
|
1511
|
+
if (preferredDefault) {
|
|
1512
|
+
if (normalizedAccountIds.includes(preferredDefault)) continue;
|
|
1513
|
+
warnings.push(`- channels.${channelKey}: defaultAccount is set to "${preferredDefault}" but does not match configured accounts (${normalizedAccountIds.join(", ")}). ${formatSetExplicitDefaultToConfiguredInstruction({ channelKey })} to avoid fallback routing.`);
|
|
1514
|
+
continue;
|
|
1515
|
+
}
|
|
1516
|
+
warnings.push(`- channels.${channelKey}: multiple accounts are configured but no explicit default is set. ${formatSetExplicitDefaultInstruction(channelKey)} to avoid fallback routing.`);
|
|
1517
|
+
}
|
|
1518
|
+
return warnings;
|
|
1519
|
+
}
|
|
1520
|
+
//#endregion
|
|
1521
|
+
//#region src/commands/doctor-config-flow.ts
|
|
1522
|
+
function hasLegacyInternalHookHandlers(raw) {
|
|
1523
|
+
const handlers = raw?.hooks?.internal?.handlers;
|
|
1524
|
+
return Array.isArray(handlers) && handlers.length > 0;
|
|
1525
|
+
}
|
|
1526
|
+
function collectInvalidHookTransformsDirWarnings(cfg, configPath) {
|
|
1527
|
+
const transformsDir = cfg.hooks?.transformsDir?.trim();
|
|
1528
|
+
if (!transformsDir) return [];
|
|
1529
|
+
const configDir = path.dirname(configPath);
|
|
1530
|
+
const transformsRoot = path.join(configDir, "hooks", "transforms");
|
|
1531
|
+
const resolved = path.isAbsolute(transformsDir) ? path.resolve(transformsDir) : path.resolve(transformsRoot, transformsDir);
|
|
1532
|
+
const relative = path.relative(transformsRoot, resolved);
|
|
1533
|
+
if (!(relative === ".." || relative.startsWith(`..${path.sep}`) || path.isAbsolute(relative))) return [];
|
|
1534
|
+
return [`- hooks.transformsDir: ${transformsDir} is outside ${transformsRoot}. Hook transform modules must live under ${transformsRoot}; move custom transforms there or remove hooks.transformsDir.`];
|
|
1535
|
+
}
|
|
1536
|
+
function collectConfiguredChannelIds(cfg) {
|
|
1537
|
+
const channels = cfg.channels && typeof cfg.channels === "object" && !Array.isArray(cfg.channels) ? cfg.channels : null;
|
|
1538
|
+
if (!channels) return [];
|
|
1539
|
+
return Object.keys(channels).filter((channelId) => channelId !== "defaults");
|
|
1540
|
+
}
|
|
1541
|
+
function emitDoctorChangesPanel(changeLines, shouldRepair, options = {}) {
|
|
1542
|
+
if (changeLines.length === 0) return;
|
|
1543
|
+
const body = changeLines.join("\n");
|
|
1544
|
+
note(options.sanitize ? sanitizeDoctorNote(body) : body, shouldRepair ? "Doctor changes" : "Doctor changes preview");
|
|
1545
|
+
}
|
|
1546
|
+
async function loadAndMaybeMigrateDoctorConfig(params) {
|
|
1547
|
+
const shouldRepair = params.options.repair === true || params.options.yes === true;
|
|
1548
|
+
const preflight = await runDoctorConfigPreflight({ repairPrefixedConfig: shouldRepair });
|
|
1549
|
+
let snapshot = preflight.snapshot;
|
|
1550
|
+
const baseCfg = preflight.baseConfig;
|
|
1551
|
+
let cfg = baseCfg;
|
|
1552
|
+
let candidate = structuredClone(baseCfg);
|
|
1553
|
+
let pendingChanges = false;
|
|
1554
|
+
let fixHints = [];
|
|
1555
|
+
const doctorFixCommand = formatCliCommand("daocore doctor --fix");
|
|
1556
|
+
const sourceMeta = snapshot.sourceConfig?.meta;
|
|
1557
|
+
const sourceLastTouchedVersion = typeof sourceMeta?.lastTouchedVersion === "string" ? sourceMeta.lastTouchedVersion : void 0;
|
|
1558
|
+
const legacyStep = applyLegacyCompatibilityStep({
|
|
1559
|
+
snapshot,
|
|
1560
|
+
state: {
|
|
1561
|
+
cfg,
|
|
1562
|
+
candidate,
|
|
1563
|
+
pendingChanges,
|
|
1564
|
+
fixHints
|
|
1565
|
+
},
|
|
1566
|
+
shouldRepair,
|
|
1567
|
+
doctorFixCommand
|
|
1568
|
+
});
|
|
1569
|
+
({cfg, candidate, pendingChanges, fixHints} = legacyStep.state);
|
|
1570
|
+
const legacyMigrationPartiallyValid = legacyStep.partiallyValid === true;
|
|
1571
|
+
const pluginLegacyIssues = await (async () => {
|
|
1572
|
+
if (snapshot.parsed === snapshot.sourceConfig) return [];
|
|
1573
|
+
const { findDoctorLegacyConfigIssues } = await import("./legacy-config-issues-Dzm7ycBi.js");
|
|
1574
|
+
return findDoctorLegacyConfigIssues(snapshot.parsed, snapshot.parsed);
|
|
1575
|
+
})();
|
|
1576
|
+
const seenLegacyIssues = new Set(snapshot.legacyIssues.map((issue) => `${issue.path}:${issue.message}`));
|
|
1577
|
+
const pluginIssueLines = pluginLegacyIssues.filter((issue) => {
|
|
1578
|
+
const key = `${issue.path}:${issue.message}`;
|
|
1579
|
+
if (seenLegacyIssues.has(key)) return false;
|
|
1580
|
+
seenLegacyIssues.add(key);
|
|
1581
|
+
return true;
|
|
1582
|
+
}).map((issue) => `- ${issue.path}: ${issue.message}`);
|
|
1583
|
+
const legacyIssueLines = [...legacyStep.issueLines, ...pluginIssueLines];
|
|
1584
|
+
if (pluginIssueLines.length > 0 && !shouldRepair && !fixHints.includes(`Run "${doctorFixCommand}" to migrate legacy config keys.`)) fixHints = [...fixHints, `Run "${doctorFixCommand}" to migrate legacy config keys.`];
|
|
1585
|
+
if (legacyIssueLines.length > 0) note(legacyIssueLines.join("\n"), "Legacy config keys detected");
|
|
1586
|
+
emitDoctorChangesPanel(legacyStep.changeLines, shouldRepair);
|
|
1587
|
+
if (hasLegacyInternalHookHandlers(snapshot.parsed)) note([
|
|
1588
|
+
"- hooks.internal.handlers: legacy inline hook modules are no longer part of the public config surface.",
|
|
1589
|
+
"- 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.",
|
|
1590
|
+
"- daocore doctor --fix does not rewrite this shape automatically."
|
|
1591
|
+
].join("\n"), "Legacy config keys detected");
|
|
1592
|
+
const hookTransformsDirWarnings = collectInvalidHookTransformsDirWarnings(cfg, snapshot.path);
|
|
1593
|
+
if (hookTransformsDirWarnings.length > 0) note(sanitizeDoctorNote(hookTransformsDirWarnings.join("\n")), "Doctor warnings");
|
|
1594
|
+
const normalized = normalizeCompatibilityConfigValues(candidate);
|
|
1595
|
+
if (normalized.changes.length > 0) {
|
|
1596
|
+
emitDoctorChangesPanel(normalized.changes, shouldRepair);
|
|
1597
|
+
({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
|
|
1598
|
+
state: {
|
|
1599
|
+
cfg,
|
|
1600
|
+
candidate,
|
|
1601
|
+
pendingChanges,
|
|
1602
|
+
fixHints
|
|
1603
|
+
},
|
|
1604
|
+
mutation: normalized,
|
|
1605
|
+
shouldRepair,
|
|
1606
|
+
fixHint: `Run "${doctorFixCommand}" to apply these changes.`
|
|
1607
|
+
}));
|
|
1608
|
+
}
|
|
1609
|
+
const { applyPluginAutoEnable } = await import("./plugin-auto-enable-Dsqxpx3C.js");
|
|
1610
|
+
const autoEnable = applyPluginAutoEnable({
|
|
1611
|
+
config: candidate,
|
|
1612
|
+
env: process.env
|
|
1613
|
+
});
|
|
1614
|
+
if (autoEnable.changes.length > 0) {
|
|
1615
|
+
emitDoctorChangesPanel(autoEnable.changes, shouldRepair);
|
|
1616
|
+
({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
|
|
1617
|
+
state: {
|
|
1618
|
+
cfg,
|
|
1619
|
+
candidate,
|
|
1620
|
+
pendingChanges,
|
|
1621
|
+
fixHints
|
|
1622
|
+
},
|
|
1623
|
+
mutation: autoEnable,
|
|
1624
|
+
shouldRepair,
|
|
1625
|
+
fixHint: `Run "${doctorFixCommand}" to apply these changes.`
|
|
1626
|
+
}));
|
|
1627
|
+
}
|
|
1628
|
+
const { collectBundledProviderAllowlistPolicyWarnings, collectPluginToolAllowlistWarnings } = await import("./plugin-tool-allowlist-warnings-B6iKMxj1.js");
|
|
1629
|
+
const pluginToolAllowlistWarnings = [...collectPluginToolAllowlistWarnings({
|
|
1630
|
+
cfg: candidate,
|
|
1631
|
+
env: process.env
|
|
1632
|
+
}), ...collectBundledProviderAllowlistPolicyWarnings({ cfg: candidate })];
|
|
1633
|
+
if (pluginToolAllowlistWarnings.length > 0) note(sanitizeDoctorNote(pluginToolAllowlistWarnings.join("\n")), "Doctor warnings");
|
|
1634
|
+
const hasConfiguredChannels = collectConfiguredChannelIds(candidate).length > 0;
|
|
1635
|
+
let collectMutableAllowlistWarnings;
|
|
1636
|
+
if (hasConfiguredChannels) {
|
|
1637
|
+
const channelDoctor = await import("./channel-doctor-4YPJlz89.js");
|
|
1638
|
+
collectMutableAllowlistWarnings = channelDoctor.collectChannelDoctorMutableAllowlistWarnings;
|
|
1639
|
+
const channelDoctorSequence = await channelDoctor.runChannelDoctorConfigSequences({
|
|
1640
|
+
cfg: candidate,
|
|
1641
|
+
env: process.env,
|
|
1642
|
+
shouldRepair
|
|
1643
|
+
});
|
|
1644
|
+
emitDoctorNotes({
|
|
1645
|
+
note,
|
|
1646
|
+
changeNotes: channelDoctorSequence.changeNotes,
|
|
1647
|
+
warningNotes: channelDoctorSequence.warningNotes
|
|
1648
|
+
});
|
|
1649
|
+
for (const staleCleanup of await channelDoctor.collectChannelDoctorStaleConfigMutations(candidate, { env: process.env })) {
|
|
1650
|
+
if (staleCleanup.changes.length === 0) continue;
|
|
1651
|
+
emitDoctorChangesPanel(staleCleanup.changes, shouldRepair, { sanitize: true });
|
|
1652
|
+
({cfg, candidate, pendingChanges, fixHints} = applyDoctorConfigMutation({
|
|
1653
|
+
state: {
|
|
1654
|
+
cfg,
|
|
1655
|
+
candidate,
|
|
1656
|
+
pendingChanges,
|
|
1657
|
+
fixHints
|
|
1658
|
+
},
|
|
1659
|
+
mutation: staleCleanup,
|
|
1660
|
+
shouldRepair,
|
|
1661
|
+
fixHint: `Run "${doctorFixCommand}" to remove stale channel plugin references.`
|
|
1662
|
+
}));
|
|
1663
|
+
}
|
|
1664
|
+
}
|
|
1665
|
+
const missingDefaultAccountBindingWarnings = collectMissingDefaultAccountBindingWarnings(candidate);
|
|
1666
|
+
if (missingDefaultAccountBindingWarnings.length > 0) note(missingDefaultAccountBindingWarnings.join("\n"), "Doctor warnings");
|
|
1667
|
+
const missingExplicitDefaultWarnings = collectMissingExplicitDefaultAccountWarnings(candidate);
|
|
1668
|
+
if (missingExplicitDefaultWarnings.length > 0) note(missingExplicitDefaultWarnings.join("\n"), "Doctor warnings");
|
|
1669
|
+
if (shouldRepair) {
|
|
1670
|
+
const { runDoctorRepairSequence } = await import("./repair-sequencing-C0jrL5pw.js");
|
|
1671
|
+
const repairSequence = await runDoctorRepairSequence({
|
|
1672
|
+
state: {
|
|
1673
|
+
cfg,
|
|
1674
|
+
candidate,
|
|
1675
|
+
pendingChanges,
|
|
1676
|
+
fixHints
|
|
1677
|
+
},
|
|
1678
|
+
doctorFixCommand,
|
|
1679
|
+
env: process.env
|
|
1680
|
+
});
|
|
1681
|
+
({cfg, candidate, pendingChanges, fixHints} = repairSequence.state);
|
|
1682
|
+
emitDoctorNotes({
|
|
1683
|
+
note,
|
|
1684
|
+
changeNotes: repairSequence.changeNotes,
|
|
1685
|
+
warningNotes: repairSequence.warningNotes
|
|
1686
|
+
});
|
|
1687
|
+
} else {
|
|
1688
|
+
const { collectDoctorPreviewNotes } = await import("./preview-warnings-O08PZRxu.js");
|
|
1689
|
+
const previewNotes = await collectDoctorPreviewNotes({
|
|
1690
|
+
cfg: candidate,
|
|
1691
|
+
doctorFixCommand,
|
|
1692
|
+
env: process.env
|
|
1693
|
+
});
|
|
1694
|
+
emitDoctorNotes({
|
|
1695
|
+
note,
|
|
1696
|
+
infoNotes: previewNotes.infoNotes,
|
|
1697
|
+
warningNotes: previewNotes.warningNotes
|
|
1698
|
+
});
|
|
1699
|
+
}
|
|
1700
|
+
const mutableAllowlistWarnings = collectMutableAllowlistWarnings ? await collectMutableAllowlistWarnings({
|
|
1701
|
+
cfg: candidate,
|
|
1702
|
+
env: process.env
|
|
1703
|
+
}) : [];
|
|
1704
|
+
if (mutableAllowlistWarnings.length > 0) note(sanitizeDoctorNote(mutableAllowlistWarnings.join("\n")), "Doctor warnings");
|
|
1705
|
+
const unknownStep = applyUnknownConfigKeyStep({
|
|
1706
|
+
state: {
|
|
1707
|
+
cfg,
|
|
1708
|
+
candidate,
|
|
1709
|
+
pendingChanges,
|
|
1710
|
+
fixHints
|
|
1711
|
+
},
|
|
1712
|
+
shouldRepair,
|
|
1713
|
+
doctorFixCommand
|
|
1714
|
+
});
|
|
1715
|
+
({cfg, candidate, pendingChanges, fixHints} = unknownStep.state);
|
|
1716
|
+
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");
|
|
1717
|
+
if (unknownStep.warnings.length > 0) note(unknownStep.warnings.join("\n"), "Doctor warnings");
|
|
1718
|
+
const finalized = await finalizeDoctorConfigFlow({
|
|
1719
|
+
cfg,
|
|
1720
|
+
candidate,
|
|
1721
|
+
pendingChanges,
|
|
1722
|
+
shouldRepair,
|
|
1723
|
+
fixHints,
|
|
1724
|
+
confirm: params.confirm,
|
|
1725
|
+
note
|
|
1726
|
+
});
|
|
1727
|
+
cfg = finalized.cfg;
|
|
1728
|
+
noteOpencodeProviderOverrides(cfg);
|
|
1729
|
+
noteImplicitFallbackClobberWarnings(cfg);
|
|
1730
|
+
return {
|
|
1731
|
+
cfg,
|
|
1732
|
+
path: snapshot.path ?? CONFIG_PATH,
|
|
1733
|
+
shouldWriteConfig: finalized.shouldWriteConfig,
|
|
1734
|
+
sourceConfigValid: snapshot.valid,
|
|
1735
|
+
preservedLegacyRootKeys: ["defaultModel"],
|
|
1736
|
+
...sourceLastTouchedVersion ? { sourceLastTouchedVersion } : {},
|
|
1737
|
+
...legacyMigrationPartiallyValid ? { skipPluginValidationOnWrite: true } : {}
|
|
1738
|
+
};
|
|
1739
|
+
}
|
|
1740
|
+
//#endregion
|
|
1741
|
+
export { loadAndMaybeMigrateDoctorConfig };
|