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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/bundled/dataviz/SKILL.md +50 -0
  2. package/bundled/dataviz/references/anti-patterns.md +12 -0
  3. package/bundled/dataviz/references/choosing-a-form.md +16 -0
  4. package/bundled/dataviz/references/palette.md +57 -0
  5. package/bundled/dataviz/scripts/validate_palette.js +328 -0
  6. package/bundled/loop/SKILL.md +1 -1
  7. package/bundled/qc-helper/docs/configuration/settings.md +14 -8
  8. package/bundled/qc-helper/docs/features/headless.md +2 -2
  9. package/bundled/qc-helper/docs/features/scheduled-tasks.md +4 -2
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +1 -1
  11. package/bundled/review/DESIGN.md +23 -0
  12. package/bundled/review/SKILL.md +65 -8
  13. package/chunks/{MaxSizedBox-5JV77KRA.js → MaxSizedBox-PRXTXIGC.js} +31 -30
  14. package/chunks/{StandaloneSessionPicker-MGUGB6PH.js → StandaloneSessionPicker-PV7BSC5D.js} +42 -41
  15. package/chunks/{acpAgent-4F36XM3X.js → acpAgent-F34HNAM3.js} +939 -424
  16. package/chunks/{agent-IWBUZI6A.js → agent-XSQDKLST.js} +26 -25
  17. package/chunks/{agent-headless-JUTICAYO.js → agent-headless-B63XCKWX.js} +26 -25
  18. package/chunks/{anthropicContentGenerator-WL3LJOUB.js → anthropicContentGenerator-INXXI4PW.js} +7 -7
  19. package/chunks/{artifact-tool-W76WC2JX.js → artifact-tool-H2TNPNP5.js} +16 -3
  20. package/chunks/{askUserQuestion-J3P6TH3V.js → askUserQuestion-MKL5ZTMC.js} +2 -2
  21. package/chunks/{bridge-DHZHQ4UV.js → bridge-NCZDJBRF.js} +34 -32
  22. package/chunks/{channel-worker-supervisor-EVPAYNZ5.js → channel-worker-supervisor-JUYQ5Z4R.js} +5 -5
  23. package/chunks/{chunk-AVQDCKNF.js → chunk-22MNNNXE.js} +4 -0
  24. package/chunks/chunk-3RW4AZJV.js +5063 -0
  25. package/chunks/chunk-3VJ7MT3N.js +111 -0
  26. package/chunks/{chunk-JKGCBO3O.js → chunk-3VRMGS3A.js} +4 -4
  27. package/chunks/{chunk-TN6RT6EJ.js → chunk-3WOJO5EJ.js} +16 -4
  28. package/chunks/{chunk-G7OQ3RFJ.js → chunk-42XGFRJS.js} +3 -3
  29. package/chunks/{chunk-MOUXUCXQ.js → chunk-4KJ2BPIT.js} +1 -1
  30. package/chunks/{chunk-PPFWEV7G.js → chunk-4RQIB5UZ.js} +62 -62
  31. package/chunks/{chunk-JJ6B3ZD3.js → chunk-544UZQBD.js} +3 -3
  32. package/chunks/{chunk-B236XPGF.js → chunk-5UDYETKK.js} +1 -1
  33. package/chunks/{chunk-7DMQRPC7.js → chunk-6BEOH4KK.js} +1 -1
  34. package/chunks/{chunk-CXBG27SF.js → chunk-6IAWPIQ6.js} +3 -2
  35. package/chunks/{chunk-MDBNFHIO.js → chunk-6MDY7FX3.js} +5 -5
  36. package/chunks/{chunk-RM3PGSGL.js → chunk-6SHO7WFF.js} +15 -2
  37. package/chunks/{chunk-YCU7QV7Q.js → chunk-73WGF3NW.js} +34 -1
  38. package/chunks/{chunk-T42ACHFI.js → chunk-7LTB54MK.js} +1 -1
  39. package/chunks/{chunk-SJVPSHXU.js → chunk-7U6J224Z.js} +132 -25
  40. package/chunks/{chunk-CSPSJU5R.js → chunk-7WLJPMWU.js} +17 -17
  41. package/chunks/{chunk-R6RI2HIC.js → chunk-ACD5DFUY.js} +41 -14
  42. package/chunks/{chunk-EWALXUAD.js → chunk-AGHU5VRK.js} +8 -0
  43. package/chunks/{chunk-GLPV75ES.js → chunk-AHNJGLFV.js} +2 -2
  44. package/chunks/{chunk-DRS2HTNT.js → chunk-AOAFX4PL.js} +5 -5
  45. package/chunks/{chunk-QHYITL6P.js → chunk-CK7IUFOB.js} +63 -22
  46. package/chunks/{chunk-RSBQS6M4.js → chunk-CODWJXQA.js} +1 -1
  47. package/chunks/{chunk-LWGLBVWA.js → chunk-CSOTA7KX.js} +1 -1
  48. package/chunks/{chunk-UJT42DB6.js → chunk-DFH4T5IQ.js} +6 -6
  49. package/chunks/{chunk-DX3TKXNT.js → chunk-DJACOX4C.js} +2 -2
  50. package/chunks/{chunk-KKQWC6WS.js → chunk-DNV4FSN5.js} +1 -1
  51. package/chunks/{chunk-YPCPZSZB.js → chunk-DT3B47QP.js} +1 -1
  52. package/chunks/{chunk-NIOPRZNN.js → chunk-E7KNELIZ.js} +1 -1
  53. package/chunks/{chunk-DG573EOO.js → chunk-FEJ2FZ3U.js} +1 -1
  54. package/chunks/{chunk-M5ITDKSM.js → chunk-FHGQFG2K.js} +1 -1
  55. package/chunks/{chunk-HISPEX42.js → chunk-FSXFNDTI.js} +7 -7
  56. package/chunks/{chunk-LHMZCIKL.js → chunk-FUW7YGJU.js} +3 -1
  57. package/chunks/{chunk-Y4UQT3PM.js → chunk-FV5SBNNC.js} +1 -1
  58. package/chunks/{chunk-YTFBURQD.js → chunk-GB6HDZIK.js} +10 -2
  59. package/chunks/{chunk-D5KISTLW.js → chunk-H6EMK6QK.js} +1 -1
  60. package/chunks/{chunk-2Z43HUXT.js → chunk-HLKG6CZN.js} +3 -2
  61. package/chunks/{chunk-VXGPYF7U.js → chunk-IFEWJXFS.js} +1 -1
  62. package/chunks/{chunk-TENOUWY2.js → chunk-IJRL2S3D.js} +3 -3
  63. package/chunks/{chunk-OQHLUA2Y.js → chunk-IL6ZEDZ2.js} +4 -4
  64. package/chunks/{chunk-2CAII5HD.js → chunk-J7XUJALJ.js} +1 -1
  65. package/chunks/chunk-JFFOH2XO.js +2472 -0
  66. package/chunks/{chunk-NNEJEBCF.js → chunk-K3FZXSTO.js} +95 -107
  67. package/chunks/{chunk-NDY7OENU.js → chunk-KB4ICCA5.js} +3 -3
  68. package/chunks/{chunk-MNOXKSM2.js → chunk-LFFF2SPV.js} +3 -3
  69. package/chunks/{chunk-J3ERRYYI.js → chunk-LTMDKOZC.js} +2 -2
  70. package/chunks/{chunk-R3UWLLRQ.js → chunk-M7AGQP5D.js} +1 -1
  71. package/chunks/{chunk-CBJE2PLG.js → chunk-MLB5AB2I.js} +4 -4
  72. package/chunks/{chunk-YHTNWGRR.js → chunk-MZ7BABX3.js} +1 -1
  73. package/chunks/{chunk-SJBIFVD2.js → chunk-NFE3DQ4R.js} +7 -3
  74. package/chunks/{chunk-BC4R5C5R.js → chunk-NLD2WKE3.js} +55 -12
  75. package/chunks/{chunk-ALX6BUYW.js → chunk-NUGPZXAZ.js} +35 -1
  76. package/chunks/{chunk-NSSVORTQ.js → chunk-NYKWPUAE.js} +17 -13
  77. package/chunks/{chunk-K4I4STSL.js → chunk-OGEJMKN5.js} +2 -2
  78. package/chunks/{chunk-HTWHAN44.js → chunk-PC4ZXHU2.js} +1 -1
  79. package/chunks/{chunk-2YH27UNF.js → chunk-QLBBV7C6.js} +1 -1
  80. package/chunks/chunk-QT7XKZT7.js +293 -0
  81. package/chunks/{chunk-NPQWQYU6.js → chunk-QYNNN7BK.js} +1 -1
  82. package/chunks/chunk-R4N3OALZ.js +5631 -0
  83. package/chunks/{chunk-G4M7FPNY.js → chunk-RB5GAQR6.js} +2 -2
  84. package/chunks/{chunk-SBMHB6N5.js → chunk-RPHMD5UC.js} +15 -15
  85. package/chunks/{chunk-CHY5C5T4.js → chunk-SJ2CTIYH.js} +185 -88
  86. package/chunks/chunk-SLQXGMYY.js +949 -0
  87. package/chunks/{chunk-BZHLWC6T.js → chunk-SUAKHHK7.js} +2 -2
  88. package/chunks/{chunk-IMAMNLY6.js → chunk-SWV4CVYG.js} +158 -3
  89. package/chunks/{chunk-XKSCTXPK.js → chunk-TDGF35EN.js} +4 -3
  90. package/chunks/{chunk-TOAUDIS7.js → chunk-TLWA7TPR.js} +6 -2
  91. package/chunks/{chunk-WALEWZ44.js → chunk-UVHL5TCO.js} +1 -1
  92. package/chunks/{chunk-ZISMVA6U.js → chunk-VDMM5LVR.js} +1566 -37
  93. package/chunks/{chunk-BPFJQGY7.js → chunk-VEB3NYSO.js} +164 -5
  94. package/chunks/{chunk-L7OJ3ZO3.js → chunk-VZ7HY3YU.js} +1 -1
  95. package/chunks/{chunk-6KPZJJ6U.js → chunk-W4I6PLEG.js} +131 -38
  96. package/chunks/{chunk-QOMAHFYI.js → chunk-W7EEOR7D.js} +3 -3
  97. package/chunks/{chunk-6QVQZAW6.js → chunk-WKP5QZOP.js} +1 -1
  98. package/chunks/{chunk-YXK4GPYO.js → chunk-WMPVYQ4P.js} +30 -1
  99. package/chunks/{chunk-DM4E337C.js → chunk-WNTS5A2R.js} +5 -5
  100. package/chunks/{chunk-6QTCOQX7.js → chunk-WOG7QWIT.js} +3086 -2635
  101. package/chunks/{chunk-UY2TCIZS.js → chunk-X265R5C6.js} +3 -3
  102. package/chunks/{chunk-LKWAVAB5.js → chunk-X2XNQQJI.js} +2 -2
  103. package/chunks/{chunk-MTNTVOJR.js → chunk-X3YGAX7V.js} +6 -3
  104. package/chunks/{chunk-EROWZQN7.js → chunk-XD3OLPII.js} +6 -6
  105. package/chunks/{chunk-RNGAT2Y2.js → chunk-YYL6HROQ.js} +1 -1
  106. package/chunks/{chunk-XKZXGIRM.js → chunk-YZ2LNTHO.js} +2 -2
  107. package/chunks/{chunk-Z7XNVNPM.js → chunk-YZ5ANQMR.js} +3 -3
  108. package/chunks/{chunk-4MCC4XHH.js → chunk-Z7EYROOJ.js} +3568 -5508
  109. package/chunks/{chunk-5B2WNM6V.js → chunk-ZI4MGBB5.js} +1 -1
  110. package/chunks/{chunk-WZ724G6K.js → chunk-ZPGE42V7.js} +6 -6
  111. package/chunks/{computer-use-ON3JQUHW.js → computer-use-5I2UHVNY.js} +26 -25
  112. package/chunks/{contextCommand-OGCG7W6N.js → contextCommand-3NWY7AJG.js} +28 -27
  113. package/chunks/{cron-create-6YTCOX6P.js → cron-create-O6ZHD3JN.js} +22 -7
  114. package/chunks/{cron-delete-E3NIFSUK.js → cron-delete-BFD5B2XX.js} +4 -4
  115. package/chunks/{cron-list-Q64MNQNE.js → cron-list-KI6FV4KN.js} +4 -4
  116. package/chunks/{daemon-EEB2RYOL.js → daemon-DRUMLVFP.js} +140 -0
  117. package/chunks/daemon-status-provider-A2DK3ZTO.js +74 -0
  118. package/chunks/{dist-AP5V4WYU.js → dist-AAO65DPC.js} +2 -2
  119. package/chunks/{dist-X4ZDE726.js → dist-ABQ7VWRR.js} +3 -3
  120. package/chunks/{dist-SNXOUPYS.js → dist-AW5ZYMUI.js} +2 -2
  121. package/chunks/{dist-Z57Q4YF5.js → dist-DN6M6TJ5.js} +525 -95
  122. package/chunks/{dist-IZP2VV4C.js → dist-JPSVN367.js} +2 -2
  123. package/chunks/{earlyInputCapture-DAFHSGVW.js → earlyInputCapture-5TMSSPQ5.js} +27 -26
  124. package/chunks/{edit-3QFNCSZH.js → edit-V4ITLSUD.js} +27 -26
  125. package/chunks/{en-M4EBUBNU.js → en-AXARKOWO.js} +2 -0
  126. package/chunks/{enter-worktree-62EQQMLD.js → enter-worktree-7ULPRMTJ.js} +26 -25
  127. package/chunks/{enterPlanMode-VUQSE4EG.js → enterPlanMode-YSHMLHJZ.js} +26 -25
  128. package/chunks/{errors-PW75PZXE.js → errors-TCUTD7NF.js} +28 -27
  129. package/chunks/{exit-worktree-VVNH7OVY.js → exit-worktree-JZDCKR6A.js} +26 -25
  130. package/chunks/{exitPlanMode-RUYRCYZW.js → exitPlanMode-GOQBN6SG.js} +26 -25
  131. package/chunks/{fast-path-TFRJRTTR.js → fast-path-F2HGAKO2.js} +3 -3
  132. package/chunks/{fast-path-settings-UQLRFDQP.js → fast-path-settings-RCRXH2JG.js} +2 -2
  133. package/chunks/{gemini-XW7ZDUVR.js → gemini-3M7ECKNW.js} +86 -80
  134. package/chunks/{geminiContentGenerator-MZDVHVZH.js → geminiContentGenerator-5EG3QEJM.js} +4 -4
  135. package/chunks/{glob-WAY2PUWA.js → glob-2DBDTLR4.js} +54 -29
  136. package/chunks/{grep-W6CBKSYC.js → grep-R27DLGWT.js} +26 -25
  137. package/chunks/{initializer-HK2XE6P2.js → initializer-OXB6BJZU.js} +32 -31
  138. package/chunks/{keychain-token-storage-GPAKRDKQ.js → keychain-token-storage-UJV5XP4Z.js} +2 -2
  139. package/chunks/{list-RVLIIKKL.js → list-HLCOEOSF.js} +33 -32
  140. package/chunks/{loadedSettingsAdapter-C63OUYZC.js → loadedSettingsAdapter-JHTVH3YO.js} +31 -30
  141. package/chunks/{loop-wakeup-G2EHBRGR.js → loop-wakeup-CUVIY2JY.js} +5 -5
  142. package/chunks/{ls-IDHUVSAG.js → ls-L654WOAT.js} +4 -4
  143. package/chunks/{lsp-FSRYXGFT.js → lsp-M35KE54Y.js} +2 -2
  144. package/chunks/mcp-2JWEFAIN.js +67 -0
  145. package/chunks/{monitor-FOG36ABM.js → monitor-5QKFZFDX.js} +26 -25
  146. package/chunks/nonInteractiveCli-W5W5PIHI.js +112 -0
  147. package/chunks/{notebook-edit-GC6NXRCX.js → notebook-edit-XAFBWORI.js} +27 -26
  148. package/chunks/{openaiContentGenerator-EXR3ZL3Z.js → openaiContentGenerator-NULJROYV.js} +13 -12
  149. package/chunks/{pidfile-FNZM2DDH.js → pidfile-3LT7PZSW.js} +27 -26
  150. package/chunks/{qwenContentGenerator-A7B6J4U7.js → qwenContentGenerator-KLSURVNH.js} +28 -27
  151. package/chunks/{qwenOAuth2-LWLA6MQG.js → qwenOAuth2-ZV7YLMND.js} +5 -5
  152. package/chunks/{read-file-6JL4ULMY.js → read-file-HDAM3RHJ.js} +8 -8
  153. package/chunks/{read-mcp-resource-PIJF24RO.js → read-mcp-resource-CNQHBSJM.js} +2 -2
  154. package/chunks/record-artifact-PP3LKHTS.js +343 -0
  155. package/chunks/{ripGrep-DIUGLJE5.js → ripGrep-W36NLR7M.js} +26 -25
  156. package/chunks/{run-qwen-serve-CME3AKM4.js → run-qwen-serve-IMI2CQB5.js} +72 -28
  157. package/chunks/{scheduler-L7F6GDDT.js → scheduler-I5NKE5UJ.js} +26 -25
  158. package/chunks/{send-message-33PYFMCT.js → send-message-OA6MV4EU.js} +3 -3
  159. package/chunks/{serve-SRCBOJGP.js → serve-JMHMOYBO.js} +33 -32
  160. package/chunks/{server-QSQ45QFR.js → server-QIYIN34N.js} +1358 -492
  161. package/chunks/{session-5DG6NXHZ.js → session-BLL6HB35.js} +68 -65
  162. package/chunks/{settings-3EEQI4MN.js → settings-ABECXCTY.js} +30 -29
  163. package/chunks/{shell-B7FNYF5S.js → shell-A2TQI3U4.js} +26 -25
  164. package/chunks/{skill-AAOGHD5O.js → skill-4GTWZZWR.js} +10 -10
  165. package/chunks/{spawnChannel-3CBN3ZLK.js → spawnChannel-DFUVGP53.js} +30 -29
  166. package/chunks/{src-T5A7P7FS.js → src-ZORBMUM7.js} +77 -43
  167. package/chunks/{startInteractiveUI-2FGEQ6AS.js → startInteractiveUI-FH5MVXUE.js} +449 -175
  168. package/chunks/{syntheticOutput-YOSWIHDJ.js → syntheticOutput-F7LSDCAR.js} +3 -3
  169. package/chunks/{task-create-NHS2NGB3.js → task-create-RPFZNB4B.js} +7 -7
  170. package/chunks/{task-list-5UIB564R.js → task-list-TGGJX7EA.js} +5 -5
  171. package/chunks/{task-stop-HGXZ2VZ3.js → task-stop-W7NGTMYQ.js} +2 -2
  172. package/chunks/{task-update-IYYWUILG.js → task-update-5WUG5MVQ.js} +7 -7
  173. package/chunks/{team-create-KDF6W6PV.js → team-create-F76QOR6H.js} +26 -25
  174. package/chunks/{team-delete-FEKJCU4P.js → team-delete-UHQQ2QQX.js} +5 -5
  175. package/chunks/{team-plan-approval-PSFKQX7M.js → team-plan-approval-OKM7YZC2.js} +26 -25
  176. package/chunks/{theme-manager-5XOA2AO7.js → theme-manager-6R7EVWHW.js} +27 -26
  177. package/chunks/{todoWrite-TKMVZ2HT.js → todoWrite-C4ZAMSR3.js} +4 -4
  178. package/chunks/{tool-search-LFRILZXC.js → tool-search-UWXDKI7D.js} +9 -9
  179. package/chunks/{trustedFolders-7HQY6T6X.js → trustedFolders-DHASVVUP.js} +27 -26
  180. package/chunks/{validateNonInterActiveAuth-UC27B7BA.js → validateNonInterActiveAuth-56J7MOOP.js} +62 -59
  181. package/chunks/version-NE2I4PBN.js +10 -0
  182. package/chunks/{web-fetch-J4PIW36Q.js → web-fetch-UYGMOHW4.js} +5 -5
  183. package/chunks/{workflow-KUTESS6L.js → workflow-HGF3URV3.js} +35 -27
  184. package/chunks/{workspace-providers-status-LJT5AQDS.js → workspace-providers-status-KXB2OZFQ.js} +33 -32
  185. package/chunks/{workspace-service-YOBYVDXH.js → workspace-service-NSTI55BC.js} +39 -38
  186. package/chunks/workspace-skills-status-X5S6JGQZ.js +69 -0
  187. package/chunks/{write-file-FJYBZUHP.js → write-file-HVKT5VTX.js} +27 -26
  188. package/chunks/yargs-B64EYTCF.js +10 -0
  189. package/chunks/{zh-SLZNSSZB.js → zh-RS3HZHFH.js} +2 -0
  190. package/chunks/{zh-TW-P53C2SL5.js → zh-TW-L5GRQ4S4.js} +2 -0
  191. package/cli-entry.js +81 -8
  192. package/cli.js +348 -55
  193. package/locales/en.js +2 -0
  194. package/locales/zh-TW.js +2 -0
  195. package/locales/zh.js +2 -0
  196. package/node_modules/@qwen-code/audio-capture/package.json +1 -1
  197. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-arm64/@qwen-code+audio-capture.node +0 -0
  198. package/node_modules/@qwen-code/audio-capture/prebuilds/darwin-x64/@qwen-code+audio-capture.node +0 -0
  199. package/node_modules/@qwen-code/audio-capture/prebuilds/win32-x64/@qwen-code+audio-capture.node +0 -0
  200. package/package.json +3 -3
  201. package/web-shell/assets/{arc-D_rAuMDd.js → arc-Csx4m4N0.js} +1 -1
  202. package/web-shell/assets/{architectureDiagram-3BPJPVTR-DUCzbHVo.js → architectureDiagram-3BPJPVTR-BEa0vCM7.js} +1 -1
  203. package/web-shell/assets/{blockDiagram-GPEHLZMM-BEEBt1LL.js → blockDiagram-GPEHLZMM-BPzbKnn3.js} +1 -1
  204. package/web-shell/assets/{c4Diagram-AAUBKEIU-5ZJ_DeFL.js → c4Diagram-AAUBKEIU-B8YO71yP.js} +1 -1
  205. package/web-shell/assets/channel-QU1XUuVe.js +1 -0
  206. package/web-shell/assets/{chunk-2J33WTMH-Cfw7EiLn.js → chunk-2J33WTMH-32XhwSHt.js} +1 -1
  207. package/web-shell/assets/{chunk-4BX2VUAB-FGuZNCZY.js → chunk-4BX2VUAB-Bmoyo6PS.js} +1 -1
  208. package/web-shell/assets/{chunk-55IACEB6-CaBwYPBF.js → chunk-55IACEB6-TwH6PFhs.js} +1 -1
  209. package/web-shell/assets/{chunk-727SXJPM-BlR04OFz.js → chunk-727SXJPM-RI_IVUtZ.js} +1 -1
  210. package/web-shell/assets/{chunk-AQP2D5EJ-D3_mYJH5.js → chunk-AQP2D5EJ-DH6GIAZD.js} +1 -1
  211. package/web-shell/assets/{chunk-FMBD7UC4-7D4q4SbB.js → chunk-FMBD7UC4-DeD3k3D5.js} +1 -1
  212. package/web-shell/assets/{chunk-ND2GUHAM-BjX_Iwmr.js → chunk-ND2GUHAM-BLPb8nv3.js} +1 -1
  213. package/web-shell/assets/{chunk-QZHKN3VN-C3Hz_ZQh.js → chunk-QZHKN3VN-PZpyglW1.js} +1 -1
  214. package/web-shell/assets/classDiagram-4FO5ZUOK-fv1EWO-L.js +1 -0
  215. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-fv1EWO-L.js +1 -0
  216. package/web-shell/assets/{cose-bilkent-S5V4N54A-Ax4UycaT.js → cose-bilkent-S5V4N54A-Jsd0yKfz.js} +1 -1
  217. package/web-shell/assets/{dagre-BM42HDAG-C6hmPtGt.js → dagre-BM42HDAG-B-zADciZ.js} +1 -1
  218. package/web-shell/assets/{diagram-2AECGRRQ-tXZnxjmw.js → diagram-2AECGRRQ-Cn6GDxoo.js} +1 -1
  219. package/web-shell/assets/{diagram-5GNKFQAL-99dwIzQG.js → diagram-5GNKFQAL-udLgyJxO.js} +1 -1
  220. package/web-shell/assets/{diagram-KO2AKTUF-Bqhn0-2s.js → diagram-KO2AKTUF-EcLpfzy3.js} +1 -1
  221. package/web-shell/assets/{diagram-LMA3HP47-DzThVSvo.js → diagram-LMA3HP47-D-YFbYsJ.js} +1 -1
  222. package/web-shell/assets/{diagram-OG6HWLK6-DPE8vjln.js → diagram-OG6HWLK6-C8oRUATa.js} +1 -1
  223. package/web-shell/assets/{erDiagram-TEJ5UH35-KzUKgQCV.js → erDiagram-TEJ5UH35-DPH5nStc.js} +1 -1
  224. package/web-shell/assets/{flowDiagram-I6XJVG4X-DBN-DXw5.js → flowDiagram-I6XJVG4X-CSOTwkAt.js} +1 -1
  225. package/web-shell/assets/{ganttDiagram-6RSMTGT7-DuBsP9u8.js → ganttDiagram-6RSMTGT7-D0L988t0.js} +1 -1
  226. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BjWHMyKR.js → gitGraphDiagram-PVQCEYII-B9Oo7gxS.js} +1 -1
  227. package/web-shell/assets/index-BYZZL5N7.css +5 -0
  228. package/web-shell/assets/index-C_oTyz0s.js +753 -0
  229. package/web-shell/assets/{infoDiagram-5YYISTIA-BVux0vP6.js → infoDiagram-5YYISTIA-Ddj4YN2P.js} +1 -1
  230. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-2qzw7f--.js → ishikawaDiagram-YF4QCWOH-CBjafcl7.js} +1 -1
  231. package/web-shell/assets/{journeyDiagram-JHISSGLW-Dnl65sxL.js → journeyDiagram-JHISSGLW-Bn3XD99u.js} +1 -1
  232. package/web-shell/assets/{kanban-definition-UN3LZRKU-BElSQYtY.js → kanban-definition-UN3LZRKU-D7PBPJmE.js} +1 -1
  233. package/web-shell/assets/{linear-BjoycSSY.js → linear-Bmfo22rZ.js} +1 -1
  234. package/web-shell/assets/{mermaid.core-xe6bvMRz.js → mermaid.core-xRkAI-EI.js} +5 -5
  235. package/web-shell/assets/{mindmap-definition-RKZ34NQL-D8DQgI4U.js → mindmap-definition-RKZ34NQL-B30zRinm.js} +1 -1
  236. package/web-shell/assets/{pieDiagram-4H26LBE5-Dwh7Gp7c.js → pieDiagram-4H26LBE5-DblnKR9Z.js} +1 -1
  237. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-BXKNBln2.js → quadrantDiagram-W4KKPZXB-COkHFKjF.js} +1 -1
  238. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BzaC3cIA.js → requirementDiagram-4Y6WPE33-DDU3MMyn.js} +1 -1
  239. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-DP2t7eZk.js → sankeyDiagram-5OEKKPKP-Dt4lqEYv.js} +1 -1
  240. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-XlFiWEYv.js → sequenceDiagram-3UESZ5HK-BRzby5gN.js} +1 -1
  241. package/web-shell/assets/{stateDiagram-AJRCARHV-CupgUMJO.js → stateDiagram-AJRCARHV-CylzByc3.js} +1 -1
  242. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-BKWZIKkM.js +1 -0
  243. package/web-shell/assets/{timeline-definition-PNZ67QCA-DstuGywa.js → timeline-definition-PNZ67QCA-BSzaNx6w.js} +1 -1
  244. package/web-shell/assets/{vennDiagram-CIIHVFJN-CnbNp6zu.js → vennDiagram-CIIHVFJN-BbzeKzCo.js} +1 -1
  245. package/web-shell/assets/{wardley-L42UT6IY-DnvoHq6R.js → wardley-L42UT6IY-BRJwCgE_.js} +1 -1
  246. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-Cz0xHEWB.js → wardleyDiagram-YWT4CUSO-BmAs0mJ-.js} +1 -1
  247. package/web-shell/assets/{xychartDiagram-2RQKCTM6-p36gfo88.js → xychartDiagram-2RQKCTM6-DqywSqVW.js} +1 -1
  248. package/web-shell/index.html +2 -2
  249. package/bundled/loop/SKILL.test.ts +0 -119
  250. package/bundled/loop/autonomous-loop.test.ts +0 -59
  251. package/bundled/loop/loop-task-file.test.ts +0 -1064
  252. package/bundled/loop/loop-tick-resolver.test.ts +0 -906
  253. package/chunks/chunk-EJ7BN3EN.js +0 -11396
  254. package/chunks/chunk-L7QPM2YD.js +0 -481
  255. package/chunks/daemon-status-provider-P72STMLB.js +0 -72
  256. package/chunks/nonInteractiveCli-6BYQSJTB.js +0 -109
  257. package/chunks/workspace-skills-status-ONEPXJV6.js +0 -62
  258. package/web-shell/assets/channel-B5ynH0q8.js +0 -1
  259. package/web-shell/assets/classDiagram-4FO5ZUOK-CK3ibywp.js +0 -1
  260. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CK3ibywp.js +0 -1
  261. package/web-shell/assets/index-9qfvU0_r.css +0 -5
  262. package/web-shell/assets/index-CWzDaQT5.js +0 -717
  263. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-By3E4QwN.js +0 -1
  264. package/chunks/{chunk-UFC57OYT.js → chunk-VRDMOSQS.js} +54 -54
