@qwen-code/qwen-code 0.19.2 → 0.19.3
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/extension-creator/SKILL.md +357 -0
- package/bundled/loop/SKILL.md +12 -7
- package/bundled/loop/SKILL.test.ts +32 -0
- package/bundled/qc-helper/SKILL.md +14 -14
- package/bundled/qc-helper/docs/configuration/auth.md +11 -11
- package/bundled/qc-helper/docs/configuration/model-providers.md +13 -13
- package/bundled/qc-helper/docs/configuration/settings.md +60 -60
- package/bundled/qc-helper/docs/features/commands.md +108 -77
- package/bundled/qc-helper/docs/features/memory.md +52 -0
- package/bundled/qc-helper/docs/qwen-serve.md +24 -2
- package/bundled/qc-helper/docs/support/tos-privacy.md +16 -3
- package/chunks/{MaxSizedBox-7RERNLFK.js → MaxSizedBox-QNF3EIGU.js} +29 -30
- package/chunks/{StandaloneSessionPicker-S22XBSN6.js → StandaloneSessionPicker-Z52JTYST.js} +42 -40
- package/chunks/{acpAgent-4MCETHF2.js → acpAgent-7RZUOWOM.js} +406 -118
- package/chunks/{agent-K3ENVYSB.js → agent-4FG7WTHJ.js} +24 -26
- package/chunks/{agent-headless-HO3V3A3A.js → agent-headless-RQ5BTX3G.js} +24 -26
- package/chunks/{anthropicContentGenerator-E3TQ5XJJ.js → anthropicContentGenerator-PFITVL7Y.js} +31 -13
- package/chunks/{artifact-tool-QA4KRO3B.js → artifact-tool-D2X7G3C3.js} +2 -2
- package/chunks/{askUserQuestion-HMWXW6VN.js → askUserQuestion-UGETICJQ.js} +2 -2
- package/chunks/{bridge-4LV2HBH2.js → bridge-JL2PMCIW.js} +29 -32
- package/chunks/{ca-7WC7ELX6.js → ca-IUFWESZL.js} +1 -0
- package/chunks/{chunk-3UALQ56H.js → chunk-3227DZO4.js} +1 -1
- package/chunks/{chunk-JTYRZODB.js → chunk-3TV3HUWZ.js} +16 -7
- package/chunks/{chunk-NYOHZYHM.js → chunk-4LUZAKMK.js} +45 -3
- package/chunks/{chunk-EL5IHQON.js → chunk-4QK3O43S.js} +6 -27
- package/chunks/chunk-5GOVVXEV.js +73 -0
- package/chunks/{chunk-R36VMVEP.js → chunk-6V4NZFUS.js} +5 -5
- package/chunks/{chunk-XKBP7M7A.js → chunk-ADCIHOQZ.js} +138 -28
- package/chunks/chunk-BC3C4F3Q.js +40 -0
- package/chunks/{chunk-CGEGHF2C.js → chunk-BKXBARJZ.js} +1 -1
- package/chunks/chunk-BMFMJINR.js +45 -0
- package/chunks/chunk-BTLJ2MF5.js +690 -0
- package/chunks/{chunk-OIC6S73E.js → chunk-BUUQ5HPX.js} +1 -1
- package/chunks/{chunk-2BIF2NVV.js → chunk-BVSVIN45.js} +2 -2
- package/chunks/{chunk-JXQ23SNT.js → chunk-BW4KCQFD.js} +54 -2
- package/chunks/{chunk-TOEGRAVX.js → chunk-BX5YO7UW.js} +17 -5
- package/chunks/{chunk-5RVSM6NW.js → chunk-BXSHL2SF.js} +1 -1
- package/chunks/{chunk-UN3C6GOR.js → chunk-CF6BB3LT.js} +0 -107
- package/chunks/{chunk-Z7XXFPGP.js → chunk-CKQA6AWF.js} +1 -1
- package/chunks/{chunk-I2RFAW6Q.js → chunk-CNLEDYE3.js} +7 -5
- package/chunks/{chunk-PRYMDRBV.js → chunk-DDMOU62Q.js} +1 -1
- package/chunks/chunk-EDMZZFDU.js +11213 -0
- package/chunks/{chunk-IRJWHZWU.js → chunk-EJYJYJZ2.js} +70 -3
- package/chunks/{chunk-OQHQHJRK.js → chunk-F3ZYSEY6.js} +151 -4775
- package/chunks/chunk-FKAVULLM.js +4909 -0
- package/chunks/{chunk-TZM5JIAX.js → chunk-FNJ7BDPH.js} +6 -6
- package/chunks/{chunk-EXMX5YHG.js → chunk-FXKVLFFY.js} +1 -1
- package/chunks/{chunk-EX4W6ZYG.js → chunk-GGBIN5K7.js} +1 -1
- package/chunks/{chunk-BS64PXY3.js → chunk-GT2FGICD.js} +1 -1
- package/chunks/{chunk-HG6YKEBI.js → chunk-HPZTOP4I.js} +75 -23
- package/chunks/{chunk-OTBK43JR.js → chunk-HYCC3XM3.js} +1 -1
- package/chunks/{chunk-3QFE4OTE.js → chunk-HZT4UCFB.js} +4 -4
- package/chunks/{chunk-GYZQA2FO.js → chunk-I2LYBGNI.js} +1 -1
- package/chunks/{chunk-TMBPDHXD.js → chunk-I4H7PRWQ.js} +1 -1
- package/chunks/{chunk-2BAQ3ACS.js → chunk-J33ZR6OJ.js} +404 -4
- package/chunks/{chunk-4W4T77MO.js → chunk-J7FA27RO.js} +109 -6
- package/chunks/{chunk-S566HKUS.js → chunk-JE5FVRPC.js} +38 -7
- package/chunks/{chunk-CGOMICBE.js → chunk-JJXWTVSK.js} +1 -1
- package/chunks/{chunk-EEEZIVFJ.js → chunk-JOLIREYR.js} +1 -1
- package/chunks/{chunk-DBZUXSSV.js → chunk-JVHEVCAU.js} +5 -5
- package/chunks/chunk-K5XU6E4T.js +167 -0
- package/chunks/{chunk-EW6C27XX.js → chunk-KMGMKW5Q.js} +1 -1
- package/chunks/{chunk-D5E5TMYH.js → chunk-L7OKCI7T.js} +4 -2
- package/chunks/{chunk-ZUAXI2OA.js → chunk-M2U5NM24.js} +188 -11366
- package/chunks/{chunk-CI5O6SQL.js → chunk-MNF6S5PR.js} +4 -4
- package/chunks/{chunk-FPACXT7T.js → chunk-N4EJFBN5.js} +421 -163
- package/chunks/chunk-NDOC6M5S.js +481 -0
- package/chunks/{chunk-HGNSRCRB.js → chunk-NL4C3H6C.js} +1 -1
- package/chunks/{chunk-GZCJS5WH.js → chunk-O2VBQ3Y2.js} +2 -2
- package/chunks/{chunk-VQRYPFCV.js → chunk-O75BHFQW.js} +10 -460
- package/chunks/{chunk-WGAEWQTF.js → chunk-ODLIHNOY.js} +1 -2
- package/chunks/{chunk-J6AW7O5D.js → chunk-PDE7CSDS.js} +2 -2
- package/chunks/{chunk-5R4SBCX6.js → chunk-PR32FRT6.js} +3 -3
- package/chunks/{chunk-LLFFKXZZ.js → chunk-QE6KJYLT.js} +56 -29
- package/chunks/{chunk-3RJ3ZPPR.js → chunk-QI7GOGJR.js} +7 -7
- package/chunks/{chunk-XU5P23GN.js → chunk-QLDPRILK.js} +3 -3
- package/chunks/{chunk-WA5OJGFL.js → chunk-QNKBEJO2.js} +359 -76
- package/chunks/{chunk-UAARVVBI.js → chunk-QWFNTRH4.js} +1 -1
- package/chunks/chunk-QYUE6W3T.js +123 -0
- package/chunks/{chunk-5JZLXFPD.js → chunk-R5OP2ATH.js} +11 -11
- package/chunks/{chunk-BNXANYLH.js → chunk-RD6YJJJ6.js} +81 -1
- package/chunks/{chunk-2TJ3YN6Q.js → chunk-RRFZXMYP.js} +380 -400
- package/chunks/{chunk-ZN5T4BHI.js → chunk-RYLJU2DY.js} +1 -1
- package/chunks/{chunk-ZD3NW5KL.js → chunk-S7AKE7HL.js} +3 -3
- package/chunks/{chunk-BG4BIP7F.js → chunk-SBBN4BWR.js} +4 -2
- package/chunks/{chunk-T2VDEFUU.js → chunk-SKQZZVAV.js} +2 -2
- package/chunks/{chunk-USGMPVOY.js → chunk-SLNKLLEO.js} +14 -9
- package/chunks/chunk-SMXULRAN.js +37 -0
- package/chunks/{chunk-PF523XJX.js → chunk-SMYQZVZ3.js} +1 -1
- package/chunks/{chunk-I5T6PIBQ.js → chunk-STUWFKGD.js} +1001 -887
- package/chunks/{chunk-UAARJR2G.js → chunk-T4T2FNV4.js} +2 -2
- package/chunks/{chunk-F6XNTYNE.js → chunk-U3KSMM7G.js} +8 -4
- package/chunks/chunk-UFLGERMB.js +813 -0
- package/chunks/{chunk-BGUDAULQ.js → chunk-UO5GVXQE.js} +5 -5
- package/chunks/{chunk-C4K3FEQ2.js → chunk-UX4SGCGN.js} +32 -3
- package/chunks/{chunk-RS4HRC75.js → chunk-UYT3MWEB.js} +85 -8
- package/chunks/{chunk-VYFMN7C6.js → chunk-VBZ452JT.js} +113 -24
- package/chunks/{chunk-KBXLIVWQ.js → chunk-VVLOGDB6.js} +2 -2
- package/chunks/{chunk-TXVGVZYR.js → chunk-XJYUPHRC.js} +3 -3
- package/chunks/{chunk-2JD55C6G.js → chunk-Y6YMRS3U.js} +2 -2
- package/chunks/{chunk-PXFFKNCO.js → chunk-YAINVQ3Q.js} +2961 -1349
- package/chunks/{chunk-X6EDWN44.js → chunk-ZP6UKOPB.js} +1 -1
- package/chunks/{computer-use-6BBRNT6S.js → computer-use-JGB36FDW.js} +103 -52
- package/chunks/{contextCommand-UJAJ6N57.js → contextCommand-WYU6OQ2F.js} +26 -28
- package/chunks/{cron-create-4KQE6YLH.js → cron-create-SKEY55RG.js} +4 -4
- package/chunks/{cron-delete-THME66UP.js → cron-delete-I3NAT32Z.js} +6 -6
- package/chunks/{cron-list-7A54SJ5N.js → cron-list-6XRRL6TH.js} +5 -5
- package/chunks/daemon-status-provider-HH2EC5FI.js +65 -0
- package/chunks/{de-ACHALDED.js → de-EOW5PVHF.js} +1 -0
- package/chunks/{dist-BOOH5JWN.js → dist-663NZ6MI.js} +1 -1
- package/chunks/{dist-QHJRBCMP.js → dist-J37VXPLD.js} +46 -5
- package/chunks/{dist-OD2FY543.js → dist-LB6OGPVM.js} +1 -1
- package/chunks/{dist-BD27IA3L.js → dist-NHEYYB2B.js} +2 -2
- package/chunks/{dist-QFFZWACU.js → dist-PQPZ5Q4N.js} +1 -1
- package/chunks/{earlyInputCapture-X6KMCSHD.js → earlyInputCapture-44RISVVJ.js} +25 -27
- package/chunks/{edit-7J6WXARF.js → edit-NN6GM5DT.js} +68 -30
- package/chunks/{en-NCUBOJOY.js → en-HPWEJBTR.js} +8 -0
- package/chunks/{enter-worktree-KULCKJPJ.js → enter-worktree-PB3O2C7D.js} +24 -26
- package/chunks/{enterPlanMode-H2CIOLMH.js → enterPlanMode-YQFNNSUA.js} +24 -26
- package/chunks/{errors-6G2JYR54.js → errors-LS7XU5DZ.js} +26 -28
- package/chunks/{exit-worktree-ECBWBVC5.js → exit-worktree-E2FTNSBK.js} +24 -26
- package/chunks/{exitPlanMode-DQV56GTW.js → exitPlanMode-GLYK2BUB.js} +24 -26
- package/chunks/{fast-path-35JJFS3C.js → fast-path-WQ6M7LI7.js} +4 -4
- package/chunks/{fast-path-settings-TSVI53EB.js → fast-path-settings-OAGU3X5H.js} +3 -2
- package/chunks/{fr-GVKZ27MF.js → fr-BN5NKSAC.js} +1 -0
- package/chunks/{gemini-NDTG7WAX.js → gemini-2YFLVA2M.js} +204 -103
- package/chunks/{geminiContentGenerator-XTG6SFLA.js → geminiContentGenerator-XV6SV6CD.js} +4 -4
- package/chunks/{glob-SJ2JBZK4.js → glob-2H6CDDMK.js} +24 -26
- package/chunks/{grep-BRMWFEWR.js → grep-VXIUXM3C.js} +24 -26
- package/chunks/{headlessSafetyWarnings-LJ6FJX77.js → headlessSafetyWarnings-TBE35GJ4.js} +24 -26
- package/chunks/initializer-2Y7SLOKV.js +61 -0
- package/chunks/{ja-FKZ2WZ4D.js → ja-7DEUB2TS.js} +1 -0
- package/chunks/{keychain-token-storage-CSYMNRPP.js → keychain-token-storage-YLMDLKXT.js} +2 -2
- package/chunks/list-ZAFHZ7OS.js +65 -0
- package/chunks/loadedSettingsAdapter-6KJXD6M3.js +60 -0
- package/chunks/{loop-wakeup-33GPXJLA.js → loop-wakeup-CITGGQHA.js} +7 -7
- package/chunks/{ls-BYQY7RVV.js → ls-R5WP4BGZ.js} +4 -4
- package/chunks/{lsp-X54RO4IV.js → lsp-GSICJMMW.js} +2 -2
- package/chunks/{monitor-DH7KFSJV.js → monitor-HKLRS2HQ.js} +24 -26
- package/chunks/nonInteractiveCli-5W4GIZQM.js +96 -0
- package/chunks/{notebook-edit-D4R4ZLMA.js → notebook-edit-Y6SKSGTT.js} +52 -26
- package/chunks/{openaiContentGenerator-F74IPQ6E.js → openaiContentGenerator-J7G2FYJT.js} +13 -14
- package/chunks/{pt-SY5NCFGR.js → pt-TNZRNLQB.js} +1 -0
- package/chunks/{qwenContentGenerator-ATTK5P4D.js → qwenContentGenerator-5XIEM5GV.js} +26 -28
- package/chunks/{qwenOAuth2-K4AASPCV.js → qwenOAuth2-AG3PFFLZ.js} +4 -4
- package/chunks/{read-file-767G23OY.js → read-file-J7D552ZJ.js} +9 -10
- package/chunks/{read-mcp-resource-I5HCZJ6X.js → read-mcp-resource-DQQW7H7T.js} +2 -2
- package/chunks/{ripGrep-4OMMGSWX.js → ripGrep-IEIFIWP4.js} +24 -26
- package/chunks/{ru-FWNXJG4F.js → ru-NIAUBKCN.js} +1 -0
- package/chunks/{run-qwen-serve-REKSTYRA.js → run-qwen-serve-SGEEVMXD.js} +149 -41
- package/chunks/{scheduler-UNTFDQLG.js → scheduler-7CQI3S4Q.js} +24 -26
- package/chunks/{send-message-2DAFXEYP.js → send-message-EE4TWKVU.js} +2 -2
- package/chunks/{serve-KZ56QB5S.js → serve-V6GVZR6U.js} +31 -31
- package/chunks/{server-BV5TZUMU.js → server-4QMUWXPW.js} +6996 -5864
- package/chunks/{session-OIBXFSGD.js → session-NRO7UFOY.js} +62 -57
- package/chunks/{settings-WJTCBIRA.js → settings-SGWRDQSC.js} +30 -30
- package/chunks/{shell-WC52IBHW.js → shell-62ANGIHL.js} +24 -26
- package/chunks/{skill-U7F7JR4M.js → skill-VWAQAWW6.js} +39 -13
- package/chunks/{spawnChannel-EI2E5BCW.js → spawnChannel-3VHW5EPY.js} +26 -28
- package/chunks/{src-4F6FBZFI.js → src-KUV5J5Q2.js} +52 -28
- package/chunks/{startInteractiveUI-SFRVB3CE.js → startInteractiveUI-6EYJN3JV.js} +2588 -2371
- package/chunks/{syntheticOutput-PPS3HDVA.js → syntheticOutput-T5YHQ6S2.js} +3 -3
- package/chunks/{task-create-OUYCA553.js → task-create-BLY7RHXX.js} +6 -6
- package/chunks/{task-list-WAX7I2IA.js → task-list-3QUYNVYR.js} +5 -5
- package/chunks/{task-stop-CAIL6FNH.js → task-stop-U4RATK2V.js} +2 -2
- package/chunks/{task-update-AHEO5OUT.js → task-update-U54O7KJX.js} +6 -6
- package/chunks/{team-create-3WC7CIIW.js → team-create-LPOGCPM7.js} +24 -26
- package/chunks/{team-delete-HGHFG23B.js → team-delete-LKBYPASD.js} +5 -5
- package/chunks/{theme-manager-DICFCT3P.js → theme-manager-LYLGAERF.js} +25 -27
- package/chunks/{todoWrite-IFBMN3FH.js → todoWrite-OYXKTVYN.js} +4 -4
- package/chunks/{tool-search-L5K7HLER.js → tool-search-YPUFJ3ZQ.js} +102 -18
- package/chunks/trustedFolders-5B24TMEA.js +73 -0
- package/chunks/types-QX5C3CHJ.js +12 -0
- package/chunks/{validateNonInterActiveAuth-GCH4Z6KI.js → validateNonInterActiveAuth-BTDTYOVT.js} +57 -54
- package/chunks/{web-fetch-B5IIQ5TT.js → web-fetch-EEB5LZYU.js} +28 -15
- package/chunks/{workflow-OB3AND7I.js → workflow-LAWIW5LI.js} +32 -33
- package/chunks/workspace-providers-status-PIAFVYHA.js +62 -0
- package/chunks/workspace-service-YAIOD4HG.js +71 -0
- package/chunks/{write-file-SEXBNDZM.js → write-file-PCV226DJ.js} +63 -30
- package/chunks/{zh-RBEGQVQT.js → zh-5EUYXASN.js} +8 -0
- package/chunks/{zh-TW-QGAVRXT3.js → zh-TW-TR3XYGE5.js} +8 -0
- package/cli-entry.js +20 -9
- package/cli.js +6 -6
- package/locales/ca.js +2 -0
- package/locales/de.js +2 -0
- package/locales/en.js +14 -0
- package/locales/fr.js +2 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +2 -0
- package/locales/ru.js +2 -0
- package/locales/zh-TW.js +12 -0
- package/locales/zh.js +12 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.d.ts +35 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js +48 -0
- package/node_modules/@qwen-code/audio-capture/dist/index.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.d.ts +7 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js +18 -0
- package/node_modules/@qwen-code/audio-capture/dist/platform.js.map +1 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/LICENSE +21 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/README.md +58 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/SECURITY.md +5 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/bin.js +84 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/build-test.js +19 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/index.js +6 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/node-gyp-build.js +207 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/optional.js +7 -0
- package/node_modules/@qwen-code/audio-capture/node_modules/node-gyp-build/package.json +43 -0
- package/node_modules/@qwen-code/audio-capture/package.json +30 -0
- 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/linux-arm64/@qwen-code+audio-capture.node +0 -0
- package/node_modules/@qwen-code/audio-capture/prebuilds/linux-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 +6 -3
- package/web-shell/assets/{arc-D_ae_Y9k.js → arc-DA7r8Ueo.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-BMLRjppa.js → architectureDiagram-3BPJPVTR-ZDUxPtZ2.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-qVDQC8KL.js → blockDiagram-GPEHLZMM-vrtOf1kJ.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-CxWS6MBd.js → c4Diagram-AAUBKEIU-BHFjzIi4.js} +1 -1
- package/web-shell/assets/channel-iRo68q4Q.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-BtNuY5Yp.js → chunk-2J33WTMH-mdeQVz59.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-BU-x368d.js → chunk-4BX2VUAB-BkKMlwBX.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-DRgTLvBu.js → chunk-55IACEB6-B7bnXNfu.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-D2aElv7q.js → chunk-727SXJPM-DGz8Mm6i.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-BwHCMRQ0.js → chunk-AQP2D5EJ-BQAydUNk.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-BMyPH-ku.js → chunk-FMBD7UC4-GHr2LN_p.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-BNKTstUf.js → chunk-ND2GUHAM-7R91lnUx.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-gD3vsFId.js → chunk-QZHKN3VN-aTJD3lSQ.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-BG9FAsXE.js → cose-bilkent-S5V4N54A-BTf8t1RL.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-Cy1sR7om.js → dagre-BM42HDAG-_sgp3WuA.js} +1 -1
- package/web-shell/assets/default-aEtf0G7-.svg +1 -0
- package/web-shell/assets/{diagram-2AECGRRQ-Bxi1I_Vu.js → diagram-2AECGRRQ-CROtRy1w.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-BGCJjO6y.js → diagram-5GNKFQAL-BqGRzwSc.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-CMTeLXp7.js → diagram-KO2AKTUF-CMrcEtA7.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-BN1wyAGh.js → diagram-LMA3HP47-BRydGNW5.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-UYSG_zcp.js → diagram-OG6HWLK6-D0ilgNjV.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DqXL08lw.js → erDiagram-TEJ5UH35-2lnQeJUM.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BPJ9SFji.js → flowDiagram-I6XJVG4X-C_ZMdQiC.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BEd9Pnms.js → ganttDiagram-6RSMTGT7-Dw9V_Ny0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DrNRH3oi.js → gitGraphDiagram-PVQCEYII-HDXI-F1B.js} +1 -1
- package/web-shell/assets/index-CHmzAWys.css +5 -0
- package/web-shell/assets/index-w6GTOHh1.js +713 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CFYBrkVI.js → infoDiagram-5YYISTIA-CuB8Ebua.js} +1 -1
- package/web-shell/assets/insert-DmRbh9Rv.svg +1 -0
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-Dxsddth7.js → ishikawaDiagram-YF4QCWOH-D_tyhVwh.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DxaDK80t.js → journeyDiagram-JHISSGLW-CgCwJQNU.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Q0jQCOct.js → kanban-definition-UN3LZRKU-PZUtcbPx.js} +1 -1
- package/web-shell/assets/{linear-DGGM2kcP.js → linear-CZqRdJIU.js} +1 -1
- package/web-shell/assets/{mermaid.core-ByoxnWut.js → mermaid.core-CPW_4UEF.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-C0ZseHsi.js → mindmap-definition-RKZ34NQL-D_Y75ID7.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-MQXNhl5A.js → pieDiagram-4H26LBE5-Q4dTyLeF.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DIR4ee2A.js → quadrantDiagram-W4KKPZXB-ckw329Ft.js} +1 -1
- package/web-shell/assets/queue-DWpnpFgW.svg +1 -0
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BTR0UdYQ.js → requirementDiagram-4Y6WPE33-DbVDm4It.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-sfnhMELN.js → sankeyDiagram-5OEKKPKP-CHuZ_ecH.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DXczHOHH.js → sequenceDiagram-3UESZ5HK-DU2YSpq-.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DdE_KQFH.js → stateDiagram-AJRCARHV-CA9PEBUo.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DIc61uE8.js → timeline-definition-PNZ67QCA-Bhlo4WVc.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BF7ODmxB.js → vennDiagram-CIIHVFJN-6xtPLsyl.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-3pc1MEaw.js → wardley-L42UT6IY-3eozmXPf.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-9jnPcZuP.js → wardleyDiagram-YWT4CUSO-BOn6hKss.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-DcthaZK6.js → xychartDiagram-2RQKCTM6-BsP4-I_y.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-5P5XGNYH.js +0 -93
- package/chunks/chunk-B6HQGTYR.js +0 -410
- package/chunks/chunk-SEZC2725.js +0 -36
- package/chunks/chunk-SYCJMSIJ.js +0 -82
- package/chunks/daemon-status-provider-CSL3BUOY.js +0 -68
- package/chunks/initializer-P5AXF7PV.js +0 -61
- package/chunks/list-6COK34BP.js +0 -65
- package/chunks/loadedSettingsAdapter-XIUTN245.js +0 -60
- package/chunks/nonInteractiveCli-7575LBXP.js +0 -91
- package/chunks/workspace-providers-status-ZIR5EPOO.js +0 -62
- package/chunks/workspace-service-OM5D4OI2.js +0 -60
- package/web-shell/assets/channel-DYPNiTww.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-p_g25Tni.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-p_g25Tni.js +0 -1
- package/web-shell/assets/index-CpOXWDPh.js +0 -714
- package/web-shell/assets/index-oVK7qhre.css +0 -5
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BHUSEndU.js +0 -1
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
import {
|
|
4
4
|
classifyApiError,
|
|
5
5
|
prefixMidTurnUserMessageParts
|
|
6
|
-
} from "./chunk-
|
|
7
|
-
import "./chunk-
|
|
6
|
+
} from "./chunk-QE6KJYLT.js";
|
|
7
|
+
import "./chunk-UFLGERMB.js";
|
|
8
8
|
import {
|
|
9
9
|
HistoryReplayer,
|
|
10
10
|
MessageEmitter,
|
|
@@ -14,88 +14,90 @@ import {
|
|
|
14
14
|
handleSlashCommand,
|
|
15
15
|
isSlashCommand,
|
|
16
16
|
normalizePartList
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RRFZXMYP.js";
|
|
18
18
|
import {
|
|
19
19
|
appEvents,
|
|
20
20
|
buildDisabledSkillNamesProvider,
|
|
21
21
|
loadCliConfig,
|
|
22
22
|
normalizeDisabledToolList
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-EDMZZFDU.js";
|
|
24
|
+
import {
|
|
25
|
+
collectContextData,
|
|
26
|
+
formatContextUsageText
|
|
27
|
+
} from "./chunk-FNJ7BDPH.js";
|
|
24
28
|
import {
|
|
25
29
|
getCommandSubcommandNames
|
|
26
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-J7FA27RO.js";
|
|
31
|
+
import "./chunk-5GOVVXEV.js";
|
|
27
32
|
import {
|
|
28
33
|
getEffectiveSupportedModes
|
|
29
|
-
} from "./chunk-
|
|
30
|
-
import "./chunk-MRO43B25.js";
|
|
31
|
-
import "./chunk-UAARJR2G.js";
|
|
32
|
-
import "./chunk-JZSY4WP3.js";
|
|
33
|
-
import {
|
|
34
|
-
collectContextData,
|
|
35
|
-
formatContextUsageText
|
|
36
|
-
} from "./chunk-TZM5JIAX.js";
|
|
34
|
+
} from "./chunk-3TV3HUWZ.js";
|
|
37
35
|
import {
|
|
38
36
|
isTerminalGoalStatusKind
|
|
39
37
|
} from "./chunk-KSPVDFE4.js";
|
|
38
|
+
import "./chunk-MRO43B25.js";
|
|
39
|
+
import "./chunk-SMXULRAN.js";
|
|
40
|
+
import "./chunk-T4T2FNV4.js";
|
|
40
41
|
import "./chunk-KYMBIKIW.js";
|
|
41
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-I4H7PRWQ.js";
|
|
43
|
+
import "./chunk-JZSY4WP3.js";
|
|
44
|
+
import "./chunk-JVHEVCAU.js";
|
|
45
|
+
import "./chunk-CNLEDYE3.js";
|
|
42
46
|
import "./chunk-3GONHQOA.js";
|
|
43
|
-
import "./chunk-
|
|
44
|
-
import "./chunk-
|
|
45
|
-
import "./chunk-
|
|
46
|
-
import "./chunk-TMBPDHXD.js";
|
|
47
|
+
import "./chunk-PR32FRT6.js";
|
|
48
|
+
import "./chunk-CKQA6AWF.js";
|
|
49
|
+
import "./chunk-BW4KCQFD.js";
|
|
47
50
|
import {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
import "./chunk-NYOHZYHM.js";
|
|
55
|
-
import "./chunk-CGOMICBE.js";
|
|
51
|
+
createLoadedSettingsAdapter
|
|
52
|
+
} from "./chunk-BXSHL2SF.js";
|
|
53
|
+
import "./chunk-NDOC6M5S.js";
|
|
54
|
+
import "./chunk-M2U5NM24.js";
|
|
55
|
+
import "./chunk-JJXWTVSK.js";
|
|
56
|
+
import "./chunk-R2BXK7SX.js";
|
|
56
57
|
import "./chunk-RKIZXJMB.js";
|
|
57
|
-
import "./chunk-
|
|
58
|
+
import "./chunk-MNF6S5PR.js";
|
|
58
59
|
import "./chunk-KHDZHZMH.js";
|
|
59
|
-
import {
|
|
60
|
-
MID_TURN_QUEUE_DRAIN_METHOD
|
|
61
|
-
} from "./chunk-QBZ22PQX.js";
|
|
62
60
|
import {
|
|
63
61
|
formatAcpModelId,
|
|
64
62
|
parseAcpBaseModelId,
|
|
65
63
|
parseAcpModelOption,
|
|
66
64
|
sanitizeProviderBaseUrl
|
|
67
|
-
} from "./chunk-
|
|
65
|
+
} from "./chunk-UYT3MWEB.js";
|
|
68
66
|
import {
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
67
|
+
PERMISSION_RULE_TYPES,
|
|
68
|
+
PermissionRulesValidationError,
|
|
69
|
+
buildPermissionSettings,
|
|
70
|
+
normalizePermissionRules,
|
|
71
|
+
readPermissionRuleSet
|
|
72
|
+
} from "./chunk-ODLIHNOY.js";
|
|
73
|
+
import "./chunk-4LUZAKMK.js";
|
|
74
|
+
import "./chunk-BC3C4F3Q.js";
|
|
75
|
+
import "./chunk-GT2FGICD.js";
|
|
76
|
+
import {
|
|
77
|
+
MID_TURN_QUEUE_DRAIN_METHOD
|
|
78
|
+
} from "./chunk-QBZ22PQX.js";
|
|
75
79
|
import "./chunk-ALX6BUYW.js";
|
|
76
|
-
import "./chunk-5DWXLGOM.js";
|
|
77
80
|
import {
|
|
78
|
-
|
|
79
|
-
} from "./chunk-
|
|
81
|
+
NOT_CURRENTLY_GENERATING_CANCEL_MESSAGE
|
|
82
|
+
} from "./chunk-JE5FVRPC.js";
|
|
80
83
|
import {
|
|
81
84
|
OUTPUT_LANGUAGE_AUTO,
|
|
82
85
|
getOutputLanguageFilePath,
|
|
83
86
|
getPersistScopeForModelSelection,
|
|
84
87
|
isAutoLanguage,
|
|
85
|
-
isWorkspaceTrusted,
|
|
86
88
|
loadSettings,
|
|
87
89
|
reloadEnvironment,
|
|
88
90
|
resolveOutputLanguage,
|
|
89
91
|
updateOutputLanguageFile,
|
|
90
92
|
writeOutputLanguageAndRegisterPath
|
|
91
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-FKAVULLM.js";
|
|
92
94
|
import {
|
|
93
95
|
SUPPORTED_LANGUAGES,
|
|
94
96
|
getCurrentLanguage,
|
|
95
97
|
setLanguageAsync
|
|
96
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-R5OP2ATH.js";
|
|
97
99
|
import "./chunk-TLRYABYP.js";
|
|
98
|
-
import "./chunk-
|
|
100
|
+
import "./chunk-5DWXLGOM.js";
|
|
99
101
|
import {
|
|
100
102
|
AgentSideConnection,
|
|
101
103
|
PROTOCOL_VERSION,
|
|
@@ -109,8 +111,15 @@ import {
|
|
|
109
111
|
SERVE_STATUS_EXT_METHODS,
|
|
110
112
|
STATUS_SCHEMA_VERSION,
|
|
111
113
|
mapDomainErrorToErrorKind
|
|
112
|
-
} from "./chunk-
|
|
113
|
-
import "./chunk-
|
|
114
|
+
} from "./chunk-L7OKCI7T.js";
|
|
115
|
+
import "./chunk-CF6BB3LT.js";
|
|
116
|
+
import {
|
|
117
|
+
isFolderTrustEnabled,
|
|
118
|
+
isWorkspaceTrusted,
|
|
119
|
+
loadTrustedFolders
|
|
120
|
+
} from "./chunk-F3ZYSEY6.js";
|
|
121
|
+
import "./chunk-Y6Z2O3WR.js";
|
|
122
|
+
import "./chunk-QYUE6W3T.js";
|
|
114
123
|
import {
|
|
115
124
|
ALL_PROVIDERS,
|
|
116
125
|
APPROVAL_MODES,
|
|
@@ -149,6 +158,7 @@ import {
|
|
|
149
158
|
evaluatePermissionFlow,
|
|
150
159
|
findExistingProviderModels,
|
|
151
160
|
findProviderById,
|
|
161
|
+
findRepeatedDuplicateProviderToolCall,
|
|
152
162
|
fireNotificationHook,
|
|
153
163
|
firePermissionRequestHook,
|
|
154
164
|
firePostToolUseFailureHook,
|
|
@@ -174,6 +184,7 @@ import {
|
|
|
174
184
|
isDenialFallbackReason,
|
|
175
185
|
isPlanModeBlocked,
|
|
176
186
|
isSystemReminderContent,
|
|
187
|
+
markDuplicateProviderToolCallResponseSent,
|
|
177
188
|
needsConfirmation,
|
|
178
189
|
parsePositiveIntegerEnv,
|
|
179
190
|
persistPermissionOutcome,
|
|
@@ -193,32 +204,31 @@ import {
|
|
|
193
204
|
subagentGenerator,
|
|
194
205
|
unregisterGoalHook,
|
|
195
206
|
updateSetting
|
|
196
|
-
} from "./chunk-
|
|
207
|
+
} from "./chunk-YAINVQ3Q.js";
|
|
197
208
|
import {
|
|
198
209
|
external_exports
|
|
199
210
|
} from "./chunk-K5PGHDBN.js";
|
|
200
|
-
import "./chunk-5P5XGNYH.js";
|
|
201
211
|
import "./chunk-SKAZWEV5.js";
|
|
202
|
-
import "./chunk-
|
|
203
|
-
import "./chunk-
|
|
204
|
-
import "./chunk-
|
|
212
|
+
import "./chunk-XJYUPHRC.js";
|
|
213
|
+
import "./chunk-QLDPRILK.js";
|
|
214
|
+
import "./chunk-BVSVIN45.js";
|
|
205
215
|
import {
|
|
206
216
|
runSideQuery
|
|
207
|
-
} from "./chunk-
|
|
208
|
-
import "./chunk-
|
|
217
|
+
} from "./chunk-SBBN4BWR.js";
|
|
218
|
+
import "./chunk-S7AKE7HL.js";
|
|
209
219
|
import "./chunk-2MPVVENX.js";
|
|
210
220
|
import "./chunk-ZTQ26VBE.js";
|
|
211
|
-
import "./chunk-
|
|
221
|
+
import "./chunk-O2VBQ3Y2.js";
|
|
212
222
|
import "./chunk-MLZQVCF3.js";
|
|
213
223
|
import "./chunk-LQ7TMOCE.js";
|
|
214
224
|
import "./chunk-LD2XBG6Z.js";
|
|
215
|
-
import "./chunk-
|
|
225
|
+
import "./chunk-HYCC3XM3.js";
|
|
216
226
|
import {
|
|
217
227
|
HookEventName,
|
|
218
228
|
createHookOutput
|
|
219
|
-
} from "./chunk-
|
|
220
|
-
import "./chunk-
|
|
221
|
-
import "./chunk-
|
|
229
|
+
} from "./chunk-NL4C3H6C.js";
|
|
230
|
+
import "./chunk-JOLIREYR.js";
|
|
231
|
+
import "./chunk-DDMOU62Q.js";
|
|
222
232
|
import {
|
|
223
233
|
AuthType,
|
|
224
234
|
ConversationFinishedEvent,
|
|
@@ -239,46 +249,45 @@ import {
|
|
|
239
249
|
startToolSpan,
|
|
240
250
|
uiTelemetryService,
|
|
241
251
|
withInteractionSpan
|
|
242
|
-
} from "./chunk-
|
|
252
|
+
} from "./chunk-QNKBEJO2.js";
|
|
243
253
|
import "./chunk-3PJXIDKI.js";
|
|
244
254
|
import "./chunk-UWCTAVOD.js";
|
|
245
255
|
import "./chunk-OFEVLU4C.js";
|
|
246
256
|
import "./chunk-OMX7CUOE.js";
|
|
247
257
|
import {
|
|
248
258
|
getAutoMemoryRoot
|
|
249
|
-
} from "./chunk-
|
|
250
|
-
import "./chunk-
|
|
251
|
-
import "./chunk-
|
|
259
|
+
} from "./chunk-RD6YJJJ6.js";
|
|
260
|
+
import "./chunk-SKQZZVAV.js";
|
|
261
|
+
import "./chunk-BUUQ5HPX.js";
|
|
252
262
|
import {
|
|
253
263
|
ToolConfirmationOutcome,
|
|
254
264
|
ToolNames
|
|
255
|
-
} from "./chunk-
|
|
265
|
+
} from "./chunk-BX5YO7UW.js";
|
|
256
266
|
import {
|
|
257
267
|
clearCachedCredentialFile,
|
|
258
268
|
qwenOAuth2Events
|
|
259
|
-
} from "./chunk-
|
|
260
|
-
import "./chunk-
|
|
269
|
+
} from "./chunk-UO5GVXQE.js";
|
|
270
|
+
import "./chunk-KMGMKW5Q.js";
|
|
261
271
|
import "./chunk-22IFUCVR.js";
|
|
262
|
-
import "./chunk-
|
|
263
|
-
import "./chunk-3UALQ56H.js";
|
|
272
|
+
import "./chunk-3227DZO4.js";
|
|
264
273
|
import {
|
|
265
274
|
tokenLimit
|
|
266
|
-
} from "./chunk-
|
|
267
|
-
import "./chunk-
|
|
268
|
-
import "./chunk-
|
|
269
|
-
import "./chunk-SYCJMSIJ.js";
|
|
275
|
+
} from "./chunk-U3KSMM7G.js";
|
|
276
|
+
import "./chunk-BKXBARJZ.js";
|
|
277
|
+
import "./chunk-EJYJYJZ2.js";
|
|
270
278
|
import "./chunk-55ZMG67I.js";
|
|
271
279
|
import "./chunk-H6BD2ELD.js";
|
|
272
280
|
import "./chunk-5IFG2VC4.js";
|
|
281
|
+
import "./chunk-64WXLC72.js";
|
|
273
282
|
import {
|
|
274
283
|
Storage,
|
|
275
284
|
createDebugLogger,
|
|
276
285
|
getErrorStatus
|
|
277
|
-
} from "./chunk-
|
|
278
|
-
import "./chunk-
|
|
286
|
+
} from "./chunk-UX4SGCGN.js";
|
|
287
|
+
import "./chunk-SMYQZVZ3.js";
|
|
279
288
|
import {
|
|
280
289
|
runExitCleanup
|
|
281
|
-
} from "./chunk-
|
|
290
|
+
} from "./chunk-I2LYBGNI.js";
|
|
282
291
|
import "./chunk-ZERZSAZL.js";
|
|
283
292
|
import "./chunk-QN5NZ3UQ.js";
|
|
284
293
|
import "./chunk-BR4QREVK.js";
|
|
@@ -1448,6 +1457,10 @@ var Session = class {
|
|
|
1448
1457
|
lastPromptTokenCountChat = null;
|
|
1449
1458
|
midTurnDrainUnavailable = false;
|
|
1450
1459
|
midTurnDrainTimeoutStrikes = 0;
|
|
1460
|
+
// ACP can continue one logical conversation through prompt, cron, and
|
|
1461
|
+
// background loops, so keep this with the session instead of a single
|
|
1462
|
+
// runToolCalls invocation.
|
|
1463
|
+
duplicateProviderToolCallResponseIds = /* @__PURE__ */ new Set();
|
|
1451
1464
|
// Messages from a drain that the daemon answered but we timed out waiting for
|
|
1452
1465
|
// (the daemon already spliced + SSE-published them). Re-injected on the next
|
|
1453
1466
|
// batch so a transient stall can't silently lose them. See
|
|
@@ -1751,6 +1764,7 @@ var Session = class {
|
|
|
1751
1764
|
if (pendingSend.signal.aborted) {
|
|
1752
1765
|
return { stopReason: "cancelled" };
|
|
1753
1766
|
}
|
|
1767
|
+
this.duplicateProviderToolCallResponseIds.clear();
|
|
1754
1768
|
let resolveCompletion;
|
|
1755
1769
|
this.pendingPromptCompletion = new Promise((resolve3) => {
|
|
1756
1770
|
resolveCompletion = resolve3;
|
|
@@ -2075,15 +2089,10 @@ ${this.pendingWorktreeNotice}
|
|
|
2075
2089
|
);
|
|
2076
2090
|
return { stopReason: "end_turn" };
|
|
2077
2091
|
}
|
|
2078
|
-
nextMessage =
|
|
2079
|
-
|
|
2080
|
-
|
|
2081
|
-
|
|
2082
|
-
...await this.#drainMidTurnUserMessages(
|
|
2083
|
-
pendingSend.signal
|
|
2084
|
-
)
|
|
2085
|
-
]
|
|
2086
|
-
};
|
|
2092
|
+
nextMessage = await this.#buildNextMessageAfterToolRun(
|
|
2093
|
+
toolRun,
|
|
2094
|
+
pendingSend.signal
|
|
2095
|
+
);
|
|
2087
2096
|
}
|
|
2088
2097
|
}
|
|
2089
2098
|
if (this.messageRewriter) {
|
|
@@ -2270,13 +2279,10 @@ ${this.pendingWorktreeNotice}
|
|
|
2270
2279
|
);
|
|
2271
2280
|
return { stopReason: "end_turn" };
|
|
2272
2281
|
}
|
|
2273
|
-
nextMessage =
|
|
2274
|
-
|
|
2275
|
-
|
|
2276
|
-
|
|
2277
|
-
...await this.#drainMidTurnUserMessages(pendingSend.signal)
|
|
2278
|
-
]
|
|
2279
|
-
};
|
|
2282
|
+
nextMessage = await this.#buildNextMessageAfterToolRun(
|
|
2283
|
+
toolRun,
|
|
2284
|
+
pendingSend.signal
|
|
2285
|
+
);
|
|
2280
2286
|
}
|
|
2281
2287
|
}
|
|
2282
2288
|
continue;
|
|
@@ -2410,6 +2416,19 @@ ${this.pendingWorktreeNotice}
|
|
|
2410
2416
|
);
|
|
2411
2417
|
await this.messageRewriter?.waitForPendingRewrites();
|
|
2412
2418
|
}
|
|
2419
|
+
async #buildNextMessageAfterToolRun(toolRun, abortSignal) {
|
|
2420
|
+
if (toolRun.repeatedDuplicateProviderToolCall) {
|
|
2421
|
+
debugLogger4.debug(
|
|
2422
|
+
"Stopping ACP turn after dropping repeated duplicate provider tool-call response."
|
|
2423
|
+
);
|
|
2424
|
+
return null;
|
|
2425
|
+
}
|
|
2426
|
+
const parts = [
|
|
2427
|
+
...toolRun.parts,
|
|
2428
|
+
...await this.#drainMidTurnUserMessages(abortSignal)
|
|
2429
|
+
];
|
|
2430
|
+
return { role: "user", parts };
|
|
2431
|
+
}
|
|
2413
2432
|
#recordCompressionTokenCount(info) {
|
|
2414
2433
|
this.#syncPromptTokenCountWithCurrentChat();
|
|
2415
2434
|
const tokenCount = this.#extractCompressionTokenCount(info);
|
|
@@ -2781,13 +2800,10 @@ ${this.pendingWorktreeNotice}
|
|
|
2781
2800
|
);
|
|
2782
2801
|
return;
|
|
2783
2802
|
}
|
|
2784
|
-
nextMessage =
|
|
2785
|
-
|
|
2786
|
-
|
|
2787
|
-
|
|
2788
|
-
...await this.#drainMidTurnUserMessages(ac.signal)
|
|
2789
|
-
]
|
|
2790
|
-
};
|
|
2803
|
+
nextMessage = await this.#buildNextMessageAfterToolRun(
|
|
2804
|
+
toolRun,
|
|
2805
|
+
ac.signal
|
|
2806
|
+
);
|
|
2791
2807
|
}
|
|
2792
2808
|
}
|
|
2793
2809
|
} catch (error) {
|
|
@@ -3020,13 +3036,10 @@ ${this.pendingWorktreeNotice}
|
|
|
3020
3036
|
await this.#emitBackgroundNotificationEndTurn("end_turn");
|
|
3021
3037
|
return;
|
|
3022
3038
|
}
|
|
3023
|
-
nextMessage =
|
|
3024
|
-
|
|
3025
|
-
|
|
3026
|
-
|
|
3027
|
-
...await this.#drainMidTurnUserMessages(ac.signal)
|
|
3028
|
-
]
|
|
3029
|
-
};
|
|
3039
|
+
nextMessage = await this.#buildNextMessageAfterToolRun(
|
|
3040
|
+
toolRun,
|
|
3041
|
+
ac.signal
|
|
3042
|
+
);
|
|
3030
3043
|
}
|
|
3031
3044
|
}
|
|
3032
3045
|
if (this.messageRewriter) {
|
|
@@ -3270,10 +3283,32 @@ ${this.pendingWorktreeNotice}
|
|
|
3270
3283
|
const handledProviderToolCallIds = new Set(
|
|
3271
3284
|
this.#getCurrentChat().getHistoryFunctionResponseIds()
|
|
3272
3285
|
);
|
|
3286
|
+
const repeatedDuplicateCall = findRepeatedDuplicateProviderToolCall(
|
|
3287
|
+
dedupedFunctionCalls,
|
|
3288
|
+
(fc) => getProviderToolCallId(fc) ?? fc.id,
|
|
3289
|
+
handledProviderToolCallIds,
|
|
3290
|
+
this.duplicateProviderToolCallResponseIds
|
|
3291
|
+
);
|
|
3292
|
+
if (repeatedDuplicateCall) {
|
|
3293
|
+
const providerCallId = getProviderToolCallId(repeatedDuplicateCall) ?? repeatedDuplicateCall.id;
|
|
3294
|
+
debugLogger4.debug(
|
|
3295
|
+
`[Session.runToolCalls] Dropping batch after repeated duplicate provider tool-call id: ${providerCallId} (tool: ${repeatedDuplicateCall.name ?? "unknown_tool"})`
|
|
3296
|
+
);
|
|
3297
|
+
return {
|
|
3298
|
+
parts: [],
|
|
3299
|
+
stopAfterPermissionCancel: false,
|
|
3300
|
+
repeatedDuplicateProviderToolCall: true
|
|
3301
|
+
};
|
|
3302
|
+
}
|
|
3273
3303
|
const pushDuplicateBatch = /* @__PURE__ */ __name((request) => {
|
|
3304
|
+
const providerCallId = request.providerCallId ?? request.callId;
|
|
3305
|
+
markDuplicateProviderToolCallResponseSent(
|
|
3306
|
+
providerCallId,
|
|
3307
|
+
this.duplicateProviderToolCallResponseIds
|
|
3308
|
+
);
|
|
3274
3309
|
const response = createDuplicateProviderToolCallResponse(request);
|
|
3275
3310
|
debugLogger4.debug(
|
|
3276
|
-
`[Session.runToolCalls] Suppressing duplicate provider tool-call id: ${
|
|
3311
|
+
`[Session.runToolCalls] Suppressing duplicate provider tool-call id: ${providerCallId} (tool: ${request.name})`
|
|
3277
3312
|
);
|
|
3278
3313
|
batches.push({ kind: "duplicate", request, response });
|
|
3279
3314
|
}, "pushDuplicateBatch");
|
|
@@ -3459,7 +3494,11 @@ ${this.pendingWorktreeNotice}
|
|
|
3459
3494
|
}
|
|
3460
3495
|
if (shouldStop) {
|
|
3461
3496
|
await appendSkippedAfter(parts, batch.calls[batch.calls.length - 1]);
|
|
3462
|
-
return {
|
|
3497
|
+
return {
|
|
3498
|
+
parts,
|
|
3499
|
+
stopAfterPermissionCancel: true,
|
|
3500
|
+
repeatedDuplicateProviderToolCall: false
|
|
3501
|
+
};
|
|
3463
3502
|
}
|
|
3464
3503
|
} else {
|
|
3465
3504
|
for (const fc of batch.calls) {
|
|
@@ -3467,12 +3506,20 @@ ${this.pendingWorktreeNotice}
|
|
|
3467
3506
|
parts.push(...r.parts);
|
|
3468
3507
|
if (r.stopAfterPermissionCancel) {
|
|
3469
3508
|
await appendSkippedAfter(parts, fc);
|
|
3470
|
-
return {
|
|
3509
|
+
return {
|
|
3510
|
+
parts,
|
|
3511
|
+
stopAfterPermissionCancel: true,
|
|
3512
|
+
repeatedDuplicateProviderToolCall: false
|
|
3513
|
+
};
|
|
3471
3514
|
}
|
|
3472
3515
|
}
|
|
3473
3516
|
}
|
|
3474
3517
|
}
|
|
3475
|
-
return {
|
|
3518
|
+
return {
|
|
3519
|
+
parts,
|
|
3520
|
+
stopAfterPermissionCancel: false,
|
|
3521
|
+
repeatedDuplicateProviderToolCall: false
|
|
3522
|
+
};
|
|
3476
3523
|
}
|
|
3477
3524
|
/**
|
|
3478
3525
|
* Assemble the per-turn system reminders the model needs to see at the
|
|
@@ -4527,6 +4574,9 @@ var QWEN_CORE_SETTING_DEFINITIONS = {
|
|
|
4527
4574
|
"memory.enableManagedAutoMemory": { type: "boolean" },
|
|
4528
4575
|
"memory.enableManagedAutoDream": { type: "boolean" },
|
|
4529
4576
|
"memory.enableAutoSkill": { type: "boolean" },
|
|
4577
|
+
"memory.autoSkillConfirm": { type: "boolean" },
|
|
4578
|
+
"memory.enableTeamMemory": { type: "boolean" },
|
|
4579
|
+
"memory.enableTeamMemorySync": { type: "boolean" },
|
|
4530
4580
|
disableAllHooks: { type: "boolean" }
|
|
4531
4581
|
};
|
|
4532
4582
|
var QWEN_CORE_SETTING_KEYS = Object.keys(
|
|
@@ -4536,12 +4586,18 @@ var QWEN_HOOK_EVENTS = Object.values(HookEventName);
|
|
|
4536
4586
|
var DEFAULT_QWEN_MEMORY_SETTINGS = {
|
|
4537
4587
|
enableManagedAutoMemory: true,
|
|
4538
4588
|
enableManagedAutoDream: true,
|
|
4539
|
-
enableAutoSkill: true
|
|
4589
|
+
enableAutoSkill: true,
|
|
4590
|
+
autoSkillConfirm: true,
|
|
4591
|
+
enableTeamMemory: false,
|
|
4592
|
+
enableTeamMemorySync: false
|
|
4540
4593
|
};
|
|
4541
4594
|
var QWEN_MEMORY_SETTING_KEYS = [
|
|
4542
4595
|
"enableManagedAutoMemory",
|
|
4543
4596
|
"enableManagedAutoDream",
|
|
4544
|
-
"enableAutoSkill"
|
|
4597
|
+
"enableAutoSkill",
|
|
4598
|
+
"autoSkillConfirm",
|
|
4599
|
+
"enableTeamMemory",
|
|
4600
|
+
"enableTeamMemorySync"
|
|
4545
4601
|
];
|
|
4546
4602
|
function normalizeQwenMemorySettings(value) {
|
|
4547
4603
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
@@ -4551,7 +4607,10 @@ function normalizeQwenMemorySettings(value) {
|
|
|
4551
4607
|
return {
|
|
4552
4608
|
enableManagedAutoMemory: typeof record["enableManagedAutoMemory"] === "boolean" ? record["enableManagedAutoMemory"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableManagedAutoMemory,
|
|
4553
4609
|
enableManagedAutoDream: typeof record["enableManagedAutoDream"] === "boolean" ? record["enableManagedAutoDream"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableManagedAutoDream,
|
|
4554
|
-
enableAutoSkill: typeof record["enableAutoSkill"] === "boolean" ? record["enableAutoSkill"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableAutoSkill
|
|
4610
|
+
enableAutoSkill: typeof record["enableAutoSkill"] === "boolean" ? record["enableAutoSkill"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableAutoSkill,
|
|
4611
|
+
autoSkillConfirm: typeof record["autoSkillConfirm"] === "boolean" ? record["autoSkillConfirm"] : DEFAULT_QWEN_MEMORY_SETTINGS.autoSkillConfirm,
|
|
4612
|
+
enableTeamMemory: typeof record["enableTeamMemory"] === "boolean" ? record["enableTeamMemory"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableTeamMemory,
|
|
4613
|
+
enableTeamMemorySync: typeof record["enableTeamMemorySync"] === "boolean" ? record["enableTeamMemorySync"] : DEFAULT_QWEN_MEMORY_SETTINGS.enableTeamMemorySync
|
|
4555
4614
|
};
|
|
4556
4615
|
}
|
|
4557
4616
|
__name(normalizeQwenMemorySettings, "normalizeQwenMemorySettings");
|
|
@@ -6179,7 +6238,7 @@ var QwenAgent = class {
|
|
|
6179
6238
|
async initialize(args) {
|
|
6180
6239
|
this.clientCapabilities = args.clientCapabilities;
|
|
6181
6240
|
const authMethods = buildAuthMethods();
|
|
6182
|
-
const version = "0.19.
|
|
6241
|
+
const version = "0.19.3";
|
|
6183
6242
|
return {
|
|
6184
6243
|
protocolVersion: PROTOCOL_VERSION,
|
|
6185
6244
|
agentInfo: {
|
|
@@ -6774,6 +6833,16 @@ var QwenAgent = class {
|
|
|
6774
6833
|
status: this.mcpStatus(e.status)
|
|
6775
6834
|
}));
|
|
6776
6835
|
}
|
|
6836
|
+
if (!disabled) {
|
|
6837
|
+
out.resourceCount = this.resolveServerMcpResources(
|
|
6838
|
+
config,
|
|
6839
|
+
name
|
|
6840
|
+
).length;
|
|
6841
|
+
out.promptCount = this.resolveServerMcpPrompts(
|
|
6842
|
+
config,
|
|
6843
|
+
name
|
|
6844
|
+
).length;
|
|
6845
|
+
}
|
|
6777
6846
|
return out;
|
|
6778
6847
|
})
|
|
6779
6848
|
),
|
|
@@ -6880,6 +6949,102 @@ var QwenAgent = class {
|
|
|
6880
6949
|
};
|
|
6881
6950
|
}
|
|
6882
6951
|
}
|
|
6952
|
+
/**
|
|
6953
|
+
* Resolve the resources discovered for one server, with the same
|
|
6954
|
+
* pool-mode fallback `buildWorkspaceMcpToolsStatus` uses for tools: the
|
|
6955
|
+
* workspace `Config`'s `ResourceRegistry` is authoritative in
|
|
6956
|
+
* single-session mode, but in pool mode resources are registered into
|
|
6957
|
+
* per-session registries (`SessionMcpView.applyResources`), leaving the
|
|
6958
|
+
* workspace registry empty. Fall back to the first active session that
|
|
6959
|
+
* has this server's resources.
|
|
6960
|
+
*/
|
|
6961
|
+
resolveServerMcpResources(config, serverName) {
|
|
6962
|
+
const resources = config.getResourceRegistry?.()?.getResourcesByServer(serverName) ?? [];
|
|
6963
|
+
if (resources.length > 0) {
|
|
6964
|
+
return resources;
|
|
6965
|
+
}
|
|
6966
|
+
for (const session of this.getActiveSessions()) {
|
|
6967
|
+
try {
|
|
6968
|
+
const sessionResources = session.getConfig().getResourceRegistry?.()?.getResourcesByServer(serverName) ?? [];
|
|
6969
|
+
if (sessionResources.length > 0) {
|
|
6970
|
+
return sessionResources;
|
|
6971
|
+
}
|
|
6972
|
+
} catch {
|
|
6973
|
+
}
|
|
6974
|
+
}
|
|
6975
|
+
return resources;
|
|
6976
|
+
}
|
|
6977
|
+
/**
|
|
6978
|
+
* Resolve the prompts discovered for one server, mirroring
|
|
6979
|
+
* {@link resolveServerMcpResources}. Used only for the per-server
|
|
6980
|
+
* `promptCount` on the base status — prompts have no drill-down
|
|
6981
|
+
* endpoint (they surface as slash commands).
|
|
6982
|
+
*/
|
|
6983
|
+
resolveServerMcpPrompts(config, serverName) {
|
|
6984
|
+
const prompts = config.getPromptRegistry?.()?.getPromptsByServer(serverName) ?? [];
|
|
6985
|
+
if (prompts.length > 0) {
|
|
6986
|
+
return prompts;
|
|
6987
|
+
}
|
|
6988
|
+
for (const session of this.getActiveSessions()) {
|
|
6989
|
+
try {
|
|
6990
|
+
const sessionPrompts = session.getConfig().getPromptRegistry?.()?.getPromptsByServer(serverName) ?? [];
|
|
6991
|
+
if (sessionPrompts.length > 0) {
|
|
6992
|
+
return sessionPrompts;
|
|
6993
|
+
}
|
|
6994
|
+
} catch {
|
|
6995
|
+
}
|
|
6996
|
+
}
|
|
6997
|
+
return prompts;
|
|
6998
|
+
}
|
|
6999
|
+
buildWorkspaceMcpResourcesStatus(config, serverName) {
|
|
7000
|
+
const workspaceCwd = this.safeWorkspaceCwd(config);
|
|
7001
|
+
try {
|
|
7002
|
+
const servers = config.getMcpServers() ?? {};
|
|
7003
|
+
if (!Object.prototype.hasOwnProperty.call(servers, serverName)) {
|
|
7004
|
+
return {
|
|
7005
|
+
v: STATUS_SCHEMA_VERSION,
|
|
7006
|
+
workspaceCwd,
|
|
7007
|
+
serverName,
|
|
7008
|
+
initialized: true,
|
|
7009
|
+
acpChannelLive: true,
|
|
7010
|
+
resources: [],
|
|
7011
|
+
errors: [
|
|
7012
|
+
{
|
|
7013
|
+
kind: "mcp_resources",
|
|
7014
|
+
status: "error",
|
|
7015
|
+
error: `MCP server not configured: ${serverName}`
|
|
7016
|
+
}
|
|
7017
|
+
]
|
|
7018
|
+
};
|
|
7019
|
+
}
|
|
7020
|
+
const resources = this.resolveServerMcpResources(config, serverName).map((resource) => ({
|
|
7021
|
+
uri: resource.uri,
|
|
7022
|
+
...typeof resource.name === "string" ? { name: resource.name } : {},
|
|
7023
|
+
...typeof resource.title === "string" ? { title: resource.title } : {},
|
|
7024
|
+
...typeof resource.description === "string" ? { description: resource.description } : {},
|
|
7025
|
+
...typeof resource.mimeType === "string" ? { mimeType: resource.mimeType } : {},
|
|
7026
|
+
...typeof resource.size === "number" ? { size: resource.size } : {}
|
|
7027
|
+
}));
|
|
7028
|
+
return {
|
|
7029
|
+
v: STATUS_SCHEMA_VERSION,
|
|
7030
|
+
workspaceCwd,
|
|
7031
|
+
serverName,
|
|
7032
|
+
initialized: true,
|
|
7033
|
+
acpChannelLive: true,
|
|
7034
|
+
resources
|
|
7035
|
+
};
|
|
7036
|
+
} catch (error) {
|
|
7037
|
+
return {
|
|
7038
|
+
v: STATUS_SCHEMA_VERSION,
|
|
7039
|
+
workspaceCwd,
|
|
7040
|
+
serverName,
|
|
7041
|
+
initialized: true,
|
|
7042
|
+
acpChannelLive: true,
|
|
7043
|
+
resources: [],
|
|
7044
|
+
errors: [this.errorCell("mcp_resources", error)]
|
|
7045
|
+
};
|
|
7046
|
+
}
|
|
7047
|
+
}
|
|
6883
7048
|
/**
|
|
6884
7049
|
* Build the MCP budget status cells exposed on `GET /workspace/mcp`.
|
|
6885
7050
|
*
|
|
@@ -7480,6 +7645,25 @@ var QwenAgent = class {
|
|
|
7480
7645
|
}
|
|
7481
7646
|
};
|
|
7482
7647
|
}
|
|
7648
|
+
const skillMetrics = metrics.skills ?? {
|
|
7649
|
+
totalCalls: 0,
|
|
7650
|
+
totalSuccess: 0,
|
|
7651
|
+
totalFail: 0,
|
|
7652
|
+
byName: {}
|
|
7653
|
+
};
|
|
7654
|
+
const skillsByName = {};
|
|
7655
|
+
for (const [name, skill] of Object.entries(skillMetrics.byName)) {
|
|
7656
|
+
Object.defineProperty(skillsByName, name, {
|
|
7657
|
+
value: {
|
|
7658
|
+
count: skill.count,
|
|
7659
|
+
success: skill.success,
|
|
7660
|
+
fail: skill.fail
|
|
7661
|
+
},
|
|
7662
|
+
enumerable: true,
|
|
7663
|
+
configurable: true,
|
|
7664
|
+
writable: true
|
|
7665
|
+
});
|
|
7666
|
+
}
|
|
7483
7667
|
return {
|
|
7484
7668
|
v: STATUS_SCHEMA_VERSION,
|
|
7485
7669
|
sessionId,
|
|
@@ -7498,6 +7682,12 @@ var QwenAgent = class {
|
|
|
7498
7682
|
files: {
|
|
7499
7683
|
totalLinesAdded: metrics.files.totalLinesAdded,
|
|
7500
7684
|
totalLinesRemoved: metrics.files.totalLinesRemoved
|
|
7685
|
+
},
|
|
7686
|
+
skills: {
|
|
7687
|
+
totalCalls: skillMetrics.totalCalls,
|
|
7688
|
+
totalSuccess: skillMetrics.totalSuccess,
|
|
7689
|
+
totalFail: skillMetrics.totalFail,
|
|
7690
|
+
byName: skillsByName
|
|
7501
7691
|
}
|
|
7502
7692
|
};
|
|
7503
7693
|
}
|
|
@@ -7948,19 +8138,25 @@ var QwenAgent = class {
|
|
|
7948
8138
|
);
|
|
7949
8139
|
const persistScope = readProviderConnectScope(params["scope"]);
|
|
7950
8140
|
const plan = buildInstallPlan(providerConfig, inputs);
|
|
8141
|
+
const adapter = createLoadedSettingsAdapter(
|
|
8142
|
+
this.settings,
|
|
8143
|
+
persistScope
|
|
8144
|
+
);
|
|
7951
8145
|
await applyProviderInstallPlan(plan, {
|
|
7952
|
-
settings:
|
|
8146
|
+
settings: adapter,
|
|
7953
8147
|
reloadModelProviders: /* @__PURE__ */ __name((modelProviders) => this.config.reloadModelProvidersConfig(modelProviders), "reloadModelProviders"),
|
|
7954
8148
|
syncAuthState: /* @__PURE__ */ __name((authType, modelId, baseUrl) => this.config.getModelsConfig().syncAfterAuthRefresh(authType, modelId, baseUrl), "syncAuthState"),
|
|
7955
8149
|
refreshAuth: /* @__PURE__ */ __name((authType) => this.config.refreshAuth(authType), "refreshAuth")
|
|
7956
8150
|
});
|
|
8151
|
+
const effectiveModelId = adapter.getValue("model.name") ?? plan.modelSelection?.modelId;
|
|
8152
|
+
const effectiveBaseUrl = adapter.getValue("model.baseUrl") ?? plan.modelSelection?.baseUrl;
|
|
7957
8153
|
return {
|
|
7958
8154
|
success: true,
|
|
7959
8155
|
providerId: providerConfig.id,
|
|
7960
8156
|
providerLabel: providerConfig.label,
|
|
7961
8157
|
authType: plan.authType,
|
|
7962
|
-
modelId:
|
|
7963
|
-
...
|
|
8158
|
+
...effectiveModelId ? { modelId: effectiveModelId } : {},
|
|
8159
|
+
...effectiveBaseUrl ? { baseUrl: effectiveBaseUrl } : {}
|
|
7964
8160
|
};
|
|
7965
8161
|
}
|
|
7966
8162
|
case "qwen/skills/install": {
|
|
@@ -8026,6 +8222,19 @@ var QwenAgent = class {
|
|
|
8026
8222
|
serverName
|
|
8027
8223
|
);
|
|
8028
8224
|
}
|
|
8225
|
+
case SERVE_STATUS_EXT_METHODS.workspaceMcpResources: {
|
|
8226
|
+
const serverName = params["serverName"];
|
|
8227
|
+
if (typeof serverName !== "string" || serverName.length === 0) {
|
|
8228
|
+
throw RequestError.invalidParams(
|
|
8229
|
+
void 0,
|
|
8230
|
+
"Invalid or missing serverName"
|
|
8231
|
+
);
|
|
8232
|
+
}
|
|
8233
|
+
return this.buildWorkspaceMcpResourcesStatus(
|
|
8234
|
+
this.config,
|
|
8235
|
+
serverName
|
|
8236
|
+
);
|
|
8237
|
+
}
|
|
8029
8238
|
case SERVE_STATUS_EXT_METHODS.workspaceSkills:
|
|
8030
8239
|
return await this.buildWorkspaceSkillsStatus(
|
|
8031
8240
|
this.config
|
|
@@ -8481,6 +8690,78 @@ var QwenAgent = class {
|
|
|
8481
8690
|
await this.closeStoredSession(sessionId);
|
|
8482
8691
|
return { sessionId, closed: true };
|
|
8483
8692
|
}
|
|
8693
|
+
case SERVE_CONTROL_EXT_METHODS.sessionCd: {
|
|
8694
|
+
const sessionId = params["sessionId"];
|
|
8695
|
+
const targetPath = params["path"];
|
|
8696
|
+
if (typeof sessionId !== "string" || sessionId.length === 0) {
|
|
8697
|
+
throw RequestError.invalidParams(
|
|
8698
|
+
void 0,
|
|
8699
|
+
"Invalid or missing sessionId"
|
|
8700
|
+
);
|
|
8701
|
+
}
|
|
8702
|
+
if (typeof targetPath !== "string" || targetPath.length === 0 || !path.isAbsolute(targetPath) || targetPath.includes("\0")) {
|
|
8703
|
+
throw RequestError.invalidParams(
|
|
8704
|
+
void 0,
|
|
8705
|
+
"Invalid or missing path (must be an absolute path)"
|
|
8706
|
+
);
|
|
8707
|
+
}
|
|
8708
|
+
const session = this.sessionOrThrow(sessionId);
|
|
8709
|
+
const config = session.getConfig();
|
|
8710
|
+
if (config.isRestrictiveSandbox()) {
|
|
8711
|
+
throw new RequestError(-32003, "Restrictive sandbox mode active", {
|
|
8712
|
+
errorKind: "restrictive_sandbox"
|
|
8713
|
+
});
|
|
8714
|
+
}
|
|
8715
|
+
let stats;
|
|
8716
|
+
try {
|
|
8717
|
+
stats = await fs.stat(targetPath);
|
|
8718
|
+
} catch {
|
|
8719
|
+
throw new RequestError(-32002, `Directory not found: ${targetPath}`, {
|
|
8720
|
+
errorKind: "directory_not_found",
|
|
8721
|
+
path: targetPath
|
|
8722
|
+
});
|
|
8723
|
+
}
|
|
8724
|
+
if (!stats.isDirectory()) {
|
|
8725
|
+
throw new RequestError(-32002, `Not a directory: ${targetPath}`, {
|
|
8726
|
+
errorKind: "directory_not_found",
|
|
8727
|
+
path: targetPath
|
|
8728
|
+
});
|
|
8729
|
+
}
|
|
8730
|
+
const canonicalPath = await fs.realpath(targetPath);
|
|
8731
|
+
const previousCwd = config.getTargetDir();
|
|
8732
|
+
if (canonicalPath === previousCwd) {
|
|
8733
|
+
return { previousCwd, newCwd: canonicalPath, warnings: [] };
|
|
8734
|
+
}
|
|
8735
|
+
if (isFolderTrustEnabled(this.settings.merged)) {
|
|
8736
|
+
const trustedFolders = loadTrustedFolders();
|
|
8737
|
+
if (trustedFolders.isPathTrusted(canonicalPath) !== true) {
|
|
8738
|
+
throw new RequestError(
|
|
8739
|
+
-32001,
|
|
8740
|
+
`Directory not trusted: ${canonicalPath}`,
|
|
8741
|
+
{ errorKind: "directory_not_trusted", path: canonicalPath }
|
|
8742
|
+
);
|
|
8743
|
+
}
|
|
8744
|
+
}
|
|
8745
|
+
const warnings = [];
|
|
8746
|
+
const relocation = await config.relocateWorkingDirectory(
|
|
8747
|
+
canonicalPath,
|
|
8748
|
+
canonicalPath,
|
|
8749
|
+
{ skipProcessChdir: true, skipArtifactMigration: true }
|
|
8750
|
+
);
|
|
8751
|
+
if (relocation.memoryRefreshError) {
|
|
8752
|
+
warnings.push(
|
|
8753
|
+
`Memory refresh failed: ${relocation.memoryRefreshError instanceof Error ? relocation.memoryRefreshError.message : String(relocation.memoryRefreshError)}`
|
|
8754
|
+
);
|
|
8755
|
+
}
|
|
8756
|
+
try {
|
|
8757
|
+
await config.getGeminiClient()?.addWorkingDirectoryChangedContext(previousCwd, canonicalPath);
|
|
8758
|
+
} catch (error) {
|
|
8759
|
+
warnings.push(
|
|
8760
|
+
`Model context refresh failed: ${error instanceof Error ? error.message : String(error)}`
|
|
8761
|
+
);
|
|
8762
|
+
}
|
|
8763
|
+
return { previousCwd, newCwd: canonicalPath, warnings };
|
|
8764
|
+
}
|
|
8484
8765
|
case SERVE_CONTROL_EXT_METHODS.sessionApprovalMode: {
|
|
8485
8766
|
const sessionId = params["sessionId"];
|
|
8486
8767
|
const mode = params["mode"];
|
|
@@ -9576,9 +9857,13 @@ ${outputText}
|
|
|
9576
9857
|
}
|
|
9577
9858
|
const config = session.getConfig();
|
|
9578
9859
|
const authType = config.getAuthType();
|
|
9579
|
-
|
|
9860
|
+
const providersChanged = changed.has("modelProviders") || changed.has("providerProtocol");
|
|
9861
|
+
if (providersChanged) {
|
|
9580
9862
|
try {
|
|
9581
|
-
config.reloadModelProvidersConfig(
|
|
9863
|
+
config.reloadModelProvidersConfig(
|
|
9864
|
+
newMerged.modelProviders,
|
|
9865
|
+
newMerged.providerProtocol ?? {}
|
|
9866
|
+
);
|
|
9582
9867
|
} catch (err) {
|
|
9583
9868
|
debugLogger5.warn(
|
|
9584
9869
|
`reload: reloadModelProvidersConfig failed for session ${id}: ${err}`
|
|
@@ -9594,7 +9879,7 @@ ${outputText}
|
|
|
9594
9879
|
`reload: switchModel failed for session ${id}: ${err}`
|
|
9595
9880
|
);
|
|
9596
9881
|
}
|
|
9597
|
-
} else if ((
|
|
9882
|
+
} else if ((providersChanged || envChanged) && authType) {
|
|
9598
9883
|
try {
|
|
9599
9884
|
await config.refreshAuth(authType);
|
|
9600
9885
|
} catch (err) {
|
|
@@ -9822,6 +10107,9 @@ ${outputText}
|
|
|
9822
10107
|
if (sessionData?.fileHistorySnapshots?.length) {
|
|
9823
10108
|
config.getFileHistoryService().restoreFromSnapshots(sessionData.fileHistorySnapshots);
|
|
9824
10109
|
}
|
|
10110
|
+
if (sessionData?.conversation.messages) {
|
|
10111
|
+
config.getChatRecordingService()?.rebuildTurnBoundaries(sessionData.conversation.messages);
|
|
10112
|
+
}
|
|
9825
10113
|
if (options.replayHistory !== false && sessionData?.conversation.messages) {
|
|
9826
10114
|
await session.replayHistory(sessionData.conversation.messages);
|
|
9827
10115
|
}
|