@qwen-code/qwen-code 0.19.9-nightly.20260714.9dd8389eb → 0.19.9-preview.0
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 +7 -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-BEVSAWZ6.js} +10 -11
- package/chunks/{StandaloneSessionPicker-D3R6YYX3.js → StandaloneSessionPicker-2DA2MDDE.js} +22 -23
- package/chunks/{acpAgent-ENHBW72A.js → acpAgent-G3WJU3PS.js} +189 -93
- package/chunks/{agent-57LX4KMG.js → agent-DD3WSHXE.js} +7 -8
- package/chunks/{agent-headless-AC6EVNAP.js → agent-headless-MHI7U2CU.js} +7 -8
- package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-MIZLXBLF.js} +1 -1
- package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-XMJVPNWM.js} +1 -1
- package/chunks/{bridge-4OZH44MK.js → bridge-HKEWPNB5.js} +10 -11
- package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-YSFB4HUU.js} +2 -2
- package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-QCKIOYZD.js} +2 -2
- package/chunks/{chunk-DKXW66XA.js → chunk-2FMQQXMM.js} +1 -1
- package/chunks/{chunk-UI3W56WF.js → chunk-2J4ZWME4.js} +1 -1
- package/chunks/{chunk-QABSSDQH.js → chunk-2TQXXQMI.js} +1 -1
- package/chunks/{chunk-DNKX35GS.js → chunk-2UW5RFRP.js} +4 -4
- package/chunks/{chunk-DPSWJWZI.js → chunk-2W3OOD4W.js} +1 -0
- package/chunks/{chunk-MBJ3D6SF.js → chunk-43RXPU5Q.js} +1 -1
- package/chunks/{chunk-AAS2Q2TV.js → chunk-4QZ3XHWE.js} +2 -2
- package/chunks/{chunk-ZRKBI3DP.js → chunk-4QZADKJS.js} +1 -1
- package/chunks/{chunk-G6QTKQN4.js → chunk-54UZQ57N.js} +3 -3
- package/chunks/{chunk-YH4J5XI3.js → chunk-5VHASII5.js} +4 -4
- package/chunks/{chunk-AAWKZ5R7.js → chunk-6JPDCEDB.js} +1 -1
- package/chunks/{chunk-7NAWTFVY.js → chunk-6WPJRYLZ.js} +2 -2
- package/chunks/{chunk-JR63TOV4.js → chunk-7DKX4A5Z.js} +1 -1
- package/chunks/{chunk-T2L6SGQY.js → chunk-7IDCQ35Q.js} +37 -6
- package/chunks/{chunk-6OATMEYN.js → chunk-7STBROEV.js} +1 -1
- package/chunks/{chunk-7BIZARI2.js → chunk-A3U2TQUL.js} +4 -4
- package/chunks/{chunk-WN4D7YCI.js → chunk-A7W4GQRW.js} +1 -1
- package/chunks/{chunk-SE74CIZD.js → chunk-AAUZBE5Y.js} +1 -1
- package/chunks/{chunk-CLTWL6HD.js → chunk-ADLYZJYZ.js} +6 -6
- package/chunks/{chunk-SXU3KKNI.js → chunk-AU4R7ACM.js} +4 -0
- package/chunks/{chunk-URU5UEK6.js → chunk-B7MFJBKE.js} +1 -1
- package/chunks/{chunk-E67NFMF4.js → chunk-BLPMRN4B.js} +1 -1
- package/chunks/{chunk-7U7UIO5W.js → chunk-BXT6PQ73.js} +20 -5
- package/chunks/{chunk-ASVORVFT.js → chunk-CEGKYZDB.js} +1 -1
- package/chunks/{chunk-Z56JO4JZ.js → chunk-DMVA55W5.js} +7 -7
- package/chunks/{chunk-T5C2OUCI.js → chunk-DQCCLVQK.js} +3 -3
- package/chunks/{chunk-HE54PGVI.js → chunk-EAHMOXLL.js} +2 -2
- package/chunks/{chunk-C4CXFRKY.js → chunk-EJ3KGYWL.js} +25 -4
- package/chunks/{chunk-CSACSGAW.js → chunk-ERTHKDKN.js} +2 -2
- package/chunks/{chunk-OCC3UTWA.js → chunk-EX5OULP3.js} +1 -1
- package/chunks/{chunk-TXY2C3D2.js → chunk-F333XEAU.js} +1 -1
- package/chunks/{chunk-GYGGUR4Q.js → chunk-FEOBU3FA.js} +5 -5
- package/chunks/{chunk-PMRH4YYW.js → chunk-FI2WSOWX.js} +2 -1
- package/chunks/{chunk-N7FCSERB.js → chunk-GN5HJJBO.js} +1 -1
- package/chunks/{chunk-EU3U7USF.js → chunk-GTENQOEJ.js} +2 -2
- package/chunks/{chunk-MBP3K324.js → chunk-HCJTURZD.js} +32 -11
- package/chunks/{chunk-K3PPUB46.js → chunk-HGG2RRXD.js} +1 -1
- package/chunks/{chunk-YVEDCAUE.js → chunk-HGT6JR3U.js} +19 -0
- package/chunks/{chunk-X7EBAABW.js → chunk-HJCVNZLQ.js} +1 -1
- package/chunks/{chunk-SSFDPGFN.js → chunk-HJUDVNCO.js} +7959 -5497
- package/chunks/{chunk-6HHAADP2.js → chunk-HRUGYOJN.js} +4 -4
- package/chunks/{chunk-T7FSRWQ5.js → chunk-HWTL6MPR.js} +114 -9
- package/chunks/{chunk-HZYUNZDQ.js → chunk-JCD4FM7K.js} +1 -1
- package/chunks/{chunk-DMTQY5GY.js → chunk-JGO6RFI2.js} +3 -3
- package/chunks/{chunk-2UUAIFQO.js → chunk-JGUT3LWZ.js} +5 -0
- package/chunks/{chunk-S2QXYLUB.js → chunk-JW7OOJC6.js} +1 -1
- package/chunks/{chunk-4FPUAYTT.js → chunk-KF5MMGG4.js} +4 -4
- package/chunks/{chunk-XHW5VUIQ.js → chunk-LHEOLOXU.js} +157 -55
- package/chunks/{chunk-2MF6ICOL.js → chunk-LSEJG6AM.js} +36 -8
- package/chunks/{chunk-AGBFWLA5.js → chunk-MKK4XGLF.js} +1 -1
- package/chunks/{chunk-4LJNI7MU.js → chunk-MO7O5722.js} +262 -7
- package/chunks/{chunk-FDL4PB5H.js → chunk-MRYWYBQ4.js} +8 -8
- package/chunks/{chunk-ZLM3KXBT.js → chunk-NRAFASYX.js} +15 -14
- package/chunks/{chunk-WL4L7EZH.js → chunk-OA4JVLSA.js} +27 -1
- package/chunks/{chunk-B6KHOCU7.js → chunk-PMKW35AT.js} +14 -10
- package/chunks/{chunk-YWUK7OS7.js → chunk-QE2WJ7FS.js} +1 -1
- package/chunks/{chunk-B6ABUBYY.js → chunk-QUJOI7SR.js} +67 -5
- package/chunks/{chunk-WM5HY72H.js → chunk-R5D5JOAM.js} +2 -2
- package/chunks/{chunk-BBNVFRGD.js → chunk-R5XLNDE2.js} +1 -1
- package/chunks/{chunk-RJL5T4WJ.js → chunk-SMSFWUFY.js} +53 -40
- package/chunks/{chunk-WWQ3QIJS.js → chunk-UFDX27PL.js} +11 -11
- package/chunks/{chunk-LAM6CGP5.js → chunk-UGN6CTNZ.js} +3 -3
- package/chunks/{chunk-AUGSSJX3.js → chunk-UNLRKDMW.js} +3 -3
- package/chunks/{chunk-4QOPEEL2.js → chunk-VEETSXYX.js} +1 -1
- package/chunks/{chunk-P3S67A5R.js → chunk-VKS7EIOA.js} +4 -4
- package/chunks/{chunk-PHYCWSDG.js → chunk-VVDNGM6X.js} +1 -1
- package/chunks/{chunk-J2TDDOSM.js → chunk-WMC6HH7Y.js} +1 -1
- package/chunks/{chunk-WX6SD4IQ.js → chunk-WTNZ6DXB.js} +1 -1
- package/chunks/{chunk-EUNRLYJG.js → chunk-X6ODDESK.js} +4 -4
- package/chunks/{chunk-V75IOTWF.js → chunk-XDPYM5DE.js} +4 -4
- package/chunks/{chunk-4DYYRLIE.js → chunk-ZA74ZTQU.js} +644 -321
- package/chunks/{chunk-SUWGUGAD.js → chunk-ZGE3222J.js} +2 -2
- package/chunks/{chunk-OATTJGPJ.js → chunk-ZP4ZZJJG.js} +7 -7
- package/chunks/{computer-use-DIP5BWXP.js → computer-use-SHA6C3ES.js} +7 -8
- package/chunks/{config-utils-CFT33LTP.js → config-utils-XSHOMMK4.js} +3 -3
- package/chunks/{contextCommand-QU4GJWWD.js → contextCommand-HOAF5LUC.js} +9 -10
- package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-EAB2U5XW.js} +1 -1
- package/chunks/{create-sub-session-TCLIYVGR.js → create-sub-session-WJOWBFEP.js} +7 -8
- package/chunks/{cron-create-36TIFKRT.js → cron-create-GMVKSXZT.js} +1 -1
- package/chunks/{cron-delete-OQD3WULU.js → cron-delete-VDZKUAVK.js} +1 -1
- package/chunks/{cron-list-4533T2FH.js → cron-list-UG7C7RAR.js} +1 -1
- package/chunks/{daemon-CEZ27OH4.js → daemon-MI5HF26N.js} +343 -40
- package/chunks/{daemon-status-provider-SIBFMLBQ.js → daemon-status-provider-KFL3LRTP.js} +14 -15
- package/chunks/{dist-JZE7F6YR.js → dist-IEXZC5ZR.js} +1 -1
- package/chunks/{dist-ERCPDVA6.js → dist-PQK4GCKA.js} +1 -1
- package/chunks/{dist-3V3ZV6ML.js → dist-U75JK3PF.js} +1 -1
- package/chunks/{dist-PHEPJLXD.js → dist-VXO7QBON.js} +2 -2
- package/chunks/{dist-HNN7DR2L.js → dist-WH4TZSH3.js} +1 -1
- package/chunks/{dist-MOEC47TR.js → dist-X2ABIW5R.js} +1 -1
- package/chunks/{earlyInputCapture-L66BEG2C.js → earlyInputCapture-PKAQJMIP.js} +7 -8
- package/chunks/{edit-Y5LAJSST.js → edit-6TXLYHJ2.js} +7 -8
- package/chunks/{enter-worktree-X5LML7T4.js → enter-worktree-ZTILGPJX.js} +7 -8
- package/chunks/{enterPlanMode-XWF32QOW.js → enterPlanMode-62HRAMCH.js} +7 -8
- package/chunks/{environment-YVMA5F4I.js → environment-OYA3ZVEL.js} +9 -10
- package/chunks/{errors-4Y5SUAOC.js → errors-BFXOUUUR.js} +9 -10
- package/chunks/{exit-worktree-SFHU7XYC.js → exit-worktree-HHJ5M6MV.js} +7 -8
- package/chunks/{exitPlanMode-FP3NAN6E.js → exitPlanMode-M3SWHCL7.js} +7 -8
- package/chunks/{fast-path-ZJNFFCBM.js → fast-path-3VMPLM74.js} +2 -2
- package/chunks/{gemini-5CAB22BI.js → gemini-ZCGVYOJL.js} +100 -42
- package/chunks/{geminiContentGenerator-GE3HPIFB.js → geminiContentGenerator-XBYBAIDQ.js} +1 -1
- package/chunks/{glob-YPACZAEL.js → glob-UOEYQNHN.js} +7 -8
- package/chunks/{grep-IPR4XW37.js → grep-OQM3CH7W.js} +7 -8
- package/chunks/{handleAutoUpdate-P2KEP56V.js → handleAutoUpdate-ORBYVJHZ.js} +11 -12
- package/chunks/{i18n-BRCT66AA.js → i18n-NBP574CO.js} +8 -9
- package/chunks/{initializer-34HXSK3A.js → initializer-CWD7TCCD.js} +12 -13
- package/chunks/{installationInfo-WOTDQMSC.js → installationInfo-CHPDUPWC.js} +8 -9
- package/chunks/{list-XOGP7UPP.js → list-ZTTO362W.js} +15 -16
- package/chunks/{loadedSettingsAdapter-L4YKGU6F.js → loadedSettingsAdapter-V4ZTRKUO.js} +12 -13
- package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-C4EXLYVA.js} +2 -2
- package/chunks/{ls-RXNIAQDE.js → ls-2OUTG3IZ.js} +1 -1
- package/chunks/{lsp-HB5LM5IL.js → lsp-4VMNXZW6.js} +1 -1
- package/chunks/{mcp-HH7DIP7Y.js → mcp-UH5PSGIK.js} +12 -13
- package/chunks/{monitor-25DEBT6U.js → monitor-F4NYEU5J.js} +7 -8
- package/chunks/{nonInteractiveCli-CT3VSSLK.js → nonInteractiveCli-7IHPXVNH.js} +43 -44
- package/chunks/{notebook-edit-TAVXSWQ6.js → notebook-edit-HPDXNGQH.js} +7 -8
- package/chunks/{openaiContentGenerator-6I7DKUAN.js → openaiContentGenerator-OBDNNOE2.js} +4 -4
- package/chunks/{pidfile-SIQGCFLZ.js → pidfile-AUMGYIOK.js} +7 -8
- package/chunks/{qwenContentGenerator-5DDIXI2N.js → qwenContentGenerator-LH2U2YRG.js} +8 -9
- package/chunks/{read-file-WDOAYRFU.js → read-file-HUUFBLEO.js} +3 -3
- package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-JUFHCKSC.js} +1 -1
- package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-DWSMBXYY.js} +1 -1
- package/chunks/{ripGrep-MI7PHN3Q.js → ripGrep-C7X33LU6.js} +7 -8
- package/chunks/{run-qwen-serve-PNTYF3RE.js → run-qwen-serve-DGW5AFDJ.js} +229 -80
- package/chunks/{runtime-V3FBMUTG.js → runtime-NYUSLBEZ.js} +16 -17
- package/chunks/{scheduler-4TAUIJBM.js → scheduler-5VKDXULT.js} +7 -8
- package/chunks/{send-message-SR4WSXP2.js → send-message-JZ752NWD.js} +2 -2
- package/chunks/{serve-WB2TR7XM.js → serve-UTAHSFXH.js} +12 -13
- package/chunks/{server-AF6LNFPK.js → server-VUHSYSUV.js} +2751 -774
- package/chunks/{session-BIGK4NRW.js → session-QSGSSNFB.js} +44 -45
- package/chunks/{settings-IXF5FIQO.js → settings-X24RYEED.js} +11 -12
- package/chunks/{shell-5VWJ2PPG.js → shell-4MSI2R4O.js} +9 -8
- package/chunks/{skill-SI667Y3B.js → skill-JR3GTNVZ.js} +3 -3
- package/chunks/{spawnChannel-IKX6DD7J.js → spawnChannel-RFAAO44J.js} +9 -10
- package/chunks/{src-55DZWDAK.js → src-YDBNMIIM.js} +40 -9
- package/chunks/{standalone-update-MHLSFHE6.js → standalone-update-4CY4HKGC.js} +9 -10
- package/chunks/{startInteractiveUI-V2EDWLAX.js → startInteractiveUI-FOD7MMVB.js} +183 -131
- package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-LELY6HAI.js} +2 -2
- package/chunks/{task-create-NUFOHU53.js → task-create-QY3BIMNM.js} +3 -3
- package/chunks/{task-list-Z2IKQY3S.js → task-list-D2U47WBJ.js} +1 -1
- package/chunks/{task-stop-KQFIVQTJ.js → task-stop-N6E5IYLH.js} +1 -1
- package/chunks/{task-update-HKADXSTD.js → task-update-HJCQILLB.js} +3 -3
- package/chunks/{team-create-IZAMLBJS.js → team-create-ZLQSU2E3.js} +7 -8
- package/chunks/{team-delete-SDNTGZLG.js → team-delete-RCWYDRF4.js} +1 -1
- package/chunks/{team-plan-approval-3R4RCKCP.js → team-plan-approval-YUAYBYLS.js} +7 -8
- package/chunks/{theme-manager-LCOXZ5DO.js → theme-manager-SKNEBMOG.js} +7 -8
- package/chunks/{todoWrite-YNXB27GB.js → todoWrite-FKCGATPJ.js} +1 -1
- package/chunks/{tool-search-NYNCD5LF.js → tool-search-V5J3TGWY.js} +4 -4
- package/chunks/{total-session-admission-PJWGOMQE.js → total-session-admission-2WIH72I3.js} +10 -11
- package/chunks/{trustedFolders-DOJDHNYP.js → trustedFolders-JF265CRI.js} +8 -9
- package/chunks/types-ML3TRJQ5.js +16 -0
- package/chunks/{updateCheck-ZXL66KIG.js → updateCheck-AMXNPBP6.js} +9 -10
- package/chunks/{validateNonInterActiveAuth-JSNJZCYY.js → validateNonInterActiveAuth-6YHQO7PD.js} +39 -40
- package/chunks/{version-3NLBENG5.js → version-UEJJK7PE.js} +1 -1
- package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-QGODBB6S.js} +2 -2
- package/chunks/{workflow-BQYLF7XP.js → workflow-5YFA5V4M.js} +8 -9
- package/chunks/{workspace-providers-status-FA2DGEZW.js → workspace-providers-status-LMBLBNR7.js} +15 -16
- package/chunks/{workspace-registration-store-TARTAGMI.js → workspace-registration-store-VV2S4MSV.js} +1 -1
- package/chunks/{workspace-registry-AGE7WAXX.js → workspace-registry-BVMPYRLN.js} +10 -11
- package/chunks/{workspace-service-ERC5VR2B.js → workspace-service-PUYIZ3J4.js} +22 -19
- package/chunks/{workspace-skills-status-FKYWGNCN.js → workspace-skills-status-CJ7J2KPP.js} +14 -15
- package/chunks/{write-file-S47KSK7Z.js → write-file-OV77M6X7.js} +7 -8
- package/cli.js +11 -11
- package/package.json +3 -3
- package/web-shell/assets/{arc-Zj4EkBUY.js → arc-CObt_TK9.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-DAk1Ua3Y.js → architectureDiagram-3BPJPVTR-B7aiJ6CK.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-DBNqUthM.js → blockDiagram-GPEHLZMM-BSK2CrID.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-Dq5QGJ53.js → c4Diagram-AAUBKEIU-Bhx2p7T_.js} +1 -1
- package/web-shell/assets/channel-BBaLq8MV.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-DY0AeGru.js → chunk-2J33WTMH-c3Hzv0Ni.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-COX3OyIi.js → chunk-4BX2VUAB-DNXaK7ZF.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-Csoyddbh.js → chunk-55IACEB6-BXjvDj_i.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BJPONdxX.js → chunk-727SXJPM-B6CaKFp-.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-syLVH6fg.js → chunk-AQP2D5EJ-tij6Mz9B.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cfm59Nhw.js → chunk-FMBD7UC4-DdlsGk2h.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-DZf6tAqS.js → chunk-ND2GUHAM-CdgGZSHE.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DKBp_v5q.js → chunk-QZHKN3VN-D8oJn1C0.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B2ZK6sWE.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B2ZK6sWE.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DUU3mMQ5.js → cose-bilkent-S5V4N54A-BUVmNp1Y.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-BUgNfbh-.js → dagre-BM42HDAG-CO4q310O.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-DT7MVfAg.js → diagram-2AECGRRQ-C6gFvWkg.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-Cv4YG-ec.js → diagram-5GNKFQAL-NG2I_c0h.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-BAe9LLkn.js → diagram-KO2AKTUF-DFKMS6I9.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-DW8wqTIP.js → diagram-LMA3HP47-BiElfsfP.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CmkuWbaK.js → diagram-OG6HWLK6-zLWDYUqu.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-DwvdHjZ9.js → erDiagram-TEJ5UH35-DoVaazhK.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-CSsXrhW_.js → flowDiagram-I6XJVG4X-0RLz-mXg.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-BtuznCdi.js → ganttDiagram-6RSMTGT7-C-eX1A39.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DGmAm06g.js → gitGraphDiagram-PVQCEYII-BauQu1Bu.js} +1 -1
- package/web-shell/assets/index-3uAT3ehO.css +5 -0
- package/web-shell/assets/{index-BEtz1cvN.js → index-CVHa2QH7.js} +1 -1
- package/web-shell/assets/index-D1KigWat.js +1128 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-OAiZ1q0K.js → infoDiagram-5YYISTIA-C800cFvZ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DyK0KTIT.js → ishikawaDiagram-YF4QCWOH-CFK1Jk6e.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-DzYJlwfO.js → journeyDiagram-JHISSGLW-Cjx0WAC4.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-CU_tcDwi.js → kanban-definition-UN3LZRKU-DWMDHbiv.js} +1 -1
- package/web-shell/assets/{linear-DvZXjF17.js → linear-vpW4FrZs.js} +1 -1
- package/web-shell/assets/{mermaid.core-_ZFEQlOl.js → mermaid.core-DsHRUnDd.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-Or4p64HB.js → mindmap-definition-RKZ34NQL-D3Eb1cAK.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-lXE-zZ6b.js → pieDiagram-4H26LBE5-Cr2-6sWt.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DUXb9mUV.js → quadrantDiagram-W4KKPZXB-Yd7yUgVp.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-D_10uHfo.js → requirementDiagram-4Y6WPE33-BE6SprL8.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-E8c0fPqe.js → sankeyDiagram-5OEKKPKP-DzkuMK8d.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CJMtFttK.js → sequenceDiagram-3UESZ5HK-wD9A3Dhi.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-DhbviRbB.js → stateDiagram-AJRCARHV-BOp5q1Nm.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BDsWUmPG.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-CM5yMkFK.js → timeline-definition-PNZ67QCA-Btc08sUA.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BCi-zWNN.js → vennDiagram-CIIHVFJN-Bv6upsOA.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-BJ_yJNjJ.js → wardley-L42UT6IY-D-XamnCK.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-TjtLk-qN.js → wardleyDiagram-YWT4CUSO-BbP_5Wfp.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-D1TjyoQ3.js → xychartDiagram-2RQKCTM6-CO5Hh28b.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
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
import {
|
|
4
4
|
DaemonMetricsRing,
|
|
5
5
|
computeCpuPercent
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-HGT6JR3U.js";
|
|
7
7
|
import {
|
|
8
8
|
CAPABILITIES_SCHEMA_VERSION,
|
|
9
9
|
ClientMcpSenderRegistry,
|
|
10
10
|
PathMutexRegistry,
|
|
11
11
|
SERVE_CAPABILITY_REGISTRY,
|
|
12
|
+
WorkspaceVoiceCoordinator,
|
|
12
13
|
allowOriginCors,
|
|
13
14
|
allowOriginMode,
|
|
14
15
|
bearerAuth,
|
|
@@ -26,7 +27,7 @@ import {
|
|
|
26
27
|
positiveFiniteOrNull,
|
|
27
28
|
require_express,
|
|
28
29
|
resolveWebShellDir
|
|
29
|
-
} from "./chunk-
|
|
30
|
+
} from "./chunk-MO7O5722.js";
|
|
30
31
|
import {
|
|
31
32
|
isLoopbackBind
|
|
32
33
|
} from "./chunk-RXFQM6FQ.js";
|
|
@@ -43,12 +44,12 @@ import {
|
|
|
43
44
|
import "./chunk-WBL3FJEU.js";
|
|
44
45
|
import {
|
|
45
46
|
resolveChannelCwd
|
|
46
|
-
} from "./chunk-
|
|
47
|
+
} from "./chunk-4QZADKJS.js";
|
|
47
48
|
import {
|
|
48
49
|
MAX_REGISTERED_WORKSPACES,
|
|
49
50
|
resolveWorkspaceInputs,
|
|
50
51
|
workspaceRegistrationId
|
|
51
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-WMC6HH7Y.js";
|
|
52
53
|
import {
|
|
53
54
|
canonicalizeWorkspace
|
|
54
55
|
} from "./chunk-W7FJ3N32.js";
|
|
@@ -66,7 +67,7 @@ import {
|
|
|
66
67
|
import "./chunk-T2NCM2ET.js";
|
|
67
68
|
import {
|
|
68
69
|
sanitizeLogText
|
|
69
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-AU4R7ACM.js";
|
|
70
71
|
import "./chunk-UDXSXLER.js";
|
|
71
72
|
import {
|
|
72
73
|
loadServeFastPathSettings,
|
|
@@ -88,9 +89,8 @@ import {
|
|
|
88
89
|
} from "./chunk-YUZI3WAC.js";
|
|
89
90
|
import {
|
|
90
91
|
getCliVersion
|
|
91
|
-
} from "./chunk-
|
|
92
|
+
} from "./chunk-2J4ZWME4.js";
|
|
92
93
|
import "./chunk-VJNBRRZG.js";
|
|
93
|
-
import "./chunk-CU3L64TP.js";
|
|
94
94
|
import "./chunk-H6XPXXMH.js";
|
|
95
95
|
import "./chunk-5M6IDOMF.js";
|
|
96
96
|
import "./chunk-E2UVIFI2.js";
|
|
@@ -1136,12 +1136,12 @@ __name(withSettingsLock, "withSettingsLock");
|
|
|
1136
1136
|
var channelWorkerRuntimePromise;
|
|
1137
1137
|
async function loadChannelWorkerRuntime() {
|
|
1138
1138
|
channelWorkerRuntimePromise ??= Promise.all([
|
|
1139
|
-
import("./channel-worker-supervisor-
|
|
1140
|
-
import("./pidfile-
|
|
1141
|
-
import("./runtime-
|
|
1139
|
+
import("./channel-worker-supervisor-QCKIOYZD.js"),
|
|
1140
|
+
import("./pidfile-AUMGYIOK.js"),
|
|
1141
|
+
import("./runtime-NYUSLBEZ.js"),
|
|
1142
1142
|
import("./cli-entry-path-4VJ3Y6T2.js"),
|
|
1143
1143
|
import("./channel-worker-group-K7QKH6IG.js"),
|
|
1144
|
-
import("./channel-worker-manager-
|
|
1144
|
+
import("./channel-worker-manager-YSFB4HUU.js")
|
|
1145
1145
|
]).then(
|
|
1146
1146
|
([
|
|
1147
1147
|
supervisor,
|
|
@@ -1246,7 +1246,7 @@ function shouldPreheatBridge(deps) {
|
|
|
1246
1246
|
__name(shouldPreheatBridge, "shouldPreheatBridge");
|
|
1247
1247
|
var coreRuntimePromise;
|
|
1248
1248
|
function loadCoreRuntime() {
|
|
1249
|
-
coreRuntimePromise ??= import("./src-
|
|
1249
|
+
coreRuntimePromise ??= import("./src-YDBNMIIM.js");
|
|
1250
1250
|
return coreRuntimePromise;
|
|
1251
1251
|
}
|
|
1252
1252
|
__name(loadCoreRuntime, "loadCoreRuntime");
|
|
@@ -1276,10 +1276,10 @@ __name(resolveDaemonLogBaseDirForRun, "resolveDaemonLogBaseDirForRun");
|
|
|
1276
1276
|
var settingsRuntimePromise;
|
|
1277
1277
|
function loadSettingsRuntimeModules() {
|
|
1278
1278
|
settingsRuntimePromise ??= Promise.all([
|
|
1279
|
-
import("./settings-
|
|
1280
|
-
import("./environment-
|
|
1281
|
-
import("./loadedSettingsAdapter-
|
|
1282
|
-
import("./trustedFolders-
|
|
1279
|
+
import("./settings-X24RYEED.js"),
|
|
1280
|
+
import("./environment-OYA3ZVEL.js"),
|
|
1281
|
+
import("./loadedSettingsAdapter-V4ZTRKUO.js"),
|
|
1282
|
+
import("./trustedFolders-JF265CRI.js")
|
|
1283
1283
|
]).then(([settings, environment, loadedSettingsAdapter, trustedFolders]) => ({
|
|
1284
1284
|
settings,
|
|
1285
1285
|
environment,
|
|
@@ -1292,8 +1292,8 @@ __name(loadSettingsRuntimeModules, "loadSettingsRuntimeModules");
|
|
|
1292
1292
|
var channelWebhookConfigRuntimePromise;
|
|
1293
1293
|
function loadChannelWebhookConfigRuntime() {
|
|
1294
1294
|
channelWebhookConfigRuntimePromise ??= Promise.all([
|
|
1295
|
-
import("./runtime-
|
|
1296
|
-
import("./config-utils-
|
|
1295
|
+
import("./runtime-NYUSLBEZ.js"),
|
|
1296
|
+
import("./config-utils-XSHOMMK4.js")
|
|
1297
1297
|
]).then(([channelRuntime, configUtils]) => ({
|
|
1298
1298
|
loadChannelsConfig: channelRuntime.loadChannelsConfig,
|
|
1299
1299
|
parseChannelWebhookConfig: configUtils.parseChannelWebhookConfig
|
|
@@ -1317,16 +1317,16 @@ async function loadServeRuntimeModules() {
|
|
|
1317
1317
|
totalSessionAdmissionModule,
|
|
1318
1318
|
workspaceRegistryModule
|
|
1319
1319
|
] = await Promise.all([
|
|
1320
|
-
import("./server-
|
|
1321
|
-
import("./bridge-
|
|
1322
|
-
import("./spawnChannel-
|
|
1323
|
-
import("./workspace-service-
|
|
1324
|
-
import("./types-
|
|
1325
|
-
import("./daemon-status-provider-
|
|
1326
|
-
import("./workspace-providers-status-
|
|
1327
|
-
import("./workspace-skills-status-
|
|
1328
|
-
import("./total-session-admission-
|
|
1329
|
-
import("./workspace-registry-
|
|
1320
|
+
import("./server-VUHSYSUV.js"),
|
|
1321
|
+
import("./bridge-HKEWPNB5.js"),
|
|
1322
|
+
import("./spawnChannel-RFAAO44J.js"),
|
|
1323
|
+
import("./workspace-service-PUYIZ3J4.js"),
|
|
1324
|
+
import("./types-ML3TRJQ5.js"),
|
|
1325
|
+
import("./daemon-status-provider-KFL3LRTP.js"),
|
|
1326
|
+
import("./workspace-providers-status-LMBLBNR7.js"),
|
|
1327
|
+
import("./workspace-skills-status-CJ7J2KPP.js"),
|
|
1328
|
+
import("./total-session-admission-2WIH72I3.js"),
|
|
1329
|
+
import("./workspace-registry-BVMPYRLN.js")
|
|
1330
1330
|
]);
|
|
1331
1331
|
return {
|
|
1332
1332
|
createServeApp: serverModule.createServeApp,
|
|
@@ -1337,6 +1337,7 @@ async function loadServeRuntimeModules() {
|
|
|
1337
1337
|
createSpawnChannelFactory: spawnChannelModule.createSpawnChannelFactory,
|
|
1338
1338
|
createDaemonWorkspaceService: workspaceModule.createDaemonWorkspaceService,
|
|
1339
1339
|
WorkspaceSettingsPartialPersistError: workspaceTypesModule.WorkspaceSettingsPartialPersistError,
|
|
1340
|
+
WorkspaceSkillNotToggleableError: workspaceTypesModule.WorkspaceSkillNotToggleableError,
|
|
1340
1341
|
createDaemonStatusProvider: daemonStatusProviderModule.createDaemonStatusProvider,
|
|
1341
1342
|
createWorkspaceProvidersStatusProvider: workspaceProvidersStatusModule.createWorkspaceProvidersStatusProvider,
|
|
1342
1343
|
createWorkspaceSkillsStatusProvider: workspaceSkillsStatusModule.createWorkspaceSkillsStatusProvider,
|
|
@@ -2140,7 +2141,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2140
2141
|
}
|
|
2141
2142
|
let workspaceRegistrationStore = deps.workspaceRegistrationStore;
|
|
2142
2143
|
if (workspaceRegistrationStore === void 0 && process.env["QWEN_SERVE_NO_PERSISTENT_REGISTRATION"] !== "1") {
|
|
2143
|
-
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-
|
|
2144
|
+
const { WorkspaceRegistrationStore } = await import("./workspace-registration-store-VV2S4MSV.js");
|
|
2144
2145
|
workspaceRegistrationStore = new WorkspaceRegistrationStore(boundWorkspace);
|
|
2145
2146
|
}
|
|
2146
2147
|
if (workspaceRegistrationStore) {
|
|
@@ -2383,10 +2384,24 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2383
2384
|
void runtimeReady.catch(() => {
|
|
2384
2385
|
});
|
|
2385
2386
|
const disposeDaemonEventLoopMonitor = /* @__PURE__ */ __name(() => {
|
|
2386
|
-
daemonEventLoopMonitor
|
|
2387
|
+
const eventLoopMonitor = daemonEventLoopMonitor;
|
|
2387
2388
|
daemonEventLoopMonitor = void 0;
|
|
2388
|
-
daemonMetricsSampler
|
|
2389
|
+
const metricsSampler = daemonMetricsSampler;
|
|
2389
2390
|
daemonMetricsSampler = void 0;
|
|
2391
|
+
try {
|
|
2392
|
+
eventLoopMonitor?.dispose();
|
|
2393
|
+
} catch (err) {
|
|
2394
|
+
daemonLog.warn(
|
|
2395
|
+
`event loop monitor dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2396
|
+
);
|
|
2397
|
+
}
|
|
2398
|
+
try {
|
|
2399
|
+
metricsSampler?.dispose();
|
|
2400
|
+
} catch (err) {
|
|
2401
|
+
daemonLog.warn(
|
|
2402
|
+
`metrics sampler dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2403
|
+
);
|
|
2404
|
+
}
|
|
2390
2405
|
}, "disposeDaemonEventLoopMonitor");
|
|
2391
2406
|
let channelWorkerManager;
|
|
2392
2407
|
let channelWorkerManagerStarting;
|
|
@@ -2514,6 +2529,78 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2514
2529
|
() => runtimeStartupError
|
|
2515
2530
|
);
|
|
2516
2531
|
const shutdownBridges = /* @__PURE__ */ new WeakSet();
|
|
2532
|
+
const disposedRuntimeApps = /* @__PURE__ */ new WeakSet();
|
|
2533
|
+
const stoppedRuntimeAppProducers = /* @__PURE__ */ new WeakSet();
|
|
2534
|
+
const stoppedExtensionReconcilers = /* @__PURE__ */ new WeakSet();
|
|
2535
|
+
const stopExtensionReconciler = /* @__PURE__ */ __name((app2) => {
|
|
2536
|
+
if (!app2 || stoppedExtensionReconcilers.has(app2)) return;
|
|
2537
|
+
stoppedExtensionReconcilers.add(app2);
|
|
2538
|
+
const stopExtensionGenerationReconciler = app2.locals?.["stopExtensionGenerationReconciler"];
|
|
2539
|
+
try {
|
|
2540
|
+
stopExtensionGenerationReconciler?.();
|
|
2541
|
+
} catch (err) {
|
|
2542
|
+
daemonLog.warn(
|
|
2543
|
+
`extension generation reconciler dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2544
|
+
);
|
|
2545
|
+
}
|
|
2546
|
+
}, "stopExtensionReconciler");
|
|
2547
|
+
const stopRuntimeAppProducers = /* @__PURE__ */ __name((app2) => {
|
|
2548
|
+
if (!app2 || stoppedRuntimeAppProducers.has(app2)) return;
|
|
2549
|
+
stoppedRuntimeAppProducers.add(app2);
|
|
2550
|
+
const locals = app2.locals;
|
|
2551
|
+
const stopSafely = /* @__PURE__ */ __name((name, stop) => {
|
|
2552
|
+
try {
|
|
2553
|
+
stop?.();
|
|
2554
|
+
} catch (err) {
|
|
2555
|
+
daemonLog.warn(
|
|
2556
|
+
`${name} dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2557
|
+
);
|
|
2558
|
+
}
|
|
2559
|
+
}, "stopSafely");
|
|
2560
|
+
stopSafely("scheduled-task keepalive", locals.stopScheduledTaskKeepalive);
|
|
2561
|
+
stopSafely("workspace git state", locals.stopWorkspaceGitState);
|
|
2562
|
+
for (const stop of locals.subSessionStoppers ?? []) {
|
|
2563
|
+
stopSafely("sub-session launcher", stop);
|
|
2564
|
+
}
|
|
2565
|
+
stopExtensionReconciler(app2);
|
|
2566
|
+
}, "stopRuntimeAppProducers");
|
|
2567
|
+
const disposeRuntimeAppResources = /* @__PURE__ */ __name((app2) => {
|
|
2568
|
+
if (!app2 || disposedRuntimeApps.has(app2)) return;
|
|
2569
|
+
disposedRuntimeApps.add(app2);
|
|
2570
|
+
stopRuntimeAppProducers(app2);
|
|
2571
|
+
const deviceFlowRegistry = getDeviceFlowRegistry(app2);
|
|
2572
|
+
if (deviceFlowRegistry) {
|
|
2573
|
+
try {
|
|
2574
|
+
deviceFlowRegistry.dispose();
|
|
2575
|
+
} catch (err) {
|
|
2576
|
+
daemonLog.warn(
|
|
2577
|
+
`device-flow registry dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2578
|
+
);
|
|
2579
|
+
}
|
|
2580
|
+
}
|
|
2581
|
+
const acpHandle = app2.locals?.["acpHandle"];
|
|
2582
|
+
if (acpHandle?.dispose) {
|
|
2583
|
+
try {
|
|
2584
|
+
acpHandle.dispose();
|
|
2585
|
+
} catch (err) {
|
|
2586
|
+
daemonLog.warn(
|
|
2587
|
+
`ACP handle dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2588
|
+
);
|
|
2589
|
+
}
|
|
2590
|
+
}
|
|
2591
|
+
const rateLimiter = getRateLimiter(app2);
|
|
2592
|
+
if (rateLimiter) {
|
|
2593
|
+
try {
|
|
2594
|
+
rateLimiter.setDraining(true);
|
|
2595
|
+
rateLimiter.dispose();
|
|
2596
|
+
} catch (err) {
|
|
2597
|
+
daemonLog.warn(
|
|
2598
|
+
`rate limiter dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
2599
|
+
);
|
|
2600
|
+
}
|
|
2601
|
+
}
|
|
2602
|
+
disposeDaemonEventLoopMonitor();
|
|
2603
|
+
}, "disposeRuntimeAppResources");
|
|
2517
2604
|
const getRuntimeBridgesForCleanup = /* @__PURE__ */ __name(() => {
|
|
2518
2605
|
const appForCleanup = runtimeApp ?? runtimeAppForCleanup;
|
|
2519
2606
|
const registry = appForCleanup?.locals?.["workspaceRegistry"];
|
|
@@ -2700,12 +2787,15 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2700
2787
|
// `agent_message_chunk._meta` (`usage` + `durationMs`) at the bridge's
|
|
2701
2788
|
// single session/update fan-in. Increments (not cumulative), so the ring
|
|
2702
2789
|
// sums tokens per window (token-burn chart) and pools the round-trip times
|
|
2703
|
-
// for the LLM-latency percentiles.
|
|
2704
|
-
|
|
2790
|
+
// for the LLM-latency percentiles. `apiErrors` / `apiRetries` ride the
|
|
2791
|
+
// same frame (per-round increments, 0 when none) and window into the
|
|
2792
|
+
// model-API-health chart.
|
|
2793
|
+
tokenUsage(inputTokens, outputTokens, durationMs, apiErrors, apiRetries) {
|
|
2705
2794
|
metricsRing.recordTokens(inputTokens, outputTokens);
|
|
2706
2795
|
if (typeof durationMs === "number") {
|
|
2707
2796
|
metricsRing.recordLlmDuration(durationMs);
|
|
2708
2797
|
}
|
|
2798
|
+
metricsRing.recordApiActivity(apiErrors ?? 0, apiRetries ?? 0);
|
|
2709
2799
|
}
|
|
2710
2800
|
};
|
|
2711
2801
|
return telemetry;
|
|
@@ -2810,6 +2900,63 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2810
2900
|
[...next].sort()
|
|
2811
2901
|
);
|
|
2812
2902
|
}), "persistDisabledToolsFn");
|
|
2903
|
+
const persistDisabledSkillsFn = /* @__PURE__ */ __name((workspace, skillName, enabled) => withSettingsLock(workspace, async () => {
|
|
2904
|
+
const fresh = settingsRuntime.settings.loadSettings(workspace);
|
|
2905
|
+
const normalizedName = skillName.trim().toLowerCase();
|
|
2906
|
+
const disabledNames = /* @__PURE__ */ __name((value) => Array.isArray(value) ? value.filter(
|
|
2907
|
+
(entry) => typeof entry === "string"
|
|
2908
|
+
) : [], "disabledNames");
|
|
2909
|
+
const lockedScopes = [
|
|
2910
|
+
["system", fresh.system.settings.skills?.disabled],
|
|
2911
|
+
["user", fresh.user.settings.skills?.disabled],
|
|
2912
|
+
["systemDefaults", fresh.systemDefaults.settings.skills?.disabled]
|
|
2913
|
+
];
|
|
2914
|
+
for (const [scope, names] of lockedScopes) {
|
|
2915
|
+
if (disabledNames(names).some(
|
|
2916
|
+
(name) => name.trim().toLowerCase() === normalizedName
|
|
2917
|
+
)) {
|
|
2918
|
+
throw new runtime.WorkspaceSkillNotToggleableError(
|
|
2919
|
+
skillName,
|
|
2920
|
+
"locked",
|
|
2921
|
+
scope
|
|
2922
|
+
);
|
|
2923
|
+
}
|
|
2924
|
+
}
|
|
2925
|
+
const workspaceDisabled = disabledNames(
|
|
2926
|
+
fresh.workspace.settings.skills?.disabled
|
|
2927
|
+
);
|
|
2928
|
+
const next = [];
|
|
2929
|
+
let found = false;
|
|
2930
|
+
let changed = false;
|
|
2931
|
+
for (const name of workspaceDisabled) {
|
|
2932
|
+
if (name.trim().toLowerCase() !== normalizedName) {
|
|
2933
|
+
next.push(name);
|
|
2934
|
+
continue;
|
|
2935
|
+
}
|
|
2936
|
+
if (enabled) {
|
|
2937
|
+
changed = true;
|
|
2938
|
+
continue;
|
|
2939
|
+
}
|
|
2940
|
+
if (!found) {
|
|
2941
|
+
next.push(skillName);
|
|
2942
|
+
found = true;
|
|
2943
|
+
if (name !== skillName) changed = true;
|
|
2944
|
+
} else {
|
|
2945
|
+
changed = true;
|
|
2946
|
+
}
|
|
2947
|
+
}
|
|
2948
|
+
if (!enabled && !found) {
|
|
2949
|
+
next.push(skillName);
|
|
2950
|
+
changed = true;
|
|
2951
|
+
}
|
|
2952
|
+
if (!changed) return { changed: false, disabled: workspaceDisabled };
|
|
2953
|
+
fresh.setValue(
|
|
2954
|
+
WORKSPACE_SETTING_SCOPE,
|
|
2955
|
+
"skills.disabled",
|
|
2956
|
+
next.length > 0 ? next : void 0
|
|
2957
|
+
);
|
|
2958
|
+
return { changed: true, disabled: next };
|
|
2959
|
+
}), "persistDisabledSkillsFn");
|
|
2813
2960
|
const persistSettingFn = /* @__PURE__ */ __name((workspace, scope, key, value) => withSettingsLock(workspace, async () => {
|
|
2814
2961
|
const fresh = settingsRuntime.settings.loadSettings(workspace);
|
|
2815
2962
|
fresh.setValue(scope, key, value);
|
|
@@ -2842,7 +2989,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2842
2989
|
);
|
|
2843
2990
|
}
|
|
2844
2991
|
}), "persistSettingsFn");
|
|
2845
|
-
const { createSubSessionLauncher } = await import("./create-sub-session-
|
|
2992
|
+
const { createSubSessionLauncher } = await import("./create-sub-session-WJOWBFEP.js");
|
|
2846
2993
|
const subSessionLauncher = createSubSessionLauncher({
|
|
2847
2994
|
getBridge: /* @__PURE__ */ __name(() => bridgeRef, "getBridge"),
|
|
2848
2995
|
boundWorkspace
|
|
@@ -2883,14 +3030,18 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2883
3030
|
internalRuntimeBridgesForCleanup.push(bridge);
|
|
2884
3031
|
}
|
|
2885
3032
|
runtimeBridges.push(bridge);
|
|
3033
|
+
let invalidatePrimaryServeFeaturesCache = /* @__PURE__ */ __name(() => {
|
|
3034
|
+
}, "invalidatePrimaryServeFeaturesCache");
|
|
2886
3035
|
const workspaceService = runtime.createDaemonWorkspaceService({
|
|
2887
3036
|
boundWorkspace,
|
|
2888
3037
|
contextFilename: contextFilenameForInit ?? "QWEN.md",
|
|
2889
3038
|
statusProvider,
|
|
2890
3039
|
workspaceProvidersStatusProvider,
|
|
2891
3040
|
workspaceSkillsStatusProvider,
|
|
3041
|
+
voiceEnv: runtimeEffectiveEnv,
|
|
2892
3042
|
isChannelLive: /* @__PURE__ */ __name(() => bridge.isChannelLive(), "isChannelLive"),
|
|
2893
3043
|
persistDisabledTools: persistDisabledToolsFn,
|
|
3044
|
+
persistDisabledSkills: persistDisabledSkillsFn,
|
|
2894
3045
|
persistSetting: persistSettingFn,
|
|
2895
3046
|
persistSettings: persistSettingsFn,
|
|
2896
3047
|
preheatAcpChild: /* @__PURE__ */ __name(() => bridge.preheat(), "preheatAcpChild"),
|
|
@@ -2956,7 +3107,12 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
2956
3107
|
queryWorkspaceStatus: /* @__PURE__ */ __name((method, idle) => bridge.queryWorkspaceStatus(method, idle), "queryWorkspaceStatus"),
|
|
2957
3108
|
invokeWorkspaceCommand: /* @__PURE__ */ __name((method, params, invokeOpts) => bridge.invokeWorkspaceCommand(method, params, invokeOpts), "invokeWorkspaceCommand"),
|
|
2958
3109
|
refreshExtensionsForAllSessions: /* @__PURE__ */ __name(() => bridge.refreshExtensionsForAllSessions(), "refreshExtensionsForAllSessions"),
|
|
2959
|
-
publishWorkspaceEvent: /* @__PURE__ */ __name((event) =>
|
|
3110
|
+
publishWorkspaceEvent: /* @__PURE__ */ __name((event) => {
|
|
3111
|
+
if (event.type === "settings_changed" || event.type === "settings_reloaded") {
|
|
3112
|
+
invalidatePrimaryServeFeaturesCache();
|
|
3113
|
+
}
|
|
3114
|
+
bridge.publishWorkspaceEvent(event);
|
|
3115
|
+
}, "publishWorkspaceEvent")
|
|
2960
3116
|
});
|
|
2961
3117
|
const workspaceRuntimes = [
|
|
2962
3118
|
{
|
|
@@ -3118,9 +3274,12 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3118
3274
|
env: secondaryEnv.effectiveEnv
|
|
3119
3275
|
}),
|
|
3120
3276
|
workspaceSkillsStatusProvider: runtime.createWorkspaceSkillsStatusProvider(),
|
|
3277
|
+
voiceEnv: secondaryEnv.effectiveEnv,
|
|
3278
|
+
voiceSettingsScope: WORKSPACE_SETTING_SCOPE,
|
|
3121
3279
|
isChannelLive: /* @__PURE__ */ __name(() => secondaryBridge.isChannelLive(), "isChannelLive"),
|
|
3122
3280
|
preheatAcpChild: /* @__PURE__ */ __name(() => secondaryBridge.preheat(), "preheatAcpChild"),
|
|
3123
3281
|
persistDisabledTools: persistDisabledToolsFn,
|
|
3282
|
+
persistDisabledSkills: persistDisabledSkillsFn,
|
|
3124
3283
|
persistSetting: persistSettingFn,
|
|
3125
3284
|
persistSettings: persistSettingsFn,
|
|
3126
3285
|
reloadDaemonEnv: /* @__PURE__ */ __name((workspace) => withSettingsLock(workspace, async () => {
|
|
@@ -3190,6 +3349,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3190
3349
|
const workspaceRegistry = runtime.createWorkspaceRegistry(workspaceRuntimes, {
|
|
3191
3350
|
sessionOwnerIndex
|
|
3192
3351
|
});
|
|
3352
|
+
const workspaceVoiceCoordinator = new WorkspaceVoiceCoordinator();
|
|
3193
3353
|
core.registerDaemonGaugeCallbacks({
|
|
3194
3354
|
sessionCount: /* @__PURE__ */ __name(() => workspaceRegistry.list().reduce((sum, item) => sum + item.bridge.sessionCount, 0), "sessionCount"),
|
|
3195
3355
|
sseCount: /* @__PURE__ */ __name(() => runtime.getActiveSseCount(), "sseCount"),
|
|
@@ -3377,9 +3537,12 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3377
3537
|
env: wsEnv.effectiveEnv
|
|
3378
3538
|
}),
|
|
3379
3539
|
workspaceSkillsStatusProvider: runtime.createWorkspaceSkillsStatusProvider(),
|
|
3540
|
+
voiceEnv: wsEnv.effectiveEnv,
|
|
3541
|
+
voiceSettingsScope: WORKSPACE_SETTING_SCOPE,
|
|
3380
3542
|
isChannelLive: /* @__PURE__ */ __name(() => wsBridge.isChannelLive(), "isChannelLive"),
|
|
3381
3543
|
preheatAcpChild: /* @__PURE__ */ __name(() => wsBridge.preheat(), "preheatAcpChild"),
|
|
3382
3544
|
persistDisabledTools: persistDisabledToolsFn,
|
|
3545
|
+
persistDisabledSkills: persistDisabledSkillsFn,
|
|
3383
3546
|
persistSetting: persistSettingFn,
|
|
3384
3547
|
persistSettings: persistSettingsFn,
|
|
3385
3548
|
reloadDaemonEnv: /* @__PURE__ */ __name((workspace) => withSettingsLock(workspace, async () => {
|
|
@@ -3483,15 +3646,18 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3483
3646
|
beginDrain(runtimeToDrain) {
|
|
3484
3647
|
totalSessionAdmission.beginWorkspaceDrain(runtimeToDrain.workspaceCwd);
|
|
3485
3648
|
channelWorkerManager?.beginWorkspaceDrain(runtimeToDrain.workspaceCwd);
|
|
3649
|
+
workspaceVoiceCoordinator.beginWorkspaceDrain(runtimeToDrain);
|
|
3486
3650
|
},
|
|
3487
3651
|
cancelDrain(runtimeToDrain) {
|
|
3488
3652
|
channelWorkerManager?.cancelWorkspaceDrain(runtimeToDrain.workspaceCwd);
|
|
3489
3653
|
totalSessionAdmission.cancelWorkspaceDrain(runtimeToDrain.workspaceCwd);
|
|
3654
|
+
workspaceVoiceCoordinator.cancelWorkspaceDrain(runtimeToDrain);
|
|
3490
3655
|
},
|
|
3491
3656
|
completeDrain(runtimeToDrain) {
|
|
3492
3657
|
totalSessionAdmission.completeWorkspaceDrain(
|
|
3493
3658
|
runtimeToDrain.workspaceCwd
|
|
3494
3659
|
);
|
|
3660
|
+
workspaceVoiceCoordinator.completeWorkspaceDrain(runtimeToDrain);
|
|
3495
3661
|
},
|
|
3496
3662
|
getActivity(runtimeToDrain) {
|
|
3497
3663
|
return {
|
|
@@ -3500,13 +3666,18 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3500
3666
|
).inFlight,
|
|
3501
3667
|
channelWorkers: channelWorkerManager?.workspaceActivity(
|
|
3502
3668
|
runtimeToDrain.workspaceCwd
|
|
3503
|
-
) ?? 0
|
|
3669
|
+
) ?? 0,
|
|
3670
|
+
voiceSessions: workspaceVoiceCoordinator.getWorkspaceActivity(runtimeToDrain)
|
|
3504
3671
|
};
|
|
3505
3672
|
},
|
|
3506
3673
|
disposeRuntime(runtimeToDrain, reason = "workspace_removed") {
|
|
3507
3674
|
const existing = runtimeCleanupPromises.get(runtimeToDrain);
|
|
3508
3675
|
if (existing) return existing;
|
|
3509
3676
|
const cleanup = (async () => {
|
|
3677
|
+
await workspaceVoiceCoordinator.disposeRuntime(
|
|
3678
|
+
runtimeToDrain,
|
|
3679
|
+
reason
|
|
3680
|
+
);
|
|
3510
3681
|
const stopSubSessions = subSessionStoppersByWorkspace.get(
|
|
3511
3682
|
runtimeToDrain.workspaceCwd
|
|
3512
3683
|
);
|
|
@@ -3580,6 +3751,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3580
3751
|
createWorkspaceRuntime: createDynamicWorkspaceRuntime,
|
|
3581
3752
|
workspaceRegistrationStore,
|
|
3582
3753
|
workspaceRuntimeRemoval,
|
|
3754
|
+
voiceCoordinator: workspaceVoiceCoordinator,
|
|
3583
3755
|
bridge,
|
|
3584
3756
|
webShellDir,
|
|
3585
3757
|
boundWorkspace,
|
|
@@ -3636,6 +3808,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3636
3808
|
// so the WS provider and the child-answering bridge share one sender map.
|
|
3637
3809
|
clientMcpSenderRegistry,
|
|
3638
3810
|
persistDisabledTools: persistDisabledToolsFn,
|
|
3811
|
+
persistDisabledSkills: persistDisabledSkillsFn,
|
|
3639
3812
|
persistSetting: persistSettingFn,
|
|
3640
3813
|
persistSettings: persistSettingsFn,
|
|
3641
3814
|
sessionArtifactsPersistenceAvailable: sessionArtifactsPersistenceAvailableFromSettings(
|
|
@@ -3679,6 +3852,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3679
3852
|
}
|
|
3680
3853
|
), "installAuthProvider")
|
|
3681
3854
|
});
|
|
3855
|
+
invalidatePrimaryServeFeaturesCache = app2.locals.invalidateServeFeaturesCache ?? invalidatePrimaryServeFeaturesCache;
|
|
3682
3856
|
app2.locals.subSessionStoppers = subSessionStoppers;
|
|
3683
3857
|
subSessionStoppers.push(subSessionLauncher.stop);
|
|
3684
3858
|
subSessionStoppersByWorkspace.set(boundWorkspace, subSessionLauncher.stop);
|
|
@@ -3938,10 +4112,12 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
3938
4112
|
const failRuntimeStartup = /* @__PURE__ */ __name(async (err, bridgeForCleanup) => {
|
|
3939
4113
|
const error = err instanceof Error ? err : new Error(String(err));
|
|
3940
4114
|
if (runtimeStartupSettled) {
|
|
4115
|
+
disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
|
|
3941
4116
|
await shutdownBridgeAfterFailedStartup(bridgeForCleanup);
|
|
3942
4117
|
return;
|
|
3943
4118
|
}
|
|
3944
4119
|
runtimeStartupSettled = true;
|
|
4120
|
+
disposeRuntimeAppResources(runtimeApp ?? runtimeAppForCleanup);
|
|
3945
4121
|
runtimeApp = void 0;
|
|
3946
4122
|
clearRuntimeStartupTimer();
|
|
3947
4123
|
const message = error.message;
|
|
@@ -4166,6 +4342,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
4166
4342
|
clearRuntimeStartFallbackTimer();
|
|
4167
4343
|
runtimeStarting = buildRuntime().then(async (runtime) => {
|
|
4168
4344
|
if (runtimeStartupSettled) {
|
|
4345
|
+
disposeRuntimeAppResources(runtime.app);
|
|
4169
4346
|
await shutdownBridgeAfterFailedStartup(runtime.bridge);
|
|
4170
4347
|
return;
|
|
4171
4348
|
}
|
|
@@ -4327,39 +4504,7 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
4327
4504
|
if (workspaceManagementHandle !== initiallyMountedManagement) {
|
|
4328
4505
|
await workspaceManagementHandle?.sealAndWait?.();
|
|
4329
4506
|
}
|
|
4330
|
-
|
|
4331
|
-
stopScheduledTaskKeepalive?.();
|
|
4332
|
-
const stopWorkspaceGitState = appForCleanup?.locals?.["stopWorkspaceGitState"];
|
|
4333
|
-
stopWorkspaceGitState?.();
|
|
4334
|
-
const stoppers = appForCleanup?.locals?.["subSessionStoppers"];
|
|
4335
|
-
if (stoppers) {
|
|
4336
|
-
for (const stop of stoppers) stop();
|
|
4337
|
-
}
|
|
4338
|
-
const deviceFlowRegistry = appForCleanup ? getDeviceFlowRegistry(appForCleanup) : void 0;
|
|
4339
|
-
if (deviceFlowRegistry) {
|
|
4340
|
-
try {
|
|
4341
|
-
deviceFlowRegistry.dispose();
|
|
4342
|
-
} catch (err) {
|
|
4343
|
-
daemonLog.warn(
|
|
4344
|
-
`device-flow registry dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
4345
|
-
);
|
|
4346
|
-
}
|
|
4347
|
-
}
|
|
4348
|
-
const acpHandle = appForCleanup?.locals?.["acpHandle"];
|
|
4349
|
-
if (acpHandle?.dispose) {
|
|
4350
|
-
try {
|
|
4351
|
-
acpHandle.dispose();
|
|
4352
|
-
} catch (err) {
|
|
4353
|
-
daemonLog.warn(
|
|
4354
|
-
`ACP handle dispose error: ${err instanceof Error ? err.message : String(err)}`
|
|
4355
|
-
);
|
|
4356
|
-
}
|
|
4357
|
-
}
|
|
4358
|
-
const rl = appForCleanup ? getRateLimiter(appForCleanup) : void 0;
|
|
4359
|
-
if (rl) {
|
|
4360
|
-
rl.setDraining(true);
|
|
4361
|
-
rl.dispose();
|
|
4362
|
-
}
|
|
4507
|
+
disposeRuntimeAppResources(appForCleanup);
|
|
4363
4508
|
disposeDaemonEventLoopMonitor();
|
|
4364
4509
|
if (channelWorkerManager) {
|
|
4365
4510
|
await channelWorkerManager.shutdown().catch((err) => {
|
|
@@ -4379,18 +4524,22 @@ async function runQwenServe(optsIn, deps = {}) {
|
|
|
4379
4524
|
const managedRuntimes = workspaceRegistry.listManaged();
|
|
4380
4525
|
for (const workspaceRuntime of managedRuntimes) {
|
|
4381
4526
|
managedRuntimeBridges.add(workspaceRuntime.bridge);
|
|
4382
|
-
await runtimeRemoval.disposeRuntime(workspaceRuntime, "daemon_shutdown").catch((err) => {
|
|
4383
|
-
daemonLog.error(
|
|
4384
|
-
"workspace runtime shutdown error",
|
|
4385
|
-
err instanceof Error ? err : null
|
|
4386
|
-
);
|
|
4387
|
-
bridgeShutdownError = err instanceof Error ? err : new Error(String(err));
|
|
4388
|
-
try {
|
|
4389
|
-
workspaceRuntime.bridge.killAllSync();
|
|
4390
|
-
} catch {
|
|
4391
|
-
}
|
|
4392
|
-
});
|
|
4393
4527
|
}
|
|
4528
|
+
await Promise.all(
|
|
4529
|
+
managedRuntimes.map(
|
|
4530
|
+
(workspaceRuntime) => runtimeRemoval.disposeRuntime(workspaceRuntime, "daemon_shutdown").catch((err) => {
|
|
4531
|
+
daemonLog.error(
|
|
4532
|
+
"workspace runtime shutdown error",
|
|
4533
|
+
err instanceof Error ? err : null
|
|
4534
|
+
);
|
|
4535
|
+
bridgeShutdownError = err instanceof Error ? err : new Error(String(err));
|
|
4536
|
+
try {
|
|
4537
|
+
workspaceRuntime.bridge.killAllSync();
|
|
4538
|
+
} catch {
|
|
4539
|
+
}
|
|
4540
|
+
})
|
|
4541
|
+
)
|
|
4542
|
+
);
|
|
4394
4543
|
}
|
|
4395
4544
|
for (const bridgeForShutdown of getRuntimeBridgesForCleanup()) {
|
|
4396
4545
|
if (managedRuntimeBridges.has(bridgeForShutdown)) continue;
|
|
@@ -13,56 +13,55 @@ import {
|
|
|
13
13
|
resolveExtensionChannelEntrySpecifier,
|
|
14
14
|
selectFirstModel,
|
|
15
15
|
sessionsPath
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-FEOBU3FA.js";
|
|
17
|
+
import "./chunk-HRUGYOJN.js";
|
|
18
18
|
import "./chunk-57OAHC2Y.js";
|
|
19
|
-
import "./chunk-
|
|
20
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-ZP4ZZJJG.js";
|
|
20
|
+
import "./chunk-4QZADKJS.js";
|
|
21
21
|
import "./chunk-V6WHFGST.js";
|
|
22
|
-
import "./chunk-
|
|
22
|
+
import "./chunk-AU4R7ACM.js";
|
|
23
23
|
import "./chunk-UDXSXLER.js";
|
|
24
|
-
import "./chunk-
|
|
24
|
+
import "./chunk-7IDCQ35Q.js";
|
|
25
25
|
import "./chunk-RKUWKYED.js";
|
|
26
|
-
import "./chunk-
|
|
27
|
-
import "./chunk-
|
|
26
|
+
import "./chunk-AAUZBE5Y.js";
|
|
27
|
+
import "./chunk-A7W4GQRW.js";
|
|
28
28
|
import "./chunk-GOXKNSDZ.js";
|
|
29
29
|
import "./chunk-IDS7MSUP.js";
|
|
30
30
|
import "./chunk-QRUIS3DN.js";
|
|
31
|
-
import "./chunk-
|
|
31
|
+
import "./chunk-HJCVNZLQ.js";
|
|
32
32
|
import "./chunk-ALGGS7UH.js";
|
|
33
33
|
import "./chunk-MR3PXB6E.js";
|
|
34
34
|
import "./chunk-YUZI3WAC.js";
|
|
35
|
-
import "./chunk-
|
|
36
|
-
import "./chunk-CU3L64TP.js";
|
|
35
|
+
import "./chunk-HJUDVNCO.js";
|
|
37
36
|
import "./chunk-H6XPXXMH.js";
|
|
38
37
|
import "./chunk-5M6IDOMF.js";
|
|
39
|
-
import "./chunk-
|
|
38
|
+
import "./chunk-BLPMRN4B.js";
|
|
40
39
|
import "./chunk-RCEEXIOO.js";
|
|
41
40
|
import "./chunk-KKRTYONM.js";
|
|
42
41
|
import "./chunk-TV6K2FB4.js";
|
|
43
42
|
import "./chunk-E2UVIFI2.js";
|
|
44
|
-
import "./chunk-
|
|
43
|
+
import "./chunk-7STBROEV.js";
|
|
45
44
|
import "./chunk-XU457J4V.js";
|
|
46
45
|
import "./chunk-VDDGDZMA.js";
|
|
47
46
|
import "./chunk-SPJQO2CE.js";
|
|
48
47
|
import "./chunk-SZRN75WQ.js";
|
|
49
48
|
import "./chunk-HTO4JFDZ.js";
|
|
50
49
|
import "./chunk-CPBF7KYF.js";
|
|
51
|
-
import "./chunk-
|
|
50
|
+
import "./chunk-F333XEAU.js";
|
|
52
51
|
import "./chunk-6AM5D4ME.js";
|
|
53
52
|
import "./chunk-2Z5UX4KI.js";
|
|
54
53
|
import "./chunk-ARKANCNX.js";
|
|
55
54
|
import "./chunk-L5U3ELZX.js";
|
|
56
55
|
import "./chunk-TYLOFD2U.js";
|
|
57
|
-
import "./chunk-
|
|
56
|
+
import "./chunk-HWTL6MPR.js";
|
|
58
57
|
import "./chunk-4WKAA4KS.js";
|
|
59
58
|
import "./chunk-CR3C7WXL.js";
|
|
60
59
|
import "./chunk-CARU2RR2.js";
|
|
61
60
|
import "./chunk-VGC4I5JJ.js";
|
|
62
61
|
import "./chunk-FBU7WRZI.js";
|
|
63
62
|
import "./chunk-Y66VOBRP.js";
|
|
64
|
-
import "./chunk-
|
|
65
|
-
import "./chunk-
|
|
63
|
+
import "./chunk-WTNZ6DXB.js";
|
|
64
|
+
import "./chunk-JGUT3LWZ.js";
|
|
66
65
|
import "./chunk-OKAIGAYW.js";
|
|
67
66
|
import "./chunk-ZPAHLFZU.js";
|
|
68
67
|
import "./chunk-JESCGQM3.js";
|