@qwen-code/qwen-code 0.21.10 → 0.21.11
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/coordinate/SKILL.md +52 -0
- package/bundled/qc-helper/docs/configuration/model-providers.md +10 -8
- package/bundled/qc-helper/docs/extension/_meta.ts +1 -0
- package/bundled/qc-helper/docs/extension/agent-plugins.md +50 -0
- package/bundled/qc-helper/docs/extension/extension-releasing.md +3 -3
- package/bundled/qc-helper/docs/extension/introduction.md +17 -3
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/arena.md +4 -3
- package/bundled/qc-helper/docs/features/commands.md +7 -6
- package/bundled/qc-helper/docs/features/dual-output.md +5 -0
- package/bundled/qc-helper/docs/features/headless.md +8 -0
- package/bundled/qc-helper/docs/features/multi-agent-coordination.md +30 -0
- package/bundled/qc-helper/docs/qwen-serve.md +7 -7
- package/bundled/review/SKILL.md +17 -7
- package/chunks/{MaxSizedBox-FKXYULMW.js → MaxSizedBox-G7QPSZTF.js} +45 -44
- package/chunks/{StandaloneSessionPicker-OQS3M7AY.js → StandaloneSessionPicker-3CTEPV7S.js} +65 -64
- package/chunks/{acp-startup-profiler-VNTFWYAC.js → acp-startup-profiler-JMJBZDVO.js} +2 -2
- package/chunks/{acpAgent-AGS6HLQQ.js → acpAgent-43JURWOW.js} +1107 -285
- package/chunks/{agent-4NCVO27U.js → agent-MIY4LJJJ.js} +42 -41
- package/chunks/agent-headless-LWVA6GR5.js +87 -0
- package/chunks/{anthropicContentGenerator-D3Y4RFT4.js → anthropicContentGenerator-7HEP7Q5D.js} +8 -8
- package/chunks/{artifact-tool-N652YE4L.js → artifact-tool-M7UAJ5NT.js} +2 -2
- package/chunks/{askUserQuestion-ONW74PKJ.js → askUserQuestion-7G3LI3IZ.js} +2 -2
- package/chunks/{bridge-FHINXZMN.js → bridge-PTTJEBNP.js} +47 -46
- package/chunks/{ca-ZLKAB4K3.js → ca-4CQ6MYNQ.js} +2 -1
- package/chunks/{channel-management-service-PHELKOW2.js → channel-management-service-PQ6SU56M.js} +6 -6
- package/chunks/channel-settings-store-IKK34GMH.js +102 -0
- package/chunks/{channel-worker-group-WQP4RCDO.js → channel-worker-group-WBRE33ZV.js} +8 -7
- package/chunks/{channel-worker-manager-MRDFAKIM.js → channel-worker-manager-V4LYVTPH.js} +8 -7
- package/chunks/{channel-worker-supervisor-IVSDIMI4.js → channel-worker-supervisor-YDAGW2RP.js} +6 -5
- package/chunks/{chunk-2PLNY5TN.js → chunk-23GFHEM3.js} +4 -4
- package/chunks/{chunk-IIJEYBNH.js → chunk-25OFRBH2.js} +188 -58
- package/chunks/{chunk-F24A2JBM.js → chunk-2AAFGCWP.js} +690 -151
- package/chunks/{chunk-J6SZID63.js → chunk-2AZMF6G5.js} +2 -2
- package/chunks/{chunk-6LP743KE.js → chunk-2R2HYSUQ.js} +21 -102
- package/chunks/{chunk-DZUO626D.js → chunk-2XZWO53E.js} +3 -3
- package/chunks/{chunk-VKJ4KTPJ.js → chunk-3GCU5O2E.js} +1 -1
- package/chunks/{chunk-AQAJJMRR.js → chunk-3LHYTQ2R.js} +1 -1
- package/chunks/{chunk-QJMOAMXT.js → chunk-3SOTXJNO.js} +8 -8
- package/chunks/{chunk-URKIBIFC.js → chunk-45HPDU3F.js} +3 -3
- package/chunks/{chunk-OWMAZHIX.js → chunk-47FQVRCO.js} +1 -1
- package/chunks/{chunk-Z4JX4NSH.js → chunk-4C4QSXE3.js} +23 -23
- package/chunks/{chunk-IRZ2ZH72.js → chunk-4EX3DBFH.js} +4 -4
- package/chunks/{chunk-MFDYOYZZ.js → chunk-4MHDNGAV.js} +25 -2
- package/chunks/{chunk-ABVRJU3D.js → chunk-4PFKN7CQ.js} +7 -7
- package/chunks/{chunk-HV76SFIA.js → chunk-5HBFERG5.js} +3 -3
- package/chunks/{chunk-WAUGQKUU.js → chunk-6LYDH7VT.js} +9 -5
- package/chunks/{chunk-S6HYI3MF.js → chunk-6S52N6PG.js} +2 -2
- package/chunks/{chunk-FVKHVJZQ.js → chunk-732MOPEM.js} +1 -1
- package/chunks/{chunk-OCSFNUU4.js → chunk-7QE3QFU3.js} +8 -8
- package/chunks/{chunk-WCG5O7IP.js → chunk-7SUQZ7QH.js} +2 -2
- package/chunks/{chunk-QG3FFJYU.js → chunk-AAOONL5N.js} +1 -1
- package/chunks/{chunk-VSFKIRRW.js → chunk-AKLY5M2C.js} +4 -4
- package/chunks/{chunk-UVX4Y6IN.js → chunk-AQHNAA7E.js} +1 -1
- package/chunks/{chunk-IBUGFUXC.js → chunk-BIXG46YI.js} +12 -12
- package/chunks/{chunk-4TRQPFDP.js → chunk-BJKREW56.js} +6 -8
- package/chunks/{chunk-D27I6YJT.js → chunk-BNRNVMOT.js} +27 -18
- package/chunks/{chunk-IWTMYQ32.js → chunk-BR6TUEKJ.js} +9 -8
- package/chunks/{chunk-Q3JQ7OSU.js → chunk-BTYS2JAY.js} +1 -1
- package/chunks/{chunk-H6XPXXMH.js → chunk-CQ35AJ4Z.js} +252 -254
- package/chunks/{chunk-COBO5EBO.js → chunk-CTQE2NB2.js} +1 -1
- package/chunks/{chunk-P3BJLFSZ.js → chunk-DEKY5Y7V.js} +3 -3
- package/chunks/{chunk-Y3OVRWRY.js → chunk-DM4C3OX5.js} +1 -1
- package/chunks/{chunk-YWPSGJFI.js → chunk-DSKLWQHC.js} +2 -2
- package/chunks/{chunk-KKBPOU75.js → chunk-EFIMD5VA.js} +1 -1
- package/chunks/{chunk-CTJLZLB5.js → chunk-EN2J77G7.js} +1 -1
- package/chunks/{chunk-67EWJE77.js → chunk-ENEEQMGM.js} +1 -1
- package/chunks/{chunk-AEL7KN2O.js → chunk-EOBM4T2Z.js} +1 -1
- package/chunks/{chunk-NDU63YLI.js → chunk-ESVSQKPY.js} +4 -4
- package/chunks/{chunk-CPG6P4GG.js → chunk-EYS3GGM3.js} +1 -1
- package/chunks/{chunk-4PYCZH2V.js → chunk-EYW54TBD.js} +3 -3
- package/chunks/{chunk-EBZ6BJTF.js → chunk-F4T5J34H.js} +1 -1
- package/chunks/{chunk-FOGU3LJX.js → chunk-F6AOBFUN.js} +1 -1
- package/chunks/{chunk-ZBVS26BY.js → chunk-FPGTNKCP.js} +7 -5
- package/chunks/{chunk-YF5MALI4.js → chunk-G64M7R2Y.js} +5 -5
- package/chunks/{chunk-EI3HZX6C.js → chunk-GJJQV4PY.js} +1 -1
- package/chunks/{chunk-CKASRHZI.js → chunk-GLWWPFTW.js} +1 -1
- package/chunks/{chunk-GM463R2B.js → chunk-GZGDJ4E6.js} +1 -1
- package/chunks/{chunk-W5UC37EE.js → chunk-HHGQGTJQ.js} +2 -0
- package/chunks/chunk-HHJLM3WQ.js +41 -0
- package/chunks/{chunk-ZRBMO3C7.js → chunk-HMCSRTDY.js} +1 -1
- package/chunks/{chunk-L2AFWWJE.js → chunk-HUE2M6VI.js} +50 -5
- package/chunks/{chunk-LLCWZQCU.js → chunk-HZV75ET2.js} +3 -3
- package/chunks/{chunk-6ZRFAKXK.js → chunk-IEP44U2R.js} +1 -1
- package/chunks/{chunk-AOHJKPKL.js → chunk-IQFYO5BF.js} +1 -1
- package/chunks/{chunk-UDXSXLER.js → chunk-IW6RQPQB.js} +14 -4
- package/chunks/{chunk-XCWO3SMQ.js → chunk-IX7CFQGA.js} +3 -3
- package/chunks/{chunk-O3EU6GMH.js → chunk-J4EVBAB3.js} +27 -4
- package/chunks/{chunk-ZZCWJWTF.js → chunk-JHMFKJEP.js} +1 -1
- package/chunks/{chunk-XVHYA33G.js → chunk-JKEO6OQY.js} +4 -4
- package/chunks/{chunk-6Q5ABMTU.js → chunk-JLYYGKRN.js} +23 -19
- package/chunks/{chunk-KID7K6H2.js → chunk-JOXXPM3X.js} +6 -6
- package/chunks/{chunk-E2FPSSKP.js → chunk-JPA7IDTE.js} +57 -13
- package/chunks/{chunk-OQTXYMKW.js → chunk-JS4Q5NG5.js} +3 -3
- package/chunks/{chunk-PBRVUF5B.js → chunk-K7JW6V5O.js} +1 -1
- package/chunks/{chunk-3P2LV43B.js → chunk-KCCODSAA.js} +3 -3
- package/chunks/{chunk-DREZZAZM.js → chunk-KCDQGIHS.js} +13 -5
- package/chunks/{chunk-UEOKWYGY.js → chunk-KFCTC5IJ.js} +11 -11
- package/chunks/{chunk-M6HMMKVG.js → chunk-KPVVWKF3.js} +1 -1
- package/chunks/{chunk-MVUQRLOH.js → chunk-KT4OWAAZ.js} +3 -3
- package/chunks/{chunk-W4RQUHY3.js → chunk-L2GTEEEU.js} +142 -23
- package/chunks/{chunk-Q3AL4JQ3.js → chunk-LA3FF7RO.js} +2 -2
- package/chunks/{chunk-DX3RGJMS.js → chunk-LT532KF4.js} +71 -12
- package/chunks/{chunk-JT7XS4YW.js → chunk-M2NMFAFR.js} +1 -1
- package/chunks/{chunk-YTFDX4PR.js → chunk-M6NDLY2T.js} +1 -1
- package/chunks/{chunk-MIKXJYZB.js → chunk-MCHGE3EC.js} +305 -291
- package/chunks/{chunk-Y4R47ZUH.js → chunk-MDQSCFAZ.js} +7 -7
- package/chunks/{chunk-EKPKKXY2.js → chunk-MLZCPGDX.js} +1 -1
- package/chunks/{chunk-OIVKILPI.js → chunk-MPBRV3UU.js} +3 -0
- package/chunks/{chunk-VFMASYQA.js → chunk-MS7GNABG.js} +3 -0
- package/chunks/{chunk-2FRY5CRX.js → chunk-MWZYNOCG.js} +3 -3
- package/chunks/{chunk-ONSZH6VM.js → chunk-MZQ4I4AP.js} +2 -2
- package/chunks/{chunk-UMD7WQTR.js → chunk-N3ZWGKXN.js} +10 -8
- package/chunks/{chunk-7MH4J33A.js → chunk-N7NBMAMW.js} +2 -2
- package/chunks/{chunk-EUNWC2VS.js → chunk-NC4O6UE6.js} +2 -2
- package/chunks/{chunk-A7XMDZRI.js → chunk-NFSSQDB5.js} +5 -5
- package/chunks/{chunk-DCZEPFB4.js → chunk-NM3E6GGL.js} +3 -3
- package/chunks/{chunk-26CXSA6V.js → chunk-NQPYPDOY.js} +2 -2
- package/chunks/{chunk-HUWENAHO.js → chunk-NWPO6I7V.js} +1 -1
- package/chunks/{chunk-SR7RZ4MS.js → chunk-O4BBDP2G.js} +2 -2
- package/chunks/{chunk-ECWR5LQR.js → chunk-OC5SKSNX.js} +3 -3
- package/chunks/{chunk-VWKER4ZH.js → chunk-OGQERNHD.js} +3 -3
- package/chunks/{chunk-DA4HRSBW.js → chunk-OPBATTFQ.js} +1 -1
- package/chunks/{chunk-OONWZLFK.js → chunk-P7KCJGBR.js} +4 -4
- package/chunks/{chunk-OJUQF2PL.js → chunk-PBYVS6QT.js} +3 -3
- package/chunks/{chunk-VNNWAZSI.js → chunk-QG2IEE2E.js} +3 -3
- package/chunks/{chunk-KZ22NXBY.js → chunk-QGZN4RYB.js} +4 -4
- package/chunks/{chunk-2UUMVNYT.js → chunk-QTI7SRXI.js} +3 -3
- package/chunks/{chunk-B2GJNDTV.js → chunk-QUESTNOP.js} +1 -1
- package/chunks/{chunk-AAE6SR4Q.js → chunk-RUKNJEJO.js} +1 -1
- package/chunks/{chunk-NV65ZUVM.js → chunk-RUVZZKDH.js} +1 -1
- package/chunks/{chunk-QUI267ZP.js → chunk-SAQHDAUJ.js} +42 -8
- package/chunks/{chunk-4MKXUHXY.js → chunk-SUTP6CZA.js} +5 -5
- package/chunks/{chunk-UBX6NL47.js → chunk-T4576UW4.js} +3 -3
- package/chunks/{chunk-TZEZYNYD.js → chunk-T4FTABSW.js} +1 -1
- package/chunks/{chunk-SEZ556DZ.js → chunk-T6W4KACQ.js} +1 -1
- package/chunks/chunk-TKAEODJR.js +1279 -0
- package/chunks/{chunk-NV3F44FL.js → chunk-TNQLAI6I.js} +2 -2
- package/chunks/{chunk-F6WDTQ3M.js → chunk-TNS2M7VL.js} +5 -5
- package/chunks/{chunk-7GTMV7UE.js → chunk-TTB6GBJ6.js} +8323 -2227
- package/chunks/{chunk-YGT2AUJ7.js → chunk-U2JLICUY.js} +33 -16
- package/chunks/{chunk-NEOXOWYH.js → chunk-U7QUDFPD.js} +7 -7
- package/chunks/{chunk-QGNOFE5E.js → chunk-UEUE6LJX.js} +1 -1
- package/chunks/{chunk-EI3NWELG.js → chunk-UIZGNLBP.js} +4427 -3806
- package/chunks/{chunk-ZJ4W6SUY.js → chunk-UM57UTTV.js} +3 -3
- package/chunks/{chunk-EQL65XGA.js → chunk-V3LXMASR.js} +47 -21
- package/chunks/{chunk-LHEC5V6G.js → chunk-VRWOMUZM.js} +2 -2
- package/chunks/{chunk-5MZCSWI4.js → chunk-W2ITCESM.js} +176 -477
- package/chunks/{chunk-KONVMRK7.js → chunk-W2PNY24B.js} +1 -1
- package/chunks/{chunk-4WL6SY4F.js → chunk-X5GLCWPX.js} +1 -1
- package/chunks/{chunk-BSI645OU.js → chunk-XBLYC4MI.js} +3 -3
- package/chunks/{chunk-GNPNYXJB.js → chunk-XLQS3VI6.js} +2 -2
- package/chunks/{chunk-TRRF5BSP.js → chunk-XT6TGJFD.js} +1 -1
- package/chunks/{chunk-PYQADEFD.js → chunk-XTH2OMDS.js} +1 -1
- package/chunks/{chunk-47PEPJO7.js → chunk-XUMBOJC2.js} +3 -3
- package/chunks/{chunk-GWVUR3QZ.js → chunk-YIKMBYMT.js} +3 -3
- package/chunks/{chunk-WOJZWRAZ.js → chunk-YRLW2MSX.js} +1 -1
- package/chunks/{chunk-NRLFZWCT.js → chunk-YVVIFFU4.js} +3 -3
- package/chunks/chunk-Z7B6SRPM.js +32 -0
- package/chunks/{chunk-IA7TGCN2.js → chunk-ZV4XVYL3.js} +4 -4
- package/chunks/{chunk-PJRW65JO.js → chunk-ZWPWQEF5.js} +1 -1
- package/chunks/{computer-use-WQFK33Z3.js → computer-use-7TIKEXBX.js} +42 -41
- package/chunks/{config-utils-ULCSRMWD.js → config-utils-6MVJ54TY.js} +6 -6
- package/chunks/{contextCommand-7EOZND7C.js → contextCommand-5QKI7MRY.js} +44 -43
- package/chunks/{core-runtime-FGMQRM6E.js → core-runtime-USS7ZF3H.js} +42 -41
- package/chunks/{create-sub-session-QIDZUOPU.js → create-sub-session-Y4WYDZGC.js} +2 -2
- package/chunks/{create-sub-session-QM2K5HLZ.js → create-sub-session-ZD2F3BH2.js} +42 -41
- package/chunks/{cron-create-VONA5JYY.js → cron-create-ZOVA3CC2.js} +4 -4
- package/chunks/{cron-delete-5JXSP2MI.js → cron-delete-7Z3H4LJY.js} +4 -4
- package/chunks/{cron-list-KE4F2CIR.js → cron-list-UHGX3IQG.js} +4 -4
- package/chunks/{daemon-GWD7BT6E.js → daemon-Y3NOHFKQ.js} +38 -7
- package/chunks/daemon-status-provider-PMP4J7BC.js +103 -0
- package/chunks/daemon-trust-policy-2252VKXI.js +99 -0
- package/chunks/{daemon-trust-policy-monitor-6UKEABN5.js → daemon-trust-policy-monitor-OSGGKJXT.js} +49 -48
- package/chunks/{de-LIW4XVLN.js → de-UBEBKG6V.js} +2 -1
- package/chunks/{deferred-core-runtime-67GJXHXS.js → deferred-core-runtime-3VD4V6YZ.js} +42 -41
- package/chunks/{display-image-NQRSIBXM.js → display-image-ZE3GZNIK.js} +4 -4
- package/chunks/{dist-Z3CS4OVP.js → dist-AVUYBK7L.js} +11 -5
- package/chunks/{dist-6BMOAE3Z.js → dist-BNWP6IZL.js} +4 -4
- package/chunks/{dist-3NTTUAHT.js → dist-EFJILGIS.js} +3 -3
- package/chunks/{dist-EZE3V3Q7.js → dist-MAIUUIWN.js} +3 -3
- package/chunks/{dist-B2CGTW6T.js → dist-NPS52B2V.js} +3 -3
- package/chunks/{dist-J47AXBZC.js → dist-PKSRQAR2.js} +3 -3
- package/chunks/{dist-OTUO3AS2.js → dist-Q2WJ2IZU.js} +13 -5
- package/chunks/{dist-EWW3J4HQ.js → dist-ZWDH5HLS.js} +3 -3
- package/chunks/{earlyInputCapture-IWMYR6OB.js → earlyInputCapture-ER4HGLJN.js} +43 -42
- package/chunks/{edit-ZFGROCAF.js → edit-B3MT7O53.js} +42 -41
- package/chunks/{en-SY5GTIGX.js → en-X6YV7GME.js} +2 -1
- package/chunks/{enter-worktree-TZZZCDM5.js → enter-worktree-WVIYVSDJ.js} +42 -41
- package/chunks/{enterPlanMode-U77BI3R6.js → enterPlanMode-DDCIM6HA.js} +42 -41
- package/chunks/{environment-HC37DS2I.js → environment-LITGMOUP.js} +45 -44
- package/chunks/{errors-6AG54JPD.js → errors-E5CIOR2I.js} +44 -43
- package/chunks/{exit-worktree-UYYWFPNK.js → exit-worktree-NQ2A6URE.js} +42 -41
- package/chunks/exitPlanMode-YXSWN4D3.js +85 -0
- package/chunks/{fast-path-F5FSZ3O7.js → fast-path-PH3DBS6X.js} +3 -3
- package/chunks/{fast-path-settings-RPAVBD7P.js → fast-path-settings-LNOFM2YP.js} +2 -2
- package/chunks/{fr-RQFO7U4P.js → fr-VENTC2BS.js} +2 -1
- package/chunks/{gemini-NKQHYM36.js → gemini-4YPO4ADY.js} +88 -87
- package/chunks/{geminiContentGenerator-HCWZOUX3.js → geminiContentGenerator-GMSVVXOU.js} +6 -6
- package/chunks/{glob-3PDXKBAO.js → glob-3Y3VHLM2.js} +42 -41
- package/chunks/{goal-tools-SWNB6GP4.js → goal-tools-JDK2SNMV.js} +4 -4
- package/chunks/{grep-5HZKZYVD.js → grep-VUHUDZYG.js} +42 -41
- package/chunks/handleAutoUpdate-OBFFPWSJ.js +94 -0
- package/chunks/{i18n-Q27KKNDL.js → i18n-4PJA5KKU.js} +43 -42
- package/chunks/{image-gen-2Z2RJ6W7.js → image-gen-4IFV4HES.js} +10 -10
- package/chunks/initializer-ZTY3VSWL.js +100 -0
- package/chunks/{installationInfo-XXB75T7O.js → installationInfo-6USRNCD2.js} +43 -42
- package/chunks/{ja-KOZKHJHZ.js → ja-QHT4EQTO.js} +2 -1
- package/chunks/{keychain-token-storage-TVAMTNP7.js → keychain-token-storage-JTWUYFU7.js} +2 -2
- package/chunks/list-U2ZDKYWN.js +103 -0
- package/chunks/{list-agents-Z4WABFDZ.js → list-agents-4GQ2XNEU.js} +2 -2
- package/chunks/loadedSettingsAdapter-WW4HIVLO.js +97 -0
- package/chunks/{loggingContentGenerator-6NTFBM7Q.js → loggingContentGenerator-XXG6YWUE.js} +46 -27
- package/chunks/{loop-wakeup-UZ5RL5Y2.js → loop-wakeup-HOQI3K5D.js} +5 -5
- package/chunks/{ls-TVHDGIES.js → ls-O4VBQRG7.js} +4 -4
- package/chunks/{lsp-CVN6OQPI.js → lsp-APQJ5ZEZ.js} +2 -2
- package/chunks/{managed-npm-update-SPHYQUWZ.js → managed-npm-update-7GM2LPLL.js} +43 -42
- package/chunks/mcp-7KZW2T5P.js +97 -0
- package/chunks/{monitor-ZBBPAA54.js → monitor-RQROQHLD.js} +42 -41
- package/chunks/nonInteractiveCli-U7JNJGS6.js +163 -0
- package/chunks/{notebook-edit-5W3FW7Z2.js → notebook-edit-XQA6YCH2.js} +42 -41
- package/chunks/{openaiContentGenerator-TQANPEVZ.js → openaiContentGenerator-BZW2IB42.js} +29 -29
- package/chunks/{pidfile-EQOBLH4E.js → pidfile-NX5VZ3IK.js} +43 -42
- package/chunks/{processUtils-7XQG7EHS.js → processUtils-M635AD23.js} +2 -2
- package/chunks/{pt-U6AOCTMF.js → pt-VL3I5RNY.js} +2 -1
- package/chunks/{qwenContentGenerator-BKCPHHXU.js → qwenContentGenerator-KHJ73E2C.js} +48 -48
- package/chunks/{qwenOAuth2-BJ6PQKE6.js → qwenOAuth2-QMK25XO7.js} +9 -9
- package/chunks/read-file-6LKIKKXD.js +32 -0
- package/chunks/{read-mcp-resource-PZ4ZF6YL.js → read-mcp-resource-TJSJRH4F.js} +2 -2
- package/chunks/{record-artifact-P4HFMS7X.js → record-artifact-FXF5LHPE.js} +3 -3
- package/chunks/{resumeHistoryUtils-6N6XGJJW.js → resumeHistoryUtils-RR2KEVH5.js} +49 -48
- package/chunks/ripGrep-CF2WRBYV.js +85 -0
- package/chunks/{ru-CMX4UMYP.js → ru-4RCKL4PY.js} +2 -1
- package/chunks/{run-qwen-serve-BCKBCAMX.js → run-qwen-serve-L5TF57J4.js} +61 -50
- package/chunks/{runtime-E2437YKL.js → runtime-3RE3BPR4.js} +55 -54
- package/chunks/{scheduler-K3D5Z655.js → scheduler-LXQZAMYT.js} +44 -43
- package/chunks/{sdk-exporters-http-XVTZQRCE.js → sdk-exporters-http-7SYSCGEO.js} +3 -3
- package/chunks/{sdk-impl-7W7AKCS4.js → sdk-impl-VZI6M6EH.js} +6 -6
- package/chunks/{send-message-CAMSLG2L.js → send-message-RBYLV5NY.js} +6 -6
- package/chunks/{serve-IH4XR5IL.js → serve-5D4S7GIA.js} +49 -48
- package/chunks/{server-UD6INW7J.js → server-ILZB6TTC.js} +403 -178
- package/chunks/{session-GR4ZEVW4.js → session-SXCZITZ4.js} +114 -94
- package/chunks/{settings-5O24D3OJ.js → settings-4RQB3OVF.js} +48 -47
- package/chunks/{shell-UTLWLG5G.js → shell-FCTR3OI2.js} +42 -41
- package/chunks/{skill-QQAZL4VO.js → skill-IAKHPD5H.js} +19 -19
- package/chunks/{skill-settings-P3YHJVBZ.js → skill-settings-SOR23NOP.js} +48 -47
- package/chunks/spawnChannel-I6VAWYQJ.js +98 -0
- package/chunks/{standalone-update-QP742MGP.js → standalone-update-5NN3MTYH.js} +44 -43
- package/chunks/{startInteractiveUI-YCS6AEPN.js → startInteractiveUI-OYGL3NZJ.js} +590 -329
- package/chunks/{syntheticOutput-PEBJQYJV.js → syntheticOutput-D3Z64LJC.js} +3 -3
- package/chunks/{task-create-5NWCQSJF.js → task-create-URFZ5EUX.js} +10 -10
- package/chunks/{task-list-53265TRZ.js → task-list-6JDFMPUW.js} +5 -5
- package/chunks/{task-stop-FPCOIRYX.js → task-stop-HHUGCD25.js} +2 -2
- package/chunks/{task-update-5HN577LS.js → task-update-LCJM3EYG.js} +10 -10
- package/chunks/{team-create-WFH7OCDQ.js → team-create-J4JP6AXN.js} +44 -43
- package/chunks/{team-delete-MMQB4OSC.js → team-delete-PZGGBQLM.js} +5 -5
- package/chunks/{team-plan-approval-EGTT53MV.js → team-plan-approval-7BEAIR2H.js} +42 -41
- package/chunks/{terminal-image-renderer-BWRESAQ7.js → terminal-image-renderer-SGGTG5LN.js} +44 -43
- package/chunks/theme-manager-67TSB7LH.js +89 -0
- package/chunks/{todoWrite-JGV6VLOX.js → todoWrite-WINAZSZI.js} +4 -4
- package/chunks/{tool-search-TI5PTIBF.js → tool-search-XPOFDWOX.js} +19 -19
- package/chunks/{total-session-admission-66UDSOHO.js → total-session-admission-SZJFAM25.js} +47 -46
- package/chunks/{trustedFolders-4KYHA4IG.js → trustedFolders-44NTYYV4.js} +43 -42
- package/chunks/{update-relaunch-WB6LGIF2.js → update-relaunch-K33Q3WEH.js} +5 -5
- package/chunks/{updateCheck-LOS5GYFC.js → updateCheck-VBRNPLS4.js} +45 -44
- package/chunks/{useAutoAcceptIndicator-MHAPY52L.js → useAutoAcceptIndicator-AUNRB5S7.js} +52 -51
- package/chunks/{validateNonInterActiveAuth-QV22HNQU.js → validateNonInterActiveAuth-WTO36MTA.js} +83 -82
- package/chunks/{version-DALWZHKQ.js → version-JZA6HYPI.js} +1 -1
- package/chunks/{web-fetch-JMJVMYFE.js → web-fetch-LLHPV2IR.js} +19 -19
- package/chunks/{web-search-DNDUIPU5.js → web-search-4HCHRZ3U.js} +11 -11
- package/chunks/{workflow-JGNN64PM.js → workflow-YI74QTWW.js} +43 -42
- package/chunks/workspace-providers-status-CI3AO2BH.js +100 -0
- package/chunks/{workspace-registration-store-LRJG7QA4.js → workspace-registration-store-KPIKXDHA.js} +1 -1
- package/chunks/{workspace-registry-KVXIFM36.js → workspace-registry-XE22QDE6.js} +47 -46
- package/chunks/{workspace-service-PO4AAKKT.js → workspace-service-WI2FD72A.js} +54 -53
- package/chunks/workspace-skills-status-FFZU6FXL.js +100 -0
- package/chunks/{workspace-trust-reconciler-DOZPCVHG.js → workspace-trust-reconciler-GJLNXR2U.js} +54 -53
- package/chunks/write-file-IEAC3XC3.js +87 -0
- package/chunks/{zh-AGL2FVBI.js → zh-LMSTK4WD.js} +2 -1
- package/chunks/{zh-TW-KI66MHQY.js → zh-TW-SQ4HTSCW.js} +2 -1
- package/chunks/{zoom-image-CNC77ZMA.js → zoom-image-GTVVT25J.js} +15 -15
- package/cli.js +13 -13
- package/locales/ca.js +1 -0
- package/locales/de.js +1 -0
- package/locales/en.js +1 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +1 -0
- package/locales/zh.js +1 -0
- package/package.json +3 -3
- package/web-shell/assets/{arc-CDk0d60K.js → arc-B13-S0Yo.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-h-W3I2lP.js → architectureDiagram-3BPJPVTR-CHvWNlVW.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-D1pvSmZg.js → blockDiagram-GPEHLZMM-CXebOlXF.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-ByAm5ZNf.js → c4Diagram-AAUBKEIU-BQpx4y3Q.js} +1 -1
- package/web-shell/assets/channel-BB_Hm8Rf.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-VrGPPOGV.js → chunk-2J33WTMH-Cak1exSv.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-B7hTowgG.js → chunk-4BX2VUAB-BIc8BV5_.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-j1Fq8DpE.js → chunk-55IACEB6-DoeJ5BL1.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-UjABYpF2.js → chunk-727SXJPM-BDR_wYSu.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-D4uBItrs.js → chunk-AQP2D5EJ-BhRRGRq1.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-DeFbKlb8.js → chunk-FMBD7UC4-BJGAwVXr.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-rQJ8TIgT.js → chunk-ND2GUHAM-vhE73bsD.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-DAGcRxvq.js → chunk-QZHKN3VN-BuTBZsdR.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-B_hFK54Y.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B_hFK54Y.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-MaE7MJSt.js → cose-bilkent-S5V4N54A-CVHKipHP.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-DzijYGSb.js → dagre-BM42HDAG-C1DPa8SV.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-WdbG7WnX.js → diagram-2AECGRRQ-BYP_QxkT.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-NYutsBnw.js → diagram-5GNKFQAL-Cray7ruQ.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-Dqg0eBY0.js → diagram-KO2AKTUF-Ds4vJANi.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-C7vRP2Lb.js → diagram-LMA3HP47-DxFrDykH.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-B2sEPpPt.js → diagram-OG6HWLK6-BdIO-pF_.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-a4zIbzm8.js → erDiagram-TEJ5UH35-5JA8KDYV.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-BK9y89ya.js → flowDiagram-I6XJVG4X-DL4drKro.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-wUQTSNvV.js → ganttDiagram-6RSMTGT7-ijX2DD6_.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Dnzt4SAi.js → gitGraphDiagram-PVQCEYII-_lPsFLFF.js} +1 -1
- package/web-shell/assets/index-BTwNYZkp.js +1785 -0
- package/web-shell/assets/{index-BA3wUcKL.js → index-C-YoqYbs.js} +1 -1
- package/web-shell/assets/index-dHAFxPHb.css +5 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-DcaoToij.js → infoDiagram-5YYISTIA-COFClLab.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DzduqhP2.js → ishikawaDiagram-YF4QCWOH-Div9KOgO.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-BvviZR_O.js → journeyDiagram-JHISSGLW-VAw5u0wc.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-Efm2JxY3.js → kanban-definition-UN3LZRKU-CncCn8Nl.js} +1 -1
- package/web-shell/assets/{linear-DtY3IbOs.js → linear-D6ad7e_k.js} +1 -1
- package/web-shell/assets/{mermaid.core-PzpFqoMe.js → mermaid.core-BV1IECGb.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BLlTkHS0.js → mindmap-definition-RKZ34NQL-a3jeNgPr.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-D-mKF-jE.js → pieDiagram-4H26LBE5-DsVRY5BW.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-DYCzslGm.js → quadrantDiagram-W4KKPZXB-D6zgexJK.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-Dfpxlk7R.js → requirementDiagram-4Y6WPE33-VEpSwJjn.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-D5cRaaxh.js → sankeyDiagram-5OEKKPKP-CYEuOFne.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-s04DReiS.js → sequenceDiagram-3UESZ5HK-CCg0lI-9.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-01UNFgnb.js → stateDiagram-AJRCARHV-BHXPsL0B.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-eTG8D0QT.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-DX8_wZBC.js → timeline-definition-PNZ67QCA-gqTf9a0k.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-BK0FlBme.js → vennDiagram-CIIHVFJN-C4DXXkBh.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-DkPc9UlD.js → wardley-L42UT6IY-CMK46EiX.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-DNKkpDAo.js → wardleyDiagram-YWT4CUSO-DTk1Gzt9.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-CiPwg8QG.js → xychartDiagram-2RQKCTM6-BcJsM1dH.js} +1 -1
- package/web-shell/index.html +2 -2
- package/chunks/agent-headless-HYEHZFH6.js +0 -86
- package/chunks/channel-settings-store-OXYG5S5X.js +0 -101
- package/chunks/chunk-I5VM3SKY.js +0 -451
- package/chunks/chunk-PDPFQ2FO.js +0 -156
- package/chunks/daemon-status-provider-L3J6GKCT.js +0 -102
- package/chunks/daemon-trust-policy-4PHPY23S.js +0 -98
- package/chunks/exitPlanMode-RWJR2KGB.js +0 -84
- package/chunks/handleAutoUpdate-NHFSGYTF.js +0 -93
- package/chunks/initializer-Y5DJLT43.js +0 -99
- package/chunks/list-YHNQ32CS.js +0 -102
- package/chunks/loadedSettingsAdapter-GHUQK7H4.js +0 -96
- package/chunks/mcp-EA3KO6FS.js +0 -96
- package/chunks/nonInteractiveCli-NNOR56HU.js +0 -162
- package/chunks/read-file-KKTXGIZD.js +0 -32
- package/chunks/ripGrep-SJVAAYDV.js +0 -84
- package/chunks/spawnChannel-UAQMH6Y6.js +0 -94
- package/chunks/theme-manager-ZNDGAHJN.js +0 -88
- package/chunks/workspace-providers-status-K22B3Z6B.js +0 -99
- package/chunks/workspace-skills-status-DDYCBVSH.js +0 -99
- package/chunks/write-file-TT6MWIKC.js +0 -86
- package/web-shell/assets/channel-DPFUV4oi.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CLm0hVvw.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CLm0hVvw.js +0 -1
- package/web-shell/assets/index-BjC3yjjL.css +0 -5
- package/web-shell/assets/index-QzFq6w7o.js +0 -1775
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DXb5olqv.js +0 -1
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
openQwenAsrRealtimeStream,
|
|
6
6
|
openVoiceStream,
|
|
7
7
|
openVoiceStreamWithRetry
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-BTYS2JAY.js";
|
|
9
9
|
import {
|
|
10
10
|
GENERATION_MAX_PROMPT_BYTES,
|
|
11
11
|
LIVE_SESSION_SOURCE_PREFIX,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
shouldSuppressRememberErrorDetails,
|
|
27
27
|
workspaceMemoryFailureCode,
|
|
28
28
|
workspaceMemoryFailureDiagnostics
|
|
29
|
-
} from "./chunk-
|
|
29
|
+
} from "./chunk-2R2HYSUQ.js";
|
|
30
30
|
import {
|
|
31
31
|
SetupGithubError,
|
|
32
32
|
collectSessionData,
|
|
@@ -38,18 +38,17 @@ import {
|
|
|
38
38
|
toJson,
|
|
39
39
|
toJsonl,
|
|
40
40
|
toMarkdown
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-W2ITCESM.js";
|
|
42
42
|
import {
|
|
43
43
|
OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
|
|
44
44
|
ObservedChannelContactStore
|
|
45
|
-
} from "./chunk-
|
|
46
|
-
import "./chunk-
|
|
45
|
+
} from "./chunk-47FQVRCO.js";
|
|
46
|
+
import "./chunk-HMCSRTDY.js";
|
|
47
47
|
import {
|
|
48
48
|
escapeAnsiCtrlCodes
|
|
49
49
|
} from "./chunk-4NFY2S7N.js";
|
|
50
50
|
import "./chunk-2MIN6GRR.js";
|
|
51
51
|
import "./chunk-QHTIBUWB.js";
|
|
52
|
-
import "./chunk-EKTCKZV5.js";
|
|
53
52
|
import "./chunk-3Z43GZUQ.js";
|
|
54
53
|
import {
|
|
55
54
|
CAPABILITIES_SCHEMA_VERSION,
|
|
@@ -107,7 +106,7 @@ import {
|
|
|
107
106
|
setRateLimiter,
|
|
108
107
|
unsafeRevealSecret,
|
|
109
108
|
validateMcpRuntimeServerName
|
|
110
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-JHMFKJEP.js";
|
|
111
110
|
import "./chunk-VGHZT6JR.js";
|
|
112
111
|
import {
|
|
113
112
|
isLoopbackBind,
|
|
@@ -128,14 +127,14 @@ import {
|
|
|
128
127
|
validateWorkspaceSkillName,
|
|
129
128
|
validateWorkspaceVoiceState,
|
|
130
129
|
voiceSettingsScopeToWire
|
|
131
|
-
} from "./chunk-
|
|
130
|
+
} from "./chunk-7QE3QFU3.js";
|
|
132
131
|
import {
|
|
133
132
|
PermissionRulesValidationError,
|
|
134
133
|
buildPermissionSettings,
|
|
135
134
|
isPermissionRuleType,
|
|
136
135
|
normalizePermissionRules,
|
|
137
136
|
readPermissionRuleSet
|
|
138
|
-
} from "./chunk-
|
|
137
|
+
} from "./chunk-DM4C3OX5.js";
|
|
139
138
|
import {
|
|
140
139
|
assertVoiceBaseUrlNetworkAllowed,
|
|
141
140
|
isStreamingVoiceModel,
|
|
@@ -143,13 +142,13 @@ import {
|
|
|
143
142
|
resolveVoiceTranscriptionConfig,
|
|
144
143
|
sanitizeVoiceErrorMessage,
|
|
145
144
|
transcribeVoiceAudio
|
|
146
|
-
} from "./chunk-
|
|
145
|
+
} from "./chunk-HZV75ET2.js";
|
|
147
146
|
import {
|
|
148
147
|
isVoiceEnabled,
|
|
149
148
|
isVoiceMode,
|
|
150
149
|
readVoiceModel
|
|
151
|
-
} from "./chunk-
|
|
152
|
-
import "./chunk-
|
|
150
|
+
} from "./chunk-F4T5J34H.js";
|
|
151
|
+
import "./chunk-IQFYO5BF.js";
|
|
153
152
|
import {
|
|
154
153
|
createTotalSessionAdmissionController
|
|
155
154
|
} from "./chunk-X2UOOG5V.js";
|
|
@@ -166,26 +165,26 @@ import {
|
|
|
166
165
|
} from "./chunk-4JRM2BSM.js";
|
|
167
166
|
import {
|
|
168
167
|
assertValidChannelSecretUpdates
|
|
169
|
-
} from "./chunk-
|
|
168
|
+
} from "./chunk-YVVIFFU4.js";
|
|
170
169
|
import {
|
|
171
170
|
createDaemonStatusProvider
|
|
172
|
-
} from "./chunk-
|
|
171
|
+
} from "./chunk-P7KCJGBR.js";
|
|
173
172
|
import "./chunk-NTTBXH7U.js";
|
|
174
|
-
import "./chunk-
|
|
173
|
+
import "./chunk-AKLY5M2C.js";
|
|
175
174
|
import "./chunk-3SH53ANB.js";
|
|
176
175
|
import {
|
|
177
176
|
createWorkspaceProvidersStatusProvider
|
|
178
|
-
} from "./chunk-
|
|
177
|
+
} from "./chunk-3SOTXJNO.js";
|
|
179
178
|
import {
|
|
180
179
|
getAuthTypeFromEnv,
|
|
181
180
|
resolveCliGenerationConfig
|
|
182
|
-
} from "./chunk-
|
|
181
|
+
} from "./chunk-23GFHEM3.js";
|
|
183
182
|
import {
|
|
184
183
|
snapshotProcessEnv
|
|
185
|
-
} from "./chunk-
|
|
184
|
+
} from "./chunk-DEKY5Y7V.js";
|
|
186
185
|
import {
|
|
187
186
|
createWorkspaceSkillsStatusProvider
|
|
188
|
-
} from "./chunk-
|
|
187
|
+
} from "./chunk-OGQERNHD.js";
|
|
189
188
|
import "./chunk-BGXZBI5B.js";
|
|
190
189
|
import "./chunk-Z4X5MTRT.js";
|
|
191
190
|
import {
|
|
@@ -204,20 +203,20 @@ import {
|
|
|
204
203
|
import {
|
|
205
204
|
evaluateDaemonWorkspaceTrust,
|
|
206
205
|
readDaemonTrustPolicySnapshot
|
|
207
|
-
} from "./chunk-
|
|
206
|
+
} from "./chunk-XUMBOJC2.js";
|
|
208
207
|
import {
|
|
209
208
|
daemonObservedContactsPath,
|
|
210
209
|
loadChannelsConfig
|
|
211
|
-
} from "./chunk-
|
|
212
|
-
import "./chunk-
|
|
210
|
+
} from "./chunk-U7QUDFPD.js";
|
|
211
|
+
import "./chunk-N3ZWGKXN.js";
|
|
213
212
|
import "./chunk-57OAHC2Y.js";
|
|
214
213
|
import {
|
|
215
214
|
parseChannelWebhookConfigLenient
|
|
216
|
-
} from "./chunk-
|
|
217
|
-
import "./chunk-
|
|
215
|
+
} from "./chunk-VRWOMUZM.js";
|
|
216
|
+
import "./chunk-ENEEQMGM.js";
|
|
218
217
|
import {
|
|
219
218
|
supportedChannelCatalog
|
|
220
|
-
} from "./chunk-
|
|
219
|
+
} from "./chunk-JPA7IDTE.js";
|
|
221
220
|
import {
|
|
222
221
|
LIVE_HOST_BUNDLE_ID,
|
|
223
222
|
LIVE_HOST_PROTOCOL_VERSION,
|
|
@@ -228,7 +227,7 @@ import {
|
|
|
228
227
|
SessionArtifactValidationError,
|
|
229
228
|
createAcpSessionBridge,
|
|
230
229
|
parseSessionSource
|
|
231
|
-
} from "./chunk-
|
|
230
|
+
} from "./chunk-2AAFGCWP.js";
|
|
232
231
|
import {
|
|
233
232
|
EVENT_SCHEMA_VERSION,
|
|
234
233
|
EventBus,
|
|
@@ -236,13 +235,13 @@ import {
|
|
|
236
235
|
} from "./chunk-MZSJ43WV.js";
|
|
237
236
|
import "./chunk-XCGIMOLN.js";
|
|
238
237
|
import "./chunk-OCPBI7J5.js";
|
|
239
|
-
import "./chunk-
|
|
238
|
+
import "./chunk-TKAEODJR.js";
|
|
240
239
|
import {
|
|
241
240
|
STATUS_SCHEMA_VERSION,
|
|
242
241
|
SessionRestoreTimeoutError,
|
|
243
242
|
createIdleWorkspaceMemoryStatus,
|
|
244
243
|
mapDomainErrorToErrorKind
|
|
245
|
-
} from "./chunk-
|
|
244
|
+
} from "./chunk-OPBATTFQ.js";
|
|
246
245
|
import "./chunk-K6KS3LTN.js";
|
|
247
246
|
import "./chunk-FC4KQFCS.js";
|
|
248
247
|
import "./chunk-T3CHYWJZ.js";
|
|
@@ -254,11 +253,12 @@ import {
|
|
|
254
253
|
WorkspaceRegistrationStoreLimitError,
|
|
255
254
|
normalizeWorkspaceDisplayName,
|
|
256
255
|
workspaceRegistrationId
|
|
257
|
-
} from "./chunk-
|
|
256
|
+
} from "./chunk-UEUE6LJX.js";
|
|
258
257
|
import {
|
|
258
|
+
DAEMON_PROMPT_DISPLAY_TEXT_META_KEY,
|
|
259
259
|
REQUESTED_SESSION_ID_META_KEY,
|
|
260
260
|
gradeActiveWorkCoverage
|
|
261
|
-
} from "./chunk-
|
|
261
|
+
} from "./chunk-HHGQGTJQ.js";
|
|
262
262
|
import {
|
|
263
263
|
BranchWhilePromptActiveError,
|
|
264
264
|
BridgeChannelQuarantinedError,
|
|
@@ -299,6 +299,10 @@ import {
|
|
|
299
299
|
canonicalizeWorkspaces,
|
|
300
300
|
translateAndCheckAbsoluteWorkspacePath
|
|
301
301
|
} from "./chunk-6PLDPT2C.js";
|
|
302
|
+
import {
|
|
303
|
+
CHANNEL_WORKER_PROMPT_AUTHORIZATION_META_KEY,
|
|
304
|
+
isChannelWorkerPromptAuthorized
|
|
305
|
+
} from "./chunk-Z7B6SRPM.js";
|
|
302
306
|
import {
|
|
303
307
|
ChannelDeliveryError,
|
|
304
308
|
MAX_CHANNEL_STARTUP_FAILURES,
|
|
@@ -311,7 +315,7 @@ import {
|
|
|
311
315
|
} from "./chunk-YP5KH5Y7.js";
|
|
312
316
|
import {
|
|
313
317
|
normalizeWorkerDiagnostic
|
|
314
|
-
} from "./chunk-
|
|
318
|
+
} from "./chunk-K7JW6V5O.js";
|
|
315
319
|
import {
|
|
316
320
|
normalizeServeChannelSelection
|
|
317
321
|
} from "./chunk-ALMR3E6Q.js";
|
|
@@ -323,8 +327,8 @@ import "./chunk-BKHCW2BI.js";
|
|
|
323
327
|
import "./chunk-5HBA2Z7V.js";
|
|
324
328
|
import {
|
|
325
329
|
sanitizeLogText
|
|
326
|
-
} from "./chunk-
|
|
327
|
-
import "./chunk-
|
|
330
|
+
} from "./chunk-LT532KF4.js";
|
|
331
|
+
import "./chunk-IW6RQPQB.js";
|
|
328
332
|
import {
|
|
329
333
|
getDialogSettingKeys,
|
|
330
334
|
getModelProvidersOwnerScope,
|
|
@@ -334,26 +338,26 @@ import {
|
|
|
334
338
|
getWritableScopes,
|
|
335
339
|
loadSettings,
|
|
336
340
|
validateSettingValue
|
|
337
|
-
} from "./chunk-
|
|
338
|
-
import "./chunk-
|
|
341
|
+
} from "./chunk-4PFKN7CQ.js";
|
|
342
|
+
import "./chunk-T4576UW4.js";
|
|
339
343
|
import "./chunk-RKUWKYED.js";
|
|
340
344
|
import "./chunk-GOXKNSDZ.js";
|
|
341
345
|
import "./chunk-IDS7MSUP.js";
|
|
342
346
|
import {
|
|
343
347
|
detectSystemLanguage,
|
|
344
348
|
resolveLanguageSetting
|
|
345
|
-
} from "./chunk-
|
|
349
|
+
} from "./chunk-KFCTC5IJ.js";
|
|
346
350
|
import {
|
|
347
351
|
SUPPORTED_LANGUAGES,
|
|
348
352
|
resolveSupportedLanguage
|
|
349
353
|
} from "./chunk-5EJZE3FP.js";
|
|
350
|
-
import "./chunk-
|
|
351
|
-
import "./chunk-
|
|
352
|
-
import "./chunk-
|
|
354
|
+
import "./chunk-UM57UTTV.js";
|
|
355
|
+
import "./chunk-MS7GNABG.js";
|
|
356
|
+
import "./chunk-EOBM4T2Z.js";
|
|
353
357
|
import "./chunk-VJNBRRZG.js";
|
|
354
358
|
import {
|
|
355
359
|
getWorkspaceTrustStatus
|
|
356
|
-
} from "./chunk-
|
|
360
|
+
} from "./chunk-YIKMBYMT.js";
|
|
357
361
|
import "./chunk-NPQ5ZKRP.js";
|
|
358
362
|
import {
|
|
359
363
|
isWithinRoot as isWithinRoot2
|
|
@@ -433,20 +437,20 @@ import {
|
|
|
433
437
|
writeWorkspaceContextFile,
|
|
434
438
|
writeWorktreeSession,
|
|
435
439
|
writeWorktreeSessionMarker
|
|
436
|
-
} from "./chunk-
|
|
440
|
+
} from "./chunk-UIZGNLBP.js";
|
|
437
441
|
import "./chunk-GOFAQQZA.js";
|
|
438
442
|
import "./chunk-5M6IDOMF.js";
|
|
439
443
|
import "./chunk-TWPJO254.js";
|
|
440
|
-
import "./chunk-
|
|
444
|
+
import "./chunk-CQ35AJ4Z.js";
|
|
441
445
|
import {
|
|
442
446
|
MAX_JOBS,
|
|
443
447
|
nextDurableFireMs
|
|
444
|
-
} from "./chunk-
|
|
445
|
-
import "./chunk-
|
|
446
|
-
import "./chunk-
|
|
447
|
-
import "./chunk-
|
|
448
|
+
} from "./chunk-QTI7SRXI.js";
|
|
449
|
+
import "./chunk-KT4OWAAZ.js";
|
|
450
|
+
import "./chunk-IX7CFQGA.js";
|
|
451
|
+
import "./chunk-N7NBMAMW.js";
|
|
448
452
|
import "./chunk-6PVPNMXU.js";
|
|
449
|
-
import "./chunk-
|
|
453
|
+
import "./chunk-XT6TGJFD.js";
|
|
450
454
|
import {
|
|
451
455
|
nextFireTime,
|
|
452
456
|
parseCron
|
|
@@ -459,22 +463,22 @@ import {
|
|
|
459
463
|
readCronTasks,
|
|
460
464
|
taskHasLegacyCondition,
|
|
461
465
|
updateCronTasks
|
|
462
|
-
} from "./chunk-
|
|
463
|
-
import "./chunk-
|
|
466
|
+
} from "./chunk-XLQS3VI6.js";
|
|
467
|
+
import "./chunk-NWPO6I7V.js";
|
|
464
468
|
import "./chunk-O6GEWCJA.js";
|
|
465
469
|
import "./chunk-T26EAKDL.js";
|
|
466
470
|
import "./chunk-ZPJWUGCS.js";
|
|
467
471
|
import "./chunk-CPBF7KYF.js";
|
|
468
|
-
import "./chunk-
|
|
472
|
+
import "./chunk-2AZMF6G5.js";
|
|
469
473
|
import "./chunk-KRXPRVGL.js";
|
|
470
|
-
import "./chunk-
|
|
471
|
-
import "./chunk-
|
|
472
|
-
import "./chunk-
|
|
473
|
-
import "./chunk-
|
|
474
|
+
import "./chunk-GZGDJ4E6.js";
|
|
475
|
+
import "./chunk-T6W4KACQ.js";
|
|
476
|
+
import "./chunk-MWZYNOCG.js";
|
|
477
|
+
import "./chunk-SAQHDAUJ.js";
|
|
474
478
|
import {
|
|
475
479
|
APPROVAL_MODES
|
|
476
|
-
} from "./chunk-
|
|
477
|
-
import "./chunk-
|
|
480
|
+
} from "./chunk-6LYDH7VT.js";
|
|
481
|
+
import "./chunk-2XZWO53E.js";
|
|
478
482
|
import {
|
|
479
483
|
addDaemonRequestAttribute,
|
|
480
484
|
captureDaemonTelemetryContext,
|
|
@@ -486,20 +490,21 @@ import {
|
|
|
486
490
|
recordDaemonHttpResponse,
|
|
487
491
|
runWithDaemonTelemetryContext,
|
|
488
492
|
withDaemonRequestSpan
|
|
489
|
-
} from "./chunk-
|
|
493
|
+
} from "./chunk-BJKREW56.js";
|
|
490
494
|
import "./chunk-SAH4BD2J.js";
|
|
491
|
-
import "./chunk-
|
|
495
|
+
import "./chunk-25OFRBH2.js";
|
|
496
|
+
import "./chunk-EYS3GGM3.js";
|
|
492
497
|
import "./chunk-S6LOFUVP.js";
|
|
493
498
|
import "./chunk-2J3OJGTL.js";
|
|
494
499
|
import {
|
|
495
500
|
SubagentError,
|
|
496
501
|
SubagentErrorCode
|
|
497
|
-
} from "./chunk-
|
|
502
|
+
} from "./chunk-ZV4XVYL3.js";
|
|
498
503
|
import "./chunk-K623ENWT.js";
|
|
499
504
|
import {
|
|
500
505
|
escapeXml
|
|
501
506
|
} from "./chunk-AQ37AY7B.js";
|
|
502
|
-
import "./chunk-
|
|
507
|
+
import "./chunk-V3LXMASR.js";
|
|
503
508
|
import {
|
|
504
509
|
QwenOAuth2Client,
|
|
505
510
|
QwenOAuthPollError,
|
|
@@ -508,19 +513,19 @@ import {
|
|
|
508
513
|
isDeviceAuthorizationSuccess,
|
|
509
514
|
isDeviceTokenPending,
|
|
510
515
|
isDeviceTokenSuccess
|
|
511
|
-
} from "./chunk-
|
|
516
|
+
} from "./chunk-KCCODSAA.js";
|
|
512
517
|
import "./chunk-NAVJD2PQ.js";
|
|
513
|
-
import "./chunk-
|
|
514
|
-
import "./chunk-
|
|
518
|
+
import "./chunk-5HBFERG5.js";
|
|
519
|
+
import "./chunk-EYW54TBD.js";
|
|
515
520
|
import "./chunk-P3QQPMQA.js";
|
|
516
|
-
import "./chunk-
|
|
517
|
-
import "./chunk-
|
|
521
|
+
import "./chunk-O4BBDP2G.js";
|
|
522
|
+
import "./chunk-KPVVWKF3.js";
|
|
518
523
|
import "./chunk-KM73TBQ4.js";
|
|
519
524
|
import "./chunk-MPHPFVKK.js";
|
|
520
525
|
import "./chunk-AXMWHKXA.js";
|
|
521
526
|
import "./chunk-GLCZKT5V.js";
|
|
522
527
|
import "./chunk-DJ2GSRLV.js";
|
|
523
|
-
import "./chunk-
|
|
528
|
+
import "./chunk-GJJQV4PY.js";
|
|
524
529
|
import "./chunk-CR3C7WXL.js";
|
|
525
530
|
import "./chunk-XWRJCPHC.js";
|
|
526
531
|
import {
|
|
@@ -533,30 +538,30 @@ import {
|
|
|
533
538
|
isWithinRoot,
|
|
534
539
|
parseLineTolerant,
|
|
535
540
|
read
|
|
536
|
-
} from "./chunk-
|
|
537
|
-
import "./chunk-
|
|
541
|
+
} from "./chunk-U2JLICUY.js";
|
|
542
|
+
import "./chunk-YRLW2MSX.js";
|
|
538
543
|
import "./chunk-VGC4I5JJ.js";
|
|
539
|
-
import "./chunk-
|
|
540
|
-
import "./chunk-
|
|
541
|
-
import "./chunk-
|
|
542
|
-
import "./chunk-
|
|
543
|
-
import "./chunk-
|
|
544
|
+
import "./chunk-732MOPEM.js";
|
|
545
|
+
import "./chunk-CTQE2NB2.js";
|
|
546
|
+
import "./chunk-IEP44U2R.js";
|
|
547
|
+
import "./chunk-XTH2OMDS.js";
|
|
548
|
+
import "./chunk-MDQSCFAZ.js";
|
|
544
549
|
import "./chunk-F6WFNA7U.js";
|
|
545
550
|
import "./chunk-46UV252V.js";
|
|
546
|
-
import "./chunk-
|
|
547
|
-
import "./chunk-
|
|
548
|
-
import "./chunk-
|
|
549
|
-
import "./chunk-
|
|
550
|
-
import "./chunk-
|
|
551
|
-
import "./chunk-
|
|
552
|
-
import "./chunk-
|
|
551
|
+
import "./chunk-FPGTNKCP.js";
|
|
552
|
+
import "./chunk-EFIMD5VA.js";
|
|
553
|
+
import "./chunk-NC4O6UE6.js";
|
|
554
|
+
import "./chunk-F6AOBFUN.js";
|
|
555
|
+
import "./chunk-HUE2M6VI.js";
|
|
556
|
+
import "./chunk-HHJLM3WQ.js";
|
|
557
|
+
import "./chunk-L2GTEEEU.js";
|
|
553
558
|
import {
|
|
554
559
|
FatalConfigError,
|
|
555
560
|
Storage,
|
|
556
561
|
createDebugLogger,
|
|
557
562
|
getErrorMessage,
|
|
558
563
|
runWithoutDebugLogSession
|
|
559
|
-
} from "./chunk-
|
|
564
|
+
} from "./chunk-MPBRV3UU.js";
|
|
560
565
|
import "./chunk-VOQXFAY5.js";
|
|
561
566
|
import {
|
|
562
567
|
writeStderrLine,
|
|
@@ -9839,20 +9844,31 @@ var AcpDispatcher = class {
|
|
|
9839
9844
|
if ("error" in parsedSource) {
|
|
9840
9845
|
throw new AcpParamError(parsedSource.error);
|
|
9841
9846
|
}
|
|
9842
|
-
|
|
9843
|
-
|
|
9844
|
-
|
|
9845
|
-
|
|
9846
|
-
|
|
9847
|
-
|
|
9848
|
-
|
|
9849
|
-
|
|
9850
|
-
|
|
9851
|
-
|
|
9852
|
-
|
|
9853
|
-
|
|
9854
|
-
|
|
9855
|
-
|
|
9847
|
+
let result;
|
|
9848
|
+
try {
|
|
9849
|
+
conn.abortSignal.throwIfAborted();
|
|
9850
|
+
result = await listWorkspaceSessionsForResponse(
|
|
9851
|
+
this.bridge,
|
|
9852
|
+
workspaceCwd,
|
|
9853
|
+
{
|
|
9854
|
+
cursor,
|
|
9855
|
+
size: metaSize,
|
|
9856
|
+
archiveState,
|
|
9857
|
+
view,
|
|
9858
|
+
group,
|
|
9859
|
+
parentSessionId,
|
|
9860
|
+
...parsedSource
|
|
9861
|
+
},
|
|
9862
|
+
{
|
|
9863
|
+
runtimeBaseDir: this.sessionRuntimeBaseDir,
|
|
9864
|
+
signal: conn.abortSignal
|
|
9865
|
+
}
|
|
9866
|
+
);
|
|
9867
|
+
conn.abortSignal.throwIfAborted();
|
|
9868
|
+
} catch (error2) {
|
|
9869
|
+
if (conn.abortSignal.aborted) return;
|
|
9870
|
+
throw error2;
|
|
9871
|
+
}
|
|
9856
9872
|
this.replyConn(conn, id, {
|
|
9857
9873
|
sessions: result.sessions.map((s) => ({
|
|
9858
9874
|
sessionId: s.sessionId,
|
|
@@ -20288,15 +20304,15 @@ var legacySessionTelemetryRoutes = [
|
|
|
20288
20304
|
},
|
|
20289
20305
|
{
|
|
20290
20306
|
method: "GET",
|
|
20291
|
-
path: "/session/:id/subagents/:
|
|
20307
|
+
path: "/session/:id/subagents/:subagentRef",
|
|
20292
20308
|
attribution: "handler_resolved",
|
|
20293
|
-
route: "GET /session/:id/subagents/:
|
|
20309
|
+
route: "GET /session/:id/subagents/:subagentRef"
|
|
20294
20310
|
},
|
|
20295
20311
|
{
|
|
20296
20312
|
method: "POST",
|
|
20297
|
-
path: "/session/:id/subagents/:
|
|
20313
|
+
path: "/session/:id/subagents/:subagentRef/cancel",
|
|
20298
20314
|
attribution: "handler_resolved",
|
|
20299
|
-
route: "POST /session/:id/subagents/:
|
|
20315
|
+
route: "POST /session/:id/subagents/:subagentRef/cancel"
|
|
20300
20316
|
},
|
|
20301
20317
|
{
|
|
20302
20318
|
method: "GET",
|
|
@@ -20418,6 +20434,12 @@ var legacySessionTelemetryRoutes = [
|
|
|
20418
20434
|
attribution: "handler_resolved",
|
|
20419
20435
|
route: "POST /session/:id/model"
|
|
20420
20436
|
},
|
|
20437
|
+
{
|
|
20438
|
+
method: "POST",
|
|
20439
|
+
path: "/session/:id/config-option",
|
|
20440
|
+
attribution: "handler_resolved",
|
|
20441
|
+
route: "POST /session/:id/config-option"
|
|
20442
|
+
},
|
|
20421
20443
|
{
|
|
20422
20444
|
method: "POST",
|
|
20423
20445
|
path: "/session/:id/recap",
|
|
@@ -21033,7 +21055,8 @@ var PersistedSessionListCache = class {
|
|
|
21033
21055
|
}
|
|
21034
21056
|
slots = /* @__PURE__ */ new Map();
|
|
21035
21057
|
retainedSummaries = 0;
|
|
21036
|
-
lookup(scope, loader) {
|
|
21058
|
+
lookup(scope, loader, options = {}) {
|
|
21059
|
+
options.signal?.throwIfAborted();
|
|
21037
21060
|
const key = this.key(scope);
|
|
21038
21061
|
let slot = this.slots.get(key);
|
|
21039
21062
|
if (!slot) {
|
|
@@ -21044,27 +21067,43 @@ var PersistedSessionListCache = class {
|
|
|
21044
21067
|
if (slot.value) {
|
|
21045
21068
|
const cacheAgeMs = Math.max(0, now - slot.value.completedAt);
|
|
21046
21069
|
if (cacheAgeMs < this.ttlMs) {
|
|
21070
|
+
const snapshot = slot.value.snapshot;
|
|
21047
21071
|
return {
|
|
21048
21072
|
status: "cache_hit",
|
|
21049
|
-
promise: Promise.resolve(
|
|
21073
|
+
promise: Promise.resolve().then(() => {
|
|
21074
|
+
options.signal?.throwIfAborted();
|
|
21075
|
+
return snapshot;
|
|
21076
|
+
}),
|
|
21050
21077
|
cacheAgeMs
|
|
21051
21078
|
};
|
|
21052
21079
|
}
|
|
21053
21080
|
this.removeValue(slot);
|
|
21054
21081
|
}
|
|
21055
|
-
if (slot.inFlight !== void 0 && slot.inFlight.generation === slot.generation) {
|
|
21082
|
+
if (slot.inFlight !== void 0 && slot.inFlight.generation === slot.generation && !slot.inFlight.controller.signal.aborted) {
|
|
21056
21083
|
return {
|
|
21057
21084
|
status: "single_flight",
|
|
21058
|
-
promise: slot.inFlight.
|
|
21085
|
+
promise: this.attachWaiter(key, slot, slot.inFlight, options.signal)
|
|
21059
21086
|
};
|
|
21060
21087
|
}
|
|
21061
21088
|
const generation = slot.generation;
|
|
21062
|
-
const
|
|
21089
|
+
const controller = new AbortController();
|
|
21090
|
+
const load = {
|
|
21091
|
+
generation,
|
|
21092
|
+
controller,
|
|
21093
|
+
promise: void 0,
|
|
21094
|
+
waiterCount: 0,
|
|
21095
|
+
settled: false
|
|
21096
|
+
};
|
|
21097
|
+
const managed = Promise.resolve().then(() => {
|
|
21098
|
+
controller.signal.throwIfAborted();
|
|
21099
|
+
return loader(controller.signal);
|
|
21100
|
+
}).then(
|
|
21063
21101
|
(snapshot) => {
|
|
21102
|
+
load.settled = true;
|
|
21064
21103
|
const current = this.slots.get(key);
|
|
21065
|
-
if (current === slot && current.inFlight
|
|
21104
|
+
if (current === slot && current.inFlight === load) {
|
|
21066
21105
|
current.inFlight = void 0;
|
|
21067
|
-
if (current.generation === generation && snapshot.sessions.length <= this.maxRetainedSummaries) {
|
|
21106
|
+
if (current.generation === generation && !controller.signal.aborted && snapshot.sessions.length <= this.maxRetainedSummaries) {
|
|
21068
21107
|
this.installValue(key, current, snapshot);
|
|
21069
21108
|
} else if (current.value === void 0) {
|
|
21070
21109
|
this.slots.delete(key);
|
|
@@ -21073,16 +21112,21 @@ var PersistedSessionListCache = class {
|
|
|
21073
21112
|
return snapshot;
|
|
21074
21113
|
},
|
|
21075
21114
|
(error2) => {
|
|
21115
|
+
load.settled = true;
|
|
21076
21116
|
const current = this.slots.get(key);
|
|
21077
|
-
if (current === slot && current.inFlight
|
|
21117
|
+
if (current === slot && current.inFlight === load) {
|
|
21078
21118
|
current.inFlight = void 0;
|
|
21079
21119
|
if (current.value === void 0) this.slots.delete(key);
|
|
21080
21120
|
}
|
|
21081
21121
|
throw error2;
|
|
21082
21122
|
}
|
|
21083
21123
|
);
|
|
21084
|
-
|
|
21085
|
-
|
|
21124
|
+
load.promise = managed;
|
|
21125
|
+
slot.inFlight = load;
|
|
21126
|
+
return {
|
|
21127
|
+
status: "scan",
|
|
21128
|
+
promise: this.attachWaiter(key, slot, load, options.signal)
|
|
21129
|
+
};
|
|
21086
21130
|
}
|
|
21087
21131
|
invalidate(scope) {
|
|
21088
21132
|
const key = this.key(scope);
|
|
@@ -21136,6 +21180,39 @@ var PersistedSessionListCache = class {
|
|
|
21136
21180
|
this.retainedSummaries -= value.snapshot.sessions.length;
|
|
21137
21181
|
slot.value = void 0;
|
|
21138
21182
|
}
|
|
21183
|
+
attachWaiter(key, slot, load, signal) {
|
|
21184
|
+
load.waiterCount += 1;
|
|
21185
|
+
return new Promise((resolve5, reject) => {
|
|
21186
|
+
let settled = false;
|
|
21187
|
+
const settle = /* @__PURE__ */ __name((finish) => {
|
|
21188
|
+
if (settled) return;
|
|
21189
|
+
settled = true;
|
|
21190
|
+
signal?.removeEventListener("abort", onAbort);
|
|
21191
|
+
load.waiterCount -= 1;
|
|
21192
|
+
if (load.waiterCount === 0 && !load.settled) {
|
|
21193
|
+
load.controller.abort(
|
|
21194
|
+
new DOMException("No active session list waiters", "AbortError")
|
|
21195
|
+
);
|
|
21196
|
+
const current = this.slots.get(key);
|
|
21197
|
+
if (current === slot && current.inFlight === load) {
|
|
21198
|
+
current.inFlight = void 0;
|
|
21199
|
+
if (current.value === void 0) this.slots.delete(key);
|
|
21200
|
+
}
|
|
21201
|
+
}
|
|
21202
|
+
finish();
|
|
21203
|
+
}, "settle");
|
|
21204
|
+
const onAbort = /* @__PURE__ */ __name(() => {
|
|
21205
|
+
if (load.settled) return;
|
|
21206
|
+
settle(() => reject(signal?.reason));
|
|
21207
|
+
}, "onAbort");
|
|
21208
|
+
signal?.addEventListener("abort", onAbort, { once: true });
|
|
21209
|
+
if (signal?.aborted) onAbort();
|
|
21210
|
+
void load.promise.then(
|
|
21211
|
+
(snapshot) => settle(() => resolve5(snapshot)),
|
|
21212
|
+
(error2) => settle(() => reject(error2))
|
|
21213
|
+
);
|
|
21214
|
+
});
|
|
21215
|
+
}
|
|
21139
21216
|
key(scope) {
|
|
21140
21217
|
return JSON.stringify([
|
|
21141
21218
|
path10.resolve(scope.runtimeBaseDir),
|
|
@@ -21257,15 +21334,21 @@ function encodeMetadataSessionCursor(last, filter, archiveState) {
|
|
|
21257
21334
|
).toString("base64url");
|
|
21258
21335
|
}
|
|
21259
21336
|
__name(encodeMetadataSessionCursor, "encodeMetadataSessionCursor");
|
|
21260
|
-
async function enrichWorktreeSidecars(bySessionId, sessionService, archiveState = "active") {
|
|
21337
|
+
async function enrichWorktreeSidecars(bySessionId, sessionService, archiveState = "active", signal) {
|
|
21261
21338
|
for (const [sessionId, summary] of bySessionId) {
|
|
21339
|
+
signal?.throwIfAborted();
|
|
21262
21340
|
if (summary.worktree) continue;
|
|
21263
|
-
|
|
21264
|
-
|
|
21341
|
+
let sidecar;
|
|
21342
|
+
try {
|
|
21343
|
+
const sidecarPath = sessionService.getWorktreeSessionPathForArchiveState(
|
|
21265
21344
|
sessionId,
|
|
21266
21345
|
archiveState
|
|
21267
|
-
)
|
|
21268
|
-
|
|
21346
|
+
);
|
|
21347
|
+
sidecar = signal ? await readWorktreeSession(sidecarPath, { signal }) : await readWorktreeSession(sidecarPath);
|
|
21348
|
+
} catch {
|
|
21349
|
+
signal?.throwIfAborted();
|
|
21350
|
+
sidecar = null;
|
|
21351
|
+
}
|
|
21269
21352
|
if (sidecar) {
|
|
21270
21353
|
bySessionId.set(sessionId, {
|
|
21271
21354
|
...summary,
|
|
@@ -21320,8 +21403,9 @@ function clonePersistedSummary(session) {
|
|
|
21320
21403
|
};
|
|
21321
21404
|
}
|
|
21322
21405
|
__name(clonePersistedSummary, "clonePersistedSummary");
|
|
21323
|
-
async function loadAllPersistedSummaries(sessionService, archiveState) {
|
|
21406
|
+
async function loadAllPersistedSummaries(sessionService, archiveState, signal) {
|
|
21324
21407
|
const scanStartedAt = performance.now();
|
|
21408
|
+
signal.throwIfAborted();
|
|
21325
21409
|
const sessions = [];
|
|
21326
21410
|
let truncated = false;
|
|
21327
21411
|
let scanPages = 0;
|
|
@@ -21331,8 +21415,10 @@ async function loadAllPersistedSummaries(sessionService, archiveState) {
|
|
|
21331
21415
|
const page = await sessionService.listSessions({
|
|
21332
21416
|
cursor,
|
|
21333
21417
|
size: 1e4,
|
|
21334
|
-
archiveState
|
|
21418
|
+
archiveState,
|
|
21419
|
+
signal
|
|
21335
21420
|
});
|
|
21421
|
+
signal.throwIfAborted();
|
|
21336
21422
|
const remaining = MAX_ORGANIZED_SESSIONS - sessions.length;
|
|
21337
21423
|
sessions.push(...page.items.slice(0, remaining).map(toSummary2));
|
|
21338
21424
|
cursor = page.nextCursor;
|
|
@@ -21350,7 +21436,13 @@ async function loadAllPersistedSummaries(sessionService, archiveState) {
|
|
|
21350
21436
|
const bySessionId = new Map(
|
|
21351
21437
|
sessions.map((session) => [session.sessionId, session])
|
|
21352
21438
|
);
|
|
21353
|
-
await enrichWorktreeSidecars(
|
|
21439
|
+
await enrichWorktreeSidecars(
|
|
21440
|
+
bySessionId,
|
|
21441
|
+
sessionService,
|
|
21442
|
+
archiveState,
|
|
21443
|
+
signal
|
|
21444
|
+
);
|
|
21445
|
+
signal.throwIfAborted();
|
|
21354
21446
|
return {
|
|
21355
21447
|
sessions: [...bySessionId.values()],
|
|
21356
21448
|
truncated,
|
|
@@ -21359,10 +21451,11 @@ async function loadAllPersistedSummaries(sessionService, archiveState) {
|
|
|
21359
21451
|
};
|
|
21360
21452
|
}
|
|
21361
21453
|
__name(loadAllPersistedSummaries, "loadAllPersistedSummaries");
|
|
21362
|
-
async function listAllPersistedSummaries(sessionService, workspaceCwd, archiveState, runtimeBaseDir, queryKind) {
|
|
21454
|
+
async function listAllPersistedSummaries(sessionService, workspaceCwd, archiveState, runtimeBaseDir, queryKind, signal) {
|
|
21363
21455
|
const lookup = persistedSessionListCache.lookup(
|
|
21364
21456
|
{ runtimeBaseDir, workspaceCwd, archiveState },
|
|
21365
|
-
() => loadAllPersistedSummaries(sessionService, archiveState)
|
|
21457
|
+
(loadSignal) => loadAllPersistedSummaries(sessionService, archiveState, loadSignal),
|
|
21458
|
+
{ signal }
|
|
21366
21459
|
);
|
|
21367
21460
|
addDaemonRequestAttribute(
|
|
21368
21461
|
"qwen-code.daemon.session_list.cache_status",
|
|
@@ -21383,6 +21476,7 @@ async function listAllPersistedSummaries(sessionService, workspaceCwd, archiveSt
|
|
|
21383
21476
|
);
|
|
21384
21477
|
}
|
|
21385
21478
|
const snapshot = await lookup.promise;
|
|
21479
|
+
signal?.throwIfAborted();
|
|
21386
21480
|
addDaemonRequestAttribute(
|
|
21387
21481
|
"qwen-code.daemon.session_list.persisted_sessions",
|
|
21388
21482
|
snapshot.sessions.length
|
|
@@ -21395,7 +21489,7 @@ async function listAllPersistedSummaries(sessionService, workspaceCwd, archiveSt
|
|
|
21395
21489
|
"qwen-code.daemon.session_list.truncated",
|
|
21396
21490
|
snapshot.truncated
|
|
21397
21491
|
);
|
|
21398
|
-
if (lookup.status
|
|
21492
|
+
if (lookup.status !== "cache_hit") {
|
|
21399
21493
|
addDaemonRequestAttribute(
|
|
21400
21494
|
"qwen-code.daemon.session_list.scan_duration_ms",
|
|
21401
21495
|
snapshot.scanDurationMs
|
|
@@ -21459,7 +21553,9 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21459
21553
|
const archiveState = options.archiveState ?? "active";
|
|
21460
21554
|
const sessionService = new SessionService(workspaceCwd);
|
|
21461
21555
|
const organizationService = createSessionOrganizationService(workspaceCwd);
|
|
21556
|
+
readOptions.signal?.throwIfAborted();
|
|
21462
21557
|
const snapshot = await organizationService.readSnapshot();
|
|
21558
|
+
readOptions.signal?.throwIfAborted();
|
|
21463
21559
|
const knownGroupIds = new Set(snapshot.groups.map((group2) => group2.id));
|
|
21464
21560
|
const group = options.group ?? "all";
|
|
21465
21561
|
if (group !== "all" && group !== "pinned" && group !== "ungrouped" && !knownGroupIds.has(group)) {
|
|
@@ -21483,8 +21579,10 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21483
21579
|
workspaceCwd,
|
|
21484
21580
|
archiveState,
|
|
21485
21581
|
readOptions.runtimeBaseDir,
|
|
21486
|
-
"organized"
|
|
21582
|
+
"organized",
|
|
21583
|
+
readOptions.signal
|
|
21487
21584
|
);
|
|
21585
|
+
readOptions.signal?.throwIfAborted();
|
|
21488
21586
|
for (const session of persisted.sessions) {
|
|
21489
21587
|
bySessionId.set(
|
|
21490
21588
|
session.sessionId,
|
|
@@ -21517,7 +21615,9 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21517
21615
|
// above and this point: `existing` stayed undefined but
|
|
21518
21616
|
// `sessionExists` flipped to true, silently dropping the live
|
|
21519
21617
|
// session from the response instead of merging it.
|
|
21520
|
-
!persisted.truncated || !await sessionService.sessionExists(live.sessionId
|
|
21618
|
+
!persisted.truncated || !await (readOptions.signal ? sessionService.sessionExists(live.sessionId, {
|
|
21619
|
+
signal: readOptions.signal
|
|
21620
|
+
}) : sessionService.sessionExists(live.sessionId))
|
|
21521
21621
|
) {
|
|
21522
21622
|
bySessionId.set(
|
|
21523
21623
|
live.sessionId,
|
|
@@ -21535,6 +21635,7 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21535
21635
|
}
|
|
21536
21636
|
}
|
|
21537
21637
|
} catch (error2) {
|
|
21638
|
+
readOptions.signal?.throwIfAborted();
|
|
21538
21639
|
liveMergeFailed = true;
|
|
21539
21640
|
writeStderrLine(
|
|
21540
21641
|
`qwen serve: organized session list live merge failed; using persisted sessions only: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
@@ -21549,6 +21650,7 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21549
21650
|
return session.groupId == null && session.color == null;
|
|
21550
21651
|
return session.color == null && session.groupId === group;
|
|
21551
21652
|
});
|
|
21653
|
+
readOptions.signal?.throwIfAborted();
|
|
21552
21654
|
const activityTimeById = new Map(
|
|
21553
21655
|
filtered.map((session) => [
|
|
21554
21656
|
session.sessionId,
|
|
@@ -21556,6 +21658,7 @@ async function listOrganizedWorkspaceSessionsForResponse(bridge, workspaceCwd, o
|
|
|
21556
21658
|
])
|
|
21557
21659
|
);
|
|
21558
21660
|
filtered.sort((a, b) => compareOrganizedSessions(activityTimeById, a, b));
|
|
21661
|
+
readOptions.signal?.throwIfAborted();
|
|
21559
21662
|
const afterCursor = cursorKey === void 0 ? filtered : filtered.filter(
|
|
21560
21663
|
(session) => compareOrganizedCursorKeys(
|
|
21561
21664
|
cursorKey,
|
|
@@ -21587,8 +21690,10 @@ async function listWorkspaceSessionsByMetadataForResponse(bridge, workspaceCwd,
|
|
|
21587
21690
|
workspaceCwd,
|
|
21588
21691
|
archiveState,
|
|
21589
21692
|
readOptions.runtimeBaseDir,
|
|
21590
|
-
"metadata"
|
|
21693
|
+
"metadata",
|
|
21694
|
+
readOptions.signal
|
|
21591
21695
|
);
|
|
21696
|
+
readOptions.signal?.throwIfAborted();
|
|
21592
21697
|
for (const session of persisted.sessions) {
|
|
21593
21698
|
bySessionId.set(session.sessionId, clonePersistedSummary(session));
|
|
21594
21699
|
}
|
|
@@ -21607,7 +21712,9 @@ async function listWorkspaceSessionsByMetadataForResponse(bridge, workspaceCwd,
|
|
|
21607
21712
|
// `listOrganizedWorkspaceSessionsForResponse`: an untruncated scan
|
|
21608
21713
|
// already covers every persisted session, so skip the racy
|
|
21609
21714
|
// re-check when nothing was truncated.
|
|
21610
|
-
!persisted.truncated || !await sessionService.sessionExists(live.sessionId
|
|
21715
|
+
!persisted.truncated || !await (readOptions.signal ? sessionService.sessionExists(live.sessionId, {
|
|
21716
|
+
signal: readOptions.signal
|
|
21717
|
+
}) : sessionService.sessionExists(live.sessionId))
|
|
21611
21718
|
) {
|
|
21612
21719
|
bySessionId.set(live.sessionId, {
|
|
21613
21720
|
...live,
|
|
@@ -21619,6 +21726,7 @@ async function listWorkspaceSessionsByMetadataForResponse(bridge, workspaceCwd,
|
|
|
21619
21726
|
}
|
|
21620
21727
|
}
|
|
21621
21728
|
} catch (error2) {
|
|
21729
|
+
readOptions.signal?.throwIfAborted();
|
|
21622
21730
|
liveMergeFailed = true;
|
|
21623
21731
|
writeStderrLine(
|
|
21624
21732
|
`qwen serve: session metadata filter live merge failed; using persisted sessions only: ${error2 instanceof Error ? error2.message : String(error2)}`
|
|
@@ -21633,6 +21741,7 @@ async function listWorkspaceSessionsByMetadataForResponse(bridge, workspaceCwd,
|
|
|
21633
21741
|
getLiveSessionCursorKey(b)
|
|
21634
21742
|
)
|
|
21635
21743
|
);
|
|
21744
|
+
readOptions.signal?.throwIfAborted();
|
|
21636
21745
|
const cursorKey = options.cursor !== void 0 && options.cursor !== "" ? parseMetadataSessionCursor(options.cursor, {
|
|
21637
21746
|
...filter,
|
|
21638
21747
|
archiveState
|
|
@@ -21658,20 +21767,25 @@ async function listWorkspaceSessionsByMetadataForResponse(bridge, workspaceCwd,
|
|
|
21658
21767
|
}
|
|
21659
21768
|
__name(listWorkspaceSessionsByMetadataForResponse, "listWorkspaceSessionsByMetadataForResponse");
|
|
21660
21769
|
async function listWorkspaceSessionsForResponse(bridge, workspaceCwd, options, readOptions = {}) {
|
|
21770
|
+
readOptions.signal?.throwIfAborted();
|
|
21661
21771
|
const runtimeBaseDir = new Storage(
|
|
21662
21772
|
workspaceCwd,
|
|
21663
21773
|
readOptions.runtimeBaseDir
|
|
21664
21774
|
).getRuntimeBaseDir();
|
|
21665
|
-
|
|
21775
|
+
const result = await Storage.runWithResolvedRuntimeBaseDir(
|
|
21666
21776
|
runtimeBaseDir,
|
|
21667
21777
|
() => listWorkspaceSessionsForResponseInRuntime(bridge, workspaceCwd, options, {
|
|
21668
21778
|
...readOptions.mergeLive !== void 0 ? { mergeLive: readOptions.mergeLive } : {},
|
|
21779
|
+
...readOptions.signal !== void 0 ? { signal: readOptions.signal } : {},
|
|
21669
21780
|
runtimeBaseDir
|
|
21670
21781
|
})
|
|
21671
21782
|
);
|
|
21783
|
+
readOptions.signal?.throwIfAborted();
|
|
21784
|
+
return result;
|
|
21672
21785
|
}
|
|
21673
21786
|
__name(listWorkspaceSessionsForResponse, "listWorkspaceSessionsForResponse");
|
|
21674
21787
|
async function listWorkspaceSessionsForResponseInRuntime(bridge, workspaceCwd, options, readOptions) {
|
|
21788
|
+
readOptions.signal?.throwIfAborted();
|
|
21675
21789
|
const rawSize = options?.size;
|
|
21676
21790
|
const requestedSize = typeof rawSize === "number" && Number.isSafeInteger(rawSize) ? rawSize : DEFAULT_SESSION_PAGE_SIZE;
|
|
21677
21791
|
const pageSize = Math.min(Math.max(requestedSize, 1), MAX_SESSION_PAGE_SIZE);
|
|
@@ -21708,13 +21822,21 @@ async function listWorkspaceSessionsForResponseInRuntime(bridge, workspaceCwd, o
|
|
|
21708
21822
|
const persisted = await sessionService.listSessions({
|
|
21709
21823
|
cursor: numericCursor,
|
|
21710
21824
|
size: pageSize,
|
|
21711
|
-
archiveState
|
|
21825
|
+
archiveState,
|
|
21826
|
+
...readOptions.signal ? { signal: readOptions.signal } : {}
|
|
21712
21827
|
});
|
|
21828
|
+
readOptions.signal?.throwIfAborted();
|
|
21713
21829
|
const bySessionId = /* @__PURE__ */ new Map();
|
|
21714
21830
|
for (const item of persisted.items) {
|
|
21715
21831
|
bySessionId.set(item.sessionId, toSummary2(item));
|
|
21716
21832
|
}
|
|
21717
|
-
await enrichWorktreeSidecars(
|
|
21833
|
+
await enrichWorktreeSidecars(
|
|
21834
|
+
bySessionId,
|
|
21835
|
+
sessionService,
|
|
21836
|
+
archiveState,
|
|
21837
|
+
readOptions.signal
|
|
21838
|
+
);
|
|
21839
|
+
readOptions.signal?.throwIfAborted();
|
|
21718
21840
|
if (archiveState === "archived" || readOptions.mergeLive === false) {
|
|
21719
21841
|
const sessions2 = [...bySessionId.values()];
|
|
21720
21842
|
const nextCursor2 = persisted.nextCursor != null ? String(persisted.nextCursor) : void 0;
|
|
@@ -21732,7 +21854,9 @@ async function listWorkspaceSessionsForResponseInRuntime(bridge, workspaceCwd, o
|
|
|
21732
21854
|
// `existing` stayed undefined but `sessionExists` flipped to true,
|
|
21733
21855
|
// silently dropping the live session from the response instead of
|
|
21734
21856
|
// merging it.
|
|
21735
|
-
(persisted.nextCursor == null || !await sessionService.sessionExists(live.sessionId
|
|
21857
|
+
(persisted.nextCursor == null || !await (readOptions.signal ? sessionService.sessionExists(live.sessionId, {
|
|
21858
|
+
signal: readOptions.signal
|
|
21859
|
+
}) : sessionService.sessionExists(live.sessionId)))) {
|
|
21736
21860
|
bySessionId.set(live.sessionId, {
|
|
21737
21861
|
...live,
|
|
21738
21862
|
createdAt: live.createdAt,
|
|
@@ -21747,6 +21871,7 @@ async function listWorkspaceSessionsForResponseInRuntime(bridge, workspaceCwd, o
|
|
|
21747
21871
|
const bTime = Date.parse(b.updatedAt ?? b.createdAt);
|
|
21748
21872
|
return bTime - aTime;
|
|
21749
21873
|
});
|
|
21874
|
+
readOptions.signal?.throwIfAborted();
|
|
21750
21875
|
const nextCursor = persisted.nextCursor != null ? String(persisted.nextCursor) : void 0;
|
|
21751
21876
|
return { sessions, nextCursor };
|
|
21752
21877
|
}
|
|
@@ -21927,6 +22052,8 @@ import * as fs5 from "node:fs/promises";
|
|
|
21927
22052
|
import { createReadStream } from "node:fs";
|
|
21928
22053
|
import readline from "node:readline";
|
|
21929
22054
|
var PREFIX = "subagent.";
|
|
22055
|
+
var MAX_VIRTUAL_SESSION_ID_PART_LENGTH = 500;
|
|
22056
|
+
var MAX_VIRTUAL_SESSION_ID_LENGTH = 2e3;
|
|
21930
22057
|
var POLL_INTERVAL_MS = 250;
|
|
21931
22058
|
var TARGET_RETENTION_MS = 6e4;
|
|
21932
22059
|
async function readFirstUserText(filePath) {
|
|
@@ -22015,26 +22142,40 @@ function decodePart(value) {
|
|
|
22015
22142
|
}
|
|
22016
22143
|
}
|
|
22017
22144
|
__name(decodePart, "decodePart");
|
|
22018
|
-
function
|
|
22019
|
-
return /^[a-zA-Z0-9_-]
|
|
22145
|
+
function isValidVirtualParentSessionId(value) {
|
|
22146
|
+
return value.length > 0 && value.length <= MAX_VIRTUAL_SESSION_ID_PART_LENGTH && /^[a-zA-Z0-9_-]+$/.test(value);
|
|
22020
22147
|
}
|
|
22021
|
-
__name(
|
|
22148
|
+
__name(isValidVirtualParentSessionId, "isValidVirtualParentSessionId");
|
|
22149
|
+
function isValidVirtualAgentId(value) {
|
|
22150
|
+
return value.length > 0 && value.length <= MAX_VIRTUAL_SESSION_ID_PART_LENGTH && // Round-trip rejects lone surrogates: UTF-8 maps them to U+FFFD, so two
|
|
22151
|
+
// distinct agent ids would otherwise encode to the same session id.
|
|
22152
|
+
decodePart(encodePart(value)) === value;
|
|
22153
|
+
}
|
|
22154
|
+
__name(isValidVirtualAgentId, "isValidVirtualAgentId");
|
|
22022
22155
|
function createVirtualSubagentSessionId(parentSessionId, agentId) {
|
|
22023
|
-
if (!
|
|
22156
|
+
if (!isValidVirtualParentSessionId(parentSessionId) || !isValidVirtualAgentId(agentId)) {
|
|
22024
22157
|
throw new Error("Virtual subagent session ids require valid id parts");
|
|
22025
22158
|
}
|
|
22026
|
-
|
|
22159
|
+
const sessionId = `${PREFIX}${encodePart(parentSessionId)}.${encodePart(agentId)}`;
|
|
22160
|
+
if (sessionId.length > MAX_VIRTUAL_SESSION_ID_LENGTH) {
|
|
22161
|
+
throw new Error(
|
|
22162
|
+
`Virtual subagent session id exceeds ${MAX_VIRTUAL_SESSION_ID_LENGTH} characters`
|
|
22163
|
+
);
|
|
22164
|
+
}
|
|
22165
|
+
return sessionId;
|
|
22027
22166
|
}
|
|
22028
22167
|
__name(createVirtualSubagentSessionId, "createVirtualSubagentSessionId");
|
|
22029
22168
|
function parseVirtualSubagentSessionId(sessionId) {
|
|
22030
|
-
if (!sessionId.startsWith(PREFIX) || sessionId.length >
|
|
22169
|
+
if (!sessionId.startsWith(PREFIX) || sessionId.length > MAX_VIRTUAL_SESSION_ID_LENGTH) {
|
|
22031
22170
|
return void 0;
|
|
22032
22171
|
}
|
|
22033
22172
|
const parts = sessionId.slice(PREFIX.length).split(".");
|
|
22034
22173
|
if (parts.length !== 2) return void 0;
|
|
22035
|
-
const
|
|
22036
|
-
const
|
|
22037
|
-
|
|
22174
|
+
const parentPart = parts[0];
|
|
22175
|
+
const agentPart = parts[1];
|
|
22176
|
+
const parentSessionId = decodePart(parentPart);
|
|
22177
|
+
const agentId = decodePart(agentPart);
|
|
22178
|
+
if (!parentSessionId || !agentId || !isValidVirtualParentSessionId(parentSessionId) || !isValidVirtualAgentId(agentId) || encodePart(parentSessionId) !== parentPart || encodePart(agentId) !== agentPart) {
|
|
22038
22179
|
return void 0;
|
|
22039
22180
|
}
|
|
22040
22181
|
return { parentSessionId, agentId };
|
|
@@ -23090,16 +23231,19 @@ function registerSessionRoutes(app, deps) {
|
|
|
23090
23231
|
}
|
|
23091
23232
|
return runtime;
|
|
23092
23233
|
}, "resolveLegacyPrimaryRuntimeFromParam");
|
|
23093
|
-
const hasActivePersistedSessions = /* @__PURE__ */ __name(async (runtime) => {
|
|
23234
|
+
const hasActivePersistedSessions = /* @__PURE__ */ __name(async (runtime, signal) => {
|
|
23094
23235
|
try {
|
|
23095
23236
|
const page = await createWorkspaceRuntimeSessionService(
|
|
23096
23237
|
runtime
|
|
23097
23238
|
).listSessions({
|
|
23098
23239
|
archiveState: "active",
|
|
23099
|
-
size: 1
|
|
23240
|
+
size: 1,
|
|
23241
|
+
signal
|
|
23100
23242
|
});
|
|
23243
|
+
signal.throwIfAborted();
|
|
23101
23244
|
return page.items.length > 0;
|
|
23102
23245
|
} catch {
|
|
23246
|
+
signal.throwIfAborted();
|
|
23103
23247
|
return false;
|
|
23104
23248
|
}
|
|
23105
23249
|
}, "hasActivePersistedSessions");
|
|
@@ -24271,8 +24415,8 @@ function registerSessionRoutes(app, deps) {
|
|
|
24271
24415
|
}, "restoreSessionHandler");
|
|
24272
24416
|
app.post("/session/:id/load", mutate(), restoreSessionHandler("load"));
|
|
24273
24417
|
app.post("/session/:id/resume", mutate(), restoreSessionHandler("resume"));
|
|
24274
|
-
app.get("/session/:id/subagents/:
|
|
24275
|
-
const route = "GET /session/:id/subagents/:
|
|
24418
|
+
app.get("/session/:id/subagents/:subagentRef", async (req, res) => {
|
|
24419
|
+
const route = "GET /session/:id/subagents/:subagentRef";
|
|
24276
24420
|
const sessionId = requireSessionId(req, res);
|
|
24277
24421
|
if (!sessionId) return;
|
|
24278
24422
|
if (!virtualSubagentSessions) {
|
|
@@ -24283,11 +24427,11 @@ function registerSessionRoutes(app, deps) {
|
|
|
24283
24427
|
});
|
|
24284
24428
|
return;
|
|
24285
24429
|
}
|
|
24286
|
-
const
|
|
24287
|
-
if (!
|
|
24430
|
+
const subagentRef = req.params["subagentRef"];
|
|
24431
|
+
if (!subagentRef || subagentRef.length > MAX_VIRTUAL_SESSION_ID_PART_LENGTH) {
|
|
24288
24432
|
res.status(400).json({
|
|
24289
|
-
error: "`
|
|
24290
|
-
code: "
|
|
24433
|
+
error: "`subagentRef` must be a non-empty subagent reference",
|
|
24434
|
+
code: "invalid_subagent_ref"
|
|
24291
24435
|
});
|
|
24292
24436
|
return;
|
|
24293
24437
|
}
|
|
@@ -24303,14 +24447,14 @@ function registerSessionRoutes(app, deps) {
|
|
|
24303
24447
|
const resolved = await virtualSubagentSessions.resolve(
|
|
24304
24448
|
runtime,
|
|
24305
24449
|
sessionId,
|
|
24306
|
-
|
|
24450
|
+
subagentRef
|
|
24307
24451
|
);
|
|
24308
24452
|
if (!resolved) {
|
|
24309
24453
|
res.status(404).json({
|
|
24310
24454
|
error: "Subagent session not found",
|
|
24311
24455
|
code: "session_not_found",
|
|
24312
24456
|
sessionId,
|
|
24313
|
-
|
|
24457
|
+
subagentRef
|
|
24314
24458
|
});
|
|
24315
24459
|
return;
|
|
24316
24460
|
}
|
|
@@ -24320,10 +24464,10 @@ function registerSessionRoutes(app, deps) {
|
|
|
24320
24464
|
}
|
|
24321
24465
|
});
|
|
24322
24466
|
app.post(
|
|
24323
|
-
"/session/:id/subagents/:
|
|
24467
|
+
"/session/:id/subagents/:subagentRef/cancel",
|
|
24324
24468
|
mutate(),
|
|
24325
24469
|
async (req, res) => {
|
|
24326
|
-
const route = "POST /session/:id/subagents/:
|
|
24470
|
+
const route = "POST /session/:id/subagents/:subagentRef/cancel";
|
|
24327
24471
|
const sessionId = requireSessionId(req, res);
|
|
24328
24472
|
if (!sessionId) return;
|
|
24329
24473
|
if (!virtualSubagentSessions) {
|
|
@@ -24334,11 +24478,11 @@ function registerSessionRoutes(app, deps) {
|
|
|
24334
24478
|
});
|
|
24335
24479
|
return;
|
|
24336
24480
|
}
|
|
24337
|
-
const
|
|
24338
|
-
if (!
|
|
24481
|
+
const subagentRef = req.params["subagentRef"];
|
|
24482
|
+
if (!subagentRef || subagentRef.length > MAX_VIRTUAL_SESSION_ID_PART_LENGTH) {
|
|
24339
24483
|
res.status(400).json({
|
|
24340
|
-
error: "`
|
|
24341
|
-
code: "
|
|
24484
|
+
error: "`subagentRef` must be a non-empty subagent reference",
|
|
24485
|
+
code: "invalid_subagent_ref"
|
|
24342
24486
|
});
|
|
24343
24487
|
return;
|
|
24344
24488
|
}
|
|
@@ -24354,14 +24498,14 @@ function registerSessionRoutes(app, deps) {
|
|
|
24354
24498
|
const resolved = await virtualSubagentSessions.resolve(
|
|
24355
24499
|
runtime,
|
|
24356
24500
|
sessionId,
|
|
24357
|
-
|
|
24501
|
+
subagentRef
|
|
24358
24502
|
);
|
|
24359
24503
|
if (!resolved) {
|
|
24360
24504
|
res.status(404).json({
|
|
24361
24505
|
error: "Subagent session not found",
|
|
24362
24506
|
code: "session_not_found",
|
|
24363
24507
|
sessionId,
|
|
24364
|
-
|
|
24508
|
+
subagentRef
|
|
24365
24509
|
});
|
|
24366
24510
|
return;
|
|
24367
24511
|
}
|
|
@@ -25034,12 +25178,18 @@ function registerSessionRoutes(app, deps) {
|
|
|
25034
25178
|
const clientId = parseClientIdHeader(req, res);
|
|
25035
25179
|
if (clientId === null) return;
|
|
25036
25180
|
const promptId = crypto3.randomUUID();
|
|
25037
|
-
|
|
25038
|
-
|
|
25039
|
-
|
|
25040
|
-
|
|
25041
|
-
|
|
25042
|
-
|
|
25181
|
+
const result = await runtime.bridge.continueSession(sessionId, {
|
|
25182
|
+
...clientId !== void 0 ? { clientId } : {},
|
|
25183
|
+
promptId
|
|
25184
|
+
});
|
|
25185
|
+
if (daemonLog && result.accepted) {
|
|
25186
|
+
daemonLog.info("continuation enqueued", {
|
|
25187
|
+
sessionId,
|
|
25188
|
+
promptId,
|
|
25189
|
+
clientId
|
|
25190
|
+
});
|
|
25191
|
+
}
|
|
25192
|
+
res.status(200).json(result);
|
|
25043
25193
|
}
|
|
25044
25194
|
)
|
|
25045
25195
|
);
|
|
@@ -25104,6 +25254,22 @@ function registerSessionRoutes(app, deps) {
|
|
|
25104
25254
|
const forwardedBody = { ...body };
|
|
25105
25255
|
delete forwardedBody["deadlineMs"];
|
|
25106
25256
|
delete forwardedBody["delivery"];
|
|
25257
|
+
const forwardedMeta = typeof forwardedBody["_meta"] === "object" && forwardedBody["_meta"] !== null && !Array.isArray(forwardedBody["_meta"]) ? { ...forwardedBody["_meta"] } : void 0;
|
|
25258
|
+
const promptAuthorization = forwardedMeta?.[CHANNEL_WORKER_PROMPT_AUTHORIZATION_META_KEY];
|
|
25259
|
+
const promptDisplayText = forwardedMeta?.[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
|
|
25260
|
+
if (forwardedMeta) {
|
|
25261
|
+
delete forwardedMeta[CHANNEL_WORKER_PROMPT_AUTHORIZATION_META_KEY];
|
|
25262
|
+
delete forwardedMeta[DAEMON_PROMPT_DISPLAY_TEXT_META_KEY];
|
|
25263
|
+
if (Object.keys(forwardedMeta).length > 0) {
|
|
25264
|
+
forwardedBody["_meta"] = forwardedMeta;
|
|
25265
|
+
} else {
|
|
25266
|
+
delete forwardedBody["_meta"];
|
|
25267
|
+
}
|
|
25268
|
+
}
|
|
25269
|
+
const trustedPromptDisplayText = typeof promptDisplayText === "string" && isChannelWorkerPromptAuthorized(
|
|
25270
|
+
promptAuthorization,
|
|
25271
|
+
runtime.workspaceCwd
|
|
25272
|
+
) ? promptDisplayText : void 0;
|
|
25107
25273
|
const lastEventId = ownerBridge.getSessionLastEventId(sessionId);
|
|
25108
25274
|
const eventEpoch = ownerBridge.getSessionEventEpoch(sessionId);
|
|
25109
25275
|
addDaemonRequestAttribute("qwen-code.prompt_id", promptId);
|
|
@@ -25136,6 +25302,7 @@ function registerSessionRoutes(app, deps) {
|
|
|
25136
25302
|
...clientId !== void 0 ? { clientId } : {},
|
|
25137
25303
|
promptId,
|
|
25138
25304
|
...effectiveDeadlineMs !== void 0 ? { deadlineMs: effectiveDeadlineMs } : {},
|
|
25305
|
+
...trustedPromptDisplayText !== void 0 ? { promptDisplayText: trustedPromptDisplayText } : {},
|
|
25139
25306
|
...delivery !== void 0 ? {
|
|
25140
25307
|
channelDelivery: {
|
|
25141
25308
|
deliveryId: promptId,
|
|
@@ -26014,25 +26181,54 @@ function registerSessionRoutes(app, deps) {
|
|
|
26014
26181
|
...parentSessionId !== void 0 ? { parentSessionId } : {},
|
|
26015
26182
|
...parsedSource
|
|
26016
26183
|
};
|
|
26017
|
-
const
|
|
26018
|
-
|
|
26019
|
-
|
|
26020
|
-
|
|
26184
|
+
const controller = new AbortController();
|
|
26185
|
+
const onRequestAborted = /* @__PURE__ */ __name(() => {
|
|
26186
|
+
controller.abort(new DOMException("Request aborted", "AbortError"));
|
|
26187
|
+
}, "onRequestAborted");
|
|
26188
|
+
const onResponseClosed = /* @__PURE__ */ __name(() => {
|
|
26189
|
+
if (!res.writableEnded) {
|
|
26190
|
+
controller.abort(new DOMException("Response closed", "AbortError"));
|
|
26191
|
+
}
|
|
26192
|
+
}, "onResponseClosed");
|
|
26193
|
+
req.once("aborted", onRequestAborted);
|
|
26194
|
+
res.once("close", onResponseClosed);
|
|
26195
|
+
if (req.aborted || res.destroyed) onRequestAborted();
|
|
26196
|
+
try {
|
|
26197
|
+
const usePersisted = readOnlySecondary || runtime.primary || view === "organized" || archiveState === "archived" || parentSessionId !== void 0 || parsedSource.sourceType !== void 0 || (cursor !== void 0 && cursor !== "" ? isNumericSessionCursor(cursor) : await hasActivePersistedSessions(runtime, controller.signal));
|
|
26198
|
+
if (!usePersisted && (view !== void 0 || archiveState === "archived" || parentSessionId !== void 0 || parsedSource.sourceType !== void 0)) {
|
|
26199
|
+
throw new Error(
|
|
26200
|
+
"session list live path received persisted-only options"
|
|
26201
|
+
);
|
|
26202
|
+
}
|
|
26203
|
+
const result = usePersisted ? await runWorkspaceInspectionWithLogPolicy(
|
|
26204
|
+
runtime,
|
|
26205
|
+
() => listWorkspaceSessionsForResponse(runtime.bridge, key, options, {
|
|
26206
|
+
mergeLive: !readOnlySecondary,
|
|
26207
|
+
runtimeBaseDir: runtime.sessionRuntimeBaseDir,
|
|
26208
|
+
signal: controller.signal
|
|
26209
|
+
})
|
|
26210
|
+
) : listLiveWorkspaceSessionsForResponse(
|
|
26211
|
+
runtime.bridge,
|
|
26212
|
+
key,
|
|
26213
|
+
options
|
|
26021
26214
|
);
|
|
26215
|
+
controller.signal.throwIfAborted();
|
|
26216
|
+
if (res.destroyed) return;
|
|
26217
|
+
res.status(200).json({
|
|
26218
|
+
sessions: result.sessions,
|
|
26219
|
+
...result.nextCursor != null ? { nextCursor: result.nextCursor } : {},
|
|
26220
|
+
...result.liveMergeFailed ? { liveMergeFailed: true } : {},
|
|
26221
|
+
...result.truncated ? { truncated: true } : {}
|
|
26222
|
+
});
|
|
26223
|
+
} catch (err) {
|
|
26224
|
+
if (controller.signal.aborted || res.destroyed) {
|
|
26225
|
+
return;
|
|
26226
|
+
}
|
|
26227
|
+
throw err;
|
|
26228
|
+
} finally {
|
|
26229
|
+
req.off("aborted", onRequestAborted);
|
|
26230
|
+
res.off("close", onResponseClosed);
|
|
26022
26231
|
}
|
|
26023
|
-
const result = usePersisted ? await runWorkspaceInspectionWithLogPolicy(
|
|
26024
|
-
runtime,
|
|
26025
|
-
() => listWorkspaceSessionsForResponse(runtime.bridge, key, options, {
|
|
26026
|
-
mergeLive: !readOnlySecondary,
|
|
26027
|
-
runtimeBaseDir: runtime.sessionRuntimeBaseDir
|
|
26028
|
-
})
|
|
26029
|
-
) : listLiveWorkspaceSessionsForResponse(runtime.bridge, key, options);
|
|
26030
|
-
res.status(200).json({
|
|
26031
|
-
sessions: result.sessions,
|
|
26032
|
-
...result.nextCursor != null ? { nextCursor: result.nextCursor } : {},
|
|
26033
|
-
...result.liveMergeFailed ? { liveMergeFailed: true } : {},
|
|
26034
|
-
...result.truncated ? { truncated: true } : {}
|
|
26035
|
-
});
|
|
26036
26232
|
} catch (err) {
|
|
26037
26233
|
if (err instanceof InvalidCursorError) {
|
|
26038
26234
|
res.status(400).json({
|
|
@@ -26125,6 +26321,35 @@ function registerSessionRoutes(app, deps) {
|
|
|
26125
26321
|
}
|
|
26126
26322
|
)
|
|
26127
26323
|
);
|
|
26324
|
+
app.post(
|
|
26325
|
+
"/session/:id/config-option",
|
|
26326
|
+
mutate(),
|
|
26327
|
+
withOwnerMutableSession(
|
|
26328
|
+
"POST /session/:id/config-option",
|
|
26329
|
+
async (req, res, sessionId, runtime) => {
|
|
26330
|
+
const body = safeBody(req);
|
|
26331
|
+
const configId = body["configId"];
|
|
26332
|
+
const value = body["value"];
|
|
26333
|
+
if (configId !== "reasoning_effort") {
|
|
26334
|
+
res.status(400).json({
|
|
26335
|
+
error: "`configId` must be reasoning_effort"
|
|
26336
|
+
});
|
|
26337
|
+
return;
|
|
26338
|
+
}
|
|
26339
|
+
if (typeof value !== "string" || !value) {
|
|
26340
|
+
res.status(400).json({
|
|
26341
|
+
error: "`value` is required and must be a non-empty string"
|
|
26342
|
+
});
|
|
26343
|
+
return;
|
|
26344
|
+
}
|
|
26345
|
+
const response = await runtime.bridge.setSessionConfigOption(
|
|
26346
|
+
sessionId,
|
|
26347
|
+
{ sessionId, configId, value }
|
|
26348
|
+
);
|
|
26349
|
+
res.status(200).json(response);
|
|
26350
|
+
}
|
|
26351
|
+
)
|
|
26352
|
+
);
|
|
26128
26353
|
app.post(
|
|
26129
26354
|
"/session/:id/recap",
|
|
26130
26355
|
mutate(),
|