@qwen-code/qwen-code 0.23.1-preview.2 → 0.23.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/bundled/computer-use/SKILL.md +189 -116
  2. package/bundled/goal-draft/SKILL.md +23 -13
  3. package/bundled/qc-helper/docs/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +47 -1
  5. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  6. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  7. package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
  8. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  9. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  10. package/bundled/qc-helper/docs/features/goals.md +15 -3
  11. package/bundled/qc-helper/docs/qwen-serve.md +19 -1
  12. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-UDO6Y7RB.js} +20 -20
  13. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-D4CUOO4H.js} +38 -38
  14. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  15. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-KWLJFADK.js} +118 -91
  16. package/chunks/{agent-GEBPAEJS.js → agent-GSUPGEOL.js} +13 -13
  17. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-HNYCQUJB.js} +13 -13
  18. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-I7LQZH26.js} +30 -7
  19. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-I5W5S3D6.js} +1 -1
  20. package/chunks/{bridge-MHWO5I5T.js → bridge-B7CV6RVI.js} +23 -23
  21. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TRTLQTSV.js} +4 -4
  22. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FW45IRUP.js} +31 -31
  23. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-PIYPVCTF.js} +6 -6
  24. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-FQHEDTD2.js} +6 -6
  25. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-XJPZZ3VK.js} +3 -3
  26. package/chunks/{chunk-KTLT7VCX.js → chunk-25CBAK3H.js} +2 -2
  27. package/chunks/{chunk-SHX2HIE7.js → chunk-27LTEY6D.js} +1 -1
  28. package/chunks/{chunk-ZT3XUGSU.js → chunk-2TMJRF46.js} +86 -9
  29. package/chunks/{chunk-HWZOOSEB.js → chunk-2YS3NU4A.js} +3 -3
  30. package/chunks/chunk-2Z3T52OC.js +82 -0
  31. package/chunks/{chunk-QW7BUOSI.js → chunk-2ZFO5JD7.js} +20 -3
  32. package/chunks/{chunk-RH344FKI.js → chunk-3BTHHXXE.js} +1 -1
  33. package/chunks/{chunk-OFB36ZBA.js → chunk-3LPJ776W.js} +1 -1
  34. package/chunks/{chunk-GEV66YGE.js → chunk-3VDLQUR2.js} +1 -1
  35. package/chunks/{chunk-RRCNEW2A.js → chunk-3VWPPK5Q.js} +58 -4
  36. package/chunks/{chunk-L36LLVA5.js → chunk-3YQMUBTS.js} +3 -3
  37. package/chunks/{chunk-LTCI6ZOJ.js → chunk-45ROPFQY.js} +1 -1
  38. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  39. package/chunks/{chunk-4OCYWXKF.js → chunk-5CVY5Q2P.js} +3 -3
  40. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  41. package/chunks/{chunk-FWH4736Q.js → chunk-5IL2BZHW.js} +3 -3
  42. package/chunks/{chunk-537SQ2AI.js → chunk-5WC2ECUK.js} +104 -16
  43. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  44. package/chunks/{chunk-RUMSY4ES.js → chunk-66JBCTJF.js} +8 -7
  45. package/chunks/{chunk-YLFICBYK.js → chunk-6JXHO7LG.js} +3 -3
  46. package/chunks/{chunk-TDHVOZ65.js → chunk-6QILGINT.js} +2 -2
  47. package/chunks/{chunk-WQBR7LN5.js → chunk-6QV7Z74P.js} +1 -1
  48. package/chunks/{chunk-RSU3I6UL.js → chunk-6SADVYQQ.js} +1 -1
  49. package/chunks/{chunk-AIMZIXZM.js → chunk-6TPVIESH.js} +5 -7
  50. package/chunks/{chunk-2LD5U7Q3.js → chunk-6YEOCHSE.js} +29 -1
  51. package/chunks/{chunk-7PMKXGRP.js → chunk-75LBC7SV.js} +66 -9
  52. package/chunks/{chunk-B5FF3LRF.js → chunk-7SL55L5H.js} +22 -15
  53. package/chunks/{chunk-I7UNCY24.js → chunk-ARYNBBBM.js} +3 -3
  54. package/chunks/{chunk-QQGAR64U.js → chunk-B3EL44K3.js} +4 -4
  55. package/chunks/{chunk-KAZWXVI3.js → chunk-CABDNUJ4.js} +2 -2
  56. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  57. package/chunks/{chunk-75UQFGFE.js → chunk-CHVU543W.js} +1 -1
  58. package/chunks/{chunk-C4NXRR7T.js → chunk-CIKL2DQP.js} +2 -2
  59. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  60. package/chunks/{chunk-SHK2SIR5.js → chunk-D6AQNMUA.js} +4 -4
  61. package/chunks/{chunk-EPZWBYQI.js → chunk-DO5SMV52.js} +8 -6
  62. package/chunks/{chunk-P5Z7VD23.js → chunk-DXQ6Z7AH.js} +106 -39
  63. package/chunks/{chunk-3RMVM33U.js → chunk-DZ6D4B3K.js} +5 -5
  64. package/chunks/{chunk-T7TP5UQL.js → chunk-E7XSUYCZ.js} +4 -4
  65. package/chunks/{chunk-2C3XDBGL.js → chunk-EEKU6COG.js} +4 -4
  66. package/chunks/{chunk-AX23QSX3.js → chunk-EHTKOO6W.js} +4 -4
  67. package/chunks/{chunk-XNC2TCUO.js → chunk-ENZDGHGJ.js} +4 -4
  68. package/chunks/{chunk-733KQL63.js → chunk-EOET4H7C.js} +3 -3
  69. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  70. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  71. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  72. package/chunks/{chunk-UTVIIA7N.js → chunk-FW4E4QPG.js} +1 -1
  73. package/chunks/{chunk-REDVV5NC.js → chunk-FWRRUITH.js} +7 -7
  74. package/chunks/{chunk-5V4B3EWA.js → chunk-GM44O6F7.js} +1 -1
  75. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  76. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  77. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  78. package/chunks/{chunk-XX4MBBFW.js → chunk-HUX2DOTF.js} +3 -3
  79. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  80. package/chunks/{chunk-RD3VPM4E.js → chunk-IKG2YVRZ.js} +2 -2
  81. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  82. package/chunks/{chunk-ZJ2LM2SI.js → chunk-JGDRB4FP.js} +104 -33
  83. package/chunks/{chunk-ANVC5CSK.js → chunk-L7V52QEZ.js} +10 -10
  84. package/chunks/{chunk-MFCWL4LI.js → chunk-LNCNUMJ5.js} +451 -396
  85. package/chunks/{chunk-AUJOWIT5.js → chunk-LZGFVUWZ.js} +3 -3
  86. package/chunks/{chunk-6KYWU726.js → chunk-M73KHGNR.js} +13 -66
  87. package/chunks/{chunk-ADJD4LZF.js → chunk-MA5OUNN6.js} +1 -1
  88. package/chunks/{chunk-I67KJGM6.js → chunk-MFYH2VXV.js} +3 -3
  89. package/chunks/{chunk-PLUAIHZO.js → chunk-N7YQEKGX.js} +6 -6
  90. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  91. package/chunks/chunk-NOO4QFXM.js +171 -0
  92. package/chunks/{chunk-VYCJITND.js → chunk-O2JBJQCF.js} +1 -1
  93. package/chunks/{chunk-RQNAO42A.js → chunk-OESZTXTG.js} +1 -1
  94. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  95. package/chunks/{chunk-Y3C5COGI.js → chunk-OPMKGOLD.js} +1 -1
  96. package/chunks/{chunk-TSLRORQR.js → chunk-PDUMGZ2P.js} +1467 -1323
  97. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  98. package/chunks/{chunk-5FYGZ7E3.js → chunk-QK4K76T6.js} +2 -2
  99. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  100. package/chunks/{chunk-WFXD5OZH.js → chunk-QZOXVQPK.js} +1 -1
  101. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  102. package/chunks/{chunk-KP5QK3FB.js → chunk-RNYENHN5.js} +397 -54
  103. package/chunks/{chunk-22QOQKG4.js → chunk-RXT4QBDX.js} +1 -1
  104. package/chunks/{chunk-LYHYXJJ3.js → chunk-S6QVI3MV.js} +3 -3
  105. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  106. package/chunks/{chunk-IGOIYZBG.js → chunk-T2IHCZLS.js} +2 -2
  107. package/chunks/{chunk-C55CR5I4.js → chunk-TGC4264Q.js} +6 -6
  108. package/chunks/{chunk-EGRFCIXD.js → chunk-TWAMIEQ2.js} +79 -18
  109. package/chunks/{chunk-PMGWY6ZP.js → chunk-TWWS7XUW.js} +13 -10
  110. package/chunks/{chunk-RGAQDQ3Z.js → chunk-UHUT4IDM.js} +18 -9
  111. package/chunks/{chunk-HPE4LEWX.js → chunk-USN6VNTO.js} +1 -1
  112. package/chunks/{chunk-BNWIX6BM.js → chunk-UXDVUFKU.js} +3 -3
  113. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  114. package/chunks/{chunk-3K456UJF.js → chunk-VF6D6EGV.js} +12 -4
  115. package/chunks/{chunk-ZNI3V2XA.js → chunk-WAASYFPK.js} +2 -2
  116. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  117. package/chunks/{chunk-C7M445SS.js → chunk-WJDXKQIO.js} +1 -1
  118. package/chunks/{chunk-HZS3JRQW.js → chunk-WNISCNTA.js} +40 -2
  119. package/chunks/{chunk-AWDF462I.js → chunk-WQMUGQ6G.js} +2 -2
  120. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  121. package/chunks/{chunk-65GHQ4FX.js → chunk-XVTCSVBK.js} +514 -47
  122. package/chunks/{chunk-SI6Q52UI.js → chunk-XZ3Z43XL.js} +3 -3
  123. package/chunks/{chunk-SD7Y2PMC.js → chunk-YAC7H4K3.js} +2 -2
  124. package/chunks/{chunk-FXYNIZPW.js → chunk-YCEKI7QX.js} +51 -10
  125. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  126. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  127. package/chunks/{chunk-VMFPZXRT.js → chunk-ZNO5BUAD.js} +43 -31
  128. package/chunks/{chunk-WLZRMF3C.js → chunk-ZPL2TZNA.js} +353 -11
  129. package/chunks/{chunk-TXAEXF2B.js → chunk-ZU2T5JIS.js} +21 -8
  130. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-KTDSQ4MU.js} +24 -24
  131. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-UQ3KRYGK.js} +22 -22
  132. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-JR34JAFH.js} +20 -20
  133. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-RGPJOI4S.js} +21 -21
  134. package/chunks/{daemon-LCUELM6E.js → daemon-UI6SQSBV.js} +1 -1
  135. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-H3OA26KQ.js} +20 -20
  136. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-6WZLKSZU.js} +27 -27
  137. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-3EDP2BYD.js} +27 -27
  138. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CRHZPK52.js} +27 -27
  139. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-LO5NTQQ4.js} +20 -20
  140. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  141. package/chunks/{dist-NXW4DUUX.js → dist-24TCWK5H.js} +1 -1
  142. package/chunks/{dist-I74QLLQS.js → dist-5I4HLUTO.js} +1 -1
  143. package/chunks/{dist-XINEKB5A.js → dist-FDISN4AK.js} +1 -1
  144. package/chunks/{dist-VCAS67N5.js → dist-M4CBX53H.js} +1 -1
  145. package/chunks/{dist-AI25RVRA.js → dist-NQ2636VT.js} +1 -1
  146. package/chunks/{dist-3H3WODVS.js → dist-OR2ZQTXZ.js} +1 -1
  147. package/chunks/{dist-P6YWBITG.js → dist-STAGIFNB.js} +430 -51
  148. package/chunks/{dist-YNQU4CKC.js → dist-WZTUKIDR.js} +2 -2
  149. package/chunks/{dist-T4PRA5EZ.js → dist-XJ25G6OH.js} +1 -1
  150. package/chunks/{edit-WPVXLL3T.js → edit-LB7Z7XK5.js} +13 -13
  151. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  152. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-P6TVUFIY.js} +13 -13
  153. package/chunks/{environment-5LLJ3I3W.js → environment-QATJNNKI.js} +23 -23
  154. package/chunks/{errors-IQT3YZEP.js → errors-3XJ37PS2.js} +22 -22
  155. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  156. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-A3OKL5UO.js} +13 -13
  157. package/chunks/{fast-path-PAUQQEVU.js → fast-path-DBIT5YQQ.js} +3 -3
  158. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  159. package/chunks/{glob-SQ7CTZ7F.js → glob-73EDTXUE.js} +13 -13
  160. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-DFI6YMSD.js} +13 -13
  161. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-2FUNJO3B.js} +23 -23
  162. package/chunks/{i18n-SF5MPWEB.js → i18n-FDIA6KFI.js} +23 -21
  163. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  164. package/chunks/{initializer-CK4WPYZG.js → initializer-4MJTJOTW.js} +27 -27
  165. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-232RA2OK.js} +20 -20
  166. package/chunks/{list-E3PS3EBJ.js → list-WN6WSGEB.js} +30 -30
  167. package/chunks/{llm-JQKBOYAF.js → llm-UDFWQWZA.js} +62 -62
  168. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-VLMZ2A7A.js} +23 -8
  169. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-OBQEIXM7.js} +27 -27
  170. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-RGVUMUVX.js} +14 -14
  171. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-QBAJYCFU.js} +20 -20
  172. package/chunks/{mcp-I7G2AEWS.js → mcp-OTIZZCPY.js} +27 -27
  173. package/chunks/{monitor-4R76BCRZ.js → monitor-BV5XF6LL.js} +13 -13
  174. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-W6MUKDVJ.js} +64 -61
  175. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-HGBEKGTE.js} +13 -13
  176. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-NSU3ERBH.js} +8 -8
  177. package/chunks/{pidfile-TGIUY2GG.js → pidfile-LE3TU4GE.js} +20 -20
  178. package/chunks/{processUtils-3USXUQWX.js → processUtils-YFBGJK67.js} +2 -2
  179. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-4W4W7DSO.js} +21 -21
  180. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-HTA57WFC.js} +16 -16
  181. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  182. package/chunks/{read-file-R256LDWQ.js → read-file-KHPQ2MB6.js} +2 -2
  183. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-K7RV3QBN.js} +23 -23
  184. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-NBBVCMG4.js} +3 -3
  185. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-A3JBOZCM.js} +58 -60
  186. package/chunks/{runtime-FS5TL6P7.js → runtime-7YOU2KJ3.js} +32 -32
  187. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-52LXK7LN.js} +25 -25
  188. package/chunks/{scheduler-EXU5HMVK.js → scheduler-J44M72VM.js} +22 -22
  189. package/chunks/{send-message-GQKXGMPI.js → send-message-AWKUDJBH.js} +1 -1
  190. package/chunks/{serve-ITJC7WNN.js → serve-TRC6XJUB.js} +27 -27
  191. package/chunks/{server-6JQY3PTU.js → server-YPNTJLX2.js} +1296 -822
  192. package/chunks/{session-PJDEKXD4.js → session-FMMIBFYX.js} +63 -62
  193. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-LDJMNK7K.js} +20 -20
  194. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-NLR4EK2J.js} +24 -24
  195. package/chunks/{settings-LO6J5SAZ.js → settings-A46L577J.js} +26 -26
  196. package/chunks/{shell-ANAFVYGR.js → shell-Q5LSQPPY.js} +13 -13
  197. package/chunks/{skill-SHJWKSPH.js → skill-75KPJRCM.js} +2 -2
  198. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-775YT4YR.js} +26 -26
  199. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-XY73I5CU.js} +20 -20
  200. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-L46XXNQ2.js} +22 -22
  201. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-WLV43247.js} +1991 -986
  202. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-F5DKMLOV.js} +1119 -1478
  203. package/chunks/{team-create-WKTPCH6D.js → team-create-2PATB77U.js} +13 -13
  204. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-QTANEWOS.js} +13 -13
  205. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-OGULCFNF.js} +20 -20
  206. package/chunks/{theme-manager-BNWESY26.js → theme-manager-CNO3QERP.js} +20 -20
  207. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-VXWEOZE7.js} +2 -2
  208. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-4KAADZPB.js} +24 -24
  209. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-PPJSOPOT.js} +21 -21
  210. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-4PT4MW7B.js} +5 -5
  211. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-WAVFLWNG.js} +22 -22
  212. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-XNED4NRB.js} +29 -29
  213. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-J676DUQ2.js} +59 -58
  214. package/chunks/{version-RO2FPO76.js → version-J6SRRQB2.js} +1 -1
  215. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-FMZZYX44.js} +5 -5
  216. package/chunks/{web-search-XA5Z4ZCD.js → web-search-3G2KXCX5.js} +18 -7
  217. package/chunks/{workflow-QFIOCMDM.js → workflow-PPZZICQ7.js} +15 -15
  218. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-IIYTAQST.js} +29 -29
  219. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-VHCDXAV7.js} +1 -1
  220. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-I7VQIPS2.js} +24 -24
  221. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DBGNY32G.js} +24 -24
  222. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QSKB2T54.js} +31 -31
  223. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-T7GPT65J.js} +27 -27
  224. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-2PKRDAU4.js} +31 -31
  225. package/chunks/{write-file-QOYVHAKK.js → write-file-L76CGFTQ.js} +14 -14
  226. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-TDJJY2VZ.js} +2 -2
  227. package/cli.js +13 -13
  228. package/export-transcript-document.js +126 -122
  229. package/package.json +3 -3
  230. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-DHc6plZn.js} +1 -1
  231. package/web-shell/assets/{arc-DKW0mbPo.js → arc-BQ9m8TDV.js} +1 -1
  232. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-D5ap3oVB.js} +1 -1
  233. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-BIbnyNph.js} +1 -1
  234. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-BRsdx_iG.js} +1 -1
  235. package/web-shell/assets/channel-uMMdTrYk.js +1 -0
  236. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-3lf1fNlx.js} +1 -1
  237. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-DP8VNRc4.js} +1 -1
  238. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-DrohDmZ6.js} +1 -1
  239. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-UZ2QhSx6.js} +1 -1
  240. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-BIMHVcZK.js} +1 -1
  241. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-izRxdSDd.js} +1 -1
  242. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-CXADD4PP.js} +1 -1
  243. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG-B96d8Y_1.js} +1 -1
  244. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-CF2sVQpv.js} +1 -1
  245. package/web-shell/assets/classDiagram-DTDB5LWJ-DcY-26Ig.js +1 -0
  246. package/web-shell/assets/classDiagram-v2-JRS7N3AN-DcY-26Ig.js +1 -0
  247. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-CT6tXVAS.js} +1 -1
  248. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  249. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-X1NS4vtV.js} +1 -1
  250. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-DNsKNOT4.js} +1 -1
  251. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-9-AHKqsb.js} +1 -1
  252. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-Bjgms7j6.js} +1 -1
  253. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-h6bCprbE.js} +1 -1
  254. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-4SbQXVLt.js} +1 -1
  255. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-B5gPCzzB.js} +1 -1
  256. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-DFJXIA3A.js} +1 -1
  257. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-FwyaU7VY.js} +1 -1
  258. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-8vJQh2te.js} +1 -1
  259. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-BzA_1gMN.js} +1 -1
  260. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-Co-ABbVX.js} +1 -1
  261. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DW_FcyrX.js} +1 -1
  262. package/web-shell/assets/{index-C9R-iojE.js → index-BbMXfhNG.js} +1 -1
  263. package/web-shell/assets/{index-B4TLaxWs.js → index-Bu-rZoJ-.js} +462 -454
  264. package/web-shell/assets/index-CsPwZ1ut.css +36 -0
  265. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-BEgfhUFN.js} +1 -1
  266. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-DCsMxQmc.js} +1 -1
  267. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DyIEYoHz.js} +1 -1
  268. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CkxjqCNr.js} +1 -1
  269. package/web-shell/assets/{layout-CFVu37BB.js → layout-BEWc0Al9.js} +1 -1
  270. package/web-shell/assets/{linear-ChBxdtWf.js → linear-CNuNxirL.js} +1 -1
  271. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-DZBre674.js} +6 -6
  272. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpafFz_F.js} +1 -1
  273. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DfZqk_dq.js} +1 -1
  274. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-S0UWXlgC.js} +1 -1
  275. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-dd37_Ohj.js} +1 -1
  276. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-CH8NJZ7u.js} +1 -1
  277. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-CFdqWYih.js} +1 -1
  278. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-CsddcEGD.js} +1 -1
  279. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-BZ270mGw.js} +1 -1
  280. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-CGaS4DBV.js} +1 -1
  281. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-COpIzMu6.js} +1 -1
  282. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-D6qEVAji.js +1 -0
  283. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-CMF889m3.js} +1 -1
  284. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-mem5Jj4m.js +8 -0
  285. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-BelnxYz5.js} +1 -1
  286. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-CU-NRqIB.js} +1 -1
  287. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-CDNKqWh-.js} +1 -1
  288. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-CLqguL5D.js} +1 -1
  289. package/web-shell/index.html +2 -2
  290. package/chunks/chunk-3UMWOKJC.js +0 -78
  291. package/chunks/chunk-IQAFKVXS.js +0 -22
  292. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  293. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  294. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  295. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  296. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  297. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -5,20 +5,20 @@ import {
5
5
  } from "./chunk-57OAHC2Y.js";
