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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (335) hide show
  1. package/README.md +35 -15
  2. package/bundled/computer-use/SKILL.md +189 -116
  3. package/bundled/goal-draft/SKILL.md +23 -13
  4. package/bundled/qc-helper/docs/_meta.ts +1 -0
  5. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  6. package/bundled/qc-helper/docs/configuration/model-providers.md +66 -16
  7. package/bundled/qc-helper/docs/configuration/settings.md +50 -0
  8. package/bundled/qc-helper/docs/conversations-recovery.md +102 -0
  9. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  10. package/bundled/qc-helper/docs/features/channels/dingtalk.md +1 -1
  11. package/bundled/qc-helper/docs/features/channels/github.md +1 -9
  12. package/bundled/qc-helper/docs/features/channels/overview.md +27 -52
  13. package/bundled/qc-helper/docs/features/channels/qqbot.md +1 -2
  14. package/bundled/qc-helper/docs/features/commands.md +79 -17
  15. package/bundled/qc-helper/docs/features/computer-use.md +9 -7
  16. package/bundled/qc-helper/docs/features/cross-session-protocol.md +291 -0
  17. package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
  18. package/bundled/qc-helper/docs/features/goals.md +17 -3
  19. package/bundled/qc-helper/docs/features/sub-agents.md +8 -0
  20. package/bundled/qc-helper/docs/qwen-serve.md +80 -48
  21. package/chunks/{MaxSizedBox-IYIQ43IZ.js → MaxSizedBox-ZBGWYJZW.js} +29 -28
  22. package/chunks/{StandaloneSessionPicker-AWB2OHX6.js → StandaloneSessionPicker-NR5ACIJZ.js} +48 -47
  23. package/chunks/{acp-startup-profiler-BAL4LJTN.js → acp-startup-profiler-KEU6VAYR.js} +2 -2
  24. package/chunks/{acpAgent-ZC57OLS4.js → acpAgent-DM6XRCDQ.js} +361 -210
  25. package/chunks/{agent-GEBPAEJS.js → agent-EF3IIYE3.js} +20 -20
  26. package/chunks/{agent-headless-63ZEYAJK.js → agent-headless-5J2KFYR4.js} +20 -20
  27. package/chunks/{anthropicContentGenerator-6XDHXIII.js → anthropicContentGenerator-VIW2FG7G.js} +32 -9
  28. package/chunks/{artifact-tool-P52OKKEF.js → artifact-tool-G5LHNECG.js} +1 -1
  29. package/chunks/{askUserQuestion-3KAYLLMM.js → askUserQuestion-R3TXY77M.js} +1 -1
  30. package/chunks/{bridge-MHWO5I5T.js → bridge-LEMQM6QE.js} +32 -31
  31. package/chunks/{channel-management-service-NFRZXQFO.js → channel-management-service-TGF6XFXT.js} +4 -4
  32. package/chunks/{channel-settings-store-T7PMIHKC.js → channel-settings-store-FV365JSF.js} +40 -39
  33. package/chunks/{channel-worker-group-O2BWK5F7.js → channel-worker-group-SQ5FRWOH.js} +7 -7
  34. package/chunks/{channel-worker-manager-4WP7VJOD.js → channel-worker-manager-TU4ZNWOE.js} +7 -7
  35. package/chunks/{channel-worker-supervisor-CCUXD6J5.js → channel-worker-supervisor-EMITFMCP.js} +4 -4
  36. package/chunks/{chunk-3SH53ANB.js → chunk-22GORRNY.js} +12 -0
  37. package/chunks/{chunk-OFB36ZBA.js → chunk-2HYOOFDS.js} +10 -7
  38. package/chunks/chunk-2Z3T52OC.js +82 -0
  39. package/chunks/{chunk-LYHYXJJ3.js → chunk-34VPADLG.js} +3 -3
  40. package/chunks/{chunk-C7M445SS.js → chunk-3A2IMUDH.js} +14 -2
  41. package/chunks/{chunk-P5Z7VD23.js → chunk-3O77M472.js} +294 -87
  42. package/chunks/{chunk-4OCYWXKF.js → chunk-43EUMPKQ.js} +3 -3
  43. package/chunks/{chunk-W4LL5RZO.js → chunk-4ALNJDHL.js} +52 -13
  44. package/chunks/{chunk-VMFPZXRT.js → chunk-4DIMJKWU.js} +64 -43
  45. package/chunks/{chunk-ZRVFHLLK.js → chunk-5DQ4YTIZ.js} +1 -1
  46. package/chunks/{chunk-VYCJITND.js → chunk-5HV2HPO7.js} +1 -1
  47. package/chunks/{chunk-22QOQKG4.js → chunk-5WBA3DEF.js} +1 -1
  48. package/chunks/{chunk-3K65MUKD.js → chunk-65I7S4Z3.js} +2 -1
  49. package/chunks/{chunk-I7UNCY24.js → chunk-6GAYNM3F.js} +3 -3
  50. package/chunks/{chunk-2C3XDBGL.js → chunk-6S7YYUUH.js} +4 -4
  51. package/chunks/{chunk-Y3C5COGI.js → chunk-6VIATHL7.js} +1 -1
  52. package/chunks/{chunk-XNC2TCUO.js → chunk-76I36BEM.js} +4 -4
  53. package/chunks/{chunk-B54PFQS5.js → chunk-7CLLH5TI.js} +1 -1
  54. package/chunks/{chunk-RGAQDQ3Z.js → chunk-7IDZFJAV.js} +18 -9
  55. package/chunks/{chunk-5Z4FCEPY.js → chunk-7K4GGN3D.js} +606 -109
  56. package/chunks/{chunk-WLZRMF3C.js → chunk-7KZVXJ4U.js} +353 -11
  57. package/chunks/{chunk-REDVV5NC.js → chunk-7WCJEY3A.js} +7 -7
  58. package/chunks/{chunk-I67KJGM6.js → chunk-A7QZIGRB.js} +3 -3
  59. package/chunks/{chunk-SHX2HIE7.js → chunk-ATBLEXXV.js} +7 -2
  60. package/chunks/{chunk-RH344FKI.js → chunk-AUTUFD5X.js} +1 -1
  61. package/chunks/chunk-AXMWHKXA.js +42 -0
  62. package/chunks/{chunk-WFXD5OZH.js → chunk-AXWTG6R7.js} +2 -5
  63. package/chunks/{chunk-TSLRORQR.js → chunk-BDAVT6K2.js} +1809 -1588
  64. package/chunks/{chunk-HWZOOSEB.js → chunk-BDP3NTWD.js} +3 -3
  65. package/chunks/{chunk-RD3VPM4E.js → chunk-BZUHZCUO.js} +2 -2
  66. package/chunks/{chunk-HPE4LEWX.js → chunk-C24ZDDNY.js} +1 -1
  67. package/chunks/{chunk-R7TKFIQO.js → chunk-CALNF3Z3.js} +1 -1
  68. package/chunks/{chunk-RPFJJ33Z.js → chunk-CALTQWTZ.js} +1 -1
  69. package/chunks/{chunk-BF3RUIVP.js → chunk-CH2YDT6X.js} +36 -38
  70. package/chunks/{chunk-LD53HMPV.js → chunk-CRZBDVP2.js} +1 -0
  71. package/chunks/{chunk-GEV66YGE.js → chunk-D6AGS266.js} +1 -1
  72. package/chunks/{chunk-EPZWBYQI.js → chunk-D7DFZAK2.js} +19 -11
  73. package/chunks/{chunk-5V4B3EWA.js → chunk-DARWOZY6.js} +1 -1
  74. package/chunks/{chunk-XX4MBBFW.js → chunk-DGNRLJ6S.js} +4 -4
  75. package/chunks/{chunk-UTVIIA7N.js → chunk-DVOCOIS5.js} +1 -1
  76. package/chunks/{chunk-RQNAO42A.js → chunk-E4LXNQAK.js} +1 -1
  77. package/chunks/{chunk-EGRFCIXD.js → chunk-EATP5QCN.js} +84 -25
  78. package/chunks/{chunk-3RMVM33U.js → chunk-EDSU3VUG.js} +12 -5
  79. package/chunks/{chunk-733KQL63.js → chunk-EE5ZD4XU.js} +3 -3
  80. package/chunks/{chunk-QQGAR64U.js → chunk-EN3Q2S3J.js} +4 -4
  81. package/chunks/{chunk-PLUAIHZO.js → chunk-EOLGAQ25.js} +17 -16
  82. package/chunks/{chunk-37SOBIA3.js → chunk-ERXNTINK.js} +1 -1
  83. package/chunks/{chunk-L36LLVA5.js → chunk-EYCW6UF2.js} +7 -7
  84. package/chunks/{chunk-ZELCTN6Y.js → chunk-F23YN37B.js} +10 -0
  85. package/chunks/{chunk-FPGTNKCP.js → chunk-F3M6P6IQ.js} +199 -1
  86. package/chunks/{chunk-B44JBZBB.js → chunk-F4SAL7WM.js} +91 -3
  87. package/chunks/{chunk-F47DITLZ.js → chunk-FAWTMDX7.js} +14 -0
  88. package/chunks/{chunk-SI6Q52UI.js → chunk-FEEVHJOR.js} +3 -3
  89. package/chunks/{chunk-75UQFGFE.js → chunk-FN4KHWCL.js} +1 -1
  90. package/chunks/{chunk-WQBR7LN5.js → chunk-FRS3P7MQ.js} +15 -2
  91. package/chunks/{chunk-5JLQWQK6.js → chunk-FV4DM2M4.js} +2 -2
  92. package/chunks/{chunk-Z6DDPSGJ.js → chunk-GNY7B3CA.js} +1 -1
  93. package/chunks/{chunk-FDOGGKAA.js → chunk-GSFV5RQW.js} +2 -0
  94. package/chunks/{chunk-XBVNNDPK.js → chunk-GSYD7MYP.js} +8 -3
  95. package/chunks/{chunk-ERMAXPXA.js → chunk-HIXUUCGY.js} +187 -12
  96. package/chunks/{chunk-EJNYBDYC.js → chunk-HNLMYDQE.js} +1 -1
  97. package/chunks/{chunk-3K456UJF.js → chunk-HSO6D4KX.js} +93 -28
  98. package/chunks/{chunk-ANVC5CSK.js → chunk-HUJJFSMO.js} +10 -10
  99. package/chunks/{chunk-C4NXRR7T.js → chunk-HW4MRP4V.js} +2 -2
  100. package/chunks/{chunk-PMGWY6ZP.js → chunk-HWLLUDIA.js} +113 -18
  101. package/chunks/{chunk-RCUWMVN3.js → chunk-HZ2HUXX7.js} +1 -1
  102. package/chunks/{chunk-7PMKXGRP.js → chunk-IKK6NNS6.js} +91 -31
  103. package/chunks/{chunk-IMWCUWQT.js → chunk-J3TJH52D.js} +1 -1
  104. package/chunks/{chunk-BNWIX6BM.js → chunk-JFAGT5YG.js} +3 -3
  105. package/chunks/{chunk-RSU3I6UL.js → chunk-JGTMTJSQ.js} +1 -1
  106. package/chunks/{chunk-LTCI6ZOJ.js → chunk-JYGIJA4W.js} +1 -1
  107. package/chunks/{chunk-537SQ2AI.js → chunk-KECCLCXM.js} +146 -24
  108. package/chunks/{chunk-KAZWXVI3.js → chunk-KEPC5BOL.js} +5 -5
  109. package/chunks/{chunk-HZS3JRQW.js → chunk-L5VHJYHH.js} +40 -2
  110. package/chunks/{chunk-KTLT7VCX.js → chunk-LKBOBUA2.js} +2 -2
  111. package/chunks/{chunk-TDHVOZ65.js → chunk-LOBKNYPR.js} +2 -2
  112. package/chunks/{chunk-QW7BUOSI.js → chunk-LOVGQ3HZ.js} +26 -9
  113. package/chunks/{chunk-5FYGZ7E3.js → chunk-MUF4UGPB.js} +2 -2
  114. package/chunks/chunk-N3Z6Q7KC.js +384 -0
  115. package/chunks/{chunk-JOV46WGX.js → chunk-NB3NDQQK.js} +1 -1
  116. package/chunks/chunk-NFXXBWSE.js +463 -0
  117. package/chunks/chunk-NOO4QFXM.js +171 -0
  118. package/chunks/{chunk-PQSCGZT2.js → chunk-NPKCVSXX.js} +26 -2
  119. package/chunks/{chunk-FXYNIZPW.js → chunk-NV4YYXFT.js} +51 -10
  120. package/chunks/{chunk-FWH4736Q.js → chunk-O6BFERWN.js} +3 -3
  121. package/chunks/{chunk-UKADFFL2.js → chunk-OFVAS4AR.js} +1 -1
  122. package/chunks/{chunk-C55CR5I4.js → chunk-OVTPETDL.js} +6 -6
  123. package/chunks/chunk-PLEBBGHL.js +1401 -0
  124. package/chunks/{chunk-Z6KFLEG7.js → chunk-PSPAM24S.js} +1 -0
  125. package/chunks/{chunk-RRCNEW2A.js → chunk-PWR6BQ3U.js} +58 -4
  126. package/chunks/{chunk-SHK2SIR5.js → chunk-QA2B26PL.js} +4 -4
  127. package/chunks/{chunk-NFIDVZND.js → chunk-QB3KS3N3.js} +2 -21
  128. package/chunks/{chunk-NUQFUXOG.js → chunk-QTNCGZHQ.js} +2 -0
  129. package/chunks/{chunk-QJVZLILI.js → chunk-R7OO56VZ.js} +1 -1
  130. package/chunks/{chunk-MFCWL4LI.js → chunk-SK6VACCM.js} +936 -481
  131. package/chunks/{chunk-SD7Y2PMC.js → chunk-SM66GFKJ.js} +2 -2
  132. package/chunks/{chunk-ADJD4LZF.js → chunk-SNMUO5Z7.js} +1 -1
  133. package/chunks/{chunk-NXWYCSPL.js → chunk-SOA4HKRJ.js} +1 -1
  134. package/chunks/{chunk-IRKQ4YYX.js → chunk-SVWWF5TZ.js} +29 -1
  135. package/chunks/{chunk-YLFICBYK.js → chunk-SYKPMH2X.js} +3 -3
  136. package/chunks/{chunk-5HBA2Z7V.js → chunk-TGNNLRC3.js} +2 -3
  137. package/chunks/{chunk-AX23QSX3.js → chunk-TRQNRP2H.js} +4 -4
  138. package/chunks/{chunk-AUJOWIT5.js → chunk-UQOP2APG.js} +4 -24
  139. package/chunks/{chunk-HY3DXYZK.js → chunk-UYDQYDW2.js} +1 -1
  140. package/chunks/{chunk-IGOIYZBG.js → chunk-VAWM3A5N.js} +2 -2
  141. package/chunks/{chunk-6KYWU726.js → chunk-VJJXG73H.js} +417 -292
  142. package/chunks/{chunk-ZNI3V2XA.js → chunk-VJWJOKOQ.js} +2 -2
  143. package/chunks/{chunk-AWDF462I.js → chunk-VR6Y23FW.js} +2 -2
  144. package/chunks/{chunk-T7TP5UQL.js → chunk-VX2NR3SD.js} +21 -6
  145. package/chunks/{chunk-65GHQ4FX.js → chunk-WDVV3LRM.js} +707 -216
  146. package/chunks/{chunk-KP5QK3FB.js → chunk-WEU6O6VN.js} +397 -54
  147. package/chunks/{chunk-OHOO527W.js → chunk-WG7BL3FY.js} +52 -2
  148. package/chunks/{chunk-VU7O7CGQ.js → chunk-XDNFODER.js} +1 -1
  149. package/chunks/{chunk-YHDGABDC.js → chunk-XKBFYTCD.js} +1 -1
  150. package/chunks/{chunk-RUMSY4ES.js → chunk-Y7YHAY32.js} +28 -10
  151. package/chunks/{chunk-7IKXTGZT.js → chunk-YI2YCNSP.js} +1 -1
  152. package/chunks/{chunk-B5FF3LRF.js → chunk-YIE6REQ5.js} +29 -17
  153. package/chunks/{chunk-E4VX6LXB.js → chunk-YZTGGCEE.js} +10 -2
  154. package/chunks/{chunk-TXAEXF2B.js → chunk-ZEFWBG2C.js} +737 -1136
  155. package/chunks/{chunk-AIMZIXZM.js → chunk-ZM2TCZZ7.js} +5 -7
  156. package/chunks/{chunk-ZT3XUGSU.js → chunk-ZZ7RVOTU.js} +135 -26
  157. package/chunks/{config-utils-F4CFJ4MW.js → config-utils-SXFK3G4X.js} +33 -32
  158. package/chunks/{contextCommand-OIIGGOMU.js → contextCommand-QFPD26QO.js} +31 -30
  159. package/chunks/{core-runtime-JEHLOGMB.js → core-runtime-VXKNBODM.js} +35 -33
  160. package/chunks/{create-sub-session-MVFBE5RA.js → create-sub-session-7WSQETFR.js} +30 -29
  161. package/chunks/{daemon-LCUELM6E.js → daemon-U2456K5H.js} +2 -2
  162. package/chunks/{daemon-git-worktree-guard-5FTKLJOU.js → daemon-git-worktree-guard-I4DCSDUS.js} +29 -28
  163. package/chunks/{daemon-status-provider-P6A5MPMW.js → daemon-status-provider-5UV56RI4.js} +36 -35
  164. package/chunks/{daemon-trust-policy-ZJ3NFYUO.js → daemon-trust-policy-DKIBWTKU.js} +36 -35
  165. package/chunks/{daemon-trust-policy-monitor-6SDLEW7S.js → daemon-trust-policy-monitor-CPSD7UKT.js} +36 -35
  166. package/chunks/{deferred-core-runtime-DWOXIU5S.js → deferred-core-runtime-D2RF35BL.js} +29 -28
  167. package/chunks/{discovery-TUM3ZQ6U.js → discovery-XP4RMDUM.js} +4 -2
  168. package/chunks/{dist-P6YWBITG.js → dist-6YDUH3BB.js} +817 -152
  169. package/chunks/{dist-T4PRA5EZ.js → dist-BNQVF565.js} +2 -8
  170. package/chunks/{dist-AI25RVRA.js → dist-F34J4FZX.js} +1 -1
  171. package/chunks/{dist-3H3WODVS.js → dist-F6JLAJLE.js} +1 -1
  172. package/chunks/{dist-NXW4DUUX.js → dist-K5GHMXIG.js} +2 -2
  173. package/chunks/{dist-YNQU4CKC.js → dist-NP7QKLVG.js} +2 -2
  174. package/chunks/{dist-VCAS67N5.js → dist-UFTFGI6I.js} +1 -1
  175. package/chunks/{dist-I74QLLQS.js → dist-XLV33CLY.js} +1 -2
  176. package/chunks/{dist-XINEKB5A.js → dist-ZDNJK74R.js} +3 -7
  177. package/chunks/{edit-WPVXLL3T.js → edit-4IBADZ3O.js} +20 -20
  178. package/chunks/{enter-worktree-5A6VW6BN.js → enter-worktree-YFTKHXHZ.js} +2 -2
  179. package/chunks/{enterPlanMode-JSODW7E2.js → enterPlanMode-YN3GPQU5.js} +20 -20
  180. package/chunks/{environment-5LLJ3I3W.js → environment-E272IJMF.js} +32 -31
  181. package/chunks/{errors-IQT3YZEP.js → errors-CVAH3RWQ.js} +31 -30
  182. package/chunks/{exit-worktree-QV7E7KP6.js → exit-worktree-NF2XEMES.js} +3 -3
  183. package/chunks/{exitPlanMode-DDVFYNW4.js → exitPlanMode-24J5IHGC.js} +20 -20
  184. package/chunks/{fast-path-PAUQQEVU.js → fast-path-M5IDBMXF.js} +4 -4
  185. package/chunks/{fast-path-settings-ISEJPRYE.js → fast-path-settings-SATXY3PD.js} +3 -3
  186. package/chunks/{glob-SQ7CTZ7F.js → glob-ERBD7JYP.js} +20 -20
  187. package/chunks/{goal-tools-UWZRCLQB.js → goal-tools-245ULLQT.js} +20 -20
  188. package/chunks/{handleAutoUpdate-RUPZZTSG.js → handleAutoUpdate-JDZHHZKK.js} +32 -31
  189. package/chunks/{i18n-SF5MPWEB.js → i18n-LA4D5IXM.js} +32 -29
  190. package/chunks/{image-gen-Q3RUTVKR.js → image-gen-XP4NNIYG.js} +4 -4
  191. package/chunks/{initializer-CK4WPYZG.js → initializer-SHPTSWUZ.js} +36 -35
  192. package/chunks/{installationInfo-IRPQEYRF.js → installationInfo-QEQEPB3G.js} +29 -28
  193. package/chunks/{list-E3PS3EBJ.js → list-IBHCQWTF.js} +39 -38
  194. package/chunks/{list-agents-I5TRH3J7.js → list-agents-EDPZCGKN.js} +5 -4
  195. package/chunks/{llm-JQKBOYAF.js → llm-JAWCQLA4.js} +81 -75
  196. package/chunks/{llm-content-generator-2QWGBW42.js → llm-content-generator-GOV3A23T.js} +23 -8
  197. package/chunks/{loadedSettingsAdapter-DGXGVYZS.js → loadedSettingsAdapter-RVE2GNVU.js} +36 -35
  198. package/chunks/{loggingContentGenerator-ZYURLJKK.js → loggingContentGenerator-SSHNN5YW.js} +22 -22
  199. package/chunks/{managed-npm-update-HTHR63EA.js → managed-npm-update-BHSTITQO.js} +29 -28
  200. package/chunks/{mcp-I7G2AEWS.js → mcp-6ZZ7P2HU.js} +36 -35
  201. package/chunks/{monitor-4R76BCRZ.js → monitor-RKK6GSHG.js} +20 -20
  202. package/chunks/{nonInteractiveCli-24OQ3VP2.js → nonInteractiveCli-UQHP3G6P.js} +76 -72
  203. package/chunks/{notebook-edit-PPSH7FEX.js → notebook-edit-YM47A7WO.js} +20 -20
  204. package/chunks/{open-with-auth-D6JD6LDS.js → open-with-auth-6MVIHMXB.js} +1 -1
  205. package/chunks/{openaiContentGenerator-K7V5EO7F.js → openaiContentGenerator-FHKDWNI2.js} +11 -11
  206. package/chunks/{pidfile-TGIUY2GG.js → pidfile-SIIEJEEH.js} +32 -29
  207. package/chunks/{processUtils-3USXUQWX.js → processUtils-JF7CWBJC.js} +2 -2
  208. package/chunks/{prompt-terminal-ledger-XHVZRXJI.js → prompt-terminal-ledger-FXXHAEQU.js} +30 -29
  209. package/chunks/{qwenContentGenerator-MPBOQB64.js → qwenContentGenerator-KFJ77JP6.js} +24 -24
  210. package/chunks/{qwenOAuth2-BS5D2LYV.js → qwenOAuth2-KX6LVYQ3.js} +4 -4
  211. package/chunks/{read-file-R256LDWQ.js → read-file-S2NOCBIL.js} +4 -4
  212. package/chunks/{resumeHistoryUtils-S43LTFHD.js → resumeHistoryUtils-QHHPSQWU.js} +33 -32
  213. package/chunks/{ripGrep-L7HPZ75Y.js → ripGrep-F6TNOJUO.js} +5 -5
  214. package/chunks/{run-qwen-serve-CTFL5R6U.js → run-qwen-serve-KYBDQRDD.js} +229 -79
  215. package/chunks/{runtime-FS5TL6P7.js → runtime-3WNOFLCR.js} +43 -40
  216. package/chunks/{scheduled-tasks-QXPV3Q35.js → scheduled-tasks-RNBH56DJ.js} +34 -33
  217. package/chunks/{scheduler-EXU5HMVK.js → scheduler-ERMW7Q7B.js} +31 -30
  218. package/chunks/{send-message-GQKXGMPI.js → send-message-V5T3NMFM.js} +4 -4
  219. package/chunks/{serve-ITJC7WNN.js → serve-7NV46RMP.js} +36 -35
  220. package/chunks/{server-6JQY3PTU.js → server-6RZJR5QF.js} +1358 -932
  221. package/chunks/{session-PJDEKXD4.js → session-Z4EV7NVV.js} +107 -78
  222. package/chunks/{session-attachments-root-L37ORSST.js → session-attachments-root-SG5FC52X.js} +29 -28
  223. package/chunks/{session-pr-refresh-WIFD52YL.js → session-pr-refresh-ILC4Z3ZM.js} +33 -32
  224. package/chunks/{settings-LO6J5SAZ.js → settings-Y47SPE3X.js} +35 -34
  225. package/chunks/{shell-ANAFVYGR.js → shell-YBVCOPVO.js} +20 -20
  226. package/chunks/{skill-SHJWKSPH.js → skill-AXC63EBA.js} +4 -4
  227. package/chunks/{skill-settings-GX3XHZ5Q.js → skill-settings-AFPAYGLO.js} +35 -34
  228. package/chunks/{spawnChannel-WE42VBKM.js → spawnChannel-ZFL4J2V3.js} +29 -28
  229. package/chunks/{standalone-update-CWDIKJRP.js → standalone-update-Y2OZPLNJ.js} +31 -30
  230. package/chunks/{start-opentui-ui-BBHGFOTF.js → start-opentui-ui-G6TKT4LI.js} +2270 -1026
  231. package/chunks/{startInteractiveUI-FQX7LUYP.js → startInteractiveUI-YTNDPW7J.js} +1789 -2211
  232. package/chunks/{task-create-PMAFST2T.js → task-create-MWXJFRRM.js} +3 -3
  233. package/chunks/{task-list-R2HSY2NC.js → task-list-EYO3FE57.js} +2 -2
  234. package/chunks/{task-update-JYC57USF.js → task-update-2JJJRHMT.js} +3 -3
  235. package/chunks/{team-create-WKTPCH6D.js → team-create-BUFLGGSH.js} +20 -20
  236. package/chunks/{team-delete-CBHVBTPB.js → team-delete-IQZ6XGFI.js} +2 -2
  237. package/chunks/{team-plan-approval-Y23DL7WR.js → team-plan-approval-OUWWM42U.js} +20 -20
  238. package/chunks/{terminal-image-renderer-B646HBDW.js → terminal-image-renderer-WH2WV5ES.js} +29 -28
  239. package/chunks/{theme-manager-BNWESY26.js → theme-manager-5UDRARM2.js} +29 -28
  240. package/chunks/{tool-search-PVQ5O5Y2.js → tool-search-MCDIRPHN.js} +4 -4
  241. package/chunks/{total-session-admission-P5Z43KNW.js → total-session-admission-VL27U74Z.js} +33 -32
  242. package/chunks/{trustedFolders-FH2LT2MZ.js → trustedFolders-MSXT4VDD.js} +30 -29
  243. package/chunks/{update-relaunch-WOWTKJSN.js → update-relaunch-JKLEWVCB.js} +5 -5
  244. package/chunks/{updateCheck-3MYFMM35.js → updateCheck-ARTHAJT2.js} +31 -30
  245. package/chunks/{useAutoAcceptIndicator-Q7ZRRRKO.js → useAutoAcceptIndicator-YEAAGYVU.js} +38 -37
  246. package/chunks/{validateNonInterActiveAuth-MYEWJX3G.js → validateNonInterActiveAuth-EMRQKH5S.js} +71 -69
  247. package/chunks/{version-RO2FPO76.js → version-HFQU35WD.js} +3 -1
  248. package/chunks/{web-fetch-QAKY2LUA.js → web-fetch-QBXAO6VF.js} +7 -7
  249. package/chunks/{web-search-XA5Z4ZCD.js → web-search-2URQXA3A.js} +201 -13
  250. package/chunks/{web-shell-static-POZHGGXE.js → web-shell-static-BFDESDD4.js} +5 -4
  251. package/chunks/{workflow-QFIOCMDM.js → workflow-JDD6WDAH.js} +211 -75
  252. package/chunks/{workspace-providers-status-B2UD7RAG.js → workspace-providers-status-B4IKR6YJ.js} +38 -37
  253. package/chunks/{workspace-registration-store-VZLRTI3Q.js → workspace-registration-store-PJ3YHR45.js} +1 -2
  254. package/chunks/{workspace-registry-GYOGG6TM.js → workspace-registry-WVYJ5UGB.js} +33 -32
  255. package/chunks/{workspace-runtime-coordinator-7KRXGQ4V.js → workspace-runtime-coordinator-DXL5YVAG.js} +33 -32
  256. package/chunks/{workspace-service-DJEYGJE4.js → workspace-service-QNGAMVH7.js} +40 -39
  257. package/chunks/{workspace-skills-status-MOKNESUC.js → workspace-skills-status-BEISJIII.js} +36 -35
  258. package/chunks/{workspace-trust-reconciler-AXOSUTQW.js → workspace-trust-reconciler-ORYJF5L4.js} +40 -39
  259. package/chunks/{write-file-QOYVHAKK.js → write-file-DWLKFBTJ.js} +21 -21
  260. package/chunks/{zoom-image-UCCLGFNC.js → zoom-image-BYVIXSNQ.js} +4 -4
  261. package/cli.js +13 -13
  262. package/export-transcript-document.js +123 -119
  263. package/package.json +4 -4
  264. package/web-shell/assets/{abnfDiagram-VCTEODGH-CTstZpXw.js → abnfDiagram-VCTEODGH-C_8kzsly.js} +1 -1
  265. package/web-shell/assets/{arc-DKW0mbPo.js → arc-CDg7Zfpm.js} +1 -1
  266. package/web-shell/assets/{architectureDiagram-5GKGNRK7-DkMpJ42t.js → architectureDiagram-5GKGNRK7-DZzdCWyF.js} +1 -1
  267. package/web-shell/assets/{blockDiagram-NRAW4CY4-7Cp1_4i3.js → blockDiagram-NRAW4CY4-DI3B4gyR.js} +1 -1
  268. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BfaoSlBK.js → c4Diagram-UCG6FXSJ-CfOgwHZW.js} +1 -1
  269. package/web-shell/assets/channel-e4xwS72w.js +1 -0
  270. package/web-shell/assets/{chunk-2Q5K7J3B-_n1qzAio.js → chunk-2Q5K7J3B-B_PUth0g.js} +1 -1
  271. package/web-shell/assets/{chunk-5VM5RSS4-0cira5ZV.js → chunk-5VM5RSS4-CrKtvBIL.js} +1 -1
  272. package/web-shell/assets/{chunk-F27PBJKO-DseRXSHC.js → chunk-F27PBJKO-B4z2n8Py.js} +1 -1
  273. package/web-shell/assets/{chunk-G27WJ6UU-BehQWin0.js → chunk-G27WJ6UU-BUtrFEO8.js} +1 -1
  274. package/web-shell/assets/{chunk-JWPE2WC7-B5ftg1Bb.js → chunk-JWPE2WC7-Cqw3aXW0.js} +1 -1
  275. package/web-shell/assets/{chunk-LCL6LL3I-D7rnbVdk.js → chunk-LCL6LL3I-CZolnvls.js} +1 -1
  276. package/web-shell/assets/{chunk-POPQ4Y6H-2Bp-Orju.js → chunk-POPQ4Y6H-DivgasCa.js} +1 -1
  277. package/web-shell/assets/{chunk-SVP7TREG-CD2goGva.js → chunk-SVP7TREG--seyb1B6.js} +1 -1
  278. package/web-shell/assets/{chunk-XXDRQBXY-DzQt-Rji.js → chunk-XXDRQBXY-D7pHtuVM.js} +1 -1
  279. package/web-shell/assets/classDiagram-DTDB5LWJ-CzXfUUOt.js +1 -0
  280. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CzXfUUOt.js +1 -0
  281. package/web-shell/assets/{cose-bilkent-JH36ORCC-C-BZXSUn.js → cose-bilkent-JH36ORCC-4MWaRF_3.js} +1 -1
  282. package/web-shell/assets/csv-CX7rUNeC.svg +1 -0
  283. package/web-shell/assets/{cynefin-OW5HDTMX-BTcvowe1.js → cynefin-OW5HDTMX-nhJhAjgD.js} +1 -1
  284. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-BoUE6K81.js → cynefinDiagram-5FMLGOSQ-NF-PwXlq.js} +1 -1
  285. package/web-shell/assets/{dagre-3AP2YEHR-BHxy9xeB.js → dagre-3AP2YEHR-Bu0ncdWP.js} +1 -1
  286. package/web-shell/assets/{diagram-S7CK7UJ4-DMiJIvDT.js → diagram-S7CK7UJ4-CsvhFHZC.js} +1 -1
  287. package/web-shell/assets/{diagram-UQ7AKVKN-DXV09Aes.js → diagram-UQ7AKVKN-Ck61sIB3.js} +1 -1
  288. package/web-shell/assets/{diagram-VSXAHHWV-CocpRomV.js → diagram-VSXAHHWV-D0171zrb.js} +1 -1
  289. package/web-shell/assets/{diagram-VX7I27RA-DL7nqtb4.js → diagram-VX7I27RA-DvdxY4UL.js} +1 -1
  290. package/web-shell/assets/{diagram-Z3DM3KII-CPZ2Jux_.js → diagram-Z3DM3KII-CGGpseiB.js} +1 -1
  291. package/web-shell/assets/{ebnfDiagram-PWID7BFC-BX-eVNsX.js → ebnfDiagram-PWID7BFC-K8-QMvY8.js} +1 -1
  292. package/web-shell/assets/{erDiagram-SSCWMZ5O-CPy_Ir6y.js → erDiagram-SSCWMZ5O-D316nAem.js} +1 -1
  293. package/web-shell/assets/{flowDiagram-A5DVABFB-eknAOte9.js → flowDiagram-A5DVABFB-B7siy_mn.js} +1 -1
  294. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-crAxw_t7.js → ganttDiagram-EL5Y4UJY-BZQDxzTu.js} +1 -1
  295. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-M29pa3Tc.js → gitGraphDiagram-WWUBYQGX-DZynLCSV.js} +1 -1
  296. package/web-shell/assets/{index-C9R-iojE.js → index-9ie6xLTM.js} +1 -1
  297. package/web-shell/assets/index-DirkXQEg.js +2164 -0
  298. package/web-shell/assets/index-DzdST_7L.css +36 -0
  299. package/web-shell/assets/{infoDiagram-RXCK75RN-XqspXdOU.js → infoDiagram-RXCK75RN-B0gr769A.js} +1 -1
  300. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-C5KFS-7j.js → ishikawaDiagram-5VMMS53U-0pQFfjvX.js} +1 -1
  301. package/web-shell/assets/{journeyDiagram-EYS64GPL-Cc57LVRo.js → journeyDiagram-EYS64GPL-DEGtClWb.js} +1 -1
  302. package/web-shell/assets/{kanban-definition-3QL26DDD-C81OG-AI.js → kanban-definition-3QL26DDD-CnN8gPzw.js} +1 -1
  303. package/web-shell/assets/{layout-CFVu37BB.js → layout-C_70RhaT.js} +1 -1
  304. package/web-shell/assets/{linear-ChBxdtWf.js → linear-BJ2ZLmcq.js} +1 -1
  305. package/web-shell/assets/{mermaid.core-CMLfue0w.js → mermaid.core-RlY0zPNC.js} +6 -6
  306. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DFsvJThp.js → mindmap-definition-FBJOCRG2-CpVAxTNl.js} +1 -1
  307. package/web-shell/assets/{pegDiagram-XKGWAZYB-BzpRzM4F.js → pegDiagram-XKGWAZYB-DmrSv3hD.js} +1 -1
  308. package/web-shell/assets/{pieDiagram-E7YTZNPT-Cv0Kankl.js → pieDiagram-E7YTZNPT-CJmgp8KJ.js} +1 -1
  309. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-Bh2BJ3Ay.js → quadrantDiagram-AXDQQJYC-UsgOyNco.js} +1 -1
  310. package/web-shell/assets/{railroadDiagram-O6MQD6OU-y8rNDdDS.js → railroadDiagram-O6MQD6OU-DQ6gMs_W.js} +1 -1
  311. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-C0m2DKJ_.js → requirementDiagram-EFPCY7ZU-DhqadamF.js} +1 -1
  312. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-BzdGnSF4.js → sankeyDiagram-P5KCCOFB-R4WnURaE.js} +1 -1
  313. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DPzAVmzz.js → sequenceDiagram-WJ2MYXX4-D7BwMi_D.js} +1 -1
  314. package/web-shell/assets/{sizeCapture-X5ZJPWSS-LcHG28Zh.js → sizeCapture-X5ZJPWSS-Bqngz088.js} +1 -1
  315. package/web-shell/assets/{stateDiagram-HBIQ2CUA-C1Bzy3IT.js → stateDiagram-HBIQ2CUA-DwaXPGqn.js} +1 -1
  316. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-8GCQZAvv.js +1 -0
  317. package/web-shell/assets/{swimlanes-XN3QIQJK-Bftk8V64.js → swimlanes-XN3QIQJK-BsaLeRDY.js} +1 -1
  318. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-BoRBF2Yw.js +8 -0
  319. package/web-shell/assets/{timeline-definition-24CTP7MA-BfXHcN1A.js → timeline-definition-24CTP7MA-NJ9G-NUU.js} +1 -1
  320. package/web-shell/assets/{vennDiagram-4TSXK5OY-DRSlI9-V.js → vennDiagram-4TSXK5OY-Ca3W4rSq.js} +1 -1
  321. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-CaLmqGau.js → wardleyDiagram-VM6X3IG4-OabvjC-6.js} +1 -1
  322. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-8lgUT6e8.js → xychartDiagram-S5SC5T6Z-C7rbjvpc.js} +1 -1
  323. package/web-shell/index.html +2 -2
  324. package/chunks/chunk-2LD5U7Q3.js +0 -114
  325. package/chunks/chunk-3UMWOKJC.js +0 -78
  326. package/chunks/chunk-IQAFKVXS.js +0 -22
  327. package/chunks/chunk-X35VIWWJ.js +0 -276
  328. package/chunks/chunk-ZJ2LM2SI.js +0 -198
  329. package/web-shell/assets/channel-CQx7VSAp.js +0 -1
  330. package/web-shell/assets/classDiagram-DTDB5LWJ-C-Uz8hHk.js +0 -1
  331. package/web-shell/assets/classDiagram-v2-JRS7N3AN-C-Uz8hHk.js +0 -1
  332. package/web-shell/assets/index-B4TLaxWs.js +0 -2142
  333. package/web-shell/assets/index-CCrkEbzz.css +0 -36
  334. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-LuuL5byY.js +0 -1
  335. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-COmnNq8s.js +0 -8