@@ -3,26 +3,26 @@
3
3
  import {
4
4
  Colors,
5
5
  RowMouseController
6
- } from "./chunk-NDY7OENU.js";
6
+ } from "./chunk-KB4ICCA5.js";
7
7
  import {
8
8
  theme
9
- } from "./chunk-VXGPYF7U.js";
9
+ } from "./chunk-IFEWJXFS.js";
10
10
  import {
11
11
  Box_default,
12
12
  Text,
13
13
  require_jsx_runtime
14
- } from "./chunk-XKZXGIRM.js";
14
+ } from "./chunk-YZ2LNTHO.js";
15
15
  import {
16
16
  require_react
17
17
  } from "./chunk-KYMBIKIW.js";
18
18
  import {
19
19
  t
20
- } from "./chunk-DM4E337C.js";
20
+ } from "./chunk-WNTS5A2R.js";
21
21
  import {
22
22
  readManyFiles,
23
23
  shouldRunVisionBridge,
24
24
  stripTerminalControlSequences
25
- } from "./chunk-6QTCOQX7.js";
25
+ } from "./chunk-WOG7QWIT.js";
26
26
  import {
27
27
  emptyMcpResourceText,
28
28
  formatMcpResourceContents,
@@ -34,7 +34,7 @@ import {
34
34
  isNodeError,
35
35
  isSubpath,
36
36
  unescapePath
37
- } from "./chunk-AVQDCKNF.js";
37
+ } from "./chunk-22MNNNXE.js";
38
38
  import {
39
39
  init_esbuild_shims
40
40
  } from "./chunk-A4BMJM77.js";