6
6
  import {
7
7
  loadSettings
8
- } from "./chunk-RUMSY4ES.js";
8
+ } from "./chunk-66JBCTJF.js";
9
9
  import {
10
10
  getCurrentLanguage,
11
11
  t
12
- } from "./chunk-LD53HMPV.js";
12
+ } from "./chunk-CRZBDVP2.js";
13
13
  import {
14
14
  isWorkspaceTrusted
15
- } from "./chunk-GEV66YGE.js";
15
+ } from "./chunk-3VDLQUR2.js";
16
16
  import {
17
17
  ExtensionManager,
18
18
  getExtensionDescription,
19
19
  getExtensionDisplayName,
20
20
  require_prompts
21
- } from "./chunk-TSLRORQR.js";
21
+ } from "./chunk-PDUMGZ2P.js";
22
22
  import {
23
23
  stripAnsi
24
24
  } from "./chunk-TWPJO254.js";
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  CLIENT_MCP_OVER_WS_CONFIG_FLAG
5
- } from "./chunk-Z6KFLEG7.js";
5
+ } from "./chunk-PSPAM24S.js";
6
6
  import {
7
7
  SessionNotFoundError
8
- } from "./chunk-F47DITLZ.js";
8
+ } from "./chunk-FAWTMDX7.js";
9
9
  import {
10
10
  ChannelWorkerStartupError
11
- } from "./chunk-KAZWXVI3.js";
11
+ } from "./chunk-CABDNUJ4.js";
12
12
  import {
13
13
  ChannelWebhookEnqueueError
14
14
  } from "./chunk-STUJ7IMZ.js";
