@qwen-code/qwen-code 0.22.3-nightly.20260831.3a0c4c6108 → 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.
Files changed (381) hide show
  1. package/README.md +30 -0
  2. package/bundled/computer-use/SKILL.md +116 -180
  3. package/bundled/goal-draft/SKILL.md +5 -1
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +4 -0
  5. package/bundled/qc-helper/docs/configuration/settings.md +53 -50
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +4 -2
  8. package/bundled/qc-helper/docs/features/channels/dws.md +6 -2
  9. package/bundled/qc-helper/docs/features/channels/overview.md +1 -0
  10. package/bundled/qc-helper/docs/features/commands.md +38 -1
  11. package/bundled/qc-helper/docs/features/computer-use.md +2 -2
  12. package/bundled/qc-helper/docs/features/goals.md +9 -3
  13. package/bundled/qc-helper/docs/features/headless.md +16 -1
  14. package/bundled/qc-helper/docs/features/hooks.md +2 -1
  15. package/bundled/qc-helper/docs/features/output-styles.md +38 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +15 -0
  17. package/bundled/review/SKILL.md +5 -5
  18. package/bundled/review/references/posting.md +2 -2
  19. package/chunks/{MaxSizedBox-IHRTWGSY.js → MaxSizedBox-B3D7545A.js} +41 -45
  20. package/chunks/{StandaloneSessionPicker-TLVWVTJ7.js → StandaloneSessionPicker-QUMO4LLQ.js} +64 -67
  21. package/chunks/{acpAgent-7I5LLPP3.js → acpAgent-2GTFCIEP.js} +771 -248
  22. package/chunks/{agent-4Z4NTJXD.js → agent-XKF5SZWU.js} +26 -30
  23. package/chunks/{agent-headless-TVUJXQWU.js → agent-headless-OC2IB55D.js} +26 -30
  24. package/chunks/{anthropicContentGenerator-VSSPG7XV.js → anthropicContentGenerator-L76MR5OR.js} +14 -14
  25. package/chunks/{artifact-tool-TEYW6I4A.js → artifact-tool-MYCL2QCS.js} +2 -3
  26. package/chunks/{askUserQuestion-PYNBWV63.js → askUserQuestion-THQZMG44.js} +2 -2
  27. package/chunks/{bridge-EVURP4NO.js → bridge-IHSBI2YJ.js} +42 -46
  28. package/chunks/{build-INBK7IXX.js → build-63BIOYWK.js} +1 -1
  29. package/chunks/{channel-management-service-IDBNYSFW.js → channel-management-service-4MTCEGJB.js} +4 -4
  30. package/chunks/{channel-settings-store-MZNXRKVI.js → channel-settings-store-BVKWAI2T.js} +50 -54
  31. package/chunks/{channel-worker-group-ZLP5SJHT.js → channel-worker-group-47F4ISUZ.js} +6 -6
  32. package/chunks/{channel-worker-manager-FG5377T2.js → channel-worker-manager-I5Y44GYR.js} +50 -9
  33. package/chunks/{channel-worker-supervisor-HDVE4ADS.js → channel-worker-supervisor-6VCLUXFE.js} +4 -4
  34. package/chunks/{chunk-3452WXOK.js → chunk-2M3EWQNG.js} +17 -0
  35. package/chunks/{chunk-HDMKCJHI.js → chunk-32LU3APX.js} +1 -1
  36. package/chunks/{chunk-BSJOBW4U.js → chunk-37JFWFCD.js} +1 -1
  37. package/chunks/{chunk-AN3KFCNH.js → chunk-3JQZVCBI.js} +2 -2
  38. package/chunks/{chunk-RGEV5AUD.js → chunk-3L724BJ5.js} +11 -8
  39. package/chunks/{chunk-GCUR24KK.js → chunk-47RYEQW5.js} +2 -2
  40. package/chunks/{chunk-CM4F4JBB.js → chunk-4BGDFKQE.js} +5 -5
  41. package/chunks/{chunk-ZBDYI7VM.js → chunk-4F7GQGXB.js} +10961 -4033
  42. package/chunks/{chunk-JMRE4WJQ.js → chunk-4HVH57J3.js} +81 -17
  43. package/chunks/{chunk-26SIKQIC.js → chunk-4LIFGNI4.js} +1 -1
  44. package/chunks/{chunk-U5RTYI7D.js → chunk-4M24B5J5.js} +13 -13
  45. package/chunks/{chunk-7XICSE62.js → chunk-4PSDSCW3.js} +3 -3
  46. package/chunks/{chunk-AYYKUUKP.js → chunk-4UANMABT.js} +73 -19
  47. package/chunks/{chunk-GS7XT345.js → chunk-54C6PIGT.js} +3 -3
  48. package/chunks/{chunk-UKB2TZAO.js → chunk-5EIOJGCR.js} +4 -4
  49. package/chunks/{chunk-64REQJJ2.js → chunk-5H5S4UY5.js} +3 -3
  50. package/chunks/chunk-5IENVM7Z.js +35 -0
  51. package/chunks/{chunk-JOWQD4LO.js → chunk-5Q5RC2WE.js} +1 -1
  52. package/chunks/{chunk-3NQCZMUB.js → chunk-5RTTI4GE.js} +73 -73
  53. package/chunks/{chunk-J4Y3QJHF.js → chunk-64QH2UC6.js} +11 -1
  54. package/chunks/{chunk-I75VKFCJ.js → chunk-65HWLGA7.js} +1 -1
  55. package/chunks/{chunk-W7KWB6AH.js → chunk-6A2D4QSO.js} +8 -5
  56. package/chunks/{chunk-OTTNXUT5.js → chunk-7IKXTGZT.js} +1 -1
  57. package/chunks/{chunk-LYSZVCCD.js → chunk-7JMGTOH7.js} +427 -129
  58. package/chunks/{chunk-YOFULAHO.js → chunk-7RB56BRJ.js} +3 -3
  59. package/chunks/{chunk-6VHIWUJP.js → chunk-ADYN7P2Y.js} +2 -2
  60. package/chunks/{chunk-7DDTI7Q3.js → chunk-AHYTURFB.js} +1 -1
  61. package/chunks/{chunk-TNMOFNT4.js → chunk-ALUYNJPM.js} +1395 -2079
  62. package/chunks/{chunk-H2A2GJGL.js → chunk-AZJLY2XZ.js} +5 -5
  63. package/chunks/{chunk-BE5FGT5Z.js → chunk-BA4WJC4L.js} +1 -1
  64. package/chunks/{chunk-H5GPPDGY.js → chunk-BFY33IB4.js} +16 -8
  65. package/chunks/{chunk-RY7DL5IF.js → chunk-BJXCYUGM.js} +1 -1
  66. package/chunks/{chunk-ND7TQQPE.js → chunk-C2VWOXHS.js} +6 -6
  67. package/chunks/{chunk-T4RMUTTT.js → chunk-C4TIXFDZ.js} +2 -2
  68. package/chunks/{chunk-B2RIIK3K.js → chunk-CVX63TFJ.js} +3 -1
  69. package/chunks/{chunk-SMJYTKTB.js → chunk-DQCKVAF5.js} +1 -1
  70. package/chunks/{chunk-RLSPPTWH.js → chunk-DSX7KQPM.js} +438 -181
  71. package/chunks/{chunk-PNIGAVY6.js → chunk-DTVQSSNM.js} +2 -2
  72. package/chunks/{chunk-67AY5D3M.js → chunk-DYTW3QVG.js} +23 -8
  73. package/chunks/{chunk-3CZGSTZX.js → chunk-EBDGRBZX.js} +22 -14
  74. package/chunks/{chunk-DJBQCO2E.js → chunk-EFTPIZIC.js} +412 -3
  75. package/chunks/{chunk-QE7DTCLX.js → chunk-EIY7SUPZ.js} +1 -1
  76. package/chunks/{chunk-6OO7QEWV.js → chunk-EVFDRBUM.js} +97 -77
  77. package/chunks/{chunk-QTMPM6RC.js → chunk-EWRW2WQC.js} +3 -3
  78. package/chunks/{chunk-IIFL7QDN.js → chunk-F33GFWPR.js} +34 -11
  79. package/chunks/{chunk-YPISTYEI.js → chunk-F47DITLZ.js} +11 -1
  80. package/chunks/{chunk-OE5AQVNB.js → chunk-F7NF2IOE.js} +6 -6
  81. package/chunks/{chunk-RT4QNQ5P.js → chunk-FD5SJOWT.js} +8 -5
  82. package/chunks/{chunk-ACZ4YRYK.js → chunk-FRICLXCZ.js} +3 -3
  83. package/chunks/{chunk-IBMUI5EV.js → chunk-FUO5V5KI.js} +11 -4
  84. package/chunks/{chunk-T3TL6S3B.js → chunk-G5PBOQWI.js} +8 -5
  85. package/chunks/{chunk-D7D3HSYQ.js → chunk-G7HBEEX7.js} +12 -7
  86. package/chunks/{chunk-FXUSWLBF.js → chunk-GH2S4GD5.js} +133 -8
  87. package/chunks/{chunk-XPDKSOVW.js → chunk-GXUTFQXK.js} +42 -44
  88. package/chunks/{chunk-OSTQZIOY.js → chunk-H43PSPYS.js} +2 -2
  89. package/chunks/{chunk-UVYKCRJZ.js → chunk-HJBHMANB.js} +11 -13
  90. package/chunks/{chunk-WLEYH7CD.js → chunk-HRPFBHW7.js} +4 -0
  91. package/chunks/{chunk-DBTMP3P4.js → chunk-I2TMJPCV.js} +1 -1
  92. package/chunks/{chunk-EU2B4P3D.js → chunk-I4NRYS6A.js} +4 -4
  93. package/chunks/{chunk-JPKTAQS3.js → chunk-I5N4EAS6.js} +1 -1
  94. package/chunks/{chunk-W4BDHLRT.js → chunk-IG4W5SJR.js} +2 -2
  95. package/chunks/{chunk-BXNKREX7.js → chunk-IPATA3T2.js} +2 -2
  96. package/chunks/{chunk-NKLP3DCK.js → chunk-IQAFKVXS.js} +1 -1
  97. package/chunks/{chunk-AYHQZBJ4.js → chunk-IRKQ4YYX.js} +3 -3
  98. package/chunks/{chunk-J3NNHTV6.js → chunk-J5TTWBZK.js} +6 -0
  99. package/chunks/{chunk-AVNATYLY.js → chunk-JJKNYRFY.js} +1 -1
  100. package/chunks/{chunk-ERHAMGAA.js → chunk-JR42V4UY.js} +1 -1
  101. package/chunks/{chunk-NT7LXVV5.js → chunk-JUARRUMA.js} +362 -1084
  102. package/chunks/{chunk-OKMDOATP.js → chunk-KEVYJSI4.js} +11 -11
  103. package/chunks/{chunk-AF3QB6OL.js → chunk-KGV55H53.js} +1 -1
  104. package/chunks/{chunk-SDCHI64N.js → chunk-KM3XVTMO.js} +10 -4
  105. package/chunks/{chunk-ERRJA23L.js → chunk-KMU3ZHH4.js} +1 -1
  106. package/chunks/chunk-KOGW3YWJ.js +2054 -0
  107. package/chunks/{chunk-6NWPR2EB.js → chunk-L26ONV2Y.js} +5 -5
  108. package/chunks/chunk-L34XSHIZ.js +28 -0
  109. package/chunks/{chunk-UXEW7TQS.js → chunk-LB3WQQJK.js} +1 -1
  110. package/chunks/{chunk-YNG7XAJU.js → chunk-LEPCWS5A.js} +1 -1
  111. package/chunks/{chunk-XLENZQXH.js → chunk-LHBNR6EU.js} +2 -2
  112. package/chunks/{chunk-AKNQMSL2.js → chunk-LOBDDFYK.js} +4 -28
  113. package/chunks/{chunk-L6CUJZDG.js → chunk-LU77UT4D.js} +2 -2
  114. package/chunks/{chunk-3EGEBDTW.js → chunk-M4KFODIP.js} +1 -1
  115. package/chunks/{chunk-JLSZT354.js → chunk-M4LBBSVP.js} +2 -0
  116. package/chunks/{chunk-YOMKOM7E.js → chunk-MP6YZ4RK.js} +6580 -5992
  117. package/chunks/chunk-N2TNM3QB.js +9 -0
  118. package/chunks/{chunk-GDXSXL3H.js → chunk-NFIDVZND.js} +1 -1
  119. package/chunks/{chunk-NT5XIL5H.js → chunk-NQ4L2CMD.js} +51 -6
  120. package/chunks/{chunk-OQYXJK2V.js → chunk-NRL5CUZT.js} +1 -1
  121. package/chunks/{chunk-FIWZOMBF.js → chunk-NSUKQ4DN.js} +6 -0
  122. package/chunks/chunk-NUHOLAQ6.js +59 -0
  123. package/chunks/{chunk-BBYTY46C.js → chunk-NVVJTUSL.js} +266 -105
  124. package/chunks/{chunk-CAZADEU7.js → chunk-NXKOVOM5.js} +9 -9
  125. package/chunks/{chunk-5Q372OFJ.js → chunk-O4KNCAX4.js} +57 -10
  126. package/chunks/{chunk-GOXKNSDZ.js → chunk-O5CD7T4T.js} +40 -9
  127. package/chunks/{chunk-XIQ5HQ2F.js → chunk-OBTWL6ZW.js} +1 -1
  128. package/chunks/{chunk-5MK45KZ3.js → chunk-OHOO527W.js} +1 -1
  129. package/chunks/{chunk-CETB5XY4.js → chunk-ORFIYTI2.js} +1 -1
  130. package/chunks/{chunk-7E7UCJHS.js → chunk-OSHQMOBS.js} +18 -17
  131. package/chunks/{chunk-YDQ4OCDK.js → chunk-OSSTATJF.js} +89 -1
  132. package/chunks/chunk-P6UIF2OW.js +400 -0
  133. package/chunks/{chunk-V4HN35IF.js → chunk-PCRBLMIN.js} +16 -2
  134. package/chunks/{chunk-L2OKAIUK.js → chunk-QI27MKNQ.js} +23 -15
  135. package/chunks/{chunk-FHPYRXRH.js → chunk-QJGYU5PG.js} +1 -1
  136. package/chunks/{chunk-IVUWTA2D.js → chunk-QJVZLILI.js} +1 -1
  137. package/chunks/{chunk-TBJ3SNS3.js → chunk-QKDNS6FU.js} +1 -1
  138. package/chunks/{chunk-YKADANK6.js → chunk-QQD2GART.js} +10 -3
  139. package/chunks/{chunk-ED7DD7MV.js → chunk-RAFQIHN2.js} +1 -1
  140. package/chunks/{chunk-TV7BJ7TX.js → chunk-RJUVTJEZ.js} +1 -1
  141. package/chunks/{chunk-RVCGAHC7.js → chunk-RM4WT2XB.js} +4 -4
  142. package/chunks/{chunk-6YXNJXQW.js → chunk-RN3YGDCA.js} +3 -3
  143. package/chunks/{chunk-SMRDCANI.js → chunk-S6H3ELPG.js} +1 -1
  144. package/chunks/{chunk-MBZ5ORJB.js → chunk-SI7WDR3U.js} +281 -2
  145. package/chunks/{chunk-5FGWVPCM.js → chunk-SRF4KTAG.js} +4 -4
  146. package/chunks/{chunk-LFAR7CPW.js → chunk-STCVJXQB.js} +23 -23
  147. package/chunks/{chunk-JDIO45X7.js → chunk-SULZPKTA.js} +1 -1
  148. package/chunks/{chunk-KUDI54QQ.js → chunk-SX2QIMJV.js} +5 -5
  149. package/chunks/{chunk-VYSZUQGU.js → chunk-TJYRTS4S.js} +2 -2
  150. package/chunks/{chunk-JOTYTYYW.js → chunk-TMKTOTMQ.js} +3 -3
  151. package/chunks/{chunk-FPMQT2YY.js → chunk-TQHPVKO6.js} +4 -4
  152. package/chunks/{chunk-GN422P4J.js → chunk-TSZSGQ3N.js} +1 -1
  153. package/chunks/{chunk-IXEZHTDR.js → chunk-U4DJ5XB3.js} +292 -38
  154. package/chunks/{chunk-MZ5A5PQW.js → chunk-UAKRDON5.js} +4 -4
  155. package/chunks/{chunk-NGKLMNWN.js → chunk-UM2FFKXN.js} +2 -2
  156. package/chunks/{chunk-5ICKESC3.js → chunk-UPFRILIL.js} +2 -2
  157. package/chunks/{chunk-RAEEQEC5.js → chunk-UUASLXHW.js} +54 -5
  158. package/chunks/chunk-V5U2NZNJ.js +29 -0
  159. package/chunks/{chunk-P5Y23G2L.js → chunk-V7RNNPGC.js} +1 -18
  160. package/chunks/{chunk-ZYPJ7HVZ.js → chunk-VBWD6C27.js} +1 -1
  161. package/chunks/{chunk-MJBHSZEJ.js → chunk-VNAYZAFX.js} +3 -3
  162. package/chunks/chunk-VPSIC437.js +780 -0
  163. package/chunks/{chunk-AAX236AR.js → chunk-VWTSRH6C.js} +52 -11
  164. package/chunks/{chunk-PDXYZBBQ.js → chunk-VYIUNFEA.js} +2 -2
  165. package/chunks/{chunk-BY24DZ4J.js → chunk-WP4AX3XD.js} +5 -7
  166. package/chunks/{chunk-X7C7KFWA.js → chunk-XLXAZLDR.js} +1 -1
  167. package/chunks/{chunk-ZQ3FKEWA.js → chunk-YPWZTR7F.js} +3 -3
  168. package/chunks/{chunk-IXHV5MIC.js → chunk-ZDFQGHZH.js} +1 -1
  169. package/chunks/chunk-ZJ2LM2SI.js +198 -0
  170. package/chunks/{chunk-PWR2NQBS.js → chunk-ZKFTS3OV.js} +3 -3
  171. package/chunks/{chunk-HMJ2P3SV.js → chunk-ZL4HFSL6.js} +91 -29
  172. package/chunks/{chunk-ID33ZRWH.js → chunk-ZTPGUFQV.js} +28 -6
  173. package/chunks/chunk-bdqvmfwv-ZTSOWAFE.js +17446 -0
  174. package/chunks/{config-utils-NNUPVGEC.js → config-utils-LVSYDLHZ.js} +42 -46
  175. package/chunks/{contextCommand-S3TPCDM5.js → contextCommand-TZD7UAJK.js} +40 -44
  176. package/chunks/{core-runtime-NASPCSQX.js → core-runtime-B4UKKIAQ.js} +42 -46
  177. package/chunks/{create-sub-session-36TNCHCP.js → create-sub-session-LUPWEUHR.js} +2 -2
  178. package/chunks/{create-sub-session-DS4BJLYZ.js → create-sub-session-NJ24B4US.js} +41 -44
  179. package/chunks/{cron-create-QXHTYUTO.js → cron-create-CRSPET3H.js} +1 -1
  180. package/chunks/{cron-delete-WV2BM42M.js → cron-delete-DB77SZTU.js} +1 -1
  181. package/chunks/{cron-list-7KVNBLZ7.js → cron-list-U2JNYWV6.js} +1 -1
  182. package/chunks/{daemon-UCVUHPJD.js → daemon-RKDGBFLK.js} +385 -19
  183. package/chunks/{daemon-git-worktree-guard-ATXVQPS3.js → daemon-git-worktree-guard-O2HPOBAB.js} +40 -44
  184. package/chunks/{daemon-status-provider-UI3GBTMO.js → daemon-status-provider-GRRVCJFW.js} +47 -51
  185. package/chunks/{daemon-trust-policy-SUCBJ2CA.js → daemon-trust-policy-YJL442BK.js} +46 -50
  186. package/chunks/{daemon-trust-policy-monitor-3LM5RQNS.js → daemon-trust-policy-monitor-JL7F4Y4Q.js} +46 -50
  187. package/chunks/{deferred-core-runtime-SCOJLVYG.js → deferred-core-runtime-S32AYVZI.js} +39 -43
  188. package/chunks/{devtools-JCG4K2NZ.js → devtools-VDRJYPZF.js} +1 -1
  189. package/chunks/{discovery-X2NV535U.js → discovery-TUM3ZQ6U.js} +2 -2
  190. package/chunks/{display-image-Z4VBQDEJ.js → display-image-73C7XNRK.js} +3 -3
  191. package/chunks/{dist-7WDZYMWV.js → dist-62OZ7QXB.js} +2 -2
  192. package/chunks/{dist-FLJLHASF.js → dist-EDHQIBYD.js} +7 -7
  193. package/chunks/{dist-S3BKCTWF.js → dist-GT64AAUR.js} +1 -1
  194. package/chunks/{dist-GPSRNVVP.js → dist-JVXT4VUJ.js} +2 -2
  195. package/chunks/{dist-LY66XNUL.js → dist-L6URO6CK.js} +3 -3
  196. package/chunks/{dist-5423MG3D.js → dist-LXFYIJNG.js} +734 -128
  197. package/chunks/{dist-SDKHGH5O.js → dist-PDGNRVPY.js} +4 -4
  198. package/chunks/{dist-WAUO5OMN.js → dist-QAF5DO3Y.js} +363 -73
  199. package/chunks/{dist-WIVVPE7M.js → dist-ZCJLKQSP.js} +1 -1
  200. package/chunks/{earlyInputCapture-INWJ2STR.js → earlyInputCapture-BBPCIVZG.js} +38 -42
  201. package/chunks/{edit-B7ZRRGAE.js → edit-SUGXY63Y.js} +26 -30
  202. package/chunks/{en-E4AYTX6H.js → en-2RATMNX7.js} +2 -0
  203. package/chunks/{enter-worktree-SPZHEETQ.js → enter-worktree-B6USKSIK.js} +5 -5
  204. package/chunks/{enterPlanMode-S554IKJ2.js → enterPlanMode-MDX4RVVL.js} +26 -30
  205. package/chunks/{environment-25ADH4Y6.js → environment-VN6RXDVN.js} +41 -45
  206. package/chunks/{errors-G2I6LFTW.js → errors-UEY36PIT.js} +40 -44
  207. package/chunks/{exit-worktree-AWUXAMAM.js → exit-worktree-DLQ73SJH.js} +8 -6
  208. package/chunks/{exitPlanMode-ZFH4OYPM.js → exitPlanMode-EPHIEDAA.js} +26 -30
  209. package/chunks/{fast-path-WZHVZ2ER.js → fast-path-Y73R42LV.js} +3 -3
  210. package/chunks/{fast-path-settings-NILM6QZL.js → fast-path-settings-MFUR3IWK.js} +3 -3
  211. package/chunks/{glob-UOVDMBUP.js → glob-DMGH7EZN.js} +27 -31
  212. package/chunks/goal-tools-3RF3PXCL.js +99 -0
  213. package/chunks/{grep-LHYJ5V2N.js → grep-AJVLCVXC.js} +2 -2
  214. package/chunks/{handleAutoUpdate-4MZ45DZY.js → handleAutoUpdate-HVWQT2AU.js} +42 -46
  215. package/chunks/{i18n-KWUEI4DS.js → i18n-5OR7NTRZ.js} +39 -43
  216. package/chunks/{image-gen-YZDVO5YS.js → image-gen-VOIDOHOB.js} +1 -1
  217. package/chunks/{initializer-2NBROGMG.js → initializer-JE5RQSOE.js} +46 -50
  218. package/chunks/{installationInfo-YKUSY3ZB.js → installationInfo-KO3CCSCK.js} +38 -42
  219. package/chunks/{list-W2WV3COM.js → list-3IORSFIY.js} +49 -53
  220. package/chunks/{list-agents-PMVMHNY7.js → list-agents-SBMONIUK.js} +3 -3
  221. package/chunks/{llm-NPPHLIJI.js → llm-K26SUDVK.js} +155 -99
  222. package/chunks/{llm-content-generator-YK3WN6XW.js → llm-content-generator-TT6EAUD4.js} +5 -6
  223. package/chunks/{loadedSettingsAdapter-2P7DFWUR.js → loadedSettingsAdapter-KLLFZF3M.js} +46 -50
  224. package/chunks/{loggingContentGenerator-QYYYGU6V.js → loggingContentGenerator-EYQBA4M4.js} +43 -47
  225. package/chunks/{loop-wakeup-EBM4F5MZ.js → loop-wakeup-QA6SHCZT.js} +2 -2
  226. package/chunks/{ls-F6TRX3DD.js → ls-HEJNCEYO.js} +1 -1
  227. package/chunks/{lsp-QYTOS2FI.js → lsp-WOQKNZP6.js} +1 -1
  228. package/chunks/{managed-npm-update-UMC4NBWW.js → managed-npm-update-HIJTODQT.js} +38 -42
  229. package/chunks/{mcp-OFI6XDP2.js → mcp-A2UEHETW.js} +46 -50
  230. package/chunks/{monitor-QX3BM3JY.js → monitor-DKNZQAB2.js} +28 -32
  231. package/chunks/{node-QKLNSZMX.js → node-UETAYMMO.js} +3 -3
  232. package/chunks/{nonInteractiveCli-NVRMD5MN.js → nonInteractiveCli-YA47F2F4.js} +86 -89
  233. package/chunks/{notebook-edit-AAILDPSV.js → notebook-edit-MGHTRL2D.js} +26 -30
  234. package/chunks/{openaiContentGenerator-53PB3CMN.js → openaiContentGenerator-ZJIEQ3ZJ.js} +15 -17
  235. package/chunks/{pidfile-5ACKG2LI.js → pidfile-ETHAZNMY.js} +38 -42
  236. package/chunks/{processUtils-2BCDO3DZ.js → processUtils-UY3SAJJZ.js} +2 -2
  237. package/chunks/{prompt-terminal-ledger-3RKW73A2.js → prompt-terminal-ledger-GZ747VYE.js} +39 -43
  238. package/chunks/{qwenContentGenerator-N4LLWDPH.js → qwenContentGenerator-VI4KATRY.js} +39 -43
  239. package/chunks/{read-file-DPAKXHYE.js → read-file-P7F4P7LV.js} +6 -8
  240. package/chunks/{read-mcp-resource-R4NO75DW.js → read-mcp-resource-GLAGB6R7.js} +1 -1
  241. package/chunks/{record-artifact-2EAYLAL5.js → record-artifact-SWVR7NSU.js} +3 -3
  242. package/chunks/renderer-selection-M4UN63VJ.js +99 -0
  243. package/chunks/{report-findings-Y4MSHDS3.js → report-findings-AL5YW3KI.js} +4 -4
  244. package/chunks/{request-shutdown-DWRMGTMB.js → request-shutdown-5YK4IZ54.js} +5 -5
  245. package/chunks/{resumeHistoryUtils-3JQORXAK.js → resumeHistoryUtils-DPZKFW24.js} +44 -48
  246. package/chunks/{ripGrep-AHF5QCI7.js → ripGrep-C7LJKUPZ.js} +9 -11
  247. package/chunks/{run-qwen-serve-3LKV7KDC.js → run-qwen-serve-OGTEEUR2.js} +132 -81
  248. package/chunks/{runtime-66F4W3IA.js → runtime-LNBLEMZS.js} +51 -55
  249. package/chunks/{scheduled-tasks-2NVKS5Q2.js → scheduled-tasks-FLDYZQOF.js} +44 -48
  250. package/chunks/{scheduler-JNV7T3ZO.js → scheduler-73YXGUGW.js} +40 -44
  251. package/chunks/{sdk-exporters-grpc-G5IT4XS4.js → sdk-exporters-grpc-MXTVSE3C.js} +2 -2
  252. package/chunks/{sdk-exporters-http-MFIWD23D.js → sdk-exporters-http-3JO5TJNU.js} +3 -3
  253. package/chunks/{sdk-impl-2RXJ4Q6X.js → sdk-impl-HZAUUTHJ.js} +5 -5
  254. package/chunks/{send-message-WPZRCJOB.js → send-message-JC7NJTY6.js} +7 -7
  255. package/chunks/{serve-GP2UNRP7.js → serve-3UR2H4CV.js} +46 -50
  256. package/chunks/{server-7W6C3SOW.js → server-AOYZVVOM.js} +1736 -502
  257. package/chunks/{session-PZLBAQGG.js → session-UAWFNFGI.js} +90 -93
  258. package/chunks/session-attachments-root-ZCGXQQTR.js +104 -0
  259. package/chunks/{session-pr-refresh-OIVL3U3Z.js → session-pr-refresh-CT2INROL.js} +131 -65
  260. package/chunks/{settings-ZOHIQWYK.js → settings-BHRGDASJ.js} +45 -49
  261. package/chunks/{shell-FWZT6IUR.js → shell-YHOGC7TO.js} +26 -30
  262. package/chunks/{skill-RTQC2YGA.js → skill-ZGBKNCHQ.js} +71 -49
  263. package/chunks/{skill-settings-AKMIXFSJ.js → skill-settings-AKSP665O.js} +45 -49
  264. package/chunks/{spawnChannel-ZP23JL6O.js → spawnChannel-N25MBB6F.js} +40 -44
  265. package/chunks/{standalone-update-P2Q5H4ZU.js → standalone-update-XGPWJDRN.js} +40 -44
  266. package/chunks/start-opentui-ui-FZ4USOU7.js +55342 -0
  267. package/chunks/{startInteractiveUI-NSA6QPQZ.js → startInteractiveUI-E2WQJUOA.js} +2920 -4542
  268. package/chunks/{syntheticOutput-5URSQLIS.js → syntheticOutput-HJNZSEHN.js} +2 -2
  269. package/chunks/{task-create-3EXVDG3G.js → task-create-6RSD54S5.js} +7 -7
  270. package/chunks/{task-list-PIBYNSE7.js → task-list-IQSACPOM.js} +31 -7
  271. package/chunks/{task-stop-IV3BYWJC.js → task-stop-HE2LRQNW.js} +1 -1
  272. package/chunks/{task-update-H5BPDS5Y.js → task-update-XAJ2NYOA.js} +7 -7
  273. package/chunks/{team-create-53T42W37.js → team-create-SOKMYSQU.js} +28 -32
  274. package/chunks/{team-delete-X3WPELS6.js → team-delete-NGNNKGMG.js} +1 -1
  275. package/chunks/{team-plan-approval-D45ZC5OE.js → team-plan-approval-U7ZWXYAY.js} +26 -30
  276. package/chunks/{terminal-image-renderer-FCRUWT6C.js → terminal-image-renderer-KKM4OBLO.js} +40 -44
  277. package/chunks/{theme-manager-MHNPEDP7.js → theme-manager-GQHF3A7T.js} +38 -42
  278. package/chunks/{todoWrite-A5IOZZ3P.js → todoWrite-5UTVUXHA.js} +36 -6
  279. package/chunks/{tool-search-6RPBGGUX.js → tool-search-IAI2RVWT.js} +10 -12
  280. package/chunks/{total-session-admission-MGV56XDK.js → total-session-admission-G4CGCSTG.js} +43 -47
  281. package/chunks/{trustedFolders-QJYEFMTU.js → trustedFolders-D2I3FDPB.js} +39 -43
  282. package/chunks/{update-relaunch-ZDMQX63C.js → update-relaunch-5RWKZAL3.js} +5 -5
  283. package/chunks/{updateCheck-4QZWCGP6.js → updateCheck-ZXOQDFEI.js} +42 -46
  284. package/chunks/{useAutoAcceptIndicator-DLIQN256.js → useAutoAcceptIndicator-6EK4QGAH.js} +49 -53
  285. package/chunks/{validateNonInterActiveAuth-HGTG7AEK.js → validateNonInterActiveAuth-QPFEKATS.js} +82 -86
  286. package/chunks/{version-CPAZMC4B.js → version-JKNG7YDH.js} +1 -1
  287. package/chunks/{web-fetch-N4K5M3M4.js → web-fetch-X3AHIIHW.js} +8 -11
  288. package/chunks/{web-search-4VZKM5SF.js → web-search-K2FMOGS5.js} +6 -7
  289. package/chunks/{web-shell-static-PW7OEDQO.js → web-shell-static-POZHGGXE.js} +4 -4
  290. package/chunks/{workflow-2ALQKTHG.js → workflow-TOLPAK5G.js} +38 -38
  291. package/chunks/{workspace-providers-status-5JM4CB6R.js → workspace-providers-status-PCJK3RC7.js} +50 -54
  292. package/chunks/{workspace-registration-store-RNMFVCH7.js → workspace-registration-store-KQWVVW4Y.js} +1 -1
  293. package/chunks/{workspace-registry-6EULAPZC.js → workspace-registry-YNIOB6HJ.js} +43 -47
  294. package/chunks/{workspace-runtime-coordinator-IRI2DRCJ.js → workspace-runtime-coordinator-WG2RNEN7.js} +43 -47
  295. package/chunks/{workspace-service-SETHN4WE.js → workspace-service-G4ZNBOFH.js} +51 -55
  296. package/chunks/{workspace-skills-status-4D4EUEQU.js → workspace-skills-status-FMTPPMWC.js} +47 -51
  297. package/chunks/{workspace-trust-reconciler-4LR3CDL4.js → workspace-trust-reconciler-IBDFQBQS.js} +53 -57
  298. package/chunks/wrapper-JH3IFHT2.js +35 -0
  299. package/chunks/{write-file-45GWPSOI.js → write-file-YTLFY2S5.js} +28 -32
  300. package/chunks/{zh-2BQ7P6OD.js → zh-25DF7OGK.js} +2 -0
  301. package/chunks/{zh-TW-UFXRZTXX.js → zh-TW-5EDMZVGK.js} +2 -0
  302. package/chunks/{zoom-image-K6IQUKRC.js → zoom-image-IFXSN74N.js} +6 -8
  303. package/cli.js +17 -13
  304. package/locales/en.js +3 -0
  305. package/locales/zh-TW.js +3 -0
  306. package/locales/zh.js +3 -0
  307. package/package.json +3 -3
  308. package/web-shell/assets/{abnfDiagram-VCTEODGH-C80OZcPP.js → abnfDiagram-VCTEODGH-Cxf7xE_Z.js} +1 -1
  309. package/web-shell/assets/{arc-AUqStYgf.js → arc-ESi1eNkE.js} +1 -1
  310. package/web-shell/assets/{architectureDiagram-5GKGNRK7-CQYOdYla.js → architectureDiagram-5GKGNRK7-D9l7-bDo.js} +1 -1
  311. package/web-shell/assets/{blockDiagram-NRAW4CY4-lYKlFysy.js → blockDiagram-NRAW4CY4-Bc8DEasw.js} +1 -1
  312. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BoS23iIp.js → c4Diagram-UCG6FXSJ-Dimb2Hmh.js} +1 -1
  313. package/web-shell/assets/channel-B7ohGDil.js +1 -0
  314. package/web-shell/assets/{chunk-2Q5K7J3B-DLLooL1E.js → chunk-2Q5K7J3B-jVDmOpAQ.js} +1 -1
  315. package/web-shell/assets/{chunk-5VM5RSS4-kPfJxScY.js → chunk-5VM5RSS4-DbG_SwdB.js} +1 -1
  316. package/web-shell/assets/{chunk-F27PBJKO-CVGFBqkD.js → chunk-F27PBJKO-QEc4cY1v.js} +1 -1
  317. package/web-shell/assets/{chunk-G27WJ6UU-CnM_kOVV.js → chunk-G27WJ6UU-iJ36lQ3X.js} +1 -1
  318. package/web-shell/assets/{chunk-JWPE2WC7-Cj-ajOkT.js → chunk-JWPE2WC7-DuArnVtF.js} +1 -1
  319. package/web-shell/assets/{chunk-LCL6LL3I-8L5c-wFo.js → chunk-LCL6LL3I-DxOf1zwL.js} +1 -1
  320. package/web-shell/assets/{chunk-POPQ4Y6H-DsXTxpvL.js → chunk-POPQ4Y6H-lVLu9Ild.js} +1 -1
  321. package/web-shell/assets/{chunk-SVP7TREG-DU5GE1_z.js → chunk-SVP7TREG-C6XYlIer.js} +1 -1
  322. package/web-shell/assets/{chunk-XXDRQBXY-D2IIWZKt.js → chunk-XXDRQBXY-CiG2j2Ji.js} +1 -1
  323. package/web-shell/assets/classDiagram-DTDB5LWJ-DdFpqpfD.js +1 -0
  324. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DdFpqpfD.js +1 -0
  325. package/web-shell/assets/{cose-bilkent-JH36ORCC-CF_txUJr.js → cose-bilkent-JH36ORCC-DGVHMMVm.js} +1 -1
  326. package/web-shell/assets/{cynefin-OW5HDTMX-DEZ-My-Z.js → cynefin-OW5HDTMX-D6cgpCnH.js} +1 -1
  327. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BV7EKUS6.js → cynefinDiagram-5FMLGOSQ-BKv4Z-UX.js} +1 -1
  328. package/web-shell/assets/{dagre-3AP2YEHR-JGIX0G4H.js → dagre-3AP2YEHR-B4ABMIG-.js} +1 -1
  329. package/web-shell/assets/{diagram-S7CK7UJ4-DdUY7q6A.js → diagram-S7CK7UJ4-DgCkp_Lm.js} +1 -1
  330. package/web-shell/assets/{diagram-UQ7AKVKN-fhzRZ19v.js → diagram-UQ7AKVKN-FG0FNokz.js} +1 -1
  331. package/web-shell/assets/{diagram-VSXAHHWV-BOgOex6q.js → diagram-VSXAHHWV-JgkP9qg-.js} +1 -1
  332. package/web-shell/assets/{diagram-VX7I27RA-C0NknIz6.js → diagram-VX7I27RA-ADh2x83l.js} +1 -1
  333. package/web-shell/assets/{diagram-Z3DM3KII-C__3mUBX.js → diagram-Z3DM3KII-yXqoYF1J.js} +1 -1
  334. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BvPhqycH.js → ebnfDiagram-PWID7BFC-Duk83Ek_.js} +1 -1
  335. package/web-shell/assets/{erDiagram-SSCWMZ5O-BqzoNoL9.js → erDiagram-SSCWMZ5O-DMdvxySG.js} +1 -1
  336. package/web-shell/assets/{flowDiagram-A5DVABFB-CJKOre47.js → flowDiagram-A5DVABFB-DHjVgSji.js} +1 -1
  337. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-C5xZjrp0.js → ganttDiagram-EL5Y4UJY-DMM9DkCE.js} +1 -1
  338. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-C0EjwuPK.js → gitGraphDiagram-WWUBYQGX-t_ug9vO8.js} +1 -1
  339. package/web-shell/assets/index-BGZRqbRo.css +36 -0
  340. package/web-shell/assets/index-DRri_6_x.js +2067 -0
  341. package/web-shell/assets/{index-C5M93syE.js → index-zqvnpGHv.js} +1 -1
  342. package/web-shell/assets/{infoDiagram-RXCK75RN-BUwzsYOs.js → infoDiagram-RXCK75RN-eT1fANNm.js} +1 -1
  343. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-EDJ_DH3V.js → ishikawaDiagram-5VMMS53U-k3evzZNn.js} +1 -1
  344. package/web-shell/assets/{journeyDiagram-EYS64GPL-BnfcOsS0.js → journeyDiagram-EYS64GPL-CGim3EAi.js} +1 -1
  345. package/web-shell/assets/{kanban-definition-3QL26DDD-D_ofTVGu.js → kanban-definition-3QL26DDD-WHfJo-22.js} +1 -1
  346. package/web-shell/assets/{layout-CBuQFdfZ.js → layout-DkqIaFlJ.js} +1 -1
  347. package/web-shell/assets/{linear-DRIHtmGv.js → linear-Bdkd3mCz.js} +1 -1
  348. package/web-shell/assets/{mermaid.core-CmR5wZH6.js → mermaid.core-CGw0LkT_.js} +6 -6
  349. package/web-shell/assets/{mindmap-definition-FBJOCRG2-BV374olC.js → mindmap-definition-FBJOCRG2-C9V4rBvo.js} +1 -1
  350. package/web-shell/assets/{pegDiagram-XKGWAZYB-Bpy1SplK.js → pegDiagram-XKGWAZYB-CwoI2T5G.js} +1 -1
  351. package/web-shell/assets/{pieDiagram-E7YTZNPT-CeZx4hR2.js → pieDiagram-E7YTZNPT-DaTmBmPG.js} +1 -1
  352. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-COYKs14h.js → quadrantDiagram-AXDQQJYC-plh6MyGI.js} +1 -1
  353. package/web-shell/assets/{railroadDiagram-O6MQD6OU-5g2pOeTs.js → railroadDiagram-O6MQD6OU-D_b-S0iK.js} +1 -1
  354. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-Yn8uPGtF.js → requirementDiagram-EFPCY7ZU-zUzTN7VE.js} +1 -1
  355. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CTayAGq6.js → sankeyDiagram-P5KCCOFB-m6AhoD0l.js} +1 -1
  356. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BFWDKzUU.js → sequenceDiagram-WJ2MYXX4-Cwhzsine.js} +1 -1
  357. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CtErUbj4.js → sizeCapture-X5ZJPWSS-CcZuKIae.js} +1 -1
  358. package/web-shell/assets/{stateDiagram-HBIQ2CUA-Co3HFzOd.js → stateDiagram-HBIQ2CUA-CFoiJwD_.js} +1 -1
  359. package/web-shell/assets/stateDiagram-v2-4QOOHH4V--H8HdEmk.js +1 -0
  360. package/web-shell/assets/{swimlanes-XN3QIQJK-CDZuxzOj.js → swimlanes-XN3QIQJK-CgS9hcaV.js} +1 -1
  361. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-ShE9OIgf.js +8 -0
  362. package/web-shell/assets/{timeline-definition-24CTP7MA-UcNHj8At.js → timeline-definition-24CTP7MA-Dzzc05t9.js} +1 -1
  363. package/web-shell/assets/{vennDiagram-4TSXK5OY-JKR9pVFG.js → vennDiagram-4TSXK5OY-DemK0f7Y.js} +1 -1
  364. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-C4SU-yIW.js → wardleyDiagram-VM6X3IG4-CquLxtMr.js} +1 -1
  365. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-D_yoWGZ4.js → xychartDiagram-S5SC5T6Z-BTBKTM5g.js} +1 -1
  366. package/web-shell/index.html +2 -2
  367. package/chunks/chunk-4P7PPAHN.js +0 -3097
  368. package/chunks/chunk-7J6OTNGO.js +0 -424
  369. package/chunks/chunk-LMMHS3RS.js +0 -135
  370. package/chunks/chunk-MZYWNU66.js +0 -149
  371. package/chunks/chunk-T4EFG2P5.js +0 -113
  372. package/chunks/chunk-XZA32HII.js +0 -19
  373. package/chunks/goal-tools-7TNK5ZHC.js +0 -411
  374. package/web-shell/assets/channel-B0ovOJeK.js +0 -1
  375. package/web-shell/assets/classDiagram-DTDB5LWJ-DMll2-6_.js +0 -1
  376. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DMll2-6_.js +0 -1
  377. package/web-shell/assets/index-B_IPzA0h.js +0 -2020
  378. package/web-shell/assets/index-D1OKGQlM.css +0 -36
  379. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-C3gdRjPm.js +0 -1
  380. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-C34TGCPZ.js +0 -8
  381. /package/chunks/{chunk-FOGQO4FG.js → chunk-JA5CBKRP.js} +0 -0