@@ -47,6 +47,7 @@ var KNOWN_RECORD_SUBTYPES = /* @__PURE__ */ new Set([
47
47
  "agent_bootstrap",
48
48
  "agent_launch_prompt",
49
49
  "agent_retry",
50
+ "agent_session_ready",
50
51
  "file_history_snapshot",
51
52
  "session_source",
52
53
  "session_model",
@@ -235,6 +236,7 @@ function validateTranscriptRecord(value, recordIndex) {
235
236
  uuid,
236
237
  parentUuid,
237
238
  sessionId,
239
+ daemonPromptId: typeof value["daemonPromptId"] === "string" && value["daemonPromptId"].trim().length > 0 ? value["daemonPromptId"] : void 0,
238
240
  type,
239
241
  ...typeof subtype === "string" ? { subtype } : { subtype: void 0 },
240
242
  ...typeof timestamp === "string" && Number.isFinite(new Date(timestamp).getTime()) ? { timestamp } : { timestamp: void 0 },
@@ -1,8 +1,9 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
3
  import {
4
- normalize
5
- } from "./chunk-FPGTNKCP.js";
4
+ normalize,
5
+ parseModelReasoningCapabilities
6
+ } from "./chunk-F3M6P6IQ.js";
6
7
  import {
7
8
  init_esbuild_shims
8
9
  } from "./chunk-5O2XNYP6.js";
@@ -110,10 +111,14 @@ function isQwenFamilyWireModel(model) {
110
111
  return normalized.startsWith("qwen") || normalized === "coder-model";
111
112
  }
112
113
  __name(isQwenFamilyWireModel, "isQwenFamilyWireModel");
113
- function isTieredEffortWireModel(model) {
114
+ function isTieredEffortWireModel(model, configuredReasoning) {
114
115
  if (!model) {
115
116
  return false;
116
117
  }
118
+ const reasoning = parseModelReasoningCapabilities(configuredReasoning);
119
+ if (reasoning) {
120
+ return isQwenFamilyWireModel(model) && !reasoning.toggleOnly && reasoning.disableField === "reasoning_effort";
121
+ }
117
122
  return model.toLowerCase().startsWith("qwen3.8-max");
118
123
  }
119
124
  __name(isTieredEffortWireModel, "isTieredEffortWireModel");
@@ -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
@@ -4,23 +4,26 @@ import {
4
4
  DASHSCOPE_PROXY_BASE_URL,
5
5
  DEFAULT_DASHSCOPE_BASE_URL,
6
6
  DEFAULT_MAX_RETRIES,
7
- REASONING_EFFORT_TIERS,
8
- clampReasoningEffort,
9
7
  resolveRequestTimeout
10
- } from "./chunk-2LD5U7Q3.js";
8
+ } from "./chunk-AXMWHKXA.js";
11
9
  import {
12
10
  buildSessionAwareFetch
13
- } from "./chunk-3UMWOKJC.js";
11
+ } from "./chunk-NOO4QFXM.js";
14
12
  import {
15
13
  isQwenFamilyWireModel,
16
14
  isTieredEffortWireModel
17
- } from "./chunk-XBVNNDPK.js";
15
+ } from "./chunk-GSYD7MYP.js";
18
16
  import {
17
+ REASONING_EFFORT_TIERS,
18
+ clampReasoningEffort,
19
19
  defaultOutputCeiling,
20
+ getGptReasoningCapabilities,
20
21
  hasExplicitOutputLimit,
22
+ isReasoningEffortPlaceholder,
23
+ parseModelReasoningCapabilities,
21
24
  parsePositiveIntegerEnvValue,
22
25
  tokenLimit
23
- } from "./chunk-FPGTNKCP.js";
26
+ } from "./chunk-F3M6P6IQ.js";
24
27
  import {
25
28
  buildRuntimeFetchOptions
26
29
  } from "./chunk-4HOEU2OR.js";