@@ -17,7 +17,7 @@ import {
17
17
  } from "./chunk-RKFGE7JH.js";
18
18
  import {
19
19
  CHANNEL_LOOP_MCP_SERVER_NAME
20
- } from "./chunk-65GHQ4FX.js";
20
+ } from "./chunk-XVTCSVBK.js";
21
21
  import {
22
22
  init_esbuild_shims
23
23
  } from "./chunk-5O2XNYP6.js";
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-LD53HMPV.js";
5
+ } from "./chunk-CRZBDVP2.js";
6
6
  import {
7
7
  SessionReferenceService,
8
8
  readManyFiles
9
- } from "./chunk-TXAEXF2B.js";
9
+ } from "./chunk-ZU2T5JIS.js";
10
10
  import {
11
11
  emptyMcpResourceText,
12
12
  formatMcpResourceContents,
@@ -15,10 +15,10 @@ import {
15
15
  import {
16
16
  SessionService,
17
17
  stripTerminalControlSequences
18
- } from "./chunk-TSLRORQR.js";
18
+ } from "./chunk-PDUMGZ2P.js";
19
19
  import {
20
20
  shouldRunVisionBridge
21
- } from "./chunk-WQBR7LN5.js";
21
+ } from "./chunk-6QV7Z74P.js";
22
22
  import {
23
23
  Storage,
24
24
  getErrorMessage,
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  getUserSettingsPath,
5
5
  v1ToV2Migration
6
- } from "./chunk-RUMSY4ES.js";
6
+ } from "./chunk-66JBCTJF.js";
7
7
  import {
8
8
  getSystemDefaultsPath,
9
9
  getSystemSettingsPath
@@ -13,7 +13,7 @@ import {
13
13
  TrustLevel,
14
14
  getExplicitTrustLevel,
15
15
  getTrustedFoldersPath
16
- } from "./chunk-GEV66YGE.js";
16
+ } from "./chunk-3VDLQUR2.js";
17
17
  import {
18
18
  require_strip_json_comments
19
19
  } from "./chunk-NPQ5ZKRP.js";
