@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.2-nightly.20260909.2e212144d3

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 (335) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +189 -116
  3. package/bundled/goal-draft/SKILL.md +23 -13
  4. package/bundled/qc-helper/docs/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -16
  7. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  8. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  9. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  10. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  11. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  12. package/bundled/qc-helper/docs/features/channels/overview.md +27 -52
  13. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  14. package/bundled/qc-helper/docs/features/commands.md +79 -17
  15. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  16. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  17. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  18. package/bundled/qc-helper/docs/features/goals.md +17 -3
  19. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  20. package/bundled/qc-helper/docs/qwen-serve.md +80 -48
  21. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-ZBGWYJZW.js} +29 -28
  22. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-NR5ACIJZ.js} +48 -47
  23. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  24. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-DM6XRCDQ.js} +361 -210
  25. package/chunks/{agent-GEBPAEJS.js → agent-EF3IIYE3.js} +20 -20
  26. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-5J2KFYR4.js} +20 -20
  27. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-VIW2FG7G.js} +32 -9
  28. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  29. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-R3TXY77M.js} +1 -1
  30. package/chunks/{bridge-MHWO5I5T.js → bridge-LEMQM6QE.js} +32 -31
  31. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TGF6XFXT.js} +4 -4
  32. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FV365JSF.js} +40 -39
  33. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-SQ5FRWOH.js} +7 -7
  34. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-TU4ZNWOE.js} +7 -7
  35. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  36. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  37. package/chunks/{chunk-OFB36ZBA.js → chunk-2HYOOFDS.js} +10 -7
  38. package/chunks/chunk-2Z3T52OC.js +82 -0
  39. package/chunks/{chunk-LYHYXJJ3.js → chunk-34VPADLG.js} +3 -3
  40. package/chunks/{chunk-C7M445SS.js → chunk-3A2IMUDH.js} +14 -2
  41. package/chunks/{chunk-P5Z7VD23.js → chunk-3O77M472.js} +294 -87
  42. package/chunks/{chunk-4OCYWXKF.js → chunk-43EUMPKQ.js} +3 -3
  43. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  44. package/chunks/{chunk-VMFPZXRT.js → chunk-4DIMJKWU.js} +64 -43
  45. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  46. package/chunks/{chunk-VYCJITND.js → chunk-5HV2HPO7.js} +1 -1
  47. package/chunks/{chunk-22QOQKG4.js → chunk-5WBA3DEF.js} +1 -1
  48. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  49. package/chunks/{chunk-I7UNCY24.js → chunk-6GAYNM3F.js} +3 -3
  50. package/chunks/{chunk-2C3XDBGL.js → chunk-6S7YYUUH.js} +4 -4
  51. package/chunks/{chunk-Y3C5COGI.js → chunk-6VIATHL7.js} +1 -1
  52. package/chunks/{chunk-XNC2TCUO.js → chunk-76I36BEM.js} +4 -4
  53. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  54. package/chunks/{chunk-RGAQDQ3Z.js → chunk-7IDZFJAV.js} +18 -9
  55. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  56. package/chunks/{chunk-WLZRMF3C.js → chunk-7KZVXJ4U.js} +353 -11
  57. package/chunks/{chunk-REDVV5NC.js → chunk-7WCJEY3A.js} +7 -7
  58. package/chunks/{chunk-I67KJGM6.js → chunk-A7QZIGRB.js} +3 -3
  59. package/chunks/{chunk-SHX2HIE7.js → chunk-ATBLEXXV.js} +7 -2
  60. package/chunks/{chunk-RH344FKI.js → chunk-AUTUFD5X.js} +1 -1
  61. package/chunks/chunk-AXMWHKXA.js +42 -0
  62. package/chunks/{chunk-WFXD5OZH.js → chunk-AXWTG6R7.js} +2 -5
  63. package/chunks/{chunk-TSLRORQR.js → chunk-BDAVT6K2.js} +1809 -1588
  64. package/chunks/{chunk-HWZOOSEB.js → chunk-BDP3NTWD.js} +3 -3
  65. package/chunks/{chunk-RD3VPM4E.js → chunk-BZUHZCUO.js} +2 -2
  66. package/chunks/{chunk-HPE4LEWX.js → chunk-C24ZDDNY.js} +1 -1
  67. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  68. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  69. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  70. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  71. package/chunks/{chunk-GEV66YGE.js → chunk-D6AGS266.js} +1 -1
  72. package/chunks/{chunk-EPZWBYQI.js → chunk-D7DFZAK2.js} +19 -11
  73. package/chunks/{chunk-5V4B3EWA.js → chunk-DARWOZY6.js} +1 -1
  74. package/chunks/{chunk-XX4MBBFW.js → chunk-DGNRLJ6S.js} +4 -4
  75. package/chunks/{chunk-UTVIIA7N.js → chunk-DVOCOIS5.js} +1 -1
  76. package/chunks/{chunk-RQNAO42A.js → chunk-E4LXNQAK.js} +1 -1
  77. package/chunks/{chunk-EGRFCIXD.js → chunk-EATP5QCN.js} +84 -25
  78. package/chunks/{chunk-3RMVM33U.js → chunk-EDSU3VUG.js} +12 -5
  79. package/chunks/{chunk-733KQL63.js → chunk-EE5ZD4XU.js} +3 -3
  80. package/chunks/{chunk-QQGAR64U.js → chunk-EN3Q2S3J.js} +4 -4
  81. package/chunks/{chunk-PLUAIHZO.js → chunk-EOLGAQ25.js} +17 -16
  82. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  83. package/chunks/{chunk-L36LLVA5.js → chunk-EYCW6UF2.js} +7 -7
  84. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  85. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  86. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  87. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  88. package/chunks/{chunk-SI6Q52UI.js → chunk-FEEVHJOR.js} +3 -3
  89. package/chunks/{chunk-75UQFGFE.js → chunk-FN4KHWCL.js} +1 -1
  90. package/chunks/{chunk-WQBR7LN5.js → chunk-FRS3P7MQ.js} +15 -2
  91. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  92. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  93. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  94. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  95. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  96. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  97. package/chunks/{chunk-3K456UJF.js → chunk-HSO6D4KX.js} +93 -28
  98. package/chunks/{chunk-ANVC5CSK.js → chunk-HUJJFSMO.js} +10 -10
  99. package/chunks/{chunk-C4NXRR7T.js → chunk-HW4MRP4V.js} +2 -2
  100. package/chunks/{chunk-PMGWY6ZP.js → chunk-HWLLUDIA.js} +113 -18
  101. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  102. package/chunks/{chunk-7PMKXGRP.js → chunk-IKK6NNS6.js} +91 -31
  103. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  104. package/chunks/{chunk-BNWIX6BM.js → chunk-JFAGT5YG.js} +3 -3
  105. package/chunks/{chunk-RSU3I6UL.js → chunk-JGTMTJSQ.js} +1 -1
  106. package/chunks/{chunk-LTCI6ZOJ.js → chunk-JYGIJA4W.js} +1 -1
  107. package/chunks/{chunk-537SQ2AI.js → chunk-KECCLCXM.js} +146 -24
  108. package/chunks/{chunk-KAZWXVI3.js → chunk-KEPC5BOL.js} +5 -5
  109. package/chunks/{chunk-HZS3JRQW.js → chunk-L5VHJYHH.js} +40 -2
  110. package/chunks/{chunk-KTLT7VCX.js → chunk-LKBOBUA2.js} +2 -2
  111. package/chunks/{chunk-TDHVOZ65.js → chunk-LOBKNYPR.js} +2 -2
  112. package/chunks/{chunk-QW7BUOSI.js → chunk-LOVGQ3HZ.js} +26 -9
  113. package/chunks/{chunk-5FYGZ7E3.js → chunk-MUF4UGPB.js} +2 -2
  114. package/chunks/chunk-N3Z6Q7KC.js +384 -0
  115. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  116. package/chunks/chunk-NFXXBWSE.js +463 -0
  117. package/chunks/chunk-NOO4QFXM.js +171 -0
  118. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  119. package/chunks/{chunk-FXYNIZPW.js → chunk-NV4YYXFT.js} +51 -10
  120. package/chunks/{chunk-FWH4736Q.js → chunk-O6BFERWN.js} +3 -3
  121. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  122. package/chunks/{chunk-C55CR5I4.js → chunk-OVTPETDL.js} +6 -6
  123. package/chunks/chunk-PLEBBGHL.js +1401 -0
  124. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  125. package/chunks/{chunk-RRCNEW2A.js → chunk-PWR6BQ3U.js} +58 -4
  126. package/chunks/{chunk-SHK2SIR5.js → chunk-QA2B26PL.js} +4 -4
  127. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  128. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  129. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  130. package/chunks/{chunk-MFCWL4LI.js → chunk-SK6VACCM.js} +936 -481
  131. package/chunks/{chunk-SD7Y2PMC.js → chunk-SM66GFKJ.js} +2 -2
  132. package/chunks/{chunk-ADJD4LZF.js → chunk-SNMUO5Z7.js} +1 -1
  133. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  134. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  135. package/chunks/{chunk-YLFICBYK.js → chunk-SYKPMH2X.js} +3 -3
  136. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  137. package/chunks/{chunk-AX23QSX3.js → chunk-TRQNRP2H.js} +4 -4
  138. package/chunks/{chunk-AUJOWIT5.js → chunk-UQOP2APG.js} +4 -24
  139. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  140. package/chunks/{chunk-IGOIYZBG.js → chunk-VAWM3A5N.js} +2 -2
  141. package/chunks/{chunk-6KYWU726.js → chunk-VJJXG73H.js} +417 -292
  142. package/chunks/{chunk-ZNI3V2XA.js → chunk-VJWJOKOQ.js} +2 -2
  143. package/chunks/{chunk-AWDF462I.js → chunk-VR6Y23FW.js} +2 -2
  144. package/chunks/{chunk-T7TP5UQL.js → chunk-VX2NR3SD.js} +21 -6
  145. package/chunks/{chunk-65GHQ4FX.js → chunk-WDVV3LRM.js} +707 -216
  146. package/chunks/{chunk-KP5QK3FB.js → chunk-WEU6O6VN.js} +397 -54
  147. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  148. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  149. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  150. package/chunks/{chunk-RUMSY4ES.js → chunk-Y7YHAY32.js} +28 -10
  151. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  152. package/chunks/{chunk-B5FF3LRF.js → chunk-YIE6REQ5.js} +29 -17
  153. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  154. package/chunks/{chunk-TXAEXF2B.js → chunk-ZEFWBG2C.js} +737 -1136
  155. package/chunks/{chunk-AIMZIXZM.js → chunk-ZM2TCZZ7.js} +5 -7
  156. package/chunks/{chunk-ZT3XUGSU.js → chunk-ZZ7RVOTU.js} +135 -26
  157. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-SXFK3G4X.js} +33 -32
  158. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-QFPD26QO.js} +31 -30
  159. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-VXKNBODM.js} +35 -33
  160. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-7WSQETFR.js} +30 -29
  161. package/chunks/{daemon-LCUELM6E.js → daemon-U2456K5H.js} +2 -2
  162. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-I4DCSDUS.js} +29 -28
  163. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-5UV56RI4.js} +36 -35
  164. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-DKIBWTKU.js} +36 -35
  165. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CPSD7UKT.js} +36 -35
  166. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-D2RF35BL.js} +29 -28
  167. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  168. package/chunks/{dist-P6YWBITG.js → dist-6YDUH3BB.js} +817 -152
  169. package/chunks/{dist-T4PRA5EZ.js → dist-BNQVF565.js} +2 -8
  170. package/chunks/{dist-AI25RVRA.js → dist-F34J4FZX.js} +1 -1
  171. package/chunks/{dist-3H3WODVS.js → dist-F6JLAJLE.js} +1 -1
  172. package/chunks/{dist-NXW4DUUX.js → dist-K5GHMXIG.js} +2 -2
  173. package/chunks/{dist-YNQU4CKC.js → dist-NP7QKLVG.js} +2 -2
  174. package/chunks/{dist-VCAS67N5.js → dist-UFTFGI6I.js} +1 -1
  175. package/chunks/{dist-I74QLLQS.js → dist-XLV33CLY.js} +1 -2
  176. package/chunks/{dist-XINEKB5A.js → dist-ZDNJK74R.js} +3 -7
  177. package/chunks/{edit-WPVXLL3T.js → edit-4IBADZ3O.js} +20 -20
  178. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  179. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-YN3GPQU5.js} +20 -20
  180. package/chunks/{environment-5LLJ3I3W.js → environment-E272IJMF.js} +32 -31
  181. package/chunks/{errors-IQT3YZEP.js → errors-CVAH3RWQ.js} +31 -30
  182. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  183. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-24J5IHGC.js} +20 -20
  184. package/chunks/{fast-path-PAUQQEVU.js → fast-path-M5IDBMXF.js} +4 -4
  185. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  186. package/chunks/{glob-SQ7CTZ7F.js → glob-ERBD7JYP.js} +20 -20
  187. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-245ULLQT.js} +20 -20
  188. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-JDZHHZKK.js} +32 -31
  189. package/chunks/{i18n-SF5MPWEB.js → i18n-LA4D5IXM.js} +32 -29
  190. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  191. package/chunks/{initializer-CK4WPYZG.js → initializer-SHPTSWUZ.js} +36 -35
  192. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-QEQEPB3G.js} +29 -28
  193. package/chunks/{list-E3PS3EBJ.js → list-IBHCQWTF.js} +39 -38
  194. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  195. package/chunks/{llm-JQKBOYAF.js → llm-JAWCQLA4.js} +81 -75
  196. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-GOV3A23T.js} +23 -8
  197. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-RVE2GNVU.js} +36 -35
  198. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-SSHNN5YW.js} +22 -22
  199. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-BHSTITQO.js} +29 -28
  200. package/chunks/{mcp-I7G2AEWS.js → mcp-6ZZ7P2HU.js} +36 -35
  201. package/chunks/{monitor-4R76BCRZ.js → monitor-RKK6GSHG.js} +20 -20
  202. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-UQHP3G6P.js} +76 -72
  203. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-YM47A7WO.js} +20 -20
  204. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  205. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-FHKDWNI2.js} +11 -11
  206. package/chunks/{pidfile-TGIUY2GG.js → pidfile-SIIEJEEH.js} +32 -29
  207. package/chunks/{processUtils-3USXUQWX.js → processUtils-JF7CWBJC.js} +2 -2
  208. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-FXXHAEQU.js} +30 -29
  209. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-KFJ77JP6.js} +24 -24
  210. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  211. package/chunks/{read-file-R256LDWQ.js → read-file-S2NOCBIL.js} +4 -4
  212. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-QHHPSQWU.js} +33 -32
  213. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-F6TNOJUO.js} +5 -5
  214. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-KYBDQRDD.js} +229 -79
  215. package/chunks/{runtime-FS5TL6P7.js → runtime-3WNOFLCR.js} +43 -40
  216. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-RNBH56DJ.js} +34 -33
  217. package/chunks/{scheduler-EXU5HMVK.js → scheduler-ERMW7Q7B.js} +31 -30
  218. package/chunks/{send-message-GQKXGMPI.js → send-message-V5T3NMFM.js} +4 -4
  219. package/chunks/{serve-ITJC7WNN.js → serve-7NV46RMP.js} +36 -35
  220. package/chunks/{server-6JQY3PTU.js → server-6RZJR5QF.js} +1358 -932
  221. package/chunks/{session-PJDEKXD4.js → session-Z4EV7NVV.js} +107 -78
  222. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-SG5FC52X.js} +29 -28
  223. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-ILC4Z3ZM.js} +33 -32
  224. package/chunks/{settings-LO6J5SAZ.js → settings-Y47SPE3X.js} +35 -34
  225. package/chunks/{shell-ANAFVYGR.js → shell-YBVCOPVO.js} +20 -20
  226. package/chunks/{skill-SHJWKSPH.js → skill-AXC63EBA.js} +4 -4
  227. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-AFPAYGLO.js} +35 -34
  228. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-ZFL4J2V3.js} +29 -28
  229. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-Y2OZPLNJ.js} +31 -30
  230. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-G6TKT4LI.js} +2270 -1026
  231. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-YTNDPW7J.js} +1789 -2211
  232. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  233. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  234. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  235. package/chunks/{team-create-WKTPCH6D.js → team-create-BUFLGGSH.js} +20 -20
  236. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  237. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-OUWWM42U.js} +20 -20
  238. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-WH2WV5ES.js} +29 -28
  239. package/chunks/{theme-manager-BNWESY26.js → theme-manager-5UDRARM2.js} +29 -28
  240. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-MCDIRPHN.js} +4 -4
  241. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-VL27U74Z.js} +33 -32
  242. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-MSXT4VDD.js} +30 -29
  243. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-JKLEWVCB.js} +5 -5
  244. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-ARTHAJT2.js} +31 -30
  245. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-YEAAGYVU.js} +38 -37
  246. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-EMRQKH5S.js} +71 -69
  247. package/chunks/{version-RO2FPO76.js → version-HFQU35WD.js} +3 -1
  248. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-QBXAO6VF.js} +7 -7
  249. package/chunks/{web-search-XA5Z4ZCD.js → web-search-2URQXA3A.js} +201 -13
  250. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  251. package/chunks/{workflow-QFIOCMDM.js → workflow-JDD6WDAH.js} +211 -75
  252. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-B4IKR6YJ.js} +38 -37
  253. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  254. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-WVYJ5UGB.js} +33 -32
  255. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DXL5YVAG.js} +33 -32
  256. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QNGAMVH7.js} +40 -39
  257. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-BEISJIII.js} +36 -35
  258. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-ORYJF5L4.js} +40 -39
  259. package/chunks/{write-file-QOYVHAKK.js → write-file-DWLKFBTJ.js} +21 -21
  260. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-BYVIXSNQ.js} +4 -4
  261. package/cli.js +13 -13
  262. package/export-transcript-document.js +123 -119
  263. package/package.json +4 -4
  264. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  265. package/web-shell/assets/{arc-DKW0mbPo.js → arc-CDg7Zfpm.js} +1 -1
  266. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  267. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  268. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  269. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  270. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  271. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  272. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  273. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  274. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  275. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  276. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  277. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  278. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  279. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  280. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  281. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  282. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  283. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  284. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  285. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  286. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  287. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  288. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  289. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  290. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  291. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  292. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  293. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  294. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  295. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  296. package/web-shell/assets/{index-C9R-iojE.js → index-9ie6xLTM.js} +1 -1
  297. package/web-shell/assets/index-DirkXQEg.js +2164 -0
  298. package/web-shell/assets/index-DzdST_7L.css +36 -0
  299. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  300. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  301. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  302. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  303. package/web-shell/assets/{layout-CFVu37BB.js → layout-C_70RhaT.js} +1 -1
  304. package/web-shell/assets/{linear-ChBxdtWf.js → linear-BJ2ZLmcq.js} +1 -1
  305. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-RlY0zPNC.js} +6 -6
  306. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  307. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  308. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  309. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  310. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  311. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  312. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  313. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  314. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  315. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  316. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  317. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  318. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  319. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  320. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  321. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  322. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  323. package/web-shell/index.html +2 -2
  324. package/chunks/chunk-2LD5U7Q3.js +0 -114
  325. package/chunks/chunk-3UMWOKJC.js +0 -78
  326. package/chunks/chunk-IQAFKVXS.js +0 -22
  327. package/chunks/chunk-X35VIWWJ.js +0 -276
  328. package/chunks/chunk-ZJ2LM2SI.js +0 -198
  329. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  330. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  331. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  332. package/web-shell/assets/index-B4TLaxWs.js +0 -2142
  333. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  334. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  335. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  listCommand
