@qwen-code/qwen-code 0.22.2-preview.0 → 0.22.2

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 (379) hide show
  1. package/bundled/goal-draft/SKILL.md +109 -0
  2. package/bundled/qc-helper/docs/configuration/settings.md +12 -12
  3. package/bundled/qc-helper/docs/features/_meta.ts +1 -0
  4. package/bundled/qc-helper/docs/features/commands.md +2 -1
  5. package/bundled/qc-helper/docs/features/goals.md +58 -0
  6. package/bundled/qc-helper/docs/features/headless.md +13 -11
  7. package/bundled/qc-helper/docs/features/status-line.md +3 -3
  8. package/chunks/MaxSizedBox-X5FZSNAJ.js +112 -0
  9. package/chunks/{StandaloneSessionPicker-KFMJILVY.js → StandaloneSessionPicker-AVLI6VJP.js} +76 -76
  10. package/chunks/{acpAgent-KNFTTDWL.js → acpAgent-MXEAN54C.js} +994 -277
  11. package/chunks/{agent-6V6MZOA7.js → agent-PJIPDWHB.js} +41 -41
  12. package/chunks/agent-headless-B4JVD7UK.js +87 -0
  13. package/chunks/{anthropicContentGenerator-U76GTVB6.js → anthropicContentGenerator-HGMBACVE.js} +7 -7
  14. package/chunks/{artifact-tool-XDJCZZCF.js → artifact-tool-5YT4QF7Y.js} +2 -2
  15. package/chunks/{askUserQuestion-ZXXERLEV.js → askUserQuestion-4SWJY65V.js} +2 -2
  16. package/chunks/bridge-FKZTVIS3.js +121 -0
  17. package/chunks/{channel-management-service-HXXS3HOZ.js → channel-management-service-X4AZ6IXX.js} +1 -1
  18. package/chunks/channel-settings-store-4UFCLBBG.js +117 -0
  19. package/chunks/{channel-worker-group-EVDC2P4K.js → channel-worker-group-27HMGD5S.js} +7 -6
  20. package/chunks/{channel-worker-manager-IJJZHGEI.js → channel-worker-manager-QEGX646Z.js} +9 -7
  21. package/chunks/{channel-worker-supervisor-YSKB5GVB.js → channel-worker-supervisor-UEW2WWCC.js} +5 -4
  22. package/chunks/{chunk-7QGEJI7M.js → chunk-23RFD54N.js} +1 -1
  23. package/chunks/{chunk-K5PNJ6VL.js → chunk-2K6ORIHJ.js} +13 -13
  24. package/chunks/{chunk-OGZAQWJP.js → chunk-2NYCN6F2.js} +11 -11
  25. package/chunks/chunk-2TNL5KPM.js +49 -0
  26. package/chunks/{chunk-ZEADBZLO.js → chunk-3AFMQUTI.js} +3 -3
  27. package/chunks/{chunk-LRLMDV5X.js → chunk-3DXFGHAJ.js} +185 -174
  28. package/chunks/{chunk-73WFGVIZ.js → chunk-3FDFA4MZ.js} +3 -3
  29. package/chunks/{chunk-WBT3STGU.js → chunk-3I6UTTDX.js} +1 -1
  30. package/chunks/{chunk-FVDQ5E67.js → chunk-3JGZSIDA.js} +3 -3
  31. package/chunks/{chunk-JJJD6QCC.js → chunk-3SGB2UHX.js} +15 -10
  32. package/chunks/{chunk-77TOMRBG.js → chunk-43GGFFLY.js} +3 -3
  33. package/chunks/{chunk-ZJG323IA.js → chunk-43UYNAWX.js} +6 -4
  34. package/chunks/{chunk-T2HMXHYA.js → chunk-4CDSK5AZ.js} +6 -6
  35. package/chunks/chunk-4CMJKUND.js +95 -0
  36. package/chunks/{chunk-EB4VDXNI.js → chunk-4FTKQNWJ.js} +1 -1
  37. package/chunks/{chunk-PAJGKZAA.js → chunk-4HV6HH33.js} +10 -8
  38. package/chunks/{chunk-BQBUZDDH.js → chunk-4J657AJR.js} +3 -3
  39. package/chunks/{chunk-BU7OUDQB.js → chunk-4JWNNLPT.js} +4 -4
  40. package/chunks/{chunk-4N6UAPD3.js → chunk-4MQEPP3Y.js} +9 -84
  41. package/chunks/{chunk-I6HWGOWD.js → chunk-5O72BNDD.js} +93 -14
  42. package/chunks/{chunk-IKN3IUJP.js → chunk-5XBFCMWD.js} +2 -2
  43. package/chunks/{chunk-2YDYDDE2.js → chunk-66KDY3LV.js} +3 -3
  44. package/chunks/{chunk-UVDOONRU.js → chunk-6CGL7E7G.js} +2 -2
  45. package/chunks/{chunk-SLEWBQWM.js → chunk-6DIGWMGT.js} +2 -2
  46. package/chunks/{chunk-SKNVVYIJ.js → chunk-6IUNAPLR.js} +3 -3
  47. package/chunks/{chunk-VUZY6MEQ.js → chunk-6LFJEACX.js} +4 -4
  48. package/chunks/{chunk-H2MDBYLL.js → chunk-6LFTG244.js} +8 -8
  49. package/chunks/{chunk-PVBT5QPD.js → chunk-6PJOTWAN.js} +1 -1
  50. package/chunks/{chunk-4IDJQOCO.js → chunk-77RG5SFQ.js} +1 -1
  51. package/chunks/{chunk-SDVF6A42.js → chunk-7DJCPZE3.js} +3 -3
  52. package/chunks/{chunk-ELY4QVIB.js → chunk-7EQQR46F.js} +1 -1
  53. package/chunks/{chunk-H4JK2A2V.js → chunk-7UYV53BC.js} +1 -1
  54. package/chunks/{chunk-6HOU52QX.js → chunk-A7YP63XN.js} +4 -4
  55. package/chunks/{chunk-E4I5MVBR.js → chunk-ABS25QER.js} +1 -1
  56. package/chunks/{chunk-XO4NGYRP.js → chunk-AGR5UROZ.js} +5 -5
  57. package/chunks/{chunk-5T4LWWNX.js → chunk-B7CDU2SL.js} +2 -2
  58. package/chunks/{chunk-GQAIZL3H.js → chunk-BAJKAAOY.js} +68 -64
  59. package/chunks/{chunk-DWRFOH3G.js → chunk-BBWV7ONL.js} +3 -3
  60. package/chunks/{chunk-4TPAG3O7.js → chunk-BFPESSTR.js} +1 -1
  61. package/chunks/{chunk-RUJTCU46.js → chunk-BNMF3K5X.js} +20 -19
  62. package/chunks/{chunk-IPQA4SR5.js → chunk-BWORX6FA.js} +1 -1
  63. package/chunks/{chunk-BKDAF7ES.js → chunk-BXDAPVQU.js} +2 -2
  64. package/chunks/{chunk-FY62MBPS.js → chunk-C6K43ZDE.js} +4 -4
  65. package/chunks/{chunk-JUIJ3FXC.js → chunk-CAJTKR6W.js} +5 -5
  66. package/chunks/{chunk-EADEZDPO.js → chunk-CCBZDVUA.js} +30 -25
  67. package/chunks/{chunk-DP7LABIB.js → chunk-CMHFCLBU.js} +1 -1
  68. package/chunks/{chunk-5AFPOEY3.js → chunk-CPGJJJLU.js} +1 -1
  69. package/chunks/{chunk-LRKMQPMD.js → chunk-CQH5KTKC.js} +1 -1
  70. package/chunks/{chunk-EWBY3PFB.js → chunk-CSMI4FP5.js} +1 -1
  71. package/chunks/{chunk-JECO75XD.js → chunk-D5LUXLUH.js} +2 -2
  72. package/chunks/{chunk-TQYZG5DU.js → chunk-DZWPESIF.js} +3 -3
  73. package/chunks/{chunk-5Y2JCJAH.js → chunk-EFUM7RVY.js} +15 -2
  74. package/chunks/{chunk-3UZCLCXR.js → chunk-EKSCLBBF.js} +3 -3
  75. package/chunks/{chunk-LJP2BBMK.js → chunk-EOGELB3H.js} +4 -4
  76. package/chunks/{chunk-624NHDGB.js → chunk-ERFDKH32.js} +11 -0
  77. package/chunks/{chunk-RQAMNZ4Y.js → chunk-F5SZP77N.js} +310 -78
  78. package/chunks/{chunk-SQPOJ4ZI.js → chunk-F6FV3C5K.js} +12 -7
  79. package/chunks/{chunk-C2BAEV64.js → chunk-F7TNAPZ4.js} +9 -7
  80. package/chunks/{chunk-OAAPGZVH.js → chunk-FBSSIAAQ.js} +6 -6
  81. package/chunks/{chunk-2FN2HNTI.js → chunk-FDY5RMGH.js} +2 -2
  82. package/chunks/{chunk-U66FXEH2.js → chunk-FY76G3G5.js} +5 -5
  83. package/chunks/{chunk-LKOSBI2M.js → chunk-G34IR3D6.js} +9 -9
  84. package/chunks/{chunk-ZWKGZB2K.js → chunk-H2WDGQ6D.js} +3 -3
  85. package/chunks/chunk-H72BQNM3.js +645 -0
  86. package/chunks/{chunk-ILPXSKGQ.js → chunk-HVEYF6VT.js} +2 -2
  87. package/chunks/{chunk-EAV3TENS.js → chunk-HVQ3B7FF.js} +2 -2
  88. package/chunks/{chunk-MI7CMXPU.js → chunk-IJKTMLBE.js} +1 -1
  89. package/chunks/{chunk-IN66KO3N.js → chunk-IK5BW3CS.js} +2 -2
  90. package/chunks/{chunk-5NV2AN56.js → chunk-IOPCFOTF.js} +3 -3
  91. package/chunks/{chunk-O3BUXIPM.js → chunk-IZIVM7LZ.js} +3 -3
  92. package/chunks/{chunk-I6VVOZDK.js → chunk-J2OSJFP3.js} +2 -2
  93. package/chunks/{chunk-AYVIGUUK.js → chunk-JB4JIVTJ.js} +1 -1
  94. package/chunks/{chunk-76WGY6LW.js → chunk-JCQD3INC.js} +3 -3
  95. package/chunks/{chunk-CITGRGCM.js → chunk-JHS74YAB.js} +4 -1
  96. package/chunks/{chunk-GXWY24QS.js → chunk-JSC3H3TD.js} +33 -10
  97. package/chunks/{chunk-NUHCXGAD.js → chunk-JSHHYW6T.js} +4 -4
  98. package/chunks/{chunk-5CW26JIE.js → chunk-JU4EEXC7.js} +2 -2
  99. package/chunks/{chunk-T6OODF2U.js → chunk-JWALNCLT.js} +1 -1
  100. package/chunks/{chunk-DX5FZGHZ.js → chunk-K2NQPH5D.js} +3 -3
  101. package/chunks/{chunk-VLY6XOBY.js → chunk-KEKZFOL6.js} +1 -1
  102. package/chunks/{chunk-RUQBJS34.js → chunk-KUX5D6DK.js} +1200 -339
  103. package/chunks/{chunk-UX3IFLJM.js → chunk-L2M46FP5.js} +149 -22
  104. package/chunks/{chunk-6US7BF3G.js → chunk-L6BZRIUL.js} +2 -2
  105. package/chunks/{chunk-BGWT7VBV.js → chunk-L6YT5H34.js} +4 -4
  106. package/chunks/{chunk-W2WRNJKX.js → chunk-LDP5OD6N.js} +5 -5
  107. package/chunks/{chunk-QB5DD75E.js → chunk-LXIBMVRN.js} +7 -7
  108. package/chunks/{chunk-GNMJNDZE.js → chunk-M6FOJXW3.js} +1 -1
  109. package/chunks/{chunk-OX44MOAN.js → chunk-MIIVI25Q.js} +3 -3
  110. package/chunks/{chunk-K3LPAED5.js → chunk-MQM5PJML.js} +24 -4
  111. package/chunks/{chunk-27ONXAFY.js → chunk-NIFYWDYN.js} +1 -1
  112. package/chunks/{chunk-IJVDHPKD.js → chunk-NU7RKEZR.js} +2 -2
  113. package/chunks/{chunk-MB4OCRQ2.js → chunk-O2UN57NX.js} +2 -2
  114. package/chunks/{chunk-TWUA5EIL.js → chunk-OIP7C4FE.js} +5 -5
  115. package/chunks/{chunk-UCSV2IZW.js → chunk-OIVXBW3W.js} +3 -3
  116. package/chunks/{chunk-TOF4UZHH.js → chunk-P2SU6ZTI.js} +3 -3
  117. package/chunks/{chunk-N4B7VPXK.js → chunk-P5GGM4KS.js} +5 -5
  118. package/chunks/{chunk-ZKAZP2ZG.js → chunk-PDMJ3KGS.js} +2 -2
  119. package/chunks/{chunk-RRKNX553.js → chunk-PDQGMSZK.js} +1 -1
  120. package/chunks/{chunk-3UXJFOB3.js → chunk-PFCQ62V4.js} +5 -5
  121. package/chunks/{chunk-JLGFGPZJ.js → chunk-PKAYJDB3.js} +2 -2
  122. package/chunks/{chunk-GTUKW3I6.js → chunk-PPKZ7JOE.js} +1 -1
  123. package/chunks/{chunk-HOANA6GC.js → chunk-Q26AYA62.js} +4 -4
  124. package/chunks/{chunk-WEGXPP5E.js → chunk-QFCDF5PL.js} +1 -1
  125. package/chunks/{chunk-4PLAO7FS.js → chunk-QP4C6WCE.js} +3 -3
  126. package/chunks/{chunk-3B5DCAQU.js → chunk-R4PMVSR5.js} +27 -25
  127. package/chunks/{chunk-7JJUFI36.js → chunk-RIEFGNTP.js} +579 -3419
  128. package/chunks/{chunk-7XKW4CVK.js → chunk-RJC5EIKY.js} +4 -4
  129. package/chunks/chunk-RKFGE7JH.js +93 -0
  130. package/chunks/{chunk-CPPYZHBN.js → chunk-RU7BK6B3.js} +1 -1
  131. package/chunks/{chunk-GZJUCMH4.js → chunk-RUGNCYNO.js} +11 -633
  132. package/chunks/{chunk-ZLTEQYNC.js → chunk-SFPGAQUL.js} +2 -2
  133. package/chunks/{chunk-K6FURWIX.js → chunk-SJ3ZUWFK.js} +26 -4
  134. package/chunks/{chunk-DEYPMJPD.js → chunk-SMPR7SPO.js} +1 -1
  135. package/chunks/{chunk-7CWEZQ6T.js → chunk-STUJ7IMZ.js} +0 -77
  136. package/chunks/{chunk-O5YGAEQS.js → chunk-T32W2JHI.js} +6 -6
  137. package/chunks/chunk-T3WXYEZ4.js +304 -0
  138. package/chunks/{chunk-D6XO27Z5.js → chunk-TGWAQ5RB.js} +750 -296
  139. package/chunks/{chunk-EC5BONC3.js → chunk-TPI7O7HR.js} +1 -1
  140. package/chunks/{chunk-OI2DR6QB.js → chunk-TRZTNIQ6.js} +2 -2
  141. package/chunks/{chunk-T2CRBIDJ.js → chunk-TTX2JUE6.js} +1 -1
  142. package/chunks/{chunk-2NNTE2ED.js → chunk-UHQFIS7N.js} +15 -0
  143. package/chunks/{chunk-KOJ6MHD5.js → chunk-UTLCH2FK.js} +1 -1
  144. package/chunks/{chunk-7DPKPBOQ.js → chunk-V2NDP3I4.js} +2 -2
  145. package/chunks/{chunk-RQ5ASDFQ.js → chunk-V4QXXQJ2.js} +3 -3
  146. package/chunks/{chunk-BVE5EMIG.js → chunk-V5J4J5TP.js} +2 -2
  147. package/chunks/{chunk-X2UOOG5V.js → chunk-VQUGEVGR.js} +1 -1
  148. package/chunks/{chunk-XJS54K4A.js → chunk-VTHREBQM.js} +2 -2
  149. package/chunks/{chunk-V3GINY6K.js → chunk-VVW4ZNFY.js} +3 -3
  150. package/chunks/{chunk-YT5XN3HV.js → chunk-W5MJJ2V7.js} +1 -1
  151. package/chunks/{chunk-FPH6TXD3.js → chunk-WAOIHTJS.js} +1 -1
  152. package/chunks/{chunk-FN5C6C7G.js → chunk-WKK5BQNP.js} +151 -60
  153. package/chunks/chunk-XDFHY4R3.js +1584 -0
  154. package/chunks/{chunk-L436XFLJ.js → chunk-XDLEZ5HX.js} +1 -1
  155. package/chunks/{chunk-VL4YX3FH.js → chunk-XF63PKEN.js} +1 -1
  156. package/chunks/{chunk-3FSBMAYD.js → chunk-XQFT3QUF.js} +1 -1
  157. package/chunks/{chunk-2MHGD7EE.js → chunk-XRSOI3DL.js} +1 -1
  158. package/chunks/{chunk-FJWICLG7.js → chunk-Y3QL45LS.js} +1 -1
  159. package/chunks/{chunk-RCDXSEJ5.js → chunk-Y6LSMB6J.js} +1 -1
  160. package/chunks/{chunk-2SERYG4T.js → chunk-YTDVNSUQ.js} +1 -1
  161. package/chunks/{chunk-4X5GYZFO.js → chunk-Z7FLBQPR.js} +7 -7
  162. package/chunks/{chunk-3BV7TZNQ.js → chunk-Z7TGYN5F.js} +3 -3
  163. package/chunks/{chunk-4Z3PSHN4.js → chunk-ZFKOCECU.js} +2 -2
  164. package/chunks/chunk-ZGXYO7DY.js +3416 -0
  165. package/chunks/{chunk-E6FGMDFQ.js → chunk-ZU4UDIWX.js} +19 -1
  166. package/chunks/config-utils-BBOCOGZW.js +113 -0
  167. package/chunks/contextCommand-EET67MQ2.js +108 -0
  168. package/chunks/{core-runtime-6TBMEULI.js → core-runtime-677KFX6Q.js} +53 -53
  169. package/chunks/{create-sub-session-RVHSWVAP.js → create-sub-session-23ITIELI.js} +3 -3
  170. package/chunks/{create-sub-session-SAOMTP62.js → create-sub-session-JKZAYZX7.js} +160 -79
  171. package/chunks/{cron-create-IJGVR5R2.js → cron-create-KJ4IY6PP.js} +57 -10
  172. package/chunks/{cron-delete-4N5BI6GL.js → cron-delete-MBLQCAYY.js} +4 -4
  173. package/chunks/{cron-list-2CATIPUX.js → cron-list-DWH2PQ47.js} +4 -4
  174. package/chunks/{daemon-NAYK4XXU.js → daemon-MJQUO7RA.js} +28 -1
  175. package/chunks/{daemon-git-worktree-guard-TYLESM6G.js → daemon-git-worktree-guard-6MVAAZZZ.js} +53 -53
  176. package/chunks/daemon-status-provider-RFKZOK3S.js +119 -0
  177. package/chunks/daemon-trust-policy-DRZPFB4Q.js +114 -0
  178. package/chunks/{daemon-trust-policy-monitor-WWX7I7P6.js → daemon-trust-policy-monitor-B5U6TQX5.js} +59 -59
  179. package/chunks/deferred-core-runtime-BBVIOP24.js +116 -0
  180. package/chunks/{display-image-DR55LL6M.js → display-image-BE7I6ZB6.js} +5 -5
  181. package/chunks/{dist-FVJZSIO4.js → dist-ILDBUWDB.js} +71 -19
  182. package/chunks/{dist-6H6RZ5H6.js → dist-QODVOVWI.js} +58 -35
  183. package/chunks/earlyInputCapture-2JOMMNQ4.js +109 -0
  184. package/chunks/{edit-GBDKI5DZ.js → edit-BSV6YRVW.js} +42 -42
  185. package/chunks/{en-6MDBWMTG.js → en-YLXBXM4Z.js} +2 -1
  186. package/chunks/{enter-worktree-UOZ6ZTP7.js → enter-worktree-MQXFFPKM.js} +7 -7
  187. package/chunks/{enterPlanMode-2KTIPPM3.js → enterPlanMode-PKNF35FE.js} +41 -41
  188. package/chunks/{environment-XJ75LJ6N.js → environment-MOZMPUHR.js} +55 -55
  189. package/chunks/errors-DMPQVYJL.js +115 -0
  190. package/chunks/{exit-worktree-G2QATUCV.js → exit-worktree-L344UY7K.js} +7 -7
  191. package/chunks/{exitPlanMode-AUMYTFIQ.js → exitPlanMode-UE4FGCY4.js} +41 -41
  192. package/chunks/{fast-path-TU7U2ETU.js → fast-path-773PV7PU.js} +5 -5
  193. package/chunks/{gemini-FKMYDP64.js → gemini-IP4FJAP5.js} +101 -100
  194. package/chunks/{geminiContentGenerator-WSHP7CSR.js → geminiContentGenerator-PUNEBWJW.js} +8 -8
  195. package/chunks/{glob-EOM6XK7H.js → glob-CZHOWUEA.js} +41 -41
  196. package/chunks/{goal-tools-CNVXMSZD.js → goal-tools-YZQJXTGH.js} +9 -8
  197. package/chunks/{grep-3NLSS32D.js → grep-5GPICQBU.js} +6 -6
  198. package/chunks/handleAutoUpdate-SGXKTQM6.js +111 -0
  199. package/chunks/{i18n-XX7U2Q3X.js → i18n-B42HKHKH.js} +54 -54
  200. package/chunks/{image-gen-63NN2H5N.js → image-gen-HAYOEQ4O.js} +9 -9
  201. package/chunks/initializer-FB66WYR3.js +115 -0
  202. package/chunks/installationInfo-Y7AULNMX.js +109 -0
  203. package/chunks/{keychain-token-storage-3MGFRYGM.js → keychain-token-storage-37XPR34V.js} +2 -2
  204. package/chunks/list-2HWGSVRA.js +118 -0
  205. package/chunks/{list-agents-EXRSHIDJ.js → list-agents-DI3YFTDT.js} +2 -2
  206. package/chunks/loadedSettingsAdapter-7Y7IEI6T.js +112 -0
  207. package/chunks/{loggingContentGenerator-TUDGCVUG.js → loggingContentGenerator-2GGZNGLG.js} +35 -22
  208. package/chunks/{loop-wakeup-XBPB2BRO.js → loop-wakeup-XJFONSQ7.js} +5 -5
  209. package/chunks/{ls-WFONAND2.js → ls-3VAT2J7A.js} +4 -4
  210. package/chunks/{lsp-DUKPDUXN.js → lsp-5W7IRUBH.js} +2 -2
  211. package/chunks/{managed-npm-update-5K4FWFX2.js → managed-npm-update-5TEV2E3J.js} +54 -54
  212. package/chunks/mcp-QGG5NMJJ.js +112 -0
  213. package/chunks/{monitor-UUHIAGT7.js → monitor-FI7PY36Z.js} +41 -41
  214. package/chunks/nonInteractiveCli-4LO2TL72.js +186 -0
  215. package/chunks/{notebook-edit-GZPB3Q57.js → notebook-edit-TPGMGBST.js} +42 -42
  216. package/chunks/{openaiContentGenerator-RPP6YBS3.js → openaiContentGenerator-SUCYANUZ.js} +24 -24
  217. package/chunks/pidfile-JMF2CLMY.js +113 -0
  218. package/chunks/{processUtils-ENAY2GSA.js → processUtils-IQZBYWSB.js} +2 -2
  219. package/chunks/prompt-terminal-ledger-DCZO6S7C.js +107 -0
  220. package/chunks/{qwenContentGenerator-GLUZVJAU.js → qwenContentGenerator-J4TXFGJT.js} +46 -46
  221. package/chunks/{qwenOAuth2-JIYAWXTW.js → qwenOAuth2-RF33DNZW.js} +8 -8
  222. package/chunks/{read-file-75R5LUWQ.js → read-file-QE2B5FTX.js} +12 -12
  223. package/chunks/{read-mcp-resource-7A7NFSFL.js → read-mcp-resource-XD257PGJ.js} +2 -2
  224. package/chunks/{record-artifact-CPJ4IJSD.js → record-artifact-RZGZBENU.js} +4 -4
  225. package/chunks/{report-findings-VFM5DENC.js → report-findings-Q3SYKKW5.js} +5 -5
  226. package/chunks/{request-shutdown-AXVOFN5C.js → request-shutdown-BCLA3JV2.js} +7 -7
  227. package/chunks/resumeHistoryUtils-CZ4JRDVW.js +120 -0
  228. package/chunks/{ripGrep-FNLXQYBS.js → ripGrep-R6B6HWPX.js} +17 -17
  229. package/chunks/{run-qwen-serve-FJD4VMI2.js → run-qwen-serve-TPHZMSXJ.js} +148 -319
  230. package/chunks/{runtime-INDSJB4K.js → runtime-TTIGSBM4.js} +62 -62
  231. package/chunks/scheduled-tasks-QB4ZVUQS.js +129 -0
  232. package/chunks/{scheduler-Z52TCSUG.js → scheduler-YRUG22M7.js} +55 -55
  233. package/chunks/{sdk-exporters-http-XXSKBD2C.js → sdk-exporters-http-KCJ4ZFG7.js} +2 -2
  234. package/chunks/{sdk-impl-VPNBLV7I.js → sdk-impl-HLSEDAEP.js} +4 -4
  235. package/chunks/{send-message-A2GXDX3B.js → send-message-Y5I6NYAM.js} +7 -7
  236. package/chunks/serve-MXXCDAQN.js +120 -0
  237. package/chunks/{server-PSN5OOSX.js → server-DFUSSSHI.js} +19760 -19444
  238. package/chunks/{session-JPE34X6Q.js → session-3TEHNENZ.js} +100 -99
  239. package/chunks/{settings-IVGC4UYK.js → settings-VOZYKLTT.js} +58 -58
  240. package/chunks/{shell-A5PZGPBR.js → shell-6RTKZVMI.js} +41 -41
  241. package/chunks/{skill-UUXQPDEH.js → skill-FEOKFX26.js} +22 -21
  242. package/chunks/{skill-settings-WVRXLTK4.js → skill-settings-VA4XVYVL.js} +58 -58
  243. package/chunks/spawnChannel-F6WVP723.js +114 -0
  244. package/chunks/{standalone-update-IRFRNGAA.js → standalone-update-RGILUQVK.js} +55 -55
  245. package/chunks/{startInteractiveUI-MC4GLL6G.js → startInteractiveUI-WHJPFOGH.js} +2757 -2223
  246. package/chunks/{syntheticOutput-5AJ444QT.js → syntheticOutput-ML43GEFN.js} +3 -3
  247. package/chunks/{task-create-CDJSOEQD.js → task-create-TMSV7RD5.js} +11 -11
  248. package/chunks/{task-list-BELMPA75.js → task-list-W55RBFRX.js} +5 -5
  249. package/chunks/{task-stop-U3S3KZG2.js → task-stop-CXEH5L2D.js} +2 -2
  250. package/chunks/{task-update-77VCFDDZ.js → task-update-N536I4GQ.js} +11 -11
  251. package/chunks/{team-create-WO5ZBCFW.js → team-create-QYSWCYCL.js} +41 -41
  252. package/chunks/{team-delete-YWFXX77L.js → team-delete-FJRFX33M.js} +5 -5
  253. package/chunks/{team-plan-approval-KAVKRN7U.js → team-plan-approval-P7DAD644.js} +41 -41
  254. package/chunks/{terminal-image-renderer-SMRRNI6Z.js → terminal-image-renderer-SMQE46UJ.js} +55 -55
  255. package/chunks/theme-manager-RFO5WWFF.js +104 -0
  256. package/chunks/{todoWrite-435EO2CS.js → todoWrite-WDJNQEMW.js} +43 -25
  257. package/chunks/{tool-search-FBN6OC6U.js → tool-search-F2EMIAPV.js} +17 -17
  258. package/chunks/total-session-admission-HTVTP4BS.js +116 -0
  259. package/chunks/{trustedFolders-B4LPJBFK.js → trustedFolders-7OCNMUQE.js} +54 -54
  260. package/chunks/{update-relaunch-X5TJVKVG.js → update-relaunch-4GF3OXMB.js} +5 -5
  261. package/chunks/{updateCheck-JCLP5JFT.js → updateCheck-7QBDXZRT.js} +56 -56
  262. package/chunks/useAutoAcceptIndicator-UI4SNL2O.js +122 -0
  263. package/chunks/{validateNonInterActiveAuth-W7HYH5ZN.js → validateNonInterActiveAuth-BPPA563H.js} +96 -95
  264. package/chunks/{version-JG4J76GL.js → version-ANP4TS6O.js} +1 -1
  265. package/chunks/{web-fetch-SPLMEDWF.js → web-fetch-QJADSAH3.js} +16 -16
  266. package/chunks/{web-search-PNW6OEH6.js → web-search-7TTQKEKM.js} +9 -9
  267. package/chunks/{workflow-QHOIIXJO.js → workflow-5XN6XSOT.js} +105 -60
  268. package/chunks/workspace-providers-status-PDFZWL5Q.js +116 -0
  269. package/chunks/{workspace-registration-store-H375IYR2.js → workspace-registration-store-XKVW2YVH.js} +1 -1
  270. package/chunks/{workspace-registry-XTLCD7Z2.js → workspace-registry-23R7XRB5.js} +61 -59
  271. package/chunks/workspace-service-MUYO2QIC.js +131 -0
  272. package/chunks/workspace-skills-status-IKECTOOQ.js +115 -0
  273. package/chunks/{workspace-trust-reconciler-6SC6RKQE.js → workspace-trust-reconciler-KLGOB53D.js} +67 -65
  274. package/chunks/write-file-GGRBB5TZ.js +90 -0
  275. package/chunks/{zh-TW-MV4FWFB6.js → zh-TW-RPTMRTHG.js} +2 -1
  276. package/chunks/{zh-X3WGU6SI.js → zh-UNY63FR3.js} +2 -1
  277. package/chunks/{zoom-image-WGNPZ572.js → zoom-image-6ASG6J4C.js} +12 -12
  278. package/cli.js +14 -14
  279. package/locales/en.js +2 -0
  280. package/locales/zh-TW.js +2 -0
  281. package/locales/zh.js +2 -0
  282. package/package.json +3 -3
  283. package/web-shell/assets/{abnfDiagram-VCTEODGH-yq7z7Anb.js → abnfDiagram-VCTEODGH-uS-vtfs3.js} +1 -1
  284. package/web-shell/assets/{arc-CbJO0xnT.js → arc-BSTnk5pu.js} +1 -1
  285. package/web-shell/assets/{architectureDiagram-5GKGNRK7-CRh89421.js → architectureDiagram-5GKGNRK7-DCMyiqzy.js} +1 -1
  286. package/web-shell/assets/{blockDiagram-NRAW4CY4-C75KAhKv.js → blockDiagram-NRAW4CY4-C7_gt0r1.js} +1 -1
  287. package/web-shell/assets/{c4Diagram-UCG6FXSJ-BzlMveFB.js → c4Diagram-UCG6FXSJ-BeQg2L8B.js} +1 -1
  288. package/web-shell/assets/channel-CENAhErJ.js +1 -0
  289. package/web-shell/assets/{chunk-2Q5K7J3B-DA8QDX3a.js → chunk-2Q5K7J3B-DnV9bKBe.js} +1 -1
  290. package/web-shell/assets/{chunk-5VM5RSS4-Bgu7gQ7Y.js → chunk-5VM5RSS4-rT1GAcT7.js} +1 -1
  291. package/web-shell/assets/{chunk-F27PBJKO-BOew7pIK.js → chunk-F27PBJKO-BcgSxqGA.js} +1 -1
  292. package/web-shell/assets/{chunk-G27WJ6UU-DHx1I-hO.js → chunk-G27WJ6UU-Bw1ZhyZq.js} +1 -1
  293. package/web-shell/assets/{chunk-JWPE2WC7-SarFW0WU.js → chunk-JWPE2WC7-D4iDw-96.js} +1 -1
  294. package/web-shell/assets/{chunk-LCL6LL3I-BLzP083Z.js → chunk-LCL6LL3I-D3MB3GTZ.js} +1 -1
  295. package/web-shell/assets/{chunk-POPQ4Y6H-Bmkv_iKm.js → chunk-POPQ4Y6H-Cep2ndrS.js} +1 -1
  296. package/web-shell/assets/{chunk-SVP7TREG-MPx9r1N2.js → chunk-SVP7TREG-BuahMHJc.js} +1 -1
  297. package/web-shell/assets/{chunk-XXDRQBXY-Ck-09rKG.js → chunk-XXDRQBXY-BdujIvJY.js} +1 -1
  298. package/web-shell/assets/classDiagram-DTDB5LWJ-CM6FArGH.js +1 -0
  299. package/web-shell/assets/classDiagram-v2-JRS7N3AN-CM6FArGH.js +1 -0
  300. package/web-shell/assets/{cose-bilkent-JH36ORCC-DWm6lfOG.js → cose-bilkent-JH36ORCC-CGLLUbF8.js} +1 -1
  301. package/web-shell/assets/{cynefin-OW5HDTMX-DcBUyr5R.js → cynefin-OW5HDTMX-D6kDsRSh.js} +1 -1
  302. package/web-shell/assets/{cynefinDiagram-5FMLGOSQ-Df8qmd_p.js → cynefinDiagram-5FMLGOSQ-CCy78qZx.js} +1 -1
  303. package/web-shell/assets/{dagre-3AP2YEHR-DDmGspD7.js → dagre-3AP2YEHR-D5gJuJsf.js} +1 -1
  304. package/web-shell/assets/{diagram-S7CK7UJ4-BK_qFvbi.js → diagram-S7CK7UJ4-ZwEZ5W__.js} +1 -1
  305. package/web-shell/assets/{diagram-UQ7AKVKN-Uw3AP_bi.js → diagram-UQ7AKVKN-B036APjv.js} +1 -1
  306. package/web-shell/assets/{diagram-VSXAHHWV-CJOQKxY7.js → diagram-VSXAHHWV-BfDJ57Fq.js} +1 -1
  307. package/web-shell/assets/{diagram-VX7I27RA-DhdvZna5.js → diagram-VX7I27RA-Wha0p5rT.js} +1 -1
  308. package/web-shell/assets/{diagram-Z3DM3KII-edQU0nlP.js → diagram-Z3DM3KII-L20bz2K1.js} +1 -1
  309. package/web-shell/assets/{ebnfDiagram-PWID7BFC-4kugBEsO.js → ebnfDiagram-PWID7BFC-D1ZM0Cp7.js} +1 -1
  310. package/web-shell/assets/{erDiagram-SSCWMZ5O-BMkFivWO.js → erDiagram-SSCWMZ5O-CMtA19v8.js} +1 -1
  311. package/web-shell/assets/{flowDiagram-A5DVABFB-BM1ea8g-.js → flowDiagram-A5DVABFB-D96m326S.js} +1 -1
  312. package/web-shell/assets/{ganttDiagram-EL5Y4UJY-CXj_cKRf.js → ganttDiagram-EL5Y4UJY-BuHiYG2o.js} +1 -1
  313. package/web-shell/assets/{gitGraphDiagram-WWUBYQGX-D0nEqwqu.js → gitGraphDiagram-WWUBYQGX-Ck3NmkSw.js} +1 -1
  314. package/web-shell/assets/index-8hXIpvo4.js +1865 -0
  315. package/web-shell/assets/{index-B6JN54Pd.js → index-CBGz4Qjl.js} +1 -1
  316. package/web-shell/assets/{index-C-XlQn24.css → index-DclEv91i.css} +1 -1
  317. package/web-shell/assets/{infoDiagram-RXCK75RN-DF7aGGbQ.js → infoDiagram-RXCK75RN-B6DAOyXe.js} +1 -1
  318. package/web-shell/assets/{ishikawaDiagram-5VMMS53U-CZYNX1lL.js → ishikawaDiagram-5VMMS53U-Bpg-joFo.js} +1 -1
  319. package/web-shell/assets/{journeyDiagram-EYS64GPL-CvrqMUz1.js → journeyDiagram-EYS64GPL-BclrHzGa.js} +1 -1
  320. package/web-shell/assets/{kanban-definition-3QL26DDD-BZNJQZBj.js → kanban-definition-3QL26DDD-5gJzNTYG.js} +1 -1
  321. package/web-shell/assets/{layout-Bf83x7D6.js → layout-CEz_1L8z.js} +1 -1
  322. package/web-shell/assets/{linear-Bkc3ES2f.js → linear-CBjTq9Hc.js} +1 -1
  323. package/web-shell/assets/{mermaid.core-C6xuovwz.js → mermaid.core-Dzhbxx_I.js} +6 -6
  324. package/web-shell/assets/{mindmap-definition-FBJOCRG2-DzH6gVRg.js → mindmap-definition-FBJOCRG2-DQdVqlBF.js} +1 -1
  325. package/web-shell/assets/{pegDiagram-XKGWAZYB-DCvLh2fa.js → pegDiagram-XKGWAZYB-D1JZlYXL.js} +1 -1
  326. package/web-shell/assets/{pieDiagram-E7YTZNPT-BtjVlx_6.js → pieDiagram-E7YTZNPT-BmkpYL0w.js} +1 -1
  327. package/web-shell/assets/{quadrantDiagram-AXDQQJYC-IbroqxFe.js → quadrantDiagram-AXDQQJYC-DRvD6co5.js} +1 -1
  328. package/web-shell/assets/{railroadDiagram-O6MQD6OU-BvMykiWW.js → railroadDiagram-O6MQD6OU-CEdjDuoo.js} +1 -1
  329. package/web-shell/assets/{requirementDiagram-EFPCY7ZU-D-HHMyrh.js → requirementDiagram-EFPCY7ZU-BCHG-ie8.js} +1 -1
  330. package/web-shell/assets/{sankeyDiagram-P5KCCOFB-C0XXhB6d.js → sankeyDiagram-P5KCCOFB-C9cZMnye.js} +1 -1
  331. package/web-shell/assets/{sequenceDiagram-WJ2MYXX4-DseAXj5d.js → sequenceDiagram-WJ2MYXX4-DYHRV4zL.js} +1 -1
  332. package/web-shell/assets/{sizeCapture-X5ZJPWSS-Cek2EweK.js → sizeCapture-X5ZJPWSS-DlK21aye.js} +1 -1
  333. package/web-shell/assets/{stateDiagram-HBIQ2CUA-yLv8wafW.js → stateDiagram-HBIQ2CUA-BrmZssvk.js} +1 -1
  334. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-B2Q7XDaE.js +1 -0
  335. package/web-shell/assets/{swimlanes-XN3QIQJK-Cwz-opvE.js → swimlanes-XN3QIQJK-D9xfcayR.js} +1 -1
  336. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-DpZPOSbX.js +8 -0
  337. package/web-shell/assets/{timeline-definition-24CTP7MA-BJuFD7OG.js → timeline-definition-24CTP7MA-D4gdDL_d.js} +1 -1
  338. package/web-shell/assets/{vennDiagram-4TSXK5OY-CNAavdoV.js → vennDiagram-4TSXK5OY-DdhIExjI.js} +1 -1
  339. package/web-shell/assets/{wardleyDiagram-VM6X3IG4-DaIjAidq.js → wardleyDiagram-VM6X3IG4-C9RS_Zof.js} +1 -1
  340. package/web-shell/assets/{xychartDiagram-S5SC5T6Z-DkcQXjTy.js → xychartDiagram-S5SC5T6Z-orRgmxWk.js} +1 -1
  341. package/web-shell/index.html +2 -2
  342. package/chunks/MaxSizedBox-XYQOMOBE.js +0 -112
  343. package/chunks/agent-headless-3ZC4LX3E.js +0 -87
  344. package/chunks/bridge-LFFLHLU5.js +0 -119
  345. package/chunks/channel-settings-store-CAL2HWAH.js +0 -117
  346. package/chunks/chunk-JS73NNWF.js +0 -30
  347. package/chunks/chunk-VGHZT6JR.js +0 -51
  348. package/chunks/config-utils-YMJNA25D.js +0 -113
  349. package/chunks/contextCommand-WMPSNKPG.js +0 -108
  350. package/chunks/daemon-status-provider-YBQAZD3G.js +0 -118
  351. package/chunks/daemon-trust-policy-O75ZSIJN.js +0 -114
  352. package/chunks/deferred-core-runtime-MGCCR6LA.js +0 -116
  353. package/chunks/earlyInputCapture-2EJKJET3.js +0 -109
  354. package/chunks/errors-XEI3SJRV.js +0 -115
  355. package/chunks/handleAutoUpdate-S4CLP36D.js +0 -111
  356. package/chunks/initializer-D3CA3272.js +0 -115
  357. package/chunks/installationInfo-HVDQOSIE.js +0 -109
  358. package/chunks/list-XUDSTGT3.js +0 -118
  359. package/chunks/loadedSettingsAdapter-ZOJ4QEID.js +0 -112
  360. package/chunks/mcp-QJ6AUYE5.js +0 -112
  361. package/chunks/nonInteractiveCli-PAWO75YO.js +0 -185
  362. package/chunks/pidfile-RF3WUFKR.js +0 -113
  363. package/chunks/prompt-terminal-ledger-4CCXZ2LF.js +0 -107
  364. package/chunks/resumeHistoryUtils-GFPJD2XB.js +0 -120
  365. package/chunks/serve-GVD2WXVL.js +0 -120
  366. package/chunks/spawnChannel-KTURLD4B.js +0 -113
  367. package/chunks/theme-manager-A7CPN7F4.js +0 -104
  368. package/chunks/total-session-admission-B7U6UWKQ.js +0 -114
  369. package/chunks/useAutoAcceptIndicator-VBT3NKDM.js +0 -122
  370. package/chunks/workspace-providers-status-653DTR35.js +0 -116
  371. package/chunks/workspace-service-KVJWACCS.js +0 -131
  372. package/chunks/workspace-skills-status-TRJ2VWGU.js +0 -115
  373. package/chunks/write-file-EAZSJZKR.js +0 -90
  374. package/web-shell/assets/channel-B3sGR79J.js +0 -1
  375. package/web-shell/assets/classDiagram-DTDB5LWJ-sTGo0K3v.js +0 -1
  376. package/web-shell/assets/classDiagram-v2-JRS7N3AN-sTGo0K3v.js +0 -1
  377. package/web-shell/assets/index-DLjXM0dn.js +0 -1860
  378. package/web-shell/assets/stateDiagram-v2-4QOOHH4V-DeThXnol.js +0 -1
  379. package/web-shell/assets/swimlanesDiagram-VK2B7HYN-GW0R1ZSv.js +0 -8
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  MAX_TERMINAL_IMAGE_BYTES
5
- } from "./chunk-KOJ6MHD5.js";
5
+ } from "./chunk-UTLCH2FK.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  t
5
- } from "./chunk-W2WRNJKX.js";
5
+ } from "./chunk-LDP5OD6N.js";
6
6
  import {
7
7
  createDebugLogger
8
- } from "./chunk-2NNTE2ED.js";
8
+ } from "./chunk-UHQFIS7N.js";
9
9
  import {
10
10
  writeStderrLine
11
11
  } from "./chunk-KGJGEEVR.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-2NNTE2ED.js";
