@qwen-code/qwen-code 0.19.5 → 0.19.6-nightly.20260705.015ee4248

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 (264) hide show
  1. package/bundled/dataviz/SKILL.md +50 -0
  2. package/bundled/dataviz/references/anti-patterns.md +12 -0
  3. package/bundled/dataviz/references/choosing-a-form.md +16 -0
  4. package/bundled/dataviz/references/palette.md +57 -0
  5. package/bundled/dataviz/scripts/validate_palette.js +328 -0
  6. package/bundled/loop/SKILL.md +1 -1
  7. package/bundled/qc-helper/docs/configuration/settings.md +14 -8
  8. package/bundled/qc-helper/docs/features/headless.md +2 -2
  9. package/bundled/qc-helper/docs/features/scheduled-tasks.md +4 -2
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  11. package/bundled/review/DESIGN.md +23 -0
  12. package/bundled/review/SKILL.md +65 -8
  13. package/chunks/{MaxSizedBox-5JV77KRA.js → MaxSizedBox-PRXTXIGC.js} +31 -30
  14. package/chunks/{StandaloneSessionPicker-MGUGB6PH.js → StandaloneSessionPicker-PV7BSC5D.js} +42 -41
  15. package/chunks/{acpAgent-4F36XM3X.js → acpAgent-F34HNAM3.js} +939 -424
  16. package/chunks/{agent-IWBUZI6A.js → agent-XSQDKLST.js} +26 -25
  17. package/chunks/{agent-headless-JUTICAYO.js → agent-headless-B63XCKWX.js} +26 -25
  18. package/chunks/{anthropicContentGenerator-WL3LJOUB.js → anthropicContentGenerator-INXXI4PW.js} +7 -7
  19. package/chunks/{artifact-tool-W76WC2JX.js → artifact-tool-H2TNPNP5.js} +16 -3
  20. package/chunks/{askUserQuestion-J3P6TH3V.js → askUserQuestion-MKL5ZTMC.js} +2 -2
  21. package/chunks/{bridge-DHZHQ4UV.js → bridge-NCZDJBRF.js} +34 -32
  22. package/chunks/{channel-worker-supervisor-EVPAYNZ5.js → channel-worker-supervisor-JUYQ5Z4R.js} +5 -5
  23. package/chunks/{chunk-AVQDCKNF.js → chunk-22MNNNXE.js} +4 -0
  24. package/chunks/chunk-3RW4AZJV.js +5063 -0
  25. package/chunks/chunk-3VJ7MT3N.js +111 -0
  26. package/chunks/{chunk-JKGCBO3O.js → chunk-3VRMGS3A.js} +4 -4
  27. package/chunks/{chunk-TN6RT6EJ.js → chunk-3WOJO5EJ.js} +16 -4
  28. package/chunks/{chunk-G7OQ3RFJ.js → chunk-42XGFRJS.js} +3 -3
  29. package/chunks/{chunk-MOUXUCXQ.js → chunk-4KJ2BPIT.js} +1 -1
  30. package/chunks/{chunk-PPFWEV7G.js → chunk-4RQIB5UZ.js} +62 -62
  31. package/chunks/{chunk-JJ6B3ZD3.js → chunk-544UZQBD.js} +3 -3
  32. package/chunks/{chunk-B236XPGF.js → chunk-5UDYETKK.js} +1 -1
  33. package/chunks/{chunk-7DMQRPC7.js → chunk-6BEOH4KK.js} +1 -1
  34. package/chunks/{chunk-CXBG27SF.js → chunk-6IAWPIQ6.js} +3 -2
  35. package/chunks/{chunk-MDBNFHIO.js → chunk-6MDY7FX3.js} +5 -5
  36. package/chunks/{chunk-RM3PGSGL.js → chunk-6SHO7WFF.js} +15 -2
  37. package/chunks/{chunk-YCU7QV7Q.js → chunk-73WGF3NW.js} +34 -1
  38. package/chunks/{chunk-T42ACHFI.js → chunk-7LTB54MK.js} +1 -1
  39. package/chunks/{chunk-SJVPSHXU.js → chunk-7U6J224Z.js} +132 -25
  40. package/chunks/{chunk-CSPSJU5R.js → chunk-7WLJPMWU.js} +17 -17
  41. package/chunks/{chunk-R6RI2HIC.js → chunk-ACD5DFUY.js} +41 -14
  42. package/chunks/{chunk-EWALXUAD.js → chunk-AGHU5VRK.js} +8 -0
  43. package/chunks/{chunk-GLPV75ES.js → chunk-AHNJGLFV.js} +2 -2
  44. package/chunks/{chunk-DRS2HTNT.js → chunk-AOAFX4PL.js} +5 -5
  45. package/chunks/{chunk-QHYITL6P.js → chunk-CK7IUFOB.js} +63 -22
  46. package/chunks/{chunk-RSBQS6M4.js → chunk-CODWJXQA.js} +1 -1
  47. package/chunks/{chunk-LWGLBVWA.js → chunk-CSOTA7KX.js} +1 -1
  48. package/chunks/{chunk-UJT42DB6.js → chunk-DFH4T5IQ.js} +6 -6
  49. package/chunks/{chunk-DX3TKXNT.js → chunk-DJACOX4C.js} +2 -2
  50. package/chunks/{chunk-KKQWC6WS.js → chunk-DNV4FSN5.js} +1 -1
  51. package/chunks/{chunk-YPCPZSZB.js → chunk-DT3B47QP.js} +1 -1
  52. package/chunks/{chunk-NIOPRZNN.js → chunk-E7KNELIZ.js} +1 -1
  53. package/chunks/{chunk-DG573EOO.js → chunk-FEJ2FZ3U.js} +1 -1
  54. package/chunks/{chunk-M5ITDKSM.js → chunk-FHGQFG2K.js} +1 -1
  55. package/chunks/{chunk-HISPEX42.js → chunk-FSXFNDTI.js} +7 -7
  56. package/chunks/{chunk-LHMZCIKL.js → chunk-FUW7YGJU.js} +3 -1
  57. package/chunks/{chunk-Y4UQT3PM.js → chunk-FV5SBNNC.js} +1 -1
  58. package/chunks/{chunk-YTFBURQD.js → chunk-GB6HDZIK.js} +10 -2
  59. package/chunks/{chunk-D5KISTLW.js → chunk-H6EMK6QK.js} +1 -1
  60. package/chunks/{chunk-2Z43HUXT.js → chunk-HLKG6CZN.js} +3 -2
  61. package/chunks/{chunk-VXGPYF7U.js → chunk-IFEWJXFS.js} +1 -1
  62. package/chunks/{chunk-TENOUWY2.js → chunk-IJRL2S3D.js} +3 -3
  63. package/chunks/{chunk-OQHLUA2Y.js → chunk-IL6ZEDZ2.js} +4 -4
  64. package/chunks/{chunk-2CAII5HD.js → chunk-J7XUJALJ.js} +1 -1
  65. package/chunks/chunk-JFFOH2XO.js +2472 -0
  66. package/chunks/{chunk-NNEJEBCF.js → chunk-K3FZXSTO.js} +95 -107
  67. package/chunks/{chunk-NDY7OENU.js → chunk-KB4ICCA5.js} +3 -3
  68. package/chunks/{chunk-MNOXKSM2.js → chunk-LFFF2SPV.js} +3 -3
  69. package/chunks/{chunk-J3ERRYYI.js → chunk-LTMDKOZC.js} +2 -2
  70. package/chunks/{chunk-R3UWLLRQ.js → chunk-M7AGQP5D.js} +1 -1
  71. package/chunks/{chunk-CBJE2PLG.js → chunk-MLB5AB2I.js} +4 -4
  72. package/chunks/{chunk-YHTNWGRR.js → chunk-MZ7BABX3.js} +1 -1
  73. package/chunks/{chunk-SJBIFVD2.js → chunk-NFE3DQ4R.js} +7 -3
  74. package/chunks/{chunk-BC4R5C5R.js → chunk-NLD2WKE3.js} +55 -12
  75. package/chunks/{chunk-ALX6BUYW.js → chunk-NUGPZXAZ.js} +35 -1
  76. package/chunks/{chunk-NSSVORTQ.js → chunk-NYKWPUAE.js} +17 -13
  77. package/chunks/{chunk-K4I4STSL.js → chunk-OGEJMKN5.js} +2 -2
  78. package/chunks/{chunk-HTWHAN44.js → chunk-PC4ZXHU2.js} +1 -1
  79. package/chunks/{chunk-2YH27UNF.js → chunk-QLBBV7C6.js} +1 -1
  80. package/chunks/chunk-QT7XKZT7.js +293 -0
  81. package/chunks/{chunk-NPQWQYU6.js → chunk-QYNNN7BK.js} +1 -1
  82. package/chunks/chunk-R4N3OALZ.js +5631 -0
  83. package/chunks/{chunk-G4M7FPNY.js → chunk-RB5GAQR6.js} +2 -2
  84. package/chunks/{chunk-SBMHB6N5.js → chunk-RPHMD5UC.js} +15 -15
  85. package/chunks/{chunk-CHY5C5T4.js → chunk-SJ2CTIYH.js} +185 -88
  86. package/chunks/chunk-SLQXGMYY.js +949 -0
  87. package/chunks/{chunk-BZHLWC6T.js → chunk-SUAKHHK7.js} +2 -2
  88. package/chunks/{chunk-IMAMNLY6.js → chunk-SWV4CVYG.js} +158 -3
  89. package/chunks/{chunk-XKSCTXPK.js → chunk-TDGF35EN.js} +4 -3
  90. package/chunks/{chunk-TOAUDIS7.js → chunk-TLWA7TPR.js} +6 -2
  91. package/chunks/{chunk-WALEWZ44.js → chunk-UVHL5TCO.js} +1 -1
  92. package/chunks/{chunk-ZISMVA6U.js → chunk-VDMM5LVR.js} +1566 -37
  93. package/chunks/{chunk-BPFJQGY7.js → chunk-VEB3NYSO.js} +164 -5
  94. package/chunks/{chunk-L7OJ3ZO3.js → chunk-VZ7HY3YU.js} +1 -1
  95. package/chunks/{chunk-6KPZJJ6U.js → chunk-W4I6PLEG.js} +131 -38
  96. package/chunks/{chunk-QOMAHFYI.js → chunk-W7EEOR7D.js} +3 -3
  97. package/chunks/{chunk-6QVQZAW6.js → chunk-WKP5QZOP.js} +1 -1
  98. package/chunks/{chunk-YXK4GPYO.js → chunk-WMPVYQ4P.js} +30 -1
  99. package/chunks/{chunk-DM4E337C.js → chunk-WNTS5A2R.js} +5 -5
  100. package/chunks/{chunk-6QTCOQX7.js → chunk-WOG7QWIT.js} +3086 -2635
  101. package/chunks/{chunk-UY2TCIZS.js → chunk-X265R5C6.js} +3 -3
  102. package/chunks/{chunk-LKWAVAB5.js → chunk-X2XNQQJI.js} +2 -2
  103. package/chunks/{chunk-MTNTVOJR.js → chunk-X3YGAX7V.js} +6 -3
  104. package/chunks/{chunk-EROWZQN7.js → chunk-XD3OLPII.js} +6 -6
  105. package/chunks/{chunk-RNGAT2Y2.js → chunk-YYL6HROQ.js} +1 -1
  106. package/chunks/{chunk-XKZXGIRM.js → chunk-YZ2LNTHO.js} +2 -2
  107. package/chunks/{chunk-Z7XNVNPM.js → chunk-YZ5ANQMR.js} +3 -3
  108. package/chunks/{chunk-4MCC4XHH.js → chunk-Z7EYROOJ.js} +3568 -5508
  109. package/chunks/{chunk-5B2WNM6V.js → chunk-ZI4MGBB5.js} +1 -1
  110. package/chunks/{chunk-WZ724G6K.js → chunk-ZPGE42V7.js} +6 -6
  111. package/chunks/{computer-use-ON3JQUHW.js → computer-use-5I2UHVNY.js} +26 -25
  112. package/chunks/{contextCommand-OGCG7W6N.js → contextCommand-3NWY7AJG.js} +28 -27
  113. package/chunks/{cron-create-6YTCOX6P.js → cron-create-O6ZHD3JN.js} +22 -7
  114. package/chunks/{cron-delete-E3NIFSUK.js → cron-delete-BFD5B2XX.js} +4 -4
  115. package/chunks/{cron-list-Q64MNQNE.js → cron-list-KI6FV4KN.js} +4 -4
  116. package/chunks/{daemon-EEB2RYOL.js → daemon-DRUMLVFP.js} +140 -0
  117. package/chunks/daemon-status-provider-A2DK3ZTO.js +74 -0
  118. package/chunks/{dist-AP5V4WYU.js → dist-AAO65DPC.js} +2 -2
  119. package/chunks/{dist-X4ZDE726.js → dist-ABQ7VWRR.js} +3 -3
  120. package/chunks/{dist-SNXOUPYS.js → dist-AW5ZYMUI.js} +2 -2
  121. package/chunks/{dist-Z57Q4YF5.js → dist-DN6M6TJ5.js} +525 -95
  122. package/chunks/{dist-IZP2VV4C.js → dist-JPSVN367.js} +2 -2
  123. package/chunks/{earlyInputCapture-DAFHSGVW.js → earlyInputCapture-5TMSSPQ5.js} +27 -26
  124. package/chunks/{edit-3QFNCSZH.js → edit-V4ITLSUD.js} +27 -26
  125. package/chunks/{en-M4EBUBNU.js → en-AXARKOWO.js} +2 -0
  126. package/chunks/{enter-worktree-62EQQMLD.js → enter-worktree-7ULPRMTJ.js} +26 -25
  127. package/chunks/{enterPlanMode-VUQSE4EG.js → enterPlanMode-YSHMLHJZ.js} +26 -25
  128. package/chunks/{errors-PW75PZXE.js → errors-TCUTD7NF.js} +28 -27
  129. package/chunks/{exit-worktree-VVNH7OVY.js → exit-worktree-JZDCKR6A.js} +26 -25
  130. package/chunks/{exitPlanMode-RUYRCYZW.js → exitPlanMode-GOQBN6SG.js} +26 -25
  131. package/chunks/{fast-path-TFRJRTTR.js → fast-path-F2HGAKO2.js} +3 -3
  132. package/chunks/{fast-path-settings-UQLRFDQP.js → fast-path-settings-RCRXH2JG.js} +2 -2
  133. package/chunks/{gemini-XW7ZDUVR.js → gemini-3M7ECKNW.js} +86 -80
  134. package/chunks/{geminiContentGenerator-MZDVHVZH.js → geminiContentGenerator-5EG3QEJM.js} +4 -4
  135. package/chunks/{glob-WAY2PUWA.js → glob-2DBDTLR4.js} +54 -29
  136. package/chunks/{grep-W6CBKSYC.js → grep-R27DLGWT.js} +26 -25
  137. package/chunks/{initializer-HK2XE6P2.js → initializer-OXB6BJZU.js} +32 -31
  138. package/chunks/{keychain-token-storage-GPAKRDKQ.js → keychain-token-storage-UJV5XP4Z.js} +2 -2
  139. package/chunks/{list-RVLIIKKL.js → list-HLCOEOSF.js} +33 -32
  140. package/chunks/{loadedSettingsAdapter-C63OUYZC.js → loadedSettingsAdapter-JHTVH3YO.js} +31 -30
  141. package/chunks/{loop-wakeup-G2EHBRGR.js → loop-wakeup-CUVIY2JY.js} +5 -5
  142. package/chunks/{ls-IDHUVSAG.js → ls-L654WOAT.js} +4 -4
  143. package/chunks/{lsp-FSRYXGFT.js → lsp-M35KE54Y.js} +2 -2
  144. package/chunks/mcp-2JWEFAIN.js +67 -0
  145. package/chunks/{monitor-FOG36ABM.js → monitor-5QKFZFDX.js} +26 -25
  146. package/chunks/nonInteractiveCli-W5W5PIHI.js +112 -0
  147. package/chunks/{notebook-edit-GC6NXRCX.js → notebook-edit-XAFBWORI.js} +27 -26
  148. package/chunks/{openaiContentGenerator-EXR3ZL3Z.js → openaiContentGenerator-NULJROYV.js} +13 -12
  149. package/chunks/{pidfile-FNZM2DDH.js → pidfile-3LT7PZSW.js} +27 -26
  150. package/chunks/{qwenContentGenerator-A7B6J4U7.js → qwenContentGenerator-KLSURVNH.js} +28 -27
  151. package/chunks/{qwenOAuth2-LWLA6MQG.js → qwenOAuth2-ZV7YLMND.js} +5 -5
  152. package/chunks/{read-file-6JL4ULMY.js → read-file-HDAM3RHJ.js} +8 -8
  153. package/chunks/{read-mcp-resource-PIJF24RO.js → read-mcp-resource-CNQHBSJM.js} +2 -2
  154. package/chunks/record-artifact-PP3LKHTS.js +343 -0
  155. package/chunks/{ripGrep-DIUGLJE5.js → ripGrep-W36NLR7M.js} +26 -25
  156. package/chunks/{run-qwen-serve-CME3AKM4.js → run-qwen-serve-IMI2CQB5.js} +72 -28
  157. package/chunks/{scheduler-L7F6GDDT.js → scheduler-I5NKE5UJ.js} +26 -25
  158. package/chunks/{send-message-33PYFMCT.js → send-message-OA6MV4EU.js} +3 -3
  159. package/chunks/{serve-SRCBOJGP.js → serve-JMHMOYBO.js} +33 -32
  160. package/chunks/{server-QSQ45QFR.js → server-QIYIN34N.js} +1358 -492
  161. package/chunks/{session-5DG6NXHZ.js → session-BLL6HB35.js} +68 -65
  162. package/chunks/{settings-3EEQI4MN.js → settings-ABECXCTY.js} +30 -29
  163. package/chunks/{shell-B7FNYF5S.js → shell-A2TQI3U4.js} +26 -25
  164. package/chunks/{skill-AAOGHD5O.js → skill-4GTWZZWR.js} +10 -10
  165. package/chunks/{spawnChannel-3CBN3ZLK.js → spawnChannel-DFUVGP53.js} +30 -29
  166. package/chunks/{src-T5A7P7FS.js → src-ZORBMUM7.js} +77 -43
  167. package/chunks/{startInteractiveUI-2FGEQ6AS.js → startInteractiveUI-FH5MVXUE.js} +449 -175
  168. package/chunks/{syntheticOutput-YOSWIHDJ.js → syntheticOutput-F7LSDCAR.js} +3 -3
  169. package/chunks/{task-create-NHS2NGB3.js → task-create-RPFZNB4B.js} +7 -7
  170. package/chunks/{task-list-5UIB564R.js → task-list-TGGJX7EA.js} +5 -5
  171. package/chunks/{task-stop-HGXZ2VZ3.js → task-stop-W7NGTMYQ.js} +2 -2
  172. package/chunks/{task-update-IYYWUILG.js → task-update-5WUG5MVQ.js} +7 -7
  173. package/chunks/{team-create-KDF6W6PV.js → team-create-F76QOR6H.js} +26 -25
  174. package/chunks/{team-delete-FEKJCU4P.js → team-delete-UHQQ2QQX.js} +5 -5
  175. package/chunks/{team-plan-approval-PSFKQX7M.js → team-plan-approval-OKM7YZC2.js} +26 -25
  176. package/chunks/{theme-manager-5XOA2AO7.js → theme-manager-6R7EVWHW.js} +27 -26
  177. package/chunks/{todoWrite-TKMVZ2HT.js → todoWrite-C4ZAMSR3.js} +4 -4
  178. package/chunks/{tool-search-LFRILZXC.js → tool-search-UWXDKI7D.js} +9 -9
  179. package/chunks/{trustedFolders-7HQY6T6X.js → trustedFolders-DHASVVUP.js} +27 -26
  180. package/chunks/{validateNonInterActiveAuth-UC27B7BA.js → validateNonInterActiveAuth-56J7MOOP.js} +62 -59
  181. package/chunks/version-NE2I4PBN.js +10 -0
  182. package/chunks/{web-fetch-J4PIW36Q.js → web-fetch-UYGMOHW4.js} +5 -5
  183. package/chunks/{workflow-KUTESS6L.js → workflow-HGF3URV3.js} +35 -27
  184. package/chunks/{workspace-providers-status-LJT5AQDS.js → workspace-providers-status-KXB2OZFQ.js} +33 -32
  185. package/chunks/{workspace-service-YOBYVDXH.js → workspace-service-NSTI55BC.js} +39 -38
  186. package/chunks/workspace-skills-status-X5S6JGQZ.js +69 -0
  187. package/chunks/{write-file-FJYBZUHP.js → write-file-HVKT5VTX.js} +27 -26
  188. package/chunks/yargs-B64EYTCF.js +10 -0
  189. package/chunks/{zh-SLZNSSZB.js → zh-RS3HZHFH.js} +2 -0
  190. package/chunks/{zh-TW-P53C2SL5.js → zh-TW-L5GRQ4S4.js} +2 -0
  191. package/cli-entry.js +81 -8
  192. package/cli.js +348 -55
  193. package/locales/en.js +2 -0
  194. package/locales/zh-TW.js +2 -0
  195. package/locales/zh.js +2 -0
  196. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  197. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  198. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  199. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  200. package/package.json +3 -3
  201. package/web-shell/assets/{arc-D_rAuMDd.js → arc-Csx4m4N0.js} +1 -1
  202. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DUCzbHVo.js → architectureDiagram-3BPJPVTR-BEa0vCM7.js} +1 -1
  203. package/web-shell/assets/{blockDiagram-GPEHLZMM-BEEBt1LL.js → blockDiagram-GPEHLZMM-BPzbKnn3.js} +1 -1
  204. package/web-shell/assets/{c4Diagram-AAUBKEIU-5ZJ_DeFL.js → c4Diagram-AAUBKEIU-B8YO71yP.js} +1 -1
  205. package/web-shell/assets/channel-QU1XUuVe.js +1 -0
  206. package/web-shell/assets/{chunk-2J33WTMH-Cfw7EiLn.js → chunk-2J33WTMH-32XhwSHt.js} +1 -1
  207. package/web-shell/assets/{chunk-4BX2VUAB-FGuZNCZY.js → chunk-4BX2VUAB-Bmoyo6PS.js} +1 -1
  208. package/web-shell/assets/{chunk-55IACEB6-CaBwYPBF.js → chunk-55IACEB6-TwH6PFhs.js} +1 -1
  209. package/web-shell/assets/{chunk-727SXJPM-BlR04OFz.js → chunk-727SXJPM-RI_IVUtZ.js} +1 -1
  210. package/web-shell/assets/{chunk-AQP2D5EJ-D3_mYJH5.js → chunk-AQP2D5EJ-DH6GIAZD.js} +1 -1
  211. package/web-shell/assets/{chunk-FMBD7UC4-7D4q4SbB.js → chunk-FMBD7UC4-DeD3k3D5.js} +1 -1
  212. package/web-shell/assets/{chunk-ND2GUHAM-BjX_Iwmr.js → chunk-ND2GUHAM-BLPb8nv3.js} +1 -1
  213. package/web-shell/assets/{chunk-QZHKN3VN-C3Hz_ZQh.js → chunk-QZHKN3VN-PZpyglW1.js} +1 -1
  214. package/web-shell/assets/classDiagram-4FO5ZUOK-fv1EWO-L.js +1 -0
  215. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-fv1EWO-L.js +1 -0
  216. package/web-shell/assets/{cose-bilkent-S5V4N54A-Ax4UycaT.js → cose-bilkent-S5V4N54A-Jsd0yKfz.js} +1 -1
  217. package/web-shell/assets/{dagre-BM42HDAG-C6hmPtGt.js → dagre-BM42HDAG-B-zADciZ.js} +1 -1
  218. package/web-shell/assets/{diagram-2AECGRRQ-tXZnxjmw.js → diagram-2AECGRRQ-Cn6GDxoo.js} +1 -1
  219. package/web-shell/assets/{diagram-5GNKFQAL-99dwIzQG.js → diagram-5GNKFQAL-udLgyJxO.js} +1 -1
  220. package/web-shell/assets/{diagram-KO2AKTUF-Bqhn0-2s.js → diagram-KO2AKTUF-EcLpfzy3.js} +1 -1
  221. package/web-shell/assets/{diagram-LMA3HP47-DzThVSvo.js → diagram-LMA3HP47-D-YFbYsJ.js} +1 -1
  222. package/web-shell/assets/{diagram-OG6HWLK6-DPE8vjln.js → diagram-OG6HWLK6-C8oRUATa.js} +1 -1
  223. package/web-shell/assets/{erDiagram-TEJ5UH35-KzUKgQCV.js → erDiagram-TEJ5UH35-DPH5nStc.js} +1 -1
  224. package/web-shell/assets/{flowDiagram-I6XJVG4X-DBN-DXw5.js → flowDiagram-I6XJVG4X-CSOTwkAt.js} +1 -1
  225. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DuBsP9u8.js → ganttDiagram-6RSMTGT7-D0L988t0.js} +1 -1
  226. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BjWHMyKR.js → gitGraphDiagram-PVQCEYII-B9Oo7gxS.js} +1 -1
  227. package/web-shell/assets/index-BYZZL5N7.css +5 -0
  228. package/web-shell/assets/index-C_oTyz0s.js +753 -0
  229. package/web-shell/assets/{infoDiagram-5YYISTIA-BVux0vP6.js → infoDiagram-5YYISTIA-Ddj4YN2P.js} +1 -1
  230. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-2qzw7f--.js → ishikawaDiagram-YF4QCWOH-CBjafcl7.js} +1 -1
  231. package/web-shell/assets/{journeyDiagram-JHISSGLW-Dnl65sxL.js → journeyDiagram-JHISSGLW-Bn3XD99u.js} +1 -1
  232. package/web-shell/assets/{kanban-definition-UN3LZRKU-BElSQYtY.js → kanban-definition-UN3LZRKU-D7PBPJmE.js} +1 -1
  233. package/web-shell/assets/{linear-BjoycSSY.js → linear-Bmfo22rZ.js} +1 -1
  234. package/web-shell/assets/{mermaid.core-xe6bvMRz.js → mermaid.core-xRkAI-EI.js} +5 -5
  235. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D8DQgI4U.js → mindmap-definition-RKZ34NQL-B30zRinm.js} +1 -1
  236. package/web-shell/assets/{pieDiagram-4H26LBE5-Dwh7Gp7c.js → pieDiagram-4H26LBE5-DblnKR9Z.js} +1 -1
  237. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BXKNBln2.js → quadrantDiagram-W4KKPZXB-COkHFKjF.js} +1 -1
  238. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BzaC3cIA.js → requirementDiagram-4Y6WPE33-DDU3MMyn.js} +1 -1
  239. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DP2t7eZk.js → sankeyDiagram-5OEKKPKP-Dt4lqEYv.js} +1 -1
  240. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-XlFiWEYv.js → sequenceDiagram-3UESZ5HK-BRzby5gN.js} +1 -1
  241. package/web-shell/assets/{stateDiagram-AJRCARHV-CupgUMJO.js → stateDiagram-AJRCARHV-CylzByc3.js} +1 -1
  242. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BKWZIKkM.js +1 -0
  243. package/web-shell/assets/{timeline-definition-PNZ67QCA-DstuGywa.js → timeline-definition-PNZ67QCA-BSzaNx6w.js} +1 -1
  244. package/web-shell/assets/{vennDiagram-CIIHVFJN-CnbNp6zu.js → vennDiagram-CIIHVFJN-BbzeKzCo.js} +1 -1
  245. package/web-shell/assets/{wardley-L42UT6IY-DnvoHq6R.js → wardley-L42UT6IY-BRJwCgE_.js} +1 -1
  246. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cz0xHEWB.js → wardleyDiagram-YWT4CUSO-BmAs0mJ-.js} +1 -1
  247. package/web-shell/assets/{xychartDiagram-2RQKCTM6-p36gfo88.js → xychartDiagram-2RQKCTM6-DqywSqVW.js} +1 -1
  248. package/web-shell/index.html +2 -2
  249. package/bundled/loop/SKILL.test.ts +0 -119
  250. package/bundled/loop/autonomous-loop.test.ts +0 -59
  251. package/bundled/loop/loop-task-file.test.ts +0 -1064
  252. package/bundled/loop/loop-tick-resolver.test.ts +0 -906
  253. package/chunks/chunk-EJ7BN3EN.js +0 -11396
  254. package/chunks/chunk-L7QPM2YD.js +0 -481
  255. package/chunks/daemon-status-provider-P72STMLB.js +0 -72
  256. package/chunks/nonInteractiveCli-6BYQSJTB.js +0 -109
  257. package/chunks/workspace-skills-status-ONEPXJV6.js +0 -62
  258. package/web-shell/assets/channel-B5ynH0q8.js +0 -1
  259. package/web-shell/assets/classDiagram-4FO5ZUOK-CK3ibywp.js +0 -1
  260. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CK3ibywp.js +0 -1
  261. package/web-shell/assets/index-9qfvU0_r.css +0 -5
  262. package/web-shell/assets/index-CWzDaQT5.js +0 -717
  263. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-By3E4QwN.js +0 -1
  264. package/chunks/{chunk-UFC57OYT.js → chunk-VRDMOSQS.js} +54 -54
