@qwen-code/qwen-code 0.19.10 → 0.19.11-nightly.20260718.767a32484

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 (307) hide show
  1. package/bundled/qc-helper/docs/configuration/model-providers.md +11 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +15 -14
  3. package/bundled/qc-helper/docs/features/approval-mode.md +2 -2
  4. package/bundled/qc-helper/docs/features/channels/dingtalk.md +30 -0
  5. package/bundled/qc-helper/docs/features/channels/overview.md +66 -17
  6. package/bundled/qc-helper/docs/features/channels/wecom.md +8 -7
  7. package/bundled/qc-helper/docs/features/sandbox.md +2 -0
  8. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +42 -7
  9. package/bundled/qc-helper/docs/qwen-serve.md +77 -46
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  11. package/bundled/review/SKILL.md +163 -403
  12. package/chunks/{MaxSizedBox-67ODZ4SZ.js → MaxSizedBox-ZFHA4QEQ.js} +30 -30
  13. package/chunks/{StandaloneSessionPicker-SIPBQT5Z.js → StandaloneSessionPicker-YRWOQVQA.js} +44 -44
  14. package/chunks/{acpAgent-VPZJXLFX.js → acpAgent-U2P2IESZ.js} +1423 -487
  15. package/chunks/{agent-Z7NWL6XL.js → agent-GQXX6X5Y.js} +26 -26
  16. package/chunks/{agent-headless-73HZ6ROQ.js → agent-headless-3572NBCK.js} +26 -26
  17. package/chunks/{anthropicContentGenerator-56U3YCP2.js → anthropicContentGenerator-Y65DMM64.js} +103 -18
  18. package/chunks/{artifact-tool-BWZZJ42H.js → artifact-tool-WR7I2XON.js} +2 -2
  19. package/chunks/{askUserQuestion-WU3S5A5T.js → askUserQuestion-B4FUTPHD.js} +2 -44
  20. package/chunks/{bridge-XFKW6S7Q.js → bridge-N5RMGD7G.js} +31 -33
  21. package/chunks/{ca-C2JTT2N5.js → ca-M3GQQ26D.js} +7 -2
  22. package/chunks/channel-worker-group-HZVJKLGX.js +21 -0
  23. package/chunks/{channel-worker-manager-5RWKSGEU.js → channel-worker-manager-3WDK4HNS.js} +34 -10
  24. package/chunks/{channel-worker-supervisor-PCDAZN4D.js → channel-worker-supervisor-U2W6Q5F7.js} +6 -4
  25. package/chunks/{chunk-YYPXHMWO.js → chunk-2XRGFF5K.js} +6 -6
  26. package/chunks/{chunk-ZKMGAFYV.js → chunk-2YSZE74N.js} +2 -2
  27. package/chunks/{chunk-L5U3ELZX.js → chunk-335ECZTA.js} +1 -1
  28. package/chunks/{chunk-5EBKKSBX.js → chunk-336KPNNV.js} +2 -2
  29. package/chunks/{chunk-Q5GLXH5Q.js → chunk-3CL5SEDT.js} +6 -6
  30. package/chunks/{chunk-2FO5GFKZ.js → chunk-3DJY4IFO.js} +1 -1
  31. package/chunks/{chunk-CJFNEBYB.js → chunk-3NWYQ7FX.js} +2 -2
  32. package/chunks/{chunk-WIASPMLX.js → chunk-3X2CFOUM.js} +358 -298
  33. package/chunks/{chunk-K7CRWKOE.js → chunk-3YJZ6WNY.js} +5812 -4520
  34. package/chunks/{chunk-Y66VOBRP.js → chunk-4CA4WUMS.js} +2 -2
  35. package/chunks/{chunk-LQIDP6K5.js → chunk-4CHDYDG3.js} +1 -1
  36. package/chunks/{chunk-TISZXPAX.js → chunk-4HCYNDMG.js} +1 -1
  37. package/chunks/chunk-4JBTZBCW.js +140 -0
  38. package/chunks/{chunk-TV6K2FB4.js → chunk-4RPARQ5D.js} +2 -2
  39. package/chunks/{chunk-RCEEXIOO.js → chunk-4XCVGEEX.js} +3 -3
  40. package/chunks/{chunk-N6FXRR6P.js → chunk-57RWF6R7.js} +1 -1
  41. package/chunks/chunk-5O34IMY5.js +59 -0
  42. package/chunks/{chunk-5LROA5W4.js → chunk-5QRK2VZG.js} +8 -8
  43. package/chunks/{chunk-7L4XBYVW.js → chunk-632KROVU.js} +10 -3
  44. package/chunks/{chunk-65N2J6V2.js → chunk-64XGKNSI.js} +3 -3
  45. package/chunks/{chunk-P6LART6G.js → chunk-66IT3EY2.js} +1059 -129
  46. package/chunks/{chunk-FXMC7SL2.js → chunk-6ITLKEOZ.js} +3 -3
  47. package/chunks/{chunk-F7NXQH4Y.js → chunk-6YIRYY3P.js} +1 -1
  48. package/chunks/{chunk-GGJII3FM.js → chunk-6Z5NRZVU.js} +92 -3
  49. package/chunks/{chunk-DPFBNG72.js → chunk-AEKYFMYE.js} +1 -1
  50. package/chunks/{chunk-2UUAIFQO.js → chunk-ANRANWVE.js} +9 -1
  51. package/chunks/{chunk-SXU3KKNI.js → chunk-ATJ7H5AS.js} +419 -76
  52. package/chunks/{chunk-6GETGQWP.js → chunk-C5NSOSF4.js} +64 -18
  53. package/chunks/{chunk-TQBODCFD.js → chunk-CMVFTMRD.js} +251 -3
  54. package/chunks/{chunk-DK33QJ3V.js → chunk-CZSAIBUB.js} +733 -14
  55. package/chunks/{chunk-3MX7D6QN.js → chunk-DASWPKXR.js} +32 -4
  56. package/chunks/{chunk-JSJFKYWT.js → chunk-DPSHAB47.js} +2 -2
  57. package/chunks/{chunk-7MJAZMXK.js → chunk-ECZFTRTP.js} +29 -78
  58. package/chunks/{chunk-H3FQOPPS.js → chunk-EKG3BHQY.js} +4 -4
  59. package/chunks/{chunk-FSA7ERJ2.js → chunk-F2RR4HO2.js} +1 -1
  60. package/chunks/{chunk-EQY6POVO.js → chunk-F5XYN5VF.js} +2 -2
  61. package/chunks/chunk-FEOZBUMT.js +77 -0
  62. package/chunks/{chunk-L62SEJWY.js → chunk-FHUXCRAF.js} +4 -4
  63. package/chunks/{chunk-OFEVHGVU.js → chunk-FSJGBUQI.js} +818 -31
  64. package/chunks/{chunk-FBU7WRZI.js → chunk-FUTHTZVV.js} +1 -1
  65. package/chunks/{chunk-ZRKBI3DP.js → chunk-FZRES4GK.js} +1 -1
  66. package/chunks/{chunk-OKAIGAYW.js → chunk-G274ETR6.js} +3 -3
  67. package/chunks/{chunk-6GKMJPOC.js → chunk-GA3WUOO7.js} +5 -5
  68. package/chunks/{chunk-X362TMXZ.js → chunk-GAQOQMHY.js} +8 -6
  69. package/chunks/{chunk-WLXYAKV7.js → chunk-GG6RSNWS.js} +9 -4
  70. package/chunks/{chunk-CEW4HDPK.js → chunk-GUNTLALV.js} +2484 -362
  71. package/chunks/{chunk-LXLTBIDP.js → chunk-HCCR43AY.js} +1 -1
  72. package/chunks/{chunk-RDRVMDWV.js → chunk-HIMIG6PI.js} +11 -11
  73. package/chunks/{chunk-MO7O5722.js → chunk-HQXQCIT2.js} +45 -5
  74. package/chunks/{chunk-LTNI523B.js → chunk-HT7L5FCZ.js} +28 -5
  75. package/chunks/{chunk-7NAWTFVY.js → chunk-IENO2YAT.js} +3 -3
  76. package/chunks/{chunk-3XJFUTNM.js → chunk-IK5TYYVR.js} +59 -12
  77. package/chunks/{chunk-AAR5SGMD.js → chunk-IVKLDHU6.js} +7 -5
  78. package/chunks/{chunk-6W6DI34P.js → chunk-IX7O5WI3.js} +180 -8
  79. package/chunks/{chunk-SPJQO2CE.js → chunk-J2MKYJKZ.js} +2 -2
  80. package/chunks/{chunk-SPUYQB4T.js → chunk-JBAQ5BYX.js} +1 -1
  81. package/chunks/{chunk-TYLOFD2U.js → chunk-JCJPZMJV.js} +1 -1
  82. package/chunks/chunk-JDIUK2Y3.js +226 -0
  83. package/chunks/{chunk-L37RC7MQ.js → chunk-JUVTV4NF.js} +1 -1
  84. package/chunks/{chunk-WDWJ4OQJ.js → chunk-K2GBHL73.js} +4 -4
  85. package/chunks/{chunk-HHEFI4RP.js → chunk-KEVDWH3U.js} +857 -137
  86. package/chunks/{chunk-YU56QGXX.js → chunk-KTKETHMY.js} +1 -1
  87. package/chunks/{chunk-WDW64OW3.js → chunk-LGY7PG7Q.js} +5 -5
  88. package/chunks/{chunk-E67NFMF4.js → chunk-LKR7QQ63.js} +37 -3
  89. package/chunks/{chunk-4YWLED2A.js → chunk-LSFVUGXT.js} +9 -6
  90. package/chunks/{chunk-W34A5MJH.js → chunk-LTD3CHGS.js} +1 -1
  91. package/chunks/chunk-LXXMOYPL.js +22 -0
  92. package/chunks/{chunk-BBNVFRGD.js → chunk-MI2V6IWU.js} +1 -1
  93. package/chunks/{chunk-UFOKA4PR.js → chunk-O2K6BLPZ.js} +114 -4
  94. package/chunks/{chunk-B5I2IIWY.js → chunk-OBYAX5QZ.js} +6 -6
  95. package/chunks/{chunk-V7EQTZYR.js → chunk-OCQ2QTFJ.js} +203 -47
  96. package/chunks/{chunk-VBRRNQB7.js → chunk-OPVIKLKK.js} +112 -25
  97. package/chunks/{chunk-2Z5UX4KI.js → chunk-OSSDHJDU.js} +1 -1
  98. package/chunks/{chunk-TTUO4DNG.js → chunk-OXOEOOQU.js} +126 -734
  99. package/chunks/{chunk-4FMG7EDJ.js → chunk-PWYLF7SS.js} +79 -16
  100. package/chunks/chunk-QFEY6OXH.js +45 -0
  101. package/chunks/{chunk-YX4LLZ3D.js → chunk-QPRDXJIC.js} +115 -40
  102. package/chunks/{chunk-7R4DPSRA.js → chunk-R3VWUU2E.js} +1 -1
  103. package/chunks/{chunk-XLIRF7IK.js → chunk-S4N3G4BB.js} +1 -1
  104. package/chunks/{chunk-ARKANCNX.js → chunk-SGPFJMRP.js} +1 -1
  105. package/chunks/{chunk-WTSXKLG5.js → chunk-SUARMD4Q.js} +1 -1
  106. package/chunks/{chunk-PZL23GTM.js → chunk-T3W4SDRB.js} +2 -0
  107. package/chunks/chunk-T4TZQJ7W.js +48 -0
  108. package/chunks/{chunk-K4PZ5F5T.js → chunk-TVYM3Q3J.js} +101 -8
  109. package/chunks/{chunk-4LD5APFL.js → chunk-TYQMGACW.js} +1 -0
  110. package/chunks/{chunk-6OATMEYN.js → chunk-U2LNTX56.js} +12 -4
  111. package/chunks/{chunk-422XAKCK.js → chunk-U2XBPBO3.js} +4 -3
  112. package/chunks/{chunk-LNUXFLLJ.js → chunk-U4FJ26D2.js} +54 -6
  113. package/chunks/{chunk-ZQTZXVHP.js → chunk-U6OPT4H2.js} +4 -18
  114. package/chunks/{chunk-7NFB7LBQ.js → chunk-UE5TZ55T.js} +8 -0
  115. package/chunks/{chunk-CUUXANEQ.js → chunk-URP6O2PP.js} +6 -1
  116. package/chunks/{chunk-GDQQRV43.js → chunk-V2FRLYHN.js} +3 -3
  117. package/chunks/{chunk-WIEO4CWB.js → chunk-VAJS2E2D.js} +1 -1
  118. package/chunks/{chunk-TXY2C3D2.js → chunk-VNN3JNYT.js} +1 -1
  119. package/chunks/{chunk-YHN5SUIJ.js → chunk-W7H223ZZ.js} +1 -1
  120. package/chunks/{chunk-WX6SD4IQ.js → chunk-WEPXQKGP.js} +1 -1
  121. package/chunks/{chunk-KSO42X3Z.js → chunk-X6YQWCIJ.js} +21 -2
  122. package/chunks/{chunk-URU5UEK6.js → chunk-XA7OKDWM.js} +135 -68
  123. package/chunks/{chunk-Q6TUALBE.js → chunk-XAAEDML2.js} +1 -1
  124. package/chunks/{chunk-KKRTYONM.js → chunk-XSPFQQRE.js} +3 -3
  125. package/chunks/{chunk-OATTJGPJ.js → chunk-Y72B36CP.js} +7 -7
  126. package/chunks/{chunk-ZPAHLFZU.js → chunk-Z2LBNX3R.js} +2 -2
  127. package/chunks/{chunk-XXJKGHZV.js → chunk-ZTSDZQZO.js} +131 -4
  128. package/chunks/{computer-use-IYTX45WA.js → computer-use-UIFBH25Y.js} +26 -26
  129. package/chunks/{config-utils-CFT33LTP.js → config-utils-2LHI7JXU.js} +3 -3
  130. package/chunks/{contextCommand-272V77WU.js → contextCommand-VGZHKEH2.js} +28 -28
  131. package/chunks/{create-sub-session-WNX2OQVX.js → create-sub-session-DIJOV6HV.js} +2 -2
  132. package/chunks/{create-sub-session-CBJMQLYP.js → create-sub-session-OFVI4H6I.js} +26 -26
  133. package/chunks/{cron-create-36TIFKRT.js → cron-create-34GVLSW5.js} +4 -4
  134. package/chunks/{cron-delete-OQD3WULU.js → cron-delete-NMVKUL45.js} +4 -4
  135. package/chunks/{cron-list-4533T2FH.js → cron-list-277ZOR7L.js} +4 -4
  136. package/chunks/{daemon-RNGFPMAB.js → daemon-72MEV3TY.js} +361 -84
  137. package/chunks/daemon-status-provider-ZJJ6AOG2.js +75 -0
  138. package/chunks/{de-2VCDRDGU.js → de-56TMDIKS.js} +7 -2
  139. package/chunks/{dist-3V3ZV6ML.js → dist-4W3UGU2A.js} +1 -1
  140. package/chunks/{dist-HNN7DR2L.js → dist-G6QCGO2K.js} +58 -30
  141. package/chunks/{dist-ERCPDVA6.js → dist-ILVRL322.js} +4 -51
  142. package/chunks/{dist-PHEPJLXD.js → dist-KEZ5JWH4.js} +2 -2
  143. package/chunks/{dist-JZE7F6YR.js → dist-LQHDHBPP.js} +1 -1
  144. package/chunks/{dist-MOEC47TR.js → dist-SVHAGOLN.js} +1 -1
  145. package/chunks/{earlyInputCapture-EN4BRREQ.js → earlyInputCapture-NPF4PVUE.js} +27 -27
  146. package/chunks/{edit-OMAF2QDR.js → edit-F7CT6NZH.js} +27 -27
  147. package/chunks/{en-NJCA3TAA.js → en-AXS2N62H.js} +12 -3
  148. package/chunks/{enter-worktree-BBZX52HG.js → enter-worktree-Z4ET3MZL.js} +26 -26
  149. package/chunks/{enterPlanMode-5NNFMBUY.js → enterPlanMode-VYR7T5NX.js} +27 -29
  150. package/chunks/{environment-7TEWMJYN.js → environment-MBTXL57Q.js} +28 -28
  151. package/chunks/{errors-I4VKVX3F.js → errors-HN36J4FR.js} +28 -28
  152. package/chunks/{exit-worktree-FUWRJI33.js → exit-worktree-RU7JYFMF.js} +26 -26
  153. package/chunks/exitPlanMode-LUBAWMZQ.js +390 -0
  154. package/chunks/{fast-path-ZA57TOH4.js → fast-path-RFT3CDNZ.js} +2 -2
  155. package/chunks/{fr-5F3E7WKD.js → fr-ZJPE5OVN.js} +7 -2
  156. package/chunks/{gemini-UOAKVXBG.js → gemini-37NTNKZF.js} +215 -231
  157. package/chunks/{geminiContentGenerator-G6UCE6MW.js → geminiContentGenerator-76HNOYNQ.js} +5 -5
  158. package/chunks/{glob-4GJQ2UFF.js → glob-DWD7JCZE.js} +32 -27
  159. package/chunks/{grep-5QSYXF2E.js → grep-NJRXFV5C.js} +32 -27
  160. package/chunks/{handleAutoUpdate-ULHNWL6R.js → handleAutoUpdate-7GBDXW6U.js} +30 -30
  161. package/chunks/{i18n-CYDUTF6F.js → i18n-MYD5VGED.js} +27 -27
  162. package/chunks/{initializer-NRFKUGIO.js → initializer-4DHPNAZG.js} +32 -32
  163. package/chunks/{installationInfo-WELKRHHE.js → installationInfo-RWOW6BZO.js} +27 -27
  164. package/chunks/{ja-66J6B53L.js → ja-57GG4QSL.js} +7 -2
  165. package/chunks/{keychain-token-storage-AU22CQI6.js → keychain-token-storage-K23CFKGN.js} +2 -2
  166. package/chunks/{list-JVDXEG2E.js → list-MMCNNHE7.js} +34 -34
  167. package/chunks/{loadedSettingsAdapter-WAM4VUTG.js → loadedSettingsAdapter-UK4JWPYU.js} +31 -31
  168. package/chunks/{loop-wakeup-MVUKDVCP.js → loop-wakeup-KCLY4XQM.js} +5 -5
  169. package/chunks/{ls-RXNIAQDE.js → ls-UNI4LAJ3.js} +4 -4
  170. package/chunks/{lsp-HB5LM5IL.js → lsp-HPACPJAN.js} +2 -2
  171. package/chunks/{mcp-YHOZN3ZM.js → mcp-AFCVA4UV.js} +31 -31
  172. package/chunks/{monitor-R7XZPJHQ.js → monitor-RK637BNO.js} +28 -27
  173. package/chunks/nonInteractiveCli-OUGWLHNV.js +129 -0
  174. package/chunks/{notebook-edit-6RNKE2L2.js → notebook-edit-LY2X3CMF.js} +27 -27
  175. package/chunks/{openaiContentGenerator-XNS5S64I.js → openaiContentGenerator-MDYDW7IA.js} +14 -14
  176. package/chunks/{pidfile-XE4RRR2P.js → pidfile-2NUYRLKB.js} +27 -27
  177. package/chunks/processUtils-7QH3VBVN.js +29 -0
  178. package/chunks/{pt-TFZO5Y6T.js → pt-MCGZ3RZ4.js} +7 -2
  179. package/chunks/{qwenContentGenerator-APDPJ3VN.js → qwenContentGenerator-3HT4TVDL.js} +28 -28
  180. package/chunks/{qwenOAuth2-LEYOU7RU.js → qwenOAuth2-3A4TJVZT.js} +5 -5
  181. package/chunks/{read-file-XSUWXSR7.js → read-file-NE4FREFR.js} +10 -10
  182. package/chunks/{read-mcp-resource-6LRTZKXI.js → read-mcp-resource-C6NT52T6.js} +2 -2
  183. package/chunks/{record-artifact-PMDTY4OS.js → record-artifact-ENCU7QCL.js} +2 -2
  184. package/chunks/{ripGrep-APB3CDMU.js → ripGrep-DBLXWQCJ.js} +26 -26
  185. package/chunks/{ru-4L4LFHIT.js → ru-GA3NZW5Q.js} +7 -2
  186. package/chunks/{run-qwen-serve-NWTGPERT.js → run-qwen-serve-3NOCI6IL.js} +63 -39
  187. package/chunks/{runtime-EIO3NQKR.js → runtime-ZI7DSZSS.js} +35 -35
  188. package/chunks/{scheduler-JJDZBDRN.js → scheduler-SOVEP5K7.js} +26 -26
  189. package/chunks/{send-message-SR4WSXP2.js → send-message-5IFPZTPE.js} +3 -3
  190. package/chunks/{serve-WTIPB3EI.js → serve-DB6OCXIA.js} +31 -31
  191. package/chunks/{server-NJPHQHLH.js → server-LDY4YVU4.js} +2257 -648
  192. package/chunks/{session-O4AO7FTS.js → session-D6OG5SKX.js} +99 -72
  193. package/chunks/{settings-HQNDK7TG.js → settings-L52ZV5LO.js} +30 -30
  194. package/chunks/{shell-UIXM6PWG.js → shell-IU27OY3Q.js} +28 -26
  195. package/chunks/{skill-3XMB4ULV.js → skill-BSOJT7LE.js} +12 -12
  196. package/chunks/{spawnChannel-3R632QRM.js → spawnChannel-HQAM25DD.js} +28 -29
  197. package/chunks/{src-USZKPUOC.js → src-7ZBIMTJZ.js} +130 -51
  198. package/chunks/{standalone-update-L5XW3D7K.js → standalone-update-77457VVK.js} +28 -28
  199. package/chunks/{startInteractiveUI-CPZOL2WB.js → startInteractiveUI-S7WC6EZG.js} +2310 -1835
  200. package/chunks/{syntheticOutput-YKFNUQZD.js → syntheticOutput-ULOVVLY4.js} +3 -3
  201. package/chunks/{task-create-NUFOHU53.js → task-create-V2DCDSET.js} +7 -7
  202. package/chunks/{task-list-Z2IKQY3S.js → task-list-DPL5ZN55.js} +5 -5
  203. package/chunks/{task-stop-KQFIVQTJ.js → task-stop-CPEQWOT6.js} +2 -2
  204. package/chunks/{task-update-HKADXSTD.js → task-update-ZR45M5Q7.js} +7 -7
  205. package/chunks/{team-create-XXPRF3IQ.js → team-create-CO7HSUON.js} +26 -26
  206. package/chunks/{team-delete-SDNTGZLG.js → team-delete-HIWXCWJU.js} +5 -5
  207. package/chunks/{team-plan-approval-EOTTKHDW.js → team-plan-approval-QDZF5YZY.js} +26 -26
  208. package/chunks/{theme-manager-P6UITO2L.js → theme-manager-UTUT3I4P.js} +27 -27
  209. package/chunks/todoWrite-HK6B3RHJ.js +358 -0
  210. package/chunks/{tool-search-DDNGK2LR.js → tool-search-2UUORA35.js} +11 -11
  211. package/chunks/{total-session-admission-PL5N7DNY.js → total-session-admission-NTWG6G3F.js} +32 -34
  212. package/chunks/{trustedFolders-C5LMF3UR.js → trustedFolders-YF37ZCN5.js} +27 -27
  213. package/chunks/update-relaunch-QFNHPMZZ.js +87 -0
  214. package/chunks/{updateCheck-QTVVISH7.js → updateCheck-B6O42VMD.js} +30 -28
  215. package/chunks/{validateNonInterActiveAuth-RY4RKBQG.js → validateNonInterActiveAuth-SCIWJ4CX.js} +65 -65
  216. package/chunks/{version-U45RYOSD.js → version-7DA6LAI3.js} +1 -1
  217. package/chunks/{web-fetch-ZSPR3PRR.js → web-fetch-B62SJXM2.js} +5 -6
  218. package/chunks/{workflow-TCIAQYOA.js → workflow-Q5WG4THP.js} +27 -27
  219. package/chunks/{workspace-providers-status-I3G2HYLY.js → workspace-providers-status-WWLAGWQW.js} +34 -34
  220. package/chunks/{workspace-registration-store-IH5GLZ6Y.js → workspace-registration-store-BVYQVY2H.js} +1 -1
  221. package/chunks/{workspace-registry-QEKBELIX.js → workspace-registry-OD7ACADD.js} +32 -34
  222. package/chunks/{workspace-service-ORKHGLP3.js → workspace-service-4LYJWS63.js} +37 -38
  223. package/chunks/{workspace-skills-status-D7QCNDYY.js → workspace-skills-status-P2AQLZZS.js} +32 -32
  224. package/chunks/{write-file-JGRQR5VM.js → write-file-TEPGXNM3.js} +60 -27
  225. package/chunks/{zh-FSAH32JB.js → zh-E34DZ2S3.js} +12 -3
  226. package/chunks/{zh-TW-D2YIE2LO.js → zh-TW-PEI2ZWUR.js} +12 -3
  227. package/cli-entry.js +92 -8
  228. package/cli.js +11 -11
  229. package/locales/ca.js +12 -2
  230. package/locales/de.js +12 -2
  231. package/locales/en.js +20 -5
  232. package/locales/fr.js +12 -2
  233. package/locales/ja.js +12 -2
  234. package/locales/pt.js +12 -2
  235. package/locales/ru.js +12 -2
  236. package/locales/zh-TW.js +19 -3
  237. package/locales/zh.js +19 -3
  238. package/package.json +3 -3
  239. package/web-shell/assets/{arc-CUeDlxvE.js → arc-Dh-N5oEG.js} +1 -1
  240. package/web-shell/assets/{architectureDiagram-3BPJPVTR-PiUszkQA.js → architectureDiagram-3BPJPVTR-DBOQgtfF.js} +1 -1
  241. package/web-shell/assets/{blockDiagram-GPEHLZMM-s2wYSO7e.js → blockDiagram-GPEHLZMM-Dyxbuyju.js} +1 -1
  242. package/web-shell/assets/{c4Diagram-AAUBKEIU-DyLxZoz9.js → c4Diagram-AAUBKEIU-DCJR5HPT.js} +1 -1
  243. package/web-shell/assets/channel-DY0fkcKT.js +1 -0
  244. package/web-shell/assets/{chunk-2J33WTMH-Dsdai7Tk.js → chunk-2J33WTMH-BkMUcy3O.js} +1 -1
  245. package/web-shell/assets/{chunk-4BX2VUAB-DEosOjV7.js → chunk-4BX2VUAB-BSm4pLQk.js} +1 -1
  246. package/web-shell/assets/{chunk-55IACEB6-sNsRLTXf.js → chunk-55IACEB6-CuRr-XgW.js} +1 -1
  247. package/web-shell/assets/{chunk-727SXJPM-DkRNZzmh.js → chunk-727SXJPM-CLv7-w3t.js} +1 -1
  248. package/web-shell/assets/{chunk-AQP2D5EJ-BrsRNpzd.js → chunk-AQP2D5EJ-Cz_n3-JW.js} +1 -1
  249. package/web-shell/assets/{chunk-FMBD7UC4-CI039lpl.js → chunk-FMBD7UC4-CFT_62Hq.js} +1 -1
  250. package/web-shell/assets/{chunk-ND2GUHAM-M-pkeIfu.js → chunk-ND2GUHAM-DWz6DOZ6.js} +1 -1
  251. package/web-shell/assets/{chunk-QZHKN3VN-C4ckGNbH.js → chunk-QZHKN3VN-C-mRhUzw.js} +1 -1
  252. package/web-shell/assets/classDiagram-4FO5ZUOK-DBvJ6PZo.js +1 -0
  253. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-DBvJ6PZo.js +1 -0
  254. package/web-shell/assets/{cose-bilkent-S5V4N54A-BciKUAFq.js → cose-bilkent-S5V4N54A-BqCZS3i1.js} +1 -1
  255. package/web-shell/assets/{dagre-BM42HDAG-C1nTSgU6.js → dagre-BM42HDAG-BGasdP8i.js} +1 -1
  256. package/web-shell/assets/{diagram-2AECGRRQ-BDPNWr1m.js → diagram-2AECGRRQ-BSyLDkMy.js} +1 -1
  257. package/web-shell/assets/{diagram-5GNKFQAL-CNFhTszL.js → diagram-5GNKFQAL-CM-ZJxWC.js} +1 -1
  258. package/web-shell/assets/{diagram-KO2AKTUF-CjPa4p5a.js → diagram-KO2AKTUF-wJdzt_C5.js} +1 -1
  259. package/web-shell/assets/{diagram-LMA3HP47-ZzPykSyG.js → diagram-LMA3HP47-DiH2fhpL.js} +1 -1
  260. package/web-shell/assets/{diagram-OG6HWLK6-0UVtZ9A4.js → diagram-OG6HWLK6-BZ9z1ZBl.js} +1 -1
  261. package/web-shell/assets/{erDiagram-TEJ5UH35-CajDZCat.js → erDiagram-TEJ5UH35-BsyWDziR.js} +1 -1
  262. package/web-shell/assets/{flowDiagram-I6XJVG4X-BRuFBIvL.js → flowDiagram-I6XJVG4X-CzdkxIrq.js} +1 -1
  263. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BevGmJqG.js → ganttDiagram-6RSMTGT7-javIv2r2.js} +1 -1
  264. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-DvPMpBMb.js → gitGraphDiagram-PVQCEYII-CjHstylC.js} +1 -1
  265. package/web-shell/assets/{index-DzHwQkQq.js → index-BnJGxpah.js} +1 -1
  266. package/web-shell/assets/index-DhXB9nTa.js +1161 -0
  267. package/web-shell/assets/index-vYHgZ7bL.css +5 -0
  268. package/web-shell/assets/{infoDiagram-5YYISTIA-Oixn7tA9.js → infoDiagram-5YYISTIA-yXuQsomo.js} +1 -1
  269. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BgKpeg-j.js → ishikawaDiagram-YF4QCWOH-a85JhE6F.js} +1 -1
  270. package/web-shell/assets/{journeyDiagram-JHISSGLW-74mwxIaA.js → journeyDiagram-JHISSGLW-Dak_4BVj.js} +1 -1
  271. package/web-shell/assets/{kanban-definition-UN3LZRKU-D4D6cEqA.js → kanban-definition-UN3LZRKU-COA-LuCV.js} +1 -1
  272. package/web-shell/assets/{linear-atZRE_L2.js → linear-DNAAAQWq.js} +1 -1
  273. package/web-shell/assets/{mermaid.core-KKudX-JC.js → mermaid.core-7Ff3aIUD.js} +5 -5
  274. package/web-shell/assets/{mindmap-definition-RKZ34NQL-CMCej9yG.js → mindmap-definition-RKZ34NQL-_rCOIODU.js} +1 -1
  275. package/web-shell/assets/{pieDiagram-4H26LBE5-nhx40X7q.js → pieDiagram-4H26LBE5-C9QCQ8EW.js} +1 -1
  276. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CUmVcN3M.js → quadrantDiagram-W4KKPZXB-CsaE4FA8.js} +1 -1
  277. package/web-shell/assets/{requirementDiagram-4Y6WPE33-C_vyEwyy.js → requirementDiagram-4Y6WPE33-tV78naTg.js} +1 -1
  278. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DU6G4VWR.js → sankeyDiagram-5OEKKPKP-Dk3Rw7BZ.js} +1 -1
  279. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DdeRR_KJ.js → sequenceDiagram-3UESZ5HK-BGsAWcMX.js} +1 -1
  280. package/web-shell/assets/{stateDiagram-AJRCARHV-C6iCI8ps.js → stateDiagram-AJRCARHV-zSxdtdoB.js} +1 -1
  281. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-vLEEtDpO.js +1 -0
  282. package/web-shell/assets/{timeline-definition-PNZ67QCA-B_Ea8Cb7.js → timeline-definition-PNZ67QCA-j0BQh9Go.js} +1 -1
  283. package/web-shell/assets/{vennDiagram-CIIHVFJN-BPUVZEJA.js → vennDiagram-CIIHVFJN-CRaUFFIu.js} +1 -1
  284. package/web-shell/assets/{wardley-L42UT6IY-BWEj0lKY.js → wardley-L42UT6IY-D7Py_ofm.js} +1 -1
  285. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BvDsdIQw.js → wardleyDiagram-YWT4CUSO-BrDIAZcp.js} +1 -1
  286. package/web-shell/assets/{xychartDiagram-2RQKCTM6-crz0QhF_.js → xychartDiagram-2RQKCTM6-Cecdw-w2.js} +1 -1
  287. package/web-shell/index.html +2 -2
  288. package/chunks/channel-worker-group-K7QKH6IG.js +0 -13
  289. package/chunks/chunk-2HRYPZT5.js +0 -25
  290. package/chunks/chunk-B7NUUEXC.js +0 -311
  291. package/chunks/chunk-CARU2RR2.js +0 -24
  292. package/chunks/chunk-GYTKQYDB.js +0 -23
  293. package/chunks/chunk-LQU7EVFA.js +0 -30
  294. package/chunks/chunk-OCPBI7J5.js +0 -18
  295. package/chunks/chunk-OJAMDVF5.js +0 -66
  296. package/chunks/chunk-QAW7PIHT.js +0 -168
  297. package/chunks/chunk-TEGEBB2I.js +0 -122
  298. package/chunks/daemon-status-provider-L4STG5VO.js +0 -76
  299. package/chunks/exitPlanMode-IHCJ5EEI.js +0 -909
  300. package/chunks/nonInteractiveCli-NSOB6D74.js +0 -129
  301. package/chunks/todoWrite-YNXB27GB.js +0 -531
  302. package/web-shell/assets/channel-DkuJJ0qd.js +0 -1
  303. package/web-shell/assets/classDiagram-4FO5ZUOK-CwqHc0TB.js +0 -1
  304. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwqHc0TB.js +0 -1
  305. package/web-shell/assets/index-Cnvv4VcI.css +0 -5
  306. package/web-shell/assets/index-D1Uyklxa.js +0 -1088
  307. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C0_6nR6C.js +0 -1