5
- } from "./chunk-SHK2SIR5.js";
5
+ } from "./chunk-QA2B26PL.js";
6
6
  import {
7
7
  getErrorMessage as getErrorMessage2
8
- } from "./chunk-YLFICBYK.js";
8
+ } from "./chunk-SYKPMH2X.js";
9
9
  import {
10
10
  CUSTOM_SANDBOX_IMAGE_ENV_VAR
11
- } from "./chunk-22QOQKG4.js";
11
+ } from "./chunk-5WBA3DEF.js";
12
12
  import {
13
13
  isOwnInterfaceAddress
14
14
  } from "./chunk-24FVUD5P.js";
15
15
  import {
16
16
  serveCommand
17
- } from "./chunk-L36LLVA5.js";
17
+ } from "./chunk-EYCW6UF2.js";
18
18
  import {
19
19
  OBSERVED_CONTACT_MAX_FRESH_WITHIN_SECONDS,
20
20
  ObservedChannelContactStore
@@ -58,12 +58,12 @@ import {
58
58
  } from "./chunk-Y53DG2HA.js";
59
59
  import {
60
60
  CLI_VERSION
61
- } from "./chunk-TDHVOZ65.js";
61
+ } from "./chunk-LOBKNYPR.js";
62
62
  import {
63
63
  collectProviderModelsForProtocol,
64
64
  getAuthTypeFromEnv,
65
65
  resolveCliGenerationConfig
66
- } from "./chunk-I7UNCY24.js";
66
+ } from "./chunk-6GAYNM3F.js";
67
67
  import {
68
68
  resolveSkillSettings
69
69
  } from "./chunk-HWVUSYSN.js";