@@ -1,8 +1,62 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import "./chunk-6MDY7FX3.js";
4
+ import {
5
+ DualOutputContext,
6
+ useDualOutput,
7
+ useGeminiStream
8
+ } from "./chunk-W4I6PLEG.js";
9
+ import {
10
+ MAX_SUGGESTIONS_TO_SHOW,
11
+ MAX_WIDTH,
12
+ SuggestionsDisplay,
13
+ buildMcpResourceRef,
14
+ buildMcpServerRef,
15
+ getExtensionSuggestions,
16
+ matchMcpServerPrefix
17
+ } from "./chunk-7U6J224Z.js";
3
18
  import {
4
19
  StreamJsonOutputAdapter
5
- } from "./chunk-J3ERRYYI.js";
20
+ } from "./chunk-LTMDKOZC.js";
21
+ import {
22
+ BuiltinCommandLoader,
23
+ BundledSkillLoader,
24
+ CommandService,
25
+ DISPLAY_HOOK_EVENTS,
26
+ FileCommandLoader,
27
+ McpPromptLoader,
28
+ SavedWorkflowLoader,
29
+ SkillCommandLoader,
30
+ addConfigToMatcherGroup,
31
+ appendUserPromptExpansionAdditionalContext,
32
+ createEmptyHookEventInfo,
33
+ findMidInputSlashCommand,
34
+ findSlashCommandTokens,
35
+ formatApprovalModeDescription,
36
+ formatApprovalModeName,
37
+ formatUserPromptExpansionBlockedMessage,
38
+ getAllConfigs,
39
+ getBestSlashCommandMatch,
40
+ getInstallationInfo,
41
+ getTranslatedSourceDisplayMap,
42
+ hasBlockingBackgroundWork,
43
+ hasSlashCommandPathSeparator,
44
+ isBtwCommand,
45
+ isMidInputCompletableCommand,
46
+ isSlashCommand,
47
+ parseSlashCommand,
48
+ performStandaloneUpdate,
49
+ resetBackgroundStateForSessionSwitch,
50
+ restoreGoalFromHistory,
51
+ serializeUserPromptExpansionPrompt,
52
+ supportsMatchers,
53
+ useAutoAcceptIndicator
54
+ } from "./chunk-Z7EYROOJ.js";
55
+ import {
56
+ appEvents,
57
+ loadHierarchicalGeminiMemory
58
+ } from "./chunk-R4N3OALZ.js";
59
+ import "./chunk-ZPGE42V7.js";
6
60
  import {
7
61
  AboutBox,
8
62
  BaseSelectionList,
@@ -70,72 +124,16 @@ import {
70
124
  useTextBuffer,
71
125
  useUIActions,
72
126
  useUIState
73
- } from "./chunk-NNEJEBCF.js";
127
+ } from "./chunk-K3FZXSTO.js";
74
128
  import {
75
129
  relaunchApp
76
- } from "./chunk-WALEWZ44.js";
77
- import {
78
- stopAndGetCapturedInput
79
- } from "./chunk-LWGLBVWA.js";
80
- import "./chunk-MDBNFHIO.js";
81
- import {
82
- DualOutputContext,
83
- useDualOutput,
84
- useGeminiStream
85
- } from "./chunk-6KPZJJ6U.js";
86
- import {
87
- MAX_SUGGESTIONS_TO_SHOW,
88
- MAX_WIDTH,
89
- SuggestionsDisplay,
90
- buildMcpResourceRef,
91
- getExtensionSuggestions,
92
- matchMcpServerPrefix
93
- } from "./chunk-SJVPSHXU.js";
94
- import {
95
- BuiltinCommandLoader,
96
- BundledSkillLoader,
97
- CommandService,
98
- DISPLAY_HOOK_EVENTS,
99
- FileCommandLoader,
100
- McpPromptLoader,
101
- SavedWorkflowLoader,
102
- SkillCommandLoader,
103
- addConfigToMatcherGroup,
104
- appendUserPromptExpansionAdditionalContext,
105
- createEmptyHookEventInfo,
106
- findMidInputSlashCommand,
107
- findSlashCommandTokens,
108
- formatApprovalModeDescription,
109
- formatApprovalModeName,
110
- formatUserPromptExpansionBlockedMessage,
111
- getAllConfigs,
112
- getBestSlashCommandMatch,
113
- getInstallationInfo,
114
- getTranslatedSourceDisplayMap,
115
- hasBlockingBackgroundWork,
116
- hasSlashCommandPathSeparator,
117
- isBtwCommand,
118
- isMidInputCompletableCommand,
119
- isSlashCommand,
120
- parseSlashCommand,
121
- performStandaloneUpdate,
122
- resetBackgroundStateForSessionSwitch,
123
- restoreGoalFromHistory,
124
- serializeUserPromptExpansionPrompt,
125
- supportsMatchers,
126
- useAutoAcceptIndicator
127
- } from "./chunk-4MCC4XHH.js";
128
- import {
129
- appEvents,
130
- loadHierarchicalGeminiMemory,
131
- loadMcpApprovals
132
- } from "./chunk-EJ7BN3EN.js";
130
+ } from "./chunk-UVHL5TCO.js";
133
131
  import {
134
132
  SessionStatsProvider,
135
133
  getCommandDisplayName,
136
134
  getCommandSourceBadge,
137
135
  useSessionStats
138
- } from "./chunk-IMAMNLY6.js";
136
+ } from "./chunk-SWV4CVYG.js";
139
137
  import {
140
138
  Colors,
141
139
  SettingsContext,
@@ -144,7 +142,7 @@ import {
144
142
  useMouseEvents,
145
143
  useSettings,
146
144
  useTerminalSize
147
- } from "./chunk-NDY7OENU.js";
145
+ } from "./chunk-KB4ICCA5.js";
148
146
  import {
149
147
  BEL,
150
148
  KeypressProvider,
@@ -167,24 +165,17 @@ import {
167
165
  useKeypressContext,
168
166
  wrapForMultiplexer,
169
167
  writeOsc52
170
- } from "./chunk-UJT42DB6.js";
171
- import {
172
- disableKittyProtocol,
173
- isKittyProtocolEnabled,
174
- isKittyProtocolSupported
175
- } from "./chunk-JZSY4WP3.js";
176
- import "./chunk-WZ724G6K.js";
168
+ } from "./chunk-DFH4T5IQ.js";
177
169
  import "./chunk-KSPVDFE4.js";