@@ -1,12 +1,14 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- recomputeMcpGating
5
- } from "./chunk-RAEEQEC5.js";
4
+ classifyApiError
5
+ } from "./chunk-V7RNNPGC.js";
6
6
  import {
7
- classifyApiError,
8
7
  fireSessionDeleteHook
9
- } from "./chunk-P5Y23G2L.js";
8
+ } from "./chunk-L34XSHIZ.js";
9
+ import {
10
+ normalizePartList
11
+ } from "./chunk-5IENVM7Z.js";
10
12
  import {
11
13
  EXTENSION_CONTEXT_BUDGET,
12
14
  buildExtensionMentionContext,
@@ -14,13 +16,9 @@ import {
14
16
  extractAtPathCommands,
15
17
  matchExtensionByRef,
16
18
  matchMcpServerByRef,
17
- normalizePartList,
18
19
  parseExtensionRef,
19
20
  parseMcpServerRef
20
- } from "./chunk-AKNQMSL2.js";
21
- import {
22
- getCommandSubcommandNames
23
- } from "./chunk-QE7DTCLX.js";
21
+ } from "./chunk-LOBDDFYK.js";
24
22
  import {
25
23
  getAvailableCommands,
26
24
  getSlashCommandFirstToken,
@@ -29,7 +27,10 @@ import {
29
27
  isSlashCommand,
30
28
  recordDaemonSessionModel,
31
29
  restoreSessionModelThenAuthenticate
32
- } from "./chunk-BBYTY46C.js";
30
+ } from "./chunk-NVVJTUSL.js";
31
+ import {
32
+ recomputeMcpGating
33
+ } from "./chunk-UUASLXHW.js";
33
34
  import {
34
35
  SessionIdConflictError,
35
36
  appEvents,
@@ -37,35 +38,40 @@ import {
37
38
  buildEnabledSkillNamesProvider,
38
39
  cleanupReviewWorktreeLeases,
39
40
  loadCliConfig,
40
- normalizeDisabledToolList
41
- } from "./chunk-YOMKOM7E.js";
41
+ normalizeDisabledToolList,
42
+ parseApprovalModeValue
43
+ } from "./chunk-MP6YZ4RK.js";
44
+ import {
45
+ getCommandSubcommandNames
46
+ } from "./chunk-EIY7SUPZ.js";
42
47
  import {
43
48
  getEffectiveSupportedModes
44
- } from "./chunk-3NQCZMUB.js";
49
+ } from "./chunk-5RTTI4GE.js";
50
+ import "./chunk-3SH53ANB.js";
45
51
  import "./chunk-NYX53SV4.js";
