@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
@@ -1,8 +1,5 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
- import {
4
- contextCommand
5
- } from "./chunk-7K2WTPQO.js";
6
3
  import {
7
4
  ExtensionRefreshState,
8
5
  clearSkillArgs,
@@ -12,7 +9,13 @@ import {
12
9
  staleArgsWarning,
13
10
  validateAuthMethod,
14
11
  writeSkillArgs
15
- } from "./chunk-VS3GXRNZ.js";
12
+ } from "./chunk-QPSYIV2O.js";
13
+ import {
14
+ isKittyProtocolEnabled
15
+ } from "./chunk-NYX53SV4.js";
16
+ import {
17
+ contextCommand
18
+ } from "./chunk-SKSF3LGQ.js";
16
19
  import {
17
20
  calculateCost,
18
21
  computeSessionStats,
@@ -21,23 +24,20 @@ import {
21
24
  findInlineMathExpressions,
22
25
  getSystemInfoFields,
23
26
  levelLabel
24
- } from "./chunk-7IYLHTTM.js";
25
- import {
26
- isKittyProtocolEnabled
27
- } from "./chunk-NYX53SV4.js";
27
+ } from "./chunk-LZV2BZPL.js";
28
28
  import {
29
29
  VSCODE_SHIFT_ENTER_SEQUENCE,
30
30
  writeOsc52
31
31
  } from "./chunk-3LGZEYOF.js";
32
+ import {
33
+ rollbackStandaloneUpdate
34
+ } from "./chunk-YWMDTMAU.js";
32
35
  import {
33
36
  themeManager
34
37
  } from "./chunk-KKN2IE7Q.js";
35
38
  import {
36
39
  getErrorMessage as getErrorMessage2
37
- } from "./chunk-PHODQP2V.js";
38
- import {
39
- rollbackStandaloneUpdate
40
- } from "./chunk-ZRFJ75D7.js";
40
+ } from "./chunk-EGYJRIDF.js";
41
41
  import {
42
42
  GITHUB_WORKFLOW_PATHS,
43
43
  INSIGHT_CSS,
@@ -51,7 +51,7 @@ import {
51
51
  toJson,
52
52
  toJsonl,
53
53
  toMarkdown
54
- } from "./chunk-UOFFZNXV.js";
54
+ } from "./chunk-VUNRNRN6.js";
55
55
  import {
56
56
  stripUnsafeCharacters,
57
57
  toCodePoints
@@ -63,12 +63,12 @@ import {
63
63
  isVoiceEnabled,
64
64
  readVoiceMode,
65
65
  readVoiceModel
66
- } from "./chunk-XSA5EKTJ.js";
66
+ } from "./chunk-BKGA75MU.js";
67
67
  import {
68
68
  getExtendedSystemInfo,
69
69
  getGitVersion,
70
70
  getNpmVersion
71
- } from "./chunk-GHJM2C2T.js";
71
+ } from "./chunk-QWDVZH24.js";
72
72
  import {
73
73
  formatDuration,
74
74
  formatTokenCount
@@ -76,7 +76,7 @@ import {
76
76
  import {
77
77
  isInlineModelOverrideAllowed,
78
78
  parseAcpModelOption
79
- } from "./chunk-AYB4HSBI.js";
79
+ } from "./chunk-5VYFXHY2.js";
80
80
  import {
81
81
  OUTPUT_LANGUAGE_AUTO,
82
82
  getAllSettingKeys,
@@ -88,7 +88,7 @@ import {
88
88
  resolveOutputLanguageOrPreserveAuto,
89
89
  validateSettingValue,
90
90
  writeOutputLanguageAndRegisterPath
91
- } from "./chunk-LAPK3GLC.js";
91
+ } from "./chunk-22YFMJBW.js";
92
92
  import {
93
93
  SUPPORTED_LANGUAGES,
94
94
  getCurrentLanguage,
@@ -96,14 +96,14 @@ import {
96
96
  resolveSupportedLanguage,
97
97
  setLanguageAsync,
98
98
  t
99
- } from "./chunk-CHCLO3M7.js";
99
+ } from "./chunk-KXWERR6P.js";
100
100
  import {
101
101
  getInstallationInfo
102
- } from "./chunk-25QQVOCG.js";
102
+ } from "./chunk-FXVHVCNA.js";
103
103
  import {
104
104
  isFolderTrustEnabled,
105
105
  loadTrustedFolders
106
- } from "./chunk-434YCHSV.js";
106
+ } from "./chunk-M5LIY7Y6.js";
107
107
  import {
108
108
  require_strip_json_comments
109
109
  } from "./chunk-ALGGS7UH.js";
@@ -174,13 +174,13 @@ import {
174
174
  runForkedAgent,
175
175
  tryGenerateSessionTitle,
176
176
  unregisterGoalHook
177
- } from "./chunk-NGWYUZZO.js";
177
+ } from "./chunk-UQDFEU47.js";
178
178
  import {
179
179
  external_exports
180
180
  } from "./chunk-H6XPXXMH.js";
