@qwen-code/qwen-code 0.22.2 → 0.22.3-nightly.20260831.3a0c4c6108
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/computer-use/SKILL.md +3 -3
- package/bundled/qc-helper/docs/common-workflow.md +32 -0
- package/bundled/qc-helper/docs/configuration/auth.md +6 -6
- package/bundled/qc-helper/docs/configuration/model-providers.md +4 -2
- package/bundled/qc-helper/docs/configuration/settings.md +47 -44
- package/bundled/qc-helper/docs/extension/introduction.md +1 -1
- package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
- package/bundled/qc-helper/docs/features/auto-mode.md +34 -17
- package/bundled/qc-helper/docs/features/channels/dws.md +2 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +36 -3
- package/bundled/qc-helper/docs/features/code-review.md +5 -5
- package/bundled/qc-helper/docs/features/commands.md +41 -0
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/hooks.md +6 -2
- package/bundled/qc-helper/docs/features/memory.md +1 -0
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +17 -7
- package/bundled/qc-helper/docs/qwen-serve.md +59 -55
- package/bundled/review/SKILL.md +90 -31
- package/bundled/review/references/persistence.md +7 -3
- package/bundled/review/references/posting.md +11 -5
- package/chunks/MaxSizedBox-IHRTWGSY.js +115 -0
- package/chunks/{StandaloneSessionPicker-AVLI6VJP.js → StandaloneSessionPicker-TLVWVTJ7.js} +88 -85
- package/chunks/{acp-startup-profiler-GNYAL6LI.js → acp-startup-profiler-M4X5F3VK.js} +2 -2
- package/chunks/{acpAgent-MXEAN54C.js → acpAgent-7I5LLPP3.js} +1563 -407
- package/chunks/agent-4Z4NTJXD.js +99 -0
- package/chunks/agent-headless-TVUJXQWU.js +89 -0
- package/chunks/{anthropicContentGenerator-HGMBACVE.js → anthropicContentGenerator-VSSPG7XV.js} +84 -55
- package/chunks/{artifact-tool-5YT4QF7Y.js → artifact-tool-TEYW6I4A.js} +11 -3
- package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-PYNBWV63.js} +45 -7
- package/chunks/bridge-EVURP4NO.js +122 -0
- package/chunks/{ca-7HPYOYSZ.js → ca-BNU7YNDE.js} +3 -0
- package/chunks/{channel-management-service-X4AZ6IXX.js → channel-management-service-IDBNYSFW.js} +6 -6
- package/chunks/channel-settings-store-MZNXRKVI.js +125 -0
- package/chunks/{channel-worker-group-27HMGD5S.js → channel-worker-group-ZLP5SJHT.js} +7 -7
- package/chunks/{channel-worker-manager-QEGX646Z.js → channel-worker-manager-FG5377T2.js} +7 -7
- package/chunks/{channel-worker-supervisor-UEW2WWCC.js → channel-worker-supervisor-HDVE4ADS.js} +4 -4
- package/chunks/{chunk-PPKZ7JOE.js → chunk-22UH7VTP.js} +1 -1
- package/chunks/chunk-24FVUD5P.js +49 -0
- package/chunks/{chunk-CMHFCLBU.js → chunk-26SIKQIC.js} +1 -1
- package/chunks/{chunk-5PA6UEYA.js → chunk-3452WXOK.js} +4 -1
- package/chunks/{chunk-SFPGAQUL.js → chunk-373DQUVA.js} +72 -31
- package/chunks/{chunk-H2WDGQ6D.js → chunk-3AKCBZVW.js} +3 -3
- package/chunks/{chunk-LXIBMVRN.js → chunk-3CZGSTZX.js} +15 -9
- package/chunks/{chunk-JVPFTDBK.js → chunk-3EGEBDTW.js} +1 -1
- package/chunks/{chunk-K2NQPH5D.js → chunk-3NQCZMUB.js} +79 -5
- package/chunks/{chunk-E7REAOTN.js → chunk-47ECGEJC.js} +4 -0
- package/chunks/{chunk-WKK5BQNP.js → chunk-4P7PPAHN.js} +45 -421
- package/chunks/chunk-4VQBQLIZ.js +293 -0
- package/chunks/{chunk-4JWNNLPT.js → chunk-5FGWVPCM.js} +4 -4
- package/chunks/{chunk-ZFKOCECU.js → chunk-5ICKESC3.js} +2 -2
- package/chunks/{chunk-3I6UTTDX.js → chunk-67AY5D3M.js} +20 -20
- package/chunks/chunk-6HUXPLB5.js +110 -0
- package/chunks/{chunk-BRVWYMKV.js → chunk-6MBXY6WM.js} +1 -1
- package/chunks/{chunk-6LFTG244.js → chunk-6NWPR2EB.js} +19 -9
- package/chunks/chunk-6OO7QEWV.js +2581 -0
- package/chunks/{chunk-TWSKM647.js → chunk-6VHIWUJP.js} +1 -1
- package/chunks/{chunk-RJC5EIKY.js → chunk-6YXNJXQW.js} +7 -5
- package/chunks/{chunk-TPI7O7HR.js → chunk-7DDTI7Q3.js} +1 -1
- package/chunks/{chunk-KGJGEEVR.js → chunk-7FA2II6K.js} +10 -1
- package/chunks/chunk-7J6OTNGO.js +424 -0
- package/chunks/{chunk-NIFYWDYN.js → chunk-7TBU7PU2.js} +1 -1
- package/chunks/{chunk-3FDFA4MZ.js → chunk-7XICSE62.js} +3 -3
- package/chunks/{chunk-V2NDP3I4.js → chunk-7XL4WRXM.js} +2 -2
- package/chunks/{chunk-F7TNAPZ4.js → chunk-AAX236AR.js} +45 -11
- package/chunks/{chunk-T32W2JHI.js → chunk-ACZ4YRYK.js} +6 -6
- package/chunks/chunk-ADJD4LZF.js +210 -0
- package/chunks/{chunk-JWALNCLT.js → chunk-AF3QB6OL.js} +1 -1
- package/chunks/{chunk-P2SU6ZTI.js → chunk-AI35S34R.js} +3 -3
- package/chunks/{chunk-OIP7C4FE.js → chunk-AKNQMSL2.js} +5 -5
- package/chunks/{chunk-6CGL7E7G.js → chunk-AN3KFCNH.js} +2 -2
- package/chunks/{chunk-ABS25QER.js → chunk-ANVG3BVV.js} +1 -1
- package/chunks/chunk-AYYKUUKP.js +972 -0
- package/chunks/chunk-B2RIIK3K.js +346 -0
- package/chunks/{chunk-F5SZP77N.js → chunk-BBYTY46C.js} +153 -112
- package/chunks/{chunk-XRSOI3DL.js → chunk-BE5FGT5Z.js} +1 -1
- package/chunks/{chunk-BGXZBI5B.js → chunk-BHTYRHJF.js} +3 -2
- package/chunks/{chunk-CSMI4FP5.js → chunk-BSJOBW4U.js} +1 -1
- package/chunks/{chunk-Z7TGYN5F.js → chunk-BXNKREX7.js} +3 -3
- package/chunks/{chunk-4MQEPP3Y.js → chunk-BY24DZ4J.js} +5 -119
- package/chunks/{chunk-5XBFCMWD.js → chunk-CAZADEU7.js} +17 -9
- package/chunks/chunk-CHEIIBT3.js +40 -0
- package/chunks/{chunk-BBWV7ONL.js → chunk-CM4F4JBB.js} +6 -6
- package/chunks/{chunk-CAJTKR6W.js → chunk-D7D3HSYQ.js} +6 -5
- package/chunks/{chunk-3DXFGHAJ.js → chunk-DBTMP3P4.js} +213 -185
- package/chunks/chunk-DJBQCO2E.js +842 -0
- package/chunks/{chunk-RXFQM6FQ.js → chunk-DMEUXLSS.js} +16 -1
- package/chunks/{chunk-3AFMQUTI.js → chunk-E4JNFXNI.js} +3 -3
- package/chunks/{chunk-UHQFIS7N.js → chunk-EAHOJF6V.js} +28 -4
- package/chunks/{chunk-OIVXBW3W.js → chunk-ED7DD7MV.js} +3 -3
- package/chunks/{chunk-6DIGWMGT.js → chunk-EIJT2PQ6.js} +2 -2
- package/chunks/{chunk-XQFT3QUF.js → chunk-ENYUKMFK.js} +1 -1
- package/chunks/{chunk-CQH5KTKC.js → chunk-ERHAMGAA.js} +1 -1
- package/chunks/{chunk-IOPCFOTF.js → chunk-ERRJA23L.js} +3 -3
- package/chunks/{chunk-LDP5OD6N.js → chunk-EU2B4P3D.js} +12 -12
- package/chunks/{chunk-W5MJJ2V7.js → chunk-FHPYRXRH.js} +1 -1
- package/chunks/{chunk-IZIVM7LZ.js → chunk-FIWZOMBF.js} +3 -3
- package/chunks/{chunk-4HV6HH33.js → chunk-FPMQT2YY.js} +9 -9
- package/chunks/{chunk-Z7VOMGDC.js → chunk-FTJMWDND.js} +0 -24
- package/chunks/{chunk-L2M46FP5.js → chunk-FXUSWLBF.js} +225 -12
- package/chunks/{chunk-VVW4ZNFY.js → chunk-GB4UKWY5.js} +16 -8
- package/chunks/{chunk-PKAYJDB3.js → chunk-GCUR24KK.js} +22 -4
- package/chunks/{chunk-DIMEPKCW.js → chunk-GDXSXL3H.js} +11 -1
- package/chunks/{chunk-7JPW6IYH.js → chunk-GN422P4J.js} +1 -1
- package/chunks/{chunk-66KDY3LV.js → chunk-GS7XT345.js} +3 -3
- package/chunks/{chunk-PFCQ62V4.js → chunk-H2A2GJGL.js} +6 -6
- package/chunks/{chunk-Z7FLBQPR.js → chunk-H5GPPDGY.js} +8 -8
- package/chunks/{chunk-CPGJJJLU.js → chunk-HDMKCJHI.js} +1 -1
- package/chunks/{chunk-6PJOTWAN.js → chunk-HT5S5TRQ.js} +1 -1
- package/chunks/{chunk-Z4X5MTRT.js → chunk-HWVUSYSN.js} +5 -12
- package/chunks/{chunk-V4QXXQJ2.js → chunk-I75VKFCJ.js} +4 -4
- package/chunks/{chunk-NU7RKEZR.js → chunk-IBMUI5EV.js} +3 -3
- package/chunks/{chunk-4J657AJR.js → chunk-ID33ZRWH.js} +42 -42
- package/chunks/{chunk-R4PMVSR5.js → chunk-IIFL7QDN.js} +30 -192
- package/chunks/{chunk-MQM5PJML.js → chunk-IVUWTA2D.js} +1 -1
- package/chunks/{chunk-E55H6BZ7.js → chunk-IXEZHTDR.js} +1616 -151
- package/chunks/{chunk-XF63PKEN.js → chunk-IXHV5MIC.js} +1 -1
- package/chunks/{chunk-JHS74YAB.js → chunk-J4Y3QJHF.js} +3 -1
- package/chunks/{chunk-MIIVI25Q.js → chunk-JDIO45X7.js} +3 -3
- package/chunks/{chunk-QFCDF5PL.js → chunk-JHN7UIDW.js} +1 -1
- package/chunks/{chunk-FDY5RMGH.js → chunk-JLSZT354.js} +2 -2
- package/chunks/chunk-JMRE4WJQ.js +1849 -0
- package/chunks/{chunk-FY76G3G5.js → chunk-JOTYTYYW.js} +6 -6
- package/chunks/{chunk-TRZTNIQ6.js → chunk-JOWQD4LO.js} +3 -3
- package/chunks/{chunk-KEKZFOL6.js → chunk-JPKTAQS3.js} +1 -1
- package/chunks/chunk-JS73NNWF.js +30 -0
- package/chunks/chunk-JX6XHPTX.js +26 -0
- package/chunks/{chunk-5JTIYALA.js → chunk-JZWOCUZ3.js} +1 -1
- package/chunks/{chunk-3JGZSIDA.js → chunk-KFN2IZYR.js} +3 -3
- package/chunks/{chunk-23RFD54N.js → chunk-KHP66DFN.js} +1 -1
- package/chunks/{chunk-AGR5UROZ.js → chunk-KUDI54QQ.js} +23 -33
- package/chunks/{chunk-3SGB2UHX.js → chunk-L2OKAIUK.js} +28 -16
- package/chunks/{chunk-BXDAPVQU.js → chunk-L6CUJZDG.js} +28 -4
- package/chunks/chunk-LAUEEBDL.js +277 -0
- package/chunks/{chunk-BNMF3K5X.js → chunk-LFAR7CPW.js} +55 -39
- package/chunks/{chunk-Y3QL45LS.js → chunk-LKODFJRD.js} +9 -9
- package/chunks/{chunk-BWORX6FA.js → chunk-LMMHS3RS.js} +1 -1
- package/chunks/{chunk-UTLCH2FK.js → chunk-LYSZVCCD.js} +10 -7
- package/chunks/{chunk-F6FV3C5K.js → chunk-MBZ5ORJB.js} +264 -283
- package/chunks/{chunk-L6YT5H34.js → chunk-MJBHSZEJ.js} +5 -5
- package/chunks/{chunk-B7CDU2SL.js → chunk-MOF6VZN2.js} +18 -21
- package/chunks/{chunk-6LFJEACX.js → chunk-MZ5A5PQW.js} +7 -7
- package/chunks/chunk-MZYWNU66.js +149 -0
- package/chunks/{chunk-2TNL5KPM.js → chunk-N4QWUPDM.js} +7 -0
- package/chunks/{chunk-5O72BNDD.js → chunk-ND7TQQPE.js} +9 -9
- package/chunks/{chunk-QP4C6WCE.js → chunk-NGKLMNWN.js} +3 -3
- package/chunks/{chunk-JSC3H3TD.js → chunk-NT5XIL5H.js} +46 -18
- package/chunks/{chunk-KUX5D6DK.js → chunk-NT7LXVV5.js} +11010 -11138
- package/chunks/{chunk-PDQGMSZK.js → chunk-ODZF64DM.js} +1 -1
- package/chunks/{chunk-FBSSIAAQ.js → chunk-OE5AQVNB.js} +8 -8
- package/chunks/chunk-OHU2H5CS.js +130 -0
- package/chunks/{chunk-2K6ORIHJ.js → chunk-OKMDOATP.js} +13 -13
- package/chunks/{chunk-JB4JIVTJ.js → chunk-OKTNXDVO.js} +1 -1
- package/chunks/{chunk-XDLEZ5HX.js → chunk-OQYXJK2V.js} +1 -1
- package/chunks/{chunk-EFUM7RVY.js → chunk-OSTQZIOY.js} +944 -18
- package/chunks/{chunk-VQUGEVGR.js → chunk-OTTNXUT5.js} +1 -1
- package/chunks/{chunk-T3WXYEZ4.js → chunk-PB7JBAHF.js} +53 -54
- package/chunks/{chunk-WAOIHTJS.js → chunk-PDAKFU7M.js} +1 -1
- package/chunks/{chunk-43GGFFLY.js → chunk-PDXYZBBQ.js} +3 -3
- package/chunks/{chunk-4CMJKUND.js → chunk-PNIGAVY6.js} +67 -2
- package/chunks/{chunk-SAH4BD2J.js → chunk-PQEISIKS.js} +67 -0
- package/chunks/{chunk-4CDSK5AZ.js → chunk-PWR2NQBS.js} +6 -6
- package/chunks/{chunk-YTDVNSUQ.js → chunk-QAK5475D.js} +1 -1
- package/chunks/{chunk-IJKTMLBE.js → chunk-QE7DTCLX.js} +1 -1
- package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
- package/chunks/{chunk-C6K43ZDE.js → chunk-QTMPM6RC.js} +16 -10
- package/chunks/{chunk-P5GGM4KS.js → chunk-RAEEQEC5.js} +5 -5
- package/chunks/{chunk-XDFHY4R3.js → chunk-RGEV5AUD.js} +242 -14
- package/chunks/{chunk-M6FOJXW3.js → chunk-RKW36UWC.js} +1 -1
- package/chunks/{chunk-RIEFGNTP.js → chunk-RLSPPTWH.js} +5119 -683
- package/chunks/{chunk-PDMJ3KGS.js → chunk-RT4QNQ5P.js} +3 -3
- package/chunks/{chunk-SJ3ZUWFK.js → chunk-RVCGAHC7.js} +4 -26
- package/chunks/{chunk-77RG5SFQ.js → chunk-RY7DL5IF.js} +11 -6
- package/chunks/{chunk-4FTKQNWJ.js → chunk-S2T7H5MI.js} +182 -3
- package/chunks/{chunk-EOGELB3H.js → chunk-SDCHI64N.js} +4 -4
- package/chunks/{chunk-EKSCLBBF.js → chunk-SMJYTKTB.js} +23 -5
- package/chunks/{chunk-MZS7GEC7.js → chunk-SMRDCANI.js} +1 -1
- package/chunks/{chunk-43UYNAWX.js → chunk-T3TL6S3B.js} +4 -4
- package/chunks/{chunk-4K7NQDCG.js → chunk-T4EFG2P5.js} +18 -9
- package/chunks/{chunk-IK5BW3CS.js → chunk-T4RMUTTT.js} +16 -5
- package/chunks/{chunk-L6BZRIUL.js → chunk-TBJ3SNS3.js} +183 -5
- package/chunks/{chunk-CCBZDVUA.js → chunk-TNMOFNT4.js} +133 -122
- package/chunks/{chunk-Y6LSMB6J.js → chunk-TV7BJ7TX.js} +1 -1
- package/chunks/{chunk-G34IR3D6.js → chunk-U5RTYI7D.js} +102 -146
- package/chunks/{chunk-TTX2JUE6.js → chunk-U6D2PPMN.js} +1 -1
- package/chunks/{chunk-D5LUXLUH.js → chunk-UJ4DUYIH.js} +18 -4
- package/chunks/{chunk-A7YP63XN.js → chunk-UKB2TZAO.js} +5 -5
- package/chunks/{chunk-VTHREBQM.js → chunk-UKYXYWI2.js} +2 -2
- package/chunks/{chunk-2NYCN6F2.js → chunk-UVYKCRJZ.js} +46 -29
- package/chunks/{chunk-HVEYF6VT.js → chunk-UXEW7TQS.js} +2 -2
- package/chunks/{chunk-HVQ3B7FF.js → chunk-V4HN35IF.js} +44 -7
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-V5J4J5TP.js → chunk-VYSZUQGU.js} +2 -20
- package/chunks/{chunk-6IUNAPLR.js → chunk-W4BDHLRT.js} +3 -3
- package/chunks/{chunk-Q26AYA62.js → chunk-W7KWB6AH.js} +7 -4
- package/chunks/chunk-WLEYH7CD.js +332 -0
- package/chunks/{chunk-RU7BK6B3.js → chunk-X7C7KFWA.js} +2 -2
- package/chunks/{chunk-YRLW2MSX.js → chunk-XBVNNDPK.js} +11 -4
- package/chunks/{chunk-BFPESSTR.js → chunk-XEAAO654.js} +1 -1
- package/chunks/{chunk-JU4EEXC7.js → chunk-XLENZQXH.js} +2 -2
- package/chunks/{chunk-JSHHYW6T.js → chunk-XPDKSOVW.js} +69 -64
- package/chunks/chunk-YDQ4OCDK.js +1222 -0
- package/chunks/{chunk-ZU4UDIWX.js → chunk-YKADANK6.js} +6 -7
- package/chunks/{chunk-JCQD3INC.js → chunk-YNG7XAJU.js} +3 -3
- package/chunks/{chunk-O2UN57NX.js → chunk-YOFULAHO.js} +19 -2
- package/chunks/{chunk-BAJKAAOY.js → chunk-YOMKOM7E.js} +4892 -1504
- package/chunks/{chunk-ERFDKH32.js → chunk-YPISTYEI.js} +8 -7
- package/chunks/{chunk-TGWAQ5RB.js → chunk-ZBDYI7VM.js} +6900 -6882
- package/chunks/{chunk-OZ6KS6KW.js → chunk-ZGCKTAL5.js} +6 -1
- package/chunks/chunk-ZHO2CW6D.js +205 -0
- package/chunks/{chunk-DZWPESIF.js → chunk-ZQ3FKEWA.js} +3 -3
- package/chunks/{chunk-7EQQR46F.js → chunk-ZVP4PWBU.js} +1 -1
- package/chunks/{chunk-7UYV53BC.js → chunk-ZYPJ7HVZ.js} +1 -1
- package/chunks/config-utils-NNUPVGEC.js +118 -0
- package/chunks/contextCommand-S3TPCDM5.js +111 -0
- package/chunks/{core-runtime-677KFX6Q.js → core-runtime-NASPCSQX.js} +66 -63
- package/chunks/{create-sub-session-23ITIELI.js → create-sub-session-36TNCHCP.js} +3 -3
- package/chunks/{create-sub-session-JKZAYZX7.js → create-sub-session-DS4BJLYZ.js} +97 -68
- package/chunks/{cron-create-KJ4IY6PP.js → cron-create-QXHTYUTO.js} +4 -4
- package/chunks/{cron-delete-MBLQCAYY.js → cron-delete-WV2BM42M.js} +4 -4
- package/chunks/{cron-list-DWH2PQ47.js → cron-list-7KVNBLZ7.js} +4 -4
- package/chunks/{daemon-MJQUO7RA.js → daemon-UCVUHPJD.js} +723 -90
- package/chunks/{daemon-git-worktree-guard-6MVAAZZZ.js → daemon-git-worktree-guard-ATXVQPS3.js} +63 -60
- package/chunks/daemon-status-provider-UI3GBTMO.js +121 -0
- package/chunks/daemon-trust-policy-SUCBJ2CA.js +117 -0
- package/chunks/{daemon-trust-policy-monitor-B5U6TQX5.js → daemon-trust-policy-monitor-3LM5RQNS.js} +71 -68
- package/chunks/{de-X6HLSIFE.js → de-T4BLOKEC.js} +3 -0
- package/chunks/deferred-core-runtime-SCOJLVYG.js +119 -0
- package/chunks/{display-image-BE7I6ZB6.js → display-image-Z4VBQDEJ.js} +5 -5
- package/chunks/{dist-TJUDJTCB.js → dist-5423MG3D.js} +411 -91
- package/chunks/{dist-ILDBUWDB.js → dist-7WDZYMWV.js} +43 -25
- package/chunks/{dist-ZBVOXSKF.js → dist-FLJLHASF.js} +219 -121
- package/chunks/{dist-QODVOVWI.js → dist-GPSRNVVP.js} +43 -35
- package/chunks/{dist-DJBNNPLN.js → dist-LY66XNUL.js} +10 -3
- package/chunks/{dist-7CKN54NL.js → dist-S3BKCTWF.js} +205 -89
- package/chunks/{dist-UQUFZDIY.js → dist-SDKHGH5O.js} +41 -20
- package/chunks/{dist-4Q7NTUNB.js → dist-WAUO5OMN.js} +46 -22
- package/chunks/{dist-SATKXKUR.js → dist-WIVVPE7M.js} +28 -14
- package/chunks/earlyInputCapture-INWJ2STR.js +112 -0
- package/chunks/{edit-BSV6YRVW.js → edit-B7ZRRGAE.js} +51 -49
- package/chunks/{en-YLXBXM4Z.js → en-E4AYTX6H.js} +3 -0
- package/chunks/{enter-worktree-MQXFFPKM.js → enter-worktree-SPZHEETQ.js} +7 -7
- package/chunks/{enterPlanMode-PKNF35FE.js → enterPlanMode-S554IKJ2.js} +55 -53
- package/chunks/environment-25ADH4Y6.js +134 -0
- package/chunks/errors-G2I6LFTW.js +118 -0
- package/chunks/{exit-worktree-L344UY7K.js → exit-worktree-AWUXAMAM.js} +7 -7
- package/chunks/exitPlanMode-ZFH4OYPM.js +87 -0
- package/chunks/{fast-path-773PV7PU.js → fast-path-WZHVZ2ER.js} +8 -7
- package/chunks/{fast-path-settings-XMFBYFUH.js → fast-path-settings-NILM6QZL.js} +3 -3
- package/chunks/{fr-FTZWF462.js → fr-BGHGYX6A.js} +3 -0
- package/chunks/{glob-CZHOWUEA.js → glob-UOVDMBUP.js} +50 -48
- package/chunks/{goal-tools-YZQJXTGH.js → goal-tools-7TNK5ZHC.js} +5 -4
- package/chunks/{grep-5GPICQBU.js → grep-LHYJ5V2N.js} +9 -7
- package/chunks/handleAutoUpdate-4MZ45DZY.js +114 -0
- package/chunks/i18n-KWUEI4DS.js +129 -0
- package/chunks/{image-gen-HAYOEQ4O.js → image-gen-YZDVO5YS.js} +8 -10
- package/chunks/initializer-2NBROGMG.js +118 -0
- package/chunks/installationInfo-YKUSY3ZB.js +112 -0
- package/chunks/{ja-2GL5FKYJ.js → ja-G3FTD5XE.js} +3 -0
- package/chunks/{keychain-token-storage-37XPR34V.js → keychain-token-storage-REZVMJA6.js} +2 -2
- package/chunks/list-W2WV3COM.js +121 -0
- package/chunks/list-agents-PMVMHNY7.js +128 -0
- package/chunks/{gemini-IP4FJAP5.js → llm-NPPHLIJI.js} +162 -133
- package/chunks/{geminiContentGenerator-PUNEBWJW.js → llm-content-generator-YK3WN6XW.js} +29 -29
- package/chunks/loadedSettingsAdapter-2P7DFWUR.js +115 -0
- package/chunks/{loggingContentGenerator-2GGZNGLG.js → loggingContentGenerator-QYYYGU6V.js} +318 -35
- package/chunks/{loop-wakeup-XJFONSQ7.js → loop-wakeup-EBM4F5MZ.js} +5 -5
- package/chunks/{ls-3VAT2J7A.js → ls-F6TRX3DD.js} +4 -4
- package/chunks/{lsp-5W7IRUBH.js → lsp-QYTOS2FI.js} +2 -2
- package/chunks/{managed-npm-update-5TEV2E3J.js → managed-npm-update-UMC4NBWW.js} +64 -61
- package/chunks/mcp-OFI6XDP2.js +115 -0
- package/chunks/{monitor-FI7PY36Z.js → monitor-QX3BM3JY.js} +50 -48
- package/chunks/nonInteractiveCli-NVRMD5MN.js +193 -0
- package/chunks/{notebook-edit-TPGMGBST.js → notebook-edit-AAILDPSV.js} +51 -49
- package/chunks/{open-with-auth-4UI3KHUR.js → open-with-auth-D6JD6LDS.js} +4 -4
- package/chunks/{openaiContentGenerator-SUCYANUZ.js → openaiContentGenerator-53PB3CMN.js} +27 -29
- package/chunks/pidfile-5ACKG2LI.js +116 -0
- package/chunks/process-registry-OAEG6WGC.js +662 -0
- package/chunks/{processUtils-IQZBYWSB.js → processUtils-2BCDO3DZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-3RKW73A2.js +110 -0
- package/chunks/{pt-XN2YWJVM.js → pt-D73IFYT7.js} +3 -0
- package/chunks/{qwenContentGenerator-J4TXFGJT.js → qwenContentGenerator-N4LLWDPH.js} +56 -54
- package/chunks/{qwenOAuth2-RF33DNZW.js → qwenOAuth2-7AOCKSOQ.js} +7 -9
- package/chunks/{read-file-QE2B5FTX.js → read-file-DPAKXHYE.js} +13 -13
- package/chunks/{read-mcp-resource-XD257PGJ.js → read-mcp-resource-R4NO75DW.js} +2 -2
- package/chunks/{record-artifact-RZGZBENU.js → record-artifact-2EAYLAL5.js} +4 -4
- package/chunks/{report-findings-Q3SYKKW5.js → report-findings-Y4MSHDS3.js} +9 -5
- package/chunks/{request-shutdown-BCLA3JV2.js → request-shutdown-DWRMGTMB.js} +8 -7
- package/chunks/resumeHistoryUtils-3JQORXAK.js +123 -0
- package/chunks/ripGrep-AHF5QCI7.js +39 -0
- package/chunks/{ru-OLTMFJEW.js → ru-QMISLKRH.js} +3 -0
- package/chunks/{run-qwen-serve-TPHZMSXJ.js → run-qwen-serve-3LKV7KDC.js} +728 -256
- package/chunks/runtime-66F4W3IA.js +153 -0
- package/chunks/scheduled-tasks-2NVKS5Q2.js +132 -0
- package/chunks/scheduler-JNV7T3ZO.js +127 -0
- package/chunks/{sdk-exporters-http-KCJ4ZFG7.js → sdk-exporters-http-MFIWD23D.js} +2 -2
- package/chunks/{sdk-impl-HLSEDAEP.js → sdk-impl-2RXJ4Q6X.js} +11 -5
- package/chunks/send-message-WPZRCJOB.js +442 -0
- package/chunks/serve-GP2UNRP7.js +123 -0
- package/chunks/{server-DFUSSSHI.js → server-7W6C3SOW.js} +5233 -3623
- package/chunks/{session-3TEHNENZ.js → session-PZLBAQGG.js} +125 -118
- package/chunks/session-pr-refresh-OIVL3U3Z.js +367 -0
- package/chunks/{settings-VOZYKLTT.js → settings-ZOHIQWYK.js} +70 -67
- package/chunks/shell-FWZT6IUR.js +97 -0
- package/chunks/{skill-FEOKFX26.js → skill-RTQC2YGA.js} +121 -65
- package/chunks/skill-settings-AKMIXFSJ.js +123 -0
- package/chunks/spawnChannel-ZP23JL6O.js +116 -0
- package/chunks/standalone-update-P2Q5H4ZU.js +123 -0
- package/chunks/{startInteractiveUI-WHJPFOGH.js → startInteractiveUI-NSA6QPQZ.js} +2018 -1526
- package/chunks/{stdioHelpers-7A2EE64Z.js → stdioHelpers-AY6XCDY2.js} +3 -1
- package/chunks/{syntheticOutput-ML43GEFN.js → syntheticOutput-5URSQLIS.js} +3 -3
- package/chunks/{task-create-TMSV7RD5.js → task-create-3EXVDG3G.js} +12 -12
- package/chunks/{task-list-W55RBFRX.js → task-list-PIBYNSE7.js} +5 -6
- package/chunks/{task-stop-CXEH5L2D.js → task-stop-IV3BYWJC.js} +2 -2
- package/chunks/{task-update-N536I4GQ.js → task-update-H5BPDS5Y.js} +13 -14
- package/chunks/{team-create-QYSWCYCL.js → team-create-53T42W37.js} +56 -55
- package/chunks/{team-delete-FJRFX33M.js → team-delete-X3WPELS6.js} +25 -8
- package/chunks/{team-plan-approval-P7DAD644.js → team-plan-approval-D45ZC5OE.js} +50 -48
- package/chunks/terminal-image-renderer-FCRUWT6C.js +121 -0
- package/chunks/theme-manager-MHNPEDP7.js +107 -0
- package/chunks/{todoWrite-WDJNQEMW.js → todoWrite-A5IOZZ3P.js} +4 -4
- package/chunks/{tool-search-F2EMIAPV.js → tool-search-6RPBGGUX.js} +27 -23
- package/chunks/total-session-admission-MGV56XDK.js +117 -0
- package/chunks/trustedFolders-QJYEFMTU.js +127 -0
- package/chunks/{types-WYCFCEHR.js → types-HKLPXZB3.js} +1 -3
- package/chunks/{update-relaunch-4GF3OXMB.js → update-relaunch-ZDMQX63C.js} +6 -6
- package/chunks/updateCheck-4QZWCGP6.js +123 -0
- package/chunks/useAutoAcceptIndicator-DLIQN256.js +125 -0
- package/chunks/{validateNonInterActiveAuth-BPPA563H.js → validateNonInterActiveAuth-HGTG7AEK.js} +114 -107
- package/chunks/{version-ANP4TS6O.js → version-CPAZMC4B.js} +1 -1
- package/chunks/{web-fetch-QJADSAH3.js → web-fetch-N4K5M3M4.js} +16 -18
- package/chunks/{web-search-7TTQKEKM.js → web-search-4VZKM5SF.js} +9 -11
- package/chunks/{web-shell-static-A6QMUNNV.js → web-shell-static-PW7OEDQO.js} +3 -2
- package/chunks/{workflow-5XN6XSOT.js → workflow-2ALQKTHG.js} +229 -146
- package/chunks/workspace-providers-status-5JM4CB6R.js +119 -0
- package/chunks/{workspace-registration-store-XKVW2YVH.js → workspace-registration-store-RNMFVCH7.js} +2 -1
- package/chunks/workspace-registry-6EULAPZC.js +126 -0
- package/chunks/workspace-runtime-coordinator-IRI2DRCJ.js +127 -0
- package/chunks/workspace-service-SETHN4WE.js +131 -0
- package/chunks/workspace-skills-status-4D4EUEQU.js +118 -0
- package/chunks/{workspace-trust-reconciler-KLGOB53D.js → workspace-trust-reconciler-4LR3CDL4.js} +77 -76
- package/chunks/write-file-45GWPSOI.js +92 -0
- package/chunks/{zh-UNY63FR3.js → zh-2BQ7P6OD.js} +3 -0
- package/chunks/{zh-TW-RPTMRTHG.js → zh-TW-UFXRZTXX.js} +3 -0
- package/chunks/{zoom-image-6ASG6J4C.js → zoom-image-K6IQUKRC.js} +13 -13
- package/cli.js +129 -92
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +6 -0
- package/locales/fr.js +6 -0
- package/locales/ja.js +6 -0
- package/locales/pt.js +6 -0
- package/locales/ru.js +6 -0
- package/locales/zh-TW.js +6 -0
- package/locales/zh.js +6 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-uS-vtfs3.js → abnfDiagram-VCTEODGH-C80OZcPP.js} +1 -1
- package/web-shell/assets/{arc-BSTnk5pu.js → arc-AUqStYgf.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-DCMyiqzy.js → architectureDiagram-5GKGNRK7-CQYOdYla.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-C7_gt0r1.js → blockDiagram-NRAW4CY4-lYKlFysy.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BeQg2L8B.js → c4Diagram-UCG6FXSJ-BoS23iIp.js} +1 -1
- package/web-shell/assets/channel-B0ovOJeK.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-DnV9bKBe.js → chunk-2Q5K7J3B-DLLooL1E.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-rT1GAcT7.js → chunk-5VM5RSS4-kPfJxScY.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-BcgSxqGA.js → chunk-F27PBJKO-CVGFBqkD.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-Bw1ZhyZq.js → chunk-G27WJ6UU-CnM_kOVV.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-D4iDw-96.js → chunk-JWPE2WC7-Cj-ajOkT.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-D3MB3GTZ.js → chunk-LCL6LL3I-8L5c-wFo.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-Cep2ndrS.js → chunk-POPQ4Y6H-DsXTxpvL.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-BuahMHJc.js → chunk-SVP7TREG-DU5GE1_z.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-BdujIvJY.js → chunk-XXDRQBXY-D2IIWZKt.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-CGLLUbF8.js → cose-bilkent-JH36ORCC-CF_txUJr.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-D6kDsRSh.js → cynefin-OW5HDTMX-DEZ-My-Z.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-CCy78qZx.js → cynefinDiagram-5FMLGOSQ-BV7EKUS6.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-D5gJuJsf.js → dagre-3AP2YEHR-JGIX0G4H.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-ZwEZ5W__.js → diagram-S7CK7UJ4-DdUY7q6A.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-B036APjv.js → diagram-UQ7AKVKN-fhzRZ19v.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BfDJ57Fq.js → diagram-VSXAHHWV-BOgOex6q.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-Wha0p5rT.js → diagram-VX7I27RA-C0NknIz6.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-L20bz2K1.js → diagram-Z3DM3KII-C__3mUBX.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-D1ZM0Cp7.js → ebnfDiagram-PWID7BFC-BvPhqycH.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CMtA19v8.js → erDiagram-SSCWMZ5O-BqzoNoL9.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-D96m326S.js → flowDiagram-A5DVABFB-CJKOre47.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-BuHiYG2o.js → ganttDiagram-EL5Y4UJY-C5xZjrp0.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js → gitGraphDiagram-WWUBYQGX-C0EjwuPK.js} +1 -1
- package/web-shell/assets/index-B_IPzA0h.js +2020 -0
- package/web-shell/assets/{index-CBGz4Qjl.js → index-C5M93syE.js} +1 -1
- package/web-shell/assets/index-D1OKGQlM.css +36 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-B6DAOyXe.js → infoDiagram-RXCK75RN-BUwzsYOs.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-Bpg-joFo.js → ishikawaDiagram-5VMMS53U-EDJ_DH3V.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-BclrHzGa.js → journeyDiagram-EYS64GPL-BnfcOsS0.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-5gJzNTYG.js → kanban-definition-3QL26DDD-D_ofTVGu.js} +1 -1
- package/web-shell/assets/{layout-CEz_1L8z.js → layout-CBuQFdfZ.js} +1 -1
- package/web-shell/assets/{linear-CBjTq9Hc.js → linear-DRIHtmGv.js} +1 -1
- package/web-shell/assets/{mermaid.core-Dzhbxx_I.js → mermaid.core-CmR5wZH6.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-DQdVqlBF.js → mindmap-definition-FBJOCRG2-BV374olC.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-D1JZlYXL.js → pegDiagram-XKGWAZYB-Bpy1SplK.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BmkpYL0w.js → pieDiagram-E7YTZNPT-CeZx4hR2.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-DRvD6co5.js → quadrantDiagram-AXDQQJYC-COYKs14h.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CEdjDuoo.js → railroadDiagram-O6MQD6OU-5g2pOeTs.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BCHG-ie8.js → requirementDiagram-EFPCY7ZU-Yn8uPGtF.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C9cZMnye.js → sankeyDiagram-P5KCCOFB-CTayAGq6.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DYHRV4zL.js → sequenceDiagram-WJ2MYXX4-BFWDKzUU.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-DlK21aye.js → sizeCapture-X5ZJPWSS-CtErUbj4.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BrmZssvk.js → stateDiagram-HBIQ2CUA-Co3HFzOd.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-D9xfcayR.js → swimlanes-XN3QIQJK-CDZuxzOj.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-D4gdDL_d.js → timeline-definition-24CTP7MA-UcNHj8At.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DdhIExjI.js → vennDiagram-4TSXK5OY-JKR9pVFG.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C9RS_Zof.js → wardleyDiagram-VM6X3IG4-C4SU-yIW.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-orRgmxWk.js → xychartDiagram-S5SC5T6Z-D_yoWGZ4.js} +1 -1
- package/web-shell/index.html +197 -3
- package/chunks/MaxSizedBox-X5FZSNAJ.js +0 -112
- package/chunks/agent-PJIPDWHB.js +0 -97
- package/chunks/agent-headless-B4JVD7UK.js +0 -87
- package/chunks/bridge-FKZTVIS3.js +0 -121
- package/chunks/channel-settings-store-4UFCLBBG.js +0 -117
- package/chunks/chunk-7DJCPZE3.js +0 -945
- package/chunks/chunk-CPBF7KYF.js +0 -51
- package/chunks/chunk-H72BQNM3.js +0 -645
- package/chunks/chunk-J2OSJFP3.js +0 -202
- package/chunks/chunk-K2OJUPOE.js +0 -78
- package/chunks/chunk-P3QQPMQA.js +0 -19
- package/chunks/chunk-RUGNCYNO.js +0 -699
- package/chunks/chunk-T26EAKDL.js +0 -13
- package/chunks/chunk-ZGXYO7DY.js +0 -3416
- package/chunks/chunk-ZYNTSXWK.js +0 -32
- package/chunks/config-utils-BBOCOGZW.js +0 -113
- package/chunks/contextCommand-EET67MQ2.js +0 -108
- package/chunks/daemon-status-provider-RFKZOK3S.js +0 -119
- package/chunks/daemon-trust-policy-DRZPFB4Q.js +0 -114
- package/chunks/deferred-core-runtime-BBVIOP24.js +0 -116
- package/chunks/earlyInputCapture-2JOMMNQ4.js +0 -109
- package/chunks/environment-MOZMPUHR.js +0 -131
- package/chunks/errors-DMPQVYJL.js +0 -115
- package/chunks/exitPlanMode-UE4FGCY4.js +0 -85
- package/chunks/handleAutoUpdate-SGXKTQM6.js +0 -111
- package/chunks/i18n-B42HKHKH.js +0 -126
- package/chunks/initializer-FB66WYR3.js +0 -115
- package/chunks/installationInfo-Y7AULNMX.js +0 -109
- package/chunks/list-2HWGSVRA.js +0 -118
- package/chunks/list-agents-DI3YFTDT.js +0 -80
- package/chunks/loadedSettingsAdapter-7Y7IEI6T.js +0 -112
- package/chunks/mcp-QGG5NMJJ.js +0 -112
- package/chunks/nonInteractiveCli-4LO2TL72.js +0 -186
- package/chunks/pidfile-JMF2CLMY.js +0 -113
- package/chunks/process-registry-PMJOA5CO.js +0 -172
- package/chunks/prompt-terminal-ledger-DCZO6S7C.js +0 -107
- package/chunks/resumeHistoryUtils-CZ4JRDVW.js +0 -120
- package/chunks/ripGrep-R6B6HWPX.js +0 -39
- package/chunks/runtime-TTIGSBM4.js +0 -150
- package/chunks/scheduled-tasks-QB4ZVUQS.js +0 -129
- package/chunks/scheduler-YRUG22M7.js +0 -124
- package/chunks/send-message-Y5I6NYAM.js +0 -295
- package/chunks/serve-MXXCDAQN.js +0 -120
- package/chunks/shell-6RTKZVMI.js +0 -95
- package/chunks/skill-settings-VA4XVYVL.js +0 -120
- package/chunks/spawnChannel-F6WVP723.js +0 -114
- package/chunks/standalone-update-RGILUQVK.js +0 -120
- package/chunks/terminal-image-renderer-SMQE46UJ.js +0 -116
- package/chunks/theme-manager-RFO5WWFF.js +0 -104
- package/chunks/total-session-admission-HTVTP4BS.js +0 -116
- package/chunks/trustedFolders-7OCNMUQE.js +0 -124
- package/chunks/updateCheck-7QBDXZRT.js +0 -120
- package/chunks/useAutoAcceptIndicator-UI4SNL2O.js +0 -122
- package/chunks/workspace-providers-status-PDFZWL5Q.js +0 -116
- package/chunks/workspace-registry-23R7XRB5.js +0 -125
- package/chunks/workspace-service-MUYO2QIC.js +0 -131
- package/chunks/workspace-skills-status-IKECTOOQ.js +0 -115
- package/chunks/write-file-GGRBB5TZ.js +0 -90
- package/web-shell/assets/channel-CENAhErJ.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +0 -1
- package/web-shell/assets/index-8hXIpvo4.js +0 -1865
- package/web-shell/assets/index-DclEv91i.css +0 -5
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +0 -8
|
@@ -2,31 +2,26 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
parseToolWriteOriginMeta
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-VGHZT6JR.js";
|
|
6
6
|
import {
|
|
7
7
|
MAX_CHILD_HEAP_MB,
|
|
8
8
|
MIN_CHILD_HEAP_MB,
|
|
9
9
|
recommendedChildShareMb
|
|
10
10
|
} from "./chunk-UXEO7E3V.js";
|
|
11
11
|
import {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
normalizeSessionIdForLookup
|
|
16
|
-
} from "./chunk-ZEZKIS2K.js";
|
|
12
|
+
CLIENT_ID_RE,
|
|
13
|
+
MAX_CLIENT_ID_LENGTH
|
|
14
|
+
} from "./chunk-LAUEEBDL.js";
|
|
17
15
|
import {
|
|
18
16
|
isInternalWorkspaceRuntime
|
|
19
17
|
} from "./chunk-NYWWQ437.js";
|
|
20
18
|
import {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
MAX_WORKSPACE_PATH_LENGTH,
|
|
25
|
-
translateAndCheckAbsoluteWorkspacePath
|
|
26
|
-
} from "./chunk-6PLDPT2C.js";
|
|
19
|
+
formatHostForAuthority,
|
|
20
|
+
isLoopbackBind
|
|
21
|
+
} from "./chunk-DMEUXLSS.js";
|
|
27
22
|
import {
|
|
28
|
-
|
|
29
|
-
} from "./chunk-
|
|
23
|
+
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
24
|
+
} from "./chunk-ZGCKTAL5.js";
|
|
30
25
|
import {
|
|
31
26
|
ROOT_CONTEXT,
|
|
32
27
|
context,
|
|
@@ -779,8 +774,8 @@ var DeviceFlowRegistry = class {
|
|
|
779
774
|
/**
|
|
780
775
|
* For diagnostics / GET /workspace/auth/status: report only pending
|
|
781
776
|
* flows. Terminal entries are an implementation detail of the SDK
|
|
782
|
-
* reconnect path and shouldn't be enumerated to all
|
|
783
|
-
*
|
|
777
|
+
* reconnect path and shouldn't be enumerated to all authorized status
|
|
778
|
+
* callers.
|
|
784
779
|
*/
|
|
785
780
|
listPending() {
|
|
786
781
|
const out = [];
|
|
@@ -925,6 +920,67 @@ function isDeepHealthQuery(raw) {
|
|
|
925
920
|
}
|
|
926
921
|
__name(isDeepHealthQuery, "isDeepHealthQuery");
|
|
927
922
|
|
|
923
|
+
// packages/cli/src/serve/server/self-origin.ts
|
|
924
|
+
init_esbuild_shims();
|
|
925
|
+
function installSelfOriginStripMiddleware(app, getPort, bind) {
|
|
926
|
+
let cachedStripPort = -1;
|
|
927
|
+
let cachedSelfOrigins = /* @__PURE__ */ new Set();
|
|
928
|
+
const boundHost = isLoopbackBind(bind) ? formatHostForAuthority(bind) : void 0;
|
|
929
|
+
app.use((req, _res, next) => {
|
|
930
|
+
const origin = req.headers.origin;
|
|
931
|
+
if (origin) {
|
|
932
|
+
const port = getPort();
|
|
933
|
+
if (port !== cachedStripPort) {
|
|
934
|
+
cachedStripPort = port;
|
|
935
|
+
cachedSelfOrigins = /* @__PURE__ */ new Set([
|
|
936
|
+
`http://127.0.0.1:${port}`,
|
|
937
|
+
`http://localhost:${port}`,
|
|
938
|
+
`http://[::1]:${port}`,
|
|
939
|
+
`http://host.docker.internal:${port}`,
|
|
940
|
+
`https://127.0.0.1:${port}`,
|
|
941
|
+
`https://localhost:${port}`,
|
|
942
|
+
`https://[::1]:${port}`,
|
|
943
|
+
`https://host.docker.internal:${port}`
|
|
944
|
+
]);
|
|
945
|
+
if (boundHost) {
|
|
946
|
+
cachedSelfOrigins.add(`http://${boundHost}:${port}`);
|
|
947
|
+
cachedSelfOrigins.add(`https://${boundHost}:${port}`);
|
|
948
|
+
}
|
|
949
|
+
if (port === 80) {
|
|
950
|
+
for (const host of [
|
|
951
|
+
"127.0.0.1",
|
|
952
|
+
"localhost",
|
|
953
|
+
"[::1]",
|
|
954
|
+
"host.docker.internal"
|
|
955
|
+
]) {
|
|
956
|
+
cachedSelfOrigins.add(`http://${host}`);
|
|
957
|
+
}
|
|
958
|
+
if (boundHost) {
|
|
959
|
+
cachedSelfOrigins.add(`http://${boundHost}`);
|
|
960
|
+
}
|
|
961
|
+
} else if (port === 443) {
|
|
962
|
+
for (const host of [
|
|
963
|
+
"127.0.0.1",
|
|
964
|
+
"localhost",
|
|
965
|
+
"[::1]",
|
|
966
|
+
"host.docker.internal"
|
|
967
|
+
]) {
|
|
968
|
+
cachedSelfOrigins.add(`https://${host}`);
|
|
969
|
+
}
|
|
970
|
+
if (boundHost) {
|
|
971
|
+
cachedSelfOrigins.add(`https://${boundHost}`);
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
if (cachedSelfOrigins.has(origin)) {
|
|
976
|
+
delete req.headers.origin;
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
next();
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
__name(installSelfOriginStripMiddleware, "installSelfOriginStripMiddleware");
|
|
983
|
+
|
|
928
984
|
// packages/cli/src/serve/acp-child-extra-args.ts
|
|
929
985
|
init_esbuild_shims();
|
|
930
986
|
function acpChildExtraArgs(opts) {
|
|
@@ -1084,6 +1140,16 @@ function parseAllowOriginPatterns(raw) {
|
|
|
1084
1140
|
return { allowAny, origins };
|
|
1085
1141
|
}
|
|
1086
1142
|
__name(parseAllowOriginPatterns, "parseAllowOriginPatterns");
|
|
1143
|
+
function findNonLoopbackHttpOrigin(patterns) {
|
|
1144
|
+
for (const origin of patterns.origins) {
|
|
1145
|
+
const parsed = new URL(origin);
|
|
1146
|
+
if ((parsed.protocol === "http:" || parsed.protocol === "https:") && !isLoopbackBind(parsed.hostname)) {
|
|
1147
|
+
return origin;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
return void 0;
|
|
1151
|
+
}
|
|
1152
|
+
__name(findNonLoopbackHttpOrigin, "findNonLoopbackHttpOrigin");
|
|
1087
1153
|
var MutableOriginAllowlist = class {
|
|
1088
1154
|
static {
|
|
1089
1155
|
__name(this, "MutableOriginAllowlist");
|
|
@@ -1179,6 +1245,7 @@ function buildPrimaryHostGate(bind, getPort) {
|
|
|
1179
1245
|
}
|
|
1180
1246
|
let cachedPort = -1;
|
|
1181
1247
|
let cachedAllowed = /* @__PURE__ */ new Set();
|
|
1248
|
+
const boundHost = formatHostForAuthority(bind);
|
|
1182
1249
|
const allowedFor = /* @__PURE__ */ __name((port) => {
|
|
1183
1250
|
if (port === cachedPort) return cachedAllowed;
|
|
1184
1251
|
cachedPort = port;
|
|
@@ -1186,13 +1253,15 @@ function buildPrimaryHostGate(bind, getPort) {
|
|
|
1186
1253
|
`localhost:${port}`,
|
|
1187
1254
|
`127.0.0.1:${port}`,
|
|
1188
1255
|
`[::1]:${port}`,
|
|
1189
|
-
`host.docker.internal:${port}
|
|
1256
|
+
`host.docker.internal:${port}`,
|
|
1257
|
+
`${boundHost}:${port}`
|
|
1190
1258
|
]);
|
|
1191
1259
|
if (port === 80 || port === 443) {
|
|
1192
1260
|
cachedAllowed.add("localhost");
|
|
1193
1261
|
cachedAllowed.add("127.0.0.1");
|
|
1194
1262
|
cachedAllowed.add("[::1]");
|
|
1195
1263
|
cachedAllowed.add("host.docker.internal");
|
|
1264
|
+
cachedAllowed.add(boundHost);
|
|
1196
1265
|
}
|
|
1197
1266
|
return cachedAllowed;
|
|
1198
1267
|
}, "allowedFor");
|
|
@@ -1253,13 +1322,22 @@ function requestWasAuthenticated(req) {
|
|
|
1253
1322
|
return req[AUTHENTICATED_REQUEST] === true;
|
|
1254
1323
|
}
|
|
1255
1324
|
__name(requestWasAuthenticated, "requestWasAuthenticated");
|
|
1325
|
+
function isTrustedLoopbackMode(input) {
|
|
1326
|
+
return input.loopbackBind && !input.tokenConfigured && !input.requireAuth;
|
|
1327
|
+
}
|
|
1328
|
+
__name(isTrustedLoopbackMode, "isTrustedLoopbackMode");
|
|
1329
|
+
function requestHasOperatorAuthority(req, trustedLoopbackMode) {
|
|
1330
|
+
return requestWasAuthenticated(req) || trustedLoopbackMode && listenerIdentityOf(req).kind === "primary";
|
|
1331
|
+
}
|
|
1332
|
+
__name(requestHasOperatorAuthority, "requestHasOperatorAuthority");
|
|
1256
1333
|
function createMutationGate(deps) {
|
|
1257
1334
|
const passthrough = /* @__PURE__ */ __name((_req, _res, next) => next(), "passthrough");
|
|
1258
|
-
if (deps.
|
|
1335
|
+
if (deps.tokenConfigured) {
|
|
1259
1336
|
return () => passthrough;
|
|
1260
1337
|
}
|
|
1338
|
+
const trustedLoopbackMode = deps.trustedLoopbackMode === true && deps.requireAuth === false;
|
|
1261
1339
|
const strictDenier = /* @__PURE__ */ __name((req, res, next) => {
|
|
1262
|
-
if (
|
|
1340
|
+
if (requestHasOperatorAuthority(req, trustedLoopbackMode)) {
|
|
1263
1341
|
next();
|
|
1264
1342
|
return;
|
|
1265
1343
|
}
|
|
@@ -1490,7 +1568,17 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1490
1568
|
since: "v1",
|
|
1491
1569
|
modes: ["workspace", "clean"]
|
|
1492
1570
|
},
|
|
1571
|
+
// Explicit remember targets and scoped forget (`scope` parameter). Old
|
|
1572
|
+
// daemons silently ignore an unknown `scope`, so the SDK pre-flights the
|
|
1573
|
+
// matching tag before sending one. The sibling no-op behavior change — a
|
|
1574
|
+
// zero-write remember now fails `remember_no_update` instead of completing
|
|
1575
|
+
// with 'No memory files updated.' — is deliberately untagged: it changes a
|
|
1576
|
+
// task's terminal outcome, not the surface shape, and every client sees it
|
|
1577
|
+
// as a typed `failed` task status that cannot be mistaken for success.
|
|
1578
|
+
workspace_memory_remember_project_scope: { since: "v1" },
|
|
1579
|
+
workspace_memory_remember_user_scope: { since: "v1" },
|
|
1493
1580
|
workspace_memory_forget: { since: "v1" },
|
|
1581
|
+
workspace_memory_forget_scope: { since: "v1" },
|
|
1494
1582
|
workspace_memory_dream: { since: "v1" },
|
|
1495
1583
|
// Workspace agents CRUD (`GET/POST /workspace/agents` +
|
|
1496
1584
|
// `GET/POST/DELETE /workspace/agents/:agentType`). Wraps
|
|
@@ -1516,6 +1604,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1516
1604
|
session_metadata: { since: "v1" },
|
|
1517
1605
|
session_organization: { since: "v1" },
|
|
1518
1606
|
session_export: { since: "v1" },
|
|
1607
|
+
standalone_sessions_v1: { since: "v1" },
|
|
1519
1608
|
session_transcript: { since: "v1" },
|
|
1520
1609
|
session_transcript_pagination: { since: "v1" },
|
|
1521
1610
|
// Daemon supports the MCP client guardrail surface: an in-process
|
|
@@ -1582,8 +1671,8 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1582
1671
|
// unregistered — the toggle takes effect on the next ACP child spawn
|
|
1583
1672
|
// (`tools.disabled` is consulted at `Config` construction time).
|
|
1584
1673
|
workspace_tool_toggle: { since: "v1" },
|
|
1585
|
-
|
|
1586
|
-
|
|
1674
|
+
workspace_skill_settings_toggle: { since: "v1" },
|
|
1675
|
+
workspace_skill_settings_batch_toggle: { since: "v1" },
|
|
1587
1676
|
extension_batch_activation_v2: { since: "v1" },
|
|
1588
1677
|
workspace_skill_manage: { since: "v1" },
|
|
1589
1678
|
workspace_settings: { since: "v1" },
|
|
@@ -1601,13 +1690,12 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1601
1690
|
// Workspace trust policy changes rebuild the affected runtime generation
|
|
1602
1691
|
// without restarting the daemon. V2 trust status exposes convergence.
|
|
1603
1692
|
workspace_trust_hot_reload: { since: "v1" },
|
|
1604
|
-
// `POST /workspace/init` scaffolds an empty
|
|
1605
|
-
// `
|
|
1606
|
-
// the bound workspace root. Body: `{force?: boolean}`. Default
|
|
1693
|
+
// `POST /workspace/init` scaffolds an empty `QWEN.md` (or the
|
|
1694
|
+
// workspace `context.fileName` value injected as `contextFilename`)
|
|
1695
|
+
// at the bound workspace root. Body: `{force?: boolean}`. Default
|
|
1607
1696
|
// refuses with 409 when the file already exists; `force: true`
|
|
1608
|
-
// overwrites. Mechanical only — does NOT call the LLM. To AI-fill
|
|
1609
|
-
//
|
|
1610
|
-
// `POST /session/:id/prompt`.
|
|
1697
|
+
// overwrites. Mechanical only — does NOT call the LLM. To AI-fill the
|
|
1698
|
+
// file, the caller should follow up with `POST /session/:id/prompt`.
|
|
1611
1699
|
workspace_init: { since: "v1" },
|
|
1612
1700
|
// `POST /workspace/setup-github` installs the fixed
|
|
1613
1701
|
// qwen-code-action workflow set into the bound workspace after
|
|
@@ -1651,8 +1739,8 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1651
1739
|
session_btw: { since: "v1" },
|
|
1652
1740
|
// Direct daemon-side shell execution for an existing session.
|
|
1653
1741
|
// Advertised CONDITIONALLY: operators must explicitly enable it and
|
|
1654
|
-
// configure bearer auth
|
|
1655
|
-
// X-Qwen-Client-Id when calling the route.
|
|
1742
|
+
// either configure bearer auth or use trusted-loopback mode. Clients must
|
|
1743
|
+
// still send a session-bound X-Qwen-Client-Id when calling the route.
|
|
1656
1744
|
session_shell_command: { since: "v1" },
|
|
1657
1745
|
// Daemon hosts a workspace-shared MCP transport
|
|
1658
1746
|
// pool (`QwenAgent.mcpPool`); `GET /workspace/mcp` reflects pool-level
|
|
@@ -1750,6 +1838,13 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1750
1838
|
workspace_display_name: { since: "v1" },
|
|
1751
1839
|
scratch_workspace_registration: { since: "v1" },
|
|
1752
1840
|
workspace_runtime_removal: { since: "v1" },
|
|
1841
|
+
// A native OS directory picker can be opened on the daemon host
|
|
1842
|
+
// (osascript on macOS, PowerShell on Windows, zenity on a Linux host
|
|
1843
|
+
// with a display). Headless hosts omit the tag so clients hide the
|
|
1844
|
+
// Browse affordance instead of surfacing a guaranteed picker failure.
|
|
1845
|
+
native_directory_picker: { since: "v1" },
|
|
1846
|
+
// Workspace-owned runtime lifecycle status and explicit on-demand startup.
|
|
1847
|
+
workspace_runtime: { since: "v1" },
|
|
1753
1848
|
// Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
|
|
1754
1849
|
// Covers core file read/write/upload, status/permissions/trust/lifecycle/MCP/tool,
|
|
1755
1850
|
// memory, workspace agent CRUD, and persisted session organization surfaces.
|
|
@@ -1773,7 +1868,9 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1773
1868
|
// projections. This is additive to the legacy primary-workspace
|
|
1774
1869
|
// `workspace_extensions` contract.
|
|
1775
1870
|
extension_management_v2: { since: "v1" },
|
|
1871
|
+
extension_state: { since: "v1" },
|
|
1776
1872
|
extension_git_credentials: { since: "v1" },
|
|
1873
|
+
extension_local_path_install: { since: "v1" },
|
|
1777
1874
|
// Workspace-qualified, daemon-local persisted transcript paging. The tag is
|
|
1778
1875
|
// unconditional because the route also serves a trusted single-workspace
|
|
1779
1876
|
// primary; authorization is evaluated for the selected runtime per request.
|
|
@@ -1839,10 +1936,15 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1839
1936
|
// WebShell daemon with native Host integration and the hot-applied enabled
|
|
1840
1937
|
// gate. `/live/status` remains the dynamic readiness surface for the Host,
|
|
1841
1938
|
// permissions, self-checks, and provider reachability.
|
|
1842
|
-
realtime_voice: { since: "v1" }
|
|
1939
|
+
realtime_voice: { since: "v1" },
|
|
1940
|
+
web_terminal: { since: "v1" }
|
|
1843
1941
|
};
|
|
1844
1942
|
var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
1845
1943
|
["require_auth", (toggles) => toggles.requireAuth === true],
|
|
1944
|
+
[
|
|
1945
|
+
"standalone_sessions_v1",
|
|
1946
|
+
(toggles) => toggles.standaloneSessionsAvailable === true
|
|
1947
|
+
],
|
|
1846
1948
|
["mcp_workspace_pool", (toggles) => toggles.mcpPoolActive === true],
|
|
1847
1949
|
["mcp_pool_restart", (toggles) => toggles.mcpPoolActive === true],
|
|
1848
1950
|
[
|
|
@@ -1924,6 +2026,14 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
1924
2026
|
"workspace_runtime_removal",
|
|
1925
2027
|
(toggles) => toggles.workspaceRuntimeRemovalAvailable === true
|
|
1926
2028
|
],
|
|
2029
|
+
[
|
|
2030
|
+
"native_directory_picker",
|
|
2031
|
+
(toggles) => toggles.nativeDirectoryPickerAvailable === true
|
|
2032
|
+
],
|
|
2033
|
+
[
|
|
2034
|
+
"workspace_runtime",
|
|
2035
|
+
(toggles) => toggles.workspaceRuntimeAvailable === true
|
|
2036
|
+
],
|
|
1927
2037
|
[
|
|
1928
2038
|
"workspace_qualified_acp",
|
|
1929
2039
|
// The plural routes are pre-mounted for workspaces registered after app
|
|
@@ -1960,7 +2070,8 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
1960
2070
|
[
|
|
1961
2071
|
"realtime_voice",
|
|
1962
2072
|
(toggles) => toggles.acpHttpEnabled === true && toggles.realtimeVoiceEnabled === true
|
|
1963
|
-
]
|
|
2073
|
+
],
|
|
2074
|
+
["web_terminal", (toggles) => toggles.acpHttpEnabled === true]
|
|
1964
2075
|
]);
|
|
1965
2076
|
var SERVE_FEATURES = Object.freeze(
|
|
1966
2077
|
Object.keys(SERVE_CAPABILITY_REGISTRY)
|
|
@@ -1990,6 +2101,118 @@ function getServeProtocolVersions() {
|
|
|
1990
2101
|
}
|
|
1991
2102
|
__name(getServeProtocolVersions, "getServeProtocolVersions");
|
|
1992
2103
|
|
|
2104
|
+
// packages/cli/src/serve/native-directory-picker.ts
|
|
2105
|
+
init_esbuild_shims();
|
|
2106
|
+
import { execFile } from "node:child_process";
|
|
2107
|
+
import { accessSync, constants, statSync } from "node:fs";
|
|
2108
|
+
import { delimiter, join } from "node:path";
|
|
2109
|
+
import { promisify } from "node:util";
|
|
2110
|
+
var execFileAsync = promisify(execFile);
|
|
2111
|
+
var PICKER_TIMEOUT_MS = 3e5;
|
|
2112
|
+
var NativeDirectoryPickerUnavailableError = class extends Error {
|
|
2113
|
+
static {
|
|
2114
|
+
__name(this, "NativeDirectoryPickerUnavailableError");
|
|
2115
|
+
}
|
|
2116
|
+
};
|
|
2117
|
+
function isNativeDirectoryPickerAvailable(env = process.env, macOsSessionUids = process.platform === "darwin" ? readMacOsSessionUids() : void 0) {
|
|
2118
|
+
if (process.platform === "darwin") {
|
|
2119
|
+
return macOsSessionUids?.processUid !== void 0 && macOsSessionUids.processUid > 0 && macOsSessionUids.consoleUid === macOsSessionUids.processUid && !env["SSH_CONNECTION"] && !env["SSH_TTY"];
|
|
2120
|
+
}
|
|
2121
|
+
if (process.platform === "win32") {
|
|
2122
|
+
const sessionName = env["SESSIONNAME"]?.trim();
|
|
2123
|
+
return Boolean(sessionName && sessionName.toLowerCase() !== "services");
|
|
2124
|
+
}
|
|
2125
|
+
if (process.platform !== "linux") return false;
|
|
2126
|
+
if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"]) return false;
|
|
2127
|
+
return (env["PATH"] ?? "").split(delimiter).some((dir) => dir !== "" && isExecutableFile(join(dir, "zenity")));
|
|
2128
|
+
}
|
|
2129
|
+
__name(isNativeDirectoryPickerAvailable, "isNativeDirectoryPickerAvailable");
|
|
2130
|
+
function readMacOsSessionUids() {
|
|
2131
|
+
try {
|
|
2132
|
+
return {
|
|
2133
|
+
processUid: process.getuid?.(),
|
|
2134
|
+
consoleUid: statSync("/dev/console").uid
|
|
2135
|
+
};
|
|
2136
|
+
} catch {
|
|
2137
|
+
return {};
|
|
2138
|
+
}
|
|
2139
|
+
}
|
|
2140
|
+
__name(readMacOsSessionUids, "readMacOsSessionUids");
|
|
2141
|
+
function isExecutableFile(file) {
|
|
2142
|
+
try {
|
|
2143
|
+
if (!statSync(file).isFile()) return false;
|
|
2144
|
+
accessSync(file, constants.X_OK);
|
|
2145
|
+
return true;
|
|
2146
|
+
} catch {
|
|
2147
|
+
return false;
|
|
2148
|
+
}
|
|
2149
|
+
}
|
|
2150
|
+
__name(isExecutableFile, "isExecutableFile");
|
|
2151
|
+
async function pickNativeDirectory(signal) {
|
|
2152
|
+
try {
|
|
2153
|
+
if (process.platform === "darwin") {
|
|
2154
|
+
const script = [
|
|
2155
|
+
"const app = Application.currentApplication();",
|
|
2156
|
+
"app.includeStandardAdditions = true;",
|
|
2157
|
+
"app.chooseFolder({",
|
|
2158
|
+
'withPrompt: "Select a workspace folder",',
|
|
2159
|
+
"}).toString();"
|
|
2160
|
+
].join(" ");
|
|
2161
|
+
const { stdout } = await execFileAsync(
|
|
2162
|
+
"osascript",
|
|
2163
|
+
["-l", "JavaScript", "-e", script],
|
|
2164
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2165
|
+
);
|
|
2166
|
+
return stdout.trim() || void 0;
|
|
2167
|
+
}
|
|
2168
|
+
if (process.platform === "win32") {
|
|
2169
|
+
const script = [
|
|
2170
|
+
"[Console]::OutputEncoding = [System.Text.Encoding]::UTF8;",
|
|
2171
|
+
"Add-Type -AssemblyName System.Windows.Forms;",
|
|
2172
|
+
"$dialog = New-Object System.Windows.Forms.FolderBrowserDialog;",
|
|
2173
|
+
"if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {",
|
|
2174
|
+
"[Console]::Out.Write($dialog.SelectedPath)",
|
|
2175
|
+
"}"
|
|
2176
|
+
].join(" ");
|
|
2177
|
+
const { stdout } = await execFileAsync(
|
|
2178
|
+
"powershell.exe",
|
|
2179
|
+
["-NoProfile", "-STA", "-Command", script],
|
|
2180
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2181
|
+
);
|
|
2182
|
+
return stdout.trim() || void 0;
|
|
2183
|
+
}
|
|
2184
|
+
if (process.platform === "linux") {
|
|
2185
|
+
const { stdout } = await execFileAsync(
|
|
2186
|
+
"zenity",
|
|
2187
|
+
[
|
|
2188
|
+
"--file-selection",
|
|
2189
|
+
"--directory",
|
|
2190
|
+
"--title=Select a workspace folder"
|
|
2191
|
+
],
|
|
2192
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2193
|
+
);
|
|
2194
|
+
return stdout.trim() || void 0;
|
|
2195
|
+
}
|
|
2196
|
+
} catch (error) {
|
|
2197
|
+
const result = error;
|
|
2198
|
+
if (result.killed) {
|
|
2199
|
+
return void 0;
|
|
2200
|
+
}
|
|
2201
|
+
if (process.platform === "darwin" && (result.stderr?.includes("(-128)") || result.stderr?.includes("User canceled")) || // Zenity exits 1 both for a deliberate cancel and for "cannot open
|
|
2202
|
+
// display" on headless Linux; only the former is a silent cancel.
|
|
2203
|
+
process.platform === "linux" && result.code === 1 && !result.stderr?.includes("cannot open display")) {
|
|
2204
|
+
return void 0;
|
|
2205
|
+
}
|
|
2206
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
2207
|
+
error instanceof Error ? error.message : String(error)
|
|
2208
|
+
);
|
|
2209
|
+
}
|
|
2210
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
2211
|
+
`Native directory picker is not supported on ${process.platform}`
|
|
2212
|
+
);
|
|
2213
|
+
}
|
|
2214
|
+
__name(pickNativeDirectory, "pickNativeDirectory");
|
|
2215
|
+
|
|
1993
2216
|
// packages/cli/src/serve/types.ts
|
|
1994
2217
|
init_esbuild_shims();
|
|
1995
2218
|
var CAPABILITIES_SCHEMA_VERSION = 1;
|
|
@@ -2002,7 +2225,7 @@ import {
|
|
|
2002
2225
|
basename,
|
|
2003
2226
|
dirname,
|
|
2004
2227
|
isAbsolute,
|
|
2005
|
-
join,
|
|
2228
|
+
join as join2,
|
|
2006
2229
|
relative,
|
|
2007
2230
|
resolve
|
|
2008
2231
|
} from "node:path";
|
|
@@ -2080,7 +2303,7 @@ async function revalidateManagedScratchRoot(root) {
|
|
|
2080
2303
|
__name(revalidateManagedScratchRoot, "revalidateManagedScratchRoot");
|
|
2081
2304
|
async function createManagedScratchDirectory(root) {
|
|
2082
2305
|
await revalidateManagedScratchRoot(root);
|
|
2083
|
-
const created = await mkdtemp(
|
|
2306
|
+
const created = await mkdtemp(join2(root.canonicalRoot, "scratch-"));
|
|
2084
2307
|
const canonical = realpathSync.native(created);
|
|
2085
2308
|
if (!isManagedScratchChild(canonical, root.canonicalRoot)) {
|
|
2086
2309
|
throw new Error("Managed scratch directory escaped its accepted root");
|
|
@@ -2393,235 +2616,6 @@ function installServeAppLifecycle(app, lifecycle = new ServeAppLifecycleControll
|
|
|
2393
2616
|
}
|
|
2394
2617
|
__name(installServeAppLifecycle, "installServeAppLifecycle");
|
|
2395
2618
|
|
|
2396
|
-
// packages/cli/src/serve/server/request-helpers.ts
|
|
2397
|
-
init_esbuild_shims();
|
|
2398
|
-
function sendJsonBodyParserError(res, err) {
|
|
2399
|
-
if (err instanceof SyntaxError && "status" in err && err.status === 400) {
|
|
2400
|
-
res.status(400).json({ error: "Invalid JSON in request body" });
|
|
2401
|
-
return true;
|
|
2402
|
-
}
|
|
2403
|
-
if (err && typeof err === "object" && "status" in err && err.status === 413) {
|
|
2404
|
-
res.status(413).json({ error: "Request body too large (max 10 MB)" });
|
|
2405
|
-
return true;
|
|
2406
|
-
}
|
|
2407
|
-
return false;
|
|
2408
|
-
}
|
|
2409
|
-
__name(sendJsonBodyParserError, "sendJsonBodyParserError");
|
|
2410
|
-
var PROTOTYPE_POLLUTION_KEYS = /* @__PURE__ */ new Set([
|
|
2411
|
-
"__proto__",
|
|
2412
|
-
"constructor",
|
|
2413
|
-
"prototype"
|
|
2414
|
-
]);
|
|
2415
|
-
var CLIENT_ID_HEADER = "x-qwen-client-id";
|
|
2416
|
-
var MAX_CLIENT_ID_LENGTH = 128;
|
|
2417
|
-
var MAX_TOOL_NAME_LENGTH = 256;
|
|
2418
|
-
var MAX_SERVER_NAME_LENGTH = 256;
|
|
2419
|
-
var CLIENT_ID_RE = /^[A-Za-z0-9._:-]+$/;
|
|
2420
|
-
var INVALID_PERMISSION_OUTCOME_ERROR = '`outcome` must be `{ outcome: "cancelled" }` or `{ outcome: "selected", optionId: string }`';
|
|
2421
|
-
var deferredRuntimeTimingKey = Symbol(
|
|
2422
|
-
"deferredRuntimeRequestTiming"
|
|
2423
|
-
);
|
|
2424
|
-
function setDeferredRuntimeRequestTiming(req, timing) {
|
|
2425
|
-
req[deferredRuntimeTimingKey] = timing;
|
|
2426
|
-
}
|
|
2427
|
-
__name(setDeferredRuntimeRequestTiming, "setDeferredRuntimeRequestTiming");
|
|
2428
|
-
function getDeferredRuntimeRequestTiming(req) {
|
|
2429
|
-
return req[deferredRuntimeTimingKey];
|
|
2430
|
-
}
|
|
2431
|
-
__name(getDeferredRuntimeRequestTiming, "getDeferredRuntimeRequestTiming");
|
|
2432
|
-
function safeBody(req) {
|
|
2433
|
-
const raw = req.body;
|
|
2434
|
-
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
2435
|
-
return /* @__PURE__ */ Object.create(null);
|
|
2436
|
-
}
|
|
2437
|
-
const out = /* @__PURE__ */ Object.create(null);
|
|
2438
|
-
for (const [key, value] of Object.entries(raw)) {
|
|
2439
|
-
if (PROTOTYPE_POLLUTION_KEYS.has(key)) continue;
|
|
2440
|
-
out[key] = value;
|
|
2441
|
-
}
|
|
2442
|
-
return out;
|
|
2443
|
-
}
|
|
2444
|
-
__name(safeBody, "safeBody");
|
|
2445
|
-
function parseOptionalWorkspaceCwd(body, boundWorkspace, res) {
|
|
2446
|
-
const hasCwd = "cwd" in body;
|
|
2447
|
-
if (hasCwd && typeof body["cwd"] !== "string") {
|
|
2448
|
-
res.status(400).json({ error: "`cwd` must be a string absolute path when provided" });
|
|
2449
|
-
return void 0;
|
|
2450
|
-
}
|
|
2451
|
-
if (hasCwd && body["cwd"].length > MAX_WORKSPACE_PATH_LENGTH) {
|
|
2452
|
-
res.status(400).json({
|
|
2453
|
-
error: `\`cwd\` exceeds the ${MAX_WORKSPACE_PATH_LENGTH}-character limit`
|
|
2454
|
-
});
|
|
2455
|
-
return void 0;
|
|
2456
|
-
}
|
|
2457
|
-
const cwd = translateAndCheckAbsoluteWorkspacePath(
|
|
2458
|
-
hasCwd ? body["cwd"] : boundWorkspace
|
|
2459
|
-
);
|
|
2460
|
-
if (cwd === null) {
|
|
2461
|
-
res.status(400).json({ error: "`cwd` must be an absolute path when provided" });
|
|
2462
|
-
return void 0;
|
|
2463
|
-
}
|
|
2464
|
-
return cwd;
|
|
2465
|
-
}
|
|
2466
|
-
__name(parseOptionalWorkspaceCwd, "parseOptionalWorkspaceCwd");
|
|
2467
|
-
function requireSessionId(req, res) {
|
|
2468
|
-
const sessionId = req.params["id"];
|
|
2469
|
-
if (!sessionId) {
|
|
2470
|
-
res.status(400).json({ error: "`sessionId` route parameter is required" });
|
|
2471
|
-
return null;
|
|
2472
|
-
}
|
|
2473
|
-
return normalizeSessionIdForLookup(sessionId);
|
|
2474
|
-
}
|
|
2475
|
-
__name(requireSessionId, "requireSessionId");
|
|
2476
|
-
function parseClientIdHeader(req, res) {
|
|
2477
|
-
const raw = req.get(CLIENT_ID_HEADER);
|
|
2478
|
-
if (raw === void 0 || raw === "") return void 0;
|
|
2479
|
-
if (raw.length > MAX_CLIENT_ID_LENGTH || !CLIENT_ID_RE.test(raw)) {
|
|
2480
|
-
res.status(400).json({
|
|
2481
|
-
error: "`X-Qwen-Client-Id` must be a non-empty token of 128 characters or fewer",
|
|
2482
|
-
code: "invalid_client_id"
|
|
2483
|
-
});
|
|
2484
|
-
return null;
|
|
2485
|
-
}
|
|
2486
|
-
return raw;
|
|
2487
|
-
}
|
|
2488
|
-
__name(parseClientIdHeader, "parseClientIdHeader");
|
|
2489
|
-
function detectFromLoopback(req) {
|
|
2490
|
-
const addr = req.socket?.remoteAddress;
|
|
2491
|
-
if (typeof addr !== "string") return false;
|
|
2492
|
-
if (addr === "::1") return true;
|
|
2493
|
-
if (addr.startsWith("127.")) return true;
|
|
2494
|
-
if (addr.startsWith("::ffff:127.")) return true;
|
|
2495
|
-
return false;
|
|
2496
|
-
}
|
|
2497
|
-
__name(detectFromLoopback, "detectFromLoopback");
|
|
2498
|
-
function validateMcpRuntimeServerName(name, res) {
|
|
2499
|
-
if (typeof name !== "string" || name.length === 0) {
|
|
2500
|
-
res.status(400).json({
|
|
2501
|
-
error: "Server name is required and must be a non-empty string",
|
|
2502
|
-
code: "invalid_server_name"
|
|
2503
|
-
});
|
|
2504
|
-
return false;
|
|
2505
|
-
}
|
|
2506
|
-
if (name.length > MAX_SERVER_NAME_LENGTH) {
|
|
2507
|
-
res.status(400).json({
|
|
2508
|
-
error: `Server name exceeds ${MAX_SERVER_NAME_LENGTH}-character limit`,
|
|
2509
|
-
code: "invalid_server_name"
|
|
2510
|
-
});
|
|
2511
|
-
return false;
|
|
2512
|
-
}
|
|
2513
|
-
if (!/^[A-Za-z0-9_-]+$/.test(name)) {
|
|
2514
|
-
res.status(400).json({
|
|
2515
|
-
error: "Server name must contain only alphanumeric characters, underscores, and hyphens",
|
|
2516
|
-
code: "invalid_server_name"
|
|
2517
|
-
});
|
|
2518
|
-
return false;
|
|
2519
|
-
}
|
|
2520
|
-
if (name === "__proto__" || name === "constructor" || name === "prototype") {
|
|
2521
|
-
res.status(400).json({
|
|
2522
|
-
error: "Server name must not be a reserved JS property name",
|
|
2523
|
-
code: "invalid_server_name"
|
|
2524
|
-
});
|
|
2525
|
-
return false;
|
|
2526
|
-
}
|
|
2527
|
-
return true;
|
|
2528
|
-
}
|
|
2529
|
-
__name(validateMcpRuntimeServerName, "validateMcpRuntimeServerName");
|
|
2530
|
-
function parseAndValidateWorkspaceClientId(req, res, bridge) {
|
|
2531
|
-
const raw = parseClientIdHeader(req, res);
|
|
2532
|
-
if (raw === null || raw === void 0) return raw;
|
|
2533
|
-
const bridges = Array.isArray(bridge) ? bridge : [bridge];
|
|
2534
|
-
if (!bridges.some((candidate) => candidate.knownClientIds().has(raw))) {
|
|
2535
|
-
res.status(400).json({
|
|
2536
|
-
error: `Client id "${raw}" is not registered for this workspace`,
|
|
2537
|
-
code: "invalid_client_id",
|
|
2538
|
-
clientId: raw
|
|
2539
|
-
});
|
|
2540
|
-
return null;
|
|
2541
|
-
}
|
|
2542
|
-
return raw;
|
|
2543
|
-
}
|
|
2544
|
-
__name(parseAndValidateWorkspaceClientId, "parseAndValidateWorkspaceClientId");
|
|
2545
|
-
function createBuildWorkspaceCtx(boundWorkspace) {
|
|
2546
|
-
return (route, clientId) => ({
|
|
2547
|
-
originatorClientId: clientId,
|
|
2548
|
-
route,
|
|
2549
|
-
workspaceCwd: boundWorkspace
|
|
2550
|
-
});
|
|
2551
|
-
}
|
|
2552
|
-
__name(createBuildWorkspaceCtx, "createBuildWorkspaceCtx");
|
|
2553
|
-
function parsePermissionVoteBody(req, res) {
|
|
2554
|
-
const body = safeBody(req);
|
|
2555
|
-
const outcome = body["outcome"];
|
|
2556
|
-
if (!isValidOutcome(outcome)) {
|
|
2557
|
-
res.status(400).json({ error: INVALID_PERMISSION_OUTCOME_ERROR });
|
|
2558
|
-
return void 0;
|
|
2559
|
-
}
|
|
2560
|
-
return {
|
|
2561
|
-
...body,
|
|
2562
|
-
outcome
|
|
2563
|
-
};
|
|
2564
|
-
}
|
|
2565
|
-
__name(parsePermissionVoteBody, "parsePermissionVoteBody");
|
|
2566
|
-
function isValidOutcome(raw) {
|
|
2567
|
-
if (typeof raw !== "object" || raw === null) return false;
|
|
2568
|
-
const obj = raw;
|
|
2569
|
-
if (obj["outcome"] === "cancelled") return true;
|
|
2570
|
-
return obj["outcome"] === "selected" && typeof obj["optionId"] === "string" && obj["optionId"].length > 0;
|
|
2571
|
-
}
|
|
2572
|
-
__name(isValidOutcome, "isValidOutcome");
|
|
2573
|
-
var MIN_QUERY_MAX_QUEUED = 16;
|
|
2574
|
-
var MAX_QUERY_MAX_QUEUED = 2048;
|
|
2575
|
-
function parseMaxQueuedQuery(raw, res) {
|
|
2576
|
-
if (raw === void 0) return void 0;
|
|
2577
|
-
if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
|
|
2578
|
-
writeStderrLine(
|
|
2579
|
-
`qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (not a decimal integer)`
|
|
2580
|
-
);
|
|
2581
|
-
res.status(400).json({
|
|
2582
|
-
error: "`maxQueued` must be a decimal integer",
|
|
2583
|
-
code: "invalid_max_queued"
|
|
2584
|
-
});
|
|
2585
|
-
return null;
|
|
2586
|
-
}
|
|
2587
|
-
const n = Number.parseInt(raw, 10);
|
|
2588
|
-
if (!Number.isFinite(n) || n < MIN_QUERY_MAX_QUEUED || n > MAX_QUERY_MAX_QUEUED) {
|
|
2589
|
-
writeStderrLine(
|
|
2590
|
-
`qwen serve: rejected ?maxQueued ${safeLogValue(raw)} (outside [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}])`
|
|
2591
|
-
);
|
|
2592
|
-
res.status(400).json({
|
|
2593
|
-
error: `\`maxQueued\` must be in [${MIN_QUERY_MAX_QUEUED}, ${MAX_QUERY_MAX_QUEUED}]`,
|
|
2594
|
-
code: "invalid_max_queued"
|
|
2595
|
-
});
|
|
2596
|
-
return null;
|
|
2597
|
-
}
|
|
2598
|
-
return n;
|
|
2599
|
-
}
|
|
2600
|
-
__name(parseMaxQueuedQuery, "parseMaxQueuedQuery");
|
|
2601
|
-
function safeLogValue(raw) {
|
|
2602
|
-
return JSON.stringify(String(raw)).slice(0, 82);
|
|
2603
|
-
}
|
|
2604
|
-
__name(safeLogValue, "safeLogValue");
|
|
2605
|
-
function parseLastEventId(raw) {
|
|
2606
|
-
if (typeof raw !== "string" || !/^\d+$/.test(raw)) {
|
|
2607
|
-
if (typeof raw === "string" && raw.length > 0) {
|
|
2608
|
-
writeStderrLine(
|
|
2609
|
-
`qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (not a decimal integer)`
|
|
2610
|
-
);
|
|
2611
|
-
}
|
|
2612
|
-
return void 0;
|
|
2613
|
-
}
|
|
2614
|
-
const n = Number.parseInt(raw, 10);
|
|
2615
|
-
if (!Number.isFinite(n) || n > Number.MAX_SAFE_INTEGER) {
|
|
2616
|
-
writeStderrLine(
|
|
2617
|
-
`qwen serve: rejected Last-Event-ID ${safeLogValue(raw)} (exceeds Number.MAX_SAFE_INTEGER)`
|
|
2618
|
-
);
|
|
2619
|
-
return void 0;
|
|
2620
|
-
}
|
|
2621
|
-
return n;
|
|
2622
|
-
}
|
|
2623
|
-
__name(parseLastEventId, "parseLastEventId");
|
|
2624
|
-
|
|
2625
2619
|
// packages/cli/src/serve/rate-limit.ts
|
|
2626
2620
|
init_esbuild_shims();
|
|
2627
2621
|
var MAX_BUCKETS = 1e4;
|
|
@@ -3281,6 +3275,7 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
3281
3275
|
writerIdleTimeoutMs: positiveFiniteOrNull(input.opts.writerIdleTimeoutMs),
|
|
3282
3276
|
channelIdleTimeoutMs: bridgeSnapshot.limits.channelIdleTimeoutMs,
|
|
3283
3277
|
sessionIdleTimeoutMs: bridgeSnapshot.limits.sessionIdleTimeoutMs,
|
|
3278
|
+
sessionPromptSettledCloseGraceMs: bridgeSnapshot.limits.sessionPromptSettledCloseGraceMs,
|
|
3284
3279
|
acpConnectionCap: acpSnapshot?.connectionCap ?? null,
|
|
3285
3280
|
acpPreAttachMaxFramesPerStream: acpSnapshot !== void 0 ? ACP_PRE_ATTACH_MAX_FRAMES_PER_STREAM : null,
|
|
3286
3281
|
acpPreAttachMaxFramesPerConnection: acpSnapshot !== void 0 ? ACP_PRE_ATTACH_MAX_FRAMES_PER_CONNECTION : null,
|
|
@@ -4145,6 +4140,7 @@ export {
|
|
|
4145
4140
|
createBridgeFileSystemAdapter,
|
|
4146
4141
|
PathMutexRegistry,
|
|
4147
4142
|
isDeepHealthQuery,
|
|
4143
|
+
installSelfOriginStripMiddleware,
|
|
4148
4144
|
acpChildExtraArgs,
|
|
4149
4145
|
CredentialStore,
|
|
4150
4146
|
singleTokenCredentials,
|
|
@@ -4153,17 +4149,22 @@ export {
|
|
|
4153
4149
|
listenerIdentityOfSocket,
|
|
4154
4150
|
denyBrowserOriginCors,
|
|
4155
4151
|
parseAllowOriginPatterns,
|
|
4152
|
+
findNonLoopbackHttpOrigin,
|
|
4156
4153
|
MutableOriginAllowlist,
|
|
4157
4154
|
allowOriginCors,
|
|
4158
4155
|
hostAllowlist,
|
|
4159
4156
|
bearerAuth,
|
|
4160
|
-
|
|
4157
|
+
isTrustedLoopbackMode,
|
|
4158
|
+
requestHasOperatorAuthority,
|
|
4161
4159
|
createMutationGate,
|
|
4162
4160
|
ClientMcpSenderRegistry,
|
|
4163
4161
|
createClientMcpServerProvider,
|
|
4164
4162
|
SERVE_CAPABILITY_REGISTRY,
|
|
4165
4163
|
getAdvertisedServeFeatures,
|
|
4166
4164
|
getServeProtocolVersions,
|
|
4165
|
+
NativeDirectoryPickerUnavailableError,
|
|
4166
|
+
isNativeDirectoryPickerAvailable,
|
|
4167
|
+
pickNativeDirectory,
|
|
4167
4168
|
CAPABILITIES_SCHEMA_VERSION,
|
|
4168
4169
|
isManagedScratchChild,
|
|
4169
4170
|
isScratchRootCompatible,
|
|
@@ -4176,26 +4177,6 @@ export {
|
|
|
4176
4177
|
conversationRootCompromisedError,
|
|
4177
4178
|
ServeAppLifecycleController,
|
|
4178
4179
|
installServeAppLifecycle,
|
|
4179
|
-
sendJsonBodyParserError,
|
|
4180
|
-
CLIENT_ID_HEADER,
|
|
4181
|
-
MAX_CLIENT_ID_LENGTH,
|
|
4182
|
-
MAX_TOOL_NAME_LENGTH,
|
|
4183
|
-
MAX_SERVER_NAME_LENGTH,
|
|
4184
|
-
CLIENT_ID_RE,
|
|
4185
|
-
setDeferredRuntimeRequestTiming,
|
|
4186
|
-
getDeferredRuntimeRequestTiming,
|
|
4187
|
-
safeBody,
|
|
4188
|
-
parseOptionalWorkspaceCwd,
|
|
4189
|
-
requireSessionId,
|
|
4190
|
-
parseClientIdHeader,
|
|
4191
|
-
detectFromLoopback,
|
|
4192
|
-
validateMcpRuntimeServerName,
|
|
4193
|
-
parseAndValidateWorkspaceClientId,
|
|
4194
|
-
createBuildWorkspaceCtx,
|
|
4195
|
-
parsePermissionVoteBody,
|
|
4196
|
-
parseMaxQueuedQuery,
|
|
4197
|
-
safeLogValue,
|
|
4198
|
-
parseLastEventId,
|
|
4199
4180
|
createRateLimiter,
|
|
4200
4181
|
setRateLimiter,
|
|
4201
4182
|
getRateLimiter,
|