@@ -435,6 +435,52 @@ function getExtensionSuggestions(config, pattern) {
435
435
  }
436
436
  __name(getExtensionSuggestions, "getExtensionSuggestions");
437
437
 
438
+ // packages/cli/src/utils/mcp-server-mention.ts
439
+ init_esbuild_shims();
440
+ var MCP_SERVER_REF_PREFIX = "mcp:";
441
+ function parseMcpServerRef(pathName) {
442
+ if (!pathName.startsWith(MCP_SERVER_REF_PREFIX)) return null;
443
+ const name = pathName.slice(MCP_SERVER_REF_PREFIX.length);
444
+ if (!name) return null;
445
+ return { name };
446
+ }
447
+ __name(parseMcpServerRef, "parseMcpServerRef");
448
+ function buildMcpServerRef(serverName) {
449
+ return `${MCP_SERVER_REF_PREFIX}${serverName}`;
450
+ }
451
+ __name(buildMcpServerRef, "buildMcpServerRef");
452
+ function matchMcpServerByRef(name, servers) {
453
+ const lower = name.toLowerCase();
454
+ const matchedName = Object.keys(servers).find(
455
+ (serverName) => serverName.toLowerCase() === lower
456
+ );
457
+ if (!matchedName) return void 0;
458
+ return { serverName: matchedName, server: servers[matchedName] };
459
+ }
460
+ __name(matchMcpServerByRef, "matchMcpServerByRef");
461
+ function buildMcpServerContextText(config, serverName) {
462
+ const lines = [
463
+ `--- MCP Server: ${serverName} ---`,
464
+ `The user explicitly mentioned this MCP server. Prefer using tools and resources from this server when relevant for this turn. This is advisory context, not a hard restriction.`
465
+ ];
466
+ const prompts = config.getPromptRegistry?.()?.getPromptsByServer(serverName) ?? [];
467
+ const resources = config.getResourceRegistry?.()?.getResourcesByServer(serverName) ?? [];
468
+ const details = [];
469
+ if (resources.length > 0) {
470
+ details.push(`- Resources: ${resources.length}`);
471
+ }
472
+ if (prompts.length > 0) {
473
+ details.push(`- Prompts: ${prompts.length}`);
474
+ }
475
+ if (details.length > 0) {
476
+ lines.push("Available capabilities from this MCP server:");
477
+ lines.push(...details);
478
+ }
479
+ lines.push(`--- End MCP Server: ${serverName} ---`);
480
+ return lines.join("\n");
481
+ }
482
+ __name(buildMcpServerContextText, "buildMcpServerContextText");
483
+
438
484
  // packages/cli/src/ui/hooks/atCommandProcessor.ts