181
181
  import {
182
182
  resolveModelId
183
- } from "./chunk-PXA5AWHY.js";
183
+ } from "./chunk-XUMAD5IT.js";
184
184
  import {
185
185
  getAutoSkillCuratorStatus,
186
186
  parse,
@@ -194,10 +194,12 @@ import {
194
194
  sanitizeUserPromptExpansionAdditionalContext
195
195
  } from "./chunk-A5YZ3FA2.js";
196
196
  import {
197
- APPROVAL_MODES,
197
+ APPROVAL_MODES
198
+ } from "./chunk-TZTBZ25J.js";
199
+ import {
198
200
  FORK_SUBAGENT_TYPE,
199
201
  stripStartupContext
200
- } from "./chunk-PGEGUNH5.js";
202
+ } from "./chunk-SRY26X4H.js";
201
203
  import {
202
204
  applySkillAllowedTools,
203
205
  buildSkillLlmContent
@@ -211,7 +213,7 @@ import {
211
213
  } from "./chunk-DGEIYUC3.js";
212
214
  import {
213
215
  resolveOpenAILogDir
214
- } from "./chunk-XCLLRKY5.js";
216
+ } from "./chunk-EIMKVOSF.js";
215
217
  import {
216
218
  IdeConnectionEvent,
217
219
  formatTokenUsageSummaryAsCsv,
@@ -225,14 +227,14 @@ import {
225
227
  recordSkillInvocation,
226
228
  runSideQuery,
227
229
  uiTelemetryService
228
- } from "./chunk-M2F5PLOW.js";
230
+ } from "./chunk-4K3RV3OA.js";
229
231
  import {
230
232
  getAutoMemoryRoot
231
233
  } from "./chunk-E4WHKETF.js";
232
234
  import {
233
235
  ToolNames,
234
236
  isShellProgressData
235
- } from "./chunk-I5GNT6ZS.js";
237
+ } from "./chunk-CFDR3GNL.js";
236
238
  import {
237
239
  Storage,
238
240
  createDebugLogger,
@@ -246,7 +248,7 @@ import {
246
248
  isCpuProfileRecording,
247
249
  startCpuProfile,
248
250
  stopCpuProfile
249
- } from "./chunk-W7XZ3KP5.js";
251
+ } from "./chunk-R7XNRHYD.js";
250
252
  import {
251
253
  init_esbuild_shims
252
254
  } from "./chunk-5O2XNYP6.js";
@@ -1943,7 +1945,7 @@ var approvalModeCommand = {
1943
1945
  };
1944
1946
  }
1945
1947
  }
