@qwen-code/qwen-code 0.22.3 → 0.23.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/bundled/computer-use/SKILL.md +116 -180
- package/bundled/goal-draft/SKILL.md +5 -1
- 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 +8 -2
- package/bundled/qc-helper/docs/configuration/settings.md +63 -58
- package/bundled/qc-helper/docs/extension/introduction.md +1 -1
- package/bundled/qc-helper/docs/features/_meta.ts +1 -0
- 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/dingtalk.md +4 -2
- package/bundled/qc-helper/docs/features/channels/dws.md +6 -2
- package/bundled/qc-helper/docs/features/channels/overview.md +5 -2
- package/bundled/qc-helper/docs/features/code-review.md +2 -2
- package/bundled/qc-helper/docs/features/commands.md +79 -1
- package/bundled/qc-helper/docs/features/computer-use.md +2 -2
- package/bundled/qc-helper/docs/features/goals.md +9 -3
- package/bundled/qc-helper/docs/features/headless.md +16 -1
- package/bundled/qc-helper/docs/features/hooks.md +8 -3
- package/bundled/qc-helper/docs/features/memory.md +1 -0
- package/bundled/qc-helper/docs/features/output-styles.md +38 -0
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +17 -7
- package/bundled/qc-helper/docs/qwen-serve.md +74 -55
- package/bundled/review/SKILL.md +16 -7
- package/bundled/review/references/posting.md +3 -3
- package/chunks/MaxSizedBox-B3D7545A.js +111 -0
- package/chunks/{StandaloneSessionPicker-2FJAOLGG.js → StandaloneSessionPicker-QUMO4LLQ.js} +88 -86
- package/chunks/{acp-startup-profiler-GNYAL6LI.js → acp-startup-profiler-M4X5F3VK.js} +2 -2
- package/chunks/{acpAgent-2ZMIJAFV.js → acpAgent-2GTFCIEP.js} +2041 -444
- package/chunks/{agent-X5WX3L2I.js → agent-XKF5SZWU.js} +46 -46
- package/chunks/agent-headless-OC2IB55D.js +85 -0
- package/chunks/{anthropicContentGenerator-YVTB6QX7.js → anthropicContentGenerator-L76MR5OR.js} +53 -20
- package/chunks/{artifact-tool-XSMPHZBT.js → artifact-tool-MYCL2QCS.js} +3 -4
- package/chunks/{askUserQuestion-4SWJY65V.js → askUserQuestion-THQZMG44.js} +45 -7
- package/chunks/bridge-IHSBI2YJ.js +118 -0
- package/chunks/{build-INBK7IXX.js → build-63BIOYWK.js} +1 -1
- package/chunks/{ca-7HPYOYSZ.js → ca-BNU7YNDE.js} +3 -0
- package/chunks/{channel-management-service-HQ6KDS7C.js → channel-management-service-4MTCEGJB.js} +4 -4
- package/chunks/channel-settings-store-BVKWAI2T.js +121 -0
- package/chunks/{channel-worker-group-6NA6BBZV.js → channel-worker-group-47F4ISUZ.js} +7 -7
- package/chunks/{channel-worker-manager-NEZ2J6RK.js → channel-worker-manager-I5Y44GYR.js} +51 -10
- package/chunks/{channel-worker-supervisor-FKU7DIHJ.js → channel-worker-supervisor-6VCLUXFE.js} +4 -4
- package/chunks/{chunk-PPKZ7JOE.js → chunk-22UH7VTP.js} +1 -1
- package/chunks/chunk-24FVUD5P.js +49 -0
- package/chunks/{chunk-MZCJWS5Y.js → chunk-2M3EWQNG.js} +20 -0
- package/chunks/{chunk-7T52W4SW.js → chunk-32LU3APX.js} +1 -1
- package/chunks/{chunk-42IDLQWS.js → chunk-373DQUVA.js} +48 -13
- package/chunks/{chunk-MSBO7X2W.js → chunk-37JFWFCD.js} +1 -1
- package/chunks/{chunk-3JXM2CVW.js → chunk-3AKCBZVW.js} +3 -3
- package/chunks/{chunk-TVC6HQ2U.js → chunk-3JQZVCBI.js} +2 -2
- package/chunks/{chunk-2LNNVAUV.js → chunk-3L724BJ5.js} +246 -15
- package/chunks/{chunk-E7REAOTN.js → chunk-47ECGEJC.js} +4 -0
- package/chunks/{chunk-WNPDGUJO.js → chunk-47RYEQW5.js} +2 -3
- package/chunks/{chunk-TZBSGJ6C.js → chunk-4BGDFKQE.js} +7 -7
- package/chunks/{chunk-PZ66FRIC.js → chunk-4F7GQGXB.js} +11772 -4773
- package/chunks/{chunk-DMLVSW7L.js → chunk-4HVH57J3.js} +713 -9
- package/chunks/{chunk-CMHFCLBU.js → chunk-4LIFGNI4.js} +1 -1
- package/chunks/{chunk-3SZC4VP4.js → chunk-4M24B5J5.js} +88 -49
- package/chunks/{chunk-BOWFGCEU.js → chunk-4PSDSCW3.js} +3 -3
- package/chunks/chunk-4UANMABT.js +1026 -0
- package/chunks/{chunk-M3QRM3DE.js → chunk-54C6PIGT.js} +5 -5
- package/chunks/{chunk-HP5LR5HL.js → chunk-5EIOJGCR.js} +4 -4
- package/chunks/{chunk-64REQJJ2.js → chunk-5H5S4UY5.js} +3 -3
- package/chunks/chunk-5IENVM7Z.js +35 -0
- package/chunks/{chunk-I6LYRJPB.js → chunk-5Q5RC2WE.js} +2 -2
- package/chunks/{chunk-WGY3AVGM.js → chunk-5RTTI4GE.js} +79 -5
- package/chunks/{chunk-KID24ZFN.js → chunk-64QH2UC6.js} +13 -1
- package/chunks/{chunk-MF7HCQWZ.js → chunk-65HWLGA7.js} +3 -3
- package/chunks/{chunk-OU5APVWO.js → chunk-6A2D4QSO.js} +13 -7
- package/chunks/chunk-6HUXPLB5.js +110 -0
- package/chunks/{chunk-VQUGEVGR.js → chunk-7IKXTGZT.js} +1 -1
- package/chunks/{chunk-UTLCH2FK.js → chunk-7JMGTOH7.js} +437 -136
- package/chunks/{chunk-7LOELM2I.js → chunk-7RB56BRJ.js} +3 -3
- package/chunks/{chunk-NIFYWDYN.js → chunk-7TBU7PU2.js} +1 -1
- package/chunks/{chunk-V2NDP3I4.js → chunk-7XL4WRXM.js} +2 -2
- package/chunks/chunk-ADJD4LZF.js +210 -0
- package/chunks/{chunk-T7KMERIX.js → chunk-ADYN7P2Y.js} +2 -2
- package/chunks/{chunk-TPI7O7HR.js → chunk-AHYTURFB.js} +1 -1
- package/chunks/{chunk-LUEHOUHM.js → chunk-AI35S34R.js} +3 -3
- package/chunks/{chunk-CIZCL2MW.js → chunk-ALUYNJPM.js} +1486 -2172
- package/chunks/{chunk-ABS25QER.js → chunk-ANVG3BVV.js} +1 -1
- package/chunks/{chunk-6ZPDLGHN.js → chunk-AZJLY2XZ.js} +5 -5
- package/chunks/{chunk-A3LWD5MK.js → chunk-BA4WJC4L.js} +1 -1
- package/chunks/{chunk-W3JH33JE.js → chunk-BFY33IB4.js} +18 -10
- package/chunks/{chunk-N4X7G4J2.js → chunk-BHTYRHJF.js} +1 -1
- package/chunks/{chunk-TEBDFQBZ.js → chunk-BJXCYUGM.js} +11 -6
- package/chunks/{chunk-7VMIMAVB.js → chunk-C2VWOXHS.js} +8 -8
- package/chunks/{chunk-XHF7WQ6B.js → chunk-C4TIXFDZ.js} +16 -5
- package/chunks/chunk-CHEIIBT3.js +40 -0
- package/chunks/chunk-CVX63TFJ.js +348 -0
- package/chunks/{chunk-RXFQM6FQ.js → chunk-DMEUXLSS.js} +16 -1
- package/chunks/{chunk-EKSCLBBF.js → chunk-DQCKVAF5.js} +23 -5
- package/chunks/{chunk-734C6JGI.js → chunk-DSX7KQPM.js} +5195 -666
- package/chunks/{chunk-4CMJKUND.js → chunk-DTVQSSNM.js} +67 -2
- package/chunks/{chunk-BKWNKLZB.js → chunk-DYTW3QVG.js} +24 -9
- package/chunks/{chunk-C2X7KY45.js → chunk-E4JNFXNI.js} +3 -3
- package/chunks/{chunk-UHQFIS7N.js → chunk-EAHOJF6V.js} +28 -4
- package/chunks/{chunk-YLSQLSH7.js → chunk-EBDGRBZX.js} +24 -16
- package/chunks/{chunk-DJBQCO2E.js → chunk-EFTPIZIC.js} +412 -3
- package/chunks/{chunk-6DIGWMGT.js → chunk-EIJT2PQ6.js} +2 -2
- package/chunks/{chunk-4TT3IVGA.js → chunk-EIY7SUPZ.js} +1 -1
- package/chunks/{chunk-XQFT3QUF.js → chunk-ENYUKMFK.js} +1 -1
- package/chunks/{chunk-ZWJDJ6RU.js → chunk-EVFDRBUM.js} +157 -153
- package/chunks/{chunk-4VPCTGH6.js → chunk-EWRW2WQC.js} +15 -9
- package/chunks/{chunk-VBCPNIQD.js → chunk-F33GFWPR.js} +47 -184
- package/chunks/{chunk-ERFDKH32.js → chunk-F47DITLZ.js} +19 -8
- package/chunks/{chunk-73RM4POK.js → chunk-F7NF2IOE.js} +7 -7
- package/chunks/{chunk-EB6QRGHM.js → chunk-FD5SJOWT.js} +10 -7
- package/chunks/{chunk-SS5SDCD3.js → chunk-FRICLXCZ.js} +7 -7
- package/chunks/{chunk-NU7RKEZR.js → chunk-FUO5V5KI.js} +14 -7
- package/chunks/{chunk-G6FECKTJ.js → chunk-G5PBOQWI.js} +9 -6
- package/chunks/{chunk-CAJTKR6W.js → chunk-G7HBEEX7.js} +15 -9
- package/chunks/{chunk-4QHPPXK2.js → chunk-GB4UKWY5.js} +2 -2
- package/chunks/{chunk-QYMAKPY5.js → chunk-GH2S4GD5.js} +350 -12
- package/chunks/{chunk-LHBUKJG2.js → chunk-GXUTFQXK.js} +28 -25
- package/chunks/{chunk-KJO2LBUK.js → chunk-H43PSPYS.js} +5 -5
- package/chunks/{chunk-XSG6G3G6.js → chunk-HJBHMANB.js} +12 -14
- package/chunks/chunk-HRPFBHW7.js +336 -0
- package/chunks/{chunk-6PJOTWAN.js → chunk-HT5S5TRQ.js} +1 -1
- package/chunks/{chunk-HCOBAG2L.js → chunk-HWVUSYSN.js} +3 -8
- package/chunks/{chunk-2OUD5T67.js → chunk-I2TMJPCV.js} +213 -185
- package/chunks/{chunk-CLWO3B77.js → chunk-I4NRYS6A.js} +11 -11
- package/chunks/{chunk-V7EESTJV.js → chunk-I5N4EAS6.js} +1 -1
- package/chunks/{chunk-K5KXUXWC.js → chunk-IG4W5SJR.js} +3 -3
- package/chunks/{chunk-FROAFEFB.js → chunk-IPATA3T2.js} +3 -3
- package/chunks/{chunk-NKLP3DCK.js → chunk-IQAFKVXS.js} +1 -1
- package/chunks/{chunk-AYHQZBJ4.js → chunk-IRKQ4YYX.js} +3 -3
- package/chunks/{chunk-J3NNHTV6.js → chunk-J5TTWBZK.js} +6 -0
- package/chunks/{chunk-QFCDF5PL.js → chunk-JHN7UIDW.js} +1 -1
- package/chunks/{chunk-AVNATYLY.js → chunk-JJKNYRFY.js} +1 -1
- package/chunks/{chunk-CQH5KTKC.js → chunk-JR42V4UY.js} +1 -1
- package/chunks/chunk-JS73NNWF.js +30 -0
- package/chunks/{chunk-NV55WWD6.js → chunk-JUARRUMA.js} +802 -2011
- package/chunks/chunk-JX6XHPTX.js +26 -0
- package/chunks/{chunk-5JTIYALA.js → chunk-JZWOCUZ3.js} +1 -1
- package/chunks/{chunk-P2G476QN.js → chunk-KEVYJSI4.js} +13 -13
- package/chunks/{chunk-B466ZSHZ.js → chunk-KFN2IZYR.js} +3 -3
- package/chunks/{chunk-JWALNCLT.js → chunk-KGV55H53.js} +1 -1
- package/chunks/{chunk-23RFD54N.js → chunk-KHP66DFN.js} +1 -1
- package/chunks/{chunk-2SXSLSQE.js → chunk-KM3XVTMO.js} +12 -6
- package/chunks/{chunk-GPGU4S2N.js → chunk-KMU3ZHH4.js} +3 -3
- package/chunks/chunk-KOGW3YWJ.js +2054 -0
- package/chunks/{chunk-NMOD2FXQ.js → chunk-L26ONV2Y.js} +8 -8
- package/chunks/chunk-L34XSHIZ.js +28 -0
- package/chunks/{chunk-SEONHUS3.js → chunk-LAUEEBDL.js} +2 -0
- package/chunks/{chunk-3WK3QDNV.js → chunk-LB3WQQJK.js} +2 -2
- package/chunks/{chunk-URE3QBBB.js → chunk-LEPCWS5A.js} +3 -3
- package/chunks/{chunk-36GSQ3MM.js → chunk-LHBNR6EU.js} +2 -2
- package/chunks/{chunk-V4264FEG.js → chunk-LKODFJRD.js} +1 -1
- package/chunks/{chunk-PADPMMYM.js → chunk-LOBDDFYK.js} +5 -29
- package/chunks/{chunk-BXDAPVQU.js → chunk-LU77UT4D.js} +28 -4
- package/chunks/{chunk-RFIDDFAL.js → chunk-M4KFODIP.js} +1 -1
- package/chunks/{chunk-CFJY4DGX.js → chunk-M4LBBSVP.js} +4 -2
- package/chunks/{chunk-KYWTPLBJ.js → chunk-MOF6VZN2.js} +2 -2
- package/chunks/{chunk-DJPASAUV.js → chunk-MP6YZ4RK.js} +4829 -3638
- package/chunks/{chunk-T26EAKDL.js → chunk-N2TNM3QB.js} +2 -6
- package/chunks/{chunk-2TNL5KPM.js → chunk-N4QWUPDM.js} +7 -0
- package/chunks/{chunk-7S226YTK.js → chunk-NFIDVZND.js} +11 -1
- package/chunks/{chunk-ZEYFMJQA.js → chunk-NQ4L2CMD.js} +83 -18
- package/chunks/{chunk-ZZUKP7HV.js → chunk-NRL5CUZT.js} +1 -1
- package/chunks/{chunk-WXEA74YB.js → chunk-NSUKQ4DN.js} +9 -3
- package/chunks/chunk-NUHOLAQ6.js +59 -0
- package/chunks/{chunk-DJEZ55D4.js → chunk-NVVJTUSL.js} +336 -140
- package/chunks/{chunk-3XKLXHGK.js → chunk-NXKOVOM5.js} +9 -9
- package/chunks/{chunk-5Q372OFJ.js → chunk-O4KNCAX4.js} +57 -10
- package/chunks/{chunk-GOXKNSDZ.js → chunk-O5CD7T4T.js} +40 -9
- package/chunks/{chunk-XIQ5HQ2F.js → chunk-OBTWL6ZW.js} +1 -1
- package/chunks/{chunk-PDQGMSZK.js → chunk-ODZF64DM.js} +1 -1
- package/chunks/{chunk-5MK45KZ3.js → chunk-OHOO527W.js} +1 -1
- package/chunks/{chunk-36LGBEM6.js → chunk-OHU2H5CS.js} +1 -1
- package/chunks/{chunk-JB4JIVTJ.js → chunk-OKTNXDVO.js} +1 -1
- package/chunks/{chunk-CETB5XY4.js → chunk-ORFIYTI2.js} +1 -1
- package/chunks/{chunk-7E7UCJHS.js → chunk-OSHQMOBS.js} +18 -17
- package/chunks/chunk-OSSTATJF.js +1310 -0
- package/chunks/chunk-P6UIF2OW.js +400 -0
- package/chunks/{chunk-U54AYGEC.js → chunk-PB7JBAHF.js} +15 -49
- package/chunks/{chunk-Y5S7LBOZ.js → chunk-PCRBLMIN.js} +17 -3
- package/chunks/{chunk-WAOIHTJS.js → chunk-PDAKFU7M.js} +1 -1
- package/chunks/{chunk-YTDVNSUQ.js → chunk-QAK5475D.js} +1 -1
- package/chunks/{chunk-ST5MDGH3.js → chunk-QI27MKNQ.js} +27 -19
- package/chunks/{chunk-MK2GIB46.js → chunk-QJGYU5PG.js} +1 -1
- package/chunks/{chunk-SMPR7SPO.js → chunk-QJNDUTOL.js} +45 -239
- package/chunks/{chunk-MQM5PJML.js → chunk-QJVZLILI.js} +1 -1
- package/chunks/{chunk-B5PHIJGI.js → chunk-QKDNS6FU.js} +2 -2
- package/chunks/{chunk-ZU4UDIWX.js → chunk-QQD2GART.js} +15 -9
- package/chunks/{chunk-62GQFYID.js → chunk-RAFQIHN2.js} +3 -3
- package/chunks/{chunk-MO3FC2WT.js → chunk-RJUVTJEZ.js} +1 -1
- package/chunks/{chunk-M6FOJXW3.js → chunk-RKW36UWC.js} +1 -1
- package/chunks/{chunk-GBJBJ4HX.js → chunk-RM4WT2XB.js} +4 -26
- package/chunks/{chunk-VGIFXISB.js → chunk-RN3YGDCA.js} +7 -5
- package/chunks/{chunk-DYXFD5RO.js → chunk-S2T7H5MI.js} +1 -1
- package/chunks/{chunk-FTF2YIZ5.js → chunk-S6H3ELPG.js} +1 -1
- package/chunks/{chunk-4NDLQAY2.js → chunk-SI7WDR3U.js} +524 -16
- package/chunks/{chunk-2YOHKHYR.js → chunk-SRF4KTAG.js} +6 -6
- package/chunks/{chunk-ZZMSC3RG.js → chunk-STCVJXQB.js} +24 -24
- package/chunks/{chunk-ST5V3ZOC.js → chunk-SULZPKTA.js} +3 -3
- package/chunks/{chunk-6X7EU5TI.js → chunk-SX2QIMJV.js} +9 -7
- package/chunks/{chunk-V5J4J5TP.js → chunk-TJYRTS4S.js} +2 -20
- package/chunks/{chunk-C3PEFRKD.js → chunk-TMKTOTMQ.js} +5 -5
- package/chunks/{chunk-ISKH4QX3.js → chunk-TQHPVKO6.js} +4 -4
- package/chunks/{chunk-HVC3PNVC.js → chunk-TSZSGQ3N.js} +1 -1
- package/chunks/{chunk-ICURCKIU.js → chunk-U4DJ5XB3.js} +594 -91
- package/chunks/{chunk-TTX2JUE6.js → chunk-U6D2PPMN.js} +1 -1
- package/chunks/{chunk-GVIVASYK.js → chunk-UAKRDON5.js} +4 -4
- package/chunks/{chunk-D5LUXLUH.js → chunk-UJ4DUYIH.js} +18 -4
- package/chunks/{chunk-VTHREBQM.js → chunk-UKYXYWI2.js} +2 -2
- package/chunks/{chunk-ZYMLPEZQ.js → chunk-UM2FFKXN.js} +3 -3
- package/chunks/{chunk-2OBKDPZZ.js → chunk-UPFRILIL.js} +2 -2
- package/chunks/{chunk-2HYKTO7V.js → chunk-UUASLXHW.js} +55 -6
- package/chunks/chunk-V5U2NZNJ.js +29 -0
- package/chunks/{chunk-P5Y23G2L.js → chunk-V7RNNPGC.js} +1 -18
- package/chunks/{chunk-Q2MSPKIJ.js → chunk-VBWD6C27.js} +1 -1
- package/chunks/chunk-VGHZT6JR.js +51 -0
- package/chunks/{chunk-MPNBVAEU.js → chunk-VNAYZAFX.js} +4 -4
- package/chunks/chunk-VPSIC437.js +780 -0
- package/chunks/{chunk-AIAOIFY4.js → chunk-VWTSRH6C.js} +92 -17
- package/chunks/{chunk-4K7KNVWH.js → chunk-VYIUNFEA.js} +3 -3
- package/chunks/{chunk-EQSBPBZ3.js → chunk-WP4AX3XD.js} +5 -7
- package/chunks/{chunk-BFPESSTR.js → chunk-XEAAO654.js} +1 -1
- package/chunks/{chunk-RU7BK6B3.js → chunk-XLXAZLDR.js} +3 -3
- package/chunks/{chunk-EFWRMA2I.js → chunk-YPWZTR7F.js} +3 -3
- package/chunks/{chunk-XF63PKEN.js → chunk-ZDFQGHZH.js} +1 -1
- package/chunks/{chunk-OZ6KS6KW.js → chunk-ZGCKTAL5.js} +6 -1
- package/chunks/chunk-ZHO2CW6D.js +205 -0
- package/chunks/chunk-ZJ2LM2SI.js +198 -0
- package/chunks/{chunk-AYFA7MZV.js → chunk-ZKFTS3OV.js} +6 -6
- package/chunks/{chunk-HMJ2P3SV.js → chunk-ZL4HFSL6.js} +91 -29
- package/chunks/{chunk-DJECZIJX.js → chunk-ZTPGUFQV.js} +30 -8
- package/chunks/{chunk-7EQQR46F.js → chunk-ZVP4PWBU.js} +1 -1
- package/chunks/chunk-bdqvmfwv-ZTSOWAFE.js +17446 -0
- package/chunks/config-utils-LVSYDLHZ.js +114 -0
- package/chunks/contextCommand-TZD7UAJK.js +107 -0
- package/chunks/{core-runtime-AXB6SK5D.js → core-runtime-B4UKKIAQ.js} +63 -62
- package/chunks/{create-sub-session-23ITIELI.js → create-sub-session-LUPWEUHR.js} +3 -3
- package/chunks/{create-sub-session-4QNE64MR.js → create-sub-session-NJ24B4US.js} +94 -66
- package/chunks/{cron-create-KJ4IY6PP.js → cron-create-CRSPET3H.js} +4 -4
- package/chunks/{cron-delete-MBLQCAYY.js → cron-delete-DB77SZTU.js} +4 -4
- package/chunks/{cron-list-DWH2PQ47.js → cron-list-U2JNYWV6.js} +4 -4
- package/chunks/{daemon-3GNHB3M2.js → daemon-RKDGBFLK.js} +613 -102
- package/chunks/{daemon-git-worktree-guard-IVAJJWYK.js → daemon-git-worktree-guard-O2HPOBAB.js} +62 -61
- package/chunks/daemon-status-provider-GRRVCJFW.js +117 -0
- package/chunks/daemon-trust-policy-YJL442BK.js +113 -0
- package/chunks/{daemon-trust-policy-monitor-KGGROSIV.js → daemon-trust-policy-monitor-JL7F4Y4Q.js} +68 -67
- package/chunks/{de-X6HLSIFE.js → de-T4BLOKEC.js} +3 -0
- package/chunks/deferred-core-runtime-S32AYVZI.js +115 -0
- package/chunks/{devtools-JCG4K2NZ.js → devtools-VDRJYPZF.js} +1 -1
- package/chunks/{discovery-X2NV535U.js → discovery-TUM3ZQ6U.js} +2 -2
- package/chunks/{display-image-BE7I6ZB6.js → display-image-73C7XNRK.js} +5 -5
- package/chunks/{dist-LVZCXVPF.js → dist-62OZ7QXB.js} +44 -26
- package/chunks/{dist-GFN5DCBX.js → dist-EDHQIBYD.js} +152 -63
- package/chunks/{dist-N6W6E753.js → dist-GT64AAUR.js} +135 -26
- package/chunks/{dist-6BPYWHVD.js → dist-JVXT4VUJ.js} +14 -7
- package/chunks/{dist-4WXLCBDR.js → dist-L6URO6CK.js} +12 -5
- package/chunks/{dist-5VXFRTWU.js → dist-LXFYIJNG.js} +866 -172
- package/chunks/{dist-SWQMYP2Q.js → dist-PDGNRVPY.js} +27 -8
- package/chunks/{dist-NSV4NBPK.js → dist-QAF5DO3Y.js} +380 -83
- package/chunks/{dist-HZNT6GQS.js → dist-ZCJLKQSP.js} +28 -14
- package/chunks/earlyInputCapture-BBPCIVZG.js +108 -0
- package/chunks/{edit-LEQLAGPZ.js → edit-SUGXY63Y.js} +47 -47
- package/chunks/{en-YLXBXM4Z.js → en-2RATMNX7.js} +5 -0
- package/chunks/{enter-worktree-35QCAAFP.js → enter-worktree-B6USKSIK.js} +7 -7
- package/chunks/{enterPlanMode-ONQN3WHE.js → enterPlanMode-MDX4RVVL.js} +48 -48
- package/chunks/{environment-UANTR7A4.js → environment-VN6RXDVN.js} +63 -62
- package/chunks/errors-UEY36PIT.js +114 -0
- package/chunks/{exit-worktree-XQD6D543.js → exit-worktree-DLQ73SJH.js} +10 -8
- package/chunks/exitPlanMode-EPHIEDAA.js +83 -0
- package/chunks/{fast-path-WUL7UZ6H.js → fast-path-Y73R42LV.js} +8 -7
- package/chunks/{fast-path-settings-XH426LUU.js → fast-path-settings-MFUR3IWK.js} +3 -3
- package/chunks/{fr-FTZWF462.js → fr-BGHGYX6A.js} +3 -0
- package/chunks/{glob-Y54QUWDY.js → glob-DMGH7EZN.js} +47 -47
- package/chunks/goal-tools-3RF3PXCL.js +99 -0
- package/chunks/{grep-5GPICQBU.js → grep-AJVLCVXC.js} +9 -7
- package/chunks/handleAutoUpdate-HVWQT2AU.js +110 -0
- package/chunks/i18n-5OR7NTRZ.js +125 -0
- package/chunks/{image-gen-J6FDGUZP.js → image-gen-VOIDOHOB.js} +8 -8
- package/chunks/initializer-JE5RQSOE.js +114 -0
- package/chunks/installationInfo-KO3CCSCK.js +108 -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-3IORSFIY.js +117 -0
- package/chunks/list-agents-SBMONIUK.js +128 -0
- package/chunks/{llm-NSAVK5V3.js → llm-K26SUDVK.js} +223 -140
- package/chunks/{llm-content-generator-AY2QKXHE.js → llm-content-generator-TT6EAUD4.js} +11 -12
- package/chunks/loadedSettingsAdapter-KLLFZF3M.js +111 -0
- package/chunks/{loggingContentGenerator-DSFQHXIF.js → loggingContentGenerator-EYQBA4M4.js} +66 -65
- package/chunks/{loop-wakeup-XJFONSQ7.js → loop-wakeup-QA6SHCZT.js} +5 -5
- package/chunks/{ls-3VAT2J7A.js → ls-HEJNCEYO.js} +4 -4
- package/chunks/{lsp-5W7IRUBH.js → lsp-WOQKNZP6.js} +2 -2
- package/chunks/{managed-npm-update-TSWENTK5.js → managed-npm-update-HIJTODQT.js} +61 -60
- package/chunks/mcp-A2UEHETW.js +111 -0
- package/chunks/{monitor-RW4GWJHB.js → monitor-DKNZQAB2.js} +46 -46
- package/chunks/{node-QKLNSZMX.js → node-UETAYMMO.js} +3 -3
- package/chunks/nonInteractiveCli-YA47F2F4.js +190 -0
- package/chunks/{notebook-edit-CQNYS5OR.js → notebook-edit-MGHTRL2D.js} +47 -47
- package/chunks/{open-with-auth-YN3QZHVM.js → open-with-auth-D6JD6LDS.js} +3 -3
- package/chunks/{openaiContentGenerator-J6QIF7EX.js → openaiContentGenerator-ZJIEQ3ZJ.js} +26 -28
- package/chunks/pidfile-ETHAZNMY.js +112 -0
- package/chunks/{processUtils-GPHNANKZ.js → processUtils-UY3SAJJZ.js} +2 -2
- package/chunks/prompt-terminal-ledger-GZ747VYE.js +106 -0
- package/chunks/{pt-XN2YWJVM.js → pt-D73IFYT7.js} +3 -0
- package/chunks/{qwenContentGenerator-WWDXPYQI.js → qwenContentGenerator-VI4KATRY.js} +58 -58
- package/chunks/{qwenOAuth2-OF5WRBQT.js → qwenOAuth2-7AOCKSOQ.js} +7 -7
- package/chunks/{read-file-FQUQHC6N.js → read-file-P7F4P7LV.js} +11 -13
- package/chunks/{read-mcp-resource-XD257PGJ.js → read-mcp-resource-GLAGB6R7.js} +2 -2
- package/chunks/{record-artifact-VW23GS4F.js → record-artifact-SWVR7NSU.js} +4 -4
- package/chunks/renderer-selection-M4UN63VJ.js +99 -0
- package/chunks/{report-findings-AO5VYFLR.js → report-findings-AL5YW3KI.js} +5 -5
- package/chunks/{request-shutdown-BCLA3JV2.js → request-shutdown-5YK4IZ54.js} +8 -7
- package/chunks/resumeHistoryUtils-DPZKFW24.js +119 -0
- package/chunks/ripGrep-C7LJKUPZ.js +37 -0
- package/chunks/{ru-OLTMFJEW.js → ru-QMISLKRH.js} +3 -0
- package/chunks/{run-qwen-serve-5X6IDZER.js → run-qwen-serve-OGTEEUR2.js} +589 -251
- package/chunks/{runtime-HK27GMPF.js → runtime-LNBLEMZS.js} +73 -72
- package/chunks/scheduled-tasks-FLDYZQOF.js +128 -0
- package/chunks/{scheduler-WD4MHMO5.js → scheduler-73YXGUGW.js} +62 -61
- package/chunks/{sdk-exporters-grpc-G5IT4XS4.js → sdk-exporters-grpc-MXTVSE3C.js} +2 -2
- package/chunks/{sdk-exporters-http-TTU2CHBU.js → sdk-exporters-http-3JO5TJNU.js} +4 -4
- package/chunks/{sdk-impl-UUMVYMAL.js → sdk-impl-HZAUUTHJ.js} +6 -6
- package/chunks/{send-message-AJ4OCUBV.js → send-message-JC7NJTY6.js} +166 -35
- package/chunks/serve-3UR2H4CV.js +119 -0
- package/chunks/{server-GO2N5DH7.js → server-AOYZVVOM.js} +2904 -860
- package/chunks/{session-IFNHTUBT.js → session-UAWFNFGI.js} +119 -114
- package/chunks/session-attachments-root-ZCGXQQTR.js +104 -0
- package/chunks/{session-pr-refresh-I3UBWMVP.js → session-pr-refresh-CT2INROL.js} +157 -88
- package/chunks/{settings-L6N54CU6.js → settings-BHRGDASJ.js} +67 -66
- package/chunks/{shell-4Y5LLW6N.js → shell-YHOGC7TO.js} +46 -46
- package/chunks/{skill-YOWTRAKQ.js → skill-ZGBKNCHQ.js} +131 -97
- package/chunks/skill-settings-AKSP665O.js +119 -0
- package/chunks/spawnChannel-N25MBB6F.js +112 -0
- package/chunks/standalone-update-XGPWJDRN.js +119 -0
- package/chunks/start-opentui-ui-FZ4USOU7.js +55342 -0
- package/chunks/{startInteractiveUI-XDFSHBZD.js → startInteractiveUI-E2WQJUOA.js} +3509 -4706
- package/chunks/{syntheticOutput-ML43GEFN.js → syntheticOutput-HJNZSEHN.js} +3 -3
- package/chunks/{task-create-QN4LYRSE.js → task-create-6RSD54S5.js} +12 -12
- package/chunks/{task-list-JPLGK45U.js → task-list-IQSACPOM.js} +34 -11
- package/chunks/{task-stop-CXEH5L2D.js → task-stop-HE2LRQNW.js} +2 -2
- package/chunks/{task-update-IWEOJFV2.js → task-update-XAJ2NYOA.js} +13 -14
- package/chunks/{team-create-OOPXCDBA.js → team-create-SOKMYSQU.js} +54 -55
- package/chunks/{team-delete-RZVVSGCY.js → team-delete-NGNNKGMG.js} +25 -8
- package/chunks/{team-plan-approval-DSX5EWAT.js → team-plan-approval-U7ZWXYAY.js} +46 -46
- package/chunks/terminal-image-renderer-KKM4OBLO.js +117 -0
- package/chunks/theme-manager-GQHF3A7T.js +103 -0
- package/chunks/{todoWrite-WDJNQEMW.js → todoWrite-5UTVUXHA.js} +39 -9
- package/chunks/{tool-search-J5Q6U7DN.js → tool-search-IAI2RVWT.js} +21 -19
- package/chunks/total-session-admission-G4CGCSTG.js +113 -0
- package/chunks/trustedFolders-D2I3FDPB.js +123 -0
- package/chunks/{update-relaunch-SIKHLHVR.js → update-relaunch-5RWKZAL3.js} +5 -5
- package/chunks/updateCheck-ZXOQDFEI.js +119 -0
- package/chunks/useAutoAcceptIndicator-6EK4QGAH.js +121 -0
- package/chunks/{validateNonInterActiveAuth-JUDQP6V4.js → validateNonInterActiveAuth-QPFEKATS.js} +113 -109
- package/chunks/{version-C63GDDWN.js → version-JKNG7YDH.js} +1 -1
- package/chunks/{web-fetch-FOQZMNSC.js → web-fetch-X3AHIIHW.js} +16 -19
- package/chunks/{web-search-PUJTBFUC.js → web-search-K2FMOGS5.js} +10 -11
- package/chunks/{web-shell-static-HNB4FDOE.js → web-shell-static-POZHGGXE.js} +5 -4
- package/chunks/{workflow-Y5IPINVH.js → workflow-TOLPAK5G.js} +213 -119
- package/chunks/workspace-providers-status-PCJK3RC7.js +115 -0
- package/chunks/{workspace-registration-store-SMJWI2AI.js → workspace-registration-store-KQWVVW4Y.js} +2 -1
- package/chunks/workspace-registry-YNIOB6HJ.js +122 -0
- package/chunks/workspace-runtime-coordinator-WG2RNEN7.js +123 -0
- package/chunks/workspace-service-G4ZNBOFH.js +127 -0
- package/chunks/workspace-skills-status-FMTPPMWC.js +114 -0
- package/chunks/{workspace-trust-reconciler-PLIDLJZX.js → workspace-trust-reconciler-IBDFQBQS.js} +76 -77
- package/chunks/wrapper-JH3IFHT2.js +35 -0
- package/chunks/write-file-YTLFY2S5.js +88 -0
- package/chunks/{zh-UNY63FR3.js → zh-25DF7OGK.js} +5 -0
- package/chunks/{zh-TW-RPTMRTHG.js → zh-TW-5EDMZVGK.js} +5 -0
- package/chunks/{zoom-image-LYQD7BQA.js → zoom-image-IFXSN74N.js} +11 -13
- package/cli.js +131 -90
- package/locales/ca.js +6 -0
- package/locales/de.js +6 -0
- package/locales/en.js +9 -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 +9 -0
- package/locales/zh.js +9 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-TRCMSA_6.js → abnfDiagram-VCTEODGH-Cxf7xE_Z.js} +1 -1
- package/web-shell/assets/{arc-D9Uls5b3.js → arc-ESi1eNkE.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-Bwb8jPXg.js → architectureDiagram-5GKGNRK7-D9l7-bDo.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-DHj71TSX.js → blockDiagram-NRAW4CY4-Bc8DEasw.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-uKBBdbyr.js → c4Diagram-UCG6FXSJ-Dimb2Hmh.js} +1 -1
- package/web-shell/assets/channel-B7ohGDil.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-BZd0Phrl.js → chunk-2Q5K7J3B-jVDmOpAQ.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-7KNeNBqN.js → chunk-5VM5RSS4-DbG_SwdB.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-BeboS7Fi.js → chunk-F27PBJKO-QEc4cY1v.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-RV3JONoj.js → chunk-G27WJ6UU-iJ36lQ3X.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-Yw9FCFsP.js → chunk-JWPE2WC7-DuArnVtF.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-GIMnydDe.js → chunk-LCL6LL3I-DxOf1zwL.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-Cfrux7bL.js → chunk-POPQ4Y6H-lVLu9Ild.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-BlvIN0CO.js → chunk-SVP7TREG-C6XYlIer.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-DMs7Rr4t.js → chunk-XXDRQBXY-CiG2j2Ji.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DdFpqpfD.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DdFpqpfD.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DNGqTNwI.js → cose-bilkent-JH36ORCC-DGVHMMVm.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-CojMpaoH.js → cynefin-OW5HDTMX-D6cgpCnH.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DF07YXGo.js → cynefinDiagram-5FMLGOSQ-BKv4Z-UX.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-17-4WtCH.js → dagre-3AP2YEHR-B4ABMIG-.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-G3Wuyz9m.js → diagram-S7CK7UJ4-DgCkp_Lm.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-nyWIKZ8P.js → diagram-UQ7AKVKN-FG0FNokz.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-tKHhmYSC.js → diagram-VSXAHHWV-JgkP9qg-.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-CpDf1hYk.js → diagram-VX7I27RA-ADh2x83l.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-Cah2IFXG.js → diagram-Z3DM3KII-yXqoYF1J.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-DNaCkgxy.js → ebnfDiagram-PWID7BFC-Duk83Ek_.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-CAdRgcf1.js → erDiagram-SSCWMZ5O-DMdvxySG.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-CMUJAShL.js → flowDiagram-A5DVABFB-DHjVgSji.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-o-_MUNey.js → ganttDiagram-EL5Y4UJY-DMM9DkCE.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-_aG-2Z7O.js → gitGraphDiagram-WWUBYQGX-t_ug9vO8.js} +1 -1
- package/web-shell/assets/index-BGZRqbRo.css +36 -0
- package/web-shell/assets/index-DRri_6_x.js +2067 -0
- package/web-shell/assets/{index-BK_NKxiJ.js → index-zqvnpGHv.js} +1 -1
- package/web-shell/assets/{infoDiagram-RXCK75RN-qJPeZbGP.js → infoDiagram-RXCK75RN-eT1fANNm.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-7Om4vNo1.js → ishikawaDiagram-5VMMS53U-k3evzZNn.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-BNtXqmBW.js → journeyDiagram-EYS64GPL-CGim3EAi.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-COgFec8P.js → kanban-definition-3QL26DDD-WHfJo-22.js} +1 -1
- package/web-shell/assets/{layout-B9n81PC9.js → layout-DkqIaFlJ.js} +1 -1
- package/web-shell/assets/{linear-Bb6nXZQq.js → linear-Bdkd3mCz.js} +1 -1
- package/web-shell/assets/{mermaid.core-Cgrm3JVT.js → mermaid.core-CGw0LkT_.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-TKwLTjnG.js → mindmap-definition-FBJOCRG2-C9V4rBvo.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-BJPuvlpi.js → pegDiagram-XKGWAZYB-CwoI2T5G.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-D01VkNsW.js → pieDiagram-E7YTZNPT-DaTmBmPG.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-C4hHsiv-.js → quadrantDiagram-AXDQQJYC-plh6MyGI.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CuEO4xK2.js → railroadDiagram-O6MQD6OU-D_b-S0iK.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D5J_vIo5.js → requirementDiagram-EFPCY7ZU-zUzTN7VE.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-DQKY223V.js → sankeyDiagram-P5KCCOFB-m6AhoD0l.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-D27YV_cm.js → sequenceDiagram-WJ2MYXX4-Cwhzsine.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-TJg8UcwV.js → sizeCapture-X5ZJPWSS-CcZuKIae.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-CmnPzUIx.js → stateDiagram-HBIQ2CUA-CFoiJwD_.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V--H8HdEmk.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-ByeP3_Nu.js → swimlanes-XN3QIQJK-CgS9hcaV.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ShE9OIgf.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-BsFA5juR.js → timeline-definition-24CTP7MA-Dzzc05t9.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-DREP2ECo.js → vennDiagram-4TSXK5OY-DemK0f7Y.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-iyd9lKi2.js → wardleyDiagram-VM6X3IG4-CquLxtMr.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CVr1_j9q.js → xychartDiagram-S5SC5T6Z-BTBKTM5g.js} +1 -1
- package/web-shell/index.html +196 -2
- package/chunks/MaxSizedBox-X42SXBJH.js +0 -110
- package/chunks/agent-headless-IZM25LJA.js +0 -85
- package/chunks/bridge-ME6QXZNA.js +0 -119
- package/chunks/channel-settings-store-PEOI7XCG.js +0 -120
- package/chunks/chunk-7J6OTNGO.js +0 -424
- package/chunks/chunk-BWORX6FA.js +0 -135
- package/chunks/chunk-CPBF7KYF.js +0 -51
- package/chunks/chunk-H72BQNM3.js +0 -645
- package/chunks/chunk-JHYH6PYQ.js +0 -3096
- package/chunks/chunk-SS4MRMKE.js +0 -3525
- package/chunks/chunk-T4EFG2P5.js +0 -113
- package/chunks/chunk-XZA32HII.js +0 -19
- package/chunks/chunk-ZYNTSXWK.js +0 -32
- package/chunks/config-utils-R6M3TA34.js +0 -113
- package/chunks/contextCommand-ZCAP23J6.js +0 -106
- package/chunks/daemon-status-provider-K3SJ5C2U.js +0 -117
- package/chunks/daemon-trust-policy-DOR3YG62.js +0 -112
- package/chunks/deferred-core-runtime-WOYLUQQ7.js +0 -114
- package/chunks/earlyInputCapture-OHBEVO4K.js +0 -107
- package/chunks/errors-WAK6KFBC.js +0 -113
- package/chunks/exitPlanMode-UEYBG6P5.js +0 -83
- package/chunks/goal-tools-PTD3MBA7.js +0 -411
- package/chunks/handleAutoUpdate-FP3NWNSG.js +0 -109
- package/chunks/i18n-INIU5X7A.js +0 -124
- package/chunks/initializer-TYODV6GE.js +0 -113
- package/chunks/installationInfo-AAPKYDSZ.js +0 -107
- package/chunks/list-TUODDN6J.js +0 -116
- package/chunks/list-agents-DI3YFTDT.js +0 -80
- package/chunks/loadedSettingsAdapter-KJCLZ3C4.js +0 -110
- package/chunks/mcp-MWSAPFOL.js +0 -110
- package/chunks/nonInteractiveCli-JXKL343Q.js +0 -185
- package/chunks/pidfile-QOIQZFT2.js +0 -111
- package/chunks/prompt-terminal-ledger-FOMFTYOM.js +0 -105
- package/chunks/resumeHistoryUtils-NSGF3UCB.js +0 -118
- package/chunks/ripGrep-4CAT6SKV.js +0 -39
- package/chunks/scheduled-tasks-MN2ZZ5P6.js +0 -127
- package/chunks/serve-2XCHPPGG.js +0 -118
- package/chunks/skill-settings-ZL4JY5UE.js +0 -118
- package/chunks/spawnChannel-ZST6XJVJ.js +0 -112
- package/chunks/standalone-update-THVU3OKY.js +0 -118
- package/chunks/terminal-image-renderer-KS25G33E.js +0 -114
- package/chunks/theme-manager-YMZNG45F.js +0 -102
- package/chunks/total-session-admission-PVN64JVV.js +0 -114
- package/chunks/trustedFolders-FATSC4YI.js +0 -122
- package/chunks/updateCheck-D3YG2WCD.js +0 -118
- package/chunks/useAutoAcceptIndicator-ILINOSAS.js +0 -120
- package/chunks/workspace-providers-status-IJ4VHFMB.js +0 -114
- package/chunks/workspace-registry-BTGZIMPK.js +0 -123
- package/chunks/workspace-service-SIN67ITC.js +0 -126
- package/chunks/workspace-skills-status-F3RKCUIX.js +0 -113
- package/chunks/write-file-PAIGB33C.js +0 -88
- package/web-shell/assets/channel-CXjVLaBa.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-DANEijO3.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-DANEijO3.js +0 -1
- package/web-shell/assets/index-Ci-z4zWY.js +0 -1913
- package/web-shell/assets/index-LDlXZRHA.css +0 -36
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DNKPyrDc.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ZL1HPC6w.js +0 -8
- /package/chunks/{chunk-FOGQO4FG.js → chunk-JA5CBKRP.js} +0 -0
|
@@ -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"]
|
|
@@ -169,6 +210,7 @@ __name(signalAbortError, "signalAbortError");
|
|
|
169
210
|
// packages/sdk-typescript/src/daemon/session-pr.ts
|
|
170
211
|
init_esbuild_shims();
|
|
171
212
|
var MAX_SESSION_PR_URL_LENGTH = 2048;
|
|
213
|
+
var MAX_SESSION_PR_ISSUES = 10;
|
|
172
214
|
function hasControlCharacter(value) {
|
|
173
215
|
return Array.from(value).some((character) => {
|
|
174
216
|
const code = character.charCodeAt(0);
|
|
@@ -176,54 +218,23 @@ function hasControlCharacter(value) {
|
|
|
176
218
|
});
|
|
177
219
|
}
|
|
178
220
|
__name(hasControlCharacter, "hasControlCharacter");
|
|
221
|
+
function isBindingUrl(value) {
|
|
222
|
+
return typeof value === "string" && value.length <= MAX_SESSION_PR_URL_LENGTH && /^https?:\/\//i.test(value) && !hasControlCharacter(value);
|
|
223
|
+
}
|
|
224
|
+
__name(isBindingUrl, "isBindingUrl");
|
|
225
|
+
function isDaemonSessionIssueInfo(value) {
|
|
226
|
+
if (typeof value !== "object" || value === null) return false;
|
|
227
|
+
const v = value;
|
|
228
|
+
return typeof v["number"] === "number" && Number.isInteger(v["number"]) && v["number"] > 0 && isBindingUrl(v["url"]) && (v["state"] === void 0 || v["state"] === "open" || v["state"] === "completed" || v["state"] === "not_planned");
|
|
229
|
+
}
|
|
230
|
+
__name(isDaemonSessionIssueInfo, "isDaemonSessionIssueInfo");
|
|
179
231
|
function isDaemonSessionPrInfo(value) {
|
|
180
232
|
if (typeof value !== "object" || value === null) return false;
|
|
181
233
|
const v = value;
|
|
182
|
-
return typeof v["number"] === "number" && Number.isInteger(v["number"]) && v["number"] > 0 &&
|
|
183
|
-
// characters would forge log lines downstream of this gate.
|
|
184
|
-
!hasControlCharacter(v["url"]) && (v["state"] === void 0 || v["state"] === "open" || v["state"] === "merged" || v["state"] === "closed");
|
|
234
|
+
return typeof v["number"] === "number" && Number.isInteger(v["number"]) && v["number"] > 0 && isBindingUrl(v["url"]) && (v["state"] === void 0 || v["state"] === "open" || v["state"] === "merged" || v["state"] === "closed") && (v["issues"] === void 0 || Array.isArray(v["issues"]) && v["issues"].length <= MAX_SESSION_PR_ISSUES && v["issues"].every(isDaemonSessionIssueInfo));
|
|
185
235
|
}
|
|
186
236
|
__name(isDaemonSessionPrInfo, "isDaemonSessionPrInfo");
|
|
187
237
|
|
|
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
238
|
// packages/sdk-typescript/src/daemon/RestSseTransport.ts
|
|
228
239
|
init_esbuild_shims();
|
|
229
240
|
|
|
@@ -627,6 +638,7 @@ var DAEMON_APPROVAL_MODES = PERMISSION_MODES;
|
|
|
627
638
|
// packages/sdk-typescript/src/daemon/standalone-sessions.ts
|
|
628
639
|
init_esbuild_shims();
|
|
629
640
|
var STANDALONE_SESSIONS_CAPABILITY = "standalone_sessions_v1";
|
|
641
|
+
var STANDALONE_SESSION_OPTIONS_CAPABILITY = "standalone_session_options_v1";
|
|
630
642
|
var DaemonStandaloneProtocolError = class extends Error {
|
|
631
643
|
constructor(route, detail) {
|
|
632
644
|
super(`${route}: malformed standalone-session response (${detail})`);
|
|
@@ -718,6 +730,138 @@ function validateStandaloneFields(value, route) {
|
|
|
718
730
|
validateWorkingDirectory(value["workingDirectory"], route);
|
|
719
731
|
}
|
|
720
732
|
__name(validateStandaloneFields, "validateStandaloneFields");
|
|
733
|
+
function validateOptionalString(value, field, route) {
|
|
734
|
+
if (value[field] !== void 0 && typeof value[field] !== "string") {
|
|
735
|
+
throw new DaemonStandaloneProtocolError(route, `expected ${field} string`);
|
|
736
|
+
}
|
|
737
|
+
}
|
|
738
|
+
__name(validateOptionalString, "validateOptionalString");
|
|
739
|
+
function validateStatusCell(value, route) {
|
|
740
|
+
requireString(value, "kind", route);
|
|
741
|
+
if (!["ok", "warning", "error", "disabled", "not_started", "unknown"].includes(
|
|
742
|
+
String(value["status"])
|
|
743
|
+
)) {
|
|
744
|
+
throw new DaemonStandaloneProtocolError(route, "invalid status");
|
|
745
|
+
}
|
|
746
|
+
for (const field of ["error", "hint"]) {
|
|
747
|
+
validateOptionalString(value, field, route);
|
|
748
|
+
}
|
|
749
|
+
if (value["errorKind"] !== void 0 && !DAEMON_ERROR_KINDS.includes(
|
|
750
|
+
value["errorKind"]
|
|
751
|
+
)) {
|
|
752
|
+
throw new DaemonStandaloneProtocolError(route, "invalid errorKind");
|
|
753
|
+
}
|
|
754
|
+
}
|
|
755
|
+
__name(validateStatusCell, "validateStatusCell");
|
|
756
|
+
function validateProviderModel(value, route) {
|
|
757
|
+
const model = asRecord(value, route, "provider model");
|
|
758
|
+
requireString(model, "modelId", route);
|
|
759
|
+
requireString(model, "baseModelId", route);
|
|
760
|
+
requireString(model, "name", route, true);
|
|
761
|
+
if (model["description"] !== void 0 && model["description"] !== null && typeof model["description"] !== "string") {
|
|
762
|
+
throw new DaemonStandaloneProtocolError(route, "invalid description");
|
|
763
|
+
}
|
|
764
|
+
if (model["contextLimit"] !== void 0 && (typeof model["contextLimit"] !== "number" || !Number.isFinite(model["contextLimit"]) || model["contextLimit"] <= 0)) {
|
|
765
|
+
throw new DaemonStandaloneProtocolError(route, "invalid contextLimit");
|
|
766
|
+
}
|
|
767
|
+
for (const field of ["baseUrl", "envKey"]) {
|
|
768
|
+
validateOptionalString(model, field, route);
|
|
769
|
+
}
|
|
770
|
+
for (const field of ["isCurrent", "isRuntime"]) {
|
|
771
|
+
if (typeof model[field] !== "boolean") {
|
|
772
|
+
throw new DaemonStandaloneProtocolError(
|
|
773
|
+
route,
|
|
774
|
+
`expected ${field} boolean`
|
|
775
|
+
);
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
if (model["modalities"] !== void 0) {
|
|
779
|
+
const modalities = asRecord(model["modalities"], route, "modalities");
|
|
780
|
+
for (const field of ["image", "pdf", "audio", "video"]) {
|
|
781
|
+
if (modalities[field] !== void 0 && typeof modalities[field] !== "boolean") {
|
|
782
|
+
throw new DaemonStandaloneProtocolError(
|
|
783
|
+
route,
|
|
784
|
+
`expected modalities.${field} boolean`
|
|
785
|
+
);
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
}
|
|
789
|
+
if (model["configOptions"] !== void 0 && !Array.isArray(model["configOptions"])) {
|
|
790
|
+
throw new DaemonStandaloneProtocolError(route, "expected configOptions[]");
|
|
791
|
+
}
|
|
792
|
+
}
|
|
793
|
+
__name(validateProviderModel, "validateProviderModel");
|
|
794
|
+
function parseStandaloneSessionOptions(value, route) {
|
|
795
|
+
const options = asRecord(value, route);
|
|
796
|
+
if (options["workspaceCwd"] !== void 0 || options["acpChannelLive"] !== void 0) {
|
|
797
|
+
throw new DaemonStandaloneProtocolError(
|
|
798
|
+
route,
|
|
799
|
+
"standalone options exposed workspace internals"
|
|
800
|
+
);
|
|
801
|
+
}
|
|
802
|
+
if (options["v"] !== 1) {
|
|
803
|
+
throw new DaemonStandaloneProtocolError(route, "expected v=1");
|
|
804
|
+
}
|
|
805
|
+
if (typeof options["initialized"] !== "boolean") {
|
|
806
|
+
throw new DaemonStandaloneProtocolError(
|
|
807
|
+
route,
|
|
808
|
+
"expected initialized boolean"
|
|
809
|
+
);
|
|
810
|
+
}
|
|
811
|
+
if (options["current"] !== void 0) {
|
|
812
|
+
const current = asRecord(options["current"], route, "current");
|
|
813
|
+
for (const field of [
|
|
814
|
+
"authType",
|
|
815
|
+
"modelId",
|
|
816
|
+
"baseUrl",
|
|
817
|
+
"fastModelId",
|
|
818
|
+
"visionModelId"
|
|
819
|
+
]) {
|
|
820
|
+
validateOptionalString(current, field, route);
|
|
821
|
+
}
|
|
822
|
+
}
|
|
823
|
+
if (options["approvalMode"] !== void 0 && !DAEMON_APPROVAL_MODES.includes(
|
|
824
|
+
options["approvalMode"]
|
|
825
|
+
)) {
|
|
826
|
+
throw new DaemonStandaloneProtocolError(route, "invalid approvalMode");
|
|
827
|
+
}
|
|
828
|
+
if (!Array.isArray(options["providers"])) {
|
|
829
|
+
throw new DaemonStandaloneProtocolError(route, "expected providers[]");
|
|
830
|
+
}
|
|
831
|
+
for (const value2 of options["providers"]) {
|
|
832
|
+
const provider = asRecord(value2, route, "provider");
|
|
833
|
+
validateStatusCell(provider, route);
|
|
834
|
+
if (provider["kind"] !== "model_provider") {
|
|
835
|
+
throw new DaemonStandaloneProtocolError(
|
|
836
|
+
route,
|
|
837
|
+
"expected model_provider kind"
|
|
838
|
+
);
|
|
839
|
+
}
|
|
840
|
+
requireString(provider, "authType", route);
|
|
841
|
+
if (typeof provider["current"] !== "boolean") {
|
|
842
|
+
throw new DaemonStandaloneProtocolError(
|
|
843
|
+
route,
|
|
844
|
+
"expected provider current boolean"
|
|
845
|
+
);
|
|
846
|
+
}
|
|
847
|
+
if (!Array.isArray(provider["models"])) {
|
|
848
|
+
throw new DaemonStandaloneProtocolError(route, "expected models[]");
|
|
849
|
+
}
|
|
850
|
+
for (const model of provider["models"]) {
|
|
851
|
+
validateProviderModel(model, route);
|
|
852
|
+
}
|
|
853
|
+
}
|
|
854
|
+
if (options["errors"] !== void 0) {
|
|
855
|
+
if (!Array.isArray(options["errors"])) {
|
|
856
|
+
throw new DaemonStandaloneProtocolError(route, "expected errors[]");
|
|
857
|
+
}
|
|
858
|
+
for (const value2 of options["errors"]) {
|
|
859
|
+
validateStatusCell(asRecord(value2, route, "error"), route);
|
|
860
|
+
}
|
|
861
|
+
}
|
|
862
|
+
return options;
|
|
863
|
+
}
|
|
864
|
+
__name(parseStandaloneSessionOptions, "parseStandaloneSessionOptions");
|
|
721
865
|
function parseStandaloneSession(value, route, expectedSessionId) {
|
|
722
866
|
const session = asRecord(value, route);
|
|
723
867
|
requireSessionId(session, route, expectedSessionId);
|
|
@@ -725,6 +869,12 @@ function parseStandaloneSession(value, route, expectedSessionId) {
|
|
|
725
869
|
if (typeof session["attached"] !== "boolean") {
|
|
726
870
|
throw new DaemonStandaloneProtocolError(route, "expected attached boolean");
|
|
727
871
|
}
|
|
872
|
+
if (session["modelApplied"] !== void 0 && typeof session["modelApplied"] !== "boolean") {
|
|
873
|
+
throw new DaemonStandaloneProtocolError(
|
|
874
|
+
route,
|
|
875
|
+
"expected modelApplied boolean"
|
|
876
|
+
);
|
|
877
|
+
}
|
|
728
878
|
validateStandaloneFields(session, route);
|
|
729
879
|
return session;
|
|
730
880
|
}
|
|
@@ -891,11 +1041,15 @@ function parseSessionGenerationEvent(value) {
|
|
|
891
1041
|
__name(parseSessionGenerationEvent, "parseSessionGenerationEvent");
|
|
892
1042
|
var DEFAULT_SESSION_LIST_PAGE_SIZE = 20;
|
|
893
1043
|
var DEFAULT_FETCH_TIMEOUT_MS = 3e4;
|
|
1044
|
+
var DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS = 0;
|
|
894
1045
|
var DEFAULT_SESSION_RESTORE_TIMEOUT_MS = 7e4;
|
|
895
1046
|
var SESSION_RESTORE_TIMEOUT_HEADROOM_MS = 1e4;
|
|
896
1047
|
var VOICE_TRANSCRIPTION_DEFAULT_TIMEOUT_MS = 65e3;
|
|
897
1048
|
var GITHUB_SETUP_DEFAULT_TIMEOUT_MS = 9e4;
|
|
898
1049
|
var CHANNEL_NOTIFY_DEFAULT_TIMEOUT_MS = 35e3;
|
|
1050
|
+
var WORKSPACE_RUNTIME_ENSURE_SERVER_DEADLINE_MS = 6e4;
|
|
1051
|
+
var WORKSPACE_RUNTIME_ENSURE_CLIENT_HEADROOM_MS = 2e3;
|
|
1052
|
+
var WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS = WORKSPACE_RUNTIME_ENSURE_SERVER_DEADLINE_MS + WORKSPACE_RUNTIME_ENSURE_CLIENT_HEADROOM_MS;
|
|
899
1053
|
var MAX_TIMER_DELAY_MS = 2147483647;
|
|
900
1054
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
901
1055
|
var MCP_RESTART_DEFAULT_TIMEOUT_MS = MCP_RESTART_SERVER_DEADLINE_MS + MCP_RESTART_CLIENT_HEADROOM_MS;
|
|
@@ -1106,7 +1260,23 @@ var DaemonClient = class {
|
|
|
1106
1260
|
}
|
|
1107
1261
|
} catch {
|
|
1108
1262
|
}
|
|
1109
|
-
const
|
|
1263
|
+
const errorBody = body && typeof body === "object" && !Array.isArray(body) ? body : void 0;
|
|
1264
|
+
let detail = errorBody && "error" in errorBody ? String(errorBody["error"]) : `HTTP ${res.status}`;
|
|
1265
|
+
if (res.status >= 500 && errorBody?.["error"] === "Internal error" && typeof errorBody["code"] === "number") {
|
|
1266
|
+
const data = errorBody["data"];
|
|
1267
|
+
if (typeof data === "string" && data.length > 0) {
|
|
1268
|
+
detail = data;
|
|
1269
|
+
} else if (data && typeof data === "object" && !Array.isArray(data)) {
|
|
1270
|
+
const record = data;
|
|
1271
|
+
const details = record["details"];
|
|
1272
|
+
const message = record["message"];
|
|
1273
|
+
if (typeof details === "string" && details.length > 0) {
|
|
1274
|
+
detail = details;
|
|
1275
|
+
} else if (typeof message === "string" && message.length > 0) {
|
|
1276
|
+
detail = message;
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
}
|
|
1110
1280
|
if (sessionId && res.status === 503 && body && typeof body === "object") {
|
|
1111
1281
|
const data = body;
|
|
1112
1282
|
if (data.code === "prompt_queue_full") {
|
|
@@ -1301,6 +1471,31 @@ var DaemonClient = class {
|
|
|
1301
1471
|
}
|
|
1302
1472
|
);
|
|
1303
1473
|
}
|
|
1474
|
+
async setUserMcpServer(name, config) {
|
|
1475
|
+
return await this.jsonRequest(
|
|
1476
|
+
`/workspace/config/mcp/servers/${urlEncode(name)}`,
|
|
1477
|
+
"PUT /workspace/config/mcp/servers/:name",
|
|
1478
|
+
{
|
|
1479
|
+
method: "PUT",
|
|
1480
|
+
body: { scope: "user", config },
|
|
1481
|
+
mode: "rest"
|
|
1482
|
+
}
|
|
1483
|
+
);
|
|
1484
|
+
}
|
|
1485
|
+
async removeUserMcpServer(name) {
|
|
1486
|
+
return await this.jsonRequest(
|
|
1487
|
+
`/workspace/config/mcp/servers/${urlEncode(name)}?scope=user`,
|
|
1488
|
+
"DELETE /workspace/config/mcp/servers/:name",
|
|
1489
|
+
{ method: "DELETE", mode: "rest" }
|
|
1490
|
+
);
|
|
1491
|
+
}
|
|
1492
|
+
async setUserMcpServerEnabled(name, enabled) {
|
|
1493
|
+
return await this.jsonRequest(
|
|
1494
|
+
`/workspace/config/mcp/${urlEncode(name)}/${enabled ? "enable" : "disable"}`,
|
|
1495
|
+
"POST /workspace/config/mcp/:server/:action",
|
|
1496
|
+
{ method: "POST", body: {}, mode: "rest" }
|
|
1497
|
+
);
|
|
1498
|
+
}
|
|
1304
1499
|
async initializeWorkspaceMcp() {
|
|
1305
1500
|
return await this.fetchWithTimeout(
|
|
1306
1501
|
`${this.baseUrl}/workspace/mcp/initialize`,
|
|
@@ -1402,11 +1597,11 @@ var DaemonClient = class {
|
|
|
1402
1597
|
{ method: "POST", body: opts ?? {}, mode: "rest" }
|
|
1403
1598
|
);
|
|
1404
1599
|
}
|
|
1405
|
-
async workspaceGitPull(opts) {
|
|
1600
|
+
async workspaceGitPull(opts, timeoutMs) {
|
|
1406
1601
|
return await this.jsonRequest(
|
|
1407
1602
|
"/workspace/git/pull",
|
|
1408
1603
|
"POST /workspace/git/pull",
|
|
1409
|
-
{ method: "POST", body: opts ?? {}, mode: "rest" }
|
|
1604
|
+
{ method: "POST", body: opts ?? {}, mode: "rest", timeoutMs }
|
|
1410
1605
|
);
|
|
1411
1606
|
}
|
|
1412
1607
|
async workspaceGitCommit(message, opts) {
|
|
@@ -1475,6 +1670,24 @@ var DaemonClient = class {
|
|
|
1475
1670
|
{ mode: "rest" }
|
|
1476
1671
|
);
|
|
1477
1672
|
}
|
|
1673
|
+
async ensureWorkspaceRuntime() {
|
|
1674
|
+
return await this.jsonRequest(
|
|
1675
|
+
"/workspace/runtime/ensure",
|
|
1676
|
+
"POST /workspace/runtime/ensure",
|
|
1677
|
+
{
|
|
1678
|
+
method: "POST",
|
|
1679
|
+
timeoutMs: WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS,
|
|
1680
|
+
mode: "rest"
|
|
1681
|
+
}
|
|
1682
|
+
);
|
|
1683
|
+
}
|
|
1684
|
+
async workspaceRuntimeStatus() {
|
|
1685
|
+
return await this.jsonRequest(
|
|
1686
|
+
"/workspace/runtime/status",
|
|
1687
|
+
"GET /workspace/runtime/status",
|
|
1688
|
+
{ mode: "rest" }
|
|
1689
|
+
);
|
|
1690
|
+
}
|
|
1478
1691
|
async workspaceProviders() {
|
|
1479
1692
|
return await this.fetchWithTimeout(
|
|
1480
1693
|
`${this.baseUrl}/workspace/providers`,
|
|
@@ -1777,22 +1990,21 @@ var DaemonClient = class {
|
|
|
1777
1990
|
}
|
|
1778
1991
|
// -- Workspace files (workspace files) -------------------------------
|
|
1779
1992
|
async readWorkspaceFile(filePath, opts = {}, clientId) {
|
|
1780
|
-
const
|
|
1781
|
-
url.searchParams.set("path", filePath);
|
|
1993
|
+
const query = new URLSearchParams({ path: filePath });
|
|
1782
1994
|
if (opts.maxBytes !== void 0) {
|
|
1783
|
-
|
|
1995
|
+
query.set("maxBytes", String(opts.maxBytes));
|
|
1784
1996
|
}
|
|
1785
1997
|
if (opts.line !== void 0) {
|
|
1786
|
-
|
|
1998
|
+
query.set("line", String(opts.line));
|
|
1787
1999
|
}
|
|
1788
2000
|
if (opts.limit !== void 0) {
|
|
1789
|
-
|
|
2001
|
+
query.set("limit", String(opts.limit));
|
|
1790
2002
|
}
|
|
1791
2003
|
if (opts.cursor !== void 0) {
|
|
1792
|
-
|
|
2004
|
+
query.set("cursor", opts.cursor);
|
|
1793
2005
|
}
|
|
1794
2006
|
return await this.fetchWithTimeout(
|
|
1795
|
-
|
|
2007
|
+
`${this.baseUrl}/file?${query.toString()}`,
|
|
1796
2008
|
{ headers: this.headers({}, clientId) },
|
|
1797
2009
|
async (res) => {
|
|
1798
2010
|
if (!res.ok) throw await this.failOnError(res, "GET /file");
|
|
@@ -1818,10 +2030,9 @@ var DaemonClient = class {
|
|
|
1818
2030
|
);
|
|
1819
2031
|
}
|
|
1820
2032
|
async fileStat(filePath) {
|
|
1821
|
-
const
|
|
1822
|
-
url.searchParams.set("path", filePath);
|
|
2033
|
+
const query = new URLSearchParams({ path: filePath });
|
|
1823
2034
|
return await this.fetchWithTimeout(
|
|
1824
|
-
|
|
2035
|
+
`${this.baseUrl}/stat?${query.toString()}`,
|
|
1825
2036
|
{ headers: this.headers() },
|
|
1826
2037
|
async (res) => {
|
|
1827
2038
|
if (!res.ok) throw await this.failOnError(res, "GET /stat");
|
|
@@ -1830,10 +2041,9 @@ var DaemonClient = class {
|
|
|
1830
2041
|
);
|
|
1831
2042
|
}
|
|
1832
2043
|
async dirList(dirPath) {
|
|
1833
|
-
const
|
|
1834
|
-
url.searchParams.set("path", dirPath);
|
|
2044
|
+
const query = new URLSearchParams({ path: dirPath });
|
|
1835
2045
|
return await this.fetchWithTimeout(
|
|
1836
|
-
|
|
2046
|
+
`${this.baseUrl}/list?${query.toString()}`,
|
|
1837
2047
|
{ headers: this.headers() },
|
|
1838
2048
|
async (res) => {
|
|
1839
2049
|
if (!res.ok) throw await this.failOnError(res, "GET /list");
|
|
@@ -1846,10 +2056,9 @@ var DaemonClient = class {
|
|
|
1846
2056
|
* pick a path outside any registered workspace (e.g. "Add workspace").
|
|
1847
2057
|
*/
|
|
1848
2058
|
async workspacePathSuggestions(prefix) {
|
|
1849
|
-
const
|
|
1850
|
-
url.searchParams.set("prefix", prefix);
|
|
2059
|
+
const query = new URLSearchParams({ prefix });
|
|
1851
2060
|
return await this.fetchWithTimeout(
|
|
1852
|
-
|
|
2061
|
+
`${this.baseUrl}/workspace-path-suggestions?${query.toString()}`,
|
|
1853
2062
|
{ headers: this.headers() },
|
|
1854
2063
|
async (res) => {
|
|
1855
2064
|
if (!res.ok) {
|
|
@@ -1872,10 +2081,9 @@ var DaemonClient = class {
|
|
|
1872
2081
|
);
|
|
1873
2082
|
}
|
|
1874
2083
|
async glob(pattern) {
|
|
1875
|
-
const
|
|
1876
|
-
url.searchParams.set("pattern", pattern);
|
|
2084
|
+
const query = new URLSearchParams({ pattern });
|
|
1877
2085
|
return await this.fetchWithTimeout(
|
|
1878
|
-
|
|
2086
|
+
`${this.baseUrl}/glob?${query.toString()}`,
|
|
1879
2087
|
{ headers: this.headers() },
|
|
1880
2088
|
async (res) => {
|
|
1881
2089
|
if (!res.ok) throw await this.failOnError(res, "GET /glob");
|
|
@@ -1925,9 +2133,8 @@ var DaemonClient = class {
|
|
|
1925
2133
|
* @internal
|
|
1926
2134
|
*/
|
|
1927
2135
|
async uploadFileToPath(uploadPath, label, req, clientId) {
|
|
1928
|
-
const
|
|
1929
|
-
|
|
1930
|
-
const url = target.toString();
|
|
2136
|
+
const query = new URLSearchParams({ path: req.path });
|
|
2137
|
+
const url = `${this.baseUrl}${uploadPath}?${query.toString()}`;
|
|
1931
2138
|
const headers = this.headers(
|
|
1932
2139
|
{ "Content-Type": "application/octet-stream" },
|
|
1933
2140
|
clientId
|
|
@@ -2080,10 +2287,11 @@ var DaemonClient = class {
|
|
|
2080
2287
|
}
|
|
2081
2288
|
/**
|
|
2082
2289
|
* Append to or replace `QWEN.md` at workspace or global scope.
|
|
2083
|
-
*
|
|
2084
|
-
*
|
|
2085
|
-
*
|
|
2086
|
-
*
|
|
2290
|
+
* The strict mutation gate accepts trusted-loopback callers without a token;
|
|
2291
|
+
* older daemons and non-trusted embeds can still return `token_required`.
|
|
2292
|
+
* When the daemon advertises `workspace_memory`, expect 200 with
|
|
2293
|
+
* `{ ok, filePath, bytesWritten, mode }`; older daemons without the
|
|
2294
|
+
* capability return 404.
|
|
2087
2295
|
*/
|
|
2088
2296
|
async writeWorkspaceMemory(req, clientId) {
|
|
2089
2297
|
return await this.fetchWithTimeout(
|
|
@@ -2107,6 +2315,11 @@ var DaemonClient = class {
|
|
|
2107
2315
|
* poll `getWorkspaceMemoryRememberTask()` until the task is terminal.
|
|
2108
2316
|
*/
|
|
2109
2317
|
async rememberWorkspaceMemory(content, opts = {}) {
|
|
2318
|
+
if (opts.scope) {
|
|
2319
|
+
await this.requireCapability(
|
|
2320
|
+
opts.scope === "project" ? "workspace_memory_remember_project_scope" : "workspace_memory_remember_user_scope"
|
|
2321
|
+
);
|
|
2322
|
+
}
|
|
2110
2323
|
return await this.jsonRequest(
|
|
2111
2324
|
WORKSPACE_MEMORY_REMEMBER_PATH,
|
|
2112
2325
|
`POST ${WORKSPACE_MEMORY_REMEMBER_PATH}`,
|
|
@@ -2114,7 +2327,8 @@ var DaemonClient = class {
|
|
|
2114
2327
|
method: "POST",
|
|
2115
2328
|
body: {
|
|
2116
2329
|
content,
|
|
2117
|
-
contextMode: opts.contextMode ?? "workspace"
|
|
2330
|
+
contextMode: opts.contextMode ?? "workspace",
|
|
2331
|
+
...opts.scope ? { scope: opts.scope } : {}
|
|
2118
2332
|
},
|
|
2119
2333
|
clientId: opts.clientId
|
|
2120
2334
|
}
|
|
@@ -2128,12 +2342,18 @@ var DaemonClient = class {
|
|
|
2128
2342
|
);
|
|
2129
2343
|
}
|
|
2130
2344
|
async forgetWorkspaceMemory(query, opts = {}) {
|
|
2345
|
+
if (opts.scope) {
|
|
2346
|
+
await this.requireCapability("workspace_memory_forget_scope");
|
|
2347
|
+
}
|
|
2131
2348
|
return await this.jsonRequest(
|
|
2132
2349
|
WORKSPACE_MEMORY_FORGET_PATH,
|
|
2133
2350
|
`POST ${WORKSPACE_MEMORY_FORGET_PATH}`,
|
|
2134
2351
|
{
|
|
2135
2352
|
method: "POST",
|
|
2136
|
-
body: {
|
|
2353
|
+
body: {
|
|
2354
|
+
query,
|
|
2355
|
+
...opts.scope ? { scope: opts.scope } : {}
|
|
2356
|
+
},
|
|
2137
2357
|
clientId: opts.clientId
|
|
2138
2358
|
}
|
|
2139
2359
|
);
|
|
@@ -2368,6 +2588,16 @@ var DaemonClient = class {
|
|
|
2368
2588
|
);
|
|
2369
2589
|
}
|
|
2370
2590
|
// -- Sessions ----------------------------------------------------------
|
|
2591
|
+
async getStandaloneSessionOptions() {
|
|
2592
|
+
await this.requireCapability(STANDALONE_SESSION_OPTIONS_CAPABILITY);
|
|
2593
|
+
const route = "GET /standalone/session-options";
|
|
2594
|
+
const response = await this.jsonRequest(
|
|
2595
|
+
"/standalone/session-options",
|
|
2596
|
+
route,
|
|
2597
|
+
{ mode: "rest" }
|
|
2598
|
+
);
|
|
2599
|
+
return parseStandaloneSessionOptions(response, route);
|
|
2600
|
+
}
|
|
2371
2601
|
async createStandaloneSession(options = {}) {
|
|
2372
2602
|
await this.requireCapability(STANDALONE_SESSIONS_CAPABILITY);
|
|
2373
2603
|
const { sessionId: requestedSessionId, ...request } = options;
|
|
@@ -2639,6 +2869,23 @@ var DaemonClient = class {
|
|
|
2639
2869
|
"GET /workspace/sessions"
|
|
2640
2870
|
);
|
|
2641
2871
|
}
|
|
2872
|
+
/**
|
|
2873
|
+
* Search user/assistant message content across a workspace's persisted
|
|
2874
|
+
* sessions via `GET /workspace/:id/sessions/search`. Returns one summary +
|
|
2875
|
+
* snippet per matching session, most recently modified first. Requires a
|
|
2876
|
+
* daemon new enough to serve the route — older daemons answer 404.
|
|
2877
|
+
*/
|
|
2878
|
+
async searchWorkspaceSessions(workspaceCwd, queryText, options = {}) {
|
|
2879
|
+
const query = new URLSearchParams({ q: queryText });
|
|
2880
|
+
if (options.maxResults !== void 0) {
|
|
2881
|
+
query.set("maxResults", String(options.maxResults));
|
|
2882
|
+
}
|
|
2883
|
+
return await this.jsonRequest(
|
|
2884
|
+
`/workspace/${urlEncode(workspaceCwd)}/sessions/search?${query.toString()}`,
|
|
2885
|
+
"GET /workspace/sessions/search",
|
|
2886
|
+
{ ...options.signal ? { signal: options.signal } : {} }
|
|
2887
|
+
);
|
|
2888
|
+
}
|
|
2642
2889
|
/**
|
|
2643
2890
|
* Read the memory-only live-state snapshot for a workspace via
|
|
2644
2891
|
* `GET /workspaces/:workspace/sessions/live-state`: the complete set of
|
|
@@ -2851,6 +3098,18 @@ var DaemonClient = class {
|
|
|
2851
3098
|
}
|
|
2852
3099
|
);
|
|
2853
3100
|
}
|
|
3101
|
+
async sessionWorkflowTasks(sessionId, clientId) {
|
|
3102
|
+
return await this.fetchWithTimeout(
|
|
3103
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks?includeWorkflows=true`,
|
|
3104
|
+
{ headers: this.headers({}, clientId) },
|
|
3105
|
+
async (res) => {
|
|
3106
|
+
if (!res.ok) {
|
|
3107
|
+
throw await this.failOnError(res, "GET /session/:id/tasks");
|
|
3108
|
+
}
|
|
3109
|
+
return await res.json();
|
|
3110
|
+
}
|
|
3111
|
+
);
|
|
3112
|
+
}
|
|
2854
3113
|
async sessionLspStatus(sessionId, clientId) {
|
|
2855
3114
|
return await this.fetchWithTimeout(
|
|
2856
3115
|
`${this.baseUrl}/session/${urlEncode(sessionId)}/lsp`,
|
|
@@ -2864,18 +3123,30 @@ var DaemonClient = class {
|
|
|
2864
3123
|
);
|
|
2865
3124
|
}
|
|
2866
3125
|
async sessionTaskCancel(sessionId, taskId, kind, clientId) {
|
|
3126
|
+
return await this.sessionTaskMutation(
|
|
3127
|
+
sessionId,
|
|
3128
|
+
taskId,
|
|
3129
|
+
"cancel",
|
|
3130
|
+
{ kind },
|
|
3131
|
+
clientId
|
|
3132
|
+
);
|
|
3133
|
+
}
|
|
3134
|
+
async sessionWorkflowTaskAction(sessionId, taskId, action, clientId) {
|
|
3135
|
+
return await this.sessionTaskMutation(sessionId, taskId, "workflow-action", { action }, clientId);
|
|
3136
|
+
}
|
|
3137
|
+
async sessionTaskMutation(sessionId, taskId, route, body, clientId) {
|
|
2867
3138
|
return await this.fetchWithTimeout(
|
|
2868
|
-
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks/${urlEncode(taskId)}
|
|
3139
|
+
`${this.baseUrl}/session/${urlEncode(sessionId)}/tasks/${urlEncode(taskId)}/${route}`,
|
|
2869
3140
|
{
|
|
2870
3141
|
method: "POST",
|
|
2871
3142
|
headers: this.headers({ "Content-Type": "application/json" }, clientId),
|
|
2872
|
-
body: JSON.stringify(
|
|
3143
|
+
body: JSON.stringify(body)
|
|
2873
3144
|
},
|
|
2874
3145
|
async (res) => {
|
|
2875
3146
|
if (!res.ok) {
|
|
2876
3147
|
throw await this.failOnError(
|
|
2877
3148
|
res,
|
|
2878
|
-
|
|
3149
|
+
`POST /session/:id/tasks/:taskId/${route}`
|
|
2879
3150
|
);
|
|
2880
3151
|
}
|
|
2881
3152
|
return await res.json();
|
|
@@ -2923,6 +3194,19 @@ var DaemonClient = class {
|
|
|
2923
3194
|
* differs in the URL suffix and the route name reported on errors.
|
|
2924
3195
|
*/
|
|
2925
3196
|
async restoreSession(action, sessionId, req, clientId) {
|
|
3197
|
+
let sourceType = req.sourceType;
|
|
3198
|
+
let sourceId = req.sourceId;
|
|
3199
|
+
if (req.sourceType !== void 0 || req.sourceId !== void 0) {
|
|
3200
|
+
try {
|
|
3201
|
+
await this.requireCapability("session_source_metadata");
|
|
3202
|
+
} catch (error) {
|
|
3203
|
+
if (!(error instanceof DaemonCapabilityMissingError)) {
|
|
3204
|
+
throw error;
|
|
3205
|
+
}
|
|
3206
|
+
sourceType = void 0;
|
|
3207
|
+
sourceId = void 0;
|
|
3208
|
+
}
|
|
3209
|
+
}
|
|
2926
3210
|
const timeoutMs = this.resolveRestoreTimeoutMs(req.timeoutMs);
|
|
2927
3211
|
return await this.fetchWithTimeout(
|
|
2928
3212
|
`${this.baseUrl}/session/${urlEncode(sessionId)}/${action}`,
|
|
@@ -2933,7 +3217,9 @@ var DaemonClient = class {
|
|
|
2933
3217
|
cwd: req.workspaceCwd,
|
|
2934
3218
|
...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
|
|
2935
3219
|
...action === "load" && req.historyPageSize !== void 0 ? { historyPageSize: req.historyPageSize } : {},
|
|
2936
|
-
...action === "load" && req.liveReplayMode !== void 0 ? { liveReplayMode: req.liveReplayMode } : {}
|
|
3220
|
+
...action === "load" && req.liveReplayMode !== void 0 ? { liveReplayMode: req.liveReplayMode } : {},
|
|
3221
|
+
...sourceType !== void 0 ? { sourceType } : {},
|
|
3222
|
+
...sourceId !== void 0 ? { sourceId } : {}
|
|
2937
3223
|
})
|
|
2938
3224
|
},
|
|
2939
3225
|
async (res) => {
|
|
@@ -3299,8 +3585,9 @@ var DaemonClient = class {
|
|
|
3299
3585
|
}
|
|
3300
3586
|
/**
|
|
3301
3587
|
* Execute a direct daemon-side shell command for a session. The daemon must
|
|
3302
|
-
* be started with direct session shell enabled and bearer auth
|
|
3303
|
-
* callers must also provide a client id
|
|
3588
|
+
* be started with direct session shell enabled and either bearer auth or
|
|
3589
|
+
* trusted-loopback operator authority; callers must also provide a client id
|
|
3590
|
+
* already bound to this session.
|
|
3304
3591
|
* Prefer `DaemonSessionClient.shellCommand()` when available because it
|
|
3305
3592
|
* forwards the session-bound client id automatically.
|
|
3306
3593
|
*/
|
|
@@ -3322,9 +3609,9 @@ var DaemonClient = class {
|
|
|
3322
3609
|
}
|
|
3323
3610
|
/**
|
|
3324
3611
|
* Toggle a tool name in the workspace's
|
|
3325
|
-
* `tools.disabled` settings list.
|
|
3326
|
-
*
|
|
3327
|
-
* the settings file directly and fan-outs a `tool_toggled` event to
|
|
3612
|
+
* `tools.disabled` settings list. The strict mutation gate accepts
|
|
3613
|
+
* trusted-loopback operator authority or listener credentials. The daemon
|
|
3614
|
+
* writes the settings file directly and fan-outs a `tool_toggled` event to
|
|
3328
3615
|
* every live session SSE bus.
|
|
3329
3616
|
*
|
|
3330
3617
|
* Already-registered tools in active sessions are NOT retroactively
|
|
@@ -3481,7 +3768,8 @@ var DaemonClient = class {
|
|
|
3481
3768
|
throw await this.failOnError(res, "DELETE /workspace/models");
|
|
3482
3769
|
}
|
|
3483
3770
|
return await res.json();
|
|
3484
|
-
}
|
|
3771
|
+
},
|
|
3772
|
+
this.hasExplicitFetchTimeout ? void 0 : DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS
|
|
3485
3773
|
);
|
|
3486
3774
|
}
|
|
3487
3775
|
async workspaceVoice(clientId) {
|
|
@@ -4090,11 +4378,20 @@ var DaemonClient = class {
|
|
|
4090
4378
|
}
|
|
4091
4379
|
);
|
|
4092
4380
|
}
|
|
4093
|
-
async setSessionConfigOption(sessionId, configId, value,
|
|
4381
|
+
async setSessionConfigOption(sessionId, configId, value, clientOrOptions) {
|
|
4382
|
+
const options = typeof clientOrOptions === "string" ? { clientId: clientOrOptions } : clientOrOptions;
|
|
4094
4383
|
return await this.jsonRequest(
|
|
4095
4384
|
`/session/${urlEncode(sessionId)}/config-option`,
|
|
4096
4385
|
"POST /session/:id/config-option",
|
|
4097
|
-
{
|
|
4386
|
+
{
|
|
4387
|
+
method: "POST",
|
|
4388
|
+
body: {
|
|
4389
|
+
configId,
|
|
4390
|
+
value,
|
|
4391
|
+
...options?.persist !== void 0 ? { persist: options.persist } : {}
|
|
4392
|
+
},
|
|
4393
|
+
clientId: options?.clientId
|
|
4394
|
+
}
|
|
4098
4395
|
);
|
|
4099
4396
|
}
|
|
4100
4397
|
async setSessionLanguage(sessionId, language, opts) {
|
|
@@ -4119,6 +4416,26 @@ var DaemonClient = class {
|
|
|
4119
4416
|
}
|
|
4120
4417
|
);
|
|
4121
4418
|
}
|
|
4419
|
+
/**
|
|
4420
|
+
* Sessionless user-level language sync (`POST /language`). Succeeds with
|
|
4421
|
+
* zero sessions, so hosts can switch language before creating one.
|
|
4422
|
+
* Pre-flight `caps.features.includes('user_language_sync')` — daemons that
|
|
4423
|
+
* predate the route or were built without settings persistence 404.
|
|
4424
|
+
*/
|
|
4425
|
+
async setUserLanguage(language, opts) {
|
|
4426
|
+
return await this.jsonRequest(
|
|
4427
|
+
"/language",
|
|
4428
|
+
"POST /language",
|
|
4429
|
+
{
|
|
4430
|
+
method: "POST",
|
|
4431
|
+
body: {
|
|
4432
|
+
language,
|
|
4433
|
+
syncOutputLanguage: opts?.syncOutputLanguage ?? false
|
|
4434
|
+
},
|
|
4435
|
+
clientId: opts?.clientId
|
|
4436
|
+
}
|
|
4437
|
+
);
|
|
4438
|
+
}
|
|
4122
4439
|
/**
|
|
4123
4440
|
* Send a prompt to the agent. Supports both blocking (legacy 200)
|
|
4124
4441
|
* and non-blocking (202 + SSE `turn_complete`) daemon responses.
|
|
@@ -4582,7 +4899,8 @@ var DaemonClient = class {
|
|
|
4582
4899
|
throw await this.failOnError(res, "POST /workspace/auth/provider");
|
|
4583
4900
|
}
|
|
4584
4901
|
return await res.json();
|
|
4585
|
-
}
|
|
4902
|
+
},
|
|
4903
|
+
this.hasExplicitFetchTimeout ? void 0 : DEFAULT_PROVIDER_MUTATION_TIMEOUT_MS
|
|
4586
4904
|
);
|
|
4587
4905
|
}
|
|
4588
4906
|
async addWorkspace(cwd, options = {}) {
|
|
@@ -4710,6 +5028,153 @@ var WorkspaceDaemonClient = class {
|
|
|
4710
5028
|
workspaceMcp() {
|
|
4711
5029
|
return this.get("/mcp", "GET /workspaces/:workspace/mcp");
|
|
4712
5030
|
}
|
|
5031
|
+
mcpConfig() {
|
|
5032
|
+
return this.client.workspaceJsonRequest(
|
|
5033
|
+
this.workspaceSelector,
|
|
5034
|
+
"/config/mcp/servers",
|
|
5035
|
+
"GET /workspaces/:workspace/config/mcp/servers",
|
|
5036
|
+
{ mode: "rest" }
|
|
5037
|
+
);
|
|
5038
|
+
}
|
|
5039
|
+
setMcpServer(name, config) {
|
|
5040
|
+
return this.client.workspaceJsonRequest(
|
|
5041
|
+
this.workspaceSelector,
|
|
5042
|
+
`/config/mcp/servers/${urlEncode(name)}`,
|
|
5043
|
+
"PUT /workspaces/:workspace/config/mcp/servers/:name",
|
|
5044
|
+
{
|
|
5045
|
+
method: "PUT",
|
|
5046
|
+
body: { scope: "workspace", config },
|
|
5047
|
+
mode: "rest"
|
|
5048
|
+
}
|
|
5049
|
+
);
|
|
5050
|
+
}
|
|
5051
|
+
removeMcpServer(name) {
|
|
5052
|
+
return this.client.workspaceJsonRequest(
|
|
5053
|
+
this.workspaceSelector,
|
|
5054
|
+
`/config/mcp/servers/${urlEncode(name)}?scope=workspace`,
|
|
5055
|
+
"DELETE /workspaces/:workspace/config/mcp/servers/:name",
|
|
5056
|
+
{ method: "DELETE", mode: "rest" }
|
|
5057
|
+
);
|
|
5058
|
+
}
|
|
5059
|
+
setMcpServerEnabled(name, enabled) {
|
|
5060
|
+
return this.client.workspaceJsonRequest(
|
|
5061
|
+
this.workspaceSelector,
|
|
5062
|
+
`/config/mcp/${urlEncode(name)}/${enabled ? "enable" : "disable"}`,
|
|
5063
|
+
"POST /workspaces/:workspace/config/mcp/:server/:action",
|
|
5064
|
+
{ method: "POST", body: {}, mode: "rest" }
|
|
5065
|
+
);
|
|
5066
|
+
}
|
|
5067
|
+
runtimeMcp() {
|
|
5068
|
+
return this.client.workspaceJsonRequest(
|
|
5069
|
+
this.workspaceSelector,
|
|
5070
|
+
"/runtime/mcp",
|
|
5071
|
+
"GET /workspaces/:workspace/runtime/mcp",
|
|
5072
|
+
{ mode: "rest" }
|
|
5073
|
+
);
|
|
5074
|
+
}
|
|
5075
|
+
runtimeMcpTools(serverName) {
|
|
5076
|
+
return this.client.workspaceJsonRequest(
|
|
5077
|
+
this.workspaceSelector,
|
|
5078
|
+
`/runtime/mcp/${urlEncode(serverName)}/tools`,
|
|
5079
|
+
"GET /workspaces/:workspace/runtime/mcp/:server/tools",
|
|
5080
|
+
{ mode: "rest" }
|
|
5081
|
+
);
|
|
5082
|
+
}
|
|
5083
|
+
runtimeMcpResources(serverName) {
|
|
5084
|
+
return this.client.workspaceJsonRequest(
|
|
5085
|
+
this.workspaceSelector,
|
|
5086
|
+
`/runtime/mcp/${urlEncode(serverName)}/resources`,
|
|
5087
|
+
"GET /workspaces/:workspace/runtime/mcp/:server/resources",
|
|
5088
|
+
{ mode: "rest" }
|
|
5089
|
+
);
|
|
5090
|
+
}
|
|
5091
|
+
reloadRuntimeMcp(options = {}) {
|
|
5092
|
+
return this.client.workspaceJsonRequest(
|
|
5093
|
+
this.workspaceSelector,
|
|
5094
|
+
"/runtime/mcp/reload",
|
|
5095
|
+
"POST /workspaces/:workspace/runtime/mcp/reload",
|
|
5096
|
+
{
|
|
5097
|
+
method: "POST",
|
|
5098
|
+
body: options,
|
|
5099
|
+
mode: "rest",
|
|
5100
|
+
timeoutMs: MCP_RESTART_DEFAULT_TIMEOUT_MS
|
|
5101
|
+
}
|
|
5102
|
+
);
|
|
5103
|
+
}
|
|
5104
|
+
restartRuntimeMcpServer(serverName) {
|
|
5105
|
+
return this.client.workspaceJsonRequest(
|
|
5106
|
+
this.workspaceSelector,
|
|
5107
|
+
`/runtime/mcp/${urlEncode(serverName)}/restart`,
|
|
5108
|
+
"POST /workspaces/:workspace/runtime/mcp/:server/restart",
|
|
5109
|
+
{
|
|
5110
|
+
method: "POST",
|
|
5111
|
+
body: {},
|
|
5112
|
+
mode: "rest",
|
|
5113
|
+
timeoutMs: MCP_RESTART_DEFAULT_TIMEOUT_MS
|
|
5114
|
+
}
|
|
5115
|
+
);
|
|
5116
|
+
}
|
|
5117
|
+
manageRuntimeMcpServer(serverName, action) {
|
|
5118
|
+
return this.client.workspaceJsonRequest(
|
|
5119
|
+
this.workspaceSelector,
|
|
5120
|
+
`/runtime/mcp/${urlEncode(serverName)}/${action}`,
|
|
5121
|
+
"POST /workspaces/:workspace/runtime/mcp/:server/:action",
|
|
5122
|
+
{
|
|
5123
|
+
method: "POST",
|
|
5124
|
+
body: {},
|
|
5125
|
+
mode: "rest",
|
|
5126
|
+
timeoutMs: MCP_RESTART_DEFAULT_TIMEOUT_MS
|
|
5127
|
+
}
|
|
5128
|
+
);
|
|
5129
|
+
}
|
|
5130
|
+
ensureRuntime() {
|
|
5131
|
+
return this.client.workspaceJsonRequest(
|
|
5132
|
+
this.workspaceSelector,
|
|
5133
|
+
"/runtime/ensure",
|
|
5134
|
+
"POST /workspaces/:workspace/runtime/ensure",
|
|
5135
|
+
{
|
|
5136
|
+
method: "POST",
|
|
5137
|
+
timeoutMs: WORKSPACE_RUNTIME_ENSURE_TIMEOUT_MS,
|
|
5138
|
+
mode: "rest"
|
|
5139
|
+
}
|
|
5140
|
+
);
|
|
5141
|
+
}
|
|
5142
|
+
runtimeStatus() {
|
|
5143
|
+
return this.client.workspaceJsonRequest(
|
|
5144
|
+
this.workspaceSelector,
|
|
5145
|
+
"/runtime/status",
|
|
5146
|
+
"GET /workspaces/:workspace/runtime/status",
|
|
5147
|
+
{ mode: "rest" }
|
|
5148
|
+
);
|
|
5149
|
+
}
|
|
5150
|
+
/**
|
|
5151
|
+
* Ask the daemon host to open this workspace's directory in the host's OS
|
|
5152
|
+
* file manager (Finder/Explorer/xdg-open). Only advertised via the
|
|
5153
|
+
* `workspace_local_open` capability; on a headless host the daemon answers
|
|
5154
|
+
* 501 `local_path_open_unavailable`.
|
|
5155
|
+
*/
|
|
5156
|
+
async openLocally() {
|
|
5157
|
+
await this.client.workspaceJsonRequest(
|
|
5158
|
+
this.workspaceSelector,
|
|
5159
|
+
"/open",
|
|
5160
|
+
"POST /workspaces/:workspace/open",
|
|
5161
|
+
{ method: "POST", body: {}, mode: "rest" }
|
|
5162
|
+
);
|
|
5163
|
+
}
|
|
5164
|
+
/**
|
|
5165
|
+
* Ask the daemon host to open a terminal window in this workspace's
|
|
5166
|
+
* directory (Terminal.app/wt.exe/a Linux terminal emulator). Only
|
|
5167
|
+
* advertised via the `workspace_local_terminal` capability; on a headless
|
|
5168
|
+
* host the daemon answers 501 `local_path_open_unavailable`.
|
|
5169
|
+
*/
|
|
5170
|
+
async openTerminalLocally() {
|
|
5171
|
+
await this.client.workspaceJsonRequest(
|
|
5172
|
+
this.workspaceSelector,
|
|
5173
|
+
"/open",
|
|
5174
|
+
"POST /workspaces/:workspace/open",
|
|
5175
|
+
{ method: "POST", body: { target: "terminal" }, mode: "rest" }
|
|
5176
|
+
);
|
|
5177
|
+
}
|
|
4713
5178
|
/**
|
|
4714
5179
|
* Send text directly through this exact workspace's channel worker.
|
|
4715
5180
|
* A successful capability pre-flight does not guarantee worker liveness;
|
|
@@ -4984,13 +5449,13 @@ var WorkspaceDaemonClient = class {
|
|
|
4984
5449
|
{ method: "POST", body: opts ?? {}, mode: "rest" }
|
|
4985
5450
|
);
|
|
4986
5451
|
}
|
|
4987
|
-
workspaceGitPull(opts, cwd) {
|
|
5452
|
+
workspaceGitPull(opts, cwd, timeoutMs) {
|
|
4988
5453
|
const suffix = cwd != null ? `/git/pull?cwd=${urlEncode(cwd)}` : "/git/pull";
|
|
4989
5454
|
return this.client.workspaceJsonRequest(
|
|
4990
5455
|
this.workspaceSelector,
|
|
4991
5456
|
suffix,
|
|
4992
5457
|
"POST /workspaces/:workspace/git/pull",
|
|
4993
|
-
{ method: "POST", body: opts ?? {}, mode: "rest" }
|
|
5458
|
+
{ method: "POST", body: opts ?? {}, mode: "rest", timeoutMs }
|
|
4994
5459
|
);
|
|
4995
5460
|
}
|
|
4996
5461
|
workspaceGitCommit(message, opts, cwd) {
|
|
@@ -5465,6 +5930,22 @@ var WorkspaceDaemonClient = class {
|
|
|
5465
5930
|
{ mode: "rest" }
|
|
5466
5931
|
);
|
|
5467
5932
|
}
|
|
5933
|
+
extensionState(extensionId) {
|
|
5934
|
+
return this.client.workspaceJsonRequest(
|
|
5935
|
+
this.workspaceSelector,
|
|
5936
|
+
`/extensions/${urlEncode(extensionId)}/state`,
|
|
5937
|
+
"GET /workspaces/:workspace/extensions/:extensionId/state",
|
|
5938
|
+
{ mode: "rest" }
|
|
5939
|
+
);
|
|
5940
|
+
}
|
|
5941
|
+
setExtensionState(extensionId, update, clientId) {
|
|
5942
|
+
return this.client.workspaceJsonRequest(
|
|
5943
|
+
this.workspaceSelector,
|
|
5944
|
+
`/extensions/${urlEncode(extensionId)}/state`,
|
|
5945
|
+
"PUT /workspaces/:workspace/extensions/:extensionId/state",
|
|
5946
|
+
{ method: "PUT", body: update, clientId, mode: "rest" }
|
|
5947
|
+
);
|
|
5948
|
+
}
|
|
5468
5949
|
setExtensionActivation(extensionId, state, clientId) {
|
|
5469
5950
|
return this.client.workspaceJsonRequest(
|
|
5470
5951
|
this.workspaceSelector,
|
|
@@ -5836,6 +6317,14 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
5836
6317
|
get branch() {
|
|
5837
6318
|
return this.session.branch;
|
|
5838
6319
|
}
|
|
6320
|
+
/**
|
|
6321
|
+
* Present when this client was created with a `modelServiceId`: `false`
|
|
6322
|
+
* means the spawn-time model switch failed and the session is running on
|
|
6323
|
+
* the agent default model.
|
|
6324
|
+
*/
|
|
6325
|
+
get modelApplied() {
|
|
6326
|
+
return this.session.modelApplied;
|
|
6327
|
+
}
|
|
5839
6328
|
get lastEventId() {
|
|
5840
6329
|
return this.lastSeenEventId;
|
|
5841
6330
|
}
|
|
@@ -6054,13 +6543,11 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
6054
6543
|
setModel(modelId) {
|
|
6055
6544
|
return this.client.setSessionModel(this.sessionId, modelId, this.clientId);
|
|
6056
6545
|
}
|
|
6057
|
-
setConfigOption(configId, value) {
|
|
6058
|
-
return this.client.setSessionConfigOption(
|
|
6059
|
-
this.
|
|
6060
|
-
|
|
6061
|
-
|
|
6062
|
-
this.clientId
|
|
6063
|
-
);
|
|
6546
|
+
setConfigOption(configId, value, opts) {
|
|
6547
|
+
return this.client.setSessionConfigOption(this.sessionId, configId, value, {
|
|
6548
|
+
clientId: this.clientId,
|
|
6549
|
+
persist: opts?.persist
|
|
6550
|
+
});
|
|
6064
6551
|
}
|
|
6065
6552
|
getRewindSnapshots() {
|
|
6066
6553
|
return this.client.getRewindSnapshots(this.sessionId);
|
|
@@ -6177,9 +6664,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
6177
6664
|
}
|
|
6178
6665
|
/**
|
|
6179
6666
|
* Execute a direct daemon-side shell command for this session. Requires the
|
|
6180
|
-
* daemon to opt in to direct session shell
|
|
6181
|
-
*
|
|
6182
|
-
* or attached.
|
|
6667
|
+
* daemon to opt in to direct session shell with bearer auth or
|
|
6668
|
+
* trusted-loopback authority; this wrapper automatically forwards the client
|
|
6669
|
+
* id bound when the session was created or attached.
|
|
6183
6670
|
*/
|
|
6184
6671
|
shellCommand(command, signal) {
|
|
6185
6672
|
return this.client.shellCommand(this.sessionId, command, {
|
|
@@ -6202,6 +6689,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
6202
6689
|
tasks() {
|
|
6203
6690
|
return this.client.sessionTasks(this.sessionId, this.clientId);
|
|
6204
6691
|
}
|
|
6692
|
+
workflowTasks() {
|
|
6693
|
+
return this.client.sessionWorkflowTasks(this.sessionId, this.clientId);
|
|
6694
|
+
}
|
|
6205
6695
|
lspStatus() {
|
|
6206
6696
|
return this.client.sessionLspStatus(this.sessionId, this.clientId);
|
|
6207
6697
|
}
|
|
@@ -6213,6 +6703,14 @@ var DaemonSessionClient = class _DaemonSessionClient {
|
|
|
6213
6703
|
this.clientId
|
|
6214
6704
|
);
|
|
6215
6705
|
}
|
|
6706
|
+
controlWorkflowTask(taskId, action) {
|
|
6707
|
+
return this.client.sessionWorkflowTaskAction(
|
|
6708
|
+
this.sessionId,
|
|
6709
|
+
taskId,
|
|
6710
|
+
action,
|
|
6711
|
+
this.clientId
|
|
6712
|
+
);
|
|
6713
|
+
}
|
|
6216
6714
|
clearGoal() {
|
|
6217
6715
|
return this.client.sessionGoalClear(this.sessionId, this.clientId);
|
|
6218
6716
|
}
|
|
@@ -7366,7 +7864,7 @@ function isSessionClosedData(value) {
|
|
|
7366
7864
|
}
|
|
7367
7865
|
__name(isSessionClosedData, "isSessionClosedData");
|
|
7368
7866
|
function isSessionMetadataUpdatedData(value) {
|
|
7369
|
-
if (!isRecord(value) || !isNonEmptyString(value["sessionId"]) || !isOptionalStringOrNull(value["displayName"])) {
|
|
7867
|
+
if (!isRecord(value) || !isNonEmptyString(value["sessionId"]) || !isOptionalStringOrNull(value["displayName"]) || value["titleSource"] !== void 0 && value["titleSource"] !== "manual" && value["titleSource"] !== "auto") {
|
|
7370
7868
|
return false;
|
|
7371
7869
|
}
|
|
7372
7870
|
const prs = value["prs"];
|
|
@@ -8766,6 +9264,7 @@ function normalizePlanUpdate(update, base) {
|
|
|
8766
9264
|
const stats = meta && isRecord2(meta["stats"]) ? meta["stats"] : void 0;
|
|
8767
9265
|
const todoPlan = meta && isRecord2(meta["qwenTodoPlan"]) ? meta["qwenTodoPlan"] : void 0;
|
|
8768
9266
|
const planId = getString2(todoPlan, "id");
|
|
9267
|
+
const sessionWorkflow = meta?.["qwenSessionWorkflow"] === true;
|
|
8769
9268
|
return {
|
|
8770
9269
|
...base,
|
|
8771
9270
|
type: "tool.update",
|
|
@@ -8783,7 +9282,8 @@ function normalizePlanUpdate(update, base) {
|
|
|
8783
9282
|
rawOutput: {
|
|
8784
9283
|
entries,
|
|
8785
9284
|
...stats ? { stats } : {},
|
|
8786
|
-
...planId ? { plan: { id: planId, sourceCallId: planCallId } } : {}
|
|
9285
|
+
...planId ? { plan: { id: planId, sourceCallId: planCallId } } : {},
|
|
9286
|
+
...sessionWorkflow ? { sessionWorkflow: true } : {}
|
|
8787
9287
|
}
|
|
8788
9288
|
};
|
|
8789
9289
|
}
|
|
@@ -9465,11 +9965,12 @@ function createDaemonToolPreview(input, opts = {}, depth = 0) {
|
|
|
9465
9965
|
if (isRecord2(input)) {
|
|
9466
9966
|
const nestedInput = input["rawInput"] ?? input["input"] ?? input["args"];
|
|
9467
9967
|
if (nestedInput !== void 0 && nestedInput !== input) {
|
|
9968
|
+
const meta = isRecord2(input["_meta"]) ? input["_meta"] : void 0;
|
|
9468
9969
|
const nested = createDaemonToolPreview(
|
|
9469
9970
|
nestedInput,
|
|
9470
9971
|
{
|
|
9471
9972
|
title: opts.title ?? getFirstString(input, ["title"]),
|
|
9472
|
-
toolName: opts.toolName ?? getFirstString(input, ["toolName", "name"]),
|
|
9973
|
+
toolName: opts.toolName ?? getFirstString(input, ["toolName", "name"]) ?? (meta ? getFirstString(meta, ["toolName"]) : void 0),
|
|
9473
9974
|
toolKind: opts.toolKind ?? getFirstString(input, ["kind"])
|
|
9474
9975
|
},
|
|
9475
9976
|
depth + 1
|
|
@@ -9530,12 +10031,14 @@ function detectFileDiff(input, opts = {}) {
|
|
|
9530
10031
|
const oldText = getFirstString(input, [
|
|
9531
10032
|
"oldText",
|
|
9532
10033
|
"old_text",
|
|
10034
|
+
"old_string",
|
|
9533
10035
|
"old_str",
|
|
9534
10036
|
"oldString"
|
|
9535
10037
|
]);
|
|
9536
10038
|
const explicitNewText = getFirstString(input, [
|
|
9537
10039
|
"newText",
|
|
9538
10040
|
"new_text",
|
|
10041
|
+
"new_string",
|
|
9539
10042
|
"new_str",
|
|
9540
10043
|
"newString"
|
|
9541
10044
|
]);
|
|
@@ -10591,6 +11094,10 @@ function discardToolBlock(state, toolCallId) {
|
|
|
10591
11094
|
}
|
|
10592
11095
|
}
|
|
10593
11096
|
__name(discardToolBlock, "discardToolBlock");
|
|
11097
|
+
function isTaskExecutionMode(value) {
|
|
11098
|
+
return value === "foreground" || value === "background";
|
|
11099
|
+
}
|
|
11100
|
+
__name(isTaskExecutionMode, "isTaskExecutionMode");
|
|
10594
11101
|
function compactTaskExecutionOutput(rawOutput, retainSubagentBlocks) {
|
|
10595
11102
|
if (retainSubagentBlocks || !isRecord2(rawOutput) || rawOutput["type"] !== "task_execution") {
|
|
10596
11103
|
return rawOutput;
|
|
@@ -10601,9 +11108,11 @@ function compactTaskExecutionOutput(rawOutput, retainSubagentBlocks) {
|
|
|
10601
11108
|
"subagentColor",
|
|
10602
11109
|
"taskDescription",
|
|
10603
11110
|
"status",
|
|
11111
|
+
"executionMode",
|
|
10604
11112
|
"terminateReason",
|
|
10605
11113
|
"tokenCount",
|
|
10606
|
-
"executionSummary"
|
|
11114
|
+
"executionSummary",
|
|
11115
|
+
"skills"
|
|
10607
11116
|
]) {
|
|
10608
11117
|
if (rawOutput[key] !== void 0) compact[key] = rawOutput[key];
|
|
10609
11118
|
}
|
|
@@ -12820,6 +13329,7 @@ export {
|
|
|
12820
13329
|
PENDING_PROMPT_COMPLETED_EVENT,
|
|
12821
13330
|
PENDING_PROMPT_STARTED_EVENT,
|
|
12822
13331
|
STANDALONE_SESSIONS_CAPABILITY,
|
|
13332
|
+
STANDALONE_SESSION_OPTIONS_CAPABILITY,
|
|
12823
13333
|
SseFramingError,
|
|
12824
13334
|
UNRECOGNIZED_DIAGNOSTICS_LIMIT,
|
|
12825
13335
|
WorkspaceDaemonClient,
|
|
@@ -12853,6 +13363,7 @@ export {
|
|
|
12853
13363
|
isStandaloneSessionNotFoundError,
|
|
12854
13364
|
isSubagentChildBlock,
|
|
12855
13365
|
isSubagentSessionNotFound,
|
|
13366
|
+
isTaskExecutionMode,
|
|
12856
13367
|
isTrimmedPermissionBlockId,
|
|
12857
13368
|
isTrimmedToolBlockId,
|
|
12858
13369
|
isUnrecognizedDiagnosticReason,
|