@@ -81,19 +81,20 @@ import {
81
81
  registerPermissionRelay,
82
82
  registerSessionCleanup,
83
83
  registerToolCallDispatch,
84
+ resolveChannelLocale,
84
85
  selectFirstModel,
85
86
  sessionsPath
86
- } from "./chunk-3RMVM33U.js";
87
+ } from "./chunk-EDSU3VUG.js";
87
88
  import {
88
89
  getExtensionManager,
89
90
  requestChoicePluginNonInteractive,
90
91
  requestConsentNonInteractive,
91
92
  requestConsentOrFail,
92
93
  resolveExtensionCommandScope
93
- } from "./chunk-2C3XDBGL.js";
94
+ } from "./chunk-6S7YYUUH.js";
94
95
  import {
95
96
  parseChannelConfig
96
- } from "./chunk-BNWIX6BM.js";
97
+ } from "./chunk-JFAGT5YG.js";
97
98
  import {
98
99
  findCliEntryPath
99
100
  } from "./chunk-V6WHFGST.js";
@@ -103,7 +104,7 @@ import {
103
104
  clearAccount,
104
105
  loadAccount,
105
106
  saveAccount
106
- } from "./chunk-LTCI6ZOJ.js";
107
+ } from "./chunk-JYGIJA4W.js";
107
108
  import {
108
109
  canonicalizeWorkspace
109
110
  } from "./chunk-6PLDPT2C.js";
@@ -121,7 +122,7 @@ import {
121
122
  import {
122
123
  normalizeWorkerDiagnostic,
123
124
  sanitizeWorkerDiagnostic
124
- } from "./chunk-5V4B3EWA.js";
125
+ } from "./chunk-DARWOZY6.js";
125
126
  import {
126
127
  CHANNEL_DAEMON_WORKER_SENTINEL,
127
128
  CHANNEL_WORKER_HEARTBEAT_INTERVAL_MS,
@@ -145,6 +146,10 @@ import {
145
146
  import {
146
147
  EXTERNAL_TOOL_GUARD_TOKEN_ENV
147
148
  } from "./chunk-3VUENPWF.js";
149
+ import {
150
+ CHANNEL_WORKER_KILL_GRACE_MS,
151
+ CHANNEL_WORKER_STOP_GRACE_MS
152
+ } from "./chunk-TGNNLRC3.js";
148
153
  import {
149
154
  AcpBridge,
150
155
  ChannelLoopScheduler,
@@ -155,53 +160,51 @@ import {
155
160
  isChannelProactiveDeliveryError,
156
161
  sanitizeLogText,
157
162
  sanitizePromptText
158
- } from "./chunk-65GHQ4FX.js";
159
- import {
160
- CHANNEL_WORKER_KILL_GRACE_MS,
161
- CHANNEL_WORKER_STOP_GRACE_MS
162
- } from "./chunk-5HBA2Z7V.js";
163
+ } from "./chunk-WDVV3LRM.js";
163
164
  import {
165
+ pidFilePath,
164
166
  readServiceInfo,
165
167
  removeServiceInfo,
166
168
  signalService,
167
169
  waitForExit,
168
170
  writeServiceInfo
169
- } from "./chunk-X35VIWWJ.js";
171
+ } from "./chunk-NFXXBWSE.js";
170
172
  import {
171
173
  assembleMcpServers,
172
174
  getPendingGatedMcpServers,
173
175
  mcpCommand
174
- } from "./chunk-C55CR5I4.js";
176
+ } from "./chunk-OVTPETDL.js";
175
177
  import {
176
178
  loadSettings
177
- } from "./chunk-RUMSY4ES.js";
179
+ } from "./chunk-Y7YHAY32.js";
178
180
  import {
179
181
  detectSystemLanguage,
180
182
  getCurrentLanguage,
181
183
  initializeI18n,
184
+ resolveLanguage,
182
185
  resolveLanguageSetting,
183
186
  t
184
- } from "./chunk-LD53HMPV.js";
187
+ } from "./chunk-CRZBDVP2.js";
185
188
  import {
186
189
  isFileSourcedEnvKey,
187
190
  loadEnvironment
188
- } from "./chunk-4OCYWXKF.js";
191
+ } from "./chunk-43EUMPKQ.js";
189
192
  import {
190
193
  resolveAcpChannelFallback,
191
194
  scrubAndReportInheritedLoaderEnv
192
- } from "./chunk-NUQFUXOG.js";
195
+ } from "./chunk-QTNCGZHQ.js";
193
196
  import {
194
197
  readPackageUpSync
195
198
  } from "./chunk-2EAZ43JQ.js";