46
- import "./chunk-JLSZT354.js";
52
+ import "./chunk-M4LBBSVP.js";
47
53
  import {
48
54
  collectContextData,
49
55
  formatContextUsageText
50
- } from "./chunk-KUDI54QQ.js";
56
+ } from "./chunk-SX2QIMJV.js";
51
57
  import "./chunk-4WGODMVR.js";
52
58
  import {
53
59
  startNonInteractiveOpenAILogHousekeeping
54
- } from "./chunk-XPDKSOVW.js";
60
+ } from "./chunk-GXUTFQXK.js";
55
61
  import "./chunk-KW7NOTN6.js";
56
- import "./chunk-3SH53ANB.js";
57
- import "./chunk-BSJOBW4U.js";
62
+ import "./chunk-JHN7UIDW.js";
63
+ import "./chunk-5EIOJGCR.js";
64
+ import "./chunk-37JFWFCD.js";
58
65
  import {
59
66
  isGoalStatusKind
60
67
  } from "./chunk-EKTCKZV5.js";
61
- import "./chunk-NGKLMNWN.js";
68
+ import "./chunk-UM2FFKXN.js";
62
69
  import "./chunk-YAF2MQZ6.js";
63
- import "./chunk-JHN7UIDW.js";
64
70
  import {
65
71
  computeCpuPercent
66
72
  } from "./chunk-LBOVL47Y.js";
67
73
  import "./chunk-24FVUD5P.js";
68
- import "./chunk-QTMPM6RC.js";
74
+ import "./chunk-EWRW2WQC.js";
69
75
  import "./chunk-6H67XLET.js";
70
76
  import {
71
77
  beginAcpBootstrapConfigProfiling,
@@ -73,8 +79,7 @@ import {
73
79
  endAcpBootstrapConfigProfiling,
74
80
  markAcpStartup
75
81
  } from "./chunk-JZWOCUZ3.js";
76
- import "./chunk-UKB2TZAO.js";
77
- import "./chunk-MJBHSZEJ.js";
82
+ import "./chunk-VNAYZAFX.js";
78
83
  import {
79
84
  GENERATION_MAX_PROMPT_BYTES,
80
85
  GENERATION_TIMEOUT_MS,
@@ -95,7 +100,7 @@ import {
95
100
  shouldSuppressRememberErrorDetails,
96
101
  workspaceMemoryFailureCode,
97
102
  workspaceMemoryFailureDiagnostics
98
- } from "./chunk-BY24DZ4J.js";
103
+ } from "./chunk-WP4AX3XD.js";
99
104
  import {
100
105
  BaseEmitter,
101
106
  HistoryReplayer,
@@ -106,10 +111,10 @@ import {
106
111
  hasFullSessionContext,
107
112
  observeAcpToolResultProjection,
108
113
  observeAcpToolResultWire
109
- } from "./chunk-L2OKAIUK.js";
114
+ } from "./chunk-QI27MKNQ.js";
110
115
  import "./chunk-XEAAO654.js";
116
+ import "./chunk-NRL5CUZT.js";
111
117
  import "./chunk-47ECGEJC.js";
112
- import "./chunk-OQYXJK2V.js";
113
118
  import "./chunk-2MIN6GRR.js";
114
119
  import "./chunk-QHTIBUWB.js";
115
120
  import "./chunk-TXASDT2M.js";
@@ -138,7 +143,7 @@ import {
138
143
  normalizeChannelDeliveryText,
139
144
  scheduledTaskRunSessionName,
140
145
  scheduledTaskRunSourceId
141
- } from "./chunk-PNIGAVY6.js";
146
+ } from "./chunk-DTVQSSNM.js";
142
147
  import {
143
148
  normalizeSessionIdForLookup,
144
149
  parseCallerSuppliedSessionId
@@ -149,33 +154,43 @@ import {
149
154
  buildPermissionSettings,
150
155
  normalizePermissionRules,
151
156
  readPermissionRuleSet
152
- } from "./chunk-JPKTAQS3.js";
157
+ } from "./chunk-I5N4EAS6.js";
153
158
  import {
154
159
  MAX_AUDIO_BYTES,
155
160
  sanitizeVoiceErrorMessage,
156
161
  transcribeVoiceAudio
157
- } from "./chunk-YNG7XAJU.js";
162
+ } from "./chunk-LEPCWS5A.js";
158
163
  import {
159
164
  readVoiceModel
160
- } from "./chunk-BE5FGT5Z.js";
165
+ } from "./chunk-BA4WJC4L.js";
161
166
  import "./chunk-QAK5475D.js";
162
- import "./chunk-6YXNJXQW.js";
163
- import "./chunk-AN3KFCNH.js";
167
+ import "./chunk-RN3YGDCA.js";
168
+ import "./chunk-3JQZVCBI.js";
164
169
  import "./chunk-JS73NNWF.js";
165
170
  import {
166
171
  SCHEDULED_TASK_RUN_SOURCE_TYPE
167
- } from "./chunk-RLSPPTWH.js";
172
+ } from "./chunk-DSX7KQPM.js";
168
173
  import "./chunk-7U5G6JXI.js";
169
174
  import "./chunk-WCCLLK7X.js";
170
175
  import "./chunk-OCPBI7J5.js";
171
176
  import {
177
+ ndJsonStream
178
+ } from "./chunk-4HVH57J3.js";
179
+ import {
180
+ PERSIST_REASONING_SELECTION_META_KEY,
172
181
  REASONING_EFFORT_DEFAULT,
173
182
  REASONING_EFFORT_NAMES,
174
183
  REASONING_EFFORT_NONE,
184
+ REASONING_SELECTION_PERSISTED_META_KEY,
185
+ applyReasoningSelection,
175
186
  buildModelReasoningConfigOption,
176
187
  buildModelReasoningConfigPreview,
177
- getModelConfiguration
178
- } from "./chunk-T4EFG2P5.js";
188
+ clearReasoningRequestOverrides,
189
+ getModelConfiguration,
190
+ isReasoningSelectionSupported,
191
+ parseReasoningSelection,
192
+ resolvePersistedReasoningConfigState
193
+ } from "./chunk-ZJ2LM2SI.js";
179
194
  import {
180
195
  ACP_ROUTE_ID_PREFIX,
181
196
  buildAcpModelOptions,
@@ -184,36 +199,34 @@ import {
184
199
  parseAcpModelOption,
185
200
  resolveAcpModelOption,
186
201
  sanitizeProviderBaseUrl
187
- } from "./chunk-W7KWB6AH.js";
202
+ } from "./chunk-6A2D4QSO.js";
188
203
  import {
189
204
  mapSkillConfigToStatus
190
205
  } from "./chunk-BHTYRHJF.js";
