@qwen-code/qwen-code 0.19.3 → 0.19.4

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 (305) hide show
  1. package/bundled/loop/SKILL.md +22 -3
  2. package/bundled/loop/SKILL.test.ts +20 -0
  3. package/bundled/loop/autonomous-loop.test.ts +59 -0
  4. package/bundled/loop/autonomous-loop.ts +102 -0
  5. package/bundled/loop/loop-task-file.test.ts +1064 -0
  6. package/bundled/loop/loop-task-file.ts +404 -0
  7. package/bundled/loop/loop-tick-resolver.test.ts +906 -0
  8. package/bundled/loop/loop-tick-resolver.ts +416 -0
  9. package/bundled/qc-helper/SKILL.md +12 -5
  10. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  11. package/bundled/qc-helper/docs/configuration/settings.md +40 -26
  12. package/bundled/qc-helper/docs/features/approval-mode.md +3 -0
  13. package/bundled/qc-helper/docs/features/auto-mode.md +40 -0
  14. package/bundled/qc-helper/docs/features/channels/overview.md +81 -18
  15. package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
  16. package/bundled/qc-helper/docs/features/code-review.md +17 -61
  17. package/bundled/qc-helper/docs/features/commands.md +6 -6
  18. package/bundled/qc-helper/docs/features/hooks.md +6 -1
  19. package/bundled/qc-helper/docs/features/mcp.md +3 -1
  20. package/bundled/qc-helper/docs/features/memory.md +1 -1
  21. package/bundled/qc-helper/docs/features/scheduled-tasks.md +10 -0
  22. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  23. package/bundled/qc-helper/docs/ide-integration/ide-integration.md +4 -4
  24. package/bundled/qc-helper/docs/qwen-serve.md +19 -0
  25. package/bundled/qc-helper/docs/support/troubleshooting.md +6 -0
  26. package/bundled/review/DESIGN.md +21 -26
  27. package/bundled/review/SKILL.md +45 -129
  28. package/chunks/MaxSizedBox-ERTNFI22.js +68 -0
  29. package/chunks/{StandaloneSessionPicker-Z52JTYST.js → StandaloneSessionPicker-Y5NGRLRY.js} +48 -42
  30. package/chunks/{acpAgent-7RZUOWOM.js → acpAgent-UMN6OYTR.js} +1319 -361
  31. package/chunks/{agent-4FG7WTHJ.js → agent-56DZU4ZU.js} +30 -25
  32. package/chunks/agent-headless-SR7N2IJG.js +61 -0
  33. package/chunks/{anthropicContentGenerator-PFITVL7Y.js → anthropicContentGenerator-5OZFO6WQ.js} +11 -8
  34. package/chunks/{artifact-tool-D2X7G3C3.js → artifact-tool-JVZMHA4B.js} +3 -3
  35. package/chunks/{askUserQuestion-UGETICJQ.js → askUserQuestion-CMJZ2F3D.js} +2 -2
  36. package/chunks/bridge-AUHNFOUS.js +72 -0
  37. package/chunks/{ca-IUFWESZL.js → ca-RYOETBUW.js} +9 -9
  38. package/chunks/channel-worker-supervisor-A74FV522.js +308 -0
  39. package/chunks/{chunk-T4T2FNV4.js → chunk-2X2JUE47.js} +2 -2
  40. package/chunks/{chunk-BX5YO7UW.js → chunk-4VZH35PN.js} +540 -370
  41. package/chunks/{chunk-M2U5NM24.js → chunk-54YZOP7P.js} +309 -72
  42. package/chunks/chunk-5P5XGNYH.js +93 -0
  43. package/chunks/{chunk-QWFNTRH4.js → chunk-6AQR7732.js} +1 -1
  44. package/chunks/{chunk-HZT4UCFB.js → chunk-6CIIP6OE.js} +4 -4
  45. package/chunks/{chunk-ADCIHOQZ.js → chunk-6TLY5W3B.js} +16 -8
  46. package/chunks/{chunk-BXSHL2SF.js → chunk-73H73ASU.js} +1 -1
  47. package/chunks/{chunk-3TV3HUWZ.js → chunk-75X2VLSH.js} +60 -30
  48. package/chunks/{chunk-6V4NZFUS.js → chunk-7KPI4LAI.js} +5 -5
  49. package/chunks/{chunk-PDE7CSDS.js → chunk-7VPC7D7O.js} +2 -2
  50. package/chunks/chunk-AHNXYU4O.js +24 -0
  51. package/chunks/{chunk-UX4SGCGN.js → chunk-AVQDCKNF.js} +96 -22
  52. package/chunks/{chunk-HYCC3XM3.js → chunk-B236XPGF.js} +1 -1
  53. package/chunks/{chunk-N4EJFBN5.js → chunk-B7KGXIPZ.js} +419 -262
  54. package/chunks/{chunk-YAINVQ3Q.js → chunk-BFG6OZN7.js} +17392 -16335
  55. package/chunks/{chunk-5DWXLGOM.js → chunk-BJBWRCSK.js} +1 -1
  56. package/chunks/{chunk-BTLJ2MF5.js → chunk-BNJLLAQ7.js} +3 -3
  57. package/chunks/{chunk-UYT3MWEB.js → chunk-BQNJBEUA.js} +16 -2
  58. package/chunks/{chunk-SKQZZVAV.js → chunk-BZHLWC6T.js} +2 -2
  59. package/chunks/{chunk-HPZTOP4I.js → chunk-C2IHHGBZ.js} +131 -21
  60. package/chunks/chunk-CG7SVARK.js +367 -0
  61. package/chunks/{chunk-CNLEDYE3.js → chunk-CS5XYDBO.js} +5 -5
  62. package/chunks/{chunk-O75BHFQW.js → chunk-CUGEBAKG.js} +2 -2
  63. package/chunks/{chunk-U3KSMM7G.js → chunk-D5KISTLW.js} +339 -383
  64. package/chunks/{chunk-STUWFKGD.js → chunk-DQ74W65K.js} +431 -535
  65. package/chunks/{chunk-VVLOGDB6.js → chunk-DX3TKXNT.js} +2 -2
  66. package/chunks/chunk-E5A7LHNN.js +51 -0
  67. package/chunks/{chunk-3PJXIDKI.js → chunk-E6US47KI.js} +3 -27
  68. package/chunks/chunk-EDAGQADF.js +21 -0
  69. package/chunks/{chunk-QBZ22PQX.js → chunk-EWALXUAD.js} +3 -1
  70. package/chunks/{chunk-4QK3O43S.js → chunk-FNLXLI4I.js} +4 -4
  71. package/chunks/{chunk-I2LYBGNI.js → chunk-FYKX6XOT.js} +1 -1
  72. package/chunks/{chunk-QLDPRILK.js → chunk-G7OQ3RFJ.js} +3 -3
  73. package/chunks/{chunk-R2BXK7SX.js → chunk-GHOTR7HL.js} +6 -1
  74. package/chunks/{chunk-L7OKCI7T.js → chunk-GICCHL2Q.js} +15 -1
  75. package/chunks/{chunk-KMGMKW5Q.js → chunk-GLPV75ES.js} +9 -3
  76. package/chunks/{chunk-LD2XBG6Z.js → chunk-GO6LNQXT.js} +1 -39
  77. package/chunks/chunk-HI55Z6PR.js +3523 -0
  78. package/chunks/{chunk-QNKBEJO2.js → chunk-HJDF3ZVU.js} +2776 -1289
  79. package/chunks/{chunk-JJXWTVSK.js → chunk-HRZB5CSC.js} +34 -1
  80. package/chunks/{chunk-I4H7PRWQ.js → chunk-HTWHAN44.js} +1 -1
  81. package/chunks/{chunk-EJYJYJZ2.js → chunk-IRJWHZWU.js} +3 -70
  82. package/chunks/{chunk-CKQA6AWF.js → chunk-J3F7X3LW.js} +1 -1
  83. package/chunks/{chunk-QI7GOGJR.js → chunk-KKQWC6WS.js} +1 -1
  84. package/chunks/{chunk-VBZ452JT.js → chunk-KVPFPC4J.js} +494 -114
  85. package/chunks/{chunk-NDOC6M5S.js → chunk-L7QPM2YD.js} +2 -2
  86. package/chunks/{chunk-SLNKLLEO.js → chunk-L7VH7HQA.js} +12 -8
  87. package/chunks/{chunk-BVSVIN45.js → chunk-LKWAVAB5.js} +3 -3
  88. package/chunks/{chunk-ZP6UKOPB.js → chunk-LWGLBVWA.js} +1 -1
  89. package/chunks/{chunk-SBBN4BWR.js → chunk-MEQWZGK5.js} +1 -1
  90. package/chunks/{chunk-FKAVULLM.js → chunk-MKHC4BYZ.js} +58 -10
  91. package/chunks/{chunk-UFLGERMB.js → chunk-MNDTD5E5.js} +178 -124
  92. package/chunks/{chunk-RD6YJJJ6.js → chunk-MOUXUCXQ.js} +1 -1
  93. package/chunks/{chunk-EDMZZFDU.js → chunk-MVZXZWGT.js} +905 -795
  94. package/chunks/chunk-MX2YXRER.js +44 -0
  95. package/chunks/{chunk-JVHEVCAU.js → chunk-ND25GXEU.js} +23 -6
  96. package/chunks/chunk-NIOPRZNN.js +27 -0
  97. package/chunks/{chunk-DDMOU62Q.js → chunk-NPQWQYU6.js} +1 -1
  98. package/chunks/{chunk-PR32FRT6.js → chunk-OAFUMTWW.js} +3 -3
  99. package/chunks/chunk-OJCECIJA.js +238 -0
  100. package/chunks/{chunk-GGBIN5K7.js → chunk-PIYV6COW.js} +1 -1
  101. package/chunks/{chunk-CF6BB3LT.js → chunk-PPFWEV7G.js} +10 -1
  102. package/chunks/{chunk-4LUZAKMK.js → chunk-Q7VHIRDD.js} +1 -1
  103. package/chunks/{chunk-ODLIHNOY.js → chunk-QAFQLTXG.js} +1 -1
  104. package/chunks/{chunk-Y6YMRS3U.js → chunk-QMIND2AS.js} +3 -3
  105. package/chunks/{chunk-XJYUPHRC.js → chunk-QOMAHFYI.js} +3 -3
  106. package/chunks/{chunk-J37FGIOA.js → chunk-QXPI7FEC.js} +38 -4
  107. package/chunks/chunk-RM3PGSGL.js +66 -0
  108. package/chunks/chunk-RNBYOUGV.js +42 -0
  109. package/chunks/chunk-S5EQPDTM.js +91 -0
  110. package/chunks/chunk-SEZC2725.js +36 -0
  111. package/chunks/{chunk-FNJ7BDPH.js → chunk-SFN4TEHY.js} +10 -7
  112. package/chunks/{chunk-O2VBQ3Y2.js → chunk-SJBIFVD2.js} +2 -2
  113. package/chunks/chunk-SYCJMSIJ.js +82 -0
  114. package/chunks/{chunk-JE5FVRPC.js → chunk-T22H4V4R.js} +48 -23
  115. package/chunks/{chunk-3227DZO4.js → chunk-T42ACHFI.js} +1 -1
  116. package/chunks/{chunk-UO5GVXQE.js → chunk-TENOUWY2.js} +3 -3
  117. package/chunks/{chunk-JOLIREYR.js → chunk-TOAUDIS7.js} +1 -1
  118. package/chunks/{chunk-J7FA27RO.js → chunk-TTFNVEO5.js} +3 -3
  119. package/chunks/{chunk-S7AKE7HL.js → chunk-UANCYOOQ.js} +63 -9
  120. package/chunks/{chunk-BUUQ5HPX.js → chunk-UQFP2FEF.js} +1 -1
  121. package/chunks/{chunk-R5OP2ATH.js → chunk-UQYOMM6J.js} +11 -11
  122. package/chunks/{chunk-J33ZR6OJ.js → chunk-UT5JU5DJ.js} +16 -16
  123. package/chunks/{chunk-QE6KJYLT.js → chunk-VKGG724L.js} +122 -25
  124. package/chunks/{chunk-SMXULRAN.js → chunk-VXGPYF7U.js} +1 -1
  125. package/chunks/{chunk-MNF6S5PR.js → chunk-W2ZOAX7F.js} +4 -4
  126. package/chunks/{chunk-GT2FGICD.js → chunk-W6X4FGWX.js} +1 -1
  127. package/chunks/{chunk-SMYQZVZ3.js → chunk-XCUFHOAD.js} +1 -1
  128. package/chunks/{chunk-K5XU6E4T.js → chunk-XKSCTXPK.js} +2 -2
  129. package/chunks/{chunk-FXKVLFFY.js → chunk-YBDZ63KI.js} +3 -3
  130. package/chunks/{chunk-BKXBARJZ.js → chunk-YPCPZSZB.js} +1 -1
  131. package/chunks/chunk-YTFBURQD.js +313 -0
  132. package/chunks/{chunk-NL4C3H6C.js → chunk-YXK4GPYO.js} +1 -1
  133. package/chunks/{chunk-F3ZYSEY6.js → chunk-ZJP5T7IA.js} +3 -3
  134. package/chunks/{chunk-RYLJU2DY.js → chunk-ZN5T4BHI.js} +1 -1
  135. package/chunks/{chunk-RRFZXMYP.js → chunk-ZXCVPMIK.js} +553 -138
  136. package/chunks/{computer-use-JGB36FDW.js → computer-use-VWN5HH6A.js} +33 -28
  137. package/chunks/contextCommand-DFFG5KDJ.js +66 -0
  138. package/chunks/{cron-create-SKEY55RG.js → cron-create-CSSWJ67I.js} +4 -4
  139. package/chunks/{cron-delete-I3NAT32Z.js → cron-delete-E56CFQ7A.js} +4 -4
  140. package/chunks/{cron-list-6XRRL6TH.js → cron-list-BKSINY6Y.js} +4 -4
  141. package/chunks/daemon-5T6IHWJV.js +8430 -0
  142. package/chunks/daemon-status-provider-V5UY7O7J.js +70 -0
  143. package/chunks/{de-EOW5PVHF.js → de-HB5NJXGB.js} +9 -9
  144. package/chunks/{dist-NHEYYB2B.js → dist-2HDL5SHQ.js} +2 -2
  145. package/chunks/{dist-663NZ6MI.js → dist-B7SSDVWT.js} +116 -11
  146. package/chunks/{dist-PQPZ5Q4N.js → dist-BL3SL665.js} +20 -9
  147. package/chunks/{dist-J37VXPLD.js → dist-TAVAGZU6.js} +40 -15
  148. package/chunks/{dist-LB6OGPVM.js → dist-XBOVZ3R5.js} +26 -5
  149. package/chunks/{earlyInputCapture-44RISVVJ.js → earlyInputCapture-VVYU4FDO.js} +31 -26
  150. package/chunks/{edit-NN6GM5DT.js → edit-F35PTMBA.js} +35 -29
  151. package/chunks/{en-HPWEJBTR.js → en-FZREZFPO.js} +30 -10
  152. package/chunks/{enter-worktree-PB3O2C7D.js → enter-worktree-3DIW7EGJ.js} +30 -25
  153. package/chunks/{enterPlanMode-YQFNNSUA.js → enterPlanMode-QNXT77KP.js} +40 -25
  154. package/chunks/{errors-LS7XU5DZ.js → errors-M53YG76R.js} +32 -27
  155. package/chunks/{exit-worktree-E2FTNSBK.js → exit-worktree-BSDWNWHZ.js} +30 -25
  156. package/chunks/{exitPlanMode-GLYK2BUB.js → exitPlanMode-EL7AY327.js} +54 -33
  157. package/chunks/{fast-path-WQ6M7LI7.js → fast-path-DUCSMUFW.js} +30 -13
  158. package/chunks/{fast-path-settings-OAGU3X5H.js → fast-path-settings-UQLRFDQP.js} +2 -2
  159. package/chunks/{fr-BN5NKSAC.js → fr-XY3NQFCM.js} +9 -9
  160. package/chunks/{gemini-2YFLVA2M.js → gemini-F3IERB37.js} +80 -67
  161. package/chunks/{geminiContentGenerator-XV6SV6CD.js → geminiContentGenerator-6OULAKFQ.js} +4 -4
  162. package/chunks/{glob-2H6CDDMK.js → glob-ZMLFTD4T.js} +30 -25
  163. package/chunks/{grep-VXIUXM3C.js → grep-H5X66EI7.js} +30 -25
  164. package/chunks/initializer-LEOT2OLH.js +66 -0
  165. package/chunks/{ja-7DEUB2TS.js → ja-J7YAG7SA.js} +9 -9
  166. package/chunks/{keychain-token-storage-YLMDLKXT.js → keychain-token-storage-GPAKRDKQ.js} +2 -2
  167. package/chunks/list-M3DKXML6.js +70 -0
  168. package/chunks/loadedSettingsAdapter-OKMQFGGG.js +65 -0
  169. package/chunks/{loop-wakeup-CITGGQHA.js → loop-wakeup-FPBAVVPR.js} +5 -5
  170. package/chunks/{ls-R5WP4BGZ.js → ls-UGWQXPTY.js} +4 -4
  171. package/chunks/{lsp-GSICJMMW.js → lsp-24WV7NXB.js} +2 -2
  172. package/chunks/{monitor-HKLRS2HQ.js → monitor-ARL5P45R.js} +32 -26
  173. package/chunks/nonInteractiveCli-NUVLF3YR.js +108 -0
  174. package/chunks/{notebook-edit-Y6SKSGTT.js → notebook-edit-ANTZ2DDY.js} +31 -26
  175. package/chunks/{openaiContentGenerator-J7G2FYJT.js → openaiContentGenerator-TFGMKGHN.js} +15 -13
  176. package/chunks/pidfile-AWTL4C63.js +72 -0
  177. package/chunks/{pt-TNZRNLQB.js → pt-6RTAA6SS.js} +9 -9
  178. package/chunks/{qwenContentGenerator-5XIEM5GV.js → qwenContentGenerator-6QWAYTWS.js} +32 -27
  179. package/chunks/{qwenOAuth2-AG3PFFLZ.js → qwenOAuth2-LWLA6MQG.js} +5 -4
  180. package/chunks/{read-file-J7D552ZJ.js → read-file-EJY73XQ3.js} +11 -10
  181. package/chunks/{read-mcp-resource-DQQW7H7T.js → read-mcp-resource-NCBTPP7X.js} +2 -2
  182. package/chunks/ripGrep-HC4SA6CQ.js +59 -0
  183. package/chunks/{ru-NIAUBKCN.js → ru-AUBGJ2C4.js} +9 -9
  184. package/chunks/{run-qwen-serve-SGEEVMXD.js → run-qwen-serve-AGLZ642J.js} +454 -94
  185. package/chunks/{scheduler-7CQI3S4Q.js → scheduler-TURO7NGY.js} +30 -25
  186. package/chunks/{send-message-EE4TWKVU.js → send-message-3S2NYS3O.js} +6 -4
  187. package/chunks/serve-5DAMOIDW.js +70 -0
  188. package/chunks/{server-4QMUWXPW.js → server-4AGEK2HC.js} +4098 -1173
  189. package/chunks/{session-NRO7UFOY.js → session-7ZOQUC4Y.js} +204 -64
  190. package/chunks/{settings-SGWRDQSC.js → settings-DR4V6L5Y.js} +34 -29
  191. package/chunks/{shell-62ANGIHL.js → shell-H5WFKUXH.js} +30 -25
  192. package/chunks/{skill-VWAQAWW6.js → skill-ANHU5ZCR.js} +13 -12
  193. package/chunks/spawnChannel-VN5LJV7Z.js +68 -0
  194. package/chunks/{src-KUV5J5Q2.js → src-OVZLTVVM.js} +114 -30
  195. package/chunks/{startInteractiveUI-6EYJN3JV.js → startInteractiveUI-OA22V32P.js} +15970 -15430
  196. package/chunks/{syntheticOutput-T5YHQ6S2.js → syntheticOutput-SV7GBHZ5.js} +3 -3
  197. package/chunks/{task-create-BLY7RHXX.js → task-create-W2H2UJCH.js} +8 -7
  198. package/chunks/{task-list-3QUYNVYR.js → task-list-THBOPV4G.js} +7 -6
  199. package/chunks/{task-stop-U4RATK2V.js → task-stop-33FVCNCJ.js} +2 -2
  200. package/chunks/{task-update-U54O7KJX.js → task-update-LVFQLXEI.js} +8 -7
  201. package/chunks/{team-create-LPOGCPM7.js → team-create-OYL5CAQO.js} +30 -25
  202. package/chunks/{team-delete-LKBYPASD.js → team-delete-NTUQ25UY.js} +7 -6
  203. package/chunks/theme-manager-XCMPF2SI.js +63 -0
  204. package/chunks/{todoWrite-OYXKTVYN.js → todoWrite-SEPO2RI3.js} +4 -4
  205. package/chunks/{tool-search-YPUFJ3ZQ.js → tool-search-YXW55X6Z.js} +36 -11
  206. package/chunks/{trustedFolders-5B24TMEA.js → trustedFolders-TEPGM5YL.js} +31 -26
  207. package/chunks/{validateNonInterActiveAuth-BTDTYOVT.js → validateNonInterActiveAuth-OQIS7WUE.js} +65 -55
  208. package/chunks/{web-fetch-EEB5LZYU.js → web-fetch-OE7LHURA.js} +5 -4
  209. package/chunks/{workflow-LAWIW5LI.js → workflow-RTUWORAP.js} +67 -39
  210. package/chunks/workspace-providers-status-DM2XANVB.js +67 -0
  211. package/chunks/workspace-service-VKBI2KZD.js +77 -0
  212. package/chunks/{write-file-PCV226DJ.js → write-file-WGALQ53L.js} +35 -30
  213. package/chunks/{zh-TW-TR3XYGE5.js → zh-TW-6GIKXEAN.js} +30 -10
  214. package/chunks/{zh-5EUYXASN.js → zh-V3B4TFWL.js} +30 -10
  215. package/cli.js +6 -6
  216. package/locales/ca.js +13 -13
  217. package/locales/de.js +13 -13
  218. package/locales/en.js +49 -15
  219. package/locales/fr.js +13 -14
  220. package/locales/ja.js +13 -14
  221. package/locales/pt.js +13 -13
  222. package/locales/ru.js +13 -13
  223. package/locales/zh-TW.js +47 -14
  224. package/locales/zh.js +47 -14
  225. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  226. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  227. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  228. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  229. package/package.json +15 -6
  230. package/patches/chrome-devtools-mcp+1.4.0.patch +31 -0
  231. package/postinstall.js +50 -0
  232. package/web-shell/assets/{arc-DA7r8Ueo.js → arc-Det5Ccum.js} +1 -1
  233. package/web-shell/assets/{architectureDiagram-3BPJPVTR-ZDUxPtZ2.js → architectureDiagram-3BPJPVTR-DqNWVFpl.js} +1 -1
  234. package/web-shell/assets/{blockDiagram-GPEHLZMM-vrtOf1kJ.js → blockDiagram-GPEHLZMM-CYl7tYBi.js} +1 -1
  235. package/web-shell/assets/{c4Diagram-AAUBKEIU-BHFjzIi4.js → c4Diagram-AAUBKEIU-DaAEi0NQ.js} +1 -1
  236. package/web-shell/assets/channel-Bm0bFauD.js +1 -0
  237. package/web-shell/assets/{chunk-2J33WTMH-mdeQVz59.js → chunk-2J33WTMH-Df2CDEE2.js} +1 -1
  238. package/web-shell/assets/{chunk-4BX2VUAB-BkKMlwBX.js → chunk-4BX2VUAB-DNBFcyL2.js} +1 -1
  239. package/web-shell/assets/{chunk-55IACEB6-B7bnXNfu.js → chunk-55IACEB6-BKjF-0HI.js} +1 -1
  240. package/web-shell/assets/{chunk-727SXJPM-DGz8Mm6i.js → chunk-727SXJPM-DYwAwfIM.js} +1 -1
  241. package/web-shell/assets/{chunk-AQP2D5EJ-BQAydUNk.js → chunk-AQP2D5EJ-C6FswLqy.js} +1 -1
  242. package/web-shell/assets/{chunk-FMBD7UC4-GHr2LN_p.js → chunk-FMBD7UC4-DRWAcZSY.js} +1 -1
  243. package/web-shell/assets/{chunk-ND2GUHAM-7R91lnUx.js → chunk-ND2GUHAM-AoL16mNR.js} +1 -1
  244. package/web-shell/assets/{chunk-QZHKN3VN-aTJD3lSQ.js → chunk-QZHKN3VN-a8PtLMck.js} +1 -1
  245. package/web-shell/assets/classDiagram-4FO5ZUOK--NgUfb55.js +1 -0
  246. package/web-shell/assets/classDiagram-v2-Q7XG4LA2--NgUfb55.js +1 -0
  247. package/web-shell/assets/{cose-bilkent-S5V4N54A-BTf8t1RL.js → cose-bilkent-S5V4N54A-C4Aeu5qf.js} +1 -1
  248. package/web-shell/assets/{dagre-BM42HDAG-_sgp3WuA.js → dagre-BM42HDAG-BOulamjo.js} +1 -1
  249. package/web-shell/assets/{diagram-2AECGRRQ-CROtRy1w.js → diagram-2AECGRRQ-D1wt2ykO.js} +1 -1
  250. package/web-shell/assets/{diagram-5GNKFQAL-BqGRzwSc.js → diagram-5GNKFQAL-BRseus-O.js} +1 -1
  251. package/web-shell/assets/{diagram-KO2AKTUF-CMrcEtA7.js → diagram-KO2AKTUF-XSMkNzpZ.js} +1 -1
  252. package/web-shell/assets/{diagram-LMA3HP47-BRydGNW5.js → diagram-LMA3HP47-21KNLqoi.js} +1 -1
  253. package/web-shell/assets/{diagram-OG6HWLK6-D0ilgNjV.js → diagram-OG6HWLK6-DnUI8F5G.js} +1 -1
  254. package/web-shell/assets/{erDiagram-TEJ5UH35-2lnQeJUM.js → erDiagram-TEJ5UH35-BVSOMuM2.js} +1 -1
  255. package/web-shell/assets/{flowDiagram-I6XJVG4X-C_ZMdQiC.js → flowDiagram-I6XJVG4X-fYtDPJsW.js} +1 -1
  256. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Dw9V_Ny0.js → ganttDiagram-6RSMTGT7-CmRXosW_.js} +1 -1
  257. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-HDXI-F1B.js → gitGraphDiagram-PVQCEYII-DPrmySxO.js} +1 -1
  258. package/web-shell/assets/index-BpKnmyFV.js +717 -0
  259. package/web-shell/assets/index-fLrtxpOG.css +5 -0
  260. package/web-shell/assets/{infoDiagram-5YYISTIA-CuB8Ebua.js → infoDiagram-5YYISTIA-x3VbEuCV.js} +1 -1
  261. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-D_tyhVwh.js → ishikawaDiagram-YF4QCWOH-SmitHRMC.js} +1 -1
  262. package/web-shell/assets/{journeyDiagram-JHISSGLW-CgCwJQNU.js → journeyDiagram-JHISSGLW-BxvA551S.js} +1 -1
  263. package/web-shell/assets/{kanban-definition-UN3LZRKU-PZUtcbPx.js → kanban-definition-UN3LZRKU-DNHC16jY.js} +1 -1
  264. package/web-shell/assets/{linear-CZqRdJIU.js → linear-CQ6irBL9.js} +1 -1
  265. package/web-shell/assets/{mermaid.core-CPW_4UEF.js → mermaid.core-DtB6NO1e.js} +72 -72
  266. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D_Y75ID7.js → mindmap-definition-RKZ34NQL-QKMAgV2v.js} +1 -1
  267. package/web-shell/assets/{pieDiagram-4H26LBE5-Q4dTyLeF.js → pieDiagram-4H26LBE5-bvb6dGn6.js} +1 -1
  268. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-ckw329Ft.js → quadrantDiagram-W4KKPZXB-DLgdlG4D.js} +1 -1
  269. package/web-shell/assets/{requirementDiagram-4Y6WPE33-DbVDm4It.js → requirementDiagram-4Y6WPE33-2M9YH4GF.js} +1 -1
  270. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-CHuZ_ecH.js → sankeyDiagram-5OEKKPKP-DzwfclTH.js} +1 -1
  271. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-DU2YSpq-.js → sequenceDiagram-3UESZ5HK-BvPmTuy2.js} +1 -1
  272. package/web-shell/assets/{stateDiagram-AJRCARHV-CA9PEBUo.js → stateDiagram-AJRCARHV-BjwUmrJF.js} +1 -1
  273. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-C4L8zXeL.js +1 -0
  274. package/web-shell/assets/{timeline-definition-PNZ67QCA-Bhlo4WVc.js → timeline-definition-PNZ67QCA-CXzS6qqz.js} +1 -1
  275. package/web-shell/assets/{vennDiagram-CIIHVFJN-6xtPLsyl.js → vennDiagram-CIIHVFJN-yRSolF5B.js} +1 -1
  276. package/web-shell/assets/{wardley-L42UT6IY-3eozmXPf.js → wardley-L42UT6IY-ClLJjHPG.js} +1 -1
  277. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-BOn6hKss.js → wardleyDiagram-YWT4CUSO-VIa6t2p2.js} +1 -1
  278. package/web-shell/assets/{xychartDiagram-2RQKCTM6-BsP4-I_y.js → xychartDiagram-2RQKCTM6-CtmrkezW.js} +1 -1
  279. package/web-shell/index.html +18 -2
  280. package/chunks/MaxSizedBox-QNF3EIGU.js +0 -63
  281. package/chunks/agent-headless-RQ5BTX3G.js +0 -56
  282. package/chunks/bridge-JL2PMCIW.js +0 -66
  283. package/chunks/chunk-5GOVVXEV.js +0 -73
  284. package/chunks/chunk-BC3C4F3Q.js +0 -40
  285. package/chunks/chunk-BW4KCQFD.js +0 -1103
  286. package/chunks/chunk-RKIZXJMB.js +0 -13
  287. package/chunks/contextCommand-WYU6OQ2F.js +0 -61
  288. package/chunks/daemon-status-provider-HH2EC5FI.js +0 -65
  289. package/chunks/headlessSafetyWarnings-TBE35GJ4.js +0 -55
  290. package/chunks/initializer-2Y7SLOKV.js +0 -61
  291. package/chunks/list-ZAFHZ7OS.js +0 -65
  292. package/chunks/loadedSettingsAdapter-6KJXD6M3.js +0 -60
  293. package/chunks/nonInteractiveCli-5W4GIZQM.js +0 -96
  294. package/chunks/ripGrep-IEIFIWP4.js +0 -54
  295. package/chunks/serve-V6GVZR6U.js +0 -65
  296. package/chunks/spawnChannel-3VHW5EPY.js +0 -63
  297. package/chunks/theme-manager-LYLGAERF.js +0 -58
  298. package/chunks/workspace-providers-status-PIAFVYHA.js +0 -62
  299. package/chunks/workspace-service-YAIOD4HG.js +0 -71
  300. package/web-shell/assets/channel-iRo68q4Q.js +0 -1
  301. package/web-shell/assets/classDiagram-4FO5ZUOK-iHF24a8X.js +0 -1
  302. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-iHF24a8X.js +0 -1
  303. package/web-shell/assets/index-CHmzAWys.css +0 -5
  304. package/web-shell/assets/index-w6GTOHh1.js +0 -713
  305. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-t1LRI0oY.js +0 -1
