@qwen-code/qwen-code 0.19.12 → 0.20.0-nightly.20260720.0c271659d

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 (276) hide show
  1. package/bundled/qc-helper/docs/integration-github-action.md +1 -1
  2. package/bundled/qc-helper/docs/qwen-serve.md +42 -5
  3. package/bundled/review/DESIGN.md +2 -2
  4. package/bundled/review/SKILL.md +13 -9
  5. package/chunks/{MaxSizedBox-QOXLJGAF.js → MaxSizedBox-ED3QND6V.js} +30 -27
  6. package/chunks/{StandaloneSessionPicker-FLV6CGYJ.js → StandaloneSessionPicker-NQVAOTKS.js} +50 -45
  7. package/chunks/{acpAgent-OB2CTF3P.js → acpAgent-HOBFF5B6.js} +353 -130
  8. package/chunks/{agent-CKSI7BTR.js → agent-J7EPFLA6.js} +22 -22
  9. package/chunks/{agent-headless-U36LIYTU.js → agent-headless-RRG3JU7Q.js} +22 -22
  10. package/chunks/{anthropicContentGenerator-ZZRGFEES.js → anthropicContentGenerator-HVKLXOOU.js} +6 -5
  11. package/chunks/{artifact-tool-PHO5XEGZ.js → artifact-tool-WBCAMD3O.js} +2 -2
  12. package/chunks/{askUserQuestion-CEPBT47X.js → askUserQuestion-6DZC4UV5.js} +2 -2
  13. package/chunks/{bridge-AIKTINJG.js → bridge-OW5FZ6BF.js} +25 -25
  14. package/chunks/build-SSCNEHZZ.js +62 -0
  15. package/chunks/{channel-worker-group-NEUVTPB2.js → channel-worker-group-53CMOPFT.js} +4 -4
  16. package/chunks/{channel-worker-manager-7CQVOVWV.js → channel-worker-manager-UTXILKC2.js} +4 -4
  17. package/chunks/{channel-worker-supervisor-3BU2KNCZ.js → channel-worker-supervisor-ZGO2W2MD.js} +3 -3
  18. package/chunks/chunk-27AJEU6G.js +442 -0
  19. package/chunks/{chunk-BABX5XRO.js → chunk-2HOVDT7W.js} +1 -1
  20. package/chunks/{chunk-GW7BONBU.js → chunk-2JOLZA6L.js} +5 -5
  21. package/chunks/{chunk-ZSDFNE6Y.js → chunk-2TDSM7I6.js} +3 -3
  22. package/chunks/{chunk-6IITZE7O.js → chunk-2YJLFCYI.js} +7 -7
  23. package/chunks/{chunk-VEFR4XJQ.js → chunk-37MGCVTS.js} +1 -1
  24. package/chunks/{chunk-3B6PSWHE.js → chunk-3ML52IFS.js} +4 -4
  25. package/chunks/{chunk-TKASNYDS.js → chunk-3QR5MOHP.js} +2 -2
  26. package/chunks/{chunk-KRMARA3A.js → chunk-3SNKL6L6.js} +29 -13
  27. package/chunks/{chunk-DJ4VHAFJ.js → chunk-3ZL6YMO2.js} +3 -3
  28. package/chunks/chunk-43T5WDQ7.js +127 -0
  29. package/chunks/{chunk-W6CQPLWM.js → chunk-4ODB7WIB.js} +1 -1
  30. package/chunks/{chunk-CHPQFLW6.js → chunk-4UH63YE5.js} +5 -5
  31. package/chunks/{chunk-2CCDMJM7.js → chunk-53OPIXUE.js} +3 -3
  32. package/chunks/{chunk-HTHUX2T5.js → chunk-5QWWOFGG.js} +0 -1
  33. package/chunks/{chunk-3DJY4IFO.js → chunk-5SCI6E3E.js} +1 -1
  34. package/chunks/{chunk-4CHDYDG3.js → chunk-6EFTQYW7.js} +1 -1
  35. package/chunks/{chunk-OBSLEYCD.js → chunk-6HQW55TM.js} +29 -2
  36. package/chunks/{chunk-N47VAEAJ.js → chunk-6MN6XJTR.js} +2379 -1291
  37. package/chunks/{chunk-UCTCDLDS.js → chunk-6VGRTGOG.js} +1 -1
  38. package/chunks/{chunk-KNGZ5EYL.js → chunk-7JQK6FXK.js} +198 -120
  39. package/chunks/{chunk-2476XGOU.js → chunk-A4TJMY65.js} +1 -1
  40. package/chunks/{chunk-67Q33DQY.js → chunk-AMRWCMX4.js} +4 -4
  41. package/chunks/{chunk-XAAEDML2.js → chunk-AYCDXHZB.js} +1 -1
  42. package/chunks/{chunk-VAJS2E2D.js → chunk-BDBMYST4.js} +1 -1
  43. package/chunks/{chunk-F2RR4HO2.js → chunk-BVLROR2T.js} +1 -1
  44. package/chunks/{chunk-UE5TZ55T.js → chunk-C27BYUX6.js} +29 -2
  45. package/chunks/{chunk-PK7COE5O.js → chunk-CL7IRYTA.js} +1 -1
  46. package/chunks/{chunk-KMJOMWHE.js → chunk-COWNNAWJ.js} +1 -1
  47. package/chunks/{chunk-UOA2IHRI.js → chunk-CPCVCKKF.js} +1 -1
  48. package/chunks/{chunk-4RPARQ5D.js → chunk-D2VIDMVM.js} +2 -2
  49. package/chunks/{chunk-4MPYGENG.js → chunk-DCCW7CRR.js} +6 -6
  50. package/chunks/chunk-DIKIJS6Z.js +114 -0
  51. package/chunks/{chunk-ETN2G32U.js → chunk-DR5AUNJ2.js} +4 -4
  52. package/chunks/{chunk-6ETOSWAO.js → chunk-DSBCU6JY.js} +3 -3
  53. package/chunks/{chunk-LKR7QQ63.js → chunk-EAUYY7SS.js} +3 -3
  54. package/chunks/{chunk-J2MKYJKZ.js → chunk-EIAK6Q2B.js} +2 -2
  55. package/chunks/{chunk-WEPXQKGP.js → chunk-EZVDJFZ7.js} +1 -1
  56. package/chunks/{chunk-WHQNBBWW.js → chunk-FLSVD6BS.js} +2 -2
  57. package/chunks/{chunk-3ESL7JXA.js → chunk-FODJ5Q5K.js} +3 -3
  58. package/chunks/{chunk-4XCVGEEX.js → chunk-FSL5W5TI.js} +3 -3
  59. package/chunks/{chunk-NE6HHLL3.js → chunk-FWT66O5E.js} +2 -2
  60. package/chunks/{chunk-OSSDHJDU.js → chunk-G45X5TRN.js} +1 -1
  61. package/chunks/{chunk-ZGT623SG.js → chunk-G6MDKXDP.js} +12 -12
  62. package/chunks/{chunk-KANTXY7B.js → chunk-GKY2OJ7R.js} +2 -2
  63. package/chunks/chunk-GMGDLUC7.js +37 -0
  64. package/chunks/{chunk-J6NT5YTN.js → chunk-H2XVO6NE.js} +1 -289
  65. package/chunks/{chunk-XSEWNUMZ.js → chunk-I4HZ4GOD.js} +8 -8
  66. package/chunks/{chunk-CPU6I5YV.js → chunk-I6JUVU7J.js} +34 -24
  67. package/chunks/{chunk-UZC5VPOJ.js → chunk-IDGTC5AS.js} +3 -3
  68. package/chunks/{chunk-QIFTJDBY.js → chunk-INL2RSLA.js} +1 -1
  69. package/chunks/{chunk-GSPWDTYY.js → chunk-INQQM52C.js} +18 -16
  70. package/chunks/{chunk-HVGJWOR6.js → chunk-JBCFW3IL.js} +2 -2
  71. package/chunks/{chunk-LPHGXXZX.js → chunk-JD3MKVKL.js} +1 -1
  72. package/chunks/{chunk-GCY7QTCE.js → chunk-JDPCOUZ3.js} +1602 -398
  73. package/chunks/{chunk-NUHSLBJZ.js → chunk-JNWZQ27S.js} +15 -9
  74. package/chunks/{chunk-KGWA7XYL.js → chunk-JRJ2LV6P.js} +6 -226
  75. package/chunks/{chunk-QSG4ZFG4.js → chunk-KTUQMDEP.js} +1 -1
  76. package/chunks/{chunk-RKUMFUFM.js → chunk-LTQ5C5AB.js} +4 -4
  77. package/chunks/{chunk-V4PCIS25.js → chunk-MAQQGNQ5.js} +44 -1
  78. package/chunks/{chunk-EISVEV45.js → chunk-NBMIC7DR.js} +2 -2
  79. package/chunks/{chunk-GEHSF7MS.js → chunk-NEEB7UEN.js} +2545 -1974
  80. package/chunks/{chunk-BKNPMEN6.js → chunk-NIJEXGV6.js} +93 -17
  81. package/chunks/{chunk-PR5XQ73G.js → chunk-NQVA6O7F.js} +2 -2
  82. package/chunks/{chunk-FUSMC3SZ.js → chunk-NT324EJ6.js} +13 -8
  83. package/chunks/{chunk-5N7M4XYN.js → chunk-O2SPEQFA.js} +5 -5
  84. package/chunks/{chunk-OEHCAWUA.js → chunk-OLMETXLX.js} +2 -2
  85. package/chunks/{chunk-JCJPZMJV.js → chunk-OOCI5VVU.js} +1 -1
  86. package/chunks/{chunk-XSPFQQRE.js → chunk-OONJNQ42.js} +3 -3
  87. package/chunks/{chunk-ANRANWVE.js → chunk-OP4MOGXF.js} +1 -1
  88. package/chunks/{chunk-SGPFJMRP.js → chunk-PBATSWUQ.js} +1 -1
  89. package/chunks/chunk-QKYTTBYW.js +624 -0
  90. package/chunks/{chunk-W4UN42YP.js → chunk-QOSKUG5P.js} +77 -20
  91. package/chunks/{chunk-76BFY7AF.js → chunk-QTERJVPZ.js} +1 -6
  92. package/chunks/{chunk-WIYV7CSF.js → chunk-RB7NXUP5.js} +3 -3
  93. package/chunks/{chunk-HCCR43AY.js → chunk-RFIAR4YL.js} +1 -1
  94. package/chunks/{chunk-GMUPIMHF.js → chunk-RS5JPH6Y.js} +3 -3
  95. package/chunks/chunk-RS7MT2QG.js +305 -0
  96. package/chunks/{chunk-GXFYV7MP.js → chunk-SG2PEESS.js} +1106 -592
  97. package/chunks/{chunk-PUKUUASO.js → chunk-SLLG5XXE.js} +1 -1
  98. package/chunks/{chunk-GLH2NTPB.js → chunk-SQMTULHJ.js} +1 -1
  99. package/chunks/{chunk-NPMVLWYL.js → chunk-STFP7PJR.js} +6 -6
  100. package/chunks/chunk-SV5PQVQE.js +71 -0
  101. package/chunks/{chunk-HZ4M2UQD.js → chunk-TFNZCC4B.js} +1 -1
  102. package/chunks/{chunk-5QSVANRT.js → chunk-THNJYTA6.js} +2 -2
  103. package/chunks/{chunk-MRE77ST5.js → chunk-TN2BYMNH.js} +69 -2216
  104. package/chunks/{chunk-64GC5EMF.js → chunk-TQBA6DVX.js} +1 -1
  105. package/chunks/{chunk-VLHQMOZK.js → chunk-U24E4R5U.js} +3 -3
  106. package/chunks/{chunk-4CA4WUMS.js → chunk-UEY4AYUL.js} +2 -2
  107. package/chunks/{chunk-42VIHAYT.js → chunk-UGRL5B5F.js} +1 -1
  108. package/chunks/chunk-V7RNNPGC.js +44 -0
  109. package/chunks/{chunk-R3EDIMYZ.js → chunk-VGFFYNBD.js} +1 -1
  110. package/chunks/chunk-VIOFKPPN.js +125 -0
  111. package/chunks/{chunk-BEZPRKD3.js → chunk-VLDBVLC4.js} +156 -2
  112. package/chunks/{chunk-HD6EGS5K.js → chunk-VWLLDHAY.js} +6 -6
  113. package/chunks/chunk-WCDH2CRI.js +1187 -0
  114. package/chunks/{chunk-7SX6WZNO.js → chunk-XVVH63JG.js} +3 -3
  115. package/chunks/{chunk-I7RRHHYG.js → chunk-Y2ENGUD6.js} +1 -1
  116. package/chunks/{chunk-NALRQ3SG.js → chunk-Y5534U4G.js} +332 -116
  117. package/chunks/{chunk-4SJJT466.js → chunk-YDZ6J2BY.js} +72 -159
  118. package/chunks/{chunk-APOFULHK.js → chunk-YNBP3YSU.js} +7 -6
  119. package/chunks/{chunk-EFAXBOQO.js → chunk-YWEW33JY.js} +7 -7
  120. package/chunks/{chunk-335ECZTA.js → chunk-ZEOZL37W.js} +1 -1
  121. package/chunks/{chunk-DUR7BZYK.js → chunk-ZGJ4LDD2.js} +53 -28
  122. package/chunks/{computer-use-4PUGCUQK.js → computer-use-ET5476VX.js} +22 -22
  123. package/chunks/{config-utils-6PJUXHLI.js → config-utils-AHQ6YZ66.js} +3 -3
  124. package/chunks/{contextCommand-C57KTWFV.js → contextCommand-QIULFDBF.js} +25 -26
  125. package/chunks/{create-sub-session-5Q42XR6I.js → create-sub-session-BVL2ZHTM.js} +22 -22
  126. package/chunks/{create-sub-session-DIJOV6HV.js → create-sub-session-P26FE5GG.js} +2 -2
  127. package/chunks/{cron-create-X462ERYA.js → cron-create-JWFHBDRQ.js} +4 -4
  128. package/chunks/{cron-delete-SL5UJUM3.js → cron-delete-GDX4E26G.js} +4 -4
  129. package/chunks/{cron-list-3MD6SVXI.js → cron-list-USMAIWPT.js} +4 -4
  130. package/chunks/{daemon-ZW6LHOXT.js → daemon-EE5T3KOW.js} +169 -84
  131. package/chunks/{daemon-status-provider-YPV3UXHT.js → daemon-status-provider-L5UW7TGV.js} +29 -29
  132. package/chunks/{dist-3DQNQJ6H.js → dist-2BHAYBKP.js} +1 -1
  133. package/chunks/{dist-J2H4KTLB.js → dist-2MIU4UUH.js} +1 -1
  134. package/chunks/{dist-IEQSDXS7.js → dist-53PZYC5B.js} +2 -2
  135. package/chunks/{dist-NUXRQHC5.js → dist-AU7NQQRP.js} +1 -1
  136. package/chunks/{dist-XLE6ODMB.js → dist-FUTEXY6A.js} +1 -1
  137. package/chunks/{dist-IGZMVS5R.js → dist-WGTQO7F2.js} +1 -1
  138. package/chunks/{earlyInputCapture-5VDWSYAM.js → earlyInputCapture-ZLAL5GTE.js} +23 -23
  139. package/chunks/{edit-GORZTX2U.js → edit-4ZOPT6OC.js} +23 -23
  140. package/chunks/{enter-worktree-LJB2AW4L.js → enter-worktree-DFP5CZYS.js} +22 -22
  141. package/chunks/{enterPlanMode-LIIPP37T.js → enterPlanMode-7VEJ7A2A.js} +22 -22
  142. package/chunks/{environment-HQ2UHJ35.js → environment-KHS35XJY.js} +24 -24
  143. package/chunks/{errors-6JD5VMVQ.js → errors-574WBU5R.js} +24 -24
  144. package/chunks/{exit-worktree-IEP2WHOV.js → exit-worktree-5Q7V6D4C.js} +22 -22
  145. package/chunks/{exitPlanMode-U5Z6XBLO.js → exitPlanMode-SX2F6PDJ.js} +22 -22
  146. package/chunks/{fast-path-HFKNMP23.js → fast-path-G7BLOZVF.js} +2 -2
  147. package/chunks/{gemini-C2SCJH3N.js → gemini-M4JWSTGU.js} +70 -68
  148. package/chunks/{geminiContentGenerator-ADZTXEKV.js → geminiContentGenerator-MKXLUFUH.js} +4 -4
  149. package/chunks/{glob-GOAPGD6G.js → glob-FPKZY5W6.js} +22 -22
  150. package/chunks/{grep-HZLSTX7D.js → grep-RS22OMZG.js} +22 -22
  151. package/chunks/{handleAutoUpdate-UF74WGFE.js → handleAutoUpdate-RFNQ36JC.js} +27 -28
  152. package/chunks/{i18n-FMXIYUOC.js → i18n-MAEWSKYF.js} +23 -23
  153. package/chunks/{initializer-ERDBM3DU.js → initializer-T2BFZJBP.js} +28 -28
  154. package/chunks/{installationInfo-LROMXYLX.js → installationInfo-3UETF773.js} +25 -23
  155. package/chunks/{keychain-token-storage-K23CFKGN.js → keychain-token-storage-DWRJMNH3.js} +2 -2
  156. package/chunks/{list-6JPJROU5.js → list-FWZUKWD2.js} +30 -30
  157. package/chunks/{loadedSettingsAdapter-QCWYUBBF.js → loadedSettingsAdapter-3DUNHAPX.js} +27 -27
  158. package/chunks/{loop-wakeup-6H7OENTB.js → loop-wakeup-5GLTUBHA.js} +5 -5
  159. package/chunks/{ls-APTSOOS5.js → ls-FHBY3Y7I.js} +4 -4
  160. package/chunks/{lsp-HPACPJAN.js → lsp-B6VMEW6Y.js} +2 -2
  161. package/chunks/{mcp-3P3KWYWO.js → mcp-POXS7QWD.js} +27 -27
  162. package/chunks/{monitor-LMYKCF6R.js → monitor-2ZZC2NKH.js} +22 -22
  163. package/chunks/nonInteractiveCli-WSJVCB2W.js +126 -0
  164. package/chunks/{notebook-edit-IBEOVZ6A.js → notebook-edit-BMQLME3Q.js} +23 -23
  165. package/chunks/{openaiContentGenerator-42PZKET5.js → openaiContentGenerator-GOREG72R.js} +11 -11
  166. package/chunks/{pidfile-VTBDIGOH.js → pidfile-MVZDE5TC.js} +23 -23
  167. package/chunks/{processUtils-L7ZKOGDG.js → processUtils-RH5KNLDH.js} +2 -2
  168. package/chunks/{qwenContentGenerator-VR2CNFGI.js → qwenContentGenerator-R55BCLRI.js} +24 -24
  169. package/chunks/{qwenOAuth2-6LS2T3Q6.js → qwenOAuth2-QZBI2SOZ.js} +11 -11
  170. package/chunks/react-SG7JAQSZ.js +8 -0
  171. package/chunks/{read-file-VSKOE22I.js → read-file-CPS2CYYG.js} +8 -8
  172. package/chunks/{read-mcp-resource-C6NT52T6.js → read-mcp-resource-AKCL7I43.js} +2 -2
  173. package/chunks/{record-artifact-ENCU7QCL.js → record-artifact-PEUB7727.js} +2 -2
  174. package/chunks/resumeHistoryUtils-YD6DSYHU.js +78 -0
  175. package/chunks/{ripGrep-5V5FLW2A.js → ripGrep-UKGJ7RHZ.js} +22 -22
  176. package/chunks/{run-qwen-serve-LSOPP4R2.js → run-qwen-serve-GFKSKLF6.js} +1442 -148
  177. package/chunks/{runtime-LT7R4CS5.js → runtime-4KGNL3TP.js} +31 -31
  178. package/chunks/{scheduler-YOWQ7KZP.js → scheduler-GJ3CELWI.js} +22 -22
  179. package/chunks/{send-message-5GZ4FX2V.js → send-message-3RHE7HSM.js} +3 -3
  180. package/chunks/{serve-VWLBXKGK.js → serve-UU6Z4C7W.js} +27 -27
  181. package/chunks/{server-3RW3FYOH.js → server-RTJUMN24.js} +393 -256
  182. package/chunks/{session-ZONXFOBQ.js → session-EYD3CEB5.js} +79 -163
  183. package/chunks/{settings-JC3VC53L.js → settings-H5O22TGQ.js} +26 -26
  184. package/chunks/{shell-2NGEMAVM.js → shell-KVNHDHMT.js} +22 -22
  185. package/chunks/{skill-3U2T6H3E.js → skill-32525KCE.js} +10 -10
  186. package/chunks/{spawnChannel-QEAUPARQ.js → spawnChannel-G7DUQKHL.js} +24 -24
  187. package/chunks/{src-75ZPXO7B.js → src-DUFUUEHE.js} +52 -22
  188. package/chunks/{standalone-update-UUJWJWYY.js → standalone-update-UC6CWBLH.js} +24 -24
  189. package/chunks/{startInteractiveUI-V7XISPQ6.js → startInteractiveUI-A5YYAWLF.js} +5451 -2045
  190. package/chunks/{syntheticOutput-ULOVVLY4.js → syntheticOutput-FG5PQKIR.js} +3 -3
  191. package/chunks/{task-create-DUE2PMNI.js → task-create-HX32YXO7.js} +7 -7
  192. package/chunks/{task-list-WVPNX7BZ.js → task-list-QWSY4ZIU.js} +5 -5
  193. package/chunks/{task-stop-CPEQWOT6.js → task-stop-GWC6UWAL.js} +2 -2
  194. package/chunks/{task-update-HY2LNFFB.js → task-update-NCTAB73Q.js} +7 -7
  195. package/chunks/{team-create-R6AXDYPG.js → team-create-LS2Q32Y4.js} +22 -22
  196. package/chunks/{team-delete-JJV6IUOA.js → team-delete-KK37HTOG.js} +5 -5
  197. package/chunks/{team-plan-approval-O2ZPPT64.js → team-plan-approval-DWCZABX6.js} +22 -22
  198. package/chunks/{theme-manager-YIX2IC2D.js → theme-manager-E22CNBIL.js} +23 -23
  199. package/chunks/{todoWrite-JHHIDOIV.js → todoWrite-ERCAMLFS.js} +4 -4
  200. package/chunks/{tool-search-5IE2VO7X.js → tool-search-MHXUDFD2.js} +9 -9
  201. package/chunks/{total-session-admission-K6APQYEF.js → total-session-admission-KOPTGDJZ.js} +25 -25
  202. package/chunks/{trustedFolders-GPSSPVBF.js → trustedFolders-ANQXYAQT.js} +23 -23
  203. package/chunks/{update-relaunch-4BVAPX6Y.js → update-relaunch-HFGRB7PE.js} +9 -9
  204. package/chunks/{updateCheck-AHTHWLAM.js → updateCheck-EKIPND4B.js} +33 -26
  205. package/chunks/useAutoAcceptIndicator-EE22V2F5.js +80 -0
  206. package/chunks/{validateNonInterActiveAuth-UKAPCWDM.js → validateNonInterActiveAuth-RUICXVPH.js} +61 -63
  207. package/chunks/{version-EXGWKKQE.js → version-QLT755OV.js} +1 -1
  208. package/chunks/{web-fetch-ZDNE6FF2.js → web-fetch-DINW4Z65.js} +10 -10
  209. package/chunks/{workflow-G7U6OQWS.js → workflow-GPMXRWKK.js} +23 -23
  210. package/chunks/{workspace-providers-status-W6CEA6YM.js → workspace-providers-status-XCQKBVSX.js} +30 -30
  211. package/chunks/{workspace-registration-store-OGBMWCLC.js → workspace-registration-store-4I4KL7TN.js} +1 -1
  212. package/chunks/{workspace-registry-ZUWQM44P.js → workspace-registry-N4J57SFQ.js} +25 -25
  213. package/chunks/{workspace-service-UXX5P7GU.js → workspace-service-JJNJWVH3.js} +32 -32
  214. package/chunks/{workspace-skills-status-635B5R7N.js → workspace-skills-status-CEHLAQ2Y.js} +28 -28
  215. package/chunks/{write-file-DR3HN7IH.js → write-file-XRGEJRCC.js} +23 -23
  216. package/cli.js +11 -11
  217. package/package.json +3 -3
  218. package/web-shell/assets/{arc-_dVIKMdB.js → arc-DwJhljn9.js} +1 -1
  219. package/web-shell/assets/{architectureDiagram-3BPJPVTR-MuN3nKpL.js → architectureDiagram-3BPJPVTR-qdxSRav-.js} +1 -1
  220. package/web-shell/assets/{blockDiagram-GPEHLZMM-BtmvJjzx.js → blockDiagram-GPEHLZMM-2-dKM5aM.js} +1 -1
  221. package/web-shell/assets/{c4Diagram-AAUBKEIU-Dvi58_BU.js → c4Diagram-AAUBKEIU-Dt_Nu2HD.js} +1 -1
  222. package/web-shell/assets/channel-C6uyh95L.js +1 -0
  223. package/web-shell/assets/{chunk-2J33WTMH-YqxOVhS1.js → chunk-2J33WTMH-CBCeeNfD.js} +1 -1
  224. package/web-shell/assets/{chunk-4BX2VUAB-DoBgbC9z.js → chunk-4BX2VUAB-DPAzjqNs.js} +1 -1
  225. package/web-shell/assets/{chunk-55IACEB6-3NEQrBAr.js → chunk-55IACEB6-yrqyxvIK.js} +1 -1
  226. package/web-shell/assets/{chunk-727SXJPM-DrCZQxp0.js → chunk-727SXJPM-DguD_BBT.js} +1 -1
  227. package/web-shell/assets/{chunk-AQP2D5EJ-m_g3zjgv.js → chunk-AQP2D5EJ-KRUOG9v0.js} +1 -1
  228. package/web-shell/assets/{chunk-FMBD7UC4-D1_crABJ.js → chunk-FMBD7UC4-C0lilT2U.js} +1 -1
  229. package/web-shell/assets/{chunk-ND2GUHAM-BdhgVtBx.js → chunk-ND2GUHAM-DG9epIWK.js} +1 -1
  230. package/web-shell/assets/{chunk-QZHKN3VN-BlmThhm-.js → chunk-QZHKN3VN-PdJDkYHw.js} +1 -1
  231. package/web-shell/assets/classDiagram-4FO5ZUOK-Cv8Ulf-B.js +1 -0
  232. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-Cv8Ulf-B.js +1 -0
  233. package/web-shell/assets/{cose-bilkent-S5V4N54A-Cbjm_00Z.js → cose-bilkent-S5V4N54A-BAOPPuJm.js} +1 -1
  234. package/web-shell/assets/{dagre-BM42HDAG-C39QNVgC.js → dagre-BM42HDAG-CDHJv82_.js} +1 -1
  235. package/web-shell/assets/{diagram-2AECGRRQ-DNXSAixC.js → diagram-2AECGRRQ-C_hkG5fN.js} +1 -1
  236. package/web-shell/assets/{diagram-5GNKFQAL-BCbGUPEA.js → diagram-5GNKFQAL-e9zo_eKt.js} +1 -1
  237. package/web-shell/assets/{diagram-KO2AKTUF-1eujKSDC.js → diagram-KO2AKTUF-BFN41SCb.js} +1 -1
  238. package/web-shell/assets/{diagram-LMA3HP47-DUMKXgql.js → diagram-LMA3HP47-DG72N0W0.js} +1 -1
  239. package/web-shell/assets/{diagram-OG6HWLK6-BFktU3_u.js → diagram-OG6HWLK6-Dkmp-tdv.js} +1 -1
  240. package/web-shell/assets/{erDiagram-TEJ5UH35-BvJC7DLk.js → erDiagram-TEJ5UH35-CyS0GnQV.js} +1 -1
  241. package/web-shell/assets/{flowDiagram-I6XJVG4X-Cgu3PlOt.js → flowDiagram-I6XJVG4X-Cg1SRmzV.js} +1 -1
  242. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DLNXN5Xh.js → ganttDiagram-6RSMTGT7-CoNkSLs3.js} +1 -1
  243. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BQFRDv6R.js → gitGraphDiagram-PVQCEYII-DEA6GWPa.js} +1 -1
  244. package/web-shell/assets/index-B49xd8_A.css +5 -0
  245. package/web-shell/assets/{index-CdC3pjP3.js → index-CMaZgs6B.js} +1 -1
  246. package/web-shell/assets/index-D-cDAZgO.js +1192 -0
  247. package/web-shell/assets/{infoDiagram-5YYISTIA-DT2mOSvp.js → infoDiagram-5YYISTIA-BZshyoGT.js} +1 -1
  248. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-9fy_K4bd.js → ishikawaDiagram-YF4QCWOH-CT2ssZqC.js} +1 -1
  249. package/web-shell/assets/{journeyDiagram-JHISSGLW-CoGSEuhE.js → journeyDiagram-JHISSGLW-BtMQ0rDG.js} +1 -1
  250. package/web-shell/assets/{kanban-definition-UN3LZRKU-BP9hHYIj.js → kanban-definition-UN3LZRKU-CoDbK5Db.js} +1 -1
  251. package/web-shell/assets/{linear-uIroDsmp.js → linear-CwhZ6u7u.js} +1 -1
  252. package/web-shell/assets/{mermaid.core-BUwoStsA.js → mermaid.core-C9nn0nrr.js} +5 -5
  253. package/web-shell/assets/{mindmap-definition-RKZ34NQL-DZB-FWim.js → mindmap-definition-RKZ34NQL-BXUbjTeL.js} +1 -1
  254. package/web-shell/assets/{pieDiagram-4H26LBE5-YPptloKl.js → pieDiagram-4H26LBE5-JddiYlWQ.js} +1 -1
  255. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-dgk3DSzm.js → quadrantDiagram-W4KKPZXB-DK5HKzXO.js} +1 -1
  256. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BH2En2i9.js → requirementDiagram-4Y6WPE33-Y-uipa_6.js} +1 -1
  257. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-BB98feeI.js → sankeyDiagram-5OEKKPKP-BbWeqo8H.js} +1 -1
  258. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CunAIGh8.js → sequenceDiagram-3UESZ5HK-tX2gOoo5.js} +1 -1
  259. package/web-shell/assets/{stateDiagram-AJRCARHV-DTJs_-I2.js → stateDiagram-AJRCARHV-CACN457G.js} +1 -1
  260. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DaUeO2zt.js +1 -0
  261. package/web-shell/assets/{timeline-definition-PNZ67QCA-Cd4AN7O0.js → timeline-definition-PNZ67QCA-DnHWKSOq.js} +1 -1
  262. package/web-shell/assets/{vennDiagram-CIIHVFJN-xIG-rUU9.js → vennDiagram-CIIHVFJN-BO8Yl2FG.js} +1 -1
  263. package/web-shell/assets/{wardley-L42UT6IY-D1UyjIcG.js → wardley-L42UT6IY-1NMqqrBi.js} +1 -1
  264. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BVM0Mb99.js → wardleyDiagram-YWT4CUSO-C3eWgIvD.js} +1 -1
  265. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BX31JDSz.js → xychartDiagram-2RQKCTM6-D0h8FgFX.js} +1 -1
  266. package/web-shell/index.html +2 -2
  267. package/chunks/chunk-EDFD7VOX.js +0 -368
  268. package/chunks/chunk-GFYFLDEG.js +0 -709
  269. package/chunks/chunk-LUJQUNKY.js +0 -3288
  270. package/chunks/nonInteractiveCli-YURFHZV5.js +0 -129
  271. package/web-shell/assets/channel-Bi5TehaT.js +0 -1
  272. package/web-shell/assets/classDiagram-4FO5ZUOK-BKhhRdd1.js +0 -1
  273. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BKhhRdd1.js +0 -1
  274. package/web-shell/assets/index-C_ouplMQ.js +0 -1187
  275. package/web-shell/assets/index-XGDFJE-X.css +0 -5
  276. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DrfFMYta.js +0 -1