1946
- const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-ZGD6BJSP.js") : void 0;
1948
+ const autoModeNotices = mode === "auto" /* AUTO */ && priorMode !== "auto" /* AUTO */ && config ? await import("./useAutoAcceptIndicator-ZRV56GVP.js") : void 0;
1947
1949
  if (config) {
1948
1950
  try {
1949
1951
  config.setApprovalMode(mode);
@@ -3228,7 +3230,8 @@ var compressCommand = {
3228
3230
  }
3229
3231
  yield {
3230
3232
  messageType: "info",
3231
- content: `Context compressed (${compressed.originalTokenCount} -> ${compressed.newTokenCount}).`
3233
+ content: `Context compressed (${compressed.originalTokenCount} -> ${compressed.newTokenCount}).` + (compressed.warning ? `
3234
+ \u26A0\uFE0F ${compressed.warning}` : "")
3232
3235
  };
3233
3236
  } catch (e) {
3234
3237
  yield {
@@ -3285,12 +3288,19 @@ var compressCommand = {
3285
3288
  },
3286
3289
  Date.now()
3287
3290
  );
3291
+ if (compressed.warning) {
3292
+ ui.addItem(
3293
+ { type: "info" /* INFO */, text: `\u26A0\uFE0F ${compressed.warning}` },
3294
+ Date.now()
3295
+ );
3296
+ }
3288
3297
  return;
3289
3298
  }
3290
3299
  return {
3291
3300
  type: "message",
3292
3301
  messageType: "info",
3293
- content: `${truncationNotice ? `${truncationNotice} ` : ""}Context compressed (${compressed.originalTokenCount} -> ${compressed.newTokenCount}).`
3302
+ content: `${truncationNotice ? `${truncationNotice} ` : ""}Context compressed (${compressed.originalTokenCount} -> ${compressed.newTokenCount}).` + (compressed.warning ? `
3303
+ \u26A0\uFE0F ${compressed.warning}` : "")
3294
3304
  };
3295
3305
  } catch (e) {
3296
3306
  if (abortSignal?.aborted) {
@@ -6343,147 +6353,256 @@ var CLEAR_KEYWORDS = /* @__PURE__ */ new Set([
6343
6353
  "none",
6344
6354
  "cancel"
6345
6355
  ]);
6346
- function sanitizeConditionForPrompt(condition) {
6347
- return condition.replace(/[\r\n]+/g, " ").replace(/"/g, "'");
6348
- }
6349
- __name(sanitizeConditionForPrompt, "sanitizeConditionForPrompt");
6350
- var goalInstructionPrompt = /* @__PURE__ */ __name((condition) => `A session-scoped Stop hook is now active with condition: "${sanitizeConditionForPrompt(condition)}". Briefly acknowledge the goal, then immediately start (or continue) working toward it \u2014 treat the condition itself as your directive and do not pause to ask the user what to do. The hook will block stopping until the condition holds. It auto-clears once the condition is met \u2014 do not tell the user to run \`/goal clear\` after success; that's only for clearing a goal early.`, "goalInstructionPrompt");
6351
- var formatTurns = /* @__PURE__ */ __name((n) => `${n} ${n === 1 ? "turn" : "turns"}`, "formatTurns");
6352
- function assertNeverGoalKind(kind) {
6353
- throw new Error(`Unexpected terminal goal kind: ${kind}`);
6354
- }
6355
- __name(assertNeverGoalKind, "assertNeverGoalKind");
6356
- function terminalGoalTitle(kind) {
6357
- switch (kind) {
6356
+ function formatLegacyTurns(count) {
6357
+ return `${count} ${count === 1 ? "turn" : "turns"}`;
6358
+ }
6359
+ __name(formatLegacyTurns, "formatLegacyTurns");
6360
+ function assertNeverTerminalKind(kind) {
6361
+ throw new Error(`Unexpected GoalTerminalKind: ${kind}`);
6362
+ }
6363
+ __name(assertNeverTerminalKind, "assertNeverTerminalKind");
6364
+ function formatLegacyTerminalSummary(event) {
6365
+ let title;
6366
+ switch (event.kind) {
6358
6367
  case "achieved":
6359
- return "Goal achieved";
6368
+ title = "Goal achieved";
6369
+ break;
6360
6370
  case "failed":
6361
- return "Goal could not be achieved";
6371
+ title = "Goal could not be achieved";
6372
+ break;
6362
6373
  case "aborted":
6363
- return "Goal aborted";
6374
+ title = "Goal aborted";
6375
+ break;
6364
6376
  default:
6365
- return assertNeverGoalKind(kind);
6377
+ title = assertNeverTerminalKind(event.kind);
6366
6378
  }
6367
- }
6368
- __name(terminalGoalTitle, "terminalGoalTitle");
6369
- function formatTerminalSummary(event) {
6370
- const title = terminalGoalTitle(event.kind);
6371
6379
  const stats = [];
6372
- if (event.iterations > 0) stats.push(formatTurns(event.iterations));
6373
- if (typeof event.durationMs === "number")
6380
+ if (event.iterations > 0) stats.push(formatLegacyTurns(event.iterations));
6381
+ if (typeof event.durationMs === "number") {
6374
6382
  stats.push(formatDuration(event.durationMs, { hideTrailingZeros: true }));
6383
+ }
6375
6384
  const subtitle = stats.length > 0 ? ` \xB7 ${stats.join(" \xB7 ")}` : "";
6376
6385
  const reason = event.lastReason?.trim();
6377
- const reasonLine = reason ? `
6378
- Last check: ${reason}` : "";
6379
6386
  return `${title}${subtitle}
6380
- Goal: ${event.condition}${reasonLine}`;
6387
+ Goal: ${event.condition}${reason ? `
6388
+ Last check: ${reason}` : ""}`;
6389
+ }
6390
+ __name(formatLegacyTerminalSummary, "formatLegacyTerminalSummary");
6391
+ async function runLegacyGoalCommand(context, args, explicitSet = false) {
6392
+ const { config } = context.services;
6393
+ if (!config) return errorMessage("Configuration is not available.");
6394
+ const sessionId = config.getSessionId();
6395
+ const objective = args.trim();
6396
+ if (!objective) {
6397
+ const active = getActiveGoal(sessionId);
6398
+ if (active) {
6399
+ const turns = active.iterations === 0 ? "not yet evaluated" : formatLegacyTurns(active.iterations);
6400
+ return {
6401
+ type: "message",
6402
+ messageType: "info",
6403
+ content: `Goal active: ${active.condition} (${turns})${active.lastReason ? `
6404
+ Last check: ${active.lastReason}` : ""}`
6405
+ };
6406
+ }
6407
+ const terminal = getLastGoalTerminal(sessionId);
6408
+ return {
6409
+ type: "message",
6410
+ messageType: "info",
6411
+ content: terminal ? formatLegacyTerminalSummary(terminal) : "No goal set. Usage: `/goal <condition>` (or `/goal clear`)."
6412
+ };
6413
+ }
6414
+ if (!explicitSet && CLEAR_KEYWORDS.has(objective.toLowerCase())) {
6415
+ const cleared = unregisterGoalHook(config, sessionId);
6416
+ if (!cleared) {
6417
+ return {
6418
+ type: "message",
6419
+ messageType: "info",
6420
+ content: "No goal set."
6421
+ };
6422
+ }
6423
+ const item = {
6424
+ type: "goal_status" /* GOAL_STATUS */,
6425
+ kind: "cleared",
6426
+ condition: cleared.condition,
6427
+ iterations: cleared.iterations,
6428
+ durationMs: Date.now() - cleared.setAt
6429
+ };
6430
+ context.ui.addItem(item, Date.now());
6431
+ return {
6432
+ type: "message",
6433
+ messageType: "info",
6434
+ content: `Goal cleared: ${cleared.condition}`
6435
+ };
6436
+ }
6437
+ if (!config.isTrustedFolder()) {
6438
+ return errorMessage(
6439
+ "/goal is only available in trusted workspaces. Trust this folder via `/trust` and try again."
6440
+ );
6441
+ }
6442
+ if (config.getDisableAllHooks()) {
6443
+ return errorMessage(
6444
+ "/goal is disabled because hooks are turned off in this session (`disableAllHooks` or bare mode)."
6445
+ );
6446
+ }
6447
+ if (!config.getHookSystem()) {
6448
+ return errorMessage(
6449
+ "Hook system is not initialized; cannot set a /goal in this session."
6450
+ );
6451
+ }
6452
+ let registered;
6453
+ try {
6454
+ registered = registerGoalHook({
6455
+ config,
6456
+ sessionId,
6457
+ condition: objective,
6458
+ tokensAtStart: 0
6459
+ });
6460
+ } catch (error) {
6461
+ return errorMessage(
6462
+ `Failed to set goal: ${error instanceof Error ? error.message : String(error)}`
6463
+ );
6464
+ }
6465
+ context.ui.addItem(
6466
+ {
6467
+ type: "goal_status" /* GOAL_STATUS */,
6468
+ kind: "set",
6469
+ condition: registered.condition,
6470
+ setAt: registered.setAt
6471
+ },
6472
+ Date.now()
6473
+ );
6474
+ installGoalTerminalObserver({
6475
+ sessionId,
6476
+ config,
6477
+ addItem: context.ui.addItem
6478
+ });
6479
+ const result = {
6480
+ type: "submit_prompt",
6481
+ content: [
6482
+ {
6483
+ text: `A session-scoped Stop hook is now active with condition: "${objective.replace(/[\r\n]+/g, " ").replace(/"/g, "'")}". Briefly acknowledge the goal, then immediately start (or continue) working toward it \u2014 treat the condition itself as your directive and do not pause to ask the user what to do. The hook will block stopping until the condition holds. It auto-clears once the condition is met \u2014 do not tell the user to run \`/goal clear\` after success; that is only for clearing a goal early.`
6484
+ }
6485
+ ]
6486
+ };
6487
+ return result;
6381
6488
  }