@@ -11,7 +11,7 @@ import {
11
11
  init_esbuild_shims();
12
12
  var HEADLESS_YOLO_NO_SANDBOX_WARNING = "Warning: running headless with --yolo / approval-mode=yolo and no sandbox. All tool calls (shell, write, edit) auto-execute at this process's privilege level. Enable a sandbox via --sandbox / QWEN_SANDBOX, or set QWEN_CODE_SUPPRESS_YOLO_WARNING=1 to silence this notice.";
13
13
  function getHeadlessYoloSafetyWarning(config, env = process.env) {
14
- if (config.getApprovalMode() !== "yolo" /* YOLO */) return null;
14
+ if (config.getApprovalMode() !== "yolo") return null;
15
15
  if (config.getSandbox()) return null;
16
16
  if (env["SANDBOX"]) return null;
17
17
  if (isTruthyEnv(env["QWEN_CODE_SUPPRESS_YOLO_WARNING"])) return null;
@@ -5,14 +5,14 @@ import {
5
5
  isTranscribableVoiceModel,
6
6
  readVoiceLanguage,
7
7
  resolveVoiceTransport
8
- } from "./chunk-4LUZAKMK.js";
8
+ } from "./chunk-Q7VHIRDD.js";
9
9
  import {
10
10
  resolvePath
11
- } from "./chunk-BC3C4F3Q.js";
11
+ } from "./chunk-NIOPRZNN.js";
12
12
  import {
13
13
  createDebugLogger,
14
14
  isSubpath
15
- } from "./chunk-UX4SGCGN.js";
15
+ } from "./chunk-AVQDCKNF.js";
16
16
  import {
17
17
  init_esbuild_shims
18
18
  } from "./chunk-A4BMJM77.js";
