@qwen-code/qwen-code 0.20.1-preview.7215 → 0.20.2-gdpval-vl-agent.0

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 (327) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +1 -1
  2. package/bundled/qc-helper/docs/features/auto-mode.md +19 -16
  3. package/bundled/qc-helper/docs/features/commands.md +54 -0
  4. package/bundled/qc-helper/docs/features/sub-agents.md +16 -7
  5. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +2 -1
  7. package/bundled/review/DESIGN.md +2 -2
  8. package/bundled/review/SKILL.md +4 -4
  9. package/chunks/{MaxSizedBox-EH6G5AEH.js → MaxSizedBox-KYNG7EN7.js} +38 -35
  10. package/chunks/{StandaloneSessionPicker-264A3TEA.js → StandaloneSessionPicker-7XN4WVVG.js} +55 -52
  11. package/chunks/{acpAgent-6RBIJFDI.js → acpAgent-FTFFYP5G.js} +1536 -512
  12. package/chunks/{agent-QURXGAA3.js → agent-Y76LTTOT.js} +34 -31
  13. package/chunks/{agent-headless-CRGX4ICQ.js → agent-headless-IVAEQPK6.js} +34 -31
  14. package/chunks/{anthropicContentGenerator-BWBAZGTW.js → anthropicContentGenerator-HGWAHO24.js} +11 -13
  15. package/chunks/{artifact-tool-IUJ7QWCX.js → artifact-tool-56T5IMBP.js} +3 -3
  16. package/chunks/{askUserQuestion-IUMUUTDQ.js → askUserQuestion-E25OBIC2.js} +3 -3
  17. package/chunks/{bridge-MNFVKPMI.js → bridge-4M77KUEV.js} +39 -36
  18. package/chunks/{build-SSCNEHZZ.js → build-GHIZ4MSZ.js} +1 -1
  19. package/chunks/{ca-2SL2BXTK.js → ca-N6VVUFVB.js} +611 -201
  20. package/chunks/{channel-worker-group-53CMOPFT.js → channel-worker-group-QZV2SP5U.js} +4 -4
  21. package/chunks/{channel-worker-manager-UTXILKC2.js → channel-worker-manager-3GMAU45H.js} +4 -4
  22. package/chunks/{channel-worker-supervisor-ZGO2W2MD.js → channel-worker-supervisor-QCXSXCRY.js} +3 -3
  23. package/chunks/{chunk-UQES76OO.js → chunk-2HGTVAOW.js} +6 -6
  24. package/chunks/{chunk-2HOVDT7W.js → chunk-2LI23QA6.js} +1 -1
  25. package/chunks/{chunk-ANHT55MR.js → chunk-2P6CNEHB.js} +1 -1
  26. package/chunks/chunk-2RFKHEXL.js +74 -0
  27. package/chunks/{chunk-BF32GYSY.js → chunk-3IABAQR6.js} +1 -1
  28. package/chunks/chunk-3Z43GZUQ.js +32 -0
  29. package/chunks/chunk-43T5WDQ7.js +127 -0
  30. package/chunks/{chunk-DA7OOKVN.js → chunk-4CTP6VR6.js} +29 -2
  31. package/chunks/{chunk-JD3MKVKL.js → chunk-4K56OJFJ.js} +1 -1
  32. package/chunks/{chunk-KTUQMDEP.js → chunk-4K7VDKAD.js} +1 -1
  33. package/chunks/{chunk-QKYTTBYW.js → chunk-4LVZNIDO.js} +1 -1
  34. package/chunks/{chunk-ZEOZL37W.js → chunk-57FIIFJN.js} +1 -1
  35. package/chunks/{chunk-7YBZGNEC.js → chunk-5G3ZVADU.js} +308 -199
  36. package/chunks/{chunk-X4CGDBKA.js → chunk-6GEJX3LE.js} +3 -3
  37. package/chunks/{chunk-6GUTHAN7.js → chunk-6HOCJNO5.js} +1 -1
  38. package/chunks/{chunk-GMGDLUC7.js → chunk-6IL7KRLE.js} +1 -1
  39. package/chunks/chunk-6PVPNMXU.js +29 -0
  40. package/chunks/{chunk-BDBMYST4.js → chunk-6X4GWOPW.js} +1 -1
  41. package/chunks/{chunk-4ODB7WIB.js → chunk-6ZBPS62S.js} +1 -1
  42. package/chunks/{chunk-AYCDXHZB.js → chunk-7Z6JQEL6.js} +1 -1
  43. package/chunks/{chunk-WAX3ITOA.js → chunk-A3TAEAHX.js} +1 -1
  44. package/chunks/{chunk-OLMETXLX.js → chunk-ACW3VNUE.js} +2 -2
  45. package/chunks/{chunk-IB35C3IL.js → chunk-AVQ6EX4J.js} +1 -1
  46. package/chunks/{chunk-TTSKHF43.js → chunk-BK6UOUJ2.js} +2 -2
  47. package/chunks/{chunk-6OH6A5EX.js → chunk-BLAEKN6K.js} +20603 -17709
  48. package/chunks/chunk-BULDBTYC.js +153 -0
  49. package/chunks/{chunk-XNP57UDV.js → chunk-C3EXYVFX.js} +2 -2
  50. package/chunks/{chunk-FVS747N7.js → chunk-C54UTDOC.js} +23 -19
  51. package/chunks/{chunk-MAQQGNQ5.js → chunk-CBOQ3HY7.js} +466 -10
  52. package/chunks/{chunk-VFAE4AGH.js → chunk-CGZ5SV23.js} +72 -67
  53. package/chunks/{chunk-WKRXIHD6.js → chunk-COAARUPK.js} +8 -8
  54. package/chunks/{chunk-GA7VRJVN.js → chunk-E2ZK5M4P.js} +5 -5
  55. package/chunks/{chunk-5SCI6E3E.js → chunk-E4IMU4Y5.js} +1 -1
  56. package/chunks/{chunk-E5GIFWE3.js → chunk-EEFRJ5CT.js} +54 -33
  57. package/chunks/{chunk-WXAXH7IJ.js → chunk-ESQHGKPJ.js} +1 -1
  58. package/chunks/{chunk-NEEB7UEN.js → chunk-FFFM6NJV.js} +1 -2
  59. package/chunks/{chunk-Z5R4JMOL.js → chunk-FJ2IUWNQ.js} +4 -4
  60. package/chunks/{chunk-JVTCARQ6.js → chunk-FQI7LT7T.js} +4 -4
  61. package/chunks/{chunk-BRXIO5WY.js → chunk-FTNI3D7D.js} +7 -7
  62. package/chunks/{chunk-OMH3276Y.js → chunk-GHRSKGHF.js} +7 -7
  63. package/chunks/{chunk-OONJNQ42.js → chunk-GPSKDNEE.js} +3 -3
  64. package/chunks/{chunk-KPZNOZPC.js → chunk-GWM4PDYK.js} +19 -19
  65. package/chunks/{chunk-NBMIC7DR.js → chunk-H24SOJIQ.js} +2 -2
  66. package/chunks/{chunk-FNGK2Z5B.js → chunk-H4AR2JQF.js} +3 -3
  67. package/chunks/{chunk-WOT64EP2.js → chunk-HCJQORKC.js} +2 -2
  68. package/chunks/{chunk-7KDI2IB2.js → chunk-HDATOR4J.js} +4 -4
  69. package/chunks/{chunk-IE4JSQ5L.js → chunk-HIYP7IR4.js} +39 -37
  70. package/chunks/{chunk-N6YTEVLV.js → chunk-HL6AKUGD.js} +10 -4
  71. package/chunks/{chunk-BAIEQKR5.js → chunk-HPQFGWOD.js} +5 -5
  72. package/chunks/chunk-HTR4WV6U.js +327 -0
  73. package/chunks/{chunk-SDXIH6OA.js → chunk-IFUNDCQ6.js} +137 -5
  74. package/chunks/{chunk-Z6UEAQTP.js → chunk-IFVECEIK.js} +178 -61
  75. package/chunks/{chunk-QOK6RMIP.js → chunk-IKP54WUL.js} +4 -4
  76. package/chunks/{chunk-IUSNI6IX.js → chunk-ISMD2AB3.js} +1 -1
  77. package/chunks/{chunk-G45X5TRN.js → chunk-JCW2R7WC.js} +1 -72
  78. package/chunks/{chunk-LZYWWWCZ.js → chunk-KF6CTNTJ.js} +8 -9
  79. package/chunks/{chunk-EIAK6Q2B.js → chunk-KHOVYUHX.js} +2 -2
  80. package/chunks/chunk-KWK7UE6L.js +6194 -0
  81. package/chunks/{chunk-WBTZGWQ6.js → chunk-L5F3T6TQ.js} +1 -1
  82. package/chunks/{chunk-RELYEO3R.js → chunk-L7ASZD66.js} +244 -1607
  83. package/chunks/{chunk-UJEZQ562.js → chunk-LESHKUWF.js} +3 -5
  84. package/chunks/{chunk-OOCI5VVU.js → chunk-LIZRAKPB.js} +1 -1
  85. package/chunks/{chunk-Q3ZBFXK4.js → chunk-LKB5YL5T.js} +143 -36
  86. package/chunks/{chunk-MKLKHZAK.js → chunk-LU3RXCM7.js} +1 -1
  87. package/chunks/{chunk-B453NMZJ.js → chunk-M3EQ3GZC.js} +3 -3
  88. package/chunks/{chunk-TCKTNY66.js → chunk-M4VFMLQK.js} +6 -6
  89. package/chunks/{chunk-26LLB6FM.js → chunk-MDZTPSXO.js} +2 -2
  90. package/chunks/{chunk-4SLLEAQP.js → chunk-MJPBB2GK.js} +591 -316
  91. package/chunks/chunk-NABLFI57.js +82 -0
  92. package/chunks/{chunk-T7DDD7CZ.js → chunk-NAXEEGJU.js} +4 -4
  93. package/chunks/{chunk-467G3SV5.js → chunk-NPQDJGKU.js} +1 -1
  94. package/chunks/{chunk-FLTN6NRU.js → chunk-O4OT3DM3.js} +5 -1
  95. package/chunks/{chunk-3EUZWNWA.js → chunk-OPDZT2VG.js} +1 -1
  96. package/chunks/chunk-OQ5SYCPE.js +10017 -0
  97. package/chunks/{chunk-C27BYUX6.js → chunk-OQB4EXO4.js} +14 -11
  98. package/chunks/{chunk-V25Z5UUB.js → chunk-P6PBZL3N.js} +7 -6
  99. package/chunks/{chunk-5NWV4NFB.js → chunk-PRAUGUNM.js} +3 -3
  100. package/chunks/{chunk-MC2DOZS7.js → chunk-PVT6E3ZI.js} +3 -3
  101. package/chunks/{chunk-KXEGCGUG.js → chunk-Q22WWVR6.js} +31 -6
  102. package/chunks/{chunk-JDI67JFB.js → chunk-Q2YKNMLS.js} +3 -3
  103. package/chunks/{chunk-PBATSWUQ.js → chunk-QBUDF33N.js} +1 -1
  104. package/chunks/{chunk-Y2ENGUD6.js → chunk-QKTHJXCS.js} +1 -1
  105. package/chunks/{chunk-BVLROR2T.js → chunk-QLJUC7TG.js} +1 -1
  106. package/chunks/{chunk-UEY4AYUL.js → chunk-QNLNLENL.js} +2 -2
  107. package/chunks/{chunk-OKWRU4NO.js → chunk-RC7A7SSL.js} +3 -3
  108. package/chunks/chunk-RCUEYZDE.js +2290 -0
  109. package/chunks/{chunk-EVSTCA7S.js → chunk-RMY5SX7S.js} +368 -113
  110. package/chunks/{chunk-4WUAQ2DO.js → chunk-RTQSXHS7.js} +2 -2
  111. package/chunks/{chunk-RFIAR4YL.js → chunk-RV4C2ZFG.js} +1 -1
  112. package/chunks/{chunk-NIJEXGV6.js → chunk-RVLZCXEE.js} +79 -10
  113. package/chunks/{chunk-Q4RBU7WX.js → chunk-S333CBIA.js} +6 -6
  114. package/chunks/{chunk-JNWZQ27S.js → chunk-SP5WRGVG.js} +3 -3
  115. package/chunks/{chunk-FSL5W5TI.js → chunk-T2L47JJK.js} +3 -3
  116. package/chunks/{chunk-PWVTCGBP.js → chunk-TA4S377U.js} +30 -20
  117. package/chunks/{chunk-TB6UDU4T.js → chunk-THJNPLI4.js} +16 -16
  118. package/chunks/chunk-U6TQGUNB.js +20687 -0
  119. package/chunks/chunk-U7ZFW55U.js +2098 -0
  120. package/chunks/{chunk-W7H223ZZ.js → chunk-UGYMA4EI.js} +1 -1
  121. package/chunks/{chunk-X6YQWCIJ.js → chunk-UH3WSE5L.js} +13 -1
  122. package/chunks/{chunk-P2YAOGJD.js → chunk-UKU3NGW6.js} +3 -3
  123. package/chunks/{chunk-NOWTNYC7.js → chunk-UVFCANV5.js} +8 -8
  124. package/chunks/{chunk-CVDW42JT.js → chunk-V4AKJQ26.js} +1 -1
  125. package/chunks/{chunk-Z5Q65RVH.js → chunk-VJPRLNLR.js} +1 -1
  126. package/chunks/{chunk-Y4CRUWFZ.js → chunk-VTXX72XS.js} +60 -35
  127. package/chunks/{chunk-R3VWUU2E.js → chunk-VYPFXUCB.js} +1 -1
  128. package/chunks/chunk-WHGVTP7Q.js +1049 -0
  129. package/chunks/{chunk-IKP5DXZY.js → chunk-WOWQQGGN.js} +5 -5
  130. package/chunks/{chunk-D2VIDMVM.js → chunk-X6N25LXS.js} +2 -2
  131. package/chunks/chunk-XHATNRQA.js +1500 -0
  132. package/chunks/{chunk-2DXOIVUI.js → chunk-YLSB23Y2.js} +11 -11
  133. package/chunks/{chunk-S35ZDXOS.js → chunk-YM3SZTH4.js} +2 -1
  134. package/chunks/{chunk-OF2BBLYQ.js → chunk-YNWJAOPL.js} +2 -2
  135. package/chunks/{chunk-GKY2OJ7R.js → chunk-ZHERRXZJ.js} +1 -1
  136. package/chunks/{chunk-AR27OPIU.js → chunk-ZKFJKN23.js} +2 -2
  137. package/chunks/{computer-use-R7KA6UJ6.js → computer-use-UKQBH7UM.js} +39 -36
  138. package/chunks/{config-utils-6FXFJUYB.js → config-utils-FYTBZLCJ.js} +3 -3
  139. package/chunks/{contextCommand-KAQQPHZ4.js → contextCommand-ESHGAVWX.js} +36 -33
  140. package/chunks/{create-sub-session-TDPDBU4K.js → create-sub-session-574EPZUU.js} +34 -31
  141. package/chunks/{create-sub-session-X5RVIHCK.js → create-sub-session-AZ77LBL3.js} +3 -3
  142. package/chunks/{cron-create-AC5FFLN7.js → cron-create-KTWJM7QT.js} +5 -5
  143. package/chunks/{cron-delete-JEB3FAHA.js → cron-delete-2P3I5ULL.js} +5 -5
  144. package/chunks/{cron-list-NBYPCNIB.js → cron-list-PXDPGEDQ.js} +5 -5
  145. package/chunks/{daemon-RG2MAI6T.js → daemon-GJRFILYS.js} +323 -99
  146. package/chunks/daemon-status-provider-GZXZP3NU.js +80 -0
  147. package/chunks/{de-I7ZIYXZC.js → de-4IBXM7CN.js} +5 -1
  148. package/chunks/{dist-AU7NQQRP.js → dist-OAV7LJGJ.js} +1 -1
  149. package/chunks/{dist-FUTEXY6A.js → dist-OMW6WDEO.js} +1 -1
  150. package/chunks/{dist-2MIU4UUH.js → dist-PJLG2XYX.js} +1 -1
  151. package/chunks/{dist-53PZYC5B.js → dist-UIFWIFRO.js} +2 -2
  152. package/chunks/{dist-2BHAYBKP.js → dist-XBJVSWS2.js} +1 -1
  153. package/chunks/{dist-WGTQO7F2.js → dist-XRYV6TJP.js} +65 -25
  154. package/chunks/{earlyInputCapture-WC7RI5HV.js → earlyInputCapture-GI3HGQIT.js} +35 -32
  155. package/chunks/{edit-6MHKCJCM.js → edit-EBJK74B3.js} +42 -41
  156. package/chunks/{en-XE34GKAA.js → en-USMCCJAJ.js} +5 -1
  157. package/chunks/{enter-worktree-O7VJ2E7A.js → enter-worktree-2ETY5CSV.js} +39 -36
  158. package/chunks/{enterPlanMode-5XYAALIO.js → enterPlanMode-NY4U2727.js} +45 -37
  159. package/chunks/{environment-LSKFNLBU.js → environment-33IR3NOU.js} +36 -33
  160. package/chunks/{errors-ZFVCY6HG.js → errors-2OCY23IC.js} +36 -33
  161. package/chunks/{exit-worktree-MYIK66T7.js → exit-worktree-Y4ULJ45U.js} +39 -36
  162. package/chunks/{exitPlanMode-7MBNU76O.js → exitPlanMode-SECI2EQ6.js} +39 -36
  163. package/chunks/{fast-path-RNLIB64C.js → fast-path-6Z7RW5J5.js} +3 -2
  164. package/chunks/{fr-X7KDVZIY.js → fr-WVHEBDDB.js} +5 -1
  165. package/chunks/{gemini-WK5ISEAQ.js → gemini-XLGLUGSU.js} +93 -89
  166. package/chunks/{geminiContentGenerator-NUJQBZBW.js → geminiContentGenerator-NNZZDH24.js} +5 -5
  167. package/chunks/{getMachineId-bsd-EXV7SWPA.js → getMachineId-bsd-QFVLPUPT.js} +1 -1
  168. package/chunks/{getMachineId-darwin-IUOMFXU3.js → getMachineId-darwin-DGMQQE2E.js} +1 -1
  169. package/chunks/{getMachineId-linux-K7XJYFHL.js → getMachineId-linux-R4Z6CSWC.js} +1 -1
  170. package/chunks/{getMachineId-unsupported-EA5FDRJ6.js → getMachineId-unsupported-Z3SBVBUV.js} +1 -1
  171. package/chunks/{getMachineId-win-KBA6RAI5.js → getMachineId-win-SCK5UFDT.js} +1 -1
  172. package/chunks/{glob-7P6RYY4L.js → glob-KZA64SSV.js} +41 -38
  173. package/chunks/{grep-V3QHNP2J.js → grep-ONHQMY3V.js} +41 -38
  174. package/chunks/handleAutoUpdate-PRTJISXQ.js +73 -0
  175. package/chunks/{i18n-B7IO7WQT.js → i18n-ZTKKG5R5.js} +35 -32
  176. package/chunks/{initializer-E5TIC3CW.js → initializer-FPPZGBYN.js} +40 -37
  177. package/chunks/{installationInfo-XLPNAISK.js → installationInfo-DV2C27HT.js} +37 -32
  178. package/chunks/{ja-2ICT3KXF.js → ja-KY4ROZTE.js} +5 -1
  179. package/chunks/{keychain-token-storage-DWRJMNH3.js → keychain-token-storage-6ACJDYIB.js} +3 -3
  180. package/chunks/{list-3CZR5I42.js → list-KEHCNUAK.js} +42 -39
  181. package/chunks/{loadedSettingsAdapter-X5BSC6CE.js → loadedSettingsAdapter-7RZ6M3WH.js} +39 -36
  182. package/chunks/{loop-wakeup-HMHCT5GU.js → loop-wakeup-RNMRVA66.js} +6 -6
  183. package/chunks/{ls-IW5HYDG4.js → ls-J2ZI5XYK.js} +5 -5
  184. package/chunks/{lsp-4RL52YIZ.js → lsp-UMS3NUB5.js} +3 -3
  185. package/chunks/managed-npm-update-EBKNOG37.js +332 -0
  186. package/chunks/{mcp-4C4HWXAR.js → mcp-NHXKZRRP.js} +39 -36
  187. package/chunks/{monitor-3CJDNZB2.js → monitor-FMUAIFFH.js} +39 -36
  188. package/chunks/nonInteractiveCli-I2GPZNTP.js +132 -0
  189. package/chunks/{notebook-edit-MX366HCT.js → notebook-edit-V7RNXKVL.js} +43 -42
  190. package/chunks/{openaiContentGenerator-KRPNNJGZ.js → openaiContentGenerator-IBVUUZDH.js} +19 -18
  191. package/chunks/{pidfile-K7T2JLUJ.js → pidfile-AMTGL2H2.js} +35 -32
  192. package/chunks/{processUtils-YXL3VIBR.js → processUtils-3ZT2JF6D.js} +2 -2
  193. package/chunks/{pt-JJ4XPIBP.js → pt-OK455PLH.js} +5 -1
  194. package/chunks/{qwenContentGenerator-GJVXFZ3U.js → qwenContentGenerator-E72VVWS3.js} +41 -38
  195. package/chunks/{qwenOAuth2-UZTIBQLY.js → qwenOAuth2-YCC3HP24.js} +17 -16
  196. package/chunks/{read-file-S5XQSYOW.js → read-file-5EWNGUXN.js} +13 -11
  197. package/chunks/{read-mcp-resource-OIBCNIX7.js → read-mcp-resource-F6HYMDUY.js} +3 -3
  198. package/chunks/{record-artifact-HDMK4LHG.js → record-artifact-7GCFLDD7.js} +3 -3
  199. package/chunks/{resumeHistoryUtils-IKR6XD2S.js → resumeHistoryUtils-IH4RNB76.js} +41 -38
  200. package/chunks/{ripGrep-H65GRSQX.js → ripGrep-B6A6N7GI.js} +34 -31
  201. package/chunks/{ru-STR4KTW7.js → ru-7SPDGMGD.js} +5 -1
  202. package/chunks/{run-qwen-serve-7SKAQOAA.js → run-qwen-serve-6PKSMF6Z.js} +115 -74
  203. package/chunks/{runtime-I2STBGPR.js → runtime-ASRANXO6.js} +45 -40
  204. package/chunks/{scheduler-6F7HETNO.js → scheduler-IABM76UZ.js} +34 -31
  205. package/chunks/sdk-exporters-grpc-ETLH47EP.js +23214 -0
  206. package/chunks/sdk-exporters-http-6MCQH335.js +563 -0
  207. package/chunks/sdk-impl-HOLWAXC6.js +9193 -0
  208. package/chunks/{send-message-WXVVK4DB.js → send-message-KBO6X4ZS.js} +7 -5
  209. package/chunks/{serve-4ATEWSEA.js → serve-A4DT5D32.js} +39 -36
  210. package/chunks/{server-YPUPFV2O.js → server-DZ5ZSVRE.js} +2317 -472
  211. package/chunks/{session-AZFIERIY.js → session-G2R3CYU6.js} +87 -172
  212. package/chunks/{settings-EFQHLTM3.js → settings-7TNSXUTO.js} +43 -40
  213. package/chunks/{shell-FWXWBJ4Q.js → shell-5BRFGEMK.js} +34 -31
  214. package/chunks/{skill-A634MNCD.js → skill-3SWYEK7M.js} +24 -20
  215. package/chunks/{spawnChannel-KKBGGR47.js → spawnChannel-GGN2WVWW.js} +36 -33
  216. package/chunks/{src-BVROLD6N.js → src-5BPBNQ5S.js} +314 -236
  217. package/chunks/{standalone-update-ERLA3BDC.js → standalone-update-AHOZ56LS.js} +37 -34
  218. package/chunks/{startInteractiveUI-3VZ23WAY.js → startInteractiveUI-TLGOQVV7.js} +1105 -906
  219. package/chunks/{syntheticOutput-HCUFXSIA.js → syntheticOutput-H7RTI5KL.js} +4 -4
  220. package/chunks/{task-create-RIY5JTFC.js → task-create-7474AJJD.js} +10 -8
  221. package/chunks/{task-list-XBUCV3CO.js → task-list-633HGOIB.js} +6 -6
  222. package/chunks/{task-stop-QDFCCYR5.js → task-stop-MNUGHPIA.js} +3 -3
  223. package/chunks/{task-update-7PXKJQOI.js → task-update-66GQB5LI.js} +10 -8
  224. package/chunks/{team-create-ZZO7QFQ7.js → team-create-XHDF7UKM.js} +42 -39
  225. package/chunks/{team-delete-TNSSE2S5.js → team-delete-BB3CG3QF.js} +6 -6
  226. package/chunks/{team-plan-approval-3BZBJ46K.js → team-plan-approval-XKSBXWMH.js} +39 -36
  227. package/chunks/{theme-manager-FSFWNXFJ.js → theme-manager-6ZKLBFAN.js} +35 -32
  228. package/chunks/{todoWrite-OMAIGB6V.js → todoWrite-KRAUN54W.js} +5 -5
  229. package/chunks/{tool-search-VYXAAIDW.js → tool-search-UDNJCXYS.js} +21 -17
  230. package/chunks/{total-session-admission-PSMLQICS.js → total-session-admission-VWRCCDYM.js} +40 -37
  231. package/chunks/{tree-sitter-4D7QS7F6.js → tree-sitter-L5BFT64K.js} +1 -1
  232. package/chunks/{tree-sitter-bash-VEJGF5XF.js → tree-sitter-bash-ZKDNQGID.js} +1 -1
  233. package/chunks/{trustedFolders-QA3RK2NV.js → trustedFolders-TJI6OLAN.js} +35 -32
  234. package/chunks/{chunk-6EFTQYW7.js → undici-3FJYTMOF.js} +24 -399
  235. package/chunks/{chunk-L573Z2QZ.js → undici-PYHBDDPN.js} +1 -5
  236. package/chunks/{update-relaunch-LNLZFX3J.js → update-relaunch-RS5GB74A.js} +17 -17
  237. package/chunks/updateCheck-T4EEA5YR.js +88 -0
  238. package/chunks/{useAutoAcceptIndicator-DIWN27LT.js → useAutoAcceptIndicator-LLWMXC7F.js} +44 -41
  239. package/chunks/{validateNonInterActiveAuth-LOEOFCAF.js → validateNonInterActiveAuth-OJ3KYXAR.js} +74 -71
  240. package/chunks/{version-HBF2VBLE.js → version-ZCEUV5DO.js} +1 -1
  241. package/chunks/{web-fetch-BWGSD2BD.js → web-fetch-KQF4YFCI.js} +99 -42
  242. package/chunks/{web-search-OOHTCVR3.js → web-search-QDDGFGKI.js} +113 -61
  243. package/chunks/{workflow-LJAJBOR4.js → workflow-GIRKCX4P.js} +47 -43
  244. package/chunks/{workspace-providers-status-FYV7TTHA.js → workspace-providers-status-UTMAVTNE.js} +42 -39
  245. package/chunks/{workspace-registration-store-4EHGQW4Y.js → workspace-registration-store-EYJMJFZU.js} +8 -2
  246. package/chunks/{workspace-registry-BKD7VC4Y.js → workspace-registry-4W4UW6MY.js} +40 -37
  247. package/chunks/{workspace-service-75RHX6KR.js → workspace-service-DJCPY6ZN.js} +46 -43
  248. package/chunks/{workspace-skills-status-WBZBZI6A.js → workspace-skills-status-VQ2LKXXX.js} +40 -37
  249. package/chunks/write-file-PLK6RQ7M.js +65 -0
  250. package/chunks/{zh-TW-4RR3YHNN.js → zh-TW-BM47YBFH.js} +5 -1
  251. package/chunks/{zh-6ANG2HTL.js → zh-WY5DWYZD.js} +5 -1
  252. package/cli-entry.js +164 -12
  253. package/cli.js +18 -11
  254. package/locales/ca.js +772 -203
  255. package/locales/de.js +8 -2
  256. package/locales/en.js +8 -2
  257. package/locales/fr.js +8 -2
  258. package/locales/ja.js +8 -2
  259. package/locales/pt.js +8 -2
  260. package/locales/ru.js +8 -2
  261. package/locales/zh-TW.js +8 -2
  262. package/locales/zh.js +8 -2
  263. package/package.json +3 -3
  264. package/web-shell/assets/{arc-Buk1besA.js → arc-DIQrcXXh.js} +1 -1
  265. package/web-shell/assets/{architectureDiagram-3BPJPVTR-B1aUKYDC.js → architectureDiagram-3BPJPVTR-CbPd-DSw.js} +1 -1
  266. package/web-shell/assets/{blockDiagram-GPEHLZMM-CRTdg3Zx.js → blockDiagram-GPEHLZMM-yzBIVhMX.js} +1 -1
  267. package/web-shell/assets/{c4Diagram-AAUBKEIU-DFdRMp5g.js → c4Diagram-AAUBKEIU-B88Swcsu.js} +1 -1
  268. package/web-shell/assets/channel-BaTMUesZ.js +1 -0
  269. package/web-shell/assets/{chunk-2J33WTMH-4rYQdkEI.js → chunk-2J33WTMH-BbOLo6NX.js} +1 -1
  270. package/web-shell/assets/{chunk-4BX2VUAB-Coi-pQJy.js → chunk-4BX2VUAB-Bg6in0r0.js} +1 -1
  271. package/web-shell/assets/{chunk-55IACEB6-BtBjz02t.js → chunk-55IACEB6-Bv9QRyLI.js} +1 -1
  272. package/web-shell/assets/{chunk-727SXJPM-CGYOWorl.js → chunk-727SXJPM-CFokiv61.js} +1 -1
  273. package/web-shell/assets/{chunk-AQP2D5EJ-CH5AKhqx.js → chunk-AQP2D5EJ-DS2Oxf6L.js} +1 -1
  274. package/web-shell/assets/{chunk-FMBD7UC4-Cd50-w85.js → chunk-FMBD7UC4-D2NkHD3B.js} +1 -1
  275. package/web-shell/assets/{chunk-ND2GUHAM-C2wF3KCK.js → chunk-ND2GUHAM-BsT_UC5B.js} +1 -1
  276. package/web-shell/assets/{chunk-QZHKN3VN-pCeRTaWi.js → chunk-QZHKN3VN-tnJo3zln.js} +1 -1
  277. package/web-shell/assets/classDiagram-4FO5ZUOK-CyBPzWud.js +1 -0
  278. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CyBPzWud.js +1 -0
  279. package/web-shell/assets/{cose-bilkent-S5V4N54A-B-_fAB6D.js → cose-bilkent-S5V4N54A-BTMa6DAZ.js} +1 -1
  280. package/web-shell/assets/{dagre-BM42HDAG-ChSPNHpL.js → dagre-BM42HDAG-ujGX7Owg.js} +1 -1
  281. package/web-shell/assets/{diagram-2AECGRRQ-BX7cFOF3.js → diagram-2AECGRRQ-fU4-dbPa.js} +1 -1
  282. package/web-shell/assets/{diagram-5GNKFQAL-BQUTW92n.js → diagram-5GNKFQAL-Bdm-TYSA.js} +1 -1
  283. package/web-shell/assets/{diagram-KO2AKTUF-BkYPh3e4.js → diagram-KO2AKTUF-Bkhz85Z9.js} +1 -1
  284. package/web-shell/assets/{diagram-LMA3HP47-Cl6jsNyx.js → diagram-LMA3HP47-Bzu3q26p.js} +1 -1
  285. package/web-shell/assets/{diagram-OG6HWLK6-DRWoHz8n.js → diagram-OG6HWLK6-CZrXbG5Q.js} +1 -1
  286. package/web-shell/assets/{erDiagram-TEJ5UH35-CGvFcZco.js → erDiagram-TEJ5UH35-BjozEAYu.js} +1 -1
  287. package/web-shell/assets/{flowDiagram-I6XJVG4X-vms6oVdv.js → flowDiagram-I6XJVG4X-B3a2I8c-.js} +1 -1
  288. package/web-shell/assets/{ganttDiagram-6RSMTGT7-ukT_sfmi.js → ganttDiagram-6RSMTGT7-CIMn9fNm.js} +1 -1
  289. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Bn2ZE2Ut.js → gitGraphDiagram-PVQCEYII-DlFy9KRx.js} +1 -1
  290. package/web-shell/assets/{index-wFXp7W68.js → index-BODUAzQA.js} +1 -1
  291. package/web-shell/assets/index-C54DNMF7.js +1209 -0
  292. package/web-shell/assets/index-lWqBfc78.css +5 -0
  293. package/web-shell/assets/{infoDiagram-5YYISTIA-DHJdSi7x.js → infoDiagram-5YYISTIA-BmKjQgCy.js} +1 -1
  294. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DOvd2Wph.js → ishikawaDiagram-YF4QCWOH-BrQEMZz2.js} +1 -1
  295. package/web-shell/assets/{journeyDiagram-JHISSGLW-CH_urMCT.js → journeyDiagram-JHISSGLW-D-2r7Xrt.js} +1 -1
  296. package/web-shell/assets/{kanban-definition-UN3LZRKU-FKiBdgbH.js → kanban-definition-UN3LZRKU-CndsFHCX.js} +1 -1
  297. package/web-shell/assets/{linear-0ZVQFVKf.js → linear-D-IwNnKx.js} +1 -1
  298. package/web-shell/assets/{mermaid.core-DJ05ZZIK.js → mermaid.core-4ll09sri.js} +5 -5
  299. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BPuUhkUm.js → mindmap-definition-RKZ34NQL-maMRIxjo.js} +1 -1
  300. package/web-shell/assets/{pieDiagram-4H26LBE5-yLFKcXyG.js → pieDiagram-4H26LBE5-aunUDhrJ.js} +1 -1
  301. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-irWqc1pE.js → quadrantDiagram-W4KKPZXB-D3K0P1NZ.js} +1 -1
  302. package/web-shell/assets/{requirementDiagram-4Y6WPE33-B_4uMoIV.js → requirementDiagram-4Y6WPE33-CX2X9HRc.js} +1 -1
  303. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-ciA4GPwk.js → sankeyDiagram-5OEKKPKP-CDroWk7l.js} +1 -1
  304. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CRdZvy0U.js → sequenceDiagram-3UESZ5HK-DTk-2b16.js} +1 -1
  305. package/web-shell/assets/{stateDiagram-AJRCARHV-DaYIkCCn.js → stateDiagram-AJRCARHV-Cud64hQr.js} +1 -1
  306. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-g-uUpecT.js +1 -0
  307. package/web-shell/assets/{timeline-definition-PNZ67QCA-oBUKv6iH.js → timeline-definition-PNZ67QCA-DfD5okf_.js} +1 -1
  308. package/web-shell/assets/{vennDiagram-CIIHVFJN-CGW9Sdmb.js → vennDiagram-CIIHVFJN-BYl8ay25.js} +1 -1
  309. package/web-shell/assets/{wardley-L42UT6IY-CvwKJOCm.js → wardley-L42UT6IY-BZFAt10J.js} +1 -1
  310. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Ipc260sN.js → wardleyDiagram-YWT4CUSO-BIWn0GA7.js} +1 -1
  311. package/web-shell/assets/{xychartDiagram-2RQKCTM6-D6-CM7pK.js → xychartDiagram-2RQKCTM6-1_H4xblT.js} +1 -1
  312. package/web-shell/index.html +2 -2
  313. package/chunks/chunk-ETD6K42I.js +0 -358
  314. package/chunks/chunk-I5NLVPZJ.js +0 -45
  315. package/chunks/chunk-ONWW74X6.js +0 -74639
  316. package/chunks/chunk-W7FJ3N32.js +0 -49
  317. package/chunks/daemon-status-provider-LVTVJGAD.js +0 -77
  318. package/chunks/handleAutoUpdate-AAQ6PL3E.js +0 -70
  319. package/chunks/nonInteractiveCli-QTEHDDFH.js +0 -129
  320. package/chunks/updateCheck-JJEUQ54U.js +0 -73
  321. package/chunks/write-file-M2DTFILF.js +0 -599
  322. package/web-shell/assets/channel-04R0vLbG.js +0 -1
  323. package/web-shell/assets/classDiagram-4FO5ZUOK-Bw9SOwAV.js +0 -1
  324. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Bw9SOwAV.js +0 -1
  325. package/web-shell/assets/index-DgkKrjw3.js +0 -1187
  326. package/web-shell/assets/index-Rv6mOAN9.css +0 -5
  327. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DWBoO4UY.js +0 -1
