@qwen-code/qwen-code 0.21.13 → 0.21.14

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 (293) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +13 -7
  2. package/bundled/qc-helper/docs/features/code-review.md +5 -1
  3. package/bundled/qc-helper/docs/features/commands.md +120 -8
  4. package/bundled/qc-helper/docs/features/sub-agents.md +2 -2
  5. package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +1 -1
  6. package/bundled/qc-helper/docs/qwen-serve.md +20 -3
  7. package/bundled/review/SKILL.md +50 -30
  8. package/chunks/{MaxSizedBox-UQALOVVT.js → MaxSizedBox-67IDQILY.js} +24 -23
  9. package/chunks/{StandaloneSessionPicker-KEGXNUG6.js → StandaloneSessionPicker-G4QJIRMH.js} +41 -40
  10. package/chunks/{acp-startup-profiler-NMDXYGDN.js → acp-startup-profiler-HUYGO57H.js} +2 -2
  11. package/chunks/{acpAgent-XPES32S7.js → acpAgent-BS3YYO33.js} +626 -141
  12. package/chunks/{agent-DPTOZFEM.js → agent-EHHEXKWN.js} +22 -21
  13. package/chunks/{agent-headless-GJCQMURW.js → agent-headless-UT2ZF76T.js} +22 -21
  14. package/chunks/{anthropicContentGenerator-G7BVXTKN.js → anthropicContentGenerator-M7XRJMSK.js} +3 -3
  15. package/chunks/{bridge-YNQBAA4Z.js → bridge-WQ4IL2RF.js} +26 -25
  16. package/chunks/{ca-4CQ6MYNQ.js → ca-SLZJD6QH.js} +8 -0
  17. package/chunks/{channel-management-service-GWY2GAIC.js → channel-management-service-X6LCQUAD.js} +1 -1
  18. package/chunks/{channel-settings-store-WNWYFHG7.js → channel-settings-store-ZDFXY7VY.js} +30 -29
  19. package/chunks/{channel-worker-group-7LXCMZ77.js → channel-worker-group-TJ35JDPE.js} +2 -2
  20. package/chunks/{channel-worker-manager-RYEME4ZZ.js → channel-worker-manager-G5LKWGOG.js} +2 -2
  21. package/chunks/{chunk-4PKCUT7F.js → chunk-2A6VQJYK.js} +6 -6
  22. package/chunks/chunk-2C6HJMG3.js +757 -0
  23. package/chunks/chunk-3PWCMXIR.js +9169 -0
  24. package/chunks/{chunk-BVJS5BSP.js → chunk-3PWNVF6N.js} +1 -1
  25. package/chunks/{chunk-X26JYGTD.js → chunk-3SL2P3WX.js} +1 -1
  26. package/chunks/{chunk-ZYBBISBY.js → chunk-3YRVPHT3.js} +15 -12
  27. package/chunks/{chunk-AS5IN4GK.js → chunk-47L5MLB5.js} +3 -3
  28. package/chunks/{chunk-3U3VAL47.js → chunk-4SR45OM4.js} +1 -1
  29. package/chunks/{chunk-OMLJNPBE.js → chunk-4ZMS3JCR.js} +1 -0
  30. package/chunks/{chunk-UKMR3CKV.js → chunk-4ZS3BLER.js} +3 -3
  31. package/chunks/{chunk-5EYKMUUY.js → chunk-544KT7X4.js} +1 -1
  32. package/chunks/{chunk-TUGSVUJB.js → chunk-55VKMB7X.js} +5 -5
  33. package/chunks/{chunk-GO7STP6N.js → chunk-5IJSFWQO.js} +4 -4
  34. package/chunks/{chunk-A4QRWUDE.js → chunk-5IYS4WWR.js} +1 -1
  35. package/chunks/{chunk-TS6625XH.js → chunk-5MK45KZ3.js} +9 -5
  36. package/chunks/{chunk-MLPXSYXR.js → chunk-6BJSYAML.js} +25 -16
  37. package/chunks/{chunk-V57QC6WW.js → chunk-6LAPGPVA.js} +5 -3
  38. package/chunks/{chunk-NNHNLJ2X.js → chunk-6RDZLBSJ.js} +240 -42
  39. package/chunks/{chunk-ZZO74WKW.js → chunk-73JUK3ZW.js} +24 -18
  40. package/chunks/{chunk-N5YPT6PH.js → chunk-7VNHO4MN.js} +7 -4
  41. package/chunks/{chunk-OVZPVYZB.js → chunk-AKBOLMUF.js} +95 -17
  42. package/chunks/{chunk-NHDR76JX.js → chunk-BQWNIPTE.js} +1 -1
  43. package/chunks/{chunk-IWPYVAO2.js → chunk-C3T6M24E.js} +2 -2
  44. package/chunks/{chunk-NM5V5OVW.js → chunk-CEXU72GE.js} +2 -2
  45. package/chunks/{chunk-AA2BEKV3.js → chunk-CH5OFRV7.js} +1 -1
  46. package/chunks/{chunk-MS7GNABG.js → chunk-CXJHQVEK.js} +8 -0
  47. package/chunks/{chunk-E23IPNGS.js → chunk-CZK622ZK.js} +12 -3
  48. package/chunks/{chunk-K5IDV3PC.js → chunk-D34RDOLP.js} +12 -2
  49. package/chunks/{chunk-OXCMMLED.js → chunk-DGJ7O55J.js} +1 -1
  50. package/chunks/{chunk-DGK6P3BQ.js → chunk-DHUPMYMC.js} +10 -10
  51. package/chunks/{chunk-O4D7SPJN.js → chunk-DRAONPUW.js} +3 -3
  52. package/chunks/{chunk-P7MPQI75.js → chunk-DVR7XKO5.js} +1 -1
  53. package/chunks/{chunk-PP4FUZNV.js → chunk-E5WQMF3K.js} +2 -2
  54. package/chunks/{chunk-4NFY2S7N.js → chunk-E7REAOTN.js} +15 -0
  55. package/chunks/{chunk-ZYYTZUI2.js → chunk-EOPBFLA5.js} +3 -3
  56. package/chunks/{chunk-OOQUVWIG.js → chunk-FN6M5WUL.js} +4 -4
  57. package/chunks/{chunk-DGZEMW5R.js → chunk-FS5NGKWC.js} +1 -1
  58. package/chunks/{chunk-MRMJCLIY.js → chunk-G6KI5UOJ.js} +2 -2
  59. package/chunks/{chunk-6ORZ2EDC.js → chunk-H3SHU2XU.js} +1 -1
  60. package/chunks/{chunk-GMIEIY3Y.js → chunk-I3N2Z25H.js} +1 -1
  61. package/chunks/{chunk-BHILXOC3.js → chunk-J63PKMYA.js} +1 -1
  62. package/chunks/{chunk-KD5BOPLP.js → chunk-J6YS7Z25.js} +98 -4
  63. package/chunks/chunk-K2Y45XXS.js +3887 -0
  64. package/chunks/{chunk-RVOJ2FBP.js → chunk-KC4WMLZO.js} +1486 -10574
  65. package/chunks/{chunk-LJQAUZMR.js → chunk-L3T4V5GZ.js} +925 -92
  66. package/chunks/{chunk-M6NDLY2T.js → chunk-LD5VIJ7S.js} +1 -1
  67. package/chunks/{chunk-RIAABG2K.js → chunk-LSO6EL4Y.js} +1 -1
  68. package/chunks/{chunk-XHRY7BXD.js → chunk-MDIGJH5X.js} +3 -3
  69. package/chunks/{chunk-MC4TLKEI.js → chunk-MVHJZ3FZ.js} +2 -2
  70. package/chunks/{chunk-YEYY7TEP.js → chunk-N6RSOOWJ.js} +5 -5
  71. package/chunks/{chunk-OD2WU5QY.js → chunk-NRPXRNN4.js} +1 -1
  72. package/chunks/{chunk-CKSJECTU.js → chunk-NVRMCWTP.js} +8 -4
  73. package/chunks/{chunk-Y3YCSWG5.js → chunk-OBJYN4MX.js} +1 -1
  74. package/chunks/{chunk-GGDBMYGZ.js → chunk-OEYAK5O6.js} +3 -3
  75. package/chunks/{chunk-6YKYPVDV.js → chunk-OEZCXK7Y.js} +3 -3
  76. package/chunks/{chunk-4S5337WV.js → chunk-OFTPCOGR.js} +4312 -2704
  77. package/chunks/{chunk-7UXUJ5T3.js → chunk-OJB5FYVK.js} +1 -1
  78. package/chunks/{chunk-WFSTRPRO.js → chunk-OJOP26ET.js} +1 -1
  79. package/chunks/{chunk-TIGA2IVL.js → chunk-OO4FKHLO.js} +2 -2
  80. package/chunks/{chunk-BZ263IKX.js → chunk-OVY67CYC.js} +1 -1
  81. package/chunks/{chunk-PQ36L4F5.js → chunk-P3AA6S7O.js} +1 -1
  82. package/chunks/{chunk-CU6GJD55.js → chunk-PCETXVVV.js} +1 -1
  83. package/chunks/{chunk-AFSG32D5.js → chunk-PHN4R2ZV.js} +1 -1
  84. package/chunks/{chunk-QF2NHSPB.js → chunk-PJSD2FOR.js} +233 -184
  85. package/chunks/{chunk-NEFOOD54.js → chunk-QAVTWAHL.js} +2 -2
  86. package/chunks/{chunk-AW4TRXOC.js → chunk-QEHH23OM.js} +1 -1
  87. package/chunks/{chunk-CZBYX5MY.js → chunk-QEJZUXSK.js} +1 -1
  88. package/chunks/{chunk-XIT3GURH.js → chunk-QRVHGEVY.js} +3 -3
  89. package/chunks/{chunk-M732YJPW.js → chunk-RXHBTKMG.js} +2 -2
  90. package/chunks/{chunk-JOOFMXGF.js → chunk-S7N3HUIB.js} +5 -5
  91. package/chunks/{chunk-76J3IJ3M.js → chunk-SCZU65AI.js} +3 -3
  92. package/chunks/{chunk-QIH2HAEN.js → chunk-SFJMFZT5.js} +1 -1
  93. package/chunks/{chunk-JNDY2MDR.js → chunk-SFTKAX4O.js} +1 -1
  94. package/chunks/{chunk-WSH6GRKG.js → chunk-SLILKYV2.js} +2 -2
  95. package/chunks/{chunk-DXIBNLBZ.js → chunk-SNQZZ765.js} +1 -1
  96. package/chunks/{chunk-V26NVGAU.js → chunk-TSMPNGBC.js} +8 -3
  97. package/chunks/{chunk-QV5YN5YD.js → chunk-U657UZJN.js} +5 -5
  98. package/chunks/{chunk-QNQAPSN2.js → chunk-UC67T4SF.js} +3 -1
  99. package/chunks/{chunk-O565M6A4.js → chunk-UYDGFWIJ.js} +199 -14
  100. package/chunks/{chunk-OY5RNSV4.js → chunk-V6WEMZPD.js} +3 -3
  101. package/chunks/{chunk-A267JX7H.js → chunk-VFP5YOHJ.js} +6 -6
  102. package/chunks/{chunk-HUTNYWBG.js → chunk-VTOLYFWM.js} +18 -10
  103. package/chunks/{chunk-EZ5RP345.js → chunk-W7EYJGN7.js} +40 -9
  104. package/chunks/{chunk-BKPPWD33.js → chunk-WAO53ZQF.js} +1 -1
  105. package/chunks/{chunk-S5DWMTHO.js → chunk-WP4WIUOJ.js} +2 -0
  106. package/chunks/{chunk-25EYDK42.js → chunk-WPVUOVYX.js} +1 -1
  107. package/chunks/{chunk-AXN7UPYQ.js → chunk-WSSH2BNO.js} +1 -1
  108. package/chunks/chunk-WZAD4ZNJ.js +59 -0
  109. package/chunks/{chunk-JUEPY766.js → chunk-XITLNXLX.js} +2 -2
  110. package/chunks/{chunk-EL5SXY3T.js → chunk-XT4RKHVE.js} +2 -2
  111. package/chunks/{chunk-IGGGG5CX.js → chunk-XYRBK56E.js} +4635 -1655
  112. package/chunks/{chunk-UZPM4XHR.js → chunk-Y4RVDOXV.js} +29 -8
  113. package/chunks/{chunk-QRCNA3SR.js → chunk-Y7QY6DKW.js} +49 -69
  114. package/chunks/{chunk-FDGGZIYW.js → chunk-YECDICIO.js} +2 -2
  115. package/chunks/{chunk-46UV252V.js → chunk-YHC2EYYG.js} +35 -38
  116. package/chunks/{chunk-U3VNBPUO.js → chunk-YHXQK4SR.js} +2 -2
  117. package/chunks/{chunk-A4MFR4C5.js → chunk-ZIGC3MUS.js} +2 -4
  118. package/chunks/{computer-use-77C5FHMW.js → computer-use-YORZJQE5.js} +22 -21
  119. package/chunks/{config-utils-IVHRSXWI.js → config-utils-NJQA5YLJ.js} +2 -2
  120. package/chunks/{contextCommand-PJ77GBWL.js → contextCommand-PACHGIF4.js} +24 -23
  121. package/chunks/{core-runtime-7VMIKUTG.js → core-runtime-6HD5DSPX.js} +22 -21
  122. package/chunks/{create-sub-session-2L5MQRN4.js → create-sub-session-IQFIPUQA.js} +26 -24
  123. package/chunks/{cron-create-H7UEPDSN.js → cron-create-NFRZEOQX.js} +2 -2
  124. package/chunks/{cron-delete-6SZK7YFM.js → cron-delete-GFVSVO7C.js} +2 -2
  125. package/chunks/{cron-list-H25JIHEZ.js → cron-list-NRW34CLU.js} +2 -2
  126. package/chunks/{daemon-2KTG7ZBN.js → daemon-XH76IXOC.js} +356 -21
  127. package/chunks/{daemon-git-worktree-guard-DXYIMWFT.js → daemon-git-worktree-guard-6P27GKSU.js} +24 -23
  128. package/chunks/{daemon-status-provider-ZDOYJCU6.js → daemon-status-provider-SXS66ZIR.js} +31 -30
  129. package/chunks/{daemon-trust-policy-E67OYUK2.js → daemon-trust-policy-5QJHAS3N.js} +29 -28
  130. package/chunks/{daemon-trust-policy-monitor-RYYGCQ3J.js → daemon-trust-policy-monitor-JA2WZRZ3.js} +29 -28
  131. package/chunks/{de-UBEBKG6V.js → de-AH4LGCF5.js} +8 -0
  132. package/chunks/{deferred-core-runtime-3SGXFXEQ.js → deferred-core-runtime-R2VWOVG3.js} +22 -21
  133. package/chunks/{discovery-ORA5J7YP.js → discovery-X2NV535U.js} +1 -1
  134. package/chunks/{dist-WJ4BHIEW.js → dist-ESS34DHC.js} +72 -0
  135. package/chunks/{earlyInputCapture-KJMLFVQV.js → earlyInputCapture-PQEEOFKJ.js} +22 -21
  136. package/chunks/{edit-I4LQFAEC.js → edit-RASZHTU2.js} +25 -23
  137. package/chunks/{en-X6YV7GME.js → en-MD3GP5YL.js} +8 -0
  138. package/chunks/{enter-worktree-YNPOJSRH.js → enter-worktree-CH5OMHJE.js} +22 -21
  139. package/chunks/{enterPlanMode-XCPK62ER.js → enterPlanMode-AQKR3CAH.js} +22 -21
  140. package/chunks/{environment-S7CTIHMX.js → environment-7QRYIEBA.js} +25 -24
  141. package/chunks/{errors-7HB2AIDS.js → errors-P2LL5452.js} +24 -23
  142. package/chunks/{exit-worktree-AIIY7SR6.js → exit-worktree-WUDL26CY.js} +22 -21
  143. package/chunks/{exitPlanMode-R4JY7V2O.js → exitPlanMode-JM75SAUI.js} +22 -21
  144. package/chunks/{fast-path-NDJV3ZFJ.js → fast-path-KVNSOHVA.js} +3 -3
  145. package/chunks/{fast-path-settings-LNOFM2YP.js → fast-path-settings-WHX3J3ZI.js} +2 -2
  146. package/chunks/{fr-VENTC2BS.js → fr-ZEML2JWS.js} +8 -0
  147. package/chunks/{gemini-RSUFP5OE.js → gemini-ADMD2EOS.js} +62 -61
  148. package/chunks/{geminiContentGenerator-SQ5XBPZ7.js → geminiContentGenerator-CS3M7SOS.js} +3 -3
  149. package/chunks/{glob-J4RUJAHX.js → glob-WIJOGYVV.js} +22 -21
  150. package/chunks/{goal-tools-VHTNVOKK.js → goal-tools-K5OHOJ6B.js} +1 -1
  151. package/chunks/{grep-VJWPLFOT.js → grep-CIFRQBR7.js} +22 -21
  152. package/chunks/{handleAutoUpdate-POCX2MNB.js → handleAutoUpdate-KJ4SN7DM.js} +26 -25
  153. package/chunks/{i18n-RM5YOICI.js → i18n-36SZUO4C.js} +23 -22
  154. package/chunks/{image-gen-EXECB5XM.js → image-gen-R4B5VUYB.js} +2 -2
  155. package/chunks/{initializer-Z2AFGBNR.js → initializer-CW5YCAOL.js} +29 -28
  156. package/chunks/{installationInfo-4I5FXNMH.js → installationInfo-NMQIOUGY.js} +23 -22
  157. package/chunks/{ja-QHT4EQTO.js → ja-UM5B2HMD.js} +8 -0
  158. package/chunks/{list-ZMBFIGZA.js → list-HHGT3S4P.js} +32 -31
  159. package/chunks/{loadedSettingsAdapter-T6TV4YJ7.js → loadedSettingsAdapter-SJ2MJF35.js} +29 -28
  160. package/chunks/{loggingContentGenerator-WF4ZOJEZ.js → loggingContentGenerator-GR2QQ2C5.js} +12 -10
  161. package/chunks/{loop-wakeup-WQS6JYAG.js → loop-wakeup-HWVUU5CF.js} +3 -3
  162. package/chunks/{managed-npm-update-E7IW6N7V.js → managed-npm-update-ADQJHKTO.js} +23 -22
  163. package/chunks/{mcp-6UNYX4HG.js → mcp-QW3OTL5W.js} +29 -28
  164. package/chunks/{monitor-EE2UYMGE.js → monitor-RJKPVERH.js} +22 -21
  165. package/chunks/{nonInteractiveCli-WAY237O4.js → nonInteractiveCli-MROMHSTL.js} +59 -57
  166. package/chunks/{notebook-edit-NTDY4QDU.js → notebook-edit-2ENWDBZO.js} +26 -24
  167. package/chunks/{openaiContentGenerator-YNFVJMRJ.js → openaiContentGenerator-Z3GPWJU4.js} +12 -11
  168. package/chunks/{pidfile-4XSFLYBZ.js → pidfile-5G42YSTP.js} +22 -21
  169. package/chunks/{processUtils-WDA2MJFD.js → processUtils-ZDMXYKQY.js} +2 -2
  170. package/chunks/{pt-VL3I5RNY.js → pt-5BMJ3XYH.js} +8 -0
  171. package/chunks/{qwenContentGenerator-434M7QKY.js → qwenContentGenerator-NLEMBZVU.js} +25 -24
  172. package/chunks/{qwenOAuth2-GMYZOO6A.js → qwenOAuth2-EBV52DWJ.js} +3 -3
  173. package/chunks/{read-file-TAFBKMNI.js → read-file-5BYIF53O.js} +9 -7
  174. package/chunks/{record-artifact-SEYFJEJF.js → record-artifact-GLU3UWBV.js} +3 -1
  175. package/chunks/{resumeHistoryUtils-EVG3WYK2.js → resumeHistoryUtils-AFTBRS3G.js} +25 -24
  176. package/chunks/{ripGrep-WOEK2PXS.js → ripGrep-NN7AOLQY.js} +22 -21
  177. package/chunks/{ru-4RCKL4PY.js → ru-6GL66ORV.js} +8 -0
  178. package/chunks/{run-qwen-serve-3QSGRXAN.js → run-qwen-serve-UR3DYDAF.js} +49 -40
  179. package/chunks/{runtime-5MLLZ7DC.js → runtime-PR5RKGNH.js} +32 -31
  180. package/chunks/{scheduler-RPBJ63CH.js → scheduler-GPMLVKJM.js} +24 -23
  181. package/chunks/{sdk-exporters-http-XUVP63H6.js → sdk-exporters-http-NC746HLT.js} +2 -2
  182. package/chunks/{sdk-impl-YXUEN2Z2.js → sdk-impl-YVL7BP6Y.js} +2 -2
  183. package/chunks/{send-message-VZENRWRH.js → send-message-TNBG5EVA.js} +1 -1
  184. package/chunks/{serve-HS3XLPXU.js → serve-E7V2JVA2.js} +29 -30
  185. package/chunks/{server-TC4A7AAZ.js → server-YXB3DBN7.js} +1267 -165
  186. package/chunks/{session-UBOFXVMN.js → session-DZEAUT7S.js} +60 -58
  187. package/chunks/{settings-D5644OM5.js → settings-ESZ3NWAP.js} +28 -27
  188. package/chunks/{shell-3PZULQQV.js → shell-JMSK5WIL.js} +22 -21
  189. package/chunks/{skill-PEVVXQ3L.js → skill-5K5CSUJV.js} +11 -9
  190. package/chunks/{skill-settings-J65JKKES.js → skill-settings-V64NIOTI.js} +28 -27
  191. package/chunks/{spawnChannel-IYGXRHSQ.js → spawnChannel-S63APBZZ.js} +24 -23
  192. package/chunks/{standalone-update-IFM53PE7.js → standalone-update-P42HDFXX.js} +24 -23
  193. package/chunks/{startInteractiveUI-3AVH7L6H.js → startInteractiveUI-LFBLFHJ4.js} +262 -191
  194. package/chunks/{task-create-FCBDX7UH.js → task-create-EILHJJB7.js} +4 -4
  195. package/chunks/{task-list-YIYIUFUA.js → task-list-WGJR6YL5.js} +18 -4
  196. package/chunks/{task-update-MYPFVOVM.js → task-update-XZAHVXJ5.js} +79 -8
  197. package/chunks/{team-create-ZAIA7KAV.js → team-create-EDNOUM2U.js} +23 -23
  198. package/chunks/{team-delete-6UMU4XLS.js → team-delete-UEP4QOOT.js} +3 -3
  199. package/chunks/{team-plan-approval-UNIUS7OD.js → team-plan-approval-QRSNK2DX.js} +22 -21
  200. package/chunks/{terminal-image-renderer-G343P2RV.js → terminal-image-renderer-6J2NPL32.js} +22 -21
  201. package/chunks/{theme-manager-Z3RIT7DB.js → theme-manager-WJMLRBXS.js} +22 -21
  202. package/chunks/{todoWrite-U2R4NVF4.js → todoWrite-ATS62CAP.js} +1 -1
  203. package/chunks/{tool-search-5R2OE4C7.js → tool-search-MZ6WU7DM.js} +9 -7
  204. package/chunks/{total-session-admission-4KBHMQQ2.js → total-session-admission-DQVW2LIP.js} +26 -25
  205. package/chunks/{trustedFolders-LK6T4XC7.js → trustedFolders-QMH25GOX.js} +23 -22
  206. package/chunks/{update-relaunch-UBKROIC6.js → update-relaunch-EG75LLW5.js} +5 -5
  207. package/chunks/{updateCheck-W4Y2GFSD.js → updateCheck-MTZIVGT5.js} +25 -24
  208. package/chunks/{useAutoAcceptIndicator-C7BEICBF.js → useAutoAcceptIndicator-IGCW5EPO.js} +31 -30
  209. package/chunks/{validateNonInterActiveAuth-LTEI2TB6.js → validateNonInterActiveAuth-D5FPAB2C.js} +56 -54
  210. package/chunks/{version-G5A5DGVS.js → version-UOLDLLRB.js} +1 -1
  211. package/chunks/{web-fetch-RTEQTR5Z.js → web-fetch-QKKW6CWH.js} +11 -8
  212. package/chunks/{web-search-5OXHEZPV.js → web-search-JYRBZMCW.js} +2 -2
  213. package/chunks/{workflow-ISQJHPG2.js → workflow-SR7SEAU7.js} +139 -37
  214. package/chunks/{workspace-providers-status-2ZPZPUPZ.js → workspace-providers-status-OXGV4EFF.js} +32 -31
  215. package/chunks/{workspace-registration-store-CYNY6IP6.js → workspace-registration-store-V5EGKLBH.js} +1 -1
  216. package/chunks/{workspace-registry-34GTUUHB.js → workspace-registry-KJVIYTF5.js} +26 -25
  217. package/chunks/{workspace-service-XCDQLE2Y.js → workspace-service-6RLSGUB5.js} +33 -32
  218. package/chunks/{workspace-skills-status-RS4O7AIJ.js → workspace-skills-status-BHFEPDGH.js} +30 -29
  219. package/chunks/{workspace-trust-reconciler-AYGXC7A3.js → workspace-trust-reconciler-DB5ERSUN.js} +33 -32
  220. package/chunks/{write-file-EWXKVVXF.js → write-file-IUP4GTZ4.js} +22 -21
  221. package/chunks/{zh-TW-SQ4HTSCW.js → zh-TW-LVLBK4KF.js} +8 -0
  222. package/chunks/{zh-LMSTK4WD.js → zh-UBMWS2BJ.js} +8 -0
  223. package/chunks/{zoom-image-4BFYJ3HG.js → zoom-image-SRBDTIVA.js} +14 -11
  224. package/cli.js +13 -13
  225. package/locales/ca.js +13 -0
  226. package/locales/de.js +12 -0
  227. package/locales/en.js +11 -0
  228. package/locales/fr.js +13 -0
  229. package/locales/ja.js +13 -0
  230. package/locales/pt.js +12 -0
  231. package/locales/ru.js +12 -0
  232. package/locales/zh-TW.js +11 -0
  233. package/locales/zh.js +11 -0
  234. package/package.json +3 -3
  235. package/web-shell/assets/{arc-CgOpDKvm.js → arc-DItbX0DI.js} +1 -1
  236. package/web-shell/assets/{architectureDiagram-3BPJPVTR-0Ag_m34F.js → architectureDiagram-3BPJPVTR-CmnIlH8y.js} +1 -1
  237. package/web-shell/assets/{blockDiagram-GPEHLZMM-IwTwFau0.js → blockDiagram-GPEHLZMM-pObnB9kw.js} +1 -1
  238. package/web-shell/assets/{c4Diagram-AAUBKEIU-DLa5GUv8.js → c4Diagram-AAUBKEIU-BNBmMS0Y.js} +1 -1
  239. package/web-shell/assets/channel-hZnMfWA9.js +1 -0
  240. package/web-shell/assets/{chunk-2J33WTMH-DcYP-WFG.js → chunk-2J33WTMH-Dz4JBOO6.js} +1 -1
  241. package/web-shell/assets/{chunk-4BX2VUAB-C8MVPMiQ.js → chunk-4BX2VUAB-Cz2GnvAR.js} +1 -1
  242. package/web-shell/assets/{chunk-55IACEB6-BUi4Yfv3.js → chunk-55IACEB6-CC6kOQYx.js} +1 -1
  243. package/web-shell/assets/{chunk-727SXJPM-Cy3Su2YY.js → chunk-727SXJPM-Z4lY4gbh.js} +1 -1
  244. package/web-shell/assets/{chunk-AQP2D5EJ-Dp8Teqv6.js → chunk-AQP2D5EJ-Yz0hZr3D.js} +1 -1
  245. package/web-shell/assets/{chunk-FMBD7UC4-BDTDM-4j.js → chunk-FMBD7UC4-nKmTWTv9.js} +1 -1
  246. package/web-shell/assets/{chunk-ND2GUHAM-7HfDt0r2.js → chunk-ND2GUHAM-CjZz0f6Y.js} +1 -1
  247. package/web-shell/assets/{chunk-QZHKN3VN-BIBU0uCF.js → chunk-QZHKN3VN-Bab3FpuS.js} +1 -1
  248. package/web-shell/assets/classDiagram-4FO5ZUOK-BRnxm8DX.js +1 -0
  249. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BRnxm8DX.js +1 -0
  250. package/web-shell/assets/{cose-bilkent-S5V4N54A-DRLdcg9p.js → cose-bilkent-S5V4N54A-BuSAGFox.js} +1 -1
  251. package/web-shell/assets/{dagre-BM42HDAG-DCCgDwqW.js → dagre-BM42HDAG-CRZXTg3g.js} +1 -1
  252. package/web-shell/assets/{diagram-2AECGRRQ-CsBTBmk3.js → diagram-2AECGRRQ-BFx1Ayrz.js} +1 -1
  253. package/web-shell/assets/{diagram-5GNKFQAL-C9qjH8Lt.js → diagram-5GNKFQAL-B2hMZ3gS.js} +1 -1
  254. package/web-shell/assets/{diagram-KO2AKTUF-Brjs_lj2.js → diagram-KO2AKTUF-DKxAQLmc.js} +1 -1
  255. package/web-shell/assets/{diagram-LMA3HP47-DtiWCl_F.js → diagram-LMA3HP47-Bo1xGqVY.js} +1 -1
  256. package/web-shell/assets/{diagram-OG6HWLK6-DmfKLkBT.js → diagram-OG6HWLK6-B9NG78d-.js} +1 -1
  257. package/web-shell/assets/{erDiagram-TEJ5UH35-Bve_4deH.js → erDiagram-TEJ5UH35-DltQKiqQ.js} +1 -1
  258. package/web-shell/assets/{flowDiagram-I6XJVG4X-C2_kXCcV.js → flowDiagram-I6XJVG4X-5xXGmS4I.js} +1 -1
  259. package/web-shell/assets/{ganttDiagram-6RSMTGT7-BSBIjiTF.js → ganttDiagram-6RSMTGT7-bhGL5n0l.js} +1 -1
  260. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-CyebwI55.js → gitGraphDiagram-PVQCEYII-ZYnz9hgh.js} +1 -1
  261. package/web-shell/assets/{index-d0yfnV1M.js → index-CBBeUArD.js} +1 -1
  262. package/web-shell/assets/index-CbgU-jUo.css +5 -0
  263. package/web-shell/assets/index-_nhzXqab.js +1750 -0
  264. package/web-shell/assets/{infoDiagram-5YYISTIA-CSDGnWxU.js → infoDiagram-5YYISTIA-Cg-jamQf.js} +1 -1
  265. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-BK4jU13p.js → ishikawaDiagram-YF4QCWOH-CcmvKlyq.js} +1 -1
  266. package/web-shell/assets/{journeyDiagram-JHISSGLW-D_W6j-oF.js → journeyDiagram-JHISSGLW-BRsOQZp1.js} +1 -1
  267. package/web-shell/assets/{kanban-definition-UN3LZRKU-C7xf-SdC.js → kanban-definition-UN3LZRKU-xW-dmEHK.js} +1 -1
  268. package/web-shell/assets/{linear-DQmzxpxd.js → linear-ClBfEZH2.js} +1 -1
  269. package/web-shell/assets/{mermaid.core-9P7AGOLG.js → mermaid.core-D65NDkzc.js} +5 -5
  270. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DgcgMyPk.js → mindmap-definition-RKZ34NQL-CyvFslYa.js} +1 -1
  271. package/web-shell/assets/{pieDiagram-4H26LBE5-3wWGb9eG.js → pieDiagram-4H26LBE5-BwSefMyG.js} +1 -1
  272. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BeCXnQw9.js → quadrantDiagram-W4KKPZXB-GqBJspFS.js} +1 -1
  273. package/web-shell/assets/{requirementDiagram-4Y6WPE33-Bi1UOHDz.js → requirementDiagram-4Y6WPE33-B137PlTJ.js} +1 -1
  274. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-lrLUjjbb.js → sankeyDiagram-5OEKKPKP-maHkkt8i.js} +1 -1
  275. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-BFuqKz6Q.js → sequenceDiagram-3UESZ5HK-DJ1mRaG3.js} +1 -1
  276. package/web-shell/assets/{stateDiagram-AJRCARHV-8DemQLhu.js → stateDiagram-AJRCARHV-aRmP7Q4i.js} +1 -1
  277. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-Db39gvZ_.js +1 -0
  278. package/web-shell/assets/{timeline-definition-PNZ67QCA-uzEuVQXg.js → timeline-definition-PNZ67QCA-CIQ3BRPA.js} +1 -1
  279. package/web-shell/assets/{vennDiagram-CIIHVFJN-BQTeZ_-o.js → vennDiagram-CIIHVFJN-DR9VPd5h.js} +1 -1
  280. package/web-shell/assets/{wardley-L42UT6IY-B6yM5Im7.js → wardley-L42UT6IY-ZcfIbT4D.js} +1 -1
  281. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-ChM8bmgn.js → wardleyDiagram-YWT4CUSO-D0jgPi4T.js} +1 -1
  282. package/web-shell/assets/{xychartDiagram-2RQKCTM6-oNG6HyB1.js → xychartDiagram-2RQKCTM6-BGWU4s5o.js} +1 -1
  283. package/web-shell/index.html +2 -2
  284. package/chunks/chunk-MPHPFVKK.js +0 -48
  285. package/chunks/chunk-RLKC46YT.js +0 -3582
  286. package/chunks/chunk-UPDOZBWO.js +0 -358
  287. package/web-shell/assets/channel-BrGVBa2L.js +0 -1
  288. package/web-shell/assets/classDiagram-4FO5ZUOK-B5TUzJzI.js +0 -1
  289. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-B5TUzJzI.js +0 -1
  290. package/web-shell/assets/index-CIDsgxTe.js +0 -1792
  291. package/web-shell/assets/index-DiQnWi_E.css +0 -5
  292. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DhM5ixYd.js +0 -1
  293. /package/chunks/{chunk-NTTBXH7U.js → chunk-UGK4K2N2.js} +0 -0