@@ -6886,6 +6889,22 @@ init_esbuild_shims();
6886
6889
 
6887
6890
  // packages/core/src/core/openaiContentGenerator/provider/default.ts
6888
6891
  init_esbuild_shims();
6892
+
6893
+ // packages/core/src/core/openaiContentGenerator/provider/openrouter.ts
6894
+ init_esbuild_shims();
6895
+ function isOpenRouterHostname(contentGeneratorConfig) {
6896
+ const baseUrl = contentGeneratorConfig.baseUrl ?? "";
6897
+ if (!baseUrl) return false;
6898
+ try {
6899
+ const hostname = new URL(baseUrl).hostname.toLowerCase();
6900
+ return hostname === "openrouter.ai" || hostname.endsWith(".openrouter.ai");
6901
+ } catch {
6902
+ return false;
6903
+ }
6904
+ }
6905
+ __name(isOpenRouterHostname, "isOpenRouterHostname");
6906
+
6907
+ // packages/core/src/core/openaiContentGenerator/provider/default.ts
6889
6908
  var debugLogger = createDebugLogger("DefaultOpenAICompatibleProvider");
6890
6909
  var OPENAI_COMPATIBLE_EFFORTS = [
6891
6910
  "low",
@@ -6955,7 +6974,11 @@ var DefaultOpenAICompatibleProvider = class {
6955
6974
  maxRetries,
6956
6975
  defaultHeaders,
6957
6976
  ...runtimeOptions || {},
6958
- fetch: buildSessionAwareFetch(runtimeOptions?.fetch, this.cliConfig)
6977
+ fetch: buildSessionAwareFetch(
6978
+ runtimeOptions?.fetch,
6979
+ this.cliConfig,
6980
+ this.contentGeneratorConfig.customHeaders
6981
+ )
6959
6982
  });
