@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
|
@@ -23,6 +23,47 @@ var MCP_RESTART_CLIENT_HEADROOM_MS = 3e4;
|
|
|
23
23
|
|
|
24
24
|
// packages/sdk-typescript/src/daemon/DaemonAuthFlow.ts
|
|
25
25
|
init_esbuild_shims();
|
|
26
|
+
|
|
27
|
+
// packages/sdk-typescript/src/daemon/DaemonHttpError.ts
|
|
28
|
+
init_esbuild_shims();
|
|
29
|
+
var DaemonHttpError = class extends Error {
|
|
30
|
+
static {
|
|
31
|
+
__name(this, "DaemonHttpError");
|
|
32
|
+
}
|
|
33
|
+
status;
|
|
34
|
+
body;
|
|
35
|
+
constructor(status, body, message) {
|
|
36
|
+
super(message);
|
|
37
|
+
this.name = "DaemonHttpError";
|
|
38
|
+
this.status = status;
|
|
39
|
+
this.body = body;
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
function getErrorBodyRecord(body) {
|
|
43
|
+
return typeof body === "object" && body !== null && !Array.isArray(body) ? body : void 0;
|
|
44
|
+
}
|
|
45
|
+
__name(getErrorBodyRecord, "getErrorBodyRecord");
|
|
46
|
+
function isSubagentSessionNotFound(error, toolCallId) {
|
|
47
|
+
if (!(error instanceof DaemonHttpError) || error.status !== 404) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const body = getErrorBodyRecord(error.body);
|
|
51
|
+
if (body?.["code"] !== "session_not_found") return false;
|
|
52
|
+
return toolCallId === void 0 || body["toolCallId"] === toolCallId;
|
|
53
|
+
}
|
|
54
|
+
__name(isSubagentSessionNotFound, "isSubagentSessionNotFound");
|
|
55
|
+
function isSessionLevelNotFound(error) {
|
|
56
|
+
if (!(error instanceof DaemonHttpError) || error.status !== 404) {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
const body = getErrorBodyRecord(error.body);
|
|
60
|
+
if (body?.["code"] !== "session_not_found") return false;
|
|
61
|
+
const toolCallId = body["toolCallId"];
|
|
62
|
+
return toolCallId === void 0 || toolCallId === null;
|
|
63
|
+
}
|
|
64
|
+
__name(isSessionLevelNotFound, "isSessionLevelNotFound");
|
|
65
|
+
|
|
66
|
+
// packages/sdk-typescript/src/daemon/DaemonAuthFlow.ts
|
|
26
67
|
var DEVICE_FLOW_EXPIRY_GRACE_MS = 3e4;
|
|
27
68
|
var TERMINAL_STATUSES = /* @__PURE__ */ new Set(
|
|
28
69
|
["authorized", "expired", "error", "cancelled"]
|
|
@@ -181,49 +222,10 @@ function isDaemonSessionPrInfo(value) {
|
|
|
181
222
|
const v = value;
|
|
182
223
|
return typeof v["number"] === "number" && Number.isInteger(v["number"]) && v["number"] > 0 && typeof v["url"] === "string" && v["url"].length <= MAX_SESSION_PR_URL_LENGTH && /^https?:\/\//i.test(v["url"]) && // The daemon interpolates the url into a stderr audit line — control
|
|
183
224
|
// characters would forge log lines downstream of this gate.
|
|
184
|
-
!hasControlCharacter(v["url"]);
|
|
225
|
+
!hasControlCharacter(v["url"]) && (v["state"] === void 0 || v["state"] === "open" || v["state"] === "merged" || v["state"] === "closed");
|
|
185
226
|
}
|
|
186
227
|
__name(isDaemonSessionPrInfo, "isDaemonSessionPrInfo");
|
|
187
228
|
|
|
188
|
-
// packages/sdk-typescript/src/daemon/DaemonHttpError.ts
|
|
189
|
-
init_esbuild_shims();
|
|
190
|
-
var DaemonHttpError = class extends Error {
|
|
191
|
-
static {
|
|
192
|
-
__name(this, "DaemonHttpError");
|
|
193
|
-
}
|
|
194
|
-
status;
|
|
195
|
-
body;
|
|
196
|
-
constructor(status, body, message) {
|
|
197
|
-
super(message);
|
|
198
|
-
this.name = "DaemonHttpError";
|
|
199
|
-
this.status = status;
|
|
200
|
-
this.body = body;
|
|
201
|
-
}
|
|
202
|
-
};
|
|
203
|
-
function getErrorBodyRecord(body) {
|
|
204
|
-
return typeof body === "object" && body !== null && !Array.isArray(body) ? body : void 0;
|
|
205
|
-
}
|
|
206
|
-
__name(getErrorBodyRecord, "getErrorBodyRecord");
|
|
207
|
-
function isSubagentSessionNotFound(error, toolCallId) {
|
|
208
|
-
if (!(error instanceof DaemonHttpError) || error.status !== 404) {
|
|
209
|
-
return false;
|
|
210
|
-
}
|
|
211
|
-
const body = getErrorBodyRecord(error.body);
|
|
212
|
-
if (body?.["code"] !== "session_not_found") return false;
|
|
213
|
-
return toolCallId === void 0 || body["toolCallId"] === toolCallId;
|
|
214
|
-
}
|
|
215
|
-
__name(isSubagentSessionNotFound, "isSubagentSessionNotFound");
|
|
216
|
-
function isSessionLevelNotFound(error) {
|
|
217
|
-
if (!(error instanceof DaemonHttpError) || error.status !== 404) {
|
|
218
|
-
return false;
|
|
219
|
-
}
|
|
220
|
-
const body = getErrorBodyRecord(error.body);
|
|
221
|
-
if (body?.["code"] !== "session_not_found") return false;
|
|
222
|
-
const toolCallId = body["toolCallId"];
|
|
223
|
-
return toolCallId === void 0 || toolCallId === null;
|
|
224
|
-
}
|
|
225
|
-
__name(isSessionLevelNotFound, "isSessionLevelNotFound");
|
|
226
|
-
|
|
227
229
|
// packages/sdk-typescript/src/daemon/RestSseTransport.ts
|
|
228
230
|
init_esbuild_shims();
|
|
229
231
|
|
|
@@ -624,6 +626,232 @@ function isDaemonContentHash(value) {
|
|
|
624
626
|
__name(isDaemonContentHash, "isDaemonContentHash");
|
|
625
627
|
var DAEMON_APPROVAL_MODES = PERMISSION_MODES;
|
|
626
628
|
|
|
629
|
+
// packages/sdk-typescript/src/daemon/standalone-sessions.ts
|
|
630
|
+
init_esbuild_shims();
|
|
631
|
+
var STANDALONE_SESSIONS_CAPABILITY = "standalone_sessions_v1";
|
|
632
|
+
var DaemonStandaloneProtocolError = class extends Error {
|
|
633
|
+
constructor(route, detail) {
|
|
634
|
+
super(`${route}: malformed standalone-session response (${detail})`);
|
|
635
|
+
this.route = route;
|
|
636
|
+
this.name = "DaemonStandaloneProtocolError";
|
|
637
|
+
}
|
|
638
|
+
static {
|
|
639
|
+
__name(this, "DaemonStandaloneProtocolError");
|
|
640
|
+
}
|
|
641
|
+
};
|
|
642
|
+
var DaemonStandaloneCreationOutcomeUnknownError = class extends Error {
|
|
643
|
+
constructor(sessionId, recovery, originalError) {
|
|
644
|
+
super(
|
|
645
|
+
`Standalone session creation outcome is unknown for ${sessionId}; inspect recovery before retrying.`
|
|
646
|
+
);
|
|
647
|
+
this.sessionId = sessionId;
|
|
648
|
+
this.recovery = recovery;
|
|
649
|
+
this.originalError = originalError;
|
|
650
|
+
this.name = "DaemonStandaloneCreationOutcomeUnknownError";
|
|
651
|
+
}
|
|
652
|
+
static {
|
|
653
|
+
__name(this, "DaemonStandaloneCreationOutcomeUnknownError");
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
function asRecord(value, route, field = "response") {
|
|
657
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
658
|
+
throw new DaemonStandaloneProtocolError(route, `expected ${field} object`);
|
|
659
|
+
}
|
|
660
|
+
return value;
|
|
661
|
+
}
|
|
662
|
+
__name(asRecord, "asRecord");
|
|
663
|
+
function requireString(value, field, route, allowEmpty = false) {
|
|
664
|
+
const result = value[field];
|
|
665
|
+
if (typeof result !== "string" || !allowEmpty && result.length === 0) {
|
|
666
|
+
throw new DaemonStandaloneProtocolError(route, `expected ${field} string`);
|
|
667
|
+
}
|
|
668
|
+
return result;
|
|
669
|
+
}
|
|
670
|
+
__name(requireString, "requireString");
|
|
671
|
+
function requireStringArray(value, field, route) {
|
|
672
|
+
const result = value[field];
|
|
673
|
+
if (!Array.isArray(result) || !result.every((item) => typeof item === "string")) {
|
|
674
|
+
throw new DaemonStandaloneProtocolError(route, `expected ${field}[]`);
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
__name(requireStringArray, "requireStringArray");
|
|
678
|
+
function requireSessionId(value, route, expected) {
|
|
679
|
+
const sessionId = requireString(value, "sessionId", route);
|
|
680
|
+
if (expected !== void 0 && sessionId !== expected) {
|
|
681
|
+
throw new DaemonStandaloneProtocolError(
|
|
682
|
+
route,
|
|
683
|
+
`expected sessionId ${expected}, received ${sessionId}`
|
|
684
|
+
);
|
|
685
|
+
}
|
|
686
|
+
return sessionId;
|
|
687
|
+
}
|
|
688
|
+
__name(requireSessionId, "requireSessionId");
|
|
689
|
+
function validateContext(value, route) {
|
|
690
|
+
if (asRecord(value["context"], route, "context")["kind"] !== "standalone") {
|
|
691
|
+
throw new DaemonStandaloneProtocolError(
|
|
692
|
+
route,
|
|
693
|
+
"expected standalone context"
|
|
694
|
+
);
|
|
695
|
+
}
|
|
696
|
+
}
|
|
697
|
+
__name(validateContext, "validateContext");
|
|
698
|
+
function validateWorkingDirectory(value, route) {
|
|
699
|
+
const directory = asRecord(value, route, "workingDirectory");
|
|
700
|
+
if (directory["state"] !== "ready" && directory["state"] !== "recreated") {
|
|
701
|
+
throw new DaemonStandaloneProtocolError(
|
|
702
|
+
route,
|
|
703
|
+
"invalid workingDirectory.state"
|
|
704
|
+
);
|
|
705
|
+
}
|
|
706
|
+
if (directory["warnings"] !== void 0) {
|
|
707
|
+
requireStringArray(directory, "warnings", route);
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
__name(validateWorkingDirectory, "validateWorkingDirectory");
|
|
711
|
+
function validateStandaloneFields(value, route) {
|
|
712
|
+
if (value["sourceType"] !== "standalone") {
|
|
713
|
+
throw new DaemonStandaloneProtocolError(
|
|
714
|
+
route,
|
|
715
|
+
"expected standalone sourceType"
|
|
716
|
+
);
|
|
717
|
+
}
|
|
718
|
+
validateContext(value, route);
|
|
719
|
+
requireString(value, "projectlessOutputDirectory", route);
|
|
720
|
+
validateWorkingDirectory(value["workingDirectory"], route);
|
|
721
|
+
}
|
|
722
|
+
__name(validateStandaloneFields, "validateStandaloneFields");
|
|
723
|
+
function parseStandaloneSession(value, route, expectedSessionId) {
|
|
724
|
+
const session = asRecord(value, route);
|
|
725
|
+
requireSessionId(session, route, expectedSessionId);
|
|
726
|
+
requireString(session, "workspaceCwd", route);
|
|
727
|
+
if (typeof session["attached"] !== "boolean") {
|
|
728
|
+
throw new DaemonStandaloneProtocolError(route, "expected attached boolean");
|
|
729
|
+
}
|
|
730
|
+
validateStandaloneFields(session, route);
|
|
731
|
+
return session;
|
|
732
|
+
}
|
|
733
|
+
__name(parseStandaloneSession, "parseStandaloneSession");
|
|
734
|
+
function parseRestoredStandaloneSession(value, route, expectedSessionId) {
|
|
735
|
+
const raw = asRecord(value, route);
|
|
736
|
+
parseStandaloneSession(raw, route, expectedSessionId);
|
|
737
|
+
asRecord(raw["state"], route, "state");
|
|
738
|
+
return raw;
|
|
739
|
+
}
|
|
740
|
+
__name(parseRestoredStandaloneSession, "parseRestoredStandaloneSession");
|
|
741
|
+
function parseStandaloneSummary(value, route, expectedSessionId) {
|
|
742
|
+
const summary = asRecord(value, route);
|
|
743
|
+
requireSessionId(summary, route, expectedSessionId);
|
|
744
|
+
requireString(summary, "workspaceCwd", route);
|
|
745
|
+
if (summary["sourceType"] !== "standalone") {
|
|
746
|
+
throw new DaemonStandaloneProtocolError(
|
|
747
|
+
route,
|
|
748
|
+
"expected standalone sourceType"
|
|
749
|
+
);
|
|
750
|
+
}
|
|
751
|
+
validateContext(summary, route);
|
|
752
|
+
return summary;
|
|
753
|
+
}
|
|
754
|
+
__name(parseStandaloneSummary, "parseStandaloneSummary");
|
|
755
|
+
function parseStandaloneLookup(value, route, expectedSessionId) {
|
|
756
|
+
const lookup = asRecord(value, route);
|
|
757
|
+
if (lookup["state"] === "creating") {
|
|
758
|
+
const sessionId = requireSessionId(lookup, route, expectedSessionId);
|
|
759
|
+
return { sessionId, state: "creating" };
|
|
760
|
+
}
|
|
761
|
+
return parseStandaloneSummary(lookup, route, expectedSessionId);
|
|
762
|
+
}
|
|
763
|
+
__name(parseStandaloneLookup, "parseStandaloneLookup");
|
|
764
|
+
function parseStandaloneListPage(value, route) {
|
|
765
|
+
const page = asRecord(value, route);
|
|
766
|
+
if (!Array.isArray(page["sessions"])) {
|
|
767
|
+
throw new DaemonStandaloneProtocolError(route, "expected sessions[]");
|
|
768
|
+
}
|
|
769
|
+
if (page["nextCursor"] !== void 0 && typeof page["nextCursor"] !== "string") {
|
|
770
|
+
throw new DaemonStandaloneProtocolError(
|
|
771
|
+
route,
|
|
772
|
+
"expected nextCursor string"
|
|
773
|
+
);
|
|
774
|
+
}
|
|
775
|
+
for (const field of ["liveMergeFailed", "truncated"]) {
|
|
776
|
+
if (page[field] !== void 0 && typeof page[field] !== "boolean") {
|
|
777
|
+
throw new DaemonStandaloneProtocolError(
|
|
778
|
+
route,
|
|
779
|
+
`expected ${field} boolean`
|
|
780
|
+
);
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
for (const session of page["sessions"])
|
|
784
|
+
parseStandaloneSummary(session, route);
|
|
785
|
+
return page;
|
|
786
|
+
}
|
|
787
|
+
__name(parseStandaloneListPage, "parseStandaloneListPage");
|
|
788
|
+
function parseStandaloneDirectoryResult(value, route, expectedSessionId) {
|
|
789
|
+
const result = asRecord(value, route);
|
|
790
|
+
requireSessionId(result, route, expectedSessionId);
|
|
791
|
+
requireString(result, "projectlessOutputDirectory", route);
|
|
792
|
+
validateWorkingDirectory(result["workingDirectory"], route);
|
|
793
|
+
return result;
|
|
794
|
+
}
|
|
795
|
+
__name(parseStandaloneDirectoryResult, "parseStandaloneDirectoryResult");
|
|
796
|
+
function parseStandaloneMetadataResult(value, route, expectedSessionId) {
|
|
797
|
+
const result = asRecord(value, route);
|
|
798
|
+
requireSessionId(result, route, expectedSessionId);
|
|
799
|
+
requireString(result, "displayName", route, true);
|
|
800
|
+
return result;
|
|
801
|
+
}
|
|
802
|
+
__name(parseStandaloneMetadataResult, "parseStandaloneMetadataResult");
|
|
803
|
+
function validateBatch(value, route, fields) {
|
|
804
|
+
const result = asRecord(value, route);
|
|
805
|
+
for (const field of fields) requireStringArray(result, field, route);
|
|
806
|
+
if (!Array.isArray(result["errors"])) {
|
|
807
|
+
throw new DaemonStandaloneProtocolError(route, "expected errors[]");
|
|
808
|
+
}
|
|
809
|
+
for (const item of result["errors"]) {
|
|
810
|
+
const error = asRecord(item, route, "batch error");
|
|
811
|
+
for (const field of ["sessionId", "code", "message"]) {
|
|
812
|
+
requireString(error, field, route);
|
|
813
|
+
}
|
|
814
|
+
}
|
|
815
|
+
return result;
|
|
816
|
+
}
|
|
817
|
+
__name(validateBatch, "validateBatch");
|
|
818
|
+
function parseArchiveStandaloneSessionsResult(value, route) {
|
|
819
|
+
return validateBatch(value, route, [
|
|
820
|
+
"archived",
|
|
821
|
+
"alreadyArchived",
|
|
822
|
+
"notFound"
|
|
823
|
+
]);
|
|
824
|
+
}
|
|
825
|
+
__name(parseArchiveStandaloneSessionsResult, "parseArchiveStandaloneSessionsResult");
|
|
826
|
+
function parseUnarchiveStandaloneSessionsResult(value, route) {
|
|
827
|
+
return validateBatch(value, route, [
|
|
828
|
+
"unarchived",
|
|
829
|
+
"alreadyActive",
|
|
830
|
+
"notFound"
|
|
831
|
+
]);
|
|
832
|
+
}
|
|
833
|
+
__name(parseUnarchiveStandaloneSessionsResult, "parseUnarchiveStandaloneSessionsResult");
|
|
834
|
+
function parseDeleteStandaloneSessionsResult(value, route) {
|
|
835
|
+
return validateBatch(value, route, [
|
|
836
|
+
"removed",
|
|
837
|
+
"notFound",
|
|
838
|
+
"fileCleanupPending"
|
|
839
|
+
]);
|
|
840
|
+
}
|
|
841
|
+
__name(parseDeleteStandaloneSessionsResult, "parseDeleteStandaloneSessionsResult");
|
|
842
|
+
function isStandaloneSessionNotFoundError(error) {
|
|
843
|
+
return error instanceof DaemonHttpError && error.status === 404 && recordCode(error.body) === "standalone_session_not_found";
|
|
844
|
+
}
|
|
845
|
+
__name(isStandaloneSessionNotFoundError, "isStandaloneSessionNotFoundError");
|
|
846
|
+
function isStandaloneCreationOutcomeUnknown(error) {
|
|
847
|
+
return error instanceof DaemonStandaloneCreationOutcomeUnknownError || error instanceof DaemonHttpError && recordCode(error.body) === "standalone_creation_outcome_unknown";
|
|
848
|
+
}
|
|
849
|
+
__name(isStandaloneCreationOutcomeUnknown, "isStandaloneCreationOutcomeUnknown");
|
|
850
|
+
function recordCode(value) {
|
|
851
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value["code"] : void 0;
|
|
852
|
+
}
|
|
853
|
+
__name(recordCode, "recordCode");
|
|
854
|
+
|
|
627
855
|
// packages/sdk-typescript/src/daemon/DaemonClient.ts
|
|
628
856
|
var WORKSPACE_MEMORY_REMEMBER_PATH = "/workspace/memory/remember";
|
|
629
857
|
var WORKSPACE_MEMORY_FORGET_PATH = "/workspace/memory/forget";
|
|
@@ -665,11 +893,15 @@ function parseSessionGenerationEvent(value) {
|
|
|
665
893
|
__name(parseSessionGenerationEvent, "parseSessionGenerationEvent");
|
|
666
894
|
var DEFAULT_SESSION_LIST_PAGE_SIZE = 20;
|
|
667
895
|
var DEFAULT_FETCH_TIMEOUT_MS = 3e4;
|
|
896
|
+
var DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS = 0;
|
|
668
897
|
var DEFAULT_SESSION_RESTORE_TIMEOUT_MS = 7e4;
|
|
669
898
|
var SESSION_RESTORE_TIMEOUT_HEADROOM_MS = 1e4;
|
|
670
899
|
var VOICE_TRANSCRIPTION_DEFAULT_TIMEOUT_MS = 65e3;
|
|
671
900
|
var GITHUB_SETUP_DEFAULT_TIMEOUT_MS = 9e4;
|
|
672
901
|
var CHANNEL_NOTIFY_DEFAULT_TIMEOUT_MS = 35e3;
|
|
902
|
+
var WORKSPACE_RUNTIME_ENSURE_SERVER_DEADLINE_MS = 6e4;
|
|
903
|
+
var WORKSPACE_RUNTIME_ENSURE_CLIENT_HEADROOM_MS = 2e3;
|
|
904
|
+
var WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS = WORKSPACE_RUNTIME_ENSURE_SERVER_DEADLINE_MS + WORKSPACE_RUNTIME_ENSURE_CLIENT_HEADROOM_MS;
|
|
673
905
|
var MAX_TIMER_DELAY_MS = 2147483647;
|
|
674
906
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
675
907
|
var MCP_RESTART_DEFAULT_TIMEOUT_MS = MCP_RESTART_SERVER_DEADLINE_MS + MCP_RESTART_CLIENT_HEADROOM_MS;
|
|
@@ -880,7 +1112,23 @@ var DaemonClient = class {
|
|
|
880
1112
|
}
|
|
881
1113
|
} catch {
|
|
882
1114
|
}
|
|
883
|
-
const
|
|
1115
|
+
const errorBody = body && typeof body === "object" && !Array.isArray(body) ? body : void 0;
|
|
1116
|
+
let detail = errorBody && "error" in errorBody ? String(errorBody["error"]) : `HTTP ${res.status}`;
|
|
1117
|
+
if (res.status >= 500 && errorBody?.["error"] === "Internal error" && typeof errorBody["code"] === "number") {
|
|
1118
|
+
const data = errorBody["data"];
|
|
1119
|
+
if (typeof data === "string" && data.length > 0) {
|
|
1120
|
+
detail = data;
|
|
1121
|
+
} else if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
1122
|
+
const record = data;
|
|
1123
|
+
const details = record["details"];
|
|
1124
|
+
const message = record["message"];
|
|
1125
|
+
if (typeof details === "string" && details.length > 0) {
|
|
1126
|
+
detail = details;
|
|
1127
|
+
} else if (typeof message === "string" && message.length > 0) {
|
|
1128
|
+
detail = message;
|
|
1129
|
+
}
|
|
1130
|
+
}
|
|
1131
|
+
}
|
|
884
1132
|
if (sessionId && res.status === 503 && body && typeof body === "object") {
|
|
885
1133
|
const data = body;
|
|
886
1134
|
if (data.code === "prompt_queue_full") {
|
|
@@ -1249,6 +1497,24 @@ var DaemonClient = class {
|
|
|
1249
1497
|
{ mode: "rest" }
|
|
1250
1498
|
);
|
|
1251
1499
|
}
|
|
1500
|
+
async ensureWorkspaceRuntime() {
|
|
1501
|
+
return await this.jsonRequest(
|
|
1502
|
+
"/workspace/runtime/ensure",
|
|
1503
|
+
"POST /workspace/runtime/ensure",
|
|
1504
|
+
{
|
|
1505
|
+
method: "POST",
|
|
1506
|
+
timeoutMs: WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS,
|
|
1507
|
+
mode: "rest"
|
|
1508
|
+
}
|
|
1509
|
+
);
|
|
1510
|
+
}
|
|
1511
|
+
async workspaceRuntimeStatus() {
|
|
1512
|
+
return await this.jsonRequest(
|
|
1513
|
+
"/workspace/runtime/status",
|
|
1514
|
+
"GET /workspace/runtime/status",
|
|
1515
|
+
{ mode: "rest" }
|
|
1516
|
+
);
|
|
1517
|
+
}
|
|
1252
1518
|
async workspaceProviders() {
|
|
1253
1519
|
return await this.fetchWithTimeout(
|
|
1254
1520
|
`${this.baseUrl}/workspace/providers`,
|
|
@@ -1551,22 +1817,21 @@ var DaemonClient = class {
|
|
|
1551
1817
|
}
|
|
1552
1818
|
// -- Workspace files (workspace files) -------------------------------
|
|
1553
1819
|
async readWorkspaceFile(filePath, opts = {}, clientId) {
|
|
1554
|
-
const
|
|
1555
|
-
url.searchParams.set("path", filePath);
|
|
1820
|
+
const query = new URLSearchParams({ path: filePath });
|
|
1556
1821
|
if (opts.maxBytes !== void 0) {
|
|
1557
|
-
|
|
1822
|
+
query.set("maxBytes", String(opts.maxBytes));
|
|
1558
1823
|
}
|
|
1559
1824
|
if (opts.line !== void 0) {
|
|
1560
|
-
|
|
1825
|
+
query.set("line", String(opts.line));
|
|
1561
1826
|
}
|
|
1562
1827
|
if (opts.limit !== void 0) {
|
|
1563
|
-
|
|
1828
|
+
query.set("limit", String(opts.limit));
|
|
1564
1829
|
}
|
|
1565
1830
|
if (opts.cursor !== void 0) {
|
|
1566
|
-
|
|
1831
|
+
query.set("cursor", opts.cursor);
|
|
1567
1832
|
}
|
|
1568
1833
|
return await this.fetchWithTimeout(
|
|
1569
|
-
|
|
1834
|
+
`${this.baseUrl}/file?${query.toString()}`,
|
|
1570
1835
|
{ headers: this.headers({}, clientId) },
|
|
1571
1836
|
async (res) => {
|
|
1572
1837
|
if (!res.ok) throw await this.failOnError(res, "GET /file");
|
|
@@ -1592,10 +1857,9 @@ var DaemonClient = class {
|
|
|
1592
1857
|
);
|
|
1593
1858
|
}
|
|
1594
1859
|
async fileStat(filePath) {
|
|
1595
|
-
const
|
|
1596
|
-
url.searchParams.set("path", filePath);
|
|
1860
|
+
const query = new URLSearchParams({ path: filePath });
|
|
1597
1861
|
return await this.fetchWithTimeout(
|
|
1598
|
-
|
|
1862
|
+
`${this.baseUrl}/stat?${query.toString()}`,
|
|
1599
1863
|
{ headers: this.headers() },
|
|
1600
1864
|
async (res) => {
|
|
1601
1865
|
if (!res.ok) throw await this.failOnError(res, "GET /stat");
|
|
@@ -1604,10 +1868,9 @@ var DaemonClient = class {
|
|
|
1604
1868
|
);
|
|
1605
1869
|
}
|
|
1606
1870
|
async dirList(dirPath) {
|
|
1607
|
-
const
|
|
1608
|
-
url.searchParams.set("path", dirPath);
|
|
1871
|
+
const query = new URLSearchParams({ path: dirPath });
|
|
1609
1872
|
return await this.fetchWithTimeout(
|
|
1610
|
-
|
|
1873
|
+
`${this.baseUrl}/list?${query.toString()}`,
|
|
1611
1874
|
{ headers: this.headers() },
|
|
1612
1875
|
async (res) => {
|
|
1613
1876
|
if (!res.ok) throw await this.failOnError(res, "GET /list");
|
|
@@ -1620,10 +1883,9 @@ var DaemonClient = class {
|
|
|
1620
1883
|
* pick a path outside any registered workspace (e.g. "Add workspace").
|
|
1621
1884
|
*/
|
|
1622
1885
|
async workspacePathSuggestions(prefix) {
|
|
1623
|
-
const
|
|
1624
|
-
url.searchParams.set("prefix", prefix);
|
|
1886
|
+
const query = new URLSearchParams({ prefix });
|
|
1625
1887
|
return await this.fetchWithTimeout(
|
|
1626
|
-
|
|
1888
|
+
`${this.baseUrl}/workspace-path-suggestions?${query.toString()}`,
|
|
1627
1889
|
{ headers: this.headers() },
|
|
1628
1890
|
async (res) => {
|
|
1629
1891
|
if (!res.ok) {
|
|
@@ -1646,10 +1908,9 @@ var DaemonClient = class {
|
|
|
1646
1908
|
);
|
|
1647
1909
|
}
|
|
1648
1910
|
async glob(pattern) {
|
|
1649
|
-
const
|
|
1650
|
-
url.searchParams.set("pattern", pattern);
|
|
1911
|
+
const query = new URLSearchParams({ pattern });
|
|
1651
1912
|
return await this.fetchWithTimeout(
|
|
1652
|
-
|
|
1913
|
+
`${this.baseUrl}/glob?${query.toString()}`,
|
|
1653
1914
|
{ headers: this.headers() },
|
|
1654
1915
|
async (res) => {
|
|
1655
1916
|
if (!res.ok) throw await this.failOnError(res, "GET /glob");
|
|
@@ -1699,9 +1960,8 @@ var DaemonClient = class {
|
|
|
1699
1960
|
* @internal
|
|
1700
1961
|
*/
|
|
1701
1962
|
async uploadFileToPath(uploadPath, label, req, clientId) {
|
|
1702
|
-
const
|
|
1703
|
-
|
|
1704
|
-
const url = target.toString();
|
|
1963
|
+
const query = new URLSearchParams({ path: req.path });
|
|
1964
|
+
const url = `${this.baseUrl}${uploadPath}?${query.toString()}`;
|
|
1705
1965
|
const headers = this.headers(
|
|
1706
1966
|
{ "Content-Type": "application/octet-stream" },
|
|
1707
1967
|
clientId
|
|
@@ -1854,10 +2114,11 @@ var DaemonClient = class {
|
|
|
1854
2114
|
}
|
|
1855
2115
|
/**
|
|
1856
2116
|
* Append to or replace `QWEN.md` at workspace or global scope.
|
|
1857
|
-
*
|
|
1858
|
-
*
|
|
1859
|
-
*
|
|
1860
|
-
*
|
|
2117
|
+
* The strict mutation gate accepts trusted-loopback callers without a token;
|
|
2118
|
+
* older daemons and non-trusted embeds can still return `token_required`.
|
|
2119
|
+
* When the daemon advertises `workspace_memory`, expect 200 with
|
|
2120
|
+
* `{ ok, filePath, bytesWritten, mode }`; older daemons without the
|
|
2121
|
+
* capability return 404.
|
|
1861
2122
|
*/
|
|
1862
2123
|
async writeWorkspaceMemory(req, clientId) {
|
|
1863
2124
|
return await this.fetchWithTimeout(
|
|
@@ -1881,6 +2142,11 @@ var DaemonClient = class {
|
|
|
1881
2142
|
* poll `getWorkspaceMemoryRememberTask()` until the task is terminal.
|
|
1882
2143
|
*/
|
|
1883
2144
|
async rememberWorkspaceMemory(content, opts = {}) {
|
|
2145
|
+
if (opts.scope) {
|
|
2146
|
+
await this.requireCapability(
|
|
2147
|
+
opts.scope === "project" ? "workspace_memory_remember_project_scope" : "workspace_memory_remember_user_scope"
|
|
2148
|
+
);
|
|
2149
|
+
}
|
|
1884
2150
|
return await this.jsonRequest(
|
|
1885
2151
|
WORKSPACE_MEMORY_REMEMBER_PATH,
|
|
1886
2152
|
`POST ${WORKSPACE_MEMORY_REMEMBER_PATH}`,
|
|
@@ -1888,7 +2154,8 @@ var DaemonClient = class {
|
|
|
1888
2154
|
method: "POST",
|
|
1889
2155
|
body: {
|
|
1890
2156
|
content,
|
|
1891
|
-
contextMode: opts.contextMode ?? "workspace"
|
|
2157
|
+
contextMode: opts.contextMode ?? "workspace",
|
|
2158
|
+
...opts.scope ? { scope: opts.scope } : {}
|
|
1892
2159
|
},
|
|
1893
2160
|
clientId: opts.clientId
|
|
1894
2161
|
}
|
|
@@ -1902,12 +2169,18 @@ var DaemonClient = class {
|
|
|
1902
2169
|
);
|
|
1903
2170
|
}
|
|
1904
2171
|
async forgetWorkspaceMemory(query, opts = {}) {
|
|
2172
|
+
if (opts.scope) {
|
|
2173
|
+
await this.requireCapability("workspace_memory_forget_scope");
|
|
2174
|
+
}
|
|
1905
2175
|
return await this.jsonRequest(
|
|
1906
2176
|
WORKSPACE_MEMORY_FORGET_PATH,
|
|
1907
2177
|
`POST ${WORKSPACE_MEMORY_FORGET_PATH}`,
|
|
1908
2178
|
{
|
|
1909
2179
|
method: "POST",
|
|
1910
|
-
body: {
|
|
2180
|
+
body: {
|
|
2181
|
+
query,
|
|
2182
|
+
...opts.scope ? { scope: opts.scope } : {}
|
|
2183
|
+
},
|
|
1911
2184
|
clientId: opts.clientId
|
|
1912
2185
|
}
|
|
1913
2186
|
);
|
|
@@ -2142,6 +2415,185 @@ var DaemonClient = class {
|
|
|
2142
2415
|
);
|
|
2143
2416
|
}
|
|
2144
2417
|
// -- Sessions ----------------------------------------------------------
|
|
2418
|
+
async createStandaloneSession(options = {}) {
|
|
2419
|
+
await this.requireCapability(STANDALONE_SESSIONS_CAPABILITY);
|
|
2420
|
+
const { sessionId: requestedSessionId, ...request } = options;
|
|
2421
|
+
const sessionId = (requestedSessionId ?? globalThis.crypto.randomUUID()).toLowerCase();
|
|
2422
|
+
try {
|
|
2423
|
+
const response = await this.jsonRequest(
|
|
2424
|
+
"/standalone/sessions",
|
|
2425
|
+
"POST /standalone/sessions",
|
|
2426
|
+
{
|
|
2427
|
+
method: "POST",
|
|
2428
|
+
body: { sessionId, ...request },
|
|
2429
|
+
mode: "rest"
|
|
2430
|
+
}
|
|
2431
|
+
);
|
|
2432
|
+
return parseStandaloneSession(
|
|
2433
|
+
response,
|
|
2434
|
+
"POST /standalone/sessions",
|
|
2435
|
+
sessionId
|
|
2436
|
+
);
|
|
2437
|
+
} catch (error) {
|
|
2438
|
+
if (error instanceof DaemonHttpError && !isStandaloneCreationOutcomeUnknown(error)) {
|
|
2439
|
+
throw error;
|
|
2440
|
+
}
|
|
2441
|
+
const recovery = await this.recoverStandaloneCreation(sessionId);
|
|
2442
|
+
throw new DaemonStandaloneCreationOutcomeUnknownError(
|
|
2443
|
+
sessionId,
|
|
2444
|
+
recovery,
|
|
2445
|
+
error
|
|
2446
|
+
);
|
|
2447
|
+
}
|
|
2448
|
+
}
|
|
2449
|
+
async listStandaloneSessions(options = {}) {
|
|
2450
|
+
return (await this.listStandaloneSessionsPage(options)).sessions;
|
|
2451
|
+
}
|
|
2452
|
+
async listStandaloneSessionsPage(options = {}) {
|
|
2453
|
+
const query = new URLSearchParams();
|
|
2454
|
+
if (options.cursor !== void 0) query.set("cursor", options.cursor);
|
|
2455
|
+
if (options.pageSize !== void 0) {
|
|
2456
|
+
query.set("size", String(options.pageSize));
|
|
2457
|
+
}
|
|
2458
|
+
if (options.archiveState !== void 0) {
|
|
2459
|
+
query.set("archiveState", options.archiveState);
|
|
2460
|
+
}
|
|
2461
|
+
const queryString = query.toString();
|
|
2462
|
+
const suffix = queryString ? `?${queryString}` : "";
|
|
2463
|
+
return await this.standaloneJsonRequest(
|
|
2464
|
+
`/standalone/sessions${suffix}`,
|
|
2465
|
+
"GET /standalone/sessions",
|
|
2466
|
+
parseStandaloneListPage
|
|
2467
|
+
);
|
|
2468
|
+
}
|
|
2469
|
+
async getStandaloneSession(sessionId) {
|
|
2470
|
+
await this.requireCapability(STANDALONE_SESSIONS_CAPABILITY);
|
|
2471
|
+
return await this.getStandaloneSessionUnchecked(sessionId.toLowerCase());
|
|
2472
|
+
}
|
|
2473
|
+
async loadStandaloneSession(sessionId, request = {}, clientId) {
|
|
2474
|
+
return await this.restoreStandaloneSession(
|
|
2475
|
+
"load",
|
|
2476
|
+
sessionId,
|
|
2477
|
+
request,
|
|
2478
|
+
clientId
|
|
2479
|
+
);
|
|
2480
|
+
}
|
|
2481
|
+
async resumeStandaloneSession(sessionId, request = {}, clientId) {
|
|
2482
|
+
return await this.restoreStandaloneSession(
|
|
2483
|
+
"resume",
|
|
2484
|
+
sessionId,
|
|
2485
|
+
request,
|
|
2486
|
+
clientId
|
|
2487
|
+
);
|
|
2488
|
+
}
|
|
2489
|
+
async repairStandaloneSessionDirectory(sessionId) {
|
|
2490
|
+
const normalized = sessionId.toLowerCase();
|
|
2491
|
+
const route = "POST /standalone/sessions/:id/repair-directory";
|
|
2492
|
+
return await this.standaloneJsonRequest(
|
|
2493
|
+
`/standalone/sessions/${urlEncode(normalized)}/repair-directory`,
|
|
2494
|
+
route,
|
|
2495
|
+
(response) => parseStandaloneDirectoryResult(response, route, normalized),
|
|
2496
|
+
{ method: "POST", body: {} }
|
|
2497
|
+
);
|
|
2498
|
+
}
|
|
2499
|
+
async renameStandaloneSession(sessionId, displayName, clientId) {
|
|
2500
|
+
const normalized = sessionId.toLowerCase();
|
|
2501
|
+
const route = "PATCH /standalone/sessions/:id/metadata";
|
|
2502
|
+
return await this.standaloneJsonRequest(
|
|
2503
|
+
`/standalone/sessions/${urlEncode(normalized)}/metadata`,
|
|
2504
|
+
route,
|
|
2505
|
+
(response) => parseStandaloneMetadataResult(response, route, normalized),
|
|
2506
|
+
{
|
|
2507
|
+
method: "PATCH",
|
|
2508
|
+
body: { displayName },
|
|
2509
|
+
clientId
|
|
2510
|
+
}
|
|
2511
|
+
);
|
|
2512
|
+
}
|
|
2513
|
+
async exportStandaloneSession(sessionId, options = {}) {
|
|
2514
|
+
await this.requireCapability(STANDALONE_SESSIONS_CAPABILITY);
|
|
2515
|
+
return await this.sessionExportRequest(
|
|
2516
|
+
`/standalone/sessions/${urlEncode(sessionId.toLowerCase())}/export`,
|
|
2517
|
+
"GET /standalone/sessions/:id/export",
|
|
2518
|
+
options
|
|
2519
|
+
);
|
|
2520
|
+
}
|
|
2521
|
+
async archiveStandaloneSessions(sessionIds) {
|
|
2522
|
+
return await this.standaloneBatchRequest(
|
|
2523
|
+
"archive",
|
|
2524
|
+
sessionIds,
|
|
2525
|
+
parseArchiveStandaloneSessionsResult
|
|
2526
|
+
);
|
|
2527
|
+
}
|
|
2528
|
+
async unarchiveStandaloneSessions(sessionIds) {
|
|
2529
|
+
return await this.standaloneBatchRequest(
|
|
2530
|
+
"unarchive",
|
|
2531
|
+
sessionIds,
|
|
2532
|
+
parseUnarchiveStandaloneSessionsResult
|
|
2533
|
+
);
|
|
2534
|
+
}
|
|
2535
|
+
async deleteStandaloneSessions(sessionIds) {
|
|
2536
|
+
return await this.standaloneBatchRequest(
|
|
2537
|
+
"delete",
|
|
2538
|
+
sessionIds,
|
|
2539
|
+
parseDeleteStandaloneSessionsResult
|
|
2540
|
+
);
|
|
2541
|
+
}
|
|
2542
|
+
async standaloneJsonRequest(path, route, parse, options = {}) {
|
|
2543
|
+
await this.requireCapability(STANDALONE_SESSIONS_CAPABILITY);
|
|
2544
|
+
const response = await this.jsonRequest(path, route, {
|
|
2545
|
+
...options,
|
|
2546
|
+
mode: "rest"
|
|
2547
|
+
});
|
|
2548
|
+
return parse(response, route);
|
|
2549
|
+
}
|
|
2550
|
+
async standaloneBatchRequest(action, sessionIds, parse) {
|
|
2551
|
+
const route = `POST /standalone/sessions/${action}`;
|
|
2552
|
+
return await this.standaloneJsonRequest(
|
|
2553
|
+
`/standalone/sessions/${action}`,
|
|
2554
|
+
route,
|
|
2555
|
+
parse,
|
|
2556
|
+
{
|
|
2557
|
+
method: "POST",
|
|
2558
|
+
body: {
|
|
2559
|
+
sessionIds: sessionIds.map((sessionId) => sessionId.toLowerCase())
|
|
2560
|
+
}
|
|
2561
|
+
}
|
|
2562
|
+
);
|
|
2563
|
+
}
|
|
2564
|
+
async restoreStandaloneSession(action, sessionId, request, clientId) {
|
|
2565
|
+
const normalized = sessionId.toLowerCase();
|
|
2566
|
+
const route = `POST /standalone/sessions/:id/${action}`;
|
|
2567
|
+
const { timeoutMs, ...body } = request;
|
|
2568
|
+
return await this.standaloneJsonRequest(
|
|
2569
|
+
`/standalone/sessions/${urlEncode(normalized)}/${action}`,
|
|
2570
|
+
route,
|
|
2571
|
+
(response) => parseRestoredStandaloneSession(response, route, normalized),
|
|
2572
|
+
{
|
|
2573
|
+
method: "POST",
|
|
2574
|
+
body,
|
|
2575
|
+
clientId,
|
|
2576
|
+
timeoutMs: this.resolveRestoreTimeoutMs(timeoutMs)
|
|
2577
|
+
}
|
|
2578
|
+
);
|
|
2579
|
+
}
|
|
2580
|
+
async getStandaloneSessionUnchecked(sessionId) {
|
|
2581
|
+
const route = "GET /standalone/sessions/:id";
|
|
2582
|
+
const response = await this.jsonRequest(
|
|
2583
|
+
`/standalone/sessions/${urlEncode(sessionId)}`,
|
|
2584
|
+
route,
|
|
2585
|
+
{ mode: "rest" }
|
|
2586
|
+
);
|
|
2587
|
+
return parseStandaloneLookup(response, route, sessionId);
|
|
2588
|
+
}
|
|
2589
|
+
async recoverStandaloneCreation(sessionId) {
|
|
2590
|
+
try {
|
|
2591
|
+
const lookup = await this.getStandaloneSessionUnchecked(sessionId);
|
|
2592
|
+
return "state" in lookup ? { state: "creating", sessionId } : { state: "existing", session: lookup };
|
|
2593
|
+
} catch (error) {
|
|
2594
|
+
return isStandaloneSessionNotFoundError(error) ? { state: "absent", sessionId } : { state: "unknown", sessionId, error };
|
|
2595
|
+
}
|
|
2596
|
+
}
|
|
2145
2597
|
async createOrAttachSession(req, clientId) {
|
|
2146
2598
|
if (req.sessionId !== void 0 && req.sessionId !== null) {
|
|
2147
2599
|
await this.requireCapability("session_id_override");
|
|
@@ -2446,6 +2898,18 @@ var DaemonClient = class {
|
|
|
2446
2898
|
}
|
|
2447
2899
|
);
|
|
2448
2900
|
}
|
|
2901
|
+
async sessionWorkflowTasks(sessionId, clientId) {
|
|
2902
|
+
return await this.fetchWithTimeout(
|
|
2903
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks?includeWorkflows=true`,
|
|
2904
|
+
{ headers: this.headers({}, clientId) },
|
|
2905
|
+
async (res) => {
|
|
2906
|
+
if (!res.ok) {
|
|
2907
|
+
throw await this.failOnError(res, "GET /session/:id/tasks");
|
|
2908
|
+
}
|
|
2909
|
+
return await res.json();
|
|
2910
|
+
}
|
|
2911
|
+
);
|
|
2912
|
+
}
|
|
2449
2913
|
async sessionLspStatus(sessionId, clientId) {
|
|
2450
2914
|
return await this.fetchWithTimeout(
|
|
2451
2915
|
`${this.baseUrl}/session/${urlEncode(sessionId)}/lsp`,
|
|
@@ -2459,18 +2923,30 @@ var DaemonClient = class {
|
|
|
2459
2923
|
);
|
|
2460
2924
|
}
|
|
2461
2925
|
async sessionTaskCancel(sessionId, taskId, kind, clientId) {
|
|
2926
|
+
return await this.sessionTaskMutation(
|
|
2927
|
+
sessionId,
|
|
2928
|
+
taskId,
|
|
2929
|
+
"cancel",
|
|
2930
|
+
{ kind },
|
|
2931
|
+
clientId
|
|
2932
|
+
);
|
|
2933
|
+
}
|
|
2934
|
+
async sessionWorkflowTaskAction(sessionId, taskId, action, clientId) {
|
|
2935
|
+
return await this.sessionTaskMutation(sessionId, taskId, "workflow-action", { action }, clientId);
|
|
2936
|
+
}
|
|
2937
|
+
async sessionTaskMutation(sessionId, taskId, route, body, clientId) {
|
|
2462
2938
|
return await this.fetchWithTimeout(
|
|
2463
|
-
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks/${urlEncode(taskId)}
|
|
2939
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks/${urlEncode(taskId)}/${route}`,
|
|
2464
2940
|
{
|
|
2465
2941
|
method: "POST",
|
|
2466
2942
|
headers: this.headers({ "Content-Type": "application/json" }, clientId),
|
|
2467
|
-
body: JSON.stringify(
|
|
2943
|
+
body: JSON.stringify(body)
|
|
2468
2944
|
},
|
|
2469
2945
|
async (res) => {
|
|
2470
2946
|
if (!res.ok) {
|
|
2471
2947
|
throw await this.failOnError(
|
|
2472
2948
|
res,
|
|
2473
|
-
|
|
2949
|
+
`POST /session/:id/tasks/:taskId/${route}`
|
|
2474
2950
|
);
|
|
2475
2951
|
}
|
|
2476
2952
|
return await res.json();
|
|
@@ -2518,6 +2994,19 @@ var DaemonClient = class {
|
|
|
2518
2994
|
* differs in the URL suffix and the route name reported on errors.
|
|
2519
2995
|
*/
|
|
2520
2996
|
async restoreSession(action, sessionId, req, clientId) {
|
|
2997
|
+
let sourceType = req.sourceType;
|
|
2998
|
+
let sourceId = req.sourceId;
|
|
2999
|
+
if (req.sourceType !== void 0 || req.sourceId !== void 0) {
|
|
3000
|
+
try {
|
|
3001
|
+
await this.requireCapability("session_source_metadata");
|
|
3002
|
+
} catch (error) {
|
|
3003
|
+
if (!(error instanceof DaemonCapabilityMissingError)) {
|
|
3004
|
+
throw error;
|
|
3005
|
+
}
|
|
3006
|
+
sourceType = void 0;
|
|
3007
|
+
sourceId = void 0;
|
|
3008
|
+
}
|
|
3009
|
+
}
|
|
2521
3010
|
const timeoutMs = this.resolveRestoreTimeoutMs(req.timeoutMs);
|
|
2522
3011
|
return await this.fetchWithTimeout(
|
|
2523
3012
|
`${this.baseUrl}/session/${urlEncode(sessionId)}/${action}`,
|
|
@@ -2528,7 +3017,9 @@ var DaemonClient = class {
|
|
|
2528
3017
|
cwd: req.workspaceCwd,
|
|
2529
3018
|
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
|
|
2530
3019
|
...action === "load" && req.historyPageSize !== void 0 ? { historyPageSize: req.historyPageSize } : {},
|
|
2531
|
-
...action === "load" && req.liveReplayMode !== void 0 ? { liveReplayMode: req.liveReplayMode } : {}
|
|
3020
|
+
...action === "load" && req.liveReplayMode !== void 0 ? { liveReplayMode: req.liveReplayMode } : {},
|
|
3021
|
+
...sourceType !== void 0 ? { sourceType } : {},
|
|
3022
|
+
...sourceId !== void 0 ? { sourceId } : {}
|
|
2532
3023
|
})
|
|
2533
3024
|
},
|
|
2534
3025
|
async (res) => {
|
|
@@ -2637,7 +3128,7 @@ var DaemonClient = class {
|
|
|
2637
3128
|
* Generate a one-sentence "where did I leave off"
|
|
2638
3129
|
* recap of the session. Wraps `generateSessionRecap` (core/services/
|
|
2639
3130
|
* sessionRecap.ts) via an ACP control-channel ext-method, so the
|
|
2640
|
-
* summary is computed against the active
|
|
3131
|
+
* summary is computed against the active LlmClient chat history
|
|
2641
3132
|
* inside the daemon's ACP child.
|
|
2642
3133
|
*
|
|
2643
3134
|
* Non-strict mutation gate — posture matches `/session/:id/prompt`
|
|
@@ -2894,8 +3385,9 @@ var DaemonClient = class {
|
|
|
2894
3385
|
}
|
|
2895
3386
|
/**
|
|
2896
3387
|
* Execute a direct daemon-side shell command for a session. The daemon must
|
|
2897
|
-
* be started with direct session shell enabled and bearer auth
|
|
2898
|
-
* callers must also provide a client id
|
|
3388
|
+
* be started with direct session shell enabled and either bearer auth or
|
|
3389
|
+
* trusted-loopback operator authority; callers must also provide a client id
|
|
3390
|
+
* already bound to this session.
|
|
2899
3391
|
* Prefer `DaemonSessionClient.shellCommand()` when available because it
|
|
2900
3392
|
* forwards the session-bound client id automatically.
|
|
2901
3393
|
*/
|
|
@@ -2917,9 +3409,9 @@ var DaemonClient = class {
|
|
|
2917
3409
|
}
|
|
2918
3410
|
/**
|
|
2919
3411
|
* Toggle a tool name in the workspace's
|
|
2920
|
-
* `tools.disabled` settings list.
|
|
2921
|
-
*
|
|
2922
|
-
* the settings file directly and fan-outs a `tool_toggled` event to
|
|
3412
|
+
* `tools.disabled` settings list. The strict mutation gate accepts
|
|
3413
|
+
* trusted-loopback operator authority or listener credentials. The daemon
|
|
3414
|
+
* writes the settings file directly and fan-outs a `tool_toggled` event to
|
|
2923
3415
|
* every live session SSE bus.
|
|
2924
3416
|
*
|
|
2925
3417
|
* Already-registered tools in active sessions are NOT retroactively
|
|
@@ -2953,11 +3445,12 @@ var DaemonClient = class {
|
|
|
2953
3445
|
);
|
|
2954
3446
|
}
|
|
2955
3447
|
/**
|
|
2956
|
-
*
|
|
3448
|
+
* Update workspace Skill settings by name without requiring a loaded Skill.
|
|
2957
3449
|
* Active ACP sessions refresh their skill validation and command lists before
|
|
2958
3450
|
* the response returns; `activation` reports deferred or partial refreshes.
|
|
2959
3451
|
*
|
|
2960
|
-
* Pre-flight
|
|
3452
|
+
* Pre-flight
|
|
3453
|
+
* `caps.features.includes('workspace_skill_settings_toggle')` before calling.
|
|
2961
3454
|
*/
|
|
2962
3455
|
async setWorkspaceSkillEnabled(skillName, enabled, opts) {
|
|
2963
3456
|
return await this.fetchWithTimeout(
|
|
@@ -2982,10 +3475,11 @@ var DaemonClient = class {
|
|
|
2982
3475
|
);
|
|
2983
3476
|
}
|
|
2984
3477
|
/**
|
|
2985
|
-
*
|
|
3478
|
+
* Update workspace Skill settings for up to 100 names in one write.
|
|
2986
3479
|
*
|
|
2987
3480
|
* Pre-flight
|
|
2988
|
-
* `caps.features.includes('
|
|
3481
|
+
* `caps.features.includes('workspace_skill_settings_batch_toggle')` before
|
|
3482
|
+
* calling.
|
|
2989
3483
|
*/
|
|
2990
3484
|
async setWorkspaceSkillsEnabled(skillNames, enabled, opts) {
|
|
2991
3485
|
return await this.fetchWithTimeout(
|
|
@@ -3074,7 +3568,8 @@ var DaemonClient = class {
|
|
|
3074
3568
|
throw await this.failOnError(res, "DELETE /workspace/models");
|
|
3075
3569
|
}
|
|
3076
3570
|
return await res.json();
|
|
3077
|
-
}
|
|
3571
|
+
},
|
|
3572
|
+
this.hasExplicitFetchTimeout ? void 0 : DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS
|
|
3078
3573
|
);
|
|
3079
3574
|
}
|
|
3080
3575
|
async workspaceVoice(clientId) {
|
|
@@ -4175,7 +4670,8 @@ var DaemonClient = class {
|
|
|
4175
4670
|
throw await this.failOnError(res, "POST /workspace/auth/provider");
|
|
4176
4671
|
}
|
|
4177
4672
|
return await res.json();
|
|
4178
|
-
}
|
|
4673
|
+
},
|
|
4674
|
+
this.hasExplicitFetchTimeout ? void 0 : DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS
|
|
4179
4675
|
);
|
|
4180
4676
|
}
|
|
4181
4677
|
async addWorkspace(cwd, options = {}) {
|
|
@@ -4303,6 +4799,26 @@ var WorkspaceDaemonClient = class {
|
|
|
4303
4799
|
workspaceMcp() {
|
|
4304
4800
|
return this.get("/mcp", "GET /workspaces/:workspace/mcp");
|
|
4305
4801
|
}
|
|
4802
|
+
ensureRuntime() {
|
|
4803
|
+
return this.client.workspaceJsonRequest(
|
|
4804
|
+
this.workspaceSelector,
|
|
4805
|
+
"/runtime/ensure",
|
|
4806
|
+
"POST /workspaces/:workspace/runtime/ensure",
|
|
4807
|
+
{
|
|
4808
|
+
method: "POST",
|
|
4809
|
+
timeoutMs: WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS,
|
|
4810
|
+
mode: "rest"
|
|
4811
|
+
}
|
|
4812
|
+
);
|
|
4813
|
+
}
|
|
4814
|
+
runtimeStatus() {
|
|
4815
|
+
return this.client.workspaceJsonRequest(
|
|
4816
|
+
this.workspaceSelector,
|
|
4817
|
+
"/runtime/status",
|
|
4818
|
+
"GET /workspaces/:workspace/runtime/status",
|
|
4819
|
+
{ mode: "rest" }
|
|
4820
|
+
);
|
|
4821
|
+
}
|
|
4306
4822
|
/**
|
|
4307
4823
|
* Send text directly through this exact workspace's channel worker.
|
|
4308
4824
|
* A successful capability pre-flight does not guarantee worker liveness;
|
|
@@ -5058,6 +5574,22 @@ var WorkspaceDaemonClient = class {
|
|
|
5058
5574
|
{ mode: "rest" }
|
|
5059
5575
|
);
|
|
5060
5576
|
}
|
|
5577
|
+
extensionState(extensionId) {
|
|
5578
|
+
return this.client.workspaceJsonRequest(
|
|
5579
|
+
this.workspaceSelector,
|
|
5580
|
+
`/extensions/${urlEncode(extensionId)}/state`,
|
|
5581
|
+
"GET /workspaces/:workspace/extensions/:extensionId/state",
|
|
5582
|
+
{ mode: "rest" }
|
|
5583
|
+
);
|
|
5584
|
+
}
|
|
5585
|
+
setExtensionState(extensionId, update, clientId) {
|
|
5586
|
+
return this.client.workspaceJsonRequest(
|
|
5587
|
+
this.workspaceSelector,
|
|
5588
|
+
`/extensions/${urlEncode(extensionId)}/state`,
|
|
5589
|
+
"PUT /workspaces/:workspace/extensions/:extensionId/state",
|
|
5590
|
+
{ method: "PUT", body: update, clientId, mode: "rest" }
|
|
5591
|
+
);
|
|
5592
|
+
}
|
|
5061
5593
|
setExtensionActivation(extensionId, state, clientId) {
|
|
5062
5594
|
return this.client.workspaceJsonRequest(
|
|
5063
5595
|
this.workspaceSelector,
|
|
@@ -5191,12 +5723,50 @@ function isSessionAttachmentReference(value) {
|
|
|
5191
5723
|
__name(isSessionAttachmentReference, "isSessionAttachmentReference");
|
|
5192
5724
|
var MAX_ATTACHMENT_CACHE_BYTES = 32 * 1024 * 1024;
|
|
5193
5725
|
var MAX_ATTACHMENT_CACHE_ENTRIES = 128;
|
|
5726
|
+
function createStandaloneRestoredClient(client, restored, includeReplay) {
|
|
5727
|
+
const {
|
|
5728
|
+
state,
|
|
5729
|
+
hasActivePrompt,
|
|
5730
|
+
compactedReplay,
|
|
5731
|
+
liveJournal,
|
|
5732
|
+
historyHasMore,
|
|
5733
|
+
historyAnchorRecordId,
|
|
5734
|
+
replayDegraded,
|
|
5735
|
+
partial,
|
|
5736
|
+
replayError,
|
|
5737
|
+
lastEventId,
|
|
5738
|
+
eventEpoch,
|
|
5739
|
+
...session
|
|
5740
|
+
} = restored;
|
|
5741
|
+
return new DaemonSessionClient({
|
|
5742
|
+
client,
|
|
5743
|
+
session,
|
|
5744
|
+
hasActivePrompt,
|
|
5745
|
+
state,
|
|
5746
|
+
lastEventId: lastEventId ?? 0,
|
|
5747
|
+
eventEpoch,
|
|
5748
|
+
...includeReplay ? {
|
|
5749
|
+
replaySnapshot: {
|
|
5750
|
+
compactedReplay: compactedReplay ?? [],
|
|
5751
|
+
liveJournal: liveJournal ?? []
|
|
5752
|
+
},
|
|
5753
|
+
replaySnapshotComplete: Array.isArray(compactedReplay) && Array.isArray(liveJournal),
|
|
5754
|
+
replayPartial: partial === true,
|
|
5755
|
+
replayError,
|
|
5756
|
+
historyHasMore,
|
|
5757
|
+
historyAnchorRecordId,
|
|
5758
|
+
replayDegraded
|
|
5759
|
+
} : {}
|
|
5760
|
+
});
|
|
5761
|
+
}
|
|
5762
|
+
__name(createStandaloneRestoredClient, "createStandaloneRestoredClient");
|
|
5194
5763
|
var DaemonSessionClient = class _DaemonSessionClient {
|
|
5195
5764
|
static {
|
|
5196
5765
|
__name(this, "DaemonSessionClient");
|
|
5197
5766
|
}
|
|
5198
5767
|
client;
|
|
5199
5768
|
session;
|
|
5769
|
+
restoreStrategy;
|
|
5200
5770
|
state;
|
|
5201
5771
|
/**
|
|
5202
5772
|
* Not `readonly`: {@link consumeReplaySnapshot} swaps it for an empty
|
|
@@ -5244,6 +5814,8 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5244
5814
|
constructor(opts) {
|
|
5245
5815
|
this.client = opts.client;
|
|
5246
5816
|
this.session = { ...opts.session };
|
|
5817
|
+
const context = opts.session.context;
|
|
5818
|
+
this.restoreStrategy = opts.session.sourceType === "standalone" && context?.kind === "standalone" ? { kind: "standalone" } : { kind: "workspace", workspaceCwd: opts.session.workspaceCwd };
|
|
5247
5819
|
this.state = { ...opts.state ?? {} };
|
|
5248
5820
|
this.hasActivePrompt = opts.hasActivePrompt ?? false;
|
|
5249
5821
|
this.historyHasMore = opts.historyHasMore ?? false;
|
|
@@ -5343,6 +5915,34 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5343
5915
|
eventEpoch
|
|
5344
5916
|
});
|
|
5345
5917
|
}
|
|
5918
|
+
static async createStandalone(client, options = {}) {
|
|
5919
|
+
const session = await client.createStandaloneSession(options);
|
|
5920
|
+
return new _DaemonSessionClient({
|
|
5921
|
+
client,
|
|
5922
|
+
session,
|
|
5923
|
+
hasActivePrompt: session.hasActivePrompt,
|
|
5924
|
+
lastEventId: 0,
|
|
5925
|
+
eventEpoch: session.eventEpoch
|
|
5926
|
+
});
|
|
5927
|
+
}
|
|
5928
|
+
static async loadStandalone(client, sessionId, request = {}, clientId) {
|
|
5929
|
+
const restored = await client.loadStandaloneSession(
|
|
5930
|
+
sessionId,
|
|
5931
|
+
request,
|
|
5932
|
+
clientId
|
|
5933
|
+
);
|
|
5934
|
+
const result = createStandaloneRestoredClient(client, restored, true);
|
|
5935
|
+
await result.hydrateReplaySnapshot();
|
|
5936
|
+
return result;
|
|
5937
|
+
}
|
|
5938
|
+
static async resumeStandalone(client, sessionId, request = {}, clientId) {
|
|
5939
|
+
const restored = await client.resumeStandaloneSession(
|
|
5940
|
+
sessionId,
|
|
5941
|
+
request,
|
|
5942
|
+
clientId
|
|
5943
|
+
);
|
|
5944
|
+
return createStandaloneRestoredClient(client, restored, false);
|
|
5945
|
+
}
|
|
5346
5946
|
get sessionId() {
|
|
5347
5947
|
return this.session.sessionId;
|
|
5348
5948
|
}
|
|
@@ -5526,7 +6126,10 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5526
6126
|
*/
|
|
5527
6127
|
async reattach() {
|
|
5528
6128
|
if (this.reattaching) return this.reattaching;
|
|
5529
|
-
this.
|
|
6129
|
+
const resume = this.restoreStrategy.kind === "standalone" ? this.client.resumeStandaloneSession(this.sessionId) : this.client.resumeSession(this.sessionId, {
|
|
6130
|
+
workspaceCwd: this.restoreStrategy.workspaceCwd
|
|
6131
|
+
});
|
|
6132
|
+
this.reattaching = resume.then((session) => {
|
|
5530
6133
|
this.session.clientId = session.clientId;
|
|
5531
6134
|
});
|
|
5532
6135
|
try {
|
|
@@ -5699,9 +6302,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5699
6302
|
}
|
|
5700
6303
|
/**
|
|
5701
6304
|
* Execute a direct daemon-side shell command for this session. Requires the
|
|
5702
|
-
* daemon to opt in to direct session shell
|
|
5703
|
-
*
|
|
5704
|
-
* or attached.
|
|
6305
|
+
* daemon to opt in to direct session shell with bearer auth or
|
|
6306
|
+
* trusted-loopback authority; this wrapper automatically forwards the client
|
|
6307
|
+
* id bound when the session was created or attached.
|
|
5705
6308
|
*/
|
|
5706
6309
|
shellCommand(command, signal) {
|
|
5707
6310
|
return this.client.shellCommand(this.sessionId, command, {
|
|
@@ -5724,6 +6327,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5724
6327
|
tasks() {
|
|
5725
6328
|
return this.client.sessionTasks(this.sessionId, this.clientId);
|
|
5726
6329
|
}
|
|
6330
|
+
workflowTasks() {
|
|
6331
|
+
return this.client.sessionWorkflowTasks(this.sessionId, this.clientId);
|
|
6332
|
+
}
|
|
5727
6333
|
lspStatus() {
|
|
5728
6334
|
return this.client.sessionLspStatus(this.sessionId, this.clientId);
|
|
5729
6335
|
}
|
|
@@ -5735,6 +6341,14 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5735
6341
|
this.clientId
|
|
5736
6342
|
);
|
|
5737
6343
|
}
|
|
6344
|
+
controlWorkflowTask(taskId, action) {
|
|
6345
|
+
return this.client.sessionWorkflowTaskAction(
|
|
6346
|
+
this.sessionId,
|
|
6347
|
+
taskId,
|
|
6348
|
+
action,
|
|
6349
|
+
this.clientId
|
|
6350
|
+
);
|
|
6351
|
+
}
|
|
5738
6352
|
clearGoal() {
|
|
5739
6353
|
return this.client.sessionGoalClear(this.sessionId, this.clientId);
|
|
5740
6354
|
}
|
|
@@ -8987,11 +9601,12 @@ function createDaemonToolPreview(input, opts = {}, depth = 0) {
|
|
|
8987
9601
|
if (isRecord2(input)) {
|
|
8988
9602
|
const nestedInput = input["rawInput"] ?? input["input"] ?? input["args"];
|
|
8989
9603
|
if (nestedInput !== void 0 && nestedInput !== input) {
|
|
9604
|
+
const meta = isRecord2(input["_meta"]) ? input["_meta"] : void 0;
|
|
8990
9605
|
const nested = createDaemonToolPreview(
|
|
8991
9606
|
nestedInput,
|
|
8992
9607
|
{
|
|
8993
9608
|
title: opts.title ?? getFirstString(input, ["title"]),
|
|
8994
|
-
toolName: opts.toolName ?? getFirstString(input, ["toolName", "name"]),
|
|
9609
|
+
toolName: opts.toolName ?? getFirstString(input, ["toolName", "name"]) ?? (meta ? getFirstString(meta, ["toolName"]) : void 0),
|
|
8995
9610
|
toolKind: opts.toolKind ?? getFirstString(input, ["kind"])
|
|
8996
9611
|
},
|
|
8997
9612
|
depth + 1
|
|
@@ -9052,12 +9667,14 @@ function detectFileDiff(input, opts = {}) {
|
|
|
9052
9667
|
const oldText = getFirstString(input, [
|
|
9053
9668
|
"oldText",
|
|
9054
9669
|
"old_text",
|
|
9670
|
+
"old_string",
|
|
9055
9671
|
"old_str",
|
|
9056
9672
|
"oldString"
|
|
9057
9673
|
]);
|
|
9058
9674
|
const explicitNewText = getFirstString(input, [
|
|
9059
9675
|
"newText",
|
|
9060
9676
|
"new_text",
|
|
9677
|
+
"new_string",
|
|
9061
9678
|
"new_str",
|
|
9062
9679
|
"newString"
|
|
9063
9680
|
]);
|
|
@@ -10113,6 +10730,10 @@ function discardToolBlock(state, toolCallId) {
|
|
|
10113
10730
|
}
|
|
10114
10731
|
}
|
|
10115
10732
|
__name(discardToolBlock, "discardToolBlock");
|
|
10733
|
+
function isTaskExecutionMode(value) {
|
|
10734
|
+
return value === "foreground" || value === "background";
|
|
10735
|
+
}
|
|
10736
|
+
__name(isTaskExecutionMode, "isTaskExecutionMode");
|
|
10116
10737
|
function compactTaskExecutionOutput(rawOutput, retainSubagentBlocks) {
|
|
10117
10738
|
if (retainSubagentBlocks || !isRecord2(rawOutput) || rawOutput["type"] !== "task_execution") {
|
|
10118
10739
|
return rawOutput;
|
|
@@ -10123,6 +10744,7 @@ function compactTaskExecutionOutput(rawOutput, retainSubagentBlocks) {
|
|
|
10123
10744
|
"subagentColor",
|
|
10124
10745
|
"taskDescription",
|
|
10125
10746
|
"status",
|
|
10747
|
+
"executionMode",
|
|
10126
10748
|
"terminateReason",
|
|
10127
10749
|
"tokenCount",
|
|
10128
10750
|
"executionSummary"
|
|
@@ -12333,12 +12955,15 @@ export {
|
|
|
12333
12955
|
DaemonPendingPromptLimitError,
|
|
12334
12956
|
DaemonSessionClient,
|
|
12335
12957
|
DaemonSessionIdProtocolError,
|
|
12958
|
+
DaemonStandaloneCreationOutcomeUnknownError,
|
|
12959
|
+
DaemonStandaloneProtocolError,
|
|
12336
12960
|
DaemonTransportClosedError,
|
|
12337
12961
|
EXTENSION_ARCHIVE_UPLOAD_TIMEOUT_MS,
|
|
12338
12962
|
MID_TURN_MESSAGE_INJECTED_EVENT,
|
|
12339
12963
|
PENDING_PROMPT_ADDED_EVENT,
|
|
12340
12964
|
PENDING_PROMPT_COMPLETED_EVENT,
|
|
12341
12965
|
PENDING_PROMPT_STARTED_EVENT,
|
|
12966
|
+
STANDALONE_SESSIONS_CAPABILITY,
|
|
12342
12967
|
SseFramingError,
|
|
12343
12968
|
UNRECOGNIZED_DIAGNOSTICS_LIMIT,
|
|
12344
12969
|
WorkspaceDaemonClient,
|
|
@@ -12368,8 +12993,11 @@ export {
|
|
|
12368
12993
|
isNonBlockingAccepted,
|
|
12369
12994
|
isSessionLevelNotFound,
|
|
12370
12995
|
isStaleBranchPointError,
|
|
12996
|
+
isStandaloneCreationOutcomeUnknown,
|
|
12997
|
+
isStandaloneSessionNotFoundError,
|
|
12371
12998
|
isSubagentChildBlock,
|
|
12372
12999
|
isSubagentSessionNotFound,
|
|
13000
|
+
isTaskExecutionMode,
|
|
12373
13001
|
isTrimmedPermissionBlockId,
|
|
12374
13002
|
isTrimmedToolBlockId,
|
|
12375
13003
|
isUnrecognizedDiagnosticReason,
|
|
@@ -12410,3 +13038,8 @@ export {
|
|
|
12410
13038
|
* Copyright 2025 Alibaba Group Holding Limited. All Rights Reserved.
|
|
12411
13039
|
* Licensed under the Apache License, Version 2.0
|
|
12412
13040
|
*/
|
|
13041
|
+
/**
|
|
13042
|
+
* @license
|
|
13043
|
+
* Copyright 2026 Qwen Team
|
|
13044
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
13045
|
+
*/
|