5
+ } from "./chunk-UHQFIS7N.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -1108,6 +1108,21 @@ var Storage = class _Storage {
1108
1108
  getWorkflowRunsDir() {
1109
1109
  return path2.join(this.getProjectDir(), "workflows");
1110
1110
  }
1111
+ /**
1112
+ * Generated-workflow scripts directory: `<projectDir>/workflows/generated`.
1113
+ * A trusted root for `Workflow({scriptPath})` / `workflow({scriptPath})`
1114
+ * that is NOT a saved-workflow scope: scripts here are never listed as
1115
+ * `/<name>` slash commands and cannot be reached by `workflow('<name>')`.
1116
+ * It exists for tooling that emits a script for one run (a CLI subcommand
1117
+ * generating a fan-out for the model to dispatch) — such a script has no
1118
+ * business in the user's command namespace, and the runtime dir keeps it
1119
+ * out of the project tree. Layout below the root is the writer's; the
1120
+ * loader trusts the whole subtree. A subprocess reaches it as
1121
+ * `$QWEN_CODE_PROJECT_DIR/workflows/generated`.
1122
+ */
1123
+ getGeneratedWorkflowsDir() {
1124
+ return path2.join(this.getWorkflowRunsDir(), "generated");
1125
+ }
1111
1126
  /**
1112
1127
  * Path to the persisted snapshot of a completed workflow run.
1113
1128
  */
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  createDebugLogger
5
- } from "./chunk-2NNTE2ED.js";
5
+ } from "./chunk-UHQFIS7N.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  isGitRepository
5
- } from "./chunk-DEYPMJPD.js";
5
+ } from "./chunk-SMPR7SPO.js";
6
6
  import {
7
7
  createDebugLogger
8
- } from "./chunk-2NNTE2ED.js";
8
+ } from "./chunk-UHQFIS7N.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -12,19 +12,19 @@ import {
12
12
  } from "./chunk-MR3PXB6E.js";
