@qwen-code/qwen-code 0.19.3-nightly.20260701.a974594d7 → 0.19.4
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/bundled/loop/loop-tick-resolver.test.ts +42 -0
- package/bundled/loop/loop-tick-resolver.ts +1 -1
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/settings.md +23 -11
- package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
- package/bundled/qc-helper/docs/features/auto-mode.md +40 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +81 -18
- package/bundled/qc-helper/docs/features/code-review.md +17 -61
- package/bundled/qc-helper/docs/features/commands.md +6 -6
- package/bundled/qc-helper/docs/features/mcp.md +3 -1
- package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
- package/bundled/qc-helper/docs/qwen-serve.md +19 -0
- package/bundled/review/DESIGN.md +21 -26
- package/bundled/review/SKILL.md +45 -129
- package/chunks/{MaxSizedBox-UZHJ73JB.js → MaxSizedBox-ERTNFI22.js} +20 -18
- package/chunks/{StandaloneSessionPicker-GGUIZWCE.js → StandaloneSessionPicker-Y5NGRLRY.js} +32 -29
- package/chunks/{acpAgent-QYZFICEZ.js → acpAgent-UMN6OYTR.js} +473 -187
- package/chunks/{agent-2EN7YNSW.js → agent-56DZU4ZU.js} +17 -15
- package/chunks/{agent-headless-SLTEZ5LV.js → agent-headless-SR7N2IJG.js} +17 -15
- package/chunks/{anthropicContentGenerator-CA3JTAMO.js → anthropicContentGenerator-5OZFO6WQ.js} +1 -1
- package/chunks/{artifact-tool-RM7WINJO.js → artifact-tool-JVZMHA4B.js} +1 -1
- package/chunks/{askUserQuestion-J3P6QAJ7.js → askUserQuestion-CMJZ2F3D.js} +1 -1
- package/chunks/{bridge-HZVAUTMX.js → bridge-AUHNFOUS.js} +23 -21
- package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
- package/chunks/{chunk-N4V4VBP6.js → chunk-2X2JUE47.js} +2 -2
- package/chunks/{chunk-JV7A66DR.js → chunk-4VZH35PN.js} +528 -358
- package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
- package/chunks/{chunk-WGY3GIPP.js → chunk-6AQR7732.js} +1 -1
- package/chunks/{chunk-FR3II765.js → chunk-6CIIP6OE.js} +4 -4
- package/chunks/{chunk-IKO44NAT.js → chunk-6TLY5W3B.js} +2 -2
- package/chunks/{chunk-VN4CKYUW.js → chunk-73H73ASU.js} +1 -1
- package/chunks/{chunk-IBEM64M4.js → chunk-75X2VLSH.js} +36 -25
- package/chunks/{chunk-PLQTLKMR.js → chunk-7KPI4LAI.js} +3 -3
- package/chunks/{chunk-NVTRORSK.js → chunk-7VPC7D7O.js} +2 -2
- package/chunks/chunk-AHNXYU4O.js +24 -0
- package/chunks/{chunk-MTJVHQDP.js → chunk-B7KGXIPZ.js} +302 -257
- package/chunks/{chunk-35FH347N.js → chunk-BFG6OZN7.js} +16097 -16236
- package/chunks/{chunk-T44AF4I6.js → chunk-BNJLLAQ7.js} +1 -1
- package/chunks/{chunk-OEY3YAL2.js → chunk-BQNJBEUA.js} +2 -2
- package/chunks/{chunk-Q7TDHJ2G.js → chunk-C2IHHGBZ.js} +10 -10
- package/chunks/chunk-CG7SVARK.js +367 -0
- package/chunks/{chunk-7SP275SH.js → chunk-CS5XYDBO.js} +5 -5
- package/chunks/{chunk-V5YJAUHW.js → chunk-CUGEBAKG.js} +1 -1
- package/chunks/{chunk-FQDMX5IL.js → chunk-D5KISTLW.js} +309 -72
- package/chunks/{chunk-I4MXURND.js → chunk-DQ74W65K.js} +356 -468
- package/chunks/chunk-E5A7LHNN.js +51 -0
- package/chunks/{chunk-3PJXIDKI.js → chunk-E6US47KI.js} +3 -27
- package/chunks/chunk-EDAGQADF.js +21 -0
- package/chunks/{chunk-HUGAEYZR.js → chunk-FNLXLI4I.js} +2 -2
- package/chunks/{chunk-WJAY4WXR.js → chunk-FYKX6XOT.js} +1 -1
- package/chunks/{chunk-CA4ML3VH.js → chunk-G7OQ3RFJ.js} +1 -1
- package/chunks/{chunk-VHRREANT.js → chunk-GICCHL2Q.js} +3 -1
- package/chunks/{chunk-QHHNFG22.js → chunk-GLPV75ES.js} +1 -1
- package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
- package/chunks/chunk-HI55Z6PR.js +3523 -0
- package/chunks/{chunk-B5MPZI4K.js → chunk-HJDF3ZVU.js} +2670 -1233
- package/chunks/{chunk-GDIG7TMG.js → chunk-HRZB5CSC.js} +1 -1
- package/chunks/{chunk-LDWTYE33.js → chunk-J3F7X3LW.js} +1 -1
- package/chunks/{chunk-FV4SQ54H.js → chunk-KVPFPC4J.js} +227 -85
- package/chunks/{chunk-Q3JOGB4U.js → chunk-L7QPM2YD.js} +1 -1
- package/chunks/{chunk-4722VFFU.js → chunk-L7VH7HQA.js} +6 -6
- package/chunks/{chunk-HWG4XLD7.js → chunk-LKWAVAB5.js} +1 -1
- package/chunks/{chunk-YCRTJYSQ.js → chunk-MEQWZGK5.js} +1 -1
- package/chunks/{chunk-6FIWYVN4.js → chunk-MKHC4BYZ.js} +30 -5
- package/chunks/{chunk-YCEHOJZJ.js → chunk-MNDTD5E5.js} +65 -38
- package/chunks/{chunk-ZGSV5ORL.js → chunk-MVZXZWGT.js} +809 -759
- package/chunks/chunk-MX2YXRER.js +44 -0
- package/chunks/{chunk-TMILTLP3.js → chunk-ND25GXEU.js} +21 -4
- package/chunks/{chunk-AIBPG5MB.js → chunk-OAFUMTWW.js} +2 -2
- package/chunks/chunk-OJCECIJA.js +238 -0
- package/chunks/{chunk-EUURTJY7.js → chunk-PIYV6COW.js} +1 -1
- package/chunks/{chunk-LXEW6BHF.js → chunk-Q7VHIRDD.js} +1 -1
- package/chunks/{chunk-DBR7PF4B.js → chunk-QAFQLTXG.js} +1 -1
- package/chunks/{chunk-3TK7FSCP.js → chunk-QMIND2AS.js} +3 -3
- package/chunks/{chunk-ESVSWG6Z.js → chunk-QOMAHFYI.js} +1 -1
- package/chunks/{chunk-J37FGIOA.js → chunk-QXPI7FEC.js} +38 -4
- package/chunks/chunk-RM3PGSGL.js +66 -0
- package/chunks/chunk-RNBYOUGV.js +42 -0
- package/chunks/chunk-S5EQPDTM.js +91 -0
- package/chunks/{chunk-GZKQ36JS.js → chunk-SFN4TEHY.js} +4 -4
- package/chunks/{chunk-DHXWNSJA.js → chunk-T22H4V4R.js} +42 -0
- package/chunks/{chunk-LXGWLOCM.js → chunk-TENOUWY2.js} +1 -1
- package/chunks/{chunk-BLAE2TCO.js → chunk-TTFNVEO5.js} +3 -3
- package/chunks/{chunk-FZY7NH37.js → chunk-UANCYOOQ.js} +1 -1
- package/chunks/{chunk-E5I6YSNO.js → chunk-UQFP2FEF.js} +1 -1
- package/chunks/{chunk-3O2BJMFW.js → chunk-UQYOMM6J.js} +4 -4
- package/chunks/{chunk-JERW36RG.js → chunk-UT5JU5DJ.js} +15 -15
- package/chunks/{chunk-DJ25MIU2.js → chunk-VKGG724L.js} +8 -8
- package/chunks/{chunk-G525INVW.js → chunk-W2ZOAX7F.js} +3 -3
- package/chunks/{chunk-HIYUAXBG.js → chunk-W6X4FGWX.js} +1 -1
- package/chunks/{chunk-OE5J6UA7.js → chunk-XCUFHOAD.js} +1 -1
- package/chunks/{chunk-KXVVXAAC.js → chunk-YBDZ63KI.js} +3 -3
- package/chunks/{chunk-Z34RYLRO.js → chunk-ZJP5T7IA.js} +1 -1
- package/chunks/{chunk-NOYV2NXI.js → chunk-ZXCVPMIK.js} +411 -43
- package/chunks/{computer-use-FCNWHVPW.js → computer-use-VWN5HH6A.js} +20 -18
- package/chunks/{contextCommand-FVFMZZEU.js → contextCommand-DFFG5KDJ.js} +19 -17
- package/chunks/{cron-create-IY5NMIHQ.js → cron-create-CSSWJ67I.js} +1 -1
- package/chunks/{cron-delete-OLNEQWKO.js → cron-delete-E56CFQ7A.js} +1 -1
- package/chunks/{cron-list-YAUAUV24.js → cron-list-BKSINY6Y.js} +1 -1
- package/chunks/daemon-5T6IHWJV.js +8430 -0
- package/chunks/{daemon-status-provider-42JEXENZ.js → daemon-status-provider-V5UY7O7J.js} +26 -24
- package/chunks/{dist-4FCNM6KJ.js → dist-2HDL5SHQ.js} +2 -2
- package/chunks/{dist-SU6L7ZNJ.js → dist-B7SSDVWT.js} +3 -3
- package/chunks/{dist-VD7HXTML.js → dist-BL3SL665.js} +1 -1
- package/chunks/{dist-UKPWQJCL.js → dist-TAVAGZU6.js} +37 -13
- package/chunks/{dist-K4XZILIO.js → dist-XBOVZ3R5.js} +26 -5
- package/chunks/{earlyInputCapture-FFFEC6P4.js → earlyInputCapture-VVYU4FDO.js} +17 -15
- package/chunks/{edit-32ILSGZY.js → edit-F35PTMBA.js} +17 -15
- package/chunks/{en-U3LWGSFX.js → en-FZREZFPO.js} +18 -0
- package/chunks/{enter-worktree-XWZKIN6A.js → enter-worktree-3DIW7EGJ.js} +17 -15
- package/chunks/{enterPlanMode-LPFFY7BJ.js → enterPlanMode-QNXT77KP.js} +27 -15
- package/chunks/{errors-UXBPYPI2.js → errors-M53YG76R.js} +19 -17
- package/chunks/{exit-worktree-IBS4UIU7.js → exit-worktree-BSDWNWHZ.js} +17 -15
- package/chunks/{exitPlanMode-JA72YHII.js → exitPlanMode-EL7AY327.js} +41 -23
- package/chunks/{fast-path-7UU67Y2W.js → fast-path-DUCSMUFW.js} +2 -2
- package/chunks/{gemini-GMVKJNMX.js → gemini-F3IERB37.js} +59 -51
- package/chunks/{geminiContentGenerator-7NIFF2L4.js → geminiContentGenerator-6OULAKFQ.js} +1 -1
- package/chunks/{glob-4NJCW5HI.js → glob-ZMLFTD4T.js} +17 -15
- package/chunks/{grep-PAIMLQEL.js → grep-H5X66EI7.js} +17 -15
- package/chunks/{initializer-R6KU4VYM.js → initializer-LEOT2OLH.js} +21 -19
- package/chunks/{list-H7LXAO64.js → list-M3DKXML6.js} +23 -21
- package/chunks/{loadedSettingsAdapter-H27JMTLU.js → loadedSettingsAdapter-OKMQFGGG.js} +21 -19
- package/chunks/{loop-wakeup-Y3OIRQFM.js → loop-wakeup-FPBAVVPR.js} +2 -2
- package/chunks/{ls-TVJEYS7O.js → ls-UGWQXPTY.js} +1 -1
- package/chunks/{lsp-JZSDVR3F.js → lsp-24WV7NXB.js} +1 -1
- package/chunks/{monitor-JSIHDPXP.js → monitor-ARL5P45R.js} +19 -16
- package/chunks/{nonInteractiveCli-Y4CHOETG.js → nonInteractiveCli-NUVLF3YR.js} +53 -45
- package/chunks/{notebook-edit-SHRNL2UM.js → notebook-edit-ANTZ2DDY.js} +17 -15
- package/chunks/{openaiContentGenerator-ORZZ7VFO.js → openaiContentGenerator-TFGMKGHN.js} +6 -6
- package/chunks/pidfile-AWTL4C63.js +72 -0
- package/chunks/{qwenContentGenerator-H643PL2G.js → qwenContentGenerator-6QWAYTWS.js} +18 -16
- package/chunks/{qwenOAuth2-OI2B7PES.js → qwenOAuth2-LWLA6MQG.js} +3 -3
- package/chunks/{read-file-5PRNPTTY.js → read-file-EJY73XQ3.js} +4 -4
- package/chunks/{read-mcp-resource-QTXGKTEV.js → read-mcp-resource-NCBTPP7X.js} +1 -1
- package/chunks/{ripGrep-JIKZMABJ.js → ripGrep-HC4SA6CQ.js} +17 -15
- package/chunks/{run-qwen-serve-PQV7QOHZ.js → run-qwen-serve-AGLZ642J.js} +291 -55
- package/chunks/{scheduler-OS3R5MGU.js → scheduler-TURO7NGY.js} +17 -15
- package/chunks/{send-message-DKGHWSTF.js → send-message-3S2NYS3O.js} +5 -3
- package/chunks/{serve-LVYZDKCZ.js → serve-5DAMOIDW.js} +22 -19
- package/chunks/{server-P4YIH35I.js → server-4AGEK2HC.js} +2268 -1222
- package/chunks/{session-DE4TZBKH.js → session-7ZOQUC4Y.js} +54 -46
- package/chunks/{settings-DFTYMJYF.js → settings-DR4V6L5Y.js} +20 -18
- package/chunks/{shell-3GNQLNV7.js → shell-H5WFKUXH.js} +17 -15
- package/chunks/{skill-NCNG4KKZ.js → skill-ANHU5ZCR.js} +4 -4
- package/chunks/{spawnChannel-DHRIMDVL.js → spawnChannel-VN5LJV7Z.js} +19 -17
- package/chunks/{src-PNZYGM3R.js → src-OVZLTVVM.js} +49 -17
- package/chunks/{startInteractiveUI-P6GZBFQW.js → startInteractiveUI-OA22V32P.js} +11110 -10670
- package/chunks/{syntheticOutput-X7L5HWLN.js → syntheticOutput-SV7GBHZ5.js} +2 -2
- package/chunks/{task-create-AWEUI4GI.js → task-create-W2H2UJCH.js} +6 -5
- package/chunks/{task-list-KZ3VJLDU.js → task-list-THBOPV4G.js} +5 -4
- package/chunks/{task-stop-GUNOZKJ5.js → task-stop-33FVCNCJ.js} +1 -1
- package/chunks/{task-update-Y56GP6DU.js → task-update-LVFQLXEI.js} +6 -5
- package/chunks/{team-create-6JMW3KQK.js → team-create-OYL5CAQO.js} +17 -15
- package/chunks/{team-delete-6AFRGDJY.js → team-delete-NTUQ25UY.js} +5 -4
- package/chunks/{theme-manager-FEHQO22G.js → theme-manager-XCMPF2SI.js} +17 -15
- package/chunks/{todoWrite-JRS6NOEU.js → todoWrite-SEPO2RI3.js} +1 -1
- package/chunks/{tool-search-IXAEKS7J.js → tool-search-YXW55X6Z.js} +29 -5
- package/chunks/{trustedFolders-SJRXNHZE.js → trustedFolders-TEPGM5YL.js} +18 -16
- package/chunks/{validateNonInterActiveAuth-HCH7OBDH.js → validateNonInterActiveAuth-OQIS7WUE.js} +50 -42
- package/chunks/{web-fetch-RELNL37A.js → web-fetch-OE7LHURA.js} +4 -4
- package/chunks/{workflow-M2COBI7R.js → workflow-RTUWORAP.js} +48 -27
- package/chunks/{workspace-providers-status-GOCWYDMK.js → workspace-providers-status-DM2XANVB.js} +23 -21
- package/chunks/{workspace-service-34C7SUBU.js → workspace-service-VKBI2KZD.js} +27 -25
- package/chunks/{write-file-E52WRXZL.js → write-file-WGALQ53L.js} +17 -15
- package/chunks/{zh-TW-LKLBTZHE.js → zh-TW-6GIKXEAN.js} +18 -0
- package/chunks/{zh-F5T4WWZO.js → zh-V3B4TFWL.js} +18 -0
- package/cli.js +6 -6
- package/locales/en.js +30 -0
- package/locales/fr.js +1 -2
- package/locales/ja.js +1 -2
- package/locales/zh-TW.js +29 -0
- package/locales/zh.js +29 -0
- package/node_modules/@qwen-code/audio-capture/package.json +1 -1
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-C2DILvUl.js → arc-Det5Ccum.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-b8gZ2cNw.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-BuRpghMj.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-2ItdhFmE.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
- package/web-shell/assets/channel-Bm0bFauD.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-B1QXa0q3.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DXfhKlNq.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-ClSNjxLo.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-Dsh2wisB.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C1TkY5AR.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-CGtN9XR6.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BHiPi1SS.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CzG3I5o1.js → chunk-QZHKN3VN-a8PtLMck.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-EgrIoH_K.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BUnpdX8S.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-BlLUCVYu.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-FG-enmjQ.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BlzmTONk.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-CoBQ8mIx.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-DvxV6sX8.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Jq1tpAoj.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CbtYOry5.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-ZEn2VEKR.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BZh-LkhJ.js → gitGraphDiagram-PVQCEYII-DPrmySxO.js} +1 -1
- package/web-shell/assets/index-BpKnmyFV.js +717 -0
- package/web-shell/assets/index-fLrtxpOG.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-B9HuZygK.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D76cNpYG.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-6bGo7P1t.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-DuYyRBvB.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
- package/web-shell/assets/{linear-CpdSW1BC.js → linear-CQ6irBL9.js} +1 -1
- package/web-shell/assets/{mermaid.core-s5xbZMMj.js → mermaid.core-DtB6NO1e.js} +72 -72
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-go01fZ2y.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BfuZiEHO.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DsoINqV6.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-B7FU4LiU.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BEDjFnGB.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-gzmmL5tK.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-BtHD4IN_.js → stateDiagram-AJRCARHV-BjwUmrJF.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-T_8gmMCf.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DdjuqnjO.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-Cgtrvb37.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BW3f3-yW.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BUS9IKkc.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
- package/web-shell/index.html +18 -2
- package/chunks/chunk-2JKEQWDZ.js +0 -1596
- package/chunks/chunk-32MCHZQC.js +0 -73
- package/chunks/chunk-UAKXW3DN.js +0 -30
- package/web-shell/assets/channel-eRvn2UA3.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-YZNwy1rx.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-YZNwy1rx.js +0 -1
- package/web-shell/assets/index-5FhE0ORO.css +0 -5
- package/web-shell/assets/index-CDTGmqVm.js +0 -720
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DFy6gLDd.js +0 -1
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
// Force strict mode and setup for ESM
|
|
2
2
|
"use strict";
|
|
3
|
-
import {
|
|
4
|
-
contextCommand
|
|
5
|
-
} from "./chunk-GZKQ36JS.js";
|
|
6
3
|
import {
|
|
7
4
|
isValidSessionId,
|
|
8
5
|
validateAuthMethod
|
|
9
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MVZXZWGT.js";
|
|
7
|
+
import {
|
|
8
|
+
isKittyProtocolEnabled
|
|
9
|
+
} from "./chunk-JZSY4WP3.js";
|
|
10
|
+
import {
|
|
11
|
+
contextCommand
|
|
12
|
+
} from "./chunk-SFN4TEHY.js";
|
|
10
13
|
import {
|
|
11
14
|
VSCODE_SHIFT_ENTER_SEQUENCE,
|
|
12
15
|
calculateCost,
|
|
@@ -17,41 +20,38 @@ import {
|
|
|
17
20
|
getSystemInfoFields,
|
|
18
21
|
useKeypress,
|
|
19
22
|
writeOsc52
|
|
20
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-75X2VLSH.js";
|
|
21
24
|
import {
|
|
22
25
|
isTerminalGoalStatusKind
|
|
23
26
|
} from "./chunk-KSPVDFE4.js";
|
|
24
27
|
import {
|
|
25
28
|
Text
|
|
26
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-2X2JUE47.js";
|
|
27
30
|
import {
|
|
28
31
|
require_react
|
|
29
32
|
} from "./chunk-KYMBIKIW.js";
|
|
30
|
-
import {
|
|
31
|
-
isKittyProtocolEnabled
|
|
32
|
-
} from "./chunk-JZSY4WP3.js";
|
|
33
33
|
import {
|
|
34
34
|
themeManager
|
|
35
35
|
} from "./chunk-HTWHAN44.js";
|
|
36
36
|
import {
|
|
37
37
|
getErrorMessage as getErrorMessage2
|
|
38
|
-
} from "./chunk-
|
|
38
|
+
} from "./chunk-OAFUMTWW.js";
|
|
39
39
|
import {
|
|
40
40
|
GITHUB_WORKFLOW_PATHS,
|
|
41
41
|
setupGithub
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-L7QPM2YD.js";
|
|
43
43
|
import {
|
|
44
44
|
require_undici
|
|
45
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-54YZOP7P.js";
|
|
46
46
|
import {
|
|
47
47
|
stripUnsafeCharacters,
|
|
48
48
|
toCodePoints
|
|
49
|
-
} from "./chunk-
|
|
49
|
+
} from "./chunk-HRZB5CSC.js";
|
|
50
50
|
import {
|
|
51
51
|
getExtendedSystemInfo,
|
|
52
52
|
getGitVersion,
|
|
53
53
|
getNpmVersion
|
|
54
|
-
} from "./chunk-
|
|
54
|
+
} from "./chunk-W2ZOAX7F.js";
|
|
55
55
|
import {
|
|
56
56
|
formatDuration,
|
|
57
57
|
formatMemoryUsage,
|
|
@@ -60,7 +60,7 @@ import {
|
|
|
60
60
|
import {
|
|
61
61
|
isInlineModelOverrideAllowed,
|
|
62
62
|
parseAcpModelOption
|
|
63
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-BQNJBEUA.js";
|
|
64
64
|
import {
|
|
65
65
|
formatUnsupportedVoiceModelMessage,
|
|
66
66
|
getVoiceSettingsScope,
|
|
@@ -68,14 +68,19 @@ import {
|
|
|
68
68
|
isVoiceEnabled,
|
|
69
69
|
readVoiceMode,
|
|
70
70
|
readVoiceModel
|
|
71
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-Q7VHIRDD.js";
|
|
72
72
|
import {
|
|
73
73
|
OUTPUT_LANGUAGE_AUTO,
|
|
74
|
+
getAllSettingKeys,
|
|
75
|
+
getFlattenedSchema,
|
|
76
|
+
getNestedProperty,
|
|
74
77
|
getPersistScopeForModelSelection,
|
|
78
|
+
getSettingDefinition,
|
|
75
79
|
isAutoLanguage,
|
|
76
80
|
resolveOutputLanguage,
|
|
81
|
+
validateSettingValue,
|
|
77
82
|
writeOutputLanguageAndRegisterPath
|
|
78
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-MKHC4BYZ.js";
|
|
79
84
|
import {
|
|
80
85
|
SUPPORTED_LANGUAGES,
|
|
81
86
|
getCurrentLanguage,
|
|
@@ -83,11 +88,11 @@ import {
|
|
|
83
88
|
resolveSupportedLanguage,
|
|
84
89
|
setLanguageAsync,
|
|
85
90
|
t
|
|
86
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-UQYOMM6J.js";
|
|
87
92
|
import {
|
|
88
93
|
isFolderTrustEnabled,
|
|
89
94
|
loadTrustedFolders
|
|
90
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-ZJP5T7IA.js";
|
|
91
96
|
import {
|
|
92
97
|
require_strip_json_comments
|
|
93
98
|
} from "./chunk-QYUE6W3T.js";
|
|
@@ -105,10 +110,13 @@ import {
|
|
|
105
110
|
SESSION_TITLE_MAX_LENGTH,
|
|
106
111
|
SessionService,
|
|
107
112
|
ShellExecutionService,
|
|
113
|
+
So,
|
|
108
114
|
appendToLastTextPart,
|
|
109
115
|
buildBackgroundEntryLabel,
|
|
116
|
+
buildBareRememberPrompt,
|
|
110
117
|
buildBtwCacheSafeParams,
|
|
111
118
|
buildBtwPrompt,
|
|
119
|
+
buildManagedRememberPrompt,
|
|
112
120
|
canUseRipgrep,
|
|
113
121
|
checkArgumentSafety,
|
|
114
122
|
checkCommandPermissions,
|
|
@@ -117,7 +125,6 @@ import {
|
|
|
117
125
|
encodeInsightProgressMessage,
|
|
118
126
|
encodeInsightReadyMessage,
|
|
119
127
|
escapeShellArg,
|
|
120
|
-
extract,
|
|
121
128
|
findProviderByCredentials,
|
|
122
129
|
flatMapTextParts,
|
|
123
130
|
generateSessionRecap,
|
|
@@ -147,6 +154,7 @@ import {
|
|
|
147
154
|
normalizeSkillPriority,
|
|
148
155
|
parse,
|
|
149
156
|
parseInstallSource,
|
|
157
|
+
parseVisionModelSetting,
|
|
150
158
|
partToString,
|
|
151
159
|
persistSessionUsage,
|
|
152
160
|
readPathFromWorkspace,
|
|
@@ -160,13 +168,13 @@ import {
|
|
|
160
168
|
stripStartupContext,
|
|
161
169
|
tryGenerateSessionTitle,
|
|
162
170
|
unregisterGoalHook
|
|
163
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-BFG6OZN7.js";
|
|
164
172
|
import {
|
|
165
173
|
external_exports
|
|
166
174
|
} from "./chunk-K5PGHDBN.js";
|
|
167
175
|
import {
|
|
168
176
|
runSideQuery
|
|
169
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-MEQWZGK5.js";
|
|
170
178
|
import {
|
|
171
179
|
applySkillAllowedTools,
|
|
172
180
|
buildSkillLlmContent
|
|
@@ -187,14 +195,13 @@ import {
|
|
|
187
195
|
recordSkillInvocation,
|
|
188
196
|
resolveOpenAILogDir,
|
|
189
197
|
uiTelemetryService
|
|
190
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-HJDF3ZVU.js";
|
|
191
199
|
import {
|
|
192
|
-
getAutoMemoryRoot
|
|
193
|
-
getUserAutoMemoryRoot
|
|
200
|
+
getAutoMemoryRoot
|
|
194
201
|
} from "./chunk-MOUXUCXQ.js";
|
|
195
202
|
import {
|
|
196
203
|
ToolNames
|
|
197
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-4VZH35PN.js";
|
|
198
205
|
import {
|
|
199
206
|
openBrowserSecurely
|
|
200
207
|
} from "./chunk-22IFUCVR.js";
|
|
@@ -211,7 +218,7 @@ import {
|
|
|
211
218
|
isCpuProfileRecording,
|
|
212
219
|
startCpuProfile,
|
|
213
220
|
stopCpuProfile
|
|
214
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-XCUFHOAD.js";
|
|
215
222
|
import {
|
|
216
223
|
init_esbuild_shims
|
|
217
224
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -3664,6 +3671,332 @@ var clearCommand = {
|
|
|
3664
3671
|
}, "action")
|
|
3665
3672
|
};
|
|
3666
3673
|
|
|
3674
|
+
// packages/cli/src/ui/commands/config-command.ts
|
|
3675
|
+
init_esbuild_shims();
|
|
3676
|
+
var SETTABLE_TYPES = /* @__PURE__ */ new Set(["boolean", "string", "number", "enum"]);
|
|
3677
|
+
var SENSITIVE_KEY_PATTERNS = [
|
|
3678
|
+
/apikey/i,
|
|
3679
|
+
/api[_-]?key/i,
|
|
3680
|
+
/secret/i,
|
|
3681
|
+
/(?:^|\.)token(?:$|\.)/i,
|
|
3682
|
+
/password/i,
|
|
3683
|
+
/credential/i,
|
|
3684
|
+
/private[_-]?key/i
|
|
3685
|
+
];
|
|
3686
|
+
var SENSITIVE_URL_PATTERNS = [/baseurl/i, /base_url/i, /proxy/i];
|
|
3687
|
+
function isSensitiveKey(key) {
|
|
3688
|
+
return SENSITIVE_KEY_PATTERNS.some((p) => p.test(key)) || SENSITIVE_URL_PATTERNS.some((p) => p.test(key));
|
|
3689
|
+
}
|
|
3690
|
+
__name(isSensitiveKey, "isSensitiveKey");
|
|
3691
|
+
function maskValue(value) {
|
|
3692
|
+
if (value === void 0) return t("(not set)");
|
|
3693
|
+
if (typeof value === "string") {
|
|
3694
|
+
if (!value) return t("(empty)");
|
|
3695
|
+
if (value.length <= 4) return "****";
|
|
3696
|
+
return `${value.slice(0, 4)}****`;
|
|
3697
|
+
}
|
|
3698
|
+
return "****";
|
|
3699
|
+
}
|
|
3700
|
+
__name(maskValue, "maskValue");
|
|
3701
|
+
function findClosestKey(input) {
|
|
3702
|
+
const allKeys = getAllSettingKeys();
|
|
3703
|
+
let bestMatch;
|
|
3704
|
+
let bestDistance = Infinity;
|
|
3705
|
+
for (const key of allKeys) {
|
|
3706
|
+
const def = getSettingDefinition(key);
|
|
3707
|
+
if (!def || !SETTABLE_TYPES.has(def.type)) continue;
|
|
3708
|
+
const distance = levenshteinDistance(
|
|
3709
|
+
input.toLowerCase(),
|
|
3710
|
+
key.toLowerCase()
|
|
3711
|
+
);
|
|
3712
|
+
if (distance < bestDistance && distance <= 3) {
|
|
3713
|
+
bestDistance = distance;
|
|
3714
|
+
bestMatch = key;
|
|
3715
|
+
}
|
|
3716
|
+
}
|
|
3717
|
+
return bestMatch;
|
|
3718
|
+
}
|
|
3719
|
+
__name(findClosestKey, "findClosestKey");
|
|
3720
|
+
function levenshteinDistance(a, b) {
|
|
3721
|
+
const matrix = [];
|
|
3722
|
+
for (let i = 0; i <= a.length; i++) {
|
|
3723
|
+
matrix[i] = [i];
|
|
3724
|
+
}
|
|
3725
|
+
for (let j = 0; j <= b.length; j++) {
|
|
3726
|
+
matrix[0][j] = j;
|
|
3727
|
+
}
|
|
3728
|
+
for (let i = 1; i <= a.length; i++) {
|
|
3729
|
+
for (let j = 1; j <= b.length; j++) {
|
|
3730
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
3731
|
+
matrix[i][j] = Math.min(
|
|
3732
|
+
matrix[i - 1][j] + 1,
|
|
3733
|
+
matrix[i][j - 1] + 1,
|
|
3734
|
+
matrix[i - 1][j - 1] + cost
|
|
3735
|
+
);
|
|
3736
|
+
}
|
|
3737
|
+
}
|
|
3738
|
+
return matrix[a.length][b.length];
|
|
3739
|
+
}
|
|
3740
|
+
__name(levenshteinDistance, "levenshteinDistance");
|
|
3741
|
+
function coerceValue(def, rawValue) {
|
|
3742
|
+
switch (def.type) {
|
|
3743
|
+
case "boolean": {
|
|
3744
|
+
const normalised = rawValue?.toLowerCase().trim();
|
|
3745
|
+
if (normalised === "true" || normalised === "1") return { value: true };
|
|
3746
|
+
if (normalised === "false" || normalised === "0") return { value: false };
|
|
3747
|
+
return {
|
|
3748
|
+
value: void 0,
|
|
3749
|
+
error: t('Invalid boolean value: "{{value}}". Use "true" or "false".', {
|
|
3750
|
+
value: String(rawValue)
|
|
3751
|
+
})
|
|
3752
|
+
};
|
|
3753
|
+
}
|
|
3754
|
+
case "number": {
|
|
3755
|
+
if (!rawValue || rawValue.trim() === "") {
|
|
3756
|
+
return {
|
|
3757
|
+
value: void 0,
|
|
3758
|
+
error: t('Invalid number value: "{{value}}".', {
|
|
3759
|
+
value: String(rawValue)
|
|
3760
|
+
})
|
|
3761
|
+
};
|
|
3762
|
+
}
|
|
3763
|
+
const parsed = Number(rawValue);
|
|
3764
|
+
if (Number.isNaN(parsed) || !Number.isFinite(parsed)) {
|
|
3765
|
+
return {
|
|
3766
|
+
value: void 0,
|
|
3767
|
+
error: t('Invalid number value: "{{value}}".', {
|
|
3768
|
+
value: String(rawValue)
|
|
3769
|
+
})
|
|
3770
|
+
};
|
|
3771
|
+
}
|
|
3772
|
+
const validationError = validateSettingValue(def, parsed);
|
|
3773
|
+
if (validationError) {
|
|
3774
|
+
return { value: void 0, error: validationError };
|
|
3775
|
+
}
|
|
3776
|
+
return { value: parsed };
|
|
3777
|
+
}
|
|
3778
|
+
case "string": {
|
|
3779
|
+
const strValue = rawValue ?? "";
|
|
3780
|
+
const validationError = validateSettingValue(def, strValue);
|
|
3781
|
+
if (validationError) {
|
|
3782
|
+
return { value: void 0, error: validationError };
|
|
3783
|
+
}
|
|
3784
|
+
return { value: strValue };
|
|
3785
|
+
}
|
|
3786
|
+
case "enum": {
|
|
3787
|
+
const validValues = def.options?.map((o) => o.value) ?? [];
|
|
3788
|
+
if (!validValues.includes(rawValue)) {
|
|
3789
|
+
return {
|
|
3790
|
+
value: void 0,
|
|
3791
|
+
error: t(
|
|
3792
|
+
'Invalid enum value: "{{value}}". Valid values: {{options}}.',
|
|
3793
|
+
{ value: String(rawValue), options: validValues.join(", ") }
|
|
3794
|
+
)
|
|
3795
|
+
};
|
|
3796
|
+
}
|
|
3797
|
+
return { value: rawValue };
|
|
3798
|
+
}
|
|
3799
|
+
case "array":
|
|
3800
|
+
case "object":
|
|
3801
|
+
return {
|
|
3802
|
+
value: void 0,
|
|
3803
|
+
error: t(
|
|
3804
|
+
'Setting "{{type}}" type cannot be set via /config. Edit settings.json directly.',
|
|
3805
|
+
{ type: def.type }
|
|
3806
|
+
)
|
|
3807
|
+
};
|
|
3808
|
+
default:
|
|
3809
|
+
return {
|
|
3810
|
+
value: void 0,
|
|
3811
|
+
error: t('Unsupported setting type: "{{type}}".', {
|
|
3812
|
+
type: String(def.type)
|
|
3813
|
+
})
|
|
3814
|
+
};
|
|
3815
|
+
}
|
|
3816
|
+
}
|
|
3817
|
+
__name(coerceValue, "coerceValue");
|
|
3818
|
+
function formatValue(value) {
|
|
3819
|
+
if (value === void 0) return t("(not set)");
|
|
3820
|
+
if (typeof value === "string") return value || t("(empty)");
|
|
3821
|
+
return JSON.stringify(value);
|
|
3822
|
+
}
|
|
3823
|
+
__name(formatValue, "formatValue");
|
|
3824
|
+
function padRight(str, len) {
|
|
3825
|
+
if (str.length > len) return str.slice(0, len - 3) + "... ";
|
|
3826
|
+
if (str.length === len) return str + " ";
|
|
3827
|
+
return str + " ".repeat(len - str.length);
|
|
3828
|
+
}
|
|
3829
|
+
__name(padRight, "padRight");
|
|
3830
|
+
function listAllSettings(context) {
|
|
3831
|
+
const flattened = getFlattenedSchema();
|
|
3832
|
+
const merged = context.services.settings.merged;
|
|
3833
|
+
const lines = [];
|
|
3834
|
+
lines.push(t("Available settings:"));
|
|
3835
|
+
lines.push("");
|
|
3836
|
+
lines.push(
|
|
3837
|
+
padRight("Key", 40) + padRight("Type", 10) + padRight("Current", 15) + "Description"
|
|
3838
|
+
);
|
|
3839
|
+
lines.push("-".repeat(90));
|
|
3840
|
+
const keys = Object.keys(flattened).sort();
|
|
3841
|
+
for (const key of keys) {
|
|
3842
|
+
const def = flattened[key];
|
|
3843
|
+
if (!SETTABLE_TYPES.has(def.type)) continue;
|
|
3844
|
+
const current = getNestedProperty(merged, key);
|
|
3845
|
+
let displayCurrent;
|
|
3846
|
+
if (isSensitiveKey(key)) {
|
|
3847
|
+
displayCurrent = maskValue(current ?? def.default);
|
|
3848
|
+
} else {
|
|
3849
|
+
displayCurrent = current !== void 0 ? formatValue(current) : formatValue(def.default);
|
|
3850
|
+
}
|
|
3851
|
+
lines.push(
|
|
3852
|
+
padRight(key, 40) + padRight(def.type, 10) + padRight(displayCurrent, 15) + (def.description ?? def.label)
|
|
3853
|
+
);
|
|
3854
|
+
}
|
|
3855
|
+
return {
|
|
3856
|
+
type: "message",
|
|
3857
|
+
messageType: "info",
|
|
3858
|
+
content: lines.join("\n")
|
|
3859
|
+
};
|
|
3860
|
+
}
|
|
3861
|
+
__name(listAllSettings, "listAllSettings");
|
|
3862
|
+
var configCommand = {
|
|
3863
|
+
name: "config",
|
|
3864
|
+
get description() {
|
|
3865
|
+
return t("Get or set any setting by dot-path key");
|
|
3866
|
+
},
|
|
3867
|
+
argumentHint: "<key>[=<value>] or --help",
|
|
3868
|
+
kind: "built-in" /* BUILT_IN */,
|
|
3869
|
+
supportedModes: ["interactive", "non_interactive", "acp"],
|
|
3870
|
+
action: /* @__PURE__ */ __name(async (context, args) => {
|
|
3871
|
+
const trimmed = args.trim();
|
|
3872
|
+
if (!trimmed || trimmed === "--help" || trimmed === "-h") {
|
|
3873
|
+
return listAllSettings(context);
|
|
3874
|
+
}
|
|
3875
|
+
const eqIndex = trimmed.indexOf("=");
|
|
3876
|
+
const isToggle = eqIndex === -1;
|
|
3877
|
+
const key = isToggle ? trimmed : trimmed.slice(0, eqIndex).trim();
|
|
3878
|
+
const rawValue = isToggle ? void 0 : trimmed.slice(eqIndex + 1).trim();
|
|
3879
|
+
const def = getSettingDefinition(key);
|
|
3880
|
+
if (!def) {
|
|
3881
|
+
const suggestion = findClosestKey(key);
|
|
3882
|
+
return {
|
|
3883
|
+
type: "message",
|
|
3884
|
+
messageType: "error",
|
|
3885
|
+
content: suggestion ? t(
|
|
3886
|
+
'Unknown setting key: "{{key}}". Did you mean "{{suggestion}}"?',
|
|
3887
|
+
{ key, suggestion }
|
|
3888
|
+
) : t('Unknown setting key: "{{key}}".', { key })
|
|
3889
|
+
};
|
|
3890
|
+
}
|
|
3891
|
+
const currentValue = getNestedProperty(
|
|
3892
|
+
context.services.settings.merged,
|
|
3893
|
+
key
|
|
3894
|
+
);
|
|
3895
|
+
if (isToggle && def.type !== "boolean") {
|
|
3896
|
+
const display = isSensitiveKey(key) ? maskValue(currentValue) : formatValue(currentValue);
|
|
3897
|
+
return {
|
|
3898
|
+
type: "message",
|
|
3899
|
+
messageType: "info",
|
|
3900
|
+
content: `${key} = ${display}`
|
|
3901
|
+
};
|
|
3902
|
+
}
|
|
3903
|
+
if (isToggle && def.type === "boolean") {
|
|
3904
|
+
const newValue = !currentValue;
|
|
3905
|
+
try {
|
|
3906
|
+
context.services.settings.setValues([
|
|
3907
|
+
{ scope: "User" /* User */, key, value: newValue }
|
|
3908
|
+
]);
|
|
3909
|
+
} catch (error) {
|
|
3910
|
+
return {
|
|
3911
|
+
type: "message",
|
|
3912
|
+
messageType: "error",
|
|
3913
|
+
content: t('Failed to set "{{key}}": {{error}}', {
|
|
3914
|
+
key,
|
|
3915
|
+
error: error instanceof Error ? error.message : String(error)
|
|
3916
|
+
})
|
|
3917
|
+
};
|
|
3918
|
+
}
|
|
3919
|
+
let message2 = t("Set {{key}} = {{value}}", {
|
|
3920
|
+
key,
|
|
3921
|
+
value: String(newValue)
|
|
3922
|
+
});
|
|
3923
|
+
if (def.requiresRestart) {
|
|
3924
|
+
message2 += "\n" + t("(This setting requires a restart to take effect.)");
|
|
3925
|
+
}
|
|
3926
|
+
return {
|
|
3927
|
+
type: "message",
|
|
3928
|
+
messageType: "info",
|
|
3929
|
+
content: message2
|
|
3930
|
+
};
|
|
3931
|
+
}
|
|
3932
|
+
const result = coerceValue(def, rawValue);
|
|
3933
|
+
if (result.error) {
|
|
3934
|
+
return {
|
|
3935
|
+
type: "message",
|
|
3936
|
+
messageType: "error",
|
|
3937
|
+
content: result.error
|
|
3938
|
+
};
|
|
3939
|
+
}
|
|
3940
|
+
if (key === "tools.approvalMode" && result.value === "yolo") {
|
|
3941
|
+
return {
|
|
3942
|
+
type: "message",
|
|
3943
|
+
messageType: "error",
|
|
3944
|
+
content: t(
|
|
3945
|
+
'Setting tools.approvalMode to "yolo" is blocked via /config for security reasons. Edit settings.json directly if you understand the risks.'
|
|
3946
|
+
)
|
|
3947
|
+
};
|
|
3948
|
+
}
|
|
3949
|
+
try {
|
|
3950
|
+
context.services.settings.setValues([
|
|
3951
|
+
{ scope: "User" /* User */, key, value: result.value }
|
|
3952
|
+
]);
|
|
3953
|
+
} catch (error) {
|
|
3954
|
+
return {
|
|
3955
|
+
type: "message",
|
|
3956
|
+
messageType: "error",
|
|
3957
|
+
content: t('Failed to set "{{key}}": {{error}}', {
|
|
3958
|
+
key,
|
|
3959
|
+
error: error instanceof Error ? error.message : String(error)
|
|
3960
|
+
})
|
|
3961
|
+
};
|
|
3962
|
+
}
|
|
3963
|
+
const displayValue = isSensitiveKey(key) ? maskValue(result.value) : formatValue(result.value);
|
|
3964
|
+
let message = t("Set {{key}} = {{value}}", {
|
|
3965
|
+
key,
|
|
3966
|
+
value: displayValue
|
|
3967
|
+
});
|
|
3968
|
+
if (def.requiresRestart) {
|
|
3969
|
+
message += "\n" + t("(This setting requires a restart to take effect.)");
|
|
3970
|
+
}
|
|
3971
|
+
if (isSensitiveKey(key)) {
|
|
3972
|
+
message += "\n" + t(
|
|
3973
|
+
"(Security-sensitive setting \u2014 verify you are not exposing credentials.)"
|
|
3974
|
+
);
|
|
3975
|
+
}
|
|
3976
|
+
return {
|
|
3977
|
+
type: "message",
|
|
3978
|
+
messageType: "info",
|
|
3979
|
+
content: message
|
|
3980
|
+
};
|
|
3981
|
+
}, "action"),
|
|
3982
|
+
completion: /* @__PURE__ */ __name(async (_context, partialArg) => {
|
|
3983
|
+
const current = partialArg.trimStart();
|
|
3984
|
+
if (current.includes("=")) return null;
|
|
3985
|
+
const allKeys = getAllSettingKeys();
|
|
3986
|
+
return allKeys.filter((k) => {
|
|
3987
|
+
if (!k.startsWith(current)) return false;
|
|
3988
|
+
const def = getSettingDefinition(k);
|
|
3989
|
+
return def && SETTABLE_TYPES.has(def.type);
|
|
3990
|
+
}).map((k) => {
|
|
3991
|
+
const def = getSettingDefinition(k);
|
|
3992
|
+
return {
|
|
3993
|
+
value: k,
|
|
3994
|
+
description: def?.description ?? ""
|
|
3995
|
+
};
|
|
3996
|
+
});
|
|
3997
|
+
}, "completion")
|
|
3998
|
+
};
|
|
3999
|
+
|
|
3667
4000
|
// packages/cli/src/ui/commands/deleteCommand.ts
|
|
3668
4001
|
init_esbuild_shims();
|
|
3669
4002
|
var deleteCommand = {
|
|
@@ -5367,7 +5700,7 @@ async function extractArchive(archivePath, destDir, target) {
|
|
|
5367
5700
|
validateExtractedPaths(resolvedDest);
|
|
5368
5701
|
} else {
|
|
5369
5702
|
const resolvedDest = path5.resolve(destDir);
|
|
5370
|
-
await
|
|
5703
|
+
await So({
|
|
5371
5704
|
file: archivePath,
|
|
5372
5705
|
cwd: destDir,
|
|
5373
5706
|
preservePaths: false,
|
|
@@ -6797,7 +7130,7 @@ async function extractMetadata(conversation, config) {
|
|
|
6797
7130
|
const gitBranch = firstRecord?.gitBranch;
|
|
6798
7131
|
let gitRepo;
|
|
6799
7132
|
if (cwd) {
|
|
6800
|
-
const { getGitRepoName } = await import("./src-
|
|
7133
|
+
const { getGitRepoName } = await import("./src-OVZLTVVM.js");
|
|
6801
7134
|
gitRepo = getGitRepoName(cwd);
|
|
6802
7135
|
}
|
|
6803
7136
|
let model;
|
|
@@ -10646,6 +10979,12 @@ init_esbuild_shims();
|
|
|
10646
10979
|
var MAIN_MODEL_CONFIGURATION_HINT = "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model without arguments to choose from configured models.";
|
|
10647
10980
|
var FAST_MODEL_CONFIGURATION_HINT = "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model --fast without a model to choose from configured models.";
|
|
10648
10981
|
var VISION_MODEL_CONFIGURATION_HINT = "Configure an image-capable model in settings.modelProviders and ensure the required environment variables are set. Run /model --vision <model-id> to set it, or leave it unset to auto-pick a same-provider vision model.";
|
|
10982
|
+
function formatVisionModelSettingForDisplay(setting) {
|
|
10983
|
+
const parsed = parseVisionModelSetting(setting);
|
|
10984
|
+
if (!parsed) return setting.replace(/\0/g, "\\0");
|
|
10985
|
+
return parsed.baseUrl ? `${parsed.selector} (${parsed.baseUrl})` : parsed.selector;
|
|
10986
|
+
}
|
|
10987
|
+
__name(formatVisionModelSettingForDisplay, "formatVisionModelSettingForDisplay");
|
|
10649
10988
|
function persistSetting(settings, path20, value) {
|
|
10650
10989
|
settings.setValue(getPersistScopeForModelSelection(settings), path20, value);
|
|
10651
10990
|
}
|
|
@@ -10708,6 +11047,29 @@ function formatUnavailableVisionModelMessage(modelName, availableModels) {
|
|
|
10708
11047
|
);
|
|
10709
11048
|
}
|
|
10710
11049
|
__name(formatUnavailableVisionModelMessage, "formatUnavailableVisionModelMessage");
|
|
11050
|
+
function formatAmbiguousVisionModelMessage(modelName, matchingModels) {
|
|
11051
|
+
const endpoints = matchingModels.map((model) => model.baseUrl ?? "(default endpoint)").join(", ");
|
|
11052
|
+
const qualifiedSelectors = Array.from(
|
|
11053
|
+
new Set(
|
|
11054
|
+
matchingModels.map(
|
|
11055
|
+
(model) => model.authType ? `${model.authType}:${model.id}` : void 0
|
|
11056
|
+
).filter((selector) => selector !== void 0)
|
|
11057
|
+
)
|
|
11058
|
+
);
|
|
11059
|
+
const scriptedHint = qualifiedSelectors.length > 1 ? `
|
|
11060
|
+
${t(
|
|
11061
|
+
"For scripts, pass an auth-qualified selector such as {{selector}}.",
|
|
11062
|
+
{
|
|
11063
|
+
selector: qualifiedSelectors[0]
|
|
11064
|
+
}
|
|
11065
|
+
)}` : "";
|
|
11066
|
+
return t("Vision model '{{modelName}}' matches multiple configured endpoints.", {
|
|
11067
|
+
modelName
|
|
11068
|
+
}) + "\n" + t("Matching endpoints: {{endpoints}}.", { endpoints }) + "\n" + t(
|
|
11069
|
+
"Run /model --vision without an argument and choose the exact endpoint."
|
|
11070
|
+
) + scriptedHint;
|
|
11071
|
+
}
|
|
11072
|
+
__name(formatAmbiguousVisionModelMessage, "formatAmbiguousVisionModelMessage");
|
|
10711
11073
|
function formatNonVisionModelWarning(modelName) {
|
|
10712
11074
|
return t(
|
|
10713
11075
|
"\u26A0 '{{model}}' is not a known image-capable model; the vision bridge may fail on images.",
|
|
@@ -10948,13 +11310,15 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
10948
11310
|
const modelName2 = args.replace("--vision", "").trim();
|
|
10949
11311
|
if (!modelName2) {
|
|
10950
11312
|
if (context.executionMode !== "interactive") {
|
|
10951
|
-
const
|
|
11313
|
+
const visionModel2 = context.services.settings?.merged?.visionModel?.trim();
|
|
10952
11314
|
return {
|
|
10953
11315
|
type: "message",
|
|
10954
11316
|
messageType: "info",
|
|
10955
11317
|
content: t(
|
|
10956
11318
|
'Current vision model: {{visionModel}}\nUse "/model --vision <model-id>" to set the vision bridge model.',
|
|
10957
|
-
{
|
|
11319
|
+
{
|
|
11320
|
+
visionModel: visionModel2 ? formatVisionModelSettingForDisplay(visionModel2) : t("not set")
|
|
11321
|
+
}
|
|
10958
11322
|
)
|
|
10959
11323
|
};
|
|
10960
11324
|
}
|
|
@@ -10985,9 +11349,17 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
10985
11349
|
};
|
|
10986
11350
|
}
|
|
10987
11351
|
const availableModels = (selector.authType ? config.getAvailableModelsForAuthType(selector.authType) : config.getAllConfiguredModels()).filter((m) => !m.fastOnly && !m.voiceOnly);
|
|
10988
|
-
const
|
|
11352
|
+
const matchingModels = availableModels.filter(
|
|
10989
11353
|
(model) => model.id === selector.modelId
|
|
10990
11354
|
);
|
|
11355
|
+
if (matchingModels.length > 1) {
|
|
11356
|
+
return {
|
|
11357
|
+
type: "message",
|
|
11358
|
+
messageType: "error",
|
|
11359
|
+
content: formatAmbiguousVisionModelMessage(modelName2, matchingModels)
|
|
11360
|
+
};
|
|
11361
|
+
}
|
|
11362
|
+
const matched = matchingModels[0];
|
|
10991
11363
|
if (!matched) {
|
|
10992
11364
|
return {
|
|
10993
11365
|
type: "message",
|
|
@@ -11010,8 +11382,10 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
11010
11382
|
)
|
|
11011
11383
|
};
|
|
11012
11384
|
}
|
|
11013
|
-
|
|
11014
|
-
|
|
11385
|
+
const qualifiedModelName = `${selector.authType ?? matched.authType}:${selector.modelId}`;
|
|
11386
|
+
const visionModel = matched.baseUrl ? `${qualifiedModelName}\0${matched.baseUrl}` : qualifiedModelName;
|
|
11387
|
+
persistSetting(settings, "visionModel", visionModel);
|
|
11388
|
+
config.setVisionModel(visionModel);
|
|
11015
11389
|
const visionWarning = isImageCapable(matched) ? "" : `
|
|
11016
11390
|
${formatNonVisionModelWarning(modelName2)}`;
|
|
11017
11391
|
return {
|
|
@@ -11148,21 +11522,14 @@ var rememberCommand = {
|
|
|
11148
11522
|
}
|
|
11149
11523
|
const useManagedMemory = config?.isManagedMemoryAvailable() ?? false;
|
|
11150
11524
|
if (useManagedMemory) {
|
|
11151
|
-
const projectDir = config ? getAutoMemoryRoot(config.getProjectRoot()) : void 0;
|
|
11152
|
-
const userDir = getUserAutoMemoryRoot();
|
|
11153
|
-
const dirHint = projectDir !== void 0 ? ` Choose the destination directory by the type's \`<scope>\`: USER memory at \`${userDir}\` for cross-project facts, PROJECT memory at \`${projectDir}\` for this-project-only facts.` : "";
|
|
11154
11525
|
return {
|
|
11155
11526
|
type: "submit_prompt",
|
|
11156
|
-
content:
|
|
11157
|
-
|
|
11158
|
-
${fact}`
|
|
11527
|
+
content: buildManagedRememberPrompt(fact, config.getProjectRoot())
|
|
11159
11528
|
};
|
|
11160
11529
|
}
|
|
11161
11530
|
return {
|
|
11162
11531
|
type: "submit_prompt",
|
|
11163
|
-
content:
|
|
11164
|
-
|
|
11165
|
-
${fact}`
|
|
11532
|
+
content: buildBareRememberPrompt(fact)
|
|
11166
11533
|
};
|
|
11167
11534
|
}, "action")
|
|
11168
11535
|
};
|
|
@@ -15103,6 +15470,7 @@ var BuiltinCommandLoader = class {
|
|
|
15103
15470
|
clearCommand,
|
|
15104
15471
|
compressCommand,
|
|
15105
15472
|
compressFastCommand,
|
|
15473
|
+
configCommand,
|
|
15106
15474
|
contextCommand,
|
|
15107
15475
|
copyCommand,
|
|
15108
15476
|
diffCommand,
|