@@ -474,10 +474,106 @@ function composeAbortSignals(signals) {
474
474
  }
475
475
  __name(composeAbortSignals, "composeAbortSignals");
476
476
 
477
+ // packages/sdk-typescript/src/daemon/types.ts
478
+ init_esbuild_shims();
479
+ var DaemonCapabilityMissingError = class extends Error {
480
+ static {
481
+ __name(this, "DaemonCapabilityMissingError");
482
+ }
483
+ capability;
484
+ constructor(capability, hint) {
485
+ super(
486
+ `DaemonCapabilities.${capability} is missing \u2014 ${hint}. The daemon you are connected to likely predates the feature that added this field; upgrade the daemon or fall back to a different code path that doesn't require it.`
487
+ );
488
+ this.name = "DaemonCapabilityMissingError";
489
+ this.capability = capability;
490
+ }
491
+ };
492
+ function requireWorkspaceCwd(caps) {
493
+ if (typeof caps.workspaceCwd !== "string" || caps.workspaceCwd.length === 0) {
494
+ throw new DaemonCapabilityMissingError(
495
+ "workspaceCwd",
496
+ caps.workspaceCwd === "" ? "daemon returned an empty workspaceCwd (newer daemon with a bug)" : "daemon predates workspaceCwd support; upgrade it"
497
+ );
498
+ }
499
+ return caps.workspaceCwd;
500
+ }
501
+ __name(requireWorkspaceCwd, "requireWorkspaceCwd");
502
+ var DAEMON_ERROR_KINDS = [
503
+ "missing_binary",
504
+ "blocked_egress",
505
+ "auth_env_error",
506
+ "init_timeout",
507
+ "protocol_error",
508
+ "missing_file",
509
+ "parse_error",
510
+ // Budget refusal under `--mcp-budget-mode=enforce`.
511
+ "budget_exhausted",
512
+ // Runtime MCP mutation routes (POST/DELETE /workspace/mcp/servers).
513
+ "mcp_budget_would_exceed",
514
+ "mcp_server_spawn_failed",
515
+ "invalid_config",
516
+ // A prompt exceeded the daemon-configured wallclock cap (or the
517
+ // request's own `deadlineMs`, capped at the server flag).
518
+ "prompt_deadline_exceeded",
519
+ // An SSE writer's last successful flush was older than the daemon's
520
+ // writer-idle deadline.
521
+ "writer_idle_timeout",
522
+ // The model response stream ended before a complete turn could be read.
523
+ "model_stream_interrupted"
524
+ ];
525
+ var DAEMON_CONTENT_HASH_RE = /^sha256:[0-9a-f]{64}$/;
526
+ function isDaemonContentHash(value) {
527
+ return typeof value === "string" && DAEMON_CONTENT_HASH_RE.test(value);
528
+ }
529
+ __name(isDaemonContentHash, "isDaemonContentHash");
530
+ var DAEMON_APPROVAL_MODES = [
531
+ "plan",
532
+ "default",
533
+ "auto-edit",
534
+ "auto",
535
+ "yolo"
536
+ ];
537
+
477
538
  // packages/sdk-typescript/src/daemon/DaemonClient.ts