@@ -1036,28 +1036,21 @@ var DaemonClient = class {
1036
1036
  async workspaceAcpPreheat(timeoutMs) {
1037
1037
  const serverBudgetMs = timeoutMs ?? 5e3;
1038
1038
  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
1039
+ return await this.jsonRequest(
1040
+ `/workspace/acp/preheat${suffix}`,
1041
+ "POST /workspace/acp/preheat",
1042
+ {
1043
+ method: "POST",
1044
+ timeoutMs: serverBudgetMs + 2e3,
1045
+ mode: "rest"
1046
+ }
1049
1047
  );
1050
1048
  }
1051
1049
  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
- }
1050
+ return await this.jsonRequest(
1051
+ "/workspace/acp/status",
1052
+ "GET /workspace/acp/status",
1053
+ { mode: "rest" }
1061
1054
  );
1062
1055
  }
1063
1056
  async workspaceProviders() {
@@ -1742,7 +1735,8 @@ var DaemonClient = class {
1742
1735
  ...req.sessionScope !== void 0 ? { sessionScope: req.sessionScope } : {},
1743
1736
  ...req.approvalMode !== void 0 ? { approvalMode: req.approvalMode } : {},
1744
1737
  ...req.sourceType !== void 0 ? { sourceType: req.sourceType } : {},
1745
- ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {}
1738
+ ...req.sourceId !== void 0 ? { sourceId: req.sourceId } : {},
1739
+ ...req.worktree !== void 0 ? { worktree: req.worktree } : {}
1746
1740
  })