206
+ import {
207
+ ACP_PREFLIGHT_KINDS,
208
+ IDLE_HOOK_EVENTS,
209
+ SERVE_CONTROL_EXT_METHODS,
210
+ SERVE_STATUS_EXT_METHODS,
211
+ STATUS_SCHEMA_VERSION,
212
+ mapDomainErrorToErrorKind
213
+ } from "./chunk-64QH2UC6.js";
191
214
  import {
192
215
  resolveSkillSettings
193
216
  } from "./chunk-HWVUSYSN.js";
194
217
  import "./chunk-DMEUXLSS.js";
195
- import "./chunk-OE5AQVNB.js";
196
- import "./chunk-H2A2GJGL.js";
218
+ import "./chunk-F7NF2IOE.js";
219
+ import "./chunk-AZJLY2XZ.js";
197
220
  import "./chunk-57OAHC2Y.js";
198
- import "./chunk-V4HN35IF.js";
199
- import "./chunk-CAZADEU7.js";
200
- import "./chunk-GN422P4J.js";
221
+ import "./chunk-PCRBLMIN.js";
222
+ import "./chunk-NXKOVOM5.js";
223
+ import "./chunk-TSZSGQ3N.js";
201
224
  import "./chunk-V6WHFGST.js";
202
225
  import {
203
226
  createLoadedSettingsAdapter
204
- } from "./chunk-HDMKCJHI.js";
205
- import {
206
- ndJsonStream
207
- } from "./chunk-JMRE4WJQ.js";
208
- import {
209
- ACP_PREFLIGHT_KINDS,
210
- IDLE_HOOK_EVENTS,
211
- SERVE_CONTROL_EXT_METHODS,
212
- SERVE_STATUS_EXT_METHODS,
213
- STATUS_SCHEMA_VERSION,
214
- mapDomainErrorToErrorKind
215
- } from "./chunk-J4Y3QJHF.js";
216
- import "./chunk-SMRDCANI.js";
227
+ } from "./chunk-32LU3APX.js";
228
+ import "./chunk-S6H3ELPG.js";
229
+ import "./chunk-7XL4WRXM.js";
217
230
  import {
218
231
  ACTIVE_WORK_CLOSE_IF_UNHELD_PARAM,
219
232
  ACTIVE_WORK_HEARTBEAT_META_KEY,
@@ -255,12 +268,12 @@ import {
255
268
  import {
256
269
  NOT_CURRENTLY_GENERATING_CANCEL_MESSAGE,
257
270
  isNotCurrentlyGeneratingCancelError
258
- } from "./chunk-YPISTYEI.js";
271
+ } from "./chunk-F47DITLZ.js";
259
272
  import "./chunk-6PLDPT2C.js";
260
273
  import "./chunk-FYJ7W2PI.js";
261
274
  import "./chunk-STUJ7IMZ.js";
262
275
  import "./chunk-GYTKQYDB.js";
263
- import "./chunk-3EGEBDTW.js";
276
+ import "./chunk-M4KFODIP.js";
264
277
  import "./chunk-ALMR3E6Q.js";
265
278
  import "./chunk-RKFGE7JH.js";
266
279
  import "./chunk-UDG5EZJI.js";
@@ -274,32 +287,35 @@ import {
274
287
  isValidExternalToolGuardDenialReason
275
288
  } from "./chunk-3VUENPWF.js";
276
289
  import "./chunk-M5GB774H.js";
277
- import "./chunk-ZVP4PWBU.js";
278
290
  import {
279
291
  ACP_EVENT_LOOP_STALL_RESTART_MS,
280
292
  CHANNEL_PROMPT_META_KEY
281
- } from "./chunk-IXEZHTDR.js";
293
+ } from "./chunk-U4DJ5XB3.js";
282
294
  import {
283
295
  AgentSideConnection,
284
296
  PROTOCOL_VERSION,
285
297
  RequestError
286
298
  } from "./chunk-IW6RQPQB.js";
299
+ import "./chunk-ZVP4PWBU.js";
287
300
  import {
288
301
  assembleMcpServers,
289
302
  loadMcpApprovals
290
- } from "./chunk-ND7TQQPE.js";
303
+ } from "./chunk-C2VWOXHS.js";
291
304
  import {
305
+ deleteNestedPropertySafe,
292
306
  getOutputLanguageFilePath,
293
307
  getPersistScopeForModelSelection,
294
308
  getUserSettingsPath,
309
+ getWritableScopes,
295
310
  loadSettings,
296
311
  resolveOutputLanguageOrPreserveAuto,
312
+ settingExistsInScope,
297
313
  updateOutputLanguageFile,
298
314
  writeOutputLanguageAndRegisterPath
299
- } from "./chunk-AAX236AR.js";
300
- import "./chunk-NT5XIL5H.js";
315
+ } from "./chunk-VWTSRH6C.js";
316
+ import "./chunk-NQ4L2CMD.js";
301
317
  import "./chunk-RKUWKYED.js";
302
- import "./chunk-GOXKNSDZ.js";
318
+ import "./chunk-O5CD7T4T.js";
303
319
  import {
304
320
  getSystemDefaultsPath,
305
321
  getSystemSettingsPath
@@ -307,7 +323,7 @@ import {
307
323
  import {
308
324
  getCurrentLanguage,
309
325
  setLanguageAsync
310
- } from "./chunk-EU2B4P3D.js";
326
+ } from "./chunk-I4NRYS6A.js";
311
327
  import {
312
328
  SUPPORTED_LANGUAGES
313
329
  } from "./chunk-5EJZE3FP.js";
@@ -315,19 +331,19 @@ import {
315
331
  findEnvFiles,
316
332
  preResolveHomeEnvOverrides,
317
333
  reloadEnvironment
318
- } from "./chunk-T4RMUTTT.js";
334
+ } from "./chunk-C4TIXFDZ.js";
319
335
  import {
320
336
  ENV_ACP_REPEATED_TOOL_FAILURE_GUARD,
321
337
  QWEN_CODE_SERVE_ENV
322
- } from "./chunk-3452WXOK.js";
323
- import "./chunk-7XL4WRXM.js";
324
- import "./chunk-ZYPJ7HVZ.js";
338
+ } from "./chunk-2M3EWQNG.js";
339
+ import "./chunk-2EAZ43JQ.js";
340
+ import "./chunk-NF5J2WFA.js";
341
+ import "./chunk-VBWD6C27.js";
325
342
  import "./chunk-W3N5XAZ6.js";
326
343
  import {
327
- isFolderTrustEnabled,
328
344
  isWorkspaceTrusted,
329
345
  loadTrustedFolders
330
- } from "./chunk-I75VKFCJ.js";
346
+ } from "./chunk-65HWLGA7.js";
331
347
  import "./chunk-NPQ5ZKRP.js";
332
348
  import "./chunk-MR3PXB6E.js";
333
349
  import {
@@ -357,42 +373,44 @@ import {
357
373
  resolveBaseUrl,
358
374
  runManagedRememberByAgent,
359
375
  subagentGenerator
360
- } from "./chunk-NT7LXVV5.js";
376
+ } from "./chunk-JUARRUMA.js";
361
377
  import {
362
378
  MAX_RETAINED_SNAPSHOTS,
363
379
  deleteWorkflowSnapshot,
364
380
  listSavedWorkflows,
365
381
  listWorkflowSnapshots,
366
382
  toSnapshot
367
- } from "./chunk-DBTMP3P4.js";
383
+ } from "./chunk-I2TMJPCV.js";
368
384
  import "./chunk-XFSFZCM5.js";
369
- import "./chunk-2EAZ43JQ.js";
370
- import "./chunk-NF5J2WFA.js";
371
385
  import {
372
386
  CreateSubSessionTool
373
- } from "./chunk-ERHAMGAA.js";
387
+ } from "./chunk-JR42V4UY.js";
374
388
  import "./chunk-LJZSMWOH.js";
375
- import "./chunk-6NWPR2EB.js";
376
- import "./chunk-GCUR24KK.js";
377
- import "./chunk-W4BDHLRT.js";
378
389
  import {
379
390
  restoreWorktreeContext
380
- } from "./chunk-ED7DD7MV.js";
381
- import "./chunk-AYYKUUKP.js";
382
- import "./chunk-PWR2NQBS.js";
391
+ } from "./chunk-RAFQIHN2.js";
392
+ import "./chunk-L26ONV2Y.js";
393
+ import "./chunk-47RYEQW5.js";
394
+ import "./chunk-IG4W5SJR.js";
395
+ import "./chunk-ZPJWUGCS.js";
396
+ import "./chunk-4UANMABT.js";
397
+ import "./chunk-ZKFTS3OV.js";
383
398
  import "./chunk-ENYUKMFK.js";
384
399
  import "./chunk-UKYXYWI2.js";
385
- import "./chunk-ZPJWUGCS.js";
386
400
  import {
387
401
  clearCachedCredentialFile,
388
402
  qwenOAuth2Events
389
403
  } from "./chunk-3AKCBZVW.js";
390
- import "./chunk-JDIO45X7.js";
404
+ import "./chunk-SULZPKTA.js";
405
+ import "./chunk-VNOVK4I7.js";
391
406
  import {
392
407
  APPROVAL_MODE_INFO,
393
408
  BranchPointInvalidError,
394
409
  ExtensionManager,
395
410
  GLOBAL_DUPLICATE_THRESHOLD,
411
+ GoalConflictError,
412
+ GoalInvalidTransitionError,
413
+ GoalPersistenceUnavailableError,
396
414
  InvalidMcpConfigError,
397
415
  InvalidSessionTranscriptCursorError,
398
416
  MAX_TRANSCRIPT_MESSAGES,
@@ -438,6 +456,7 @@ import {
438
456
  decoratePlanModeShellConfirmation,
439
457
  dedupeToolCallsById,
440
458
  didWriteProjectContextFile,
459
+ emptyGoalSnapshot,
441
460
  encodeSessionTranscriptCursor,
442
461
  evaluateAutoMode,
443
462
  evaluatePermissionFlow,
@@ -465,6 +484,7 @@ import {
465
484
  getStopHookContinuationReason,
466
485
  getToolCallRepeatKey,
467
486
  getWorkflowTaskMutationKey,
487
+ goalTurnContext,
468
488
  ideContextStore,
469
489
  injectPermissionRulesIfMissing,
470
490
  isApproveOutcome,
@@ -482,6 +502,9 @@ import {
482
502
  normalizeDerivedBranchTitle,
483
503
  normalizeTurnResultError,
484
504
  observeToolResultBoundary,
505
+ parseGoalControlRequest,
506
+ parseGoalSnapshotV2,
507
+ parseGoalStateCause,
485
508
  persistPermissionOutcome,
486
509
  recordAllow,
487
510
  recordFallbackApprove,
@@ -504,7 +527,7 @@ import {
504
527
  updateSetting,
505
528
  validatePlanModeShellApproval,
506
529
  validatePlanModeShellContext
507
- } from "./chunk-ZBDYI7VM.js";
530
+ } from "./chunk-4F7GQGXB.js";
508
531
  import "./chunk-GOFAQQZA.js";
509
532
  import "./chunk-5M6IDOMF.js";
510
533
  import "./chunk-6HUXPLB5.js";
@@ -512,9 +535,10 @@ import "./chunk-TWPJO254.js";
512
535
  import {
513
536
  external_exports
514
537
  } from "./chunk-CQ35AJ4Z.js";
515
- import "./chunk-SMJYTKTB.js";
538
+ import "./chunk-NSUKQ4DN.js";
539
+ import "./chunk-DQCKVAF5.js";
516
540
  import "./chunk-AI35S34R.js";
517
- import "./chunk-FIWZOMBF.js";
541
+ import "./chunk-KM3XVTMO.js";
518
542
  import {
519
543
  parsePositiveIntegerEnv
520
544
  } from "./chunk-6PVPNMXU.js";
@@ -524,11 +548,13 @@ import {
524
548
  import {
525
549
  SESSION_ARTIFACT_PERSISTENCE_VERSION,
526
550
  normalizeEventPayload,
527
- normalizeSnapshotPayload
528
- } from "./chunk-DJBQCO2E.js";
551
+ normalizeSnapshotPayload,
552
+ wrapUserPromptSubmitContext
553
+ } from "./chunk-EFTPIZIC.js";
529
554
  import "./chunk-IRH27ZC2.js";
530
555
  import "./chunk-QHWCP53L.js";
531
556
  import "./chunk-UJ4DUYIH.js";
557
+ import "./chunk-QJNDUTOL.js";
532
558
  import {
533
559
  promptIdContext,
534
560
  todoWorkChainContext
@@ -538,9 +564,9 @@ import {
538
564
  getOutputStyleTurnReminder,
539
565
  getPlanModeSystemReminder,
540
566
  resolveMainSessionOutputStyle
541
- } from "./chunk-YDQ4OCDK.js";
542
- import "./chunk-SDCHI64N.js";
543
- import "./chunk-B2RIIK3K.js";
567
+ } from "./chunk-OSSTATJF.js";
568
+ import "./chunk-ZHO2CW6D.js";
569
+ import "./chunk-CVX63TFJ.js";
544
570
  import "./chunk-373DQUVA.js";
545
571
  import {
546
572
  AgentOutputMessageCapture,
@@ -549,64 +575,47 @@ import {
549
575
  addToolCallResultAttributes,
550
576
  registerAcpEventLoopLagGauge,
551
577
  startEventLoopLagMonitor
552
- } from "./chunk-OSTQZIOY.js";
578
+ } from "./chunk-H43PSPYS.js";
553
579
  import {
554
580
  HookEventName,
555
581
  createHookOutput
556
582
  } from "./chunk-U6D2PPMN.js";
557
- import "./chunk-PDXYZBBQ.js";
558
- import "./chunk-QJNDUTOL.js";
559
- import "./chunk-ZHO2CW6D.js";
560
- import "./chunk-AF3QB6OL.js";
583
+ import "./chunk-VYIUNFEA.js";
584
+ import "./chunk-KGV55H53.js";
561
585
  import "./chunk-7TBU7PU2.js";
562
586
  import "./chunk-E4JNFXNI.js";
563
- import {
564
- GoalConflictError,
565
- GoalInvalidTransitionError,
566
- GoalPersistenceUnavailableError,
567
- emptyGoalSnapshot,
568
- goalTurnContext,
569
- parseGoalControlRequest,
570
- parseGoalSnapshotV2,
571
- parseGoalStateCause
572
- } from "./chunk-4P7PPAHN.js";
573
- import {
574
- wrapUserPromptSubmitContext
575
- } from "./chunk-7J6OTNGO.js";
576
587
  import {
577
588
  escapeJsonTagCharacters
578
589
  } from "./chunk-CHEIIBT3.js";
579
- import "./chunk-VYSZUQGU.js";
590
+ import "./chunk-TJYRTS4S.js";
580
591
  import {
581
592
  APPROVAL_MODES
582
593
  } from "./chunk-JX6XHPTX.js";
583
594
  import "./chunk-MLXTMF7H.js";
584
- import "./chunk-NAVJD2PQ.js";
585
- import "./chunk-KFN2IZYR.js";
586
- import "./chunk-GB4UKWY5.js";
587
- import "./chunk-QHMLYMMS.js";
588
- import {
589
- addDaemonRequestAttribute,
590
- extractDaemonTraceContext,
591
- withDaemonSpan
592
- } from "./chunk-UXEW7TQS.js";
593
- import "./chunk-VNOVK4I7.js";
594
595
  import "./chunk-PQEISIKS.js";
595
- import "./chunk-RT4QNQ5P.js";
596
+ import "./chunk-FD5SJOWT.js";
596
597
  import {
597
598
  runWithRuntimeContentGenerator
598
- } from "./chunk-26SIKQIC.js";
599
+ } from "./chunk-4LIFGNI4.js";
599
600
  import "./chunk-S6LOFUVP.js";
601
+ import "./chunk-NAVJD2PQ.js";
602
+ import "./chunk-KFN2IZYR.js";
603
+ import "./chunk-GB4UKWY5.js";
604
+ import "./chunk-QHMLYMMS.js";
600
605
  import {
601
606
  getToolCallPreparations
602
607
  } from "./chunk-CFKIH3D3.js";
603
608
  import {
604
- REASONING_EFFORT_TIERS,
605
- applyReasoningEffort
609
+ REASONING_EFFORT_TIERS
606
610
  } from "./chunk-2LD5U7Q3.js";
607
611
  import "./chunk-DJ2GSRLV.js";
608
612
  import "./chunk-S2T7H5MI.js";
609
613
  import "./chunk-LKODFJRD.js";
614
+ import {
615
+ addDaemonRequestAttribute,
616
+ extractDaemonTraceContext,
617
+ withDaemonSpan
618
+ } from "./chunk-LB3WQQJK.js";
610
619
  import {
611
620
  ConversationFinishedEvent,
612
621
  DiscoveredMCPTool,
@@ -632,25 +641,23 @@ import {
632
641
  logUserPrompt,
633
642
  normalizeParts,
634
643
  parseInvocationContext,
644
+ runSideQuery,
635
645
  runVisionBridge,
636
646
  runWithInvocationContext,
637
647
  shouldRunVisionBridge,
638
648
  splitImageParts,
639
649
  uiTelemetryService
640
- } from "./chunk-FXUSWLBF.js";
650
+ } from "./chunk-GH2S4GD5.js";
641
651
  import "./chunk-XBVNNDPK.js";
642
652
  import "./chunk-VGC4I5JJ.js";
643
653
  import {
644
654
  getAllMemoryFilenames,
645
655
  getSpecificMimeType
646
- } from "./chunk-67AY5D3M.js";
656
+ } from "./chunk-DYTW3QVG.js";
647
657
  import {
648
658
  getAutoMemoryRoot,
649
659
  getUserAutoMemoryRoot
650
660
  } from "./chunk-HT5S5TRQ.js";
651
- import {
652
- runSideQuery
653
- } from "./chunk-LMMHS3RS.js";
654
661
  import "./chunk-WZAD4ZNJ.js";
655
662
  import {
656
663
  DEFAULT_TOKEN_LIMIT,
@@ -660,8 +667,7 @@ import "./chunk-EIJT2PQ6.js";
660
667
  import {
661
668
  hasVertexProjectConfigured,
662
669
  preloadContentGenerator
663
- } from "./chunk-H5GPPDGY.js";
664
- import "./chunk-XZA32HII.js";
670
+ } from "./chunk-BFY33IB4.js";
665
671
  import "./chunk-KHP66DFN.js";
666
672
  import {
667
673
  AuthType
@@ -677,16 +683,16 @@ import {
677
683
  startToolExecutionSpan,
678
684
  startToolSpan,
679
685
  withInteractionSpan
680
- } from "./chunk-TBJ3SNS3.js";
686
+ } from "./chunk-QKDNS6FU.js";
681
687
  import "./chunk-74TONY4F.js";
682
- import "./chunk-IXHV5MIC.js";
688
+ import "./chunk-ZDFQGHZH.js";
683
689
  import {
684
690
  FORK_SUBAGENT_TYPE,
685
691
  getStartupContextLength,
686
692
  isSystemReminderContent,
687
693
  wrapSystemReminder
688
- } from "./chunk-D7D3HSYQ.js";
689
- import "./chunk-YKADANK6.js";
694
+ } from "./chunk-G7HBEEX7.js";
695
+ import "./chunk-QQD2GART.js";
690
696
  import "./chunk-AQ37AY7B.js";
