@qwen-code/qwen-code 0.23.1 → 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 (293) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +1 -1
  3. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +19 -15
  5. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  6. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  7. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  8. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  9. package/bundled/qc-helper/docs/features/channels/overview.md +26 -51
  10. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  11. package/bundled/qc-helper/docs/features/commands.md +79 -17
  12. package/bundled/qc-helper/docs/features/computer-use.md +1 -1
  13. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  14. package/bundled/qc-helper/docs/features/goals.md +3 -1
  15. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  16. package/bundled/qc-helper/docs/qwen-serve.md +62 -48
  17. package/chunks/{MaxSizedBox-UDO6Y7RB.js → MaxSizedBox-ZBGWYJZW.js} +20 -19
  18. package/chunks/{StandaloneSessionPicker-D4CUOO4H.js → StandaloneSessionPicker-NR5ACIJZ.js} +35 -34
  19. package/chunks/{acpAgent-KWLJFADK.js → acpAgent-DM6XRCDQ.js} +307 -183
  20. package/chunks/{agent-GSUPGEOL.js → agent-EF3IIYE3.js} +13 -13
  21. package/chunks/{agent-headless-HNYCQUJB.js → agent-headless-5J2KFYR4.js} +13 -13
  22. package/chunks/{anthropicContentGenerator-I7LQZH26.js → anthropicContentGenerator-VIW2FG7G.js} +4 -4
  23. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  24. package/chunks/{askUserQuestion-I5W5S3D6.js → askUserQuestion-R3TXY77M.js} +1 -1
  25. package/chunks/{bridge-B7CV6RVI.js → bridge-LEMQM6QE.js} +21 -20
  26. package/chunks/{channel-management-service-TRTLQTSV.js → channel-management-service-TGF6XFXT.js} +4 -4
  27. package/chunks/{channel-settings-store-FW45IRUP.js → channel-settings-store-FV365JSF.js} +29 -28
  28. package/chunks/{channel-worker-group-PIYPVCTF.js → channel-worker-group-SQ5FRWOH.js} +5 -5
  29. package/chunks/{channel-worker-manager-FQHEDTD2.js → channel-worker-manager-TU4ZNWOE.js} +5 -5
  30. package/chunks/{channel-worker-supervisor-XJPZZ3VK.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  31. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  32. package/chunks/{chunk-3LPJ776W.js → chunk-2HYOOFDS.js} +9 -6
  33. package/chunks/{chunk-S6QVI3MV.js → chunk-34VPADLG.js} +2 -2
  34. package/chunks/{chunk-WJDXKQIO.js → chunk-3A2IMUDH.js} +14 -2
  35. package/chunks/{chunk-DXQ6Z7AH.js → chunk-3O77M472.js} +224 -84
  36. package/chunks/{chunk-5CVY5Q2P.js → chunk-43EUMPKQ.js} +1 -1
  37. package/chunks/{chunk-ZNO5BUAD.js → chunk-4DIMJKWU.js} +46 -37
  38. package/chunks/{chunk-O2JBJQCF.js → chunk-5HV2HPO7.js} +1 -1
  39. package/chunks/{chunk-RXT4QBDX.js → chunk-5WBA3DEF.js} +1 -1
  40. package/chunks/{chunk-ARYNBBBM.js → chunk-6GAYNM3F.js} +3 -3
  41. package/chunks/{chunk-EEKU6COG.js → chunk-6S7YYUUH.js} +3 -3
  42. package/chunks/{chunk-OPMKGOLD.js → chunk-6VIATHL7.js} +1 -1
  43. package/chunks/{chunk-ENZDGHGJ.js → chunk-76I36BEM.js} +3 -3
  44. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  45. package/chunks/{chunk-UHUT4IDM.js → chunk-7IDZFJAV.js} +9 -9
  46. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  47. package/chunks/{chunk-ZPL2TZNA.js → chunk-7KZVXJ4U.js} +1 -1
  48. package/chunks/{chunk-FWRRUITH.js → chunk-7WCJEY3A.js} +4 -4
  49. package/chunks/{chunk-MFYH2VXV.js → chunk-A7QZIGRB.js} +2 -2
  50. package/chunks/{chunk-27LTEY6D.js → chunk-ATBLEXXV.js} +7 -2
  51. package/chunks/{chunk-3BTHHXXE.js → chunk-AUTUFD5X.js} +1 -1
  52. package/chunks/chunk-AXMWHKXA.js +42 -0
  53. package/chunks/{chunk-QZOXVQPK.js → chunk-AXWTG6R7.js} +2 -5
  54. package/chunks/{chunk-PDUMGZ2P.js → chunk-BDAVT6K2.js} +486 -409
  55. package/chunks/{chunk-2YS3NU4A.js → chunk-BDP3NTWD.js} +3 -3
  56. package/chunks/{chunk-IKG2YVRZ.js → chunk-BZUHZCUO.js} +2 -2
  57. package/chunks/{chunk-USN6VNTO.js → chunk-C24ZDDNY.js} +1 -1
  58. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  59. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  60. package/chunks/{chunk-3VDLQUR2.js → chunk-D6AGS266.js} +1 -1
  61. package/chunks/{chunk-DO5SMV52.js → chunk-D7DFZAK2.js} +17 -11
  62. package/chunks/{chunk-GM44O6F7.js → chunk-DARWOZY6.js} +1 -1
  63. package/chunks/{chunk-HUX2DOTF.js → chunk-DGNRLJ6S.js} +3 -3
  64. package/chunks/{chunk-FW4E4QPG.js → chunk-DVOCOIS5.js} +1 -1
  65. package/chunks/{chunk-OESZTXTG.js → chunk-E4LXNQAK.js} +1 -1
  66. package/chunks/{chunk-TWAMIEQ2.js → chunk-EATP5QCN.js} +16 -18
  67. package/chunks/{chunk-DZ6D4B3K.js → chunk-EDSU3VUG.js} +12 -5
  68. package/chunks/{chunk-EOET4H7C.js → chunk-EE5ZD4XU.js} +3 -3
  69. package/chunks/{chunk-B3EL44K3.js → chunk-EN3Q2S3J.js} +3 -3
  70. package/chunks/{chunk-N7YQEKGX.js → chunk-EOLGAQ25.js} +16 -15
  71. package/chunks/{chunk-3YQMUBTS.js → chunk-EYCW6UF2.js} +7 -7
  72. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  73. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  74. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  75. package/chunks/{chunk-XZ3Z43XL.js → chunk-FEEVHJOR.js} +3 -3
  76. package/chunks/{chunk-CHVU543W.js → chunk-FN4KHWCL.js} +1 -1
  77. package/chunks/{chunk-6QV7Z74P.js → chunk-FRS3P7MQ.js} +15 -2
  78. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  79. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  80. package/chunks/{chunk-VF6D6EGV.js → chunk-HSO6D4KX.js} +82 -25
  81. package/chunks/{chunk-L7V52QEZ.js → chunk-HUJJFSMO.js} +10 -10
  82. package/chunks/{chunk-CIKL2DQP.js → chunk-HW4MRP4V.js} +1 -1
  83. package/chunks/{chunk-TWWS7XUW.js → chunk-HWLLUDIA.js} +108 -16
  84. package/chunks/{chunk-75LBC7SV.js → chunk-IKK6NNS6.js} +32 -29
  85. package/chunks/{chunk-UXDVUFKU.js → chunk-JFAGT5YG.js} +2 -2
  86. package/chunks/{chunk-6SADVYQQ.js → chunk-JGTMTJSQ.js} +1 -1
  87. package/chunks/{chunk-45ROPFQY.js → chunk-JYGIJA4W.js} +1 -1
  88. package/chunks/{chunk-5WC2ECUK.js → chunk-KECCLCXM.js} +42 -8
  89. package/chunks/{chunk-CABDNUJ4.js → chunk-KEPC5BOL.js} +5 -5
  90. package/chunks/{chunk-WNISCNTA.js → chunk-L5VHJYHH.js} +2 -2
  91. package/chunks/{chunk-25CBAK3H.js → chunk-LKBOBUA2.js} +2 -2
  92. package/chunks/{chunk-6QILGINT.js → chunk-LOBKNYPR.js} +2 -2
  93. package/chunks/{chunk-2ZFO5JD7.js → chunk-LOVGQ3HZ.js} +9 -9
  94. package/chunks/{chunk-QK4K76T6.js → chunk-MUF4UGPB.js} +2 -2
  95. package/chunks/{chunk-JGDRB4FP.js → chunk-N3Z6Q7KC.js} +125 -10
  96. package/chunks/chunk-NFXXBWSE.js +463 -0
  97. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  98. package/chunks/{chunk-YCEKI7QX.js → chunk-NV4YYXFT.js} +1 -1
  99. package/chunks/{chunk-5IL2BZHW.js → chunk-O6BFERWN.js} +3 -3
  100. package/chunks/{chunk-TGC4264Q.js → chunk-OVTPETDL.js} +5 -5
  101. package/chunks/chunk-PLEBBGHL.js +1401 -0
  102. package/chunks/{chunk-3VWPPK5Q.js → chunk-PWR6BQ3U.js} +4 -4
  103. package/chunks/{chunk-D6AQNMUA.js → chunk-QA2B26PL.js} +3 -3
  104. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  105. package/chunks/{chunk-LNCNUMJ5.js → chunk-SK6VACCM.js} +558 -158
  106. package/chunks/{chunk-YAC7H4K3.js → chunk-SM66GFKJ.js} +1 -1
  107. package/chunks/{chunk-MA5OUNN6.js → chunk-SNMUO5Z7.js} +1 -1
  108. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  109. package/chunks/{chunk-6JXHO7LG.js → chunk-SYKPMH2X.js} +3 -3
  110. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  111. package/chunks/{chunk-EHTKOO6W.js → chunk-TRQNRP2H.js} +2 -2
  112. package/chunks/{chunk-LZGFVUWZ.js → chunk-UQOP2APG.js} +4 -24
  113. package/chunks/{chunk-T2IHCZLS.js → chunk-VAWM3A5N.js} +1 -1
  114. package/chunks/{chunk-M73KHGNR.js → chunk-VJJXG73H.js} +404 -226
  115. package/chunks/{chunk-WAASYFPK.js → chunk-VJWJOKOQ.js} +2 -2
  116. package/chunks/{chunk-WQMUGQ6G.js → chunk-VR6Y23FW.js} +1 -1
  117. package/chunks/{chunk-E7XSUYCZ.js → chunk-VX2NR3SD.js} +19 -4
  118. package/chunks/{chunk-XVTCSVBK.js → chunk-WDVV3LRM.js} +193 -169
  119. package/chunks/{chunk-RNYENHN5.js → chunk-WEU6O6VN.js} +2 -2
  120. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  121. package/chunks/{chunk-66JBCTJF.js → chunk-Y7YHAY32.js} +23 -6
  122. package/chunks/{chunk-7SL55L5H.js → chunk-YIE6REQ5.js} +20 -15
  123. package/chunks/{chunk-ZU2T5JIS.js → chunk-ZEFWBG2C.js} +736 -1148
  124. package/chunks/{chunk-6TPVIESH.js → chunk-ZM2TCZZ7.js} +3 -3
  125. package/chunks/{chunk-2TMJRF46.js → chunk-ZZ7RVOTU.js} +50 -18
  126. package/chunks/{config-utils-KTDSQ4MU.js → config-utils-SXFK3G4X.js} +24 -23
  127. package/chunks/{contextCommand-UQ3KRYGK.js → contextCommand-QFPD26QO.js} +21 -20
  128. package/chunks/{core-runtime-JR34JAFH.js → core-runtime-VXKNBODM.js} +26 -24
  129. package/chunks/{create-sub-session-RGPJOI4S.js → create-sub-session-7WSQETFR.js} +20 -19
  130. package/chunks/{daemon-UI6SQSBV.js → daemon-U2456K5H.js} +2 -2
  131. package/chunks/{daemon-git-worktree-guard-H3OA26KQ.js → daemon-git-worktree-guard-I4DCSDUS.js} +20 -19
  132. package/chunks/{daemon-status-provider-6WZLKSZU.js → daemon-status-provider-5UV56RI4.js} +25 -24
  133. package/chunks/{daemon-trust-policy-3EDP2BYD.js → daemon-trust-policy-DKIBWTKU.js} +25 -24
  134. package/chunks/{daemon-trust-policy-monitor-CRHZPK52.js → daemon-trust-policy-monitor-CPSD7UKT.js} +25 -24
  135. package/chunks/{deferred-core-runtime-LO5NTQQ4.js → deferred-core-runtime-D2RF35BL.js} +20 -19
  136. package/chunks/{dist-STAGIFNB.js → dist-6YDUH3BB.js} +388 -102
  137. package/chunks/{dist-XJ25G6OH.js → dist-BNQVF565.js} +2 -8
  138. package/chunks/{dist-NQ2636VT.js → dist-F34J4FZX.js} +1 -1
  139. package/chunks/{dist-OR2ZQTXZ.js → dist-F6JLAJLE.js} +1 -1
  140. package/chunks/{dist-24TCWK5H.js → dist-K5GHMXIG.js} +2 -2
  141. package/chunks/{dist-WZTUKIDR.js → dist-NP7QKLVG.js} +2 -2
  142. package/chunks/{dist-M4CBX53H.js → dist-UFTFGI6I.js} +1 -1
  143. package/chunks/{dist-5I4HLUTO.js → dist-XLV33CLY.js} +1 -2
  144. package/chunks/{dist-FDISN4AK.js → dist-ZDNJK74R.js} +3 -7
  145. package/chunks/{edit-LB7Z7XK5.js → edit-4IBADZ3O.js} +13 -13
  146. package/chunks/{enterPlanMode-P6TVUFIY.js → enterPlanMode-YN3GPQU5.js} +13 -13
  147. package/chunks/{environment-QATJNNKI.js → environment-E272IJMF.js} +22 -21
  148. package/chunks/{errors-3XJ37PS2.js → errors-CVAH3RWQ.js} +22 -21
  149. package/chunks/{exitPlanMode-A3OKL5UO.js → exitPlanMode-24J5IHGC.js} +13 -13
  150. package/chunks/{fast-path-DBIT5YQQ.js → fast-path-M5IDBMXF.js} +3 -3
  151. package/chunks/{glob-73EDTXUE.js → glob-ERBD7JYP.js} +13 -13
  152. package/chunks/{goal-tools-DFI6YMSD.js → goal-tools-245ULLQT.js} +13 -13
  153. package/chunks/{handleAutoUpdate-2FUNJO3B.js → handleAutoUpdate-JDZHHZKK.js} +22 -21
  154. package/chunks/{i18n-FDIA6KFI.js → i18n-LA4D5IXM.js} +20 -19
  155. package/chunks/{initializer-4MJTJOTW.js → initializer-SHPTSWUZ.js} +25 -24
  156. package/chunks/{installationInfo-232RA2OK.js → installationInfo-QEQEPB3G.js} +20 -19
  157. package/chunks/{list-WN6WSGEB.js → list-IBHCQWTF.js} +28 -27
  158. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  159. package/chunks/{llm-UDFWQWZA.js → llm-JAWCQLA4.js} +68 -62
  160. package/chunks/{llm-content-generator-VLMZ2A7A.js → llm-content-generator-GOV3A23T.js} +2 -2
  161. package/chunks/{loadedSettingsAdapter-OBQEIXM7.js → loadedSettingsAdapter-RVE2GNVU.js} +25 -24
  162. package/chunks/{loggingContentGenerator-RGVUMUVX.js → loggingContentGenerator-SSHNN5YW.js} +15 -15
  163. package/chunks/{managed-npm-update-QBAJYCFU.js → managed-npm-update-BHSTITQO.js} +20 -19
  164. package/chunks/{mcp-OTIZZCPY.js → mcp-6ZZ7P2HU.js} +25 -24
  165. package/chunks/{monitor-BV5XF6LL.js → monitor-RKK6GSHG.js} +13 -13
  166. package/chunks/{nonInteractiveCli-W6MUKDVJ.js → nonInteractiveCli-UQHP3G6P.js} +58 -57
  167. package/chunks/{notebook-edit-HGBEKGTE.js → notebook-edit-YM47A7WO.js} +13 -13
  168. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  169. package/chunks/{openaiContentGenerator-NSU3ERBH.js → openaiContentGenerator-FHKDWNI2.js} +9 -9
  170. package/chunks/{pidfile-LE3TU4GE.js → pidfile-SIIEJEEH.js} +23 -20
  171. package/chunks/{processUtils-YFBGJK67.js → processUtils-JF7CWBJC.js} +2 -2
  172. package/chunks/{prompt-terminal-ledger-4W4W7DSO.js → prompt-terminal-ledger-FXXHAEQU.js} +21 -20
  173. package/chunks/{qwenContentGenerator-HTA57WFC.js → qwenContentGenerator-KFJ77JP6.js} +16 -16
  174. package/chunks/{read-file-KHPQ2MB6.js → read-file-S2NOCBIL.js} +4 -4
  175. package/chunks/{resumeHistoryUtils-K7RV3QBN.js → resumeHistoryUtils-QHHPSQWU.js} +22 -21
  176. package/chunks/{ripGrep-NBBVCMG4.js → ripGrep-F6TNOJUO.js} +5 -5
  177. package/chunks/{run-qwen-serve-A3JBOZCM.js → run-qwen-serve-KYBDQRDD.js} +216 -64
  178. package/chunks/{runtime-7YOU2KJ3.js → runtime-3WNOFLCR.js} +32 -29
  179. package/chunks/{scheduled-tasks-52LXK7LN.js → scheduled-tasks-RNBH56DJ.js} +23 -22
  180. package/chunks/{scheduler-J44M72VM.js → scheduler-ERMW7Q7B.js} +22 -21
  181. package/chunks/{send-message-AWKUDJBH.js → send-message-V5T3NMFM.js} +3 -3
  182. package/chunks/{serve-TRC6XJUB.js → serve-7NV46RMP.js} +25 -24
  183. package/chunks/{server-YPNTJLX2.js → server-6RZJR5QF.js} +106 -154
  184. package/chunks/{session-FMMIBFYX.js → session-Z4EV7NVV.js} +91 -63
  185. package/chunks/{session-attachments-root-LDJMNK7K.js → session-attachments-root-SG5FC52X.js} +20 -19
  186. package/chunks/{session-pr-refresh-NLR4EK2J.js → session-pr-refresh-ILC4Z3ZM.js} +22 -21
  187. package/chunks/{settings-A46L577J.js → settings-Y47SPE3X.js} +24 -23
  188. package/chunks/{shell-Q5LSQPPY.js → shell-YBVCOPVO.js} +13 -13
  189. package/chunks/{skill-75KPJRCM.js → skill-AXC63EBA.js} +4 -4
  190. package/chunks/{skill-settings-775YT4YR.js → skill-settings-AFPAYGLO.js} +24 -23
  191. package/chunks/{spawnChannel-XY73I5CU.js → spawnChannel-ZFL4J2V3.js} +20 -19
  192. package/chunks/{standalone-update-L46XXNQ2.js → standalone-update-Y2OZPLNJ.js} +21 -20
  193. package/chunks/{start-opentui-ui-WLV43247.js → start-opentui-ui-G6TKT4LI.js} +449 -210
  194. package/chunks/{startInteractiveUI-F5DKMLOV.js → startInteractiveUI-YTNDPW7J.js} +1182 -1245
  195. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  196. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  197. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  198. package/chunks/{team-create-2PATB77U.js → team-create-BUFLGGSH.js} +13 -13
  199. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  200. package/chunks/{team-plan-approval-QTANEWOS.js → team-plan-approval-OUWWM42U.js} +13 -13
  201. package/chunks/{terminal-image-renderer-OGULCFNF.js → terminal-image-renderer-WH2WV5ES.js} +20 -19
  202. package/chunks/{theme-manager-CNO3QERP.js → theme-manager-5UDRARM2.js} +20 -19
  203. package/chunks/{tool-search-VXWEOZE7.js → tool-search-MCDIRPHN.js} +4 -4
  204. package/chunks/{total-session-admission-4KAADZPB.js → total-session-admission-VL27U74Z.js} +21 -20
  205. package/chunks/{trustedFolders-PPJSOPOT.js → trustedFolders-MSXT4VDD.js} +21 -20
  206. package/chunks/{update-relaunch-4PT4MW7B.js → update-relaunch-JKLEWVCB.js} +5 -5
  207. package/chunks/{updateCheck-WAVFLWNG.js → updateCheck-ARTHAJT2.js} +20 -19
  208. package/chunks/{useAutoAcceptIndicator-XNED4NRB.js → useAutoAcceptIndicator-YEAAGYVU.js} +26 -25
  209. package/chunks/{validateNonInterActiveAuth-J676DUQ2.js → validateNonInterActiveAuth-EMRQKH5S.js} +56 -55
  210. package/chunks/{version-J6SRRQB2.js → version-HFQU35WD.js} +3 -1
  211. package/chunks/{web-fetch-FMZZYX44.js → web-fetch-QBXAO6VF.js} +4 -4
  212. package/chunks/{web-search-3G2KXCX5.js → web-search-2URQXA3A.js} +186 -9
  213. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  214. package/chunks/{workflow-PPZZICQ7.js → workflow-JDD6WDAH.js} +204 -68
  215. package/chunks/{workspace-providers-status-IIYTAQST.js → workspace-providers-status-B4IKR6YJ.js} +27 -26
  216. package/chunks/{workspace-registration-store-VHCDXAV7.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  217. package/chunks/{workspace-registry-I7VQIPS2.js → workspace-registry-WVYJ5UGB.js} +21 -20
  218. package/chunks/{workspace-runtime-coordinator-DBGNY32G.js → workspace-runtime-coordinator-DXL5YVAG.js} +21 -20
  219. package/chunks/{workspace-service-QSKB2T54.js → workspace-service-QNGAMVH7.js} +26 -25
  220. package/chunks/{workspace-skills-status-T7GPT65J.js → workspace-skills-status-BEISJIII.js} +25 -24
  221. package/chunks/{workspace-trust-reconciler-2PKRDAU4.js → workspace-trust-reconciler-ORYJF5L4.js} +26 -25
  222. package/chunks/{write-file-L76CGFTQ.js → write-file-DWLKFBTJ.js} +14 -14
  223. package/chunks/{zoom-image-TDJJY2VZ.js → zoom-image-BYVIXSNQ.js} +4 -4
  224. package/cli.js +12 -12
  225. package/export-transcript-document.js +106 -106
  226. package/package.json +4 -4
  227. package/web-shell/assets/{abnfDiagram-VCTEODGH-DHc6plZn.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  228. package/web-shell/assets/{arc-BQ9m8TDV.js → arc-CDg7Zfpm.js} +1 -1
  229. package/web-shell/assets/{architectureDiagram-5GKGNRK7-D5ap3oVB.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  230. package/web-shell/assets/{blockDiagram-NRAW4CY4-BIbnyNph.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  231. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BRsdx_iG.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  232. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  233. package/web-shell/assets/{chunk-2Q5K7J3B-3lf1fNlx.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  234. package/web-shell/assets/{chunk-5VM5RSS4-DP8VNRc4.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  235. package/web-shell/assets/{chunk-F27PBJKO-DrohDmZ6.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  236. package/web-shell/assets/{chunk-G27WJ6UU-UZ2QhSx6.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  237. package/web-shell/assets/{chunk-JWPE2WC7-BIMHVcZK.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  238. package/web-shell/assets/{chunk-LCL6LL3I-izRxdSDd.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  239. package/web-shell/assets/{chunk-POPQ4Y6H-CXADD4PP.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  240. package/web-shell/assets/{chunk-SVP7TREG-B96d8Y_1.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  241. package/web-shell/assets/{chunk-XXDRQBXY-CF2sVQpv.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  242. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  243. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  244. package/web-shell/assets/{cose-bilkent-JH36ORCC-CT6tXVAS.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  245. package/web-shell/assets/{cynefin-OW5HDTMX-X1NS4vtV.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  246. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-DNsKNOT4.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  247. package/web-shell/assets/{dagre-3AP2YEHR-9-AHKqsb.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  248. package/web-shell/assets/{diagram-S7CK7UJ4-Bjgms7j6.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  249. package/web-shell/assets/{diagram-UQ7AKVKN-h6bCprbE.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  250. package/web-shell/assets/{diagram-VSXAHHWV-4SbQXVLt.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  251. package/web-shell/assets/{diagram-VX7I27RA-B5gPCzzB.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  252. package/web-shell/assets/{diagram-Z3DM3KII-DFJXIA3A.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  253. package/web-shell/assets/{ebnfDiagram-PWID7BFC-FwyaU7VY.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  254. package/web-shell/assets/{erDiagram-SSCWMZ5O-8vJQh2te.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  255. package/web-shell/assets/{flowDiagram-A5DVABFB-BzA_1gMN.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  256. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-Co-ABbVX.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  257. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-DW_FcyrX.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  258. package/web-shell/assets/{index-BbMXfhNG.js → index-9ie6xLTM.js} +1 -1
  259. package/web-shell/assets/{index-Bu-rZoJ-.js → index-DirkXQEg.js} +488 -474
  260. package/web-shell/assets/index-DzdST_7L.css +36 -0
  261. package/web-shell/assets/{infoDiagram-RXCK75RN-BEgfhUFN.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  262. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-DCsMxQmc.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  263. package/web-shell/assets/{journeyDiagram-EYS64GPL-DyIEYoHz.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  264. package/web-shell/assets/{kanban-definition-3QL26DDD-CkxjqCNr.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  265. package/web-shell/assets/{layout-BEWc0Al9.js → layout-C_70RhaT.js} +1 -1
  266. package/web-shell/assets/{linear-CNuNxirL.js → linear-BJ2ZLmcq.js} +1 -1
  267. package/web-shell/assets/{mermaid.core-DZBre674.js → mermaid.core-RlY0zPNC.js} +6 -6
  268. package/web-shell/assets/{mindmap-definition-FBJOCRG2-CpafFz_F.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  269. package/web-shell/assets/{pegDiagram-XKGWAZYB-DfZqk_dq.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  270. package/web-shell/assets/{pieDiagram-E7YTZNPT-S0UWXlgC.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  271. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-dd37_Ohj.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  272. package/web-shell/assets/{railroadDiagram-O6MQD6OU-CH8NJZ7u.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-CFdqWYih.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-CsddcEGD.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-BZ270mGw.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  276. package/web-shell/assets/{sizeCapture-X5ZJPWSS-CGaS4DBV.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  277. package/web-shell/assets/{stateDiagram-HBIQ2CUA-COpIzMu6.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  278. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  279. package/web-shell/assets/{swimlanes-XN3QIQJK-CMF889m3.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  280. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  281. package/web-shell/assets/{timeline-definition-24CTP7MA-BelnxYz5.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  282. package/web-shell/assets/{vennDiagram-4TSXK5OY-CU-NRqIB.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  283. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CDNKqWh-.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  284. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-CLqguL5D.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  285. package/web-shell/index.html +2 -2
  286. package/chunks/chunk-6YEOCHSE.js +0 -142
  287. package/chunks/chunk-X35VIWWJ.js +0 -276
  288. package/web-shell/assets/channel-uMMdTrYk.js +0 -1
  289. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +0 -1
  290. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +0 -1
  291. package/web-shell/assets/index-CsPwZ1ut.css +0 -36
  292. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +0 -1
  293. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +0 -8
@@ -2,19 +2,19 @@
2
2
  "use strict";
3
3
  import {
4
4
  listCommand
5
- } from "./chunk-D6AQNMUA.js";
5
+ } from "./chunk-QA2B26PL.js";
6
6
  import {
7
7
  getErrorMessage as getErrorMessage2
8
- } from "./chunk-6JXHO7LG.js";
8
+ } from "./chunk-SYKPMH2X.js";
9
9
  import {
10
10
  CUSTOM_SANDBOX_IMAGE_ENV_VAR
11
- } from "./chunk-RXT4QBDX.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-3YQMUBTS.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-6QILGINT.js";
61
+ } from "./chunk-LOBKNYPR.js";
62
62
  import {
63
63
  collectProviderModelsForProtocol,
64
64
  getAuthTypeFromEnv,
65
65
  resolveCliGenerationConfig
66
- } from "./chunk-ARYNBBBM.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-DZ6D4B3K.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-EEKU6COG.js";
94
+ } from "./chunk-6S7YYUUH.js";
94
95
  import {
95
96
  parseChannelConfig
96
- } from "./chunk-UXDVUFKU.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-45ROPFQY.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-GM44O6F7.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,26 +160,23 @@ import {
155
160
  isChannelProactiveDeliveryError,
156
161
  sanitizeLogText,
157
162
  sanitizePromptText
158
- } from "./chunk-XVTCSVBK.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-TGC4264Q.js";
176
+ } from "./chunk-OVTPETDL.js";
175
177
  import {
176
178
  loadSettings
177
- } from "./chunk-66JBCTJF.js";
179
+ } from "./chunk-Y7YHAY32.js";
178
180
  import {
179
181
  detectSystemLanguage,
180
182
  getCurrentLanguage,
@@ -186,7 +188,7 @@ import {
186
188
  import {
187
189
  isFileSourcedEnvKey,
188
190
  loadEnvironment
189
- } from "./chunk-5CVY5Q2P.js";
191
+ } from "./chunk-43EUMPKQ.js";
190
192
  import {
191
193
  resolveAcpChannelFallback,
192
194
  scrubAndReportInheritedLoaderEnv
@@ -196,13 +198,13 @@ import {
196
198
  } from "./chunk-2EAZ43JQ.js";
197
199
  import {
198
200
  getCliVersion
199
- } from "./chunk-27LTEY6D.js";
201
+ } from "./chunk-ATBLEXXV.js";
200
202
  import {
201
203
  getPackageJson
202
204
  } from "./chunk-W3N5XAZ6.js";
203
205
  import {
204
206
  isWorkspaceTrusted
205
- } from "./chunk-3VDLQUR2.js";
207
+ } from "./chunk-D6AGS266.js";
206
208
  import {
207
209
  require_strip_json_comments
208
210
  } from "./chunk-NPQ5ZKRP.js";
@@ -224,7 +226,7 @@ import {
224
226
  removeChannelMemoryEntries,
225
227
  removePeerController,
226
228
  updateChannelMemoryEntry
227
- } from "./chunk-ZU2T5JIS.js";
229
+ } from "./chunk-ZEFWBG2C.js";
228
230
  import {
229
231
  hideBin,
230
232
  yargs_default
@@ -265,7 +267,7 @@ import {
265
267
  sanitizeFilenameComponent,
266
268
  unquoteCStylePath,
267
269
  updateSetting
268
- } from "./chunk-PDUMGZ2P.js";
270
+ } from "./chunk-BDAVT6K2.js";
269
271
  import {
270
272
  parsePositiveIntegerEnv
271
273
  } from "./chunk-6PVPNMXU.js";
@@ -277,8 +279,12 @@ import {
277
279
  resolveBundleDir
278
280
  } from "./chunk-TRWQQBVH.js";
279
281
  import {
282
+ describeSessionKind,
280
283
  listLiveSessions
281
- } from "./chunk-B44JBZBB.js";
284
+ } from "./chunk-F4SAL7WM.js";
285
+ import {
286
+ isSameProcess
287
+ } from "./chunk-CH2YDT6X.js";
282
288
  import {
283
289
  APPROVAL_MODES
284
290
  } from "./chunk-JX6XHPTX.js";
@@ -289,13 +295,13 @@ import {
289
295
  } from "./chunk-CLKE4IY3.js";
290
296
  import {
291
297
  BUILT_IN_OUTPUT_STYLES
292
- } from "./chunk-3LPJ776W.js";
298
+ } from "./chunk-2HYOOFDS.js";
293
299
  import {
294
300
  addDaemonRequestAttribute
295
301
  } from "./chunk-7OCIQNKX.js";
296
302
  import {
297
303
  parseLineTolerant
298
- } from "./chunk-6QV7Z74P.js";
304
+ } from "./chunk-FRS3P7MQ.js";
299
305
  import {
300
306
  getAllMemoryFilenames,
301
307
  setMemoryFilename
@@ -304,7 +310,7 @@ import {
304
310
  DEFAULT_QWEN_EMBEDDING_MODEL,
305
311
  VERTEX_ADC_HINT,
306
312
  hasVertexProjectConfigured
307
- } from "./chunk-N7YQEKGX.js";
313
+ } from "./chunk-EOLGAQ25.js";
308
314
  import {
309
315
  atomicWriteFileSync
310
316
  } from "./chunk-XFFRI3WM.js";
@@ -2969,6 +2975,10 @@ function channelMemoryOptions(getBridge, cwd) {
2969
2975
  };
2970
2976
  }
2971
2977
  __name(channelMemoryOptions, "channelMemoryOptions");
2978
+ function isUnverifiablePidfileError(err) {
2979
+ return err instanceof Error && err.code === "channel_service_conflict";
2980
+ }
2981
+ __name(isUnverifiablePidfileError, "isUnverifiablePidfileError");
2972
2982
  async function writeServiceInfoOrExit(channels, cleanup) {
2973
2983
  try {
2974
2984
  writeServiceInfo(channels);
@@ -2980,6 +2990,10 @@ async function writeServiceInfoOrExit(channels, cleanup) {
2980
2990
  );
2981
2991
  process.exit(1);
2982
2992
  }
2993
+ if (isUnverifiablePidfileError(err)) {
2994
+ writeStderrLine(`Error: ${err.message}`);
2995
+ process.exit(1);
2996
+ }
2983
2997
  throw err;
2984
2998
  }
2985
2999
  }
@@ -3163,7 +3177,7 @@ function checkDuplicateInstance() {
3163
3177
  }
3164
3178
  }
3165
3179
  __name(checkDuplicateInstance, "checkDuplicateInstance");
3166
- async function startSingle(name, proxy, cronEnabled, displayLanguage) {
3180
+ async function startSingle(name, proxy, cronEnabled, locale, displayLanguage) {
3167
3181
  checkDuplicateInstance();
3168
3182
  const channelsConfig = loadChannelsConfig();
3169
3183
  await loadChannelsFromExtensions();
@@ -3209,6 +3223,7 @@ async function startSingle(name, proxy, cronEnabled, displayLanguage) {
3209
3223
  const loopController = loopStore ? createChannelLoopController(loopStore) : void 0;
3210
3224
  const channels = /* @__PURE__ */ new Map();
3211
3225
  const channel = await createChannel(name, config2, bridge, {
3226
+ locale,
3212
3227
  router,
3213
3228
  proxy,
3214
3229
  ...displayLanguage ? { displayLanguage } : {},
@@ -3299,7 +3314,7 @@ async function startSingle(name, proxy, cronEnabled, displayLanguage) {
3299
3314
  });
3300
3315
  }
3301
3316
  __name(startSingle, "startSingle");
3302
- async function startAll(proxy, cronEnabled, displayLanguage) {
3317
+ async function startAll(proxy, cronEnabled, locale, displayLanguage) {
3303
3318
  checkDuplicateInstance();
3304
3319
  const channelsConfig = loadChannelsConfig();
3305
3320
  await loadChannelsFromExtensions();
@@ -3350,6 +3365,7 @@ async function startAll(proxy, cronEnabled, displayLanguage) {
3350
3365
  channels.set(
3351
3366
  name,
3352
3367
  await createChannel(name, config2, bridge, {
3368
+ locale,
3353
3369
  router,
3354
3370
  proxy,
3355
3371
  ...displayLanguage ? { displayLanguage } : {},
@@ -3474,21 +3490,47 @@ var startCommand = {
3474
3490
  settings.merged.proxy
3475
3491
  );
3476
3492
  const cronEnabled = isChannelCronEnabled(settings);
3493
+ const locale = resolveChannelLocale(settings.merged.general?.language);
3477
3494
  const displayLanguage = resolveLanguage(
3478
3495
  resolveLanguageSetting(
3479
3496
  settings.merged.general?.language
3480
3497
  )
3481
3498
  );
3482
3499
  if (argv.name) {
3483
- await startSingle(argv.name, proxy, cronEnabled, displayLanguage);
3500
+ await startSingle(argv.name, proxy, cronEnabled, locale, displayLanguage);
3484
3501
  } else {
3485
- await startAll(proxy, cronEnabled, displayLanguage);
3502
+ await startAll(proxy, cronEnabled, locale, displayLanguage);
3486
3503
  }
3487
3504
  }, "handler")
3488
3505
  };
3489
3506
 
3490
3507
  // packages/cli/src/commands/channel/stop.ts
3491
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");
3492
3534
  var stopCommand = {
3493
3535
  command: "stop",
3494
3536
  describe: "Stop the running channel service",
@@ -3503,7 +3545,7 @@ var stopCommand = {
3503
3545
  if (argv["daemon-url"]) {
3504
3546
  const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
3505
3547
  try {
3506
- const sdk = await import("./daemon-UI6SQSBV.js");
3548
+ const sdk = await import("./daemon-U2456K5H.js");
3507
3549
  const client = new sdk.DaemonClient({
3508
3550
  baseUrl: argv["daemon-url"],
3509
3551
  ...token ? { token } : {}
@@ -3535,25 +3577,34 @@ var stopCommand = {
3535
3577
  process.exit(1);
3536
3578
  }
3537
3579
  writeStdoutLine(`Stopping channel service (PID ${info.pid})...`);
3538
- 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
+ }
3539
3586
  writeStderrLine(
3540
3587
  "Failed to send signal \u2014 process may have already exited."
3541
3588
  );
3542
- removeServiceInfo();
3589
+ removeServiceInfo(info);
3543
3590
  process.exit(0);
3544
3591
  }
3545
- const exited = await waitForExit(info.pid, 5e3);
3592
+ const exited = await waitForExit(info.pid, 5e3, 200, info.procStart);
3546
3593
  if (exited) {
3547
- removeServiceInfo();
3594
+ removeServiceInfo(info);
3548
3595
  writeStdoutLine("Service stopped.");
3549
3596
  } else {
3550
3597
  writeStderrLine(
3551
3598
  "Service did not exit within 5 seconds. Sending SIGKILL..."
3552
3599
  );
3553
- signalService(info.pid, "SIGKILL");
3554
- await waitForExit(info.pid, 2e3);
3555
- removeServiceInfo();
3556
- 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
+ }
3557
3608
  }
3558
3609
  process.exit(0);
3559
3610
  }, "handler")
@@ -3689,7 +3740,7 @@ var statusCommand = {
3689
3740
  if (argv["daemon-url"]) {
3690
3741
  const token = argv.token ?? process.env[QWEN_SERVER_TOKEN_ENV] ?? process.env[QWEN_DAEMON_TOKEN_ENV];
3691
3742
  try {
3692
- const sdk = await import("./daemon-UI6SQSBV.js");
3743
+ const sdk = await import("./daemon-U2456K5H.js");
3693
3744
  const client = new sdk.DaemonClient({
3694
3745
  baseUrl: argv["daemon-url"],
3695
3746
  ...token ? { token } : {}
@@ -3800,7 +3851,7 @@ var reloadCommand = {
3800
3851
  const token = resolveToken(argv.token);
3801
3852
  let sdk;
3802
3853
  try {
3803
- sdk = await import("./daemon-UI6SQSBV.js");
3854
+ sdk = await import("./daemon-U2456K5H.js");
3804
3855
  } catch (err) {
3805
3856
  writeStderrLine(
3806
3857
  `[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(err)}`
@@ -3880,7 +3931,7 @@ var setCommand2 = {
3880
3931
  const selection = names[0] === "all" ? { mode: "all" } : { mode: "names", names };
3881
3932
  let sdk;
3882
3933
  try {
3883
- sdk = await import("./daemon-UI6SQSBV.js");
3934
+ sdk = await import("./daemon-U2456K5H.js");
3884
3935
  } catch (error) {
3885
3936
  writeStderrLine(
3886
3937
  `[Channel] Failed to load daemon SDK: ${safeChannelCommandErrorMessage(error)}`
@@ -4038,7 +4089,7 @@ function createDaemonChannelBridgeFacade(bridge, opts) {
4038
4089
  }
4039
4090
  __name(createDaemonChannelBridgeFacade, "createDaemonChannelBridgeFacade");
4040
4091
  async function loadDaemonSdk() {
4041
- return await import("./daemon-UI6SQSBV.js");
4092
+ return await import("./daemon-U2456K5H.js");
4042
4093
  }
4043
4094
  __name(loadDaemonSdk, "loadDaemonSdk");
4044
4095
  function selectedChannelNames(channelsConfig, selection) {
@@ -4195,6 +4246,7 @@ async function runChannelDaemonWorker(opts) {
4195
4246
  void 0,
4196
4247
  settings.merged.proxy
4197
4248
  );
4249
+ const locale = resolveChannelLocale(settings.merged.general?.language);
4198
4250
  const displayLanguage = resolveLanguage(
4199
4251
  resolveLanguageSetting(
4200
4252
  settings.merged.general?.language
@@ -4311,6 +4363,7 @@ async function runChannelDaemonWorker(opts) {
4311
4363
  name,
4312
4364
  await abortableStartup(
4313
4365
  createChannel(name, config2, bridgeFacade, {
4366
+ locale,
4314
4367
  ...proxy ? { proxy } : {},
4315
4368
  ...displayLanguage ? { displayLanguage } : {},
4316
4369
  router: createdRouter,
@@ -6704,6 +6757,7 @@ function filterCommandsIn(commonDir, gitDir) {
6704
6757
  }
6705
6758
  const filters = /* @__PURE__ */ new Set();
6706
6759
  const unread = /* @__PURE__ */ new Set();
6760
+ const dangling = /* @__PURE__ */ new Set();
6707
6761
  const visited = /* @__PURE__ */ new Set();
6708
6762
  const read = /* @__PURE__ */ __name((file) => {
6709
6763
  const r = spawnSync2(
@@ -6737,12 +6791,17 @@ function filterCommandsIn(commonDir, gitDir) {
6737
6791
  const visit = /* @__PURE__ */ __name((file, depth, via) => {
6738
6792
  let real;
6739
6793
  try {
6740
- real = realpathSync3(file);
6741
- } catch {
6794
+ real = realpathSync3.native(file);
6795
+ } catch (e) {
6742
6796
  if (via !== null) {
6743
- unread.add(
6744
- `${via} -> ${file} (missing \u2014 git ignores a dangling include; this screen refuses it)`
6745
- );
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
+ }
6746
6805
  }
6747
6806
  return;
6748
6807
  }
@@ -6784,20 +6843,24 @@ function filterCommandsIn(commonDir, gitDir) {
6784
6843
  }
6785
6844
  let target;
6786
6845
  if (value.startsWith("~/")) {
6787
- target = join7(process.env["HOME"] || homedir(), value.slice(2));
6846
+ target = `${process.env["HOME"] || homedir()}${sep3}${value.slice(2)}`;
6788
6847
  } else if (value.startsWith("~")) {
6789
6848
  unread.add(
6790
6849
  `${key} -> ${value} (another user's home \u2014 not resolved here)`
6791
6850
  );
6792
6851
  continue;
6793
6852
  } else {
6794
- target = resolve4(dirname3(file), value);
6853
+ target = isAbsolute3(value) ? value : `${dirname3(file)}${sep3}${value}`;
6795
6854
  }
6796
6855
  visit(target, depth + 1, `${key} (in ${file})`);
6797
6856
  }
6798
6857
  }, "visit");
6799
6858
  for (const candidate of candidates) visit(candidate, 0, null);
6800
- return { filters: [...filters], unread: [...unread] };
6859
+ return {
6860
+ filters: [...filters],
6861
+ unread: [...unread],
6862
+ dangling: [...dangling]
6863
+ };
6801
6864
  }
6802
6865
  __name(filterCommandsIn, "filterCommandsIn");
6803
6866
  function describeFilterScreen(hits) {
@@ -6830,7 +6893,8 @@ function filterBlankEnv(filterKeys) {
6830
6893
  return env;
6831
6894
  }
6832
6895
  __name(filterBlankEnv, "filterBlankEnv");
6833
- 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) {
6834
6898
  const discover = /* @__PURE__ */ __name((flag) => {
6835
6899
  const r = spawnSync2("git", ["rev-parse", "--path-format=absolute", flag], {
6836
6900
  cwd: worktree,
@@ -6844,15 +6908,22 @@ function localFilterCommands(worktree) {
6844
6908
  }, "discover");
6845
6909
  const commonDir = discover("--git-common-dir");
6846
6910
  const gitDir = discover("--git-dir");
6847
- if (commonDir === null || gitDir === null) {
6848
- return [
6849
- "the repository's git directories could not be resolved (git rev-parse failed) \u2014 not screened"
6850
- ];
6851
- }
6852
- const screen = filterCommandsIn(commonDir, gitDir);
6853
- 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];
6854
6919
  }
6855
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");
6856
6927
  function discardWorktree(cwd, tree) {
6857
6928
  let symlink = false;
6858
6929
  try {
@@ -7118,11 +7189,12 @@ function worktreeResidue(cwd, cap = RESIDUE_PATH_CAP, expectedHeadSha) {
7118
7189
  }
7119
7190
  }
7120
7191
  const screen = filterCommandsIn(commonDir, realpathSync3(gitDir));
7121
- if (screen.unread.length > 0) {
7192
+ const notReadToTheBottom = [...screen.unread, ...screen.dangling];
7193
+ if (notReadToTheBottom.length > 0) {
7122
7194
  return {
7123
7195
  paths: [],
7124
7196
  total: 0,
7125
- 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`
7126
7198
  };
7127
7199
  }
7128
7200
  filterBlanks = filterBlankEnv(screen.filters);
@@ -39191,6 +39263,16 @@ function classifyProbeRun(exitCode, stdout, probes, stderr = "") {
39191
39263
  });
39192
39264
  }
39193
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");
39194
39276
  function git4(cwd, ...args) {
39195
39277
  const r = spawnSync10("git", args, {
39196
39278
  cwd,
@@ -39366,14 +39448,15 @@ function restoreProbeTreeTracked(probeTree) {
39366
39448
  } catch (e) {
39367
39449
  return e instanceof Error ? e.message : String(e);
39368
39450
  }
39369
- const inert = [
39370
- "-c",
39371
- "core.hooksPath=/dev/null/no-hooks",
39372
- "-c",
39373
- "core.fsmonitor="
39374
- ];
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
+ }
39375
39458
  for (const args of [
39376
- [...inert, "checkout", "--force", "HEAD", "--", "."],
39459
+ [...CHECKOUT_INERT, "checkout", "--force", "HEAD", "--", "."],
39377
39460
  // `-ffdx`, because `-fd` honors the ignore rules — and those belong to the
39378
39461
  // commit under test, so a plant named to match one of them (a committed
39379
39462
  // `.gitignore` line and a file to match it) survived every restore. The
@@ -39381,7 +39464,7 @@ function restoreProbeTreeTracked(probeTree) {
39381
39464
  // rather than built, and it is the only ignored thing in this tree the
39382
39465
  // probes cannot run without. Everything else ignored — a built `dist`, a
39383
39466
  // planted config — goes.
39384
- [...inert, "clean", "-ffdx", "-e", "node_modules"]
39467
+ [...CHECKOUT_INERT, "clean", "-ffdx", "-e", "node_modules"]
39385
39468
  ]) {
39386
39469
  const r = spawnSync10("git", args, {
39387
39470
  cwd: probeTree,
@@ -39390,7 +39473,9 @@ function restoreProbeTreeTracked(probeTree) {
39390
39473
  });
39391
39474
  if (r.error) return r.error.message;
39392
39475
  if (r.status !== 0) {
39393
- 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}`;
39394
39479
  }
39395
39480
  }
39396
39481
  const bits = spawnSync10(
@@ -39630,6 +39715,17 @@ function runOneHunkProbe(probeTree, hunk, probes, deadlineAt, now = Date.now, de
39630
39715
  detail: "the probe target was relinked through a symlink before the reverse patch applied \u2014 nothing was neutralised"
39631
39716
  };
39632
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
+ }
39633
39729
  const applied = spawnSync10("git", ["apply", "--reverse", "-"], {
39634
39730
  cwd: probeTree,
39635
39731
  input: hunk.patch,
@@ -39937,8 +40033,25 @@ async function runTestEfficacy(args) {
39937
40033
  let created = false;
39938
40034
  let sweep;
39939
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
+ }
39940
40045
  sweep = discardWorktree(worktree, probeTree);
39941
- 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
+ );
39942
40055
  created = true;
39943
40056
  } catch (e) {
39944
40057
  const detail = worktreeCreateFailureDetail(
@@ -40027,7 +40140,7 @@ async function runTestEfficacy(args) {
40027
40140
  );
40028
40141
  if (harnessValidated === null) {
40029
40142
  noteMutants(
40030
- `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`
40031
40144
  );
40032
40145
  }
40033
40146
  }
@@ -40133,7 +40246,23 @@ async function runTestEfficacy(args) {
40133
40246
  (existsAtBase(probeTree, base, p) ? modified : added).push(p);
40134
40247
  }
40135
40248
  if (modified.length > 0) {
40136
- 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
+ );
40137
40266
  }
40138
40267
  for (const p of added) safeRmWithin(probeTree, p);
40139
40268
  const collectable = probes.filter(
@@ -43473,6 +43602,7 @@ var listCommand4 = {
43473
43602
  // packages/cli/src/commands/sessions/ps.ts
43474
43603
  init_esbuild_shims();
43475
43604
  var NAME_COL = 22;
43605
+ var KIND_COL = 10;
43476
43606
  var PID_COL = 9;
43477
43607
  var AGE_COL = 10;
43478
43608
  function sanitize3(value) {
@@ -43497,13 +43627,21 @@ function formatAge(ms) {
43497
43627
  __name(formatAge, "formatAge");
43498
43628
  function outputHuman2(records, now) {
43499
43629
  writeStdoutLine(
43500
- 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"
43501
43631
  );
43502
43632
  for (const record of records) {
43503
43633
  writeStdoutLine(
43504
43634
  padDisplay3(
43505
43635
  truncateToWidth(sanitize3(record.name), NAME_COL - 2),
43506
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
43507
43645
  ) + padDisplay3(String(record.pid), PID_COL) + padDisplay3(formatAge(now - record.startedAt), AGE_COL) + sanitize3(record.cwd)
43508
43646
  );
43509
43647
  }
@@ -43519,7 +43657,7 @@ async function handlePs(argv) {
43519
43657
  return;
43520
43658
  }
43521
43659
  if (records.length === 0) {
43522
- writeStdoutLine("No other interactive Qwen Code sessions are running.");
43660
+ writeStdoutLine("No Qwen Code sessions are registered right now.");
43523
43661
  return;
43524
43662
  }
43525
43663
  outputHuman2(records, now);
@@ -43527,7 +43665,7 @@ async function handlePs(argv) {
43527
43665
  __name(handlePs, "handlePs");
43528
43666
  var psCommand = {
43529
43667
  command: "ps",
43530
- describe: "List interactive Qwen Code sessions running right now",
43668
+ describe: "List Qwen Code sessions running right now",
43531
43669
  builder: /* @__PURE__ */ __name((yargs) => yargs.option("json", {
43532
43670
  type: "boolean",
43533
43671
  describe: "Output as JSON Lines",
@@ -43565,10 +43703,10 @@ var updateCommand3 = {
43565
43703
  stdioHelpers,
43566
43704
  { updateEventEmitter }
43567
43705
  ] = await Promise.all([
43568
- import("./settings-A46L577J.js"),
43569
- import("./updateCheck-WAVFLWNG.js"),
43570
- import("./installationInfo-232RA2OK.js"),
43571
- import("./standalone-update-L46XXNQ2.js"),
43706
+ import("./settings-Y47SPE3X.js"),
43707
+ import("./updateCheck-ARTHAJT2.js"),
43708
+ import("./installationInfo-QEQEPB3G.js"),
43709
+ import("./standalone-update-Y2OZPLNJ.js"),
43572
43710
  import("./stdioHelpers-AY6XCDY2.js"),
43573
43711
  import("./updateEventEmitter-5MKC7BLQ.js")
43574
43712
  ]);
@@ -44672,7 +44810,7 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
44672
44810
  disabledSkillNamesProvider: bareMode || safeMode ? void 0 : disabledSkillNamesProvider,
44673
44811
  enabledSkillNamesProvider: bareMode || safeMode ? void 0 : enabledSkillNamesProvider,
44674
44812
  terminalImageRenderSupportProvider: interactive ? async () => {
44675
- const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-OGULCFNF.js");
44813
+ const { getTerminalImageRenderSupport } = await import("./terminal-image-renderer-WH2WV5ES.js");
44676
44814
  return getTerminalImageRenderSupport();
44677
44815
  } : void 0,
44678
44816
  disabledSkillLevels: bareMode || safeMode || !Array.isArray(settings.skills?.disabledLevels) ? void 0 : settings.skills.disabledLevels.filter(isSkillLevel),
@@ -44830,7 +44968,9 @@ async function loadCliConfig(settings, argv, cwd = process.cwd(), overrideExtens
44830
44968
  memoryAgentTimeoutMinutes: settings.memory?.agentTimeoutMinutes,
44831
44969
  memoryAgentMaxTurns: settings.memory?.agentMaxTurns,
44832
44970
  fastModel: settings.fastModel || void 0,
44833
- 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),
44834
44974
  visionModel: settings.visionModel || void 0,
44835
44975
  compactionModel: settings.compactionModel || void 0,
44836
44976
  imageModel: settings.imageModel || void 0,