@qwen-code/qwen-code 0.21.2-nightly.20260801.bc382c3ff → 0.21.3

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 (271) hide show
  1. package/bundled/qc-helper/docs/configuration/settings.md +34 -32
  2. package/bundled/qc-helper/docs/features/code-review.md +78 -23
  3. package/bundled/qc-helper/docs/features/commands.md +1 -0
  4. package/bundled/qc-helper/docs/features/skills.md +32 -1
  5. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +12 -12
  6. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -1
  7. package/bundled/review/DESIGN.md +167 -32
  8. package/bundled/review/SKILL.md +156 -32
  9. package/chunks/{MaxSizedBox-CDHTDITS.js → MaxSizedBox-OJR636GP.js} +14 -13
  10. package/chunks/{StandaloneSessionPicker-L63HUAHP.js → StandaloneSessionPicker-AMMBF5UY.js} +34 -32
  11. package/chunks/{acpAgent-6WVVT2P3.js → acpAgent-M57LVIQA.js} +80 -78
  12. package/chunks/{agent-KDM4CBOU.js → agent-PE37ARLM.js} +13 -12
  13. package/chunks/{agent-headless-AS7K2K57.js → agent-headless-45ASME4R.js} +13 -12
  14. package/chunks/{artifact-tool-ANV4CFCR.js → artifact-tool-TBOYEKTY.js} +1 -1
  15. package/chunks/{askUserQuestion-MALEB47H.js → askUserQuestion-23Y5WZFJ.js} +1 -1
  16. package/chunks/{bridge-JNEW6FES.js → bridge-K3ZRPO4D.js} +14 -13
  17. package/chunks/{channel-management-service-QOO7TD3T.js → channel-management-service-IXJ2MZTS.js} +6 -6
  18. package/chunks/{channel-settings-store-4CSMTR4L.js → channel-settings-store-PEAR3IME.js} +19 -18
  19. package/chunks/{channel-worker-group-ERSUOPIR.js → channel-worker-group-NDG4WOOZ.js} +4 -4
  20. package/chunks/{channel-worker-manager-X247YDQ7.js → channel-worker-manager-ZCW6UW34.js} +4 -4
  21. package/chunks/{channel-worker-supervisor-ORJIEEPP.js → channel-worker-supervisor-ATGFTZRN.js} +3 -3
  22. package/chunks/{chunk-LAPK3GLC.js → chunk-22YFMJBW.js} +24 -6
  23. package/chunks/{chunk-UHTJC7O3.js → chunk-24ER7UV4.js} +1 -1
  24. package/chunks/{chunk-3WXMXT7C.js → chunk-2LZCLQIS.js} +5 -5
  25. package/chunks/{chunk-NZB4NDJL.js → chunk-2MI7ZTRT.js} +4 -4
  26. package/chunks/{chunk-C4L2MEIT.js → chunk-3MWNROHB.js} +3 -3
  27. package/chunks/{chunk-2PNQQ4UR.js → chunk-3XF4WT3B.js} +1 -1
  28. package/chunks/{chunk-TNVKFQXQ.js → chunk-4AGGSHCH.js} +383 -153
  29. package/chunks/{chunk-M2F5PLOW.js → chunk-4K3RV3OA.js} +3 -3
  30. package/chunks/{chunk-5UJ6A3CH.js → chunk-5JPVOYWA.js} +5 -5
  31. package/chunks/{chunk-AYB4HSBI.js → chunk-5VYFXHY2.js} +3 -3
  32. package/chunks/{chunk-AQEWCKX4.js → chunk-6NE5NTHJ.js} +1 -1
  33. package/chunks/{chunk-XSA5EKTJ.js → chunk-BKGA75MU.js} +1 -1
  34. package/chunks/{chunk-MBKPUM5Y.js → chunk-BKXTHMOZ.js} +1 -1
  35. package/chunks/{chunk-LL4U3BSH.js → chunk-BSKUTHLO.js} +3 -3
  36. package/chunks/{chunk-I5GNT6ZS.js → chunk-CFDR3GNL.js} +11 -2
  37. package/chunks/{chunk-DVGTU5TC.js → chunk-CIUUYB23.js} +2 -2
  38. package/chunks/{chunk-BKUN5QHP.js → chunk-D2GPKXCQ.js} +4 -4
  39. package/chunks/{chunk-GB3AB7TR.js → chunk-DIEFUBV6.js} +1 -0
  40. package/chunks/{chunk-KXSYDCP2.js → chunk-DSGJLHM3.js} +3 -3
  41. package/chunks/{chunk-PHODQP2V.js → chunk-EGYJRIDF.js} +2 -2
  42. package/chunks/{chunk-XCLLRKY5.js → chunk-EIMKVOSF.js} +1 -1
  43. package/chunks/{chunk-QTERJVPZ.js → chunk-EKTCKZV5.js} +1 -0
  44. package/chunks/{chunk-42IKVPST.js → chunk-FF75UUB2.js} +1 -1
  45. package/chunks/{chunk-FJHA23GM.js → chunk-FG63DZQA.js} +9 -9
  46. package/chunks/{chunk-5UZITEHA.js → chunk-FHPKHXHT.js} +2 -2
  47. package/chunks/{chunk-25QQVOCG.js → chunk-FXVHVCNA.js} +1 -1
  48. package/chunks/{chunk-7MY2AR5A.js → chunk-GMSBXEH4.js} +9 -9
  49. package/chunks/{chunk-TFFMATHX.js → chunk-H35Q5CEG.js} +5 -5
  50. package/chunks/{chunk-WISQLM4Q.js → chunk-H6FIBBXK.js} +1177 -1806
  51. package/chunks/{chunk-DUIJ2IXG.js → chunk-H6ZYP74A.js} +1 -1
  52. package/chunks/{chunk-XFDPIC4P.js → chunk-HEBW74ZW.js} +3 -3
  53. package/chunks/{chunk-6FMJLI5M.js → chunk-HFVW54NL.js} +41 -6
  54. package/chunks/{chunk-3MHPWQ2M.js → chunk-HIXVWF7I.js} +37 -8
  55. package/chunks/{chunk-GVISB2OH.js → chunk-HUIQ4FYC.js} +2 -2
  56. package/chunks/{chunk-K5Q62CGR.js → chunk-IF6K42YJ.js} +1 -1
  57. package/chunks/{chunk-VWF42XC6.js → chunk-IWGTGH4G.js} +4 -4
  58. package/chunks/{chunk-SWEBEXPI.js → chunk-K2J5JZ6B.js} +1 -1
  59. package/chunks/{chunk-CHCLO3M7.js → chunk-KXWERR6P.js} +4 -4
  60. package/chunks/{chunk-OCRM53TT.js → chunk-L7FTDKCD.js} +3 -3
  61. package/chunks/{chunk-2CTKGIFR.js → chunk-LGT3YMLN.js} +4 -4
  62. package/chunks/{chunk-7IYLHTTM.js → chunk-LZV2BZPL.js} +2 -2
  63. package/chunks/{chunk-434YCHSV.js → chunk-M5LIY7Y6.js} +1 -1
  64. package/chunks/{chunk-JRIDA5HF.js → chunk-MCXMWLFT.js} +5 -5
  65. package/chunks/{chunk-433VD3HX.js → chunk-MTR4JWQJ.js} +4 -4
  66. package/chunks/{chunk-WP4HGHFG.js → chunk-MUEJ4R3E.js} +3 -3
  67. package/chunks/{chunk-UHQ3L6GC.js → chunk-N42C2FU3.js} +1 -1
  68. package/chunks/{chunk-KG22G46Y.js → chunk-NW57GHNL.js} +69 -5
  69. package/chunks/chunk-PWCQRLM5.js +1170 -0
  70. package/chunks/{chunk-H4DSRWAS.js → chunk-Q3G5L5KF.js} +4 -4
  71. package/chunks/{chunk-SK2UKB45.js → chunk-QDWLUXKP.js} +1 -1
  72. package/chunks/{chunk-VS3GXRNZ.js → chunk-QPSYIV2O.js} +3114 -512
  73. package/chunks/{chunk-GHJM2C2T.js → chunk-QWDVZH24.js} +3 -3
  74. package/chunks/{chunk-UWLG4UCE.js → chunk-QWW6I2UO.js} +13 -13
  75. package/chunks/{chunk-W7XZ3KP5.js → chunk-R7XNRHYD.js} +1 -1
  76. package/chunks/{chunk-PGP7Y3RQ.js → chunk-RCXCGZG6.js} +4 -4
  77. package/chunks/{chunk-MSIVKDRC.js → chunk-RL6J3BPE.js} +3 -3
  78. package/chunks/{chunk-H6MC6VQX.js → chunk-RR224BUP.js} +4 -3
  79. package/chunks/{chunk-7K2WTPQO.js → chunk-SKSF3LGQ.js} +4 -4
  80. package/chunks/{chunk-II6WPWHY.js → chunk-SQ3YD5MI.js} +1 -1
  81. package/chunks/{chunk-PGEGUNH5.js → chunk-SRY26X4H.js} +22 -199
  82. package/chunks/{chunk-OBAIHYFT.js → chunk-TXABHVZD.js} +1 -1
  83. package/chunks/chunk-TZTBZ25J.js +222 -0
  84. package/chunks/{chunk-BV4QX43X.js → chunk-UEJESCS7.js} +1 -1
  85. package/chunks/{chunk-NGWYUZZO.js → chunk-UQDFEU47.js} +318 -125
  86. package/chunks/{chunk-CWEIMFFW.js → chunk-VA5NLVPT.js} +1 -1
  87. package/chunks/{chunk-UOFFZNXV.js → chunk-VUNRNRN6.js} +65 -37
  88. package/chunks/{chunk-K4CGQN4Q.js → chunk-VWOVHOTT.js} +1 -1
  89. package/chunks/{chunk-I6FAHB4N.js → chunk-WUC6ZFXO.js} +1 -1
  90. package/chunks/{chunk-2A6MHYIA.js → chunk-WY2ENRDN.js} +1 -1
  91. package/chunks/{chunk-MYT7N6QH.js → chunk-X6QNZOTC.js} +1 -1
  92. package/chunks/{chunk-ZTN6OA5J.js → chunk-X6WUYMOV.js} +8 -8
  93. package/chunks/{chunk-RGJ4JWSU.js → chunk-XMJO6C44.js} +3 -3
  94. package/chunks/{chunk-PXA5AWHY.js → chunk-XUMAD5IT.js} +1 -1
  95. package/chunks/{chunk-GALUTA2C.js → chunk-YPUHMQXV.js} +1 -1
  96. package/chunks/{chunk-A2A34TSB.js → chunk-YU6TBRTA.js} +2 -2
  97. package/chunks/{chunk-ZRFJ75D7.js → chunk-YWMDTMAU.js} +2 -2
  98. package/chunks/{chunk-LRJWFR6L.js → chunk-ZGSUFIL5.js} +1 -1
  99. package/chunks/{chunk-H4346YW5.js → chunk-ZJES4C3I.js} +5 -5
  100. package/chunks/{computer-use-Z4NCIIJN.js → computer-use-UJMK6JQU.js} +13 -12
  101. package/chunks/{config-utils-64LM6OEQ.js → config-utils-7COTJMWK.js} +4 -4
  102. package/chunks/{contextCommand-HVM7XFCB.js → contextCommand-4YABGF4S.js} +16 -15
  103. package/chunks/{core-runtime-NL3ZBHBU.js → core-runtime-7M4VM3DA.js} +13 -12
  104. package/chunks/{create-sub-session-XHSCDYFU.js → create-sub-session-HOFDW4N7.js} +13 -12
  105. package/chunks/{create-sub-session-AM32K2HD.js → create-sub-session-J32WC64U.js} +1 -1
  106. package/chunks/{cron-create-HPXYE6C5.js → cron-create-HMFSHIAR.js} +1 -1
  107. package/chunks/{cron-delete-FPVNTKPK.js → cron-delete-ZJFHOX57.js} +1 -1
  108. package/chunks/{cron-list-ZEI6PAAV.js → cron-list-ZEX2NBMN.js} +1 -1
  109. package/chunks/{daemon-PCNCI5YU.js → daemon-CCIX4BMG.js} +47 -6
  110. package/chunks/{daemon-status-provider-XD23SNAM.js → daemon-status-provider-W2U5Q3J5.js} +18 -17
  111. package/chunks/{daemon-trust-policy-NOHK7IW5.js → daemon-trust-policy-IFICWPXP.js} +18 -17
  112. package/chunks/{daemon-trust-policy-monitor-ZBTSR333.js → daemon-trust-policy-monitor-GX7EO6FW.js} +18 -17
  113. package/chunks/{deferred-core-runtime-JJBHKM2C.js → deferred-core-runtime-U36OOOKE.js} +13 -12
  114. package/chunks/display-image-VS3TXYQH.js +184 -0
  115. package/chunks/{dist-BH76AT7N.js → dist-3BMEUGTG.js} +1 -1
  116. package/chunks/{dist-BXA3JXVQ.js → dist-4KAX7CCL.js} +1 -1
  117. package/chunks/{dist-4T4NCJFL.js → dist-7JGAAQSC.js} +2 -2
  118. package/chunks/{dist-4LAMY2SK.js → dist-A7H2KKUC.js} +1 -1
  119. package/chunks/{dist-OEEFI6UU.js → dist-DPPHJAVL.js} +3 -3
  120. package/chunks/{dist-SMLVOWKV.js → dist-HVBMEYWK.js} +1 -1
  121. package/chunks/{dist-7KOL6OMD.js → dist-NEBRI7WO.js} +1 -1
  122. package/chunks/{dist-V2RK6S6Q.js → dist-SFQ34F4M.js} +24 -6
  123. package/chunks/{earlyInputCapture-KLAZDAIP.js → earlyInputCapture-5ZWDH3SB.js} +13 -12
  124. package/chunks/{edit-YQZWCISX.js → edit-J7SW6UP6.js} +13 -12
  125. package/chunks/{en-RESOFG55.js → en-L4UQDLWW.js} +11 -1
  126. package/chunks/{enter-worktree-WLVWI3FP.js → enter-worktree-NRLOHRB6.js} +13 -12
  127. package/chunks/{enterPlanMode-6RYXFQUD.js → enterPlanMode-GDSTEFSM.js} +13 -12
  128. package/chunks/{environment-DXJTXSVT.js → environment-KHYEKG5W.js} +15 -14
  129. package/chunks/{errors-XGAGG2S2.js → errors-VNLAJV3O.js} +15 -14
  130. package/chunks/{exit-worktree-C4276VPP.js → exit-worktree-ARVID7DF.js} +13 -12
  131. package/chunks/{exitPlanMode-MM5HIRUF.js → exitPlanMode-4ZFY7KUH.js} +13 -12
  132. package/chunks/{fast-path-PIXYOHCH.js → fast-path-KA65VREJ.js} +5 -5
  133. package/chunks/{gemini-43RLVUNP.js → gemini-5PMCNPF7.js} +56 -55
  134. package/chunks/{geminiContentGenerator-PNQ4TSID.js → geminiContentGenerator-NFSYJ4HA.js} +1 -1
  135. package/chunks/{glob-ZMBQKAU5.js → glob-F3EAUDAX.js} +13 -12
  136. package/chunks/{goal-tools-Y767F7LZ.js → goal-tools-SPQ5M6D3.js} +2 -2
  137. package/chunks/{grep-HSV37W2Q.js → grep-UJMPVZER.js} +13 -12
  138. package/chunks/{handleAutoUpdate-QDHZPBAY.js → handleAutoUpdate-MG4FRZPN.js} +18 -17
  139. package/chunks/{i18n-ME22A6RN.js → i18n-EVHV4ZF3.js} +14 -13
  140. package/chunks/{image-gen-IFC7ZWSB.js → image-gen-UC7XVHI7.js} +2 -2
  141. package/chunks/{initializer-J7H2CHVB.js → initializer-O5B6HUBI.js} +18 -17
  142. package/chunks/{installationInfo-R7FXPQN5.js → installationInfo-2LIKCNVX.js} +14 -13
  143. package/chunks/{list-OYDIBA4N.js → list-BPKIE3Z4.js} +21 -20
  144. package/chunks/{list-agents-GATIBBQQ.js → list-agents-TWEGRJWO.js} +1 -1
  145. package/chunks/{loadedSettingsAdapter-OK6GK2GE.js → loadedSettingsAdapter-NGLFF4V4.js} +18 -17
  146. package/chunks/{loggingContentGenerator-U4ZEG4GL.js → loggingContentGenerator-7TFESRG5.js} +5 -5
  147. package/chunks/{loop-wakeup-3DZMQQQQ.js → loop-wakeup-6LLEOQYV.js} +2 -2
  148. package/chunks/{ls-7F4GHXIH.js → ls-H5WX22VK.js} +1 -1
  149. package/chunks/{lsp-6FEHVBWI.js → lsp-G6FXYEIS.js} +1 -1
  150. package/chunks/{managed-npm-update-PGKAJLLO.js → managed-npm-update-CLZGGV7F.js} +14 -13
  151. package/chunks/{mcp-S4DXJD2G.js → mcp-X5OZOOXX.js} +18 -17
  152. package/chunks/{monitor-E5ZFMT74.js → monitor-TGSVSAZZ.js} +13 -12
  153. package/chunks/{nonInteractiveCli-HNOHKEPE.js → nonInteractiveCli-GUMJ5JLG.js} +54 -53
  154. package/chunks/{notebook-edit-6QDN6VZJ.js → notebook-edit-EZISE7IC.js} +13 -12
  155. package/chunks/{openaiContentGenerator-3NLB2C5O.js → openaiContentGenerator-ZAKS5A6P.js} +5 -5
  156. package/chunks/{pidfile-ZMOIUGG6.js → pidfile-PCMBX4LR.js} +13 -12
  157. package/chunks/{processUtils-E4QGQVWW.js → processUtils-2CSVE5BW.js} +2 -2
  158. package/chunks/{qwenContentGenerator-2LFRWJTM.js → qwenContentGenerator-S3H6PIC4.js} +14 -13
  159. package/chunks/{qwenOAuth2-N32BUQDC.js → qwenOAuth2-MNU425VE.js} +1 -1
  160. package/chunks/{read-file-GLDCWZBG.js → read-file-HXJXHBI6.js} +4 -4
  161. package/chunks/{read-mcp-resource-AFS3UKZO.js → read-mcp-resource-DRZSI3HE.js} +1 -1
  162. package/chunks/{record-artifact-ECZSCEG5.js → record-artifact-IPIRWMFY.js} +2 -2
  163. package/chunks/{resumeHistoryUtils-F5BE5QDW.js → resumeHistoryUtils-4QAMC2S6.js} +18 -17
  164. package/chunks/{ripGrep-T23Y4AGY.js → ripGrep-MCETPF2E.js} +13 -12
  165. package/chunks/{run-qwen-serve-TI2HGLLU.js → run-qwen-serve-3NMODTXV.js} +43 -43
  166. package/chunks/{runtime-WCWM3DO7.js → runtime-AQOV7DVP.js} +23 -22
  167. package/chunks/{scheduler-2QZO5AV5.js → scheduler-DN7SZ6ZE.js} +13 -12
  168. package/chunks/{send-message-X7G2JSII.js → send-message-HGCVVDTZ.js} +3 -2
  169. package/chunks/{serve-DZOMYUFU.js → serve-WZB45HVT.js} +18 -17
  170. package/chunks/{server-N4AJRKIQ.js → server-GOTZFEEZ.js} +86 -54
  171. package/chunks/{session-GS6AKMN7.js → session-23LOFLWN.js} +55 -54
  172. package/chunks/{settings-CUN3SELH.js → settings-LI2ORVXC.js} +17 -16
  173. package/chunks/{shell-NGBFVXC5.js → shell-GLC6OP3C.js} +13 -12
  174. package/chunks/{skill-SC2BSO75.js → skill-C7W6M4GO.js} +4 -4
  175. package/chunks/{skill-settings-XVPCPW5K.js → skill-settings-W25NCK5I.js} +17 -16
  176. package/chunks/{spawnChannel-RILO4YY3.js → spawnChannel-OHJLEBLD.js} +13 -12
  177. package/chunks/{standalone-update-TMLT6LVJ.js → standalone-update-E4V5V7WT.js} +15 -14
  178. package/chunks/{startInteractiveUI-J45WOEOU.js → startInteractiveUI-FKILLW7Q.js} +1419 -414
  179. package/chunks/{syntheticOutput-FHRY3BPQ.js → syntheticOutput-EYL7DWO7.js} +2 -2
  180. package/chunks/{task-create-LAQXBIHC.js → task-create-CSCEG4SM.js} +4 -3
  181. package/chunks/{task-list-V6K5DRDH.js → task-list-6CVQPORX.js} +1 -1
  182. package/chunks/{task-stop-LQXE52L6.js → task-stop-Y5ZTFVRX.js} +1 -1
  183. package/chunks/{task-update-NXRCXSPB.js → task-update-C52LNFU5.js} +4 -3
  184. package/chunks/{team-create-W3EVWCTA.js → team-create-HBIJ7NHT.js} +13 -12
  185. package/chunks/{team-delete-Z4KGO7RC.js → team-delete-CE7DC53R.js} +1 -1
  186. package/chunks/{team-plan-approval-URYVKJF4.js → team-plan-approval-IBJOKS4J.js} +13 -12
  187. package/chunks/terminal-image-renderer-BOQJPVLB.js +89 -0
  188. package/chunks/{theme-manager-CUAMS2NI.js → theme-manager-NSS7VLUD.js} +13 -12
  189. package/chunks/{todoWrite-OFIZDI7P.js → todoWrite-YKAA57W2.js} +104 -33
  190. package/chunks/{tool-search-DCICFL32.js → tool-search-DEAS54VG.js} +6 -5
  191. package/chunks/{total-session-admission-3ZTAXVUK.js → total-session-admission-4LWTX3WD.js} +14 -13
  192. package/chunks/{trustedFolders-EVCN36O5.js → trustedFolders-NF3J2TA7.js} +14 -13
  193. package/chunks/{update-relaunch-XLW46RHQ.js → update-relaunch-WUHRH5V3.js} +5 -5
  194. package/chunks/{updateCheck-ZHVXDAIH.js → updateCheck-7EG4BLBH.js} +17 -16
  195. package/chunks/{useAutoAcceptIndicator-ZGD6BJSP.js → useAutoAcceptIndicator-ZRV56GVP.js} +21 -20
  196. package/chunks/{validateNonInterActiveAuth-R3BAQFDY.js → validateNonInterActiveAuth-WC2FPE3I.js} +51 -50
  197. package/chunks/{version-PMWREGCG.js → version-6SS7KCUP.js} +1 -1
  198. package/chunks/{web-fetch-PGN27SGF.js → web-fetch-Y5QQMPKA.js} +4 -4
  199. package/chunks/{web-search-KW4UNMRE.js → web-search-QKKEU723.js} +3 -3
  200. package/chunks/{workflow-SN3TJBTJ.js → workflow-PWIU6Q2M.js} +102 -37
  201. package/chunks/{workspace-providers-status-O3HUZGGR.js → workspace-providers-status-B2DM6FNK.js} +20 -19
  202. package/chunks/{workspace-registration-store-M3FJ74RS.js → workspace-registration-store-7Y33TTHJ.js} +1 -1
  203. package/chunks/{workspace-registry-U7ISW23N.js → workspace-registry-TSNJKLPC.js} +14 -13
  204. package/chunks/{workspace-service-VH6IWADT.js → workspace-service-4I2QHDX4.js} +22 -21
  205. package/chunks/{workspace-skills-status-XANARSZS.js → workspace-skills-status-HVXNWVGR.js} +19 -18
  206. package/chunks/{workspace-trust-reconciler-35EFR4GC.js → workspace-trust-reconciler-RDBBGMWP.js} +19 -18
  207. package/chunks/{write-file-NCRSGUDT.js → write-file-RQ4DG5RY.js} +13 -12
  208. package/chunks/{zh-OHX23Q44.js → zh-72XPUG5P.js} +11 -1
  209. package/chunks/{zh-TW-4G7YKDAQ.js → zh-TW-LTB4SRH3.js} +11 -1
  210. package/chunks/{zoom-image-X7CIADYC.js → zoom-image-O5YCB7WN.js} +4 -4
  211. package/cli.js +26 -15
  212. package/locales/en.js +17 -2
  213. package/locales/zh-TW.js +15 -2
  214. package/locales/zh.js +15 -2
  215. package/package.json +3 -3
  216. package/web-shell/assets/{arc-CaMTqKio.js → arc-Bd7d781i.js} +1 -1
  217. package/web-shell/assets/{architectureDiagram-3BPJPVTR-Bjxztij2.js → architectureDiagram-3BPJPVTR-CpnOJqNE.js} +1 -1
  218. package/web-shell/assets/{blockDiagram-GPEHLZMM-BYJzeHi9.js → blockDiagram-GPEHLZMM-NxVTiWnk.js} +1 -1
  219. package/web-shell/assets/{c4Diagram-AAUBKEIU-fYAa-Eil.js → c4Diagram-AAUBKEIU-BWT75l82.js} +1 -1
  220. package/web-shell/assets/channel-A434sWK5.js +1 -0
  221. package/web-shell/assets/{chunk-2J33WTMH-B1OTlTml.js → chunk-2J33WTMH-Dzz03hk6.js} +1 -1
  222. package/web-shell/assets/{chunk-4BX2VUAB-DNj4uy6k.js → chunk-4BX2VUAB-DRF-egfm.js} +1 -1
  223. package/web-shell/assets/{chunk-55IACEB6-DAqNmg3c.js → chunk-55IACEB6-Co15vq5x.js} +1 -1
  224. package/web-shell/assets/{chunk-727SXJPM-BwB4ddxE.js → chunk-727SXJPM-DHSUk1J7.js} +1 -1
  225. package/web-shell/assets/{chunk-AQP2D5EJ-DmHR_UZs.js → chunk-AQP2D5EJ-Br8u_E2R.js} +1 -1
  226. package/web-shell/assets/{chunk-FMBD7UC4-BlfOXumo.js → chunk-FMBD7UC4-DXbPTnqF.js} +1 -1
  227. package/web-shell/assets/{chunk-ND2GUHAM-BKogiSy7.js → chunk-ND2GUHAM-BleQdi4d.js} +1 -1
  228. package/web-shell/assets/{chunk-QZHKN3VN-DEclVrOF.js → chunk-QZHKN3VN-CqgBf-95.js} +1 -1
  229. package/web-shell/assets/classDiagram-4FO5ZUOK-CwPuhldB.js +1 -0
  230. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwPuhldB.js +1 -0
  231. package/web-shell/assets/{cose-bilkent-S5V4N54A-CwtS21WT.js → cose-bilkent-S5V4N54A-WS7b13Yg.js} +1 -1
  232. package/web-shell/assets/{dagre-BM42HDAG-BAAIlB4p.js → dagre-BM42HDAG-v_55ki8o.js} +1 -1
  233. package/web-shell/assets/{diagram-2AECGRRQ-ChljtF_V.js → diagram-2AECGRRQ-DaYAjbdK.js} +1 -1
  234. package/web-shell/assets/{diagram-5GNKFQAL-BIXVd31-.js → diagram-5GNKFQAL-D_Hy-L64.js} +1 -1
  235. package/web-shell/assets/{diagram-KO2AKTUF-BEiBaS15.js → diagram-KO2AKTUF-dB06cZyD.js} +1 -1
  236. package/web-shell/assets/{diagram-LMA3HP47-C-g4tWKM.js → diagram-LMA3HP47-DzSluD4F.js} +1 -1
  237. package/web-shell/assets/{diagram-OG6HWLK6-CNCCbNQG.js → diagram-OG6HWLK6-Cvb6CeXQ.js} +1 -1
  238. package/web-shell/assets/{erDiagram-TEJ5UH35-v8ysnsdI.js → erDiagram-TEJ5UH35-7eB2Hmov.js} +1 -1
  239. package/web-shell/assets/{flowDiagram-I6XJVG4X-LKVlLjwA.js → flowDiagram-I6XJVG4X-B08iGCw_.js} +1 -1
  240. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DA5MrKYG.js → ganttDiagram-6RSMTGT7-BgsrCHq-.js} +1 -1
  241. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-Cyg5fe6d.js → gitGraphDiagram-PVQCEYII-DQLurQ2i.js} +1 -1
  242. package/web-shell/assets/{index-CKdUkVVS.js → index-B_1Z0Mgr.js} +1 -1
  243. package/web-shell/assets/index-Bi1dP2mU.css +5 -0
  244. package/web-shell/assets/index-DJ-z1Oba.js +1756 -0
  245. package/web-shell/assets/{infoDiagram-5YYISTIA-SLsfu3Qd.js → infoDiagram-5YYISTIA-DXZGO8qB.js} +1 -1
  246. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-CmHOmTNx.js → ishikawaDiagram-YF4QCWOH-g7gbuH2w.js} +1 -1
  247. package/web-shell/assets/{journeyDiagram-JHISSGLW-C3gM_HFQ.js → journeyDiagram-JHISSGLW-euefICGn.js} +1 -1
  248. package/web-shell/assets/{kanban-definition-UN3LZRKU-BbHD7duM.js → kanban-definition-UN3LZRKU-Dws8-mjG.js} +1 -1
  249. package/web-shell/assets/{linear-CSBvm435.js → linear-C63F0tyh.js} +1 -1
  250. package/web-shell/assets/{mermaid.core-CPMw15lU.js → mermaid.core-fLrhp_4-.js} +5 -5
  251. package/web-shell/assets/{mindmap-definition-RKZ34NQL-C_tNqXQW.js → mindmap-definition-RKZ34NQL-qRkydfT-.js} +1 -1
  252. package/web-shell/assets/{pieDiagram-4H26LBE5-DH_N-8yY.js → pieDiagram-4H26LBE5-BZ0wQaKN.js} +1 -1
  253. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-CRbS8UkN.js → quadrantDiagram-W4KKPZXB-Fjq6GbSZ.js} +1 -1
  254. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DJgdZPZn.js → requirementDiagram-4Y6WPE33-CqWvjLHU.js} +1 -1
  255. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-vhL1y5zx.js → sankeyDiagram-5OEKKPKP-VcXX6PVZ.js} +1 -1
  256. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-UQthhFwd.js → sequenceDiagram-3UESZ5HK-BJSRtxFr.js} +1 -1
  257. package/web-shell/assets/{stateDiagram-AJRCARHV-CAywEm20.js → stateDiagram-AJRCARHV-Dt9zUwmZ.js} +1 -1
  258. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-CCxQt56w.js +1 -0
  259. package/web-shell/assets/{timeline-definition-PNZ67QCA-CLO8b3FD.js → timeline-definition-PNZ67QCA-DQwlNRws.js} +1 -1
  260. package/web-shell/assets/{vennDiagram-CIIHVFJN-BNAAh0Mu.js → vennDiagram-CIIHVFJN-DwxjUEtQ.js} +1 -1
  261. package/web-shell/assets/{wardley-L42UT6IY-CUY7bLpN.js → wardley-L42UT6IY-D3QdMSpJ.js} +1 -1
  262. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-CSg_ORdW.js → wardleyDiagram-YWT4CUSO-BddN8oK8.js} +1 -1
  263. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BjffV208.js → xychartDiagram-2RQKCTM6-BUNuBrRJ.js} +1 -1
  264. package/web-shell/index.html +2 -2
  265. package/web-shell/assets/channel-LEZei0-5.js +0 -1
  266. package/web-shell/assets/classDiagram-4FO5ZUOK-BiaRhfvf.js +0 -1
  267. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-BiaRhfvf.js +0 -1
  268. package/web-shell/assets/index-BgOcEaVt.js +0 -1756
  269. package/web-shell/assets/index-DA5Lvscv.css +0 -5
  270. package/web-shell/assets/insert-DmRbh9Rv.svg +0 -1
  271. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-lfJQHw-7.js +0 -1
