@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
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
import {
|
|
4
4
|
parseToolWriteOriginMeta
|
|
5
|
-
} from "./chunk-
|
|
6
|
-
import {
|
|
7
|
-
isLoopbackBind
|
|
8
|
-
} from "./chunk-RXFQM6FQ.js";
|
|
5
|
+
} from "./chunk-VGHZT6JR.js";
|
|
9
6
|
import {
|
|
10
7
|
MAX_CHILD_HEAP_MB,
|
|
11
8
|
MIN_CHILD_HEAP_MB,
|
|
@@ -14,13 +11,17 @@ import {
|
|
|
14
11
|
import {
|
|
15
12
|
CLIENT_ID_RE,
|
|
16
13
|
MAX_CLIENT_ID_LENGTH
|
|
17
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-LAUEEBDL.js";
|
|
18
15
|
import {
|
|
19
16
|
isInternalWorkspaceRuntime
|
|
20
17
|
} from "./chunk-NYWWQ437.js";
|
|
18
|
+
import {
|
|
19
|
+
formatHostForAuthority,
|
|
20
|
+
isLoopbackBind
|
|
21
|
+
} from "./chunk-DMEUXLSS.js";
|
|
21
22
|
import {
|
|
22
23
|
CLIENT_MCP_OVER_WS_CONFIG_FLAG
|
|
23
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-ZGCKTAL5.js";
|
|
24
25
|
import {
|
|
25
26
|
ROOT_CONTEXT,
|
|
26
27
|
context,
|
|
@@ -773,8 +774,8 @@ var DeviceFlowRegistry = class {
|
|
|
773
774
|
/**
|
|
774
775
|
* For diagnostics / GET /workspace/auth/status: report only pending
|
|
775
776
|
* flows. Terminal entries are an implementation detail of the SDK
|
|
776
|
-
* reconnect path and shouldn't be enumerated to all
|
|
777
|
-
*
|
|
777
|
+
* reconnect path and shouldn't be enumerated to all authorized status
|
|
778
|
+
* callers.
|
|
778
779
|
*/
|
|
779
780
|
listPending() {
|
|
780
781
|
const out = [];
|
|
@@ -919,6 +920,67 @@ function isDeepHealthQuery(raw) {
|
|
|
919
920
|
}
|
|
920
921
|
__name(isDeepHealthQuery, "isDeepHealthQuery");
|
|
921
922
|
|
|
923
|
+
// packages/cli/src/serve/server/self-origin.ts
|
|
924
|
+
init_esbuild_shims();
|
|
925
|
+
function installSelfOriginStripMiddleware(app, getPort, bind) {
|
|
926
|
+
let cachedStripPort = -1;
|
|
927
|
+
let cachedSelfOrigins = /* @__PURE__ */ new Set();
|
|
928
|
+
const boundHost = isLoopbackBind(bind) ? formatHostForAuthority(bind) : void 0;
|
|
929
|
+
app.use((req, _res, next) => {
|
|
930
|
+
const origin = req.headers.origin;
|
|
931
|
+
if (origin) {
|
|
932
|
+
const port = getPort();
|
|
933
|
+
if (port !== cachedStripPort) {
|
|
934
|
+
cachedStripPort = port;
|
|
935
|
+
cachedSelfOrigins = /* @__PURE__ */ new Set([
|
|
936
|
+
`http://127.0.0.1:${port}`,
|
|
937
|
+
`http://localhost:${port}`,
|
|
938
|
+
`http://[::1]:${port}`,
|
|
939
|
+
`http://host.docker.internal:${port}`,
|
|
940
|
+
`https://127.0.0.1:${port}`,
|
|
941
|
+
`https://localhost:${port}`,
|
|
942
|
+
`https://[::1]:${port}`,
|
|
943
|
+
`https://host.docker.internal:${port}`
|
|
944
|
+
]);
|
|
945
|
+
if (boundHost) {
|
|
946
|
+
cachedSelfOrigins.add(`http://${boundHost}:${port}`);
|
|
947
|
+
cachedSelfOrigins.add(`https://${boundHost}:${port}`);
|
|
948
|
+
}
|
|
949
|
+
if (port === 80) {
|
|
950
|
+
for (const host of [
|
|
951
|
+
"127.0.0.1",
|
|
952
|
+
"localhost",
|
|
953
|
+
"[::1]",
|
|
954
|
+
"host.docker.internal"
|
|
955
|
+
]) {
|
|
956
|
+
cachedSelfOrigins.add(`http://${host}`);
|
|
957
|
+
}
|
|
958
|
+
if (boundHost) {
|
|
959
|
+
cachedSelfOrigins.add(`http://${boundHost}`);
|
|
960
|
+
}
|
|
961
|
+
} else if (port === 443) {
|
|
962
|
+
for (const host of [
|
|
963
|
+
"127.0.0.1",
|
|
964
|
+
"localhost",
|
|
965
|
+
"[::1]",
|
|
966
|
+
"host.docker.internal"
|
|
967
|
+
]) {
|
|
968
|
+
cachedSelfOrigins.add(`https://${host}`);
|
|
969
|
+
}
|
|
970
|
+
if (boundHost) {
|
|
971
|
+
cachedSelfOrigins.add(`https://${boundHost}`);
|
|
972
|
+
}
|
|
973
|
+
}
|
|
974
|
+
}
|
|
975
|
+
if (cachedSelfOrigins.has(origin)) {
|
|
976
|
+
delete req.headers.origin;
|
|
977
|
+
}
|
|
978
|
+
}
|
|
979
|
+
next();
|
|
980
|
+
});
|
|
981
|
+
}
|
|
982
|
+
__name(installSelfOriginStripMiddleware, "installSelfOriginStripMiddleware");
|
|
983
|
+
|
|
922
984
|
// packages/cli/src/serve/acp-child-extra-args.ts
|
|
923
985
|
init_esbuild_shims();
|
|
924
986
|
function acpChildExtraArgs(opts) {
|
|
@@ -1078,6 +1140,16 @@ function parseAllowOriginPatterns(raw) {
|
|
|
1078
1140
|
return { allowAny, origins };
|
|
1079
1141
|
}
|
|
1080
1142
|
__name(parseAllowOriginPatterns, "parseAllowOriginPatterns");
|
|
1143
|
+
function findNonLoopbackHttpOrigin(patterns) {
|
|
1144
|
+
for (const origin of patterns.origins) {
|
|
1145
|
+
const parsed = new URL(origin);
|
|
1146
|
+
if ((parsed.protocol === "http:" || parsed.protocol === "https:") && !isLoopbackBind(parsed.hostname)) {
|
|
1147
|
+
return origin;
|
|
1148
|
+
}
|
|
1149
|
+
}
|
|
1150
|
+
return void 0;
|
|
1151
|
+
}
|
|
1152
|
+
__name(findNonLoopbackHttpOrigin, "findNonLoopbackHttpOrigin");
|
|
1081
1153
|
var MutableOriginAllowlist = class {
|
|
1082
1154
|
static {
|
|
1083
1155
|
__name(this, "MutableOriginAllowlist");
|
|
@@ -1173,6 +1245,7 @@ function buildPrimaryHostGate(bind, getPort) {
|
|
|
1173
1245
|
}
|
|
1174
1246
|
let cachedPort = -1;
|
|
1175
1247
|
let cachedAllowed = /* @__PURE__ */ new Set();
|
|
1248
|
+
const boundHost = formatHostForAuthority(bind);
|
|
1176
1249
|
const allowedFor = /* @__PURE__ */ __name((port) => {
|
|
1177
1250
|
if (port === cachedPort) return cachedAllowed;
|
|
1178
1251
|
cachedPort = port;
|
|
@@ -1180,13 +1253,15 @@ function buildPrimaryHostGate(bind, getPort) {
|
|
|
1180
1253
|
`localhost:${port}`,
|
|
1181
1254
|
`127.0.0.1:${port}`,
|
|
1182
1255
|
`[::1]:${port}`,
|
|
1183
|
-
`host.docker.internal:${port}
|
|
1256
|
+
`host.docker.internal:${port}`,
|
|
1257
|
+
`${boundHost}:${port}`
|
|
1184
1258
|
]);
|
|
1185
1259
|
if (port === 80 || port === 443) {
|
|
1186
1260
|
cachedAllowed.add("localhost");
|
|
1187
1261
|
cachedAllowed.add("127.0.0.1");
|
|
1188
1262
|
cachedAllowed.add("[::1]");
|
|
1189
1263
|
cachedAllowed.add("host.docker.internal");
|
|
1264
|
+
cachedAllowed.add(boundHost);
|
|
1190
1265
|
}
|
|
1191
1266
|
return cachedAllowed;
|
|
1192
1267
|
}, "allowedFor");
|
|
@@ -1247,13 +1322,22 @@ function requestWasAuthenticated(req) {
|
|
|
1247
1322
|
return req[AUTHENTICATED_REQUEST] === true;
|
|
1248
1323
|
}
|
|
1249
1324
|
__name(requestWasAuthenticated, "requestWasAuthenticated");
|
|
1325
|
+
function isTrustedLoopbackMode(input) {
|
|
1326
|
+
return input.loopbackBind && !input.tokenConfigured && !input.requireAuth;
|
|
1327
|
+
}
|
|
1328
|
+
__name(isTrustedLoopbackMode, "isTrustedLoopbackMode");
|
|
1329
|
+
function requestHasOperatorAuthority(req, trustedLoopbackMode) {
|
|
1330
|
+
return requestWasAuthenticated(req) || trustedLoopbackMode && listenerIdentityOf(req).kind === "primary";
|
|
1331
|
+
}
|
|
1332
|
+
__name(requestHasOperatorAuthority, "requestHasOperatorAuthority");
|
|
1250
1333
|
function createMutationGate(deps) {
|
|
1251
1334
|
const passthrough = /* @__PURE__ */ __name((_req, _res, next) => next(), "passthrough");
|
|
1252
|
-
if (deps.
|
|
1335
|
+
if (deps.tokenConfigured) {
|
|
1253
1336
|
return () => passthrough;
|
|
1254
1337
|
}
|
|
1338
|
+
const trustedLoopbackMode = deps.trustedLoopbackMode === true && deps.requireAuth === false;
|
|
1255
1339
|
const strictDenier = /* @__PURE__ */ __name((req, res, next) => {
|
|
1256
|
-
if (
|
|
1340
|
+
if (requestHasOperatorAuthority(req, trustedLoopbackMode)) {
|
|
1257
1341
|
next();
|
|
1258
1342
|
return;
|
|
1259
1343
|
}
|
|
@@ -1484,7 +1568,17 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1484
1568
|
since: "v1",
|
|
1485
1569
|
modes: ["workspace", "clean"]
|
|
1486
1570
|
},
|
|
1571
|
+
// Explicit remember targets and scoped forget (`scope` parameter). Old
|
|
1572
|
+
// daemons silently ignore an unknown `scope`, so the SDK pre-flights the
|
|
1573
|
+
// matching tag before sending one. The sibling no-op behavior change — a
|
|
1574
|
+
// zero-write remember now fails `remember_no_update` instead of completing
|
|
1575
|
+
// with 'No memory files updated.' — is deliberately untagged: it changes a
|
|
1576
|
+
// task's terminal outcome, not the surface shape, and every client sees it
|
|
1577
|
+
// as a typed `failed` task status that cannot be mistaken for success.
|
|
1578
|
+
workspace_memory_remember_project_scope: { since: "v1" },
|
|
1579
|
+
workspace_memory_remember_user_scope: { since: "v1" },
|
|
1487
1580
|
workspace_memory_forget: { since: "v1" },
|
|
1581
|
+
workspace_memory_forget_scope: { since: "v1" },
|
|
1488
1582
|
workspace_memory_dream: { since: "v1" },
|
|
1489
1583
|
// Workspace agents CRUD (`GET/POST /workspace/agents` +
|
|
1490
1584
|
// `GET/POST/DELETE /workspace/agents/:agentType`). Wraps
|
|
@@ -1511,6 +1605,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1511
1605
|
session_organization: { since: "v1" },
|
|
1512
1606
|
session_export: { since: "v1" },
|
|
1513
1607
|
standalone_sessions_v1: { since: "v1" },
|
|
1608
|
+
standalone_session_options_v1: { since: "v1" },
|
|
1514
1609
|
session_transcript: { since: "v1" },
|
|
1515
1610
|
session_transcript_pagination: { since: "v1" },
|
|
1516
1611
|
// Daemon supports the MCP client guardrail surface: an in-process
|
|
@@ -1645,8 +1740,8 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1645
1740
|
session_btw: { since: "v1" },
|
|
1646
1741
|
// Direct daemon-side shell execution for an existing session.
|
|
1647
1742
|
// Advertised CONDITIONALLY: operators must explicitly enable it and
|
|
1648
|
-
// configure bearer auth
|
|
1649
|
-
// X-Qwen-Client-Id when calling the route.
|
|
1743
|
+
// either configure bearer auth or use trusted-loopback mode. Clients must
|
|
1744
|
+
// still send a session-bound X-Qwen-Client-Id when calling the route.
|
|
1650
1745
|
session_shell_command: { since: "v1" },
|
|
1651
1746
|
// Daemon hosts a workspace-shared MCP transport
|
|
1652
1747
|
// pool (`QwenAgent.mcpPool`); `GET /workspace/mcp` reflects pool-level
|
|
@@ -1705,6 +1800,12 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1705
1800
|
writer_idle_timeout: { since: "v1" },
|
|
1706
1801
|
non_blocking_prompt: { since: "v1" },
|
|
1707
1802
|
session_language: { since: "v1" },
|
|
1803
|
+
// Sessionless user-level language sync (`POST /language`) for hosts that
|
|
1804
|
+
// switch language before any session exists (issue #10234). Advertised
|
|
1805
|
+
// CONDITIONALLY with `workspace_settings`: the route persists user-scope
|
|
1806
|
+
// settings, so daemons without settings persistence omit the tag and
|
|
1807
|
+
// return 404.
|
|
1808
|
+
user_language_sync: { since: "v1" },
|
|
1708
1809
|
session_rewind: { since: "v1" },
|
|
1709
1810
|
workspace_hooks: { since: "v1" },
|
|
1710
1811
|
session_hooks: { since: "v1" },
|
|
@@ -1744,6 +1845,25 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1744
1845
|
workspace_display_name: { since: "v1" },
|
|
1745
1846
|
scratch_workspace_registration: { since: "v1" },
|
|
1746
1847
|
workspace_runtime_removal: { since: "v1" },
|
|
1848
|
+
// A native OS directory picker can be opened on the daemon host
|
|
1849
|
+
// (osascript on macOS, PowerShell on Windows, zenity on a Linux host
|
|
1850
|
+
// with a display). Headless hosts omit the tag so clients hide the
|
|
1851
|
+
// Browse affordance instead of surfacing a guaranteed picker failure.
|
|
1852
|
+
native_directory_picker: { since: "v1" },
|
|
1853
|
+
// Workspace-owned runtime lifecycle status and explicit on-demand startup.
|
|
1854
|
+
workspace_runtime: { since: "v1" },
|
|
1855
|
+
// The daemon host can open a workspace directory in the host's OS file
|
|
1856
|
+
// manager (Finder via `open` on macOS, Explorer via `explorer.exe` on
|
|
1857
|
+
// Windows, xdg-open on a Linux host with a display). Headless hosts omit
|
|
1858
|
+
// the tag so clients hide the Open-locally affordance instead of
|
|
1859
|
+
// surfacing a guaranteed launch failure.
|
|
1860
|
+
workspace_local_open: { since: "v1" },
|
|
1861
|
+
// The daemon host can open a terminal window in a workspace directory
|
|
1862
|
+
// (`open -a Terminal` on macOS, wt.exe/cmd.exe on Windows, a common
|
|
1863
|
+
// terminal emulator on a Linux host with a display). Headless hosts omit
|
|
1864
|
+
// the tag so clients hide the Open-in-terminal affordance instead of
|
|
1865
|
+
// surfacing a guaranteed launch failure.
|
|
1866
|
+
workspace_local_terminal: { since: "v1" },
|
|
1747
1867
|
// Workspace-qualified core REST routes under `/workspaces/:workspace/...`.
|
|
1748
1868
|
// Covers core file read/write/upload, status/permissions/trust/lifecycle/MCP/tool,
|
|
1749
1869
|
// memory, workspace agent CRUD, and persisted session organization surfaces.
|
|
@@ -1767,6 +1887,7 @@ var SERVE_CAPABILITY_REGISTRY = {
|
|
|
1767
1887
|
// projections. This is additive to the legacy primary-workspace
|
|
1768
1888
|
// `workspace_extensions` contract.
|
|
1769
1889
|
extension_management_v2: { since: "v1" },
|
|
1890
|
+
extension_state: { since: "v1" },
|
|
1770
1891
|
extension_git_credentials: { since: "v1" },
|
|
1771
1892
|
extension_local_path_install: { since: "v1" },
|
|
1772
1893
|
// Workspace-qualified, daemon-local persisted transcript paging. The tag is
|
|
@@ -1843,6 +1964,10 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
1843
1964
|
"standalone_sessions_v1",
|
|
1844
1965
|
(toggles) => toggles.standaloneSessionsAvailable === true
|
|
1845
1966
|
],
|
|
1967
|
+
[
|
|
1968
|
+
"standalone_session_options_v1",
|
|
1969
|
+
(toggles) => toggles.standaloneSessionsAvailable === true
|
|
1970
|
+
],
|
|
1846
1971
|
["mcp_workspace_pool", (toggles) => toggles.mcpPoolActive === true],
|
|
1847
1972
|
["mcp_pool_restart", (toggles) => toggles.mcpPoolActive === true],
|
|
1848
1973
|
[
|
|
@@ -1859,6 +1984,7 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
1859
1984
|
(toggles) => typeof toggles.writerIdleTimeoutMs === "number" && toggles.writerIdleTimeoutMs > 0
|
|
1860
1985
|
],
|
|
1861
1986
|
["workspace_settings", (toggles) => toggles.persistSettingAvailable === true],
|
|
1987
|
+
["user_language_sync", (toggles) => toggles.persistSettingAvailable === true],
|
|
1862
1988
|
["workspace_voice", (toggles) => toggles.persistSettingAvailable === true],
|
|
1863
1989
|
[
|
|
1864
1990
|
"workspace_voice_transcription",
|
|
@@ -1924,6 +2050,22 @@ var CONDITIONAL_SERVE_FEATURES = /* @__PURE__ */ new Map([
|
|
|
1924
2050
|
"workspace_runtime_removal",
|
|
1925
2051
|
(toggles) => toggles.workspaceRuntimeRemovalAvailable === true
|
|
1926
2052
|
],
|
|
2053
|
+
[
|
|
2054
|
+
"native_directory_picker",
|
|
2055
|
+
(toggles) => toggles.nativeDirectoryPickerAvailable === true
|
|
2056
|
+
],
|
|
2057
|
+
[
|
|
2058
|
+
"workspace_runtime",
|
|
2059
|
+
(toggles) => toggles.workspaceRuntimeAvailable === true
|
|
2060
|
+
],
|
|
2061
|
+
[
|
|
2062
|
+
"workspace_local_open",
|
|
2063
|
+
(toggles) => toggles.localPathOpenAvailable === true
|
|
2064
|
+
],
|
|
2065
|
+
[
|
|
2066
|
+
"workspace_local_terminal",
|
|
2067
|
+
(toggles) => toggles.localTerminalOpenAvailable === true
|
|
2068
|
+
],
|
|
1927
2069
|
[
|
|
1928
2070
|
"workspace_qualified_acp",
|
|
1929
2071
|
// The plural routes are pre-mounted for workspaces registered after app
|
|
@@ -1991,6 +2133,360 @@ function getServeProtocolVersions() {
|
|
|
1991
2133
|
}
|
|
1992
2134
|
__name(getServeProtocolVersions, "getServeProtocolVersions");
|
|
1993
2135
|
|
|
2136
|
+
// packages/cli/src/serve/native-directory-picker.ts
|
|
2137
|
+
init_esbuild_shims();
|
|
2138
|
+
import { execFile } from "node:child_process";
|
|
2139
|
+
import { accessSync, constants, statSync } from "node:fs";
|
|
2140
|
+
import { delimiter, join } from "node:path";
|
|
2141
|
+
import { promisify } from "node:util";
|
|
2142
|
+
var execFileAsync = promisify(execFile);
|
|
2143
|
+
var PICKER_TIMEOUT_MS = 3e5;
|
|
2144
|
+
var NativeDirectoryPickerUnavailableError = class extends Error {
|
|
2145
|
+
static {
|
|
2146
|
+
__name(this, "NativeDirectoryPickerUnavailableError");
|
|
2147
|
+
}
|
|
2148
|
+
};
|
|
2149
|
+
function isNativeDirectoryPickerAvailable(env = process.env, macOsSessionUids = process.platform === "darwin" ? readMacOsSessionUids() : void 0) {
|
|
2150
|
+
if (process.platform === "darwin") {
|
|
2151
|
+
return macOsSessionUids?.processUid !== void 0 && macOsSessionUids.processUid > 0 && macOsSessionUids.consoleUid === macOsSessionUids.processUid && !env["SSH_CONNECTION"] && !env["SSH_TTY"];
|
|
2152
|
+
}
|
|
2153
|
+
if (process.platform === "win32") {
|
|
2154
|
+
const sessionName = env["SESSIONNAME"]?.trim();
|
|
2155
|
+
return Boolean(sessionName && sessionName.toLowerCase() !== "services");
|
|
2156
|
+
}
|
|
2157
|
+
if (process.platform !== "linux") return false;
|
|
2158
|
+
if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"]) return false;
|
|
2159
|
+
return (env["PATH"] ?? "").split(delimiter).some((dir) => dir !== "" && isExecutableFile(join(dir, "zenity")));
|
|
2160
|
+
}
|
|
2161
|
+
__name(isNativeDirectoryPickerAvailable, "isNativeDirectoryPickerAvailable");
|
|
2162
|
+
function readMacOsSessionUids() {
|
|
2163
|
+
try {
|
|
2164
|
+
return {
|
|
2165
|
+
processUid: process.getuid?.(),
|
|
2166
|
+
consoleUid: statSync("/dev/console").uid
|
|
2167
|
+
};
|
|
2168
|
+
} catch {
|
|
2169
|
+
return {};
|
|
2170
|
+
}
|
|
2171
|
+
}
|
|
2172
|
+
__name(readMacOsSessionUids, "readMacOsSessionUids");
|
|
2173
|
+
function isExecutableFile(file) {
|
|
2174
|
+
try {
|
|
2175
|
+
if (!statSync(file).isFile()) return false;
|
|
2176
|
+
accessSync(file, constants.X_OK);
|
|
2177
|
+
return true;
|
|
2178
|
+
} catch {
|
|
2179
|
+
return false;
|
|
2180
|
+
}
|
|
2181
|
+
}
|
|
2182
|
+
__name(isExecutableFile, "isExecutableFile");
|
|
2183
|
+
async function pickNativeDirectory(signal) {
|
|
2184
|
+
try {
|
|
2185
|
+
if (process.platform === "darwin") {
|
|
2186
|
+
const script = [
|
|
2187
|
+
"const app = Application.currentApplication();",
|
|
2188
|
+
"app.includeStandardAdditions = true;",
|
|
2189
|
+
"app.chooseFolder({",
|
|
2190
|
+
'withPrompt: "Select a workspace folder",',
|
|
2191
|
+
"}).toString();"
|
|
2192
|
+
].join(" ");
|
|
2193
|
+
const { stdout } = await execFileAsync(
|
|
2194
|
+
"osascript",
|
|
2195
|
+
["-l", "JavaScript", "-e", script],
|
|
2196
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2197
|
+
);
|
|
2198
|
+
return stdout.trim() || void 0;
|
|
2199
|
+
}
|
|
2200
|
+
if (process.platform === "win32") {
|
|
2201
|
+
const script = [
|
|
2202
|
+
"[Console]::OutputEncoding = [System.Text.Encoding]::UTF8;",
|
|
2203
|
+
"Add-Type -AssemblyName System.Windows.Forms;",
|
|
2204
|
+
"$dialog = New-Object System.Windows.Forms.FolderBrowserDialog;",
|
|
2205
|
+
"if ($dialog.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) {",
|
|
2206
|
+
"[Console]::Out.Write($dialog.SelectedPath)",
|
|
2207
|
+
"}"
|
|
2208
|
+
].join(" ");
|
|
2209
|
+
const { stdout } = await execFileAsync(
|
|
2210
|
+
"powershell.exe",
|
|
2211
|
+
["-NoProfile", "-STA", "-Command", script],
|
|
2212
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2213
|
+
);
|
|
2214
|
+
return stdout.trim() || void 0;
|
|
2215
|
+
}
|
|
2216
|
+
if (process.platform === "linux") {
|
|
2217
|
+
const { stdout } = await execFileAsync(
|
|
2218
|
+
"zenity",
|
|
2219
|
+
[
|
|
2220
|
+
"--file-selection",
|
|
2221
|
+
"--directory",
|
|
2222
|
+
"--title=Select a workspace folder"
|
|
2223
|
+
],
|
|
2224
|
+
{ timeout: PICKER_TIMEOUT_MS, signal }
|
|
2225
|
+
);
|
|
2226
|
+
return stdout.trim() || void 0;
|
|
2227
|
+
}
|
|
2228
|
+
} catch (error) {
|
|
2229
|
+
const result = error;
|
|
2230
|
+
if (result.killed) {
|
|
2231
|
+
return void 0;
|
|
2232
|
+
}
|
|
2233
|
+
if (process.platform === "darwin" && (result.stderr?.includes("(-128)") || result.stderr?.includes("User canceled")) || // Zenity exits 1 both for a deliberate cancel and for "cannot open
|
|
2234
|
+
// display" on headless Linux; only the former is a silent cancel.
|
|
2235
|
+
process.platform === "linux" && result.code === 1 && !result.stderr?.includes("cannot open display")) {
|
|
2236
|
+
return void 0;
|
|
2237
|
+
}
|
|
2238
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
2239
|
+
error instanceof Error ? error.message : String(error)
|
|
2240
|
+
);
|
|
2241
|
+
}
|
|
2242
|
+
throw new NativeDirectoryPickerUnavailableError(
|
|
2243
|
+
`Native directory picker is not supported on ${process.platform}`
|
|
2244
|
+
);
|
|
2245
|
+
}
|
|
2246
|
+
__name(pickNativeDirectory, "pickNativeDirectory");
|
|
2247
|
+
|
|
2248
|
+
// packages/cli/src/serve/local-path-open.ts
|
|
2249
|
+
init_esbuild_shims();
|
|
2250
|
+
import { execFile as execFile2, spawn } from "node:child_process";
|
|
2251
|
+
import { accessSync as accessSync2, constants as constants2, statSync as statSync2 } from "node:fs";
|
|
2252
|
+
import { delimiter as delimiter2, join as join2 } from "node:path";
|
|
2253
|
+
import { promisify as promisify2 } from "node:util";
|
|
2254
|
+
var execFileAsync2 = promisify2(execFile2);
|
|
2255
|
+
var OPEN_TIMEOUT_MS = 1e4;
|
|
2256
|
+
var LINUX_TERMINAL_NAMES = ["gnome-terminal", "konsole", "xterm"];
|
|
2257
|
+
function linuxTerminalCandidates(env) {
|
|
2258
|
+
return env["DISPLAY"] ? LINUX_TERMINAL_NAMES : LINUX_TERMINAL_NAMES.filter((name) => name !== "xterm");
|
|
2259
|
+
}
|
|
2260
|
+
__name(linuxTerminalCandidates, "linuxTerminalCandidates");
|
|
2261
|
+
var LocalPathOpenUnavailableError = class extends Error {
|
|
2262
|
+
static {
|
|
2263
|
+
__name(this, "LocalPathOpenUnavailableError");
|
|
2264
|
+
}
|
|
2265
|
+
};
|
|
2266
|
+
var SpawnHangError = class extends Error {
|
|
2267
|
+
static {
|
|
2268
|
+
__name(this, "SpawnHangError");
|
|
2269
|
+
}
|
|
2270
|
+
};
|
|
2271
|
+
function defaultMacOsSessionUids() {
|
|
2272
|
+
return process.platform === "darwin" ? readMacOsSessionUids2() : void 0;
|
|
2273
|
+
}
|
|
2274
|
+
__name(defaultMacOsSessionUids, "defaultMacOsSessionUids");
|
|
2275
|
+
function hasGuiSession(env, macOsSessionUids) {
|
|
2276
|
+
if (process.platform === "darwin") {
|
|
2277
|
+
return macOsSessionUids?.processUid !== void 0 && macOsSessionUids.processUid > 0 && macOsSessionUids.consoleUid === macOsSessionUids.processUid && !env["SSH_CONNECTION"] && !env["SSH_TTY"];
|
|
2278
|
+
}
|
|
2279
|
+
if (process.platform === "win32") {
|
|
2280
|
+
const sessionName = env["SESSIONNAME"]?.trim();
|
|
2281
|
+
return Boolean(sessionName && sessionName.toLowerCase() !== "services");
|
|
2282
|
+
}
|
|
2283
|
+
return void 0;
|
|
2284
|
+
}
|
|
2285
|
+
__name(hasGuiSession, "hasGuiSession");
|
|
2286
|
+
function findExecutableOnPath(env, names) {
|
|
2287
|
+
for (const name of names) {
|
|
2288
|
+
for (const dir of (env["PATH"] ?? "").split(delimiter2)) {
|
|
2289
|
+
if (dir === "") continue;
|
|
2290
|
+
const candidate = join2(dir, name);
|
|
2291
|
+
if (isExecutableFile2(candidate)) return candidate;
|
|
2292
|
+
}
|
|
2293
|
+
}
|
|
2294
|
+
return void 0;
|
|
2295
|
+
}
|
|
2296
|
+
__name(findExecutableOnPath, "findExecutableOnPath");
|
|
2297
|
+
function isLocalPathOpenAvailable(env = process.env, macOsSessionUids = defaultMacOsSessionUids()) {
|
|
2298
|
+
const guiSession = hasGuiSession(env, macOsSessionUids);
|
|
2299
|
+
if (guiSession !== void 0) return guiSession;
|
|
2300
|
+
if (process.platform !== "linux") return false;
|
|
2301
|
+
if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"]) return false;
|
|
2302
|
+
return findExecutableOnPath(env, ["xdg-open"]) !== void 0;
|
|
2303
|
+
}
|
|
2304
|
+
__name(isLocalPathOpenAvailable, "isLocalPathOpenAvailable");
|
|
2305
|
+
function isLocalTerminalAvailable(env = process.env, macOsSessionUids = defaultMacOsSessionUids()) {
|
|
2306
|
+
const guiSession = hasGuiSession(env, macOsSessionUids);
|
|
2307
|
+
if (guiSession !== void 0) return guiSession;
|
|
2308
|
+
if (process.platform !== "linux") return false;
|
|
2309
|
+
if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"]) return false;
|
|
2310
|
+
return findExecutableOnPath(env, linuxTerminalCandidates(env)) !== void 0;
|
|
2311
|
+
}
|
|
2312
|
+
__name(isLocalTerminalAvailable, "isLocalTerminalAvailable");
|
|
2313
|
+
function readMacOsSessionUids2() {
|
|
2314
|
+
try {
|
|
2315
|
+
return {
|
|
2316
|
+
processUid: process.getuid?.(),
|
|
2317
|
+
consoleUid: statSync2("/dev/console").uid
|
|
2318
|
+
};
|
|
2319
|
+
} catch {
|
|
2320
|
+
return {};
|
|
2321
|
+
}
|
|
2322
|
+
}
|
|
2323
|
+
__name(readMacOsSessionUids2, "readMacOsSessionUids");
|
|
2324
|
+
function isExecutableFile2(file) {
|
|
2325
|
+
try {
|
|
2326
|
+
if (!statSync2(file).isFile()) return false;
|
|
2327
|
+
accessSync2(file, constants2.X_OK);
|
|
2328
|
+
return true;
|
|
2329
|
+
} catch {
|
|
2330
|
+
return false;
|
|
2331
|
+
}
|
|
2332
|
+
}
|
|
2333
|
+
__name(isExecutableFile2, "isExecutableFile");
|
|
2334
|
+
async function openPathLocally(path, timeoutMs) {
|
|
2335
|
+
try {
|
|
2336
|
+
if (process.platform === "darwin") {
|
|
2337
|
+
await execFileAsync2("open", [path], { timeout: OPEN_TIMEOUT_MS });
|
|
2338
|
+
return;
|
|
2339
|
+
}
|
|
2340
|
+
if (process.platform === "win32") {
|
|
2341
|
+
assertPathExists(path);
|
|
2342
|
+
await spawnAndIgnoreExitCode("explorer.exe", [path], { timeoutMs });
|
|
2343
|
+
return;
|
|
2344
|
+
}
|
|
2345
|
+
if (process.platform === "linux") {
|
|
2346
|
+
await execFileAsync2("xdg-open", [path], { timeout: OPEN_TIMEOUT_MS });
|
|
2347
|
+
return;
|
|
2348
|
+
}
|
|
2349
|
+
} catch (error) {
|
|
2350
|
+
throw new LocalPathOpenUnavailableError(
|
|
2351
|
+
error instanceof Error ? error.message : String(error)
|
|
2352
|
+
);
|
|
2353
|
+
}
|
|
2354
|
+
throw new LocalPathOpenUnavailableError(
|
|
2355
|
+
`Local path open is not supported on ${process.platform}`
|
|
2356
|
+
);
|
|
2357
|
+
}
|
|
2358
|
+
__name(openPathLocally, "openPathLocally");
|
|
2359
|
+
function assertPathExists(path) {
|
|
2360
|
+
try {
|
|
2361
|
+
statSync2(path);
|
|
2362
|
+
} catch {
|
|
2363
|
+
throw new LocalPathOpenUnavailableError(`Path does not exist: ${path}`);
|
|
2364
|
+
}
|
|
2365
|
+
}
|
|
2366
|
+
__name(assertPathExists, "assertPathExists");
|
|
2367
|
+
async function openTerminalLocally(path, timeoutMs) {
|
|
2368
|
+
try {
|
|
2369
|
+
if (process.platform === "darwin") {
|
|
2370
|
+
await execFileAsync2("open", ["-a", "Terminal", path], {
|
|
2371
|
+
timeout: OPEN_TIMEOUT_MS
|
|
2372
|
+
});
|
|
2373
|
+
return;
|
|
2374
|
+
}
|
|
2375
|
+
if (process.platform === "win32") {
|
|
2376
|
+
assertPathExists(path);
|
|
2377
|
+
await spawnWindowsTerminal(path, timeoutMs);
|
|
2378
|
+
return;
|
|
2379
|
+
}
|
|
2380
|
+
if (process.platform === "linux") {
|
|
2381
|
+
assertPathExists(path);
|
|
2382
|
+
await spawnLinuxTerminal(path, timeoutMs);
|
|
2383
|
+
return;
|
|
2384
|
+
}
|
|
2385
|
+
} catch (error) {
|
|
2386
|
+
if (error instanceof LocalPathOpenUnavailableError) throw error;
|
|
2387
|
+
throw new LocalPathOpenUnavailableError(
|
|
2388
|
+
error instanceof Error ? error.message : String(error)
|
|
2389
|
+
);
|
|
2390
|
+
}
|
|
2391
|
+
throw new LocalPathOpenUnavailableError(
|
|
2392
|
+
`Local terminal open is not supported on ${process.platform}`
|
|
2393
|
+
);
|
|
2394
|
+
}
|
|
2395
|
+
__name(openTerminalLocally, "openTerminalLocally");
|
|
2396
|
+
async function spawnWindowsTerminal(path, timeoutMs) {
|
|
2397
|
+
try {
|
|
2398
|
+
await spawnAndIgnoreExitCode("wt.exe", ["-d", path], { timeoutMs });
|
|
2399
|
+
} catch (error) {
|
|
2400
|
+
if (error instanceof SpawnHangError) throw error;
|
|
2401
|
+
await spawnAndIgnoreExitCode(
|
|
2402
|
+
"powershell.exe",
|
|
2403
|
+
[
|
|
2404
|
+
"-NoProfile",
|
|
2405
|
+
"-STA",
|
|
2406
|
+
"-Command",
|
|
2407
|
+
'Start-Process cmd.exe -WorkingDirectory "$env:QWEN_LOCAL_OPEN_DIR"'
|
|
2408
|
+
],
|
|
2409
|
+
{ extraEnv: { QWEN_LOCAL_OPEN_DIR: path }, timeoutMs }
|
|
2410
|
+
);
|
|
2411
|
+
}
|
|
2412
|
+
}
|
|
2413
|
+
__name(spawnWindowsTerminal, "spawnWindowsTerminal");
|
|
2414
|
+
async function spawnLinuxTerminal(path, timeoutMs) {
|
|
2415
|
+
const env = process.env;
|
|
2416
|
+
if (!env["DISPLAY"] && !env["WAYLAND_DISPLAY"]) {
|
|
2417
|
+
throw new LocalPathOpenUnavailableError("No display server available");
|
|
2418
|
+
}
|
|
2419
|
+
const terminal = findExecutableOnPath(env, linuxTerminalCandidates(env));
|
|
2420
|
+
if (terminal === void 0) {
|
|
2421
|
+
throw new LocalPathOpenUnavailableError(
|
|
2422
|
+
"No terminal emulator found on PATH"
|
|
2423
|
+
);
|
|
2424
|
+
}
|
|
2425
|
+
const name = terminal.split(/[\\/]/).pop();
|
|
2426
|
+
if (name === "gnome-terminal") {
|
|
2427
|
+
await spawnLongLived(terminal, [`--working-directory=${path}`], timeoutMs);
|
|
2428
|
+
return;
|
|
2429
|
+
}
|
|
2430
|
+
if (name === "konsole") {
|
|
2431
|
+
await spawnLongLived(terminal, ["--workdir", path], timeoutMs);
|
|
2432
|
+
return;
|
|
2433
|
+
}
|
|
2434
|
+
await spawnLongLived(
|
|
2435
|
+
terminal,
|
|
2436
|
+
["-e", "sh", "-c", 'cd "$1" && exec "${SHELL:-/bin/sh}"', "sh", path],
|
|
2437
|
+
timeoutMs
|
|
2438
|
+
);
|
|
2439
|
+
}
|
|
2440
|
+
__name(spawnLinuxTerminal, "spawnLinuxTerminal");
|
|
2441
|
+
function spawnAndIgnoreExitCode(command, args, options = {}) {
|
|
2442
|
+
const { extraEnv, timeoutMs = OPEN_TIMEOUT_MS } = options;
|
|
2443
|
+
return new Promise((resolve2, reject) => {
|
|
2444
|
+
const child = spawn(command, [...args], {
|
|
2445
|
+
stdio: "ignore",
|
|
2446
|
+
...extraEnv ? { env: { ...process.env, ...extraEnv } } : {}
|
|
2447
|
+
});
|
|
2448
|
+
const timer = setTimeout(() => {
|
|
2449
|
+
child.kill();
|
|
2450
|
+
reject(
|
|
2451
|
+
new SpawnHangError(`${command} did not exit within ${timeoutMs}ms`)
|
|
2452
|
+
);
|
|
2453
|
+
}, timeoutMs);
|
|
2454
|
+
child.once("error", (error) => {
|
|
2455
|
+
clearTimeout(timer);
|
|
2456
|
+
reject(error);
|
|
2457
|
+
});
|
|
2458
|
+
child.once("close", () => {
|
|
2459
|
+
clearTimeout(timer);
|
|
2460
|
+
resolve2();
|
|
2461
|
+
});
|
|
2462
|
+
});
|
|
2463
|
+
}
|
|
2464
|
+
__name(spawnAndIgnoreExitCode, "spawnAndIgnoreExitCode");
|
|
2465
|
+
function spawnLongLived(command, args, timeoutMs = OPEN_TIMEOUT_MS) {
|
|
2466
|
+
return new Promise((resolve2, reject) => {
|
|
2467
|
+
const child = spawn(command, [...args], {
|
|
2468
|
+
stdio: "ignore",
|
|
2469
|
+
detached: true
|
|
2470
|
+
});
|
|
2471
|
+
const timer = setTimeout(() => {
|
|
2472
|
+
child.kill();
|
|
2473
|
+
reject(
|
|
2474
|
+
new SpawnHangError(`${command} did not spawn within ${timeoutMs}ms`)
|
|
2475
|
+
);
|
|
2476
|
+
}, timeoutMs);
|
|
2477
|
+
child.once("error", (error) => {
|
|
2478
|
+
clearTimeout(timer);
|
|
2479
|
+
reject(error);
|
|
2480
|
+
});
|
|
2481
|
+
child.once("spawn", () => {
|
|
2482
|
+
clearTimeout(timer);
|
|
2483
|
+
child.unref();
|
|
2484
|
+
resolve2();
|
|
2485
|
+
});
|
|
2486
|
+
});
|
|
2487
|
+
}
|
|
2488
|
+
__name(spawnLongLived, "spawnLongLived");
|
|
2489
|
+
|
|
1994
2490
|
// packages/cli/src/serve/types.ts
|
|
1995
2491
|
init_esbuild_shims();
|
|
1996
2492
|
var CAPABILITIES_SCHEMA_VERSION = 1;
|
|
@@ -2003,7 +2499,7 @@ import {
|
|
|
2003
2499
|
basename,
|
|
2004
2500
|
dirname,
|
|
2005
2501
|
isAbsolute,
|
|
2006
|
-
join,
|
|
2502
|
+
join as join3,
|
|
2007
2503
|
relative,
|
|
2008
2504
|
resolve
|
|
2009
2505
|
} from "node:path";
|
|
@@ -2081,7 +2577,7 @@ async function revalidateManagedScratchRoot(root) {
|
|
|
2081
2577
|
__name(revalidateManagedScratchRoot, "revalidateManagedScratchRoot");
|
|
2082
2578
|
async function createManagedScratchDirectory(root) {
|
|
2083
2579
|
await revalidateManagedScratchRoot(root);
|
|
2084
|
-
const created = await mkdtemp(
|
|
2580
|
+
const created = await mkdtemp(join3(root.canonicalRoot, "scratch-"));
|
|
2085
2581
|
const canonical = realpathSync.native(created);
|
|
2086
2582
|
if (!isManagedScratchChild(canonical, root.canonicalRoot)) {
|
|
2087
2583
|
throw new Error("Managed scratch directory escaped its accepted root");
|
|
@@ -3053,6 +3549,7 @@ async function buildDaemonStatusResponse(detail, input) {
|
|
|
3053
3549
|
writerIdleTimeoutMs: positiveFiniteOrNull(input.opts.writerIdleTimeoutMs),
|
|
3054
3550
|
channelIdleTimeoutMs: bridgeSnapshot.limits.channelIdleTimeoutMs,
|
|
3055
3551
|
sessionIdleTimeoutMs: bridgeSnapshot.limits.sessionIdleTimeoutMs,
|
|
3552
|
+
sessionPromptSettledCloseGraceMs: bridgeSnapshot.limits.sessionPromptSettledCloseGraceMs,
|
|
3056
3553
|
acpConnectionCap: acpSnapshot?.connectionCap ?? null,
|
|
3057
3554
|
acpPreAttachMaxFramesPerStream: acpSnapshot !== void 0 ? ACP_PRE_ATTACH_MAX_FRAMES_PER_STREAM : null,
|
|
3058
3555
|
acpPreAttachMaxFramesPerConnection: acpSnapshot !== void 0 ? ACP_PRE_ATTACH_MAX_FRAMES_PER_CONNECTION : null,
|
|
@@ -3917,6 +4414,7 @@ export {
|
|
|
3917
4414
|
createBridgeFileSystemAdapter,
|
|
3918
4415
|
PathMutexRegistry,
|
|
3919
4416
|
isDeepHealthQuery,
|
|
4417
|
+
installSelfOriginStripMiddleware,
|
|
3920
4418
|
acpChildExtraArgs,
|
|
3921
4419
|
CredentialStore,
|
|
3922
4420
|
singleTokenCredentials,
|
|
@@ -3925,17 +4423,27 @@ export {
|
|
|
3925
4423
|
listenerIdentityOfSocket,
|
|
3926
4424
|
denyBrowserOriginCors,
|
|
3927
4425
|
parseAllowOriginPatterns,
|
|
4426
|
+
findNonLoopbackHttpOrigin,
|
|
3928
4427
|
MutableOriginAllowlist,
|
|
3929
4428
|
allowOriginCors,
|
|
3930
4429
|
hostAllowlist,
|
|
3931
4430
|
bearerAuth,
|
|
3932
|
-
|
|
4431
|
+
isTrustedLoopbackMode,
|
|
4432
|
+
requestHasOperatorAuthority,
|
|
3933
4433
|
createMutationGate,
|
|
3934
4434
|
ClientMcpSenderRegistry,
|
|
3935
4435
|
createClientMcpServerProvider,
|
|
3936
4436
|
SERVE_CAPABILITY_REGISTRY,
|
|
3937
4437
|
getAdvertisedServeFeatures,
|
|
3938
4438
|
getServeProtocolVersions,
|
|
4439
|
+
NativeDirectoryPickerUnavailableError,
|
|
4440
|
+
isNativeDirectoryPickerAvailable,
|
|
4441
|
+
pickNativeDirectory,
|
|
4442
|
+
LocalPathOpenUnavailableError,
|
|
4443
|
+
isLocalPathOpenAvailable,
|
|
4444
|
+
isLocalTerminalAvailable,
|
|
4445
|
+
openPathLocally,
|
|
4446
|
+
openTerminalLocally,
|
|
3939
4447
|
CAPABILITIES_SCHEMA_VERSION,
|
|
3940
4448
|
isManagedScratchChild,
|
|
3941
4449
|
isScratchRootCompatible,
|