178
170
  import "./chunk-MRO43B25.js";
179
- import "./chunk-5B2WNM6V.js";
180
171
  import {
181
172
  MaxSizedBox,
182
173
  OverflowProvider,
183
174
  useOverflowState
184
- } from "./chunk-CBJE2PLG.js";
175
+ } from "./chunk-MLB5AB2I.js";
185
176
  import {
186
177
  theme
187
- } from "./chunk-VXGPYF7U.js";
178
+ } from "./chunk-IFEWJXFS.js";
188
179
  import {
189
180
  Box_default,
190
181
  Static,
@@ -199,7 +190,7 @@ import {
199
190
  use_is_screen_reader_enabled_default,
200
191
  use_stdin_default,
201
192
  use_stdout_default
202
- } from "./chunk-XKZXGIRM.js";
193
+ } from "./chunk-YZ2LNTHO.js";
203
194
  import {
204
195
  require_react
205
196
  } from "./chunk-KYMBIKIW.js";
@@ -207,13 +198,30 @@ import {
207
198
  AUTO_THEME_NAME,
208
199
  DEFAULT_THEME,
209
200
  themeManager
210
- } from "./chunk-HTWHAN44.js";
201
+ } from "./chunk-PC4ZXHU2.js";
202
+ import {
203
+ stopAndGetCapturedInput
204
+ } from "./chunk-CSOTA7KX.js";
205
+ import {
206
+ disableKittyProtocol,
207
+ isKittyProtocolEnabled,
208
+ isKittyProtocolSupported
209
+ } from "./chunk-JZSY4WP3.js";
210
+ import {
211
+ requestConsentInteractive,
212
+ requestConsentOrFail
213
+ } from "./chunk-AOAFX4PL.js";
214
+ import "./chunk-3GONHQOA.js";
215
+ import {
216
+ getErrorMessage as getErrorMessage2
217
+ } from "./chunk-544UZQBD.js";
218
+ import "./chunk-ZI4MGBB5.js";
211
219
  import {
212
220
  openQwenAsrRealtimeStream,
213
221
  openVoiceStream,
214
222
  openVoiceStreamWithRetry
215
- } from "./chunk-G4M7FPNY.js";
216
- import "./chunk-L7QPM2YD.js";
223
+ } from "./chunk-RB5GAQR6.js";
224
+ import "./chunk-JFFOH2XO.js";
217
225
  import "./chunk-54YZOP7P.js";