13
13
  import {
14
14
  ideContextStore
15
- } from "./chunk-D6XO27Z5.js";
15
+ } from "./chunk-TGWAQ5RB.js";
16
16
  import {
17
17
  require_proper_lockfile
18
18
  } from "./chunk-MLXTMF7H.js";
19
19
  import {
20
20
  atomicWriteFileSync
21
- } from "./chunk-7QGEJI7M.js";
21
+ } from "./chunk-23RFD54N.js";
22
22
  import {
23
23
  FatalConfigError,
24
24
  Storage,
25
25
  createDebugLogger,
26
26
  getErrorMessage
27
- } from "./chunk-2NNTE2ED.js";
27
+ } from "./chunk-UHQFIS7N.js";
28
28
  import {
29
29
  writeStderrLine
30
30
  } from "./chunk-KGJGEEVR.js";
@@ -2,14 +2,14 @@
2
2
  "use strict";
3
3
  import {
4
4
  getCurrentAgentId
5
- } from "./chunk-DP7LABIB.js";
5
+ } from "./chunk-CMHFCLBU.js";
6
6
  import {
7
7
  getTeammateContext,
8
8
  isTeammate
9
9
  } from "./chunk-S6LOFUVP.js";
10
10
  import {
11
11
  ToolNames
12
- } from "./chunk-KOJ6MHD5.js";
12
+ } from "./chunk-UTLCH2FK.js";
13
13
  import {
14
14
  init_esbuild_shims
15
15
  } from "./chunk-5O2XNYP6.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  TotalSessionLimitExceededError,