439
485
  function parseAllAtCommands(query) {
440
486
  const parts = [];
@@ -521,6 +567,7 @@ async function resolveAtCommandQuery({
521
567
  };
522
568
  const mcpServerNames = new Set(Object.keys(config.getMcpServers() || {}));
523
569
  const mcpResourceRefs = [];
570
+ const mcpServerMentions = [];
524
571
  const activeExtensions = config.getActiveExtensions?.() ?? [];
525
572
  const extensionMentions = [];
526
573
  for (const atPathPart of atPathCommandParts) {
@@ -553,6 +600,30 @@ async function resolveAtCommandQuery({
553
600
  atPathToResolvedSpecMap.set(originalAtPath, pathName);
554
601
  continue;
555
602
  }
603
+ const mcpServerRef = parseMcpServerRef(pathName);
604
+ if (mcpServerRef) {
605
+ const matched = matchMcpServerByRef(
606
+ mcpServerRef.name,
607
+ config.getMcpServers() || {}
608
+ );
609
+ if (matched) {
610
+ if (!mcpServerMentions.some((m) => m.serverName === matched.serverName)) {
611
+ mcpServerMentions.push({
612
+ originalAtPath,
613
+ serverName: matched.serverName
614
+ });
615
+ }
616
+ atPathToResolvedSpecMap.set(
617
+ originalAtPath,
618
+ buildMcpServerRef(matched.serverName)
619
+ );
620
+ continue;
621
+ }
622
+ onDebugMessage(
623
+ `MCP server "${mcpServerRef.name}" not found among configured MCP servers. Available: ${Object.keys(config.getMcpServers() || {}).join(", ") || "(none)"}`
624
+ );
625
+ continue;
626
+ }
556
627
  const workspaceContext = config.getWorkspaceContext();
557
628
  const projectTempDir = Storage.getGlobalTempDir();
558
629
  const absolutePathName = path.isAbsolute(pathName) ? pathName : path.resolve(workspaceContext.getDirectories()[0] || "", pathName);
@@ -697,7 +768,7 @@ ${messages.join("\n")}`;
697
768
  confirmationDetails: void 0
698
769
  });
699
770
  }
700
- if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && extensionMentions.length === 0) {
771
+ if (pathSpecsToRead.length === 0 && mcpResourceRefs.length === 0 && mcpServerMentions.length === 0 && extensionMentions.length === 0) {
701
772
  onDebugMessage("No valid file paths found in @ commands to read.");
702
773
  if (initialQueryText === "@" && query.trim() === "@") {
703
774
  return { processedQuery: [{ text: query }], shouldProceed: true };
@@ -710,11 +781,9 @@ ${messages.join("\n")}`;
710
781
  };
711
782
  }
712
783
  let extensionContextBudgetRemaining = EXTENSION_CONTEXT_BUDGET;
713
- const extensionParts = [];
714
- const extensionDisplays = [];
715
- const extensionLabels = [];
784
+ const scopedMentionEntries = [];
716
785
  for (let i = 0; i < extensionMentions.length; i++) {
717
- const { extension } = extensionMentions[i];
786
+ const { originalAtPath, extension } = extensionMentions[i];
718
787
  const displayName = getExtensionDisplayName(extension);
719
788
  const callId = `client-extension-${userMessageTimestamp}-${i}`;
720
789
  const context = await buildExtensionMentionContext(extension, {
@@ -723,17 +792,47 @@ ${messages.join("\n")}`;
723
792
  onDebugMessage
724
793
  });
725
794
  extensionContextBudgetRemaining = context.remainingBudget;
726
- extensionParts.push({ text: context.text });
727
- extensionLabels.push(buildExtensionRef(extension.name));
728
- extensionDisplays.push({
729
- callId,
730
- name: "Activate Extension",
731
- description: `Activated extension ${displayName}`,
732
- status: "Success" /* Success */,
733
- resultDisplay: void 0,
734
- confirmationDetails: void 0
795
+ scopedMentionEntries.push({
796
+ originalAtPath,
797
+ part: { text: context.text },
798
+ label: buildExtensionRef(extension.name),
799
+ display: {
800
+ callId,
801
+ name: "Activate Extension",
802
+ description: `Activated extension ${displayName}`,
803
+ status: "Success" /* Success */,
804
+ resultDisplay: void 0,
805
+ confirmationDetails: void 0
806
+ }
735
807
  });
736
808
  }
809
+ for (let i = 0; i < mcpServerMentions.length; i++) {
810
+ const { originalAtPath, serverName } = mcpServerMentions[i];
811
+ scopedMentionEntries.push({
812
+ originalAtPath,
813
+ part: { text: buildMcpServerContextText(config, serverName) },
814
+ label: buildMcpServerRef(serverName),
815
+ display: {
816
+ callId: `client-mcp-server-${userMessageTimestamp}-${i}`,
817
+ name: "Activate MCP Server",
818
+ description: `Activated MCP server ${serverName}`,
819
+ status: "Success" /* Success */,
820
+ resultDisplay: void 0,
821
+ confirmationDetails: void 0
822
+ }
823
+ });
824
+ }
825
+ const scopedMentionOrder = new Map(
826
+ atPathCommandParts.map((part, index) => [part.content, index])
827
+ );
828
+ scopedMentionEntries.sort(
829
+ (a, b) => (scopedMentionOrder.get(a.originalAtPath) ?? Number.MAX_SAFE_INTEGER) - (scopedMentionOrder.get(b.originalAtPath) ?? Number.MAX_SAFE_INTEGER)
830
+ );
831
+ const scopedMentionParts = scopedMentionEntries.map((entry) => entry.part);
832
+ const scopedMentionLabels = scopedMentionEntries.map((entry) => entry.label);
833
+ const scopedMentionDisplays = scopedMentionEntries.map(
834
+ (entry) => entry.display
835
+ );
737
836
  const fileParts = [];
738
837
  let fileDisplays = [];
739
838
  if (pathSpecsToRead.length > 0) {
@@ -770,7 +869,7 @@ ${messages.join("\n")}`;
770
869
  };
771
870
  const errorMessage = typeof errorToolCallDisplay.resultDisplay === "string" ? errorToolCallDisplay.resultDisplay : void 0;
772
871
  const labelsOnError = [
773
- ...extensionLabels,
872
+ ...scopedMentionLabels,
774
873
  ...contentLabelsForDisplay,
775
874
  ...resourceLabels
776
875
  ];
@@ -778,7 +877,7 @@ ${messages.join("\n")}`;
778
877
  processedQuery: null,
779
878
  shouldProceed: false,
780
879
  toolDisplays: [
781
- ...extensionDisplays,
880
+ ...scopedMentionDisplays,
782
881
  ...resourceDisplays,
783
882
  errorToolCallDisplay
784
883
  ],
@@ -793,19 +892,23 @@ ${messages.join("\n")}`;
793
892
  }
794
893
  const processedQueryParts = [
795
894
  { text: initialQueryText },
796
- ...extensionParts,
895
+ ...scopedMentionParts,
797
896
  ...fileParts,
798
897
  ...resourceParts
799
898
  ];
800
899
  const allLabels = [
801
- ...extensionLabels,
900
+ ...scopedMentionLabels,
802
901
  ...contentLabelsForDisplay,
803
902
  ...resourceLabels
804
903
  ];
805
904
  return {
806
905
  processedQuery: processedQueryParts,
807
906
  shouldProceed: true,
808
- toolDisplays: [...extensionDisplays, ...fileDisplays, ...resourceDisplays],
907
+ toolDisplays: [
908
+ ...scopedMentionDisplays,
909
+ ...fileDisplays,
910
+ ...resourceDisplays
911
+ ],
809
912
  filesRead: allLabels,
810
913
  recording: {
811
914
  filesRead: allLabels,
@@ -852,6 +955,10 @@ export {
852
955
  matchExtensionByRef,
853
956
  buildExtensionMentionContext,
854
957
  getExtensionSuggestions,
958
+ parseMcpServerRef,
959
+ buildMcpServerRef,
960
+ matchMcpServerByRef,
961
+ buildMcpServerContextText,
855
962
  resolveAtCommandQuery,
856
963
  handleAtCommand
857
964
  };
@@ -1,13 +1,13 @@
1
1
  // Force strict mode and setup for ESM
2
2
  "use strict";
3
+ import {
4
+ buildPermissionSettings
5
+ } from "./chunk-WKP5QZOP.js";
3
6
  import {
4
7
  resolveVoiceStreamConfig,
5
8
  resolveVoiceTranscriptionConfig,
6
9
  transcribeVoiceAudio
7
- } from "./chunk-MNOXKSM2.js";
8
- import {
9
- buildPermissionSettings
10
- } from "./chunk-6QVQZAW6.js";
10
+ } from "./chunk-LFFF2SPV.js";
11
11
  import {
12
12
  getVoiceSettingsScope,
13
13
  isSelectableVoiceModel,
@@ -16,7 +16,15 @@ import {
16
16
  readVoiceMode,
17
17
  readVoiceModel,
18
18
  resolveVoiceTransport
19
- } from "./chunk-Y4UQT3PM.js";
19
+ } from "./chunk-FV5SBNNC.js";
20
+ import {
21
+ WorkspacePermissionRulesSessionRequiredError,
22
+ WorkspaceSettingsPartialPersistError
23
+ } from "./chunk-BMFMJINR.js";
24
+ import {
25
+ getPersistScopeForModelSelection,
26
+ loadSettings
27
+ } from "./chunk-NLD2WKE3.js";
20
28
  import {
21
29
  MCP_RESTART_SERVER_DEADLINE_MS
22
30
  } from "./chunk-P7M4GA57.js";
@@ -41,27 +49,19 @@ import {
41
49
  createIdleWorkspaceProvidersStatus,
42
50
  createIdleWorkspaceSkillsStatus,
43
51
  mapDomainErrorToErrorKind
44
- } from "./chunk-LHMZCIKL.js";
45
- import {
46
- WorkspacePermissionRulesSessionRequiredError,
47
- WorkspaceSettingsPartialPersistError
48
- } from "./chunk-BMFMJINR.js";
49
- import {
50
- getPersistScopeForModelSelection,
51
- loadSettings
52
- } from "./chunk-BC4R5C5R.js";
52
+ } from "./chunk-FUW7YGJU.js";
53
53
  import {
54
54
  getWorkspaceTrustStatus
55
- } from "./chunk-Z7XNVNPM.js";
55
+ } from "./chunk-YZ5ANQMR.js";
56
56
  import {
57
57
  writeStderrLine
58
58
  } from "./chunk-Y6Z2O3WR.js";
59
59
  import {
60
60
  ModelsConfig
61
- } from "./chunk-6QTCOQX7.js";
61
+ } from "./chunk-WOG7QWIT.js";
62
62
  import {
63
63
  createDebugLogger
64
- } from "./chunk-AVQDCKNF.js";
64
+ } from "./chunk-22MNNNXE.js";
65
65
  import {
66
66
  init_esbuild_shims
67
67
  } from "./chunk-A4BMJM77.js";