@@ -22,7 +22,7 @@ import {
22
22
  } from "./chunk-MR3PXB6E.js";
23
23
  import {
24
24
  ideContextStore
25
- } from "./chunk-TSLRORQR.js";
25
+ } from "./chunk-PDUMGZ2P.js";
26
26
  import {
27
27
  init_esbuild_shims
28
28
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-LD53HMPV.js";
5
+ } from "./chunk-CRZBDVP2.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -473,6 +473,19 @@ var CdWhilePromptActiveError = class extends Error {
473
473
  this.sessionId = sessionId;
474
474
  }
475
475
  };
476
+ var SessionResetPendingError = class extends Error {
477
+ static {
478
+ __name(this, "SessionResetPendingError");
479
+ }
480
+ sessionId;
481
+ constructor(sessionId) {
482
+ super(
483
+ `Session ${sessionId} is mid worktree reset; prompt admission is closed until the reset completes`
484
+ );
485
+ this.name = "SessionResetPendingError";
486
+ this.sessionId = sessionId;
487
+ }
488
+ };
476
489
  var McpAuthenticationInProgressError = class extends Error {
477
490
  static {
478
491
  __name(this, "McpAuthenticationInProgressError");
@@ -519,6 +532,7 @@ export {
519
532
  InvalidRewindTargetError,
520
533
  BranchWhilePromptActiveError,
521
534
  CdWhilePromptActiveError,
535
+ SessionResetPendingError,
522
536
  McpAuthenticationInProgressError
523
537
  };
524
538
  /**
@@ -17,7 +17,7 @@ import {
17
17
  isPrivateProvenanceEnvKey,
18
18
  publishPendingCompileCache,
19
19
  reportRejectedLoaderKeys
20
- } from "./chunk-NUQFUXOG.js";
20
+ } from "./chunk-QTNCGZHQ.js";
21
21
  import {
22
22
  buildTrustPrecedenceRules,
23
23
  require_strip_json_comments,
@@ -29,7 +29,7 @@ import {
29
29
  import {
30
30
  require_main,
31
31
  resolveEnvVarsInObject
32
- } from "./chunk-3K65MUKD.js";
32
+ } from "./chunk-65I7S4Z3.js";
33
33
  import {
34
34
  init_esbuild_shims
35
35
  } from "./chunk-5O2XNYP6.js";
@@ -6,7 +6,7 @@ import {
6
6
  getNestedProperty,
7
7
  getPersistScopeForModelSelection,
8
8
  restoreSettingsFromBackup
9
- } from "./chunk-RUMSY4ES.js";
9
+ } from "./chunk-66JBCTJF.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -2,12 +2,12 @@
2
2
  "use strict";
3
3
  import {
4
4
  buildPermissionSettings
5
- } from "./chunk-75UQFGFE.js";
5
+ } from "./chunk-CHVU543W.js";
6
6
  import {
7
7
  resolveVoiceStreamConfig,
8
8
  resolveVoiceTranscriptionConfig,
9
9
  transcribeVoiceAudio
10
- } from "./chunk-Z6DDPSGJ.js";
10
+ } from "./chunk-GNY7B3CA.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,7 +16,7 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-JOV46WGX.js";
19
+ } from "./chunk-NB3NDQQK.js";
20
20
  import {
21
21
  MCP_RESTART_SERVER_DEADLINE_MS
22
22
  } from "./chunk-OCPBI7J5.js";
@@ -47,19 +47,19 @@ import {
47
47
  WorkspaceInitPathEscapeError,
48
48
  WorkspaceInitRaceError,
49
49
  WorkspaceInitSymlinkError
50
- } from "./chunk-F47DITLZ.js";
50
+ } from "./chunk-FAWTMDX7.js";
51
51
  import {
52
52
  getPersistScopeForModelSelection,
53
53
  loadSettings
54
- } from "./chunk-RUMSY4ES.js";
54
+ } from "./chunk-66JBCTJF.js";
55
55
  import {
56
56
  getWorkspaceTrustStatus
57
- } from "./chunk-GEV66YGE.js";
57
+ } from "./chunk-3VDLQUR2.js";
58
58
  import {
59
59
  ModelsConfig,
60
60
  SkillManager,
61
61
  require_yauzl
62
- } from "./chunk-TSLRORQR.js";
62
+ } from "./chunk-PDUMGZ2P.js";
63
63
  import {
64
64
  Storage,
65
65
  createDebugLogger
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-M5GB774H.js";
6
6
  import {
7
7
  sanitizeLogText
8
- } from "./chunk-65GHQ4FX.js";
8
+ } from "./chunk-XVTCSVBK.js";
9
9
  import {
10
10
  stripAnsi
11
11
  } from "./chunk-TWPJO254.js";
@@ -5,7 +5,7 @@ import {
5
5
  isTranscribableVoiceModel,
6
6
  readVoiceLanguage,
7
7
  resolveVoiceTransport
8
- } from "./chunk-JOV46WGX.js";
8
+ } from "./chunk-NB3NDQQK.js";
9
9
  import {
10
10
  resolvePath
11
11
  } from "./chunk-Y53DG2HA.js";
@@ -8,6 +8,7 @@ import {
8
8
  isWithinRoot
9
9
  } from "./chunk-J6MB5ZHZ.js";
10
10
  import {
11
+ atomicWriteFile,
11
12
  atomicWriteJSON
12
13
  } from "./chunk-XFFRI3WM.js";
13
14
  import {
@@ -171,11 +172,17 @@ async function addWorktreeSessionMarkerExclude(worktreePath) {
171
172
  existing = await fs2.readFile(excludePath, "utf8");
172
173
  } catch {
173
174
  }
174
- const rule = WORKTREE_SESSION_FILE;
175
- if (!existing.split(/\r?\n/).includes(rule)) {
176
- const sep = existing.length === 0 || existing.endsWith("\n") ? "" : "\n";
177
- await fs2.writeFile(excludePath, `${existing}${sep}${rule}
178
- `, "utf8");
175
+ const rules = [WORKTREE_SESSION_FILE, `${WORKTREE_SESSION_FILE}.*.tmp`];
176
+ let next = existing;
177
+ for (const rule of rules) {
178
+ if (!next.split(/\r?\n/).includes(rule)) {
179
+ const sep = next.length === 0 || next.endsWith("\n") ? "" : "\n";
180
+ next = `${next}${sep}${rule}
181
+ `;
182
+ }
183
+ }
184
+ if (next !== existing) {
185
+ await fs2.writeFile(excludePath, next, "utf8");
179
186
  }
180
187
  } catch {
181
188
  }
@@ -190,15 +197,32 @@ async function writeWorktreeSessionMarker(worktreePath, sessionId) {
190
197
  await addWorktreeSessionMarkerExclude(worktreePath);
191
198
  }
192
199
  __name(writeWorktreeSessionMarker, "writeWorktreeSessionMarker");
193
- async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
194
- if (sessionId.length === 0 || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES || sessionId.trim() !== sessionId) {
195
- throw new Error("Invalid worktree session marker owner");
200
+ var WorktreeMarkerCommittedError = class extends Error {
201
+ static {
202
+ __name(this, "WorktreeMarkerCommittedError");
196
203
  }
204
+ committedOwner;
205
+ constructor(committedOwner, options) {
206
+ super(
207
+ `Worktree session marker committed for ${committedOwner}; the post-commit close failed`,
208
+ options
209
+ );
210
+ this.name = "WorktreeMarkerCommittedError";
211
+ this.committedOwner = committedOwner;
212
+ }
213
+ };
214
+ async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
215
+ assertValidWorktreeSessionMarkerOwner(sessionId);
197
216
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
217
+ const stagedPath = `${markerPath}.${randomBytes(6).toString("hex")}.tmp`;
198
218
  const flags = nodeFs.constants.O_WRONLY | nodeFs.constants.O_CREAT | nodeFs.constants.O_EXCL | (nodeFs.constants.O_NOFOLLOW ?? 0);
199
- const handle = await fs2.open(markerPath, flags, 384);
219
+ const handle = await fs2.open(stagedPath, flags, 384);
220
+ let stagedDev = 0;
221
+ let stagedIno = 0;
200
222
  try {
201
223
  const before = await handle.stat();
224
+ stagedDev = before.dev;
225
+ stagedIno = before.ino;
202
226
  if (!before.isFile() || before.nlink !== 1 || before.ino === 0) {
203
227
  throw new Error("Worktree session marker has an unsafe identity");
204
228
  }
@@ -206,17 +230,43 @@ async function createWorktreeSessionMarkerExclusive(worktreePath, sessionId) {
206
230
  await handle.sync();
207
231
  const [after, pathStats] = await Promise.all([
208
232
  handle.stat(),
209
- fs2.lstat(markerPath)
233
+ fs2.lstat(stagedPath)
210
234
  ]);
211
235
  if (!after.isFile() || after.nlink !== 1 || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== before.dev || after.ino !== before.ino || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
212
236
  throw new Error("Worktree session marker identity changed");
213
237
  }
214
- } finally {
238
+ await fs2.link(stagedPath, markerPath);
239
+ } catch (error) {
240
+ await handle.close().catch(() => {
241
+ });
242
+ if (stagedIno !== 0) {
243
+ try {
244
+ const current = await fs2.lstat(stagedPath);
245
+ if (current.dev === stagedDev && current.ino === stagedIno) {
246
+ await fs2.unlink(stagedPath);
247
+ }
248
+ } catch {
249
+ }
250
+ }
251
+ throw error;
252
+ }
253
+ try {
254
+ await fs2.unlink(stagedPath);
215
255
  await handle.close();
256
+ } catch (error) {
257
+ await handle.close().catch(() => {
258
+ });
259
+ throw new WorktreeMarkerCommittedError(sessionId, { cause: error });
216
260
  }
217
261
  await addWorktreeSessionMarkerExclude(worktreePath);
218
262
  }
219
263
  __name(createWorktreeSessionMarkerExclusive, "createWorktreeSessionMarkerExclusive");
264
+ function assertValidWorktreeSessionMarkerOwner(sessionId) {
265
+ if (sessionId.length === 0 || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES || sessionId.trim() !== sessionId) {
266
+ throw new Error("Invalid worktree session marker owner");
267
+ }
268
+ }
269
+ __name(assertValidWorktreeSessionMarkerOwner, "assertValidWorktreeSessionMarkerOwner");
220
270
  async function readWorktreeSessionMarkerStrict(worktreePath) {
221
271
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
222
272
  let handle;
@@ -267,7 +317,13 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
267
317
  if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
268
318
  return { state: "invalid", reason: "invalid marker owner" };
269
319
  }
270
- return { state: "valid", sessionId };
320
+ return {
321
+ state: "valid",
322
+ sessionId,
323
+ uid: process.geteuid === void 0 ? null : after.uid,
324
+ dev: after.dev,
325
+ ino: after.ino
326
+ };
271
327
  } catch (error) {
272
328
  if (isNodeError(error) && error.code === "ENOENT") {
273
329
  return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
@@ -282,6 +338,122 @@ async function readWorktreeSessionMarkerStrict(worktreePath) {
282
338
  }
283
339
  }
284
340
  __name(readWorktreeSessionMarkerStrict, "readWorktreeSessionMarkerStrict");
341
+ function readWorktreeSessionMarkerStrictSync(worktreePath) {
342
+ const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
343
+ let fd;
344
+ let observedMarker = false;
345
+ try {
346
+ const flags = nodeFs.constants.O_RDONLY | (nodeFs.constants.O_NOFOLLOW ?? 0) | (nodeFs.constants.O_NONBLOCK ?? 0);
347
+ const before = nodeFs.lstatSync(markerPath);
348
+ observedMarker = true;
349
+ if (before.isSymbolicLink() || !before.isFile() || before.nlink !== 1) {
350
+ return { state: "invalid", reason: "unsafe marker file type" };
351
+ }
352
+ if (before.ino === 0 || before.size > WORKTREE_SESSION_MARKER_MAX_BYTES) {
353
+ return { state: "invalid", reason: "unsafe marker size or identity" };
354
+ }
355
+ fd = nodeFs.openSync(markerPath, flags);
356
+ const opened = nodeFs.fstatSync(fd);
357
+ if (!opened.isFile() || opened.nlink !== 1 || opened.dev !== before.dev || opened.ino !== before.ino) {
358
+ return {
359
+ state: "invalid",
360
+ reason: "marker identity changed before read"
361
+ };
362
+ }
363
+ const markerBuffer = Buffer.alloc(WORKTREE_SESSION_MARKER_MAX_BYTES + 1);
364
+ let bytesRead = 0;
365
+ while (bytesRead < markerBuffer.length) {
366
+ const chunk = nodeFs.readSync(
367
+ fd,
368
+ markerBuffer,
369
+ bytesRead,
370
+ markerBuffer.length - bytesRead,
371
+ bytesRead
372
+ );
373
+ if (chunk === 0) break;
374
+ bytesRead += chunk;
375
+ }
376
+ if (bytesRead > WORKTREE_SESSION_MARKER_MAX_BYTES) {
377
+ return { state: "invalid", reason: "unsafe marker size or identity" };
378
+ }
379
+ const raw = markerBuffer.subarray(0, bytesRead).toString("utf8");
380
+ const after = nodeFs.fstatSync(fd);
381
+ const pathStats = nodeFs.lstatSync(markerPath);
382
+ if (!after.isFile() || after.nlink !== 1 || after.size !== bytesRead || after.size > WORKTREE_SESSION_MARKER_MAX_BYTES || after.dev !== opened.dev || after.ino !== opened.ino || !pathStats.isFile() || pathStats.nlink !== 1 || pathStats.dev !== after.dev || pathStats.ino !== after.ino) {
383
+ return {
384
+ state: "invalid",
385
+ reason: "marker identity changed during read"
386
+ };
387
+ }
388
+ const sessionId = raw.trim();
389
+ if (sessionId.length === 0 || sessionId !== raw || Buffer.byteLength(sessionId, "utf8") > WORKTREE_SESSION_MARKER_MAX_BYTES) {
390
+ return { state: "invalid", reason: "invalid marker owner" };
391
+ }
392
+ return {
393
+ state: "valid",
394
+ sessionId,
395
+ uid: process.geteuid === void 0 ? null : after.uid,
396
+ dev: after.dev,
397
+ ino: after.ino
398
+ };
399
+ } catch (error) {
400
+ if (isNodeError(error) && error.code === "ENOENT") {
401
+ return observedMarker ? { state: "invalid", reason: "marker disappeared during read" } : { state: "missing" };
402
+ }
403
+ return {
404
+ state: "invalid",
405
+ reason: error instanceof Error ? error.message : String(error)
406
+ };
407
+ } finally {
408
+ if (fd !== void 0) {
409
+ try {
410
+ nodeFs.closeSync(fd);
411
+ } catch {
412
+ }
413
+ }
414
+ }
415
+ }
416
+ __name(readWorktreeSessionMarkerStrictSync, "readWorktreeSessionMarkerStrictSync");
417
+ async function transferWorktreeSessionMarkerOwner(worktreePath, expectedOwner, newOwner) {
418
+ assertValidWorktreeSessionMarkerOwner(newOwner);
419
+ if (expectedOwner !== null) {
420
+ assertValidWorktreeSessionMarkerOwner(expectedOwner);
421
+ if (expectedOwner === newOwner) {
422
+ throw new Error("Worktree marker transfer needs a distinct new owner");
423
+ }
424
+ }
425
+ const opening = await readWorktreeSessionMarkerStrict(worktreePath);
426
+ if (opening.state === "invalid") {
427
+ throw new Error(`Worktree marker is invalid: ${opening.reason}`);
428
+ }
429
+ if (opening.state === "missing") {
430
+ if (expectedOwner !== null) {
431
+ throw new Error("Worktree marker owner does not match the expectation");
432
+ }
433
+ await createWorktreeSessionMarkerExclusive(worktreePath, newOwner);
434
+ return;
435
+ }
436
+ if (opening.sessionId !== expectedOwner) {
437
+ throw new Error("Worktree marker owner does not match the expectation");
438
+ }
439
+ const euid = process.geteuid?.();
440
+ if (euid !== void 0 && opening.uid !== null && opening.uid !== euid) {
441
+ throw new Error("Worktree marker is owned by a different uid");
442
+ }
443
+ const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
444
+ await atomicWriteFile(markerPath, newOwner, {
445
+ mode: 384,
446
+ noFollow: true,
447
+ assertCanCommit: /* @__PURE__ */ __name(() => {
448
+ const current = readWorktreeSessionMarkerStrictSync(worktreePath);
449
+ if (current.state !== "valid" || current.sessionId !== opening.sessionId || current.dev !== opening.dev || current.ino !== opening.ino || current.uid !== opening.uid) {
450
+ throw new Error("Worktree marker changed during ownership transfer");
451
+ }
452
+ }, "assertCanCommit")
453
+ });
454
+ await addWorktreeSessionMarkerExclude(worktreePath);
455
+ }
456
+ __name(transferWorktreeSessionMarkerOwner, "transferWorktreeSessionMarkerOwner");
285
457
  async function readWorktreeSessionMarker(worktreePath) {
286
458
  const markerPath = path2.join(worktreePath, WORKTREE_SESSION_FILE);
287
459
  try {
@@ -1826,9 +1998,12 @@ export {
1826
1998
  clearRuntimeStatus,
1827
1999
  loadSimpleGit,
1828
2000
  worktreeBranchForSlug,
2001
+ WORKTREE_SESSION_FILE,
1829
2002
  writeWorktreeSessionMarker,
2003
+ WorktreeMarkerCommittedError,
1830
2004
  createWorktreeSessionMarkerExclusive,
1831
2005
  readWorktreeSessionMarkerStrict,
2006
+ transferWorktreeSessionMarkerOwner,
1832
2007
  readWorktreeSessionMarker,
1833
2008
  AGENT_WORKTREE_SLUG_PATTERN,
1834
2009
  generateAgentWorktreeSlug,
@@ -8,7 +8,7 @@ import {
8
8
  isQuotaExhaustedError,
9
9
  isQwenQuotaExceededError,
10
10
  isRateLimitError
11
- } from "./chunk-W4LL5RZO.js";
11
+ } from "./chunk-4ALNJDHL.js";
12
12
  import {
13
13
  createDebugLogger,
14
14
  getErrorStatus
@@ -2,17 +2,17 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-LD53HMPV.js";
5
+ } from "./chunk-CRZBDVP2.js";
6
6
  import {
7
7
  computeThresholds,
8
8
  estimateContextTextTokens,
9
9
  formatContextFileDisplayPath,
10
10
  getMainSessionBaseSystemPrompt
11
- } from "./chunk-TSLRORQR.js";
11
+ } from "./chunk-PDUMGZ2P.js";
12
12
  import {
13
13
  DiscoveredMCPTool,
14
14
  uiTelemetryService
15
- } from "./chunk-WQBR7LN5.js";
15
+ } from "./chunk-6QV7Z74P.js";
16
16
  import {
17
17
  DEFAULT_TOKEN_LIMIT
18
18
  } from "./chunk-FPGTNKCP.js";
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-FETY36NQ.js";
7
7
  import {
8
8
  WorkspaceDrainingError
9
- } from "./chunk-F47DITLZ.js";
9
+ } from "./chunk-FAWTMDX7.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-5O2XNYP6.js";
@@ -3,11 +3,11 @@
3
3
  import {
4
4
  TURN_INTERRUPTION_HISTORY_TAIL_COUNT,
5
5
  detectTurnInterruption
6
- } from "./chunk-TXAEXF2B.js";
6
+ } from "./chunk-ZU2T5JIS.js";
7
7
  import {
8
8
  SessionService,
9
9
  buildApiHistoryFromConversation
10
- } from "./chunk-TSLRORQR.js";
10
+ } from "./chunk-PDUMGZ2P.js";
11
11
  import {
12
12
  init_esbuild_shims
13
13
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  CHANNEL_STARTUP_PROFILE_VERSION
5
- } from "./chunk-Z6KFLEG7.js";
5
+ } from "./chunk-PSPAM24S.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";