@@ -339,6 +339,7 @@ var RestSseTransport = class {
339
339
  baseUrl;
340
340
  token;
341
341
  _fetch;
342
+ activeSseRequests = /* @__PURE__ */ new Set();
342
343
  _disposed = false;
343
344
  type = "rest";
344
345
  supportsReplay = true;
@@ -371,75 +372,86 @@ var RestSseTransport = class {
371
372
  if (this._disposed) {
372
373
  throw new DaemonTransportClosedError();
373
374
  }
374
- const headers = { Accept: "text/event-stream" };
375
- if (this.token) {
376
- headers["Authorization"] = `Bearer ${this.token}`;
377
- }
378
- if (opts.lastEventId !== void 0) {
379
- headers["Last-Event-ID"] = String(opts.lastEventId);
380
- }
381
- const connectCtrl = new AbortController();
382
- let connectTimer;
383
- const connectTimeoutMs = opts.connectTimeoutMs;
384
- if (connectTimeoutMs && Number.isFinite(connectTimeoutMs)) {
385
- connectTimer = setTimeout(
386
- () => connectCtrl.abort(
387
- new DOMException("Initial connect timed out", "TimeoutError")
388
- ),
389
- connectTimeoutMs
390
- );
391
- if (typeof connectTimer === "object" && connectTimer && "unref" in connectTimer) {
392
- connectTimer.unref();
393
- }
394
- }
395
- const fetchSignal = opts.signal ? composeAbortSignals([opts.signal, connectCtrl.signal]) : connectCtrl.signal;
396
- let url = `${this.baseUrl}/session/${encodeURIComponent(sessionId)}/events`;
397
- if (opts.maxQueued !== void 0) {
398
- url += `?maxQueued=${encodeURIComponent(String(opts.maxQueued))}`;
399
- }
400
- let res;
375
+ const requestCtrl = new AbortController();
376
+ this.activeSseRequests.add(requestCtrl);
401
377
  try {
402
- res = await this._fetch(url, { headers, signal: fetchSignal });
403
- } finally {
404
- if (connectTimer !== void 0) clearTimeout(connectTimer);
405
- }
406
- if (!res.ok) {
407
- let body;
378
+ const headers = { Accept: "text/event-stream" };
379
+ if (this.token) {
380
+ headers["Authorization"] = `Bearer ${this.token}`;
381
+ }
382
+ if (opts.lastEventId !== void 0) {
383
+ headers["Last-Event-ID"] = String(opts.lastEventId);
384
+ }
385
+ const fetchSignal = opts.signal ? composeAbortSignals([opts.signal, requestCtrl.signal]) : requestCtrl.signal;
386
+ let url = `${this.baseUrl}/session/${encodeURIComponent(sessionId)}/events`;
387
+ if (opts.maxQueued !== void 0) {
388
+ url += `?maxQueued=${encodeURIComponent(String(opts.maxQueued))}`;
389
+ }
390
+ let connectTimer;
391
+ const connectTimeoutMs = opts.connectTimeoutMs;
392
+ if (connectTimeoutMs && Number.isFinite(connectTimeoutMs)) {
393
+ connectTimer = setTimeout(
394
+ () => requestCtrl.abort(
395
+ new DOMException("Initial connect timed out", "TimeoutError")
396
+ ),
397
+ connectTimeoutMs
398
+ );
399
+ if (typeof connectTimer === "object" && connectTimer && "unref" in connectTimer) {
400
+ connectTimer.unref();
401
+ }
402
+ }
403
+ let res;
408
404
  try {
409
- const text = await res.text();
405
+ res = await this._fetch(url, { headers, signal: fetchSignal });
406
+ } finally {
407
+ if (connectTimer !== void 0) clearTimeout(connectTimer);
408
+ }
409
+ if (!res.ok) {
410
+ let body;
410
411
  try {
411
- body = JSON.parse(text);
412
+ const text = await res.text();
413
+ try {
414
+ body = JSON.parse(text);
415
+ } catch {
416
+ body = text;
417
+ }
412
418
  } catch {
413
- body = text;
414
419
  }
415
- } catch {
420
+ const detail = body && typeof body === "object" && "error" in body ? String(body.error) : `HTTP ${res.status}`;
421
+ throw new DaemonHttpError(
422
+ res.status,
423
+ body,
424
+ `GET /session/:id/events: ${detail}`
425
+ );
416
426
  }
417
- const detail = body && typeof body === "object" && "error" in body ? String(body.error) : `HTTP ${res.status}`;
418
- throw new DaemonHttpError(
419
- res.status,
420
- body,
421
- `GET /session/:id/events: ${detail}`
422
- );
423
- }
424
- const ct = res.headers.get("content-type") ?? "";
425
- if (!ct.toLowerCase().includes("text/event-stream")) {
426
- try {
427
- await res.body?.cancel();
428
- } catch {
427
+ const ct = res.headers.get("content-type") ?? "";
428
+ if (!ct.toLowerCase().includes("text/event-stream")) {
429
+ try {
430
+ await res.body?.cancel();
431
+ } catch {
432
+ }
433
+ throw new DaemonHttpError(
434
+ res.status,
435
+ ct,
436
+ `GET /session/:id/events: expected content-type text/event-stream, got "${ct}"`
437
+ );
429
438
  }
430
- throw new DaemonHttpError(
431
- res.status,
432
- ct,
433
- `GET /session/:id/events: expected content-type text/event-stream, got "${ct}"`
434
- );
435
- }
436
- if (!res.body) {
437
- throw new Error("No SSE body");
439
+ if (!res.body) {
440
+ throw new Error("No SSE body");
441
+ }
442
+ yield* parseSseStream(res.body, fetchSignal);
443
+ } finally {
444
+ requestCtrl.abort();
445
+ this.activeSseRequests.delete(requestCtrl);
438
446
  }
439
- yield* parseSseStream(res.body, opts.signal);
440
447
  }
441
448
  dispose() {
449
+ if (this._disposed) return;
442
450
  this._disposed = true;
451
+ for (const requestCtrl of this.activeSseRequests) {
452
+ requestCtrl.abort();
453
+ }
454
+ this.activeSseRequests.clear();
443
455
  }
444
456
  };
445
457
  function composeAbortSignals(signals) {
@@ -994,6 +1006,24 @@ var DaemonClient = class {
994
1006
  { mode: "rest" }
995
1007
  );
996
1008
  }
1009
+ async workspaceGitLog(limit, skip) {
1010
+ const params = new URLSearchParams();
1011
+ if (limit != null) params.set("limit", String(limit));
1012
+ if (skip != null) params.set("skip", String(skip));
1013
+ const qs = params.toString();
1014
+ return await this.jsonRequest(
1015
+ `/workspace/git/log${qs ? `?${qs}` : ""}`,
1016
+ "GET /workspace/git/log",
1017
+ { mode: "rest" }
1018
+ );
1019
+ }
1020
+ async workspaceGitCommitDetail(sha) {
1021
+ return await this.jsonRequest(
1022
+ `/workspace/git/log/commit?sha=${urlEncode(sha)}`,
1023
+ "GET /workspace/git/log/commit",
1024
+ { mode: "rest" }
1025
+ );
1026
+ }
997
1027
  async workspaceMcpTools(serverName) {
998
1028
  return await this.fetchWithTimeout(
999
1029
  `${this.baseUrl}/workspace/mcp/${urlEncode(serverName)}/tools`,
@@ -1036,28 +1066,21 @@ var DaemonClient = class {
1036
1066
  async workspaceAcpPreheat(timeoutMs) {
1037
1067
  const serverBudgetMs = timeoutMs ?? 5e3;
1038
1068
  const suffix = timeoutMs !== void 0 ? `?timeoutMs=${encodeURIComponent(timeoutMs)}` : "";
1039
- return await this.fetchWithTimeout(
1040
- `${this.baseUrl}/workspace/acp/preheat${suffix}`,
1041
- { method: "POST", headers: this.headers() },
1042
- async (res) => {
1043
- if (!res.ok) {
1044
- throw await this.failOnError(res, "POST /workspace/acp/preheat");
1045
- }
1046
- return await res.json();
1047
- },
1048
- serverBudgetMs + 2e3
1069
+ return await this.jsonRequest(
1070
+ `/workspace/acp/preheat${suffix}`,
1071
+ "POST /workspace/acp/preheat",
1072
+ {
1073
+ method: "POST",
1074
+ timeoutMs: serverBudgetMs + 2e3,
1075
+ mode: "rest"
1076
+ }
1049
1077
  );
1050
1078
  }
1051
1079
  async workspaceAcpStatus() {
1052
- return await this.fetchWithTimeout(
1053
- `${this.baseUrl}/workspace/acp/status`,
1054
- { headers: this.headers() },
1055
- async (res) => {
1056
- if (!res.ok) {
1057
- throw await this.failOnError(res, "GET /workspace/acp/status");
1058
- }
1059
- return await res.json();
1060
- }
1080
+ return await this.jsonRequest(
1081
+ "/workspace/acp/status",
1082
+ "GET /workspace/acp/status",
1083
+ { mode: "rest" }
1061
1084
  );
1062
1085
  }
1063
1086
  async workspaceProviders() {
@@ -1742,7 +1765,8 @@ var DaemonClient = class {
1742
1765
  ...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
1743
1766
  ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
1744
1767
  ...req.sourceType !== void 0 ? { sourceType: req.sourceType } : {},
1745
- ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {}
1768
+ ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {},
1769
+ ...req.worktree !== void 0 ? { worktree: req.worktree } : {}
1746
1770
  })
1747
1771
  },
1748
1772
  async (res) => {
@@ -1856,6 +1880,20 @@ var DaemonClient = class {
1856
1880
  }
1857
1881
  );
1858
1882
  }
1883
+ async resolveSubagentSession(sessionId, toolCallId, clientId) {
1884
+ return await this.jsonRequest(
1885
+ `/session/${urlEncode(sessionId)}/subagents/${urlEncode(toolCallId)}`,
1886
+ "GET /session/:id/subagents/:toolCallId",
1887
+ { clientId, mode: "rest" }
1888
+ );
1889
+ }
1890
+ async cancelSubagentSession(sessionId, toolCallId, clientId) {
1891
+ return await this.jsonRequest(
1892
+ `/session/${urlEncode(sessionId)}/subagents/${urlEncode(toolCallId)}/cancel`,
1893
+ "POST /session/:id/subagents/:toolCallId/cancel",
1894
+ { clientId, mode: "rest", method: "POST" }
1895
+ );
1896
+ }
1859
1897
  async resumeSession(sessionId, req = {}, clientId) {
1860
1898
  return this.restoreSession("resume", sessionId, req, clientId);
1861
1899
  }
@@ -3336,7 +3374,8 @@ var DaemonClient = class {
3336
3374
  headers: this.headers({ "Content-Type": "application/json" }),
3337
3375
  body: JSON.stringify({
3338
3376
  cwd,
3339
- ...options.persist ? { persist: true } : {}
3377
+ ...options.persist ? { persist: true } : {},
3378
+ ...options.displayName !== void 0 ? { displayName: options.displayName } : {}
3340
3379
  })
3341
3380
  },
3342
3381
  async (res) => {
@@ -3347,6 +3386,31 @@ var DaemonClient = class {
3347
3386
  }
3348
3387
  );
3349
3388
  }
3389
+ async updateWorkspace(workspaceSelector, update) {
3390
+ return await this.workspaceJsonRequest(
3391
+ urlEncode(workspaceSelector),
3392
+ "",
3393
+ "PATCH /workspaces/:workspace",
3394
+ { method: "PATCH", body: update, mode: "rest" }
3395
+ );
3396
+ }
3397
+ /** Requests a process-local workspace in a daemon-managed empty directory. */
3398
+ async addScratchWorkspace() {
3399
+ return await this.fetchWithTimeout(
3400
+ `${this.baseUrl}/workspaces`,
3401
+ {
3402
+ method: "POST",
3403
+ headers: this.headers({ "Content-Type": "application/json" }),
3404
+ body: JSON.stringify({ kind: "scratch" })
3405
+ },
3406
+ async (res) => {
3407
+ if (!res.ok) {
3408
+ throw await this.failOnError(res, "POST /workspaces");
3409
+ }
3410
+ return await res.json();
3411
+ }
3412
+ );
3413
+ }
3350
3414
  // -- Lifecycle / disposal ------------------------------------------------
3351
3415
  /**
3352
3416
  * Release transport resources (WS close, etc.). Idempotent.
@@ -3456,10 +3520,11 @@ var WorkspaceDaemonClient = class {
3456
3520
  opts
3457
3521
  );
3458
3522
  }
3459
- workspaceGit() {
3523
+ workspaceGit(cwd) {
3524
+ const suffix = cwd ? `/git?cwd=${encodeURIComponent(cwd)}` : "/git";
3460
3525
  return this.client.workspaceJsonRequest(
3461
3526
  this.workspaceSelector,
3462
- "/git",
3527
+ suffix,
3463
3528
  "GET /workspaces/:workspace/git",
3464
3529
  { mode: "rest" }
3465
3530
  );
@@ -3481,6 +3546,26 @@ var WorkspaceDaemonClient = class {
3481
3546
  { mode: "rest" }
3482
3547
  );
3483
3548
  }
3549
+ workspaceGitLog(limit, skip) {
3550
+ const params = new URLSearchParams();
3551
+ if (limit != null) params.set("limit", String(limit));
3552
+ if (skip != null) params.set("skip", String(skip));
3553
+ const qs = params.toString();
3554
+ return this.client.workspaceJsonRequest(
3555
+ this.workspaceSelector,
3556
+ `/git/log${qs ? `?${qs}` : ""}`,
3557
+ "GET /workspaces/:workspace/git/log",
3558
+ { mode: "rest" }
3559
+ );
3560
+ }
3561
+ workspaceGitCommitDetail(sha) {
3562
+ return this.client.workspaceJsonRequest(
3563
+ this.workspaceSelector,
3564
+ `/git/log/commit?sha=${urlEncode(sha)}`,
3565
+ "GET /workspaces/:workspace/git/log/commit",
3566
+ { mode: "rest" }
3567
+ );
3568
+ }
3484
3569
  workspaceSkills() {
3485
3570
  return this.get("/skills", "GET /workspaces/:workspace/skills");
3486
3571
  }
@@ -4071,6 +4156,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
4071
4156
  get clientId() {
4072
4157
  return this.session.clientId;
4073
4158
  }
4159
+ get worktree() {
4160
+ return this.session.worktree;
4161
+ }
4074
4162
  get lastEventId() {
4075
4163
  return this.lastSeenEventId;
4076
4164
  }
@@ -6277,26 +6365,43 @@ function extractServerTimestamp(event) {
6277
6365
  }
6278
6366
  if (isRecord2(event.data)) {
6279
6367
  const dataMeta = event.data["_meta"];
6368
+ const update = event.data["update"];
6369
+ const updateMeta = isRecord2(update) ? update["_meta"] : void 0;
6280
6370
  if (isRecord2(dataMeta)) {
6281
6371
  const ts = dataMeta["serverTimestamp"];
6282
6372
  if (typeof ts === "number" && Number.isFinite(ts)) return ts;
6283
6373
  }
6284
- const update = event.data["update"];
6285
- if (isRecord2(update)) {
6286
- const updateMeta = update["_meta"];
6287
- if (isRecord2(updateMeta)) {
6288
- const serverTs = updateMeta["serverTimestamp"];
6289
- if (typeof serverTs === "number" && Number.isFinite(serverTs)) {
6290
- return serverTs;
6291
- }
6292
- const ts = updateMeta["timestamp"];
6293
- if (typeof ts === "number" && Number.isFinite(ts)) return ts;
6374
+ if (isRecord2(updateMeta)) {
6375
+ const serverTs = updateMeta["serverTimestamp"];
6376
+ if (typeof serverTs === "number" && Number.isFinite(serverTs)) {
6377
+ return serverTs;
6294
6378
  }
6295
6379
  }
6380
+ const timestampCandidates = [
6381
+ isRecord2(updateMeta) ? updateMeta["timestamp"] : void 0,
6382
+ isRecord2(update) ? update["timestamp"] : void 0,
6383
+ isRecord2(dataMeta) ? dataMeta["timestamp"] : void 0,
6384
+ event.data["timestamp"]
6385
+ ];
6386
+ for (const candidate of timestampCandidates) {
6387
+ const timestamp = parseTimestamp(candidate);
6388
+ if (timestamp !== void 0) return timestamp;
6389
+ }
6296
6390
  }
6297
6391
  return void 0;
6298
6392
  }
6299
6393
  __name(extractServerTimestamp, "extractServerTimestamp");
6394
+ function parseTimestamp(value) {
6395
+ if (typeof value === "number" && Number.isFinite(value)) return value;
6396
+ if (typeof value !== "string") return void 0;
6397
+ if (/^\d+$/.test(value)) {
6398
+ const numeric = Number(value);
6399
+ return Number.isFinite(numeric) ? numeric : void 0;
6400
+ }
6401
+ const parsed = Date.parse(value);
6402
+ return Number.isFinite(parsed) ? parsed : void 0;
6403
+ }
6404
+ __name(parseTimestamp, "parseTimestamp");
6300
6405
  function normalizeSessionUpdate(event, base, opts) {
6301
6406
  const update = getSessionUpdatePayload(event.data);
6302
6407
  if (!update) {
@@ -6489,7 +6594,8 @@ function normalizeToolUpdate(update, base) {
6489
6594
  const metadata = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6490
6595
  const toolName = getString2(update, "toolName") ?? getString2(update, "name") ?? (metadata ? getString2(metadata, "toolName") : void 0) ?? (metadata ? getString2(metadata, "name") : void 0);
6491
6596
  const toolKind = getString2(update, "kind");
6492
- const title = getString2(update, "title") ?? toolName ?? toolKind;
6597
+ const explicitTitle = getString2(update, "title");
6598
+ const title = explicitTitle ?? (getString2(update, "sessionUpdate") === "tool_call" ? toolName ?? toolKind : void 0);
6493
6599
  const rawInputSource = update["rawInput"] ?? update["input"] ?? update["args"];
6494
6600
  const rawOutputSource = update["rawOutput"] ?? update["output"] ?? update["result"];
6495
6601
  const rawInput = rawInputSource !== void 0 ? redactSensitiveFields(rawInputSource) : void 0;
@@ -7618,7 +7724,8 @@ function createDaemonTranscriptState(opts = {}) {
7618
7724
  resyncRequiredCount: 0,
7619
7725
  nextOrdinal: 1,
7620
7726
  now: opts.now ?? Date.now(),
7621
- maxBlocks: opts.maxBlocks ?? DEFAULT_MAX_BLOCKS
7727
+ maxBlocks: opts.maxBlocks ?? DEFAULT_MAX_BLOCKS,
7728
+ retainSubagentBlocks: opts.retainSubagentBlocks ?? true
7622
7729
  };
7623
7730
  if (opts.onTruncation) truncationCallbacks.set(state, opts.onTruncation);
7624
7731
  return state;
@@ -7737,6 +7844,7 @@ function applyDaemonTranscriptEvent(next, event) {
7737
7844
  break;
7738
7845
  }
7739
7846
  case "assistant.text.delta":
7847
+ if (event.parentToolCallId && !next.retainSubagentBlocks) break;
7740
7848
  appendTextDelta(
7741
7849
  next,
7742
7850
  "assistant",
@@ -7752,9 +7860,14 @@ function applyDaemonTranscriptEvent(next, event) {
7752
7860
  }
7753
7861
  break;
7754
7862
  case "assistant.usage":
7755
- applyAssistantUsage(next, event);
7863
+ if (event.parentToolCallId && !next.retainSubagentBlocks) {
7864
+ applySubagentUsageToParentTool(next, event);
7865
+ } else {
7866
+ applyAssistantUsage(next, event);
7867
+ }
7756
7868
  break;
7757
7869
  case "thought.text.delta":
7870
+ if (event.parentToolCallId && !next.retainSubagentBlocks) break;
7758
7871
  appendTextDelta(
7759
7872
  next,
7760
7873
  "thought",
@@ -7764,6 +7877,10 @@ function applyDaemonTranscriptEvent(next, event) {
7764
7877
  );
7765
7878
  break;
7766
7879
  case "tool.update":
7880
+ if (event.parentToolCallId && !next.retainSubagentBlocks) {
7881
+ discardToolBlock(next, event.toolCallId);
7882
+ break;
7883
+ }
7767
7884
  upsertToolBlock(next, event);
7768
7885
  break;
7769
7886
  case "shell.output":
@@ -7919,6 +8036,35 @@ function applyAssistantUsage(state, event) {
7919
8036
  block.updatedAt = state.now;
7920
8037
  }
7921
8038
  __name(applyAssistantUsage, "applyAssistantUsage");
8039
+ function applySubagentUsageToParentTool(state, event) {
8040
+ if (!event.parentToolCallId) return;
8041
+ const block = getWritableBlockById(
8042
+ state,
8043
+ state.toolBlockByCallId[event.parentToolCallId]
8044
+ );
8045
+ if (block?.kind !== "tool") return;
8046
+ const current = isRecord2(block.rawOutput) ? block.rawOutput : void 0;
8047
+ const currentSummary = isRecord2(current?.["executionSummary"]) ? current["executionSummary"] : void 0;
8048
+ const inputTokens = finiteNumber(currentSummary?.["inputTokens"]) + event.usage.inputTokens;
8049
+ const outputTokens = finiteNumber(currentSummary?.["outputTokens"]) + event.usage.outputTokens;
8050
+ const cachedTokens = finiteNumber(currentSummary?.["cachedTokens"]) + (event.usage.cachedTokens ?? 0);
8051
+ block.rawOutput = {
8052
+ ...current ?? { type: "task_execution", status: "running" },
8053
+ executionSummary: {
8054
+ ...currentSummary ?? {},
8055
+ inputTokens,
8056
+ outputTokens,
8057
+ cachedTokens,
8058
+ totalTokens: inputTokens + outputTokens
8059
+ }
8060
+ };
8061
+ block.updatedAt = state.now;
8062
+ }
8063
+ __name(applySubagentUsageToParentTool, "applySubagentUsageToParentTool");
8064
+ function finiteNumber(value) {
8065
+ return typeof value === "number" && Number.isFinite(value) ? value : 0;
8066
+ }
8067
+ __name(finiteNumber, "finiteNumber");
7922
8068
  function clearActiveThought(state, event) {
7923
8069
  finalizeStreamingTextBlock(state, state.activeThoughtBlockId, event);
7924
8070
  state.activeThoughtBlockId = void 0;
@@ -8021,6 +8167,11 @@ function finishAssistant(state, event) {
8021
8167
  }
8022
8168
  __name(finishAssistant, "finishAssistant");
8023
8169
  function upsertToolBlock(state, event) {
8170
+ const compactTaskOutput = !state.retainSubagentBlocks && isRecord2(event.rawOutput) && event.rawOutput["type"] === "task_execution";
8171
+ let rawOutput = compactTaskExecutionOutput(
8172
+ event.rawOutput,
8173
+ state.retainSubagentBlocks
8174
+ );
8024
8175
  const existingId = state.toolBlockByCallId[event.toolCallId];
8025
8176
  if (existingId === TRIMMED_TOOL_BLOCK_ID) {
8026
8177
  if (shouldRecreateTrimmedToolBlock(event)) {
@@ -8054,10 +8205,49 @@ function upsertToolBlock(state, event) {
8054
8205
  existing.updatedAt = state.now;
8055
8206
  if (event.eventId !== void 0) existing.eventId = event.eventId;
8056
8207
  if (event.details) existing.details = event.details;
8057
- if (event.content !== void 0) existing.content = event.content;
8208
+ if (compactTaskOutput) delete existing.content;
8209
+ else if (event.content !== void 0) existing.content = event.content;
8058
8210
  if (event.locations !== void 0) existing.locations = event.locations;
8059
8211
  if (event.rawInput !== void 0) existing.rawInput = event.rawInput;
8060
- if (event.rawOutput !== void 0) existing.rawOutput = event.rawOutput;
8212
+ if (rawOutput !== void 0) {
8213
+ if (compactTaskOutput && isRecord2(rawOutput) && isRecord2(existing.rawOutput)) {
8214
+ const prevSummary = isRecord2(existing.rawOutput["executionSummary"]) ? existing.rawOutput["executionSummary"] : void 0;
8215
+ const nextSummary = isRecord2(rawOutput["executionSummary"]) ? rawOutput["executionSummary"] : void 0;
8216
+ if (prevSummary && nextSummary) {
8217
+ const inputTokens = Math.max(
8218
+ finiteNumber(prevSummary["inputTokens"]),
8219
+ finiteNumber(nextSummary["inputTokens"])
8220
+ );
8221
+ const outputTokens = Math.max(
8222
+ finiteNumber(prevSummary["outputTokens"]),
8223
+ finiteNumber(nextSummary["outputTokens"])
8224
+ );
8225
+ rawOutput = {
8226
+ ...rawOutput,
8227
+ executionSummary: {
8228
+ ...nextSummary,
8229
+ inputTokens,
8230
+ outputTokens,
8231
+ cachedTokens: Math.max(
8232
+ finiteNumber(prevSummary["cachedTokens"]),
8233
+ finiteNumber(nextSummary["cachedTokens"])
8234
+ ),
8235
+ totalTokens: Math.max(
8236
+ finiteNumber(prevSummary["totalTokens"]),
8237
+ finiteNumber(nextSummary["totalTokens"]),
8238
+ inputTokens + outputTokens
8239
+ )
8240
+ }
8241
+ };
8242
+ } else if (prevSummary) {
8243
+ rawOutput = {
8244
+ ...rawOutput,
8245
+ executionSummary: { ...prevSummary }
8246
+ };
8247
+ }
8248
+ }
8249
+ existing.rawOutput = rawOutput;
8250
+ }
8061
8251
  existing.sourceRecordIds = unionStrings(
8062
8252
  existing.sourceRecordIds,
8063
8253
  event.sourceRecordIds
@@ -8098,10 +8288,10 @@ function upsertToolBlock(state, event) {
8098
8288
  ...event.serverTimestamp !== void 0 ? { serverTimestamp: event.serverTimestamp } : {},
8099
8289
  ...event.sourceRecordIds ? { sourceRecordIds: [...event.sourceRecordIds] } : {},
8100
8290
  ...event.details ? { details: event.details } : {},
8101
- ...event.content !== void 0 ? { content: event.content } : {},
8291
+ ...!compactTaskOutput && event.content !== void 0 ? { content: event.content } : {},
8102
8292
  ...event.locations !== void 0 ? { locations: event.locations } : {},
8103
8293
  ...event.rawInput !== void 0 ? { rawInput: event.rawInput } : {},
8104
- ...event.rawOutput !== void 0 ? { rawOutput: event.rawOutput } : {},
8294
+ ...rawOutput !== void 0 ? { rawOutput } : {},
8105
8295
  ...event.toolName ? { toolName: event.toolName } : {},
8106
8296
  ...event.toolKind ? { toolKind: event.toolKind } : {},
8107
8297
  ...event.parentToolCallId ? { parentToolCallId: event.parentToolCallId } : {},
@@ -8122,6 +8312,38 @@ function upsertToolBlock(state, event) {
8122
8312
  clearActiveText(state, event.parentToolCallId);
8123
8313
  }
8124
8314
  __name(upsertToolBlock, "upsertToolBlock");
8315
+ function discardToolBlock(state, toolCallId) {
8316
+ const blockId = state.toolBlockByCallId[toolCallId];
8317
+ if (!blockId || blockId === TRIMMED_TOOL_BLOCK_ID) return;
8318
+ takeBlocksOwnership(state);
8319
+ state.blocks = state.blocks.filter((block) => block.id !== blockId);
8320
+ state.blockIndexById = rebuildDaemonTranscriptBlockIndex(state.blocks);
8321
+ delete state.toolBlockByCallId[toolCallId];
8322
+ delete state.toolProgress[toolCallId];
8323
+ if (state.currentToolCallId === toolCallId) {
8324
+ state.currentToolCallId = void 0;
8325
+ }
8326
+ }
8327
+ __name(discardToolBlock, "discardToolBlock");
8328
+ function compactTaskExecutionOutput(rawOutput, retainSubagentBlocks) {
8329
+ if (retainSubagentBlocks || !isRecord2(rawOutput) || rawOutput["type"] !== "task_execution") {
8330
+ return rawOutput;
8331
+ }
8332
+ const compact = { type: "task_execution" };
8333
+ for (const key of [
8334
+ "subagentName",
8335
+ "subagentColor",
8336
+ "taskDescription",
8337
+ "status",
8338
+ "terminateReason",
8339
+ "tokenCount",
8340
+ "executionSummary"
8341
+ ]) {
8342
+ if (rawOutput[key] !== void 0) compact[key] = rawOutput[key];
8343
+ }
8344
+ return compact;
8345
+ }
8346
+ __name(compactTaskExecutionOutput, "compactTaskExecutionOutput");
8125
8347
  function updateCurrentToolPointer(state, toolCallId, status) {
8126
8348
  if (status === void 0) return;
8127
8349
  if (IN_FLIGHT_TOOL_STATUSES.has(status)) {
@@ -8351,6 +8573,7 @@ function cloneTranscriptState(state, opts) {
8351
8573
  ...state,
8352
8574
  now: opts.now ?? Date.now(),
8353
8575
  maxBlocks: opts.maxBlocks ?? state.maxBlocks,
8576
+ retainSubagentBlocks: opts.retainSubagentBlocks ?? state.retainSubagentBlocks,
8354
8577
  // Lazy copy-on-write for
8355
8578
  // `blocks` + `blockIndexById`. Eager `[...state.blocks]` defeated the
8356
8579
  // `sortedBlocksCache` / `childrenIndexCache` WeakMaps — every dispatch
@@ -8820,6 +9043,7 @@ function createDaemonTranscriptStore(seed = {}) {
8820
9043
  reset(nextSeed = {}) {
8821
9044
  state = createState({
8822
9045
  maxBlocks: nextSeed.maxBlocks ?? state.maxBlocks,
9046
+ retainSubagentBlocks: nextSeed.retainSubagentBlocks ?? state.retainSubagentBlocks,
8823
9047
  ...nextSeed
8824
9048
  });
8825
9049
  scheduleNotify();
@@ -8929,7 +9153,7 @@ function daemonUiEventToTerminalText(event) {
8929
9153
  case "tool.update":
8930
9154
  return terminalLine(
8931
9155
  `tool ${event.status}`,
8932
- `${event.title}${event.details ? ` ${event.details}` : ""}`,
9156
+ `${event.title ?? event.toolName ?? event.toolKind ?? "Tool"}${event.details ? ` ${event.details}` : ""}`,
8933
9157
  "38;5;75"
8934
9158
  );
8935
9159
  case "shell.output":