1747
1741
  },
1748
1742
  async (res) => {
@@ -3456,10 +3450,11 @@ var WorkspaceDaemonClient = class {
3456
3450
  opts
3457
3451
  );
3458
3452
  }
3459
- workspaceGit() {
3453
+ workspaceGit(cwd) {
3454
+ const suffix = cwd ? `/git?cwd=${encodeURIComponent(cwd)}` : "/git";
3460
3455
  return this.client.workspaceJsonRequest(
3461
3456
  this.workspaceSelector,
3462
- "/git",
3457
+ suffix,
3463
3458
  "GET /workspaces/:workspace/git",
3464
3459
  { mode: "rest" }
3465
3460
  );
@@ -4071,6 +4066,9 @@ var DaemonSessionClient = class _DaemonSessionClient {
4071
4066
  get clientId() {
4072
4067
  return this.session.clientId;
4073
4068
  }
4069
+ get worktree() {
4070
+ return this.session.worktree;
4071
+ }
4074
4072
  get lastEventId() {
4075
4073
  return this.lastSeenEventId;
4076
4074
  }
@@ -6257,9 +6255,11 @@ function normalizeMidTurnMessageInjected(event, base) {
6257
6255
  __name(normalizeMidTurnMessageInjected, "normalizeMidTurnMessageInjected");
6258
6256
  function createBase(event, opts) {
6259
6257
  const serverTimestamp = extractServerTimestamp(event);
6258
+ const sourceRecordIds = extractSourceRecordIds(event);
6260
6259
  return {
6261
6260
  ...event.id !== void 0 ? { eventId: event.id } : {},
6262
6261
  ...serverTimestamp !== void 0 ? { serverTimestamp } : {},
6262
+ ...sourceRecordIds ? { sourceRecordIds } : {},
6263
6263
  ...event.originatorClientId ? { originatorClientId: event.originatorClientId } : {},
6264
6264
  ...opts.includeRawEvent ? { rawEvent: { ...event, data: redactSensitiveFields(event.data) } } : {}
6265
6265
  };
@@ -6448,9 +6448,26 @@ function extractParentToolCallId(update) {
6448
6448
  __name(extractParentToolCallId, "extractParentToolCallId");
6449
6449
  function extractUpdateMeta(update) {
6450
6450
  const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6451
- return meta ? { ...meta } : void 0;
6451
+ if (!meta) return void 0;
6452
+ const { qwenTranscript: _qwenTranscript, ...displayMeta } = meta;
6453
+ return Object.keys(displayMeta).length > 0 ? displayMeta : void 0;
6452
6454
  }
6453
6455
  __name(extractUpdateMeta, "extractUpdateMeta");
6456
+ function extractSourceRecordIds(event) {
6457
+ if (!isRecord2(event.data)) return void 0;
6458
+ const update = getSessionUpdatePayload(event.data);
6459
+ const meta = update && isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6460
+ const transcript = meta && isRecord2(meta["qwenTranscript"]) ? meta["qwenTranscript"] : void 0;
6461
+ const values = transcript?.["sourceRecordIds"];
6462
+ if (!Array.isArray(values)) return void 0;
6463
+ const ids = [
6464
+ ...new Set(
6465
+ values.filter((value) => typeof value === "string")
6466
+ )
6467
+ ];
6468
+ return ids.length > 0 ? ids : void 0;
6469
+ }
6470
+ __name(extractSourceRecordIds, "extractSourceRecordIds");
6454
6471
  function extractAssistantUsage(update) {
6455
6472
  const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6456
6473
  const usage = meta && isRecord2(meta["usage"]) ? meta["usage"] : void 0;
@@ -6515,8 +6532,9 @@ __name(normalizeToolUpdate, "normalizeToolUpdate");
6515
6532
  function normalizePlanUpdate(update, base) {
6516
6533
  const entries = Array.isArray(update["entries"]) ? update["entries"] : [];
6517
6534
  const contentText = capDetails(formatPlanEntries(entries));
6518
- const planCallId = base.eventId !== void 0 ? `${DAEMON_PLAN_TOOL_CALL_ID}-${base.eventId}` : DAEMON_PLAN_TOOL_CALL_ID;
6519
6535
  const meta = isRecord2(update["_meta"]) ? update["_meta"] : void 0;
6536
+ const transcript = meta && isRecord2(meta["qwenTranscript"]) ? meta["qwenTranscript"] : void 0;
6537
+ const planCallId = getString2(transcript, "planToolCallId") ?? (base.eventId !== void 0 ? `${DAEMON_PLAN_TOOL_CALL_ID}-${base.eventId}` : DAEMON_PLAN_TOOL_CALL_ID);
6520
6538
  const stats = meta && isRecord2(meta["stats"]) ? meta["stats"] : void 0;
6521
6539
  return {
6522
6540
  ...base,
@@ -7581,24 +7599,27 @@ var TRIMMED_PERMISSION_BLOCK_ID = "__trimmed_permission_block__";
7581
7599
  var MAX_TEXT_BLOCK_LENGTH = 1e5;
7582
7600
  var TEXT_TRUNCATED_SUFFIX = "\n[truncated]\n";
7583
7601
  var MAX_CLONE_DEPTH = 16;
7602
+ var truncationCallbacks = /* @__PURE__ */ new WeakMap();
7584
7603
  var timestampFormatterCache = /* @__PURE__ */ new Map();
7585
7604
  function createDaemonTranscriptState(opts = {}) {
7586
- return {
7605
+ const state = {
7587
7606
  blocks: [],
7588
- blockIndexById: {},
7589
- toolBlockByCallId: {},
7590
- trimmedToolNotificationByCallId: {},
7591
- permissionBlockByRequestId: {},
7592
- activeAssistantBlockByParent: {},
7593
- activeThoughtBlockByParent: {},
7607
+ blockIndexById: createIndex(),
7608
+ toolBlockByCallId: createIndex(),
7609
+ trimmedToolNotificationByCallId: createIndex(),
7610
+ permissionBlockByRequestId: createIndex(),
7611
+ activeAssistantBlockByParent: createIndex(),
7612
+ activeThoughtBlockByParent: createIndex(),
7594
7613
  // PR-E sidechannel: track current tool / approval mode / progress
7595
- toolProgress: {},
7614
+ toolProgress: createIndex(),
7596
7615
  awaitingResync: false,
7597
7616
  resyncRequiredCount: 0,
7598
7617
  nextOrdinal: 1,
7599
7618
  now: opts.now ?? Date.now(),
7600
7619
  maxBlocks: opts.maxBlocks ?? DEFAULT_MAX_BLOCKS
7601
7620
  };
7621
+ if (opts.onTruncation) truncationCallbacks.set(state, opts.onTruncation);
7622
+ return state;
7602
7623
  }
7603
7624
  __name(createDaemonTranscriptState, "createDaemonTranscriptState");
7604
7625
  var IN_FLIGHT_TOOL_STATUSES = /* @__PURE__ */ new Set([
@@ -7654,7 +7675,7 @@ function reduceDaemonTranscriptEvents(state, events, opts = {}) {
7654
7675
  }
7655
7676
  __name(reduceDaemonTranscriptEvents, "reduceDaemonTranscriptEvents");
7656
7677
  function rebuildDaemonTranscriptBlockIndex(blocks) {
7657
- const blockIndexById = {};
7678
+ const blockIndexById = createIndex();
7658
7679
  blocks.forEach((block, index) => {
7659
7680
  blockIndexById[block.id] = index;
7660
7681
  });
@@ -7687,11 +7708,17 @@ function applyDaemonTranscriptEvent(next, event) {
7687
7708
  appendTextDelta(next, "user", "activeUserBlockId", event.text, event);
7688
7709
  break;
7689
7710
  case "user.image.delta": {
7690
- if (!next.activeUserBlockId) {
7711
+ const activeUserIndex = next.activeUserBlockId ? next.blockIndexById[next.activeUserBlockId] : void 0;
7712
+ const activeUser = activeUserIndex !== void 0 ? next.blocks[activeUserIndex] : void 0;
7713
+ if (activeUser?.kind !== "user" || !stringArraysEqual(activeUser.sourceRecordIds, event.sourceRecordIds)) {
7691
7714
  const block = createTextBlock(
7692
7715
  next,
7693
7716
  "user",
7694
- ""
7717
+ "",
7718
+ event.eventId,
7719
+ event.serverTimestamp,
7720
+ void 0,
7721
+ event.sourceRecordIds
7695
7722
  );
7696
7723
  block.images = [{ data: event.data, mimeType: event.mimeType }];
7697
7724
  appendBlock(next, block);
@@ -7919,7 +7946,7 @@ function appendTextDelta(state, kind, activeKey, text, event) {
7919
7946
  const effectiveId = parentMap && parentId != null ? parentMap[parentId] : state[activeKey];
7920
7947
  const existing = getWritableBlockById(state, effectiveId);
7921
7948
  if (existing && existing.kind === kind && canMergeTextDelta(existing, event)) {
7922
- existing.text = appendBoundedText(existing.text, text);
7949
+ existing.text = appendBoundedText(state, existing, text);
7923
7950
  existing.updatedAt = state.now;
7924
7951
  if (event.eventId !== void 0) existing.eventId = event.eventId;
7925
7952
  if (event.serverTimestamp !== void 0) {
@@ -7928,18 +7955,23 @@ function appendTextDelta(state, kind, activeKey, text, event) {
7928
7955
  if ("meta" in event && event.meta) {
7929
7956
  existing.meta = { ...existing.meta, ...event.meta };
7930
7957
  }
7931
- if (kind === "assistant" || kind === "thought") existing.streaming = true;
7958
+ if (kind !== "user") existing.streaming = true;
7932
7959
  return;
7933
7960
  }
7961
+ if (existing?.kind === kind && kind !== "user") {
7962
+ existing.streaming = false;
7963
+ existing.updatedAt = state.now;
7964
+ }
7934
7965
  const block = createTextBlock(
7935
7966
  state,
7936
7967
  kind,
7937
7968
  text,
7938
7969
  event.eventId,
7939
7970
  event.serverTimestamp,
7940
- "meta" in event ? event.meta : void 0
7971
+ "meta" in event ? event.meta : void 0,
7972
+ event.sourceRecordIds
7941
7973
  );
7942
- if (kind === "assistant" || kind === "thought") block.streaming = true;
7974
+ if (kind !== "user") block.streaming = true;
7943
7975
  if (kind === "thought") block.collapsed = true;
7944
7976
  if (parentId != null) {
7945
7977
  block.parentToolCallId = parentId;
@@ -7969,6 +8001,9 @@ function canMergeTextDelta(existing, event) {
7969
8001
  return false;
7970
8002
  }
7971
8003
  if (existing.meta?.qwenDiscreteMessage === true) return false;
8004
+ if (!stringArraysEqual(existing.sourceRecordIds, event.sourceRecordIds)) {
8005
+ return false;
8006
+ }
7972
8007
  return !("meta" in event) || event.meta?.qwenDiscreteMessage !== true;
7973
8008
  }
7974
8009
  __name(canMergeTextDelta, "canMergeTextDelta");
@@ -8021,6 +8056,10 @@ function upsertToolBlock(state, event) {
8021
8056
  if (event.locations !== void 0) existing.locations = event.locations;
8022
8057
  if (event.rawInput !== void 0) existing.rawInput = event.rawInput;
8023
8058
  if (event.rawOutput !== void 0) existing.rawOutput = event.rawOutput;
8059
+ existing.sourceRecordIds = unionStrings(
8060
+ existing.sourceRecordIds,
8061
+ event.sourceRecordIds
8062
+ );
8024
8063
  if (event.toolName) existing.toolName = event.toolName;
8025
8064
  if (event.toolKind) existing.toolKind = event.toolKind;
8026
8065
  if (event.parentToolCallId && !existing.parentToolCallId) {
@@ -8055,6 +8094,7 @@ function upsertToolBlock(state, event) {
8055
8094
  updatedAt: state.now,
8056
8095
  ...event.eventId !== void 0 ? { eventId: event.eventId } : {},
8057
8096
  ...event.serverTimestamp !== void 0 ? { serverTimestamp: event.serverTimestamp } : {},
8097
+ ...event.sourceRecordIds ? { sourceRecordIds: [...event.sourceRecordIds] } : {},
8058
8098
  ...event.details ? { details: event.details } : {},
8059
8099
  ...event.content !== void 0 ? { content: event.content } : {},
8060
8100
  ...event.locations !== void 0 ? { locations: event.locations } : {},
@@ -8121,16 +8161,17 @@ function appendShellBlock(state, event) {
8121
8161
  if (last?.kind === "shell" && last.stream === event.stream) {
8122
8162
  const writable = getWritableBlockById(state, last.id);
8123
8163
  if (writable?.kind === "shell") {
8124
- writable.text = appendBoundedText(writable.text, event.text);
8164
+ writable.text = appendBoundedText(state, writable, event.text);
8125
8165
  writable.updatedAt = state.now;
8126
8166
  if (event.eventId !== void 0) writable.eventId = event.eventId;
8127
8167
  }
8128
8168
  return;
8129
8169
  }
8170
+ const blockId = allocateBlockId(state, "shell");
8130
8171
  const block = {
8131
- id: allocateBlockId(state, "shell"),
8172
+ id: blockId,
8132
8173
  kind: "shell",
8133
- text: truncateText(event.text),
8174
+ text: truncateText(state, blockId, void 0, event.text),
8134
8175
  clientReceivedAt: state.now,
8135
8176
  createdAt: state.now,
8136
8177
  updatedAt: state.now,
@@ -8148,7 +8189,7 @@ function appendUserShellBlock(state, event) {
8148
8189
  if (last?.kind === "user_shell" && last.stream === event.stream && !state.pendingUserShellCommand) {
8149
8190
  const writable = getWritableBlockById(state, last.id);
8150
8191
  if (writable?.kind === "user_shell") {
8151
- writable.text = appendBoundedText(writable.text, event.text);
8192
+ writable.text = appendBoundedText(state, writable, event.text);
8152
8193
  writable.updatedAt = state.now;
8153
8194
  if (event.eventId !== void 0) writable.eventId = event.eventId;
8154
8195
  }
@@ -8156,10 +8197,11 @@ function appendUserShellBlock(state, event) {
8156
8197
  }
8157
8198
  const pending = state.pendingUserShellCommand;
8158
8199
  const previous = last?.kind === "user_shell" ? last : void 0;
8200
+ const blockId = allocateBlockId(state, "user-shell");
8159
8201
  const block = {
8160
- id: allocateBlockId(state, "user-shell"),
8202
+ id: blockId,
8161
8203
  kind: "user_shell",
8162
- text: truncateText(event.text),
8204
+ text: truncateText(state, blockId, void 0, event.text),
8163
8205
  command: pending?.command ?? previous?.command ?? "",
8164
8206
  ...pending?.cwd || previous?.cwd ? { cwd: pending?.cwd ?? previous?.cwd } : {},
8165
8207
  clientReceivedAt: state.now,
@@ -8242,10 +8284,11 @@ function resolvePermissionBlock(state, event) {
8242
8284
  }
8243
8285
  __name(resolvePermissionBlock, "resolvePermissionBlock");
8244
8286
  function appendStatusBlock(state, kind, text, event, opts = {}) {
8287
+ const blockId = allocateBlockId(state, kind);
8245
8288
  const block = {
8246
- id: allocateBlockId(state, kind),
8289
+ id: blockId,
8247
8290
  kind,
8248
- text: truncateText(text),
8291
+ text: truncateText(state, blockId, void 0, text),
8249
8292
  clientReceivedAt: state.now,
8250
8293
  createdAt: state.now,
8251
8294
  updatedAt: state.now,
@@ -8285,22 +8328,24 @@ function appendPromptCancelledBlock(state, event) {
8285
8328
  clearActiveText(state);
8286
8329
  }
8287
8330
  __name(appendPromptCancelledBlock, "appendPromptCancelledBlock");
8288
- function createTextBlock(state, kind, text, eventId, serverTimestamp, meta) {
8331
+ function createTextBlock(state, kind, text, eventId, serverTimestamp, meta, sourceRecordIds) {
8332
+ const blockId = allocateBlockId(state, kind);
8289
8333
  return {
8290
- id: allocateBlockId(state, kind),
8334
+ id: blockId,
8291
8335
  kind,
8292
- text: truncateText(text),
8336
+ text: truncateText(state, blockId, sourceRecordIds, text),
8293
8337
  clientReceivedAt: state.now,
8294
8338
  createdAt: state.now,
8295
8339
  updatedAt: state.now,
8296
8340
  ...eventId !== void 0 ? { eventId } : {},
8297
8341
  ...serverTimestamp !== void 0 ? { serverTimestamp } : {},
8342
+ ...sourceRecordIds ? { sourceRecordIds: [...sourceRecordIds] } : {},
8298
8343
  ...meta ? { meta: { ...meta } } : {}
8299
8344
  };
8300
8345
  }
8301
8346
  __name(createTextBlock, "createTextBlock");
8302
8347
  function cloneTranscriptState(state, opts) {
8303
- return {
8348
+ const next = {
8304
8349
  ...state,
8305
8350
  now: opts.now ?? Date.now(),
8306
8351
  maxBlocks: opts.maxBlocks ?? state.maxBlocks,
@@ -8316,21 +8361,25 @@ function cloneTranscriptState(state, opts) {
8316
8361
  // consumers + the WeakMap caches want.
8317
8362
  blocks: state.blocks,
8318
8363
  blockIndexById: state.blockIndexById,
8319
- toolBlockByCallId: { ...state.toolBlockByCallId },
8320
- activeAssistantBlockByParent: { ...state.activeAssistantBlockByParent },
8321
- activeThoughtBlockByParent: { ...state.activeThoughtBlockByParent },
8322
- trimmedToolNotificationByCallId: {
8323
- ...state.trimmedToolNotificationByCallId
8324
- },
8325
- permissionBlockByRequestId: { ...state.permissionBlockByRequestId },
8364
+ toolBlockByCallId: createIndex(state.toolBlockByCallId),
8365
+ activeAssistantBlockByParent: createIndex(
8366
+ state.activeAssistantBlockByParent
8367
+ ),
8368
+ activeThoughtBlockByParent: createIndex(state.activeThoughtBlockByParent),
8369
+ trimmedToolNotificationByCallId: createIndex(
8370
+ state.trimmedToolNotificationByCallId
8371
+ ),
8372
+ permissionBlockByRequestId: createIndex(state.permissionBlockByRequestId),
8326
8373
  // Deep-clone the inner progress records.
8327
8374
  // The outer spread alone shares `{ ratio?, step? }` references between
8328
8375
  // snapshots — once `tool.progress` event handlers start mutating in
8329
8376
  // place, the prior snapshot leaks. Pre-empt that here; cost is bounded
8330
8377
  // by `Object.keys(state.toolProgress).length` which is small (only
8331
8378
  // in-flight tools).
8332
- toolProgress: Object.fromEntries(
8333
- Object.entries(state.toolProgress).map(([k, v]) => [k, { ...v }])
8379
+ toolProgress: createIndex(
8380
+ Object.fromEntries(
8381
+ Object.entries(state.toolProgress).map(([k, v]) => [k, { ...v }])
8382
+ )
8334
8383
  ),
8335
8384
  lastResyncRequired: state.lastResyncRequired !== void 0 ? { ...state.lastResyncRequired } : void 0,
8336
8385
  // Share the reference — the reducer assigns a new object when
@@ -8340,10 +8389,14 @@ function cloneTranscriptState(state, opts) {
8340
8389
  // that don't touch the suggestion.
8341
8390
  lastFollowupSuggestion: state.lastFollowupSuggestion
8342
8391
  };
8392
+ const onTruncation = opts.onTruncation ?? truncationCallbacks.get(state);
8393
+ if (onTruncation) truncationCallbacks.set(next, onTruncation);
8394
+ return next;
8343
8395
  }
8344
8396
  __name(cloneTranscriptState, "cloneTranscriptState");
8345
8397
  function trimTranscriptState(state) {
8346
8398
  if (state.blocks.length <= state.maxBlocks) return state;
8399
+ truncationCallbacks.get(state)?.({ kind: "blocks" });
8347
8400
  const blocks = state.blocks.slice(-state.maxBlocks);
8348
8401
  const keptIds = new Set(blocks.map((block) => block.id));
8349
8402
  state.blocks = blocks;
@@ -8413,7 +8466,7 @@ var ownedBlocks = /* @__PURE__ */ new WeakMap();
8413
8466
  function takeBlocksOwnership(state) {
8414
8467
  if (ownedBlocks.get(state) === state.blocks) return;
8415
8468
  state.blocks = [...state.blocks];
8416
- state.blockIndexById = { ...state.blockIndexById };
8469
+ state.blockIndexById = createIndex(state.blockIndexById);
8417
8470
  ownedBlocks.set(state, state.blocks);
8418
8471
  }
8419
8472
  __name(takeBlocksOwnership, "takeBlocksOwnership");
@@ -8443,14 +8496,14 @@ function truncateTranscriptBeforeBlock(state, blockIndex) {
8443
8496
  __name(truncateTranscriptBeforeBlock, "truncateTranscriptBeforeBlock");
8444
8497
  function rebuildTranscriptIndexes(state) {
8445
8498
  state.blockIndexById = rebuildDaemonTranscriptBlockIndex(state.blocks);
8446
- state.toolBlockByCallId = {};
8447
- state.permissionBlockByRequestId = {};
8448
- state.trimmedToolNotificationByCallId = {};
8499
+ state.toolBlockByCallId = createIndex();
8500
+ state.permissionBlockByRequestId = createIndex();
8501
+ state.trimmedToolNotificationByCallId = createIndex();
8449
8502
  state.activeUserBlockId = void 0;
8450
8503
  state.activeAssistantBlockId = void 0;
8451
8504
  state.activeThoughtBlockId = void 0;
8452
- state.activeAssistantBlockByParent = {};
8453
- state.activeThoughtBlockByParent = {};
8505
+ state.activeAssistantBlockByParent = createIndex();
8506
+ state.activeThoughtBlockByParent = createIndex();
8454
8507
  state.currentToolCallId = void 0;
8455
8508
  state.pendingUserShellCommand = void 0;
8456
8509
  state.lastFollowupSuggestion = void 0;
@@ -8526,13 +8579,18 @@ function clearActiveText(state, parentToolCallId) {
8526
8579
  }
8527
8580
  }
8528
8581
  __name(clearActiveText, "clearActiveText");
8529
- function appendBoundedText(existing, text) {
8530
- if (existing.length >= MAX_TEXT_BLOCK_LENGTH) return existing;
8531
- return truncateText(existing + text);
8582
+ function appendBoundedText(state, block, text) {
8583
+ const existing = "text" in block ? block.text : "";
8584
+ if (existing.length >= MAX_TEXT_BLOCK_LENGTH) {
8585
+ if (text) reportTextTruncation(state, block.id, block.sourceRecordIds);
8586
+ return existing;
8587
+ }
8588
+ return truncateText(state, block.id, block.sourceRecordIds, existing + text);
8532
8589
  }
8533
8590
  __name(appendBoundedText, "appendBoundedText");
8534
- function truncateText(text) {
8591
+ function truncateText(state, blockId, sourceRecordIds, text) {
8535
8592
  if (text.length <= MAX_TEXT_BLOCK_LENGTH) return text;
8593
+ reportTextTruncation(state, blockId, sourceRecordIds);
8536
8594
  const keepLength = Math.max(
8537
8595
  0,
8538
8596
  MAX_TEXT_BLOCK_LENGTH - TEXT_TRUNCATED_SUFFIX.length
@@ -8540,6 +8598,29 @@ function truncateText(text) {
8540
8598
  return `${text.slice(0, keepLength)}${TEXT_TRUNCATED_SUFFIX}`;
8541
8599
  }
8542
8600
  __name(truncateText, "truncateText");
8601
+ function reportTextTruncation(state, blockId, sourceRecordIds) {
8602
+ truncationCallbacks.get(state)?.({
8603
+ kind: "text",
8604
+ blockId,
8605
+ sourceRecordIds
8606
+ });
8607
+ }
8608
+ __name(reportTextTruncation, "reportTextTruncation");
8609
+ function createIndex(source) {
8610
+ return Object.assign(/* @__PURE__ */ Object.create(null), source);
8611
+ }
8612
+ __name(createIndex, "createIndex");
8613
+ function stringArraysEqual(left, right) {
8614
+ if (left === right) return true;
8615
+ if (!left || !right || left.length !== right.length) return false;
8616
+ return left.every((value, index) => value === right[index]);
8617
+ }
8618
+ __name(stringArraysEqual, "stringArraysEqual");
8619
+ function unionStrings(left, right) {
8620
+ if (!left && !right) return void 0;
8621
+ return [.../* @__PURE__ */ new Set([...left ?? [], ...right ?? []])];
8622
+ }
8623
+ __name(unionStrings, "unionStrings");
8543
8624
  function pruneTrimmedToolIndexes(state) {
8544
8625
  const maxTrimmedEntries = Math.max(0, state.maxBlocks);
8545
8626
  const trimmedToolCallIds = Object.entries(state.toolBlockByCallId).filter(([, blockId]) => blockId === TRIMMED_TOOL_BLOCK_ID).map(([toolCallId]) => toolCallId);
@@ -8801,25 +8882,29 @@ function createState(seed) {
8801
8882
  ...seed,
8802
8883
  blocks,
8803
8884
  blockIndexById: rebuildDaemonTranscriptBlockIndex(blocks),
8804
- toolBlockByCallId: { ...seed.toolBlockByCallId ?? {} },
8805
- trimmedToolNotificationByCallId: {
8806
- ...seed.trimmedToolNotificationByCallId ?? {}
8807
- },
8808
- permissionBlockByRequestId: {
8809
- ...seed.permissionBlockByRequestId ?? {}
8810
- },
8811
- toolProgress: { ...seed.toolProgress ?? {} },
8812
- activeAssistantBlockByParent: {
8813
- ...seed.activeAssistantBlockByParent ?? {}
8814
- },
8815
- activeThoughtBlockByParent: {
8816
- ...seed.activeThoughtBlockByParent ?? {}
8817
- },
8885
+ toolBlockByCallId: createNullIndex(seed.toolBlockByCallId),
8886
+ trimmedToolNotificationByCallId: createNullIndex(
8887
+ seed.trimmedToolNotificationByCallId
8888
+ ),
8889
+ permissionBlockByRequestId: createNullIndex(
8890
+ seed.permissionBlockByRequestId
8891
+ ),
8892
+ toolProgress: createNullIndex(seed.toolProgress),
8893
+ activeAssistantBlockByParent: createNullIndex(
8894
+ seed.activeAssistantBlockByParent
8895
+ ),
8896
+ activeThoughtBlockByParent: createNullIndex(
8897
+ seed.activeThoughtBlockByParent
8898
+ ),
8818
8899
  lastResyncRequired: seed.lastResyncRequired !== void 0 ? { ...seed.lastResyncRequired } : void 0,
8819
8900
  lastFollowupSuggestion: seed.lastFollowupSuggestion !== void 0 ? { ...seed.lastFollowupSuggestion } : void 0
8820
8901
  };
8821
8902
  }
8822
8903
  __name(createState, "createState");
8904
+ function createNullIndex(source) {
8905
+ return Object.assign(/* @__PURE__ */ Object.create(null), source);
8906
+ }
8907
+ __name(createNullIndex, "createNullIndex");
8823
8908
 
8824
8909
  // packages/sdk-typescript/src/daemon/ui/sentinels.ts
8825
8910
  init_esbuild_shims();
@@ -2,67 +2,67 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDaemonStatusProvider
5
- } from "./chunk-67Q33DQY.js";
5
+ } from "./chunk-AMRWCMX4.js";
6
6
  import "./chunk-LXXMOYPL.js";
7
- import "./chunk-3B6PSWHE.js";
7
+ import "./chunk-3ML52IFS.js";
8
8
  import "./chunk-E5Z2AVNV.js";
9
- import "./chunk-5QSVANRT.js";
10
- import "./chunk-W4UN42YP.js";
9
+ import "./chunk-THNJYTA6.js";
10
+ import "./chunk-QOSKUG5P.js";
11
11
  import "./chunk-6RLROE6G.js";
12
12
  import "./chunk-COH43MRJ.js";
13
13
  import "./chunk-QR6U5QPP.js";
14
- import "./chunk-PUKUUASO.js";
14
+ import "./chunk-SLLG5XXE.js";
15
15
  import "./chunk-X6YQWCIJ.js";
16
- import "./chunk-64GC5EMF.js";
16
+ import "./chunk-TQBA6DVX.js";
17
17
  import "./chunk-W7FJ3N32.js";
18
18
  import "./chunk-M5GB774H.js";
19
19
  import "./chunk-UDXSXLER.js";
20
- import "./chunk-GLH2NTPB.js";
20
+ import "./chunk-SQMTULHJ.js";
21
21
  import "./chunk-VJNBRRZG.js";
22
- import "./chunk-GCY7QTCE.js";
22
+ import "./chunk-JDPCOUZ3.js";
23
23
  import "./chunk-5M6IDOMF.js";
24
24
  import "./chunk-T4TZQJ7W.js";
25
25
  import "./chunk-H6XPXXMH.js";
26
- import "./chunk-LKR7QQ63.js";
27
- import "./chunk-4XCVGEEX.js";
28
- import "./chunk-XSPFQQRE.js";
29
- import "./chunk-4RPARQ5D.js";
26
+ import "./chunk-EAUYY7SS.js";
27
+ import "./chunk-FSL5W5TI.js";
28
+ import "./chunk-OONJNQ42.js";
29
+ import "./chunk-D2VIDMVM.js";
30
30
  import "./chunk-E2UVIFI2.js";
31
31
  import "./chunk-XU457J4V.js";
32
32
  import "./chunk-VDDGDZMA.js";
33
- import "./chunk-J2MKYJKZ.js";
33
+ import "./chunk-EIAK6Q2B.js";
34
34
  import "./chunk-SZRN75WQ.js";
35
35
  import "./chunk-HTO4JFDZ.js";
36
36
  import "./chunk-CPBF7KYF.js";
37
- import "./chunk-UOA2IHRI.js";
37
+ import "./chunk-CPCVCKKF.js";
38
38
  import "./chunk-6AM5D4ME.js";
39
- import "./chunk-OSSDHJDU.js";
40
- import "./chunk-SGPFJMRP.js";
41
- import "./chunk-335ECZTA.js";
42
- import "./chunk-JCJPZMJV.js";
43
- import "./chunk-2CCDMJM7.js";
44
- import "./chunk-6ETOSWAO.js";
39
+ import "./chunk-G45X5TRN.js";
40
+ import "./chunk-PBATSWUQ.js";
41
+ import "./chunk-ZEOZL37W.js";
42
+ import "./chunk-OOCI5VVU.js";
43
+ import "./chunk-53OPIXUE.js";
44
+ import "./chunk-DSBCU6JY.js";
45
45
  import "./chunk-JESCGQM3.js";
46
- import "./chunk-CPU6I5YV.js";
46
+ import "./chunk-I6JUVU7J.js";
47
47
  import "./chunk-4WKAA4KS.js";
48
48
  import "./chunk-CR3C7WXL.js";
49
49
  import "./chunk-VGC4I5JJ.js";
50
- import "./chunk-LPHGXXZX.js";
51
- import "./chunk-4CA4WUMS.js";
52
- import "./chunk-VAJS2E2D.js";
53
- import "./chunk-WEPXQKGP.js";
54
- import "./chunk-ANRANWVE.js";
50
+ import "./chunk-JD3MKVKL.js";
51
+ import "./chunk-UEY4AYUL.js";
52
+ import "./chunk-BDBMYST4.js";
53
+ import "./chunk-EZVDJFZ7.js";
54
+ import "./chunk-OP4MOGXF.js";
55
55
  import "./chunk-XVNQMZ2I.js";
56
56
  import "./chunk-FEOZBUMT.js";
57
57
  import "./chunk-DJ2GSRLV.js";
58
- import "./chunk-4CHDYDG3.js";
59
- import "./chunk-V4PCIS25.js";
58
+ import "./chunk-6EFTQYW7.js";
59
+ import "./chunk-MAQQGNQ5.js";
60
60
  import "./chunk-A4UCTEB5.js";
61
61
  import "./chunk-XWRJCPHC.js";
62
62
  import "./chunk-TYQMGACW.js";
63
63
  import "./chunk-TYAMGABM.js";
64
64
  import "./chunk-FCMNKVXT.js";
65
- import "./chunk-UE5TZ55T.js";
65
+ import "./chunk-C27BYUX6.js";
66
66
  import "./chunk-75DOP5OR.js";
67
67
  import "./chunk-DMTGGOSA.js";
68
68
  import "./chunk-YQ3U5MUC.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  ChannelBase,
5
5
  isTerminalTaskLifecycleType
6
- } from "./chunk-BKNPMEN6.js";
6
+ } from "./chunk-NIJEXGV6.js";
7
7
  import "./chunk-UDXSXLER.js";
8
8
  import "./chunk-H6XPXXMH.js";
9
9
  import {
@@ -7,7 +7,7 @@ import {
7
7
  sanitizeLogText,
8
8
  sanitizePromptText,
9
9
  sanitizeSenderName
10
- } from "./chunk-BKNPMEN6.js";
10
+ } from "./chunk-NIJEXGV6.js";
11
11
  import "./chunk-UDXSXLER.js";
12
12
  import "./chunk-H6XPXXMH.js";
13
13
  import {
@@ -11,11 +11,11 @@ import {
11
11
  sendMessage,
12
12
  sendTyping,
13
13
  uploadToCdn
14
- } from "./chunk-BABX5XRO.js";
14
+ } from "./chunk-2HOVDT7W.js";
15
15
  import {
16
16
  ChannelBase,
17
17
  isTerminalTaskLifecycleType
18
- } from "./chunk-BKNPMEN6.js";
18
+ } from "./chunk-NIJEXGV6.js";
19
19
  import "./chunk-UDXSXLER.js";
20
20
  import "./chunk-H6XPXXMH.js";
21
21
  import {
@@ -9,7 +9,7 @@ import "./chunk-T2NCM2ET.js";
9
9
  import {
10
10
  ChannelBase,
11
11
  sanitizeLogText
12
- } from "./chunk-BKNPMEN6.js";
12
+ } from "./chunk-NIJEXGV6.js";
13
13
  import "./chunk-UDXSXLER.js";
14
14
  import "./chunk-H6XPXXMH.js";
15
15
  import "./chunk-CR3C7WXL.js";
@@ -12,7 +12,7 @@ import "./chunk-T2NCM2ET.js";
12
12
  import {
13
13
  ChannelBase,
14
14
  isTerminalTaskLifecycleType
15
- } from "./chunk-BKNPMEN6.js";
15
+ } from "./chunk-NIJEXGV6.js";
16
16
  import "./chunk-UDXSXLER.js";
17
17
  import "./chunk-H6XPXXMH.js";
18
18
  import {