478
539
  var WORKSPACE_MEMORY_REMEMBER_PATH = "/workspace/memory/remember";
479
540
  var WORKSPACE_MEMORY_FORGET_PATH = "/workspace/memory/forget";
480
541
  var WORKSPACE_MEMORY_DREAM_PATH = "/workspace/memory/dream";
542
+ function parseSessionGenerationEvent(value) {
543
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
544
+ return void 0;
545
+ }
546
+ const event = value;
547
+ if (event["v"] !== 1 || typeof event["type"] !== "string") return void 0;
548
+ const requestId = event["requestId"];
549
+ const modelSource = event["modelSource"];
550
+ const validRequestId = typeof requestId === "string" && requestId.length > 0;
551
+ const validModelSource = modelSource === "fast" || modelSource === "main";
552
+ const validTokenCount = /* @__PURE__ */ __name((count) => count === void 0 || typeof count === "number" && Number.isSafeInteger(count) && count >= 0, "validTokenCount");
553
+ if (event["type"] === "started") {
554
+ if (!validRequestId || typeof event["model"] !== "string" || !validModelSource) {
555
+ return void 0;
556
+ }
557
+ } else if (event["type"] === "thinking") {
558
+ if (!validRequestId) return void 0;
559
+ } else if (event["type"] === "delta") {
560
+ if (!validRequestId || !Number.isSafeInteger(event["seq"]) || event["seq"] < 0 || typeof event["text"] !== "string" || event["text"].length === 0) {
561
+ return void 0;
562
+ }
563
+ } else if (event["type"] === "done") {
564
+ if (!validRequestId || typeof event["model"] !== "string" || !validModelSource || !validTokenCount(event["inputTokens"]) || !validTokenCount(event["outputTokens"])) {
565
+ return void 0;
566
+ }
567
+ } else if (event["type"] === "error") {
568
+ if (typeof event["code"] !== "string" || typeof event["message"] !== "string") {
569
+ return void 0;
570
+ }
571
+ } else {
572
+ return void 0;
573
+ }
574
+ return event;
575
+ }
576
+ __name(parseSessionGenerationEvent, "parseSessionGenerationEvent");
481
577
  var DEFAULT_SESSION_LIST_PAGE_SIZE = 20;