218
226
  import {
219
227
  cpLen,
@@ -227,50 +235,42 @@ import {
227
235
  stripUnsafeCharacters,
228
236
  toCodePoints,
229
237
  wrapToVisualLines
230
- } from "./chunk-2CAII5HD.js";
238
+ } from "./chunk-J7XUJALJ.js";
239
+ import {
240
+ getExtendedSystemInfo
241
+ } from "./chunk-3VRMGS3A.js";
242
+ import {
243
+ formatDuration,
244
+ formatRelativeTime,
245
+ formatTokenCount
246
+ } from "./chunk-KHDZHZMH.js";
247
+ import "./chunk-OGEJMKN5.js";
231
248
  import {
232
249
  assertVoiceBaseUrlNetworkAllowed,
233
250
  isKeytermEcho,
234
251
  isStreamingVoiceModel,
235
252
  resolveVoiceStreamConfig,
236
253
  transcribeVoiceAudio
237
- } from "./chunk-MNOXKSM2.js";
254
+ } from "./chunk-LFFF2SPV.js";
238
255
  import {
239
256
  formatUnsupportedVoiceModelMessage,
240
257
  isSelectableVoiceModel
241
- } from "./chunk-Y4UQT3PM.js";
242
- import "./chunk-NIOPRZNN.js";
258
+ } from "./chunk-FV5SBNNC.js";
259
+ import "./chunk-E7KNELIZ.js";
243
260
  import "./chunk-AHNXYU4O.js";
244
261
  import "./chunk-RNBYOUGV.js";
245
- import "./chunk-HISPEX42.js";
262
+ import "./chunk-FSXFNDTI.js";
246
263
  import "./chunk-BJBWRCSK.js";
247
264
  import {
248
- requestConsentInteractive,
249
- requestConsentOrFail
250
- } from "./chunk-DRS2HTNT.js";
251
- import "./chunk-3GONHQOA.js";
252
- import {
253
- getErrorMessage as getErrorMessage2
254
- } from "./chunk-JJ6B3ZD3.js";
255
- import "./chunk-YHTNWGRR.js";
265
+ loadMcpApprovals
266
+ } from "./chunk-SLQXGMYY.js";
267
+ import "./chunk-6BEOH4KK.js";
268
+ import "./chunk-S6RLAIUR.js";
269
+ import "./chunk-MX2YXRER.js";
270
+ import "./chunk-MZ7BABX3.js";
256
271
  import {
257
272
  createLoadedSettingsAdapter
258
- } from "./chunk-R3UWLLRQ.js";
259
- import {
260
- getExtendedSystemInfo
261
- } from "./chunk-JKGCBO3O.js";
262
- import {
263
- formatDuration,
264
- formatRelativeTime,
265
- formatTokenCount
266
- } from "./chunk-KHDZHZMH.js";
267
- import {
268
- getCliVersion,
269
- getPackageJson
270
- } from "./chunk-RSBQS6M4.js";
271
- import "./chunk-SEZC2725.js";
272
- import "./chunk-ALX6BUYW.js";
273
- import "./chunk-K4I4STSL.js";
273
+ } from "./chunk-M7AGQP5D.js";
274
274
  import {
275
275
  CORRUPTED_SUFFIX,
276
276
  SettingScope,
@@ -292,14 +292,19 @@ import {
292
292
  settingExistsInScope,
293
293
  validateSettingValue,
294
294
  writeOutputLanguageAndRegisterPath
295
- } from "./chunk-BC4R5C5R.js";
295
+ } from "./chunk-NLD2WKE3.js";
296
296
  import {
297
297
  getCurrentLanguage,
298
298
  localizeToolDisplayName,
299
299
  t,
300
300
  ta
301
- } from "./chunk-DM4E337C.js";
301
+ } from "./chunk-WNTS5A2R.js";
302
302
  import "./chunk-TLRYABYP.js";