6960
6983
  }
6961
6984
  /**
@@ -6967,8 +6990,14 @@ var DefaultOpenAICompatibleProvider = class {
6967
6990
  * clamp calls it through `this`, so a subclass answer applies even on the
6968
6991
  * `super.buildRequest` path.
6969
6992
  */
6970
- supportedReasoningEffortsFor(_model) {
6971
- return OPENAI_COMPATIBLE_EFFORTS;
6993
+ supportedReasoningEffortsFor(model) {
6994
+ const gpt = getGptReasoningCapabilities(model);
6995
+ if (!gpt) return OPENAI_COMPATIBLE_EFFORTS;
6996
+ const { authType, baseUrl } = this.contentGeneratorConfig;
6997
+ const configured = authType && model ? parseModelReasoningCapabilities(
6998
+ this.cliConfig.getResolvedModelConfig?.(authType, model, baseUrl)?.capabilities.reasoning
6999
+ ) : void 0;
7000
+ return configured && !configured.toggleOnly ? configured.efforts : gpt.efforts;
6972
7001
  }
6973
7002
  /**
6974
7003
  * Cap the pipeline-injected `reasoning.effort` at what this endpoint accepts.
@@ -6977,8 +7006,8 @@ var DefaultOpenAICompatibleProvider = class {
6977
7006
  * session too.
6978
7007
  *
6979
7008
  * Only the pipeline-injected tier is capped. A `reasoning` object the user
6980
- * put in `samplingParams` ships verbatim (the pipeline hands those keys
6981
- * straight to the wire and skips the injection entirely), and `extra_body`
7009
+ * put in `samplingParams` ships verbatim. Unrelated GPT sampling options
7010
+ * still receive the configured effort and need clamping. `extra_body`
6982
7011
  * merges after this, so both explicit overrides survive unchanged.
6983
7012
  */
6984
7013
  clampConfiguredReasoningEffort(request) {
@@ -7017,11 +7046,25 @@ var DefaultOpenAICompatibleProvider = class {
7017
7046
  this.applyOutputTokenLimit(request)
7018
7047
  );
7019
7048
  const messages = isQwen3Model(request.model) ? requestWithTokenLimits.messages.map(mirrorReasoningContentToReasoning) : requestWithTokenLimits.messages;
7020
- return {
7049
+ const result = {
7021
7050
  ...requestWithTokenLimits,
7022
7051
  messages,
7023
7052
  ...extraBody ? extraBody : {}
7024
7053
  };
7054
+ this.flattenGptReasoningEffort(result);
7055
+ return result;
7056
+ }
7057
+ flattenGptReasoningEffort(body) {
7058
+ if (!getGptReasoningCapabilities(body["model"]) || isOpenRouterHostname(this.contentGeneratorConfig) || this.contentGeneratorConfig.samplingParams?.["reasoning"] !== void 0 || this.contentGeneratorConfig.extra_body?.["reasoning"] !== void 0)
7059
+ return;
7060
+ const reasoning = body["reasoning"];
7061
+ if (typeof reasoning?.effort !== "string" || !reasoning.effort) return;
7062
+ if (isReasoningEffortPlaceholder(body["reasoning_effort"])) {
7063
+ body["reasoning_effort"] = reasoning.effort;
7064
+ }
7065
+ const { effort: _drop, ...rest } = reasoning;
7066
+ if (Object.keys(rest).length > 0) body["reasoning"] = rest;
7067
+ else delete body["reasoning"];
7025
7068
  }
7026
7069
  getDefaultGenerationConfig() {
7027
7070
  return {};
@@ -7105,8 +7148,8 @@ var DASHSCOPE_TIERED_EFFORTS = [
7105
7148
  "high",
7106
7149
  "xhigh"
7107
7150
  ];
7108
- function selectDashScopeThinkingKnob(model, extraBody, samplingParams, reasoningEffort) {
7109
- if (!isTieredEffortWireModel((model ?? "").toLowerCase())) {
7151
+ function selectDashScopeThinkingKnob(model, extraBody, samplingParams, reasoningEffort, tieredModel = isTieredEffortWireModel(model)) {
7152
+ if (!tieredModel) {
7110
7153
  return void 0;
7111
7154
  }
7112
7155
  const selectFromLayer = /* @__PURE__ */ __name((source, layer) => {
@@ -7270,7 +7313,11 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7270
7313
  maxRetries,
7271
7314
  defaultHeaders,
7272
7315
  ...runtimeOptions || {},
7273
- fetch: buildSessionAwareFetch(runtimeOptions?.fetch, this.cliConfig)
7316
+ fetch: buildSessionAwareFetch(
7317
+ runtimeOptions?.fetch,
7318
+ this.cliConfig,
7319
+ this.contentGeneratorConfig.customHeaders
7320
+ )
7274
7321
  });
7275
7322
  }
7276
7323
  /**
@@ -7302,9 +7349,7 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7302
7349
  tools = updatedTools;
7303
7350
  }
7304
7351
  const requestWithTokenLimits = this.applyOutputTokenLimit(request);
7305
- const isTieredQwenModel = isTieredEffortWireModel(
7306
- this.resolveWireModel(request.model)
7307
- );
7352
+ const isTieredQwenModel = this.isTieredEffortModel(request.model);
7308
7353
  const extraBody = isTieredQwenModel ? withoutNullishThinkingKnobs(this.contentGeneratorConfig.extra_body) : this.contentGeneratorConfig.extra_body;
7309
7354
  const qwenEffortConfig = this.buildQwenEffortConfig(request.model);
7310
7355
  const rawRequestParams = requestWithTokenLimits;
@@ -7317,7 +7362,8 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7317
7362
  this.resolveWireModel(request.model),
7318
7363
  extraBody,
7319
7364
  requestParams,
7320
- qwenEffortConfig["reasoning_effort"]
7365
+ qwenEffortConfig["reasoning_effort"],
7366
+ isTieredQwenModel
7321
7367
  ) : void 0;
7322
7368
  if (this.isVisionModel(request.model)) {
7323
7369
  const dashscopeExtras2 = {
@@ -7397,8 +7443,21 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7397
7443
  dropped.add(key);
7398
7444
  }
7399
7445
  this.warnConflictingKnobDrop(model, reasoningEffort, [...dropped]);
7446
+ this.flattenGptReasoningEffort(merged);
7400
7447
  return merged;
7401
7448
  }
7449
+ getConfiguredReasoning(model) {
7450
+ const { authType, baseUrl } = this.contentGeneratorConfig;
7451
+ const wireModel = model ?? this.contentGeneratorConfig.model;
7452
+ const reasoning = authType ? this.cliConfig.getResolvedModelConfig?.(authType, wireModel, baseUrl)?.capabilities.reasoning : void 0;
7453
+ return parseModelReasoningCapabilities(reasoning);
7454
+ }
7455
+ isTieredEffortModel(model) {
7456
+ return isTieredEffortWireModel(
7457
+ model ?? this.contentGeneratorConfig.model,
7458
+ this.getConfiguredReasoning(model)
7459
+ );
7460
+ }
7402
7461
  resolveWireModel(model) {
7403
7462
  return (model ?? this.contentGeneratorConfig.model ?? "").toLowerCase();
7404
7463
  }
@@ -7417,7 +7476,11 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7417
7476
  return {};
7418
7477
  }
7419
7478
  const wireModel = this.resolveWireModel(model);
7420
- if (isTieredEffortWireModel(wireModel)) {
7479
+ if (this.isTieredEffortModel(model)) {
7480
+ const configured = this.getConfiguredReasoning(model);
7481
+ if (configured && !configured.toggleOnly) {
7482
+ return configured.efforts.includes(reasoning.effort) ? { reasoning_effort: reasoning.effort } : {};
7483
+ }
7421
7484
  return { reasoning_effort: this.clampTieredEffort(reasoning.effort) };
7422
7485
  }
7423
7486
  if (isQwenFamilyWireModel(wireModel)) {
@@ -7426,13 +7489,9 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7426
7489
  return {};
7427
7490
  }
7428
7491
  /**
7429
- * Cap a configured tier at what the qwen3.8-max family actually accepts.
7430
- * This family does not take `max`, and the rejection is a 400 on every
7431
- * subsequent request rather than a one-off, so the tier is clamped to the
7432
- * strongest supported tier and reported once. Only the
7433
- * configured `reasoning.effort` passes through here: an explicit
7434
- * `extra_body` / `samplingParams` `reasoning_effort` is a documented
7435
- * verbatim override and is merged after this, so it still ships unchanged.
7492
+ * Preserve the legacy clamp for a route without an explicit capability.
7493
+ * Only the unified reasoning.effort preference reaches this fallback;
7494
+ * extra_body and samplingParams remain verbatim provider overrides.
7436
7495
  */
7437
7496
  clampTieredEffort(effort) {
7438
7497
  const clamped = clampReasoningEffort(effort, DASHSCOPE_TIERED_EFFORTS);
@@ -7473,7 +7532,7 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7473
7532
  if (!isQwenFamilyWireModel(wireModel)) {
7474
7533
  return [];
7475
7534
  }
7476
- const isTieredEffortModel = isTieredEffortWireModel(wireModel);
7535
+ const isTieredEffortModel = this.isTieredEffortModel(model);
7477
7536
  if (isTieredEffortModel && selectedThinkingKnob?.field === "enable_thinking" && selectedThinkingKnob.value === false) {
7478
7537
  merged["reasoning_effort"] = "none";
7479
7538
  const dropped = ["enable_thinking"];
@@ -7711,8 +7770,14 @@ var DashScopeOpenAICompatibleProvider = class _DashScopeOpenAICompatibleProvider
7711
7770
 
7712
7771
  export {
7713
7772
  OpenAI,
7773
+ isOpenRouterHostname,
7714
7774
  DefaultOpenAICompatibleProvider,
7715
7775
  selectDashScopeThinkingKnob,
7716
7776
  DASHSCOPE_REGIONAL_HOSTS,
7717
7777
  DashScopeOpenAICompatibleProvider
7718
7778
  };
7779
+ /**
7780
+ * @license
7781
+ * Copyright 2025 Qwen
7782
+ * SPDX-License-Identifier: Apache-2.0
7783
+ */
@@ -2,22 +2,22 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-P5Z7VD23.js";
5
+ } from "./chunk-3O77M472.js";
6
6
  import {
7
7
  CUSTOM_SANDBOX_IMAGE_ENV_VAR,
8
8
  HOST_UPDATE_RELAUNCH_ENV_VAR,
9
9
  SKIP_UPDATE_CHECK_ENV_VAR,
10
10
  requestUpdateOnExit
11
- } from "./chunk-22QOQKG4.js";
11
+ } from "./chunk-5WBA3DEF.js";
12
12
  import {
13
13
  loadUndici
14
14
  } from "./chunk-TXASDT2M.js";
15
15
  import {
16
16
  getAllProviderBaseUrls
17
- } from "./chunk-TXAEXF2B.js";
17
+ } from "./chunk-PLEBBGHL.js";
18
18
  import {
19
19
  IdeClient
20
- } from "./chunk-TSLRORQR.js";
20
+ } from "./chunk-BDAVT6K2.js";
21
21
  import {
22
22
  detectRuntime,
23
23
  getOrCreateSharedDispatcher,
@@ -233,11 +233,11 @@ function startPostRenderPrefetches(config, settings, options = {}) {
233
233
  { updateEventEmitter },
234
234
  { t }
235
235
  ] = await Promise.all([
236
- import("./updateCheck-3MYFMM35.js"),
237
- import("./handleAutoUpdate-RUPZZTSG.js"),
238
- import("./installationInfo-IRPQEYRF.js"),
236
+ import("./updateCheck-ARTHAJT2.js"),
237
+ import("./handleAutoUpdate-JDZHHZKK.js"),
238
+ import("./installationInfo-QEQEPB3G.js"),
239
239
  import("./updateEventEmitter-5MKC7BLQ.js"),
240
- import("./i18n-SF5MPWEB.js")
240
+ import("./i18n-LA4D5IXM.js")
241
241
  ]);
242
242
  const updateCheckSkippedMessage = /* @__PURE__ */ __name((error) => t("Update check skipped ({{reason}}) \u2014 run /update to retry.", {
243
243
  reason: describeUpdateCheckFailure(error)
@@ -310,7 +310,7 @@ ${t(
310
310
  state: "connecting"
311
311
  });
312
312
  try {
313
- const { connectIdeForStartup } = await import("./initializer-CK4WPYZG.js");
313
+ const { connectIdeForStartup } = await import("./initializer-SHPTSWUZ.js");
314
314
  await withTimeout(
315
315
  connectIdeForStartup(config),
316
316
  "ide_connect",
@@ -334,7 +334,7 @@ ${t(
334
334
  }
335
335
  if (config.isInteractive()) {
336
336
  runDeferredTask("background_housekeeping", async () => {
337
- const { startBackgroundHousekeeping } = await import("./scheduler-EXU5HMVK.js");
337
+ const { startBackgroundHousekeeping } = await import("./scheduler-ERMW7Q7B.js");
338
338
  startBackgroundHousekeeping(config, settings);
339
339
  });
340
340
  }
@@ -2,13 +2,13 @@
2
2
  "use strict";
3
3
  import {
4
4
  useKeypress
5
- } from "./chunk-AWDF462I.js";
5
+ } from "./chunk-VR6Y23FW.js";
6
6
  import {
7
7
  require_react
8
8
  } from "./chunk-5QWWOFGG.js";
9
9
  import {
10
10
  t
11
- } from "./chunk-LD53HMPV.js";
11
+ } from "./chunk-CRZBDVP2.js";
12
12
  import {
13
13
  APPROVAL_MODES
14
14
  } from "./chunk-JX6XHPTX.js";