5
5
  WorkspaceDrainingError
6
- } from "./chunk-624NHDGB.js";
6
+ } from "./chunk-ERFDKH32.js";
7
7
  import {
8
8
  init_esbuild_shims
9
9
  } from "./chunk-5O2XNYP6.js";
@@ -2,10 +2,10 @@
2
2
  "use strict";
3
3
  import {
4
4
  isTeamAutoMemPath
5
- } from "./chunk-PVBT5QPD.js";
5
+ } from "./chunk-6PJOTWAN.js";
6
6
  import {
7
7
  createDebugLogger
8
- } from "./chunk-2NNTE2ED.js";
8
+ } from "./chunk-UHQFIS7N.js";
9
9
  import {
10
10
  init_esbuild_shims
11
11
  } from "./chunk-5O2XNYP6.js";
@@ -5,7 +5,7 @@ import {
5
5
  } from "./chunk-P3QQPMQA.js";
6
6
  import {
7
7
  classifyRetryError
8
- } from "./chunk-I6VVOZDK.js";
8
+ } from "./chunk-J2OSJFP3.js";
9
9
  import {
10
10
  formatQuotaExhaustedMessage,
11
11
  getRetryAfterDelayMs,
@@ -13,11 +13,11 @@ import {
13
13
  isQuotaExhaustedError,
14
14
  isQwenQuotaExceededError,
15
15
  isRateLimitError
16
- } from "./chunk-EB4VDXNI.js";
16
+ } from "./chunk-4FTKQNWJ.js";
17
17
  import {
18
18
  createDebugLogger,
19
19
  getErrorStatus
20
- } from "./chunk-2NNTE2ED.js";
20
+ } from "./chunk-UHQFIS7N.js";
21
21
  import {
22
22
  init_esbuild_shims
23
23
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  registerCleanup
5
- } from "./chunk-RCDXSEJ5.js";
5
+ } from "./chunk-Y6LSMB6J.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  themeManager
5
- } from "./chunk-WEGXPP5E.js";
5
+ } from "./chunk-QFCDF5PL.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
  import {
4
4
  runSideQuery
5
- } from "./chunk-IPQA4SR5.js";
5
+ } from "./chunk-BWORX6FA.js";
6
6
  import {
7
7
  init_esbuild_shims
8
8
  } from "./chunk-5O2XNYP6.js";