303
+ import "./chunk-4RQIB5UZ.js";
304
+ import "./chunk-SEZC2725.js";
305
+ import "./chunk-NUGPZXAZ.js";
306
+ import "./chunk-VRDMOSQS.js";
307
+ import "./chunk-3RW4AZJV.js";
303
308
  import {
304
309
  require_clean,
305
310
  require_constants,
@@ -311,15 +316,14 @@ import {
311
316
  require_semver,
312
317
  require_valid
313
318
  } from "./chunk-CJCKDMWO.js";
314
- import "./chunk-S6RLAIUR.js";
315
- import "./chunk-MX2YXRER.js";
316
- import "./chunk-7DMQRPC7.js";
317
- import "./chunk-UFC57OYT.js";
318
- import "./chunk-PPFWEV7G.js";
319
+ import {
320
+ getCliVersion,
321
+ getPackageJson
322
+ } from "./chunk-CODWJXQA.js";
319
323
  import {
320
324
  isWorkspaceTrusted,
321
325
  loadTrustedFolders
322
- } from "./chunk-Z7XNVNPM.js";
326
+ } from "./chunk-YZ5ANQMR.js";
323
327
  import {
324
328
  clearScreen,
325
329
  writeStderrLine
@@ -419,37 +423,38 @@ import {
419
423
  validateWorkflowName,
420
424
  watchRepoBranch,
421
425
  writeRuntimeStatus
422
- } from "./chunk-6QTCOQX7.js";
426
+ } from "./chunk-WOG7QWIT.js";
423
427
  import "./chunk-5P5XGNYH.js";
424
- import "./chunk-K5PGHDBN.js";
425
428
  import "./chunk-SKAZWEV5.js";
426
- import "./chunk-QOMAHFYI.js";
427
- import "./chunk-G7OQ3RFJ.js";
429
+ import "./chunk-K5PGHDBN.js";
430
+ import "./chunk-ACD5DFUY.js";
431
+ import "./chunk-W7EEOR7D.js";
432
+ import "./chunk-42XGFRJS.js";
428
433
  import {
429
434
  require_graceful_fs
430
- } from "./chunk-LKWAVAB5.js";
435
+ } from "./chunk-X2XNQQJI.js";
431
436
  import {
432
437
  runSideQuery
433
- } from "./chunk-L7OJ3ZO3.js";
434
- import "./chunk-R6RI2HIC.js";
438
+ } from "./chunk-VZ7HY3YU.js";
435
439
  import "./chunk-2MPVVENX.js";
436
440
  import "./chunk-ZTQ26VBE.js";
437
- import "./chunk-SJBIFVD2.js";
441
+ import "./chunk-NFE3DQ4R.js";
438
442
  import "./chunk-MLZQVCF3.js";
439
443
  import "./chunk-LQ7TMOCE.js";
440
444
  import "./chunk-E5A7LHNN.js";
441
445
  import {
442
446
  APPROVAL_MODES
443
- } from "./chunk-BPFJQGY7.js";
447
+ } from "./chunk-VEB3NYSO.js";
444
448
  import "./chunk-GO6LNQXT.js";
445
- import "./chunk-B236XPGF.js";
449
+ import "./chunk-5UDYETKK.js";
446
450
  import {
447
451
  HOOKS_CONFIG_FIELDS
448
- } from "./chunk-YXK4GPYO.js";
452
+ } from "./chunk-WMPVYQ4P.js";
449
453
  import {
450
454
  isPathWithinRoot
451
- } from "./chunk-TOAUDIS7.js";
452
- import "./chunk-NPQWQYU6.js";
455
+ } from "./chunk-TLWA7TPR.js";
456
+ import "./chunk-QYNNN7BK.js";
457
+ import "./chunk-QT7XKZT7.js";
453
458
  import {
454
459
  AuthEvent,
455
460
  DiscoveredMCPTool,
@@ -473,7 +478,7 @@ import {
473
478
  recordSkillInvocation,
474
479
  removeMCPServerStatus,
475
480
  removeMCPStatusChangeListener
476
- } from "./chunk-CHY5C5T4.js";
481
+ } from "./chunk-SJ2CTIYH.js";
477
482
  import "./chunk-E6US47KI.js";
478
483
  import "./chunk-UWCTAVOD.js";
479
484
  import {
@@ -483,35 +488,35 @@ import "./chunk-OMX7CUOE.js";
483
488
  import {
484
489
  getAutoMemoryProjectStateDir,
485
490
  getAutoMemoryRoot
486
- } from "./chunk-MOUXUCXQ.js";
487
- import "./chunk-BZHLWC6T.js";
488
- import "./chunk-DG573EOO.js";
491
+ } from "./chunk-4KJ2BPIT.js";
492
+ import "./chunk-SUAKHHK7.js";
493
+ import "./chunk-FEJ2FZ3U.js";
489
494
  import {
490
495
  ToolDisplayNames,
491
496
  ToolNames
492
- } from "./chunk-MTNTVOJR.js";
497
+ } from "./chunk-X3YGAX7V.js";
493
498
  import {
494
499
  qwenOAuth2Events
495
- } from "./chunk-TENOUWY2.js";
496
- import "./chunk-GLPV75ES.js";
500
+ } from "./chunk-IJRL2S3D.js";
501
+ import "./chunk-AHNJGLFV.js";
497
502
  import "./chunk-22IFUCVR.js";
498
503
  import {
499
504
  atomicWriteFileSync
500
- } from "./chunk-T42ACHFI.js";
505
+ } from "./chunk-7LTB54MK.js";
501
506
  import {
502
507
  REASONING_EFFORT_TIERS
503
508
  } from "./chunk-SIUQ3YYX.js";
504
509
  import {
505
510
  DEFAULT_TOKEN_LIMIT
506
- } from "./chunk-YTFBURQD.js";
507
- import "./chunk-YPCPZSZB.js";
511
+ } from "./chunk-GB6HDZIK.js";
512
+ import "./chunk-DT3B47QP.js";
508
513
  import "./chunk-IRJWHZWU.js";
509
514
  import "./chunk-SYCJMSIJ.js";
510
515
  import "./chunk-55ZMG67I.js";
511
516
  import "./chunk-H6BD2ELD.js";
512
517
  import "./chunk-5IFG2VC4.js";
513
518
  import "./chunk-64WXLC72.js";
514
- import "./chunk-D5KISTLW.js";
519
+ import "./chunk-H6EMK6QK.js";
515
520
  import {
516
521
  Storage,
517
522
  createDebugLogger,
@@ -521,17 +526,17 @@ import {
521
526
  isNodeError,
522
527
  shortenPath,
523
528
  tildeifyPath
524
- } from "./chunk-AVQDCKNF.js";
525
- import "./chunk-M5ITDKSM.js";
529
+ } from "./chunk-22MNNNXE.js";
530
+ import "./chunk-FHGQFG2K.js";
531
+ import {
532
+ registerCleanup,
533
+ runExitCleanup
534
+ } from "./chunk-QLBBV7C6.js";
526
535
  import {
527
536
  finalizeStartupProfile,
528
537
  profileCheckpoint
529
538
  } from "./chunk-ITOGNELQ.js";
530
539
  import "./chunk-FXGLL2HL.js";
531
- import {
532
- registerCleanup,
533
- runExitCleanup
534
- } from "./chunk-2YH27UNF.js";
535
540
  import "./chunk-ZERZSAZL.js";
536
541
  import "./chunk-QN5NZ3UQ.js";
537
542
  import "./chunk-BR4QREVK.js";
@@ -5831,10 +5836,18 @@ var RemoteInputWatcher = class {
5831
5836
  this.consumedPrefixHash = null;
5832
5837
  }
5833
5838
  if (currentSize <= this.bytesRead) return Promise.resolve();
5834
- const nextConsumedPrefixHash = this.hashFilePrefix(currentSize);
5839
+ const consumeUntil = this.findLastCompleteRecordEnd(
5840
+ this.bytesRead,
5841
+ currentSize
5842
+ );
5843
+ if (consumeUntil === null) {
5844
+ return Promise.resolve();
5845
+ }
5846
+ const nextConsumedPrefixHash = this.hashFilePrefix(consumeUntil);
5835
5847
  this.reading = true;
5836
5848
  const stream = createReadStream(this.filePath, {
5837
5849
  start: this.bytesRead,
5850
+ end: consumeUntil - 1,
5838
5851
  encoding: "utf-8"
5839
5852
  });
5840
5853
  const rl = createInterface({ input: stream, crlfDelay: Infinity });
@@ -5866,7 +5879,7 @@ var RemoteInputWatcher = class {
5866
5879
  });
5867
5880
  return new Promise((resolve4) => {
5868
5881
  rl.on("close", () => {
5869
- this.bytesRead = currentSize;
5882
+ this.bytesRead = consumeUntil;
5870
5883
  if (nextConsumedPrefixHash !== null) {
5871
5884
  this.consumedPrefixHash = nextConsumedPrefixHash;
5872
5885
  }
@@ -5876,6 +5889,37 @@ var RemoteInputWatcher = class {
5876
5889
  });
5877
5890
  });
5878
5891
  }