691
697
  import "./chunk-ODZF64DM.js";
692
698
  import {
@@ -696,7 +702,7 @@ import {
696
702
  ToolNames,
697
703
  canonicalToolName,
698
704
  isShellProgressData
699
- } from "./chunk-LYSZVCCD.js";
705
+ } from "./chunk-7JMGTOH7.js";
700
706
  import {
701
707
  Storage,
702
708
  createDebugLogger,
@@ -705,11 +711,11 @@ import {
705
711
  isSubpath,
706
712
  sessionIdContext
707
713
  } from "./chunk-EAHOJF6V.js";
708
- import "./chunk-FHPYRXRH.js";
709
- import "./chunk-WLEYH7CD.js";
714
+ import "./chunk-QJGYU5PG.js";
715
+ import "./chunk-HRPFBHW7.js";
710
716
  import {
711
717
  runExitCleanup
712
- } from "./chunk-TV7BJ7TX.js";
718
+ } from "./chunk-RJUVTJEZ.js";
713
719
  import {
714
720
  writeStderrLine,
715
721
  writeStderrLineSafe
@@ -4049,6 +4055,10 @@ var Session = class {
4049
4055
  this.slashCommandPolicy = this.requiresManagedConversationBinding ? STANDALONE_SLASH_COMMAND_POLICY : void 0;
4050
4056
  this.runtimeBaseDir = config.storage.getRuntimeBaseDir();
4051
4057
  const todoStopGuardEnabled = this.settings.merged.experimental?.todoStopGuard === true && !this.config.getBareMode() && !this.config.isSafeMode();
4058
+ const sessionWorkflowEnabledFromSettings = this.settings.merged.experimental?.sessionWorkflow === true;
4059
+ this.config.setSessionWorkflowEnabledProvider?.(
4060
+ () => sessionWorkflowEnabledFromSettings
4061
+ );
4052
4062
  this.todoStopGuard = new DaemonTodoStopGuard(todoStopGuardEnabled);
4053
4063
  const configuredGuardMode = process.env[ENV_ACP_REPEATED_TOOL_FAILURE_GUARD];
4054
4064
  const parsedGuardMode = parseRepeatedToolFailureGuardMode(configuredGuardMode);
@@ -4217,6 +4227,8 @@ var Session = class {
4217
4227
  #shellStatusChangeCallback;
4218
4228
  workflowApprovalAbortController = new AbortController();
4219
4229
  activeTodoPlanRevision;
4230
+ activeTodoPlanStructure;
4231
+ todoPlanRevisionGeneration = 0;
4220
4232
  // Modular components
4221
4233
  historyReplayer;
4222
4234
  toolCallEmitter;
@@ -4262,6 +4274,7 @@ var Session = class {
4262
4274
  restoredAskUserQuestionSkipPersistence = false;
4263
4275
  // Implement SessionContext interface
4264
4276
  sessionId;
4277
+ sessionReasoningSelection;
4265
4278
  #bindGoalRuntime() {
4266
4279
  try {
4267
4280
  const runtime = this.config.getGoalRuntime();
@@ -4781,7 +4794,10 @@ var Session = class {
4781
4794
  this.#clearTodoStopGuardTrustAndDrainAutomaticQueues();
4782
4795
  }
4783
4796
  clearActiveTodoPlanRevision() {
4797
+ this.todoPlanRevisionGeneration++;
4784
4798
  this.activeTodoPlanRevision = void 0;
4799
+ this.activeTodoPlanStructure = void 0;
4800
+ this.config.clearSessionWorkflowPlanRevision?.();
4785
4801
  }
4786
4802
  hardSuspendTodoStopGuard() {
4787
4803
  this.#clearTodoStopGuardQueuedPromptWait();
@@ -5683,6 +5699,7 @@ var Session = class {
5683
5699
  dispose() {
5684
5700
  this.disposed = true;
5685
5701
  this.closing = true;
5702
+ this.clearActiveTodoPlanRevision();
5686
5703
  this.pendingPrompt?.abort(SESSION_DISPOSE_ABORT_REASON);
5687
5704
  this.pendingPrompt = null;
5688
5705
  this.resolveCloseGate?.();
@@ -5733,6 +5750,7 @@ var Session = class {
5733
5750
  this.#workflowStatusChangeCallback = void 0;
5734
5751
  }
5735
5752
  this.config.getChatRecordingService()?.setTitleRecordedCallback(void 0);
5753
+ this.config.getSessionService().setSessionPrBoundCallback(void 0);
5736
5754
  this.unsubscribeChatRecordingFailure?.();
5737
5755
  this.unsubscribeChatRecordingFailure = void 0;
5738
5756
  this.config.setSubSessionSpawner(void 0);
@@ -5789,7 +5807,7 @@ var Session = class {
5789
5807
  ...options
5790
5808
  });
5791
5809
  } finally {
5792
- this.activeTodoPlanRevision = void 0;
5810
+ this.clearActiveTodoPlanRevision();
5793
5811
  }
5794
5812
  }
5795
5813
  rewindToTurn(targetTurnIndex, opts) {
@@ -5819,7 +5837,7 @@ var Session = class {
5819
5837
  }
5820
5838
  chat.truncateHistory(apiTruncateIndex);
5821
5839
  chat.stripThoughtsFromHistory();
5822
- this.activeTodoPlanRevision = void 0;
5840
+ this.clearActiveTodoPlanRevision();
5823
5841
  const preserveQueuedPromptPriority = this.todoStopGuardQueuedPromptPriority;
5824
5842
  const shouldDrainAutomaticQueues = (this.todoStopGuard.blocksUnrelatedAutomaticTurns || this.todoStopGuard.hasCommittedContinuation) && !preserveQueuedPromptPriority;
5825
5843
  this.todoStopGuard.blockUntilOrdinaryPromptStarts();
@@ -5864,7 +5882,7 @@ var Session = class {
5864
5882
  );
5865
5883
  }
5866
5884
  this.config.getLlmClient().getChat().setHistory(structuredClone(history));
5867
- this.activeTodoPlanRevision = void 0;
5885
+ this.clearActiveTodoPlanRevision();
5868
5886
  this.#clearTodoStopGuardTrustAndDrainAutomaticQueues();
5869
5887
  }
5870
5888
  #computeApiTruncationIndexForUserTurn(apiHistory, targetTurnIndex) {
@@ -7984,21 +8002,80 @@ ${this.pendingRecoveredAgentsNotice}
7984
8002
  sessionId: this.sessionId,
7985
8003
  update: projectedUpdate
7986
8004
  };
7987
- if (update.sessionUpdate === "plan") {
7988
- this.activeTodoPlanRevision = void 0;
8005
+ const canUpdateTodoPlanRevision = update.sessionUpdate === "plan" && this.config.getApprovalMode() === "plan" /* PLAN */;
8006
+ const todoPlanRevision = canUpdateTodoPlanRevision ? this.#readTodoPlanRevision(update) : void 0;
8007
+ const preservesPendingRevision = todoPlanRevision !== void 0 && todoPlanRevision.structure === this.activeTodoPlanStructure;
8008
+ const previousActiveTodoPlanRevision = this.activeTodoPlanRevision;
8009
+ const previousActiveTodoPlanStructure = this.activeTodoPlanStructure;
8010
+ const previousWorkflowRevision = this.config.getSessionWorkflowPlanRevision?.();
8011
+ if (canUpdateTodoPlanRevision && !preservesPendingRevision) {
8012
+ this.clearActiveTodoPlanRevision();
8013
+ }
8014
+ try {
8015
+ await this.client.sessionUpdate(params);
8016
+ } catch (error) {
8017
+ if (canUpdateTodoPlanRevision && !preservesPendingRevision && this.config.getApprovalMode() === "plan" /* PLAN */) {
8018
+ this.activeTodoPlanRevision = previousActiveTodoPlanRevision;
8019
+ this.activeTodoPlanStructure = previousActiveTodoPlanStructure;
8020
+ this.config.setSessionWorkflowPlanRevision?.(previousWorkflowRevision);
8021
+ }
8022
+ throw error;
7989
8023
  }
7990
- await this.client.sessionUpdate(params);
7991
- if (update.sessionUpdate === "plan") {
7992
- this.#captureTodoPlanRevision(update);
8024
+ if (canUpdateTodoPlanRevision && this.config.getApprovalMode() === "plan" /* PLAN */ && todoPlanRevision?.allPending) {
8025
+ if (this.activeTodoPlanRevision?.planId !== todoPlanRevision.planId || this.activeTodoPlanRevision?.sourceCallId !== todoPlanRevision.sourceCallId) {
8026
+ this.todoPlanRevisionGeneration++;
8027
+ }
8028
+ this.activeTodoPlanRevision = {
8029
+ planId: todoPlanRevision.planId,
8030
+ sourceCallId: todoPlanRevision.sourceCallId
8031
+ };
8032
+ this.activeTodoPlanStructure = todoPlanRevision.structure;
8033
+ this.config.setSessionWorkflowPlanRevision?.({
8034
+ planId: todoPlanRevision.planId,
8035
+ sourceCallId: todoPlanRevision.sourceCallId,
8036
+ todoIds: todoPlanRevision.todoIds
8037
+ });
7993
8038
  }
7994
8039
  }
7995
- #captureTodoPlanRevision(update) {
8040
+ #readTodoPlanRevision(update) {
7996
8041
  const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
7997
8042
  const plan = isRecord2(meta?.["qwenTodoPlan"]) ? meta["qwenTodoPlan"] : void 0;
7998
8043
  const transcript = isRecord2(meta?.["qwenTranscript"]) ? meta["qwenTranscript"] : void 0;
7999
8044
  const planId = plan?.["id"];
8000
8045
  const sourceCallId = transcript?.["planToolCallId"];
8001
- this.activeTodoPlanRevision = typeof planId === "string" && typeof sourceCallId === "string" && update.entries.length > 0 ? { planId, sourceCallId } : void 0;
8046
+ const workflowPlan = meta?.["qwenSessionWorkflow"] === true;
8047
+ const hasValidIdentity = typeof planId === "string" && planId.trim() !== "" && typeof sourceCallId === "string" && sourceCallId.trim() !== "" && update.entries.length > 0;
8048
+ const workflowEnabled = this.config.isSessionWorkflowEnabled?.() === true;
8049
+ if (!workflowEnabled || !workflowPlan || !hasValidIdentity)
8050
+ return void 0;
8051
+ const todos = update.entries.flatMap((entry) => {
8052
+ const entryRecord = entry;
8053
+ const entryMeta = isRecord2(entryRecord["_meta"]) ? entryRecord["_meta"] : void 0;
8054
+ const todo = isRecord2(entryMeta?.["qwenTodo"]) ? entryMeta["qwenTodo"] : void 0;
8055
+ const todoId = todo?.["id"];
8056
+ const blockedBy = todo?.["blockedBy"];
8057
+ if (typeof todoId !== "string" || todoId.trim() === "" || blockedBy !== void 0 && (!Array.isArray(blockedBy) || !blockedBy.every((dependency) => typeof dependency === "string"))) {
8058
+ return [];
8059
+ }
8060
+ return [
8061
+ {
8062
+ id: todoId,
8063
+ content: entry.content,
8064
+ priority: entry.priority,
8065
+ blockedBy: blockedBy ?? []
8066
+ }
8067
+ ];
8068
+ });
8069
+ const todoIds = todos.map((todo) => todo.id);
8070
+ if (todos.length !== update.entries.length || new Set(todoIds).size !== todoIds.length)
8071
+ return void 0;
8072
+ return {
8073
+ planId,
8074
+ sourceCallId,
8075
+ todoIds,
8076
+ structure: JSON.stringify([planId, todos]),
8077
+ allPending: update.entries.every((entry) => entry.status === "pending")
8078
+ };
8002
8079
  }
8003
8080
  #scheduleChannelDelivery(params) {
8004
8081
  const timer = setTimeout(() => {
@@ -8583,7 +8660,10 @@ ${this.pendingRecoveredAgentsNotice}
8583
8660
  const isTimeout = error instanceof MidTurnDrainTimeoutError;
8584
8661
  if (isTimeout) {
8585
8662
  this.midTurnDrainTimeoutStrikes += 1;
8586
- if (drainPromise) void this.#recoverLateDrain(drainPromise);
8663
+ if (drainPromise) {
8664
+ void this.#recoverLateDrain(drainPromise).catch(() => {
8665
+ });
8666
+ }
8587
8667
  }
8588
8668
  const isPermanentError = errorCode === -32601 || /method not found/i.test(errorMessage) || isTimeout && this.midTurnDrainTimeoutStrikes >= MID_TURN_QUEUE_DRAIN_MAX_TIMEOUT_STRIKES;
8589
8669
  if (isPermanentError) {
@@ -9422,6 +9502,14 @@ ${this.pendingRecoveredAgentsNotice}
9422
9502
  }).catch(() => {
9423
9503
  });
9424
9504
  });