@@ -15,15 +15,15 @@ import {
15
15
  readCronTasks,
16
16
  removeCronTasks,
17
17
  updateCronTasks
18
- } from "./chunk-SJBIFVD2.js";
18
+ } from "./chunk-NFE3DQ4R.js";
19
19
  import {
20
20
  ToolNames
21
- } from "./chunk-MTNTVOJR.js";
21
+ } from "./chunk-X3YGAX7V.js";
22
22
  import {
23
23
  Storage,
24
24
  createDebugLogger,
25
25
  getProjectHash
26
- } from "./chunk-AVQDCKNF.js";
26
+ } from "./chunk-22MNNNXE.js";
27
27
  import {
28
28
  init_esbuild_shims
29
29
  } from "./chunk-A4BMJM77.js";
@@ -139,7 +139,13 @@ __name(releaseLock, "releaseLock");
139
139
  // packages/core/src/services/cronScheduler.ts
140
140
  var debugLogger = createDebugLogger("CRON_SCHEDULER");
141
141
  var MAX_JOBS = 50;
142
- var RECURRING_MAX_AGE_MS = 7 * 24 * 60 * 60 * 1e3;
142
+ var DEFAULT_RECURRING_MAX_AGE_DAYS = 7;
143
+ var DEFAULT_RECURRING_MAX_AGE_MS = DEFAULT_RECURRING_MAX_AGE_DAYS * 24 * 60 * 60 * 1e3;
144
+ function normalizeRecurringMaxAge(value, fallback) {
145
+ if (value === 0) return Infinity;
146
+ return value > 0 ? value : fallback;
147
+ }
148
+ __name(normalizeRecurringMaxAge, "normalizeRecurringMaxAge");
143
149
  var MAX_RECURRING_JITTER_MS = 15 * 60 * 1e3;