@@ -23,8 +23,17 @@ var GOAL_EVIDENCE_CATALOG_EXHAUSTED_REASON = "The current Goal revision exceeded
23
23
  var GOAL_CHECKPOINT_REQUEST_TOO_LARGE_REASON = "The current Goal revision exceeded the checkpoint verifier request limit. Automatic retries cannot recover. Edit or replace the Goal before resuming it.";
24
24
  var GOAL_CHECKPOINT_STALL_LIMIT = 3;
25
25
  var GOAL_CHECKPOINT_STALLED_REASON = "The current Goal revision ran three consecutive evidence checkpoints without relief: the evidence window overflowed every time, and each check either came back with a full claim list or a result that could not be folded into claims at all, so every turn paid a checkpoint call and lost uncatalogued evidence. Automatic retries cannot recover. Edit or replace the Goal with a narrower objective before resuming it.";
26
+ var GOAL_DEFAULT_TOKEN_BUDGET = 3e7;
27
+ function goalTokenBudgetReason(tokenBudget) {
28
+ return `The Goal spent its autonomous token budget (${tokenBudget.toLocaleString("en-US")} tokens). Resume the Goal to authorize another budget window, or clear it.`;
29
+ }
30
+ __name(goalTokenBudgetReason, "goalTokenBudgetReason");
31
+ function isGoalTokenBudgetSpent(goal) {
32
+ return goal.tokenBudget !== void 0 && goal.tokensUsed >= goal.tokenBudget;
33
+ }
34
+ __name(isGoalTokenBudgetSpent, "isGoalTokenBudgetSpent");
26
35
  function isGoalLimitKind(value) {
27
- return value === "evidence_catalog" || value === "checkpoint_request";
36
+ return value === "evidence_catalog" || value === "checkpoint_request" || value === "token_budget";
28
37
  }
