@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
@@ -75,7 +75,7 @@ import {
75
75
  clampActiveWorkIntervalMs,
76
76
  isValidTrustedModelPrompt,
77
77
  sessionCloseDrainBudgetMs
78
- } from "./chunk-Z6KFLEG7.js";
78
+ } from "./chunk-PSPAM24S.js";
79
79
  import {
80
80
  BranchWhilePromptActiveError,
81
81
  BridgeChannelQuarantinedError,
@@ -94,12 +94,13 @@ import {
94
94
  SessionBusyError,
95
95
  SessionLimitExceededError,
96
96
  SessionNotFoundError,
97
+ SessionResetPendingError,
97
98
  SessionShellClientRequiredError,
98
99
  SessionShellDisabledError,
99
100
  StandaloneSessionSpawnError,
100
101
  WorkspaceMismatchError,
101
102
  isNotCurrentlyGeneratingCancelError
102
- } from "./chunk-F47DITLZ.js";
103
+ } from "./chunk-FAWTMDX7.js";
103
104
  import {
104
105
  canonicalizeWorkspace,
105
106
  translateAndCheckAbsoluteWorkspacePath
@@ -147,7 +148,7 @@ import {
147
148
  canonicalSessionPrUrl,
148
149
  normalizeTurnResultError,
149
150
  toSessionPrInfo
150
- } from "./chunk-TSLRORQR.js";
151
+ } from "./chunk-PDUMGZ2P.js";
151
152
  import {
152
153
  isUnverifiableIdentityError,
153
154
  openNoFollow
@@ -4245,7 +4246,7 @@ var BridgeClient = class {
4245
4246
  v: ACTIVE_WORK_HEARTBEAT_VERSION,
4246
4247
  seq: snapshot.seq,
4247
4248
  sessions: snapshot.sessions.filter(
4248
- (session) => this.ownsSession(session.sessionId)
4249
+ (session) => this.ownsSession(session.sessionId) || this.hasSessionSpawnInFlight()
4249
4250
  )
4250
4251
  });
4251
4252
  }
@@ -7843,6 +7844,10 @@ function getChannelPromptDisplayText(entry, displayText) {
7843
7844
  return entry.sourceType === "channel" && typeof displayText === "string" ? displayText : void 0;
7844
7845
  }
7845
7846
  __name(getChannelPromptDisplayText, "getChannelPromptDisplayText");