144
150
  var MAX_ONESHOT_JITTER_MS = 90 * 1e3;
145
151
  var LOCK_PROBE_INTERVAL_MS = 5e3;
@@ -218,9 +224,18 @@ __name(truncatePrompt, "truncatePrompt");
218
224
  var CronScheduler = class {
219
225
  /** `projectRoot` anchors durable storage; without it only session-only
220
226
  * jobs work. Production constructs via `Config.getCronScheduler()`,
221
- * which always supplies it. */
222
- constructor(projectRoot = null) {
227
+ * which always supplies it (and the configured `recurringMaxAgeMs`).
228
+ * `normalizeRecurringMaxAge` owns the expiry contract for both this
229
+ * constructor and the config layer: `0` and `Infinity` both mean
230
+ * "never expire" — so a direct caller passing `0` gets disabled
231
+ * expiry, not the default — while negative or NaN input falls back to
232
+ * the 7-day default rather than expiring everything at birth. */
233
+ constructor(projectRoot = null, recurringMaxAgeMs = DEFAULT_RECURRING_MAX_AGE_MS) {
223
234
  this.projectRoot = projectRoot;
235
+ this.recurringMaxAgeMs = normalizeRecurringMaxAge(
236
+ recurringMaxAgeMs,
237
+ DEFAULT_RECURRING_MAX_AGE_MS
238
+ );
224
239
  }
225
240
  static {
226
241
  __name(this, "CronScheduler");
@@ -284,6 +299,9 @@ var CronScheduler = class {
284
299
  // removals), chained so stop() can hold the lock until they land — a
285
300
  // successor reading the file pre-write would re-run the same work.
286
301
  pendingPersist = Promise.resolve();
302
+ /** Age after which recurring jobs expire, evaluated at fire time.
303
+ * Infinity = never expire. Guarded in the constructor. */
304
+ recurringMaxAgeMs;
287
305
  /**
288
306
  * Creates a new session-only cron job. Returns the created job.
289
307
  * Throws if the max job limit is reached.
@@ -303,7 +321,7 @@ var CronScheduler = class {
303
321
  prompt,
304
322
  recurring,
305
323
  createdAt: now,
306
- expiresAt: recurring ? now + RECURRING_MAX_AGE_MS : Infinity,
324
+ expiresAt: recurring ? now + this.recurringMaxAgeMs : Infinity,
307
325
  // Prevent the scheduler from firing during the creation minute
308
326
  lastFiredAt: now - now % 6e4,
309
327
  jitterMs
@@ -558,7 +576,12 @@ var CronScheduler = class {
558
576
  if (nextFire === null || nextFire >= now) continue;
559
577
  if (!t.recurring) {
560
578
  missedOneShots.push(t);
561
- } else if (now - t.createdAt >= RECURRING_MAX_AGE_MS) {
579
+ } else if (now - t.createdAt >= this.recurringMaxAgeMs) {
580
+ console.warn(
581
+ `Durable cron task ${t.id} (created ${new Date(
582
+ t.createdAt
583
+ ).toISOString()}) is past the recurring max age at load; it will fire one final time and be deleted.`
584
+ );
562
585
  finalTasks.push(t);
563
586
  } else {
564
587
  catchUpIds.push(t.id);
@@ -588,7 +611,7 @@ var CronScheduler = class {
588
611
  );
589
612
  continue;
590
613
  }
591
- const job = durableTaskToJob(task, existing);
614
+ const job = durableTaskToJob(task, this.recurringMaxAgeMs, existing);
592
615
  if (existing?.lastFiredAt !== void 0) {
593
616
  job.lastFiredAt = Math.max(existing.lastFiredAt, job.lastFiredAt ?? 0);
594
617
  }
@@ -610,7 +633,9 @@ var CronScheduler = class {
610
633
  if (finalTasks.length > 0) {
611
634
  this.fireOrBuffer({
612
635
  kind: "final",
613
- jobs: finalTasks.map((t) => durableTaskToJob(t))
636
+ jobs: finalTasks.map(
637
+ (t) => durableTaskToJob(t, this.recurringMaxAgeMs)
638
+ )
614
639
  });
615
640
  }
616
641
  }
@@ -633,7 +658,7 @@ var CronScheduler = class {
633
658
  case "missed": {
634
659
  const skipped = [];
635
660
  const runnable = pending.tasks.filter((t) => {
636
- const job = durableTaskToJob(t);
661
+ const job = durableTaskToJob(t, this.recurringMaxAgeMs);
637
662
  if (job.durable && this.skipDurableFire?.(job)) {
638
663
  debugLogger.debug(
639
664
  `Skipping durable job ${t.id} (missed): consumer cannot run it`
@@ -646,7 +671,7 @@ var CronScheduler = class {
646
671
  for (const id of skipped) this.pendingRemoval.delete(id);
647
672
  if (runnable.length > 0) {
648
673
  onFire({
649
- ...durableTaskToJob(runnable[0]),
674
+ ...durableTaskToJob(runnable[0], this.recurringMaxAgeMs),
650
675
  prompt: buildMissedCronNotification(runnable),
651
676
  missed: true
652
677
  });
@@ -1034,7 +1059,7 @@ function hasParseableCron(task) {
1034
1059
  }
1035
1060
  }
1036
1061
  __name(hasParseableCron, "hasParseableCron");
1037
- function durableTaskToJob(task, existing) {
1062
+ function durableTaskToJob(task, recurringMaxAgeMs, existing) {
1038
1063
  const jitterMs = existing && existing.cronExpr === task.cron && existing.recurring === task.recurring ? existing.jitterMs : computeJitter(task.id, task.cron, task.recurring);
1039
1064
  return {
1040
1065
  id: task.id,
@@ -1042,7 +1067,7 @@ function durableTaskToJob(task, existing) {
1042
1067
  prompt: task.prompt,
1043
1068
  recurring: task.recurring,
1044
1069
  createdAt: task.createdAt,
1045
- expiresAt: task.recurring ? task.createdAt + RECURRING_MAX_AGE_MS : Infinity,
1070
+ expiresAt: task.recurring ? task.createdAt + recurringMaxAgeMs : Infinity,
1046
1071
  lastFiredAt: task.lastFiredAt ?? void 0,
1047
1072
  jitterMs,
1048
1073
  durable: true
@@ -1072,6 +1097,8 @@ function computeNextFireMs(cronExpr, afterMs, jitterMs) {
1072
1097
  __name(computeNextFireMs, "computeNextFireMs");
1073
1098
 
1074
1099
  export {
1100
+ DEFAULT_RECURRING_MAX_AGE_DAYS,
1101
+ normalizeRecurringMaxAge,
1075
1102
  WAKEUP_MIN_SECONDS,
1076
1103
  WAKEUP_MAX_SECONDS,
1077
1104
  clampWakeupSeconds,
@@ -6,10 +6,18 @@ import {
6
6
 
7
7
  // packages/acp-bridge/src/bridgeTypes.ts
8
8
  init_esbuild_shims();
9
+ var LOAD_REPLAY_MODE_META_KEY = "qwen.session.loadReplayMode";
10
+ var LOAD_REPLAY_META_KEY = "qwen.session.loadReplay";
11
+ var LOAD_REPLAY_BULK_MODE = "bulk";
12
+ var LOAD_REPLAY_VERSION = 1;
9
13
  var MID_TURN_QUEUE_DRAIN_METHOD = "craft/drainMidTurnQueue";
10
14
  var CLIENT_MCP_OVER_WS_CONFIG_FLAG = "__clientMcpOverWs";
11
15
 
12
16
  export {
17
+ LOAD_REPLAY_MODE_META_KEY,
18
+ LOAD_REPLAY_META_KEY,
19
+ LOAD_REPLAY_BULK_MODE,
20
+ LOAD_REPLAY_VERSION,
13
21
  MID_TURN_QUEUE_DRAIN_METHOD,
14
22
  CLIENT_MCP_OVER_WS_CONFIG_FLAG
15
23
  };
@@ -2,11 +2,11 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTlsVerificationDisabled
5
- } from "./chunk-D5KISTLW.js";
5
+ } from "./chunk-H6EMK6QK.js";
6
6
  import {
7
7
  getErrorMessage,
8
8
  isNodeError
9
- } from "./chunk-AVQDCKNF.js";
9
+ } from "./chunk-22MNNNXE.js";
10
10
  import {
11
11
  init_esbuild_shims
12
12
  } from "./chunk-A4BMJM77.js";
@@ -5,19 +5,19 @@ import {
5
5
  } from "./chunk-3GONHQOA.js";
6
6
  import {
7
7
  getErrorMessage
8
- } from "./chunk-JJ6B3ZD3.js";
8
+ } from "./chunk-544UZQBD.js";
9
9
  import {
10
10
  loadSettings
11
- } from "./chunk-BC4R5C5R.js";
11
+ } from "./chunk-NLD2WKE3.js";
12
12
  import {
13
13
  getCurrentLanguage,
14
14
  initializeI18n,
15
15
  resolveLanguageSetting,
16
16
  t
17
- } from "./chunk-DM4E337C.js";
17
+ } from "./chunk-WNTS5A2R.js";
18
18
  import {
19
19
  isWorkspaceTrusted
20
- } from "./chunk-Z7XNVNPM.js";
20
+ } from "./chunk-YZ5ANQMR.js";
21
21
  import {
22
22
  writeStderrLine,
23
23
  writeStdoutLine
@@ -29,7 +29,7 @@ import {
29
29
  redactUrlCredentials,
30
30
  require_prompts,
31
31
  stripAnsi
32
- } from "./chunk-6QTCOQX7.js";
32
+ } from "./chunk-WOG7QWIT.js";
33
33
  import {
34
34
  init_esbuild_shims
35
35
  } from "./chunk-A4BMJM77.js";