29
38
  __name(isGoalLimitKind, "isGoalLimitKind");
30
39
  function goalLimitKindForReason(reason) {
@@ -51,9 +60,10 @@ function goalRequiresExactPermit(snapshot) {
51
60
  }
52
61
  __name(goalRequiresExactPermit, "goalRequiresExactPermit");
53
62
  function isRepeatedBlockerProposal(proposal) {
54
- return proposal.status === "blocked" && proposal.blockerKind !== "authority" && proposal.blockerKind !== "external";
63
+ return proposal.status === "blocked" && proposal.blockerKind !== "authority" && proposal.blockerKind !== "external" && proposal.blockerKind !== "infeasible";
55
64
  }
56
65
  __name(isRepeatedBlockerProposal, "isRepeatedBlockerProposal");
66
+ var GOAL_INFEASIBLE_NEXT_STEP = "The objective cannot be satisfied as written; edit or replace the Goal with an objective the evidence allows before resuming it.";
57
67
  function validateGoalProposalReason(reason) {
58
68
  if (!reason.trim()) return "Goal proposal reason must not be empty";
59
69
  if ([...reason].length > GOAL_PROPOSAL_REASON_MAX_CHARACTERS) {
@@ -1056,7 +1066,13 @@ function repeatedBlockerCoverageCatalogued(analysis) {
1056
1066
  __name(repeatedBlockerCoverageCatalogued, "repeatedBlockerCoverageCatalogued");
1057
1067
  function validateBlockerCoverage(proposal, citedRecords, analysis) {
1058
1068
  if (proposal.status !== "blocked") return;
1059
- if (proposal.blockerKind === "authority" || proposal.blockerKind === "external") {
1069
+ if (proposal.blockerKind === "infeasible" && !citedRecords.some(({ proofKind }) => proofKind === "external_fact")) {
1070
+ throw new InvalidGoalEvidenceReferenceError(
1071
+ "infeasible_blocker_external_fact_required",
1072
+ "An infeasible blocker requires cited external tool evidence of the fact that makes the objective unsatisfiable."
1073
+ );
1074
+ }
1075
+ if (proposal.blockerKind === "authority" || proposal.blockerKind === "external" || proposal.blockerKind === "infeasible") {
1060
1076
  if (!citedRecords.some(
1061
1077
  ({ proofKind }) => proofKind === "user_input" || proofKind === "external_fact"
1062
1078
  )) {
@@ -1372,7 +1388,8 @@ function reduceGoalControl(current, transition) {
1372
1388
  transition.nextGoalId,
1373
1389
  normalizeObjective(request.objective, snapshotOf(null)),
1374
1390
  transition.now,
1375
- transition.cursor
1391
+ transition.cursor,
1392
+ transition.tokenBudgetGrant
1376
1393
  );
1377
1394
  }
1378
1395
  assertExpectedVersion(
@@ -1386,7 +1403,8 @@ function reduceGoalControl(current, transition) {
1386
1403
  transition.nextGoalId,
1387
1404
  normalizeObjective(request.objective, snapshotOf(current)),
1388
1405
  transition.now,
1389
- transition.cursor
1406
+ transition.cursor,
1407
+ transition.tokenBudgetGrant
1390
1408
  );
1391
1409
  }
1392
1410
  if (request.action === "edit") {
@@ -1402,6 +1420,7 @@ function reduceGoalControl(current, transition) {
1402
1420
  evidenceCursor: copyCursor(transition.cursor),
1403
1421
  evidenceCheckpoint: void 0,
1404
1422
  checkpointStalls: void 0,
1423
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1405
1424
  lastReason: void 0,
1406
1425
  limitKind: void 0
1407
1426
  });
@@ -1427,6 +1446,14 @@ function reduceGoalControl(current, transition) {
1427
1446
  snapshotOf(current)
1428
1447
  );
1429
1448
  }
1449
+ if (request.action === "resume" && current.status === "usage_limited" && current.limitKind === "token_budget") {
1450
+ return transitionGoal(current, transition.now, {
1451
+ status: "active",
1452
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1453
+ lastReason: void 0,
1454
+ limitKind: void 0
1455
+ });
1456
+ }
1430
1457
  if (request.action !== "resume") {
1431
1458
  return assertNever(request, snapshotOf(current));
1432
1459
  }
@@ -1439,12 +1466,14 @@ function reduceGoalControl(current, transition) {
1439
1466
  // a different one, so carrying it over would spend the new window's
1440
1467
  // allowance on the old window's failures.
1441
1468
  checkpointStalls: void 0,
1469
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant),
1442
1470
  lastReason: void 0,
1443
1471
  limitKind: void 0
1444
1472
  });
1445
1473
  }
1446
1474
  return transitionGoal(current, transition.now, {
1447
- status: "active"
1475
+ status: "active",
1476
+ ...rearmedTokenBudget(current, transition.tokenBudgetGrant)
1448
1477
  });
1449
1478
  }
1450
1479
  __name(reduceGoalControl, "reduceGoalControl");
@@ -1458,7 +1487,8 @@ function reduceGoalTurnFinished(current, transition) {
1458
1487
  return transitionGoal(current, transition.now, {
1459
1488
  turnCount: current.turnCount + 1,
1460
1489
  tokensUsed: current.tokensUsed + Math.max(0, transition.tokensUsed ?? 0),
1461
- ...transition.lastReason === void 0 ? {} : { lastReason: transition.lastReason }
1490
+ ...transition.lastReason === void 0 ? {} : { lastReason: transition.lastReason },
1491
+ ...transition.windDownTurnId === void 0 ? {} : { windDownTurnId: transition.windDownTurnId }
1462
1492
  });
1463
1493
  }
1464
1494
  __name(reduceGoalTurnFinished, "reduceGoalTurnFinished");
@@ -1561,7 +1591,7 @@ function parseGoalStateCause(value) {
1561
1591
  return isGoalStateCause(value) ? value : void 0;
1562
1592
  }
1563
1593
  __name(parseGoalStateCause, "parseGoalStateCause");
1564
- function createGoal(goalId, objective, now, cursor) {
1594
+ function createGoal(goalId, objective, now, cursor, tokenBudget) {
1565
1595
  return {
1566
1596
  goalId,
1567
1597
  revision: 1,
@@ -1571,6 +1601,9 @@ function createGoal(goalId, objective, now, cursor) {
1571
1601
  turnCount: 0,
1572
1602
  activeTimeMs: 0,
1573
1603
  tokensUsed: 0,
1604
+ // A non-finite grant (a host opting out) arms nothing: `Infinity` would
1605
+ // not survive the JSON journal, so "unbounded" is spelled as no field.
1606
+ ...tokenBudget !== void 0 && Number.isFinite(tokenBudget) ? { tokenBudget } : {},
1574
1607
  createdAt: now,
1575
1608
  updatedAt: now
1576
1609
  };
@@ -1594,16 +1627,30 @@ function normalizeObjective(objective, current) {
1594
1627
  }
1595
1628
  __name(normalizeObjective, "normalizeObjective");
1596
1629
  function isEvidenceLimited(goal) {
1597
- return goal.limitKind !== void 0 || goal.lastReason !== void 0 && goalLimitKindForReason(goal.lastReason) !== void 0;
1630
+ return goal.limitKind === "evidence_catalog" || goal.limitKind === "checkpoint_request" || goal.lastReason !== void 0 && goalLimitKindForReason(goal.lastReason) !== void 0;
1598
1631
  }
1599
1632
  __name(isEvidenceLimited, "isEvidenceLimited");
1633
+ function rearmedTokenBudget(current, grant) {
1634
+ if (grant === void 0 || !isGoalTokenBudgetSpent(current)) {
1635
+ return {};
1636
+ }
1637
+ return Number.isFinite(grant) ? { tokenBudget: current.tokensUsed + grant, windDownTurnId: void 0 } : { tokenBudget: void 0, windDownTurnId: void 0 };
1638
+ }
1639
+ __name(rearmedTokenBudget, "rearmedTokenBudget");
1600
1640
  function transitionGoal(goal, now, changes) {
1601
- return {
1641
+ const transitioned = {
1602
1642
  ...goal,
1603
1643
  ...changes,
1604
1644
  activeTimeMs: elapsedActiveTime(goal, now),
1605
1645
  updatedAt: now
1606
1646
  };
1647
+ if ("tokenBudget" in changes && changes.tokenBudget === void 0) {
1648
+ delete transitioned.tokenBudget;
1649
+ }
1650
+ if ("windDownTurnId" in changes && changes.windDownTurnId === void 0) {
1651
+ delete transitioned.windDownTurnId;
1652
+ }
1653
+ return transitioned;
1607
1654
  }
1608
1655
  __name(transitionGoal, "transitionGoal");
1609
1656
  function snapshotOf(goal) {
@@ -1634,13 +1681,15 @@ function parseGoalRecord(value) {
1634
1681
  "turnCount",
1635
1682
  "activeTimeMs",
1636
1683
  "tokensUsed",
1684
+ "tokenBudget",
1685
+ "windDownTurnId",
1637
1686
  "createdAt",
1638
1687
  "updatedAt",
1639
1688
  "evidenceCheckpoint",
1640
1689
  "checkpointStalls",
1641
1690
  "lastReason",
1642
1691
  "limitKind"
1643
- ]) || typeof value["goalId"] !== "string" || !value["goalId"] || !isNonNegativeInteger(value["revision"]) || value["revision"] === 0 || typeof value["objective"] !== "string" || !value["objective"].trim() || !isGoalStatus(value["status"]) || !isTranscriptCursor(value["evidenceCursor"]) || !isNonNegativeInteger(value["turnCount"]) || !isNonNegativeNumber(value["activeTimeMs"]) || value["tokensUsed"] !== void 0 && !isNonNegativeNumber(value["tokensUsed"]) || !isFiniteNumber(value["createdAt"]) || !isFiniteNumber(value["updatedAt"]) || !isGoalEvidenceCheckpoint(value["evidenceCheckpoint"]) || value["checkpointStalls"] !== void 0 && !isNonNegativeInteger(value["checkpointStalls"]) || value["lastReason"] !== void 0 && typeof value["lastReason"] !== "string" || value["limitKind"] !== void 0 && (!isGoalLimitKind(value["limitKind"]) || value["status"] !== "usage_limited")) {
1692
+ ]) || typeof value["goalId"] !== "string" || !value["goalId"] || !isNonNegativeInteger(value["revision"]) || value["revision"] === 0 || typeof value["objective"] !== "string" || !value["objective"].trim() || !isGoalStatus(value["status"]) || !isTranscriptCursor(value["evidenceCursor"]) || !isNonNegativeInteger(value["turnCount"]) || !isNonNegativeNumber(value["activeTimeMs"]) || value["tokensUsed"] !== void 0 && !isNonNegativeNumber(value["tokensUsed"]) || value["tokenBudget"] !== void 0 && !isNonNegativeNumber(value["tokenBudget"]) || value["windDownTurnId"] !== void 0 && (typeof value["windDownTurnId"] !== "string" || !value["windDownTurnId"]) || !isFiniteNumber(value["createdAt"]) || !isFiniteNumber(value["updatedAt"]) || !isGoalEvidenceCheckpoint(value["evidenceCheckpoint"]) || value["checkpointStalls"] !== void 0 && !isNonNegativeInteger(value["checkpointStalls"]) || value["lastReason"] !== void 0 && typeof value["lastReason"] !== "string" || value["limitKind"] !== void 0 && (!isGoalLimitKind(value["limitKind"]) || value["status"] !== "usage_limited")) {
1644
1693
  return void 0;
1645
1694
  }
1646
1695
  if (value["evidenceCheckpoint"] && value["evidenceCursor"].recordId !== value["evidenceCheckpoint"].checkpointId) {
@@ -1656,6 +1705,9 @@ function parseGoalRecord(value) {
1656
1705
  activeTimeMs: value["activeTimeMs"],
1657
1706
  // Goals persisted before `tokensUsed` existed carry no spend to restore.
1658
1707
  tokensUsed: value["tokensUsed"] ?? 0,
1708
+ // And no budget: a Goal from before budgets existed stays unbounded.
1709
+ ...value["tokenBudget"] === void 0 ? {} : { tokenBudget: value["tokenBudget"] },
1710
+ ...value["windDownTurnId"] === void 0 ? {} : { windDownTurnId: value["windDownTurnId"] },
1659
1711
  createdAt: value["createdAt"],
1660
1712
  updatedAt: value["updatedAt"],
1661
1713
  ...value["evidenceCheckpoint"] === void 0 ? {} : {
@@ -2227,6 +2279,7 @@ function createGoalRuntime(options) {
2227
2279
  let currentTurnFeedback;
2228
2280
  let restored = false;
2229
2281
  let restoreActivationPending = false;
2282
+ let windDownTurnId;
2230
2283
  let restorePreparation;
2231
2284
  let restoreActivation;
2232
2285
  let preparedRestoreCause;
@@ -2250,6 +2303,60 @@ function createGoalRuntime(options) {
2250
2303
  return 0;
2251
2304
  }
2252
2305
  }, "takeTurnTokens");
2306
+ const tokenBudgetGrant = options.tokenBudgetGrant ?? GOAL_DEFAULT_TOKEN_BUDGET;
2307
+ const usageLimitedSnapshot = /* @__PURE__ */ __name((goal, reason, limitKind) => {
2308
+ const now = Date.now();
2309
+ return {
2310
+ v: GOAL_STATE_VERSION,
2311
+ goal: {
2312
+ ...goal,
2313
+ status: "usage_limited",
2314
+ activeTimeMs: elapsedActiveTime(goal, now),
2315
+ updatedAt: now,
2316
+ lastReason: reason,
2317
+ ...limitKind === void 0 ? {} : { limitKind }
2318
+ },
2319
+ activity: "idle"
2320
+ };
2321
+ }, "usageLimitedSnapshot");
2322
+ const journalUsageLimitedSettle = /* @__PURE__ */ __name(async (goal, reason, limitKind) => {
2323
+ const limitedSnapshot = usageLimitedSnapshot(goal, reason, limitKind);
2324
+ await options.journal.recordGoalState(randomUUID(), {
2325
+ v: GOAL_STATE_VERSION,
2326
+ cause: "usage_limited",
2327
+ snapshot: limitedSnapshot
2328
+ });
2329
+ return limitedSnapshot;
2330
+ }, "journalUsageLimitedSettle");
2331
+ const commitUsageLimitedSettle = /* @__PURE__ */ __name((limitedSnapshot) => {
2332
+ continuationQueued = false;
2333
+ currentTurnFeedback = void 0;
2334
+ snapshot = structuredClone(limitedSnapshot);
2335
+ broadcast("usage_limited");
2336
+ }, "commitUsageLimitedSettle");
2337
+ const stopForSpentBudget = /* @__PURE__ */ __name(() => {
2338
+ void enqueue(async () => {
2339
+ const goal = snapshot.goal;
2340
+ if (!goal || goal.status !== "active" || !isGoalTokenBudgetSpent(goal) || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt) {
2341
+ return;
2342
+ }
2343
+ const reason = goalTokenBudgetReason(goal.tokenBudget);
2344
+ let limitedSnapshot;
2345
+ try {
2346
+ limitedSnapshot = await journalUsageLimitedSettle(
2347
+ goal,
2348
+ reason,
2349
+ "token_budget"
2350
+ );
2351
+ } catch {
2352
+ limitedSnapshot = usageLimitedSnapshot(goal, reason, "token_budget");
2353
+ }
2354
+ if (snapshot.goal?.goalId !== goal.goalId || snapshot.goal.revision !== goal.revision || snapshot.goal.status !== "active" || currentPermit) {
2355
+ return;
2356
+ }
2357
+ commitUsageLimitedSettle(limitedSnapshot);
2358
+ }).catch(() => void 0);
2359
+ }, "stopForSpentBudget");
2253
2360
  const withCheckpointStalls = /* @__PURE__ */ __name((goal, checkpointStalls) => {
2254
2361
  const { checkpointStalls: _previous, ...rest } = goal;
2255
2362
  return checkpointStalls > 0 ? { ...rest, checkpointStalls } : rest;
@@ -2276,7 +2383,7 @@ function createGoalRuntime(options) {
2276
2383
  } catch {
2277
2384
  }
2278
2385
  }, "preemptHost");
2279
- const flushContinuation = /* @__PURE__ */ __name((cause) => {
2386
+ const flushContinuation = /* @__PURE__ */ __name((cause, windDown = false) => {
2280
2387
  if (!continuationQueued || !host || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt || snapshot.activity !== "idle" || snapshot.goal?.status !== "active") {
2281
2388
  return;
2282
2389
  }
@@ -2294,6 +2401,7 @@ function createGoalRuntime(options) {
2294
2401
  currentPermitHost = scheduledHost;
2295
2402
  currentTurnKey = `goal-runtime:${currentPermit.turnId}`;
2296
2403
  const startedPermit = structuredClone(currentPermit);
2404
+ windDownTurnId = windDown ? startedPermit.turnId : void 0;
2297
2405
  snapshot = { ...snapshot, activity: "running" };
2298
2406
  broadcast(cause);
2299
2407
  const handleStartFailure = /* @__PURE__ */ __name(() => {
@@ -2335,6 +2443,7 @@ function createGoalRuntime(options) {
2335
2443
  started = scheduledHost.startGoalTurn({
2336
2444
  permit: startedPermit,
2337
2445
  continuationContext,
2446
+ ...windDown ? { windDown } : {},
2338
2447
  ...verifierFeedback ? { verifierFeedback } : {}
2339
2448
  });
2340
2449
  } catch {
@@ -2347,6 +2456,15 @@ function createGoalRuntime(options) {
2347
2456
  if (restoreActivationPending || snapshot.goal?.status !== "active" || currentPermit || pendingProposal || verificationAttempt || checkpointAttempt) {
2348
2457
  return;
2349
2458
  }
2459
+ if (isGoalTokenBudgetSpent(snapshot.goal)) {
2460
+ if (snapshot.goal.windDownTurnId !== void 0) {
2461
+ stopForSpentBudget();
2462
+ return;
2463
+ }
2464
+ continuationQueued = true;
2465
+ flushContinuation(cause, true);
2466
+ return;
2467
+ }
2350
2468
  continuationQueued = true;
2351
2469
  flushContinuation(cause);
2352
2470
  }, "queueContinuation");
@@ -2404,7 +2522,7 @@ function createGoalRuntime(options) {
2404
2522
  return {
2405
2523
  ...base,
2406
2524
  proposal: { ...attempt.proposal, status: "blocked" },
2407
- blockedPolicy: "A blocked Goal is resumable. It may be accepted immediately only when the evidence shows that new user authority or a material user choice is required, or that an external state change is required, and no meaningful in-scope work remains. An ordinary technical blocker requires evidence of the same cause from the current and two immediately preceding Goal turns. Difficulty, uncertainty, incomplete work, or a preference for clarification do not by themselves justify blocked."
2525
+ blockedPolicy: "A blocked Goal is resumable. It may be accepted immediately only when the evidence shows that new user authority or a material user choice is required, or that an external state change is required, and no meaningful in-scope work remains. An infeasible blocker may also be accepted immediately, only when cited external_fact evidence shows the objective cannot be satisfied as written: it contradicts itself, it names a target that verifiably does not exist, or it requires an action outside what the tools can perform; reject it when the obstacle is difficulty, uncertainty, information the model could still obtain, or a preference to ask. An ordinary technical blocker requires evidence of the same cause from the current and two immediately preceding Goal turns. Difficulty, uncertainty, incomplete work, or a preference for clarification do not by themselves justify blocked."
2408
2526
  };
2409
2527
  }, "verifierInput");
2410
2528
  const promoteQueuedUserTurn = /* @__PURE__ */ __name(() => {
@@ -2441,7 +2559,7 @@ function createGoalRuntime(options) {
2441
2559
  ...snapshot.goal,
2442
2560
  activeTimeMs: elapsedActiveTime(snapshot.goal, now),
2443
2561
  updatedAt: now,
2444
- lastReason: outcome.result.reason
2562
+ lastReason: attempt.proposal.blockerKind === "infeasible" ? `${outcome.result.reason} ${GOAL_INFEASIBLE_NEXT_STEP}` : outcome.result.reason
2445
2563
  };
2446
2564
  const acceptedSnapshot = {
2447
2565
  v: GOAL_STATE_VERSION,
@@ -2479,31 +2597,16 @@ function createGoalRuntime(options) {
2479
2597
  return void 0;
2480
2598
  }
2481
2599
  if (outcome.kind === "usage_limited") {
2482
- const limitedSnapshot = {
2483
- v: GOAL_STATE_VERSION,
2484
- goal: {
2485
- ...snapshot.goal,
2486
- status: "usage_limited",
2487
- activeTimeMs: elapsedActiveTime(snapshot.goal, now),
2488
- updatedAt: now,
2489
- lastReason: outcome.reason,
2490
- ...outcome.limitKind === void 0 ? {} : { limitKind: outcome.limitKind }
2491
- },
2492
- activity: "idle"
2493
- };
2494
- await options.journal.recordGoalState(randomUUID(), {
2495
- v: GOAL_STATE_VERSION,
2496
- cause: "usage_limited",
2497
- snapshot: limitedSnapshot
2498
- });
2600
+ const limitedSnapshot = await journalUsageLimitedSettle(
2601
+ snapshot.goal,
2602
+ outcome.reason,
2603
+ outcome.limitKind
2604
+ );
2499
2605
  if (!isCurrentVerificationAttempt(attempt) || !snapshot.goal) return;
2500
2606
  verificationAttempt = void 0;
2501
2607
  pendingProposal = void 0;
2502
- continuationQueued = false;
2503
2608
  nextVerifierFeedback = void 0;
2504
- currentTurnFeedback = void 0;
2505
- snapshot = structuredClone(limitedSnapshot);
2506
- broadcast("usage_limited");
2609
+ commitUsageLimitedSettle(limitedSnapshot);
2507
2610
  return void 0;
2508
2611
  }
2509
2612
  const rejectedCheckpoint = isRepeatedBlockerProposal(attempt.proposal) ? void 0 : createCheckpointAttempt(attempt.permit, snapshot.goal);
@@ -2650,30 +2753,14 @@ function createGoalRuntime(options) {
2650
2753
  });
2651
2754
  }, "finishCheckpointCheck");
2652
2755
  const settleCheckpointFailure = /* @__PURE__ */ __name(async (attempt, goal, reason, limitKind) => {
2653
- const now = Date.now();
2654
- const limitedSnapshot = {
2655
- v: GOAL_STATE_VERSION,
2656
- goal: {
2657
- ...goal,
2658
- status: "usage_limited",
2659
- activeTimeMs: elapsedActiveTime(goal, now),
2660
- updatedAt: now,
2661
- lastReason: reason,
2662
- ...limitKind === void 0 ? {} : { limitKind }
2663
- },
2664
- activity: "idle"
2665
- };
2666
- await options.journal.recordGoalState(randomUUID(), {
2667
- v: GOAL_STATE_VERSION,
2668
- cause: "usage_limited",
2669
- snapshot: limitedSnapshot
2670
- });
2756
+ const limitedSnapshot = await journalUsageLimitedSettle(
2757
+ goal,
2758
+ reason,
2759
+ limitKind
2760
+ );
2671
2761
  if (!isCurrentCheckpointAttempt(attempt) || !snapshot.goal) return;
2672
2762
  checkpointAttempt = void 0;
2673
- continuationQueued = false;
2674
- currentTurnFeedback = void 0;
2675
- snapshot = structuredClone(limitedSnapshot);
2676
- broadcast("usage_limited");
2763
+ commitUsageLimitedSettle(limitedSnapshot);
2677
2764
  }, "settleCheckpointFailure");
2678
2765
  const settleIfCheckpointStalled = /* @__PURE__ */ __name(async (attempt, goal, checkpointStalls) => {
2679
2766
  if (checkpointStalls < GOAL_CHECKPOINT_STALL_LIMIT) return false;
@@ -3067,10 +3154,13 @@ function createGoalRuntime(options) {
3067
3154
  throw new Error(STALE_GOAL_TURN_MESSAGE);
3068
3155
  }
3069
3156
  const recordUuid = randomUUID();
3157
+ const finishedWindDown = windDownTurnId === permit.turnId;
3070
3158
  const nextGoal = reduceGoalTurnFinished(snapshot.goal, {
3071
3159
  now: Date.now(),
3072
- tokensUsed: takeTurnTokens(permit.turnId)
3160
+ tokensUsed: takeTurnTokens(permit.turnId),
3161
+ ...finishedWindDown ? { windDownTurnId: permit.turnId } : {}
3073
3162
  });
3163
+ if (finishedWindDown) windDownTurnId = void 0;
3074
3164
  const persistedSnapshot = {
3075
3165
  v: GOAL_STATE_VERSION,
3076
3166
  goal: nextGoal,
@@ -3241,7 +3331,8 @@ ${proposal.reason}`;
3241
3331
  request,
3242
3332
  now: Date.now(),
3243
3333
  nextGoalId: randomUUID(),
3244
- cursor: request.action === "create" || request.action === "replace" || request.action === "edit" ? { recordId: recordUuid } : options.journal.getTranscriptCursor()
3334
+ cursor: request.action === "create" || request.action === "replace" || request.action === "edit" ? { recordId: recordUuid } : options.journal.getTranscriptCursor(),
3335
+ tokenBudgetGrant
3245
3336
  });
3246
3337
  const nextSnapshot = {
3247
3338
  v: GOAL_STATE_VERSION,