@qwen-code/qwen-code 0.22.0 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/computer-use/SKILL.md +229 -0
- package/bundled/computer-use/agents/openai.yaml +4 -0
- package/bundled/coordinate/SKILL.md +5 -5
- package/bundled/qc-helper/docs/configuration/auth.md +7 -7
- package/bundled/qc-helper/docs/configuration/model-providers.md +70 -9
- package/bundled/qc-helper/docs/configuration/settings.md +40 -40
- package/bundled/qc-helper/docs/extension/introduction.md +3 -1
- package/bundled/qc-helper/docs/features/channels/_meta.ts +1 -0
- package/bundled/qc-helper/docs/features/channels/dingtalk.md +12 -0
- package/bundled/qc-helper/docs/features/channels/dws.md +120 -0
- package/bundled/qc-helper/docs/features/channels/overview.md +3 -3
- package/bundled/qc-helper/docs/features/code-review.md +25 -21
- package/bundled/qc-helper/docs/features/commands.md +2 -2
- package/bundled/qc-helper/docs/features/computer-use.md +57 -51
- package/bundled/qc-helper/docs/features/mcp.md +35 -12
- package/bundled/qc-helper/docs/features/sub-agents.md +1 -1
- package/bundled/qc-helper/docs/features/worktree.md +1 -1
- package/bundled/qc-helper/docs/overview.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +1 -1
- package/bundled/qc-helper/docs/qwen-serve.md +29 -6
- package/bundled/review/SKILL.md +119 -417
- package/bundled/review/references/aone.md +18 -0
- package/bundled/review/references/persistence.md +105 -0
- package/bundled/review/references/posting.md +270 -0
- package/chunks/MaxSizedBox-UUTUE42J.js +112 -0
- package/chunks/{StandaloneSessionPicker-KTHPCSR6.js → StandaloneSessionPicker-XF2TVJFK.js} +87 -86
- package/chunks/{acp-startup-profiler-T4GEAPLX.js → acp-startup-profiler-GNYAL6LI.js} +2 -2
- package/chunks/{acpAgent-CRY3JZ5O.js → acpAgent-GY53MJIW.js} +2216 -1931
- package/chunks/agent-7U6CC5KF.js +97 -0
- package/chunks/agent-headless-32O4L2CT.js +87 -0
- package/chunks/{anthropicContentGenerator-Y2OX6LS4.js → anthropicContentGenerator-U76GTVB6.js} +128 -58
- package/chunks/{artifact-tool-SBXMTVCB.js → artifact-tool-XDJCZZCF.js} +2 -2
- package/chunks/{askUserQuestion-KEQJRFD6.js → askUserQuestion-ZXXERLEV.js} +2 -2
- package/chunks/bridge-DFX2FFH4.js +119 -0
- package/chunks/{ca-D3F4S6NG.js → ca-7HPYOYSZ.js} +3 -0
- package/chunks/{channel-management-service-IRTT7RNE.js → channel-management-service-HXXS3HOZ.js} +4 -4
- package/chunks/channel-settings-store-ELLH2M4M.js +117 -0
- package/chunks/{channel-worker-group-BJNMR2MP.js → channel-worker-group-EVDC2P4K.js} +8 -7
- package/chunks/{channel-worker-manager-EMA7CQDJ.js → channel-worker-manager-IJJZHGEI.js} +8 -7
- package/chunks/{channel-worker-supervisor-F6I6WSWW.js → channel-worker-supervisor-YSKB5GVB.js} +12 -7
- package/chunks/{chunk-2TRNCJK4.js → chunk-27ONXAFY.js} +1 -1
- package/chunks/{chunk-OVH5Y7KS.js → chunk-2CRNTW2B.js} +19 -3
- package/chunks/{read-package-up-UXSW3YPB.js → chunk-2EAZ43JQ.js} +1 -0
- package/chunks/{chunk-DB2OKNTU.js → chunk-2FN2HNTI.js} +2 -2
- package/chunks/{chunk-KM73TBQ4.js → chunk-2LD5U7Q3.js} +31 -0
- package/chunks/{chunk-QJHPWLZC.js → chunk-2MHGD7EE.js} +1 -1
- package/chunks/{chunk-BMCSKS37.js → chunk-2NCVUT3C.js} +6 -6
- package/chunks/{chunk-A5F2YNO6.js → chunk-2NNTE2ED.js} +245 -10
- package/chunks/{chunk-Z3JMO2CH.js → chunk-2SERYG4T.js} +1 -1
- package/chunks/{chunk-4J7OPYNS.js → chunk-2YDYDDE2.js} +6 -6
- package/chunks/{chunk-PXOJLJ5W.js → chunk-2YEZNBSD.js} +333 -184
- package/chunks/{chunk-UU4WC7DK.js → chunk-2ZV3CZKI.js} +82 -12
- package/chunks/{chunk-SE55HQGF.js → chunk-3B5DCAQU.js} +74 -52
- package/chunks/{chunk-UIRLQ3N7.js → chunk-3BV7TZNQ.js} +3 -3
- package/chunks/{chunk-2Z6LSQMF.js → chunk-3FSBMAYD.js} +1 -1
- package/chunks/{chunk-DJEHYM4H.js → chunk-3UZCLCXR.js} +3 -3
- package/chunks/{chunk-WWUSHZ7M.js → chunk-43C2II2G.js} +5 -5
- package/chunks/{chunk-2GXYDNXP.js → chunk-47SIHHPL.js} +8 -8
- package/chunks/{chunk-PHJJ3RVO.js → chunk-4DCP3362.js} +7 -15
- package/chunks/chunk-4K7NQDCG.js +104 -0
- package/chunks/{chunk-UZPYR3EV.js → chunk-4TPAG3O7.js} +1 -1
- package/chunks/{chunk-BEGIBJAZ.js → chunk-5CI4AXDD.js} +4 -4
- package/chunks/{chunk-7KOFLDEP.js → chunk-5JTIYALA.js} +1 -1
- package/chunks/{chunk-7HFULI45.js → chunk-5MK32KJV.js} +3 -3
- package/chunks/{chunk-CXJHQVEK.js → chunk-5PA6UEYA.js} +4 -0
- package/chunks/{chunk-IBJ5S45N.js → chunk-5T4LWWNX.js} +2 -2
- package/chunks/{chunk-VUMLT7E5.js → chunk-5Y2JCJAH.js} +2 -2
- package/chunks/{chunk-YZBDKFRQ.js → chunk-5ZYZPDDF.js} +993 -895
- package/chunks/{chunk-2A4C2MEG.js → chunk-62PXFOK4.js} +35 -12
- package/chunks/{chunk-IIWGSX4L.js → chunk-6E4WHQJV.js} +1 -1
- package/chunks/{chunk-6PCOVQO2.js → chunk-6HTMIKXZ.js} +8 -8
- package/chunks/{chunk-RDG44S5I.js → chunk-6KS24S3X.js} +2 -2
- package/chunks/{chunk-GAHYKJPV.js → chunk-6US7BF3G.js} +7 -59
- package/chunks/{chunk-MHG6NDS6.js → chunk-6YAR6ZU3.js} +2 -2
- package/chunks/{chunk-3CLIDIVQ.js → chunk-73WFGVIZ.js} +3 -3
- package/chunks/{chunk-ZZUVC6RI.js → chunk-76WGY6LW.js} +3 -3
- package/chunks/{chunk-XLDFW44M.js → chunk-77TOMRBG.js} +3 -3
- package/chunks/{chunk-PDL6LKB5.js → chunk-7AS7QX72.js} +1 -1
- package/chunks/{chunk-ND7NOI4P.js → chunk-7CWEZQ6T.js} +0 -15
- package/chunks/{chunk-DWCKACFL.js → chunk-7DPKPBOQ.js} +2 -2
- package/chunks/{chunk-45NQKMYB.js → chunk-7JPW6IYH.js} +1 -1
- package/chunks/{chunk-HDKCKCYO.js → chunk-7QGEJI7M.js} +1 -1
- package/chunks/{chunk-S4C4JJKE.js → chunk-A7X32SCT.js} +5 -5
- package/chunks/{chunk-O5Z7EB6Y.js → chunk-AYHQZBJ4.js} +170 -207
- package/chunks/{chunk-7DYNJFES.js → chunk-AYVIGUUK.js} +6 -1
- package/chunks/{chunk-7DMTAQJ6.js → chunk-BDHLBR46.js} +132 -49
- package/chunks/{chunk-43T5WDQ7.js → chunk-BFSFJR3D.js} +1 -1
- package/chunks/{chunk-AP3B7LKD.js → chunk-BKDAF7ES.js} +2 -2
- package/chunks/{chunk-B6UBOIFE.js → chunk-BQBUZDDH.js} +14 -11
- package/chunks/{chunk-VLRBJ24J.js → chunk-BVE5EMIG.js} +2 -2
- package/chunks/{chunk-P47E4SJC.js → chunk-BX2BZPFJ.js} +3 -3
- package/chunks/{chunk-OARZJFZX.js → chunk-C4WBKZJT.js} +4 -4
- package/chunks/{chunk-QKBYFU2Q.js → chunk-CFKIH3D3.js} +21 -1
- package/chunks/{chunk-URN2JIAQ.js → chunk-CITGRGCM.js} +2 -1
- package/chunks/{chunk-WU5E4HMO.js → chunk-CPPYZHBN.js} +1 -1
- package/chunks/chunk-DCSAVGDJ.js +20 -0
- package/chunks/{chunk-Q54XG7IX.js → chunk-DEYPMJPD.js} +1 -1
- package/chunks/{chunk-KSPRQSB4.js → chunk-DIMEPKCW.js} +52 -12
- package/chunks/{chunk-I432KXWD.js → chunk-DP7LABIB.js} +1 -1
- package/chunks/{chunk-36OF5PRW.js → chunk-E4I5MVBR.js} +7 -3
- package/chunks/{chunk-AW27A43Y.js → chunk-E55H6BZ7.js} +93 -1
- package/chunks/{chunk-K623ENWT.js → chunk-E6FGMDFQ.js} +4 -0
- package/chunks/{chunk-5XUTPXQU.js → chunk-EAV3TENS.js} +6 -9
- package/chunks/{chunk-LI4YHTQK.js → chunk-EB4VDXNI.js} +1 -1
- package/chunks/{chunk-JOLJTKIG.js → chunk-EC5BONC3.js} +1 -1
- package/chunks/{chunk-25NESM4G.js → chunk-EEQYTWGU.js} +29 -5
- package/chunks/{chunk-4CWDWDL6.js → chunk-EKP3M4RF.js} +1 -1
- package/chunks/{chunk-W4CRPSC5.js → chunk-ELY4QVIB.js} +1 -1
- package/chunks/{chunk-BB5IMQCV.js → chunk-EMGAVCBZ.js} +2 -2
- package/chunks/chunk-FBX2SDQ4.js +48 -0
- package/chunks/{chunk-C72BXMJ5.js → chunk-FJWICLG7.js} +1 -1
- package/chunks/{chunk-6FRJEE2S.js → chunk-FK4H3V6S.js} +5 -5
- package/chunks/{chunk-LDGWX737.js → chunk-FN5C6C7G.js} +160 -59
- package/chunks/{chunk-3ZFJUBTP.js → chunk-FPH6TXD3.js} +1 -1
- package/chunks/{chunk-WRT324N6.js → chunk-FVDQ5E67.js} +3 -3
- package/chunks/{chunk-VFACN2CE.js → chunk-GNMJNDZE.js} +1 -1
- package/chunks/{chunk-FVBVJEBG.js → chunk-GNRVKN76.js} +10 -8
- package/chunks/{chunk-PZRUV52H.js → chunk-GTUKW3I6.js} +20 -2
- package/chunks/chunk-GYTKQYDB.js +23 -0
- package/chunks/{chunk-VMJL7RH6.js → chunk-GZJUCMH4.js} +4 -4
- package/chunks/{chunk-MQP3MHWN.js → chunk-HJOWQUE2.js} +21 -15
- package/chunks/{chunk-ZS5BHEPD.js → chunk-I32QCIK7.js} +1 -1
- package/chunks/{chunk-7IV52LTO.js → chunk-I6VVOZDK.js} +2 -2
- package/chunks/{chunk-X7V3N6YH.js → chunk-I6YW3T3W.js} +218 -37
- package/chunks/{chunk-2E3V7G6Y.js → chunk-ICWGPK23.js} +55 -50
- package/chunks/{chunk-SQS55KR4.js → chunk-IJVDHPKD.js} +2 -2
- package/chunks/{chunk-QS4ENGVF.js → chunk-IKN3IUJP.js} +9 -8
- package/chunks/{chunk-2UZJWSVD.js → chunk-ILPXSKGQ.js} +2 -2
- package/chunks/{chunk-ZRYQMWEP.js → chunk-IPQA4SR5.js} +2 -2
- package/chunks/{chunk-XYQHT3AW.js → chunk-IRIX323G.js} +2 -2
- package/chunks/{chunk-5HJUPACR.js → chunk-J7MLXFC5.js} +2 -2
- package/chunks/{chunk-AZF6SME3.js → chunk-JECO75XD.js} +3 -3
- package/chunks/chunk-JLGFGPZJ.js +346 -0
- package/chunks/{chunk-WZDM44SB.js → chunk-JUIJ3FXC.js} +7 -7
- package/chunks/{chunk-A6NRNRKE.js → chunk-JVPFTDBK.js} +1 -1
- package/chunks/{chunk-2J3OJGTL.js → chunk-K2OJUPOE.js} +1 -21
- package/chunks/{chunk-GHY5OIYP.js → chunk-K63NK3KL.js} +13 -13
- package/chunks/{chunk-7JBHIQS2.js → chunk-KCOXDRQL.js} +7 -13
- package/chunks/{chunk-6NFAEG54.js → chunk-KOJ6MHD5.js} +24 -13
- package/chunks/{chunk-WS7PAXXR.js → chunk-KWFP3WV6.js} +18 -13
- package/chunks/{chunk-A5F63FEW.js → chunk-L436XFLJ.js} +1 -1
- package/chunks/{chunk-KIVGVFMM.js → chunk-LI2HEMKO.js} +16 -4
- package/chunks/{chunk-GIWB5QLV.js → chunk-LJP2BBMK.js} +4 -4
- package/chunks/{create-sub-session-XBCVGNFU.js → chunk-LRKMQPMD.js} +4 -6
- package/chunks/{chunk-6UQSU7CQ.js → chunk-MDZO5V2O.js} +58 -107
- package/chunks/{chunk-AO4M6NMD.js → chunk-MW5AHWOZ.js} +60 -20
- package/chunks/{chunk-FYZMB6DB.js → chunk-MYLXL7F6.js} +11 -11
- package/chunks/{chunk-ZLCT4C5A.js → chunk-MZS7GEC7.js} +1 -1
- package/chunks/{chunk-VEND4KA4.js → chunk-NER3H7PI.js} +1 -1
- package/chunks/{chunk-AVCCKIZ6.js → chunk-NVK4HJYQ.js} +1 -1
- package/chunks/{chunk-MPHLIJYL.js → chunk-NY3IJYAV.js} +14 -8
- package/chunks/{chunk-XZJKSETB.js → chunk-O3BUXIPM.js} +3 -3
- package/chunks/{chunk-4XPSVIED.js → chunk-O5YGAEQS.js} +6 -6
- package/chunks/{chunk-NW35NVFN.js → chunk-ODXCSIH5.js} +4 -4
- package/chunks/{chunk-5XHAOUWD.js → chunk-OI2DR6QB.js} +3 -3
- package/chunks/{chunk-BUGYW6FB.js → chunk-OQ6LTSX3.js} +1 -1
- package/chunks/{chunk-J5ZDDUKM.js → chunk-OT26ITEY.js} +4 -4
- package/chunks/{chunk-EFB657PR.js → chunk-OX44MOAN.js} +3 -3
- package/chunks/{chunk-LURJYO2T.js → chunk-OZ6KS6KW.js} +4 -0
- package/chunks/{chunk-4F5WV4RF.js → chunk-PAJGKZAA.js} +281 -10
- package/chunks/{chunk-HIK2OF33.js → chunk-PVBT5QPD.js} +1 -1
- package/chunks/chunk-QHMLYMMS.js +32 -0
- package/chunks/{chunk-U2UYQMM6.js → chunk-R2ZJH3FV.js} +3 -3
- package/chunks/{chunk-K52PZNU4.js → chunk-RRKNX553.js} +2 -2
- package/chunks/chunk-RXFQM6FQ.js +42 -0
- package/chunks/{chunk-SJ4HB27T.js → chunk-SDVF6A42.js} +3 -3
- package/chunks/{chunk-TBVSALA3.js → chunk-SKNVVYIJ.js} +3 -3
- package/chunks/{chunk-JGUBDRBC.js → chunk-SLEWBQWM.js} +3 -3
- package/chunks/{chunk-ZRFUT5VV.js → chunk-SM7ZVKTF.js} +7 -7
- package/chunks/{chunk-UUQFJILB.js → chunk-SQPOJ4ZI.js} +15 -3
- package/chunks/{chunk-RPJQ3O4M.js → chunk-SRGENTPF.js} +31 -41
- package/chunks/{chunk-ISJMN3ML.js → chunk-T2CRBIDJ.js} +1 -1
- package/chunks/{chunk-MZKWFWVG.js → chunk-T2HMXHYA.js} +6 -6
- package/chunks/{chunk-FEMQ6Y7W.js → chunk-T6OODF2U.js} +47 -126
- package/chunks/{chunk-VYC7XFYV.js → chunk-TKO4TLT6.js} +5 -5
- package/chunks/{chunk-KVGR4MCF.js → chunk-TOF4UZHH.js} +3 -3
- package/chunks/{chunk-LD5VIJ7S.js → chunk-TWSKM647.js} +1 -1
- package/chunks/{chunk-7NBVNAJJ.js → chunk-UCSV2IZW.js} +3 -3
- package/chunks/{chunk-FDD2IUEL.js → chunk-UX3IFLJM.js} +229 -21
- package/chunks/{chunk-YDJRMQU4.js → chunk-V3GINY6K.js} +3 -3
- package/chunks/{chunk-XL5K4SVK.js → chunk-VL4YX3FH.js} +1 -1
- package/chunks/{chunk-62JOGZL5.js → chunk-VMDURMFY.js} +199 -87
- package/chunks/{chunk-OE52YHCZ.js → chunk-W2WRNJKX.js} +11 -11
- package/chunks/{chunk-YLFLHKDL.js → chunk-W3N5XAZ6.js} +1 -1
- package/chunks/{chunk-IWOWEENB.js → chunk-WBT3STGU.js} +385 -25
- package/chunks/{chunk-S3G6YFQC.js → chunk-WEGXPP5E.js} +1 -1
- package/chunks/{chunk-RDQ7QB4Y.js → chunk-XJS54K4A.js} +2 -2
- package/chunks/{chunk-L4HVF7LM.js → chunk-XNXWEGKB.js} +3 -3
- package/chunks/{chunk-T6XLJRQY.js → chunk-XYX474JQ.js} +36509 -5182
- package/chunks/{chunk-F6WFNA7U.js → chunk-XZA32HII.js} +3 -6
- package/chunks/{chunk-NUGZAFR2.js → chunk-ZEADBZLO.js} +147 -6
- package/chunks/chunk-ZELCTN6Y.js +29 -0
- package/chunks/{chunk-TQOF5KBL.js → chunk-ZEZKIS2K.js} +0 -31
- package/chunks/{chunk-IOSEW6KP.js → chunk-ZJG323IA.js} +5 -4
- package/chunks/{chunk-VSNPOSDN.js → chunk-ZKAZP2ZG.js} +107 -12
- package/chunks/{chunk-YMVFIYHV.js → chunk-ZLTEQYNC.js} +2 -2
- package/chunks/{chunk-O5BDEWBC.js → chunk-ZWKGZB2K.js} +3 -3
- package/chunks/{chunk-6QSA4JHL.js → chunk-ZXDM7DYV.js} +2772 -814
- package/chunks/chunk-ZYNTSXWK.js +32 -0
- package/chunks/config-utils-7M6PCTLT.js +113 -0
- package/chunks/contextCommand-G4QG3TW6.js +108 -0
- package/chunks/{core-runtime-CES6JSVV.js → core-runtime-PKNQ63VL.js} +63 -58
- package/chunks/{create-sub-session-UJTPMVOG.js → create-sub-session-PLGPY6TV.js} +60 -58
- package/chunks/create-sub-session-RVHSWVAP.js +17 -0
- package/chunks/{cron-create-IKA56DAF.js → cron-create-IJGVR5R2.js} +4 -4
- package/chunks/{cron-delete-K5Q62EGH.js → cron-delete-4N5BI6GL.js} +4 -4
- package/chunks/{cron-list-QBFGAMP7.js → cron-list-2CATIPUX.js} +4 -4
- package/chunks/{daemon-RZZUPGOJ.js → daemon-NAYK4XXU.js} +51 -24
- package/chunks/{daemon-git-worktree-guard-3QY2BQYB.js → daemon-git-worktree-guard-LDBJXH2U.js} +338 -92
- package/chunks/daemon-status-provider-F5FEHVVG.js +118 -0
- package/chunks/daemon-trust-policy-C6YTU5CQ.js +114 -0
- package/chunks/{daemon-trust-policy-monitor-TK4K7M63.js → daemon-trust-policy-monitor-IGEJPHQ4.js} +68 -66
- package/chunks/{de-RYUHH2C6.js → de-X6HLSIFE.js} +1 -0
- package/chunks/deferred-core-runtime-GHT3GDOR.js +116 -0
- package/chunks/{display-image-OEJMJV3S.js → display-image-DR55LL6M.js} +5 -5
- package/chunks/dist-4Q7NTUNB.js +2512 -0
- package/chunks/{dist-ESS34DHC.js → dist-6H6RZ5H6.js} +2 -2
- package/chunks/{dist-LZO24N3E.js → dist-7CKN54NL.js} +1 -1
- package/chunks/{dist-5EV2G6MC.js → dist-DJBNNPLN.js} +1 -1
- package/chunks/{dist-J6P3C52Z.js → dist-FVJZSIO4.js} +28 -7
- package/chunks/{dist-K7IQB53U.js → dist-SATKXKUR.js} +1 -1
- package/chunks/{dist-ES6HNUW2.js → dist-TJUDJTCB.js} +246 -17
- package/chunks/{dist-VVQBOKDH.js → dist-UQUFZDIY.js} +1 -1
- package/chunks/{dist-2OG3PGKO.js → dist-ZBVOXSKF.js} +3 -3
- package/chunks/earlyInputCapture-HOSJTLWP.js +109 -0
- package/chunks/{edit-A2633SLR.js → edit-KSPVUEAS.js} +48 -48
- package/chunks/{en-3RHLPITS.js → en-6MDBWMTG.js} +3 -0
- package/chunks/{enter-worktree-OIAHE2TB.js → enter-worktree-UOZ6ZTP7.js} +7 -8
- package/chunks/{enterPlanMode-SUGIKLR7.js → enterPlanMode-DZTABSKN.js} +47 -47
- package/chunks/environment-JXOSW25V.js +131 -0
- package/chunks/errors-IOXFDE4J.js +115 -0
- package/chunks/{exit-worktree-3UT3SSWT.js → exit-worktree-G2QATUCV.js} +7 -8
- package/chunks/exitPlanMode-PZG4FXRB.js +85 -0
- package/chunks/{fast-path-3AVP3G35.js → fast-path-EBS7NAVL.js} +28 -7
- package/chunks/{fast-path-settings-WHX3J3ZI.js → fast-path-settings-XMFBYFUH.js} +2 -2
- package/chunks/{fr-4PL5GHG4.js → fr-FTZWF462.js} +1 -0
- package/chunks/{gemini-7PVQWHTH.js → gemini-JELEKOVS.js} +129 -123
- package/chunks/{geminiContentGenerator-B2FOJJDJ.js → geminiContentGenerator-I2CKP7XI.js} +16 -13
- package/chunks/{glob-7YGXE6OV.js → glob-TDVEVPQZ.js} +47 -47
- package/chunks/{goal-tools-TLJCE7YZ.js → goal-tools-CNVXMSZD.js} +72 -28
- package/chunks/{grep-6DV6LTON.js → grep-3NLSS32D.js} +6 -6
- package/chunks/handleAutoUpdate-AWAGHKOX.js +111 -0
- package/chunks/i18n-CYA25C5F.js +126 -0
- package/chunks/{image-gen-7CSCJ73T.js → image-gen-63NN2H5N.js} +9 -11
- package/chunks/initializer-JD2FLNLO.js +115 -0
- package/chunks/installationInfo-N3DCWVWR.js +109 -0
- package/chunks/{ja-HZ7X7PQO.js → ja-2GL5FKYJ.js} +1 -0
- package/chunks/{keychain-token-storage-MTFTAESK.js → keychain-token-storage-3MGFRYGM.js} +2 -2
- package/chunks/list-XDQAUET5.js +118 -0
- package/chunks/{list-agents-43XUEXJV.js → list-agents-EXRSHIDJ.js} +2 -2
- package/chunks/loadedSettingsAdapter-IK7H5JRK.js +112 -0
- package/chunks/{loggingContentGenerator-RNE66CKK.js → loggingContentGenerator-CZWUAHAI.js} +27 -30
- package/chunks/{loop-wakeup-E54KDUXC.js → loop-wakeup-XBPB2BRO.js} +5 -5
- package/chunks/{ls-CGL2UC3H.js → ls-WFONAND2.js} +4 -4
- package/chunks/{lsp-5IKUO5DX.js → lsp-DUKPDUXN.js} +2 -2
- package/chunks/{managed-npm-update-Y3SC3GLJ.js → managed-npm-update-54W23SP5.js} +61 -59
- package/chunks/mcp-2E7ZLMEE.js +112 -0
- package/chunks/{monitor-PXYSGSUN.js → monitor-A4J5QRGJ.js} +47 -47
- package/chunks/nonInteractiveCli-ZNDXB62Y.js +185 -0
- package/chunks/{notebook-edit-ISIBJVBR.js → notebook-edit-4ANFZON5.js} +48 -48
- package/chunks/open-with-auth-4UI3KHUR.js +55 -0
- package/chunks/{openaiContentGenerator-6TBOPEGT.js → openaiContentGenerator-JCCJJQZC.js} +29 -30
- package/chunks/pidfile-DHV2Y7UD.js +113 -0
- package/chunks/{processUtils-YK2TDTTU.js → processUtils-JJAR56SO.js} +2 -2
- package/chunks/prompt-terminal-ledger-LDZ6QVYA.js +107 -0
- package/chunks/{pt-QT5N2Q6Q.js → pt-XN2YWJVM.js} +1 -0
- package/chunks/{qwenContentGenerator-CLDMA2Y4.js → qwenContentGenerator-5JM44ZSA.js} +53 -59
- package/chunks/{qwenOAuth2-DLDR6UC5.js → qwenOAuth2-JIYAWXTW.js} +8 -10
- package/chunks/{read-file-2HOD2ATO.js → read-file-N3E5DY7N.js} +13 -14
- package/chunks/{read-mcp-resource-XYES2B42.js → read-mcp-resource-7A7NFSFL.js} +2 -2
- package/chunks/read-package-up-6T6ICKR7.js +13 -0
- package/chunks/{record-artifact-W3IBTGL7.js → record-artifact-CPJ4IJSD.js} +4 -5
- package/chunks/report-findings-VFM5DENC.js +33 -0
- package/chunks/request-shutdown-AXVOFN5C.js +133 -0
- package/chunks/resumeHistoryUtils-YQRITQAG.js +120 -0
- package/chunks/ripGrep-NEIHKBKB.js +39 -0
- package/chunks/{ru-STMG5BPD.js → ru-OLTMFJEW.js} +1 -0
- package/chunks/{run-qwen-serve-XJHOW2NY.js → run-qwen-serve-IWGPZADI.js} +622 -79
- package/chunks/{runtime-J4SPTJRQ.js → runtime-I76HPFUE.js} +73 -71
- package/chunks/{scheduler-VRAEZZ4E.js → scheduler-M6YL4K4I.js} +62 -60
- package/chunks/{sdk-exporters-http-RSIOP3G2.js → sdk-exporters-http-XXSKBD2C.js} +5 -5
- package/chunks/{sdk-impl-CB3KARSK.js → sdk-impl-VPNBLV7I.js} +7 -7
- package/chunks/{send-message-J4VT46OI.js → send-message-A2GXDX3B.js} +10 -31
- package/chunks/serve-XY5S63GN.js +120 -0
- package/chunks/{server-74ONDK62.js → server-TWXRRREO.js} +965 -405
- package/chunks/{session-BO6VBWJP.js → session-IT5ZXU7A.js} +151 -140
- package/chunks/{settings-35QZNFDG.js → settings-IX5HOOCG.js} +71 -69
- package/chunks/shell-LZ55AAJB.js +95 -0
- package/chunks/{skill-DKEMQSNJ.js → skill-WSZ53D2R.js} +108 -25
- package/chunks/skill-settings-5U7FTJIK.js +120 -0
- package/chunks/spawnChannel-TMC6VXGN.js +113 -0
- package/chunks/standalone-update-CUYGWTR4.js +120 -0
- package/chunks/{startInteractiveUI-J2QSGWPU.js → startInteractiveUI-O6BI2OSA.js} +381 -293
- package/chunks/{syntheticOutput-JAXMIMZP.js → syntheticOutput-5AJ444QT.js} +3 -3
- package/chunks/{task-create-I2H322E4.js → task-create-CDJSOEQD.js} +11 -11
- package/chunks/{task-list-3OLIWFTQ.js → task-list-BELMPA75.js} +5 -5
- package/chunks/{task-stop-JAUY6MSY.js → task-stop-U3S3KZG2.js} +2 -2
- package/chunks/{task-update-B3XO4CPI.js → task-update-77VCFDDZ.js} +11 -11
- package/chunks/{team-create-W534PMGX.js → team-create-UF4TMQEH.js} +48 -48
- package/chunks/{team-delete-Q7GE7RRI.js → team-delete-YWFXX77L.js} +5 -5
- package/chunks/{team-plan-approval-WNV6P6NG.js → team-plan-approval-U57NSR6C.js} +47 -47
- package/chunks/terminal-image-renderer-DRL3BROJ.js +116 -0
- package/chunks/theme-manager-HHJPUDRN.js +104 -0
- package/chunks/{todoWrite-FJJTY2TI.js → todoWrite-435EO2CS.js} +4 -4
- package/chunks/{tool-search-Y4KL3LRE.js → tool-search-SV35UV72.js} +18 -19
- package/chunks/total-session-admission-TQI7TCTL.js +114 -0
- package/chunks/trustedFolders-YKK67IP3.js +124 -0
- package/chunks/{update-relaunch-OHVFN6KF.js → update-relaunch-DX7LVA4P.js} +6 -6
- package/chunks/updateCheck-6JRTKTUF.js +120 -0
- package/chunks/useAutoAcceptIndicator-MYXYSKSL.js +122 -0
- package/chunks/{validateNonInterActiveAuth-WJXH426F.js → validateNonInterActiveAuth-B26O4YJP.js} +113 -106
- package/chunks/{version-QMDRADXM.js → version-K5D7VJ4B.js} +2 -2
- package/chunks/{web-fetch-ROS6P4LP.js → web-fetch-VFHZLLNZ.js} +25 -242
- package/chunks/{web-search-JS3E76O6.js → web-search-AQE5A4J5.js} +11 -11
- package/chunks/{web-shell-static-3NUTRHAH.js → web-shell-static-A6QMUNNV.js} +11 -4
- package/chunks/webapi-Z5OM224P.js +4118 -0
- package/chunks/{workflow-2FCMBTBZ.js → workflow-XL6AEUZ7.js} +635 -94
- package/chunks/workspace-providers-status-H6TG34YV.js +116 -0
- package/chunks/{workspace-registration-store-SU4EJKSD.js → workspace-registration-store-I4U3V5LL.js} +1 -1
- package/chunks/workspace-registry-2PWNIYNI.js +123 -0
- package/chunks/workspace-service-4FGTUJLA.js +131 -0
- package/chunks/workspace-skills-status-7VOLUDT6.js +115 -0
- package/chunks/{workspace-trust-reconciler-4Y4F7XIX.js → workspace-trust-reconciler-GJ466KCE.js} +74 -73
- package/chunks/write-file-PWOYCT2K.js +90 -0
- package/chunks/{zh-TW-NX43Z2S2.js → zh-TW-MV4FWFB6.js} +3 -0
- package/chunks/{zh-3JQ75KFU.js → zh-X3WGU6SI.js} +3 -0
- package/chunks/{zoom-image-DNBKCGGF.js → zoom-image-NYJPC3NI.js} +13 -14
- package/cli.js +15 -15
- package/locales/ca.js +3 -0
- package/locales/de.js +1 -0
- package/locales/en.js +3 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +3 -0
- package/locales/zh.js +3 -0
- package/package.json +3 -3
- package/web-shell/assets/{abnfDiagram-VCTEODGH-DWHXEVlf.js → abnfDiagram-VCTEODGH-yq7z7Anb.js} +1 -1
- package/web-shell/assets/{arc-CXKjm86V.js → arc-CbJO0xnT.js} +1 -1
- package/web-shell/assets/{architectureDiagram-5GKGNRK7-B_ynI0cX.js → architectureDiagram-5GKGNRK7-CRh89421.js} +1 -1
- package/web-shell/assets/{blockDiagram-NRAW4CY4-DMebd9X0.js → blockDiagram-NRAW4CY4-C75KAhKv.js} +1 -1
- package/web-shell/assets/{c4Diagram-UCG6FXSJ-BZ5BlxS-.js → c4Diagram-UCG6FXSJ-BzlMveFB.js} +1 -1
- package/web-shell/assets/channel-B3sGR79J.js +1 -0
- package/web-shell/assets/{chunk-2Q5K7J3B-CluJKopE.js → chunk-2Q5K7J3B-DA8QDX3a.js} +1 -1
- package/web-shell/assets/{chunk-5VM5RSS4-hzDAPFOo.js → chunk-5VM5RSS4-Bgu7gQ7Y.js} +1 -1
- package/web-shell/assets/{chunk-F27PBJKO-6vHioKJe.js → chunk-F27PBJKO-BOew7pIK.js} +1 -1
- package/web-shell/assets/{chunk-G27WJ6UU-B_5hKTGo.js → chunk-G27WJ6UU-DHx1I-hO.js} +1 -1
- package/web-shell/assets/{chunk-JWPE2WC7-CO9VoFCH.js → chunk-JWPE2WC7-SarFW0WU.js} +1 -1
- package/web-shell/assets/{chunk-LCL6LL3I-7L5JpxYu.js → chunk-LCL6LL3I-BLzP083Z.js} +1 -1
- package/web-shell/assets/{chunk-POPQ4Y6H-DHLJMAqj.js → chunk-POPQ4Y6H-Bmkv_iKm.js} +1 -1
- package/web-shell/assets/{chunk-SVP7TREG-Dt-4Cqdl.js → chunk-SVP7TREG-MPx9r1N2.js} +1 -1
- package/web-shell/assets/{chunk-XXDRQBXY-QlSQ3ssG.js → chunk-XXDRQBXY-Ck-09rKG.js} +1 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +1 -0
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +1 -0
- package/web-shell/assets/{cose-bilkent-JH36ORCC-DMw3EOxl.js → cose-bilkent-JH36ORCC-DWm6lfOG.js} +1 -1
- package/web-shell/assets/{cynefin-OW5HDTMX-s6vEA7RQ.js → cynefin-OW5HDTMX-DcBUyr5R.js} +1 -1
- package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-AOKsvYLt.js → cynefinDiagram-5FMLGOSQ-Df8qmd_p.js} +1 -1
- package/web-shell/assets/{dagre-3AP2YEHR-9QAZn3m7.js → dagre-3AP2YEHR-DDmGspD7.js} +1 -1
- package/web-shell/assets/{diagram-S7CK7UJ4-CWpnu4FN.js → diagram-S7CK7UJ4-BK_qFvbi.js} +1 -1
- package/web-shell/assets/{diagram-UQ7AKVKN-9l0jXD8q.js → diagram-UQ7AKVKN-Uw3AP_bi.js} +1 -1
- package/web-shell/assets/{diagram-VSXAHHWV-BMUHroj4.js → diagram-VSXAHHWV-CJOQKxY7.js} +1 -1
- package/web-shell/assets/{diagram-VX7I27RA-Co9x27vm.js → diagram-VX7I27RA-DhdvZna5.js} +1 -1
- package/web-shell/assets/{diagram-Z3DM3KII-BKnTeOER.js → diagram-Z3DM3KII-edQU0nlP.js} +1 -1
- package/web-shell/assets/{ebnfDiagram-PWID7BFC-QBZD9CKG.js → ebnfDiagram-PWID7BFC-4kugBEsO.js} +1 -1
- package/web-shell/assets/{erDiagram-SSCWMZ5O-dKWAEGun.js → erDiagram-SSCWMZ5O-BMkFivWO.js} +1 -1
- package/web-shell/assets/{flowDiagram-A5DVABFB-CR_UgVqj.js → flowDiagram-A5DVABFB-BM1ea8g-.js} +1 -1
- package/web-shell/assets/{ganttDiagram-EL5Y4UJY-DQUnjWO6.js → ganttDiagram-EL5Y4UJY-CXj_cKRf.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C4j59wPL.js → gitGraphDiagram-WWUBYQGX-D0nEqwqu.js} +1 -1
- package/web-shell/assets/{index-tYXRIPz4.js → index-B6JN54Pd.js} +1 -1
- package/web-shell/assets/{index-BN_m_uHJ.css → index-C-XlQn24.css} +1 -1
- package/web-shell/assets/index-DLjXM0dn.js +1860 -0
- package/web-shell/assets/{infoDiagram-RXCK75RN-mzqbt50w.js → infoDiagram-RXCK75RN-DF7aGGbQ.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-5VMMS53U-ChLOqhGl.js → ishikawaDiagram-5VMMS53U-CZYNX1lL.js} +1 -1
- package/web-shell/assets/{journeyDiagram-EYS64GPL-SifZE-R8.js → journeyDiagram-EYS64GPL-CvrqMUz1.js} +1 -1
- package/web-shell/assets/{kanban-definition-3QL26DDD-Sft2qlbc.js → kanban-definition-3QL26DDD-BZNJQZBj.js} +1 -1
- package/web-shell/assets/{layout-O2uHVkPd.js → layout-Bf83x7D6.js} +1 -1
- package/web-shell/assets/{linear-BVqYgjSc.js → linear-Bkc3ES2f.js} +1 -1
- package/web-shell/assets/{mermaid.core-CZ9MQaJ6.js → mermaid.core-C6xuovwz.js} +6 -6
- package/web-shell/assets/{mindmap-definition-FBJOCRG2-BNQYjBqM.js → mindmap-definition-FBJOCRG2-DzH6gVRg.js} +1 -1
- package/web-shell/assets/{pegDiagram-XKGWAZYB-rh1J8uv6.js → pegDiagram-XKGWAZYB-DCvLh2fa.js} +1 -1
- package/web-shell/assets/{pieDiagram-E7YTZNPT-BQHR5mn9.js → pieDiagram-E7YTZNPT-BtjVlx_6.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-AXDQQJYC-CLCbP7mK.js → quadrantDiagram-AXDQQJYC-IbroqxFe.js} +1 -1
- package/web-shell/assets/{railroadDiagram-O6MQD6OU-CDQhrkbm.js → railroadDiagram-O6MQD6OU-BvMykiWW.js} +1 -1
- package/web-shell/assets/{requirementDiagram-EFPCY7ZU-BdP9uswg.js → requirementDiagram-EFPCY7ZU-D-HHMyrh.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CFZDFBXF.js → sankeyDiagram-P5KCCOFB-C0XXhB6d.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BW9WOJXI.js → sequenceDiagram-WJ2MYXX4-DseAXj5d.js} +1 -1
- package/web-shell/assets/{sizeCapture-X5ZJPWSS-CPMia32z.js → sizeCapture-X5ZJPWSS-Cek2EweK.js} +1 -1
- package/web-shell/assets/{stateDiagram-HBIQ2CUA-BANp9p7F.js → stateDiagram-HBIQ2CUA-yLv8wafW.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +1 -0
- package/web-shell/assets/{swimlanes-XN3QIQJK-JroXksK-.js → swimlanes-XN3QIQJK-Cwz-opvE.js} +1 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +8 -0
- package/web-shell/assets/{timeline-definition-24CTP7MA-DfuVIfYY.js → timeline-definition-24CTP7MA-BJuFD7OG.js} +1 -1
- package/web-shell/assets/{vennDiagram-4TSXK5OY-BZXoSjRB.js → vennDiagram-4TSXK5OY-CNAavdoV.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-VM6X3IG4-BdiY8avC.js → wardleyDiagram-VM6X3IG4-DaIjAidq.js} +1 -1
- package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DcXh_U4H.js → xychartDiagram-S5SC5T6Z-DkcQXjTy.js} +1 -1
- package/web-shell/index.html +19 -4
- package/chunks/MaxSizedBox-3OZJCC3J.js +0 -110
- package/chunks/agent-BFE3DQM3.js +0 -93
- package/chunks/agent-headless-LLVKZZ4P.js +0 -87
- package/chunks/bridge-EBYO4SYM.js +0 -118
- package/chunks/channel-settings-store-5VP2Y2YM.js +0 -115
- package/chunks/chunk-AXMWHKXA.js +0 -42
- package/chunks/chunk-IO257NUD.js +0 -623
- package/chunks/chunk-YHC2EYYG.js +0 -125
- package/chunks/computer-use-EGPWFEX6.js +0 -2142
- package/chunks/config-utils-WZ43VOBS.js +0 -25
- package/chunks/contextCommand-5DSEQI6S.js +0 -106
- package/chunks/daemon-status-provider-EYMLPYJU.js +0 -116
- package/chunks/daemon-trust-policy-CQYKZ7VO.js +0 -112
- package/chunks/deferred-core-runtime-WFEPUXZR.js +0 -114
- package/chunks/earlyInputCapture-PN4PP7V5.js +0 -107
- package/chunks/environment-WUPHLPKZ.js +0 -127
- package/chunks/errors-WPMPVIAT.js +0 -113
- package/chunks/exitPlanMode-MLFHYZNB.js +0 -85
- package/chunks/handleAutoUpdate-F5OTWUT5.js +0 -109
- package/chunks/i18n-C562S6KN.js +0 -124
- package/chunks/initializer-7YPGOFP4.js +0 -113
- package/chunks/installationInfo-ARU5Q2H7.js +0 -107
- package/chunks/list-KTSK275C.js +0 -116
- package/chunks/loadedSettingsAdapter-F3T2EQ5J.js +0 -110
- package/chunks/mcp-6ONTVPAY.js +0 -110
- package/chunks/nonInteractiveCli-KZDWFAN6.js +0 -178
- package/chunks/pidfile-IO7ALSZF.js +0 -111
- package/chunks/prompt-terminal-ledger-TCE7PMCE.js +0 -105
- package/chunks/resumeHistoryUtils-DDSBAQJS.js +0 -118
- package/chunks/ripGrep-E7P6K4QR.js +0 -40
- package/chunks/serve-KEAWV4TI.js +0 -118
- package/chunks/shell-H6K63WG3.js +0 -95
- package/chunks/skill-settings-TCKLXIXM.js +0 -118
- package/chunks/spawnChannel-2K6NKWM5.js +0 -111
- package/chunks/standalone-update-LSCGOEFP.js +0 -118
- package/chunks/terminal-image-renderer-UHX3UD66.js +0 -114
- package/chunks/theme-manager-6B47ZPIF.js +0 -102
- package/chunks/total-session-admission-NSCFWGJH.js +0 -113
- package/chunks/trustedFolders-7XMJWGQ3.js +0 -122
- package/chunks/updateCheck-EOVLHD4T.js +0 -118
- package/chunks/useAutoAcceptIndicator-ZNMIGBTN.js +0 -120
- package/chunks/workspace-providers-status-GPGU5YMT.js +0 -113
- package/chunks/workspace-registry-BQISXT6Y.js +0 -122
- package/chunks/workspace-service-LLY6HCUC.js +0 -129
- package/chunks/workspace-skills-status-L5N2Y3ZP.js +0 -113
- package/chunks/write-file-EJHU2Z3E.js +0 -90
- package/web-shell/assets/channel-Zg3WHgq_.js +0 -1
- package/web-shell/assets/classDiagram-DTDB5LWJ-C16l9jQz.js +0 -1
- package/web-shell/assets/classDiagram-v2-JRS7N3AN-C16l9jQz.js +0 -1
- package/web-shell/assets/index-DrlJu79f.js +0 -1792
- package/web-shell/assets/stateDiagram-v2-4QOOHH4V-NZYAoQLU.js +0 -1
- package/web-shell/assets/swimlanesDiagram-VK2B7HYN-3YdVX3vj.js +0 -8
|
@@ -4,10 +4,10 @@ import {
|
|
|
4
4
|
getRateLimitErrorDetails,
|
|
5
5
|
isQwenQuotaExceededError,
|
|
6
6
|
isRateLimitError
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-EB4VDXNI.js";
|
|
8
8
|
import {
|
|
9
9
|
isAbortError
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-2NNTE2ED.js";
|
|
11
11
|
import {
|
|
12
12
|
init_esbuild_shims
|
|
13
13
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -19,7 +19,7 @@ import {
|
|
|
19
19
|
} from "./chunk-OCPBI7J5.js";
|
|
20
20
|
import {
|
|
21
21
|
defaultSpawnChannelFactory
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-GZJUCMH4.js";
|
|
23
23
|
import {
|
|
24
24
|
BridgeChannelClosedError,
|
|
25
25
|
BridgeTimeoutError,
|
|
@@ -29,7 +29,7 @@ import {
|
|
|
29
29
|
SessionRestoreTimeoutError,
|
|
30
30
|
createIdleWorkspaceExtensionsStatus,
|
|
31
31
|
createIdleWorkspaceHooksStatus
|
|
32
|
-
} from "./chunk-
|
|
32
|
+
} from "./chunk-CITGRGCM.js";
|
|
33
33
|
import {
|
|
34
34
|
ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
|
|
35
35
|
ACTIVE_WORK_CLOSE_TIMEOUT_MS,
|
|
@@ -41,6 +41,8 @@ import {
|
|
|
41
41
|
ACTIVE_WORK_MAX_SNAPSHOT_SESSIONS,
|
|
42
42
|
ACTIVE_WORK_NOTIFICATION_METHOD,
|
|
43
43
|
ACTIVE_WORK_STALE_INTERVALS,
|
|
44
|
+
CHANNEL_LIVENESS_META_KEY,
|
|
45
|
+
CHANNEL_LIVENESS_VERSION,
|
|
44
46
|
CHANNEL_PROMPT_META_KEY,
|
|
45
47
|
CHANNEL_STARTUP_PROFILE_META_KEY,
|
|
46
48
|
CHANNEL_STARTUP_PROFILE_VERSION,
|
|
@@ -68,7 +70,7 @@ import {
|
|
|
68
70
|
clampActiveWorkIntervalMs,
|
|
69
71
|
isValidTrustedModelPrompt,
|
|
70
72
|
sessionCloseDrainBudgetMs
|
|
71
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-OZ6KS6KW.js";
|
|
72
74
|
import {
|
|
73
75
|
BranchWhilePromptActiveError,
|
|
74
76
|
BridgeChannelQuarantinedError,
|
|
@@ -122,7 +124,7 @@ import {
|
|
|
122
124
|
isOfficeDocumentExtension,
|
|
123
125
|
isRecordableDerivedChild,
|
|
124
126
|
pathHasSkippedDirectoryComponent
|
|
125
|
-
} from "./chunk-
|
|
127
|
+
} from "./chunk-SKNVVYIJ.js";
|
|
126
128
|
import {
|
|
127
129
|
SESSION_ARTIFACT_PERSISTENCE_VERSION,
|
|
128
130
|
SESSION_PR_LIST_LIMIT,
|
|
@@ -140,19 +142,22 @@ import {
|
|
|
140
142
|
normalizeSnapshotPayload,
|
|
141
143
|
normalizeTurnResultError,
|
|
142
144
|
stableSessionArtifactId
|
|
143
|
-
} from "./chunk-
|
|
145
|
+
} from "./chunk-XYX474JQ.js";
|
|
146
|
+
import {
|
|
147
|
+
APPROVAL_MODES
|
|
148
|
+
} from "./chunk-BVE5EMIG.js";
|
|
144
149
|
import {
|
|
145
150
|
DAEMON_TRACEPARENT_META_KEY,
|
|
146
151
|
DAEMON_TRACESTATE_META_KEY
|
|
147
|
-
} from "./chunk-
|
|
152
|
+
} from "./chunk-ILPXSKGQ.js";
|
|
148
153
|
import {
|
|
149
154
|
INVOCATION_CONTEXT_META_KEY,
|
|
150
155
|
PRIVATE_ACP_CAPABILITY_ENV,
|
|
151
156
|
PRIVATE_PARENT_CAPABILITY_META_KEY
|
|
152
|
-
} from "./chunk-
|
|
157
|
+
} from "./chunk-UX3IFLJM.js";
|
|
153
158
|
import {
|
|
154
159
|
getSpecificMimeType
|
|
155
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-WBT3STGU.js";
|
|
156
161
|
import {
|
|
157
162
|
init_esbuild_shims
|
|
158
163
|
} from "./chunk-5O2XNYP6.js";
|
|
@@ -162,7 +167,7 @@ import {
|
|
|
162
167
|
|
|
163
168
|
// packages/acp-bridge/src/bridge.ts
|
|
164
169
|
init_esbuild_shims();
|
|
165
|
-
import { randomBytes, randomUUID as
|
|
170
|
+
import { randomBytes, randomUUID as randomUUID3 } from "node:crypto";
|
|
166
171
|
import * as path4 from "node:path";
|
|
167
172
|
import { inspect } from "node:util";
|
|
168
173
|
|
|
@@ -1200,6 +1205,127 @@ function parseSessionSource(sourceType, sourceId) {
|
|
|
1200
1205
|
}
|
|
1201
1206
|
__name(parseSessionSource, "parseSessionSource");
|
|
1202
1207
|
|
|
1208
|
+
// packages/acp-bridge/src/channel-liveness.ts
|
|
1209
|
+
init_esbuild_shims();
|
|
1210
|
+
import { performance as performance2 } from "node:perf_hooks";
|
|
1211
|
+
var CHANNEL_LIVENESS_INTERVAL_MS = 15e3;
|
|
1212
|
+
var CHANNEL_LIVENESS_PROBE_TIMEOUT_MS = 1e4;
|
|
1213
|
+
var CHANNEL_LIVENESS_FAILURE_THRESHOLD = 2;
|
|
1214
|
+
var CHANNEL_LIVENESS_TIMER_LATE_TOLERANCE_MS = 1e3;
|
|
1215
|
+
var CHANNEL_LIVENESS_TIMEOUT_CODE = "acp_channel_liveness_timeout";
|
|
1216
|
+
var CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE = "acp_channel_liveness_protocol_error";
|
|
1217
|
+
var ChannelLivenessFailure = class extends Error {
|
|
1218
|
+
constructor(code) {
|
|
1219
|
+
super(
|
|
1220
|
+
code === CHANNEL_LIVENESS_TIMEOUT_CODE ? "ACP channel failed consecutive liveness probes" : "ACP channel returned an invalid liveness response"
|
|
1221
|
+
);
|
|
1222
|
+
this.code = code;
|
|
1223
|
+
this.name = "ChannelLivenessFailure";
|
|
1224
|
+
}
|
|
1225
|
+
static {
|
|
1226
|
+
__name(this, "ChannelLivenessFailure");
|
|
1227
|
+
}
|
|
1228
|
+
};
|
|
1229
|
+
function isValidResponse(response, nonce) {
|
|
1230
|
+
return typeof response === "object" && response !== null && !Array.isArray(response) && response["v"] === CHANNEL_LIVENESS_VERSION && response["nonce"] === nonce;
|
|
1231
|
+
}
|
|
1232
|
+
__name(isValidResponse, "isValidResponse");
|
|
1233
|
+
function startChannelLivenessMonitor(options) {
|
|
1234
|
+
const now = options.now ?? (() => performance2.now());
|
|
1235
|
+
let stopped = false;
|
|
1236
|
+
let timer;
|
|
1237
|
+
let consecutiveTimeouts = 0;
|
|
1238
|
+
let nextNonce = 0;
|
|
1239
|
+
let resolveStopped;
|
|
1240
|
+
const stoppedOutcome = new Promise((resolve2) => {
|
|
1241
|
+
resolveStopped = resolve2;
|
|
1242
|
+
});
|
|
1243
|
+
const isActive = /* @__PURE__ */ __name(() => !stopped && options.isActive(), "isActive");
|
|
1244
|
+
const stop = /* @__PURE__ */ __name(() => {
|
|
1245
|
+
stopped = true;
|
|
1246
|
+
if (timer !== void 0) {
|
|
1247
|
+
clearTimeout(timer);
|
|
1248
|
+
timer = void 0;
|
|
1249
|
+
}
|
|
1250
|
+
resolveStopped({ kind: "stopped" });
|
|
1251
|
+
}, "stop");
|
|
1252
|
+
const fail = /* @__PURE__ */ __name((error) => {
|
|
1253
|
+
if (!isActive()) return;
|
|
1254
|
+
stop();
|
|
1255
|
+
options.onFailure(error);
|
|
1256
|
+
}, "fail");
|
|
1257
|
+
const timerWasLate = /* @__PURE__ */ __name((expectedAt) => now() > expectedAt + CHANNEL_LIVENESS_TIMER_LATE_TOLERANCE_MS, "timerWasLate");
|
|
1258
|
+
const runProbe = /* @__PURE__ */ __name(async () => {
|
|
1259
|
+
if (!isActive()) return;
|
|
1260
|
+
const nonce = nextNonce;
|
|
1261
|
+
nextNonce = nonce === Number.MAX_SAFE_INTEGER ? 0 : Math.max(0, nonce + 1);
|
|
1262
|
+
const response = Promise.resolve().then(() => options.probe(nonce)).then(
|
|
1263
|
+
(value) => ({ kind: "response", response: value }),
|
|
1264
|
+
() => ({ kind: "rejected" })
|
|
1265
|
+
);
|
|
1266
|
+
let outcome;
|
|
1267
|
+
while (true) {
|
|
1268
|
+
const expectedAt = now() + CHANNEL_LIVENESS_PROBE_TIMEOUT_MS;
|
|
1269
|
+
const timeout = new Promise((resolve2) => {
|
|
1270
|
+
timer = setTimeout(() => {
|
|
1271
|
+
timer = void 0;
|
|
1272
|
+
resolve2(
|
|
1273
|
+
timerWasLate(expectedAt) ? { kind: "local_delay" } : { kind: "timeout" }
|
|
1274
|
+
);
|
|
1275
|
+
}, CHANNEL_LIVENESS_PROBE_TIMEOUT_MS);
|
|
1276
|
+
timer.unref();
|
|
1277
|
+
});
|
|
1278
|
+
outcome = await Promise.race([response, timeout, stoppedOutcome]);
|
|
1279
|
+
if (timer !== void 0) {
|
|
1280
|
+
clearTimeout(timer);
|
|
1281
|
+
timer = void 0;
|
|
1282
|
+
}
|
|
1283
|
+
if (outcome.kind === "stopped" || !isActive()) return;
|
|
1284
|
+
if (outcome.kind !== "local_delay") break;
|
|
1285
|
+
consecutiveTimeouts = 0;
|
|
1286
|
+
}
|
|
1287
|
+
if (outcome.kind === "response") {
|
|
1288
|
+
if (!isValidResponse(outcome.response, nonce)) {
|
|
1289
|
+
fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE));
|
|
1290
|
+
return;
|
|
1291
|
+
}
|
|
1292
|
+
consecutiveTimeouts = 0;
|
|
1293
|
+
schedule(CHANNEL_LIVENESS_INTERVAL_MS);
|
|
1294
|
+
return;
|
|
1295
|
+
}
|
|
1296
|
+
if (outcome.kind === "rejected") {
|
|
1297
|
+
await Promise.resolve();
|
|
1298
|
+
fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_PROTOCOL_ERROR_CODE));
|
|
1299
|
+
return;
|
|
1300
|
+
}
|
|
1301
|
+
consecutiveTimeouts++;
|
|
1302
|
+
if (consecutiveTimeouts >= CHANNEL_LIVENESS_FAILURE_THRESHOLD) {
|
|
1303
|
+
fail(new ChannelLivenessFailure(CHANNEL_LIVENESS_TIMEOUT_CODE));
|
|
1304
|
+
return;
|
|
1305
|
+
}
|
|
1306
|
+
void runProbe();
|
|
1307
|
+
}, "runProbe");
|
|
1308
|
+
function schedule(delayMs) {
|
|
1309
|
+
if (!isActive()) return;
|
|
1310
|
+
const expectedAt = now() + delayMs;
|
|
1311
|
+
timer = setTimeout(() => {
|
|
1312
|
+
timer = void 0;
|
|
1313
|
+
if (!isActive()) return;
|
|
1314
|
+
if (timerWasLate(expectedAt)) {
|
|
1315
|
+
consecutiveTimeouts = 0;
|
|
1316
|
+
schedule(CHANNEL_LIVENESS_INTERVAL_MS);
|
|
1317
|
+
return;
|
|
1318
|
+
}
|
|
1319
|
+
void runProbe();
|
|
1320
|
+
}, delayMs);
|
|
1321
|
+
timer.unref();
|
|
1322
|
+
}
|
|
1323
|
+
__name(schedule, "schedule");
|
|
1324
|
+
schedule(CHANNEL_LIVENESS_INTERVAL_MS);
|
|
1325
|
+
return { stop };
|
|
1326
|
+
}
|
|
1327
|
+
__name(startChannelLivenessMonitor, "startChannelLivenessMonitor");
|
|
1328
|
+
|
|
1203
1329
|
// packages/acp-bridge/src/channel-startup-profile.ts
|
|
1204
1330
|
init_esbuild_shims();
|
|
1205
1331
|
var MAX_PROFILE_DURATION_MS = 6e5;
|
|
@@ -1304,6 +1430,7 @@ __name(getChannelStartupProfileAttributes, "getChannelStartupProfileAttributes")
|
|
|
1304
1430
|
|
|
1305
1431
|
// packages/acp-bridge/src/sessionAttachments.ts
|
|
1306
1432
|
init_esbuild_shims();
|
|
1433
|
+
import { randomUUID } from "node:crypto";
|
|
1307
1434
|
import { promises as fs, statSync } from "node:fs";
|
|
1308
1435
|
import { tmpdir } from "node:os";
|
|
1309
1436
|
import * as path from "node:path";
|
|
@@ -1717,9 +1844,11 @@ var SessionAttachmentStore = class {
|
|
|
1717
1844
|
if (!directory) return;
|
|
1718
1845
|
await fs.rm(directory, { recursive: true, force: true });
|
|
1719
1846
|
}
|
|
1720
|
-
async delete() {
|
|
1847
|
+
async delete(options = {}) {
|
|
1848
|
+
options.assertCanCommit?.();
|
|
1721
1849
|
this.closing = true;
|
|
1722
1850
|
await this.waitForCopy();
|
|
1851
|
+
options.assertCanCommit?.();
|
|
1723
1852
|
if (!this.closed) {
|
|
1724
1853
|
this.closed = true;
|
|
1725
1854
|
this.pendingItems = 0;
|
|
@@ -1727,7 +1856,20 @@ var SessionAttachmentStore = class {
|
|
|
1727
1856
|
this.resolvePendingDrainWaiters();
|
|
1728
1857
|
}
|
|
1729
1858
|
const directory = this.persistentDirectory ?? await this.directoryPromise?.catch(() => void 0);
|
|
1730
|
-
if (directory)
|
|
1859
|
+
if (directory) {
|
|
1860
|
+
options.assertCanCommit?.();
|
|
1861
|
+
const tombstone = path.join(
|
|
1862
|
+
path.dirname(directory),
|
|
1863
|
+
`.${path.basename(directory)}.deleting-${randomUUID()}`
|
|
1864
|
+
);
|
|
1865
|
+
try {
|
|
1866
|
+
await fs.rename(directory, tombstone);
|
|
1867
|
+
} catch (error) {
|
|
1868
|
+
if (error.code === "ENOENT") return;
|
|
1869
|
+
throw error;
|
|
1870
|
+
}
|
|
1871
|
+
await fs.rm(tombstone, { recursive: true, force: true });
|
|
1872
|
+
}
|
|
1731
1873
|
}
|
|
1732
1874
|
assertStored(reference) {
|
|
1733
1875
|
const id = reference.attachmentId;
|
|
@@ -1829,7 +1971,7 @@ __name(writeStderrLine, "writeStderrLine");
|
|
|
1829
1971
|
|
|
1830
1972
|
// packages/acp-bridge/src/bridgeClient.ts
|
|
1831
1973
|
init_esbuild_shims();
|
|
1832
|
-
import { randomUUID } from "node:crypto";
|
|
1974
|
+
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
1833
1975
|
import { promises as fs2 } from "node:fs";
|
|
1834
1976
|
import * as path2 from "node:path";
|
|
1835
1977
|
|
|
@@ -1962,10 +2104,11 @@ var MultiClientPermissionMediator = class {
|
|
|
1962
2104
|
this.safeAudit(
|
|
1963
2105
|
() => this.deps.audit.recordRequested(record, policy, votersAtIssue)
|
|
1964
2106
|
);
|
|
2107
|
+
const unresolvedWithoutDecision = timeoutMs > 0 ? `voter cancellation, session cancellation, or permissionTimeoutMs (${timeoutMs}ms)` : "voter or session cancellation because permissionTimeoutMs is disabled";
|
|
1965
2108
|
if (policy === "consensus" && votersAtIssue.size === 0) {
|
|
1966
2109
|
try {
|
|
1967
2110
|
process.stderr.write(
|
|
1968
|
-
`permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} issued with empty votersAtIssue; can only resolve via
|
|
2111
|
+
`permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} issued with empty votersAtIssue; can only resolve via ${unresolvedWithoutDecision}
|
|
1969
2112
|
`
|
|
1970
2113
|
);
|
|
1971
2114
|
} catch {
|
|
@@ -1975,7 +2118,7 @@ var MultiClientPermissionMediator = class {
|
|
|
1975
2118
|
this.unanimityBreadcrumbEmitted = true;
|
|
1976
2119
|
try {
|
|
1977
2120
|
process.stderr.write(
|
|
1978
|
-
`permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} requires unanimity (votersAtIssue.size=${votersAtIssue.size}, default quorum=floor(M/2)+1=${votersAtIssue.size}); split votes will only resolve via
|
|
2121
|
+
`permissionMediator: consensus request ${record.requestId} for session ${record.sessionId} requires unanimity (votersAtIssue.size=${votersAtIssue.size}, default quorum=floor(M/2)+1=${votersAtIssue.size}); split votes will only resolve via ${unresolvedWithoutDecision}. This breadcrumb fires once per mediator lifetime; subsequent unanimity-required requests are silent.
|
|
1979
2122
|
`
|
|
1980
2123
|
);
|
|
1981
2124
|
} catch {
|
|
@@ -2786,13 +2929,9 @@ var MAX_EARLY_EVENT_SESSIONS = 64;
|
|
|
2786
2929
|
var MAX_EARLY_EVENTS_PER_SESSION = 32;
|
|
2787
2930
|
var MAX_SUGGESTION_LENGTH = 500;
|
|
2788
2931
|
var EARLY_EVENT_TTL_MS = 6e4;
|
|
2789
|
-
var KNOWN_APPROVAL_MODES =
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
"auto-edit",
|
|
2793
|
-
"auto",
|
|
2794
|
-
"yolo"
|
|
2795
|
-
]);
|
|
2932
|
+
var KNOWN_APPROVAL_MODES = new Set(
|
|
2933
|
+
APPROVAL_MODES
|
|
2934
|
+
);
|
|
2796
2935
|
function describeStatKind(stats) {
|
|
2797
2936
|
if (stats.isDirectory()) return "directory";
|
|
2798
2937
|
if (stats.isSymbolicLink()) return "symlink";
|
|
@@ -2864,7 +3003,7 @@ var BridgeClient = class {
|
|
|
2864
3003
|
options.map((o) => String(o.optionId ?? ""))
|
|
2865
3004
|
);
|
|
2866
3005
|
allowedOptionIds.delete("");
|
|
2867
|
-
const requestId =
|
|
3006
|
+
const requestId = randomUUID2();
|
|
2868
3007
|
if (allowedOptionIds.has(CANCEL_VOTE_SENTINEL)) {
|
|
2869
3008
|
throw new CancelSentinelCollisionError(requestId, CANCEL_VOTE_SENTINEL);
|
|
2870
3009
|
}
|
|
@@ -4262,7 +4401,7 @@ var BridgeClient = class {
|
|
|
4262
4401
|
} catch {
|
|
4263
4402
|
}
|
|
4264
4403
|
}
|
|
4265
|
-
const tmp = `${realTarget}.${process.pid}.${Date.now()}.${
|
|
4404
|
+
const tmp = `${realTarget}.${process.pid}.${Date.now()}.${randomUUID2()}.tmp`;
|
|
4266
4405
|
let preserveMode;
|
|
4267
4406
|
try {
|
|
4268
4407
|
const targetStat = await fs2.stat(realTarget);
|
|
@@ -8088,7 +8227,7 @@ var DEFAULT_MAX_SESSIONS = 32;
|
|
|
8088
8227
|
var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
|
|
8089
8228
|
var CHAT_RECORD_UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
8090
8229
|
var MAX_EVENT_RING_SIZE = 1e6;
|
|
8091
|
-
var DEFAULT_PERMISSION_TIMEOUT_MS =
|
|
8230
|
+
var DEFAULT_PERMISSION_TIMEOUT_MS = 0;
|
|
8092
8231
|
var DEFAULT_MAX_PENDING_PER_SESSION = 64;
|
|
8093
8232
|
var DEFAULT_SESSION_REAP_INTERVAL_MS = 6e4;
|
|
8094
8233
|
var DEFAULT_SESSION_IDLE_TIMEOUT_MS = 30 * 6e4;
|
|
@@ -8150,7 +8289,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8150
8289
|
);
|
|
8151
8290
|
}
|
|
8152
8291
|
}, "releaseFreshSessionReservation");
|
|
8153
|
-
const sessionCatalogGeneration =
|
|
8292
|
+
const sessionCatalogGeneration = randomUUID3();
|
|
8154
8293
|
let sessionCatalogRevision = 0;
|
|
8155
8294
|
const getSessionCatalogVersion = /* @__PURE__ */ __name(() => ({
|
|
8156
8295
|
generation: sessionCatalogGeneration,
|
|
@@ -8363,7 +8502,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8363
8502
|
return true;
|
|
8364
8503
|
}
|
|
8365
8504
|
const holds = response["holds"];
|
|
8366
|
-
if (Array.isArray(holds)) {
|
|
8505
|
+
if (Array.isArray(holds) && holds.length <= ACTIVE_WORK_MAX_SESSION_HOLDS) {
|
|
8367
8506
|
const adopted = /* @__PURE__ */ new Map();
|
|
8368
8507
|
for (const hold of holds) {
|
|
8369
8508
|
if (typeof hold !== "object" || hold === null) continue;
|
|
@@ -8452,6 +8591,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8452
8591
|
__name(channelUnavailableReject, "channelUnavailableReject");
|
|
8453
8592
|
async function killChannelWithLog(ci, context) {
|
|
8454
8593
|
ci.isDying = true;
|
|
8594
|
+
ci.channelLiveness?.stop();
|
|
8455
8595
|
await ci.channel.kill().catch((err) => {
|
|
8456
8596
|
writeStderrLine(
|
|
8457
8597
|
`qwen serve: channel kill failed${context ? ` (${context})` : ""}: ${String(err)}`
|
|
@@ -8552,6 +8692,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8552
8692
|
if (!channelShouldReapWhenIdle(ci) || !hasNoChannelWork(ci)) return;
|
|
8553
8693
|
ci.emptyReapPending = false;
|
|
8554
8694
|
ci.isDying = true;
|
|
8695
|
+
ci.channelLiveness?.stop();
|
|
8555
8696
|
await ci.channel.kill().catch(() => {
|
|
8556
8697
|
});
|
|
8557
8698
|
}
|
|
@@ -8746,7 +8887,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8746
8887
|
return limits;
|
|
8747
8888
|
}, "journalSessionLimits");
|
|
8748
8889
|
const unregisterJournalGrowthSessionLimits = journalGrowthPolicy !== void 0 && opts.registerJournalGrowthSessionLimits !== void 0 ? opts.registerJournalGrowthSessionLimits(journalSessionLimits) : void 0;
|
|
8749
|
-
const createClientId = /* @__PURE__ */ __name(() => `client_${
|
|
8890
|
+
const createClientId = /* @__PURE__ */ __name(() => `client_${randomUUID3()}`, "createClientId");
|
|
8750
8891
|
const registerClient = /* @__PURE__ */ __name((entry, requestedClientId) => {
|
|
8751
8892
|
if (requestedClientId && entry.clientIds.has(requestedClientId)) {
|
|
8752
8893
|
entry.clientIds.set(
|
|
@@ -8805,7 +8946,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8805
8946
|
if (inFlightChannelSpawn) return await inFlightChannelSpawn;
|
|
8806
8947
|
const promise = (async () => {
|
|
8807
8948
|
const privateParentCapability = randomBytes(32).toString("base64url");
|
|
8808
|
-
const acpChannelId =
|
|
8949
|
+
const acpChannelId = randomUUID3();
|
|
8809
8950
|
const channel = await telemetry.withSpan(
|
|
8810
8951
|
"channel.spawn",
|
|
8811
8952
|
{
|
|
@@ -8991,6 +9132,7 @@ function createAcpSessionBridge(opts) {
|
|
|
8991
9132
|
info.transportFailed = true;
|
|
8992
9133
|
info.transportFailureCode = safeTransportFailureCode(error);
|
|
8993
9134
|
info.isDying = true;
|
|
9135
|
+
info.channelLiveness?.stop();
|
|
8994
9136
|
clearInFlightExtensionRefreshes(info.connection);
|
|
8995
9137
|
}, "markTransportFailed");
|
|
8996
9138
|
void channel.transportFailed?.then(
|
|
@@ -9004,6 +9146,7 @@ function createAcpSessionBridge(opts) {
|
|
|
9004
9146
|
);
|
|
9005
9147
|
}
|
|
9006
9148
|
void channel.exited.then((exitInfo) => {
|
|
9149
|
+
info.channelLiveness?.stop();
|
|
9007
9150
|
clearInFlightExtensionRefreshes(info.connection);
|
|
9008
9151
|
if (channelInfo === info) cancelIdleTimer();
|
|
9009
9152
|
if (info.workspaceMcpDiscoveryTimer) {
|
|
@@ -9087,6 +9230,7 @@ function createAcpSessionBridge(opts) {
|
|
|
9087
9230
|
sessEntry.events.close();
|
|
9088
9231
|
}
|
|
9089
9232
|
});
|
|
9233
|
+
let channelLivenessNegotiated = false;
|
|
9090
9234
|
try {
|
|
9091
9235
|
await telemetry.withSpan(
|
|
9092
9236
|
"channel.initialize",
|
|
@@ -9108,6 +9252,9 @@ function createAcpSessionBridge(opts) {
|
|
|
9108
9252
|
[CHANNEL_STARTUP_PROFILE_META_KEY]: {
|
|
9109
9253
|
v: CHANNEL_STARTUP_PROFILE_VERSION
|
|
9110
9254
|
},
|
|
9255
|
+
[CHANNEL_LIVENESS_META_KEY]: {
|
|
9256
|
+
v: CHANNEL_LIVENESS_VERSION
|
|
9257
|
+
},
|
|
9111
9258
|
[PRIVATE_PARENT_CAPABILITY_META_KEY]: privateParentCapability
|
|
9112
9259
|
},
|
|
9113
9260
|
clientCapabilities: {
|
|
@@ -9144,6 +9291,8 @@ function createAcpSessionBridge(opts) {
|
|
|
9144
9291
|
seq: 0
|
|
9145
9292
|
};
|
|
9146
9293
|
}
|
|
9294
|
+
const channelLivenessCapability = isRecord3(response._meta) ? response._meta[CHANNEL_LIVENESS_META_KEY] : void 0;
|
|
9295
|
+
channelLivenessNegotiated = isRecord3(channelLivenessCapability) && channelLivenessCapability["v"] === CHANNEL_LIVENESS_VERSION;
|
|
9147
9296
|
try {
|
|
9148
9297
|
const attributes = getChannelStartupProfileAttributes(
|
|
9149
9298
|
response,
|
|
@@ -9177,6 +9326,33 @@ function createAcpSessionBridge(opts) {
|
|
|
9177
9326
|
}
|
|
9178
9327
|
channelInfo = info;
|
|
9179
9328
|
info.handshakeComplete = true;
|
|
9329
|
+
if (channelLivenessNegotiated) {
|
|
9330
|
+
const failChannelLiveness = /* @__PURE__ */ __name((error) => {
|
|
9331
|
+
if (info.isDying || !aliveChannels.has(info)) return;
|
|
9332
|
+
markTransportFailed(error);
|
|
9333
|
+
telemetry.event("channel.liveness_failed", {
|
|
9334
|
+
"qwen-code.daemon.acp_channel.id": info.id,
|
|
9335
|
+
"qwen-code.daemon.channel.session_count": info.sessionIds.size,
|
|
9336
|
+
"qwen-code.daemon.channel.transport_error_code": error.code
|
|
9337
|
+
});
|
|
9338
|
+
writeStderrLine(
|
|
9339
|
+
`qwen serve: channel liveness failed (${error.code}); killing channel`
|
|
9340
|
+
);
|
|
9341
|
+
if (info.channel.transportGuard) {
|
|
9342
|
+
info.channel.transportGuard.fail(error);
|
|
9343
|
+
} else {
|
|
9344
|
+
void killChannelWithLog(info, "channel liveness failure");
|
|
9345
|
+
}
|
|
9346
|
+
}, "failChannelLiveness");
|
|
9347
|
+
info.channelLiveness = startChannelLivenessMonitor({
|
|
9348
|
+
probe: /* @__PURE__ */ __name((nonce) => info.connection.extMethod(SERVE_STATUS_EXT_METHODS.channelPing, {
|
|
9349
|
+
v: CHANNEL_LIVENESS_VERSION,
|
|
9350
|
+
nonce
|
|
9351
|
+
}), "probe"),
|
|
9352
|
+
onFailure: failChannelLiveness,
|
|
9353
|
+
isActive: /* @__PURE__ */ __name(() => channelInfo === info && aliveChannels.has(info) && !info.isDying && !shuttingDown, "isActive")
|
|
9354
|
+
});
|
|
9355
|
+
}
|
|
9180
9356
|
telemetry.metrics?.channelLifecycle("spawn");
|
|
9181
9357
|
return info;
|
|
9182
9358
|
})();
|
|
@@ -9258,6 +9434,7 @@ function createAcpSessionBridge(opts) {
|
|
|
9258
9434
|
} catch (err) {
|
|
9259
9435
|
if (hasNoChannelWork(ci, { ignoreCurrentSessionSpawn: true })) {
|
|
9260
9436
|
ci.isDying = true;
|
|
9437
|
+
ci.channelLiveness?.stop();
|
|
9261
9438
|
await ci.channel.kill().catch(() => {
|
|
9262
9439
|
});
|
|
9263
9440
|
} else {
|
|
@@ -10517,7 +10694,7 @@ function createAcpSessionBridge(opts) {
|
|
|
10517
10694
|
const maybeFireRestoreAskUserQuestionPrompt = /* @__PURE__ */ __name((entry, restoreAskUserQuestionHint, requestedClientId, registeredClientId, options) => {
|
|
10518
10695
|
if (opts.restoreAskUserQuestion !== true || restoreAskUserQuestionHint !== true || // Nobody can answer the re-hung question without an attached client;
|
|
10519
10696
|
// internal restores (boot rehydrate, keepalive, sub-session resume)
|
|
10520
|
-
// pass no clientId and must not fabricate
|
|
10697
|
+
// pass no clientId and must not fabricate an unbounded permission wait.
|
|
10521
10698
|
requestedClientId === void 0 || options.suppressRestorePrompt === true || // Admission-time busy check: pendingPromptCount flips synchronously
|
|
10522
10699
|
// when a prompt is accepted, before the queue callback sets
|
|
10523
10700
|
// promptActive; Goal turns never set promptActive at all.
|
|
@@ -11788,7 +11965,7 @@ function createAcpSessionBridge(opts) {
|
|
|
11788
11965
|
req.branch,
|
|
11789
11966
|
req.sessionId
|
|
11790
11967
|
);
|
|
11791
|
-
const tracker = effectiveScope === "single" ? workspaceKey : `${workspaceKey}#${
|
|
11968
|
+
const tracker = effectiveScope === "single" ? workspaceKey : `${workspaceKey}#${randomUUID3()}`;
|
|
11792
11969
|
inFlightSpawns.set(tracker, promise);
|
|
11793
11970
|
try {
|
|
11794
11971
|
return await promise;
|
|
@@ -11850,7 +12027,7 @@ function createAcpSessionBridge(opts) {
|
|
|
11850
12027
|
promptSlotReleased = true;
|
|
11851
12028
|
entry.pendingPromptCount = Math.max(0, entry.pendingPromptCount - 1);
|
|
11852
12029
|
}, "releasePromptSlot");
|
|
11853
|
-
const promptId = context?.promptId ??
|
|
12030
|
+
const promptId = context?.promptId ?? randomUUID3();
|
|
11854
12031
|
const invocationContext = Object.freeze({
|
|
11855
12032
|
version: 1,
|
|
11856
12033
|
sessionId,
|
|
@@ -13587,7 +13764,7 @@ function createAcpSessionBridge(opts) {
|
|
|
13587
13764
|
const info = channelInfoForEntry(entry);
|
|
13588
13765
|
if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
|
|
13589
13766
|
resolveTrustedClientId(entry, context?.clientId);
|
|
13590
|
-
const requestId =
|
|
13767
|
+
const requestId = randomUUID3();
|
|
13591
13768
|
const queue = new GenerationStreamQueue(
|
|
13592
13769
|
GENERATION_STREAM_QUEUE_CAPACITY
|
|
13593
13770
|
);
|
|
@@ -13739,9 +13916,9 @@ function createAcpSessionBridge(opts) {
|
|
|
13739
13916
|
resolveTrustedClientId(entry, context?.clientId);
|
|
13740
13917
|
return await entry.attachments.remove(attachmentId);
|
|
13741
13918
|
},
|
|
13742
|
-
async deleteSessionAttachments(sessionId) {
|
|
13919
|
+
async deleteSessionAttachments(sessionId, options) {
|
|
13743
13920
|
const store = byId.get(sessionId)?.attachments ?? new SessionAttachmentStore(opts.sessionAttachmentsRoot, sessionId);
|
|
13744
|
-
await store.delete();
|
|
13921
|
+
await store.delete(options);
|
|
13745
13922
|
},
|
|
13746
13923
|
removePendingPrompt(sessionId, promptId, context) {
|
|
13747
13924
|
const entry = byId.get(sessionId);
|
|
@@ -13853,7 +14030,7 @@ function createAcpSessionBridge(opts) {
|
|
|
13853
14030
|
return { accepted: false };
|
|
13854
14031
|
}
|
|
13855
14032
|
}
|
|
13856
|
-
const messageId = requestedMessageId ??
|
|
14033
|
+
const messageId = requestedMessageId ?? randomUUID3();
|
|
13857
14034
|
if (entry.pendingPromptCount === 0 && entry.goalTurnActive !== true) {
|
|
13858
14035
|
if (options?.queueOnly || options?.rejectIfIdle) {
|
|
13859
14036
|
writeStderrLine(
|
|
@@ -14500,7 +14677,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14500
14677
|
]);
|
|
14501
14678
|
},
|
|
14502
14679
|
generateWorkspaceContent(prompt, signal, _originatorClientId) {
|
|
14503
|
-
const requestId =
|
|
14680
|
+
const requestId = randomUUID3();
|
|
14504
14681
|
const queue = new GenerationStreamQueue(
|
|
14505
14682
|
GENERATION_STREAM_QUEUE_CAPACITY
|
|
14506
14683
|
);
|
|
@@ -14786,6 +14963,7 @@ function createAcpSessionBridge(opts) {
|
|
|
14786
14963
|
});
|
|
14787
14964
|
}
|
|
14788
14965
|
for (const info of channels) {
|
|
14966
|
+
info.channelLiveness?.stop();
|
|
14789
14967
|
try {
|
|
14790
14968
|
info.channel.killSync();
|
|
14791
14969
|
} catch {
|
|
@@ -14808,7 +14986,10 @@ function createAcpSessionBridge(opts) {
|
|
|
14808
14986
|
stopSessionReaper();
|
|
14809
14987
|
const entries = Array.from(byId.values());
|
|
14810
14988
|
const channels = Array.from(aliveChannels);
|
|
14811
|
-
for (const ci of channels)
|
|
14989
|
+
for (const ci of channels) {
|
|
14990
|
+
ci.isDying = true;
|
|
14991
|
+
ci.channelLiveness?.stop();
|
|
14992
|
+
}
|
|
14812
14993
|
for (const e of entries) {
|
|
14813
14994
|
permissionMediator.forgetSession(e.sessionId);
|
|
14814
14995
|
e.pendingPermissionIds.clear();
|