9505
+ this.config.getSessionService().setSessionPrBoundCallback((sessionId, pr) => {
9506
+ void this.client.extNotification("qwen/notify/session/pr-binding", {
9507
+ v: 1,
9508
+ sessionId,
9509
+ pr: { number: pr.number, url: pr.url }
9510
+ }).catch(() => {
9511
+ });
9512
+ });
9425
9513
  if (typeof this.config.onChatRecordingFailure === "function") {
9426
9514
  this.unsubscribeChatRecordingFailure = this.config.onChatRecordingFailure(
9427
9515
  (event) => this.client.extNotification(
@@ -10043,10 +10131,10 @@ ${this.pendingRecoveredAgentsNotice}
10043
10131
  }
10044
10132
  const previousApprovalMode = this.config.getApprovalMode();
10045
10133
  this.config.setApprovalMode(approvalMode);
10134
+ if (previousApprovalMode !== approvalMode && (previousApprovalMode === "plan" /* PLAN */ || approvalMode === "plan" /* PLAN */)) {
10135
+ this.clearActiveTodoPlanRevision();
10136
+ }
10046
10137
  if (approvalMode === "plan" /* PLAN */) {
10047
- if (previousApprovalMode !== "plan" /* PLAN */) {
10048
- this.activeTodoPlanRevision = void 0;
10049
- }
10050
10138
  this.clearTodoStopGuardTrust();
10051
10139
  }
10052
10140
  void this.client.extNotification("qwen/notify/session/mode-update", {
@@ -10099,6 +10187,10 @@ ${this.pendingRecoveredAgentsNotice}
10099
10187
  const effectiveAuthType = after?.authType ?? selectedAuthType;
10100
10188
  const effectiveModelId = after?.model ?? parsed.modelId;
10101
10189
  const isRuntime = resolvedRoute?.isRuntime ?? rawModelId.startsWith(RUNTIME_SNAPSHOT_PREFIX);
10190
+ const persistDefault = !this.requiresManagedConversationBinding && (options.persistDefault ?? true);
10191
+ this.reconcileReasoningSelection(effectiveModelId, {
10192
+ persist: persistDefault
10193
+ });
10102
10194
  void recordDaemonSessionModel(this.config, {
10103
10195
  modelId: isRuntime ? resolvedRoute?.modelId ?? parsed.modelId : effectiveModelId,
10104
10196
  authType: effectiveAuthType,
@@ -10119,7 +10211,6 @@ ${this.pendingRecoveredAgentsNotice}
10119
10211
  }).catch((error) => {
10120
10212
  debugLogger6.debug("model-update extNotification failed", error);
10121
10213
  });
10122
- const persistDefault = !this.requiresManagedConversationBinding && (options.persistDefault ?? true);
10123
10214
  if (persistDefault) {
10124
10215
  const persistScope = getPersistScopeForModelSelection(this.settings);
10125
10216
  this.settings.setValue(
@@ -10150,6 +10241,115 @@ ${this.pendingRecoveredAgentsNotice}
10150
10241
  }
10151
10242
  };
10152
10243
  }
10244
+ getDefaultReasoningConfig() {
10245
+ const authType = this.config.getAuthType?.();
10246
+ const model = authType && !this.config.getActiveRuntimeModelSnapshot?.() ? this.config.getResolvedModelConfig?.(
10247
+ authType,
10248
+ this.config.getModel(),
10249
+ this.config.getCurrentModelRegistryBaseUrl?.() ?? void 0
10250
+ ) : void 0;
10251
+ if (model) return model.generationConfig.reasoning;
10252
+ return this.settings.merged.model?.generationConfig?.reasoning;
10253
+ }
10254
+ reloadReasoningSelection() {
10255
+ this.settings.reloadScopeFromDisk("User" /* User */);
10256
+ this.settings.reloadScopeFromDisk("Workspace" /* Workspace */);
10257
+ this.reconcileReasoningSelection(this.config.getModel(), {
10258
+ persist: !this.requiresManagedConversationBinding
10259
+ });
10260
+ }
10261
+ setSessionReasoningSelection(selection) {
10262
+ this.sessionReasoningSelection = selection;
10263
+ }
10264
+ getSessionReasoningSelection() {
10265
+ return this.sessionReasoningSelection;
10266
+ }
10267
+ persistReasoningSelection(selection) {
10268
+ if (this.requiresManagedConversationBinding) {
10269
+ throw RequestError.invalidParams(
10270
+ void 0,
10271
+ "Reasoning selection cannot be persisted for this session"
10272
+ );
10273
+ }
10274
+ const key = "model.reasoningEffort";
10275
+ const persistScope = getPersistScopeForModelSelection(this.settings);
10276
+ const clears = getWritableScopes(this.settings).filter(
10277
+ (scope) => (selection === REASONING_EFFORT_DEFAULT || scope !== persistScope) && settingExistsInScope(key, this.settings.forScope(scope).settings)
10278
+ ).map((scope) => ({ scope, value: void 0 }));
10279
+ const writes = selection === REASONING_EFFORT_DEFAULT ? clears : [{ scope: persistScope, value: selection }, ...clears];
10280
+ const committed = [];
10281
+ for (const write of writes) {
10282
+ const previous = this.settings.forScope(write.scope).settings.model?.reasoningEffort;
10283
+ try {
10284
+ this.writeReasoningSelection(write.scope, write.value);
10285
+ } catch (error) {
10286
+ this.settings.reloadScopeFromDisk(write.scope);
10287
+ for (const previousWrite of committed.reverse()) {
10288
+ try {
10289
+ this.writeReasoningSelection(
10290
+ previousWrite.scope,
10291
+ previousWrite.value
10292
+ );
10293
+ } catch (rollbackError) {
10294
+ this.settings.reloadScopeFromDisk(previousWrite.scope);
10295
+ debugLogger6.warn(
10296
+ `Failed to roll back reasoning preference: ${rollbackError instanceof Error ? rollbackError.message : String(rollbackError)}`
10297
+ );
10298
+ }
10299
+ }
10300
+ throw error;
10301
+ }
10302
+ committed.push({ scope: write.scope, value: previous });
10303
+ }
10304
+ }
10305
+ reconcileReasoningSelection(modelId, options) {
10306
+ const rawSelection = this.settings.merged.model?.reasoningEffort;
10307
+ let hasSessionSelection = this.sessionReasoningSelection !== void 0;
10308
+ if (!hasSessionSelection && rawSelection === void 0) return;
10309
+ let selection = hasSessionSelection ? this.sessionReasoningSelection : parseReasoningSelection(rawSelection);
10310
+ const generation = this.config.getContentGeneratorConfig?.();
10311
+ const thinkingMandatory = generation?.thinkingMandatory === true;
10312
+ let supported = selection !== void 0 && selection !== REASONING_EFFORT_DEFAULT && isReasoningSelectionSupported(modelId, selection, thinkingMandatory);
10313
+ const appliesSessionDefault = hasSessionSelection && selection === REASONING_EFFORT_DEFAULT;
10314
+ if (hasSessionSelection && !supported && !appliesSessionDefault) {
10315
+ this.sessionReasoningSelection = void 0;
10316
+ hasSessionSelection = false;
10317
+ selection = parseReasoningSelection(rawSelection);
10318
+ supported = selection !== void 0 && selection !== REASONING_EFFORT_DEFAULT && isReasoningSelectionSupported(modelId, selection, thinkingMandatory);
10319
+ }
10320
+ if (!hasSessionSelection && rawSelection !== void 0 && !supported && options.persist) {
10321
+ try {
10322
+ this.persistReasoningSelection(REASONING_EFFORT_DEFAULT);
10323
+ } catch (error) {
10324
+ debugLogger6.warn(
10325
+ `Failed to clear incompatible reasoning preference: ${error instanceof Error ? error.message : String(error)}`
10326
+ );
10327
+ }
10328
+ }
10329
+ const modelReasoning = getModelConfiguration(modelId)?.reasoning;
10330
+ if (supported && generation && modelReasoning && !modelReasoning.toggleOnly) {
10331
+ clearReasoningRequestOverrides(generation);
10332
+ }
10333
+ const effectiveSelection = (supported || appliesSessionDefault) && selection !== void 0 ? selection : REASONING_EFFORT_DEFAULT;
10334
+ applyReasoningSelection(
10335
+ this.config,
10336
+ effectiveSelection,
10337
+ this.getDefaultReasoningConfig()
10338
+ );
10339
+ }
10340
+ writeReasoningSelection(scope, value) {
10341
+ const key = "model.reasoningEffort";
10342
+ this.settings.setValue(scope, key, value, void 0, {
10343
+ throwOnWriteFailure: true
10344
+ });
10345
+ if (value !== void 0) return;
10346
+ const file = this.settings.forScope(scope);
10347
+ for (const settings of [file.settings, file.originalSettings]) {
10348
+ if (settings)
10349
+ deleteNestedPropertySafe(settings, key);
10350
+ }
10351
+ this.settings.recomputeMerged();
10352
+ }
10153
10353
  /**
10154
10354
  * Sends a current_mode_update notification to the client.
10155
10355
  * Called after the agent switches modes (e.g., from exit_plan_mode tool).
@@ -10810,6 +11010,8 @@ ${this.pendingRecoveredAgentsNotice}
10810
11010
  let nestedPermissionCancelled = false;
10811
11011
  let agentToolAbortController;
10812
11012
  let removeAgentToolAbortPropagation;
11013
+ let todoPlanApprovalGeneration;
11014
+ let todoPlanApprovalRevision;
10813
11015
  let subAgentCleanupFunctions = [];
10814
11016
  const cleanupAgentToolResources = /* @__PURE__ */ __name(() => {
10815
11017
  subAgentCleanupFunctions.forEach((cleanup) => cleanup());
@@ -11261,8 +11463,10 @@ ${this.pendingRecoveredAgentsNotice}
11261
11463
  }
11262
11464
  );
11263
11465
  case "fallback":
11264
- wasAutoModeManualFallback = isDenialFallbackReason(outcome.reason) || outcome.reason === "classifier_unavailable";
11265
- autoModeFallbackMessage = outcome.message;
11466
+ wasAutoModeManualFallback = isDenialFallbackReason(outcome.reason) || outcome.reason === "classifier_unavailable" || outcome.reason === "external_write";
11467
+ if (outcome.reason === "classifier_unavailable" || outcome.reason === "external_write") {
11468
+ autoModeFallbackMessage = outcome.message;
11469
+ }
11266
11470
  if (wasAutoModeManualFallback) {
11267
11471
  debugLogger6.warn(
11268
11472
  `Auto mode fallback to manual approval (${outcome.reason}): ` + formatDenialStateLog(denialState)
@@ -11277,6 +11481,34 @@ ${this.pendingRecoveredAgentsNotice}
11277
11481
  }
11278
11482
  let didRequestPermission = false;
11279
11483
  let confirmationDetails;
11484
+ const cancelStaleTodoPlanApproval = /* @__PURE__ */ __name(async () => {
11485
+ const configRevision = this.config.getSessionWorkflowPlanRevision?.();
11486
+ if (todoPlanApprovalGeneration === void 0 || !todoPlanApprovalRevision || todoPlanApprovalGeneration === this.todoPlanRevisionGeneration && this.activeTodoPlanRevision?.planId === todoPlanApprovalRevision.planId && this.activeTodoPlanRevision?.sourceCallId === todoPlanApprovalRevision.sourceCallId && configRevision?.planId === todoPlanApprovalRevision.planId && configRevision?.sourceCallId === todoPlanApprovalRevision.sourceCallId) {
11487
+ return void 0;
11488
+ }
11489
+ try {
11490
+ await confirmationDetails?.onConfirm(
11491
+ "cancel" /* Cancel */
11492
+ );
11493
+ } catch (error) {
11494
+ debugLogger6.warn(
11495
+ `Failed to cancel stale plan approval: ${this.#formatError(error)}`
11496
+ );
11497
+ }
11498
+ onStopAfterPermissionCancel?.();
11499
+ return earlyErrorResponse(
11500
+ new Error(
11501
+ "Plan approval is stale because its Session Workflow revision changed. No action was taken."
11502
+ ),
11503
+ toolName,
11504
+ {
11505
+ status: "cancelled",
11506
+ errorType: void 0,
11507
+ executionStatus: "not_started",
11508
+ stopAfterPermissionCancel: true
11509
+ }
11510
+ );
11511
+ }, "cancelStaleTodoPlanApproval");
11280
11512
  const recordAutoModeFallbackResolution = /* @__PURE__ */ __name((outcome) => {
11281
11513
  if (approvalMode === "auto" /* AUTO */ && wasAutoModeManualFallback && isApproveOutcome(outcome)) {
11282
11514
  const before = this.config.getAutoModeDenialState();
@@ -11509,6 +11741,12 @@ ${this.pendingRecoveredAgentsNotice}
11509
11741
  const offeredPermissionOptions = permissionOptions.map(
11510
11742
  (option) => ({ ...option })
11511
11743
  );
11744
+ const workflowPlanRevision = isExitPlanModeTool ? this.config.getSessionWorkflowPlanRevision?.() : void 0;
11745
+ const qwenTodoApproval = isExitPlanModeTool && this.activeTodoPlanRevision && workflowPlanRevision?.planId === this.activeTodoPlanRevision.planId && workflowPlanRevision.sourceCallId === this.activeTodoPlanRevision.sourceCallId ? this.activeTodoPlanRevision : void 0;
11746
+ if (qwenTodoApproval) {
11747
+ todoPlanApprovalGeneration = this.todoPlanRevisionGeneration;
11748
+ todoPlanApprovalRevision = qwenTodoApproval;
11749
+ }
11512
11750
  const params = {
11513
11751
  sessionId: this.sessionId,
11514
11752
  options: permissionOptions,
@@ -11527,9 +11765,7 @@ ${this.pendingRecoveredAgentsNotice}
11527
11765
  _meta: {
11528
11766
  toolName,
11529
11767
  ...interactionMetaFields(confirmationDetails),
11530
- ...isExitPlanModeTool && this.activeTodoPlanRevision ? {
11531
- qwenTodoApproval: this.activeTodoPlanRevision
11532
- } : {}
11768
+ ...qwenTodoApproval ? { qwenTodoApproval } : {}
11533
11769
  }
11534
11770
  }
11535
11771
  };
@@ -11560,6 +11796,8 @@ ${this.pendingRecoveredAgentsNotice}
11560
11796
  if (permissionRequestCancellation) {
11561
11797
  return permissionRequestCancellation;
11562
11798
  }
11799
+ const staleTodoPlanApproval2 = await cancelStaleTodoPlanApproval();
11800
+ if (staleTodoPlanApproval2) return staleTodoPlanApproval2;
11563
11801
  outcome = resolvePermissionOutcome(
11564
11802
  output,
11565
11803
  offeredPermissionOptions
@@ -11816,6 +12054,8 @@ ${this.pendingRecoveredAgentsNotice}
11816
12054
  if (executionBoundaryCancellation) {
11817
12055
  return executionBoundaryCancellation;
11818
12056
  }
12057
+ const staleTodoPlanApproval = await cancelStaleTodoPlanApproval();
12058
+ if (staleTodoPlanApproval) return staleTodoPlanApproval;
11819
12059
  const continuedAgentId = toolName === ToolNames.SEND_MESSAGE && typeof args["task_id"] === "string" && args["task_id"].length > 0 ? args["task_id"] : void 0;
11820
12060
  const provisionalRelatedAgent = continuedAgentId !== void 0 && !this.relatedAgentIds.has(continuedAgentId);
11821
12061
  if (provisionalRelatedAgent) {
@@ -11977,7 +12217,7 @@ ${this.pendingRecoveredAgentsNotice}
11977
12217
  if ((isEnterPlanModeTool || isExitPlanModeTool) && !toolResult.error && this.config.getApprovalMode() !== approvalMode) {
11978
12218
  await this.sendCurrentModeUpdateNotification();
11979
12219
  if (this.config.getApprovalMode() === "plan" /* PLAN */) {
11980
- this.activeTodoPlanRevision = void 0;
12220
+ this.clearActiveTodoPlanRevision();
11981
12221
  this.#clearTodoStopGuardTrustAndDrainAutomaticQueues();
11982
12222
  }
11983
12223
  }
@@ -12326,12 +12566,18 @@ ${this.pendingRecoveredAgentsNotice}
12326
12566
  this.refreshContextFilesOnWrite = result.type === "submit_prompt" && Boolean(result.refreshContextFilesOnWrite);
12327
12567
  const recorder = shouldRecordResult ? this.config.getChatRecordingService() : void 0;
12328
12568
  switch (result.type) {
12329
- case "submit_prompt":
12569
+ case "submit_prompt": {
12570
+ const expandedPrompt = normalizePartList(result.content);
12571
+ const attachmentBlocks = result.resolvedCommand?.kind === "built-in" /* BUILT_IN */ ? [] : originalPrompt.filter((block) => block.type !== "text");
12572
+ const attachmentParts = attachmentBlocks.length === 0 ? [] : await this.#resolvePrompt(attachmentBlocks, abortSignal, {
12573
+ deferBridgeConversions: true
12574
+ });
12330
12575
  return this.#applyBridgeConversionsIfNeeded(
12331
- normalizePartList(result.content),
12576
+ [...attachmentParts, ...expandedPrompt],
12332
12577
  abortSignal,
12333
12578
  onFullTurnModel
12334
12579
  );
12580
+ }
12335
12581
  case "message": {
12336
12582
  if (result.messageType === "error") {
12337
12583
  throw new Error(result.content || "Slash command failed.");
@@ -15067,6 +15313,23 @@ function readCoreSettingValues(source) {
15067
15313
  return values;
15068
15314
  }
15069
15315
  __name(readCoreSettingValues, "readCoreSettingValues");
15316
+ function foldReloadApprovalMode(raw) {
15317
+ if (!raw) {
15318
+ return "auto" /* AUTO */;
15319
+ }
15320
+ if (typeof raw === "string") {
15321
+ try {
15322
+ return parseApprovalModeValue(raw);
15323
+ } catch {
15324
+ }
15325
+ }
15326
+ return void 0;
15327
+ }
15328
+ __name(foldReloadApprovalMode, "foldReloadApprovalMode");
15329
+ function isRestrictedApprovalModeConfig(config) {
15330
+ return config.isSafeMode?.() === true || config.getBareMode?.() === true;
15331
+ }
15332
+ __name(isRestrictedApprovalModeConfig, "isRestrictedApprovalModeConfig");
15070
15333
  function normalizeCoreSettingValue(key, value) {
15071
15334
  const definition = QWEN_CORE_SETTING_DEFINITIONS[key];
15072
15335
  switch (definition.type) {
@@ -16256,6 +16519,26 @@ var QwenAgent = class _QwenAgent {
16256
16519
  transcriptReplayConfigCache = /* @__PURE__ */ new Map();
16257
16520
  pendingConfigCleanup = /* @__PURE__ */ new Map();
16258
16521
  initializingConfigs = /* @__PURE__ */ new Set();
16522
+ sessionWorkflowEnabledOverride;
16523
+ /**
16524
+ * The last file-derived approval mode each live session actually
16525
+ * converged on, seeded with the session's boot-derived mode at
16526
+ * publication. `workspaceReload` compares the reloaded disk value against
16527
+ * this — not against each session's live mode — because approval mode has
16528
+ * runtime-only writers (`ExitPlanModeTool` approved plan exits, ACP
16529
+ * `session/set_mode`, the `sessionApprovalMode` ext) that never persist,
16530
+ * so a live session legitimately diverges from the file mid-workflow and
16531
+ * an unchanged file must not clobber those transitions. The record lives
16532
+ * on the daemon so it survives a `this.settings` cache swap, and per
16533
+ * session because one daemon-wide baseline cannot represent a partially
16534
+ * applied convergence: while a session skipped mid-flip still waits for
16535
+ * its value, the file can round-trip back to the old baseline and strand
16536
+ * the already-flipped sessions on the intermediate mode. An entry advances
16537
+ * only when that session successfully converges, so skipped sessions and
16538
+ * failed applies retry on the next reload, and an unparseable file value
16539
+ * (undefined fold) is never recorded.
16540
+ */
16541
+ sessionApprovalModeConverged = /* @__PURE__ */ new Map();
16259
16542
  managedShuttingDown = false;
16260
16543
  clientCapabilities;
16261
16544
  /** Set once the daemon negotiates active-work reporting; one per channel. */
@@ -16648,6 +16931,10 @@ var QwenAgent = class _QwenAgent {
16648
16931
  config.setAllowedMcpServers(gating.allowed);
16649
16932
  config.setPendingMcpServers(gating.pending);
16650
16933
  await config.reinitializeMcpServers(mcpServers);
16934
+ const llmClient = config.getLlmClient?.();
16935
+ if (llmClient?.isInitialized?.()) {
16936
+ await llmClient.setTools?.();
16937
+ }
16651
16938
  } catch (error) {
16652
16939
  syncErrors.push(error);
16653
16940
  }
@@ -16770,6 +17057,7 @@ var QwenAgent = class _QwenAgent {
16770
17057
  cleanupErrors.push(error);
16771
17058
  }
16772
17059
  this.sessions.delete(sessionId);
17060
+ this.sessionApprovalModeConverged.delete(sessionId);
16773
17061
  try {
16774
17062
  this.pruneDrainedWorkflowRegistries();
16775
17063
  const registry = session.getConfig().getWorkflowRunRegistry?.();
@@ -17121,7 +17409,7 @@ var QwenAgent = class _QwenAgent {
17121
17409
  }
17122
17410
  this.clientCapabilities = args.clientCapabilities;
17123
17411
  const authMethods = buildAuthMethods();
17124
- const version = "0.22.3-nightly.20260831.3a0c4c6108";
17412
+ const version = "0.23.0";
17125
17413
  const response = {
17126
17414
  protocolVersion: PROTOCOL_VERSION,
17127
17415
  agentInfo: {
@@ -17214,7 +17502,11 @@ var QwenAgent = class _QwenAgent {
17214
17502
  }
17215
17503
  await clearCachedCredentialFile();
17216
17504
  try {
17217
- await this.config.refreshAuth(method);
17505
+ await this.refreshAuthWithPersistedReasoning(
17506
+ this.config,
17507
+ this.settings,
17508
+ method
17509
+ );
17218
17510
  this.settings.setValue(
17219
17511
  "User" /* User */,
17220
17512
  "security.auth.selectedType",
@@ -17341,7 +17633,7 @@ var QwenAgent = class _QwenAgent {
17341
17633
  if (!provisionalStandalone) {
17342
17634
  await profiler.time(
17343
17635
  "auth",
17344
- () => this.ensureAuthenticated(config)
17636
+ () => this.ensureAuthenticated(config, settings)
17345
17637
  );
17346
17638
  initializationDeadline?.signal.throwIfAborted();
17347
17639
  profiler.timeSync(
@@ -17578,7 +17870,10 @@ var QwenAgent = class _QwenAgent {
17578
17870
  () => restoreSessionModelThenAuthenticate(
17579
17871
  config,
17580
17872
  projection,
17581
- () => profiler.time("auth", () => this.ensureAuthenticated(config))
17873
+ () => profiler.time(
17874
+ "auth",
17875
+ () => this.ensureAuthenticated(config, settings)
17876
+ )
17582
17877
  )
17583
17878
  );
17584
17879
  profiler.timeSync(
@@ -17599,7 +17894,7 @@ var QwenAgent = class _QwenAgent {
17599
17894
  projection,
17600
17895
  () => profiler.time(
17601
17896
  "auth",
17602
- () => this.ensureAuthenticated(config)
17897
+ () => this.ensureAuthenticated(config, settings)
17603
17898
  )
17604
17899
  )
17605
17900
  ), "beforeDeferredWorkspaceActivation")
@@ -17886,7 +18181,10 @@ var QwenAgent = class _QwenAgent {
17886
18181
  () => restoreSessionModelThenAuthenticate(
17887
18182
  config,
17888
18183
  projection,
17889
- () => profiler.time("auth", () => this.ensureAuthenticated(config))
18184
+ () => profiler.time(
18185
+ "auth",
18186
+ () => this.ensureAuthenticated(config, settings)
18187
+ )
17890
18188
  )
17891
18189
  );
17892
18190
  profiler.timeSync(
@@ -17907,7 +18205,7 @@ var QwenAgent = class _QwenAgent {
17907
18205
  projection,
17908
18206
  () => profiler.time(
17909
18207
  "auth",
17910
- () => this.ensureAuthenticated(config)
18208
+ () => this.ensureAuthenticated(config, settings)
17911
18209
  )
17912
18210
  )
17913
18211
  ), "beforeDeferredWorkspaceActivation")
@@ -18073,62 +18371,81 @@ var QwenAgent = class _QwenAgent {
18073
18371
  break;
18074
18372
  }
18075
18373
  case "reasoning_effort": {
18076
- const generation = session.getConfig().getContentGeneratorConfig();
18077
- const thinkingMandatory = generation.thinkingMandatory === true;
18078
- const modelReasoning = this.getModelReasoningConfiguration(
18079
- session.getConfig()
18080
- );
18081
- if (modelReasoning) {
18082
- const effortValues = modelReasoning.toggleOnly ? void 0 : modelReasoning.efforts;
18083
- const selected = value === REASONING_EFFORT_NONE && !thinkingMandatory ? REASONING_EFFORT_NONE : modelReasoning.toggleOnly ? value === REASONING_EFFORT_DEFAULT ? REASONING_EFFORT_DEFAULT : void 0 : effortValues?.find((effort2) => effort2 === value);
18084
- if (!selected) {
18085
- const choices = [
18086
- ...thinkingMandatory ? [] : [REASONING_EFFORT_NONE],
18087
- ...effortValues ?? [REASONING_EFFORT_DEFAULT]
18088
- ];
18089
- throw RequestError.invalidParams(
18090
- void 0,
18091
- `Unknown reasoning effort: ${value}. Choose one of: ${choices.join(", ")}`
18092
- );
18093
- }
18094
- if (!modelReasoning.toggleOnly) {
18095
- for (const source of ["extra_body", "samplingParams"]) {
18096
- const layer = generation[source];
18097
- if (!layer) continue;
18098
- const next = { ...layer };
18099
- delete next["enable_thinking"];
18100
- delete next["reasoning_effort"];
18101
- delete next["thinking_budget"];
18102
- generation[source] = next;
18103
- }
18104
- }
18105
- if (selected === REASONING_EFFORT_NONE) {
18106
- generation.reasoning = false;
18107
- } else if (selected === REASONING_EFFORT_DEFAULT) {
18108
- generation.reasoning = void 0;
18109
- } else {
18110
- const current = generation.reasoning;
18111
- generation.reasoning = {
18112
- ...current || {},
18113
- effort: selected
18114
- };
18115
- }
18116
- break;
18117
- }
18118
- const effort = value === REASONING_EFFORT_DEFAULT ? void 0 : REASONING_EFFORT_TIERS.find((tier) => tier === value);
18119
- if (value !== REASONING_EFFORT_DEFAULT && effort === void 0) {
18374
+ const config = session.getConfig();
18375
+ const generation = config.getContentGeneratorConfig();
18376
+ const option = this.buildConfigOptions(config).find(
18377
+ (candidate) => candidate.id === "reasoning_effort"
18378
+ );
18379
+ const modelReasoning = this.getModelReasoningConfiguration(config);
18380
+ const selected = parseReasoningSelection(value);
18381
+ const choices = option?.options.flatMap(
18382
+ (choice) => "value" in choice ? [choice.value] : choice.options.map((nested) => nested.value)
18383
+ ) ?? [];
18384
+ if (!option || !selected || selected !== REASONING_EFFORT_DEFAULT && !choices.includes(selected)) {
18385
+ const allowedChoices = modelReasoning ? choices : [
18386
+ REASONING_EFFORT_DEFAULT,
18387
+ ...choices.filter(
18388
+ (choice) => choice !== REASONING_EFFORT_DEFAULT
18389
+ )
18390
+ ];
18120
18391
  throw RequestError.invalidParams(
18121
18392
  void 0,
18122
- `Unknown reasoning effort: ${value}. Choose one of: ${REASONING_EFFORT_DEFAULT}, ${REASONING_EFFORT_TIERS.join(", ")}`
18393
+ option ? `Unknown reasoning effort: ${String(value)}. Choose one of: ${allowedChoices.join(", ")}` : "Reasoning is not supported by the current model"
18123
18394
  );
18124
18395
  }
18125
- if (!applyReasoningEffort(session.getConfig(), effort)) {
18396
+ const persist = params._meta?.[PERSIST_REASONING_SELECTION_META_KEY] === true;
18397
+ const tierSelected = selected !== REASONING_EFFORT_NONE && selected !== REASONING_EFFORT_DEFAULT;
18398
+ if (!modelReasoning && tierSelected && generation.reasoning === false) {
18126
18399
  throw RequestError.invalidParams(
18127
18400
  void 0,
18128
18401
  "Reasoning effort cannot be applied while thinking is disabled"
18129
18402
  );
18130
18403
  }
18131
- break;
18404
+ const defaultReasoning = session.getDefaultReasoningConfig();
18405
+ const previous = {
18406
+ reasoning: generation.reasoning,
18407
+ extra_body: generation.extra_body,
18408
+ samplingParams: generation.samplingParams
18409
+ };
18410
+ const rebuildable = config.getModelsConfig?.()?.getGenerationConfig?.();
18411
+ const previousRebuildableReasoning = rebuildable?.reasoning;
18412
+ try {
18413
+ if (modelReasoning && !modelReasoning.toggleOnly) {
18414
+ clearReasoningRequestOverrides(generation);
18415
+ }
18416
+ applyReasoningSelection(config, selected, defaultReasoning);
18417
+ if (!modelReasoning && selected !== REASONING_EFFORT_NONE) {
18418
+ config.setReasoningEffort?.(
18419
+ selected === REASONING_EFFORT_DEFAULT ? defaultReasoning ? defaultReasoning.effort : void 0 : selected
18420
+ );
18421
+ }
18422
+ const configOptions = this.buildConfigOptions(config);
18423
+ const confirmedValue = configOptions.find(
18424
+ (candidate) => candidate.id === "reasoning_effort"
18425
+ )?.currentValue;
18426
+ const confirmed = selected === REASONING_EFFORT_DEFAULT ? confirmedValue !== void 0 : confirmedValue === selected;
18427
+ if (!confirmed) {
18428
+ throw RequestError.invalidParams(
18429
+ void 0,
18430
+ modelReasoning ? `Reasoning selection was not applied: ${selected}` : "Reasoning effort cannot be applied while thinking is disabled"
18431
+ );
18432
+ }
18433
+ if (persist) {
18434
+ session.persistReasoningSelection(selected);
18435
+ }
18436
+ session.setSessionReasoningSelection(
18437
+ persist ? void 0 : selected
18438
+ );
18439
+ return {
18440
+ configOptions,
18441
+ ...persist ? { _meta: { [REASONING_SELECTION_PERSISTED_META_KEY]: true } } : {}
18442
+ };
18443
+ } catch (error) {
18444
+ Object.assign(generation, previous);
18445
+ if (rebuildable)
18446
+ rebuildable.reasoning = previousRebuildableReasoning;
18447
+ throw error;
18448
+ }
18132
18449
  }
18133
18450
  default:
18134
18451
  throw RequestError.invalidParams(
@@ -18512,7 +18829,12 @@ var QwenAgent = class _QwenAgent {
18512
18829
  hasOAuthTokens = credentials !== null;
18513
18830
  } catch {
18514
18831
  }
18515
- const rawStatus = this.getMcpServerStatus(config, name);
18832
+ const poolRow = poolByName[name];
18833
+ const rawStatus = poolRow ? poolRow.entrySummary.some(
18834
+ (entry) => entry.status === "connected" /* CONNECTED */
18835
+ ) ? "connected" /* CONNECTED */ : poolRow.entrySummary.some(
18836
+ (entry) => entry.status === "connecting" /* CONNECTING */
18837
+ ) ? "connecting" /* CONNECTING */ : "disconnected" /* DISCONNECTED */ : this.getMcpServerStatus(config, name);
18516
18838
  const requiresAuth = rawStatus !== "connected" /* CONNECTED */ && (mcpServerRequiresOAuth.get(name) === true || server.oauth?.enabled === true && !hasOAuthTokens);
18517
18839
  const refusedByBudget = refusedSet.has(name);
18518
18840
  const effectivelyRefused = refusedByBudget && !disabled;
@@ -18602,7 +18924,6 @@ var QwenAgent = class _QwenAgent {
18602
18924
  out.config = serverConfig;
18603
18925
  }
18604
18926
  }
18605
- const poolRow = poolByName[name];
18606
18927
  if (poolRow) {
18607
18928
  out.entryCount = poolRow.entryCount;
18608
18929
  out.entrySummary = poolRow.entrySummary.map((e) => ({
@@ -19055,13 +19376,18 @@ var QwenAgent = class _QwenAgent {
19055
19376
  providers.set(authType, provider);
19056
19377
  }
19057
19378
  const isCurrent = currentAuth === model.authType && currentAcpModelId === modelId;
19058
- const configOptions = model.isRuntimeModel || modelId.startsWith(ACP_ROUTE_ID_PREFIX) ? void 0 : buildModelReasoningConfigPreview(model.id, {
19059
- thinkingMandatory: config.getResolvedModelConfig?.(
19060
- model.authType,
19379
+ const configOptions = model.isRuntimeModel || modelId.startsWith(ACP_ROUTE_ID_PREFIX) ? void 0 : buildModelReasoningConfigPreview(
19380
+ model.id,
19381
+ resolvePersistedReasoningConfigState(
19061
19382
  model.id,
19062
- model.registryBaseUrl ?? model.baseUrl
19063
- )?.generationConfig.thinkingMandatory === true
19064
- });
19383
+ this.settings.merged.model?.reasoningEffort,
19384
+ config.getResolvedModelConfig?.(
19385
+ model.authType,
19386
+ model.id,
19387
+ model.registryBaseUrl ?? model.baseUrl
19388
+ )?.generationConfig.thinkingMandatory === true
19389
+ )
19390
+ );
19065
19391
  const providerModel = {
19066
19392
  modelId,
19067
19393
  baseModelId: parseAcpBaseModelId(effectiveModelId),
@@ -20020,7 +20346,11 @@ var QwenAgent = class _QwenAgent {
20020
20346
  settings: adapter,
20021
20347
  reloadModelProviders: /* @__PURE__ */ __name((modelProviders) => this.config.reloadModelProvidersConfig(modelProviders), "reloadModelProviders"),
20022
20348
  syncAuthState: /* @__PURE__ */ __name((authType, modelId, baseUrl) => this.config.getModelsConfig().syncAfterAuthRefresh(authType, modelId, baseUrl), "syncAuthState"),
20023
- refreshAuth: /* @__PURE__ */ __name((authType) => this.config.refreshAuth(authType), "refreshAuth")
20349
+ refreshAuth: /* @__PURE__ */ __name((authType) => this.refreshAuthWithPersistedReasoning(
20350
+ this.config,
20351
+ this.settings,
20352
+ authType
20353
+ ), "refreshAuth")
20024
20354
  });
20025
20355
  const effectiveModelId = adapter.getValue("model.name") ?? plan.modelSelection?.modelId;
20026
20356
  const effectiveBaseUrl = adapter.getValue("model.baseUrl") ?? plan.modelSelection?.baseUrl;
@@ -21740,7 +22070,19 @@ var QwenAgent = class _QwenAgent {
21740
22070
  const previousCwd = config.getTargetDir();
21741
22071
  let trustValidated = false;
21742
22072
  const validateTrust = /* @__PURE__ */ __name(() => {
21743
- if (managedTrustAllowed || !isFolderTrustEnabled(this.settings.merged)) {
22073
+ if (managedTrustAllowed || // Folder-trust enablement is bound to the workspace this session
22074
+ // was admitted under: `config.getFolderTrust()` is
22075
+ // `security.folderTrust.enabled` from that workspace, set once at
22076
+ // construction and never moved by `relocateWorkingDirectory`.
22077
+ // Deliberately NOT the process-wide `this.settings` cache (holds
22078
+ // another workspace's value in a multi-workspace daemon — the bug
22079
+ // this fixes), and deliberately NOT a live re-read keyed on the
22080
+ // current cwd: a cd moves `targetDir` into a subdirectory that
22081
+ // carries no `.qwen/settings.json`, so a cwd-keyed read resolves
22082
+ // disabled after the first cd and disarms the gate for the rest of
22083
+ // the session. `security.folderTrust.enabled` is `requiresRestart`,
22084
+ // so binding it at admission matches its declared semantics.
22085
+ !config.getFolderTrust()) {
21744
22086
  trustValidated = true;
21745
22087
  return;
21746
22088
  }
@@ -21901,9 +22243,25 @@ var QwenAgent = class _QwenAgent {
21901
22243
  session.clearActiveTodoPlanRevision();
21902
22244
  }
21903
22245
  session.clearTodoStopGuardTrust();
22246
+ } else if (previous === "plan") {
22247
+ session.clearActiveTodoPlanRevision();
21904
22248
  }
21905
22249
  return { previous, current };
21906
22250
  }
22251
+ case SERVE_CONTROL_EXT_METHODS.workspaceSessionWorkflow: {
22252
+ const enabled = params["enabled"];
22253
+ if (typeof enabled !== "boolean") {
22254
+ throw RequestError.invalidParams(
22255
+ void 0,
22256
+ "Invalid or missing Session Workflow setting"
22257
+ );
22258
+ }
22259
+ if (this.sessionWorkflowEnabledOverride === enabled) {
22260
+ return { enabled, sessionsUpdated: 0 };
22261
+ }
22262
+ const sessionsUpdated = this.applySessionWorkflowOverrideToLiveSessions(enabled);
22263
+ return { enabled, sessionsUpdated };
22264
+ }
21907
22265
  case SERVE_CONTROL_EXT_METHODS.sessionLanguage: {
21908
22266
  const sessionId = params["sessionId"];
21909
22267
  const language = params["language"];
@@ -22009,6 +22367,51 @@ var QwenAgent = class _QwenAgent {
22009
22367
  }
22010
22368
  return { language: resolvedLanguage, outputLanguage, refreshed };
22011
22369
  }
22370
+ case SERVE_CONTROL_EXT_METHODS.userLanguage: {
22371
+ const language = params["language"];
22372
+ const syncOutputLanguage = params["syncOutputLanguage"] === true;
22373
+ const allowedLanguages = [
22374
+ ...SUPPORTED_LANGUAGES.map((l) => l.code),
22375
+ "auto"
22376
+ ];
22377
+ if (typeof language !== "string" || !allowedLanguages.includes(language)) {
22378
+ throw RequestError.invalidParams(
22379
+ void 0,
22380
+ `Invalid language; must be one of: ${allowedLanguages.join(", ")}`
22381
+ );
22382
+ }
22383
+ try {
22384
+ await setLanguageAsync(language);
22385
+ } catch (err) {
22386
+ debugLogger9.warn("setLanguageAsync failed:", err);
22387
+ throw new RequestError(
22388
+ -32603,
22389
+ `Failed to switch UI language: ${err instanceof Error ? err.message : String(err)}`
22390
+ );
22391
+ }
22392
+ const resolvedLanguage = getCurrentLanguage();
22393
+ this.settings.reloadScopeFromDisk("User" /* User */);
22394
+ let sessions = 0;
22395
+ let failed = 0;
22396
+ if (syncOutputLanguage) {
22397
+ const allSessions = [...this.sessions.values()];
22398
+ const results = await Promise.allSettled(
22399
+ allSessions.map(async (s) => {
22400
+ const cfg = s.getConfig();
22401
+ await cfg.refreshHierarchicalMemory();
22402
+ await cfg.getLlmClient()?.refreshSystemInstruction();
22403
+ })
22404
+ );
22405
+ sessions = results.length;
22406
+ failed = results.filter((r) => r.status === "rejected").length;
22407
+ if (failed > 0) {
22408
+ debugLogger9.warn(
22409
+ `User language refresh failed for ${failed}/${results.length} session(s)`
22410
+ );
22411
+ }
22412
+ }
22413
+ return { language: resolvedLanguage, sessions, failed };
22414
+ }
22012
22415
  case SERVE_CONTROL_EXT_METHODS.sessionRecap: {
22013
22416
  const sessionId = params["sessionId"];
22014
22417
  if (typeof sessionId !== "string" || sessionId.length === 0) {
@@ -23511,6 +23914,19 @@ ${outputText}
23511
23914
  if (providersChanged) {
23512
23915
  this.modelProviderReloadRevision += 1;
23513
23916
  }
23917
+ const readSessionWorkflow = /* @__PURE__ */ __name((merged) => merged.experimental?.sessionWorkflow === true, "readSessionWorkflow");
23918
+ const reloadedSessionWorkflow = readSessionWorkflow(newMerged);
23919
+ this.applySessionWorkflowOverrideToLiveSessions(
23920
+ reloadedSessionWorkflow
23921
+ );
23922
+ const reloadedApprovalMode = foldReloadApprovalMode(
23923
+ newMerged.tools?.approvalMode
23924
+ );
23925
+ if (reloadedApprovalMode === void 0) {
23926
+ debugLogger9.warn(
23927
+ "reload: tools.approvalMode holds a value boot would reject; live sessions keep their current modes until the file is corrected"
23928
+ );
23929
+ }
23514
23930
  const sessions = [...this.sessions.entries()];
23515
23931
  const refreshed = [];
23516
23932
  const skipped = [];
@@ -23538,6 +23954,7 @@ ${outputText}
23538
23954
  if (changed.has("model") && newModelName && newModelName !== config.getModel() && authType) {
23539
23955
  try {
23540
23956
  await config.switchModel(authType, newModelName);
23957
+ session.reloadReasoningSelection();
23541
23958
  } catch (err) {
23542
23959
  debugLogger9.warn(
23543
23960
  `reload: switchModel failed for session ${id}: ${err}`
@@ -23545,44 +23962,65 @@ ${outputText}
23545
23962
  }
23546
23963
  } else if ((providersChanged || envChanged) && authType) {
23547
23964
  try {
23548
- await config.refreshAuth(authType);
23965
+ await this.refreshAuthWithPersistedReasoning(
23966
+ config,
23967
+ this.settings,
23968
+ authType,
23969
+ void 0,
23970
+ session.getSessionReasoningSelection()
23971
+ );
23972
+ session.reloadReasoningSelection();
23549
23973
  } catch (err) {
23550
23974
  debugLogger9.warn(
23551
23975
  `reload: refreshAuth failed for session ${id}: ${err}`
23552
23976
  );
23553
23977
  }
23978
+ } else if (changed.has("model")) {
23979
+ session.reloadReasoningSelection();
23554
23980
  }
23555
23981
  if (changed.has("tools")) {
23556
23982
  const disabled = normalizeDisabledToolList(
23557
23983
  newMerged.tools?.disabled
23558
23984
  );
23559
23985
  config.setDisabledTools(new Set(disabled));
23560
- const workflowsWereEnabled = config.isWorkflowsEnabled();
23561
- config.setWorkflowsEnabled(
23562
- newMerged.tools?.workflowsEnabled === true
23563
- );
23564
- if (config.isWorkflowsEnabled() !== workflowsWereEnabled) {
23565
- try {
23566
- await session.sendAvailableCommandsUpdate();
23567
- } catch (err) {
23568
- debugLogger9.warn(
23569
- `reload: sendAvailableCommandsUpdate failed for session ${id}: ${err}`
23570
- );
23571
- }
23986
+ }
23987
+ const workflowsWereEnabled = config.isWorkflowsEnabled();
23988
+ config.setWorkflowsEnabled(
23989
+ newMerged.tools?.workflowsEnabled === true
23990
+ );
23991
+ if (config.isWorkflowsEnabled() !== workflowsWereEnabled) {
23992
+ try {
23993
+ await session.sendAvailableCommandsUpdate();
23994
+ } catch (err) {
23995
+ debugLogger9.warn(
23996
+ `reload: sendAvailableCommandsUpdate failed for session ${id}: ${err}`
23997
+ );
23572
23998
  }
23573
- const newMode = newMerged.tools?.approvalMode;
23574
- if (newMode && APPROVAL_MODES.includes(newMode) && newMode !== config.getApprovalMode()) {
23999
+ }
24000
+ const reloadedSessionMode = isRestrictedApprovalModeConfig(config) ? "default" /* DEFAULT */ : reloadedApprovalMode;
24001
+ const previousMode = config.getApprovalMode();
24002
+ const convergedMode = this.sessionApprovalModeConverged.get(id);
24003
+ if (reloadedSessionMode !== void 0 && reloadedSessionMode !== convergedMode) {
24004
+ if (reloadedSessionMode !== previousMode) {
23575
24005
  try {
23576
- config.setApprovalMode(newMode);
23577
- if (newMode === "plan") {
24006
+ config.setApprovalMode(reloadedSessionMode);
24007
+ if (reloadedSessionMode === "plan") {
23578
24008
  session.clearActiveTodoPlanRevision();
23579
24009
  session.clearTodoStopGuardTrust();
24010
+ } else if (previousMode === "plan") {
24011
+ session.clearActiveTodoPlanRevision();
23580
24012
  }
24013
+ this.sessionApprovalModeConverged.set(
24014
+ id,
24015
+ reloadedSessionMode
24016
+ );
23581
24017
  } catch (err) {
23582
24018
  debugLogger9.warn(
23583
24019
  `reload: setApprovalMode failed for session ${id}: ${err}`
23584
24020
  );
23585
24021
  }
24022
+ } else {
24023
+ this.sessionApprovalModeConverged.set(id, reloadedSessionMode);
23586
24024
  }
23587
24025
  }
23588
24026
  try {
@@ -24051,7 +24489,30 @@ ${outputText}
24051
24489
  );
24052
24490
  }
24053
24491
  }
24054
- async ensureAuthenticated(config) {
24492
+ async refreshAuthWithPersistedReasoning(config, settings, authType, isInitialAuth, sessionSelection) {
24493
+ await config.refreshAuth(authType, isInitialAuth);
24494
+ const selection = sessionSelection ?? parseReasoningSelection(settings.merged.model?.reasoningEffort);
24495
+ if (!selection || selection === REASONING_EFFORT_DEFAULT) {
24496
+ return;
24497
+ }
24498
+ const generation = config.getContentGeneratorConfig?.();
24499
+ const modelId = generation?.model ?? config.getModel();
24500
+ if (!isReasoningSelectionSupported(
24501
+ modelId,
24502
+ selection,
24503
+ generation?.thinkingMandatory === true
24504
+ )) {
24505
+ return;
24506
+ }
24507
+ const modelReasoning = this.getModelReasoningConfiguration(config);
24508
+ if (generation && modelReasoning && !modelReasoning.toggleOnly) {
24509
+ clearReasoningRequestOverrides(generation);
24510
+ }
24511
+ if (selection === REASONING_EFFORT_NONE) {
24512
+ applyReasoningSelection(config, REASONING_EFFORT_NONE);
24513
+ }
24514
+ }
24515
+ async ensureAuthenticated(config, settings) {
24055
24516
  const selectedType = config.getModelsConfig().getCurrentAuthType();
24056
24517
  if (!selectedType) {
24057
24518
  throw RequestError.authRequired(
@@ -24060,7 +24521,12 @@ ${outputText}
24060
24521
  );
24061
24522
  }
24062
24523
  try {
24063
- await config.refreshAuth(selectedType, true);
24524
+ await this.refreshAuthWithPersistedReasoning(
24525
+ config,
24526
+ settings,
24527
+ selectedType,
24528
+ true
24529
+ );
24064
24530
  } catch (e) {
24065
24531
  debugLogger9.error(`Authentication failed: ${e}`);
24066
24532
  throw RequestError.authRequired(
@@ -24071,6 +24537,37 @@ ${outputText}
24071
24537
  );
24072
24538
  }
24073
24539
  }
24540
+ /**
24541
+ * Pins the workflow gate of every live Session whose effective gate
24542
+ * actually changes to `enabled`, dropping the bound plan revision on those
24543
+ * sessions, then records `enabled` as the daemon-held override. The no-op
24544
+ * decision is per-session because neither caller's own state can answer it:
24545
+ * on a first UI write the override is still `undefined` although sessions
24546
+ * already derive the pushed value from settings (a shadowed workspace
24547
+ * write), and a reload diff can fire against a stale settings view that the
24548
+ * UI write path never updated. Each session's live value is read BEFORE the
24549
+ * field reassignment below so a pinned provider cannot report the new value
24550
+ * as its "before" state. The provider reads the field rather than capturing
24551
+ * a value so a later re-derivation (a settings-file reload) reaches
24552
+ * sessions that were pinned earlier. Returns the number of sessions whose
24553
+ * gate changed.
24554
+ */
24555
+ applySessionWorkflowOverrideToLiveSessions(enabled) {
24556
+ let sessionsUpdated = 0;
24557
+ for (const session of this.sessions.values()) {
24558
+ const config = session.getConfig();
24559
+ if (config.isSessionWorkflowEnabled?.() === enabled) {
24560
+ continue;
24561
+ }
24562
+ config.setSessionWorkflowEnabledProvider?.(
24563
+ () => this.sessionWorkflowEnabledOverride === true
24564
+ );
24565
+ session.clearActiveTodoPlanRevision();
24566
+ sessionsUpdated++;
24567
+ }
24568
+ this.sessionWorkflowEnabledOverride = enabled;
24569
+ return sessionsUpdated;
24570
+ }
24074
24571
  setupFileSystem(config) {
24075
24572
  if (!this.clientCapabilities?.fs) return;
24076
24573
  const acpFileSystemService = new AcpFileSystemService(
@@ -24225,7 +24722,7 @@ ${outputText}
24225
24722
  if (options.beforeDeferredWorkspaceActivation) {
24226
24723
  await options.beforeDeferredWorkspaceActivation();
24227
24724
  } else {
24228
- await this.ensureAuthenticated(config);
24725
+ await this.ensureAuthenticated(config, settings);
24229
24726
  }
24230
24727
  this.assertManagedSessionAdmission();
24231
24728
  await config.activateProvisionalWorkspace();
@@ -24286,7 +24783,7 @@ ${outputText}
24286
24783
  settings.merged.providerProtocol
24287
24784
  );
24288
24785
  if (forceAuthenticationRefresh || providerSettingsChanged || envReload.updatedKeys.length > 0 || envReload.removedKeys.length > 0) {
24289
- await this.ensureAuthenticated(config);
24786
+ await this.ensureAuthenticated(config, settings);
24290
24787
  }
24291
24788
  }
24292
24789
  if (providerReloadRevision === this.modelProviderReloadRevision) break;
@@ -24297,7 +24794,16 @@ ${outputText}
24297
24794
  if (options.deferWorkspaceActivation !== true) {
24298
24795
  config.hydrateSessionRestoreFileHistory?.();
24299
24796
  }
24797
+ if (this.sessionWorkflowEnabledOverride !== void 0) {
24798
+ config.setSessionWorkflowEnabledProvider?.(
24799
+ () => this.sessionWorkflowEnabledOverride === true
24800
+ );
24801
+ }
24300
24802
  this.sessions.set(sessionId, session);
24803
+ this.sessionApprovalModeConverged.set(
24804
+ sessionId,
24805
+ config.getApprovalMode()
24806
+ );
24301
24807
  published = true;
24302
24808
  this.activeWorkReporter?.notifyChanged();
24303
24809
  this.initializingConfigs.delete(config);
@@ -24429,7 +24935,16 @@ ${outputText}
24429
24935
  currentValue: currentModelId,
24430
24936
  options: configModelOptions
24431
24937
  };
24432
- const generation = config.getContentGeneratorConfig();
24938
+ if (activeRuntimeSnapshot || currentModelId.startsWith(ACP_ROUTE_ID_PREFIX) || !isReasoningSelectionSupported(
24939
+ rawCurrentModelId,
24940
+ REASONING_EFFORT_DEFAULT
24941
+ )) {
24942
+ return [modeConfigOption, modelConfigOption];
24943
+ }
24944
+ const generation = config.getContentGeneratorConfig?.();
24945
+ if (!generation) {
24946
+ return [modeConfigOption, modelConfigOption];
24947
+ }
24433
24948
  const modelReasoning = this.getModelReasoningConfiguration(
24434
24949
  config,
24435
24950
  currentModelId
@@ -24448,6 +24963,7 @@ ${outputText}
24448
24963
  (effort) => effort === normalizedOverrideEffort
24449
24964
  ) ?? modelReasoning.defaultEffort : currentModelEffort : currentModelEffort;
24450
24965
  const reasoningEnabled = generation.reasoning !== false && (!reasoningOverride || !overrideDisablesReasoning);
24966
+ const canDisableReasoning = generation.thinkingMandatory !== true;
24451
24967
  const reasoningEffortConfigOption = (modelReasoning ? buildModelReasoningConfigOption(rawCurrentModelId, {
24452
24968
  enabled: reasoningEnabled,
24453
24969
  effort: effectiveModelEffort,
@@ -24458,8 +24974,15 @@ ${outputText}
24458
24974
  description: "How hard reasoning-capable models should think",
24459
24975
  category: "thought_level",
24460
24976
  type: "select",
24461
- currentValue: currentModelEffort ?? REASONING_EFFORT_DEFAULT,
24977
+ currentValue: generation.reasoning === false && canDisableReasoning ? REASONING_EFFORT_NONE : currentModelEffort ?? REASONING_EFFORT_DEFAULT,
24462
24978
  options: [
24979
+ ...canDisableReasoning ? [
24980
+ {
24981
+ value: REASONING_EFFORT_NONE,
24982
+ name: "Thinking off",
24983
+ description: "Disable thinking for this session"
24984
+ }
24985
+ ] : [],
24463
24986
  {
24464
24987
  value: REASONING_EFFORT_DEFAULT,
24465
24988
  name: "Default",