@@ -4,14 +4,14 @@ import {
4
4
  resolveModelConfig,
5
5
  resolveProviderProtocol,
6
6
  stripRuntimeSnapshotPrefix
7
- } from "./chunk-YAINVQ3Q.js";
7
+ } from "./chunk-BFG6OZN7.js";
8
8
  import {
9
9
  external_exports
10
10
  } from "./chunk-K5PGHDBN.js";
11
11
  import {
12
12
  AuthType,
13
13
  MODEL_GENERATION_CONFIG_FIELDS
14
- } from "./chunk-QNKBEJO2.js";
14
+ } from "./chunk-HJDF3ZVU.js";
15
15
  import {
16
16
  init_esbuild_shims
17
17
  } from "./chunk-A4BMJM77.js";
@@ -103,6 +103,19 @@ function parseAcpModelOption(input) {
103
103
  return { modelId: trimmed };
104
104
  }
105
105
  __name(parseAcpModelOption, "parseAcpModelOption");
106
+ function isInlineModelOverrideAllowed(config, modelId) {
107
+ const contentGeneratorConfig = config.getContentGeneratorConfig();
108
+ const authType = contentGeneratorConfig?.authType;
109
+ if (!authType) {
110
+ return false;
111
+ }
112
+ const activeBaseUrl = contentGeneratorConfig.baseUrl;
113
+ const activeEnvKey = contentGeneratorConfig.apiKeyEnvKey;
114
+ return config.getAvailableModelsForAuthType(authType).filter((m) => !m.fastOnly && !m.voiceOnly).some(
115
+ (m) => m.id === modelId && (m.baseUrl ?? void 0) === (activeBaseUrl ?? void 0) && (m.envKey ?? void 0) === (activeEnvKey ?? void 0)
116
+ );
117
+ }
118
+ __name(isInlineModelOverrideAllowed, "isInlineModelOverrideAllowed");
106
119
 