196
199
  import {
197
200
  getCliVersion
198
- } from "./chunk-SHX2HIE7.js";
201
+ } from "./chunk-ATBLEXXV.js";
199
202
  import {
200
203
  getPackageJson
201
204
  } from "./chunk-W3N5XAZ6.js";
202
205
  import {
203
206
  isWorkspaceTrusted
204
- } from "./chunk-GEV66YGE.js";
207
+ } from "./chunk-D6AGS266.js";
205
208
  import {
206
209
  require_strip_json_comments
207
210
  } from "./chunk-NPQ5ZKRP.js";
@@ -223,7 +226,7 @@ import {
223
226
  removeChannelMemoryEntries,
224
227
  removePeerController,
225
228
  updateChannelMemoryEntry
226
- } from "./chunk-TXAEXF2B.js";
229
+ } from "./chunk-ZEFWBG2C.js";
227
230
  import {
228
231
  hideBin,
229
232
  yargs_default
@@ -242,6 +245,7 @@ import {
242
245
  DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
243
246
  ExtensionManager,
244
247
  FileDiscoveryService,
248
+ GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP,
245
249
  GOAL_TOKEN_BUDGET_CAP,
246
250
  MAX_SUBAGENT_DEPTH_LIMIT,
247
251
  REVIEW_BUILTIN_SUBAGENT_TYPE,
@@ -263,7 +267,7 @@ import {
263
267
  sanitizeFilenameComponent,
264
268
  unquoteCStylePath,
265
269
  updateSetting
266
- } from "./chunk-TSLRORQR.js";
270
+ } from "./chunk-BDAVT6K2.js";
267
271
  import {
268
272
  parsePositiveIntegerEnv
269
273
  } from "./chunk-6PVPNMXU.js";
@@ -275,8 +279,12 @@ import {
275
279
  resolveBundleDir
276
280
  } from "./chunk-TRWQQBVH.js";
277
281
  import {
282
+ describeSessionKind,
278
283
  listLiveSessions
279
- } from "./chunk-B44JBZBB.js";
284
+ } from "./chunk-F4SAL7WM.js";
285
+ import {
286
+ isSameProcess
287
+ } from "./chunk-CH2YDT6X.js";
280
288
  import {
281
289
  APPROVAL_MODES
282
290
  } from "./chunk-JX6XHPTX.js";
@@ -287,13 +295,13 @@ import {
287
295
  } from "./chunk-CLKE4IY3.js";
288
296
  import {
289
297
  BUILT_IN_OUTPUT_STYLES
290
- } from "./chunk-OFB36ZBA.js";
298
+ } from "./chunk-2HYOOFDS.js";
291
299
  import {
292
300
  addDaemonRequestAttribute
293
301
  } from "./chunk-7OCIQNKX.js";
294
302
  import {
295
303
  parseLineTolerant
296
- } from "./chunk-WQBR7LN5.js";
304
+ } from "./chunk-FRS3P7MQ.js";
297
305
  import {
298
306
  getAllMemoryFilenames,
299
307
  setMemoryFilename
@@ -302,7 +310,7 @@ import {
302
310
  DEFAULT_QWEN_EMBEDDING_MODEL,
303
311
  VERTEX_ADC_HINT,
304
312
  hasVertexProjectConfigured
305
- } from "./chunk-PLUAIHZO.js";
313
+ } from "./chunk-EOLGAQ25.js";
306
314
  import {
307
315
  atomicWriteFileSync
308
316
  } from "./chunk-XFFRI3WM.js";
@@ -1651,6 +1659,30 @@ function validateGoalTokenBudget(value) {
1651
1659
  return value;
1652
1660
  }
1653
1661
  __name(validateGoalTokenBudget, "validateGoalTokenBudget");
1662
+ function validateGoalCheckpointTimeoutSeconds(value) {
1663
+ if (typeof value !== "number" || !Number.isFinite(value)) {
1664
+ throw new Error(
1665
+ `model.goalCheckpointTimeoutSeconds must be a finite number; got ${String(value)}.`
1666
+ );
1667
+ }
1668
+ if (!Number.isInteger(value)) {
1669
+ throw new Error(
1670
+ `model.goalCheckpointTimeoutSeconds must be an integer number of seconds; got ${value}.`
1671
+ );
1672
+ }
1673
+ if (value < 1) {
1674
+ throw new Error(
1675
+ `model.goalCheckpointTimeoutSeconds must be at least 1; got ${value}. Unset it to use the default.`
1676
+ );
1677
+ }
1678
+ if (value > GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP) {
1679
+ throw new Error(
1680
+ `model.goalCheckpointTimeoutSeconds ${value} exceeds the supported ceiling (${GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP}s, the default stream lifetime cap, past which the stream guard rather than this setting ends the call). This ceiling is fixed; raising QWEN_STREAM_MAX_LIFETIME_MS does not lift it.`
1681
+ );
1682
+ }
1683
+ return value;
1684
+ }
1685
+ __name(validateGoalCheckpointTimeoutSeconds, "validateGoalCheckpointTimeoutSeconds");
1654
1686
  var MAX_TOOL_CALLS = 1e6;
1655
1687
  function validateMaxToolCalls(value) {
1656
1688
  if (value === -1) return -1;
@@ -2943,6 +2975,10 @@ function channelMemoryOptions(getBridge, cwd) {
2943
2975
  };
2944
2976
  }
2945
2977
  __name(channelMemoryOptions, "channelMemoryOptions");
2978
+ function isUnverifiablePidfileError(err) {
2979
+ return err instanceof Error && err.code === "channel_service_conflict";
2980
+ }
2981
+ __name(isUnverifiablePidfileError, "isUnverifiablePidfileError");
2946
2982
  async function writeServiceInfoOrExit(channels, cleanup) {
2947
2983
  try {
2948
2984
  writeServiceInfo(channels);
@@ -2954,6 +2990,10 @@ async function writeServiceInfoOrExit(channels, cleanup) {
2954
2990
  );
2955
2991
  process.exit(1);
2956
2992
  }
2993
+ if (isUnverifiablePidfileError(err)) {
2994
+ writeStderrLine(`Error: ${err.message}`);
2995
+ process.exit(1);
2996
+ }
2957
2997
  throw err;
2958
2998
  }
2959
2999
  }