5892
+ findLastCompleteRecordEnd(start, end) {
5893
+ if (end <= start) return null;
5894
+ let fd = null;
5895
+ try {
5896
+ fd = openSync2(this.filePath, "r");
5897
+ const buffer = Buffer.allocUnsafe(Math.min(64 * 1024, end - start));
5898
+ let remaining = end - start;
5899
+ let position = start;
5900
+ let lastLineBreak = -1;
5901
+ while (remaining > 0) {
5902
+ const bytesToRead = Math.min(buffer.length, remaining);
5903
+ const bytesRead = readSync(fd, buffer, 0, bytesToRead, position);
5904
+ if (bytesRead <= 0) break;
5905
+ for (let i = 0; i < bytesRead; i++) {
5906
+ if (buffer[i] === 10) {
5907
+ lastLineBreak = position + i;
5908
+ }
5909
+ }
5910
+ remaining -= bytesRead;
5911
+ position += bytesRead;
5912
+ }
5913
+ return lastLineBreak >= start ? lastLineBreak + 1 : null;
5914
+ } catch (err) {
5915
+ debugLogger2.warn("RemoteInput: failed to scan complete records:", err);
5916
+ return null;
5917
+ } finally {
5918
+ if (fd !== null) {
5919
+ closeSync(fd);
5920
+ }
5921
+ }
5922
+ }
5879
5923
  hasConsumedPrefixChanged() {
5880
5924
  if (this.bytesRead === 0) {
5881
5925
  return false;
@@ -6484,6 +6528,10 @@ function formatAuthDisplayType(authDisplayType) {
6484
6528
  }
6485
6529
  }
6486
6530
  __name(formatAuthDisplayType, "formatAuthDisplayType");
6531
+ function formatVersionLabel(version) {
6532
+ return /^\d/.test(version) ? `v${version}` : version;
6533
+ }
6534
+ __name(formatVersionLabel, "formatVersionLabel");
6487
6535
  var Header = /* @__PURE__ */ __name(({
6488
6536
  customAsciiArt,
6489
6537
  customBannerTitle,
@@ -6495,6 +6543,7 @@ var Header = /* @__PURE__ */ __name(({
6495
6543
  }) => {
6496
6544
  const { columns: terminalWidth } = useTerminalSize();
6497
6545
  const formattedAuthType = formatAuthDisplayType(authDisplayType);
6546
+ const versionLabel = formatVersionLabel(version);
6498
6547
  const containerMarginX = 2;
6499
6548
  const logoGap = 2;
6500
6549
  const infoPanelPaddingX = 1;
@@ -6564,8 +6613,8 @@ var Header = /* @__PURE__ */ __name(({
6564
6613
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Text, { children: [
6565
6614
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Text, { bold: true, color: theme.text.accent, children: customBannerTitle ? customBannerTitle : ">_ Qwen Code" }),
6566
6615
  /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(Text, { color: theme.text.secondary, children: [
6567
- " (v",
6568
- version,
6616
+ " (",
6617
+ versionLabel,
6569
6618
  ")"
6570
6619
  ] })
6571
6620
  ] }),
@@ -8258,7 +8307,7 @@ function LoopDetectionConfirmation({
8258
8307
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box_default, { width: "100%", marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(Box_default, { flexDirection: "column", children: [
8259
8308
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Text, { color: theme.text.secondary, children: "This can happen due to repetitive tool calls or other model behavior. Do you want to keep loop detection enabled or disable it for this session?" }),
8260
8309
  /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(RadioButtonSelect, { items: OPTIONS, onSelect: onComplete }) }),
8261
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Text, { color: theme.text.secondary, children: 'Note: Setting "model.skipLoopDetection" to true in your settings.json disables only the heuristic loop checks for future sessions; the always-on guard against consecutive identical tool calls cannot be turned off there. Disabling for this session above suppresses both.' }) })
8310
+ /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Box_default, { marginTop: 1, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Text, { color: theme.text.secondary, children: 'Note: Setting "model.skipLoopDetection" to true in your settings.json disables only the heuristic loop checks for future sessions; the always-on guards (consecutive identical tool calls, repeated shell inspection commands, and the per-turn tool-call cap) are not affected by it. The cap is tunable via "model.maxToolCallsPerTurn" (0 disables it). Disabling for this session above suppresses everything.' }) })
8262
8311
  ] }) })
8263
8312
  ] })
8264
8313
  }
@@ -26422,7 +26471,139 @@ var import_react75 = __toESM(require_react(), 1);
26422
26471
  // packages/cli/src/ui/hooks/useBackgroundTaskView.ts
26423
26472
  init_esbuild_shims();
26424
26473
  var import_react74 = __toESM(require_react(), 1);
26474
+
26475
+ // packages/cli/src/ui/components/background-view/agent-forest.ts
26476
+ init_esbuild_shims();
26477
+ function isAgentNode(e) {
26478
+ return e.kind === "agent" && typeof e.agentId === "string";
26479
+ }
26480
+ __name(isAgentNode, "isAgentNode");
26481
+ function reorderChildrenUnderParents(entries) {
26482
+ const agents = entries.filter(isAgentNode);
26483
+ const byId = /* @__PURE__ */ new Map();
26484
+ for (const agent of agents) byId.set(agent.agentId, agent);
26485
+ const childrenOf = /* @__PURE__ */ new Map();
26486
+ const roots = [];
26487
+ for (const agent of agents) {
26488
+ const pid = agent.parentAgentId;
26489
+ if (pid != null && pid !== agent.agentId && byId.has(pid)) {
26490
+ const siblings = childrenOf.get(pid);
26491
+ if (siblings) siblings.push(agent);
26492
+ else childrenOf.set(pid, [agent]);
26493
+ } else {
26494
+ roots.push(agent);
26495
+ }
26496
+ }
26497
+ if (childrenOf.size === 0) return [...entries];
26498
+ const ordered = [];
26499
+ const visited = /* @__PURE__ */ new Set();
26500
+ const visit = /* @__PURE__ */ __name((node) => {
26501
+ if (visited.has(node.agentId)) return;
26502
+ visited.add(node.agentId);
26503
+ ordered.push(node);
26504
+ for (const child of childrenOf.get(node.agentId) ?? []) visit(child);
26505
+ }, "visit");
26506
+ for (const root of roots) visit(root);
26507
+ for (const agent of agents) {
26508
+ if (!visited.has(agent.agentId)) {
26509
+ visited.add(agent.agentId);
26510
+ ordered.push(agent);
26511
+ }
26512
+ }
26513
+ let next = 0;
26514
+ return entries.map((e) => isAgentNode(e) ? ordered[next++] : e);
26515
+ }
26516
+ __name(reorderChildrenUnderParents, "reorderChildrenUnderParents");
26517
+ function panelDisplayOrder(visibleNewestFirst) {
26518
+ return reorderChildrenUnderParents([...visibleNewestFirst].reverse());
26519
+ }
26520
+ __name(panelDisplayOrder, "panelDisplayOrder");
26521
+ function ancestorChain(node, lookup) {
26522
+ const chain = [];
26523
+ const seen = new Set(node.agentId != null ? [node.agentId] : []);
26524
+ let pid = node.parentAgentId;
26525
+ for (; ; ) {
26526
+ if (pid == null) return { chain, terminatedBy: "root" };
26527
+ if (seen.has(pid)) return { chain, terminatedBy: "cycle" };
26528
+ const parent = lookup(pid);
26529
+ if (!parent) return { chain, terminatedBy: "missing" };
26530
+ seen.add(pid);
26531
+ chain.push(parent);
26532
+ pid = parent.parentAgentId;
26533
+ }
26534
+ }
26535
+ __name(ancestorChain, "ancestorChain");
26536
+ function computeAgentTreeInfo(entries) {
26537
+ const byId = /* @__PURE__ */ new Map();
26538
+ for (const e of entries) if (isAgentNode(e)) byId.set(e.agentId, e);
26539
+ const info = /* @__PURE__ */ new Map();
26540
+ for (const e of byId.values()) {
26541
+ const { chain, terminatedBy } = ancestorChain(e, (id) => byId.get(id));
26542
+ info.set(e.agentId, {
26543
+ // Cycle members are appended flat at root level by
26544
+ // reorderChildrenUnderParents — mirror that here, otherwise the row
26545
+ // would indent under no rendered parent.
26546
+ visibleDepth: terminatedBy === "cycle" ? 0 : chain.length,
26547
+ // Orphaned = claims a parent but its IMMEDIATE parent is gone. A
26548
+ // deeper break (grandparent evicted) still renders indented under
26549
+ // the present parent, so only a zero-length 'missing' chain counts.
26550
+ orphaned: chain.length === 0 && terminatedBy === "missing"
26551
+ });
26552
+ }
26553
+ return info;
26554
+ }
26555
+ __name(computeAgentTreeInfo, "computeAgentTreeInfo");
26556
+ function computeUserBlockingIds(entries) {
26557
+ const byId = /* @__PURE__ */ new Map();
26558
+ for (const e of entries) if (isAgentNode(e)) byId.set(e.agentId, e);
26559
+ const blocking = /* @__PURE__ */ new Set();
26560
+ for (const e of byId.values()) {
26561
+ if (e.isBackgrounded !== false) continue;
26562
+ const { chain, terminatedBy } = ancestorChain(e, (id) => byId.get(id));
26563
+ if (terminatedBy === "root" && chain.every((ancestor) => ancestor.isBackgrounded === false)) {
26564
+ blocking.add(e.agentId);
26565
+ }
26566
+ }
26567
+ return blocking;
26568
+ }
26569
+ __name(computeUserBlockingIds, "computeUserBlockingIds");
26570
+ var TREE_INDENT_PER_LEVEL = " ";
26571
+ var TREE_INDENT_MAX_LEVELS = 3;
26572
+ function treeRowPrefix(entry, tree) {
26573
+ const indent = TREE_INDENT_PER_LEVEL.repeat(
26574
+ Math.min(tree?.visibleDepth ?? 0, TREE_INDENT_MAX_LEVELS)
26575
+ );
26576
+ const marker = entry.parentAgentId != null ? "\u21B3 " : "";
26577
+ return `${indent}${marker}`;
26578
+ }
26579
+ __name(treeRowPrefix, "treeRowPrefix");
26580
+ function statusGlyph(status) {
26581
+ switch (status) {
26582
+ case "running":
26583
+ return "\u25CB";
26584
+ case "paused":
26585
+ return "\u23F8";
26586
+ case "completed":
26587
+ return "\u2714";
26588
+ case "failed":
26589
+ case "cancelled":
26590
+ return "\u2716";
26591
+ default:
26592
+ return "\u25CB";
26593
+ }
26594
+ }
26595
+ __name(statusGlyph, "statusGlyph");
26596
+
26597
+ // packages/cli/src/ui/hooks/useBackgroundTaskView.ts
26425
26598
  var MAX_RETAINED_TERMINAL_DREAMS = 3;
26599
+ function compareActiveThenTerminal(a, b) {
26600
+ const aActive = a.status === "running" || a.status === "paused";
26601
+ const bActive = b.status === "running" || b.status === "paused";
26602
+ if (aActive !== bActive) return aActive ? -1 : 1;
26603
+ if (aActive) return b.startTime - a.startTime;
26604
+ return (b.endTime ?? b.startTime) - (a.endTime ?? a.startTime);
26605
+ }
26606
+ __name(compareActiveThenTerminal, "compareActiveThenTerminal");
26426
26607
  function entryId(entry) {
26427
26608
  switch (entry.kind) {
26428
26609
  case "agent":
@@ -26488,22 +26669,15 @@ function useBackgroundTaskView(config) {
26488
26669
  metadataWriteError: typeof metadataWriteError === "string" ? metadataWriteError : void 0
26489
26670
  };
26490
26671
  });