107
120
  // packages/cli/src/utils/modelConfigUtils.ts
108
121
  init_esbuild_shims();
@@ -335,6 +348,7 @@ export {
335
348
  sanitizeProviderBaseUrl,
336
349
  parseAcpBaseModelId,
337
350
  parseAcpModelOption,
351
+ isInlineModelOverrideAllowed,
338
352
  collectProviderModelsForProtocol,
339
353
  getAuthTypeFromEnv,
340
354
  resolveCliGenerationConfig
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  atomicWriteFileSync
5
- } from "./chunk-3227DZO4.js";
5
+ } from "./chunk-T42ACHFI.js";
6
6
  import {
7
7
  Storage,
8
8
  createDebugLogger
9
- } from "./chunk-UX4SGCGN.js";
9
+ } from "./chunk-AVQDCKNF.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-A4BMJM77.js";
@@ -2,26 +2,28 @@
2
2
  "use strict";
3
3
  import {
4
4
  handleAtCommand
5
- } from "./chunk-UFLGERMB.js";
5
+ } from "./chunk-MNDTD5E5.js";
6
6
  import {
7
7
  JsonOutputAdapter
8
- } from "./chunk-GGBIN5K7.js";
8
+ } from "./chunk-PIYV6COW.js";
9
9
  import {
10
10
  StreamJsonOutputAdapter
11
- } from "./chunk-PDE7CSDS.js";
11
+ } from "./chunk-7VPC7D7O.js";
12
12
  import {
13
+ buildInitialSystemReminders,
13
14
  buildSystemMessage,
14
15
  computeUsageFromMetrics,
15
16
  createAgentToolProgressHandler,
16
17
  createToolProgressHandler,
17
18
  extractPartsFromUserMessage,
18
19
  handleSlashCommand,
20
+ insertAfterFunctionResponses,
19
21
  isSlashCommand,
20
22
  normalizePartList
21
- } from "./chunk-RRFZXMYP.js";
23
+ } from "./chunk-ZXCVPMIK.js";
22
24
  import {
23
25
  RunBudgetEnforcer
24
- } from "./chunk-EDMZZFDU.js";
26
+ } from "./chunk-MVZXZWGT.js";
25
27
  import {
26
28
  AlreadyReportedError,
27
29
  handleBudgetExceededError,
@@ -29,28 +31,37 @@ import {
29
31
  handleError,
30
32
  handleMaxTurnsExceededError,
31
33
  handleToolError
32
- } from "./chunk-PR32FRT6.js";
34
+ } from "./chunk-OAFUMTWW.js";
33
35
  import {
36
+ isInlineModelOverrideAllowed
37
+ } from "./chunk-BQNJBEUA.js";
38
+ import {
39
+ ORPHAN_TOOL_USE_REPAIR_REASON,
40
+ buildSyntheticToolResponseParts,
34
41
  createDuplicateProviderToolCallResponse,
42
+ detectAutonomousSentinel,
43
+ detectLoopSentinel,
44
+ detectTurnInterruption,
35
45
  executeToolCall,
36
46
  findRepeatedDuplicateProviderToolCall,
47
+ isSystemReminderContent,
37
48
  markDuplicateProviderToolCallResponseSent,
38
49
  parseAndFormatApiError,
39
50
  promptIdContext,
40
51
  restoreWorktreeContext
41
- } from "./chunk-YAINVQ3Q.js";
52
+ } from "./chunk-BFG6OZN7.js";
42
53
  import {
43
54
  isTelemetrySdkInitialized,
44
55
  shutdownTelemetry,
45
56
  uiTelemetryService
46
- } from "./chunk-QNKBEJO2.js";
57
+ } from "./chunk-HJDF3ZVU.js";
47
58
  import {
48
59
  ToolNames
49
- } from "./chunk-BX5YO7UW.js";
60
+ } from "./chunk-4VZH35PN.js";
50
61
  import {
51
62
  FatalInputError,
52
63
  createDebugLogger
53
- } from "./chunk-UX4SGCGN.js";
64
+ } from "./chunk-AVQDCKNF.js";
54
65
  import {
55
66
  init_esbuild_shims
56
67
  } from "./chunk-A4BMJM77.js";