@@ -3028,6 +3068,9 @@ function createBridgeRecovery(options) {
3028
3068
  let recoverySourceBridge;
3029
3069
  const attachDisconnectHandler = /* @__PURE__ */ __name((failedBridge) => {
3030
3070
  failedBridge.on("disconnected", () => {
3071
+ for (const channel of channels.values()) {
3072
+ channel.onBridgeDisconnected();
3073
+ }
3031
3074
  if (isShuttingDown() || failedBridge !== getBridge()) return;
3032
3075
  if (recoveryTask) {
3033
3076
  if (failedBridge !== recoverySourceBridge) recoveryRequested = true;
@@ -3134,7 +3177,7 @@ function checkDuplicateInstance() {
3134
3177
  }
3135
3178
  }
3136
3179
  __name(checkDuplicateInstance, "checkDuplicateInstance");
3137
- async function startSingle(name, proxy, cronEnabled) {
3180
+ async function startSingle(name, proxy, cronEnabled, locale, displayLanguage) {
3138
3181
  checkDuplicateInstance();
3139
3182
  const channelsConfig = loadChannelsConfig();
3140
3183
  await loadChannelsFromExtensions();
@@ -3180,8 +3223,10 @@ async function startSingle(name, proxy, cronEnabled) {
3180
3223
  const loopController = loopStore ? createChannelLoopController(loopStore) : void 0;
3181
3224
  const channels = /* @__PURE__ */ new Map();
3182
3225
  const channel = await createChannel(name, config2, bridge, {
3226
+ locale,
3183
3227
  router,
3184
3228
  proxy,
3229
+ ...displayLanguage ? { displayLanguage } : {},
3185
3230
  ...channelMemoryOptions(() => bridge, config2.cwd),
3186
3231
  ...loopController ? { loopController } : {},
3187
3232
  bridgeRecovery: bridgeReadiness.current
@@ -3269,7 +3314,7 @@ async function startSingle(name, proxy, cronEnabled) {
3269
3314
  });
3270
3315
  }
3271
3316
  __name(startSingle, "startSingle");
3272
- async function startAll(proxy, cronEnabled) {
3317
+ async function startAll(proxy, cronEnabled, locale, displayLanguage) {
3273
3318
  checkDuplicateInstance();
3274
3319
  const channelsConfig = loadChannelsConfig();
3275
3320
  await loadChannelsFromExtensions();
@@ -3320,8 +3365,10 @@ async function startAll(proxy, cronEnabled) {
3320
3365
  channels.set(
3321
3366
  name,
3322
3367
  await createChannel(name, config2, bridge, {
3368
+ locale,
3323
3369
  router,
3324
3370
  proxy,
3371
+ ...displayLanguage ? { displayLanguage } : {},
3325
3372
  ...channelMemoryOptions(() => bridge, config2.cwd),
3326
3373
  ...loopController ? { loopController } : {},
3327
3374
  bridgeRecovery: bridgeReadiness.current
@@ -3443,16 +3490,47 @@ var startCommand = {
3443
3490
  settings.merged.proxy
3444
3491
  );
3445
3492
  const cronEnabled = isChannelCronEnabled(settings);
3493
+ const locale = resolveChannelLocale(settings.merged.general?.language);
3494
+ const displayLanguage = resolveLanguage(
3495
+ resolveLanguageSetting(
3496
+ settings.merged.general?.language
3497
+ )
3498
+ );
3446
3499
  if (argv.name) {
3447
- await startSingle(argv.name, proxy, cronEnabled);
3500
+ await startSingle(argv.name, proxy, cronEnabled, locale, displayLanguage);
3448
3501
  } else {
3449
- await startAll(proxy, cronEnabled);
3502
+ await startAll(proxy, cronEnabled, locale, displayLanguage);
3450
3503
  }
3451
3504
  }, "handler")
3452
3505
  };
3453
3506
 
3454
3507
  // packages/cli/src/commands/channel/stop.ts
3455
3508
  init_esbuild_shims();
3509
+ function reportUnstoppableService(info, outcome) {
3510
+ const filePath = pidFilePath();
3511
+ if (outcome === "not-permitted") {
3512
+ writeStderrLine(
3513
+ `Permission denied signalling the service (PID ${info.pid}); it may be owned by another user sharing this home. Stop it as that user \u2014 once the process is gone, the record at ${filePath} is swept on the next read.`
3514
+ );
3515
+ return;
3516
+ }
3517
+ if (info.procStart == null) {
3518
+ writeStderrLine(
3519
+ `Could not stop PID ${info.pid}, and the record carries no process token, so this command cannot confirm it is the channel service. If no channel service is running, delete ${filePath} and start again.`
3520
+ );
3521
+ return;
3522
+ }
3523
+ if (outcome === "sent") {
3524
+ writeStderrLine(
3525
+ `Service is still running after SIGKILL; its record at ${filePath} was left in place.`
3526
+ );
3527
+ return;
3528
+ }
3529
+ writeStderrLine(
3530
+ `Failed to signal the service and could not re-verify its process token; its record at ${filePath} was left in place.`
3531
+ );
3532
+ }
3533
+ __name(reportUnstoppableService, "reportUnstoppableService");
3456
3534
  var stopCommand = {
3457
3535
  command: "stop",
3458
3536
  describe: "Stop the running channel service",
@@ -3467,7 +3545,7 @@ var stopCommand = {
3467
3545
  if (argv["daemon-url"]) {
3468
3546
  const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
3469
3547
  try {
3470
- const sdk = await import("./daemon-LCUELM6E.js");
3548
+ const sdk = await import("./daemon-U2456K5H.js");
3471
3549
  const client = new sdk.DaemonClient({
3472
3550
  baseUrl: argv["daemon-url"],
3473
3551
  ...token ? { token } : {}
@@ -3499,25 +3577,34 @@ var stopCommand = {
3499
3577
  process.exit(1);
3500
3578
  }
3501
3579
  writeStdoutLine(`Stopping channel service (PID ${info.pid})...`);
3502
- if (!signalService(info.pid, "SIGTERM")) {
3580
+ const outcome = signalService(info.pid, "SIGTERM", info.procStart);
3581
+ if (outcome !== "sent") {
3582
+ if (isSameProcess(info.pid, info.procStart)) {
3583
+ reportUnstoppableService(info, outcome);
3584
+ process.exit(1);
3585
+ }
3503
3586
  writeStderrLine(
3504
3587
  "Failed to send signal \u2014 process may have already exited."
3505
3588
  );
3506
- removeServiceInfo();
3589
+ removeServiceInfo(info);
3507
3590
  process.exit(0);
3508
3591
  }
3509
- const exited = await waitForExit(info.pid, 5e3);
3592
+ const exited = await waitForExit(info.pid, 5e3, 200, info.procStart);
3510
3593
  if (exited) {
3511
- removeServiceInfo();
3594
+ removeServiceInfo(info);
3512
3595
  writeStdoutLine("Service stopped.");
3513
3596
  } else {
3514
3597
  writeStderrLine(
3515
3598
  "Service did not exit within 5 seconds. Sending SIGKILL..."
3516
3599
  );
3517
- signalService(info.pid, "SIGKILL");
3518
- await waitForExit(info.pid, 2e3);
3519
- removeServiceInfo();
3520
- writeStdoutLine("Service killed.");
3600
+ const killOutcome = signalService(info.pid, "SIGKILL", info.procStart);
3601
+ if (await waitForExit(info.pid, 2e3, 200, info.procStart)) {
3602
+ removeServiceInfo(info);
3603
+ writeStdoutLine("Service killed.");
3604
+ } else {
3605
+ reportUnstoppableService(info, killOutcome);
3606
+ process.exit(1);
3607
+ }
3521
3608
  }
3522
3609
  process.exit(0);
3523
3610
  }, "handler")
@@ -3653,7 +3740,7 @@ var statusCommand = {
3653
3740
  if (argv["daemon-url"]) {
3654
3741
  const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
3655
3742
  try {
3656
- const sdk = await import("./daemon-LCUELM6E.js");
3743
+ const sdk = await import("./daemon-U2456K5H.js");
3657
3744
  const client = new sdk.DaemonClient({
3658
3745
  baseUrl: argv["daemon-url"],
3659
3746
  ...token ? { token } : {}
@@ -3764,7 +3851,7 @@ var reloadCommand = {
3764
3851
  const token = resolveToken(argv.token);
3765
3852
  let sdk;
3766
3853
  try {
3767
- sdk = await import("./daemon-LCUELM6E.js");
3854
+ sdk = await import("./daemon-U2456K5H.js");
3768
3855
  } catch (err) {
3769
3856
  writeStderrLine(
3770
3857
  `[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(err)}`
@@ -3844,7 +3931,7 @@ var setCommand2 = {
3844
3931
  const selection = names[0] === "all" ? { mode: "all" } : { mode: "names", names };
3845
3932
  let sdk;
3846
3933
  try {
3847
- sdk = await import("./daemon-LCUELM6E.js");
3934
+ sdk = await import("./daemon-U2456K5H.js");
3848
3935
  } catch (error) {
3849
3936
  writeStderrLine(
3850
3937
  `[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(error)}`
@@ -3898,6 +3985,7 @@ var SESSION_ATTACHMENTS_FEATURE = "session_attachments";
3898
3985
  var SESSION_BTW_FEATURE = "session_btw";
3899
3986
  var SESSION_PERMISSION_VOTE_FEATURE = "session_permission_vote";
3900
3987
  var SESSION_WORKTREE_PERSISTENCE_FEATURE = "session_worktree_persistence_v1";
3988
+ var SESSION_WORKTREE_RESET_FEATURE = "session_worktree_reset_v1";
3901
3989
  var MAX_ACTIVE_WEBHOOK_TASKS = 16;
3902
3990
  var WORKER_CHANNEL_DISCONNECT_DRAIN_MS = CHANNEL_WORKER_STOP_GRACE_MS - CHANNEL_WORKER_KILL_GRACE_MS;
3903
3991
  var WORKER_STARTUP_ROLLBACK_DRAIN_MS = 1500;
@@ -3932,6 +4020,13 @@ function createDaemonSessionFactory({
3932
4020
  // (dingtalk/feishu) is derivable from the name via the channel config.
3933
4021
  ...req.sourceId ? { sourceId: req.sourceId } : {}
3934
4022
  };
4023
+ if (req.worktreeReset) {
4024
+ return await DaemonSessionClient.resetWorktree(
4025
+ client,
4026
+ req.worktreeReset.sessionId,
4027
+ daemonReq
4028
+ );
4029
+ }
3935
4030
  if (req.sessionId) {
3936
4031
  return await DaemonSessionClient.resume(
3937
4032
  client,
@@ -3984,6 +4079,9 @@ function createDaemonChannelBridgeFacade(bridge, opts) {
3984
4079
  if (bridge.listSessions) {
3985
4080
  facade.listSessions = bridge.listSessions.bind(bridge);
3986
4081
  }
4082
+ if (bridge.resetWorktreeSession) {
4083
+ facade.resetWorktreeSession = bridge.resetWorktreeSession.bind(bridge);
4084
+ }
3987
4085
  if (bridge.registerChannelLoopToolHandler) {
3988
4086
  facade.registerChannelLoopToolHandler = bridge.registerChannelLoopToolHandler.bind(bridge);
3989
4087
  }
@@ -3991,7 +4089,7 @@ function createDaemonChannelBridgeFacade(bridge, opts) {
3991
4089
  }
3992
4090
  __name(createDaemonChannelBridgeFacade, "createDaemonChannelBridgeFacade");
3993
4091
  async function loadDaemonSdk() {
3994
- return await import("./daemon-LCUELM6E.js");
4092
+ return await import("./daemon-U2456K5H.js");
3995
4093
  }
3996
4094
  __name(loadDaemonSdk, "loadDaemonSdk");
3997
4095
  function selectedChannelNames(channelsConfig, selection) {
@@ -4148,6 +4246,12 @@ async function runChannelDaemonWorker(opts) {
4148
4246
  void 0,
4149
4247
  settings.merged.proxy
4150
4248
  );
4249
+ const locale = resolveChannelLocale(settings.merged.general?.language);
4250
+ const displayLanguage = resolveLanguage(
4251
+ resolveLanguageSetting(
4252
+ settings.merged.general?.language
4253
+ )
4254
+ );
4151
4255
  const channelsConfig = loadChannelsConfig(daemonWorkspace, settings);
4152
4256
  const names = selectedChannelNames(channelsConfig, opts.selection);
4153
4257
  const parsed = await abortableStartup(
@@ -4197,6 +4301,9 @@ async function runChannelDaemonWorker(opts) {
4197
4301
  sessionWorktreePersistence: capabilities.features.includes(
4198
4302
  SESSION_WORKTREE_PERSISTENCE_FEATURE
4199
4303
  ),
4304
+ sessionWorktreeReset: capabilities.features.includes(
4305
+ SESSION_WORKTREE_RESET_FEATURE
4306
+ ),
4200
4307
  ...opts.promptAuthorization ? { promptAuthorization: opts.promptAuthorization } : {},
4201
4308
  deleteSessionData: /* @__PURE__ */ __name(async (sessionId) => {
4202
4309
  const workspaceClient = client.workspaceByCwd?.(daemonWorkspace);
@@ -4256,7 +4363,9 @@ async function runChannelDaemonWorker(opts) {
4256
4363
  name,
4257
4364
  await abortableStartup(
4258
4365
  createChannel(name, config2, bridgeFacade, {
4366
+ locale,
4259
4367
  ...proxy ? { proxy } : {},
4368
+ ...displayLanguage ? { displayLanguage } : {},
4260
4369
  router: createdRouter,
4261
4370
  stateDir: daemonChannelStateDir(daemonWorkspace, name),
4262
4371
  channelMemory: {
@@ -4310,7 +4419,7 @@ async function runChannelDaemonWorker(opts) {
4310
4419
  `[Channel] Failed to connect "${safeName}": ${safeMessage}`
4311
4420
  );
4312
4421
  try {
4313
- channel.disconnect();
4422
+ await channel.disconnect();
4314
4423
  } catch {
4315
4424
  }
4316
4425
  connectFailureCount += 1;
@@ -6648,6 +6757,7 @@ function filterCommandsIn(commonDir, gitDir) {
6648
6757
  }
6649
6758
  const filters = /* @__PURE__ */ new Set();
6650
6759
  const unread = /* @__PURE__ */ new Set();
6760
+ const dangling = /* @__PURE__ */ new Set();
6651
6761
  const visited = /* @__PURE__ */ new Set();
6652
6762
  const read = /* @__PURE__ */ __name((file) => {
6653
6763
  const r = spawnSync2(
@@ -6681,12 +6791,17 @@ function filterCommandsIn(commonDir, gitDir) {
6681
6791
  const visit = /* @__PURE__ */ __name((file, depth, via) => {
6682
6792
  let real;
6683
6793
  try {
6684
- real = realpathSync3(file);
6685
- } catch {
6794
+ real = realpathSync3.native(file);
6795
+ } catch (e) {
6686
6796
  if (via !== null) {
6687
- unread.add(
6688
- `${via} -> ${file} (missing \u2014 git ignores a dangling include; this screen refuses it)`
6689
- );
6797
+ const code2 = e?.code;
6798
+ if (code2 === "ENOENT") {
6799
+ dangling.add(`${via} -> ${file} (missing \u2014 git ignores it)`);
6800
+ } else {
6801
+ unread.add(
6802
+ `${via} -> ${file} (could not be resolved: ${code2 ?? "unknown"} \u2014 not screened)`
6803
+ );
6804
+ }
6690
6805
  }
6691
6806
  return;
6692
6807
  }
@@ -6728,20 +6843,24 @@ function filterCommandsIn(commonDir, gitDir) {
6728
6843
  }
6729
6844
  let target;
6730
6845
  if (value.startsWith("~/")) {
6731
- target = join7(process.env["HOME"] || homedir(), value.slice(2));
6846
+ target = `${process.env["HOME"] || homedir()}${sep3}${value.slice(2)}`;
6732
6847
  } else if (value.startsWith("~")) {
6733
6848
  unread.add(
6734
6849
  `${key} -> ${value} (another user's home \u2014 not resolved here)`
6735
6850
  );
6736
6851
  continue;
6737
6852
  } else {
6738
- target = resolve4(dirname3(file), value);
6853
+ target = isAbsolute3(value) ? value : `${dirname3(file)}${sep3}${value}`;
6739
6854
  }
6740
6855
  visit(target, depth + 1, `${key} (in ${file})`);
6741
6856
  }
6742
6857
  }, "visit");
6743
6858
  for (const candidate of candidates) visit(candidate, 0, null);
6744
- return { filters: [...filters], unread: [...unread] };
6859
+ return {
6860
+ filters: [...filters],
6861
+ unread: [...unread],
6862
+ dangling: [...dangling]
6863
+ };
6745
6864
  }
6746
6865
  __name(filterCommandsIn, "filterCommandsIn");
6747
6866
  function describeFilterScreen(hits) {
@@ -6774,7 +6893,8 @@ function filterBlankEnv(filterKeys) {
6774
6893
  return env;
6775
6894
  }
6776
6895
  __name(filterBlankEnv, "filterBlankEnv");
6777
- function localFilterCommands(worktree) {
6896
+ var UNRESOLVED_REPO = "the repository's git directories could not be resolved (git rev-parse failed) \u2014 not screened";
6897
+ function screenForTree(worktree) {
6778
6898
  const discover = /* @__PURE__ */ __name((flag) => {
6779
6899
  const r = spawnSync2("git", ["rev-parse", "--path-format=absolute", flag], {
6780
6900
  cwd: worktree,
@@ -6788,15 +6908,22 @@ function localFilterCommands(worktree) {
6788
6908
  }, "discover");
6789
6909
  const commonDir = discover("--git-common-dir");
6790
6910
  const gitDir = discover("--git-dir");
6791
- if (commonDir === null || gitDir === null) {
6792
- return [
6793
- "the repository's git directories could not be resolved (git rev-parse failed) \u2014 not screened"
6794
- ];
6795
- }
6796
- const screen = filterCommandsIn(commonDir, gitDir);
6797
- return [...screen.filters, ...screen.unread];
6911
+ if (commonDir === null || gitDir === null) return null;
6912
+ return filterCommandsIn(commonDir, gitDir);
6913
+ }
6914
+ __name(screenForTree, "screenForTree");
6915
+ function localFilterCommands(worktree) {
6916
+ const screen = screenForTree(worktree);
6917
+ if (screen === null) return [UNRESOLVED_REPO];
6918
+ return [...screen.filters, ...screen.unread, ...screen.dangling];
6798
6919
  }
6799
6920
  __name(localFilterCommands, "localFilterCommands");
6921
+ function checkoutFilterCommands(worktree) {
6922
+ const screen = screenForTree(worktree);
6923
+ if (screen === null) return [UNRESOLVED_REPO];
6924
+ return [...screen.filters, ...screen.unread];
6925
+ }
6926
+ __name(checkoutFilterCommands, "checkoutFilterCommands");
6800
6927
  function discardWorktree(cwd, tree) {
6801
6928
  let symlink = false;
6802
6929
  try {
@@ -7062,11 +7189,12 @@ function worktreeResidue(cwd, cap = RESIDUE_PATH_CAP, expectedHeadSha) {
7062
7189
  }
7063
7190
  }
7064
7191
  const screen = filterCommandsIn(commonDir, realpathSync3(gitDir));
7065
- if (screen.unread.length > 0) {
7192
+ const notReadToTheBottom = [...screen.unread, ...screen.dangling];
7193
+ if (notReadToTheBottom.length > 0) {
7066
7194
  return {
7067
7195
  paths: [],
7068
7196
  total: 0,
7069
- unmeasured: `the residue measurement would run under repo-local config this screen could not read to the bottom: ${describeFilterScreen(screen.unread)} \u2014 a content filter reached that way would execute on the index refresh, and a filter the screen cannot see it cannot blank; remove the include, or the file it names, if it is not yours`
7197
+ unmeasured: `the residue measurement would run under repo-local config this screen could not read to the bottom: ${describeFilterScreen(notReadToTheBottom)} \u2014 a content filter reached that way would execute on the index refresh, and a filter the screen cannot see it cannot blank; remove the include, or the file it names, if it is not yours`
7070
7198
  };
7071
7199
  }
7072
7200
  filterBlanks = filterBlankEnv(screen.filters);
@@ -39135,6 +39263,16 @@ function classifyProbeRun(exitCode, stdout, probes, stderr = "") {
39135
39263
  });
39136
39264
  }
39137
39265
  __name(classifyProbeRun, "classifyProbeRun");
39266
+ var CHECKOUT_INERT = [
39267
+ "-c",
39268
+ "core.hooksPath=/dev/null/no-hooks",
39269
+ "-c",
39270
+ "core.fsmonitor="
39271
+ ];
39272
+ function filterScreenRefusal(hits, rewrite) {
39273
+ return `the repository's local config defines content filter(s), or includes config this screen could not read to the bottom: ${describeFilterScreen(hits.map(inertPath))} \u2014 ${rewrite}`;
39274
+ }
39275
+ __name(filterScreenRefusal, "filterScreenRefusal");
39138
39276
  function git4(cwd, ...args) {
39139
39277
  const r = spawnSync10("git", args, {
39140
39278
  cwd,
@@ -39310,14 +39448,15 @@ function restoreProbeTreeTracked(probeTree) {
39310
39448
  } catch (e) {
39311
39449
  return e instanceof Error ? e.message : String(e);
39312
39450
  }
39313
- const inert = [
39314
- "-c",
39315
- "core.hooksPath=/dev/null/no-hooks",
39316
- "-c",
39317
- "core.fsmonitor="
39318
- ];
39451
+ const filters = checkoutFilterCommands(probeTree);
39452
+ if (filters.length > 0) {
39453
+ return filterScreenRefusal(
39454
+ filters,
39455
+ "this tree's restore would EXECUTE them"
39456
+ );
39457
+ }
39319
39458
  for (const args of [
39320
- [...inert, "checkout", "--force", "HEAD", "--", "."],
39459
+ [...CHECKOUT_INERT, "checkout", "--force", "HEAD", "--", "."],
39321
39460
  // `-ffdx`, because `-fd` honors the ignore rules — and those belong to the
39322
39461
  // commit under test, so a plant named to match one of them (a committed
39323
39462
  // `.gitignore` line and a file to match it) survived every restore. The
@@ -39325,7 +39464,7 @@ function restoreProbeTreeTracked(probeTree) {
39325
39464
  // rather than built, and it is the only ignored thing in this tree the
39326
39465
  // probes cannot run without. Everything else ignored — a built `dist`, a
39327
39466
  // planted config — goes.
39328
- [...inert, "clean", "-ffdx", "-e", "node_modules"]
39467
+ [...CHECKOUT_INERT, "clean", "-ffdx", "-e", "node_modules"]
39329
39468
  ]) {
39330
39469
  const r = spawnSync10("git", args, {
39331
39470
  cwd: probeTree,
@@ -39334,7 +39473,9 @@ function restoreProbeTreeTracked(probeTree) {
39334
39473
  });
39335
39474
  if (r.error) return r.error.message;
39336
39475
  if (r.status !== 0) {
39337
- return (r.stderr ?? "").toString().trim() || `git ${args[2]} exited ${r.status}`;
39476
+ return (r.stderr ?? "").toString().trim() || // The subcommand, not `args[2]`: that index is a `-c` from the inert
39477
+ // pair, so the message read "git -c exited 1" and named nothing.
39478
+ `git ${args[CHECKOUT_INERT.length]} exited ${r.status}`;
39338
39479
  }
39339
39480
  }
39340
39481
  const bits = spawnSync10(
@@ -39574,6 +39715,17 @@ function runOneHunkProbe(probeTree, hunk, probes, deadlineAt, now = Date.now, de
39574
39715
  detail: "the probe target was relinked through a symlink before the reverse patch applied \u2014 nothing was neutralised"
39575
39716
  };
39576
39717
  }
39718
+ const applyFilters = checkoutFilterCommands(probeTree);
39719
+ if (applyFilters.length > 0) {
39720
+ return {
39721
+ ...meta,
39722
+ verdict: "inconclusive",
39723
+ detail: filterScreenRefusal(
39724
+ applyFilters,
39725
+ "this reverse-apply would EXECUTE them"
39726
+ )
39727
+ };
39728
+ }
39577
39729
  const applied = spawnSync10("git", ["apply", "--reverse", "-"], {
39578
39730
  cwd: probeTree,
39579
39731
  input: hunk.patch,
@@ -39881,8 +40033,25 @@ async function runTestEfficacy(args) {
39881
40033
  let created = false;
39882
40034
  let sweep;
39883
40035
  try {
40036
+ const creationFilters = checkoutFilterCommands(worktree);
40037
+ if (creationFilters.length > 0) {
40038
+ throw new Error(
40039
+ filterScreenRefusal(
40040
+ creationFilters,
40041
+ "creating the probe tree would EXECUTE them"
40042
+ )
40043
+ );
40044
+ }
39884
40045
  sweep = discardWorktree(worktree, probeTree);
39885
- git4(worktree, "worktree", "add", "--detach", probeTree, headSha);
40046
+ git4(
40047
+ worktree,
40048
+ ...CHECKOUT_INERT,
40049
+ "worktree",
40050
+ "add",
40051
+ "--detach",
40052
+ probeTree,
40053
+ headSha
40054
+ );
39886
40055
  created = true;
39887
40056
  } catch (e) {
39888
40057
  const detail = worktreeCreateFailureDetail(
@@ -39971,7 +40140,7 @@ async function runTestEfficacy(args) {
39971
40140
  );
39972
40141
  if (harnessValidated === null) {
39973
40142
  noteMutants(
39974
- `the positive control could not be set up (${greenProbes[0]} could not be read in the probe tree), so the harness was NOT validated this run \u2014 read every survivor below as unconfirmed by a control`
40143
+ `the positive control could not be set up (the probe target was relinked, the probe tree could not be restored, or ${greenProbes[0]} could not be read in it), so the harness was NOT validated this run \u2014 read every survivor below as unconfirmed by a control`
39975
40144
  );
39976
40145
  }
39977
40146
  }
@@ -40077,7 +40246,23 @@ async function runTestEfficacy(args) {
40077
40246
  (existsAtBase(probeTree, base, p) ? modified : added).push(p);
40078
40247
  }
40079
40248
  if (modified.length > 0) {
40080
- git4(probeTree, "checkout", base, "--", ...modified);
40249
+ const revertFilters = checkoutFilterCommands(probeTree);
40250
+ if (revertFilters.length > 0) {
40251
+ throw new Error(
40252
+ filterScreenRefusal(
40253
+ revertFilters,
40254
+ "this revert's checkout would EXECUTE them"
40255
+ )
40256
+ );
40257
+ }
40258
+ git4(
40259
+ probeTree,
40260
+ ...CHECKOUT_INERT,
40261
+ "checkout",
40262
+ base,
40263
+ "--",
40264
+ ...modified
40265
+ );
40081
40266
  }
40082
40267
  for (const p of added) safeRmWithin(probeTree, p);
40083
40268
  const collectable = probes.filter(
@@ -43417,6 +43602,7 @@ var listCommand4 = {
43417
43602
  // packages/cli/src/commands/sessions/ps.ts
43418
43603
  init_esbuild_shims();
43419
43604
  var NAME_COL = 22;
43605
+ var KIND_COL = 10;
43420
43606
  var PID_COL = 9;
43421
43607
  var AGE_COL = 10;
43422
43608
  function sanitize3(value) {
@@ -43441,13 +43627,21 @@ function formatAge(ms) {
43441
43627
  __name(formatAge, "formatAge");
43442
43628
  function outputHuman2(records, now) {
43443
43629
  writeStdoutLine(
43444
- padDisplay3("NAME", NAME_COL) + padDisplay3("PID", PID_COL) + padDisplay3("AGE", AGE_COL) + "DIRECTORY"
43630
+ padDisplay3("NAME", NAME_COL) + padDisplay3("KIND", KIND_COL) + padDisplay3("PID", PID_COL) + padDisplay3("AGE", AGE_COL) + "DIRECTORY"
43445
43631
  );
43446
43632
  for (const record of records) {
43447
43633
  writeStdoutLine(
43448
43634
  padDisplay3(
43449
43635
  truncateToWidth(sanitize3(record.name), NAME_COL - 2),
43450
43636
  NAME_COL
43637
+ ) + // Truncated for the same reason NAME is: a newer build may write
43638
+ // a longer kind than any this one knows, and one over-wide cell
43639
+ // would misalign every column after it. Not sanitized — unlike
43640
+ // NAME and DIRECTORY, the read guard already bounds `kind` to
43641
+ // lowercase ASCII, digits and dashes.
43642
+ padDisplay3(
43643
+ truncateToWidth(describeSessionKind(record.kind), KIND_COL - 2),
43644
+ KIND_COL
43451
43645
  ) + padDisplay3(String(record.pid), PID_COL) + padDisplay3(formatAge(now - record.startedAt), AGE_COL) + sanitize3(record.cwd)
43452
43646
  );
43453
43647
  }
@@ -43463,7 +43657,7 @@ async function handlePs(argv) {
43463
43657
  return;
43464
43658
  }
43465
43659
  if (records.length === 0) {
43466
- writeStdoutLine("No other interactive Qwen Code sessions are running.");
43660
+ writeStdoutLine("No Qwen Code sessions are registered right now.");
43467
43661
  return;
43468
43662
  }
43469
43663
  outputHuman2(records, now);
@@ -43471,7 +43665,7 @@ async function handlePs(argv) {
43471
43665
  __name(handlePs, "handlePs");
43472
43666
  var psCommand = {
43473
43667
  command: "ps",
43474
- describe: "List interactive Qwen Code sessions running right now",
43668
+ describe: "List Qwen Code sessions running right now",
43475
43669
  builder: /* @__PURE__ */ __name((yargs) => yargs.option("json", {
43476
43670
  type: "boolean",
43477
43671
  describe: "Output as JSON Lines",
@@ -43509,10 +43703,10 @@ var updateCommand3 = {
43509
43703
  stdioHelpers,
43510
43704
  { updateEventEmitter }
43511
43705
  ] = await Promise.all([
43512
- import("./settings-LO6J5SAZ.js"),
43513
- import("./updateCheck-3MYFMM35.js"),
43514
- import("./installationInfo-IRPQEYRF.js"),
43515
- import("./standalone-update-CWDIKJRP.js"),
43706
+ import("./settings-Y47SPE3X.js"),
43707
+ import("./updateCheck-ARTHAJT2.js"),
43708
+ import("./installationInfo-QEQEPB3G.js"),
43709
+ import("./standalone-update-Y2OZPLNJ.js"),
43516
43710
  import("./stdioHelpers-AY6XCDY2.js"),
43517
43711
  import("./updateEventEmitter-5MKC7BLQ.js")
43518
43712
  ]);
@@ -44059,6 +44253,16 @@ function resolveGoalTokenBudget(settings) {
44059
44253
  }
44060
44254
  }
44061
44255
  __name(resolveGoalTokenBudget, "resolveGoalTokenBudget");
44256
+ function resolveGoalCheckpointTimeoutSeconds(settings) {
44257
+ const fromSettings = settings.model?.goalCheckpointTimeoutSeconds;
44258
+ if (fromSettings === void 0) return void 0;
44259
+ try {
44260
+ return validateGoalCheckpointTimeoutSeconds(fromSettings);
44261
+ } catch (err) {
44262
+ throw new Error(`settings.json: ${err.message}`);
44263
+ }
44264
+ }
44265
+ __name(resolveGoalCheckpointTimeoutSeconds, "resolveGoalCheckpointTimeoutSeconds");
44062
44266
  function resolveMaxToolCalls(argv, settings) {
44063
44267
  if (argv.maxToolCalls !== void 0 && argv.maxToolCalls !== null) {
44064
44268
  try {
@@ -44606,7 +44810,7 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
44606
44810
  disabledSkillNamesProvider: bareMode || safeMode ? void 0 : disabledSkillNamesProvider,
44607
44811
  enabledSkillNamesProvider: bareMode || safeMode ? void 0 : enabledSkillNamesProvider,
44608
44812
  terminalImageRenderSupportProvider: interactive ? async () => {
44609
- const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-B646HBDW.js");
44813
+ const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-WH2WV5ES.js");
44610
44814
  return getTerminalImageRenderSupport();
44611
44815
  } : void 0,
44612
44816
  disabledSkillLevels: bareMode || safeMode || !Array.isArray(settings.skills?.disabledLevels) ? void 0 : settings.skills.disabledLevels.filter(isSkillLevel),
@@ -44673,6 +44877,7 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
44673
44877
  sessionTokenLimit: settings.model?.sessionTokenLimit ?? -1,
44674
44878
  maxSessionTurns: argv.maxSessionTurns ?? settings.model?.maxSessionTurns ?? -1,
44675
44879
  goalTokenBudget: resolveGoalTokenBudget(settings),
44880
+ goalCheckpointTimeoutSeconds: resolveGoalCheckpointTimeoutSeconds(settings),
44676
44881
  maxWallTimeSeconds: resolveMaxWallTimeSeconds(argv, settings),
44677
44882
  maxToolCalls: resolveMaxToolCalls(argv, settings),
44678
44883
  // Undefined flows through to Config's default (5) and clamp logic.
@@ -44763,7 +44968,9 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
44763
44968
  memoryAgentTimeoutMinutes: settings.memory?.agentTimeoutMinutes,
44764
44969
  memoryAgentMaxTurns: settings.memory?.agentMaxTurns,
44765
44970
  fastModel: settings.fastModel || void 0,
44766
- webSearch: bareMode || safeMode ? void 0 : resolveWebSearchSettings(settings),
44971
+ // Bare and safe mode must switch the tool off explicitly: `undefined`
44972
+ // means "derive it" now that WebSearch is opt-out.
44973
+ webSearch: bareMode || safeMode ? { enabled: false } : resolveWebSearchSettings(settings),
44767
44974
  visionModel: settings.visionModel || void 0,
44768
44975
  compactionModel: settings.compactionModel || void 0,
44769
44976
  imageModel: settings.imageModel || void 0,