26491
- const isActive = /* @__PURE__ */ __name((entry) => entry.status === "running" || entry.status === "paused", "isActive");
26492
26672
  const merged = [
26493
26673
  ...agentEntries,
26494
26674
  ...shellEntries,
26495
26675
  ...monitorEntries,
26496
26676
  ...workflowEntries,
26497
26677
  ...dreamEntries
26498
- ].sort((a, b) => {
26499
- const aActive = isActive(a);
26500
- const bActive = isActive(b);
26501
- if (aActive !== bActive) return aActive ? -1 : 1;
26502
- if (aActive) return b.startTime - a.startTime;
26503
- return (b.endTime ?? b.startTime) - (a.endTime ?? a.startTime);
26504
- });
26678
+ ].sort(compareActiveThenTerminal);
26505
26679
  lastDreamSig = computeDreamSig(allDreams);
26506
- setEntries(merged);
26680
+ setEntries(reorderChildrenUnderParents(merged));
26507
26681
  }, "refresh");
26508
26682
  const refreshFromRegistry = /* @__PURE__ */ __name(() => refresh(), "refreshFromRegistry");
26509
26683
  refresh();
@@ -26978,11 +27152,11 @@ function terminalStatusPresentation(status) {
26978
27152
  __name(terminalStatusPresentation, "terminalStatusPresentation");
26979
27153
  var FOREGROUND_ROW_PREFIX = "[blocking]";
26980
27154
  var SHELL_ROW_PREFIX = "[shell]";
26981
- function rowLabel(entry) {
27155
+ function rowLabel(entry, userBlocking) {
26982
27156
  switch (entry.kind) {
26983
27157
  case "agent": {
26984
27158
  const label = buildBackgroundEntryLabel(entry, { includePrefix: false });
26985
- const base = entry.isBackgrounded ? label : `${FOREGROUND_ROW_PREFIX} ${label}`;
27159
+ const base = userBlocking ? `${FOREGROUND_ROW_PREFIX} ${label}` : label;
26986
27160
  return entry.pendingApprovals?.length ? `${base} \u26A0 ${t("needs approval")}` : base;
26987
27161
  }
26988
27162
  case "shell":
@@ -27006,6 +27180,22 @@ function rowLabel(entry) {
27006
27180
  }
27007
27181
  }
27008
27182
  __name(rowLabel, "rowLabel");
27183
+ function formatParentBreadcrumb(entry, lookup) {
27184
+ if (entry.parentAgentId == null) return void 0;
27185
+ const { chain, terminatedBy } = ancestorChain(entry, lookup);
27186
+ if (chain.length === 0) {
27187
+ return `${entry.parentName ?? t("unknown agent")} \xB7 ${t("no longer running")}`;
27188
+ }
27189
+ const rootFirst = [...chain].reverse();
27190
+ const crumbs = [
27191
+ terminatedBy === "root" ? "main" : "\u2026",
27192
+ ...rootFirst.map((p) => p.subagentType ?? "agent")
27193
+ ].join(" \u203A ");
27194
+ const immediateParent = chain[0];
27195
+ const desc = immediateParent.description ? ` \u2014 ${immediateParent.description}` : "";
27196
+ return `${crumbs}${desc}`;
27197
+ }
27198
+ __name(formatParentBreadcrumb, "formatParentBreadcrumb");
27009
27199
  function elapsedFor(entry) {
27010
27200
  const elapsedMs = Math.max(
27011
27201
  0,
@@ -27055,6 +27245,8 @@ var ListBody = /* @__PURE__ */ __name(({ entries, selectedIndex, maxRows }) => {
27055
27245
  const hiddenAbove = windowStart;
27056
27246
  const hiddenBelow = entries.length - windowEnd;
27057
27247
  const visible = entries.slice(windowStart, windowEnd);
27248
+ const treeInfo = computeAgentTreeInfo(entries);
27249
+ const blockingIds = computeUserBlockingIds(entries);
27058
27250
  return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { flexDirection: "column", children: [
27059
27251
  /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { paddingX: 1, children: [
27060
27252
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, children: t("Background tasks") }),
@@ -27071,9 +27263,16 @@ var ListBody = /* @__PURE__ */ __name(({ entries, selectedIndex, maxRows }) => {
27071
27263
  const isSelected = idx === selectedIndex;
27072
27264
  const terminal = terminalStatusPresentation(entry.status);
27073
27265
  const labelColor = isSelected ? theme.text.accent : terminal ? terminal.labelColor : theme.text.primary;
27266
+ const treePrefix = entry.kind === "agent" ? treeRowPrefix(entry, treeInfo.get(entry.agentId)) : "";
27074
27267
  return /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Box_default, { flexDirection: "row", paddingX: 1, children: [
27075
27268
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: isSelected ? theme.text.accent : void 0, children: isSelected ? "> " : " " }),
27076
- /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: labelColor, children: escapeAnsiCtrlCodes(rowLabel(entry)) })
27269
+ treePrefix !== "" && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: treePrefix }),
27270
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: labelColor, children: escapeAnsiCtrlCodes(
27271
+ rowLabel(
27272
+ entry,
27273
+ entry.kind === "agent" && blockingIds.has(entry.agentId)
27274
+ )
27275
+ ) })
27077
27276
  ] }, entryId(entry));
27078
27277
  }),
27079
27278
  hiddenBelow > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { paddingX: 1, children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: ` v ${t("{{count}} more below", { count: String(hiddenBelow) })}` }) })
@@ -27212,6 +27411,7 @@ var DreamDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
27212
27411
  );
27213
27412
  }, "DreamDetailBody");
27214
27413
  var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) => {
27414
+ const config = useConfig();
27215
27415
  const title = escapeAnsiCtrlCodes(
27216
27416
  `${entry.subagentType ?? "Agent"} \u203A ${buildBackgroundEntryLabel(entry, { includePrefix: false })}`
27217
27417
  );
@@ -27227,6 +27427,19 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
27227
27427
  if (entry.stats?.toolUses !== void 0) {
27228
27428
  dimSubtitleParts.push(formatToolUseCount(entry.stats.toolUses));
27229
27429
  }
27430
+ if ((entry.depth ?? 0) > 0) {
27431
+ dimSubtitleParts.push(
27432
+ t("nested \xB7 level {{level}} of {{max}}", {
27433
+ level: String((entry.depth ?? 0) + 1),
27434
+ max: String(config.getMaxSubagentDepth())
27435
+ })
27436
+ );
27437
+ }
27438
+ const registry = config.getBackgroundTaskRegistry();
27439
+ const parentLine = formatParentBreadcrumb(entry, (id) => registry.get(id));
27440
+ const childAgents = registry.getAll().filter((task) => task.parentAgentId === entry.agentId).sort(compareActiveThenTerminal);
27441
+ const visibleChildAgents = childAgents.slice(0, 5);
27442
+ const hiddenChildCount = childAgents.length - visibleChildAgents.length;
27230
27443
  const activities = (entry.recentActivities ?? []).slice(-5);
27231
27444
  const blockedReason = entry.resumeBlockedReason;
27232
27445
  const hasError = Boolean(entry.error);
@@ -27250,6 +27463,28 @@ var AgentDetailBody = /* @__PURE__ */ __name(({ entry, maxHeight, maxWidth }) =>
27250
27463
  terminal && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: terminal.color, children: `${terminal.icon} ${statusVerb(entry.status)} \xB7 ` }),
27251
27464
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: dimSubtitleParts.join(" \xB7 ") })
27252
27465
  ] }),
27466
+ parentLine !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
27467
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
27468
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, dimColor: true, children: t("Parent") }) }),
27469
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, wrap: "truncate-end", children: ` ${escapeAnsiCtrlCodes(parentLine)}` }) })
27470
+ ] }),
27471
+ visibleChildAgents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
27472
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
27473
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(Text, { bold: true, dimColor: true, children: [
27474
+ t("Sub-agents"),
27475
+ /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(
27476
+ Text,
27477
+ {
27478
+ color: theme.text.secondary,
27479
+ children: ` (${childAgents.length})`
27480
+ }
27481
+ )
27482
+ ] }) }),
27483
+ visibleChildAgents.map((child) => /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, wrap: "truncate-end", children: ` ${statusGlyph(child.status)} ${escapeAnsiCtrlCodes(
27484
+ `${child.subagentType ?? "agent"} \u2014 ${child.description}`
27485
+ )} \xB7 ${elapsedFor(child)}` }) }, child.agentId)),
27486
+ hiddenChildCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { color: theme.text.secondary, children: ` \u2026 ${t("{{count}} more", { count: String(hiddenChildCount) })}` }) })
27487
+ ] }),
27253
27488
  activities.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime99.jsxs)(import_react77.Fragment, { children: [
27254
27489
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, {}),
27255
27490
  /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime99.jsx)(Text, { bold: true, dimColor: true, children: t("Progress") }) }),