482
578
  var DEFAULT_FETCH_TIMEOUT_MS = 3e4;
483
579
  var VOICE_TRANSCRIPTION_DEFAULT_TIMEOUT_MS = 65e3;
@@ -487,6 +583,17 @@ var DEFAULT_MAX_PENDING_PROMPTS_PER_SESSION = 5;
487
583
  var MCP_RESTART_DEFAULT_TIMEOUT_MS = MCP_RESTART_SERVER_DEADLINE_MS + MCP_RESTART_CLIENT_HEADROOM_MS;
488
584
  var CLIENT_ID_HEADER = "X-Qwen-Client-Id";
489
585
  var urlEncode = encodeURIComponent;
586
+ function transcriptPageSuffix(opts) {
587
+ const query = new URLSearchParams();
588
+ if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
589
+ if (opts.beforeRecordId !== void 0) {
590
+ query.set("beforeRecordId", opts.beforeRecordId);
591
+ }
592
+ if (opts.limit !== void 0) query.set("limit", String(opts.limit));
593
+ const value = query.toString();
594
+ return value ? `?${value}` : "";
595
+ }
596
+ __name(transcriptPageSuffix, "transcriptPageSuffix");
490
597
  function normalizePermissionRuleInput(rule) {
491
598
  const trimmed = rule.trim();
492
599
  if (!trimmed) {
@@ -783,6 +890,15 @@ var DaemonClient = class {
783
890
  }
784
891
  );
785
892
  }