@@ -62,6 +73,10 @@ import {
62
73
  init_esbuild_shims();
63
74
  var debugLogger = createDebugLogger("NON_INTERACTIVE_CLI");
64
75
  var STRUCTURED_SHUTDOWN_HOLDBACK_MS = 500;
76
+ function isHeadlessLoopSentinel(prompt) {
77
+ return detectLoopSentinel(prompt) !== null || detectAutonomousSentinel(prompt) !== null;
78
+ }
79
+ __name(isHeadlessLoopSentinel, "isHeadlessLoopSentinel");
65
80
  var SUPPRESSED_OUTPUT_SUCCESS = "Skipped: this turn's structured_output contract took precedence as the terminal output.";
66
81
  var SUPPRESSED_OUTPUT_RETRY = `${SUPPRESSED_OUTPUT_SUCCESS} Re-issue this call in a separate turn if needed.`;
67
82
  function suppressedOutputBody(structuredCaptured) {
@@ -74,18 +89,35 @@ var LOOP_TYPE_LABELS = {
74
89
  ["repetitive_thoughts" /* REPETITIVE_THOUGHTS */]: "the model repeated the same reasoning thought",
75
90
  ["read_file_loop" /* READ_FILE_LOOP */]: "the model spent too many consecutive calls reading files without making progress",
76
91
  ["action_stagnation" /* ACTION_STAGNATION */]: "the model kept calling the same tool without making progress",
92
+ ["shell_command_stagnation" /* SHELL_COMMAND_STAGNATION */]: "the model repeated similar shell inspection commands without making progress",
77
93
  ["global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */]: "the model repeated the same tool call across the turn, even when not back-to-back",
78
94
  ["alternating_tool_call_pattern" /* ALTERNATING_TOOL_CALL_PATTERN */]: "the model alternated between the same two tool calls in a repeating pattern",
79
- ["turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */]: "the model exceeded the maximum number of tool calls allowed in a single turn"
95
+ ["turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */]: "the model exceeded the maximum number of tool calls allowed in a single turn",
96
+ ["invalid_tool_params_stagnation" /* INVALID_TOOL_PARAMS_STAGNATION */]: "the model repeatedly sent invalid tool parameters without correcting them"
80
97
  };
81
98
  function formatLoopDetectedMessage(loopType) {
82
99
  const reason = loopType ? LOOP_TYPE_LABELS[loopType] : void 0;
83
100
  const detail = reason ? ` (${loopType}: ${reason})` : "";
84
- const isAlwaysOn = loopType === "turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */ || loopType === "consecutive_identical_tool_calls" /* CONSECUTIVE_IDENTICAL_TOOL_CALLS */ || loopType === "global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */;
101
+ const isAlwaysOn = loopType === "turn_tool_call_cap" /* TURN_TOOL_CALL_CAP */ || loopType === "consecutive_identical_tool_calls" /* CONSECUTIVE_IDENTICAL_TOOL_CALLS */ || loopType === "shell_command_stagnation" /* SHELL_COMMAND_STAGNATION */ || loopType === "global_tool_call_duplicate" /* GLOBAL_TOOL_CALL_DUPLICATE */ || loopType === "invalid_tool_params_stagnation" /* INVALID_TOOL_PARAMS_STAGNATION */;
85
102
  const hint = isAlwaysOn ? " This is an always-on guard and cannot be disabled via `model.skipLoopDetection`." : " Set the `model.skipLoopDetection` setting to true to disable.";
86
103
  return `Loop detection halted the run${detail}.${hint}`;
87
104
  }
88
105
  __name(formatLoopDetectedMessage, "formatLoopDetectedMessage");
106
+ function skipHeadlessLoopSentinel(scheduler, job) {
107
+ if (!isHeadlessLoopSentinel(job.prompt)) {
108
+ return false;
109
+ }
110
+ if (job.recurring && !job.durable) {
111
+ debugLogger.debug(
112
+ "skipHeadlessLoopSentinel: cleaning up recurring session loop.md cron in headless mode",
113
+ { jobId: job.id }
114
+ );
115
+ void scheduler.delete(job.id).catch(() => {
116
+ });
117
+ }
118
+ return true;
119
+ }
120
+ __name(skipHeadlessLoopSentinel, "skipHeadlessLoopSentinel");
89
121
  function emitLoopDetectedMessage(config, loopType) {
90
122
  const message = formatLoopDetectedMessage(loopType);
91
123
  if (config.getOutputFormat() !== "text" /* TEXT */) {
@@ -134,6 +166,10 @@ async function runNonInteractive(config, settings, input, prompt_id, options = {
134
166
  } else {
135
167
  adapter = new JsonOutputAdapter(config);
136
168
  }
169
+ const emitResult = /* @__PURE__ */ __name((result) => {
170
+ adapter.emitResult(result);
171
+ options.onResultEmitted?.();
172
+ }, "emitResult");
137
173
  const sessionId = config.getSessionId();
138
174
  const permissionMode = config.getApprovalMode();
139
175
  let turnCount = 0;
@@ -249,6 +285,7 @@ ${reason}
249
285
  manager.getEventEmitter().on("teammate_approval_request" /* TEAMMATE_APPROVAL_REQUEST */, approvalListener);
250
286
  }
251
287
  }, "onTeamManagerChangeHandler");
288
+ let continueSendType = null;
252
289
  try {
253
290
  process.stdout.on("error", stdoutErrorHandler);
254
291
  process.on("SIGINT", shutdownHandler);
@@ -267,6 +304,50 @@ ${reason}
267
304
  let initialPartList = extractPartsFromUserMessage(
268
305
  options.userMessage
269
306
  );
307
+ let inlineModelOverride;
308
+ if (options.continueInterrupted) {
309
+ const detection = detectTurnInterruption(
310
+ geminiClient.getChat().getHistory()
311
+ );
312
+ debugLogger.info("[runNonInteractive] continueInterrupted detection", {
313
+ kind: detection.kind,
314
+ partsCount: detection.kind === "interrupted_prompt" ? detection.parts.length : 0,
315
+ danglingCallCount: detection.kind === "interrupted_turn" ? detection.danglingCalls.length : 0
316
+ });
317
+ if (detection.kind === "none") {
318
+ await emitNonInteractiveFinalMessage({
319
+ message: "No interrupted turn to continue.",
320
+ isError: false,
321
+ adapter,
322
+ config,
323
+ startTimeMs: startTime
324
+ });
325
+ return 0;
326
+ }
327
+ if (detection.kind === "interrupted_prompt") {
328
+ initialPartList = detection.parts;
329
+ continueSendType = "retry" /* Retry */;
330
+ } else {
331
+ initialPartList = buildSyntheticToolResponseParts(
332
+ detection.danglingCalls,
333
+ ORPHAN_TOOL_USE_REPAIR_REASON
334
+ );
335
+ continueSendType = "toolResult" /* ToolResult */;
336
+ }
337
+ const reminderParts = buildInitialSystemReminders(config);
338
+ if (reminderParts.length > 0 && initialPartList) {
339
+ const continuationParts = normalizePartList(initialPartList);
340
+ const hasSystemReminderPart = continuationParts.some(
341
+ (part) => isSystemReminderContent({ role: "user", parts: [part] })
342
+ );
343
+ if (!hasSystemReminderPart) {
344
+ initialPartList = insertAfterFunctionResponses(
345
+ continuationParts,
346
+ reminderParts
347
+ );
348
+ }
349
+ }
350
+ }
270
351
  if (!initialPartList) {
271
352
  let slashHandled = false;
272
353
  if (isSlashCommand(input)) {
@@ -279,6 +360,19 @@ ${reason}
279
360
  switch (slashCommandResult.type) {
280
361
  case "submit_prompt":
281
362
  initialPartList = slashCommandResult.content;
363
+ if (slashCommandResult.modelOverride !== void 0 && isInlineModelOverrideAllowed(
364
+ config,
365
+ slashCommandResult.modelOverride
366
+ )) {
367
+ inlineModelOverride = slashCommandResult.modelOverride;
368
+ debugLogger.debug(
369
+ `[runNonInteractive] inline model override captured: ${inlineModelOverride}`
370
+ );
371
+ } else if (slashCommandResult.modelOverride !== void 0) {
372
+ debugLogger.warn(
373
+ `[runNonInteractive] ignoring model override '${slashCommandResult.modelOverride}': not a model on the active provider`
374
+ );
375
+ }
282
376
  slashHandled = true;
283
377
  break;
284
378
  case "message": {
@@ -345,13 +439,13 @@ ${text}
345
439
  };
346
440
  return Array.isArray(existing) ? [reminderPart, ...existing] : [reminderPart, existing];
347
441
  }, "withReminder");
348
- const startupNotice = config.consumePendingStartupWorktreeNotice();
442
+ const startupNotice = options.continueInterrupted ? null : config.consumePendingStartupWorktreeNotice();
349
443
  if (startupNotice) {
350
444
  initialPartList = withReminder(initialPartList, startupNotice);
351
445
  adapter.emitSystemMessage("worktree_started", {
352
446
  notice: startupNotice
353
447
  });
354
- } else if (config.getResumedSessionData()) {
448
+ } else if (!options.continueInterrupted && config.getResumedSessionData()) {
355
449
  try {
356
450
  const sessionPath = config.getSessionService().getWorktreeSessionPath(sessionId);
357
451
  const restored = await restoreWorktreeContext(sessionPath);
@@ -436,7 +530,13 @@ ${text}
436
530
  }
437
531
  let isFirstTurn = true;
438
532
  let hasUnsentToolResponse = false;
439
- let modelOverride;
533
+ let modelOverride = inlineModelOverride;
534
+ const inlineModelOverrideActive = inlineModelOverride !== void 0;
535
+ if (inlineModelOverrideActive) {
536
+ debugLogger.debug(
537
+ `[runNonInteractive] inline model override active for turn: ${inlineModelOverride}`
538
+ );
539
+ }
440
540
  let structuredSubmission = void 0;
441
541
  let plainTextPreview = "";
442
542
  const PLAIN_TEXT_PREVIEW_LIMIT = 200;
@@ -453,7 +553,7 @@ ${text}
453
553
  const metrics = uiTelemetryService.getMetrics();
454
554
  const usage = computeUsageFromMetrics(metrics);
455
555
  const stats = outputFormat === "json" /* JSON */ ? uiTelemetryService.getMetrics() : void 0;
456
- adapter.emitResult({
556
+ emitResult({
457
557
  isError: false,
458
558
  durationMs: Date.now() - startTime,
459
559
  apiDurationMs: totalApiDurationMs,
@@ -677,7 +777,7 @@ ${text}
677
777
  }
678
778
  let sendType;
679
779
  if (isFirstTurn) {
680
- sendType = options.sendMessageType ?? "userQuery" /* UserQuery */;
780
+ sendType = continueSendType ?? options.sendMessageType ?? "userQuery" /* UserQuery */;
681
781
  } else if (isTeammateTurn) {
682
782
  sendType = "teammate" /* Teammate */;
683
783
  } else {
@@ -741,7 +841,9 @@ ${text}
741
841
  responseParts: toolResponseParts,
742
842
  repeatedDuplicateProviderToolCall
743
843
  } = await processToolCallBatch(toolCallRequests, (override) => {
744
- modelOverride = override;
844
+ if (!inlineModelOverrideActive) {
845
+ modelOverride = override;
846
+ }
745
847
  });
746
848
  if (structuredSubmission !== void 0) {
747
849
  return emitStructuredSuccess();
@@ -922,6 +1024,9 @@ ${text}
922
1024
  }, "drainLocalQueue");
923
1025
  const scheduler = !config.isCronEnabled() ? null : config.getCronScheduler();
924
1026
  if (scheduler) {
1027
+ scheduler.setSkipDurableFire(
1028
+ (job) => isHeadlessLoopSentinel(job.prompt)
1029
+ );
925
1030
  await scheduler.enableDurable(config.getSessionId()).catch((err) => {
926
1031
  debugLogger.warn(
927
1032
  `Durable cron init failed \u2014 persistent tasks will not fire in this run: ${err}`
@@ -964,6 +1069,10 @@ ${text}
964
1069
  reject(err);
965
1070
  }, "onDrainError");
966
1071
  scheduler.start((job) => {
1072
+ if (skipHeadlessLoopSentinel(scheduler, job)) {
1073
+ checkCronDone();
1074
+ return;
1075
+ }
967
1076
  const label = job.prompt.slice(0, 40);
968
1077
  localQueue.push({
969
1078
  displayText: `${job.cronExpr === "@wakeup" ? "Loop" : "Cron"}: ${label}`,
@@ -1005,7 +1114,7 @@ ${text}
1005
1114
  const previewSnippet = plainTextPreview.trim();
1006
1115
  const previewSuffix = previewSnippet ? ` Output preview (${plainTextPreview.length}${plainTextPreview.length >= PLAIN_TEXT_PREVIEW_LIMIT ? "+" : ""} chars): ${JSON.stringify(previewSnippet)}.` : "";
1007
1116
  const errorMessage = `Model produced plain text instead of calling the structured_output tool as required by --json-schema after ${turnCount} turn(s).` + previewSuffix;
1008
- adapter.emitResult({
1117
+ emitResult({
1009
1118
  isError: true,
1010
1119
  durationMs: Date.now() - startTime,
1011
1120
  apiDurationMs: totalApiDurationMs,
@@ -1016,7 +1125,7 @@ ${text}
1016
1125
  });
1017
1126
  return 1;
1018
1127
  }
1019
- adapter.emitResult({
1128
+ emitResult({
1020
1129
  isError: false,
1021
1130
  durationMs: Date.now() - startTime,
1022
1131
  apiDurationMs: totalApiDurationMs,
@@ -1043,7 +1152,7 @@ ${text}
1043
1152
  const skipAdapterEmit = outputFormat === "text" /* TEXT */ && isAlreadyReportedError;
1044
1153
  if (!skipAdapterEmit) {
1045
1154
  try {
1046
- adapter.emitResult({
1155
+ emitResult({
1047
1156
  isError: true,
1048
1157
  durationMs: Date.now() - startTime,
1049
1158
  apiDurationMs: totalApiDurationMs,
@@ -1095,6 +1204,7 @@ ${text}
1095
1204
  __name(runNonInteractive, "runNonInteractive");
1096
1205
 
1097
1206
  export {
1207
+ skipHeadlessLoopSentinel,
1098
1208
  runNonInteractive
1099
1209
  };
1100
1210
  /**