@@ -27570,8 +27805,8 @@ var BackgroundTasksDialog = /* @__PURE__ */ __name(({
27570
27805
  const isAbandonable = selectedEntry.kind === "agent" && selectedEntry.status === "paused";
27571
27806
  if (!isCancelable && !isAbandonable) return;
27572
27807
  const entryKey = entryId(selectedEntry);
27573
- const isForegroundAgent = selectedEntry.kind === "agent" && !selectedEntry.isBackgrounded;
27574
- if (isForegroundAgent && pendingCancelEntryId !== entryKey) {
27808
+ const isUserBlockingAgent = selectedEntry.kind === "agent" && computeUserBlockingIds(entries).has(selectedEntry.agentId);
27809
+ if (isUserBlockingAgent && pendingCancelEntryId !== entryKey) {
27575
27810
  setPendingCancelEntryId(entryKey);
27576
27811
  return;
27577
27812
  }
@@ -28871,6 +29106,26 @@ function getGlobalMcpResourceSuggestions(config, pattern) {
28871
29106
  return rankResourcesToSuggestions(resources, pattern.toLowerCase());
28872
29107
  }
28873
29108
  __name(getGlobalMcpResourceSuggestions, "getGlobalMcpResourceSuggestions");
29109
+ function getMcpServerMentionSuggestions(config, pattern) {
29110
+ if (!config) return [];
29111
+ if (config.isTrustedFolder?.() === false) return [];
29112
+ const mcpServers = config.getMcpServers?.() || {};
29113
+ const query = pattern.startsWith("mcp:") ? pattern.slice("mcp:".length).toLowerCase() : pattern.toLowerCase();
29114
+ return Object.keys(mcpServers).filter((name) => name.toLowerCase().includes(query)).sort((a, b) => {
29115
+ const aLower = a.toLowerCase();
29116
+ const bLower = b.toLowerCase();
29117
+ const aPrefix = aLower.startsWith(query) ? 0 : 1;
29118
+ const bPrefix = bLower.startsWith(query) ? 0 : 1;
29119
+ if (aPrefix !== bPrefix) return aPrefix - bPrefix;
29120
+ return aLower.localeCompare(bLower);
29121
+ }).map((name) => ({
29122
+ label: buildMcpServerRef(name),
29123
+ value: buildMcpServerRef(name),
29124
+ description: t("MCP server"),
29125
+ isDirectory: false
29126
+ })).slice(0, MAX_SUGGESTIONS_TO_SHOW);
29127
+ }
29128
+ __name(getMcpServerMentionSuggestions, "getMcpServerMentionSuggestions");
28874
29129
  function getMcpServerSuggestions(config, pattern) {
28875
29130
  if (!config) return [];
28876
29131
  if (config.isTrustedFolder?.() === false) return [];
@@ -29034,6 +29289,10 @@ function useAtCompletion(props) {
29034
29289
  dispatch({ type: "SEARCH_SUCCESS", payload: resourceSuggestions });
29035
29290
  return;
29036
29291
  }
29292
+ const mcpServerMentionSuggestions = getMcpServerMentionSuggestions(
29293
+ config,
29294
+ state.pattern
29295
+ );
29037
29296
  const serverSuggestions = getMcpServerSuggestions(config, state.pattern);
29038
29297
  const globalResourceSuggestions = getGlobalMcpResourceSuggestions(
29039
29298
  config,
@@ -29041,6 +29300,7 @@ function useAtCompletion(props) {
29041
29300
  );
29042
29301
  const mcpSuggestions = [
29043
29302
  ...extensionSuggestions,
29303
+ ...mcpServerMentionSuggestions,
29044
29304
  ...serverSuggestions,
29045
29305
  ...globalResourceSuggestions
29046
29306
  ];
@@ -30655,6 +30915,7 @@ __name(AgentViewProvider, "AgentViewProvider");
30655
30915
  // packages/cli/src/ui/components/background-view/liveAgentPanelVisibility.ts
30656
30916
  init_esbuild_shims();
30657
30917
  var TERMINAL_VISIBLE_MS = 8e3;
30918
+ var LIVE_AGENT_PANEL_MAX_ROWS = 12;
30658
30919
  function isLiveAgentPanelVisibleEntry(entry, nowMs) {
30659
30920
  if (entry.kind !== "agent") return false;
30660
30921
  if (entry.status === "running" || entry.status === "paused") return true;
@@ -32223,7 +32484,9 @@ var InputPrompt = /* @__PURE__ */ __name(({
32223
32484
  } = useBackgroundTaskViewActions();
32224
32485
  const hasAgents = agents.size > 0;
32225
32486
  const getVisibleBgAgents = (0, import_react96.useCallback)(
32226
- () => bgEntries.filter((e) => isLiveAgentPanelVisibleEntry(e, Date.now())),
32487
+ () => panelDisplayOrder(
32488
+ bgEntries.filter((e) => isLiveAgentPanelVisibleEntry(e, Date.now()))
32489
+ ).slice(-LIVE_AGENT_PANEL_MAX_ROWS),
32227
32490
  [bgEntries]
32228
32491
  );
32229
32492
  const hasActiveToolConfirmation = (0, import_react96.useMemo)(
@@ -35733,7 +35996,7 @@ var AgentComposer = /* @__PURE__ */ __name(({ agentId }) => {
35733
35996
  init_esbuild_shims();
35734
35997
  var import_react111 = __toESM(require_react(), 1);
35735
35998
  var import_jsx_runtime127 = __toESM(require_jsx_runtime(), 1);
35736
- var DEFAULT_MAX_ROWS = 12;
35999
+ var DEFAULT_MAX_ROWS = LIVE_AGENT_PANEL_MAX_ROWS;
35737
36000
  var DEFAULT_SUBAGENT_TYPE = DEFAULT_BUILTIN_SUBAGENT_TYPE;
35738
36001
  function isAgentEntry(entry) {
35739
36002
  return entry.kind === "agent";
@@ -35743,19 +36006,18 @@ function statusIcon(entry) {
35743
36006
  if (entry.synthesized) {
35744
36007
  return { glyph: "\xB7", color: theme.text.secondary };
35745
36008
  }
36009
+ const glyph = statusGlyph(entry.status);
35746
36010
  switch (entry.status) {
35747
36011
  case "running":
35748
- return { glyph: "\u25CB", color: theme.status.warning };
35749
36012
  case "paused":
35750
- return { glyph: "\u23F8", color: theme.status.warning };
36013
+ case "cancelled":
36014
+ return { glyph, color: theme.status.warning };
35751
36015
  case "completed":
35752
- return { glyph: "\u2714", color: theme.status.success };
36016
+ return { glyph, color: theme.status.success };
35753
36017
  case "failed":
35754
- return { glyph: "\u2716", color: theme.status.error };
35755
- case "cancelled":
35756
- return { glyph: "\u2716", color: theme.status.warning };
36018
+ return { glyph, color: theme.status.error };
35757
36019
  default:
35758
- return { glyph: "\u25CB", color: theme.text.secondary };
36020
+ return { glyph, color: theme.text.secondary };
35759
36021
  }
35760
36022
  }
35761
36023
  __name(statusIcon, "statusIcon");
@@ -35875,7 +36137,8 @@ var LiveAgentPanelBody = /* @__PURE__ */ __name(({ snapshots, now, maxRows, widt
35875
36137
  expired: !isLiveAgentPanelVisibleEntry(entry, now)
35876
36138
  })).filter((entry) => !entry.expired);
35877
36139
  if (visibleAgents.length === 0) return null;
35878
- const visibleAgentsAsc = [...visibleAgents].reverse();
36140
+ const visibleAgentsAsc = panelDisplayOrder(visibleAgents);
36141
+ const treeInfo = computeAgentTreeInfo(visibleAgentsAsc);
35879
36142
  const overflow = Math.max(0, visibleAgentsAsc.length - maxRows);
35880
36143
  const visible = overflow > 0 ? visibleAgentsAsc.slice(-maxRows) : visibleAgentsAsc;
35881
36144
  const totalItems = 1 + visible.length;
@@ -35897,14 +36160,15 @@ var LiveAgentPanelBody = /* @__PURE__ */ __name(({ snapshots, now, maxRows, widt
35897
36160
  {
35898
36161
  entry,
35899
36162
  now,
35900
- selected: focused && clampedIndex === idx + 1
36163
+ selected: focused && clampedIndex === idx + 1,
36164
+ tree: treeInfo.get(entry.agentId)
35901
36165
  },
35902
36166
  entry.agentId
35903
36167
  )),
35904
36168
  focused && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Box_default, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: " \u2191\u2193 navigate \xB7 Enter detail \xB7 Esc back" }) })
35905
36169
  ] });
35906
36170
  }, "LiveAgentPanelBody");
35907
- var AgentRow = /* @__PURE__ */ __name(({ entry, now, selected = false }) => {
36171
+ var AgentRow = /* @__PURE__ */ __name(({ entry, now, selected = false, tree }) => {
35908
36172
  const { glyph, color } = statusIcon(entry);
35909
36173
  const label = escapeAnsiCtrlCodes(descriptionWithoutPrefix(entry));
35910
36174
  const activity = escapeAnsiCtrlCodes(activityLabel(entry));
@@ -35914,16 +36178,20 @@ var AgentRow = /* @__PURE__ */ __name(({ entry, now, selected = false }) => {
35914
36178
  const tokenSuffix = entry.stats?.outputTokens && entry.stats.outputTokens > 0 ? ` \xB7 ${formatTokenCount(entry.stats.outputTokens)} tokens` : "";
35915
36179
  const tail = ` \u25B6 ${elapsed}${tokenSuffix}`;
35916
36180
  const prefix = selected ? "\u25B8 " : " ";
36181
+ const treePrefix = treeRowPrefix(entry, tree);
36182
+ const orphanNote = tree?.orphaned ? entry.parentName ? ` \xB7 from ${escapeAnsiCtrlCodes(entry.parentName)}` : " \xB7 nested" : "";
35917
36183
  return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Box_default, { flexDirection: "row", children: [
35918
36184
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Box_default, { flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: selected ? theme.text.accent : theme.text.secondary, children: prefix }) }),
35919
36185
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Box_default, { flexShrink: 1, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(Text, { wrap: "truncate-end", children: [
36186
+ treePrefix !== "" && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: treePrefix }),
35920
36187
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color, children: `${glyph} ` }),
35921
36188
  showType && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
35922
36189
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { bold: true, children: safeSubagentType }),
35923
36190
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: ": " })
35924
36191
  ] }),
35925
36192
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: label }),
35926
- activity && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: ` (${activity})` })
36193
+ activity && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: ` (${activity})` }),
36194
+ orphanNote && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: orphanNote })
35927
36195
  ] }) }),
35928
36196
  /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Box_default, { flexShrink: 0, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(Text, { color: theme.text.secondary, children: tail }) })
35929
36197
  ] });
@@ -45199,6 +45467,8 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45199
45467
  };
45200
45468
  }, [isConfigInitialized, config]);
45201
45469
  const isIdleRef = (0, import_react157.useRef)(true);
45470
+ const availableTerminalHeightRef = (0, import_react157.useRef)(0);
45471
+ const terminalWidthRef = (0, import_react157.useRef)(0);
45202
45472
  const updateHandlerRef = (0, import_react157.useRef)(null);
45203
45473
  (0, import_react157.useEffect)(() => {
45204
45474
  const handler = setUpdateHandler(
@@ -45775,7 +46045,9 @@ var AppContainer = /* @__PURE__ */ __name((props) => {
45775
46045
  terminalWidth,
45776
46046
  terminalHeight,
45777
46047
  midTurnDrainRef,
45778
- logger
46048
+ logger,
46049
+ availableTerminalHeightRef,
46050
+ terminalWidthRef
45779
46051
  );
45780
46052
  isIdleRef.current = streamingState === "idle" /* Idle */;
45781
46053
  (0, import_react157.useEffect)(() => {
@@ -46428,6 +46700,8 @@ ${currentText}` : popped);
46428
46700
  0,
46429
46701
  terminalHeight - controlsHeight - mainContentHeightReservation - tabBarHeight
46430
46702
  );
46703
+ availableTerminalHeightRef.current = availableTerminalHeight;
46704
+ terminalWidthRef.current = terminalWidth;
46431
46705
  config.setShellExecutionConfig({
46432
46706
  terminalWidth: Math.floor(terminalWidth * SHELL_WIDTH_FRACTION),
46433
46707
  terminalHeight: Math.max(