6382
- __name(formatTerminalSummary, "formatTerminalSummary");
6383
- function infoMessage(content) {
6384
- return { type: "message", messageType: "info", content };
6489
+ __name(runLegacyGoalCommand, "runLegacyGoalCommand");
6490
+ function parseGoalCommand(args) {
6491
+ let input = args.trim();
6492
+ if (/^\/goal(?:\s|$)/i.test(input)) {
6493
+ input = input.slice("/goal".length).trim();
6494
+ }
6495
+ if (!input) return { kind: "status" };
6496
+ const [head = "", ...tail] = input.split(/\s+/);
6497
+ const keyword = head.toLowerCase();
6498
+ const objective = tail.join(" ").trim();
6499
+ if (keyword === "set") {
6500
+ return objective ? { kind: "set", objective } : { kind: "error", message: "`/goal set` requires an objective." };
6501
+ }
6502
+ if (keyword === "edit") {
6503
+ return objective ? { kind: "edit", objective } : { kind: "error", message: "`/goal edit` requires an objective." };
6504
+ }
6505
+ if (tail.length === 0) {
6506
+ if (keyword === "pause") return { kind: "pause" };
6507
+ if (keyword === "resume") return { kind: "resume" };
6508
+ if (CLEAR_KEYWORDS.has(keyword)) return { kind: "clear" };
6509
+ }
6510
+ return { kind: "set", objective: input };
6385
6511
  }
6386
- __name(infoMessage, "infoMessage");
6512
+ __name(parseGoalCommand, "parseGoalCommand");
6387
6513
  function errorMessage(content) {
6388
6514
  return { type: "message", messageType: "error", content };
6389
6515
  }
6390
6516
  __name(errorMessage, "errorMessage");
6517
+ function goalControl(operation, response, cause) {
6518
+ return {
6519
+ type: "goal_control",
6520
+ operation,
6521
+ response,
6522
+ ...cause ? { cause } : {}
6523
+ };
6524
+ }
6525
+ __name(goalControl, "goalControl");
6391
6526
  var goalCommand = {
6392
6527
  name: "goal",
6393
6528
  get description() {
6394
- return t("Set a goal \u2014 keep working until the condition is met");
6529
+ return t("Set or control a session goal");
6395
6530
  },
6396
- argumentHint: "[<condition> | clear]",
6531
+ argumentHint: "[<objective> | set <objective> | edit <objective> | pause | resume | clear]",
6397
6532
  kind: "built-in" /* BUILT_IN */,
6398
6533
  supportedModes: ["interactive", "non_interactive", "acp"],
6399
6534
  action: /* @__PURE__ */ __name(async (context, args) => {
6400
- const { config } = context.services;
6401
- if (!config) {
6402
- return errorMessage("Configuration is not available.");
6403
- }
6404
- const sessionId = config.getSessionId();
6405
- const q = args.trim();
6406
- if (q === "") {
6407
- const active = getActiveGoal(sessionId);
6408
- if (active) {
6409
- const turns = active.iterations === 0 ? "not yet evaluated" : formatTurns(active.iterations);
6410
- const lastReason = active.lastReason ? `
6411
- Last check: ${active.lastReason}` : "";
6412
- return infoMessage(
6413
- `Goal active: ${active.condition} (${turns})${lastReason}`
6535
+ if (context.executionMode !== "interactive") {
6536
+ const operation2 = parseGoalCommand(args);
6537
+ if (operation2.kind === "error") return errorMessage(operation2.message);
6538
+ if (operation2.kind !== "status" && operation2.kind !== "clear" && operation2.kind !== "set") {
6539
+ return errorMessage(
6540
+ `'/goal ${operation2.kind}' is only available in interactive mode.`
6414
6541
  );
6415
6542
  }
6416
- const last = getLastGoalTerminal(sessionId);
6417
- if (last) {
6418
- return infoMessage(formatTerminalSummary(last));
6419
- }
6420
- return infoMessage(
6421
- "No goal set. Usage: `/goal <condition>` (or `/goal clear`)."
6422
- );
6423
- }
6424
- if (CLEAR_KEYWORDS.has(q.toLowerCase())) {
6425
- const cleared = unregisterGoalHook(config, sessionId);
6426
- if (!cleared) {
6427
- return infoMessage("No goal set.");
6428
- }
6429
- const clearedItem = {
6430
- type: "goal_status" /* GOAL_STATUS */,
6431
- kind: "cleared",
6432
- condition: cleared.condition,
6433
- iterations: cleared.iterations,
6434
- durationMs: Date.now() - cleared.setAt
6543
+ const explicitSet = operation2.kind === "set";
6544
+ const legacyArgs = explicitSet ? operation2.objective : args;
6545
+ return await runLegacyGoalCommand(context, legacyArgs, explicitSet) ?? {
6546
+ type: "message",
6547
+ messageType: "info",
6548
+ content: "Command executed successfully."
6435
6549
  };
6436
- context.ui.addItem(clearedItem, Date.now());
6437
- if (context.executionMode !== "interactive") {
6438
- return infoMessage(`Goal cleared: ${cleared.condition}`);
6439
- }
6440
- return;
6441
6550
  }
6442
- if (!config.isTrustedFolder()) {
6551
+ const { config } = context.services;
6552
+ if (!config) return errorMessage("Configuration is not available.");
6553
+ const operation = parseGoalCommand(args);
6554
+ if (operation.kind === "error") return errorMessage(operation.message);
6555
+ const requiresTrustedFolder = operation.kind === "set" || operation.kind === "edit" || operation.kind === "resume";
6556
+ if (requiresTrustedFolder && !config.isTrustedFolder()) {
6443
6557
  return errorMessage(
6444
6558
  "/goal is only available in trusted workspaces. Trust this folder via `/trust` and try again."
6445
6559
  );
6446
6560
  }
6447
- if (config.getDisableAllHooks()) {
6448
- return errorMessage(
6449
- "/goal is disabled because hooks are turned off in this session (`disableAllHooks` or bare mode)."
6450
- );
6451
- }
6452
- if (!config.getHookSystem()) {
6453
- return errorMessage(
6454
- "Hook system is not initialized; cannot set a /goal in this session."
6455
- );
6456
- }
6457
- let registered;
6458
6561
  try {
6459
- registered = registerGoalHook({
6460
- config,
6461
- sessionId,
6462
- condition: q,
6463
- tokensAtStart: 0
6464
- });
6465
- } catch (err) {
6562
+ const runtime = await config.getGoalRuntimeReady();
6563
+ const snapshot = runtime.getSnapshot();
6564
+ if (operation.kind === "status") {
6565
+ return goalControl(operation, { snapshot });
6566
+ }
6567
+ const current = snapshot.goal;
6568
+ if (operation.kind === "set") {
6569
+ const request2 = current ? {
6570
+ action: "replace",
6571
+ objective: operation.objective,
6572
+ expectedGoalId: current.goalId,
6573
+ expectedRevision: current.revision
6574
+ } : { action: "create", objective: operation.objective };
6575
+ return goalControl(
6576
+ operation,
6577
+ await runtime.dispatch(request2),
6578
+ request2.action
6579
+ );
6580
+ }
6581
+ if (!current) {
6582
+ if (operation.kind === "clear") {
6583
+ return goalControl(operation, { snapshot });
6584
+ }
6585
+ return errorMessage(`Cannot ${operation.kind}: no Goal is active.`);
6586
+ }
6587
+ const version = {
6588
+ expectedGoalId: current.goalId,
6589
+ expectedRevision: current.revision
6590
+ };
6591
+ const request = operation.kind === "edit" ? {
6592
+ action: "edit",
6593
+ objective: operation.objective,
6594
+ ...version
6595
+ } : { action: operation.kind, ...version };
6596
+ return goalControl(
6597
+ operation,
6598
+ await runtime.dispatch(request),
6599
+ request.action
6600
+ );
6601
+ } catch (error) {
6466
6602
  return errorMessage(
6467
- `Failed to set goal: ${err instanceof Error ? err.message : String(err)}`
6603
+ error instanceof Error ? error.message : String(error)
6468
6604
  );
6469
6605
  }
6470
- const setItem = {
6471
- type: "goal_status" /* GOAL_STATUS */,
6472
- kind: "set",
6473
- condition: registered.condition,
6474
- setAt: registered.setAt
6475
- };
6476
- context.ui.addItem(setItem, Date.now());
6477
- installGoalTerminalObserver({
6478
- sessionId,
6479
- config,
6480
- addItem: context.ui.addItem
6481
- });
6482
- const result = {
6483
- type: "submit_prompt",
6484
- content: [{ text: goalInstructionPrompt(q) }]
6485
- };
6486
- return result;
6487
6606
  }, "action")
6488
6607
  };
6489
6608
 
@@ -6563,7 +6682,7 @@ var expandNowCommand = {
6563
6682
  content: t("History is already expanded in this session.")
6564
6683
  };
6565
6684
  }
6566
- const { expandCollapsedHistory } = await import("./resumeHistoryUtils-F5BE5QDW.js");
6685
+ const { expandCollapsedHistory } = await import("./resumeHistoryUtils-4QAMC2S6.js");
6567
6686
  const updated = expandCollapsedHistory(history);
6568
6687
  loadHistory(updated);
6569
6688
  refreshStatic();
@@ -7117,13 +7236,13 @@ function formatFileList(openFiles) {
7117
7236
  const displayName2 = isDuplicate ? `${basename3} (/${parentDir})` : basename3;
7118
7237
  return ` - ${displayName2}${file.isActive ? " (active)" : ""}`;
7119
7238
  }).join("\n");
7120
- const infoMessage2 = `
7239
+ const infoMessage = `
7121
7240
  (Note: The file list is limited to a number of recently accessed files within your workspace and only includes local files on disk)`;
7122
7241
  return `
7123
7242
 
7124
7243
  Open files:
7125
7244
  ${fileList}
7126
- ${infoMessage2}`;
7245
+ ${infoMessage}`;
7127
7246
  }
7128
7247
  __name(formatFileList, "formatFileList");
7129
7248
  async function getIdeStatusMessageWithFiles(ideClient) {
@@ -8544,6 +8663,7 @@ init_esbuild_shims();
8544
8663
  var MAIN_MODEL_CONFIGURATION_HINT = "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model without arguments to choose from configured models.";
8545
8664
  var FAST_MODEL_CONFIGURATION_HINT = "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model --fast without a model to choose from configured models.";
8546
8665
  var VISION_MODEL_CONFIGURATION_HINT = "Configure an image-capable model in settings.modelProviders and ensure the required environment variables are set. Run /model --vision <model-id> to set it, or leave it unset to auto-pick a same-provider vision model.";
8666
+ var COMPACTION_MODEL_CONFIGURATION_HINT = "Configure models in settings.modelProviders and ensure the required environment variables are set. In interactive mode, run /auth to configure or switch providers, or run /model --compaction without a model to choose from configured models.";
8547
8667
  var IMAGE_MODEL_CONFIGURATION_HINT = "Configure a model with imageOnly: true, baseUrl, and envKey in settings.modelProviders. Run /model --image <model-id> to select it.";
8548
8668
  function parseScopeFlags(args) {
8549
8669
  let scopeOverride;
@@ -8611,7 +8731,7 @@ function formatUnavailableModelMessage(kind, modelName, authType, availableModel
8611
8731
  new Set(availableModels.map((model) => model.id))
8612
8732
  );
8613
8733
  const availableModelsLine = availableModelIds.length === 0 ? `No models are configured for auth type '${authType}'.` : `Available models for '${authType}': ${availableModelIds.join(", ")}.`;
8614
- const hint = kind === "Fast model" ? FAST_MODEL_CONFIGURATION_HINT : kind === "Vision model" ? VISION_MODEL_CONFIGURATION_HINT : kind === "Image model" ? IMAGE_MODEL_CONFIGURATION_HINT : MAIN_MODEL_CONFIGURATION_HINT;
8734
+ const hint = kind === "Fast model" ? FAST_MODEL_CONFIGURATION_HINT : kind === "Vision model" ? VISION_MODEL_CONFIGURATION_HINT : kind === "Compaction model" ? COMPACTION_MODEL_CONFIGURATION_HINT : kind === "Image model" ? IMAGE_MODEL_CONFIGURATION_HINT : MAIN_MODEL_CONFIGURATION_HINT;
8615
8735
  return `${kind} '${modelName}' is not available for auth type '${authType}'.
8616
8736
  ${availableModelsLine}
8617
8737
  ` + hint;
@@ -8645,6 +8765,15 @@ function formatUnavailableVisionModelMessage(modelName, availableModels) {
8645
8765
  );
8646
8766
  }
8647
8767
  __name(formatUnavailableVisionModelMessage, "formatUnavailableVisionModelMessage");
8768
+ function formatUnavailableCompactionModelMessage(modelName, availableModels) {
8769
+ return formatUnavailableAuxModelMessage(
8770
+ "Compaction model",
8771
+ modelName,
8772
+ availableModels,
8773
+ COMPACTION_MODEL_CONFIGURATION_HINT
8774
+ );
8775
+ }
8776
+ __name(formatUnavailableCompactionModelMessage, "formatUnavailableCompactionModelMessage");
8648
8777
  function formatUnavailableImageModelMessage(modelName, availableModels) {
8649
8778
  return formatUnavailableAuxModelMessage(
8650
8779
  "Image model",
@@ -8708,9 +8837,10 @@ function getAvailableModelIds(context, mode = "main") {
8708
8837
  const availableModels = models.filter((m) => {
8709
8838
  if (mode === "image")
8710
8839
  return m.imageOnly === true && !m.fastOnly && !m.voiceOnly;
8711
- if (mode === "fast") return !m.voiceOnly && !m.imageOnly;
8712
- if (mode === "voice") return !m.fastOnly && !m.imageOnly;
8713
- return !m.fastOnly && !m.voiceOnly && !m.imageOnly;
8840
+ if (mode === "vision") return !m.fastOnly && !m.voiceOnly && !m.imageOnly;
8841
+ if (mode === "fast") return !m.voiceOnly && !m.imageOnly && !m.visionOnly;
8842
+ if (mode === "voice") return !m.fastOnly && !m.imageOnly && !m.visionOnly;
8843
+ return !m.fastOnly && !m.voiceOnly && !m.imageOnly && !m.visionOnly;
8714
8844
  });
8715
8845
  return availableModels.map((model) => model.id);
8716
8846
  }
@@ -8720,10 +8850,10 @@ var modelCommand = {
8720
8850
  completionPriority: 100,
8721
8851
  get description() {
8722
8852
  return t(
8723
- "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion)."
8853
+ "Switch the model for this session (--fast for suggestion model, --voice for voice transcription model, --vision for the vision bridge model, --compaction for chat compression model, --image for the image generation model, --project to persist to project settings, --global to persist to user settings, [model-id] to switch immediately, or [model-id] [prompt] to run a one-off prompt on another model; the inline prompt is sent verbatim without @file expansion)."
8724
8854
  );
8725
8855
  },
8726
- argumentHint: "[--fast|--voice|--vision|--image] [--project|--global] [<model-id>] | <model-id> <prompt>",
8856
+ argumentHint: "[--fast|--voice|--vision|--compaction|--image] [--project|--global] [<model-id>] | <model-id> <prompt>",
8727
8857
  kind: "built-in" /* BUILT_IN */,
8728
8858
  supportedModes: ["interactive", "non_interactive", "acp"],
8729
8859
  completion: /* @__PURE__ */ __name(async (context, partialArg) => {
@@ -8745,6 +8875,12 @@ var modelCommand = {
8745
8875
  "Set the image-capable model used to transcribe images for a text-only main model"
8746
8876
  )
8747
8877
  },
8878
+ {
8879
+ value: "--compaction",
8880
+ description: t(
8881
+ "Set the model used for chat compression (auto-compaction)"
8882
+ )
8883
+ },
8748
8884
  {
8749
8885
  value: "--image",
8750
8886
  description: t("Set the model used to generate images")
@@ -8768,10 +8904,12 @@ var modelCommand = {
8768
8904
  const trimmed = partialArg.trim();
8769
8905
  if (trimmed) {
8770
8906
  let mode = "main";
8771
- const modelPrefix = trimmed.replace(/(?:^|\s)--fast(?:\s|$)/, " ").replace(/(?:^|\s)--voice(?:\s|$)/, " ").replace(/(?:^|\s)--vision(?:\s|$)/, " ").replace(/(?:^|\s)--image(?:\s|$)/, " ").replace(/(?:^|\s)--project(?:\s|$)/, " ").replace(/(?:^|\s)--global(?:\s|$)/, " ").trim();
8907
+ const modelPrefix = trimmed.replace(/(?:^|\s)--fast(?:\s|$)/, " ").replace(/(?:^|\s)--voice(?:\s|$)/, " ").replace(/(?:^|\s)--vision(?:\s|$)/, " ").replace(/(?:^|\s)--compaction(?:\s|$)/, " ").replace(/(?:^|\s)--image(?:\s|$)/, " ").replace(/(?:^|\s)--project(?:\s|$)/, " ").replace(/(?:^|\s)--global(?:\s|$)/, " ").trim();
8772
8908
  if (/(?:^|\s)--fast(?:\s|$)/.test(trimmed)) mode = "fast";
8773
8909
  else if (/(?:^|\s)--voice(?:\s|$)/.test(trimmed)) mode = "voice";
8774
8910
  else if (/(?:^|\s)--vision(?:\s|$)/.test(trimmed)) mode = "vision";
8911
+ else if (/(?:^|\s)--compaction(?:\s|$)/.test(trimmed))
8912
+ mode = "compaction";
8775
8913
  else if (/(?:^|\s)--image(?:\s|$)/.test(trimmed)) mode = "image";
8776
8914
  return getAvailableModelIds(context, mode).filter(
8777
8915
  (id) => id.startsWith(modelPrefix)
@@ -8844,7 +8982,7 @@ var modelCommand = {
8844
8982
  content: t("Settings service not available.")
8845
8983
  };
8846
8984
  }
8847
- const availableModels = config.getAllConfiguredModels().filter((m) => !m.fastOnly && !m.imageOnly);
8985
+ const availableModels = config.getAllConfiguredModels().filter((m) => !m.fastOnly && !m.imageOnly && !m.visionOnly);
8848
8986
  const matches = availableModels.filter((model) => model.id === modelName2);
8849
8987
  if (matches.length === 0) {
8850
8988
  return {
@@ -8929,7 +9067,7 @@ Use "/model --fast <model-id>" to set fast model.`
8929
9067
  content: formatUnavailableFastModelMessage(modelName2, [])
8930
9068
  };
8931
9069
  }
8932
- const availableModels = (selector.authType ? config.getAvailableModelsForAuthType(selector.authType) : config.getAllConfiguredModels()).filter((m) => !m.voiceOnly && !m.imageOnly);
9070
+ const availableModels = (selector.authType ? config.getAvailableModelsForAuthType(selector.authType) : config.getAllConfiguredModels()).filter((m) => !m.voiceOnly && !m.imageOnly && !m.visionOnly);
8933
9071
  if (!availableModels.some((model) => model.id === selector.modelId)) {
8934
9072
  return {
8935
9073
  type: "message",
@@ -9040,6 +9178,90 @@ ${formatNonVisionModelWarning(modelName2)}`;
9040
9178
  content: t("Vision Model") + ": " + modelName2 + scopeSuffix + visionWarning
9041
9179
  };
9042
9180
  }
9181
+ const isCompactionModelCommand = args === "--compaction" || args.startsWith("--compaction ");
9182
+ if (isCompactionModelCommand) {
9183
+ const modelName2 = args.replace("--compaction", "").trim();
9184
+ if (!modelName2 || modelName2 === "clear") {
9185
+ if (modelName2 === "clear") {
9186
+ if (!settings) {
9187
+ return {
9188
+ type: "message",
9189
+ messageType: "error",
9190
+ content: t("Settings service not available.")
9191
+ };
9192
+ }
9193
+ persistSetting(settings, "compactionModel", void 0, scopeOverride);
9194
+ config.setCompactionModel(void 0);
9195
+ return {
9196
+ type: "message",
9197
+ messageType: "info",
9198
+ content: t("Compaction model override cleared") + scopeSuffix
9199
+ };
9200
+ }
9201
+ if (context.executionMode !== "interactive") {
9202
+ const compactionModel = context.services.settings?.merged?.compactionModel?.trim() || t("not set (falls back to the main model)");
9203
+ return {
9204
+ type: "message",
9205
+ messageType: "info",
9206
+ content: t(
9207
+ 'Current compaction model: {{compactionModel}}\nUse "/model --compaction <model-id>" to set compaction model, or "/model --compaction clear" to clear the override.',
9208
+ { compactionModel }
9209
+ )
9210
+ };
9211
+ }
9212
+ return {
9213
+ type: "dialog",
9214
+ dialog: "compaction-model",
9215
+ ...persistScopeSpread(scopeOverride)
9216
+ };
9217
+ }
9218
+ if (!settings) {
9219
+ return {
9220
+ type: "message",
9221
+ messageType: "error",
9222
+ content: t("Settings service not available.")
9223
+ };
9224
+ }
9225
+ const selector = (() => {
9226
+ try {
9227
+ return resolveModelId(modelName2);
9228
+ } catch {
9229
+ return void 0;
9230
+ }
9231
+ })();
9232
+ if (!selector) {
9233
+ return {
9234
+ type: "message",
9235
+ messageType: "error",
9236
+ content: formatUnavailableCompactionModelMessage(modelName2, [])
9237
+ };
9238
+ }
9239
+ const availableModels = (selector.authType ? config.getAvailableModelsForAuthType(selector.authType) : config.getAllConfiguredModels()).filter(
9240
+ (m) => !m.fastOnly && !m.voiceOnly && !m.imageOnly && !m.visionOnly
9241
+ );
9242
+ if (!availableModels.some((model) => model.id === selector.modelId)) {
9243
+ return {
9244
+ type: "message",
9245
+ messageType: "error",
9246
+ content: selector.authType ? formatUnavailableModelMessage(
9247
+ "Compaction model",
9248
+ selector.modelId,
9249
+ selector.authType,
9250
+ availableModels
9251
+ ) : formatUnavailableCompactionModelMessage(
9252
+ modelName2,
9253
+ availableModels
9254
+ )
9255
+ };
9256
+ }
9257
+ persistSetting(settings, "compactionModel", modelName2, scopeOverride);
9258
+ config.setCompactionModel(modelName2);
9259
+ return {
9260
+ type: "message",
9261
+ messageType: "info",
9262
+ content: t("Compaction Model") + ": " + modelName2 + scopeSuffix
9263
+ };
9264
+ }
9043
9265
  const isImageModelCommand = args === "--image" || args.startsWith("--image ");
9044
9266
  if (isImageModelCommand) {
9045
9267
  const modelName2 = args.replace("--image", "").trim();
@@ -13528,10 +13750,10 @@ var updateCommand = {
13528
13750
  { performStandaloneUpdate },
13529
13751
  installationInfo
13530
13752
  ] = await Promise.all([
13531
- import("./updateCheck-ZHVXDAIH.js"),
13532
- import("./processUtils-E4QGQVWW.js"),
13533
- import("./standalone-update-TMLT6LVJ.js"),
13534
- import("./installationInfo-R7FXPQN5.js")
13753
+ import("./updateCheck-7EG4BLBH.js"),
13754
+ import("./processUtils-2CSVE5BW.js"),
13755
+ import("./standalone-update-E4V5V7WT.js"),
13756
+ import("./installationInfo-2LIKCNVX.js")
13535
13757
  ]);
13536
13758
  const { formatUpdateInstructions, getInstallationInfo: getInstallationInfo2 } = installationInfo;
13537
13759
  const settings = context.services.settings;
@@ -13824,6 +14046,8 @@ var BundledSkillLoader = class {
13824
14046
  );
13825
14047
  let body = skill.body;
13826
14048
  const modelId = this.config?.getModel()?.trim() || "";
14049
+ const cliVersion = this.config?.getCliVersion()?.trim() || "unknown";
14050
+ body = body.replaceAll("{{cliVersion}}", cliVersion);
13827
14051
  if (body.includes("{{model}}") || body.includes("YOUR_MODEL_ID")) {
13828
14052
  body = body.replaceAll("{{model}}", modelId);
13829
14053
  body = body.replaceAll("YOUR_MODEL_ID", modelId);
@@ -15124,6 +15348,12 @@ function handleCommandResult(result, outputHistoryItems) {
15124
15348
  reason: "Action confirmation is not supported in non-interactive mode. Commands requiring confirmation cannot be executed.",
15125
15349
  originalType: "confirm_action"
15126
15350
  };
15351
+ case "goal_control":
15352
+ return {
15353
+ type: "unsupported",
15354
+ reason: "Goal control is not supported in non-interactive mode yet.",
15355
+ originalType: "goal_control"
15356
+ };
15127
15357
  default: {
15128
15358
  const _exhaustive = result;
15129
15359
  return {