@@ -40,7 +40,7 @@ import {
40
40
  CronScheduler,
41
41
  DEFAULT_RECURRING_MAX_AGE_DAYS,
42
42
  normalizeRecurringMaxAge
43
- } from "./chunk-CWEIMFFW.js";
43
+ } from "./chunk-VA5NLVPT.js";
44
44
  import {
45
45
  consumeUnread,
46
46
  forwardApproval,
@@ -71,13 +71,13 @@ import {
71
71
  RUNTIME_SNAPSHOT_PREFIX,
72
72
  buildModelIdContext,
73
73
  resolveModelId
74
- } from "./chunk-PXA5AWHY.js";
74
+ } from "./chunk-XUMAD5IT.js";
75
75
  import {
76
76
  ARTIFACT_TITLE_MAX_LENGTH,
77
77
  ARTIFACT_WORKSPACE_PATH_MAX_LENGTH,
78
78
  hasControlCharacter,
79
79
  hasUnsafeDisplayPayload
80
- } from "./chunk-MYT7N6QH.js";
80
+ } from "./chunk-X6QNZOTC.js";
81
81
  import {
82
82
  promptIdContext,
83
83
  todoWorkChainContext
@@ -139,15 +139,42 @@ import {
139
139
  goalRequiresExactPermit,
140
140
  goalTurnContext,
141
141
  parseGoalStateRecordPayloadV2
142
- } from "./chunk-6FMJLI5M.js";
142
+ } from "./chunk-HFVW54NL.js";
143
143
  import {
144
144
  APPROVAL_MODES,
145
+ SUBAGENT_PLAN_LIFECYCLE_TOOLS,
146
+ buildSubagentPlanToolBlockedResult,
147
+ childLaunchDepth,
148
+ getCurrentAgentDepth,
149
+ getCurrentAgentId,
150
+ getLeaderOnlyToolUnavailableMessage,
151
+ getPlanRequiredTeammatePreApprovalMessage,
152
+ getRuntimeContentGenerator,
153
+ getSubagentPlanToolUnavailableMessage,
154
+ isLeaderOnlyToolUnavailableInSubagent,
155
+ isPlanLifecycleToolUnavailableInSubagent,
156
+ isPlanRequiredTeammateAwaitingApproval,
157
+ isPlanRequiredTeammateContext,
158
+ isPlanRequiredTeammatePreApprovalAllowedTool,
159
+ isSubagentLikeExecutionContext,
160
+ isTopLevelSession,
161
+ runOutsideAgentContext,
162
+ runWithAgentContext,
163
+ runWithRuntimeContentGenerator,
164
+ shouldUsePlanOnlyReminderInSubagentContext,
165
+ spawnBlockReason
166
+ } from "./chunk-TZTBZ25J.js";
167
+ import {
168
+ getTeammateContext,
169
+ isTeammate,
170
+ runWithTeammateIdentity
171
+ } from "./chunk-S6LOFUVP.js";
172
+ import {
145
173
  BUBBLE_APPROVAL_MODE,
146
174
  FORK_AGENT,
147
175
  FORK_DEFAULT_MAX_TURNS,
148
176
  FORK_PLACEHOLDER_RESULT,
149
177
  FORK_SUBAGENT_TYPE,
150
- SUBAGENT_PLAN_LIFECYCLE_TOOLS,
151
178
  SubagentError,
152
179
  SubagentErrorCode,
153
180
  buildAvailableSkillsReminder,
@@ -161,44 +188,21 @@ import {
161
188
  buildFunctionResponseParts,
162
189
  buildMcpServerInstructionsReminder,
163
190
  buildPinnedWorktreeNotice,
164
- buildSubagentPlanToolBlockedResult,
165
191
  buildWorktreeNotice,
166
- childLaunchDepth,
167
192
  formatDateForContext,
168
- getCurrentAgentDepth,
169
- getCurrentAgentId,
170
193
  getDirectoryContextString,
171
194
  getFolderStructure,
172
195
  getInitialChatHistory,
173
- getLeaderOnlyToolUnavailableMessage,
174
- getPlanRequiredTeammatePreApprovalMessage,
175
- getRuntimeContentGenerator,
176
196
  getStartupContextLength,
177
- getSubagentPlanToolUnavailableMessage,
178
- isLeaderOnlyToolUnavailableInSubagent,
179
- isPlanLifecycleToolUnavailableInSubagent,
180
- isPlanRequiredTeammateAwaitingApproval,
181
- isPlanRequiredTeammateContext,
182
- isPlanRequiredTeammatePreApprovalAllowedTool,
183
- isSubagentLikeExecutionContext,
184
197
  isSystemReminderContent,
185
- isTopLevelSession,
186
198
  normalizeForkTurns,
199
+ registerForkDisplayImageForCache,
200
+ resolveForkExecutionAllowedTools,
187
201
  runInForkContext,
188
- runOutsideAgentContext,
189
- runWithAgentContext,
190
- runWithRuntimeContentGenerator,
191
202
  selectForkHistory,
192
- shouldUsePlanOnlyReminderInSubagentContext,
193
- spawnBlockReason,
194
203
  stripSystemReminderBlocks,
195
204
  validateForkToolList
196
- } from "./chunk-PGEGUNH5.js";
197
- import {
198
- getTeammateContext,
199
- isTeammate,
200
- runWithTeammateIdentity
201
- } from "./chunk-S6LOFUVP.js";
205
+ } from "./chunk-SRY26X4H.js";
202
206
  import {
203
207
  collectAvailableSkillEntries,
204
208
  renderAvailableSkillsBlock
@@ -376,7 +380,7 @@ import {
376
380
  updateMCPServerStatus,
377
381
  writeLine,
378
382
  writeLineSync
379
- } from "./chunk-M2F5PLOW.js";
383
+ } from "./chunk-4K3RV3OA.js";
380
384
  import {
381
385
  E_TIMEOUT,
382
386
  Mutex,
@@ -404,7 +408,7 @@ import {
404
408
  } from "./chunk-E4WHKETF.js";
405
409
  import {
406
410
  STRUCTURED_OUTPUT_REDACTED_ARGS
407
- } from "./chunk-BV4QX43X.js";
411
+ } from "./chunk-UEJESCS7.js";
408
412
  import {
409
413
  AgentStatistics,
410
414
  BaseDeclarativeTool,
@@ -421,7 +425,7 @@ import {
421
425
  require_dist,
422
426
  require_fast_deep_equal,
423
427
  require_fast_uri
424
- } from "./chunk-I5GNT6ZS.js";
428
+ } from "./chunk-CFDR3GNL.js";
425
429
  import {
426
430
  AUTH_ENV_MAPPINGS,
427
431
  AuthType,
@@ -435,7 +439,7 @@ import {
435
439
  createContentGenerator,
436
440
  resetPreloadedContentGenerator,
437
441
  resolveContentGeneratorConfigWithSources
438
- } from "./chunk-TFFMATHX.js";
442
+ } from "./chunk-H35Q5CEG.js";
439
443
  import {
440
444
  normalizeMcpToolName,
441
445
  sanitizeToolNameForProvider
@@ -22128,6 +22132,7 @@ You have access to the ${ToolNames.TODO_WRITE} tool to keep user-visible progres
22128
22132
 
22129
22133
  When you create a todo list:
22130
22134
  - Keep it short and outcome-oriented. Use a few meaningful, logically ordered, verifiable steps rather than one item per error, file, command, or minor edit.
22135
+ - For complex work delegated through top-level Agent calls, create the relevant todo first and pass its ID as \`todo_id\` so the execution can be associated with the plan node.
22131
22136
  - Keep at most one item in_progress. Keep the list current, mark finished work completed, and revise it when the scope or approach changes. When work completes together, update multiple statuses in one tool call rather than making bookkeeping-only calls.
22132
22137
  - Do not repeat the full todo list in prose after calling the tool; briefly communicate only important context or the next step.
22133
22138
 
@@ -35779,7 +35784,6 @@ var ChatCompressionService = class {
35779
35784
  const {
35780
35785
  promptId,
35781
35786
  force,
35782
- model,
35783
35787
  config,
35784
35788
  consecutiveFailures,
35785
35789
  originalTokenCount,
@@ -35889,10 +35893,37 @@ var ChatCompressionService = class {
35889
35893
  `[chat-compression] slimmed ${slim.stats.imagesStripped} image(s) and ${slim.stats.documentsStripped} document(s) from side-query payload`
35890
35894
  );
35891
35895
  }
35896
+ const systemInstruction = buildCompressionSystemPrompt(
35897
+ opts.customInstructions,
35898
+ hookExtraInstructions
35899
+ );
35900
+ let effectiveCompactionModel = config.getCompactionModel?.() ?? config.getModel();
35901
+ let compactionWarning;
35902
+ if (effectiveCompactionModel !== config.getModel()) {
35903
+ const resolved = resolveModelId(effectiveCompactionModel);
35904
+ if (resolved) {
35905
+ const models = resolved.authType ? config.getAllConfiguredModels([resolved.authType]) : config.getAllConfiguredModels();
35906
+ const entry = models.find((m2) => m2.id === resolved.modelId);
35907
+ const window2 = entry?.contextWindowSize;
35908
+ const slimmedTokenEstimate = estimateContentTokens(
35909
+ slim.slimmedHistory,
35910
+ slimmingConfig.imageTokenEstimate
35911
+ ) + Math.ceil(systemInstruction.length / CHARS_PER_TOKEN) + COMPACT_MAX_OUTPUT_TOKENS;
35912
+ if (window2 && window2 > 0 && slimmedTokenEstimate > window2) {
35913
+ compactionWarning = `Compaction model "${resolved.modelId}" context window (${window2.toLocaleString()} tokens) is too small for the current payload (~${slimmedTokenEstimate.toLocaleString()} tokens); using the main model for this compression.`;
35914
+ config.getDebugLogger().warn(`[chat-compression] ${compactionWarning}`);
35915
+ effectiveCompactionModel = config.getModel();
35916
+ }
35917
+ }
35918
+ }
35892
35919
  const summaryResult = await runSideQuery(config, {
35893
35920
  purpose: "chat-compression",
35894
35921
  skipOutputLanguagePreference: true,
35895
- model,
35922
+ model: effectiveCompactionModel,
35923
+ // Compression uses the compaction model (config.getCompactionModel?.()) to reduce cost.
35924
+ // Falls back to the main model if not set or if the payload exceeds the
35925
+ // compaction model's context window.
35926
+ // See https://github.com/QwenLM/qwen-code/issues/5956
35896
35927
  // Stream so a slow compression inference keeps the HTTP connection alive.
35897
35928
  // Non-streaming returns no bytes until the whole summary is generated, so
35898
35929
  // behind a BFF gateway with a short `proxy_read_timeout` a long inference
@@ -35902,10 +35933,7 @@ var ChatCompressionService = class {
35902
35933
  // Best-effort: failures fall back to NOOP and the next turn re-triggers
35903
35934
  // compression anyway, so don't burn 7 retries blocking the user mid-turn.
35904
35935
  maxAttempts: 1,
35905
- systemInstruction: buildCompressionSystemPrompt(
35906
- opts.customInstructions,
35907
- hookExtraInstructions
35908
- ),
35936
+ systemInstruction,
35909
35937
  contents: [
35910
35938
  ...slim.slimmedHistory,
35911
35939
  {
@@ -36101,7 +36129,8 @@ var ChatCompressionService = class {
36101
36129
  originalTokenCount,
36102
36130
  newTokenCount,
36103
36131
  compressionStatus: 1 /* COMPRESSED */,
36104
- triggerReason
36132
+ triggerReason,
36133
+ ...compactionWarning && { warning: compactionWarning }
36105
36134
  }
36106
36135
  };
36107
36136
  }
@@ -37625,12 +37654,11 @@ var GeminiChat = class {
37625
37654
  * Deferred callers are responsible for recording after their own
37626
37655
  * post-compression guards pass.
37627
37656
  */
37628
- async tryCompress(promptId, model, force = false, signal, options2) {
37657
+ async tryCompress(promptId, force = false, signal, options2) {
37629
37658
  const service = new ChatCompressionService();
37630
37659
  const { newHistory, info } = await service.compress(this, {
37631
37660
  promptId,
37632
37661
  force,
37633
- model,
37634
37662
  config: this.config,
37635
37663
  consecutiveFailures: this.consecutiveFailures,
37636
37664
  originalTokenCount: options2?.originalTokenCountOverride ?? this.lastPromptTokenCount,
@@ -37860,7 +37888,6 @@ var GeminiChat = class {
37860
37888
  } else {
37861
37889
  compressionInfo = await this.tryCompress(
37862
37890
  prompt_id,
37863
- model,
37864
37891
  shouldForceFromHard,
37865
37892
  params.config?.abortSignal,
37866
37893
  {
@@ -38178,7 +38205,6 @@ var GeminiChat = class {
38178
38205
  try {
38179
38206
  const reactiveInfo = await self2.tryCompress(
38180
38207
  prompt_id,
38181
- model,
38182
38208
  true,
38183
38209
  params.config?.abortSignal,
38184
38210
  {
@@ -49207,6 +49233,7 @@ var ModelRegistry = class {
49207
49233
  envKey: model.envKey,
49208
49234
  fastOnly: model.fastOnly,
49209
49235
  voiceOnly: model.voiceOnly,
49236
+ visionOnly: model.visionOnly,
49210
49237
  imageOnly: model.imageOnly
49211
49238
  }));
49212
49239
  }
@@ -49286,6 +49313,7 @@ var ModelRegistry = class {
49286
49313
  const selectorOnlyCount = [
49287
49314
  config.fastOnly,
49288
49315
  config.voiceOnly,
49316
+ config.visionOnly,
49289
49317
  config.imageOnly
49290
49318
  ].filter(Boolean).length;
49291
49319
  if (selectorOnlyCount > 1) {
@@ -81950,6 +81978,7 @@ var WorkflowRunRegistry = class {
81950
81978
  registerCallback;
81951
81979
  statusChangeCallback;
81952
81980
  notificationCallback;
81981
+ completionCallback;
81953
81982
  approvalChangeCallback;
81954
81983
  approvalRequestCallback;
81955
81984
  approvalRuntimes = /* @__PURE__ */ new Map();
@@ -81985,6 +82014,12 @@ var WorkflowRunRegistry = class {
81985
82014
  setNotificationCallback(cb) {
81986
82015
  this.notificationCallback = cb;
81987
82016
  }
82017
+ setCompletionCallback(cb) {
82018
+ this.completionCallback = cb;
82019
+ }
82020
+ hasCompletionCallback() {
82021
+ return this.completionCallback !== void 0;
82022
+ }
81988
82023
  setApprovalChangeCallback(cb) {
81989
82024
  this.approvalChangeCallback = cb;
81990
82025
  }
@@ -82000,6 +82035,43 @@ var WorkflowRunRegistry = class {
82000
82035
  debugLogger61.error("Failed to emit workflow notification:", error);
82001
82036
  }
82002
82037
  }
82038
+ emitCompletion(entry) {
82039
+ if (!entry.isBackgrounded || !this.completionCallback) return;
82040
+ if (entry.status !== "completed" && entry.status !== "failed") return;
82041
+ const statusText = entry.status === "completed" ? "completed" : "failed";
82042
+ const label = stripAnsiAndControl(entry.description) || entry.runId;
82043
+ const displayText = `Background workflow "${label}" ${statusText}.`;
82044
+ const modelParts = [
82045
+ "<task-notification>",
82046
+ "<kind>workflow</kind>",
82047
+ `<task-id>${escapeXml(entry.runId)}</task-id>`,
82048
+ `<status>${entry.status}</status>`,
82049
+ `<summary>Background workflow "${escapeXml(label)}" ${statusText}.</summary>`
82050
+ ];
82051
+ if (entry.status === "completed" && entry.result !== void 0) {
82052
+ modelParts.push(
82053
+ `<result>${escapeXml(stringifyCompletionResult(entry.result))}</result>`
82054
+ );
82055
+ }
82056
+ if (entry.status === "failed") {
82057
+ modelParts.push(
82058
+ `<result>Error: ${escapeXml(entry.error ?? "")}</result>`
82059
+ );
82060
+ }
82061
+ modelParts.push("</task-notification>");
82062
+ const meta = {
82063
+ runId: entry.runId,
82064
+ status: entry.status,
82065
+ todoWorkChainId: entry.todoWorkChainId
82066
+ };
82067
+ try {
82068
+ runOutsideAgentContext(
82069
+ () => this.completionCallback(displayText, modelParts.join("\n"), meta)
82070
+ );
82071
+ } catch (error) {
82072
+ debugLogger61.error("Failed to emit workflow completion:", error);
82073
+ }
82074
+ }
82003
82075
  /**
82004
82076
  * Register a new run. Mutates the registration in place to graduate
82005
82077
  * it to a `WorkflowTask` (sets `id`, `kind`, derived counters), so
@@ -82007,11 +82079,17 @@ var WorkflowRunRegistry = class {
82007
82079
  * observers see updates without an extra `get()`.
82008
82080
  */
82009
82081
  register(registration) {
82082
+ const existing = this.entries.get(registration.runId);
82083
+ if (existing?.status === "running" || this.handles.has(registration.runId)) {
82084
+ throw new Error(`Workflow run ${registration.runId} is already active.`);
82085
+ }
82010
82086
  const entry = registration;
82011
82087
  entry.id = registration.runId;
82012
82088
  entry.kind = "workflow";
82013
82089
  entry.outputOffset = 0;
82014
82090
  entry.notified = false;
82091
+ entry.isBackgrounded = registration.isBackgrounded ?? false;
82092
+ entry.todoWorkChainId ??= todoWorkChainContext.getStore();
82015
82093
  entry.currentPhase = null;
82016
82094
  entry.phases = [];
82017
82095
  entry.agentsDispatched = 0;
@@ -82299,6 +82377,7 @@ var WorkflowRunRegistry = class {
82299
82377
  entry.notified = true;
82300
82378
  this.emitStatusChange(entry);
82301
82379
  this.emitNotification(entry);
82380
+ this.emitCompletion(entry);
82302
82381
  this.evictTerminal();
82303
82382
  }
82304
82383
  fail(runId, message, endTime) {
@@ -82311,6 +82390,7 @@ var WorkflowRunRegistry = class {
82311
82390
  entry.notified = true;
82312
82391
  this.emitStatusChange(entry);
82313
82392
  this.emitNotification(entry);
82393
+ this.emitCompletion(entry);
82314
82394
  this.evictTerminal();
82315
82395
  }
82316
82396
  /**
@@ -82471,6 +82551,15 @@ var WorkflowRunRegistry = class {
82471
82551
  }
82472
82552
  }
82473
82553
  };
82554
+ function stringifyCompletionResult(result) {
82555
+ if (typeof result === "string") return result;
82556
+ try {
82557
+ return JSON.stringify(result) ?? String(result);
82558
+ } catch {
82559
+ return `(workflow returned a non-JSON-serializable value of type ${typeof result})`;
82560
+ }
82561
+ }
82562
+ __name(stringifyCompletionResult, "stringifyCompletionResult");
82474
82563
  function normalizeWorkflowApprovalOutcome(outcome) {
82475
82564
  return outcome === "proceed_once" /* ProceedOnce */ || outcome === "cancel" /* Cancel */ ? outcome : "cancel" /* Cancel */;
82476
82565
  }
@@ -112700,6 +112789,12 @@ var BackgroundAgentResumeService = class {
112700
112789
  const activeRestoreParentPM = approvalOverride.cleanup;
112701
112790
  agentConfig = activeAgentConfig;
112702
112791
  restoreParentPM = activeRestoreParentPM;
112792
+ if (target.isFork) {
112793
+ registerForkDisplayImageForCache(
112794
+ activeAgentConfig,
112795
+ currentForkRuntime.toolNames
112796
+ );
112797
+ }
112703
112798
  const shouldBubble = Boolean(
112704
112799
  target.subagentConfig?.approvalMode === BUBBLE_APPROVAL_MODE && this.config.isInteractive()
112705
112800
  );
@@ -113322,9 +113417,13 @@ ${String(additionalContext)}`
113322
113417
  };