7847
+ function hasInFlightPromptActivity(entry) {
7848
+ return entry.promptActive || entry.goalTurnActive === true || (entry.deferredRestoreAskUserQuestionPrompts?.size ?? 0) > 0;
7849
+ }
7850
+ __name(hasInFlightPromptActivity, "hasInFlightPromptActivity");
7846
7851
  function isDefinitiveAcpRequestError(error) {
7847
7852
  if (error instanceof RequestError) return true;
7848
7853
  if (!isRecord3(error)) return false;
@@ -9164,6 +9169,20 @@ function createAcpSessionBridge(opts) {
9164
9169
  return entryHasLocalWork(entry) || childReportsHeldWork(entry) || childWorkIsUnknown(entry);
9165
9170
  }
9166
9171
  __name(entryHasActiveWork, "entryHasActiveWork");
9172
+ function entryActiveWorkState(entry) {
9173
+ if (entryHasLocalWork(entry) || childReportsHeldWork(entry)) {
9174
+ return "active";
9175
+ }
9176
+ const capability = channelInfoForEntry(entry)?.activeWork;
9177
+ if (!capability) return "unsupported";
9178
+ if (childWorkIsUnknown(entry) || ACTIVE_WORK_HOLD_CATEGORIES.some(
9179
+ (category) => !capability.categories.includes(category)
9180
+ )) {
9181
+ return "unknown";
9182
+ }
9183
+ return "idle";
9184
+ }
9185
+ __name(entryActiveWorkState, "entryActiveWorkState");
9167
9186
  function entryIsAutoCloseCandidate(entry) {
9168
9187
  if (byId.get(entry.sessionId) !== entry) return false;
9169
9188
  if (isClosingOrAuthorizingClose(entry)) return false;
@@ -9345,6 +9364,7 @@ function createAcpSessionBridge(opts) {
9345
9364
  for (const hold of session.holds) holds.set(hold.id, hold.category);
9346
9365
  reported.set(session.sessionId, holds);
9347
9366
  }
9367
+ info.activeWork.snapshot = { receivedAt: now, sessions: reported };
9348
9368
  for (const sessionId of Array.from(info.sessionIds)) {
9349
9369
  const entry = byId.get(sessionId);
9350
9370
  if (!entry || entry.channel !== info.channel) continue;
@@ -9750,7 +9770,8 @@ function createAcpSessionBridge(opts) {
9750
9770
  ...entry.sourceType ? { sourceType: entry.sourceType } : {},
9751
9771
  ...entry.sourceId !== void 0 ? { sourceId: entry.sourceId } : {},
9752
9772
  clientCount: entry.clientIds.size,
9753
- hasActivePrompt: entry.promptActive || entry.goalTurnActive === true,
9773
+ hasActivePrompt: hasInFlightPromptActivity(entry),
9774
+ activeWorkState: entryActiveWorkState(entry),
9754
9775
  isWaitingForPermission,
9755
9776
  isWaitingForUserQuestion,
9756
9777
  pendingInteractionCount: entry.pendingInteractions.size,
@@ -9799,6 +9820,13 @@ function createAcpSessionBridge(opts) {
9799
9820
  const inFlightSessionIdReservations = /* @__PURE__ */ new Map();
9800
9821
  const abandonedSessionIdReservations = /* @__PURE__ */ new Set();
9801
9822
  const inFlightRestores = /* @__PURE__ */ new Map();
9823
+ const resetPendingSessions = /* @__PURE__ */ new Set();
9824
+ function assertSessionResetNotPending(sessionId) {
9825
+ if (resetPendingSessions.has(sessionId)) {
9826
+ throw new SessionResetPendingError(sessionId);
9827
+ }
9828
+ }
9829
+ __name(assertSessionResetNotPending, "assertSessionResetNotPending");
9802
9830
  async function settleReleasedRuntimeWork(context, armIdleTimer = true) {
9803
9831
  for (const ci2 of Array.from(aliveChannels)) {
9804
9832
  await reapPendingEmptyChannel(ci2);
@@ -11595,6 +11623,8 @@ function createAcpSessionBridge(opts) {
11595
11623
  }
11596
11624
  }, "reconcileAfterRoundtrip");
11597
11625
  const createSessionEntry = /* @__PURE__ */ __name((ci, sessionId, workspaceCwd, events = createSessionEventBus(sessionId), options = {}) => {
11626
+ const childSnapshot = ci.activeWork?.snapshot;
11627
+ const reportedChildHolds = childSnapshot?.sessions.get(sessionId);
11598
11628
  const entry = {
11599
11629
  sessionId,
11600
11630
  workspaceCwd,
@@ -11650,8 +11680,8 @@ function createAcpSessionBridge(opts) {
11650
11680
  attachRefs: /* @__PURE__ */ new Map(),
11651
11681
  spawnOwnerWantedKill: false,
11652
11682
  promptActive: false,
11653
- childHolds: null,
11654
- childHoldsAt: null,
11683
+ childHolds: reportedChildHolds ?? null,
11684
+ childHoldsAt: childSnapshot && reportedChildHolds !== void 0 ? childSnapshot.receivedAt : null,
11655
11685
  activeWorkCloseInFlight: false,
11656
11686
  activeWorkCloseFailures: 0,
11657
11687
  activeWorkCloseRetryAt: null,
@@ -12326,7 +12356,11 @@ function createAcpSessionBridge(opts) {
12326
12356
  attached: true,
12327
12357
  clientId,
12328
12358
  createdAt: entry.createdAt,
12329
- hasActivePrompt: entry.promptActive || entry.goalTurnActive === true,
12359
+ // Unlike the owner-side restore responses, the waiter has no
12360
+ // `restorePromptAdmitted` term; a prompt the owner parked while the
12361
+ // restore was in flight must still read as active here so the
12362
+ // waiter's caller never relocates or resets under a deferred prompt.
12363
+ hasActivePrompt: hasInFlightPromptActivity(entry),
12330
12364
  ...entry.sourceType ? { sourceType: entry.sourceType } : {},
12331
12365
  ...entry.sourceId !== void 0 ? { sourceId: entry.sourceId } : {},
12332
12366
  ...sourcePersisted !== void 0 ? { sourcePersisted } : {},
@@ -13281,7 +13315,7 @@ function createAcpSessionBridge(opts) {
13281
13315
  attachCount: entry.attachCount,
13282
13316
  pendingPromptCount: entry.pendingPromptCount,
13283
13317
  pendingPermissionCount: entry.pendingPermissionIds.size,
13284
- hasActivePrompt: entry.promptActive || entry.goalTurnActive === true,
13318
+ hasActivePrompt: hasInFlightPromptActivity(entry),
13285
13319
  lastEventId: entry.events.lastEventId,
13286
13320
  ...entry.sessionLastSeenAt !== void 0 ? { lastSeenAt: entry.sessionLastSeenAt } : {},
13287
13321
  ...entry.currentModelId ? { currentModelId: entry.currentModelId } : {},
@@ -13694,6 +13728,9 @@ function createAcpSessionBridge(opts) {
13694
13728
  )
13695
13729
  );
13696
13730
  }
13731
+ if (resetPendingSessions.has(sessionId)) {
13732
+ throw new SessionResetPendingError(sessionId);
13733
+ }
13697
13734
  if (isReservedStandaloneSessionSourceType(entry.sourceType) && entry.managedConversationBinding?.released !== true) {
13698
13735
  return Promise.reject(standaloneWorkingDirectoryMissingError());
13699
13736
  }
@@ -14354,6 +14391,7 @@ function createAcpSessionBridge(opts) {
14354
14391
  if (context?.clientId !== void 0) {
14355
14392
  resolveTrustedClientId(entry, context.clientId);
14356
14393
  }
14394
+ assertSessionResetNotPending(sessionId);
14357
14395
  const concurrentSideTask = isSideTask && entry.promptActive;
14358
14396
  if (!isSideTask && (entry.pendingPromptCount > 0 || entry.promptActive)) {
14359
14397
  throw new BranchWhilePromptActiveError(sessionId);
@@ -14591,6 +14629,7 @@ function createAcpSessionBridge(opts) {
14591
14629
  entry,
14592
14630
  context?.clientId
14593
14631
  );
14632
+ assertSessionResetNotPending(sessionId);
14594
14633
  const cdPromise = entry.promptQueue.then(async () => {
14595
14634
  const ci = assertLivePromptEntry(sessionId, entry);
14596
14635
  runtimeOperationReservations++;
@@ -14773,6 +14812,39 @@ function createAcpSessionBridge(opts) {
14773
14812
  markSessionCatalogChanged();
14774
14813
  }
14775
14814
  },
14815
+ clearSessionWorktree(sessionId) {
14816
+ const entry = byId.get(sessionId);
14817
+ if (entry?.worktree !== void 0) {
14818
+ delete entry.worktree;
14819
+ markSessionCatalogChanged();
14820
+ }
14821
+ },
14822
+ setSessionResetPending(sessionId) {
14823
+ resetPendingSessions.add(sessionId);
14824
+ return byId.has(sessionId);
14825
+ },
14826
+ clearSessionResetPending(sessionId) {
14827
+ resetPendingSessions.delete(sessionId);
14828
+ },
14829
+ async severSessionClients(sessionId) {
14830
+ const entry = byId.get(sessionId);
14831
+ if (!entry) return true;
14832
+ const registrations = /* @__PURE__ */ __name(() => {
14833
+ let total = 0;
14834
+ for (const count of entry.clientIds.values()) total += count;
14835
+ return total;
14836
+ }, "registrations");
14837
+ let outstanding = registrations();
14838
+ while (outstanding > 0 && byId.get(sessionId) === entry) {
14839
+ for (const clientId of [...entry.clientIds.keys()]) {
14840
+ await bridgeApi.detachClient(sessionId, clientId);
14841
+ }
14842
+ const remaining = registrations();
14843
+ if (remaining >= outstanding) break;
14844
+ outstanding = remaining;
14845
+ }
14846
+ return !byId.has(sessionId);
14847
+ },
14776
14848
  fireDeferredRestoreAskUserQuestionPrompt(sessionId, clientId) {
14777
14849
  if (clientId === void 0) return false;
14778
14850
  const entry = byId.get(sessionId);
@@ -15354,6 +15426,7 @@ function createAcpSessionBridge(opts) {
15354
15426
  const entry = byId.get(sessionId);
15355
15427
  if (!entry) throw new SessionNotFoundError(sessionId);
15356
15428
  resolveTrustedClientId(entry, context?.clientId);
15429
+ assertSessionResetNotPending(sessionId);
15357
15430
  return requestSessionStatus(sessionId, SERVE_CONTROL_EXT_METHODS.sessionWorkflowTaskAction, {
15358
15431
  taskId,
15359
15432
  action
@@ -15365,6 +15438,7 @@ function createAcpSessionBridge(opts) {
15365
15438
  const info = channelInfoForEntry(entry);
15366
15439
  if (!info || info.isDying) throw new SessionNotFoundError(sessionId);
15367
15440
  resolveTrustedClientId(entry, context?.clientId);
15441
+ assertSessionResetNotPending(sessionId);
15368
15442
  return requestSessionStatus(
15369
15443
  sessionId,
15370
15444
  SERVE_CONTROL_EXT_METHODS.sessionGoalControl,
@@ -16250,6 +16324,7 @@ function createAcpSessionBridge(opts) {
16250
16324
  if (!trimmed) {
16251
16325
  throw new Error("Fork directive is required");
16252
16326
  }
16327
+ assertSessionResetNotPending(sessionId);
16253
16328
  if (entry.pendingPromptCount > 0 || entry.promptActive) {
16254
16329
  throw new SessionBusyError(
16255
16330
  sessionId,
@@ -16319,6 +16394,7 @@ function createAcpSessionBridge(opts) {
16319
16394
  entry,
16320
16395
  context.clientId
16321
16396
  );
16397
+ assertSessionResetNotPending(sessionId);
16322
16398
  if (signal?.aborted) {
16323
16399
  return { exitCode: null, output: "", aborted: true };
16324
16400
  }
@@ -16461,6 +16537,7 @@ function createAcpSessionBridge(opts) {
16461
16537
  entry,
16462
16538
  context?.clientId
16463
16539
  );
16540
+ assertSessionResetNotPending(sessionId);
16464
16541
  if (entry.pendingPromptCount > 0 || entry.promptActive) {
16465
16542
  throw new SessionBusyError(
16466
16543
  sessionId,
@@ -2,15 +2,15 @@
2
2
  "use strict";
3
3
  import {
4
4
  appEvents
5
- } from "./chunk-P5Z7VD23.js";
5
+ } from "./chunk-DXQ6Z7AH.js";
6
6
  import {
7
7
  assembleMcpServers,
8
8
  getPendingGatedMcpServers,
9
9
  getPromptableMcpServers
10
- } from "./chunk-C55CR5I4.js";
10
+ } from "./chunk-TGC4264Q.js";
11
11
  import {
12
12
  getMCPServerStatus
13
- } from "./chunk-WQBR7LN5.js";
13
+ } from "./chunk-6QV7Z74P.js";
14
14
  import {
15
15
  require_fast_deep_equal
16
16
  } from "./chunk-MWIO7MF6.js";
@@ -0,0 +1,82 @@
1
+ // Force strict mode and setup for ESM
2
+ "use strict";
3
+ import {
4
+ init_esbuild_shims
5
+ } from "./chunk-5O2XNYP6.js";
6
+ import {
7
+ __name
8
+ } from "./chunk-J2S4EL5Y.js";
9
+
10
+ // packages/cli/src/serve/conversations/conversation-runtime-errors.ts
11
+ init_esbuild_shims();
12
+ var DEFAULT_MESSAGES = {
13
+ conversation_runtime_in_use: "The Conversations runtime is owned by another daemon.",
14
+ conversation_runtime_unavailable: "The Conversations runtime is temporarily unavailable.",
15
+ conversation_root_compromised: "The Conversations root could not be verified.",
16
+ conversation_runtime_ownership_compromised: "The Conversations runtime ownership state could not be verified."
17
+ };
18
+ var ConversationRuntimeOwnershipError = class extends Error {
19
+ constructor(code, retryable, options) {
20
+ super(DEFAULT_MESSAGES[code], options);
21
+ this.code = code;
22
+ this.retryable = retryable;
23
+ this.name = "ConversationRuntimeOwnershipError";
24
+ }
25
+ static {
26
+ __name(this, "ConversationRuntimeOwnershipError");
27
+ }
28
+ status = 503;
29
+ };
30
+ function conversationRuntimeInUseError() {
31
+ return new ConversationRuntimeOwnershipError(
32
+ "conversation_runtime_in_use",
33
+ true
34
+ );
35
+ }
36
+ __name(conversationRuntimeInUseError, "conversationRuntimeInUseError");
37
+ function conversationRuntimeUnavailableError(cause) {
38
+ return new ConversationRuntimeOwnershipError(
39
+ "conversation_runtime_unavailable",
40
+ true,
41
+ { cause }
42
+ );
43
+ }
44
+ __name(conversationRuntimeUnavailableError, "conversationRuntimeUnavailableError");
45
+ function conversationRuntimeOwnershipCompromisedError(cause) {
46
+ return new ConversationRuntimeOwnershipError(
47
+ "conversation_runtime_ownership_compromised",
48
+ false,
49
+ { cause }
50
+ );
51
+ }
52
+ __name(conversationRuntimeOwnershipCompromisedError, "conversationRuntimeOwnershipCompromisedError");
53
+ function conversationRootCompromisedError(cause) {
54
+ return new ConversationRuntimeOwnershipError(
55
+ "conversation_root_compromised",
56
+ false,
57
+ { cause }
58
+ );
59
+ }
60
+ __name(conversationRootCompromisedError, "conversationRootCompromisedError");
61
+
62
+ // packages/cli/src/serve/live/types.ts
63
+ init_esbuild_shims();
64
+ var LIVE_HOST_PROTOCOL_VERSION = 7;
65
+ var LIVE_HOST_BUNDLE_ID = "com.alibaba.qwen-code.live-host";
66
+ var LIVE_INPUT_AUDIO_EPOCH_BYTES = 8;
67
+
68
+ export {
69
+ ConversationRuntimeOwnershipError,
70
+ conversationRuntimeInUseError,
71
+ conversationRuntimeUnavailableError,
72
+ conversationRuntimeOwnershipCompromisedError,
73
+ conversationRootCompromisedError,
74
+ LIVE_HOST_PROTOCOL_VERSION,
75
+ LIVE_HOST_BUNDLE_ID,
76
+ LIVE_INPUT_AUDIO_EPOCH_BYTES
77
+ };
78
+ /**
79
+ * @license
80
+ * Copyright 2026 Qwen Team
81
+ * SPDX-License-Identifier: Apache-2.0
82
+ */
@@ -10,11 +10,12 @@ import {
10
10
  DEFAULT_TOOL_OUTPUT_BATCH_BUDGET,
11
11
  DEFAULT_TOOL_RESULTS_TOTAL_CHARS_THRESHOLD,
12
12
  DEFAULT_TRUNCATE_TOOL_OUTPUT_LINES,
13
- DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD
14
- } from "./chunk-TSLRORQR.js";
13
+ DEFAULT_TRUNCATE_TOOL_OUTPUT_THRESHOLD,
14
+ GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP
15
+ } from "./chunk-PDUMGZ2P.js";
15
16
  import {
16
17
  REASONING_EFFORT_TIERS
17
- } from "./chunk-2LD5U7Q3.js";
18
+ } from "./chunk-6YEOCHSE.js";
18
19
  import {
19
20
  DEFAULT_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH,
20
21
  SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH_LIMIT
@@ -1249,6 +1250,11 @@ var SETTINGS_SCHEMA = {
1249
1250
  description: "Requires `telemetry.enabled: true`. Inject W3C `traceparent` on outbound `fetch` requests (LLM SDK calls, MCP StreamableHTTP, WebFetch, ...) AND as a `TRACEPARENT` environment variable in shell child processes (Bash tool, hooks, monitor). When enabled, any existing `TRACEPARENT` in the parent environment is overwritten with qwen-code's own trace context. Default: false \u2014 trace context stays internal to the operator's OTLP collector. Set true when you want cross-process trace stitching with an OTel-aware LLM provider (e.g. ARMS+DashScope) or need shell scripts / CLI tools to participate in distributed tracing.",
1250
1251
  type: "boolean",
1251
1252
  default: false
1253
+ },
1254
+ allowDynamicHeaderValues: {
1255
+ description: "SECURITY-RELEVANT. Allow `modelProviders[].generationConfig.customHeaders` values to contain runtime placeholders \u2014 currently `${session_id}` \u2014 expanded per request instead of frozen at client construction. Default false: a value containing a placeholder is dropped rather than sent. Enable when a gateway requires a stable per-conversation identifier (e.g. OpenCode Go requires `x-opencode-session`). Which hosts receive the value and what the header is called are decided by the provider entry you attach the header to; this switch only decides whether `${session_id}` may be expanded from live session state and does not identify which settings source supplied the header.",
1256
+ type: "boolean",
1257
+ default: false
1252
1258
  }
1253
1259
  },
1254
1260
  additionalProperties: false
@@ -1405,6 +1411,17 @@ var SETTINGS_SCHEMA = {
1405
1411
  description: "Autonomous spend window armed on each new Goal, in tokens as counted by the Goal meter (totalTokenCount summed over every model call the Goal makes in its own turns; side queries and checkpoint verification are not metered). When a Goal spends its window it gets one wind-down turn to hand off, then stops until you resume it, which arms another window. Unset uses the built-in default of 30,000,000; -1 means unlimited. Zero, values above 300,000,000 (10x the default, a typo guard), other negative, fractional, or non-number values are rejected at startup.",
1406
1412
  showInDialog: false
1407
1413
  },
1414
+ goalCheckpointTimeoutSeconds: {
1415
+ type: "integer",
1416
+ label: "Goal Checkpoint Timeout (seconds)",
1417
+ category: "Model",
1418
+ requiresRestart: false,
1419
+ default: void 0,
1420
+ minimum: 1,
1421
+ maximum: GOAL_CHECKPOINT_TIMEOUT_SECONDS_CAP,
1422
+ description: "Ceiling on one Goal evidence-checkpoint call, in seconds. A long Goal periodically compresses its evidence into checkpoint claims with a side model call; a call that does not finish in time is abandoned as an inconclusive check \u2014 the checkpoint stall streak is preserved rather than incremented \u2014 and a later turn retries it. Unset uses the built-in default of 180. Must be an integer between 1 and 900; other values are rejected at startup. The call is streamed, so the per-request transport timeout (model.generationConfig.timeout, default 120 s) bounds only connect and first response, and values above 900 are rejected because past the default stream lifetime guard that guard, not this setting, ends the call. The 900 ceiling is fixed: raising QWEN_STREAM_MAX_LIFETIME_MS does not lift it.",
1423
+ showInDialog: false
1424
+ },
1408
1425
  maxToolCalls: {
1409
1426
  type: "number",
1410
1427
  label: "Max Tool Calls",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  resolvePath
5
- } from "./chunk-65GHQ4FX.js";
5
+ } from "./chunk-XVTCSVBK.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -369,7 +369,7 @@ ${taskManagementToolGuidance}- **Parallel Tool Calls:** You can call multiple to
369
369
  - **Background Processes:** Use background execution with \`is_background: true\` for commands that are unlikely to stop on their own, e.g. \`node server.js\`. Do not append a trailing \`&\` when using the shell tool's managed background mode. If unsure, follow the active interaction mode's question guidance.
370
370
  - **Interactive Commands:** Try to avoid shell commands that are likely to require user interaction (e.g. \`git rebase -i\`). Use non-interactive versions of commands (e.g. \`npm init -y\` instead of \`npm init\`) when available, and otherwise remind the user that interactive shell commands are not supported and may cause hangs until canceled by the user.
371
371
  - **Questions:** ${interaction.questions}
372
- - **Subagent Delegation:** Use the '${ToolNames.AGENT}' tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself.
372
+ - **Subagent Delegation:** Use the '${ToolNames.AGENT}' tool with specialized agents when the task at hand matches the agent's description. Subagents are valuable for parallelizing independent queries or for protecting the main context window from excessive results, but they should not be used excessively when not needed. Importantly, avoid duplicating work that subagents are already doing - if you delegate research to a subagent, do not also perform the same searches yourself. A background subagent's result arrives as a task notification in a later turn; while waiting, do not read its transcript, predict its findings, or launch a replacement for the same task.
373
373
  - **Codebase Search:** For simple, directed codebase searches (e.g. for a specific file/class/function) use the '${ToolNames.GREP}' or '${ToolNames.GLOB}' tools directly. For broader codebase exploration and deep research, use the '${ToolNames.AGENT}' tool with subagent_type=Explore. This is slower than using '${ToolNames.GREP}' or '${ToolNames.GLOB}' directly, so use this only when a simple, directed search proves to be insufficient or when your task will clearly require more than 3 queries.
374
374
  - **Respect Tool Decisions:** Tool permissions are enforced by the runtime. If a call is denied or canceled, respect that decision and do _not_ try the same action through another path. Retry only if the user subsequently requests that action.
375
375
 
@@ -12,7 +12,7 @@ import {
12
12
  } from "./chunk-MR3PXB6E.js";
13
13
  import {
14
14
  ideContextStore
15
- } from "./chunk-TSLRORQR.js";
15
+ } from "./chunk-PDUMGZ2P.js";
16
16
  import {
17
17
  require_proper_lockfile
18
18
  } from "./chunk-MLXTMF7H.js";
@@ -2,20 +2,21 @@
2
2
  "use strict";
3
3
  import {
4
4
  functionResponsePartsToString
5
- } from "./chunk-VMFPZXRT.js";
5
+ } from "./chunk-ZNO5BUAD.js";
6
6
  import {
7
7
  observeHeadlessToolResultProjection,
8
8
  observeHeadlessToolResultWire,
9
9
  projectJsonStringToByteBudget
10
- } from "./chunk-PMGWY6ZP.js";
10
+ } from "./chunk-TWWS7XUW.js";
11
11
  import {
12
+ createNotStartedToolErrorResponse,
12
13
  parseAndFormatApiError,
13
14
  toolResultBoundaryArtifact
14
- } from "./chunk-TSLRORQR.js";
15
+ } from "./chunk-PDUMGZ2P.js";
15
16
  import {
16
17
  formatVisionBridgeNoticeDisplay,
17
18
  isVisionBridgeNoticeDisplay
18
- } from "./chunk-WQBR7LN5.js";
19
+ } from "./chunk-6QV7Z74P.js";
19
20
  import {
20
21
  init_esbuild_shims
21
22
  } from "./chunk-5O2XNYP6.js";
@@ -378,6 +379,49 @@ var BaseJsonOutputAdapter = class {
378
379
  startAssistantMessage() {
379
380
  this.startAssistantMessageInternal(this.mainAgentMessageState);
380
381
  }
382
+ /**
383
+ * Starts a replacement provider attempt. Continuation retries keep the
384
+ * already-delivered text; fresh retries and fallbacks discard the pending
385
+ * assistant state. Streaming adapters override this to pair any tool_use
386
+ * frames that are already on the wire before resetting.
387
+ */
388
+ restartAttempt(preserveText, discardedToolCalls) {
389
+ if (preserveText) {
390
+ const discardedIds = new Set(
391
+ discardedToolCalls.map((request) => request.callId)
392
+ );
393
+ if (discardedIds.size > 0) {
394
+ const state = this.mainAgentMessageState;
395
+ const retainedBlocks = [];
396
+ const retainedOpenBlocks = /* @__PURE__ */ new Set();
397
+ for (const [index, block] of state.blocks.entries()) {
398
+ if (block.type === "tool_use" && discardedIds.has(block.id)) {
399
+ continue;
400
+ }
401
+ const retainedIndex = retainedBlocks.length;
402
+ retainedBlocks.push(block);
403
+ if (state.openBlocks.has(index)) {
404
+ retainedOpenBlocks.add(retainedIndex);
405
+ }
406
+ }
407
+ state.blocks = retainedBlocks;
408
+ state.openBlocks = retainedOpenBlocks;
409
+ state.currentBlockType = retainedBlocks.at(-1)?.type ?? null;
410
+ state.messageStarted = retainedBlocks.length > 0;
411
+ }
412
+ return;
413
+ }
414
+ this.startAssistantMessageInternal(this.mainAgentMessageState);
415
+ }
416
+ emitDiscardedAttemptToolResults(discardedToolCalls) {
417
+ const message = "Skipped because the provider attempt was retried before execution.";
418
+ for (const request of discardedToolCalls) {
419
+ this.emitToolResult(
420
+ request,
421
+ createNotStartedToolErrorResponse(request, message)
422
+ );
423
+ }
424
+ }
381
425
  /**
382
426
  * Processes an LLM stream event.
383
427
  * This is a shared implementation used by both streaming and non-streaming adapters.
@@ -1072,6 +1116,16 @@ var StreamJsonOutputAdapter = class extends BaseJsonOutputAdapter {
1072
1116
  this.mainTurnMessageStartEmitted = false;
1073
1117
  super.startAssistantMessage();
1074
1118
  }
1119
+ restartAttempt(preserveText, discardedToolCalls) {
1120
+ if (preserveText && discardedToolCalls.length === 0) {
1121
+ return;
1122
+ }
1123
+ if (this.mainAgentMessageState.messageStarted && !this.mainAgentMessageState.finalized) {
1124
+ this.finalizeAssistantMessage();
1125
+ }
1126
+ this.emitDiscardedAttemptToolResults(discardedToolCalls);
1127
+ super.restartAttempt(false, discardedToolCalls);
1128
+ }
1075
1129
  finalizeAssistantMessage() {
1076
1130
  const message = this.finalizeAssistantMessageInternal(
1077
1131
  this.mainAgentMessageState,
@@ -27,10 +27,10 @@ import {
27
27
  } from "./chunk-3VUENPWF.js";
28
28
  import {
29
29
  loadSettings
30
- } from "./chunk-RUMSY4ES.js";
30
+ } from "./chunk-66JBCTJF.js";
31
31
  import {
32
32
  MCP_BUDGET_WARN_FRACTION
33
- } from "./chunk-TSLRORQR.js";
33
+ } from "./chunk-PDUMGZ2P.js";
34
34
  import {
35
35
  parsePositiveIntegerEnv
36
36
  } from "./chunk-6PVPNMXU.js";
@@ -447,7 +447,7 @@ var serveCommand = {
447
447
  delete process.env[EXTERNAL_TOOL_GUARD_TOKEN_ENV];
448
448
  const openWithAuth = argv["open-with-auth"];
449
449
  const open = argv.open || openWithAuth;
450
- const { runQwenServe } = await import("./run-qwen-serve-CTFL5R6U.js");
450
+ const { runQwenServe } = await import("./run-qwen-serve-A3JBOZCM.js");
451
451
  try {
452
452
  const serveOptions = {
453
453
  port: argv.port,
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  getGlobalQwenDir
5
- } from "./chunk-65GHQ4FX.js";
5
+ } from "./chunk-XVTCSVBK.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -146,12 +146,49 @@ init_esbuild_shims();
146
146
  var RATE_LIMIT_ERROR_CODES = /* @__PURE__ */ new Set([429, 503, 1302, 1305]);
147
147
  function isRateLimitError(error, extraCodes) {
148
148
  const code = getErrorCode(error);
149
- if (code === null) return false;
149
+ if (code === null) return isStatuslessThrottle(error);
150
150
  if (RATE_LIMIT_ERROR_CODES.has(code)) return true;
151
151
  if (extraCodes && extraCodes.includes(code)) return true;
152
152
  return false;
153
153
  }
154
154
  __name(isRateLimitError, "isRateLimitError");
155
+ function isStatuslessThrottle(error) {
156
+ for (const payload of [error, ...getJsonPayloads(error)]) {
157
+ const selected = providerErrorSource(payload);
158
+ if (!selected) continue;
159
+ const { source } = selected;
160
+ const { type, message } = source;
161
+ if (type === "rate_limit_error" || type === "overloaded_error") return true;
162
+ if (type !== "invalid_request_error" || typeof message !== "string")
163
+ continue;
164
+ const detail = decodeProviderMessage(message)?.["message"] ?? message;
165
+ if (typeof detail === "string" && /^too many requests\b/i.test(detail.trim()) && /\b(?:wait|try(?:ing)? again)\b/i.test(detail)) {
166
+ return true;
167
+ }
168
+ }
169
+ return false;
170
+ }
171
+ __name(isStatuslessThrottle, "isStatuslessThrottle");
172
+ function providerErrorSource(payload) {
173
+ if (typeof payload !== "object" || payload === null) return null;
174
+ const direct = payload;
175
+ const nested = direct["error"];
176
+ const source = typeof nested === "object" && nested !== null ? nested : direct;
177
+ return { source, direct };
178
+ }
179
+ __name(providerErrorSource, "providerErrorSource");
180
+ function decodeProviderMessage(message) {
181
+ try {
182
+ const selected = providerErrorSource(JSON.parse(message));
183
+ if (!selected || typeof selected.source["message"] !== "string") {
184
+ return null;
185
+ }
186
+ return { ...selected.direct, ...selected.source };
187
+ } catch {
188
+ return null;
189
+ }
190
+ }
191
+ __name(decodeProviderMessage, "decodeProviderMessage");
155
192
  function getRateLimitErrorDetails(error) {
156
193
  const statusCode = getErrorStatus(error);
157
194
  const payload = getProviderErrorPayload(error);
@@ -159,7 +196,7 @@ function getRateLimitErrorDetails(error) {
159
196
  const transport = message?.includes("event:error") || message?.includes("HTTP_STATUS/") ? "sse" : statusCode !== void 0 ? "http" : "unknown";
160
197
  return {
161
198
  ...statusCode !== void 0 ? { statusCode } : {},
162
- ...payload?.code !== void 0 ? { providerCode: String(payload.code) } : {},
199
+ ...payload?.code !== void 0 || payload?.type !== void 0 ? { providerCode: String(payload.code ?? payload.type) } : {},
163
200
  ...payload?.message !== void 0 ? { providerMessage: payload.message } : {},
164
201
  ...payload?.requestId !== void 0 ? { requestId: payload.requestId } : {},
165
202
  transport
@@ -208,22 +245,24 @@ function getErrorCode(error) {
208
245
  __name(getErrorCode, "getErrorCode");
209
246
  function getProviderErrorPayload(error) {
210
247
  for (const payload of getJsonPayloads(error)) {
211
- if (typeof payload !== "object" || payload === null) continue;
212
- const direct = payload;
213
- const nestedError = payload.error;
214
- const nested = typeof nestedError === "object" && nestedError !== null ? nestedError : void 0;
215
- const source = nested ?? direct;
216
- const code = typeof source.code === "string" || typeof source.code === "number" ? source.code : void 0;
217
- const message = typeof source.message === "string" ? source.message : void 0;
218
- const requestId = typeof source.request_id === "string" ? source.request_id : typeof source.requestId === "string" ? source.requestId : typeof direct.request_id === "string" ? direct.request_id : typeof direct.requestId === "string" ? direct.requestId : void 0;
219
- if (code !== void 0 || message !== void 0 || requestId !== void 0) {
220
- return { code, message, requestId };
248
+ const selected = providerErrorSource(payload);
249
+ if (!selected) continue;
250
+ const { source, direct } = selected;
251
+ const decoded = typeof source["message"] === "string" ? decodeProviderMessage(source["message"]) : null;
252
+ const code = typeof source["code"] === "string" || typeof source["code"] === "number" ? source["code"] : typeof decoded?.["code"] === "string" || typeof decoded?.["code"] === "number" ? decoded["code"] : void 0;
253
+ const type = typeof source["type"] === "string" ? source["type"] : typeof decoded?.["type"] === "string" ? decoded["type"] : void 0;
254
+ const message = typeof decoded?.["message"] === "string" ? decoded["message"] : typeof source["message"] === "string" ? source["message"] : void 0;
255
+ const requestId = typeof source["request_id"] === "string" ? source["request_id"] : typeof source["requestId"] === "string" ? source["requestId"] : typeof direct["request_id"] === "string" ? direct["request_id"] : typeof direct["requestId"] === "string" ? direct["requestId"] : typeof decoded?.["request_id"] === "string" ? decoded["request_id"] : typeof decoded?.["requestId"] === "string" ? decoded["requestId"] : void 0;
256
+ if (code !== void 0 || type !== void 0 || message !== void 0 || requestId !== void 0) {
257
+ return { code, type, message, requestId };
221
258
  }
222
259
  }
223
260
  if (isApiError(error)) {
261
+ const decoded = decodeProviderMessage(error.error.message);
224
262
  return {
225
263
  code: error.error.code,
226
- message: error.error.message
264
+ ...typeof decoded?.["type"] === "string" ? { type: decoded["type"] } : {},
265
+ message: typeof decoded?.["message"] === "string" ? decoded["message"] : error.error.message
227
266
  };
228
267
  }
229
268
  return null;