@qwen-code/qwen-code 0.19.3 → 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/SKILL.md +22 -3
- package/bundled/loop/SKILL.test.ts +20 -0
- package/bundled/loop/autonomous-loop.test.ts +59 -0
- package/bundled/loop/autonomous-loop.ts +102 -0
- package/bundled/loop/loop-task-file.test.ts +1064 -0
- package/bundled/loop/loop-task-file.ts +404 -0
- package/bundled/loop/loop-tick-resolver.test.ts +906 -0
- package/bundled/loop/loop-tick-resolver.ts +416 -0
- package/bundled/qc-helper/SKILL.md +12 -5
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/settings.md +40 -26
- 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/channels/plugins.md +1 -1
- 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/hooks.md +6 -1
- package/bundled/qc-helper/docs/features/mcp.md +3 -1
- package/bundled/qc-helper/docs/features/memory.md +1 -1
- package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
- package/bundled/qc-helper/docs/features/status-line.md +3 -3
- package/bundled/qc-helper/docs/ide-integration/ide-integration.md +4 -4
- package/bundled/qc-helper/docs/qwen-serve.md +19 -0
- package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
- package/bundled/review/DESIGN.md +21 -26
- package/bundled/review/SKILL.md +45 -129
- package/chunks/MaxSizedBox-ERTNFI22.js +68 -0
- package/chunks/{StandaloneSessionPicker-Z52JTYST.js → StandaloneSessionPicker-Y5NGRLRY.js} +48 -42
- package/chunks/{acpAgent-7RZUOWOM.js → acpAgent-UMN6OYTR.js} +1319 -361
- package/chunks/{agent-4FG7WTHJ.js → agent-56DZU4ZU.js} +30 -25
- package/chunks/agent-headless-SR7N2IJG.js +61 -0
- package/chunks/{anthropicContentGenerator-PFITVL7Y.js → anthropicContentGenerator-5OZFO6WQ.js} +11 -8
- package/chunks/{artifact-tool-D2X7G3C3.js → artifact-tool-JVZMHA4B.js} +3 -3
- package/chunks/{askUserQuestion-UGETICJQ.js → askUserQuestion-CMJZ2F3D.js} +2 -2
- package/chunks/bridge-AUHNFOUS.js +72 -0
- package/chunks/{ca-IUFWESZL.js → ca-RYOETBUW.js} +9 -9
- package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
- package/chunks/{chunk-T4T2FNV4.js → chunk-2X2JUE47.js} +2 -2
- package/chunks/{chunk-BX5YO7UW.js → chunk-4VZH35PN.js} +540 -370
- package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
- package/chunks/chunk-5P5XGNYH.js +93 -0
- package/chunks/{chunk-QWFNTRH4.js → chunk-6AQR7732.js} +1 -1
- package/chunks/{chunk-HZT4UCFB.js → chunk-6CIIP6OE.js} +4 -4
- package/chunks/{chunk-ADCIHOQZ.js → chunk-6TLY5W3B.js} +16 -8
- package/chunks/{chunk-BXSHL2SF.js → chunk-73H73ASU.js} +1 -1
- package/chunks/{chunk-3TV3HUWZ.js → chunk-75X2VLSH.js} +60 -30
- package/chunks/{chunk-6V4NZFUS.js → chunk-7KPI4LAI.js} +5 -5
- package/chunks/{chunk-PDE7CSDS.js → chunk-7VPC7D7O.js} +2 -2
- package/chunks/chunk-AHNXYU4O.js +24 -0
- package/chunks/{chunk-UX4SGCGN.js → chunk-AVQDCKNF.js} +96 -22
- package/chunks/{chunk-HYCC3XM3.js → chunk-B236XPGF.js} +1 -1
- package/chunks/{chunk-N4EJFBN5.js → chunk-B7KGXIPZ.js} +419 -262
- package/chunks/{chunk-YAINVQ3Q.js → chunk-BFG6OZN7.js} +17392 -16335
- package/chunks/{chunk-5DWXLGOM.js → chunk-BJBWRCSK.js} +1 -1
- package/chunks/{chunk-BTLJ2MF5.js → chunk-BNJLLAQ7.js} +3 -3
- package/chunks/{chunk-UYT3MWEB.js → chunk-BQNJBEUA.js} +16 -2
- package/chunks/{chunk-SKQZZVAV.js → chunk-BZHLWC6T.js} +2 -2
- package/chunks/{chunk-HPZTOP4I.js → chunk-C2IHHGBZ.js} +131 -21
- package/chunks/chunk-CG7SVARK.js +367 -0
- package/chunks/{chunk-CNLEDYE3.js → chunk-CS5XYDBO.js} +5 -5
- package/chunks/{chunk-O75BHFQW.js → chunk-CUGEBAKG.js} +2 -2
- package/chunks/{chunk-U3KSMM7G.js → chunk-D5KISTLW.js} +339 -383
- package/chunks/{chunk-STUWFKGD.js → chunk-DQ74W65K.js} +431 -535
- package/chunks/{chunk-VVLOGDB6.js → chunk-DX3TKXNT.js} +2 -2
- 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-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
- package/chunks/{chunk-4QK3O43S.js → chunk-FNLXLI4I.js} +4 -4
- package/chunks/{chunk-I2LYBGNI.js → chunk-FYKX6XOT.js} +1 -1
- package/chunks/{chunk-QLDPRILK.js → chunk-G7OQ3RFJ.js} +3 -3
- package/chunks/{chunk-R2BXK7SX.js → chunk-GHOTR7HL.js} +6 -1
- package/chunks/{chunk-L7OKCI7T.js → chunk-GICCHL2Q.js} +15 -1
- package/chunks/{chunk-KMGMKW5Q.js → chunk-GLPV75ES.js} +9 -3
- package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
- package/chunks/chunk-HI55Z6PR.js +3523 -0
- package/chunks/{chunk-QNKBEJO2.js → chunk-HJDF3ZVU.js} +2776 -1289
- package/chunks/{chunk-JJXWTVSK.js → chunk-HRZB5CSC.js} +34 -1
- package/chunks/{chunk-I4H7PRWQ.js → chunk-HTWHAN44.js} +1 -1
- package/chunks/{chunk-EJYJYJZ2.js → chunk-IRJWHZWU.js} +3 -70
- package/chunks/{chunk-CKQA6AWF.js → chunk-J3F7X3LW.js} +1 -1
- package/chunks/{chunk-QI7GOGJR.js → chunk-KKQWC6WS.js} +1 -1
- package/chunks/{chunk-VBZ452JT.js → chunk-KVPFPC4J.js} +494 -114
- package/chunks/{chunk-NDOC6M5S.js → chunk-L7QPM2YD.js} +2 -2
- package/chunks/{chunk-SLNKLLEO.js → chunk-L7VH7HQA.js} +12 -8
- package/chunks/{chunk-BVSVIN45.js → chunk-LKWAVAB5.js} +3 -3
- package/chunks/{chunk-ZP6UKOPB.js → chunk-LWGLBVWA.js} +1 -1
- package/chunks/{chunk-SBBN4BWR.js → chunk-MEQWZGK5.js} +1 -1
- package/chunks/{chunk-FKAVULLM.js → chunk-MKHC4BYZ.js} +58 -10
- package/chunks/{chunk-UFLGERMB.js → chunk-MNDTD5E5.js} +178 -124
- package/chunks/{chunk-RD6YJJJ6.js → chunk-MOUXUCXQ.js} +1 -1
- package/chunks/{chunk-EDMZZFDU.js → chunk-MVZXZWGT.js} +905 -795
- package/chunks/chunk-MX2YXRER.js +44 -0
- package/chunks/{chunk-JVHEVCAU.js → chunk-ND25GXEU.js} +23 -6
- package/chunks/chunk-NIOPRZNN.js +27 -0
- package/chunks/{chunk-DDMOU62Q.js → chunk-NPQWQYU6.js} +1 -1
- package/chunks/{chunk-PR32FRT6.js → chunk-OAFUMTWW.js} +3 -3
- package/chunks/chunk-OJCECIJA.js +238 -0
- package/chunks/{chunk-GGBIN5K7.js → chunk-PIYV6COW.js} +1 -1
- package/chunks/{chunk-CF6BB3LT.js → chunk-PPFWEV7G.js} +10 -1
- package/chunks/{chunk-4LUZAKMK.js → chunk-Q7VHIRDD.js} +1 -1
- package/chunks/{chunk-ODLIHNOY.js → chunk-QAFQLTXG.js} +1 -1
- package/chunks/{chunk-Y6YMRS3U.js → chunk-QMIND2AS.js} +3 -3
- package/chunks/{chunk-XJYUPHRC.js → chunk-QOMAHFYI.js} +3 -3
- 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-SEZC2725.js +36 -0
- package/chunks/{chunk-FNJ7BDPH.js → chunk-SFN4TEHY.js} +10 -7
- package/chunks/{chunk-O2VBQ3Y2.js → chunk-SJBIFVD2.js} +2 -2
- package/chunks/chunk-SYCJMSIJ.js +82 -0
- package/chunks/{chunk-JE5FVRPC.js → chunk-T22H4V4R.js} +48 -23
- package/chunks/{chunk-3227DZO4.js → chunk-T42ACHFI.js} +1 -1
- package/chunks/{chunk-UO5GVXQE.js → chunk-TENOUWY2.js} +3 -3
- package/chunks/{chunk-JOLIREYR.js → chunk-TOAUDIS7.js} +1 -1
- package/chunks/{chunk-J7FA27RO.js → chunk-TTFNVEO5.js} +3 -3
- package/chunks/{chunk-S7AKE7HL.js → chunk-UANCYOOQ.js} +63 -9
- package/chunks/{chunk-BUUQ5HPX.js → chunk-UQFP2FEF.js} +1 -1
- package/chunks/{chunk-R5OP2ATH.js → chunk-UQYOMM6J.js} +11 -11
- package/chunks/{chunk-J33ZR6OJ.js → chunk-UT5JU5DJ.js} +16 -16
- package/chunks/{chunk-QE6KJYLT.js → chunk-VKGG724L.js} +122 -25
- package/chunks/{chunk-SMXULRAN.js → chunk-VXGPYF7U.js} +1 -1
- package/chunks/{chunk-MNF6S5PR.js → chunk-W2ZOAX7F.js} +4 -4
- package/chunks/{chunk-GT2FGICD.js → chunk-W6X4FGWX.js} +1 -1
- package/chunks/{chunk-SMYQZVZ3.js → chunk-XCUFHOAD.js} +1 -1
- package/chunks/{chunk-K5XU6E4T.js → chunk-XKSCTXPK.js} +2 -2
- package/chunks/{chunk-FXKVLFFY.js → chunk-YBDZ63KI.js} +3 -3
- package/chunks/{chunk-BKXBARJZ.js → chunk-YPCPZSZB.js} +1 -1
- package/chunks/chunk-YTFBURQD.js +313 -0
- package/chunks/{chunk-NL4C3H6C.js → chunk-YXK4GPYO.js} +1 -1
- package/chunks/{chunk-F3ZYSEY6.js → chunk-ZJP5T7IA.js} +3 -3
- package/chunks/{chunk-RYLJU2DY.js → chunk-ZN5T4BHI.js} +1 -1
- package/chunks/{chunk-RRFZXMYP.js → chunk-ZXCVPMIK.js} +553 -138
- package/chunks/{computer-use-JGB36FDW.js → computer-use-VWN5HH6A.js} +33 -28
- package/chunks/contextCommand-DFFG5KDJ.js +66 -0
- package/chunks/{cron-create-SKEY55RG.js → cron-create-CSSWJ67I.js} +4 -4
- package/chunks/{cron-delete-I3NAT32Z.js → cron-delete-E56CFQ7A.js} +4 -4
- package/chunks/{cron-list-6XRRL6TH.js → cron-list-BKSINY6Y.js} +4 -4
- package/chunks/daemon-5T6IHWJV.js +8430 -0
- package/chunks/daemon-status-provider-V5UY7O7J.js +70 -0
- package/chunks/{de-EOW5PVHF.js → de-HB5NJXGB.js} +9 -9
- package/chunks/{dist-NHEYYB2B.js → dist-2HDL5SHQ.js} +2 -2
- package/chunks/{dist-663NZ6MI.js → dist-B7SSDVWT.js} +116 -11
- package/chunks/{dist-PQPZ5Q4N.js → dist-BL3SL665.js} +20 -9
- package/chunks/{dist-J37VXPLD.js → dist-TAVAGZU6.js} +40 -15
- package/chunks/{dist-LB6OGPVM.js → dist-XBOVZ3R5.js} +26 -5
- package/chunks/{earlyInputCapture-44RISVVJ.js → earlyInputCapture-VVYU4FDO.js} +31 -26
- package/chunks/{edit-NN6GM5DT.js → edit-F35PTMBA.js} +35 -29
- package/chunks/{en-HPWEJBTR.js → en-FZREZFPO.js} +30 -10
- package/chunks/{enter-worktree-PB3O2C7D.js → enter-worktree-3DIW7EGJ.js} +30 -25
- package/chunks/{enterPlanMode-YQFNNSUA.js → enterPlanMode-QNXT77KP.js} +40 -25
- package/chunks/{errors-LS7XU5DZ.js → errors-M53YG76R.js} +32 -27
- package/chunks/{exit-worktree-E2FTNSBK.js → exit-worktree-BSDWNWHZ.js} +30 -25
- package/chunks/{exitPlanMode-GLYK2BUB.js → exitPlanMode-EL7AY327.js} +54 -33
- package/chunks/{fast-path-WQ6M7LI7.js → fast-path-DUCSMUFW.js} +30 -13
- package/chunks/{fast-path-settings-OAGU3X5H.js → fast-path-settings-UQLRFDQP.js} +2 -2
- package/chunks/{fr-BN5NKSAC.js → fr-XY3NQFCM.js} +9 -9
- package/chunks/{gemini-2YFLVA2M.js → gemini-F3IERB37.js} +80 -67
- package/chunks/{geminiContentGenerator-XV6SV6CD.js → geminiContentGenerator-6OULAKFQ.js} +4 -4
- package/chunks/{glob-2H6CDDMK.js → glob-ZMLFTD4T.js} +30 -25
- package/chunks/{grep-VXIUXM3C.js → grep-H5X66EI7.js} +30 -25
- package/chunks/initializer-LEOT2OLH.js +66 -0
- package/chunks/{ja-7DEUB2TS.js → ja-J7YAG7SA.js} +9 -9
- package/chunks/{keychain-token-storage-YLMDLKXT.js → keychain-token-storage-GPAKRDKQ.js} +2 -2
- package/chunks/list-M3DKXML6.js +70 -0
- package/chunks/loadedSettingsAdapter-OKMQFGGG.js +65 -0
- package/chunks/{loop-wakeup-CITGGQHA.js → loop-wakeup-FPBAVVPR.js} +5 -5
- package/chunks/{ls-R5WP4BGZ.js → ls-UGWQXPTY.js} +4 -4
- package/chunks/{lsp-GSICJMMW.js → lsp-24WV7NXB.js} +2 -2
- package/chunks/{monitor-HKLRS2HQ.js → monitor-ARL5P45R.js} +32 -26
- package/chunks/nonInteractiveCli-NUVLF3YR.js +108 -0
- package/chunks/{notebook-edit-Y6SKSGTT.js → notebook-edit-ANTZ2DDY.js} +31 -26
- package/chunks/{openaiContentGenerator-J7G2FYJT.js → openaiContentGenerator-TFGMKGHN.js} +15 -13
- package/chunks/pidfile-AWTL4C63.js +72 -0
- package/chunks/{pt-TNZRNLQB.js → pt-6RTAA6SS.js} +9 -9
- package/chunks/{qwenContentGenerator-5XIEM5GV.js → qwenContentGenerator-6QWAYTWS.js} +32 -27
- package/chunks/{qwenOAuth2-AG3PFFLZ.js → qwenOAuth2-LWLA6MQG.js} +5 -4
- package/chunks/{read-file-J7D552ZJ.js → read-file-EJY73XQ3.js} +11 -10
- package/chunks/{read-mcp-resource-DQQW7H7T.js → read-mcp-resource-NCBTPP7X.js} +2 -2
- package/chunks/ripGrep-HC4SA6CQ.js +59 -0
- package/chunks/{ru-NIAUBKCN.js → ru-AUBGJ2C4.js} +9 -9
- package/chunks/{run-qwen-serve-SGEEVMXD.js → run-qwen-serve-AGLZ642J.js} +454 -94
- package/chunks/{scheduler-7CQI3S4Q.js → scheduler-TURO7NGY.js} +30 -25
- package/chunks/{send-message-EE4TWKVU.js → send-message-3S2NYS3O.js} +6 -4
- package/chunks/serve-5DAMOIDW.js +70 -0
- package/chunks/{server-4QMUWXPW.js → server-4AGEK2HC.js} +4098 -1173
- package/chunks/{session-NRO7UFOY.js → session-7ZOQUC4Y.js} +204 -64
- package/chunks/{settings-SGWRDQSC.js → settings-DR4V6L5Y.js} +34 -29
- package/chunks/{shell-62ANGIHL.js → shell-H5WFKUXH.js} +30 -25
- package/chunks/{skill-VWAQAWW6.js → skill-ANHU5ZCR.js} +13 -12
- package/chunks/spawnChannel-VN5LJV7Z.js +68 -0
- package/chunks/{src-KUV5J5Q2.js → src-OVZLTVVM.js} +114 -30
- package/chunks/{startInteractiveUI-6EYJN3JV.js → startInteractiveUI-OA22V32P.js} +15970 -15430
- package/chunks/{syntheticOutput-T5YHQ6S2.js → syntheticOutput-SV7GBHZ5.js} +3 -3
- package/chunks/{task-create-BLY7RHXX.js → task-create-W2H2UJCH.js} +8 -7
- package/chunks/{task-list-3QUYNVYR.js → task-list-THBOPV4G.js} +7 -6
- package/chunks/{task-stop-U4RATK2V.js → task-stop-33FVCNCJ.js} +2 -2
- package/chunks/{task-update-U54O7KJX.js → task-update-LVFQLXEI.js} +8 -7
- package/chunks/{team-create-LPOGCPM7.js → team-create-OYL5CAQO.js} +30 -25
- package/chunks/{team-delete-LKBYPASD.js → team-delete-NTUQ25UY.js} +7 -6
- package/chunks/theme-manager-XCMPF2SI.js +63 -0
- package/chunks/{todoWrite-OYXKTVYN.js → todoWrite-SEPO2RI3.js} +4 -4
- package/chunks/{tool-search-YPUFJ3ZQ.js → tool-search-YXW55X6Z.js} +36 -11
- package/chunks/{trustedFolders-5B24TMEA.js → trustedFolders-TEPGM5YL.js} +31 -26
- package/chunks/{validateNonInterActiveAuth-BTDTYOVT.js → validateNonInterActiveAuth-OQIS7WUE.js} +65 -55
- package/chunks/{web-fetch-EEB5LZYU.js → web-fetch-OE7LHURA.js} +5 -4
- package/chunks/{workflow-LAWIW5LI.js → workflow-RTUWORAP.js} +67 -39
- package/chunks/workspace-providers-status-DM2XANVB.js +67 -0
- package/chunks/workspace-service-VKBI2KZD.js +77 -0
- package/chunks/{write-file-PCV226DJ.js → write-file-WGALQ53L.js} +35 -30
- package/chunks/{zh-TW-TR3XYGE5.js → zh-TW-6GIKXEAN.js} +30 -10
- package/chunks/{zh-5EUYXASN.js → zh-V3B4TFWL.js} +30 -10
- package/cli.js +6 -6
- package/locales/ca.js +13 -13
- package/locales/de.js +13 -13
- package/locales/en.js +49 -15
- package/locales/fr.js +13 -14
- package/locales/ja.js +13 -14
- package/locales/pt.js +13 -13
- package/locales/ru.js +13 -13
- package/locales/zh-TW.js +47 -14
- package/locales/zh.js +47 -14
- 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 +15 -6
- package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
- package/postinstall.js +50 -0
- package/web-shell/assets/{arc-DA7r8Ueo.js → arc-Det5Ccum.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-ZDUxPtZ2.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-vrtOf1kJ.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-BHFjzIi4.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
- package/web-shell/assets/channel-Bm0bFauD.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-mdeQVz59.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BkKMlwBX.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-B7bnXNfu.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-DGz8Mm6i.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BQAydUNk.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-GHr2LN_p.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-7R91lnUx.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-aTJD3lSQ.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-BTf8t1RL.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-_sgp3WuA.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-CROtRy1w.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BqGRzwSc.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CMrcEtA7.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BRydGNW5.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-D0ilgNjV.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-2lnQeJUM.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-C_ZMdQiC.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-Dw9V_Ny0.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-HDXI-F1B.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-CuB8Ebua.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D_tyhVwh.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-CgCwJQNU.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-PZUtcbPx.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
- package/web-shell/assets/{linear-CZqRdJIU.js → linear-CQ6irBL9.js} +1 -1
- package/web-shell/assets/{mermaid.core-CPW_4UEF.js → mermaid.core-DtB6NO1e.js} +72 -72
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-D_Y75ID7.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-Q4dTyLeF.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-ckw329Ft.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-DbVDm4It.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CHuZ_ecH.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DU2YSpq-.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-CA9PEBUo.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-Bhlo4WVc.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-6xtPLsyl.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-3eozmXPf.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BOn6hKss.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-BsP4-I_y.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
- package/web-shell/index.html +18 -2
- package/chunks/MaxSizedBox-QNF3EIGU.js +0 -63
- package/chunks/agent-headless-RQ5BTX3G.js +0 -56
- package/chunks/bridge-JL2PMCIW.js +0 -66
- package/chunks/chunk-5GOVVXEV.js +0 -73
- package/chunks/chunk-BC3C4F3Q.js +0 -40
- package/chunks/chunk-BW4KCQFD.js +0 -1103
- package/chunks/chunk-RKIZXJMB.js +0 -13
- package/chunks/contextCommand-WYU6OQ2F.js +0 -61
- package/chunks/daemon-status-provider-HH2EC5FI.js +0 -65
- package/chunks/headlessSafetyWarnings-TBE35GJ4.js +0 -55
- package/chunks/initializer-2Y7SLOKV.js +0 -61
- package/chunks/list-ZAFHZ7OS.js +0 -65
- package/chunks/loadedSettingsAdapter-6KJXD6M3.js +0 -60
- package/chunks/nonInteractiveCli-5W4GIZQM.js +0 -96
- package/chunks/ripGrep-IEIFIWP4.js +0 -54
- package/chunks/serve-V6GVZR6U.js +0 -65
- package/chunks/spawnChannel-3VHW5EPY.js +0 -63
- package/chunks/theme-manager-LYLGAERF.js +0 -58
- package/chunks/workspace-providers-status-PIAFVYHA.js +0 -62
- package/chunks/workspace-service-YAIOD4HG.js +0 -71
- package/web-shell/assets/channel-iRo68q4Q.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +0 -1
- package/web-shell/assets/index-CHmzAWys.css +0 -5
- package/web-shell/assets/index-w6GTOHh1.js +0 -713
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +0 -1
|
@@ -3,10 +3,13 @@
|
|
|
3
3
|
import {
|
|
4
4
|
isValidSessionId,
|
|
5
5
|
validateAuthMethod
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MVZXZWGT.js";
|
|
7
|
+
import {
|
|
8
|
+
isKittyProtocolEnabled
|
|
9
|
+
} from "./chunk-JZSY4WP3.js";
|
|
7
10
|
import {
|
|
8
11
|
contextCommand
|
|
9
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-SFN4TEHY.js";
|
|
10
13
|
import {
|
|
11
14
|
VSCODE_SHIFT_ENTER_SEQUENCE,
|
|
12
15
|
calculateCost,
|
|
@@ -17,49 +20,47 @@ 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
33
|
import {
|
|
31
34
|
themeManager
|
|
32
|
-
} from "./chunk-
|
|
33
|
-
import {
|
|
34
|
-
isKittyProtocolEnabled
|
|
35
|
-
} from "./chunk-JZSY4WP3.js";
|
|
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,
|
|
58
58
|
formatTokenCount
|
|
59
59
|
} from "./chunk-KHDZHZMH.js";
|
|
60
60
|
import {
|
|
61
|
+
isInlineModelOverrideAllowed,
|
|
61
62
|
parseAcpModelOption
|
|
62
|
-
} from "./chunk-
|
|
63
|
+
} from "./chunk-BQNJBEUA.js";
|
|
63
64
|
import {
|
|
64
65
|
formatUnsupportedVoiceModelMessage,
|
|
65
66
|
getVoiceSettingsScope,
|
|
@@ -67,14 +68,19 @@ import {
|
|
|
67
68
|
isVoiceEnabled,
|
|
68
69
|
readVoiceMode,
|
|
69
70
|
readVoiceModel
|
|
70
|
-
} from "./chunk-
|
|
71
|
+
} from "./chunk-Q7VHIRDD.js";
|
|
71
72
|
import {
|
|
72
73
|
OUTPUT_LANGUAGE_AUTO,
|
|
74
|
+
getAllSettingKeys,
|
|
75
|
+
getFlattenedSchema,
|
|
76
|
+
getNestedProperty,
|
|
73
77
|
getPersistScopeForModelSelection,
|
|
78
|
+
getSettingDefinition,
|
|
74
79
|
isAutoLanguage,
|
|
75
80
|
resolveOutputLanguage,
|
|
81
|
+
validateSettingValue,
|
|
76
82
|
writeOutputLanguageAndRegisterPath
|
|
77
|
-
} from "./chunk-
|
|
83
|
+
} from "./chunk-MKHC4BYZ.js";
|
|
78
84
|
import {
|
|
79
85
|
SUPPORTED_LANGUAGES,
|
|
80
86
|
getCurrentLanguage,
|
|
@@ -82,11 +88,11 @@ import {
|
|
|
82
88
|
resolveSupportedLanguage,
|
|
83
89
|
setLanguageAsync,
|
|
84
90
|
t
|
|
85
|
-
} from "./chunk-
|
|
91
|
+
} from "./chunk-UQYOMM6J.js";
|
|
86
92
|
import {
|
|
87
93
|
isFolderTrustEnabled,
|
|
88
94
|
loadTrustedFolders
|
|
89
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-ZJP5T7IA.js";
|
|
90
96
|
import {
|
|
91
97
|
require_strip_json_comments
|
|
92
98
|
} from "./chunk-QYUE6W3T.js";
|
|
@@ -104,10 +110,13 @@ import {
|
|
|
104
110
|
SESSION_TITLE_MAX_LENGTH,
|
|
105
111
|
SessionService,
|
|
106
112
|
ShellExecutionService,
|
|
113
|
+
So,
|
|
107
114
|
appendToLastTextPart,
|
|
108
115
|
buildBackgroundEntryLabel,
|
|
116
|
+
buildBareRememberPrompt,
|
|
109
117
|
buildBtwCacheSafeParams,
|
|
110
118
|
buildBtwPrompt,
|
|
119
|
+
buildManagedRememberPrompt,
|
|
111
120
|
canUseRipgrep,
|
|
112
121
|
checkArgumentSafety,
|
|
113
122
|
checkCommandPermissions,
|
|
@@ -116,17 +125,18 @@ import {
|
|
|
116
125
|
encodeInsightProgressMessage,
|
|
117
126
|
encodeInsightReadyMessage,
|
|
118
127
|
escapeShellArg,
|
|
119
|
-
extract,
|
|
120
128
|
findProviderByCredentials,
|
|
121
129
|
flatMapTextParts,
|
|
122
130
|
generateSessionRecap,
|
|
123
131
|
getActiveGoal,
|
|
132
|
+
getArenaSystemReminder,
|
|
124
133
|
getExtensionDescription,
|
|
125
134
|
getExtensionDisplayName,
|
|
126
135
|
getIdeInstaller,
|
|
127
136
|
getInsightPrompt,
|
|
128
137
|
getLastGoalTerminal,
|
|
129
138
|
getMCPServerPrompts,
|
|
139
|
+
getPlanModeSystemReminder,
|
|
130
140
|
getProjectSummaryPrompt,
|
|
131
141
|
getShellConfiguration,
|
|
132
142
|
glob,
|
|
@@ -144,6 +154,7 @@ import {
|
|
|
144
154
|
normalizeSkillPriority,
|
|
145
155
|
parse,
|
|
146
156
|
parseInstallSource,
|
|
157
|
+
parseVisionModelSetting,
|
|
147
158
|
partToString,
|
|
148
159
|
persistSessionUsage,
|
|
149
160
|
readPathFromWorkspace,
|
|
@@ -157,21 +168,21 @@ import {
|
|
|
157
168
|
stripStartupContext,
|
|
158
169
|
tryGenerateSessionTitle,
|
|
159
170
|
unregisterGoalHook
|
|
160
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-BFG6OZN7.js";
|
|
161
172
|
import {
|
|
162
173
|
external_exports
|
|
163
174
|
} from "./chunk-K5PGHDBN.js";
|
|
164
175
|
import {
|
|
165
176
|
runSideQuery
|
|
166
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-MEQWZGK5.js";
|
|
167
178
|
import {
|
|
168
179
|
applySkillAllowedTools,
|
|
169
180
|
buildSkillLlmContent
|
|
170
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-B236XPGF.js";
|
|
171
182
|
import {
|
|
172
183
|
HookEventName,
|
|
173
184
|
sanitizeUserPromptExpansionAdditionalContext
|
|
174
|
-
} from "./chunk-
|
|
185
|
+
} from "./chunk-YXK4GPYO.js";
|
|
175
186
|
import {
|
|
176
187
|
IdeConnectionEvent,
|
|
177
188
|
formatTokenUsageSummaryAsCsv,
|
|
@@ -184,29 +195,30 @@ import {
|
|
|
184
195
|
recordSkillInvocation,
|
|
185
196
|
resolveOpenAILogDir,
|
|
186
197
|
uiTelemetryService
|
|
187
|
-
} from "./chunk-
|
|
198
|
+
} from "./chunk-HJDF3ZVU.js";
|
|
188
199
|
import {
|
|
189
|
-
getAutoMemoryRoot
|
|
190
|
-
|
|
191
|
-
} from "./chunk-RD6YJJJ6.js";
|
|
200
|
+
getAutoMemoryRoot
|
|
201
|
+
} from "./chunk-MOUXUCXQ.js";
|
|
192
202
|
import {
|
|
193
203
|
ToolNames
|
|
194
|
-
} from "./chunk-
|
|
204
|
+
} from "./chunk-4VZH35PN.js";
|
|
195
205
|
import {
|
|
196
206
|
openBrowserSecurely
|
|
197
207
|
} from "./chunk-22IFUCVR.js";
|
|
198
208
|
import {
|
|
199
209
|
Storage,
|
|
200
210
|
createDebugLogger,
|
|
211
|
+
expandHomeDir,
|
|
201
212
|
getErrorMessage,
|
|
202
213
|
isSubpath,
|
|
214
|
+
resolvePath,
|
|
203
215
|
updateSymlink
|
|
204
|
-
} from "./chunk-
|
|
216
|
+
} from "./chunk-AVQDCKNF.js";
|
|
205
217
|
import {
|
|
206
218
|
isCpuProfileRecording,
|
|
207
219
|
startCpuProfile,
|
|
208
220
|
stopCpuProfile
|
|
209
|
-
} from "./chunk-
|
|
221
|
+
} from "./chunk-XCUFHOAD.js";
|
|
210
222
|
import {
|
|
211
223
|
init_esbuild_shims
|
|
212
224
|
} from "./chunk-A4BMJM77.js";
|
|
@@ -253,7 +265,7 @@ var isBtwCommand = /* @__PURE__ */ __name((query) => {
|
|
|
253
265
|
}, "isBtwCommand");
|
|
254
266
|
var debugLogger = createDebugLogger("COMMAND_UTILS");
|
|
255
267
|
var copyToClipboard = /* @__PURE__ */ __name(async (text) => {
|
|
256
|
-
const run = /* @__PURE__ */ __name((cmd, args, options) => new Promise((
|
|
268
|
+
const run = /* @__PURE__ */ __name((cmd, args, options) => new Promise((resolve5, reject) => {
|
|
257
269
|
const child = options ? spawn(cmd, args, options) : spawn(cmd, args);
|
|
258
270
|
let stderr = "";
|
|
259
271
|
if (child.stderr) {
|
|
@@ -261,7 +273,7 @@ var copyToClipboard = /* @__PURE__ */ __name(async (text) => {
|
|
|
261
273
|
}
|
|
262
274
|
child.on("error", reject);
|
|
263
275
|
child.on("close", (code) => {
|
|
264
|
-
if (code === 0) return
|
|
276
|
+
if (code === 0) return resolve5();
|
|
265
277
|
const errorMsg = stderr.trim();
|
|
266
278
|
reject(
|
|
267
279
|
new Error(
|
|
@@ -2746,7 +2758,7 @@ function emitAutoModeEntryNotices(opts) {
|
|
|
2746
2758
|
const stripped = pm?.getStrippedDangerousRules?.();
|
|
2747
2759
|
if (stripped && (stripped.persistent.length > 0 || stripped.session.length > 0)) {
|
|
2748
2760
|
const lines = [
|
|
2749
|
-
"\u2139
|
|
2761
|
+
"\u2139 Auto mode temporarily disabled these allow rules",
|
|
2750
2762
|
" (they would bypass the classifier):",
|
|
2751
2763
|
...stripped.persistent.map((r) => ` - ${r.raw} (from user settings)`),
|
|
2752
2764
|
...stripped.session.map((r) => ` - ${r.raw} (session)`),
|
|
@@ -3103,27 +3115,12 @@ ${info}
|
|
|
3103
3115
|
// packages/cli/src/ui/commands/cdCommand.ts
|
|
3104
3116
|
init_esbuild_shims();
|
|
3105
3117
|
import * as fs3 from "node:fs/promises";
|
|
3106
|
-
import * as os2 from "node:os";
|
|
3107
3118
|
import * as path3 from "node:path";
|
|
3108
3119
|
|
|
3109
3120
|
// packages/cli/src/ui/commands/directoryCommand.tsx
|
|
3110
3121
|
init_esbuild_shims();
|
|
3111
3122
|
import * as fs2 from "node:fs";
|
|
3112
|
-
import * as os from "node:os";
|
|
3113
3123
|
import * as path2 from "node:path";
|
|
3114
|
-
function expandHomeDir(p) {
|
|
3115
|
-
if (!p) {
|
|
3116
|
-
return "";
|
|
3117
|
-
}
|
|
3118
|
-
let expandedPath = p;
|
|
3119
|
-
if (p.toLowerCase().startsWith("%userprofile%")) {
|
|
3120
|
-
expandedPath = os.homedir() + p.substring("%userprofile%".length);
|
|
3121
|
-
} else if (p === "~" || p.startsWith("~/")) {
|
|
3122
|
-
expandedPath = os.homedir() + p.substring(1);
|
|
3123
|
-
}
|
|
3124
|
-
return path2.normalize(expandedPath);
|
|
3125
|
-
}
|
|
3126
|
-
__name(expandHomeDir, "expandHomeDir");
|
|
3127
3124
|
function findExistingWorkspaceDirectory(directory, existingDirectories) {
|
|
3128
3125
|
if (existingDirectories.has(directory)) {
|
|
3129
3126
|
return directory;
|
|
@@ -3153,8 +3150,9 @@ __name(getSingleDirPathCompletions, "getSingleDirPathCompletions");
|
|
|
3153
3150
|
function getPathCompletions(prefix, partial) {
|
|
3154
3151
|
const trimmed = partial.trim();
|
|
3155
3152
|
if (!trimmed) return [];
|
|
3156
|
-
const
|
|
3157
|
-
const
|
|
3153
|
+
const inputEndsWithSep = trimmed.endsWith("/") || trimmed.endsWith("\\");
|
|
3154
|
+
const expanded = expandHomeDir(trimmed);
|
|
3155
|
+
const endsWithSep = inputEndsWithSep || expanded.endsWith("/") || expanded.endsWith(path2.sep);
|
|
3158
3156
|
const searchDir = endsWithSep ? expanded : path2.dirname(expanded);
|
|
3159
3157
|
const namePrefix = endsWithSep ? "" : path2.basename(expanded);
|
|
3160
3158
|
try {
|
|
@@ -3276,7 +3274,13 @@ var directoryCommand = {
|
|
|
3276
3274
|
}
|
|
3277
3275
|
if (added.length > 0) {
|
|
3278
3276
|
try {
|
|
3279
|
-
if (config.
|
|
3277
|
+
if (config.isSafeMode()) {
|
|
3278
|
+
messages.push(
|
|
3279
|
+
t(
|
|
3280
|
+
"Safe mode active \u2014 skipping memory reload from include directories."
|
|
3281
|
+
)
|
|
3282
|
+
);
|
|
3283
|
+
} else if (config.shouldLoadMemoryFromIncludeDirectories()) {
|
|
3280
3284
|
const {
|
|
3281
3285
|
memoryContent,
|
|
3282
3286
|
fileCount,
|
|
@@ -3407,16 +3411,7 @@ function resolveCdPath(input, baseDir) {
|
|
|
3407
3411
|
if (input.includes("\0") || baseDir.includes("\0")) {
|
|
3408
3412
|
throw new Error("Path contains null bytes.");
|
|
3409
3413
|
}
|
|
3410
|
-
|
|
3411
|
-
return path3.normalize(os2.homedir());
|
|
3412
|
-
}
|
|
3413
|
-
if (input.startsWith("~/")) {
|
|
3414
|
-
return path3.normalize(path3.join(os2.homedir(), input.slice(2)));
|
|
3415
|
-
}
|
|
3416
|
-
if (path3.isAbsolute(input)) {
|
|
3417
|
-
return path3.normalize(input);
|
|
3418
|
-
}
|
|
3419
|
-
return path3.resolve(baseDir, input);
|
|
3414
|
+
return path3.normalize(resolvePath(baseDir, input));
|
|
3420
3415
|
}
|
|
3421
3416
|
__name(resolveCdPath, "resolveCdPath");
|
|
3422
3417
|
var cdCommand = {
|
|
@@ -3676,6 +3671,332 @@ var clearCommand = {
|
|
|
3676
3671
|
}, "action")
|
|
3677
3672
|
};
|
|
3678
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
|
+
|
|
3679
4000
|
// packages/cli/src/ui/commands/deleteCommand.ts
|
|
3680
4001
|
init_esbuild_shims();
|
|
3681
4002
|
var deleteCommand = {
|
|
@@ -4407,7 +4728,7 @@ init_esbuild_shims();
|
|
|
4407
4728
|
// packages/cli/src/utils/doctorChecks.ts
|
|
4408
4729
|
init_esbuild_shims();
|
|
4409
4730
|
import process4 from "node:process";
|
|
4410
|
-
import
|
|
4731
|
+
import os from "node:os";
|
|
4411
4732
|
var MIN_NODE_MAJOR = 22;
|
|
4412
4733
|
function checkNodeVersion() {
|
|
4413
4734
|
const version = process4.version;
|
|
@@ -4456,7 +4777,7 @@ function checkPlatform() {
|
|
|
4456
4777
|
category: t("System"),
|
|
4457
4778
|
name: t("Platform"),
|
|
4458
4779
|
status: "pass",
|
|
4459
|
-
message: `${process4.platform}/${process4.arch} (${
|
|
4780
|
+
message: `${process4.platform}/${process4.arch} (${os.release()})`
|
|
4460
4781
|
};
|
|
4461
4782
|
}
|
|
4462
4783
|
__name(checkPlatform, "checkPlatform");
|
|
@@ -4756,7 +5077,7 @@ __name(runDoctorChecks, "runDoctorChecks");
|
|
|
4756
5077
|
// packages/cli/src/utils/memoryDiagnostics.ts
|
|
4757
5078
|
init_esbuild_shims();
|
|
4758
5079
|
import * as fs4 from "node:fs";
|
|
4759
|
-
import * as
|
|
5080
|
+
import * as os2 from "node:os";
|
|
4760
5081
|
import * as path4 from "node:path";
|
|
4761
5082
|
import * as v8 from "node:v8";
|
|
4762
5083
|
var HIGH_HEAP_PRESSURE_THRESHOLD = 0.85;
|
|
@@ -4813,7 +5134,7 @@ function getMemoryDiagnostics() {
|
|
|
4813
5134
|
}
|
|
4814
5135
|
__name(getMemoryDiagnostics, "getMemoryDiagnostics");
|
|
4815
5136
|
function defaultHeapSnapshotDir() {
|
|
4816
|
-
return path4.join(
|
|
5137
|
+
return path4.join(os2.homedir(), ".qwen", "memory-snapshots");
|
|
4817
5138
|
}
|
|
4818
5139
|
__name(defaultHeapSnapshotDir, "defaultHeapSnapshotDir");
|
|
4819
5140
|
function formatSnapshotTimestamp(now) {
|
|
@@ -4946,7 +5267,7 @@ function writeMemoryHeapSnapshot({
|
|
|
4946
5267
|
}
|
|
4947
5268
|
__name(writeMemoryHeapSnapshot, "writeMemoryHeapSnapshot");
|
|
4948
5269
|
function defaultWait(ms) {
|
|
4949
|
-
return new Promise((
|
|
5270
|
+
return new Promise((resolve5) => setTimeout(resolve5, ms));
|
|
4950
5271
|
}
|
|
4951
5272
|
__name(defaultWait, "defaultWait");
|
|
4952
5273
|
function normalizeSampleCount(sampleCount) {
|
|
@@ -5156,7 +5477,7 @@ init_esbuild_shims();
|
|
|
5156
5477
|
var import_undici = __toESM(require_undici(), 1);
|
|
5157
5478
|
import { createHash } from "node:crypto";
|
|
5158
5479
|
import * as fs5 from "node:fs";
|
|
5159
|
-
import * as
|
|
5480
|
+
import * as os3 from "node:os";
|
|
5160
5481
|
import * as path5 from "node:path";
|
|
5161
5482
|
import { Readable, Transform } from "node:stream";
|
|
5162
5483
|
import { spawn as spawn2, execFile } from "node:child_process";
|
|
@@ -5359,7 +5680,7 @@ __name(isSafeTarEntryPath, "isSafeTarEntryPath");
|
|
|
5359
5680
|
async function extractArchive(archivePath, destDir, target) {
|
|
5360
5681
|
fs5.mkdirSync(destDir, { recursive: true });
|
|
5361
5682
|
if (target.startsWith("win")) {
|
|
5362
|
-
await new Promise((
|
|
5683
|
+
await new Promise((resolve5, reject) => {
|
|
5363
5684
|
const ps = spawn2(
|
|
5364
5685
|
"powershell.exe",
|
|
5365
5686
|
[
|
|
@@ -5371,7 +5692,7 @@ async function extractArchive(archivePath, destDir, target) {
|
|
|
5371
5692
|
);
|
|
5372
5693
|
ps.on(
|
|
5373
5694
|
"close",
|
|
5374
|
-
(code) => code === 0 ?
|
|
5695
|
+
(code) => code === 0 ? resolve5() : reject(new Error(`Expand-Archive exited with code ${code}`))
|
|
5375
5696
|
);
|
|
5376
5697
|
ps.on("error", reject);
|
|
5377
5698
|
});
|
|
@@ -5379,7 +5700,7 @@ async function extractArchive(archivePath, destDir, target) {
|
|
|
5379
5700
|
validateExtractedPaths(resolvedDest);
|
|
5380
5701
|
} else {
|
|
5381
5702
|
const resolvedDest = path5.resolve(destDir);
|
|
5382
|
-
await
|
|
5703
|
+
await So({
|
|
5383
5704
|
file: archivePath,
|
|
5384
5705
|
cwd: destDir,
|
|
5385
5706
|
preservePaths: false,
|
|
@@ -5403,7 +5724,7 @@ async function extractArchive(archivePath, destDir, target) {
|
|
|
5403
5724
|
}
|
|
5404
5725
|
__name(extractArchive, "extractArchive");
|
|
5405
5726
|
function spawnAndCapture(command, args, timeoutMs) {
|
|
5406
|
-
return new Promise((
|
|
5727
|
+
return new Promise((resolve5, reject) => {
|
|
5407
5728
|
let settled = false;
|
|
5408
5729
|
const child = execFile(
|
|
5409
5730
|
command,
|
|
@@ -5418,10 +5739,10 @@ function spawnAndCapture(command, args, timeoutMs) {
|
|
|
5418
5739
|
}
|
|
5419
5740
|
if (err) {
|
|
5420
5741
|
const exitCode = "code" in err && typeof err.code === "number" ? err.code : 1;
|
|
5421
|
-
|
|
5742
|
+
resolve5({ exitCode, stdout: out || "", stderr: stderr || "" });
|
|
5422
5743
|
return;
|
|
5423
5744
|
}
|
|
5424
|
-
|
|
5745
|
+
resolve5({ exitCode: 0, stdout: out || "", stderr: stderr || "" });
|
|
5425
5746
|
}
|
|
5426
5747
|
);
|
|
5427
5748
|
child.on("error", (e) => {
|
|
@@ -5524,7 +5845,7 @@ function atomicReplace(standaloneDir, newDir, lockPath) {
|
|
|
5524
5845
|
if (fs5.existsSync(oldDir)) {
|
|
5525
5846
|
fs5.rmSync(oldDir, { recursive: true, force: true });
|
|
5526
5847
|
}
|
|
5527
|
-
if (
|
|
5848
|
+
if (os3.platform() === "win32") {
|
|
5528
5849
|
if (UNSAFE_CMD_CHARS.test(standaloneDir) || UNSAFE_CMD_CHARS.test(oldDir) || UNSAFE_CMD_CHARS.test(pendingDir)) {
|
|
5529
5850
|
throw new Error(
|
|
5530
5851
|
"Installation path contains characters unsafe for deferred update script"
|
|
@@ -5634,13 +5955,13 @@ function ensurePathInShellRc(binDir) {
|
|
|
5634
5955
|
assertSafeForShellEmbed(binDir, "binDir");
|
|
5635
5956
|
const shell = process.env["SHELL"] || "";
|
|
5636
5957
|
let rcFile = null;
|
|
5637
|
-
const home = process.env["HOME"] ||
|
|
5958
|
+
const home = process.env["HOME"] || os3.homedir();
|
|
5638
5959
|
if (shell.endsWith("/zsh")) {
|
|
5639
5960
|
rcFile = path5.join(home, ".zshrc");
|
|
5640
5961
|
} else if (shell.endsWith("/bash")) {
|
|
5641
5962
|
const bashrc = path5.join(home, ".bashrc");
|
|
5642
5963
|
const profile = path5.join(home, ".bash_profile");
|
|
5643
|
-
if (
|
|
5964
|
+
if (os3.platform() === "darwin") {
|
|
5644
5965
|
rcFile = fs5.existsSync(profile) ? profile : bashrc;
|
|
5645
5966
|
} else {
|
|
5646
5967
|
rcFile = bashrc;
|
|
@@ -5668,8 +5989,8 @@ export PATH="${binDir}:$PATH"
|
|
|
5668
5989
|
}
|
|
5669
5990
|
__name(ensurePathInShellRc, "ensurePathInShellRc");
|
|
5670
5991
|
function detectTarget() {
|
|
5671
|
-
const platform3 =
|
|
5672
|
-
const arch2 =
|
|
5992
|
+
const platform3 = os3.platform();
|
|
5993
|
+
const arch2 = os3.arch();
|
|
5673
5994
|
if (platform3 === "darwin") {
|
|
5674
5995
|
return arch2 === "arm64" ? "darwin-arm64" : "darwin-x64";
|
|
5675
5996
|
}
|
|
@@ -5709,7 +6030,7 @@ async function performStandaloneUpdate(standaloneDir, newVersion) {
|
|
|
5709
6030
|
if (isFirstTimeMigration) {
|
|
5710
6031
|
fs5.mkdirSync(standaloneDir, { recursive: true });
|
|
5711
6032
|
}
|
|
5712
|
-
const tempDir = fs5.mkdtempSync(path5.join(
|
|
6033
|
+
const tempDir = fs5.mkdtempSync(path5.join(os3.tmpdir(), "qwen-code-update-"));
|
|
5713
6034
|
let extractDir;
|
|
5714
6035
|
let updateResult;
|
|
5715
6036
|
try {
|
|
@@ -6512,14 +6833,14 @@ async function cpuProfileDoctorAction(context, args = "") {
|
|
|
6512
6833
|
})
|
|
6513
6834
|
});
|
|
6514
6835
|
}
|
|
6515
|
-
await new Promise((
|
|
6516
|
-
const timer = setTimeout(
|
|
6836
|
+
await new Promise((resolve5) => {
|
|
6837
|
+
const timer = setTimeout(resolve5, durationSec * 1e3);
|
|
6517
6838
|
if (abortSignal) {
|
|
6518
6839
|
abortSignal.addEventListener(
|
|
6519
6840
|
"abort",
|
|
6520
6841
|
() => {
|
|
6521
6842
|
clearTimeout(timer);
|
|
6522
|
-
|
|
6843
|
+
resolve5();
|
|
6523
6844
|
},
|
|
6524
6845
|
{ once: true }
|
|
6525
6846
|
);
|
|
@@ -6809,7 +7130,7 @@ async function extractMetadata(conversation, config) {
|
|
|
6809
7130
|
const gitBranch = firstRecord?.gitBranch;
|
|
6810
7131
|
let gitRepo;
|
|
6811
7132
|
if (cwd) {
|
|
6812
|
-
const { getGitRepoName } = await import("./src-
|
|
7133
|
+
const { getGitRepoName } = await import("./src-OVZLTVVM.js");
|
|
6813
7134
|
gitRepo = getGitRepoName(cwd);
|
|
6814
7135
|
}
|
|
6815
7136
|
let model;
|
|
@@ -9236,15 +9557,15 @@ function getIdeStatusMessage(ideClient) {
|
|
|
9236
9557
|
case "connected" /* Connected */:
|
|
9237
9558
|
return {
|
|
9238
9559
|
messageType: "info",
|
|
9239
|
-
content: `\
|
|
9560
|
+
content: `\u2713 Connected to ${ideClient.getDetectedIdeDisplayName()}`
|
|
9240
9561
|
};
|
|
9241
9562
|
case "connecting" /* Connecting */:
|
|
9242
9563
|
return {
|
|
9243
9564
|
messageType: "info",
|
|
9244
|
-
content: `\
|
|
9565
|
+
content: `\u25D0 Connecting...`
|
|
9245
9566
|
};
|
|
9246
9567
|
default: {
|
|
9247
|
-
let content = `\
|
|
9568
|
+
let content = `\u2717 Disconnected`;
|
|
9248
9569
|
if (connection?.details) {
|
|
9249
9570
|
content += `: ${connection.details}`;
|
|
9250
9571
|
}
|
|
@@ -9282,7 +9603,7 @@ async function getIdeStatusMessageWithFiles(ideClient) {
|
|
|
9282
9603
|
const connection = ideClient.getConnectionStatus();
|
|
9283
9604
|
switch (connection.status) {
|
|
9284
9605
|
case "connected" /* Connected */: {
|
|
9285
|
-
let content = `\
|
|
9606
|
+
let content = `\u2713 Connected to ${ideClient.getDetectedIdeDisplayName()}`;
|
|
9286
9607
|
const context = ideContextStore.get();
|
|
9287
9608
|
const openFiles = context?.workspaceState?.openFiles;
|
|
9288
9609
|
if (openFiles && openFiles.length > 0) {
|
|
@@ -9296,10 +9617,10 @@ async function getIdeStatusMessageWithFiles(ideClient) {
|
|
|
9296
9617
|
case "connecting" /* Connecting */:
|
|
9297
9618
|
return {
|
|
9298
9619
|
messageType: "info",
|
|
9299
|
-
content: `\
|
|
9620
|
+
content: `\u25D0 Connecting...`
|
|
9300
9621
|
};
|
|
9301
9622
|
default: {
|
|
9302
|
-
let content = `\
|
|
9623
|
+
let content = `\u2717 Disconnected`;
|
|
9303
9624
|
if (connection?.details) {
|
|
9304
9625
|
content += `: ${connection.details}`;
|
|
9305
9626
|
}
|
|
@@ -9427,7 +9748,7 @@ var ideCommand = /* @__PURE__ */ __name(async () => {
|
|
|
9427
9748
|
if (ideClient.getConnectionStatus().status === "connected" /* Connected */) {
|
|
9428
9749
|
break;
|
|
9429
9750
|
}
|
|
9430
|
-
await new Promise((
|
|
9751
|
+
await new Promise((resolve5) => setTimeout(resolve5, 500));
|
|
9431
9752
|
}
|
|
9432
9753
|
const { messageType, content } = getIdeStatusMessage(ideClient);
|
|
9433
9754
|
if (messageType === "error") {
|
|
@@ -9518,7 +9839,7 @@ init_esbuild_shims();
|
|
|
9518
9839
|
// packages/cli/src/config/claudeMcpImport.ts
|
|
9519
9840
|
init_esbuild_shims();
|
|
9520
9841
|
import * as fs8 from "node:fs";
|
|
9521
|
-
import * as
|
|
9842
|
+
import * as os4 from "node:os";
|
|
9522
9843
|
import * as path9 from "node:path";
|
|
9523
9844
|
var import_strip_json_comments = __toESM(require_strip_json_comments(), 1);
|
|
9524
9845
|
function isRecord(value) {
|
|
@@ -9605,11 +9926,11 @@ function getClaudeProjectSettings(projects, cwd) {
|
|
|
9605
9926
|
return void 0;
|
|
9606
9927
|
}
|
|
9607
9928
|
__name(getClaudeProjectSettings, "getClaudeProjectSettings");
|
|
9608
|
-
function getClaudeCodeConfigPath(homeDir =
|
|
9929
|
+
function getClaudeCodeConfigPath(homeDir = os4.homedir()) {
|
|
9609
9930
|
return path9.join(homeDir, ".claude.json");
|
|
9610
9931
|
}
|
|
9611
9932
|
__name(getClaudeCodeConfigPath, "getClaudeCodeConfigPath");
|
|
9612
|
-
function getClaudeDesktopConfigPath(homeDir =
|
|
9933
|
+
function getClaudeDesktopConfigPath(homeDir = os4.homedir(), platform3 = process.platform, env = process.env) {
|
|
9613
9934
|
if (platform3 === "win32") {
|
|
9614
9935
|
const appData = env["APPDATA"] ?? path9.win32.join(homeDir, "AppData", "Roaming");
|
|
9615
9936
|
return path9.win32.join(appData, "Claude", "claude_desktop_config.json");
|
|
@@ -9775,7 +10096,7 @@ function loadClaudeDesktopMcpServers(homeDir, platform3, env) {
|
|
|
9775
10096
|
}
|
|
9776
10097
|
__name(loadClaudeDesktopMcpServers, "loadClaudeDesktopMcpServers");
|
|
9777
10098
|
function loadClaudeMcpSources(options) {
|
|
9778
|
-
const homeDir = options.homeDir ??
|
|
10099
|
+
const homeDir = options.homeDir ?? os4.homedir();
|
|
9779
10100
|
const cwd = options.cwd ?? process.cwd();
|
|
9780
10101
|
const platform3 = options.platform ?? process.platform;
|
|
9781
10102
|
const env = options.env ?? process.env;
|
|
@@ -10658,6 +10979,12 @@ init_esbuild_shims();
|
|
|
10658
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.";
|
|
10659
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.";
|
|
10660
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");
|
|
10661
10988
|
function persistSetting(settings, path20, value) {
|
|
10662
10989
|
settings.setValue(getPersistScopeForModelSelection(settings), path20, value);
|
|
10663
10990
|
}
|
|
@@ -10720,6 +11047,29 @@ function formatUnavailableVisionModelMessage(modelName, availableModels) {
|
|
|
10720
11047
|
);
|
|
10721
11048
|
}
|
|
10722
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");
|
|
10723
11073
|
function formatNonVisionModelWarning(modelName) {
|
|
10724
11074
|
return t(
|
|
10725
11075
|
"\u26A0 '{{model}}' is not a known image-capable model; the vision bridge may fail on images.",
|
|
@@ -10760,10 +11110,10 @@ var modelCommand = {
|
|
|
10760
11110
|
completionPriority: 100,
|
|
10761
11111
|
get description() {
|
|
10762
11112
|
return t(
|
|
10763
|
-
"Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, [model-id] to switch immediately)."
|
|
11113
|
+
"Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion)."
|
|
10764
11114
|
);
|
|
10765
11115
|
},
|
|
10766
|
-
argumentHint: "[--fast|--voice|--vision] [<model-id>]",
|
|
11116
|
+
argumentHint: "[--fast|--voice|--vision] [<model-id>] | <model-id> <prompt>",
|
|
10767
11117
|
kind: "built-in" /* BUILT_IN */,
|
|
10768
11118
|
supportedModes: ["interactive", "non_interactive", "acp"],
|
|
10769
11119
|
completion: /* @__PURE__ */ __name(async (context, partialArg) => {
|
|
@@ -10960,13 +11310,15 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
10960
11310
|
const modelName2 = args.replace("--vision", "").trim();
|
|
10961
11311
|
if (!modelName2) {
|
|
10962
11312
|
if (context.executionMode !== "interactive") {
|
|
10963
|
-
const
|
|
11313
|
+
const visionModel2 = context.services.settings?.merged?.visionModel?.trim();
|
|
10964
11314
|
return {
|
|
10965
11315
|
type: "message",
|
|
10966
11316
|
messageType: "info",
|
|
10967
11317
|
content: t(
|
|
10968
11318
|
'Current vision model: {{visionModel}}\nUse "/model --vision <model-id>" to set the vision bridge model.',
|
|
10969
|
-
{
|
|
11319
|
+
{
|
|
11320
|
+
visionModel: visionModel2 ? formatVisionModelSettingForDisplay(visionModel2) : t("not set")
|
|
11321
|
+
}
|
|
10970
11322
|
)
|
|
10971
11323
|
};
|
|
10972
11324
|
}
|
|
@@ -10997,9 +11349,17 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
10997
11349
|
};
|
|
10998
11350
|
}
|
|
10999
11351
|
const availableModels = (selector.authType ? config.getAvailableModelsForAuthType(selector.authType) : config.getAllConfiguredModels()).filter((m) => !m.fastOnly && !m.voiceOnly);
|
|
11000
|
-
const
|
|
11352
|
+
const matchingModels = availableModels.filter(
|
|
11001
11353
|
(model) => model.id === selector.modelId
|
|
11002
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];
|
|
11003
11363
|
if (!matched) {
|
|
11004
11364
|
return {
|
|
11005
11365
|
type: "message",
|
|
@@ -11022,8 +11382,10 @@ Use "/model --fast <model-id>" to set fast model.`
|
|
|
11022
11382
|
)
|
|
11023
11383
|
};
|
|
11024
11384
|
}
|
|
11025
|
-
|
|
11026
|
-
|
|
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);
|
|
11027
11389
|
const visionWarning = isImageCapable(matched) ? "" : `
|
|
11028
11390
|
${formatNonVisionModelWarning(modelName2)}`;
|
|
11029
11391
|
return {
|
|
@@ -11048,15 +11410,11 @@ ${formatNonVisionModelWarning(modelName2)}`;
|
|
|
11048
11410
|
content: t("Authentication type not available.")
|
|
11049
11411
|
};
|
|
11050
11412
|
}
|
|
11051
|
-
const
|
|
11413
|
+
const trimmedArgs = args.trim();
|
|
11414
|
+
const firstSpace = trimmedArgs.search(/\s/);
|
|
11415
|
+
const modelName = firstSpace === -1 ? trimmedArgs : trimmedArgs.slice(0, firstSpace);
|
|
11416
|
+
const inlinePrompt = firstSpace === -1 ? "" : trimmedArgs.slice(firstSpace + 1).trim();
|
|
11052
11417
|
if (modelName) {
|
|
11053
|
-
if (!settings) {
|
|
11054
|
-
return {
|
|
11055
|
-
type: "message",
|
|
11056
|
-
messageType: "error",
|
|
11057
|
-
content: t("Settings service not available.")
|
|
11058
|
-
};
|
|
11059
|
-
}
|
|
11060
11418
|
const parsed = parseAcpModelOption(modelName);
|
|
11061
11419
|
const targetAuthType = parsed.authType ?? authType;
|
|
11062
11420
|
const availableModels = config.getAvailableModelsForAuthType(targetAuthType).filter((m) => !m.fastOnly && !m.voiceOnly);
|
|
@@ -11072,6 +11430,41 @@ ${formatNonVisionModelWarning(modelName2)}`;
|
|
|
11072
11430
|
)
|
|
11073
11431
|
};
|
|
11074
11432
|
}
|
|
11433
|
+
if (inlinePrompt) {
|
|
11434
|
+
if (context.executionMode === "acp") {
|
|
11435
|
+
return {
|
|
11436
|
+
type: "message",
|
|
11437
|
+
messageType: "error",
|
|
11438
|
+
content: t(
|
|
11439
|
+
"Inline one-shot override isn't supported in this mode \u2014 run '/model {{model}}' first, then send your prompt.",
|
|
11440
|
+
{ model: modelName }
|
|
11441
|
+
)
|
|
11442
|
+
};
|
|
11443
|
+
}
|
|
11444
|
+
const sameAuthType = targetAuthType === authType;
|
|
11445
|
+
if (!sameAuthType || !isInlineModelOverrideAllowed(config, parsed.modelId)) {
|
|
11446
|
+
return {
|
|
11447
|
+
type: "message",
|
|
11448
|
+
messageType: "error",
|
|
11449
|
+
content: t(
|
|
11450
|
+
"Inline one-shot override can't switch providers. '{{model}}' belongs to a different provider \u2014 run '/model {{model}}' first, then send your prompt.",
|
|
11451
|
+
{ model: modelName }
|
|
11452
|
+
)
|
|
11453
|
+
};
|
|
11454
|
+
}
|
|
11455
|
+
return {
|
|
11456
|
+
type: "submit_prompt",
|
|
11457
|
+
content: inlinePrompt,
|
|
11458
|
+
modelOverride: parsed.modelId
|
|
11459
|
+
};
|
|
11460
|
+
}
|
|
11461
|
+
if (!settings) {
|
|
11462
|
+
return {
|
|
11463
|
+
type: "message",
|
|
11464
|
+
messageType: "error",
|
|
11465
|
+
content: t("Settings service not available.")
|
|
11466
|
+
};
|
|
11467
|
+
}
|
|
11075
11468
|
const effectiveModelName = await switchMainModel(
|
|
11076
11469
|
config,
|
|
11077
11470
|
settings,
|
|
@@ -11129,21 +11522,14 @@ var rememberCommand = {
|
|
|
11129
11522
|
}
|
|
11130
11523
|
const useManagedMemory = config?.isManagedMemoryAvailable() ?? false;
|
|
11131
11524
|
if (useManagedMemory) {
|
|
11132
|
-
const projectDir = config ? getAutoMemoryRoot(config.getProjectRoot()) : void 0;
|
|
11133
|
-
const userDir = getUserAutoMemoryRoot();
|
|
11134
|
-
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.` : "";
|
|
11135
11525
|
return {
|
|
11136
11526
|
type: "submit_prompt",
|
|
11137
|
-
content:
|
|
11138
|
-
|
|
11139
|
-
${fact}`
|
|
11527
|
+
content: buildManagedRememberPrompt(fact, config.getProjectRoot())
|
|
11140
11528
|
};
|
|
11141
11529
|
}
|
|
11142
11530
|
return {
|
|
11143
11531
|
type: "submit_prompt",
|
|
11144
|
-
content:
|
|
11145
|
-
|
|
11146
|
-
${fact}`
|
|
11532
|
+
content: buildBareRememberPrompt(fact)
|
|
11147
11533
|
};
|
|
11148
11534
|
}, "action")
|
|
11149
11535
|
};
|
|
@@ -12722,7 +13108,7 @@ var summaryCommand = {
|
|
|
12722
13108
|
ui.addItem(
|
|
12723
13109
|
{
|
|
12724
13110
|
type: "error",
|
|
12725
|
-
text: `\
|
|
13111
|
+
text: `\u2717 ${formatErrorMessage3(error)}`
|
|
12726
13112
|
},
|
|
12727
13113
|
Date.now()
|
|
12728
13114
|
);
|
|
@@ -12823,7 +13209,7 @@ init_esbuild_shims();
|
|
|
12823
13209
|
// packages/cli/src/ui/utils/terminalSetup.ts
|
|
12824
13210
|
init_esbuild_shims();
|
|
12825
13211
|
import { promises as fs12 } from "node:fs";
|
|
12826
|
-
import * as
|
|
13212
|
+
import * as os5 from "node:os";
|
|
12827
13213
|
import * as path15 from "node:path";
|
|
12828
13214
|
import { exec } from "node:child_process";
|
|
12829
13215
|
import { promisify } from "node:util";
|
|
@@ -12847,7 +13233,7 @@ async function detectTerminal() {
|
|
|
12847
13233
|
if (termProgram === "vscode" || process.env["VSCODE_GIT_IPC_HANDLE"]) {
|
|
12848
13234
|
return "vscode";
|
|
12849
13235
|
}
|
|
12850
|
-
if (
|
|
13236
|
+
if (os5.platform() !== "win32") {
|
|
12851
13237
|
try {
|
|
12852
13238
|
const { stdout } = await execAsync("ps -o comm= -p $PPID");
|
|
12853
13239
|
const parentName = stdout.trim();
|
|
@@ -12877,10 +13263,10 @@ async function backupFile(filePath) {
|
|
|
12877
13263
|
}
|
|
12878
13264
|
__name(backupFile, "backupFile");
|
|
12879
13265
|
function getVSCodeStyleConfigDir(appName) {
|
|
12880
|
-
const platform3 =
|
|
13266
|
+
const platform3 = os5.platform();
|
|
12881
13267
|
if (platform3 === "darwin") {
|
|
12882
13268
|
return path15.join(
|
|
12883
|
-
|
|
13269
|
+
os5.homedir(),
|
|
12884
13270
|
"Library",
|
|
12885
13271
|
"Application Support",
|
|
12886
13272
|
appName,
|
|
@@ -12892,7 +13278,7 @@ function getVSCodeStyleConfigDir(appName) {
|
|
|
12892
13278
|
}
|
|
12893
13279
|
return path15.join(process.env["APPDATA"], appName, "User");
|
|
12894
13280
|
} else {
|
|
12895
|
-
return path15.join(
|
|
13281
|
+
return path15.join(os5.homedir(), ".config", appName, "User");
|
|
12896
13282
|
}
|
|
12897
13283
|
}
|
|
12898
13284
|
__name(getVSCodeStyleConfigDir, "getVSCodeStyleConfigDir");
|
|
@@ -13360,7 +13746,7 @@ var setupGithubCommand = {
|
|
|
13360
13746
|
|
|
13361
13747
|
// packages/cli/src/ui/commands/insightCommand.ts
|
|
13362
13748
|
init_esbuild_shims();
|
|
13363
|
-
import { join as
|
|
13749
|
+
import { join as join9 } from "path";
|
|
13364
13750
|
import { pathToFileURL } from "node:url";
|
|
13365
13751
|
|
|
13366
13752
|
// packages/cli/src/services/insight/generators/StaticInsightGenerator.ts
|
|
@@ -13471,27 +13857,27 @@ function pLimit(concurrency) {
|
|
|
13471
13857
|
activeCount--;
|
|
13472
13858
|
resumeNext();
|
|
13473
13859
|
}, "next");
|
|
13474
|
-
const run = /* @__PURE__ */ __name(async (function_,
|
|
13860
|
+
const run = /* @__PURE__ */ __name(async (function_, resolve5, arguments_) => {
|
|
13475
13861
|
const result = (async () => function_(...arguments_))();
|
|
13476
|
-
|
|
13862
|
+
resolve5(result);
|
|
13477
13863
|
try {
|
|
13478
13864
|
await result;
|
|
13479
13865
|
} catch {
|
|
13480
13866
|
}
|
|
13481
13867
|
next();
|
|
13482
13868
|
}, "run");
|
|
13483
|
-
const enqueue = /* @__PURE__ */ __name((function_,
|
|
13869
|
+
const enqueue = /* @__PURE__ */ __name((function_, resolve5, reject, arguments_) => {
|
|
13484
13870
|
const queueItem = { reject };
|
|
13485
13871
|
new Promise((internalResolve) => {
|
|
13486
13872
|
queueItem.run = internalResolve;
|
|
13487
13873
|
queue.enqueue(queueItem);
|
|
13488
|
-
}).then(run.bind(void 0, function_,
|
|
13874
|
+
}).then(run.bind(void 0, function_, resolve5, arguments_));
|
|
13489
13875
|
if (activeCount < concurrency) {
|
|
13490
13876
|
resumeNext();
|
|
13491
13877
|
}
|
|
13492
13878
|
}, "enqueue");
|
|
13493
|
-
const generator = /* @__PURE__ */ __name((function_, ...arguments_) => new Promise((
|
|
13494
|
-
enqueue(function_,
|
|
13879
|
+
const generator = /* @__PURE__ */ __name((function_, ...arguments_) => new Promise((resolve5, reject) => {
|
|
13880
|
+
enqueue(function_, resolve5, reject, arguments_);
|
|
13495
13881
|
}), "generator");
|
|
13496
13882
|
Object.defineProperties(generator, {
|
|
13497
13883
|
activeCount: {
|
|
@@ -14432,7 +14818,7 @@ None captured`;
|
|
|
14432
14818
|
overallProgress
|
|
14433
14819
|
);
|
|
14434
14820
|
}
|
|
14435
|
-
await new Promise((
|
|
14821
|
+
await new Promise((resolve5) => setTimeout(resolve5, 0));
|
|
14436
14822
|
}
|
|
14437
14823
|
const streakData = this.calculateStreaks(Object.keys(heatmap));
|
|
14438
14824
|
let longestWorkDuration = 0;
|
|
@@ -14728,7 +15114,7 @@ var insightCommand = {
|
|
|
14728
15114
|
action: /* @__PURE__ */ __name(async (context) => {
|
|
14729
15115
|
try {
|
|
14730
15116
|
context.ui.setDebugMessage(t("Generating insights..."));
|
|
14731
|
-
const projectsDir =
|
|
15117
|
+
const projectsDir = join9(Storage.getRuntimeBaseDir(), "projects");
|
|
14732
15118
|
if (!context.services.config) {
|
|
14733
15119
|
if (context.executionMode !== "interactive") {
|
|
14734
15120
|
return {
|
|
@@ -14771,12 +15157,12 @@ var insightCommand = {
|
|
|
14771
15157
|
let isComplete = false;
|
|
14772
15158
|
let resume = null;
|
|
14773
15159
|
const flushResume = /* @__PURE__ */ __name(() => {
|
|
14774
|
-
const
|
|
14775
|
-
if (!
|
|
15160
|
+
const resolve5 = resume;
|
|
15161
|
+
if (!resolve5) {
|
|
14776
15162
|
return;
|
|
14777
15163
|
}
|
|
14778
15164
|
resume = null;
|
|
14779
|
-
|
|
15165
|
+
resolve5();
|
|
14780
15166
|
}, "flushResume");
|
|
14781
15167
|
const pushMessage = /* @__PURE__ */ __name((message) => {
|
|
14782
15168
|
pendingMessages.push(message);
|
|
@@ -14785,8 +15171,8 @@ var insightCommand = {
|
|
|
14785
15171
|
const streamMessages = /* @__PURE__ */ __name(async function* () {
|
|
14786
15172
|
while (!isComplete || pendingMessages.length > 0) {
|
|
14787
15173
|
if (pendingMessages.length === 0) {
|
|
14788
|
-
await new Promise((
|
|
14789
|
-
resume =
|
|
15174
|
+
await new Promise((resolve5) => {
|
|
15175
|
+
resume = resolve5;
|
|
14790
15176
|
});
|
|
14791
15177
|
}
|
|
14792
15178
|
while (pendingMessages.length > 0) {
|
|
@@ -15084,6 +15470,7 @@ var BuiltinCommandLoader = class {
|
|
|
15084
15470
|
clearCommand,
|
|
15085
15471
|
compressCommand,
|
|
15086
15472
|
compressFastCommand,
|
|
15473
|
+
configCommand,
|
|
15087
15474
|
contextCommand,
|
|
15088
15475
|
copyCommand,
|
|
15089
15476
|
diffCommand,
|
|
@@ -16389,6 +16776,7 @@ function handleCommandResult(result, outputHistoryItems) {
|
|
|
16389
16776
|
return {
|
|
16390
16777
|
type: "submit_prompt",
|
|
16391
16778
|
content: result.content,
|
|
16779
|
+
...result.modelOverride ? { modelOverride: result.modelOverride } : {},
|
|
16392
16780
|
...outputHistoryItems?.length ? { outputHistoryItems } : {}
|
|
16393
16781
|
};
|
|
16394
16782
|
case "message":
|
|
@@ -16796,6 +17184,31 @@ function computeUsageFromMetrics(metrics) {
|
|
|
16796
17184
|
return usage2;
|
|
16797
17185
|
}
|
|
16798
17186
|
__name(computeUsageFromMetrics, "computeUsageFromMetrics");
|
|
17187
|
+
function buildInitialSystemReminders(config) {
|
|
17188
|
+
const reminders = [];
|
|
17189
|
+
if (config.getApprovalMode() === "plan" /* PLAN */) {
|
|
17190
|
+
reminders.push({ text: getPlanModeSystemReminder(config.getSdkMode?.()) });
|
|
17191
|
+
}
|
|
17192
|
+
const arenaManager = config.getArenaManager?.();
|
|
17193
|
+
if (arenaManager) {
|
|
17194
|
+
try {
|
|
17195
|
+
const sessionDir = arenaManager.getArenaSessionDir();
|
|
17196
|
+
const configPath = `${sessionDir}/config.json`;
|
|
17197
|
+
reminders.push({ text: getArenaSystemReminder(configPath) });
|
|
17198
|
+
} catch {
|
|
17199
|
+
}
|
|
17200
|
+
}
|
|
17201
|
+
return reminders;
|
|
17202
|
+
}
|
|
17203
|
+
__name(buildInitialSystemReminders, "buildInitialSystemReminders");
|
|
17204
|
+
function insertAfterFunctionResponses(parts, additions) {
|
|
17205
|
+
const firstNonFunctionResponse = parts.findIndex(
|
|
17206
|
+
(part) => !part.functionResponse
|
|
17207
|
+
);
|
|
17208
|
+
const insertAt = firstNonFunctionResponse === -1 ? parts.length : firstNonFunctionResponse;
|
|
17209
|
+
return [...parts.slice(0, insertAt), ...additions, ...parts.slice(insertAt)];
|
|
17210
|
+
}
|
|
17211
|
+
__name(insertAfterFunctionResponses, "insertAfterFunctionResponses");
|
|
16799
17212
|
async function loadSlashCommandNames(config) {
|
|
16800
17213
|
const controller = new AbortController();
|
|
16801
17214
|
try {
|
|
@@ -17035,6 +17448,8 @@ export {
|
|
|
17035
17448
|
normalizePartList,
|
|
17036
17449
|
extractPartsFromUserMessage,
|
|
17037
17450
|
computeUsageFromMetrics,
|
|
17451
|
+
buildInitialSystemReminders,
|
|
17452
|
+
insertAfterFunctionResponses,
|
|
17038
17453
|
buildSystemMessage,
|
|
17039
17454
|
createToolProgressHandler,
|
|
17040
17455
|
createAgentToolProgressHandler,
|