893
+ async requireCapability(capability) {
894
+ const caps = await this.capabilities();
895
+ if (!caps.features.includes(capability)) {
896
+ throw new DaemonCapabilityMissingError(
897
+ capability,
898
+ `daemon does not advertise the ${capability} feature`
899
+ );
900
+ }
901
+ }
786
902
  /**
787
903
  * Consolidated daemon status report (`GET /daemon/status`). The default
788
904
  * `summary` detail reads cheap in-memory counters; `full` adds per-session,
@@ -824,6 +940,38 @@ var DaemonClient = class {
824
940
  }
825
941
  );
826
942
  }
943
+ async initializeWorkspaceMcp() {
944
+ return await this.fetchWithTimeout(
945
+ `${this.baseUrl}/workspace/mcp/initialize`,
946
+ {
947
+ method: "POST",
948
+ headers: this.headers({ "Content-Type": "application/json" }),
949
+ body: "{}"
950
+ },
951
+ async (res) => {
952
+ if (!res.ok) {
953
+ throw await this.failOnError(res, "POST /workspace/mcp/initialize");
954
+ }
955
+ return await res.json();
956
+ }
957
+ );
958
+ }
959
+ async reloadWorkspaceMcp() {
960
+ return await this.fetchWithTimeout(
961
+ `${this.baseUrl}/workspace/mcp/reload`,
962
+ {
963
+ method: "POST",
964
+ headers: this.headers({ "Content-Type": "application/json" }),
965
+ body: "{}"
966
+ },
967
+ async (res) => {
968
+ if (!res.ok) {
969
+ throw await this.failOnError(res, "POST /workspace/mcp/reload");
970
+ }
971
+ return await res.json();
972
+ }
973
+ );
974
+ }
827
975
  async workspaceGit() {
828
976
  return await this.jsonRequest(
829
977
  "/workspace/git",
@@ -951,6 +1099,20 @@ var DaemonClient = class {
951
1099
  { mode: "rest" }
952
1100
  );
953
1101
  }
1102
+ async activeExtensionOperations() {
1103
+ return await this.jsonRequest(
1104
+ "/workspace/extensions/operations",
1105
+ "GET /workspace/extensions/operations",
1106
+ { mode: "rest" }
1107
+ );
1108
+ }
1109
+ async respondToExtensionInteraction(operationId, interactionId, response, clientId) {
1110
+ return await this.jsonRequest(
1111
+ `/workspace/extensions/operations/${urlEncode(operationId)}/interactions/${urlEncode(interactionId)}`,
1112
+ "POST /workspace/extensions/operations/:operationId/interactions/:interactionId",
1113
+ { method: "POST", body: response, clientId, mode: "rest" }
1114
+ );
1115
+ }
954
1116
  async checkExtensionUpdates(clientId) {
955
1117
  return await this.jsonRequest(
956
1118
  "/workspace/extensions/check-updates",
@@ -1207,6 +1369,24 @@ var DaemonClient = class {
1207
1369
  }
1208
1370
  );
1209
1371
  }
1372
+ /**
1373
+ * Directory-name suggestions for an absolute path prefix, for flows that
1374
+ * pick a path outside any registered workspace (e.g. "Add workspace").
1375
+ */
1376
+ async workspacePathSuggestions(prefix) {
1377
+ const url = new URL(`${this.baseUrl}/workspace-path-suggestions`);
1378
+ url.searchParams.set("prefix", prefix);
1379
+ return await this.fetchWithTimeout(
1380
+ url.toString(),
1381
+ { headers: this.headers() },
1382
+ async (res) => {
1383
+ if (!res.ok) {
1384
+ throw await this.failOnError(res, "GET /workspace-path-suggestions");
1385
+ }
1386
+ return await res.json();
1387
+ }
1388
+ );
1389
+ }
1210
1390
  async glob(pattern) {
1211
1391
  const url = new URL(`${this.baseUrl}/glob`);
1212
1392
  url.searchParams.set("pattern", pattern);
@@ -1527,6 +1707,9 @@ var DaemonClient = class {
1527
1707
  }
1528
1708
  // -- Sessions ----------------------------------------------------------
1529
1709
  async createOrAttachSession(req, clientId) {
1710
+ if (req.sourceType !== void 0 || req.sourceId !== void 0) {
1711
+ await this.requireCapability("session_source_metadata");
1712
+ }
1530
1713
  return await this.fetchWithTimeout(
1531
1714
  `${this.baseUrl}/session`,
1532
1715
  {
@@ -1542,7 +1725,9 @@ var DaemonClient = class {
1542
1725
  // bridge's own validation uses (`httpAcpBridge.ts:
1543
1726
  // spawnOrAttach`); SDK should be a transparent layer here.
1544
1727
  ...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
1545
- ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
1728
+ ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
1729
+ ...req.sourceType !== void 0 ? { sourceType: req.sourceType } : {},
1730
+ ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {}
1546
1731
  })
1547
1732
  },
1548
1733
  async (res) => {
@@ -1560,6 +1745,9 @@ var DaemonClient = class {
1560
1745
  return page.sessions;
1561
1746
  }
1562
1747
  async listWorkspaceSessionsPage(workspaceCwd, options) {
1748
+ if (options?.sourceType !== void 0 || options?.sourceId !== void 0) {
1749
+ await this.requireCapability("session_source_metadata");
1750
+ }
1563
1751
  const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
1564
1752
  const pageSize = Math.max(
1565
1753
  1,
@@ -1586,6 +1774,12 @@ var DaemonClient = class {
1586
1774
  if (options?.parentSessionId !== void 0) {
1587
1775
  query.set("parentSessionId", options.parentSessionId);
1588
1776
  }
1777
+ if (options?.sourceType !== void 0) {
1778
+ query.set("sourceType", options.sourceType);
1779
+ }
1780
+ if (options?.sourceId !== void 0) {
1781
+ query.set("sourceId", options.sourceId);
1782
+ }
1589
1783
  return await this.jsonRequest(
1590
1784
  `/workspace/${urlEncode(workspaceCwd)}/sessions?${query.toString()}`,
1591
1785
  "GET /workspace/sessions"
@@ -1638,12 +1832,8 @@ var DaemonClient = class {
1638
1832
  );
1639
1833
  }
1640
1834
  async getSessionTranscriptPage(sessionId, opts = {}) {
1641
- const params = new URLSearchParams();
1642
- if (opts.cursor !== void 0) params.set("cursor", opts.cursor);
1643
- if (opts.limit !== void 0) params.set("limit", String(opts.limit));
1644
- const query = params.toString();
1645
1835
  return await this.jsonRequest(
1646
- `/session/${urlEncode(sessionId)}/transcript${query ? `?${query}` : ""}`,
1836
+ `/session/${urlEncode(sessionId)}/transcript${transcriptPageSuffix(opts)}`,
1647
1837
  "GET /session/:id/transcript",
1648
1838
  {
1649
1839
  clientId: opts.clientId,
@@ -1829,7 +2019,8 @@ var DaemonClient = class {
1829
2019
  headers: this.headers({ "Content-Type": "application/json" }, clientId),
1830
2020
  body: JSON.stringify({
1831
2021
  cwd: req.workspaceCwd,
1832
- ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {}
2022
+ ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
2023
+ ...action === "load" && req.historyPageSize !== void 0 ? { historyPageSize: req.historyPageSize } : {}
1833
2024
  })
1834
2025
  },
1835
2026
  async (res) => {
@@ -1960,6 +2151,31 @@ var DaemonClient = class {
1960
2151
  if (!res.ok) throw await this.failOnError(res, "POST /session/:id/recap");
1961
2152
  return await res.json();
1962
2153
  }
2154
+ async *generateSessionContent(sessionId, prompt, opts) {
2155
+ const res = await this.transport.fetch(
2156
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/generate`,
2157
+ {
2158
+ method: "POST",
2159
+ headers: this.headers(
2160
+ {
2161
+ "Content-Type": "application/json",
2162
+ Accept: "text/event-stream"
2163
+ },
2164
+ opts?.clientId
2165
+ ),
2166
+ body: JSON.stringify({ prompt }),
2167
+ signal: opts?.signal
2168
+ }
2169
+ );
2170
+ if (!res.ok) {
2171
+ throw await this.failOnError(res, "POST /session/:id/generate");
2172
+ }
2173
+ if (!res.body) throw new Error("Generation response body is missing");
2174
+ for await (const event of parseSseStream(res.body, opts?.signal)) {
2175
+ const generationEvent = parseSessionGenerationEvent(event);
2176
+ if (generationEvent) yield generationEvent;
2177
+ }
2178
+ }
1963
2179
  async btwSession(sessionId, question, opts) {
1964
2180
  const res = await this.transport.fetch(
1965
2181
  `${this.baseUrl}/session/${urlEncode(sessionId)}/btw`,
@@ -2139,6 +2355,19 @@ var DaemonClient = class {
2139
2355
  }
2140
2356
  );
2141
2357
  }
2358
+ installWorkspaceSkill(request) {
2359
+ return this.jsonRequest("/workspace/skills/install", "Skill", {
2360
+ method: "POST",
2361
+ body: request
2362
+ });
2363
+ }
2364
+ deleteWorkspaceSkill(skillName, scope) {
2365
+ return this.jsonRequest(
2366
+ `/workspace/skills/${urlEncode(skillName)}?scope=${scope}`,
2367
+ "Skill",
2368
+ { method: "DELETE" }
2369
+ );
2370
+ }
2142
2371
  async workspaceSettings(opts) {
2143
2372
  return await this.fetchWithTimeout(
2144
2373
  `${this.baseUrl}/workspace/settings`,
@@ -2163,7 +2392,12 @@ var DaemonClient = class {
2163
2392
  { "Content-Type": "application/json" },
2164
2393
  opts?.clientId
2165
2394
  ),
2166
- body: JSON.stringify({ scope, key, value })
2395
+ body: JSON.stringify({
2396
+ scope,
2397
+ key,
2398
+ value,
2399
+ ...opts?.mcpServerMutation ? { mcpServerMutation: opts.mcpServerMutation } : {}
2400
+ })
2167
2401
  },
2168
2402
  async (res) => {
2169
2403
  if (!res.ok) {
@@ -3170,6 +3404,20 @@ var WorkspaceDaemonClient = class {
3170
3404
  workspaceMcp() {
3171
3405
  return this.get("/mcp", "GET /workspaces/:workspace/mcp");
3172
3406
  }
3407
+ initializeWorkspaceMcp() {
3408
+ return this.post(
3409
+ "/mcp/initialize",
3410
+ "POST /workspaces/:workspace/mcp/initialize",
3411
+ {}
3412
+ );
3413
+ }
3414
+ reloadWorkspaceMcp() {
3415
+ return this.post(
3416
+ "/mcp/reload",
3417
+ "POST /workspaces/:workspace/mcp/reload",
3418
+ {}
3419
+ );
3420
+ }
3173
3421
  workspaceVoice(clientId) {
3174
3422
  return this.client.workspaceJsonRequest(
3175
3423
  this.workspaceSelector,
@@ -3285,7 +3533,10 @@ var WorkspaceDaemonClient = class {
3285
3533
  }
3286
3534
  );
3287
3535
  }
3288
- listWorkspaceSessionsPage(options) {
3536
+ async listWorkspaceSessionsPage(options) {
3537
+ if (options?.sourceType !== void 0 || options?.sourceId !== void 0) {
3538
+ await this.client.requireCapability("session_source_metadata");
3539
+ }
3289
3540
  const requestedPageSize = options?.pageSize ?? DEFAULT_SESSION_LIST_PAGE_SIZE;
3290
3541
  const pageSize = Math.max(
3291
3542
  1,
@@ -3306,7 +3557,13 @@ var WorkspaceDaemonClient = class {
3306
3557
  if (options?.parentSessionId !== void 0) {
3307
3558
  query.set("parentSessionId", options.parentSessionId);
3308
3559
  }
3309
- return this.get(
3560
+ if (options?.sourceType !== void 0) {
3561
+ query.set("sourceType", options.sourceType);
3562
+ }
3563
+ if (options?.sourceId !== void 0) {
3564
+ query.set("sourceId", options.sourceId);
3565
+ }
3566
+ return await this.get(
3310
3567
  `/sessions?${query.toString()}`,
3311
3568
  "GET /workspaces/:workspace/sessions"
3312
3569
  );
@@ -3315,6 +3572,9 @@ var WorkspaceDaemonClient = class {
3315
3572
  const page = await this.listWorkspaceSessionsPage(options);
3316
3573
  return page.sessions;
3317
3574
  }
3575
+ getWorkspaceSessionInfo() {
3576
+ return this.get("/session-info", "GET /workspaces/:workspace/session-info");
3577
+ }
3318
3578
  /**
3319
3579
  * Read one page from an active persisted session transcript in this
3320
3580
  * workspace.
@@ -3322,13 +3582,9 @@ var WorkspaceDaemonClient = class {
3322
3582
  * starting ACP. This method always uses native REST transport.
3323
3583
  */
3324
3584
  getSessionTranscriptPage(sessionId, opts = {}) {
3325
- const query = new URLSearchParams();
3326
- if (opts.cursor !== void 0) query.set("cursor", opts.cursor);
3327
- if (opts.limit !== void 0) query.set("limit", String(opts.limit));
3328
- const suffix = query.size > 0 ? `?${query.toString()}` : "";
3329
3585
  return this.client.workspaceJsonRequest(
3330
3586
  this.workspaceSelector,
3331
- `/session/${urlEncode(sessionId)}/transcript${suffix}`,
3587
+ `/session/${urlEncode(sessionId)}/transcript${transcriptPageSuffix(opts)}`,
3332
3588
  "GET /workspaces/:workspace/session/:id/transcript",
3333
3589
  { clientId: opts.clientId, mode: "rest" }
3334
3590
  );
@@ -3341,6 +3597,14 @@ var WorkspaceDaemonClient = class {
3341
3597
  opts
3342
3598
  );
3343
3599
  }
3600
+ /** Export an archived persisted session from this registered workspace. */
3601
+ exportArchivedSession(sessionId, opts = {}) {
3602
+ return this.client.sessionExportRequest(
3603
+ `/workspaces/${this.workspaceSelector}/session/${urlEncode(sessionId)}/archive/export`,
3604
+ "GET /workspaces/:workspace/session/:id/archive/export",
3605
+ opts
3606
+ );
3607
+ }
3344
3608
  listSessionGroups() {
3345
3609
  return this.get(
3346
3610
  "/session-groups",
@@ -3441,11 +3705,16 @@ var WorkspaceDaemonClient = class {
3441
3705
  "GET /workspaces/:workspace/list"
3442
3706
  );
3443
3707
  }
3444
- glob(pattern) {
3708
+ glob(pattern, opts = {}) {
3445
3709
  const query = new URLSearchParams({ pattern });
3446
- return this.get(
3710
+ if (opts.maxResults !== void 0) {
3711
+ query.set("maxResults", String(opts.maxResults));
3712
+ }
3713
+ return this.client.workspaceJsonRequest(
3714
+ this.workspaceSelector,
3447
3715
  `/glob?${query.toString()}`,
3448
- "GET /workspaces/:workspace/glob"
3716
+ "GET /workspaces/:workspace/glob",
3717
+ { signal: opts.signal }
3449
3718
  );
3450
3719
  }
3451
3720
  writeWorkspaceFile(req, clientId) {
@@ -3475,7 +3744,12 @@ var WorkspaceDaemonClient = class {
3475
3744
  return this.post(
3476
3745
  "/settings",
3477
3746
  "POST /workspaces/:workspace/settings",
3478
- { scope, key, value },
3747
+ {
3748
+ scope,
3749
+ key,
3750
+ value,
3751
+ ...opts?.mcpServerMutation ? { mcpServerMutation: opts.mcpServerMutation } : {}
3752
+ },
3479
3753
  opts?.clientId
3480
3754
  );
3481
3755
  }
@@ -3671,6 +3945,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
3671
3945
  state;
3672
3946
  replaySnapshot;
3673
3947
  hasActivePrompt;
3948
+ historyHasMore;
3674
3949
  lastSeenEventId;
3675
3950
  subscriptionActive = false;
3676
3951
  /** In-flight `reattach()` so concurrent prompts re-register only once. */
@@ -3682,6 +3957,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
3682
3957
  this.session = { ...opts.session };
3683
3958
  this.state = { ...opts.state ?? {} };
3684
3959
  this.hasActivePrompt = opts.hasActivePrompt ?? false;
3960
+ this.historyHasMore = opts.historyHasMore ?? false;
3685
3961
  this.replaySnapshot = opts.replaySnapshot ?? {
3686
3962
  compactedReplay: [],
3687
3963
  liveJournal: []
@@ -3713,6 +3989,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
3713
3989
  hasActivePrompt,
3714
3990
  compactedReplay,
3715
3991
  liveJournal,
3992
+ historyHasMore,
3716
3993
  lastEventId: serverLastEventId,
3717
3994
  ...session
3718
3995
  } = await client.loadSession(sessionId, req, clientId);
@@ -3725,7 +4002,8 @@ var DaemonSessionClient = class _DaemonSessionClient {
3725
4002
  replaySnapshot: {
3726
4003
  compactedReplay: compactedReplay ?? [],
3727
4004
  liveJournal: liveJournal ?? []
3728
- }
4005
+ },
4006
+ historyHasMore
3729
4007
  });
3730
4008
  }
3731
4009
  /**
@@ -3954,6 +4232,12 @@ var DaemonSessionClient = class _DaemonSessionClient {
3954
4232
  ...this.clientId ? { clientId: this.clientId } : {}
3955
4233
  });
3956
4234
  }
4235
+ generateContent(prompt, opts) {
4236
+ return this.client.generateSessionContent(this.sessionId, prompt, {
4237
+ ...opts?.signal ? { signal: opts.signal } : {},
4238
+ ...this.clientId ? { clientId: this.clientId } : {}
4239
+ });
4240
+ }
3957
4241
  async btw(question, opts) {
3958
4242
  return await this.client.btwSession(this.sessionId, question, {
3959
4243
  ...opts?.signal ? { signal: opts.signal } : {},
@@ -4249,6 +4533,7 @@ var DAEMON_KNOWN_EVENT_TYPE_VALUES = [
4249
4533
  "github_setup_completed",
4250
4534
  "mcp_server_restarted",
4251
4535
  "mcp_server_restart_refused",
4536
+ "mcp_server_changed",
4252
4537
  "settings_reloaded",
4253
4538
  // Runtime MCP server add/remove events. Fired by
4254
4539
  // `POST /workspace/mcp/servers` on success (including replace and
@@ -4477,6 +4762,8 @@ function asKnownDaemonEvent(event) {
4477
4762
  return isMcpServerRestartedData(event.data) ? event : void 0;
4478
4763
  case "mcp_server_restart_refused":
4479
4764
  return isMcpServerRestartRefusedData(event.data) ? event : void 0;
4765
+ case "mcp_server_changed":
4766
+ return isMcpServerChangedData(event.data) ? event : void 0;
4480
4767
  case "settings_reloaded":
4481
4768
  return event.data != null && typeof event.data === "object" ? event : void 0;
4482
4769
  case "followup_suggestion":
@@ -4786,6 +5073,7 @@ function reduceDaemonSessionEvent(state, rawEvent) {
4786
5073
  // reduced session-view state.
4787
5074
  case "mcp_server_added":
4788
5075
  case "mcp_server_removed":
5076
+ case "mcp_server_changed":
4789
5077
  case "settings_reloaded":
4790
5078
  case "extensions_changed":
4791
5079
  case "artifact_changed":
@@ -5199,6 +5487,7 @@ var MCP_RESTART_REFUSED_REASONS = /* @__PURE__ */ new Set([
5199
5487
  "in_flight",
5200
5488
  "disabled",
5201
5489
  "budget_would_exceed",
5490
+ "authentication_required",
5202
5491
  // Pool-mode hard restart failure (entry's `client.connect()` or
5203
5492
  // rediscover threw). Carried alongside the soft-skip reasons so
5204
5493
  // SDK reducers maintain a single union for narrowing the event's
@@ -5242,6 +5531,13 @@ function isMcpServerRemovedData(value) {
5242
5531
  return true;
5243
5532
  }
5244
5533
  __name(isMcpServerRemovedData, "isMcpServerRemovedData");
5534
+ function isMcpServerChangedData(value) {
5535
+ if (!isRecord(value) || !isNonEmptyString(value["serverName"])) {
5536
+ return false;
5537
+ }
5538
+ return value["action"] === "approve" || value["action"] === "enable" || value["action"] === "disable" || value["action"] === "authenticate" || value["action"] === "clear-auth";
5539
+ }
5540
+ __name(isMcpServerChangedData, "isMcpServerChangedData");
5245
5541
  function isExtensionsChangedData(value) {
5246
5542
  if (!isRecord(value)) return false;
5247
5543
  if (typeof value["refreshed"] !== "number") return false;
@@ -5349,67 +5645,6 @@ init_esbuild_shims();
5349
5645
  // packages/sdk-typescript/src/daemon/ui/normalizer.ts
5350
5646
  init_esbuild_shims();
5351
5647
 
5352
- // packages/sdk-typescript/src/daemon/types.ts
5353
- init_esbuild_shims();
5354
- var DaemonCapabilityMissingError = class extends Error {
5355
- static {
5356
- __name(this, "DaemonCapabilityMissingError");
5357
- }
5358
- capability;
5359
- constructor(capability, hint) {
5360
- super(
5361
- `DaemonCapabilities.${capability} is missing \u2014 ${hint}. The daemon you are connected to likely predates the feature that added this field; upgrade the daemon or fall back to a different code path that doesn't require it.`
5362
- );
5363
- this.name = "DaemonCapabilityMissingError";
5364
- this.capability = capability;
5365
- }
5366
- };
5367
- function requireWorkspaceCwd(caps) {
5368
- if (typeof caps.workspaceCwd !== "string" || caps.workspaceCwd.length === 0) {
5369
- throw new DaemonCapabilityMissingError(
5370
- "workspaceCwd",
5371
- caps.workspaceCwd === "" ? "daemon returned an empty workspaceCwd (newer daemon with a bug)" : "daemon predates workspaceCwd support (1 daemon = 1 workspace); upgrade it"
5372
- );
5373
- }
5374
- return caps.workspaceCwd;
5375
- }
5376
- __name(requireWorkspaceCwd, "requireWorkspaceCwd");
5377
- var DAEMON_ERROR_KINDS = [
5378
- "missing_binary",
5379
- "blocked_egress",
5380
- "auth_env_error",
5381
- "init_timeout",
5382
- "protocol_error",
5383
- "missing_file",
5384
- "parse_error",
5385
- // Budget refusal under `--mcp-budget-mode=enforce`.
5386
- "budget_exhausted",
5387
- // Runtime MCP mutation routes (POST/DELETE /workspace/mcp/servers).
5388
- "mcp_budget_would_exceed",
5389
- "mcp_server_spawn_failed",
5390
- "invalid_config",
5391
- // A prompt exceeded the daemon-configured wallclock cap (or the
5392
- // request's own `deadlineMs`, capped at the server flag).
5393
- "prompt_deadline_exceeded",
5394
- // An SSE writer's last successful flush was older than the daemon's
5395
- // writer-idle deadline.
5396
- "writer_idle_timeout",
5397
- // The model response stream ended before a complete turn could be read.
5398
- "model_stream_interrupted"
5399
- ];
5400
- var DAEMON_CONTENT_HASH_RE = /^sha256:[0-9a-f]{64}$/;
5401
- function isDaemonContentHash(value) {
5402
- return typeof value === "string" && DAEMON_CONTENT_HASH_RE.test(value);
5403
- }
5404
- __name(isDaemonContentHash, "isDaemonContentHash");
5405
- var DAEMON_APPROVAL_MODES = [
5406
- "plan",
5407
- "default",
5408
- "auto-edit",
5409
- "auto",
5410
- "yolo"
5411
- ];
5412
-
5413
5648
  // packages/sdk-typescript/src/daemon/ui/types.ts
5414
5649
  init_esbuild_shims();
5415
5650
  var DAEMON_PLAN_TOOL_CALL_ID = "daemon-plan";
@@ -5604,7 +5839,8 @@ var DEVICE_FLOW_PROVIDER_SET = /* @__PURE__ */ new Set(["qwen", "qwen-oauth"]);
5604
5839
  var MCP_RESTART_REFUSED_REASONS2 = /* @__PURE__ */ new Set([
5605
5840
  "in_flight",
5606
5841
  "disabled",
5607
- "budget_would_exceed"
5842
+ "budget_would_exceed",
5843
+ "authentication_required"
5608
5844
  ]);
5609
5845
  var MALFORMED_MEMORY_CHANGED = "malformed memory_changed payload";
5610
5846
  var MAX_DETAILS_LENGTH = 4096;
@@ -5836,6 +6072,12 @@ function normalizeDaemonEvent(event, opts = {}) {
5836
6072
  return normalizeMcpServerRestarted(event, base);
5837
6073
  case "mcp_server_restart_refused":
5838
6074
  return normalizeMcpServerRestartRefused(event, base);
6075
+ case "mcp_server_added":
6076
+ return normalizeMcpServerChanged(event, base, "added");
6077
+ case "mcp_server_removed":
6078
+ return normalizeMcpServerChanged(event, base, "removed");
6079
+ case "mcp_server_changed":
6080
+ return normalizeMcpServerChanged(event, base);
5839
6081
  case "extensions_changed":
5840
6082
  return normalizeExtensionsChanged(event, base);
5841
6083
  case "artifact_changed":
@@ -6119,8 +6361,13 @@ function normalizeSessionUpdate(event, base, opts) {
6119
6361
  ];
6120
6362
  }
6121
6363
  case "tool_call":
6122
- case "tool_call_update":
6364
+ case "tool_call_update": {
6365
+ const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6366
+ if (getString2(update, "status") === "in_progress" && getString2(update, "kind") === void 0 && meta?.["shellProgress"] !== void 0) {
6367
+ return [];
6368
+ }
6123
6369
  return [normalizeToolUpdate(update, base)];
6370
+ }
6124
6371
  case "shell_output":
6125
6372
  case "tool_output": {
6126
6373
  const text = getOutputText(update);
@@ -6748,6 +6995,30 @@ function normalizeMcpServerRestartRefused(event, base) {
6748
6995
  ];
6749
6996
  }
6750
6997
  __name(normalizeMcpServerRestartRefused, "normalizeMcpServerRestartRefused");
6998
+ function normalizeMcpServerChanged(event, base, fixedAction) {
6999
+ const serverName = getString2(event.data, fixedAction ? "name" : "serverName");
7000
+ const action = fixedAction ?? getString2(event.data, "action");
7001
+ if (!serverName || !action || ![
7002
+ "added",
7003
+ "removed",
7004
+ "approve",
7005
+ "enable",
7006
+ "disable",
7007
+ "authenticate",
7008
+ "clear-auth"
7009
+ ].includes(action)) {
7010
+ return fallbackDebug(event, base, `malformed ${event.type} payload`);
7011
+ }
7012
+ return [
7013
+ {
7014
+ ...base,
7015
+ type: "workspace.mcp.server_changed",
7016
+ serverName,
7017
+ action
7018
+ }
7019
+ ];
7020
+ }
7021
+ __name(normalizeMcpServerChanged, "normalizeMcpServerChanged");
6751
7022
  function normalizeExtensionsChanged(event, base) {
6752
7023
  const refreshed = numberField(event.data, "refreshed");
6753
7024
  const failed = numberField(event.data, "failed");
@@ -7338,12 +7609,15 @@ function appendLocalUserTranscriptMessage(state, text, opts = {}) {
7338
7609
  return trimTranscriptState(next);
7339
7610
  }
7340
7611
  __name(appendLocalUserTranscriptMessage, "appendLocalUserTranscriptMessage");
7612
+ var FREEZE_TRANSCRIPT_BLOCKS = typeof process !== "undefined" && false;
7341
7613
  function reduceDaemonTranscriptEvents(state, events, opts = {}) {
7342
7614
  if (events.length === 0) return state;
7343
7615
  const next = cloneTranscriptState(state, opts);
7344
7616
  for (const event of events) applyDaemonTranscriptEvent(next, event);
7345
7617
  const result = trimTranscriptState(next);
7346
- Object.freeze(result.blocks);
7618
+ if (FREEZE_TRANSCRIPT_BLOCKS) {
7619
+ Object.freeze(result.blocks);
7620
+ }
7347
7621
  return result;
7348
7622
  }
7349
7623
  __name(reduceDaemonTranscriptEvents, "reduceDaemonTranscriptEvents");
@@ -7508,6 +7782,7 @@ function applyDaemonTranscriptEvent(next, event) {
7508
7782
  case "workspace.mcp.child_refused":
7509
7783
  case "workspace.mcp.server_restarted":
7510
7784
  case "workspace.mcp.server_restart_refused":
7785
+ case "workspace.mcp.server_changed":
7511
7786
  case "auth.device_flow.started":
7512
7787
  case "auth.device_flow.throttled":
7513
7788
  case "auth.device_flow.authorized":
@@ -8679,6 +8954,8 @@ function daemonUiEventToTerminalText(event) {
8679
8954
  `${event.serverName} restart refused: ${event.reason}`,
8680
8955
  "33"
8681
8956
  );
8957
+ case "workspace.mcp.server_changed":
8958
+ return terminalLine("mcp", `${event.serverName} ${event.action}`, "36");
8682
8959
  case "workspace.extensions.changed":
8683
8960
  if (event.status === "failed") {
8684
8961
  return terminalLine(