@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 0.19.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/docs/configuration/settings.md +6 -0
- package/bundled/qc-helper/docs/features/sub-agents.md +21 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -2
- package/bundled/review/SKILL.md +23 -11
- package/chunks/{MaxSizedBox-QAYHOC4F.js → MaxSizedBox-67ODZ4SZ.js} +5 -6
- package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-SIPBQT5Z.js} +17 -18
- package/chunks/{acpAgent-ENHBW72A.js → acpAgent-VPZJXLFX.js} +141 -80
- package/chunks/{agent-57LX4KMG.js → agent-Z7NWL6XL.js} +2 -3
- package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-73HZ6ROQ.js} +2 -3
- package/chunks/{bridge-4OZH44MK.js → bridge-XFKW6S7Q.js} +5 -6
- package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
- package/chunks/{chunk-FDL4PB5H.js → chunk-3XJFUTNM.js} +8 -8
- package/chunks/{chunk-AAS2Q2TV.js → chunk-422XAKCK.js} +2 -2
- package/chunks/{chunk-7U7UIO5W.js → chunk-4FMG7EDJ.js} +19 -4
- package/chunks/{chunk-X7EBAABW.js → chunk-4YWLED2A.js} +1 -1
- package/chunks/{chunk-WN4D7YCI.js → chunk-5EBKKSBX.js} +1 -1
- package/chunks/{chunk-G6QTKQN4.js → chunk-5LROA5W4.js} +3 -3
- package/chunks/{chunk-SUWGUGAD.js → chunk-65N2J6V2.js} +2 -2
- package/chunks/{chunk-T2L6SGQY.js → chunk-6GETGQWP.js} +26 -6
- package/chunks/{chunk-T5C2OUCI.js → chunk-6GKMJPOC.js} +3 -3
- package/chunks/{chunk-K3PPUB46.js → chunk-6W6DI34P.js} +1 -1
- package/chunks/{chunk-WM5HY72H.js → chunk-7L4XBYVW.js} +2 -2
- package/chunks/{chunk-CLTWL6HD.js → chunk-7MJAZMXK.js} +5 -5
- package/chunks/{chunk-6HHAADP2.js → chunk-AAR5SGMD.js} +4 -4
- package/chunks/{chunk-P3S67A5R.js → chunk-B5I2IIWY.js} +3 -3
- package/chunks/{chunk-4DYYRLIE.js → chunk-CEW4HDPK.js} +639 -317
- package/chunks/{chunk-JR63TOV4.js → chunk-CJFNEBYB.js} +1 -1
- package/chunks/{chunk-PMRH4YYW.js → chunk-CUUXANEQ.js} +2 -1
- package/chunks/{chunk-Z56JO4JZ.js → chunk-DK33QJ3V.js} +6 -6
- package/chunks/{chunk-N7FCSERB.js → chunk-DPFBNG72.js} +1 -1
- package/chunks/{chunk-HZYUNZDQ.js → chunk-EQY6POVO.js} +1 -1
- package/chunks/{chunk-MBJ3D6SF.js → chunk-F7NXQH4Y.js} +1 -1
- package/chunks/{chunk-C4CXFRKY.js → chunk-FXMC7SL2.js} +25 -4
- package/chunks/{chunk-CSACSGAW.js → chunk-GGJII3FM.js} +2 -2
- package/chunks/{chunk-EU3U7USF.js → chunk-H3FQOPPS.js} +2 -2
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-MBP3K324.js → chunk-HHEFI4RP.js} +32 -11
- package/chunks/{chunk-B6ABUBYY.js → chunk-JSJFKYWT.js} +67 -5
- package/chunks/{chunk-QABSSDQH.js → chunk-K4PZ5F5T.js} +1 -1
- package/chunks/{chunk-SSFDPGFN.js → chunk-K7CRWKOE.js} +7879 -5472
- package/chunks/{chunk-J2TDDOSM.js → chunk-L37RC7MQ.js} +1 -1
- package/chunks/{chunk-V75IOTWF.js → chunk-L62SEJWY.js} +4 -4
- package/chunks/{chunk-HE54PGVI.js → chunk-LNUXFLLJ.js} +2 -2
- package/chunks/{chunk-PHYCWSDG.js → chunk-LQU7EVFA.js} +1 -1
- package/chunks/{chunk-AUGSSJX3.js → chunk-LTNI523B.js} +2 -2
- package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
- package/chunks/{chunk-S2QXYLUB.js → chunk-N6FXRR6P.js} +1 -1
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-XHW5VUIQ.js → chunk-OFEVHGVU.js} +157 -55
- package/chunks/{chunk-T7FSRWQ5.js → chunk-P6LART6G.js} +107 -6
- package/chunks/{chunk-GYGGUR4Q.js → chunk-Q5GLXH5Q.js} +3 -3
- package/chunks/{chunk-SE74CIZD.js → chunk-RDRVMDWV.js} +1 -1
- package/chunks/{chunk-DKXW66XA.js → chunk-SPUYQB4T.js} +1 -1
- package/chunks/{chunk-AGBFWLA5.js → chunk-TISZXPAX.js} +1 -1
- package/chunks/{chunk-ZLM3KXBT.js → chunk-TTUO4DNG.js} +14 -13
- package/chunks/{chunk-4QOPEEL2.js → chunk-UFOKA4PR.js} +1 -1
- package/chunks/{chunk-2MF6ICOL.js → chunk-V7EQTZYR.js} +36 -8
- package/chunks/{chunk-WWQ3QIJS.js → chunk-VBRRNQB7.js} +10 -10
- package/chunks/{chunk-OCC3UTWA.js → chunk-W34A5MJH.js} +1 -1
- package/chunks/{chunk-LAM6CGP5.js → chunk-WDW64OW3.js} +3 -3
- package/chunks/{chunk-DMTQY5GY.js → chunk-WDWJ4OQJ.js} +3 -3
- package/chunks/{chunk-B6KHOCU7.js → chunk-WIASPMLX.js} +8 -8
- package/chunks/{chunk-4FPUAYTT.js → chunk-WLXYAKV7.js} +4 -4
- package/chunks/{chunk-YWUK7OS7.js → chunk-WTSXKLG5.js} +1 -1
- package/chunks/{chunk-7BIZARI2.js → chunk-X362TMXZ.js} +4 -4
- package/chunks/{chunk-ASVORVFT.js → chunk-XLIRF7IK.js} +1 -1
- package/chunks/{chunk-DNKX35GS.js → chunk-XXJKGHZV.js} +4 -4
- package/chunks/{chunk-UI3W56WF.js → chunk-YU56QGXX.js} +1 -1
- package/chunks/{chunk-RJL5T4WJ.js → chunk-YX4LLZ3D.js} +47 -35
- package/chunks/{chunk-YH4J5XI3.js → chunk-YYPXHMWO.js} +4 -4
- package/chunks/{chunk-AAWKZ5R7.js → chunk-ZKMGAFYV.js} +1 -1
- package/chunks/{chunk-EUNRLYJG.js → chunk-ZQTZXVHP.js} +4 -4
- package/chunks/{computer-use-DIP5BWXP.js → computer-use-IYTX45WA.js} +2 -3
- package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-272V77WU.js} +4 -5
- package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-CBJMQLYP.js} +2 -3
- package/chunks/{daemon-CEZ27OH4.js → daemon-RNGFPMAB.js} +315 -36
- package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-L4STG5VO.js} +9 -10
- package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-EN4BRREQ.js} +2 -3
- package/chunks/{edit-Y5LAJSST.js → edit-OMAF2QDR.js} +2 -3
- package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-BBZX52HG.js} +2 -3
- package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-5NNFMBUY.js} +2 -3
- package/chunks/{environment-YVMA5F4I.js → environment-7TEWMJYN.js} +4 -5
- package/chunks/{errors-4Y5SUAOC.js → errors-I4VKVX3F.js} +4 -5
- package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-FUWRJI33.js} +2 -3
- package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-IHCJ5EEI.js} +2 -3
- package/chunks/{fast-path-ZJNFFCBM.js → fast-path-ZA57TOH4.js} +2 -2
- package/chunks/{gemini-5CAB22BI.js → gemini-UOAKVXBG.js} +91 -33
- package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-G6UCE6MW.js} +1 -1
- package/chunks/{glob-YPACZAEL.js → glob-4GJQ2UFF.js} +2 -3
- package/chunks/{grep-IPR4XW37.js → grep-5QSYXF2E.js} +2 -3
- package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ULHNWL6R.js} +6 -7
- package/chunks/{i18n-BRCT66AA.js → i18n-CYDUTF6F.js} +3 -4
- package/chunks/{initializer-34HXSK3A.js → initializer-NRFKUGIO.js} +7 -8
- package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-WELKRHHE.js} +3 -4
- package/chunks/{list-XOGP7UPP.js → list-JVDXEG2E.js} +10 -11
- package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-WAM4VUTG.js} +7 -8
- package/chunks/{mcp-HH7DIP7Y.js → mcp-YHOZN3ZM.js} +7 -8
- package/chunks/{monitor-25DEBT6U.js → monitor-R7XZPJHQ.js} +2 -3
- package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-NSOB6D74.js} +34 -35
- package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-6RNKE2L2.js} +2 -3
- package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-XNS5S64I.js} +2 -2
- package/chunks/{pidfile-SIQGCFLZ.js → pidfile-XE4RRR2P.js} +2 -3
- package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-APDPJ3VN.js} +3 -4
- package/chunks/{read-file-WDOAYRFU.js → read-file-XSUWXSR7.js} +1 -1
- package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-APB3CDMU.js} +2 -3
- package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-NWTGPERT.js} +224 -75
- package/chunks/{runtime-V3FBMUTG.js → runtime-EIO3NQKR.js} +8 -9
- package/chunks/{scheduler-4TAUIJBM.js → scheduler-JJDZBDRN.js} +2 -3
- package/chunks/{serve-WB2TR7XM.js → serve-WTIPB3EI.js} +7 -8
- package/chunks/{server-AF6LNFPK.js → server-NJPHQHLH.js} +2458 -755
- package/chunks/{session-BIGK4NRW.js → session-O4AO7FTS.js} +35 -36
- package/chunks/{settings-IXF5FIQO.js → settings-HQNDK7TG.js} +6 -7
- package/chunks/{shell-5VWJ2PPG.js → shell-UIXM6PWG.js} +2 -3
- package/chunks/{skill-SI667Y3B.js → skill-3XMB4ULV.js} +1 -1
- package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-3R632QRM.js} +4 -5
- package/chunks/{src-55DZWDAK.js → src-USZKPUOC.js} +33 -4
- package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-L5XW3D7K.js} +4 -5
- package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-CPZOL2WB.js} +174 -122
- package/chunks/{team-create-IZAMLBJS.js → team-create-XXPRF3IQ.js} +2 -3
- package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-EOTTKHDW.js} +2 -3
- package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-P6UITO2L.js} +2 -3
- package/chunks/{tool-search-NYNCD5LF.js → tool-search-DDNGK2LR.js} +1 -1
- package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-PL5N7DNY.js} +5 -6
- package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-C5LMF3UR.js} +3 -4
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-QTVVISH7.js} +4 -5
- package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-RY4RKBQG.js} +30 -31
- package/chunks/{version-3NLBENG5.js → version-U45RYOSD.js} +1 -1
- package/chunks/{workflow-BQYLF7XP.js → workflow-TCIAQYOA.js} +3 -4
- package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-I3G2HYLY.js} +10 -11
- package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-IH5GLZ6Y.js} +1 -1
- package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-QEKBELIX.js} +5 -6
- package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-ORKHGLP3.js} +17 -14
- package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-D7QCNDYY.js} +9 -10
- package/chunks/{write-file-S47KSK7Z.js → write-file-JGRQR5VM.js} +2 -3
- package/cli.js +11 -11
- package/package.json +3 -3
- package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CUeDlxvE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-PiUszkQA.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-s2wYSO7e.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-DyLxZoz9.js} +1 -1
- package/web-shell/assets/channel-DkuJJ0qd.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-Dsdai7Tk.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DEosOjV7.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-sNsRLTXf.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-DkRNZzmh.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-BrsRNpzd.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-CI039lpl.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-M-pkeIfu.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-C4ckGNbH.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BciKUAFq.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-C1nTSgU6.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-BDPNWr1m.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-CNFhTszL.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-CjPa4p5a.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-ZzPykSyG.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-0UVtZ9A4.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-CajDZCat.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-BRuFBIvL.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-BevGmJqG.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-DvPMpBMb.js} +1 -1
- package/web-shell/assets/index-Cnvv4VcI.css +5 -0
- package/web-shell/assets/index-D1Uyklxa.js +1088 -0
- package/web-shell/assets/{index-BEtz1cvN.js → index-DzHwQkQq.js} +1 -1
- package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-Oixn7tA9.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-BgKpeg-j.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-74mwxIaA.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-D4D6cEqA.js} +1 -1
- package/web-shell/assets/{linear-DvZXjF17.js → linear-atZRE_L2.js} +1 -1
- package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-KKudX-JC.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-CMCej9yG.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-nhx40X7q.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-CUmVcN3M.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-C_vyEwyy.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DU6G4VWR.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-DdeRR_KJ.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-C6iCI8ps.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-B_Ea8Cb7.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-BPUVZEJA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-BWEj0lKY.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BvDsdIQw.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-crz0QhF_.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/chunk-CU3L64TP.js +0 -93
- package/chunks/types-JNKGKUJT.js +0 -12
- package/web-shell/assets/channel-DWfYijFS.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-DDht-78J.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DDht-78J.js +0 -1
- package/web-shell/assets/index-B9Xwf4OS.css +0 -5
- package/web-shell/assets/index-BUkM4ZXX.js +0 -1088
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CntljfwW.js +0 -1
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
buildPermissionSettings
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-N6FXRR6P.js";
|
|
6
6
|
import {
|
|
7
7
|
resolveVoiceStreamConfig,
|
|
8
8
|
resolveVoiceTranscriptionConfig,
|
|
9
9
|
transcribeVoiceAudio
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-FXMC7SL2.js";
|
|
11
11
|
import {
|
|
12
12
|
getVoiceSettingsScope,
|
|
13
13
|
isSelectableVoiceModel,
|
|
@@ -16,11 +16,13 @@ import {
|
|
|
16
16
|
readVoiceMode,
|
|
17
17
|
readVoiceModel,
|
|
18
18
|
resolveVoiceTransport
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-DPFBNG72.js";
|
|
20
20
|
import {
|
|
21
21
|
WorkspacePermissionRulesSessionRequiredError,
|
|
22
|
-
WorkspaceSettingsPartialPersistError
|
|
23
|
-
|
|
22
|
+
WorkspaceSettingsPartialPersistError,
|
|
23
|
+
WorkspaceSkillNotFoundError,
|
|
24
|
+
WorkspaceSkillNotToggleableError
|
|
25
|
+
} from "./chunk-OA4JVLSA.js";
|
|
24
26
|
import {
|
|
25
27
|
MCP_RESTART_SERVER_DEADLINE_MS
|
|
26
28
|
} from "./chunk-OCPBI7J5.js";
|
|
@@ -34,6 +36,7 @@ import {
|
|
|
34
36
|
WorkspaceInitSymlinkError
|
|
35
37
|
} from "./chunk-KSO42X3Z.js";
|
|
36
38
|
import {
|
|
39
|
+
BridgeChannelClosedError,
|
|
37
40
|
SERVE_CONTROL_EXT_METHODS,
|
|
38
41
|
SERVE_STATUS_EXT_METHODS,
|
|
39
42
|
STATUS_SCHEMA_VERSION,
|
|
@@ -45,20 +48,20 @@ import {
|
|
|
45
48
|
createIdleWorkspaceProvidersStatus,
|
|
46
49
|
createIdleWorkspaceSkillsStatus,
|
|
47
50
|
mapDomainErrorToErrorKind
|
|
48
|
-
} from "./chunk-
|
|
51
|
+
} from "./chunk-CUUXANEQ.js";
|
|
49
52
|
import {
|
|
50
53
|
getPersistScopeForModelSelection,
|
|
51
54
|
loadSettings
|
|
52
|
-
} from "./chunk-
|
|
55
|
+
} from "./chunk-6GETGQWP.js";
|
|
53
56
|
import {
|
|
54
57
|
getWorkspaceTrustStatus
|
|
55
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-4YWLED2A.js";
|
|
56
59
|
import {
|
|
57
60
|
writeStderrLine
|
|
58
61
|
} from "./chunk-YUZI3WAC.js";
|
|
59
62
|
import {
|
|
60
63
|
ModelsConfig
|
|
61
|
-
} from "./chunk-
|
|
64
|
+
} from "./chunk-K7CRWKOE.js";
|
|
62
65
|
import {
|
|
63
66
|
createDebugLogger
|
|
64
67
|
} from "./chunk-7NFB7LBQ.js";
|
|
@@ -96,14 +99,11 @@ function voiceSettingsScopeToWire(scope) {
|
|
|
96
99
|
}
|
|
97
100
|
__name(voiceSettingsScopeToWire, "voiceSettingsScopeToWire");
|
|
98
101
|
function buildWorkspaceVoiceSettingsWrites(settings, update, opts = {}) {
|
|
99
|
-
const voiceSettingsScope = getVoiceSettingsScope(
|
|
100
|
-
settings,
|
|
101
|
-
opts.workspaceTrusted
|
|
102
|
-
);
|
|
102
|
+
const voiceSettingsScope = opts.scopeOverride ?? getVoiceSettingsScope(settings, opts.workspaceTrusted);
|
|
103
103
|
const writes = [];
|
|
104
104
|
if (update.voiceModel !== void 0) {
|
|
105
105
|
writes.push({
|
|
106
|
-
scope: getPersistScopeForModelSelection(settings),
|
|
106
|
+
scope: opts.scopeOverride ?? getPersistScopeForModelSelection(settings),
|
|
107
107
|
key: "voiceModel",
|
|
108
108
|
value: update.voiceModel
|
|
109
109
|
});
|
|
@@ -158,13 +158,13 @@ function listAvailableVoiceModels(settings) {
|
|
|
158
158
|
);
|
|
159
159
|
}
|
|
160
160
|
__name(listAvailableVoiceModels, "listAvailableVoiceModels");
|
|
161
|
-
function hasConfiguredBatchVoiceTranscriptionModel(settings) {
|
|
161
|
+
function hasConfiguredBatchVoiceTranscriptionModel(settings, opts = {}) {
|
|
162
162
|
for (const model of listAvailableVoiceModels(settings)) {
|
|
163
163
|
if (model.transport !== "qwen-asr-chat") {
|
|
164
164
|
continue;
|
|
165
165
|
}
|
|
166
166
|
try {
|
|
167
|
-
validateWorkspaceVoiceConfig(settings, model.id);
|
|
167
|
+
validateWorkspaceVoiceConfig(settings, model.id, opts);
|
|
168
168
|
return true;
|
|
169
169
|
} catch (err) {
|
|
170
170
|
debugLogger.debug(
|
|
@@ -223,14 +223,24 @@ function validateWorkspaceVoiceModel(settings, voiceModel) {
|
|
|
223
223
|
return { id: model.id, transport };
|
|
224
224
|
}
|
|
225
225
|
__name(validateWorkspaceVoiceModel, "validateWorkspaceVoiceModel");
|
|
226
|
-
function validateWorkspaceVoiceConfig(settings, voiceModel) {
|
|
226
|
+
function validateWorkspaceVoiceConfig(settings, voiceModel, opts = {}) {
|
|
227
227
|
const descriptor = validateWorkspaceVoiceModel(settings, voiceModel);
|
|
228
228
|
try {
|
|
229
229
|
const config = createVoiceModelSource(settings);
|
|
230
230
|
if (descriptor.transport === "qwen-asr-chat") {
|
|
231
|
-
resolveVoiceTranscriptionConfig({
|
|
231
|
+
resolveVoiceTranscriptionConfig({
|
|
232
|
+
config,
|
|
233
|
+
settings,
|
|
234
|
+
voiceModel,
|
|
235
|
+
env: opts.env
|
|
236
|
+
});
|
|
232
237
|
} else {
|
|
233
|
-
resolveVoiceStreamConfig({
|
|
238
|
+
resolveVoiceStreamConfig({
|
|
239
|
+
config,
|
|
240
|
+
settings,
|
|
241
|
+
voiceModel,
|
|
242
|
+
env: opts.env
|
|
243
|
+
});
|
|
234
244
|
}
|
|
235
245
|
} catch (err) {
|
|
236
246
|
throw new WorkspaceVoiceError(
|
|
@@ -242,7 +252,7 @@ function validateWorkspaceVoiceConfig(settings, voiceModel) {
|
|
|
242
252
|
return descriptor;
|
|
243
253
|
}
|
|
244
254
|
__name(validateWorkspaceVoiceConfig, "validateWorkspaceVoiceConfig");
|
|
245
|
-
function validateWorkspaceVoiceState(settings, update) {
|
|
255
|
+
function validateWorkspaceVoiceState(settings, update, opts = {}) {
|
|
246
256
|
if (update.enabled === void 0 && update.mode === void 0 && update.language === void 0 && update.voiceModel === void 0) {
|
|
247
257
|
throw new WorkspaceVoiceError(
|
|
248
258
|
400,
|
|
@@ -265,7 +275,7 @@ function validateWorkspaceVoiceState(settings, update) {
|
|
|
265
275
|
"A valid voiceModel is required before enabling voice."
|
|
266
276
|
);
|
|
267
277
|
}
|
|
268
|
-
validateWorkspaceVoiceConfig(settings, nextVoiceModel);
|
|
278
|
+
validateWorkspaceVoiceConfig(settings, nextVoiceModel, opts);
|
|
269
279
|
}
|
|
270
280
|
__name(validateWorkspaceVoiceState, "validateWorkspaceVoiceState");
|
|
271
281
|
async function transcribeWorkspaceVoiceAudio(input) {
|
|
@@ -286,6 +296,7 @@ async function transcribeWorkspaceVoiceAudio(input) {
|
|
|
286
296
|
config: createVoiceModelSource(input.settings),
|
|
287
297
|
settings: input.settings,
|
|
288
298
|
voiceModel: input.voiceModel,
|
|
299
|
+
env: input.env,
|
|
289
300
|
abortSignal: input.abortSignal
|
|
290
301
|
}
|
|
291
302
|
);
|
|
@@ -360,8 +371,11 @@ function createDaemonWorkspaceService(deps) {
|
|
|
360
371
|
workspaceSkillsStatusProvider,
|
|
361
372
|
isChannelLive,
|
|
362
373
|
persistDisabledTools,
|
|
374
|
+
persistDisabledSkills,
|
|
363
375
|
persistSetting,
|
|
364
376
|
persistSettings,
|
|
377
|
+
voiceEnv,
|
|
378
|
+
voiceSettingsScope,
|
|
365
379
|
preheatAcpChild: preheatAcpChildOnBridge,
|
|
366
380
|
queryWorkspaceStatus,
|
|
367
381
|
invokeWorkspaceCommand,
|
|
@@ -370,6 +384,35 @@ function createDaemonWorkspaceService(deps) {
|
|
|
370
384
|
} = deps;
|
|
371
385
|
let lastWorkspaceSkillsStatus;
|
|
372
386
|
let inFlightAcpPreheat;
|
|
387
|
+
const getWorkspaceSkillsStatus = /* @__PURE__ */ __name(async () => {
|
|
388
|
+
let status;
|
|
389
|
+
try {
|
|
390
|
+
status = await queryWorkspaceStatus(
|
|
391
|
+
SERVE_STATUS_EXT_METHODS.workspaceSkills,
|
|
392
|
+
() => createIdleWorkspaceSkillsStatus(boundWorkspace)
|
|
393
|
+
);
|
|
394
|
+
} catch (err) {
|
|
395
|
+
writeStderrLine(
|
|
396
|
+
`qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
|
|
397
|
+
);
|
|
398
|
+
status = createIdleWorkspaceSkillsStatus(boundWorkspace);
|
|
399
|
+
}
|
|
400
|
+
if (status.initialized) {
|
|
401
|
+
lastWorkspaceSkillsStatus = status;
|
|
402
|
+
return status;
|
|
403
|
+
}
|
|
404
|
+
if (lastWorkspaceSkillsStatus) return lastWorkspaceSkillsStatus;
|
|
405
|
+
if (workspaceSkillsStatusProvider) {
|
|
406
|
+
try {
|
|
407
|
+
return await workspaceSkillsStatusProvider(boundWorkspace);
|
|
408
|
+
} catch (err) {
|
|
409
|
+
writeStderrLine(
|
|
410
|
+
`qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
|
|
411
|
+
);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return status;
|
|
415
|
+
}, "getWorkspaceSkillsStatus");
|
|
373
416
|
return {
|
|
374
417
|
// -- Status queries (delegate to ACP child via queryWorkspaceStatus) --
|
|
375
418
|
async getWorkspaceMcpStatus(_ctx) {
|
|
@@ -379,35 +422,7 @@ function createDaemonWorkspaceService(deps) {
|
|
|
379
422
|
);
|
|
380
423
|
},
|
|
381
424
|
async getWorkspaceSkillsStatus(_ctx) {
|
|
382
|
-
|
|
383
|
-
try {
|
|
384
|
-
status = await queryWorkspaceStatus(
|
|
385
|
-
SERVE_STATUS_EXT_METHODS.workspaceSkills,
|
|
386
|
-
() => createIdleWorkspaceSkillsStatus(boundWorkspace)
|
|
387
|
-
);
|
|
388
|
-
} catch (err) {
|
|
389
|
-
writeStderrLine(
|
|
390
|
-
`qwen serve: getWorkspaceSkillsStatus query failed: ${err instanceof Error ? err.message : String(err)}`
|
|
391
|
-
);
|
|
392
|
-
status = createIdleWorkspaceSkillsStatus(boundWorkspace);
|
|
393
|
-
}
|
|
394
|
-
if (status.initialized) {
|
|
395
|
-
lastWorkspaceSkillsStatus = status;
|
|
396
|
-
return status;
|
|
397
|
-
}
|
|
398
|
-
if (lastWorkspaceSkillsStatus) {
|
|
399
|
-
return lastWorkspaceSkillsStatus;
|
|
400
|
-
}
|
|
401
|
-
if (workspaceSkillsStatusProvider) {
|
|
402
|
-
try {
|
|
403
|
-
return await workspaceSkillsStatusProvider(boundWorkspace);
|
|
404
|
-
} catch (err) {
|
|
405
|
-
writeStderrLine(
|
|
406
|
-
`qwen serve: getWorkspaceSkillsStatus local provider failed: ${err instanceof Error ? err.message : String(err)}`
|
|
407
|
-
);
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
return status;
|
|
425
|
+
return getWorkspaceSkillsStatus();
|
|
411
426
|
},
|
|
412
427
|
async getWorkspaceProvidersStatus(_ctx) {
|
|
413
428
|
if (workspaceProvidersStatusProvider) {
|
|
@@ -566,7 +581,10 @@ function createDaemonWorkspaceService(deps) {
|
|
|
566
581
|
async getWorkspaceVoiceStatus(_ctx) {
|
|
567
582
|
return buildWorkspaceVoiceStatus(
|
|
568
583
|
boundWorkspace,
|
|
569
|
-
loadSettings(
|
|
584
|
+
loadSettings(
|
|
585
|
+
boundWorkspace,
|
|
586
|
+
voiceEnv ? { skipLoadEnvironment: true } : true
|
|
587
|
+
)
|
|
570
588
|
);
|
|
571
589
|
},
|
|
572
590
|
// -- Mutations --
|
|
@@ -619,11 +637,15 @@ function createDaemonWorkspaceService(deps) {
|
|
|
619
637
|
"Workspace voice settings persistence is not available"
|
|
620
638
|
);
|
|
621
639
|
}
|
|
622
|
-
const settings = loadSettings(
|
|
623
|
-
|
|
640
|
+
const settings = loadSettings(
|
|
641
|
+
boundWorkspace,
|
|
642
|
+
voiceEnv ? { skipLoadEnvironment: true } : true
|
|
643
|
+
);
|
|
644
|
+
validateWorkspaceVoiceState(settings, request, { env: voiceEnv });
|
|
624
645
|
const workspaceTrusted = getWorkspaceTrustStatus(settings.merged, boundWorkspace).effective.state === "trusted";
|
|
625
646
|
const writes = buildWorkspaceVoiceSettingsWrites(settings, request, {
|
|
626
|
-
workspaceTrusted
|
|
647
|
+
workspaceTrusted,
|
|
648
|
+
...voiceSettingsScope ? { scopeOverride: voiceSettingsScope } : {}
|
|
627
649
|
});
|
|
628
650
|
const publishWrite = /* @__PURE__ */ __name((write) => {
|
|
629
651
|
publishWorkspaceEvent({
|
|
@@ -664,6 +686,9 @@ function createDaemonWorkspaceService(deps) {
|
|
|
664
686
|
writeStderrLine(
|
|
665
687
|
`qwen serve: workspace voice partial persist error (workspace=${boundWorkspace}, committed=${committed.length}/${writes.length}, failedKey=${write.key}, failedScope=${voiceSettingsScopeToWire(write.scope)}): ${err instanceof Error ? err.message : String(err)}`
|
|
666
688
|
);
|
|
689
|
+
for (const committedWrite of committed) {
|
|
690
|
+
publishWrite(committedWrite);
|
|
691
|
+
}
|
|
667
692
|
throw new WorkspaceSettingsPartialPersistError(
|
|
668
693
|
`Voice settings partial persist failed: committed=${committed.length}/${writes.length}`,
|
|
669
694
|
committed,
|
|
@@ -678,7 +703,10 @@ function createDaemonWorkspaceService(deps) {
|
|
|
678
703
|
}
|
|
679
704
|
return buildWorkspaceVoiceStatus(
|
|
680
705
|
boundWorkspace,
|
|
681
|
-
loadSettings(
|
|
706
|
+
loadSettings(
|
|
707
|
+
boundWorkspace,
|
|
708
|
+
voiceEnv ? { skipLoadEnvironment: true } : true
|
|
709
|
+
)
|
|
682
710
|
);
|
|
683
711
|
},
|
|
684
712
|
async setWorkspaceToolEnabled(ctx, toolName, enabled) {
|
|
@@ -690,6 +718,80 @@ function createDaemonWorkspaceService(deps) {
|
|
|
690
718
|
});
|
|
691
719
|
return { toolName, enabled };
|
|
692
720
|
},
|
|
721
|
+
async setWorkspaceSkillEnabled(ctx, requestedSkillName, enabled) {
|
|
722
|
+
const normalizedName = requestedSkillName.trim().toLowerCase();
|
|
723
|
+
const status = await getWorkspaceSkillsStatus();
|
|
724
|
+
const skill = status.skills.find(
|
|
725
|
+
(candidate) => candidate.name.trim().toLowerCase() === normalizedName
|
|
726
|
+
);
|
|
727
|
+
if (!skill) throw new WorkspaceSkillNotFoundError(requestedSkillName);
|
|
728
|
+
if (skill.userInvocable === false) {
|
|
729
|
+
throw new WorkspaceSkillNotToggleableError(
|
|
730
|
+
skill.name,
|
|
731
|
+
"not_user_invocable"
|
|
732
|
+
);
|
|
733
|
+
}
|
|
734
|
+
const disabled = loadSettings(boundWorkspace).merged.skills?.disabled;
|
|
735
|
+
const disabledNames = new Set(
|
|
736
|
+
(Array.isArray(disabled) ? disabled : []).filter((name) => typeof name === "string").map((name) => name.trim().toLowerCase()).filter(Boolean)
|
|
737
|
+
);
|
|
738
|
+
if (skill.level === "extension" && skill.status === "disabled" && !disabledNames.has(normalizedName)) {
|
|
739
|
+
throw new WorkspaceSkillNotToggleableError(
|
|
740
|
+
skill.name,
|
|
741
|
+
"inactive_extension"
|
|
742
|
+
);
|
|
743
|
+
}
|
|
744
|
+
const persisted = await persistDisabledSkills(
|
|
745
|
+
boundWorkspace,
|
|
746
|
+
skill.name,
|
|
747
|
+
enabled
|
|
748
|
+
);
|
|
749
|
+
const channelLive = isChannelLive?.() ?? false;
|
|
750
|
+
let activation = channelLive ? "applied" : "deferred";
|
|
751
|
+
let sessionsRefreshed = 0;
|
|
752
|
+
let sessionsFailed = 0;
|
|
753
|
+
if (persisted.changed) {
|
|
754
|
+
lastWorkspaceSkillsStatus = void 0;
|
|
755
|
+
if (channelLive) {
|
|
756
|
+
try {
|
|
757
|
+
const refreshed = await invokeWorkspaceCommand(
|
|
758
|
+
SERVE_CONTROL_EXT_METHODS.workspaceSkillsRefresh,
|
|
759
|
+
{ cwd: boundWorkspace }
|
|
760
|
+
);
|
|
761
|
+
sessionsRefreshed = refreshed.sessionsRefreshed;
|
|
762
|
+
sessionsFailed = refreshed.sessionsFailed;
|
|
763
|
+
if (sessionsFailed > 0) activation = "partial";
|
|
764
|
+
} catch (err) {
|
|
765
|
+
if (err instanceof SessionNotFoundError || err instanceof BridgeChannelClosedError) {
|
|
766
|
+
activation = "deferred";
|
|
767
|
+
} else {
|
|
768
|
+
activation = "partial";
|
|
769
|
+
sessionsFailed = 1;
|
|
770
|
+
writeStderrLine(
|
|
771
|
+
`qwen serve: workspace skill refresh failed: ${err instanceof Error ? err.message : String(err)}`
|
|
772
|
+
);
|
|
773
|
+
}
|
|
774
|
+
}
|
|
775
|
+
}
|
|
776
|
+
publishWorkspaceEvent({
|
|
777
|
+
type: "settings_changed",
|
|
778
|
+
data: {
|
|
779
|
+
key: "skills.disabled",
|
|
780
|
+
value: persisted.disabled.length > 0 ? persisted.disabled : void 0,
|
|
781
|
+
scope: "workspace"
|
|
782
|
+
},
|
|
783
|
+
originatorClientId: ctx.originatorClientId
|
|
784
|
+
});
|
|
785
|
+
}
|
|
786
|
+
return {
|
|
787
|
+
skillName: skill.name,
|
|
788
|
+
enabled,
|
|
789
|
+
changed: persisted.changed,
|
|
790
|
+
activation,
|
|
791
|
+
sessionsRefreshed,
|
|
792
|
+
sessionsFailed
|
|
793
|
+
};
|
|
794
|
+
},
|
|
693
795
|
async initWorkspace(ctx, opts) {
|
|
694
796
|
const filename = contextFilename;
|
|
695
797
|
const target = path.resolve(boundWorkspace, filename);
|
|
@@ -61936,7 +61936,7 @@ function getLanguageFromFilePath(filePath) {
|
|
|
61936
61936
|
return extensionToLanguageMap[extension];
|
|
61937
61937
|
}
|
|
61938
61938
|
const filename = path3.basename(filePath).toLowerCase();
|
|
61939
|
-
return extensionToLanguageMap[`.${filename}`];
|
|
61939
|
+
return extensionToLanguageMap[filename] ?? extensionToLanguageMap[`.${filename}`];
|
|
61940
61940
|
}
|
|
61941
61941
|
__name(getLanguageFromFilePath, "getLanguageFromFilePath");
|
|
61942
61942
|
|
|
@@ -64174,6 +64174,20 @@ function parseTaggedThinkingText(text) {
|
|
|
64174
64174
|
}
|
|
64175
64175
|
__name(parseTaggedThinkingText, "parseTaggedThinkingText");
|
|
64176
64176
|
|
|
64177
|
+
// packages/core/src/core/invalid-stream-error.ts
|
|
64178
|
+
init_esbuild_shims();
|
|
64179
|
+
var InvalidStreamError = class extends Error {
|
|
64180
|
+
static {
|
|
64181
|
+
__name(this, "InvalidStreamError");
|
|
64182
|
+
}
|
|
64183
|
+
type;
|
|
64184
|
+
constructor(message, type) {
|
|
64185
|
+
super(message);
|
|
64186
|
+
this.name = "InvalidStreamError";
|
|
64187
|
+
this.type = type;
|
|
64188
|
+
}
|
|
64189
|
+
};
|
|
64190
|
+
|
|
64177
64191
|
// packages/core/src/core/openaiContentGenerator/converter.ts
|
|
64178
64192
|
var debugLogger6 = createDebugLogger("CONVERTER");
|
|
64179
64193
|
var SPLIT_TOOL_MEDIA_TEXT = "(attached media from previous tool call)";
|
|
@@ -64830,6 +64844,10 @@ function hasThoughtPart(parts) {
|
|
|
64830
64844
|
return parts.some((part) => part.thought === true);
|
|
64831
64845
|
}
|
|
64832
64846
|
__name(hasThoughtPart, "hasThoughtPart");
|
|
64847
|
+
var THINKING_TAG_PATTERN = /<\/?think(?:ing)?\s*>/i;
|
|
64848
|
+
var CLOSING_THINKING_TAG_PATTERN = /\n[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
|
|
64849
|
+
var LEADING_CLOSING_THINKING_TAG_PATTERN = /^[^\S\r\n]*<\/think(?:ing)?[^\S\r\n]*>/i;
|
|
64850
|
+
var LEADING_THINKING_TAG_PATTERN = /^\s*<\/?think(?:ing)?\s*>/i;
|
|
64833
64851
|
function convertOpenAIResponseToGemini(openaiResponse, requestContext) {
|
|
64834
64852
|
const choice = openaiResponse.choices?.[0];
|
|
64835
64853
|
const response = new GenerateContentResponse();
|
|
@@ -64913,7 +64931,7 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
|
|
|
64913
64931
|
);
|
|
64914
64932
|
}
|
|
64915
64933
|
if (choice) {
|
|
64916
|
-
|
|
64934
|
+
let parts = [];
|
|
64917
64935
|
let contentParts = [];
|
|
64918
64936
|
const reasoningText = choice.delta?.reasoning_content ?? choice.delta?.reasoning;
|
|
64919
64937
|
if (typeof choice.delta?.content === "string") {
|
|
@@ -64958,6 +64976,12 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
|
|
|
64958
64976
|
cumulativeMode: false
|
|
64959
64977
|
}
|
|
64960
64978
|
);
|
|
64979
|
+
if (normalizedReasoningText) {
|
|
64980
|
+
requestContext.hasStructuredReasoningContent = true;
|
|
64981
|
+
if (THINKING_TAG_PATTERN.test(normalizedReasoningText)) {
|
|
64982
|
+
requestContext.hasThinkingTagInReasoning = true;
|
|
64983
|
+
}
|
|
64984
|
+
}
|
|
64961
64985
|
if (normalizedReasoningText && !requestContext.responseParsingOptions?.taggedThinkingTags) {
|
|
64962
64986
|
parts.push(createOpenAIReasoningThoughtPart(normalizedReasoningText));
|
|
64963
64987
|
} else if (normalizedReasoningText && !requestContext.hasTaggedThinkingThought) {
|
|
@@ -65015,10 +65039,45 @@ function convertOpenAIChunkToGemini(chunk, requestContext) {
|
|
|
65015
65039
|
}
|
|
65016
65040
|
}
|
|
65017
65041
|
}
|
|
65042
|
+
const visibleText = parts.map(
|
|
65043
|
+
(part) => part.thought !== true && typeof part.text === "string" ? part.text : ""
|
|
65044
|
+
).join("");
|
|
65045
|
+
const leakedThinkingTag = requestContext.hasStructuredReasoningContent === true && (requestContext.hasVisibleContent !== true && LEADING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.hasThinkingTagInReasoning === true && (CLOSING_THINKING_TAG_PATTERN.test(visibleText) || requestContext.atVisibleLineStart === true && LEADING_CLOSING_THINKING_TAG_PATTERN.test(visibleText)));
|
|
65046
|
+
if (/\S/.test(visibleText)) {
|
|
65047
|
+
requestContext.hasVisibleContent = true;
|
|
65048
|
+
}
|
|
65049
|
+
if (visibleText && requestContext.hasThinkingTagInReasoning === true) {
|
|
65050
|
+
const lastLineBreak = visibleText.lastIndexOf("\n");
|
|
65051
|
+
const lineSuffix = visibleText.slice(lastLineBreak + 1);
|
|
65052
|
+
requestContext.atVisibleLineStart = (lastLineBreak >= 0 || requestContext.atVisibleLineStart === true) && /^[^\S\r\n]*$/.test(lineSuffix);
|
|
65053
|
+
}
|
|
65054
|
+
if (leakedThinkingTag) {
|
|
65055
|
+
requestContext.pendingUntrustedResponseParts = void 0;
|
|
65056
|
+
throw new InvalidStreamError(
|
|
65057
|
+
"Model response leaked thinking tags.",
|
|
65058
|
+
"PROTOCOL_TAG_LEAK"
|
|
65059
|
+
);
|
|
65060
|
+
}
|
|
65061
|
+
const toolCallWithoutName = toolCallParser.hasNamelessToolCall();
|
|
65062
|
+
const completedToolCalls = choice.finish_reason ? toolCallParser.getCompletedToolCalls() : [];
|
|
65063
|
+
if (choice.finish_reason && (toolCallWithoutName || choice.finish_reason === "tool_calls" && completedToolCalls.length === 0)) {
|
|
65064
|
+
requestContext.pendingUntrustedResponseParts = void 0;
|
|
65065
|
+
throw new InvalidStreamError(
|
|
65066
|
+
"Model response contained a malformed tool call.",
|
|
65067
|
+
"MALFORMED_TOOL_CALL"
|
|
65068
|
+
);
|
|
65069
|
+
}
|
|
65070
|
+
const shouldHoldParts = !choice.finish_reason && (toolCallWithoutName || requestContext.hasThinkingTagInReasoning === true);
|
|
65071
|
+
if (shouldHoldParts) {
|
|
65072
|
+
(requestContext.pendingUntrustedResponseParts ??= []).push(...parts);
|
|
65073
|
+
parts.length = 0;
|
|
65074
|
+
} else if (requestContext.pendingUntrustedResponseParts) {
|
|
65075
|
+
parts = requestContext.pendingUntrustedResponseParts.concat(parts);
|
|
65076
|
+
requestContext.pendingUntrustedResponseParts = void 0;
|
|
65077
|
+
}
|
|
65018
65078
|
let toolCallsTruncated = false;
|
|
65019
65079
|
if (choice.finish_reason) {
|
|
65020
65080
|
toolCallsTruncated = toolCallParser.hasIncompleteToolCalls();
|
|
65021
|
-
const completedToolCalls = toolCallParser.getCompletedToolCalls();
|
|
65022
65081
|
for (const toolCall of completedToolCalls) {
|
|
65023
65082
|
if (toolCall.name) {
|
|
65024
65083
|
parts.push({
|
|
@@ -68362,6 +68421,44 @@ var UiTelemetryService = class _UiTelemetryService extends EventEmitter {
|
|
|
68362
68421
|
};
|
|
68363
68422
|
var uiTelemetryService = new UiTelemetryService();
|
|
68364
68423
|
|
|
68424
|
+
// packages/core/src/telemetry/api-activity-tracker.ts
|
|
68425
|
+
init_esbuild_shims();
|
|
68426
|
+
var ApiActivityTracker = class {
|
|
68427
|
+
static {
|
|
68428
|
+
__name(this, "ApiActivityTracker");
|
|
68429
|
+
}
|
|
68430
|
+
#errors = 0;
|
|
68431
|
+
#retries = 0;
|
|
68432
|
+
/** Fold in one model API error (called from `logApiError`). */
|
|
68433
|
+
recordError() {
|
|
68434
|
+
this.#errors += 1;
|
|
68435
|
+
}
|
|
68436
|
+
/** Fold in one automatic retry (called from `logApiRetry`). */
|
|
68437
|
+
recordRetry() {
|
|
68438
|
+
this.#retries += 1;
|
|
68439
|
+
}
|
|
68440
|
+
/**
|
|
68441
|
+
* Return the counts accumulated since the last drain and reset them to zero.
|
|
68442
|
+
* The read+reset is synchronous (no `await` between), so a `recordError` /
|
|
68443
|
+
* `recordRetry` racing an in-progress drain can never be lost — it simply
|
|
68444
|
+
* lands in the next window.
|
|
68445
|
+
*/
|
|
68446
|
+
drain() {
|
|
68447
|
+
const counts = {
|
|
68448
|
+
errors: this.#errors,
|
|
68449
|
+
retries: this.#retries
|
|
68450
|
+
};
|
|
68451
|
+
this.#errors = 0;
|
|
68452
|
+
this.#retries = 0;
|
|
68453
|
+
return counts;
|
|
68454
|
+
}
|
|
68455
|
+
/** Peek at the pending counts without draining (tests / diagnostics). */
|
|
68456
|
+
peek() {
|
|
68457
|
+
return { errors: this.#errors, retries: this.#retries };
|
|
68458
|
+
}
|
|
68459
|
+
};
|
|
68460
|
+
var apiActivityTracker = new ApiActivityTracker();
|
|
68461
|
+
|
|
68365
68462
|
// packages/core/src/telemetry/daemon-tracing.ts
|
|
68366
68463
|
init_esbuild_shims();
|
|
68367
68464
|
init_esm();
|
|
@@ -70061,11 +70158,11 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
70061
70158
|
let baseGenerator;
|
|
70062
70159
|
try {
|
|
70063
70160
|
if (authType === "openai" /* USE_OPENAI */) {
|
|
70064
|
-
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-
|
|
70161
|
+
const { createOpenAIContentGenerator } = await import("./openaiContentGenerator-XNS5S64I.js");
|
|
70065
70162
|
baseGenerator = createOpenAIContentGenerator(generatorConfig, config);
|
|
70066
70163
|
} else if (authType === "qwen-oauth" /* QWEN_OAUTH */) {
|
|
70067
70164
|
const { getQwenOAuthClient: getQwenOauthClient } = await import("./qwenOAuth2-LEYOU7RU.js");
|
|
70068
|
-
const { QwenContentGenerator } = await import("./qwenContentGenerator-
|
|
70165
|
+
const { QwenContentGenerator } = await import("./qwenContentGenerator-APDPJ3VN.js");
|
|
70069
70166
|
try {
|
|
70070
70167
|
const qwenClient = await getQwenOauthClient(
|
|
70071
70168
|
config,
|
|
@@ -70086,7 +70183,7 @@ async function createContentGenerator(generatorConfig, config, isInitialAuth) {
|
|
|
70086
70183
|
const { createAnthropicContentGenerator } = await import("./anthropicContentGenerator-56U3YCP2.js");
|
|
70087
70184
|
baseGenerator = createAnthropicContentGenerator(generatorConfig, config);
|
|
70088
70185
|
} else if (authType === "gemini" /* USE_GEMINI */ || authType === "vertex-ai" /* USE_VERTEX_AI */) {
|
|
70089
|
-
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-
|
|
70186
|
+
const { createGeminiContentGenerator } = await import("./geminiContentGenerator-G6UCE6MW.js");
|
|
70090
70187
|
baseGenerator = createGeminiContentGenerator(generatorConfig, config);
|
|
70091
70188
|
} else {
|
|
70092
70189
|
throw new Error(
|
|
@@ -71811,6 +71908,7 @@ function logApiError(config, event) {
|
|
|
71811
71908
|
"event.timestamp": (/* @__PURE__ */ new Date()).toISOString()
|
|
71812
71909
|
};
|
|
71813
71910
|
uiTelemetryService.addEvent(uiEvent, config.getSessionId());
|
|
71911
|
+
apiActivityTracker.recordError();
|
|
71814
71912
|
if (!isInternalPromptId(event.prompt_id)) {
|
|
71815
71913
|
recordUiTelemetryEventToChat(config, uiEvent);
|
|
71816
71914
|
}
|
|
@@ -72077,6 +72175,7 @@ function logContentRetryFailure(config, event) {
|
|
|
72077
72175
|
}
|
|
72078
72176
|
__name(logContentRetryFailure, "logContentRetryFailure");
|
|
72079
72177
|
function logApiRetry(config, event) {
|
|
72178
|
+
apiActivityTracker.recordRetry();
|
|
72080
72179
|
QwenLogger.getInstance(config)?.logApiRetryEvent(event);
|
|
72081
72180
|
if (!isTelemetrySdkInitialized()) return;
|
|
72082
72181
|
const attributes = {
|
|
@@ -72989,6 +73088,7 @@ export {
|
|
|
72989
73088
|
refreshSessionContext,
|
|
72990
73089
|
shutdownTelemetry,
|
|
72991
73090
|
forceFlushMetrics,
|
|
73091
|
+
apiActivityTracker,
|
|
72992
73092
|
_recoverObjectsFromLine,
|
|
72993
73093
|
parseLineTolerant,
|
|
72994
73094
|
readLines,
|
|
@@ -73124,6 +73224,7 @@ export {
|
|
|
73124
73224
|
parseThought,
|
|
73125
73225
|
getThoughtSummary,
|
|
73126
73226
|
TaggedThinkingParser,
|
|
73227
|
+
InvalidStreamError,
|
|
73127
73228
|
OpenAIContentConverter,
|
|
73128
73229
|
openaiRequestCaptureContext,
|
|
73129
73230
|
isApiError,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
getExtensionManager
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-AAR5SGMD.js";
|
|
6
6
|
import {
|
|
7
7
|
getPlugin,
|
|
8
8
|
parseChannelConfig,
|
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
} from "./chunk-SXU3KKNI.js";
|
|
14
14
|
import {
|
|
15
15
|
loadSettings
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-6GETGQWP.js";
|
|
17
17
|
import {
|
|
18
18
|
writeStderrLine,
|
|
19
19
|
writeStdoutLine
|
|
20
20
|
} from "./chunk-YUZI3WAC.js";
|
|
21
21
|
import {
|
|
22
22
|
hashDaemonWorkspace
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-P6LART6G.js";
|
|
24
24
|
import {
|
|
25
25
|
Storage
|
|
26
26
|
} from "./chunk-7NFB7LBQ.js";
|
|
@@ -60,7 +60,7 @@ async function runExitCleanup(options = {}) {
|
|
|
60
60
|
}
|
|
61
61
|
__name(runExitCleanup, "runExitCleanup");
|
|
62
62
|
async function cleanupCheckpoints() {
|
|
63
|
-
const { Storage } = await import("./src-
|
|
63
|
+
const { Storage } = await import("./src-USZKPUOC.js");
|
|
64
64
|
const storage = new Storage(process.cwd());
|
|
65
65
|
const tempDir = storage.getProjectTempDir();
|
|
66
66
|
const checkpointsDir = join(tempDir, "checkpoints");
|