@@ -2198,6 +2198,22 @@ var DaemonClient = class {
2198
2198
  "GET /workspace/sessions"
2199
2199
  );
2200
2200
  }
2201
+ /**
2202
+ * Read the memory-only live-state snapshot for a workspace via
2203
+ * `GET /workspaces/:workspace/sessions/live-state`: the complete set of
2204
+ * live sessions with volatile state plus the in-memory catalog version
2205
+ * equality token. Always uses native REST transport (never the pluggable
2206
+ * ACP transport).
2207
+ *
2208
+ * This method deliberately does not pre-flight
2209
+ * `requireCapability('workspace_session_live_state')` — a capability
2210
+ * probe on every poll would double request volume. Consumers preflight
2211
+ * the capability once from their already-loaded capabilities and fall
2212
+ * back to the full session catalog when it is absent.
2213
+ */
2214
+ getWorkspaceSessionLiveState(workspaceCwd, opts = {}) {
2215
+ return this.workspaceByCwd(workspaceCwd).getSessionLiveState(opts);
2216
+ }
2201
2217
  async listSessionGroups(workspaceCwd) {
2202
2218
  return await this.jsonRequest(
2203
2219
  `/workspace/${urlEncode(workspaceCwd)}/session-groups`,
@@ -2644,11 +2660,76 @@ var DaemonClient = class {
2644
2660
  if (!res.ok) throw await this.failOnError(res, "POST /session/:id/btw");
2645
2661
  return await res.json();
2646
2662
  }
2663
+ async uploadSessionMedia(sessionId, data, mimeType, opts) {
2664
+ return await this.fetchWithTimeout(
2665
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/media`,
2666
+ {
2667
+ method: "POST",
2668
+ headers: this.headers({ "Content-Type": mimeType }, opts?.clientId),
2669
+ body: data,
2670
+ signal: opts?.signal
2671
+ },
2672
+ async (res) => {
2673
+ if (!res.ok) {
2674
+ throw await this.failOnError(res, "POST /session/:id/media");
2675
+ }
2676
+ return await res.json();
2677
+ }
2678
+ );
2679
+ }
2680
+ async readSessionMedia(sessionId, mediaId, opts) {
2681
+ return await this.fetchWithTimeout(
2682
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/media/${urlEncode(mediaId)}`,
2683
+ {
2684
+ method: "GET",
2685
+ headers: this.headers({}, opts?.clientId),
2686
+ signal: opts?.signal
2687
+ },
2688
+ async (res) => {
2689
+ if (!res.ok) {
2690
+ throw await this.failOnError(res, "GET /session/:id/media/:mediaId");
2691
+ }
2692
+ const bytes = new Uint8Array(await res.arrayBuffer());
2693
+ let binary = "";
2694
+ for (let offset = 0; offset < bytes.length; offset += 32768) {
2695
+ binary += String.fromCharCode(
2696
+ ...bytes.subarray(offset, offset + 32768)
2697
+ );
2698
+ }
2699
+ return {
2700
+ data: btoa(binary),
2701
+ mimeType: res.headers.get("content-type") ?? "application/octet-stream"
2702
+ };
2703
+ }
2704
+ );
2705
+ }
2706
+ async removeSessionMedia(sessionId, mediaId, opts) {
2707
+ return await this.fetchWithTimeout(
2708
+ `${this.baseUrl}/session/${urlEncode(sessionId)}/media/${urlEncode(mediaId)}`,
2709
+ {
2710
+ method: "DELETE",
2711
+ headers: this.headers({}, opts?.clientId),
2712
+ signal: opts?.signal
2713
+ },
2714
+ async (res) => {
2715
+ if (!res.ok) {
2716
+ throw await this.failOnError(
2717
+ res,
2718
+ "DELETE /session/:id/media/:mediaId"
2719
+ );
2720
+ }
2721
+ return (await res.json()).removed === true;
2722
+ }
2723
+ );
2724
+ }
2647
2725
  /**
2648
2726
  * Queue a user message typed while the session's turn is still running. The
2649
2727
  * ACP child drains it between tool batches so the model sees it before the
2650
2728
  * turn ends. Every accepted request is daemon-owned; a caller-supplied id
2651
- * makes ambiguous retries idempotent.
2729
+ * makes ambiguous retries idempotent. `opts.content` carries media content
2730
+ * image blocks alongside the text — pre-flight the
2731
+ * `session_media` capability; older daemons ignore the
2732
+ * field and drop the media.
2652
2733
  */
2653
2734
  async enqueueMidTurnMessage(sessionId, message, opts) {
2654
2735
  return await this.fetchWithTimeout(
@@ -2659,7 +2740,11 @@ var DaemonClient = class {
2659
2740
  { "Content-Type": "application/json" },
2660
2741
  opts?.clientId
2661
2742
  ),
2662
- body: JSON.stringify({ message, messageId: opts?.messageId }),
2743
+ body: JSON.stringify({
2744
+ message,
2745
+ messageId: opts?.messageId,
2746
+ ...opts?.content && opts.content.length > 0 ? { content: opts.content } : {}
2747
+ }),
2663
2748
  signal: opts?.signal
2664
2749
  },
2665
2750
  async (res) => {
@@ -4595,6 +4680,26 @@ var WorkspaceDaemonClient = class {
4595
4680
  getWorkspaceSessionInfo() {
4596
4681
  return this.get("/session-info", "GET /workspaces/:workspace/session-info");
4597
4682
  }
4683
+ /**
4684
+ * Read the memory-only live-state snapshot for this workspace: the
4685
+ * complete set of live sessions with volatile state plus the in-memory
4686
+ * catalog version equality token. Always uses native REST transport
4687
+ * (never the pluggable ACP transport).
4688
+ *
4689
+ * This method deliberately does not pre-flight
4690
+ * `requireCapability('workspace_session_live_state')` — a capability
4691
+ * probe on every poll would double request volume. Consumers preflight
4692
+ * the capability once from their already-loaded capabilities and fall
4693
+ * back to the full session catalog when it is absent.
4694
+ */
4695
+ getSessionLiveState(opts = {}) {
4696
+ return this.client.workspaceJsonRequest(
4697
+ this.workspaceSelector,
4698
+ "/sessions/live-state",
4699
+ "GET /workspaces/:workspace/sessions/live-state",
4700
+ { clientId: opts.clientId, timeoutMs: opts.timeoutMs, mode: "rest" }
4701
+ );
4702
+ }
4598
4703
  /**
4599
4704
  * Read one page from an active persisted session transcript in this
4600
4705
  * workspace.
@@ -4625,6 +4730,14 @@ var WorkspaceDaemonClient = class {
4625
4730
  opts
4626
4731
  );
4627
4732
  }
4733
+ updateSessionMetadata(sessionId, metadata, clientId) {
4734
+ return this.client.workspaceJsonRequest(
4735
+ this.workspaceSelector,
4736
+ `/session/${urlEncode(sessionId)}/metadata`,
4737
+ "PATCH /workspaces/:workspace/session/:id/metadata",
4738
+ { method: "PATCH", body: metadata, clientId, mode: "rest" }
4739
+ );
4740
+ }
4628
4741
  listSessionGroups() {
4629
4742
  return this.get(
4630
4743
  "/session-groups",
@@ -4983,6 +5096,14 @@ __name(isNonBlockingAccepted, "isNonBlockingAccepted");
4983
5096
 
4984
5097
  // packages/sdk-typescript/src/daemon/DaemonSessionClient.ts
4985
5098
  init_esbuild_shims();
5099
+ function isSessionMediaReference(value) {
5100
+ if (!value || typeof value !== "object" || Array.isArray(value)) return false;
5101
+ const record = value;
5102
+ return record["type"] === "image" && typeof record["mediaId"] === "string" && record["mediaId"].length > 0 && typeof record["mimeType"] === "string" && record["mimeType"].startsWith(`${record["type"]}/`) && typeof record["size"] === "number" && Number.isSafeInteger(record["size"]) && record["size"] > 0;
5103
+ }
5104
+ __name(isSessionMediaReference, "isSessionMediaReference");
5105
+ var MAX_MEDIA_CACHE_BYTES = 32 * 1024 * 1024;
5106
+ var MAX_MEDIA_CACHE_ENTRIES = 128;
4986
5107
  var DaemonSessionClient = class _DaemonSessionClient {
4987
5108
  static {
4988
5109
  __name(this, "DaemonSessionClient");
@@ -5024,6 +5145,8 @@ var DaemonSessionClient = class _DaemonSessionClient {
5024
5145
  reattaching;
5025
5146
  cancelling;
5026
5147
  promptLimit;
5148
+ mediaCache = /* @__PURE__ */ new Map();
5149
+ mediaCacheBytes = 0;
5027
5150
  _pendingPrompts = /* @__PURE__ */ new Map();
5028
5151
  constructor(opts) {
5029
5152
  this.client = opts.client;
@@ -5083,7 +5206,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
5083
5206
  eventEpoch,
5084
5207
  ...session
5085
5208
  } = restored;
5086
- return new _DaemonSessionClient({
5209
+ const result = new _DaemonSessionClient({
5087
5210
  client,
5088
5211
  session,
5089
5212
  hasActivePrompt,
@@ -5101,6 +5224,8 @@ var DaemonSessionClient = class _DaemonSessionClient {
5101
5224
  historyAnchorRecordId,
5102
5225
  replayDegraded
5103
5226
  });
5227
+ await result.hydrateReplaySnapshot();
5228
+ return result;
5104
5229
  }
5105
5230
  /**
5106
5231
  * Resumes an existing daemon session without requesting history replay.
@@ -5233,6 +5358,29 @@ var DaemonSessionClient = class _DaemonSessionClient {
5233
5358
  }
5234
5359
  return accepted;
5235
5360
  }
5361
+ async uploadMedia(data, mimeType, signal) {
5362
+ return await this.withClientIdSelfHeal(
5363
+ () => this.client.uploadSessionMedia(this.sessionId, data, mimeType, {
5364
+ ...signal ? { signal } : {},
5365
+ ...this.clientId ? { clientId: this.clientId } : {}
5366
+ })
5367
+ );
5368
+ }
5369
+ async removeMedia(mediaId) {
5370
+ const removed = await this.withClientIdSelfHeal(
5371
+ () => this.client.removeSessionMedia(
5372
+ this.sessionId,
5373
+ mediaId,
5374
+ this.clientId ? { clientId: this.clientId } : void 0
5375
+ )
5376
+ );
5377
+ if (removed) {
5378
+ const cached = this.mediaCache.get(mediaId);
5379
+ this.mediaCache.delete(mediaId);
5380
+ this.mediaCacheBytes -= cached?.size ?? 0;
5381
+ }
5382
+ return removed;
5383
+ }
5236
5384
  /**
5237
5385
  * Run a prompt-admission call, recovering from a stale `clientId`.
5238
5386
  *
@@ -5377,6 +5525,7 @@ var DaemonSessionClient = class _DaemonSessionClient {
5377
5525
  return await this.client.enqueueMidTurnMessage(this.sessionId, message, {
5378
5526
  ...opts?.signal ? { signal: opts.signal } : {},
5379
5527
  ...opts?.messageId ? { messageId: opts.messageId } : {},
5528
+ ...opts?.content && opts.content.length > 0 ? { content: opts.content } : {},
5380
5529
  ...this.clientId ? { clientId: this.clientId } : {}
5381
5530
  });
5382
5531
  }
@@ -5393,15 +5542,44 @@ var DaemonSessionClient = class _DaemonSessionClient {
5393
5542
  * callers preserve their current state.
5394
5543
  */
5395
5544
  async getMidTurnMessages(opts) {
5396
- return await this.client.getMidTurnMessages(this.sessionId, {
5545
+ const result = await this.client.getMidTurnMessages(this.sessionId, {
5397
5546
  ...opts?.signal ? { signal: opts.signal } : {},
5398
5547
  ...this.clientId ? { clientId: this.clientId } : {}
5399
5548
  });
5549
+ return {
5550
+ ...result,
5551
+ messages: await Promise.all(
5552
+ result.messages.map(async (message) => ({
5553
+ ...message,
5554
+ ...message.content ? { content: await this.hydrateContent(message.content) } : {}
5555
+ }))
5556
+ )
5557
+ };
5400
5558
  }
5401
5559
  async getPendingPrompts() {
5402
- return await this.client.getPendingPrompts(this.sessionId, {
5560
+ const result = await this.client.getPendingPrompts(this.sessionId, {
5403
5561
  ...this.clientId ? { clientId: this.clientId } : {}
5404
5562
  });
5563
+ return {
5564
+ pendingPrompts: await Promise.all(
5565
+ result.pendingPrompts.map(async (prompt) => ({
5566
+ ...prompt,
5567
+ ...prompt.content ? { content: await this.hydrateContent(prompt.content) } : {}
5568
+ }))
5569
+ )
5570
+ };
5571
+ }
5572
+ async getTranscriptPage(opts = {}) {
5573
+ const page = await this.client.getSessionTranscriptPage(this.sessionId, {
5574
+ ...opts,
5575
+ clientId: opts.clientId ?? this.clientId
5576
+ });
5577
+ return {
5578
+ ...page,
5579
+ events: await Promise.all(
5580
+ page.events.map(async (event) => await this.hydrateEvent(event))
5581
+ )
5582
+ };
5405
5583
  }
5406
5584
  async removePendingPrompt(promptId) {
5407
5585
  return await this.client.removePendingPrompt(this.sessionId, promptId, {
@@ -5581,8 +5759,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
5581
5759
  callerOnEpoch?.(learned);
5582
5760
  }, "onEpoch")
5583
5761
  })) {
5584
- this._dispatchTurnEvent(event);
5585
- yield event;
5762
+ const hydratedEvent = await this.hydrateEvent(event);
5763
+ this._dispatchTurnEvent(hydratedEvent);
5764
+ yield hydratedEvent;
5586
5765
  if (event.id !== void 0) {
5587
5766
  this.lastSeenEventId = Math.max(
5588
5767
  this.lastSeenEventId ?? 0,
@@ -5595,6 +5774,107 @@ var DaemonSessionClient = class _DaemonSessionClient {
5595
5774
  release();
5596
5775
  }
5597
5776
  }
5777
+ async hydrateReplaySnapshot() {
5778
+ this.replaySnapshot.compactedReplay = await Promise.all(
5779
+ this.replaySnapshot.compactedReplay.map(
5780
+ async (event) => await this.hydrateEvent(event)
5781
+ )
5782
+ );
5783
+ this.replaySnapshot.liveJournal = await Promise.all(
5784
+ this.replaySnapshot.liveJournal.map(
5785
+ async (event) => await this.hydrateEvent(event)
5786
+ )
5787
+ );
5788
+ }
5789
+ async hydrateEvent(event) {
5790
+ if (!event.data || typeof event.data !== "object") return event;
5791
+ const data = event.data;
5792
+ if (event.type === "session_update") {
5793
+ const update = data["update"];
5794
+ if (update && typeof update === "object" && !Array.isArray(update)) {
5795
+ const content2 = update["content"];
5796
+ const hydrated2 = await this.hydrateBlock(content2);
5797
+ if (hydrated2 === content2) return event;
5798
+ return {
5799
+ ...event,
5800
+ data: { ...data, update: { ...update, content: hydrated2 } }
5801
+ };
5802
+ }
5803
+ const content = data["content"];
5804
+ const hydrated = await this.hydrateBlock(content);
5805
+ if (hydrated === content) return event;
5806
+ return { ...event, data: { ...data, content: hydrated } };
5807
+ }
5808
+ if (event.type !== "mid_turn_message_injected") return event;
5809
+ const items = data["items"];
5810
+ if (!Array.isArray(items)) return event;
5811
+ return {
5812
+ ...event,
5813
+ data: {
5814
+ ...data,
5815
+ items: await Promise.all(
5816
+ items.map(async (item) => {
5817
+ if (!item || typeof item !== "object" || Array.isArray(item)) {
5818
+ return item;
5819
+ }
5820
+ const record = item;
5821
+ return Array.isArray(record["content"]) ? {
5822
+ ...record,
5823
+ content: await this.hydrateContent(record["content"])
5824
+ } : item;
5825
+ })
5826
+ )
5827
+ }
5828
+ };
5829
+ }
5830
+ async hydrateContent(content) {
5831
+ return await Promise.all(
5832
+ content.map(async (block) => await this.hydrateBlock(block))
5833
+ );
5834
+ }
5835
+ async hydrateBlock(block) {
5836
+ if (!isSessionMediaReference(block)) {
5837
+ return block;
5838
+ }
5839
+ let cached = this.mediaCache.get(block.mediaId);
5840
+ if (cached) {
5841
+ this.mediaCache.delete(block.mediaId);
5842
+ this.mediaCache.set(block.mediaId, cached);
5843
+ } else {
5844
+ const pending = this.withClientIdSelfHeal(
5845
+ () => this.client.readSessionMedia(this.sessionId, block.mediaId, {
5846
+ ...this.clientId ? { clientId: this.clientId } : {}
5847
+ })
5848
+ );
5849
+ cached = { pending, size: block.size };
5850
+ this.mediaCache.set(block.mediaId, cached);
5851
+ this.mediaCacheBytes += block.size;
5852
+ while (this.mediaCache.size > MAX_MEDIA_CACHE_ENTRIES || this.mediaCacheBytes > MAX_MEDIA_CACHE_BYTES) {
5853
+ const oldestId = this.mediaCache.keys().next().value;
5854
+ if (oldestId === void 0) break;
5855
+ const evicted = this.mediaCache.get(oldestId);
5856
+ this.mediaCache.delete(oldestId);
5857
+ this.mediaCacheBytes -= evicted?.size ?? 0;
5858
+ }
5859
+ void pending.catch(() => {
5860
+ if (this.mediaCache.get(block.mediaId)?.pending !== pending) return;
5861
+ this.mediaCache.delete(block.mediaId);
5862
+ this.mediaCacheBytes -= block.size;
5863
+ });
5864
+ }
5865
+ try {
5866
+ const media = await cached.pending;
5867
+ return { type: block.type, data: media.data, mimeType: media.mimeType };
5868
+ } catch (err) {
5869
+ if (err instanceof DaemonHttpError && (err.status === 404 || err.status === 410)) {
5870
+ return {
5871
+ type: "text",
5872
+ text: "[Attached media is no longer available]"
5873
+ };
5874
+ }
5875
+ return block;
5876
+ }
5877
+ }
5598
5878
  _dispatchTurnEvent(event) {
5599
5879
  if (event.type !== "turn_complete" && event.type !== "turn_error") return;
5600
5880
  const promptId = event.data?.promptId;
@@ -5931,7 +6211,7 @@ function asKnownDaemonEvent(event) {
5931
6211
  case "tool_toggled":
5932
6212
  return isToolToggledData(event.data) ? event : void 0;
5933
6213
  case "settings_changed":
5934
- return event.data != null && typeof event.data === "object" ? event : void 0;
6214
+ return isSettingsChangedData(event.data) ? event : void 0;
5935
6215
  case "trust_change_requested":
5936
6216
  return isTrustChangeRequestedData(event.data) ? event : void 0;
5937
6217
  case "workspace_initialized":
@@ -6633,6 +6913,19 @@ function isToolToggledData(value) {
6633
6913
  return isRecord(value) && isNonEmptyString(value["toolName"]) && typeof value["enabled"] === "boolean";
6634
6914
  }
6635
6915
  __name(isToolToggledData, "isToolToggledData");
6916
+ function isDaemonSkillToggleMutation(value) {
6917
+ if (!isRecord(value)) return false;
6918
+ const activation = value["activation"];
6919
+ const skills = value["skills"];
6920
+ return isNonEmptyString(value["id"]) && value["kind"] === "skill_toggle" && Array.isArray(skills) && skills.length > 0 && skills.every(
6921
+ (skill) => isRecord(skill) && isNonEmptyString(skill["name"]) && typeof skill["enabled"] === "boolean"
6922
+ ) && (activation === "applied" || activation === "deferred" || activation === "partial") && isFiniteNumber(value["sessionsRefreshed"]) && isFiniteNumber(value["sessionsFailed"]);
6923
+ }
6924
+ __name(isDaemonSkillToggleMutation, "isDaemonSkillToggleMutation");
6925
+ function isSettingsChangedData(value) {
6926
+ return isRecord(value) && isNonEmptyString(value["key"]) && (value["scope"] === void 0 || typeof value["scope"] === "string") && (value["mutation"] === void 0 || isDaemonSkillToggleMutation(value["mutation"]));
6927
+ }
6928
+ __name(isSettingsChangedData, "isSettingsChangedData");
6636
6929
  function isTrustChangeRequestedData(value) {
6637
6930
  if (!isRecord(value)) return false;
6638
6931
  const desiredState = value["desiredState"];
@@ -7077,6 +7370,7 @@ var MCP_RESTART_REFUSED_REASONS2 = /* @__PURE__ */ new Set([
7077
7370
  var MALFORMED_MEMORY_CHANGED = "malformed memory_changed payload";
7078
7371
  var MAX_DETAILS_LENGTH = 4096;
7079
7372
  var SESSION_RECORDING_DEGRADED_MESSAGE = "Session recording stopped after a write failure. New messages for the affected session will not be saved. Check disk space and permissions, then start a new session to resume recording.";
7373
+ var MEDIA_UNAVAILABLE_TEXT = "[Attached media is no longer available]";
7080
7374
  function normalizeDaemonEvent(event, opts = {}) {
7081
7375
  const base = createBase(event, opts);
7082
7376
  switch (event.type) {
@@ -7453,21 +7747,37 @@ function normalizeMidTurnMessageInjected(event, base) {
7453
7747
  if (!isRecord2(event.data)) {
7454
7748
  return fallbackDebug(event, base, "malformed mid_turn_message_injected");
7455
7749
  }
7456
- const messages = Array.isArray(event.data["messages"]) ? event.data["messages"].filter(
7457
- (message) => typeof message === "string" && message.length > 0
7458
- ) : [];
7459
- if (messages.length === 0) {
7750
+ const data = event.data;
7751
+ const rawMessages = data["messages"];
7752
+ const messages = Array.isArray(rawMessages) && rawMessages.every(
7753
+ (message) => typeof message === "string"
7754
+ ) ? rawMessages : [];
7755
+ const items = data["items"];
7756
+ const hasRenderableItemContent = Array.isArray(items) && items.some(
7757
+ (item) => isRecord2(item) && Array.isArray(item["content"]) && item["content"].some(
7758
+ (block) => isRecord2(block) && (block["type"] === "image" || block["type"] === "text" && typeof block["text"] === "string" && block["text"].length > 0)
7759
+ )
7760
+ );
7761
+ if (messages.length === 0 || !messages.some(Boolean) && !hasRenderableItemContent) {
7460
7762
  return fallbackDebug(event, base, "malformed mid_turn_message_injected");
7461
7763
  }
7462
- return [
7463
- {
7764
+ const messageIds = Array.isArray(data["messageIds"]) ? data["messageIds"] : [];
7765
+ return messages.map((text, index) => {
7766
+ const item = Array.isArray(items) ? items[index] : void 0;
7767
+ const messageId = messageIds[index];
7768
+ return {
7464
7769
  ...base,
7465
7770
  type: "status",
7466
- text: `Inserted message: ${messages.join("\n")}`,
7771
+ text,
7467
7772
  source: "mid_turn_message_injected",
7468
- data: event.data
7469
- }
7470
- ];
7773
+ data: {
7774
+ ...data,
7775
+ messages: [text],
7776
+ ...Array.isArray(items) ? { items: item !== void 0 ? [item] : [] } : {},
7777
+ ...typeof messageId === "string" ? { messageIds: [messageId] } : Array.isArray(data["messageIds"]) ? { messageIds: [] } : {}
7778
+ }
7779
+ };
7780
+ });
7471
7781
  }
7472
7782
  __name(normalizeMidTurnMessageInjected, "normalizeMidTurnMessageInjected");
7473
7783
  function createBase(event, opts) {
@@ -7540,6 +7850,10 @@ function parseTimestamp(value) {
7540
7850
  return Number.isFinite(parsed) ? parsed : void 0;
7541
7851
  }
7542
7852
  __name(parseTimestamp, "parseTimestamp");
7853
+ function isMediaReferenceContent(value) {
7854
+ return isRecord2(value) && value["type"] === "image" && typeof value["mediaId"] === "string" && value["mediaId"].length > 0 && value["data"] === void 0 && value["url"] === void 0 && value["source"] === void 0;
7855
+ }
7856
+ __name(isMediaReferenceContent, "isMediaReferenceContent");
7543
7857
  function normalizeSessionUpdate(event, base, opts) {
7544
7858
  const update = getSessionUpdatePayload(event.data);
7545
7859
  if (!update) {
@@ -7574,7 +7888,15 @@ function normalizeSessionUpdate(event, base, opts) {
7574
7888
  else if (prefix.startsWith("UklGR")) mimeType = "image/webp";
7575
7889
  }
7576
7890
  if (data) {
7577
- return [{ ...base, type: "user.image.delta", data, mimeType }];
7891
+ return [
7892
+ {
7893
+ ...base,
7894
+ type: "user.image.delta",
7895
+ data,
7896
+ mimeType,
7897
+ ...meta ? { meta } : {}
7898
+ }
7899
+ ];
7578
7900
  }
7579
7901
  return [];
7580
7902
  }
@@ -7590,6 +7912,16 @@ function normalizeSessionUpdate(event, base, opts) {
7590
7912
  }
7591
7913
  return [];
7592
7914
  }
7915
+ if (isMediaReferenceContent(content)) {
7916
+ return [
7917
+ {
7918
+ ...base,
7919
+ type: "user.text.delta",
7920
+ text: MEDIA_UNAVAILABLE_TEXT,
7921
+ ...meta ? { meta } : {}
7922
+ }
7923
+ ];
7924
+ }
7593
7925
  const text = getTextContent(content);
7594
7926
  return text ? [
7595
7927
  {
@@ -8128,13 +8460,15 @@ function normalizeSettingsChanged(event, base) {
8128
8460
  if (!key) {
8129
8461
  return fallbackDebug(event, base, "malformed settings_changed payload");
8130
8462
  }
8463
+ const mutation = isSettingsChangedData(event.data) && event.data.mutation;
8131
8464
  return [
8132
8465
  {
8133
8466
  ...base,
8134
8467
  type: "workspace.settings.changed",
8135
8468
  key,
8136
8469
  scope: scope ?? "workspace",
8137
- value: isRecord2(event.data) ? event.data["value"] : void 0
8470
+ value: isRecord2(event.data) ? event.data["value"] : void 0,
8471
+ ...mutation ? { mutation } : {}
8138
8472
  }
8139
8473
  ];
8140
8474
  }
@@ -8989,7 +9323,7 @@ function applyDaemonTranscriptEvent(next, event) {
8989
9323
  "",
8990
9324
  event.eventId,
8991
9325
  event.serverTimestamp,
8992
- void 0,
9326
+ event.meta,
8993
9327
  event.sourceRecordIds,
8994
9328
  event.promptId
8995
9329
  );
@@ -8999,6 +9333,7 @@ function applyDaemonTranscriptEvent(next, event) {
8999
9333
  } else {
9000
9334
  const block = getWritableBlockById(next, next.activeUserBlockId);
9001
9335
  if (block && block.kind === "user") {
9336
+ if (event.meta) block.meta = { ...block.meta, ...event.meta };
9002
9337
  block.images = [
9003
9338
  ...block.images ?? [],
9004
9339
  { data: event.data, mimeType: event.mimeType }
@@ -8,34 +8,34 @@ import {
8
8
  GitWorktreeService,
9
9
  require_shell_quote,
10
10
  splitCommands
11
- } from "./chunk-4S5337WV.js";
11
+ } from "./chunk-OFTPCOGR.js";
12
12
  import "./chunk-GOFAQQZA.js";
13
13
  import "./chunk-5M6IDOMF.js";
14
14
  import "./chunk-TWPJO254.js";
15
15
  import "./chunk-CQ35AJ4Z.js";
16
- import "./chunk-DGZEMW5R.js";
17
- import "./chunk-WSH6GRKG.js";
18
- import "./chunk-CKSJECTU.js";
19
- import "./chunk-OVZPVYZB.js";
16
+ import "./chunk-FS5NGKWC.js";
17
+ import "./chunk-SLILKYV2.js";
18
+ import "./chunk-NVRMCWTP.js";
19
+ import "./chunk-AKBOLMUF.js";
20
20
  import "./chunk-6PVPNMXU.js";
21
- import "./chunk-5EYKMUUY.js";
21
+ import "./chunk-544KT7X4.js";
22
22
  import "./chunk-IRH27ZC2.js";
23
23
  import "./chunk-QHWCP53L.js";
24
- import "./chunk-Y3YCSWG5.js";
25
- import "./chunk-UPDOZBWO.js";
24
+ import "./chunk-OBJYN4MX.js";
25
+ import "./chunk-2C6HJMG3.js";
26
26
  import "./chunk-O6GEWCJA.js";
27
27
  import "./chunk-T26EAKDL.js";
28
28
  import "./chunk-ZPJWUGCS.js";
29
29
  import "./chunk-CPBF7KYF.js";
30
30
  import "./chunk-RWDNJBWN.js";
31
- import "./chunk-25EYDK42.js";
31
+ import "./chunk-WPVUOVYX.js";
32
32
  import "./chunk-MIPFDQAF.js";
33
33
  import "./chunk-MLXTMF7H.js";
34
34
  import "./chunk-KV27IEHM.js";
35
35
  import "./chunk-E3DYKPYZ.js";
36
- import "./chunk-OMLJNPBE.js";
37
- import "./chunk-OXCMMLED.js";
38
- import "./chunk-TIGA2IVL.js";
36
+ import "./chunk-4ZMS3JCR.js";
37
+ import "./chunk-DGJ7O55J.js";
38
+ import "./chunk-OO4FKHLO.js";
39
39
  import "./chunk-SAH4BD2J.js";
40
40
  import "./chunk-XLLKYULU.js";
41
41
  import "./chunk-PT4I7NBA.js";
@@ -45,7 +45,7 @@ import "./chunk-SG7ZP5PG.js";
45
45
  import "./chunk-K623ENWT.js";
46
46
  import "./chunk-AQ37AY7B.js";
47
47
  import "./chunk-KBXKR5R2.js";
48
- import "./chunk-GMIEIY3Y.js";
48
+ import "./chunk-I3N2Z25H.js";
49
49
  import "./chunk-NAVJD2PQ.js";
50
50
  import "./chunk-ROIYNTHJ.js";
51
51
  import "./chunk-2B2BF7P7.js";
@@ -53,30 +53,31 @@ import "./chunk-P3QQPMQA.js";
53
53
  import "./chunk-YZHRN3CF.js";
54
54
  import "./chunk-FAAUPSY2.js";
55
55
  import "./chunk-KM73TBQ4.js";
56
- import "./chunk-MPHPFVKK.js";
57
56
  import "./chunk-AXMWHKXA.js";
58
57
  import "./chunk-GLCZKT5V.js";
59
58
  import "./chunk-DJ2GSRLV.js";
60
59
  import "./chunk-QFJ5JHQR.js";
61
- import {
62
- isWithinRoot
63
- } from "./chunk-RVOJ2FBP.js";
60
+ import "./chunk-KC4WMLZO.js";
64
61
  import "./chunk-YRLW2MSX.js";
65
62
  import "./chunk-VGC4I5JJ.js";
63
+ import {
64
+ isWithinRoot
65
+ } from "./chunk-3PWCMXIR.js";
66
66
  import "./chunk-CHHABXPE.js";
67
67
  import "./chunk-MA2HEDVP.js";
68
68
  import "./chunk-XUJNK7Y6.js";
69
69
  import "./chunk-6HY6IF3Z.js";
70
- import "./chunk-4PKCUT7F.js";
70
+ import "./chunk-2A6VQJYK.js";
71
71
  import "./chunk-F6WFNA7U.js";
72
- import "./chunk-46UV252V.js";
72
+ import "./chunk-WZAD4ZNJ.js";
73
73
  import "./chunk-FPGTNKCP.js";
74
+ import "./chunk-YHC2EYYG.js";
74
75
  import "./chunk-CPHEPGAO.js";
75
- import "./chunk-P7MPQI75.js";
76
- import "./chunk-FDGGZIYW.js";
77
- import "./chunk-EL5SXY3T.js";
76
+ import "./chunk-DVR7XKO5.js";
77
+ import "./chunk-YECDICIO.js";
78
+ import "./chunk-XT4RKHVE.js";
78
79
  import "./chunk-HHJLM3WQ.js";
79
- import "./chunk-K5IDV3PC.js";
80
+ import "./chunk-D34RDOLP.js";
80
81
  import {
81
82
  realpathNearestExistingAsync
82
83
  } from "./chunk-BUQDLC2G.js";