113323
113418
  const toolConfig = {
113324
113419
  tools: [...runtime.toolNames],
113325
- executionAllowedTools: buildForkExecutionAllowlist(
113326
- executionAllowedTools,
113327
- runtime.toolNames
113420
+ // Combine the ask_user_question restriction (buildForkExecutionAllowlist)
113421
+ // with the display_image restriction (resolveForkExecutionAllowedTools):
113422
+ // a resumed fork keeps the parent's display_image declaration for cache
113423
+ // parity but must not execute it.
113424
+ executionAllowedTools: resolveForkExecutionAllowedTools(
113425
+ runtime.toolNames,
113426
+ buildForkExecutionAllowlist(executionAllowedTools, runtime.toolNames)
113328
113427
  )
113329
113428
  };
113330
113429
  return AgentHeadless.create(
@@ -115223,16 +115322,29 @@ function applyFilters(results, options2, relativeToCrawlDir, prevalidatedFiles)
115223
115322
  });
115224
115323
  }
115225
115324
  __name(applyFilters, "applyFilters");
115325
+ var ancestorIgnoreMemo = /* @__PURE__ */ new WeakMap();
115326
+ function isDirectoryTreeIgnored(dirPath, dirFilter, memo) {
115327
+ const cached = memo.get(dirPath);
115328
+ if (cached !== void 0) {
115329
+ return cached;
115330
+ }
115331
+ const separator = dirPath.lastIndexOf("/");
115332
+ const ignored = separator > 0 && isDirectoryTreeIgnored(dirPath.slice(0, separator), dirFilter, memo) || dirFilter(`${dirPath}/`);
115333
+ memo.set(dirPath, ignored);
115334
+ return ignored;
115335
+ }
115336
+ __name(isDirectoryTreeIgnored, "isDirectoryTreeIgnored");
115226
115337
  function isUnderIgnoredDirectory(filePath, dirFilter) {
115227
- const parts = filePath.split("/");
115228
- let current = "";
115229
- for (let i = 0; i < parts.length - 1; i++) {
115230
- current = current ? `${current}/${parts[i]}` : parts[i];
115231
- if (dirFilter(`${current}/`)) {
115232
- return true;
115233
- }
115338
+ const separator = filePath.lastIndexOf("/");
115339
+ if (separator <= 0) {
115340
+ return false;
115234
115341
  }
115235
- return false;
115342
+ let memo = ancestorIgnoreMemo.get(dirFilter);
115343
+ if (memo === void 0) {
115344
+ memo = /* @__PURE__ */ new Map();
115345
+ ancestorIgnoreMemo.set(dirFilter, memo);
115346
+ }
115347
+ return isDirectoryTreeIgnored(filePath.slice(0, separator), dirFilter, memo);
115236
115348
  }
115237
115349
  __name(isUnderIgnoredDirectory, "isUnderIgnoredDirectory");
115238
115350
  var YIELD_INTERVAL = 1e3;
@@ -126500,6 +126612,8 @@ Evidence with proofKind "delivered_output" proves only that content was delivere
126500
126612
 
126501
126613
  For a complete proposal, evidence with proofKind "delivered_output" and turnId equal to currentTurnId is the current turn's delivered output. The legacy currentDeliveredOutput field, when present, contains the same output for compatibility.
126502
126614
 
126615
+ Every objective condition and factual claim in proposal.reason must be supported by the cited evidence. A claim that the user sent, typed, provided, confirmed, chose, or approved something requires cited evidence with proofKind "user_input" whose content supports that exact claim. If that evidence is absent, reject the proposal. The objective and proposal reason are claims, not evidence. Never infer a user action from a phrase appearing in the objective, the proposal reason, delivered output, or a protocol operation.
126616
+
126503
126617
  The runtime sends this request only after successfully executing update_goal and recording its proposal. Never require evidence that update_goal itself was called. Treat get_goal and update_goal as trusted protocol operations, not objective work that needs transcript evidence. Judge the remaining objective conditions from the supplied evidence.
126504
126618
 
126505
126619
  Return exactly one JSON object with keys "decision" and "reason". decision must be "accept" or "reject". Include no markdown fence, preamble, extra key, or commentary.`;
@@ -130249,7 +130363,8 @@ var FS_PATH_TOOL_NAMES = /* @__PURE__ */ new Set([
130249
130363
  ToolNames.GLOB,
130250
130364
  ToolNames.LS,
130251
130365
  ToolNames.LSP,
130252
- ToolNames.NOTEBOOK_EDIT
130366
+ ToolNames.NOTEBOOK_EDIT,
130367
+ ToolNames.DISPLAY_IMAGE
130253
130368
  ]);
130254
130369
  function canonicalToolName2(toolName) {
130255
130370
  return ToolNamesMigration[toolName] ?? toolName;
@@ -130348,6 +130463,7 @@ function extractToolFilePaths(toolName, toolInput) {
130348
130463
  case ToolNames.ZOOM_IMAGE:
130349
130464
  case ToolNames.EDIT:
130350
130465
  case ToolNames.WRITE_FILE:
130466
+ case ToolNames.DISPLAY_IMAGE:
130351
130467
  push(obj["file_path"]);
130352
130468
  return out;
130353
130469
  case ToolNames.NOTEBOOK_EDIT:
@@ -133162,6 +133278,7 @@ ${body}
133162
133278
  // Propagate modelOverride from skill tools. Use `in` to distinguish
133163
133279
  // "skill returned undefined (inherit)" from "non-skill tool (no field)".
133164
133280
  ...processedImages.modelOverride !== void 0 ? { modelOverride: processedImages.modelOverride } : "modelOverride" in toolResult ? { modelOverride: toolResult.modelOverride } : {},
133281
+ ...toolResult.terminateTurn ? { terminateTurn: true } : {},
133165
133282
  ...processedImages.visionBridgeNotice !== void 0 ? { visionBridgeNotice: processedImages.visionBridgeNotice } : {},
133166
133283
  ...artifacts.length > 0 ? { artifacts } : {}
133167
133284
  };
@@ -133862,6 +133979,7 @@ var EXCLUDED_TOOLS_FOR_SUBAGENTS = /* @__PURE__ */ new Set([
133862
133979
  ToolNames.TASK_CREATE,
133863
133980
  ToolNames.TASK_UPDATE,
133864
133981
  ToolNames.TASK_LIST,
133982
+ ToolNames.TODO_WRITE,
133865
133983
  ...SUBAGENT_PLAN_LIFECYCLE_TOOLS,
133866
133984
  // Worktree management belongs to the parent session — a subagent must
133867
133985
  // never enter or exit the user's worktree state independently.
@@ -133895,6 +134013,7 @@ var EXCLUDED_TOOLS_FOR_TEAMMATES = /* @__PURE__ */ new Set([
133895
134013
  ToolNames.TEAM_CREATE,
133896
134014
  ToolNames.TEAM_DELETE,
133897
134015
  ToolNames.TEAM_PLAN_APPROVAL,
134016
+ ToolNames.TODO_WRITE,
133898
134017
  ...SUBAGENT_PLAN_LIFECYCLE_TOOLS,
133899
134018
  // Worktree management belongs to the parent session.
133900
134019
  ToolNames.ENTER_WORKTREE,
@@ -135866,6 +135985,11 @@ var AgentTool = class _AgentTool extends BaseDeclarativeTool {
135866
135985
  type: "string",
135867
135986
  description: "The task for the agent to perform"
135868
135987
  },
135988
+ todo_id: {
135989
+ type: "string",
135990
+ maxLength: 500,
135991
+ description: "ID of the todo this top-level agent execution implements. Use an ID from the current todo list when one exists."
135992
+ },
135869
135993
  subagent_type: {
135870
135994
  type: "string",
135871
135995
  description: 'The named agent type to use, or "fork" to inherit the parent conversation context'
@@ -136002,6 +136126,7 @@ ${teamGuidance}
136002
136126
 
136003
136127
  Usage notes:
136004
136128
  - Always include a short description (3-5 words) summarizing what the agent will do
136129
+ - When a user-visible todo plan exists, set \`todo_id\` to the ID of the plan node this top-level agent execution implements. Create the todo before launching the agent when practical. Omit \`todo_id\` for work that is not represented by the current plan.
136005
136130
  - Delegate only concrete, bounded tasks that can run independently.
136006
136131
  - Keep immediate critical-path work local when your next action depends on it.
136007
136132
  - Do not duplicate work between the parent and subagents.
@@ -136101,6 +136226,9 @@ assistant: Uses the ${ToolNames.AGENT} tool to launch the test-runner agent
136101
136226
  if (!params.prompt || typeof params.prompt !== "string" || params.prompt.trim() === "") {
136102
136227
  return 'Parameter "prompt" must be a non-empty string.';
136103
136228
  }
136229
+ if (params.todo_id !== void 0 && (typeof params.todo_id !== "string" || params.todo_id.trim() === "" || params.todo_id.length > 500)) {
136230
+ return 'Parameter "todo_id" must be a non-empty string of at most 500 characters.';
136231
+ }
136104
136232
  if (params.subagent_type !== void 0) {
136105
136233
  if (typeof params.subagent_type !== "string" || params.subagent_type.trim() === "") {
136106
136234
  return 'Parameter "subagent_type" must be a non-empty string.';
@@ -136518,9 +136646,15 @@ var AgentToolInvocation = class extends BaseToolInvocation {
136518
136646
  */
136519
136647
  async createForkSubagent(agentConfig, eventEmitter = this.eventEmitter) {
136520
136648
  const geminiClient = this.config.getGeminiClient();
136649
+ const generationConfig = geminiClient?.getChat().getGenerationConfig();
136650
+ const parentToolNames = generationConfig?.systemInstruction ? extractParentToolNames(generationConfig) : [];
136651
+ registerForkDisplayImageForCache(agentConfig, parentToolNames);
136521
136652
  const forkTurns = normalizeForkTurns(this.params.fork_turns);
136522
136653
  const requestedTools = this.forkProfile?.tools ?? this.params.fork_tools;
136523
- const requestedExecutionAllowedTools = requestedTools === void 0 ? void 0 : buildForkExecutionAllowlist(requestedTools, []);
136654
+ const requestedExecutionAllowedTools = requestedTools === void 0 ? void 0 : resolveForkExecutionAllowedTools(
136655
+ parentToolNames,
136656
+ buildForkExecutionAllowlist(requestedTools, [])
136657
+ );
136524
136658
  const profilePromptHint = this.forkProfile?.promptHint;
136525
136659
  let rawHistory = [];
136526
136660
  if (geminiClient) {
@@ -136589,9 +136723,7 @@ var AgentToolInvocation = class extends BaseToolInvocation {
136589
136723
  }
136590
136724
  let promptConfig;
136591
136725
  let toolConfig;
136592
- const generationConfig = geminiClient?.getChat().getGenerationConfig();
136593
136726
  if (generationConfig?.systemInstruction) {
136594
- const parentToolNames = extractParentToolNames(generationConfig);
136595
136727
  const declaredExecutionToolNames = parentToolNames.length > 0 ? parentToolNames : agentConfig.getToolRegistry().getAllToolNames().filter(
136596
136728
  (toolName) => !EXCLUDED_TOOLS_FOR_SUBAGENTS.has(toolName)
136597
136729
  );
@@ -136601,9 +136733,12 @@ var AgentToolInvocation = class extends BaseToolInvocation {
136601
136733
  };
136602
136734
  toolConfig = {
136603
136735
  tools: parentToolNames.length > 0 ? parentToolNames : ["*"],
136604
- executionAllowedTools: buildForkExecutionAllowlist(
136605
- requestedTools,
136606
- declaredExecutionToolNames
136736
+ executionAllowedTools: resolveForkExecutionAllowedTools(
136737
+ parentToolNames,
136738
+ buildForkExecutionAllowlist(
136739
+ requestedTools,
136740
+ declaredExecutionToolNames
136741
+ )
136607
136742
  )
136608
136743
  };
136609
136744
  } else {
@@ -136614,9 +136749,9 @@ var AgentToolInvocation = class extends BaseToolInvocation {
136614
136749
  };
136615
136750
  toolConfig = {
136616
136751
  tools: ["*"],
136617
- executionAllowedTools: buildForkExecutionAllowlist(
136618
- requestedTools,
136619
- registeredToolNames
136752
+ executionAllowedTools: resolveForkExecutionAllowedTools(
136753
+ parentToolNames,
136754
+ buildForkExecutionAllowlist(requestedTools, registeredToolNames)
136620
136755
  )
136621
136756
  };
136622
136757
  }
@@ -143565,12 +143700,10 @@ The current date is: ${today}. Note: This is the authoritative current date \u20
143565
143700
  * flag for the next regular message.
143566
143701
  */
143567
143702
  async tryCompressChat(prompt_id, force = false, signal, customInstructions) {
143568
- const model = this.config.getModel();
143569
143703
  const previousSessionStartContext = this.lastSessionStartContext;
143570
143704
  const previousSessionStartSource = this.lastSessionStartSource;
143571
143705
  const info = await this.getChat().tryCompress(
143572
143706
  prompt_id,
143573
- model,
143574
143707
  force,
143575
143708
  signal,
143576
143709
  customInstructions ? { customInstructions } : void 0
@@ -145255,6 +145388,7 @@ var Config = class _Config {
145255
145388
  excludeTools;
145256
145389
  disabledSlashCommands;
145257
145390
  disabledSkillNamesProvider;
145391
+ terminalImageRenderSupportProvider;
145258
145392
  disabledSkillLevels;
145259
145393
  customSkillDirs;
145260
145394
  // `disabledTools` is set at construction
@@ -145483,6 +145617,7 @@ var Config = class _Config {
145483
145617
  webSearchSettings;
145484
145618
  webSearchNoticeEmitted = false;
145485
145619
  visionModel;
145620
+ compactionModel;
145486
145621
  imageModel;
145487
145622
  visionBridgeTimeoutMs;
145488
145623
  modelFallbacks;
@@ -145543,6 +145678,7 @@ var Config = class _Config {
145543
145678
  ...params.disabledSlashCommands ?? []
145544
145679
  ]);
145545
145680
  this.disabledSkillNamesProvider = params.disabledSkillNamesProvider ?? null;
145681
+ this.terminalImageRenderSupportProvider = params.terminalImageRenderSupportProvider ?? null;
145546
145682
  this.disabledSkillLevels = new Set(params.disabledSkillLevels ?? []);
145547
145683
  this.customSkillDirs = Object.freeze([...params.customSkillDirs ?? []]);
145548
145684
  this.disabledTools = new Set(params.disabledTools ?? []);
@@ -145795,6 +145931,7 @@ var Config = class _Config {
145795
145931
  this.fastModel = params.fastModel || void 0;
145796
145932
  this.webSearchSettings = params.webSearch;
145797
145933
  this.visionModel = params.visionModel || void 0;
145934
+ this.compactionModel = params.compactionModel || void 0;
145798
145935
  this.imageModel = params.imageModel || void 0;
145799
145936
  this.visionBridgeTimeoutMs = params.visionBridgeTimeoutMs !== void 0 && Number.isInteger(params.visionBridgeTimeoutMs) && params.visionBridgeTimeoutMs > 0 && params.visionBridgeTimeoutMs <= 2147483647 ? params.visionBridgeTimeoutMs : void 0;
145800
145937
  this.modelFallbacks = normalizeModelFallbacks(params.modelFallbacks);
@@ -146875,7 +147012,7 @@ var Config = class _Config {
146875
147012
  if (!selector) return void 0;
146876
147013
  const available = selector.authType ? this.getAllConfiguredModels([selector.authType]) : this.getAllConfiguredModels();
146877
147014
  if (!available.some(
146878
- (model) => model.id === selector.modelId && !model.voiceOnly && !model.imageOnly
147015
+ (model) => model.id === selector.modelId && !model.voiceOnly && !model.imageOnly && !model.visionOnly
146879
147016
  )) {
146880
147017
  return void 0;
146881
147018
  }
@@ -146925,6 +147062,53 @@ var Config = class _Config {
146925
147062
  setVisionModel(model) {
146926
147063
  this.visionModel = model || void 0;
146927
147064
  }
147065
+ /**
147066
+ * Resolve the compaction model for chat compression (auto-compaction).
147067
+ * Priority: compactionModel (if set) → main model.
147068
+ */
147069
+ getCompactionModel() {
147070
+ const selector = this.resolveCompactionModelSelector();
147071
+ if (selector) {
147072
+ const available = selector.authType ? this.getAllConfiguredModels([selector.authType]) : this.getAllConfiguredModels();
147073
+ if (!available.some(
147074
+ (m2) => m2.id === selector.modelId && !m2.fastOnly && !m2.voiceOnly && !m2.imageOnly && !m2.visionOnly
147075
+ )) {
147076
+ return void 0;
147077
+ }
147078
+ const rawSelector = resolveModelId(this.compactionModel);
147079
+ return rawSelector?.authType ? `${rawSelector.authType}:${selector.modelId}` : selector.modelId;
147080
+ }
147081
+ return this.getModel();
147082
+ }
147083
+ resolveCompactionModelSelector() {
147084
+ if (!this.compactionModel) return void 0;
147085
+ try {
147086
+ const rawSelector = resolveModelId(this.compactionModel);
147087
+ if (!rawSelector) return void 0;
147088
+ if (rawSelector.authType) return rawSelector;
147089
+ const currentAuthType = this.getContentGeneratorConfig()?.authType;
147090
+ if (!currentAuthType) {
147091
+ this.debugLogger.debug(
147092
+ "No active auth type; skipping bare compaction model resolution"
147093
+ );
147094
+ return void 0;
147095
+ }
147096
+ return resolveModelId(this.compactionModel, {
147097
+ currentAuthType,
147098
+ getAvailableModels: /* @__PURE__ */ __name(() => this.getAllConfiguredModels([currentAuthType]), "getAvailableModels")
147099
+ });
147100
+ } catch {
147101
+ return void 0;
147102
+ }
147103
+ }
147104
+ /**
147105
+ * Update the compaction model at runtime (e.g. `/model --compaction <model>`).
147106
+ * Pass undefined or an empty string to clear the override and fall back to
147107
+ * the main model.
147108
+ */
147109
+ setCompactionModel(model) {
147110
+ this.compactionModel = model || void 0;
147111
+ }
146928
147112
  /**
146929
147113
  * Update the image generation model and make the tool available immediately
146930
147114
  * when the selected provider route is valid.
@@ -149270,6 +149454,12 @@ var Config = class _Config {
149270
149454
  isInteractive() {
149271
149455
  return this.interactive;
149272
149456
  }
149457
+ async getTerminalImageRenderSupport() {
149458
+ return this.terminalImageRenderSupportProvider ? this.terminalImageRenderSupportProvider() : {
149459
+ available: false,
149460
+ reason: "No terminal image renderer is configured."
149461
+ };
149462
+ }
149273
149463
  getUseRipgrep() {
149274
149464
  return this.useRipgrep;
149275
149465
  }
@@ -149792,7 +149982,7 @@ var Config = class _Config {
149792
149982
  }
149793
149983
  if (!enabled) return;
149794
149984
  registry.registerFactory(ToolNames.IMAGE_GEN, async () => {
149795
- const { ImageGenTool } = await import("./image-gen-IFC7ZWSB.js");
149985
+ const { ImageGenTool } = await import("./image-gen-UC7XVHI7.js");
149796
149986
  return new ImageGenTool(this);
149797
149987
  });
149798
149988
  }
@@ -149822,36 +150012,36 @@ var Config = class _Config {
149822
150012
  if (options2?.forSubAgent) return;
149823
150013
  const schema = this.jsonSchema;
149824
150014
  await registerLazy(ToolNames.STRUCTURED_OUTPUT, async () => {
149825
- const { SyntheticOutputTool } = await import("./syntheticOutput-FHRY3BPQ.js");
150015
+ const { SyntheticOutputTool } = await import("./syntheticOutput-EYL7DWO7.js");
149826
150016
  return new SyntheticOutputTool(schema);
149827
150017
  });
149828
150018
  }, "registerStructuredOutputIfRequested");
149829
150019
  const registerGoalWorkerTools = /* @__PURE__ */ __name(async () => {
149830
150020
  if (options2?.forSubAgent) return;
149831
150021
  await registerLazy(ToolNames.GET_GOAL, async () => {
149832
- const { GetGoalTool } = await import("./goal-tools-Y767F7LZ.js");
150022
+ const { GetGoalTool } = await import("./goal-tools-SPQ5M6D3.js");
149833
150023
  return new GetGoalTool(this);
149834
150024
  });
149835
150025
  await registerLazy(ToolNames.UPDATE_GOAL, async () => {
149836
- const { UpdateGoalTool } = await import("./goal-tools-Y767F7LZ.js");
150026
+ const { UpdateGoalTool } = await import("./goal-tools-SPQ5M6D3.js");
149837
150027
  return new UpdateGoalTool(this);
149838
150028
  });
149839
150029
  }, "registerGoalWorkerTools");
149840
150030
  if (this.getBareMode()) {
149841
150031
  await registerLazy(ToolNames.READ_FILE, async () => {
149842
- const { ReadFileTool } = await import("./read-file-GLDCWZBG.js");
150032
+ const { ReadFileTool } = await import("./read-file-HXJXHBI6.js");
149843
150033
  return new ReadFileTool(this);
149844
150034
  });
149845
150035
  await registerLazy(ToolNames.EDIT, async () => {
149846
- const { EditTool } = await import("./edit-YQZWCISX.js");
150036
+ const { EditTool } = await import("./edit-J7SW6UP6.js");
149847
150037
  return new EditTool(this);
149848
150038
  });
149849
150039
  await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
149850
- const { NotebookEditTool } = await import("./notebook-edit-6QDN6VZJ.js");
150040
+ const { NotebookEditTool } = await import("./notebook-edit-EZISE7IC.js");
149851
150041
  return new NotebookEditTool(this);
149852
150042
  });
149853
150043
  await registerLazy(ToolNames.SHELL, async () => {
149854
- const { ShellTool: ShellTool2 } = await import("./shell-NGBFVXC5.js");
150044
+ const { ShellTool: ShellTool2 } = await import("./shell-GLC6OP3C.js");
149855
150045
  return new ShellTool2(this);
149856
150046
  });
149857
150047
  await registerGoalWorkerTools();
@@ -149863,43 +150053,43 @@ var Config = class _Config {
149863
150053
  }
149864
150054
  await registerGoalWorkerTools();
149865
150055
  await registerLazy(ToolNames.TOOL_SEARCH, async () => {
149866
- const { ToolSearchTool } = await import("./tool-search-DCICFL32.js");
150056
+ const { ToolSearchTool } = await import("./tool-search-DEAS54VG.js");
149867
150057
  return new ToolSearchTool(this);
149868
150058
  });
149869
150059
  await registerLazy(ToolNames.READ_MCP_RESOURCE, async () => {
149870
- const { ReadMcpResourceTool } = await import("./read-mcp-resource-AFS3UKZO.js");
150060
+ const { ReadMcpResourceTool } = await import("./read-mcp-resource-DRZSI3HE.js");
149871
150061
  return new ReadMcpResourceTool(this);
149872
150062
  });
149873
150063
  await registerLazy(ToolNames.AGENT, async () => {
149874
- const { AgentTool: AgentTool2 } = await import("./agent-KDM4CBOU.js");
150064
+ const { AgentTool: AgentTool2 } = await import("./agent-PE37ARLM.js");
149875
150065
  return new AgentTool2(this);
149876
150066
  });
149877
150067
  await registerLazy(ToolNames.LIST_AGENTS, async () => {
149878
- const { ListAgentsTool } = await import("./list-agents-GATIBBQQ.js");
150068
+ const { ListAgentsTool } = await import("./list-agents-TWEGRJWO.js");
149879
150069
  return new ListAgentsTool(this);
149880
150070
  });
149881
150071
  await registerLazy(ToolNames.TASK_STOP, async () => {
149882
- const { TaskStopTool } = await import("./task-stop-LQXE52L6.js");
150072
+ const { TaskStopTool } = await import("./task-stop-Y5ZTFVRX.js");
149883
150073
  return new TaskStopTool(this);
149884
150074
  });
149885
150075
  await registerLazy(ToolNames.SEND_MESSAGE, async () => {
149886
- const { SendMessageTool } = await import("./send-message-X7G2JSII.js");
150076
+ const { SendMessageTool } = await import("./send-message-HGCVVDTZ.js");
149887
150077
  return new SendMessageTool(this);
149888
150078
  });
149889
150079
  await registerLazy(ToolNames.SKILL, async () => {
149890
- const { SkillTool } = await import("./skill-SC2BSO75.js");
150080
+ const { SkillTool } = await import("./skill-C7W6M4GO.js");
149891
150081
  return new SkillTool(this);
149892
150082
  });
149893
150083
  await registerLazy(ToolNames.LS, async () => {
149894
- const { LSTool } = await import("./ls-7F4GHXIH.js");
150084
+ const { LSTool } = await import("./ls-H5WX22VK.js");
149895
150085
  return new LSTool(this);
149896
150086
  });
149897
150087
  await registerLazy(ToolNames.READ_FILE, async () => {
149898
- const { ReadFileTool } = await import("./read-file-GLDCWZBG.js");
150088
+ const { ReadFileTool } = await import("./read-file-HXJXHBI6.js");
149899
150089
  return new ReadFileTool(this);
149900
150090
  });
149901
150091
  await registerLazy(ToolNames.ZOOM_IMAGE, async () => {
149902
- const { ZoomImageTool } = await import("./zoom-image-X7CIADYC.js");
150092
+ const { ZoomImageTool } = await import("./zoom-image-O5YCB7WN.js");
149903
150093
  return new ZoomImageTool(this);
149904
150094
  });
149905
150095
  if (this.getUseRipgrep()) {
@@ -149914,7 +150104,7 @@ var Config = class _Config {
149914
150104
  recordStartupEvent("config_initialize_ripgrep_probe_end");
149915
150105
  if (useRipgrep) {
149916
150106
  await registerLazy(ToolNames.GREP, async () => {
149917
- const { RipGrepTool: RipGrepTool2 } = await import("./ripGrep-T23Y4AGY.js");
150107
+ const { RipGrepTool: RipGrepTool2 } = await import("./ripGrep-MCETPF2E.js");
149918
150108
  return new RipGrepTool2(this);
149919
150109
  });
149920
150110
  } else {
@@ -149927,7 +150117,7 @@ var Config = class _Config {
149927
150117
  )
149928
150118
  );
149929
150119
  await registerLazy(ToolNames.GREP, async () => {
149930
- const { GrepTool } = await import("./grep-HSV37W2Q.js");
150120
+ const { GrepTool } = await import("./grep-UJMPVZER.js");
149931
150121
  return new GrepTool(this);
149932
150122
  });
149933
150123
  }
@@ -149935,71 +150125,77 @@ var Config = class _Config {
149935
150125
  recordStartupEvent("config_initialize_ripgrep_probe_start");
149936
150126
  recordStartupEvent("config_initialize_ripgrep_probe_end");
149937
150127
  await registerLazy(ToolNames.GREP, async () => {
149938
- const { GrepTool } = await import("./grep-HSV37W2Q.js");
150128
+ const { GrepTool } = await import("./grep-UJMPVZER.js");
149939
150129
  return new GrepTool(this);
149940
150130
  });
149941
150131
  }
149942
150132
  await registerLazy(ToolNames.GLOB, async () => {
149943
- const { GlobTool } = await import("./glob-ZMBQKAU5.js");
150133
+ const { GlobTool } = await import("./glob-F3EAUDAX.js");
149944
150134
  return new GlobTool(this);
149945
150135
  });
149946
150136
  await registerLazy(ToolNames.EDIT, async () => {
149947
- const { EditTool } = await import("./edit-YQZWCISX.js");
150137
+ const { EditTool } = await import("./edit-J7SW6UP6.js");
149948
150138
  return new EditTool(this);
149949
150139
  });
149950
150140
  await registerLazy(ToolNames.NOTEBOOK_EDIT, async () => {
149951
- const { NotebookEditTool } = await import("./notebook-edit-6QDN6VZJ.js");
150141
+ const { NotebookEditTool } = await import("./notebook-edit-EZISE7IC.js");
149952
150142
  return new NotebookEditTool(this);
149953
150143
  });
149954
150144
  await registerLazy(ToolNames.WRITE_FILE, async () => {
149955
- const { WriteFileTool: WriteFileTool2 } = await import("./write-file-NCRSGUDT.js");
150145
+ const { WriteFileTool: WriteFileTool2 } = await import("./write-file-RQ4DG5RY.js");
149956
150146
  return new WriteFileTool2(this);
149957
150147
  });
149958
150148
  await registerLazy(ToolNames.SHELL, async () => {
149959
- const { ShellTool: ShellTool2 } = await import("./shell-NGBFVXC5.js");
150149
+ const { ShellTool: ShellTool2 } = await import("./shell-GLC6OP3C.js");
149960
150150
  return new ShellTool2(this);
149961
150151
  });
149962
150152
  await registerLazy(ToolNames.TODO_WRITE, async () => {
149963
- const { TodoWriteTool } = await import("./todoWrite-OFIZDI7P.js");
150153
+ const { TodoWriteTool } = await import("./todoWrite-YKAA57W2.js");
149964
150154
  return new TodoWriteTool(this);
149965
150155
  });
149966
150156
  const supportsUserInteraction = resolveInteractionMode(this) !== "headless";
149967
150157
  if (supportsUserInteraction) {
149968
150158
  await registerLazy(ToolNames.ASK_USER_QUESTION, async () => {
149969
- const { AskUserQuestionTool } = await import("./askUserQuestion-MALEB47H.js");
150159
+ const { AskUserQuestionTool } = await import("./askUserQuestion-23Y5WZFJ.js");
149970
150160
  return new AskUserQuestionTool(this);
149971
150161
  });
149972
150162
  }
149973
150163
  if (!this.sdkMode && (supportsUserInteraction || options2?.forSubAgent)) {
149974
150164
  await registerLazy(ToolNames.EXIT_PLAN_MODE, async () => {
149975
- const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-MM5HIRUF.js");
150165
+ const { ExitPlanModeTool: ExitPlanModeTool2 } = await import("./exitPlanMode-4ZFY7KUH.js");
149976
150166
  return new ExitPlanModeTool2(this);
149977
150167
  });
149978
150168
  }
149979
150169
  if (!this.sdkMode && supportsUserInteraction) {
149980
150170
  await registerLazy(ToolNames.ENTER_PLAN_MODE, async () => {
149981
- const { EnterPlanModeTool } = await import("./enterPlanMode-6RYXFQUD.js");
150171
+ const { EnterPlanModeTool } = await import("./enterPlanMode-GDSTEFSM.js");
149982
150172
  return new EnterPlanModeTool(this);
149983
150173
  });
149984
150174
  }
149985
150175
  await registerLazy(ToolNames.ENTER_WORKTREE, async () => {
149986
- const { EnterWorktreeTool } = await import("./enter-worktree-WLVWI3FP.js");
150176
+ const { EnterWorktreeTool } = await import("./enter-worktree-NRLOHRB6.js");
149987
150177
  return new EnterWorktreeTool(this);
149988
150178
  });
149989
150179
  await registerLazy(ToolNames.EXIT_WORKTREE, async () => {
149990
- const { ExitWorktreeTool } = await import("./exit-worktree-C4276VPP.js");
150180
+ const { ExitWorktreeTool } = await import("./exit-worktree-ARVID7DF.js");
149991
150181
  return new ExitWorktreeTool(this);
149992
150182
  });
149993
150183
  await registerLazy(ToolNames.WEB_FETCH, async () => {
149994
- const { WebFetchTool } = await import("./web-fetch-PGN27SGF.js");
150184
+ const { WebFetchTool } = await import("./web-fetch-Y5QQMPKA.js");
149995
150185
  return new WebFetchTool(this);
149996
150186
  });
150187
+ if (resolveInteractionMode(this) === "interactive" && !this.sdkMode && !this.getScreenReader() && !options2?.forSubAgent) {
150188
+ await registerLazy(ToolNames.DISPLAY_IMAGE, async () => {
150189
+ const { DisplayImageTool } = await import("./display-image-VS3TXYQH.js");
150190
+ return new DisplayImageTool(this);
150191
+ });
150192
+ }
149997
150193
  if (this.webSearchSettings?.enabled) {
149998
- const { evaluateWebSearchGate } = await import("./web-search-KW4UNMRE.js");
150194
+ const { evaluateWebSearchGate } = await import("./web-search-QKKEU723.js");
149999
150195
  const gate = evaluateWebSearchGate(this);
150000
150196
  if (gate.ok) {
150001
150197
  await registerLazy(ToolNames.WEB_SEARCH, async () => {
150002
- const { WebSearchTool } = await import("./web-search-KW4UNMRE.js");
150198
+ const { WebSearchTool } = await import("./web-search-QKKEU723.js");
150003
150199
  return new WebSearchTool(this);
150004
150200
  });
150005
150201
  } else if (!this.webSearchNoticeEmitted && !options2?.forSubAgent) {
@@ -150010,83 +150206,83 @@ var Config = class _Config {
150010
150206
  await this.registerImageGenerationTool(registry);
150011
150207
  if (this.isArtifactEnabled()) {
150012
150208
  await registerLazy(ToolNames.ARTIFACT, async () => {
150013
- const { ArtifactTool } = await import("./artifact-tool-ANV4CFCR.js");
150209
+ const { ArtifactTool } = await import("./artifact-tool-TBOYEKTY.js");
150014
150210
  return new ArtifactTool(this);
150015
150211
  });
150016
150212
  }
150017
150213
  if (this.isRecordArtifactEnabled()) {
150018
150214
  await registerLazy(ToolNames.RECORD_ARTIFACT, async () => {
150019
- const { RecordArtifactTool } = await import("./record-artifact-ECZSCEG5.js");
150215
+ const { RecordArtifactTool } = await import("./record-artifact-IPIRWMFY.js");
150020
150216
  return new RecordArtifactTool();
150021
150217
  });
150022
150218
  }
150023
150219
  if (this.isLspEnabled() && this.getLspClient()) {
150024
150220
  await registerLazy(ToolNames.LSP, async () => {
150025
- const { LspTool } = await import("./lsp-6FEHVBWI.js");
150221
+ const { LspTool } = await import("./lsp-G6FXYEIS.js");
150026
150222
  return new LspTool(this);
150027
150223
  });
150028
150224
  }
150029
150225
  await registerStructuredOutputIfRequested();
150030
150226
  if (this.isCronEnabled()) {
150031
150227
  await registerLazy(ToolNames.CRON_CREATE, async () => {
150032
- const { CronCreateTool } = await import("./cron-create-HPXYE6C5.js");
150228
+ const { CronCreateTool } = await import("./cron-create-HMFSHIAR.js");
150033
150229
  return new CronCreateTool(this);
150034
150230
  });
150035
150231
  await registerLazy(ToolNames.CRON_LIST, async () => {
150036
- const { CronListTool } = await import("./cron-list-ZEI6PAAV.js");
150232
+ const { CronListTool } = await import("./cron-list-ZEX2NBMN.js");
150037
150233
  return new CronListTool(this);
150038
150234
  });
150039
150235
  await registerLazy(ToolNames.CRON_DELETE, async () => {
150040
- const { CronDeleteTool } = await import("./cron-delete-FPVNTKPK.js");
150236
+ const { CronDeleteTool } = await import("./cron-delete-ZJFHOX57.js");
150041
150237
  return new CronDeleteTool(this);
150042
150238
  });
150043
150239
  await registerLazy(ToolNames.LOOP_WAKEUP, async () => {
150044
- const { LoopWakeupTool } = await import("./loop-wakeup-3DZMQQQQ.js");
150240
+ const { LoopWakeupTool } = await import("./loop-wakeup-6LLEOQYV.js");
150045
150241
  return new LoopWakeupTool(this);
150046
150242
  });
150047
150243
  }
150048
150244
  await registerLazy(ToolNames.CREATE_SUB_SESSION, async () => {
150049
- const { CreateSubSessionTool } = await import("./create-sub-session-AM32K2HD.js");
150245
+ const { CreateSubSessionTool } = await import("./create-sub-session-J32WC64U.js");
150050
150246
  return new CreateSubSessionTool(this);
150051
150247
  });
150052
150248
  if (this.isAgentTeamEnabled()) {
150053
150249
  await registerLazy(ToolNames.TEAM_CREATE, async () => {
150054
- const { TeamCreateTool } = await import("./team-create-W3EVWCTA.js");
150250
+ const { TeamCreateTool } = await import("./team-create-HBIJ7NHT.js");
150055
150251
  return new TeamCreateTool(this);
150056
150252
  });
150057
150253
  await registerLazy(ToolNames.TEAM_DELETE, async () => {
150058
- const { TeamDeleteTool } = await import("./team-delete-Z4KGO7RC.js");
150254
+ const { TeamDeleteTool } = await import("./team-delete-CE7DC53R.js");
150059
150255
  return new TeamDeleteTool(this);
150060
150256
  });
150061
150257
  await registerLazy(ToolNames.TEAM_PLAN_APPROVAL, async () => {
150062
- const { TeamPlanApprovalTool } = await import("./team-plan-approval-URYVKJF4.js");
150258
+ const { TeamPlanApprovalTool } = await import("./team-plan-approval-IBJOKS4J.js");
150063
150259
  return new TeamPlanApprovalTool(this);
150064
150260
  });
150065
150261
  await registerLazy(ToolNames.TASK_CREATE, async () => {
150066
- const { TaskCreateTool } = await import("./task-create-LAQXBIHC.js");
150262
+ const { TaskCreateTool } = await import("./task-create-CSCEG4SM.js");
150067
150263
  return new TaskCreateTool(this);
150068
150264
  });
150069
150265
  await registerLazy(ToolNames.TASK_UPDATE, async () => {
150070
- const { TaskUpdateTool } = await import("./task-update-NXRCXSPB.js");
150266
+ const { TaskUpdateTool } = await import("./task-update-C52LNFU5.js");
150071
150267
  return new TaskUpdateTool(this);
150072
150268
  });
150073
150269
  await registerLazy(ToolNames.TASK_LIST, async () => {
150074
- const { TaskListTool } = await import("./task-list-V6K5DRDH.js");
150270
+ const { TaskListTool } = await import("./task-list-6CVQPORX.js");
150075
150271
  return new TaskListTool(this);
150076
150272
  });
150077
150273
  }
150078
150274
  if (this.isWorkflowsEnabled()) {
150079
150275
  await registerLazy(ToolNames.WORKFLOW, async () => {
150080
- const { WorkflowTool } = await import("./workflow-SN3TJBTJ.js");
150276
+ const { WorkflowTool } = await import("./workflow-PWIU6Q2M.js");
150081
150277
  return new WorkflowTool(this);
150082
150278
  });
150083
150279
  }
150084
150280
  if (this.isComputerUseEnabled()) {
150085
- const { registerComputerUseTools } = await import("./computer-use-Z4NCIIJN.js");
150281
+ const { registerComputerUseTools } = await import("./computer-use-UJMK6JQU.js");
150086
150282
  await registerComputerUseTools(registerLazy, this);
150087
150283
  }
150088
150284
  await registerLazy(ToolNames.MONITOR, async () => {
150089
- const { MonitorTool } = await import("./monitor-E5ZFMT74.js");
150285
+ const { MonitorTool } = await import("./monitor-TGSVSAZZ.js");
150090
150286
  return new MonitorTool(this);
150091
150287
  });
150092
150288
  if (this.pendingMcpBudgetCallback) {
@@ -150498,10 +150694,7 @@ export {
150498
150694
  getToolResponseDisplayText,
150499
150695
  setStartupEventSink,
150500
150696
  DEFAULT_TOOL_RESULTS_TOTAL_CHARS_THRESHOLD,
150501
- activeGoalEquals,
150502
150697
  getActiveGoal,
150503
- setActiveGoal,
150504
- clearActiveGoal,
150505
150698
  setGoalTerminalObserver,
150506
150699
  clearGoalTerminalObserver,
150507
150700
  getLastGoalTerminal,